pixelize-design-library 2.3.1-beta.2 → 2.3.1-beta.20

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.
Files changed (165) hide show
  1. package/.claude/settings.local.json +28 -1
  2. package/.cursor/TASK-SETUP.md +43 -0
  3. package/.cursor/agents/be-impl.md +37 -0
  4. package/.cursor/agents/fe-impl.md +39 -0
  5. package/.cursor/agents/task-plan.md +56 -0
  6. package/.cursor/agents/test-create.md +31 -0
  7. package/.cursor/agents/test-exec.md +26 -0
  8. package/.cursor/hooks/task-hint.env +1 -0
  9. package/.cursor/hooks/task-skill-nudge.sh +71 -0
  10. package/.cursor/hooks/task-slash-guard.sh +31 -0
  11. package/.cursor/hooks.json +13 -0
  12. package/.cursor/modules/account-management/MODULE.md +16 -0
  13. package/.cursor/modules/buttons/MODULE.md +13 -0
  14. package/.cursor/modules/cards/MODULE.md +13 -0
  15. package/.cursor/modules/charts/MODULE.md +13 -0
  16. package/.cursor/modules/common/MODULE.md +13 -0
  17. package/.cursor/modules/contact-auth/MODULE.md +13 -0
  18. package/.cursor/modules/data-display/MODULE.md +13 -0
  19. package/.cursor/modules/feedback/MODULE.md +14 -0
  20. package/.cursor/modules/form/MODULE.md +13 -0
  21. package/.cursor/modules/inputs-basic/MODULE.md +13 -0
  22. package/.cursor/modules/inputs-date-file/MODULE.md +19 -0
  23. package/.cursor/modules/inputs-select/MODULE.md +14 -0
  24. package/.cursor/modules/inputs-toggle/MODULE.md +13 -0
  25. package/.cursor/modules/kanban/MODULE.md +14 -0
  26. package/.cursor/modules/layout-navigation/MODULE.md +14 -0
  27. package/.cursor/modules/overlays/MODULE.md +13 -0
  28. package/.cursor/modules/playground/MODULE.md +15 -0
  29. package/.cursor/modules/table/MODULE.md +15 -0
  30. package/.cursor/modules/theme/MODULE.md +15 -0
  31. package/.cursor/modules/types-exports/MODULE.md +17 -0
  32. package/.cursor/modules/utility-ui/MODULE.md +15 -0
  33. package/.cursor/modules/utils-hooks/MODULE.md +13 -0
  34. package/.cursor/pixelize-task-statusline.sh +64 -0
  35. package/.cursor/plans/blocked/.gitkeep +0 -0
  36. package/.cursor/plans/current.md +35 -0
  37. package/.cursor/plans/done/.gitkeep +0 -0
  38. package/.cursor/rules +31 -0
  39. package/.cursor/skills/task/SKILL.md +167 -0
  40. package/CLAUDE.md +122 -0
  41. package/dist/Components/Accordion/Accordion.js +26 -5
  42. package/dist/Components/Card/PaymentCard/PaymentCard.d.ts +1 -1
  43. package/dist/Components/Card/PaymentCard/PaymentCard.js +3 -3
  44. package/dist/Components/Card/PaymentCard/PaymentCardProps.d.ts +1 -0
  45. package/dist/Components/CopyButton/CopyButton.d.ts +22 -0
  46. package/dist/Components/CopyButton/CopyButton.js +126 -0
  47. package/dist/Components/CustomModulesTable/CustomModulesTable.d.ts +4 -0
  48. package/dist/Components/CustomModulesTable/CustomModulesTable.js +182 -0
  49. package/dist/Components/CustomModulesTable/CustomModulesTable.test.d.ts +1 -0
  50. package/dist/Components/CustomModulesTable/CustomModulesTable.test.js +84 -0
  51. package/dist/Components/CustomModulesTable/CustomModulesTableProps.d.ts +54 -0
  52. package/dist/Components/CustomModulesTable/CustomModulesTableProps.js +2 -0
  53. package/dist/Components/CustomModulesTable/DeleteModuleModal.d.ts +4 -0
  54. package/dist/Components/CustomModulesTable/DeleteModuleModal.js +33 -0
  55. package/dist/Components/CustomModulesTable/EditModuleModal.d.ts +4 -0
  56. package/dist/Components/CustomModulesTable/EditModuleModal.js +63 -0
  57. package/dist/Components/Dropdown/DropDown.js +110 -28
  58. package/dist/Components/Dropdown/Dropdown.test.d.ts +1 -0
  59. package/dist/Components/Dropdown/Dropdown.test.js +102 -0
  60. package/dist/Components/Dropdown/DropdownProps.d.ts +4 -1
  61. package/dist/Components/EmptyState/EmptyState.d.ts +4 -0
  62. package/dist/Components/EmptyState/EmptyState.js +65 -0
  63. package/dist/Components/EmptyState/EmptyStateProps.d.ts +28 -0
  64. package/dist/Components/EmptyState/EmptyStateProps.js +2 -0
  65. package/dist/Components/FieldSelectModal/FieldSelectModal.d.ts +26 -0
  66. package/dist/Components/FieldSelectModal/FieldSelectModal.js +107 -0
  67. package/dist/Components/FilePreview/FilePreview.d.ts +6 -0
  68. package/dist/Components/FilePreview/FilePreview.js +190 -0
  69. package/dist/Components/FilePreview/FilePreviewProps.d.ts +26 -0
  70. package/dist/Components/FilePreview/FilePreviewProps.js +2 -0
  71. package/dist/Components/KanbanBoard/AccountCard.js +17 -14
  72. package/dist/Components/KanbanBoard/KanbanBoard.js +93 -78
  73. package/dist/Components/LazyWrapper/LazyWrapper.d.ts +10 -0
  74. package/dist/Components/LazyWrapper/LazyWrapper.js +50 -0
  75. package/dist/Components/MoreItems/MoreItems.d.ts +4 -0
  76. package/dist/Components/MoreItems/MoreItems.js +35 -0
  77. package/dist/Components/MoreItems/MoreItemsProps.d.ts +29 -0
  78. package/dist/Components/MoreItems/MoreItemsProps.js +2 -0
  79. package/dist/Components/NavigationBar/NavigationBar.js +4 -4
  80. package/dist/Components/OrgSwitcher/OrgSwitcher.d.ts +4 -0
  81. package/dist/Components/OrgSwitcher/OrgSwitcher.js +121 -0
  82. package/dist/Components/OrgSwitcher/OrgSwitcherProps.d.ts +41 -0
  83. package/dist/Components/OrgSwitcher/OrgSwitcherProps.js +25 -0
  84. package/dist/Components/OrganizationDetails/CreateOrgModal.d.ts +4 -0
  85. package/dist/Components/OrganizationDetails/CreateOrgModal.js +122 -0
  86. package/dist/Components/OrganizationDetails/DeleteOrgModal.d.ts +4 -0
  87. package/dist/Components/OrganizationDetails/DeleteOrgModal.js +29 -0
  88. package/dist/Components/OrganizationDetails/OrganizationDetails.d.ts +4 -0
  89. package/dist/Components/OrganizationDetails/OrganizationDetails.js +264 -0
  90. package/dist/Components/OrganizationDetails/OrganizationDetails.test.d.ts +1 -0
  91. package/dist/Components/OrganizationDetails/OrganizationDetails.test.js +122 -0
  92. package/dist/Components/OrganizationDetails/OrganizationDetailsProps.d.ts +88 -0
  93. package/dist/Components/OrganizationDetails/OrganizationDetailsProps.js +2 -0
  94. package/dist/Components/PdfViewer/PdfViewer.d.ts +15 -0
  95. package/dist/Components/PdfViewer/PdfViewer.js +29 -0
  96. package/dist/Components/ProfilePhotoViewer/ProfilePhotoViewer.d.ts +1 -1
  97. package/dist/Components/ProfilePhotoViewer/ProfilePhotoViewer.js +42 -24
  98. package/dist/Components/ProfilePhotoViewer/ProfilePhotoViewerProps.d.ts +2 -0
  99. package/dist/Components/RolesPermission/DeleteRoleModal.d.ts +4 -0
  100. package/dist/Components/RolesPermission/DeleteRoleModal.js +29 -0
  101. package/dist/Components/RolesPermission/RolesPermission.d.ts +4 -0
  102. package/dist/Components/RolesPermission/RolesPermission.js +243 -0
  103. package/dist/Components/RolesPermission/RolesPermission.test.d.ts +1 -0
  104. package/dist/Components/RolesPermission/RolesPermission.test.js +150 -0
  105. package/dist/Components/RolesPermission/RolesPermissionProps.d.ts +117 -0
  106. package/dist/Components/RolesPermission/RolesPermissionProps.js +2 -0
  107. package/dist/Components/ScrollToTop/ScrollToTop.d.ts +19 -0
  108. package/dist/Components/ScrollToTop/ScrollToTop.js +104 -0
  109. package/dist/Components/SearchSelect/SearchSelect.js +53 -21
  110. package/dist/Components/SideBar/components/OtherApps.test.js +3 -2
  111. package/dist/Components/SignInActivityTable/SignInActivityTable.d.ts +4 -0
  112. package/dist/Components/SignInActivityTable/SignInActivityTable.js +95 -0
  113. package/dist/Components/SignInActivityTable/SignInActivityTable.test.d.ts +1 -0
  114. package/dist/Components/SignInActivityTable/SignInActivityTable.test.js +63 -0
  115. package/dist/Components/SignInActivityTable/SignInActivityTableProps.d.ts +21 -0
  116. package/dist/Components/SignInActivityTable/SignInActivityTableProps.js +2 -0
  117. package/dist/Components/StageProgress/StageItem.d.ts +4 -0
  118. package/dist/Components/StageProgress/StageItem.js +137 -0
  119. package/dist/Components/StageProgress/StageProgress.d.ts +4 -0
  120. package/dist/Components/StageProgress/StageProgress.js +59 -0
  121. package/dist/Components/StageProgress/StageProgressProps.d.ts +85 -0
  122. package/dist/Components/StageProgress/StageProgressProps.js +27 -0
  123. package/dist/Components/StageProgress/StepperStage.d.ts +4 -0
  124. package/dist/Components/StageProgress/StepperStage.js +78 -0
  125. package/dist/Components/Table/Table.d.ts +1 -1
  126. package/dist/Components/Table/Table.js +167 -32
  127. package/dist/Components/Table/TableProps.d.ts +11 -3
  128. package/dist/Components/Table/components/Pagination.js +1 -1
  129. package/dist/Components/Table/components/TableActions.d.ts +2 -2
  130. package/dist/Components/Table/components/TableActions.js +5 -4
  131. package/dist/Components/Table/components/TableBody.js +98 -29
  132. package/dist/Components/Table/components/TableBody.virtualize.test.js +13 -3
  133. package/dist/Components/Table/components/TableHeader.d.ts +1 -1
  134. package/dist/Components/Table/components/TableHeader.js +9 -13
  135. package/dist/Components/Table/hooks/useTable.d.ts +2 -1
  136. package/dist/Components/Table/hooks/useTable.js +24 -10
  137. package/dist/Components/Table/settings/ManageColumns.test.js +1 -0
  138. package/dist/Components/Table/settings/TableSettings.d.ts +3 -2
  139. package/dist/Components/Table/settings/TableSettings.js +30 -6
  140. package/dist/Components/Timeline/Timeline.d.ts +1 -1
  141. package/dist/Components/Timeline/Timeline.js +145 -78
  142. package/dist/Components/Toaster/Toaster.js +40 -20
  143. package/dist/Components/UpgradeButton/UpgradeButton.d.ts +4 -0
  144. package/dist/Components/UpgradeButton/UpgradeButton.js +73 -0
  145. package/dist/Components/UpgradeButton/UpgradeButtonProps.d.ts +43 -0
  146. package/dist/Components/UpgradeButton/UpgradeButtonProps.js +2 -0
  147. package/dist/Components/UserDetails/AddUserModal.d.ts +4 -0
  148. package/dist/Components/UserDetails/AddUserModal.js +218 -0
  149. package/dist/Components/UserDetails/ChangeRoleModal.d.ts +4 -0
  150. package/dist/Components/UserDetails/ChangeRoleModal.js +150 -0
  151. package/dist/Components/UserDetails/DeactivateConfirmModal.d.ts +4 -0
  152. package/dist/Components/UserDetails/DeactivateConfirmModal.js +34 -0
  153. package/dist/Components/UserDetails/UserDetails.d.ts +4 -0
  154. package/dist/Components/UserDetails/UserDetails.js +263 -0
  155. package/dist/Components/UserDetails/UserDetails.test.d.ts +1 -0
  156. package/dist/Components/UserDetails/UserDetails.test.js +129 -0
  157. package/dist/Components/UserDetails/UserDetailsProps.d.ts +151 -0
  158. package/dist/Components/UserDetails/UserDetailsProps.js +2 -0
  159. package/dist/Theme/index.d.ts +4 -4
  160. package/dist/Theme/index.js +4 -4
  161. package/dist/Utils/table.d.ts +6 -1
  162. package/dist/Utils/table.js +47 -27
  163. package/dist/index.d.ts +23 -1
  164. package/dist/index.js +37 -2
  165. package/package.json +1 -1
