@appcorp/shadcn 1.2.0 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/app-sidebar.js +1 -41
- package/components/audio.js +1 -21
- package/components/dashboard.js +1 -67
- package/components/drawer-generic.js +1 -47
- package/components/enhanced-checkbox.js +1 -86
- package/components/enhanced-combobox.js +1 -315
- package/components/enhanced-drawer-footer.js +1 -39
- package/components/enhanced-drawer-header.js +1 -15
- package/components/enhanced-dropzone-impl.d.ts +32 -0
- package/components/enhanced-dropzone-impl.js +1 -0
- package/components/enhanced-dropzone.d.ts +2 -63
- package/components/enhanced-dropzone.js +1 -296
- package/components/enhanced-input.js +1 -87
- package/components/enhanced-label.js +1 -68
- package/components/enhanced-radio.js +1 -23
- package/components/enhanced-select.js +1 -81
- package/components/enhanced-slider.js +1 -80
- package/components/enhanced-switch.js +1 -89
- package/components/enhanced-table-footer-action.js +1 -110
- package/components/enhanced-table-footer-page.js +1 -132
- package/components/enhanced-table-footer-pagination.js +1 -118
- package/components/enhanced-table-header-action.js +1 -40
- package/components/enhanced-table-header-search.js +1 -18
- package/components/enhanced-table.js +1 -329
- package/components/enhanced-textarea.js +1 -87
- package/components/field.d.ts +1 -1
- package/components/field.js +1 -153
- package/components/image-resize-dialog.js +1 -180
- package/components/nav-main.js +1 -86
- package/components/nav-projects.js +1 -50
- package/components/nav-user.js +1 -62
- package/components/show-toast.js +1 -11
- package/components/sidebar.d.ts +1 -1
- package/components/sidebar.js +1 -326
- package/components/team-switcher.js +1 -53
- package/components/theme-provider.js +1 -160
- package/components/timeline.js +1 -21
- package/components/tooltip.js +1 -85
- package/components/ui/accordion.js +1 -87
- package/components/ui/alert-dialog.js +1 -120
- package/components/ui/alert.d.ts +1 -1
- package/components/ui/alert.js +1 -90
- package/components/ui/area-chart-v1-impl.d.ts +19 -0
- package/components/ui/area-chart-v1-impl.js +1 -0
- package/components/ui/area-chart-v1.d.ts +2 -19
- package/components/ui/area-chart-v1.js +1 -114
- package/components/ui/aspect-ratio.js +1 -40
- package/components/ui/avatar.js +1 -80
- package/components/ui/badge.d.ts +2 -2
- package/components/ui/badge.js +1 -80
- package/components/ui/breadcrumb.js +1 -107
- package/components/ui/button.d.ts +2 -2
- package/components/ui/button.js +1 -92
- package/components/ui/calendar-impl.d.ts +8 -0
- package/components/ui/calendar-impl.js +1 -0
- package/components/ui/calendar.d.ts +2 -8
- package/components/ui/calendar.js +1 -109
- package/components/ui/card.js +1 -96
- package/components/ui/carousel-impl.d.ts +18 -0
- package/components/ui/carousel-impl.js +1 -0
- package/components/ui/carousel.d.ts +6 -18
- package/components/ui/carousel.js +1 -171
- package/components/ui/chart-impl.d.ts +62 -0
- package/components/ui/chart-impl.js +7 -0
- package/components/ui/chart.d.ts +7 -62
- package/components/ui/chart.js +1 -220
- package/components/ui/checkbox.js +1 -71
- package/components/ui/collapsible.js +1 -44
- package/components/ui/combobox.js +1 -88
- package/components/ui/command-impl.d.ts +80 -0
- package/components/ui/command-impl.js +1 -0
- package/components/ui/command.d.ts +9 -80
- package/components/ui/command.js +1 -118
- package/components/ui/context-menu.js +1 -141
- package/components/ui/dialog.js +1 -113
- package/components/ui/drawer-impl.d.ts +22 -0
- package/components/ui/drawer-impl.js +1 -0
- package/components/ui/drawer.d.ts +10 -22
- package/components/ui/drawer.js +1 -112
- package/components/ui/dropdown-menu.js +1 -143
- package/components/ui/form.d.ts +4 -2
- package/components/ui/form.js +1 -132
- package/components/ui/hover-card.js +1 -72
- package/components/ui/input-otp-impl.d.ts +34 -0
- package/components/ui/input-otp-impl.js +1 -0
- package/components/ui/input-otp.d.ts +4 -34
- package/components/ui/input-otp.js +1 -93
- package/components/ui/input.js +1 -66
- package/components/ui/label.d.ts +1 -1
- package/components/ui/label.js +1 -70
- package/components/ui/language-selector.js +1 -63
- package/components/ui/menubar.js +1 -165
- package/components/ui/navigation-menu.d.ts +1 -1
- package/components/ui/navigation-menu.js +1 -114
- package/components/ui/pagination.js +1 -113
- package/components/ui/popover.js +1 -75
- package/components/ui/progress.js +1 -69
- package/components/ui/radio-group.js +1 -77
- package/components/ui/resizable-impl.d.ts +24 -0
- package/components/ui/resizable-impl.js +1 -0
- package/components/ui/resizable.d.ts +3 -24
- package/components/ui/resizable.js +1 -79
- package/components/ui/scroll-area.js +1 -80
- package/components/ui/select.js +1 -127
- package/components/ui/separator.js +1 -68
- package/components/ui/sheet.d.ts +1 -1
- package/components/ui/sheet.js +1 -127
- package/components/ui/skeleton.js +1 -34
- package/components/ui/slider.js +1 -79
- package/components/ui/sonner.js +1 -45
- package/components/ui/switch.js +1 -69
- package/components/ui/table.js +1 -109
- package/components/ui/tabs.js +1 -82
- package/components/ui/textarea.js +1 -66
- package/components/ui/theme-switcher.js +1 -152
- package/components/ui/toggle.d.ts +2 -2
- package/components/ui/toggle.js +1 -87
- package/data/admin-dashboard.js +1 -304
- package/hooks/use-enhanced-combobox.js +1 -150
- package/hooks/use-mobile.js +1 -51
- package/hooks/use-outside-click.js +1 -23
- package/lib/themes.js +1 -150
- package/lib/toast-utils.js +1 -212
- package/lib/utils.js +1 -12
- package/package.json +9 -90
- package/utils/transform-breadcrumbs.js +1 -11
- package/utils/transform-navitems.js +1 -33
- package/components/aceternity-ui/apple-cards-carousel.d.ts +0 -35
- package/components/aceternity-ui/apple-cards-carousel.js +0 -263
- package/components/shadcn-example/ai-chat/chat-interface.d.ts +0 -11
- package/components/shadcn-example/ai-chat/chat-interface.js +0 -70
- package/components/shadcn-example/ai-chat/index.d.ts +0 -38
- package/components/shadcn-example/ai-chat/index.js +0 -66
- package/components/shadcn-example/ai-chat/sidebar.d.ts +0 -15
- package/components/shadcn-example/ai-chat/sidebar.js +0 -68
- package/components/shadcn-example/ai-chat/welcome-section.d.ts +0 -12
- package/components/shadcn-example/ai-chat/welcome-section.js +0 -26
- package/components/shadcn-example/authentication/index.d.ts +0 -24
- package/components/shadcn-example/authentication/index.js +0 -59
- package/components/shadcn-example/authentication/user-auth-form.d.ts +0 -11
- package/components/shadcn-example/authentication/user-auth-form.js +0 -54
- package/components/shadcn-example/blog-detail-page/comment-section.d.ts +0 -15
- package/components/shadcn-example/blog-detail-page/comment-section.js +0 -83
- package/components/shadcn-example/blog-detail-page/content.d.ts +0 -7
- package/components/shadcn-example/blog-detail-page/content.js +0 -15
- package/components/shadcn-example/blog-detail-page/header.d.ts +0 -11
- package/components/shadcn-example/blog-detail-page/header.js +0 -36
- package/components/shadcn-example/blog-detail-page/index.d.ts +0 -25
- package/components/shadcn-example/blog-detail-page/index.js +0 -74
- package/components/shadcn-example/blog-page/blog-post-card.d.ts +0 -13
- package/components/shadcn-example/blog-page/blog-post-card.js +0 -30
- package/components/shadcn-example/blog-page/featured-post-sidebar-item.d.ts +0 -10
- package/components/shadcn-example/blog-page/featured-post-sidebar-item.js +0 -19
- package/components/shadcn-example/blog-page/index.d.ts +0 -20
- package/components/shadcn-example/blog-page/index.js +0 -36
- package/components/shadcn-example/coming-soon/countdown.d.ts +0 -2
- package/components/shadcn-example/coming-soon/countdown.js +0 -82
- package/components/shadcn-example/coming-soon/index.d.ts +0 -10
- package/components/shadcn-example/coming-soon/index.js +0 -41
- package/components/shadcn-io/color-picker/index.d.ts +0 -43
- package/components/shadcn-io/color-picker/index.js +0 -304
- package/components/shadcn-io/copy-button/index.d.ts +0 -16
- package/components/shadcn-io/copy-button/index.js +0 -121
- package/components/shadcn-io/dropzone/index.d.ts +0 -19
- package/components/shadcn-io/dropzone/index.js +0 -131
- package/components/shadcn-io/gantt/index.d.ts +0 -145
- package/components/shadcn-io/gantt/index.js +0 -766
- package/components/shadcn-io/table/index.d.ts +0 -60
- package/components/shadcn-io/table/index.js +0 -138
- package/templates/appcorp-v1/footer/bottom-bar.d.ts +0 -6
- package/templates/appcorp-v1/footer/bottom-bar.js +0 -25
- package/templates/appcorp-v1/footer/cta.d.ts +0 -6
- package/templates/appcorp-v1/footer/cta.js +0 -21
- package/templates/appcorp-v1/footer/footer-grid.d.ts +0 -14
- package/templates/appcorp-v1/footer/footer-grid.js +0 -52
- package/templates/appcorp-v1/footer/index.d.ts +0 -3
- package/templates/appcorp-v1/footer/index.js +0 -28
- package/templates/appcorp-v1/footer/newsletter.d.ts +0 -11
- package/templates/appcorp-v1/footer/newsletter.js +0 -28
- package/templates/appcorp-v1/footer/stats.d.ts +0 -6
- package/templates/appcorp-v1/footer/stats.js +0 -15
- package/templates/appcorp-v1/header/announcement-bar.d.ts +0 -3
- package/templates/appcorp-v1/header/announcement-bar.js +0 -15
- package/templates/appcorp-v1/header/dropdown-panel.d.ts +0 -8
- package/templates/appcorp-v1/header/dropdown-panel.js +0 -72
- package/templates/appcorp-v1/header/index.d.ts +0 -12
- package/templates/appcorp-v1/header/index.js +0 -16
- package/templates/appcorp-v1/header/mobile-menu.d.ts +0 -14
- package/templates/appcorp-v1/header/mobile-menu.js +0 -101
- package/templates/appcorp-v1/header/navigation-bar.d.ts +0 -3
- package/templates/appcorp-v1/header/navigation-bar.js +0 -117
- package/templates/appcorp-v1/header/social-button.d.ts +0 -7
- package/templates/appcorp-v1/header/social-button.js +0 -48
- package/templates/appcorp-v1/home.d.ts +0 -3
- package/templates/appcorp-v1/home.js +0 -27
- package/templates/data/appcorp-v1.d.ts +0 -93
- package/templates/data/appcorp-v1.js +0 -348
- package/templates/data/edupilotpro-v1.d.ts +0 -33
- package/templates/data/edupilotpro-v1.js +0 -116
- package/templates/data/school-v1.d.ts +0 -328
- package/templates/data/school-v1.js +0 -1563
- package/templates/edupilotpro-v1/feature-card.d.ts +0 -13
- package/templates/edupilotpro-v1/feature-card.js +0 -28
- package/templates/edupilotpro-v1/mockups/dashboard-mockup.d.ts +0 -3
- package/templates/edupilotpro-v1/mockups/dashboard-mockup.js +0 -55
- package/templates/school-v1/footer.d.ts +0 -3
- package/templates/school-v1/footer.js +0 -75
- package/templates/school-v1/index.d.ts +0 -18
- package/templates/school-v1/index.js +0 -60
- package/templates/school-v1/navigation.d.ts +0 -3
- package/templates/school-v1/navigation.js +0 -123
- package/templates/school-v1/sections/about.d.ts +0 -3
- package/templates/school-v1/sections/about.js +0 -49
- package/templates/school-v1/sections/admissions.d.ts +0 -3
- package/templates/school-v1/sections/admissions.js +0 -77
- package/templates/school-v1/sections/contact.d.ts +0 -3
- package/templates/school-v1/sections/contact.js +0 -67
- package/templates/school-v1/sections/faqs.d.ts +0 -3
- package/templates/school-v1/sections/faqs.js +0 -50
- package/templates/school-v1/sections/hero.d.ts +0 -3
- package/templates/school-v1/sections/hero.js +0 -132
- package/templates/school-v1/sections/management.d.ts +0 -3
- package/templates/school-v1/sections/management.js +0 -34
- package/templates/school-v1/sections/policies.d.ts +0 -3
- package/templates/school-v1/sections/policies.js +0 -127
- package/templates/school-v1/sections/programs.d.ts +0 -3
- package/templates/school-v1/sections/programs.js +0 -107
- package/templates/school-v1/sections/testimonials.d.ts +0 -3
- package/templates/school-v1/sections/testimonials.js +0 -46
- package/templates/school-v1/sections/why-choose-us.d.ts +0 -3
- package/templates/school-v1/sections/why-choose-us.js +0 -57
|
@@ -1,118 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Enhanced Table Footer Pagination Component
|
|
4
|
-
*
|
|
5
|
-
* Displays rows per page selector with internationalization and RTL/LTR support.
|
|
6
|
-
* Automatically adapts text direction and layout based on locale.
|
|
7
|
-
*
|
|
8
|
-
* Features:
|
|
9
|
-
* - Full i18n support with fallback text
|
|
10
|
-
* - RTL/LTR layout adaptation
|
|
11
|
-
* - Loading state handling
|
|
12
|
-
* - Accessibility attributes
|
|
13
|
-
* - Custom translation overrides
|
|
14
|
-
* - Responsive design
|
|
15
|
-
*/
|
|
16
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
17
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
18
|
-
};
|
|
19
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
-
exports.EnhancedTableFooterPagination = void 0;
|
|
21
|
-
var select_1 = require("./ui/select");
|
|
22
|
-
var react_1 = __importDefault(require("react"));
|
|
23
|
-
var EnhancedTableFooterPagination = function (_a) {
|
|
24
|
-
var handleOnSelect = _a.handleOnSelect, _b = _a.isRTL, isRTL = _b === void 0 ? false : _b, listOptions = _a.listOptions, loading = _a.loading, nodeSelectKey = _a.nodeSelectKey, pageLimit = _a.pageLimit, _c = _a.rowsPerPageLabel, rowsPerPageLabel = _c === void 0 ? "Rows per page:" : _c, _d = _a.className, className = _d === void 0 ? "" : _d, testIdWrapper = _a.testIdWrapper, testIdLabel = _a.testIdLabel, testIdSelectTrigger = _a.testIdSelectTrigger, testIdSelectValue = _a.testIdSelectValue, testIdSelectContent = _a.testIdSelectContent, testIdOptionPrefix = _a.testIdOptionPrefix;
|
|
25
|
-
return (react_1.default.createElement("div", { className: "flex items-center gap-2 ".concat(className), dir: isRTL ? "rtl" : "ltr", "data-testid": testIdWrapper },
|
|
26
|
-
react_1.default.createElement("label", { htmlFor: "page-limit-select-".concat(nodeSelectKey), className: "text-sm text-muted-foreground whitespace-nowrap", "data-testid": testIdLabel }, rowsPerPageLabel),
|
|
27
|
-
react_1.default.createElement(select_1.Select, { value: String(pageLimit), onValueChange: function (value) {
|
|
28
|
-
return handleOnSelect(nodeSelectKey, { option: value });
|
|
29
|
-
}, disabled: loading },
|
|
30
|
-
react_1.default.createElement(select_1.SelectTrigger, { id: "page-limit-select-".concat(nodeSelectKey), className: "w-20", "aria-label": "".concat(rowsPerPageLabel, " ").concat(pageLimit), "data-testid": testIdSelectTrigger },
|
|
31
|
-
react_1.default.createElement(select_1.SelectValue, { "data-testid": testIdSelectValue })),
|
|
32
|
-
react_1.default.createElement(select_1.SelectContent, { "data-testid": testIdSelectContent }, listOptions.map(function (option) { return (react_1.default.createElement(select_1.SelectItem, { key: option.option, value: option.option, "aria-label": "".concat(option.option, " rows per page"), "data-testid": testIdOptionPrefix
|
|
33
|
-
? "".concat(testIdOptionPrefix, "-").concat(option.option)
|
|
34
|
-
: undefined }, option.option)); })))));
|
|
35
|
-
};
|
|
36
|
-
exports.EnhancedTableFooterPagination = EnhancedTableFooterPagination;
|
|
37
|
-
// ============================================================================
|
|
38
|
-
// USAGE EXAMPLES
|
|
39
|
-
// ============================================================================
|
|
40
|
-
/*
|
|
41
|
-
Example 1: Basic usage with automatic i18n
|
|
42
|
-
<EnhancedTableFooterPagination
|
|
43
|
-
handleOnSelect={(key, value) => console.log(key, value)}
|
|
44
|
-
listOptions={[{ option: "10" }, { option: "25" }, { option: "50" }]}
|
|
45
|
-
loading={false}
|
|
46
|
-
nodeSelectKey="pageLimit"
|
|
47
|
-
pageLimit={10}
|
|
48
|
-
totalPages={5}
|
|
49
|
-
/>
|
|
50
|
-
|
|
51
|
-
Example 2: With custom label text
|
|
52
|
-
<EnhancedTableFooterPagination
|
|
53
|
-
handleOnSelect={handlePageLimitChange}
|
|
54
|
-
listOptions={pageLimitOptions}
|
|
55
|
-
loading={isLoading}
|
|
56
|
-
nodeSelectKey="pageLimit"
|
|
57
|
-
pageLimit={currentPageLimit}
|
|
58
|
-
totalPages={totalPages}
|
|
59
|
-
labelText="Items per page:"
|
|
60
|
-
/>
|
|
61
|
-
|
|
62
|
-
Example 3: With custom styling and RTL support
|
|
63
|
-
<EnhancedTableFooterPagination
|
|
64
|
-
handleOnSelect={handlePageLimitChange}
|
|
65
|
-
listOptions={pageLimitOptions}
|
|
66
|
-
loading={false}
|
|
67
|
-
nodeSelectKey="pageLimit"
|
|
68
|
-
pageLimit={25}
|
|
69
|
-
totalPages={10}
|
|
70
|
-
className="bg-gray-50 p-2 rounded-md"
|
|
71
|
-
/>
|
|
72
|
-
|
|
73
|
-
RTL Layout Features:
|
|
74
|
-
- Automatic text direction detection and application
|
|
75
|
-
- Element order reversal for RTL languages
|
|
76
|
-
- Proper label-select association
|
|
77
|
-
- Accessibility attributes for screen readers
|
|
78
|
-
- Direction-specific CSS classes and DOM attributes
|
|
79
|
-
*/
|
|
80
|
-
// ============================================================================
|
|
81
|
-
// COMPONENT ENHANCEMENTS SUMMARY
|
|
82
|
-
// ============================================================================
|
|
83
|
-
/*
|
|
84
|
-
Enhancements Applied:
|
|
85
|
-
|
|
86
|
-
1. **Internationalization (i18n)**
|
|
87
|
-
- Translation support using next-intl
|
|
88
|
-
- Fallback text for missing translations
|
|
89
|
-
- Custom label text override capability
|
|
90
|
-
- Translatable "Rows per page:" label
|
|
91
|
-
|
|
92
|
-
2. **RTL/LTR Layout Support**
|
|
93
|
-
- Automatic layout detection using useRTL hook
|
|
94
|
-
- Element order reversal for RTL languages (flex-row-reverse)
|
|
95
|
-
- Direction-aware CSS classes and attributes
|
|
96
|
-
- Proper text direction handling
|
|
97
|
-
|
|
98
|
-
3. **Accessibility Improvements**
|
|
99
|
-
- Proper label-select association with htmlFor/id
|
|
100
|
-
- ARIA labels for screen readers
|
|
101
|
-
- Descriptive aria-label for select options
|
|
102
|
-
- Semantic HTML structure with label element
|
|
103
|
-
|
|
104
|
-
4. **Developer Experience**
|
|
105
|
-
- Comprehensive JSDoc documentation
|
|
106
|
-
- Usage examples and patterns
|
|
107
|
-
- TypeScript interface improvements
|
|
108
|
-
- Flexible customization options
|
|
109
|
-
|
|
110
|
-
5. **Code Quality**
|
|
111
|
-
- Clean, readable component structure
|
|
112
|
-
- Consistent naming conventions
|
|
113
|
-
- Performance-optimized rendering
|
|
114
|
-
- Maintainable and extensible design
|
|
115
|
-
|
|
116
|
-
Translation Key Required:
|
|
117
|
-
- common.rowsPerPage: "Rows per page:" / "ہر صفحے میں قطاریں:"
|
|
118
|
-
*/
|
|
1
|
+
"use strict";import{Select as $,SelectContent as f,SelectItem as b,SelectTrigger as h,SelectValue as w}from"./ui/select";import t from"react";export const EnhancedTableFooterPagination=({handleOnSelect:n,isRTL:m=!1,listOptions:c,loading:s,nodeSelectKey:a,pageLimit:l,rowsPerPageLabel:r="Rows per page:",className:d="",testIdWrapper:o,testIdLabel:p,testIdSelectTrigger:g,testIdSelectValue:u,testIdSelectContent:E,testIdOptionPrefix:i})=>t.createElement("div",{className:`flex items-center gap-2 ${d}`,dir:m?"rtl":"ltr","data-testid":o},t.createElement("label",{htmlFor:`page-limit-select-${a}`,className:"text-sm text-muted-foreground whitespace-nowrap","data-testid":p},r),t.createElement($,{value:String(l),onValueChange:e=>n(a,{option:e}),disabled:s},t.createElement(h,{id:`page-limit-select-${a}`,className:"w-20","aria-label":`${r} ${l}`,"data-testid":g},t.createElement(w,{"data-testid":u})),t.createElement(f,{"data-testid":E},c.map(e=>t.createElement(b,{key:e.option,value:e.option,"aria-label":`${e.option} rows per page`,"data-testid":i?`${i}-${e.option}`:void 0},e.option)))));
|
|
@@ -1,40 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.EnhancedTableHeaderAction = void 0;
|
|
7
|
-
var react_1 = __importDefault(require("react"));
|
|
8
|
-
var lucide_react_1 = require("lucide-react");
|
|
9
|
-
var badge_1 = require("./ui/badge");
|
|
10
|
-
var button_1 = require("./ui/button");
|
|
11
|
-
var utils_1 = require("../lib/utils");
|
|
12
|
-
var EnhancedTableHeaderAction = function (_a) {
|
|
13
|
-
var headerActions = _a.headerActions, numberOfFilters = _a.numberOfFilters, onClearFilters = _a.onClearFilters, testIdWrapper = _a.testIdWrapper, testIdActionPrefix = _a.testIdActionPrefix, testIdFilterBadge = _a.testIdFilterBadge, testIdClearFilters = _a.testIdClearFilters;
|
|
14
|
-
return (react_1.default.createElement(react_1.default.Fragment, null, headerActions.length > 0 && (react_1.default.createElement("div", { className: "flex gap-2", "data-testid": testIdWrapper }, headerActions
|
|
15
|
-
.filter(function (action) { return action.enabled !== false; })
|
|
16
|
-
.sort(function (a, b) { return (a.order || 0) - (b.order || 0); })
|
|
17
|
-
.map(function (action, index) {
|
|
18
|
-
var isFilterButton = action.label
|
|
19
|
-
.toLowerCase()
|
|
20
|
-
.includes("filter");
|
|
21
|
-
var showFilterIndicators = isFilterButton &&
|
|
22
|
-
typeof numberOfFilters === "number" &&
|
|
23
|
-
numberOfFilters > 0;
|
|
24
|
-
return (react_1.default.createElement("div", { key: action.id || action.key || index, className: "relative" },
|
|
25
|
-
react_1.default.createElement(button_1.Button, { variant: action.variant || "default", "data-testid": testIdActionPrefix
|
|
26
|
-
? "".concat(testIdActionPrefix, "-").concat(index)
|
|
27
|
-
: undefined, onClick: function () { var _a; return (_a = action.handleOnClick) === null || _a === void 0 ? void 0 : _a.call(action, undefined); } }, action.label),
|
|
28
|
-
showFilterIndicators && (react_1.default.createElement(react_1.default.Fragment, null,
|
|
29
|
-
react_1.default.createElement("div", { className: "absolute -top-2 -left-2 group" },
|
|
30
|
-
react_1.default.createElement(badge_1.Badge, { variant: "secondary", className: (0, utils_1.cn)("h-5 w-5 flex items-center justify-center p-0 text-xs rounded-full transition-all relative", onClearFilters && "cursor-pointer"), "data-testid": testIdFilterBadge, onClick: onClearFilters
|
|
31
|
-
? function (e) {
|
|
32
|
-
e.stopPropagation();
|
|
33
|
-
onClearFilters();
|
|
34
|
-
}
|
|
35
|
-
: undefined },
|
|
36
|
-
react_1.default.createElement("span", { className: (0, utils_1.cn)("transition-opacity absolute", onClearFilters && "group-hover:opacity-0") }, numberOfFilters),
|
|
37
|
-
onClearFilters && (react_1.default.createElement(lucide_react_1.X, { className: "h-3 w-3 absolute opacity-0 group-hover:opacity-100 transition-opacity", "data-testid": testIdClearFilters }))))))));
|
|
38
|
-
})))));
|
|
39
|
-
};
|
|
40
|
-
exports.EnhancedTableHeaderAction = EnhancedTableHeaderAction;
|
|
1
|
+
"use strict";import t from"react";import{X as u}from"lucide-react";import{Badge as f}from"./ui/badge";import{Button as v}from"./ui/button";import{cn as s}from"../lib/utils";export const EnhancedTableHeaderAction=({headerActions:o,numberOfFilters:n,onClearFilters:a,testIdWrapper:d,testIdActionPrefix:i,testIdFilterBadge:c,testIdClearFilters:m})=>t.createElement(t.Fragment,null,o.length>0&&t.createElement("div",{className:"flex gap-2","data-testid":d},o.filter(e=>e.enabled!==!1).sort((e,l)=>(e.order||0)-(l.order||0)).map((e,l)=>{const p=e.label.toLowerCase().includes("filter")&&typeof n=="number"&&n>0;return t.createElement("div",{key:e.id||e.key||l,className:"relative"},t.createElement(v,{variant:e.variant||"default","data-testid":i?`${i}-${l}`:void 0,onClick:()=>{var r;return(r=e.handleOnClick)===null||r===void 0?void 0:r.call(e,void 0)}},e.label),p&&t.createElement(t.Fragment,null,t.createElement("div",{className:"absolute -top-2 -left-2 group"},t.createElement(f,{variant:"secondary",className:s("h-5 w-5 flex items-center justify-center p-0 text-xs rounded-full transition-all relative",a&&"cursor-pointer"),"data-testid":c,onClick:a?r=>{r.stopPropagation(),a()}:void 0},t.createElement("span",{className:s("transition-opacity absolute",a&&"group-hover:opacity-0")},n),a&&t.createElement(u,{className:"h-3 w-3 absolute opacity-0 group-hover:opacity-100 transition-opacity","data-testid":m})))))})));
|
|
@@ -1,18 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.EnhancedTableHeaderSearch = void 0;
|
|
7
|
-
var react_1 = __importDefault(require("react"));
|
|
8
|
-
var lucide_react_1 = require("lucide-react");
|
|
9
|
-
var input_1 = require("./ui/input");
|
|
10
|
-
var EnhancedTableHeaderSearch = function (_a) {
|
|
11
|
-
var handleSearchInput = _a.handleSearchInput, loading = _a.loading, _b = _a.searchDisabled, searchDisabled = _b === void 0 ? false : _b, _c = _a.searchEnabled, searchEnabled = _c === void 0 ? true : _c, _d = _a.searchId, searchId = _d === void 0 ? "table-search" : _d, _e = _a.searchPlaceholder, searchPlaceholder = _e === void 0 ? "Search..." : _e, searchValue = _a.searchValue, testIdWrapper = _a.testIdWrapper, testIdInput = _a.testIdInput, testIdIcon = _a.testIdIcon, testIdLoading = _a.testIdLoading;
|
|
12
|
-
return (react_1.default.createElement(react_1.default.Fragment, null, searchEnabled && (react_1.default.createElement("div", { className: "flex items-center gap-2 max-w-xl", "data-testid": testIdWrapper },
|
|
13
|
-
react_1.default.createElement("div", { className: "relative flex-1" },
|
|
14
|
-
react_1.default.createElement(lucide_react_1.Search, { className: "absolute left-3 top-1/2 transform -translate-y-1/2 h-4 w-4 text-muted-foreground", "data-testid": testIdIcon }),
|
|
15
|
-
react_1.default.createElement(input_1.Input, { id: searchId, placeholder: searchPlaceholder, value: searchValue, onChange: function (e) { return handleSearchInput("search", e.target.value); }, disabled: searchDisabled || loading, className: "pl-9", "data-testid": testIdInput }),
|
|
16
|
-
loading && testIdLoading && (react_1.default.createElement("span", { className: "sr-only", "data-testid": testIdLoading })))))));
|
|
17
|
-
};
|
|
18
|
-
exports.EnhancedTableHeaderSearch = EnhancedTableHeaderSearch;
|
|
1
|
+
"use strict";import e from"react";import{Search as f}from"lucide-react";import{Input as h}from"./ui/input";export const EnhancedTableHeaderSearch=({handleSearchInput:r,loading:a,searchDisabled:l=!1,searchEnabled:s=!0,searchId:m="table-search",searchPlaceholder:c="Search...",searchValue:n,testIdWrapper:d,testIdInput:o,testIdIcon:i,testIdLoading:t})=>e.createElement(e.Fragment,null,s&&e.createElement("div",{className:"flex items-center gap-2 max-w-xl","data-testid":d},e.createElement("div",{className:"relative flex-1"},e.createElement(f,{className:"absolute left-3 top-1/2 transform -translate-y-1/2 h-4 w-4 text-muted-foreground","data-testid":i}),e.createElement(h,{id:m,placeholder:c,value:n,onChange:p=>r("search",p.target.value),disabled:l||a,className:"pl-9","data-testid":o}),a&&t&&e.createElement("span",{className:"sr-only","data-testid":t}))));
|
|
@@ -1,329 +1 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
"use strict";
|
|
3
|
-
var __assign = (this && this.__assign) || function () {
|
|
4
|
-
__assign = Object.assign || function(t) {
|
|
5
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
6
|
-
s = arguments[i];
|
|
7
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
8
|
-
t[p] = s[p];
|
|
9
|
-
}
|
|
10
|
-
return t;
|
|
11
|
-
};
|
|
12
|
-
return __assign.apply(this, arguments);
|
|
13
|
-
};
|
|
14
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
15
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
16
|
-
};
|
|
17
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
-
exports.EnhancedTable = exports.COMPONENT_TYPE = void 0;
|
|
19
|
-
var react_1 = __importDefault(require("react"));
|
|
20
|
-
var lucide_react_1 = require("lucide-react");
|
|
21
|
-
var table_1 = require("./ui/table");
|
|
22
|
-
var dropdown_menu_1 = require("./ui/dropdown-menu");
|
|
23
|
-
var utils_1 = require("../lib/utils");
|
|
24
|
-
var enhanced_table_footer_action_1 = require("./enhanced-table-footer-action");
|
|
25
|
-
var enhanced_table_footer_page_1 = require("./enhanced-table-footer-page");
|
|
26
|
-
var enhanced_table_footer_pagination_1 = require("./enhanced-table-footer-pagination");
|
|
27
|
-
var popover_1 = require("./ui/popover");
|
|
28
|
-
var enhanced_table_header_action_1 = require("./enhanced-table-header-action");
|
|
29
|
-
var enhanced_table_header_search_1 = require("./enhanced-table-header-search");
|
|
30
|
-
var badge_1 = require("./ui/badge");
|
|
31
|
-
// Centralized component type values for table cell rendering
|
|
32
|
-
var COMPONENT_TYPE;
|
|
33
|
-
(function (COMPONENT_TYPE) {
|
|
34
|
-
COMPONENT_TYPE["ID"] = "ID";
|
|
35
|
-
COMPONENT_TYPE["BOLD_TEXT"] = "BOLD_TEXT";
|
|
36
|
-
COMPONENT_TYPE["TEXT"] = "TEXT";
|
|
37
|
-
COMPONENT_TYPE["OBJECT"] = "OBJECT";
|
|
38
|
-
COMPONENT_TYPE["MULTIPLE_TEXT_LINES"] = "MULTIPLE_TEXT_LINES";
|
|
39
|
-
COMPONENT_TYPE["CREATED_UPDATED_AT"] = "CREATED_UPDATED_AT";
|
|
40
|
-
COMPONENT_TYPE["ACTIONS"] = "ACTIONS";
|
|
41
|
-
COMPONENT_TYPE["BOOLEAN"] = "BOOLEAN";
|
|
42
|
-
})(COMPONENT_TYPE || (exports.COMPONENT_TYPE = COMPONENT_TYPE = {}));
|
|
43
|
-
var EnhancedTable = function (_a) {
|
|
44
|
-
var currentPage = _a.currentPage, handleNextOnClick = _a.handleNextOnClick, handleOnSelect = _a.handleOnSelect, handlePreviousOnClick = _a.handlePreviousOnClick, handleSearchInput = _a.handleSearchInput, headerActions = _a.headerActions, isNextDisabled = _a.isNextDisabled, isPreviousDisabled = _a.isPreviousDisabled, _b = _a.isRTL, isRTL = _b === void 0 ? false : _b, listOptions = _a.listOptions, loading = _a.loading, _c = _a.nodeSelectKey, nodeSelectKey = _c === void 0 ? "pageLimit" : _c, numberOfFilters = _a.numberOfFilters, onClearFilters = _a.onClearFilters, pageLimit = _a.pageLimit, rowActions = _a.rowActions, _d = _a.searchDisabled, searchDisabled = _d === void 0 ? false : _d, _e = _a.searchEnabled, searchEnabled = _e === void 0 ? true : _e, _f = _a.searchId, searchId = _f === void 0 ? "table-search" : _f, _g = _a.searchPlaceholder, searchPlaceholder = _g === void 0 ? "Search..." : _g, searchValue = _a.searchValue, tableBodyCols = _a.tableBodyCols, tableBodyRows = _a.tableBodyRows, tableDescription = _a.tableDescription, tableHeading = _a.tableHeading, tableHeadItems = _a.tableHeadItems, totalPages = _a.totalPages, _h = _a.translationLabels, translationLabels = _h === void 0 ? {} : _h, testIdWrapper = _a.testIdWrapper, testIdHeading = _a.testIdHeading, testIdTableDescription = _a.testIdTableDescription, testIdSearch = _a.testIdSearch, testIdHeaderActions = _a.testIdHeaderActions, testIdHeaderActionPrefix = _a.testIdHeaderActionPrefix, testIdHeaderActionFilterBadge = _a.testIdHeaderActionFilterBadge, testIdHeaderActionClearFilters = _a.testIdHeaderActionClearFilters, testIdTableWrapper = _a.testIdTableWrapper, testIdRowPrefix = _a.testIdRowPrefix, testIdCellPrefix = _a.testIdCellPrefix, testIdRowActionPrefix = _a.testIdRowActionPrefix, testIdNoResults = _a.testIdNoResults, testIdLoadingRowPrefix = _a.testIdLoadingRowPrefix, testIdPaginationWrapper = _a.testIdPaginationWrapper, testIdFooterPagination = _a.testIdFooterPagination, testIdFooterPage = _a.testIdFooterPage, testIdFooterAction = _a.testIdFooterAction, testIdWrapperRtl = _a.testIdWrapperRtl, testIdHeadingRtl = _a.testIdHeadingRtl, testIdTableDescriptionRtl = _a.testIdTableDescriptionRtl, testIdSearchRtl = _a.testIdSearchRtl, testIdHeaderActionsRtl = _a.testIdHeaderActionsRtl, testIdHeaderActionPrefixRtl = _a.testIdHeaderActionPrefixRtl, testIdHeaderActionFilterBadgeRtl = _a.testIdHeaderActionFilterBadgeRtl, testIdHeaderActionClearFiltersRtl = _a.testIdHeaderActionClearFiltersRtl, testIdTableWrapperRtl = _a.testIdTableWrapperRtl, testIdRowPrefixRtl = _a.testIdRowPrefixRtl, testIdCellPrefixRtl = _a.testIdCellPrefixRtl, testIdRowActionPrefixRtl = _a.testIdRowActionPrefixRtl, testIdNoResultsRtl = _a.testIdNoResultsRtl, testIdLoadingRowPrefixRtl = _a.testIdLoadingRowPrefixRtl, testIdPaginationWrapperRtl = _a.testIdPaginationWrapperRtl, testIdFooterPaginationRtl = _a.testIdFooterPaginationRtl, testIdFooterPageRtl = _a.testIdFooterPageRtl, testIdFooterActionRtl = _a.testIdFooterActionRtl;
|
|
45
|
-
// Default translation values
|
|
46
|
-
var defaultLabels = {
|
|
47
|
-
booleanYes: "Yes",
|
|
48
|
-
booleanNo: "No",
|
|
49
|
-
noResultsFound: "No results found.",
|
|
50
|
-
previousPage: "Previous page",
|
|
51
|
-
nextPage: "Next page",
|
|
52
|
-
page: "Page",
|
|
53
|
-
of: "of",
|
|
54
|
-
loading: "Loading",
|
|
55
|
-
rowsPerPage: "Rows per page:",
|
|
56
|
-
};
|
|
57
|
-
// Merge provided labels with defaults
|
|
58
|
-
var labels = __assign(__assign({}, defaultLabels), translationLabels);
|
|
59
|
-
// Resolve which test ids to use depending on `isRTL` mode.
|
|
60
|
-
var _testIdWrapper = isRTL
|
|
61
|
-
? (testIdWrapperRtl !== null && testIdWrapperRtl !== void 0 ? testIdWrapperRtl : testIdWrapper)
|
|
62
|
-
: testIdWrapper;
|
|
63
|
-
var _testIdHeading = isRTL
|
|
64
|
-
? (testIdHeadingRtl !== null && testIdHeadingRtl !== void 0 ? testIdHeadingRtl : testIdHeading)
|
|
65
|
-
: testIdHeading;
|
|
66
|
-
var _testIdTableDescription = isRTL
|
|
67
|
-
? (testIdTableDescriptionRtl !== null && testIdTableDescriptionRtl !== void 0 ? testIdTableDescriptionRtl : testIdTableDescription)
|
|
68
|
-
: testIdTableDescription;
|
|
69
|
-
var _testIdSearch = isRTL
|
|
70
|
-
? (testIdSearchRtl !== null && testIdSearchRtl !== void 0 ? testIdSearchRtl : testIdSearch)
|
|
71
|
-
: testIdSearch;
|
|
72
|
-
var _testIdHeaderActions = isRTL
|
|
73
|
-
? (testIdHeaderActionsRtl !== null && testIdHeaderActionsRtl !== void 0 ? testIdHeaderActionsRtl : testIdHeaderActions)
|
|
74
|
-
: testIdHeaderActions;
|
|
75
|
-
var _testIdHeaderActionPrefix = isRTL
|
|
76
|
-
? (testIdHeaderActionPrefixRtl !== null && testIdHeaderActionPrefixRtl !== void 0 ? testIdHeaderActionPrefixRtl : testIdHeaderActionPrefix)
|
|
77
|
-
: testIdHeaderActionPrefix;
|
|
78
|
-
var _testIdHeaderActionFilterBadge = isRTL
|
|
79
|
-
? (testIdHeaderActionFilterBadgeRtl !== null && testIdHeaderActionFilterBadgeRtl !== void 0 ? testIdHeaderActionFilterBadgeRtl : testIdHeaderActionFilterBadge)
|
|
80
|
-
: testIdHeaderActionFilterBadge;
|
|
81
|
-
var _testIdHeaderActionClearFilters = isRTL
|
|
82
|
-
? (testIdHeaderActionClearFiltersRtl !== null && testIdHeaderActionClearFiltersRtl !== void 0 ? testIdHeaderActionClearFiltersRtl : testIdHeaderActionClearFilters)
|
|
83
|
-
: testIdHeaderActionClearFilters;
|
|
84
|
-
var _testIdTableWrapper = isRTL
|
|
85
|
-
? (testIdTableWrapperRtl !== null && testIdTableWrapperRtl !== void 0 ? testIdTableWrapperRtl : testIdTableWrapper)
|
|
86
|
-
: testIdTableWrapper;
|
|
87
|
-
var _testIdRowPrefix = isRTL
|
|
88
|
-
? (testIdRowPrefixRtl !== null && testIdRowPrefixRtl !== void 0 ? testIdRowPrefixRtl : testIdRowPrefix)
|
|
89
|
-
: testIdRowPrefix;
|
|
90
|
-
var _testIdCellPrefix = isRTL
|
|
91
|
-
? (testIdCellPrefixRtl !== null && testIdCellPrefixRtl !== void 0 ? testIdCellPrefixRtl : testIdCellPrefix)
|
|
92
|
-
: testIdCellPrefix;
|
|
93
|
-
var _testIdRowActionPrefix = isRTL
|
|
94
|
-
? (testIdRowActionPrefixRtl !== null && testIdRowActionPrefixRtl !== void 0 ? testIdRowActionPrefixRtl : testIdRowActionPrefix)
|
|
95
|
-
: testIdRowActionPrefix;
|
|
96
|
-
var _testIdNoResults = isRTL
|
|
97
|
-
? (testIdNoResultsRtl !== null && testIdNoResultsRtl !== void 0 ? testIdNoResultsRtl : testIdNoResults)
|
|
98
|
-
: testIdNoResults;
|
|
99
|
-
var _testIdLoadingRowPrefix = isRTL
|
|
100
|
-
? (testIdLoadingRowPrefixRtl !== null && testIdLoadingRowPrefixRtl !== void 0 ? testIdLoadingRowPrefixRtl : testIdLoadingRowPrefix)
|
|
101
|
-
: testIdLoadingRowPrefix;
|
|
102
|
-
var _testIdPaginationWrapper = isRTL
|
|
103
|
-
? (testIdPaginationWrapperRtl !== null && testIdPaginationWrapperRtl !== void 0 ? testIdPaginationWrapperRtl : testIdPaginationWrapper)
|
|
104
|
-
: testIdPaginationWrapper;
|
|
105
|
-
var _testIdFooterPagination = isRTL
|
|
106
|
-
? (testIdFooterPaginationRtl !== null && testIdFooterPaginationRtl !== void 0 ? testIdFooterPaginationRtl : testIdFooterPagination)
|
|
107
|
-
: testIdFooterPagination;
|
|
108
|
-
var _testIdFooterPage = isRTL
|
|
109
|
-
? (testIdFooterPageRtl !== null && testIdFooterPageRtl !== void 0 ? testIdFooterPageRtl : testIdFooterPage)
|
|
110
|
-
: testIdFooterPage;
|
|
111
|
-
var _testIdFooterAction = isRTL
|
|
112
|
-
? (testIdFooterActionRtl !== null && testIdFooterActionRtl !== void 0 ? testIdFooterActionRtl : testIdFooterAction)
|
|
113
|
-
: testIdFooterAction;
|
|
114
|
-
var renderCellContent = function (row, col, rowIndex) {
|
|
115
|
-
var _a, _b;
|
|
116
|
-
// Helper to safely resolve nested keys (max depth 3)
|
|
117
|
-
var resolveValue = function (source, key) {
|
|
118
|
-
if (!key)
|
|
119
|
-
return source;
|
|
120
|
-
if (typeof key === "string") {
|
|
121
|
-
// Handle colon-separated nested keys
|
|
122
|
-
if (key.includes(":")) {
|
|
123
|
-
var keys = key.split(":");
|
|
124
|
-
var cur = source;
|
|
125
|
-
for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {
|
|
126
|
-
var k = keys_2[_i];
|
|
127
|
-
if (cur == null || typeof cur !== "object")
|
|
128
|
-
return undefined;
|
|
129
|
-
cur = cur[k];
|
|
130
|
-
}
|
|
131
|
-
return cur;
|
|
132
|
-
}
|
|
133
|
-
// Simple key access
|
|
134
|
-
if (source && typeof source === "object")
|
|
135
|
-
return source[key];
|
|
136
|
-
return undefined;
|
|
137
|
-
}
|
|
138
|
-
// array of keys - try each until we find a defined value
|
|
139
|
-
for (var _a = 0, key_1 = key; _a < key_1.length; _a++) {
|
|
140
|
-
var k = key_1[_a];
|
|
141
|
-
var val = resolveValue(source, k);
|
|
142
|
-
if (val != null)
|
|
143
|
-
return val;
|
|
144
|
-
}
|
|
145
|
-
return undefined;
|
|
146
|
-
};
|
|
147
|
-
var getProp = function (obj, prop) {
|
|
148
|
-
if (obj &&
|
|
149
|
-
typeof obj === "object" &&
|
|
150
|
-
prop in obj)
|
|
151
|
-
return obj[prop];
|
|
152
|
-
return undefined;
|
|
153
|
-
};
|
|
154
|
-
// Resolve value (supports nested key arrays)
|
|
155
|
-
var value = resolveValue(row, col.key);
|
|
156
|
-
// Normalize componentType so external string enums (like VISTA_TABLE_CELL_TYPE)
|
|
157
|
-
// remain compatible with this table. Unknown/unsupported types fall back to TEXT.
|
|
158
|
-
var normalizeComponentType = function (c) {
|
|
159
|
-
var _a;
|
|
160
|
-
if (!c)
|
|
161
|
-
return undefined;
|
|
162
|
-
if (Object.values(COMPONENT_TYPE).includes(c))
|
|
163
|
-
return c;
|
|
164
|
-
// Map common external values to our ComponentType using object notation
|
|
165
|
-
var MAP = {
|
|
166
|
-
ID: COMPONENT_TYPE.ID,
|
|
167
|
-
BOLD_TEXT: COMPONENT_TYPE.BOLD_TEXT,
|
|
168
|
-
BOOLEAN: COMPONENT_TYPE.BOOLEAN,
|
|
169
|
-
ACTIONS: COMPONENT_TYPE.ACTIONS,
|
|
170
|
-
TEXT: COMPONENT_TYPE.TEXT,
|
|
171
|
-
OBJECT: COMPONENT_TYPE.OBJECT,
|
|
172
|
-
MULTIPLE_TEXT_LINES: COMPONENT_TYPE.MULTIPLE_TEXT_LINES,
|
|
173
|
-
CREATED_UPDATED_AT: COMPONENT_TYPE.CREATED_UPDATED_AT,
|
|
174
|
-
};
|
|
175
|
-
return (_a = MAP[String(c)]) !== null && _a !== void 0 ? _a : COMPONENT_TYPE.TEXT;
|
|
176
|
-
};
|
|
177
|
-
var normalizedType = normalizeComponentType(col.componentType);
|
|
178
|
-
if (normalizedType === COMPONENT_TYPE.ACTIONS) {
|
|
179
|
-
return (react_1.default.createElement(dropdown_menu_1.DropdownMenu, null,
|
|
180
|
-
react_1.default.createElement(dropdown_menu_1.DropdownMenuTrigger, { asChild: true },
|
|
181
|
-
react_1.default.createElement(lucide_react_1.MoreHorizontal, { className: "h-4 w-4" })),
|
|
182
|
-
react_1.default.createElement(dropdown_menu_1.DropdownMenuContent, { align: "end" }, rowActions
|
|
183
|
-
.filter(function (_a) {
|
|
184
|
-
var enabled = _a.enabled;
|
|
185
|
-
return typeof enabled === "function" ? enabled(row) : enabled;
|
|
186
|
-
})
|
|
187
|
-
.sort(function (a, b) { return (a.order || 0) - (b.order || 0); })
|
|
188
|
-
.map(function (action, index) { return (react_1.default.createElement(dropdown_menu_1.DropdownMenuItem, { key: action.id || action.key || index, "data-testid": _testIdRowActionPrefix
|
|
189
|
-
? "".concat(_testIdRowActionPrefix, "-").concat(rowIndex, "-").concat(index)
|
|
190
|
-
: undefined, className: (0, utils_1.cn)(action.variant === "destructive" &&
|
|
191
|
-
"text-destructive focus:text-destructive"), onClick: function () { var _a; return (_a = action.handleOnClick) === null || _a === void 0 ? void 0 : _a.call(action, row); } }, action.label)); }))));
|
|
192
|
-
}
|
|
193
|
-
if (normalizedType === COMPONENT_TYPE.ID) {
|
|
194
|
-
return (react_1.default.createElement(popover_1.Popover, null,
|
|
195
|
-
react_1.default.createElement(popover_1.PopoverTrigger, { asChild: true },
|
|
196
|
-
react_1.default.createElement("span", { className: "text-xs text-muted-foreground font-mono" }, typeof value === "string"
|
|
197
|
-
? "".concat(value.substring(0, 8), "...")
|
|
198
|
-
: String(value || ""))),
|
|
199
|
-
react_1.default.createElement(popover_1.PopoverContent, null,
|
|
200
|
-
react_1.default.createElement("span", { className: "text-xs text-muted-foreground font-mono" }, col.textFormatter
|
|
201
|
-
? col.textFormatter(value, row)
|
|
202
|
-
: String(value)))));
|
|
203
|
-
}
|
|
204
|
-
if (normalizedType === COMPONENT_TYPE.BOLD_TEXT) {
|
|
205
|
-
var formatted = col.textFormatter
|
|
206
|
-
? col.textFormatter(value, row)
|
|
207
|
-
: String(value || "");
|
|
208
|
-
return react_1.default.createElement("span", { className: "font-semibold" }, formatted);
|
|
209
|
-
}
|
|
210
|
-
if (normalizedType === COMPONENT_TYPE.BOOLEAN) {
|
|
211
|
-
var isTrue = Boolean(value);
|
|
212
|
-
return (react_1.default.createElement(badge_1.Badge, { variant: "secondary", className: (0, utils_1.cn)("text-white font-medium", isTrue
|
|
213
|
-
? "bg-green-500 hover:bg-green-600"
|
|
214
|
-
: "bg-red-500 hover:bg-red-600") }, isTrue ? labels.booleanYes : labels.booleanNo));
|
|
215
|
-
}
|
|
216
|
-
// OBJECT => nested property path supplied as array of colon-separated strings
|
|
217
|
-
// e.g., ["user:company", "profile:department"] with fallback support
|
|
218
|
-
// If first path is undefined, try the next one. If all undefined, render '-'
|
|
219
|
-
if (normalizedType === COMPONENT_TYPE.OBJECT) {
|
|
220
|
-
var nested = void 0;
|
|
221
|
-
// Key must be an array of colon-separated strings
|
|
222
|
-
if (Array.isArray(col.key)) {
|
|
223
|
-
// Try each key path until we find a defined value
|
|
224
|
-
for (var _i = 0, _c = col.key; _i < _c.length; _i++) {
|
|
225
|
-
var keyPath = _c[_i];
|
|
226
|
-
if (typeof keyPath === "string" && keyPath.includes(":")) {
|
|
227
|
-
var keys = keyPath.split(":");
|
|
228
|
-
var cur = row;
|
|
229
|
-
var found = true;
|
|
230
|
-
for (var _d = 0, keys_1 = keys; _d < keys_1.length; _d++) {
|
|
231
|
-
var k = keys_1[_d];
|
|
232
|
-
if (cur == null || typeof cur !== "object") {
|
|
233
|
-
found = false;
|
|
234
|
-
break;
|
|
235
|
-
}
|
|
236
|
-
cur = cur[k];
|
|
237
|
-
}
|
|
238
|
-
if (found && cur != null) {
|
|
239
|
-
nested = cur;
|
|
240
|
-
break;
|
|
241
|
-
}
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
// If all paths are undefined, render '-'
|
|
246
|
-
if (nested == null)
|
|
247
|
-
return react_1.default.createElement("span", null, "-");
|
|
248
|
-
// If nested is an object, try to find a primitive value
|
|
249
|
-
if (typeof nested === "object") {
|
|
250
|
-
var primitive = Object.values(nested).find(function (v) {
|
|
251
|
-
return ["string", "number", "boolean"].includes(typeof v);
|
|
252
|
-
});
|
|
253
|
-
var toRender = primitive !== null && primitive !== void 0 ? primitive : JSON.stringify(nested);
|
|
254
|
-
return (react_1.default.createElement("span", null, col.textFormatter
|
|
255
|
-
? col.textFormatter(toRender, row)
|
|
256
|
-
: String(toRender)));
|
|
257
|
-
}
|
|
258
|
-
// Nested is a primitive value
|
|
259
|
-
return (react_1.default.createElement("span", null, col.textFormatter ? col.textFormatter(nested, row) : String(nested)));
|
|
260
|
-
} // MULTIPLE_TEXT_LINES => col.key is an array of keys, render up to 3 lines
|
|
261
|
-
if (normalizedType === COMPONENT_TYPE.MULTIPLE_TEXT_LINES) {
|
|
262
|
-
var keys = Array.isArray(col.key) ? col.key : [];
|
|
263
|
-
var lines = keys.slice(0, 3).map(function (k) {
|
|
264
|
-
var v = resolveValue(row, k);
|
|
265
|
-
return v == null ? "" : String(v);
|
|
266
|
-
});
|
|
267
|
-
return (react_1.default.createElement("div", { className: "flex flex-col" }, lines.map(function (line, idx) { return (react_1.default.createElement("span", { key: idx, className: "text-sm" }, col.textFormatter ? col.textFormatter(line, row) : line)); })));
|
|
268
|
-
}
|
|
269
|
-
// CREATED_UPDATED_AT => show createdAt and updatedAt from the object (or nested object)
|
|
270
|
-
if (normalizedType === COMPONENT_TYPE.CREATED_UPDATED_AT) {
|
|
271
|
-
var target = resolveValue(row, col.key);
|
|
272
|
-
var created = (_a = getProp(target, "createdAt")) !== null && _a !== void 0 ? _a : getProp(row, "createdAt");
|
|
273
|
-
var updated = (_b = getProp(target, "updatedAt")) !== null && _b !== void 0 ? _b : getProp(row, "updatedAt");
|
|
274
|
-
var fmt = function (d) {
|
|
275
|
-
if (d == null)
|
|
276
|
-
return "";
|
|
277
|
-
var date = d instanceof Date ? d : new Date(String(d));
|
|
278
|
-
if (isNaN(date.getTime()))
|
|
279
|
-
return String(d);
|
|
280
|
-
return date.toLocaleString();
|
|
281
|
-
};
|
|
282
|
-
return (react_1.default.createElement("div", { className: "flex flex-col text-sm text-muted-foreground" },
|
|
283
|
-
react_1.default.createElement("span", null, fmt(created)),
|
|
284
|
-
react_1.default.createElement("span", null, fmt(updated))));
|
|
285
|
-
}
|
|
286
|
-
return (react_1.default.createElement("span", null, col.textFormatter
|
|
287
|
-
? col.textFormatter(value, row)
|
|
288
|
-
: String(value || "")));
|
|
289
|
-
};
|
|
290
|
-
// Create loading skeleton rows
|
|
291
|
-
var renderLoadingRows = function () {
|
|
292
|
-
return Array.from({ length: pageLimit || 5 }).map(function (_, index) { return (react_1.default.createElement(table_1.TableRow, { key: "loading-".concat(index), className: "hover:bg-muted/50", "data-testid": _testIdLoadingRowPrefix
|
|
293
|
-
? "".concat(_testIdLoadingRowPrefix, "-").concat(index)
|
|
294
|
-
: undefined }, tableHeadItems.map(function (_, colIndex) { return (react_1.default.createElement(table_1.TableCell, { key: colIndex, className: "py-4" },
|
|
295
|
-
react_1.default.createElement("div", { className: "h-4 bg-muted animate-pulse rounded w-full" }))); }))); });
|
|
296
|
-
};
|
|
297
|
-
return (react_1.default.createElement("div", { className: "space-y-4", "data-testid": _testIdWrapper },
|
|
298
|
-
react_1.default.createElement("div", { className: "flex items-center justify-between" },
|
|
299
|
-
react_1.default.createElement("div", { className: "space-y-1" },
|
|
300
|
-
react_1.default.createElement("h2", { className: "text-2xl font-bold tracking-tight", "data-testid": _testIdHeading }, tableHeading),
|
|
301
|
-
tableDescription && (react_1.default.createElement("p", { className: "text-muted-foreground", "data-testid": _testIdTableDescription }, tableDescription))),
|
|
302
|
-
react_1.default.createElement("div", { className: "flex flex-row items-center justify-end gap-2" },
|
|
303
|
-
react_1.default.createElement("div", { "data-testid": _testIdSearch },
|
|
304
|
-
react_1.default.createElement(enhanced_table_header_search_1.EnhancedTableHeaderSearch, { handleSearchInput: handleSearchInput, loading: loading, searchDisabled: searchDisabled, searchEnabled: searchEnabled, searchId: searchId, searchPlaceholder: searchPlaceholder, searchValue: searchValue })),
|
|
305
|
-
react_1.default.createElement("div", { "data-testid": _testIdHeaderActions },
|
|
306
|
-
react_1.default.createElement(enhanced_table_header_action_1.EnhancedTableHeaderAction, { headerActions: headerActions, numberOfFilters: numberOfFilters, onClearFilters: onClearFilters, testIdActionPrefix: _testIdHeaderActionPrefix, testIdClearFilters: _testIdHeaderActionClearFilters, testIdFilterBadge: _testIdHeaderActionFilterBadge })))),
|
|
307
|
-
react_1.default.createElement("div", { className: "border rounded-md", "data-testid": _testIdTableWrapper },
|
|
308
|
-
react_1.default.createElement(table_1.Table, null,
|
|
309
|
-
react_1.default.createElement(table_1.TableHeader, null,
|
|
310
|
-
react_1.default.createElement(table_1.TableRow, null, tableHeadItems.map(function (header, index) { return (react_1.default.createElement(table_1.TableHead, { key: index, style: { width: header.width }, className: (0, utils_1.cn)("font-medium", index === 0 && "rounded-tl-md", index === tableHeadItems.length - 1 && "rounded-tr-md") }, header.label)); }))),
|
|
311
|
-
react_1.default.createElement(table_1.TableBody, null, loading ? (renderLoadingRows()) : tableBodyRows.length === 0 ? (react_1.default.createElement(table_1.TableRow, null,
|
|
312
|
-
react_1.default.createElement(table_1.TableCell, { colSpan: tableHeadItems.length, className: "h-24 text-center text-muted-foreground", "data-testid": _testIdNoResults }, labels.noResultsFound))) : (tableBodyRows.map(function (row, rowIndex) { return (react_1.default.createElement(table_1.TableRow, { key: rowIndex, className: "hover:bg-muted/50", "data-testid": _testIdRowPrefix
|
|
313
|
-
? "".concat(_testIdRowPrefix, "-").concat(rowIndex)
|
|
314
|
-
: undefined }, tableBodyCols.map(function (col, colIndex) { return (react_1.default.createElement(table_1.TableCell, { key: colIndex, className: (0, utils_1.cn)("py-4 cursor-pointer"), "data-testid": _testIdCellPrefix
|
|
315
|
-
? "".concat(_testIdCellPrefix, "-").concat(rowIndex, "-").concat(colIndex)
|
|
316
|
-
: undefined, onClick: function (e) {
|
|
317
|
-
var _a;
|
|
318
|
-
return (_a = navigator.clipboard) === null || _a === void 0 ? void 0 : _a.writeText(e.currentTarget.textContent || "");
|
|
319
|
-
} }, renderCellContent(row, col, rowIndex))); }))); }))))),
|
|
320
|
-
react_1.default.createElement("div", { className: "flex items-center justify-between", "data-testid": _testIdPaginationWrapper },
|
|
321
|
-
react_1.default.createElement("div", { "data-testid": _testIdFooterPagination },
|
|
322
|
-
react_1.default.createElement(enhanced_table_footer_pagination_1.EnhancedTableFooterPagination, { handleOnSelect: handleOnSelect, isRTL: isRTL, listOptions: listOptions, loading: loading, nodeSelectKey: nodeSelectKey, pageLimit: pageLimit, rowsPerPageLabel: labels.rowsPerPage, totalPages: totalPages })),
|
|
323
|
-
react_1.default.createElement("div", { className: "flex items-center gap-4" },
|
|
324
|
-
react_1.default.createElement("div", { "data-testid": _testIdFooterPage },
|
|
325
|
-
react_1.default.createElement(enhanced_table_footer_page_1.EnhancedTableFooterPage, { currentPage: currentPage, isRTL: isRTL, loading: loading, loadingLabel: labels.loading, ofLabel: labels.of, pageLabel: labels.page, totalPages: totalPages })),
|
|
326
|
-
react_1.default.createElement("div", { "data-testid": _testIdFooterAction },
|
|
327
|
-
react_1.default.createElement(enhanced_table_footer_action_1.EnhancedTableFooterAction, { handleNextOnClick: handleNextOnClick, handlePreviousOnClick: handlePreviousOnClick, isNextDisabled: isNextDisabled, isPreviousDisabled: isPreviousDisabled, isRTL: isRTL, loading: loading, nextPageLabel: labels.nextPage, previousPageLabel: labels.previousPage }))))));
|
|
328
|
-
};
|
|
329
|
-
exports.EnhancedTable = EnhancedTable;
|
|
1
|
+
"use strict";"use client";import e from"react";import{MoreHorizontal as We}from"lucide-react";import{Table as He,TableBody as Ie,TableCell as z,TableHead as Re,TableHeader as et,TableRow as _}from"./ui/table";import{DropdownMenu as tt,DropdownMenuContent as nt,DropdownMenuItem as at,DropdownMenuTrigger as rt}from"./ui/dropdown-menu";import{cn as h}from"../lib/utils";import{EnhancedTableFooterAction as lt}from"./enhanced-table-footer-action";import{EnhancedTableFooterPage as ot}from"./enhanced-table-footer-page";import{EnhancedTableFooterPagination as mt}from"./enhanced-table-footer-pagination";import{Popover as st,PopoverContent as ut,PopoverTrigger as ct}from"./ui/popover";import{EnhancedTableHeaderAction as it}from"./enhanced-table-header-action";import{EnhancedTableHeaderSearch as dt}from"./enhanced-table-header-search";import{Badge as ft}from"./ui/badge";export var COMPONENT_TYPE;(function(s){s.ID="ID",s.BOLD_TEXT="BOLD_TEXT",s.TEXT="TEXT",s.OBJECT="OBJECT",s.MULTIPLE_TEXT_LINES="MULTIPLE_TEXT_LINES",s.CREATED_UPDATED_AT="CREATED_UPDATED_AT",s.ACTIONS="ACTIONS",s.BOOLEAN="BOOLEAN"})(COMPONENT_TYPE||(COMPONENT_TYPE={}));export const EnhancedTable=({currentPage:s,handleNextOnClick:Ee,handleOnSelect:ve,handlePreviousOnClick:pe,handleSearchInput:ge,headerActions:Te,isNextDisabled:be,isPreviousDisabled:ye,isRTL:l=!1,listOptions:_e,loading:v,nodeSelectKey:he="pageLimit",numberOfFilters:Ne,onClearFilters:xe,pageLimit:V,rowActions:De,searchDisabled:Ae=!1,searchEnabled:Se=!0,searchId:ke="table-search",searchPlaceholder:Oe="Search...",searchValue:Ce,tableBodyCols:Le,tableBodyRows:K,tableDescription:q,tableHeading:Be,tableHeadItems:g,totalPages:G,translationLabels:Xe={},testIdWrapper:Q,testIdHeading:Z,testIdTableDescription:w,testIdSearch:Y,testIdHeaderActions:W,testIdHeaderActionPrefix:H,testIdHeaderActionFilterBadge:I,testIdHeaderActionClearFilters:R,testIdTableWrapper:ee,testIdRowPrefix:te,testIdCellPrefix:ne,testIdRowActionPrefix:ae,testIdNoResults:re,testIdLoadingRowPrefix:le,testIdPaginationWrapper:oe,testIdFooterPagination:me,testIdFooterPage:se,testIdFooterAction:ue,testIdWrapperRtl:N,testIdHeadingRtl:x,testIdTableDescriptionRtl:D,testIdSearchRtl:A,testIdHeaderActionsRtl:S,testIdHeaderActionPrefixRtl:k,testIdHeaderActionFilterBadgeRtl:O,testIdHeaderActionClearFiltersRtl:C,testIdTableWrapperRtl:L,testIdRowPrefixRtl:B,testIdCellPrefixRtl:X,testIdRowActionPrefixRtl:$,testIdNoResultsRtl:F,testIdLoadingRowPrefixRtl:P,testIdPaginationWrapperRtl:U,testIdFooterPaginationRtl:j,testIdFooterPageRtl:J,testIdFooterActionRtl:M})=>{const i=Object.assign(Object.assign({},{booleanYes:"Yes",booleanNo:"No",noResultsFound:"No results found.",previousPage:"Previous page",nextPage:"Next page",page:"Page",of:"of",loading:"Loading",rowsPerPage:"Rows per page:"}),Xe),$e=l?N??Q:Q,Fe=l?x??Z:Z,Pe=l?D??w:w,Ue=l?A??Y:Y,je=l?S??W:W,Je=l?k??H:H,Me=l?O??I:I,ze=l?C??R:R,Ve=l?L??ee:ee,ce=l?B??te:te,ie=l?X??ne:ne,de=l?$??ae:ae,Ke=l?F??re:re,fe=l?P??le:le,qe=l?U??oe:oe,Ge=l?j??me:me,Qe=l?J??se:se,Ze=l?M??ue:ue,we=(o,n,T)=>{var d,p;const f=(t,a)=>{if(!a)return t;if(typeof a=="string"){if(a.includes(":")){const m=a.split(":");let r=t;for(const c of m){if(r==null||typeof r!="object")return;r=r[c]}return r}return t&&typeof t=="object"?t[a]:void 0}for(const m of a){const r=f(t,m);if(r!=null)return r}},b=(t,a)=>{if(t&&typeof t=="object"&&a in t)return t[a]},u=f(o,n.key),E=(t=>{var a;return t?Object.values(COMPONENT_TYPE).includes(t)?t:(a={ID:COMPONENT_TYPE.ID,BOLD_TEXT:COMPONENT_TYPE.BOLD_TEXT,BOOLEAN:COMPONENT_TYPE.BOOLEAN,ACTIONS:COMPONENT_TYPE.ACTIONS,TEXT:COMPONENT_TYPE.TEXT,OBJECT:COMPONENT_TYPE.OBJECT,MULTIPLE_TEXT_LINES:COMPONENT_TYPE.MULTIPLE_TEXT_LINES,CREATED_UPDATED_AT:COMPONENT_TYPE.CREATED_UPDATED_AT}[String(t)])!==null&&a!==void 0?a:COMPONENT_TYPE.TEXT:void 0})(n.componentType);if(E===COMPONENT_TYPE.ACTIONS)return e.createElement(tt,null,e.createElement(rt,{asChild:!0},e.createElement(We,{className:"h-4 w-4"})),e.createElement(nt,{align:"end"},De.filter(({enabled:t})=>typeof t=="function"?t(o):t).sort((t,a)=>(t.order||0)-(a.order||0)).map((t,a)=>e.createElement(at,{key:t.id||t.key||a,"data-testid":de?`${de}-${T}-${a}`:void 0,className:h(t.variant==="destructive"&&"text-destructive focus:text-destructive"),onClick:()=>{var m;return(m=t.handleOnClick)===null||m===void 0?void 0:m.call(t,o)}},t.label))));if(E===COMPONENT_TYPE.ID)return e.createElement(st,null,e.createElement(ct,{asChild:!0},e.createElement("span",{className:"text-xs text-muted-foreground font-mono"},typeof u=="string"?`${u.substring(0,8)}...`:String(u||""))),e.createElement(ut,null,e.createElement("span",{className:"text-xs text-muted-foreground font-mono"},n.textFormatter?n.textFormatter(u,o):String(u))));if(E===COMPONENT_TYPE.BOLD_TEXT){const t=n.textFormatter?n.textFormatter(u,o):String(u||"");return e.createElement("span",{className:"font-semibold"},t)}if(E===COMPONENT_TYPE.BOOLEAN){const t=!!u;return e.createElement(ft,{variant:"secondary",className:h("text-white font-medium",t?"bg-green-500 hover:bg-green-600":"bg-red-500 hover:bg-red-600")},t?i.booleanYes:i.booleanNo)}if(E===COMPONENT_TYPE.OBJECT){let t;if(Array.isArray(n.key)){for(const a of n.key)if(typeof a=="string"&&a.includes(":")){const m=a.split(":");let r=o,c=!0;for(const y of m){if(r==null||typeof r!="object"){c=!1;break}r=r[y]}if(c&&r!=null){t=r;break}}}if(t==null)return e.createElement("span",null,"-");if(typeof t=="object"){const a=Object.values(t).find(r=>["string","number","boolean"].includes(typeof r)),m=a??JSON.stringify(t);return e.createElement("span",null,n.textFormatter?n.textFormatter(m,o):String(m))}return e.createElement("span",null,n.textFormatter?n.textFormatter(t,o):String(t))}if(E===COMPONENT_TYPE.MULTIPLE_TEXT_LINES){const a=(Array.isArray(n.key)?n.key:[]).slice(0,3).map(m=>{const r=f(o,m);return r==null?"":String(r)});return e.createElement("div",{className:"flex flex-col"},a.map((m,r)=>e.createElement("span",{key:r,className:"text-sm"},n.textFormatter?n.textFormatter(m,o):m)))}if(E===COMPONENT_TYPE.CREATED_UPDATED_AT){const t=f(o,n.key),a=(d=b(t,"createdAt"))!==null&&d!==void 0?d:b(o,"createdAt"),m=(p=b(t,"updatedAt"))!==null&&p!==void 0?p:b(o,"updatedAt"),r=c=>{if(c==null)return"";const y=c instanceof Date?c:new Date(String(c));return isNaN(y.getTime())?String(c):y.toLocaleString()};return e.createElement("div",{className:"flex flex-col text-sm text-muted-foreground"},e.createElement("span",null,r(a)),e.createElement("span",null,r(m)))}return e.createElement("span",null,n.textFormatter?n.textFormatter(u,o):String(u||""))},Ye=()=>Array.from({length:V||5}).map((o,n)=>e.createElement(_,{key:`loading-${n}`,className:"hover:bg-muted/50","data-testid":fe?`${fe}-${n}`:void 0},g.map((T,d)=>e.createElement(z,{key:d,className:"py-4"},e.createElement("div",{className:"h-4 bg-muted animate-pulse rounded w-full"})))));return e.createElement("div",{className:"space-y-4","data-testid":$e},e.createElement("div",{className:"flex items-center justify-between"},e.createElement("div",{className:"space-y-1"},e.createElement("h2",{className:"text-2xl font-bold tracking-tight","data-testid":Fe},Be),q&&e.createElement("p",{className:"text-muted-foreground","data-testid":Pe},q)),e.createElement("div",{className:"flex flex-row items-center justify-end gap-2"},e.createElement("div",{"data-testid":Ue},e.createElement(dt,{handleSearchInput:ge,loading:v,searchDisabled:Ae,searchEnabled:Se,searchId:ke,searchPlaceholder:Oe,searchValue:Ce})),e.createElement("div",{"data-testid":je},e.createElement(it,{headerActions:Te,numberOfFilters:Ne,onClearFilters:xe,testIdActionPrefix:Je,testIdClearFilters:ze,testIdFilterBadge:Me})))),e.createElement("div",{className:"border rounded-md","data-testid":Ve},e.createElement(He,null,e.createElement(et,null,e.createElement(_,null,g.map((o,n)=>e.createElement(Re,{key:n,style:{width:o.width},className:h("font-medium",n===0&&"rounded-tl-md",n===g.length-1&&"rounded-tr-md")},o.label)))),e.createElement(Ie,null,v?Ye():K.length===0?e.createElement(_,null,e.createElement(z,{colSpan:g.length,className:"h-24 text-center text-muted-foreground","data-testid":Ke},i.noResultsFound)):K.map((o,n)=>e.createElement(_,{key:n,className:"hover:bg-muted/50","data-testid":ce?`${ce}-${n}`:void 0},Le.map((T,d)=>e.createElement(z,{key:d,className:h("py-4 cursor-pointer"),"data-testid":ie?`${ie}-${n}-${d}`:void 0,onClick:p=>{var f;return(f=navigator.clipboard)===null||f===void 0?void 0:f.writeText(p.currentTarget.textContent||"")}},we(o,T,n)))))))),e.createElement("div",{className:"flex items-center justify-between","data-testid":qe},e.createElement("div",{"data-testid":Ge},e.createElement(mt,{handleOnSelect:ve,isRTL:l,listOptions:_e,loading:v,nodeSelectKey:he,pageLimit:V,rowsPerPageLabel:i.rowsPerPage,totalPages:G})),e.createElement("div",{className:"flex items-center gap-4"},e.createElement("div",{"data-testid":Qe},e.createElement(ot,{currentPage:s,isRTL:l,loading:v,loadingLabel:i.loading,ofLabel:i.of,pageLabel:i.page,totalPages:G})),e.createElement("div",{"data-testid":Ze},e.createElement(lt,{handleNextOnClick:Ee,handlePreviousOnClick:pe,isNextDisabled:be,isPreviousDisabled:ye,isRTL:l,loading:v,nextPageLabel:i.nextPage,previousPageLabel:i.previousPage})))))};
|