@@ -43,6 +43,15 @@ var __importStar = (this && this.__importStar) || (function () {
43
43
  return result;
44
44
  };
45
45
  })();
46
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
47
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
48
+ if (ar || !(i in from)) {
49
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
50
+ ar[i] = from[i];
51
+ }
52
+ }
53
+ return to.concat(ar || Array.prototype.slice.call(from));
54
+ };
46
55
  var __importDefault = (this && this.__importDefault) || function (mod) {
47
56
  return (mod && mod.__esModule) ? mod : { "default": mod };
48
57
  };
@@ -65,33 +74,34 @@ var HeaderActions_1 = __importDefault(require("./components/HeaderActions"));
65
74
  var Divider_1 = __importDefault(require("../Divider/Divider"));
66
75
  var TableSearch_1 = __importDefault(require("./components/TableSearch"));
67
76
  var ActiveFilters_1 = __importDefault(require("./filters/ActiveFilters"));
77
+ var Button_1 = __importDefault(require("../Button/Button"));
68
78
  var lucide_react_1 = require("lucide-react");
69
79
  var MotionBox = (0, framer_motion_1.motion)(react_2.Box);
70
80
  function Table(_a) {
71
- var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8;
72
- var data = _a.data, columns = _a.columns, onSelection = _a.onSelection, isLoading = _a.isLoading, _9 = _a.isCheckbox, isCheckbox = _9 === void 0 ? false : _9, headerBgColor = _a.headerBgColor, freezedBgColor = _a.freezedBgColor, headerTextColor = _a.headerTextColor, freezedTextColor = _a.freezedTextColor, tableBorderColor = _a.tableBorderColor, _10 = _a.noBorders, noBorders = _10 === void 0 ? false : _10, _11 = _a.isPagination, isPagination = _11 === void 0 ? true : _11, onRowClick = _a.onRowClick, selections = _a.selections, _12 = _a.isActionFreeze, isActionFreeze = _12 === void 0 ? true : _12, _13 = _a.preferences, preferences = _13 === void 0 ? {
81
+ var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12;
82
+ var data = _a.data, columns = _a.columns, onSelection = _a.onSelection, isLoading = _a.isLoading, _13 = _a.isCheckbox, isCheckbox = _13 === void 0 ? false : _13, headerBgColor = _a.headerBgColor, freezedBgColor = _a.freezedBgColor, headerTextColor = _a.headerTextColor, freezedTextColor = _a.freezedTextColor, tableBorderColor = _a.tableBorderColor, _14 = _a.noBorders, noBorders = _14 === void 0 ? false : _14, _15 = _a.isPagination, isPagination = _15 === void 0 ? true : _15, onRowClick = _a.onRowClick, selections = _a.selections, _16 = _a.isActionFreeze, isActionFreeze = _16 === void 0 ? true : _16, _17 = _a.preferences, preferences = _17 === void 0 ? {
73
83
  url: "",
74
84
  token: "",
75
85
  key: "",
76
86
  name: "",
77
87
  page: "",
78
88
  orgId: "",
79
- } : _13, _14 = _a.paginationMode, paginationMode = _14 === void 0 ? "client" : _14, _15 = _a.infiniteScroll, infiniteScroll = _15 === void 0 ? false : _15, hasMore = _a.hasMore, _16 = _a.isLoadingMore, isLoadingMore = _16 === void 0 ? false : _16, _17 = _a.noOfRowsPerPage, noOfRowsPerPage = _17 === void 0 ? 50 : _17, _18 = _a.totalRecords, totalRecords = _18 === void 0 ? 0 : _18, onPagination = _a.onPagination, _19 = _a.isTableSettings, isTableSettings = _19 === void 0 ? false : _19, headerActions = _a.headerActions, onGlobalSearch = _a.onGlobalSearch, onNoOfRowsPerPageChange = _a.onNoOfRowsPerPageChange, paginationSelectOptions = _a.paginationSelectOptions, tableMaxHeight = _a.tableMaxHeight, minVisibleRows = _a.minVisibleRows, maxVisibleRows = _a.maxVisibleRows, autoFitViewport = _a.autoFitViewport, tableSettings = _a.tableSettings, filterSidebar = _a.filterSidebar, loadingSkeletonRows = _a.loadingSkeletonRows, defaultVisibleColumns = _a.defaultVisibleColumns, _20 = _a.density, density = _20 === void 0 ? "normal" : _20, stripe = _a.stripe, groupBy = _a.groupBy, groupColors = _a.groupColors, onAddItem = _a.onAddItem, emptyState = _a.emptyState;
89
+ } : _17, _18 = _a.paginationMode, paginationMode = _18 === void 0 ? "client" : _18, _19 = _a.infiniteScroll, infiniteScroll = _19 === void 0 ? false : _19, hasMore = _a.hasMore, _20 = _a.isLoadingMore, isLoadingMore = _20 === void 0 ? false : _20, _21 = _a.groupLoadMore, groupLoadMore = _21 === void 0 ? false : _21, _22 = _a.loadMoreText, loadMoreText = _22 === void 0 ? "Load more" : _22, _23 = _a.loadMorePosition, loadMorePosition = _23 === void 0 ? "top" : _23, loadMoreChunkSize = _a.loadMoreChunkSize, _24 = _a.noOfRowsPerPage, noOfRowsPerPage = _24 === void 0 ? 50 : _24, _25 = _a.totalRecords, totalRecords = _25 === void 0 ? 0 : _25, onPagination = _a.onPagination, _26 = _a.isTableSettings, isTableSettings = _26 === void 0 ? false : _26, headerActions = _a.headerActions, onGlobalSearch = _a.onGlobalSearch, onNoOfRowsPerPageChange = _a.onNoOfRowsPerPageChange, paginationSelectOptions = _a.paginationSelectOptions, tableMaxHeight = _a.tableMaxHeight, minVisibleRows = _a.minVisibleRows, maxVisibleRows = _a.maxVisibleRows, autoFitViewport = _a.autoFitViewport, tableSettings = _a.tableSettings, filterSidebar = _a.filterSidebar, loadingSkeletonRows = _a.loadingSkeletonRows, defaultVisibleColumns = _a.defaultVisibleColumns, _27 = _a.density, density = _27 === void 0 ? "normal" : _27, stripe = _a.stripe, groupColors = _a.groupColors, onAddItem = _a.onAddItem, emptyState = _a.emptyState;
80
90
  var theme = (0, useCustomTheme_1.useCustomTheme)();
81
- var _21 = (0, react_1.useState)({}), columnsSearch = _21[0], setColumnsSearch = _21[1];
91
+ var _28 = (0, react_1.useState)({}), columnsSearch = _28[0], setColumnsSearch = _28[1];
82
92
  var tableContainerRef = (0, react_1.useRef)(null);
83
- var _22 = (0, react_2.useDisclosure)(), isFilterModalOpen = _22.isOpen, onFilterModalOpen = _22.onOpen, onFilterModalClose = _22.onClose;
93
+ var _29 = (0, react_2.useDisclosure)(), isFilterModalOpen = _29.isOpen, onFilterModalOpen = _29.onOpen, onFilterModalClose = _29.onClose;
84
94
  var filterMode = (_b = filterSidebar === null || filterSidebar === void 0 ? void 0 : filterSidebar.filterMode) !== null && _b !== void 0 ? _b : "sidebar";
85
- var _23 = (0, react_1.useState)(500), viewportAvailableH = _23[0], setViewportAvailableH = _23[1];
95
+ var _30 = (0, react_1.useState)(500), viewportAvailableH = _30[0], setViewportAvailableH = _30[1];
86
96
  var isServerPagination = paginationMode === "server";
87
- var _24 = (0, usePreferences_1.useGetPreferences)({
97
+ var _31 = (0, usePreferences_1.useGetPreferences)({
88
98
  baseUrl: preferences.url,
89
99
  page: preferences.page,
90
100
  key: preferences.key,
91
101
  name: preferences.name,
92
102
  authToken: preferences.token,
93
103
  orgId: preferences.orgId,
94
- }), tablePreferencesData = _24.preferences, loading = _24.loading;
104
+ }), tablePreferencesData = _31.preferences, loading = _31.loading;
95
105
  var savePreferences = (0, usePreferences_1.useSavePreferences)({
96
106
  baseUrl: preferences.url,
97
107
  page: preferences.page,
@@ -109,7 +119,7 @@ function Table(_a) {
109
119
  }
110
120
  return {};
111
121
  }, [tablePreferencesData]);
112
- var _25 = (0, useTable_1.default)({
122
+ var _32 = (0, useTable_1.default)({
113
123
  tableBorderColor: tableBorderColor,
114
124
  data: data,
115
125
  isPagination: isPagination,
@@ -123,37 +133,131 @@ function Table(_a) {
123
133
  isServerPagination: isServerPagination,
124
134
  onNoOfRowsPerPageChange: onNoOfRowsPerPageChange,
125
135
  defaultVisibleColumns: defaultVisibleColumns,
126
- }), tableData = _25.tableData, isContent = _25.isContent, isLink = _25.isLink, headerRefs = _25.headerRefs, columnWidths = _25.columnWidths, handleSort = _25.handleSort, handleCheckbox = _25.handleCheckbox, filteredData = _25.filteredData, startRow = _25.startRow, endRow = _25.endRow, selection = _25.selection, columnsSort = _25.columnsSort, currentPage = _25.currentPage, pages = _25.pages, rowsPerPage = _25.rowsPerPage, handlePageSizeChange = _25.handlePageSizeChange, setCurrentPage = _25.setCurrentPage, columnsList = _25.columnsList, handleColumnPreferences = _25.handleColumnPreferences, isSelecting = _25.isSelecting;
127
- // Density is managed here so the Table Settings tab can change + persist it
128
- // (seeded from the prop, then from saved preferences when they load).
129
- var _26 = (0, react_1.useState)(density), densityState = _26[0], setDensityState = _26[1];
136
+ }), tableData = _32.tableData, isContent = _32.isContent, isLink = _32.isLink, headerRefs = _32.headerRefs, columnWidths = _32.columnWidths, handleSort = _32.handleSort, handleCheckbox = _32.handleCheckbox, filteredData = _32.filteredData, startRow = _32.startRow, endRow = _32.endRow, selection = _32.selection, columnsSort = _32.columnsSort, currentPage = _32.currentPage, pages = _32.pages, rowsPerPage = _32.rowsPerPage, handlePageSizeChange = _32.handlePageSizeChange, setCurrentPage = _32.setCurrentPage, columnsList = _32.columnsList, handleColumnPreferences = _32.handleColumnPreferences, isSelecting = _32.isSelecting, selectAllRowsRef = _32.selectAllRowsRef;
137
+ // Density + grouping are managed here so the Table Settings tabs can change +
138
+ // persist them (seeded from the prop / saved preferences when they load).
139
+ var _33 = (0, react_1.useState)(density), densityState = _33[0], setDensityState = _33[1];
140
+ // Grouping is chosen by the user in Table Settings > Group and persisted to
141
+ // preferences (`json.groupBy`); there is no `groupBy` prop.
142
+ var _34 = (0, react_1.useState)(undefined), groupByState = _34[0], setGroupByState = _34[1];
143
+ // Grouped "Load more" accumulates pages here so loading more ADDS rows to the
144
+ // groups (server pagination replaces `data` each fetch). Reset on fresh loads
145
+ // (search / filter / sort / page-size). Only used in grouped + groupLoadMore mode.
146
+ var _35 = (0, react_1.useState)([]), accumulatedRows = _35[0], setAccumulatedRows = _35[1];
147
+ var pendingLoadMoreRef = (0, react_1.useRef)(false);
148
+ // Pages loaded so far (1 = the initial page). The next page is derived from this
149
+ // counter — NOT from the deduped row count — so overlapping rows across pages
150
+ // (e.g. pinned rows that repeat on every page) don't stall the page index.
151
+ var loadedPagesRef = (0, react_1.useRef)(1);
152
+ (0, react_1.useEffect)(function () {
153
+ if (!groupLoadMore)
154
+ return;
155
+ setAccumulatedRows(function (prev) {
156
+ if (prev.length === 0) {
157
+ loadedPagesRef.current = 1;
158
+ return tableData.slice();
159
+ }
160
+ var accIds = new Set(prev.map(function (r) { return r.id; }));
161
+ if (pendingLoadMoreRef.current) {
162
+ // A "Load more" is in flight. The parent may re-emit the SAME page (new
163
+ // array reference) on intermediate re-renders before the next page arrives,
164
+ // so only append + consume the flag once genuinely new rows show up.
165
+ var newRows = tableData.filter(function (r) { return !accIds.has(r.id); });
166
+ if (newRows.length === 0)
167
+ return prev; // same page re-emitted — keep waiting
168
+ pendingLoadMoreRef.current = false;
169
+ return __spreadArray(__spreadArray([], prev, true), newRows, true);
170
+ }
171
+ // Not a load-more: a re-emit of already-loaded rows keeps the accumulation
172
+ // (the parent re-renders the current page often). Genuinely new rows
173
+ // (search / filter / sort / page-size / reload) reset it.
174
+ var allKnown = tableData.length > 0 && tableData.every(function (r) { return accIds.has(r.id); });
175
+ if (allKnown)
176
+ return prev;
177
+ loadedPagesRef.current = 1; // fresh data set
178
+ return tableData.slice();
179
+ });
180
+ // eslint-disable-next-line react-hooks/exhaustive-deps
181
+ }, [tableData, groupLoadMore]);
182
+ // Page-size change restarts the accumulation (the page boundaries change), so the
183
+ // next "Load more" requests page 2 of the NEW size, not a stale page index.
184
+ var rowsPerPageMountedRef = (0, react_1.useRef)(false);
185
+ (0, react_1.useEffect)(function () {
186
+ if (!rowsPerPageMountedRef.current) {
187
+ rowsPerPageMountedRef.current = true;
188
+ return;
189
+ }
190
+ pendingLoadMoreRef.current = false;
191
+ loadedPagesRef.current = 1;
192
+ setAccumulatedRows(tableData); // current page at the new size (not empty)
193
+ // eslint-disable-next-line react-hooks/exhaustive-deps
194
+ }, [rowsPerPage]);
130
195
  (0, react_1.useEffect)(function () {
131
196
  if (tablePreferences === null || tablePreferences === void 0 ? void 0 : tablePreferences.density)
132
197
  setDensityState(tablePreferences.density);
133
198
  }, [tablePreferences === null || tablePreferences === void 0 ? void 0 : tablePreferences.density]);
199
+ (0, react_1.useEffect)(function () {
200
+ if (tablePreferences && "groupBy" in tablePreferences) {
201
+ var saved = tablePreferences.groupBy;
202
+ setGroupByState(saved === null || saved === undefined || saved === "" ? undefined : saved);
203
+ }
204
+ }, [tablePreferences === null || tablePreferences === void 0 ? void 0 : tablePreferences.groupBy]);
134
205
  var handleDensityChange = function (d) {
135
206
  setDensityState(d);
136
- savePreferences === null || savePreferences === void 0 ? void 0 : savePreferences(__assign(__assign({}, tablePreferences), { columns: columnsList, density: d }));
207
+ savePreferences === null || savePreferences === void 0 ? void 0 : savePreferences(__assign(__assign({}, tablePreferences), { columns: columnsList, groupBy: groupByState !== null && groupByState !== void 0 ? groupByState : null, density: d }));
208
+ };
209
+ // Settings "Save": persist columns + group (+ current density) in ONE write so
210
+ // they don't clobber each other, and apply them locally.
211
+ var handleSettingsSave = function (cols, group) {
212
+ setGroupByState(group);
213
+ handleColumnPreferences(cols, { density: densityState, groupBy: group !== null && group !== void 0 ? group : null });
137
214
  };
138
215
  var _filteredData = (0, react_1.useMemo)(function () {
139
216
  return (0, table_1.searchAndSortData)(filteredData, columnsSearch);
140
217
  }, [columnsSearch, filteredData]);
141
- // --- Monday-style grouping (client-side). When active, pagination is hidden
142
- // and the body renders colored, collapsible groups over the full dataset. ---
143
- var isGrouped = !!groupBy && !isServerPagination;
218
+ // --- Monday-style grouping. Active whenever the user has picked a group column
219
+ // (in Settings > Group). When active, the numbered pager / infinite scroll are
220
+ // hidden and the body renders colored, collapsible groups over the loaded rows.
221
+ // `groupLoadMore` adds a "Load more" button on top to fetch more into the groups. ---
222
+ var isGrouped = !!groupByState;
144
223
  // Infinite scroll (server mode, not grouped): load more on scroll-near-bottom.
145
224
  var canInfinite = infiniteScroll && !isGrouped;
225
+ // Grouped "Load more": the accumulated pages back the grouped board so loading
226
+ // more grows the groups instead of replacing them.
227
+ var loadMoreBase = isGrouped && groupLoadMore ? accumulatedRows : tableData;
228
+ var hasMoreEffective = typeof hasMore === "boolean"
229
+ ? hasMore
230
+ : isServerPagination
231
+ ? loadMoreBase.length < totalRecords
232
+ : false;
233
+ var groupLoadMoreActive = isGrouped && groupLoadMore;
234
+ // Keep the button while a load is in flight (so a transient empty `data` during
235
+ // fetching doesn't make it flicker); hide it once loading settles with no more.
236
+ var canGroupLoadMore = groupLoadMoreActive && (hasMoreEffective || isLoadingMore);
146
237
  var groupPalette = (0, react_1.useMemo)(function () { return (0, table_1.buildTablePalette)(theme); }, [theme]);
147
238
  var groupedSource = (0, react_1.useMemo)(function () {
148
239
  if (!isGrouped)
149
240
  return [];
150
- return (0, table_1.searchAndSortData)((0, table_1.SortMultiColumnData)(tableData, columnsSort), columnsSearch);
151
- }, [isGrouped, tableData, columnsSort, columnsSearch]);
241
+ var src = groupLoadMore ? accumulatedRows : tableData;
242
+ return (0, table_1.searchAndSortData)((0, table_1.SortMultiColumnData)(src, columnsSort), columnsSearch);
243
+ }, [isGrouped, groupLoadMore, accumulatedRows, tableData, columnsSort, columnsSearch]);
152
244
  var renderGroups = (0, react_1.useMemo)(function () {
153
245
  if (!isGrouped)
154
246
  return undefined;
155
- return (0, table_1.groupRows)(groupedSource, groupBy).map(function (g) { return (__assign(__assign({}, g), { color: (0, table_1.pickTableColor)(g.value, groupPalette, groupColors === null || groupColors === void 0 ? void 0 : groupColors[g.value]) })); });
156
- }, [isGrouped, groupedSource, groupBy, groupPalette, groupColors]);
247
+ return (0, table_1.groupRows)(groupedSource, groupByState).map(function (g) { return (__assign(__assign({}, g), { color: (0, table_1.pickTableColor)(g.value, groupPalette, groupColors === null || groupColors === void 0 ? void 0 : groupColors[g.value]) })); });
248
+ }, [isGrouped, groupedSource, groupByState, groupPalette, groupColors]);
249
+ // "Select all" + header checkbox operate on the rows actually rendered: the
250
+ // accumulated grouped source when grouped, otherwise the table data.
251
+ var selectAllRows = isGrouped ? groupedSource : tableData;
252
+ selectAllRowsRef.current = isGrouped ? groupedSource : null;
253
+ var headerChecked = (0, react_1.useMemo)(function () {
254
+ if (selection.length === 0)
255
+ return false;
256
+ if (selectAllRows.length === 0)
257
+ return false;
258
+ var sel = new Set(selection);
259
+ return selectAllRows.every(function (r) { return sel.has(r.id); }) ? true : "indeterminate";
260
+ }, [selection, selectAllRows]);
157
261
  var onPaginationRef = (0, react_1.useRef)(onPagination);
158
262
  onPaginationRef.current = onPagination;
159
263
  var prevPageRef = (0, react_1.useRef)(currentPage);
@@ -180,6 +284,35 @@ function Table(_a) {
180
284
  prevPageRef.current = currentPage;
181
285
  }
182
286
  }, [currentPage, rowsPerPage]);
287
+ // Grouped "Load more": request the next chunk; parent appends it to `data` and
288
+ // the table re-groups so new rows land in their respective groups.
289
+ var handleGroupLoadMore = function () {
290
+ var _a;
291
+ if (isLoadingMore || isTableLoading || !hasMoreEffective)
292
+ return;
293
+ // Must request the SAME page size the data was loaded with — a page-count model
294
+ // breaks if pages have different sizes (e.g. page size 100 but a 20-row chunk
295
+ // re-requests already-loaded records). `loadMoreChunkSize` is only a last-resort
296
+ // fallback and is otherwise ignored.
297
+ var chunk = rowsPerPage || loadMoreChunkSize || 20;
298
+ // Advance by page COUNT (not by deduped row count) so overlapping/pinned rows
299
+ // across pages don't keep us stuck on the same page.
300
+ var nextPage = loadedPagesRef.current + 1;
301
+ loadedPagesRef.current = nextPage;
302
+ var lastRecord = loadMoreBase.length > 0 ? loadMoreBase[loadMoreBase.length - 1] : undefined;
303
+ pendingLoadMoreRef.current = true;
304
+ (_a = onPaginationRef.current) === null || _a === void 0 ? void 0 : _a.call(onPaginationRef, nextPage, chunk, lastRecord, "next");
305
+ };
306
+ // While more can load → live count; once everything's loaded → "Showing all
307
+ // records" (the running total isn't shown because de-duped/server totals can
308
+ // disagree, e.g. "250 of 250" would be misleading).
309
+ var groupLoadMoreCaption = !groupLoadMoreActive || isTableLoading || loadMoreBase.length === 0
310
+ ? undefined
311
+ : canGroupLoadMore
312
+ ? totalRecords > 0
313
+ ? "Showing ".concat(loadMoreBase.length, " of ").concat(totalRecords)
314
+ : "Showing ".concat(loadMoreBase.length)
315
+ : "Showing all records";
183
316
  var tablePaginationText = (0, react_1.useMemo)(function () { return isServerPagination
184
317
  ? "".concat(startRow + 1, " - ").concat(Math.min(startRow + rowsPerPage, totalRecords), " of ").concat(totalRecords)
185
318
  : "".concat(startRow + 1, " - ").concat(endRow > tableData.length ? tableData.length : endRow, " of ").concat(tableData.length); }, [startRow, rowsPerPage, totalRecords, endRow, tableData.length]);
@@ -292,17 +425,20 @@ function Table(_a) {
292
425
  react_1.default.createElement(TableSearch_1.default, { onSearch: onGlobalSearch }),
293
426
  isTableSettings && (react_1.default.createElement(react_1.default.Fragment, null,
294
427
  react_1.default.createElement(Divider_1.default, null),
295
- react_1.default.createElement(TableSettings_1.default, { columns: columnsList, onSave: function (cols) { return handleColumnPreferences(cols); }, tableSettings: tableSettings, density: densityState, onDensityChange: handleDensityChange }))),
428
+ react_1.default.createElement(TableSettings_1.default, { columns: columnsList, onSave: function (cols, group) { return handleSettingsSave(cols, group); }, tableSettings: tableSettings, density: densityState, onDensityChange: handleDensityChange, groupBy: groupByState }))),
296
429
  headerActions && (react_1.default.createElement(react_1.default.Fragment, null,
297
430
  react_1.default.createElement(Divider_1.default, null),
298
431
  react_1.default.createElement(HeaderActions_1.default, { actions: headerActions, selections: selection }))),
299
432
  react_1.default.createElement(ActiveFilters_1.default, { columns: columnsList, columnsSearch: columnsSearch, setColumnsSearch: setColumnsSearch }),
300
433
  react_1.default.createElement(react_2.Box, { ml: "auto", display: "flex", alignItems: "center", gap: 2 },
434
+ groupLoadMoreActive && loadMorePosition === "top" && (groupLoadMoreCaption || canGroupLoadMore) && (react_1.default.createElement(react_2.Box, { display: "flex", alignItems: "center", gap: 2, flex: "0 0 auto" },
435
+ groupLoadMoreCaption && (react_1.default.createElement(react_2.Box, { fontSize: "0.75rem", color: (_x = (_w = theme.colors) === null || _w === void 0 ? void 0 : _w.text) === null || _x === void 0 ? void 0 : _x[500], whiteSpace: "nowrap" }, groupLoadMoreCaption)),
436
+ canGroupLoadMore && (react_1.default.createElement(Button_1.default, { size: "xs", variant: "outline", colorScheme: "gray", isLoading: isLoadingMore, loadingText: loadMoreText, onClick: handleGroupLoadMore, label: loadMoreText })))),
301
437
  (isPagination || isServerPagination) && !isGrouped && !canInfinite && !isCompactHeader && (react_1.default.createElement(react_2.Box, { flex: "0 0 auto" },
302
438
  react_1.default.createElement(Pagination_1.default, { columns: columns, currentPage: currentPage, setCurrentPage: setCurrentPage, rowsPerPage: rowsPerPage, pages: pages, paginationText: tablePaginationText, handlePageSizeChange: handlePageSizeChange, dataLength: tableData.length, isServerPagination: isServerPagination, paginationSelectOptions: paginationSelectOptions, isVisiblity: true }))),
303
439
  (isPagination || isServerPagination) && !isGrouped && !canInfinite && isCompactHeader && tableData.length > 0 && (react_1.default.createElement(react_2.Popover, { placement: "bottom-end" },
304
440
  react_1.default.createElement(react_2.PopoverTrigger, null,
305
- react_1.default.createElement(react_2.IconButton, { "aria-label": "More", size: "sm", variant: "ghost", icon: react_1.default.createElement(lucide_react_1.EllipsisVertical, { size: 18, color: (_x = (_w = theme.colors) === null || _w === void 0 ? void 0 : _w.text) === null || _x === void 0 ? void 0 : _x[500] }) })),
441
+ react_1.default.createElement(react_2.IconButton, { "aria-label": "More", size: "sm", variant: "ghost", icon: react_1.default.createElement(lucide_react_1.EllipsisVertical, { size: 18, color: (_z = (_y = theme.colors) === null || _y === void 0 ? void 0 : _y.text) === null || _z === void 0 ? void 0 : _z[500] }) })),
306
442
  react_1.default.createElement(react_2.PopoverContent, { maxW: "22rem", p: 2, overflow: "hidden" },
307
443
  react_1.default.createElement(react_2.PopoverBody, { p: 0 },
308
444
  react_1.default.createElement(Pagination_1.default, { columns: columns, currentPage: currentPage, setCurrentPage: setCurrentPage, rowsPerPage: rowsPerPage, pages: pages, paginationText: tablePaginationText, handlePageSizeChange: handlePageSizeChange, dataLength: tableData.length, isServerPagination: isServerPagination, paginationSelectOptions: paginationSelectOptions, isVisiblity: true }))))))),
@@ -349,15 +485,14 @@ function Table(_a) {
349
485
  zIndex: 999,
350
486
  },
351
487
  } },
352
- react_1.default.createElement(react_3.Thead, { position: "sticky", top: 0, zIndex: 4, bg: (_0 = (_z = (_y = theme.colors.table) === null || _y === void 0 ? void 0 : _y.hover) === null || _z === void 0 ? void 0 : _z[200]) !== null && _0 !== void 0 ? _0 : (_1 = theme.colors.secondary) === null || _1 === void 0 ? void 0 : _1[50] },
353
- react_1.default.createElement(TableHeader_1.default, { columns: columnsList, isCheckbox: isCheckbox, headerBgColor: headerBgColor !== null && headerBgColor !== void 0 ? headerBgColor : theme.colors.backgroundColor.muted, headerTextColor: headerTextColor !== null && headerTextColor !== void 0 ? headerTextColor : (_2 = theme.colors) === null || _2 === void 0 ? void 0 : _2.gray[600], freezedBgColor: freezedBgColor !== null && freezedBgColor !== void 0 ? freezedBgColor : theme.colors.backgroundColor.secondary, freezedTextColor: freezedTextColor !== null && freezedTextColor !== void 0 ? freezedTextColor : (_3 = theme.colors) === null || _3 === void 0 ? void 0 : _3.gray[600], handleSort: handleSort, headerRefs: headerRefs, columnWidths: columnWidths, columnsSort: columnsSort, noBorders: noBorders, handleCheckbox: handleCheckbox, isLoading: isTableLoading, checked: tableData.length !== 0 && selection.length === tableData.length
354
- ? true
355
- : selection.length === 0
356
- ? false
357
- : "indeterminate", isContent: isContent, isLink: isLink, isActionFreeze: isActionFreeze, setColumnsSearch: setColumnsSearch, columnsSearch: columnsSearch, isSelecting: isSelecting })),
488
+ react_1.default.createElement(react_3.Thead, { position: "sticky", top: 0, zIndex: 4, bg: (_2 = (_1 = (_0 = theme.colors.table) === null || _0 === void 0 ? void 0 : _0.hover) === null || _1 === void 0 ? void 0 : _1[200]) !== null && _2 !== void 0 ? _2 : (_3 = theme.colors.secondary) === null || _3 === void 0 ? void 0 : _3[50] },
489
+ react_1.default.createElement(TableHeader_1.default, { columns: columnsList, isCheckbox: isCheckbox, headerBgColor: headerBgColor !== null && headerBgColor !== void 0 ? headerBgColor : theme.colors.backgroundColor.muted, freezedBgColor: freezedBgColor !== null && freezedBgColor !== void 0 ? freezedBgColor : theme.colors.backgroundColor.secondary, freezedTextColor: freezedTextColor !== null && freezedTextColor !== void 0 ? freezedTextColor : (_4 = theme.colors) === null || _4 === void 0 ? void 0 : _4.gray[600], handleSort: handleSort, headerRefs: headerRefs, columnWidths: columnWidths, columnsSort: columnsSort, noBorders: noBorders, handleCheckbox: handleCheckbox, isLoading: isTableLoading, checked: headerChecked, isContent: isContent, isLink: isLink, isActionFreeze: isActionFreeze, setColumnsSearch: setColumnsSearch, columnsSearch: columnsSearch, isSelecting: isSelecting })),
358
490
  react_1.default.createElement(react_3.Tbody, null,
359
- react_1.default.createElement(TableBody_1.default, { data: isGrouped ? groupedSource : _filteredData, groups: renderGroups, onAddItem: onAddItem, columns: columnsList, startRow: isGrouped ? 0 : startRow, endRow: endRow, scrollContainerRef: tableContainerRef, isCheckbox: isCheckbox, columnWidths: columnWidths, noBorders: noBorders, freezedBgColor: freezedBgColor !== null && freezedBgColor !== void 0 ? freezedBgColor : theme.colors.backgroundColor.secondary, freezedTextColor: freezedTextColor !== null && freezedTextColor !== void 0 ? freezedTextColor : (_4 = theme.colors) === null || _4 === void 0 ? void 0 : _4.gray[600], handleCheckbox: handleCheckbox, selections: selection, isLoading: isTableLoading, loadingSkeletonRows: loadingSkeletonRows, onRowClick: onRowClick, isContent: isContent, isLink: isLink, isActionFreeze: isActionFreeze, density: densityState, stripe: stripe, emptyState: emptyState }))),
491
+ react_1.default.createElement(TableBody_1.default, { data: isGrouped ? groupedSource : _filteredData, groups: renderGroups, onAddItem: onAddItem, columns: columnsList, startRow: isGrouped ? 0 : startRow, endRow: endRow, scrollContainerRef: tableContainerRef, isCheckbox: isCheckbox, columnWidths: columnWidths, noBorders: noBorders, freezedBgColor: freezedBgColor !== null && freezedBgColor !== void 0 ? freezedBgColor : theme.colors.backgroundColor.secondary, freezedTextColor: freezedTextColor !== null && freezedTextColor !== void 0 ? freezedTextColor : (_5 = theme.colors) === null || _5 === void 0 ? void 0 : _5.gray[600], handleCheckbox: handleCheckbox, selections: selection, isLoading: isTableLoading, loadingSkeletonRows: loadingSkeletonRows, onRowClick: onRowClick, isContent: isContent, isLink: isLink, isActionFreeze: isActionFreeze, density: densityState, stripe: stripe, emptyState: emptyState }))),
360
492
  canInfinite && isLoadingMore && (react_1.default.createElement(react_2.Flex, { justify: "center", align: "center", py: 3, gap: 2 },
361
- react_1.default.createElement(react_2.Spinner, { size: "sm", color: (_6 = (_5 = theme.colors) === null || _5 === void 0 ? void 0 : _5.primary) === null || _6 === void 0 ? void 0 : _6[500] }),
362
- react_1.default.createElement(react_2.Box, { fontSize: "0.75rem", color: (_8 = (_7 = theme.colors) === null || _7 === void 0 ? void 0 : _7.text) === null || _8 === void 0 ? void 0 : _8[500] }, "Loading more\u2026"))))))));
493
+ react_1.default.createElement(react_2.Spinner, { size: "sm", color: (_7 = (_6 = theme.colors) === null || _6 === void 0 ? void 0 : _6.primary) === null || _7 === void 0 ? void 0 : _7[500] }),
494
+ react_1.default.createElement(react_2.Box, { fontSize: "0.75rem", color: (_9 = (_8 = theme.colors) === null || _8 === void 0 ? void 0 : _8.text) === null || _9 === void 0 ? void 0 : _9[500] }, "Loading more\u2026")))),
495
+ groupLoadMoreActive && loadMorePosition === "bottom" && (groupLoadMoreCaption || canGroupLoadMore) && (react_1.default.createElement(react_2.Flex, { justify: "center", align: "center", gap: 3, py: 3, borderTop: "0.063rem solid ".concat((_10 = theme.colors.border) === null || _10 === void 0 ? void 0 : _10[500]) },
496
+ groupLoadMoreCaption && (react_1.default.createElement(react_2.Box, { fontSize: "0.75rem", color: (_12 = (_11 = theme.colors) === null || _11 === void 0 ? void 0 : _11.text) === null || _12 === void 0 ? void 0 : _12[500] }, groupLoadMoreCaption)),
497
+ canGroupLoadMore && (react_1.default.createElement(Button_1.default, { size: "xs", variant: "outline", colorScheme: "gray", isLoading: isLoadingMore, loadingText: loadMoreText, onClick: handleGroupLoadMore, label: loadMoreText }))))))));
363
498
  }
@@ -9,7 +9,6 @@ export type TableEmptyState = {
9
9
  export type TableProps = {
10
10
  data: DataObject[];
11
11
  columns: TableHeaderProps[];
12
- groupBy?: string | number;
13
12
  groupColors?: Record<string | number, string>;
14
13
  onAddItem?: (groupValue: string | number) => void;
15
14
  density?: TableDensity;
@@ -36,6 +35,12 @@ export type TableProps = {
36
35
  infiniteScroll?: boolean;
37
36
  hasMore?: boolean;
38
37
  isLoadingMore?: boolean;
38
+ groupLoadMore?: boolean;
39
+ loadMoreText?: string;
40
+ loadMorePosition?: "top" | "bottom";
41
+ /** @deprecated Ignored — load more always uses the current page size (`noOfRowsPerPage`)
42
+ * so page boundaries stay consistent. Kept only for backward compatibility. */
43
+ loadMoreChunkSize?: number;
39
44
  noOfRowsPerPage?: number;
40
45
  totalRecords?: number;
41
46
  onPagination?: (page: number, noOfRecords: number, record: DataObject | undefined, direction: "next" | "prev" | "first" | "last") => void;
@@ -105,8 +110,11 @@ export type TableHeaderProps = {
105
110
  isHidden?: boolean;
106
111
  type?: "status";
107
112
  statusColors?: Record<string, string>;
113
+ columnType?: TableColumnType;
108
114
  node?: (data: DataObject) => JSX.Element | string | number | undefined;
109
115
  };
116
+ /** Known field data-types (open-ended via the trailing string for forward-compat). */
117
+ export type TableColumnType = "text" | "singleline" | "multiLine" | "description" | "email" | "phone" | "website" | "number" | "integer" | "decimal" | "dropdown" | "multiSelectDropdown" | "user" | "date" | "date_time" | "time" | "not_assigned" | (string & {});
110
118
  export type ExportOption = {
111
119
  label: string;
112
120
  id: string;
@@ -115,7 +123,7 @@ export type ColumnSortingProps = {
115
123
  column: string | number;
116
124
  direction: "asc" | "desc" | "none";
117
125
  };
118
- export type TableHeaderPageProps = Pick<TableProps, "columns" | "isCheckbox" | "headerBgColor" | "headerTextColor" | "freezedBgColor" | "freezedTextColor" | "noBorders" | "isLoading" | "isActionFreeze"> & {
126
+ export type TableHeaderPageProps = Pick<TableProps, "columns" | "isCheckbox" | "headerBgColor" | "freezedBgColor" | "freezedTextColor" | "noBorders" | "isLoading" | "isActionFreeze"> & {
119
127
  handleSort: (label: string | number, type: "asc" | "desc" | "none") => void;
120
128
  activeHeader?: string | null;
121
129
  isPopoverOpen?: boolean;
@@ -164,7 +172,7 @@ export type TableFiltersProps = {
164
172
  columnsSearch: string;
165
173
  onClose: () => void;
166
174
  };
167
- export type ColumnHeaderProps = Pick<TableProps, "isCheckbox" | "headerBgColor" | "headerTextColor" | "freezedBgColor" | "freezedTextColor" | "noBorders"> & Pick<TableHeaderPageProps, "handleSort" | "columnsSort"> & {
175
+ export type ColumnHeaderProps = Pick<TableProps, "isCheckbox" | "headerBgColor" | "freezedBgColor" | "noBorders"> & Pick<TableHeaderPageProps, "handleSort" | "columnsSort"> & {
168
176
  header: TableHeaderProps;
169
177
  index: number;
170
178
  columnWidths: number[];
@@ -49,7 +49,7 @@ var Pagination = react_1.default.memo(function (_a) {
49
49
  var isLeftDisabled = dataLength === 0 || currentPage === 0;
50
50
  var isRightDisabled = dataLength === 0 || currentPage >= pages - 1;
51
51
  return (react_1.default.createElement(react_2.Flex, { justify: "flex-end", align: "center", flexWrap: "nowrap" },
52
- (!isServerPagination || paginationSelectOptions) && (react_1.default.createElement(react_2.Select, { onChange: handlePageSizeChange, value: rowsPerPage, size: "xs", borderRadius: 3, width: 20, isDisabled: dataLength === 0 },
52
+ (!isServerPagination || paginationSelectOptions) && (react_1.default.createElement(react_2.Select, { onChange: handlePageSizeChange, value: rowsPerPage, size: "xs", borderRadius: 3, width: "auto", minW: "4.5rem", isDisabled: dataLength === 0 },
53
53
  !paginationSelectOptions && dataLength < 100 ? react_1.default.createElement("option", { value: 0 }) : null,
54
54
  computedOptions.map(function (size, index) { return (react_1.default.createElement("option", { key: index, value: size }, String(size))); }))),
55
55
  dataLength > 0 && (react_1.default.createElement(react_2.Flex, { w: "100%" },
@@ -6,7 +6,7 @@ type TableRowActions = {
6
6
  actions?: () => ReactNode;
7
7
  [key: string]: any;
8
8
  };
9
- declare const TableActions: ({ row }: {
9
+ declare const TableActions: React.MemoExoticComponent<({ row }: {
10
10
  row?: TableRowActions;
11
- }) => React.JSX.Element | null;
11
+ }) => React.JSX.Element | null>;
12
12
  export default TableActions;
@@ -37,7 +37,7 @@ var react_1 = __importStar(require("react"));
37
37
  var react_2 = require("@chakra-ui/react");
38
38
  var lucide_react_1 = require("lucide-react");
39
39
  var useCustomTheme_1 = require("../../../Theme/useCustomTheme");
40
- var TableActions = function (_a) {
40
+ var TableActions = react_1.default.memo(function (_a) {
41
41
  var _b, _c, _d;
42
42
  var row = _a.row;
43
43
  var _e = (0, react_1.useState)(false), isOpen = _e[0], setIsOpen = _e[1];
@@ -76,7 +76,7 @@ var TableActions = function (_a) {
76
76
  react_1.default.createElement("div", { ref: ref },
77
77
  react_1.default.createElement(react_2.PopoverTrigger, null,
78
78
  react_1.default.createElement(react_2.IconButton, { "aria-label": "Actions", color: "black", icon: react_1.default.createElement(lucide_react_1.EllipsisVertical, { size: 17 }), size: "sm", p: 0, variant: "ghost", _hover: { transform: "scale(1.2)" }, onClick: function () { return (isOpen ? handleClose() : handleOpen()); } })),
79
- react_1.default.createElement(react_2.Portal, null,
79
+ isOpen && (react_1.default.createElement(react_2.Portal, null,
80
80
  react_1.default.createElement(react_2.PopoverContent, { w: "auto", minW: "100px", boxShadow: "lg", p: 0, zIndex: 999 },
81
81
  react_1.default.createElement(react_2.PopoverBody, { p: 0, m: 0 },
82
82
  react_1.default.createElement(react_2.VStack, { align: "stretch", spacing: 1, p: 0, m: 0 },
@@ -102,6 +102,7 @@ var TableActions = function (_a) {
102
102
  react_1.default.createElement(lucide_react_1.Trash2, { size: 17 }),
103
103
  " Delete")),
104
104
  row.actions && ((_d = row === null || row === void 0 ? void 0 : row.actions) === null || _d === void 0 ? void 0 : _d.call(row)),
105
- !row.onLink && !row.onEdit && !row.onDelete && (react_1.default.createElement(react_2.Button, { size: "sm", variant: "ghost", isDisabled: true, justifyContent: "center" }, "No actions")))))))));
106
- };
105
+ !row.onLink && !row.onEdit && !row.onDelete && (react_1.default.createElement(react_2.Button, { size: "sm", variant: "ghost", isDisabled: true, justifyContent: "center" }, "No actions"))))))))));
106
+ });
107
+ TableActions.displayName = "TableActions";
107
108
  exports.default = TableActions;