pixelize-design-library 2.2.192 → 2.2.193

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 (215) hide show
  1. package/.claude/settings.local.json +15 -0
  2. package/coverage/clover.xml +638 -0
  3. package/coverage/coverage-final.json +20 -0
  4. package/coverage/lcov-report/Table/CompactSelect.tsx.html +379 -0
  5. package/coverage/lcov-report/Table/Components/ActiveFilters.tsx.html +514 -0
  6. package/coverage/lcov-report/Table/Components/HeaderActions.tsx.html +373 -0
  7. package/coverage/lcov-report/Table/Components/Pagination.tsx.html +574 -0
  8. package/coverage/lcov-report/Table/Components/TableActions.tsx.html +574 -0
  9. package/coverage/lcov-report/Table/Components/TableBody.tsx.html +1027 -0
  10. package/coverage/lcov-report/Table/Components/TableFilters.tsx.html +397 -0
  11. package/coverage/lcov-report/Table/Components/TableHeader.tsx.html +1060 -0
  12. package/coverage/lcov-report/Table/Components/TableLoading.tsx.html +361 -0
  13. package/coverage/lcov-report/Table/Components/TableSearch.tsx.html +337 -0
  14. package/coverage/lcov-report/Table/Components/index.html +266 -0
  15. package/coverage/lcov-report/Table/Components/useDebounce.ts.html +178 -0
  16. package/coverage/lcov-report/Table/Components/useTable.ts.html +778 -0
  17. package/coverage/lcov-report/Table/LeftFilterPane.tsx.html +1810 -0
  18. package/coverage/lcov-report/Table/SelectOperationControls.tsx.html +178 -0
  19. package/coverage/lcov-report/Table/Table.tsx.html +1567 -0
  20. package/coverage/lcov-report/Table/TableProps.tsx.html +658 -0
  21. package/coverage/lcov-report/Table/TableSettings/ManageColumns.tsx.html +619 -0
  22. package/coverage/lcov-report/Table/TableSettings/TableFilters.tsx.html +229 -0
  23. package/coverage/lcov-report/Table/TableSettings/TableSettings.tsx.html +532 -0
  24. package/coverage/lcov-report/Table/TableSettings/index.html +146 -0
  25. package/coverage/lcov-report/Table/TableToDo.tsx.html +973 -0
  26. package/coverage/lcov-report/Table/TextOperationControls.tsx.html +271 -0
  27. package/coverage/lcov-report/Table/filterTypes.ts.html +97 -0
  28. package/coverage/lcov-report/Table/index.html +176 -0
  29. package/coverage/lcov-report/base.css +224 -0
  30. package/coverage/lcov-report/block-navigation.js +87 -0
  31. package/coverage/lcov-report/favicon.png +0 -0
  32. package/coverage/lcov-report/index.html +146 -0
  33. package/coverage/lcov-report/prettify.css +1 -0
  34. package/coverage/lcov-report/prettify.js +2 -0
  35. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  36. package/coverage/lcov-report/sorter.js +210 -0
  37. package/coverage/lcov.info +1836 -0
  38. package/dist/Assets/defaultLogo.tsx +31 -0
  39. package/dist/Components/Table/Components/TableBody.d.ts +1 -1
  40. package/dist/Components/Table/Components/TableBody.js +60 -3
  41. package/dist/Components/Table/Components/TableBody.virtualize.test.d.ts +1 -0
  42. package/dist/Components/Table/Components/TableBody.virtualize.test.js +93 -0
  43. package/dist/Components/Table/Table.js +1 -1
  44. package/dist/Components/Table/TableProps.d.ts +1 -0
  45. package/dist/Theme/Dark/palette.d.ts +370 -0
  46. package/dist/Theme/Dark/palette.js +372 -0
  47. package/dist/components-v2/AlertDialog/AlertDialog.d.ts +23 -0
  48. package/dist/components-v2/AlertDialog/AlertDialog.js +98 -0
  49. package/dist/components-v2/Breadcrumbs/Breadcrumbs.d.ts +14 -0
  50. package/dist/components-v2/Breadcrumbs/Breadcrumbs.js +66 -0
  51. package/dist/components-v2/Charts/AreaChart.d.ts +23 -0
  52. package/dist/components-v2/Charts/AreaChart.js +63 -0
  53. package/dist/components-v2/Charts/BarChart.d.ts +25 -0
  54. package/dist/components-v2/Charts/BarChart.js +57 -0
  55. package/dist/components-v2/Charts/LineChart.d.ts +23 -0
  56. package/dist/components-v2/Charts/LineChart.js +55 -0
  57. package/dist/components-v2/Charts/PieChart.d.ts +15 -0
  58. package/dist/components-v2/Charts/PieChart.js +54 -0
  59. package/dist/components-v2/Charts/PolarChart.d.ts +14 -0
  60. package/dist/components-v2/Charts/PolarChart.js +54 -0
  61. package/dist/components-v2/Charts/chartOptions.d.ts +7 -0
  62. package/dist/components-v2/Charts/chartOptions.js +41 -0
  63. package/dist/components-v2/Charts/useChartTheme.d.ts +22 -0
  64. package/dist/components-v2/Charts/useChartTheme.js +106 -0
  65. package/dist/components-v2/ContactForm/ContactForm.d.ts +25 -0
  66. package/dist/components-v2/ContactForm/ContactForm.js +116 -0
  67. package/dist/components-v2/DatePicker/Calendar.d.ts +19 -0
  68. package/dist/components-v2/DatePicker/Calendar.js +212 -0
  69. package/dist/components-v2/DatePicker/DatePicker.d.ts +46 -0
  70. package/dist/components-v2/DatePicker/DatePicker.js +189 -0
  71. package/dist/components-v2/DatePicker/TimePicker.d.ts +12 -0
  72. package/dist/components-v2/DatePicker/TimePicker.js +105 -0
  73. package/dist/components-v2/DatePicker/utils.d.ts +31 -0
  74. package/dist/components-v2/DatePicker/utils.js +109 -0
  75. package/dist/components-v2/Drawer/Drawer.d.ts +27 -0
  76. package/dist/components-v2/Drawer/Drawer.js +132 -0
  77. package/dist/components-v2/FeedbackForm/FeedbackForm.d.ts +26 -0
  78. package/dist/components-v2/FeedbackForm/FeedbackForm.js +112 -0
  79. package/dist/components-v2/FileUploader/FileUploader.d.ts +28 -0
  80. package/dist/components-v2/FileUploader/FileUploader.js +127 -0
  81. package/dist/components-v2/Input/TextInput.d.ts +41 -0
  82. package/dist/components-v2/Input/TextInput.js +169 -0
  83. package/dist/components-v2/KanbanBoard/KanbanBoard.d.ts +39 -0
  84. package/dist/components-v2/KanbanBoard/KanbanBoard.js +101 -0
  85. package/dist/components-v2/Layout/AppLayout.d.ts +22 -0
  86. package/dist/components-v2/Layout/AppLayout.js +53 -0
  87. package/dist/components-v2/Loading/Loading.d.ts +19 -0
  88. package/dist/components-v2/Loading/Loading.js +55 -0
  89. package/dist/components-v2/Modal/Modal.d.ts +30 -0
  90. package/dist/components-v2/Modal/Modal.js +82 -0
  91. package/dist/components-v2/NavigationBar/NavigationBar.d.ts +47 -0
  92. package/dist/components-v2/NavigationBar/NavigationBar.js +148 -0
  93. package/dist/components-v2/Notification/Notification.d.ts +22 -0
  94. package/dist/components-v2/Notification/Notification.js +113 -0
  95. package/dist/components-v2/NumberInput/NumberInput.d.ts +37 -0
  96. package/dist/components-v2/NumberInput/NumberInput.js +210 -0
  97. package/dist/components-v2/PinInput/PinInput.d.ts +26 -0
  98. package/dist/components-v2/PinInput/PinInput.js +138 -0
  99. package/dist/components-v2/ProfilePhotoViewer/ProfilePhotoViewer.d.ts +18 -0
  100. package/dist/components-v2/ProfilePhotoViewer/ProfilePhotoViewer.js +91 -0
  101. package/dist/components-v2/Select/Select.d.ts +41 -0
  102. package/dist/components-v2/Select/Select.js +284 -0
  103. package/dist/components-v2/Sidebar/Sidebar.d.ts +41 -0
  104. package/dist/components-v2/Sidebar/Sidebar.js +182 -0
  105. package/dist/components-v2/Slider/Slider.d.ts +18 -0
  106. package/dist/components-v2/Slider/Slider.js +101 -0
  107. package/dist/components-v2/Table/Table.d.ts +7 -0
  108. package/dist/components-v2/Table/Table.js +172 -0
  109. package/dist/components-v2/Table/TableProps.d.ts +139 -0
  110. package/dist/components-v2/Table/TableProps.js +9 -0
  111. package/dist/components-v2/Table/components/ActiveFilters.d.ts +10 -0
  112. package/dist/components-v2/Table/components/ActiveFilters.js +70 -0
  113. package/dist/components-v2/Table/components/BulkActionBar.d.ts +11 -0
  114. package/dist/components-v2/Table/components/BulkActionBar.js +92 -0
  115. package/dist/components-v2/Table/components/ColumnResizeHandle.d.ts +7 -0
  116. package/dist/components-v2/Table/components/ColumnResizeHandle.js +41 -0
  117. package/dist/components-v2/Table/components/Pagination.d.ts +11 -0
  118. package/dist/components-v2/Table/components/Pagination.js +92 -0
  119. package/dist/components-v2/Table/components/TableBody.d.ts +23 -0
  120. package/dist/components-v2/Table/components/TableBody.js +69 -0
  121. package/dist/components-v2/Table/components/TableCell.d.ts +14 -0
  122. package/dist/components-v2/Table/components/TableCell.js +63 -0
  123. package/dist/components-v2/Table/components/TableEmptyState.d.ts +12 -0
  124. package/dist/components-v2/Table/components/TableEmptyState.js +55 -0
  125. package/dist/components-v2/Table/components/TableErrorState.d.ts +6 -0
  126. package/dist/components-v2/Table/components/TableErrorState.js +52 -0
  127. package/dist/components-v2/Table/components/TableHeader.d.ts +21 -0
  128. package/dist/components-v2/Table/components/TableHeader.js +94 -0
  129. package/dist/components-v2/Table/components/TableRow.d.ts +20 -0
  130. package/dist/components-v2/Table/components/TableRow.js +64 -0
  131. package/dist/components-v2/Table/components/TableSearch.d.ts +8 -0
  132. package/dist/components-v2/Table/components/TableSearch.js +47 -0
  133. package/dist/components-v2/Table/filters/FilterChips.d.ts +6 -0
  134. package/dist/components-v2/Table/filters/FilterChips.js +9 -0
  135. package/dist/components-v2/Table/filters/LeftFilterPane.d.ts +17 -0
  136. package/dist/components-v2/Table/filters/LeftFilterPane.js +105 -0
  137. package/dist/components-v2/Table/filters/TableFilters.d.ts +12 -0
  138. package/dist/components-v2/Table/filters/TableFilters.js +127 -0
  139. package/dist/components-v2/Table/hooks/useColumnResize.d.ts +15 -0
  140. package/dist/components-v2/Table/hooks/useColumnResize.js +104 -0
  141. package/dist/components-v2/Table/hooks/useTable.d.ts +58 -0
  142. package/dist/components-v2/Table/hooks/useTable.js +254 -0
  143. package/dist/components-v2/Table/hooks/useTableKeyboard.d.ts +25 -0
  144. package/dist/components-v2/Table/hooks/useTableKeyboard.js +112 -0
  145. package/dist/components-v2/Table/hooks/useVirtualScroll.d.ts +29 -0
  146. package/dist/components-v2/Table/hooks/useVirtualScroll.js +83 -0
  147. package/dist/components-v2/Table/settings/ManageColumns.d.ts +12 -0
  148. package/dist/components-v2/Table/settings/ManageColumns.js +59 -0
  149. package/dist/components-v2/Table/settings/TableSettings.d.ts +12 -0
  150. package/dist/components-v2/Table/settings/TableSettings.js +57 -0
  151. package/dist/components-v2/Table/utils/filterUtils.d.ts +7 -0
  152. package/dist/components-v2/Table/utils/filterUtils.js +149 -0
  153. package/dist/components-v2/Table/utils/sortUtils.d.ts +6 -0
  154. package/dist/components-v2/Table/utils/sortUtils.js +65 -0
  155. package/dist/components-v2/Tag/Tag.d.ts +15 -0
  156. package/dist/components-v2/Tag/Tag.js +87 -0
  157. package/dist/components-v2/Timeline/Timeline.d.ts +18 -0
  158. package/dist/components-v2/Timeline/Timeline.js +76 -0
  159. package/dist/components-v2/Toaster/Toaster.d.ts +61 -0
  160. package/dist/components-v2/Toaster/Toaster.js +63 -0
  161. package/dist/components-v2/Toggle/Toggle.d.ts +28 -0
  162. package/dist/components-v2/Toggle/Toggle.js +90 -0
  163. package/dist/components-v2/ui/accordion.d.ts +12 -0
  164. package/dist/components-v2/ui/accordion.js +104 -0
  165. package/dist/components-v2/ui/alert.d.ts +18 -0
  166. package/dist/components-v2/ui/alert.js +99 -0
  167. package/dist/components-v2/ui/avatar.d.ts +12 -0
  168. package/dist/components-v2/ui/avatar.js +80 -0
  169. package/dist/components-v2/ui/badge.d.ts +10 -0
  170. package/dist/components-v2/ui/badge.js +76 -0
  171. package/dist/components-v2/ui/button.d.ts +18 -0
  172. package/dist/components-v2/ui/button.js +97 -0
  173. package/dist/components-v2/ui/checkbox.d.ts +15 -0
  174. package/dist/components-v2/ui/checkbox.js +86 -0
  175. package/dist/components-v2/ui/dialog.d.ts +30 -0
  176. package/dist/components-v2/ui/dialog.js +115 -0
  177. package/dist/components-v2/ui/dropdown-menu.d.ts +26 -0
  178. package/dist/components-v2/ui/dropdown-menu.js +121 -0
  179. package/dist/components-v2/ui/field.d.ts +32 -0
  180. package/dist/components-v2/ui/field.js +62 -0
  181. package/dist/components-v2/ui/form-field.d.ts +25 -0
  182. package/dist/components-v2/ui/form-field.js +96 -0
  183. package/dist/components-v2/ui/input.d.ts +9 -0
  184. package/dist/components-v2/ui/input.js +73 -0
  185. package/dist/components-v2/ui/label.d.ts +10 -0
  186. package/dist/components-v2/ui/label.js +70 -0
  187. package/dist/components-v2/ui/popover.d.ts +9 -0
  188. package/dist/components-v2/ui/popover.js +60 -0
  189. package/dist/components-v2/ui/progress.d.ts +12 -0
  190. package/dist/components-v2/ui/progress.js +75 -0
  191. package/dist/components-v2/ui/radio-group.d.ts +17 -0
  192. package/dist/components-v2/ui/radio-group.js +91 -0
  193. package/dist/components-v2/ui/select.d.ts +24 -0
  194. package/dist/components-v2/ui/select.js +122 -0
  195. package/dist/components-v2/ui/separator.d.ts +5 -0
  196. package/dist/components-v2/ui/separator.js +55 -0
  197. package/dist/components-v2/ui/skeleton.d.ts +9 -0
  198. package/dist/components-v2/ui/skeleton.js +68 -0
  199. package/dist/components-v2/ui/spinner.d.ts +16 -0
  200. package/dist/components-v2/ui/spinner.js +64 -0
  201. package/dist/components-v2/ui/switch.d.ts +10 -0
  202. package/dist/components-v2/ui/switch.js +81 -0
  203. package/dist/components-v2/ui/tabs.d.ts +13 -0
  204. package/dist/components-v2/ui/tabs.js +95 -0
  205. package/dist/components-v2/ui/textarea.d.ts +10 -0
  206. package/dist/components-v2/ui/textarea.js +96 -0
  207. package/dist/components-v2/ui/tooltip.d.ts +17 -0
  208. package/dist/components-v2/ui/tooltip.js +75 -0
  209. package/dist/lib/utils.d.ts +2 -0
  210. package/dist/lib/utils.js +8 -0
  211. package/dist/theme-v2/ThemeProvider.d.ts +19 -0
  212. package/dist/theme-v2/ThemeProvider.js +149 -0
  213. package/dist/theme-v2/dark.css +47 -0
  214. package/dist/theme-v2/tokens.css +72 -0
  215. package/package.json +1 -1
@@ -0,0 +1,31 @@
1
+ import React from 'react';
2
+ import { useCustomTheme } from "../Theme/useCustomTheme";
3
+
4
+ const DefaultLogo = () => {
5
+ const theme = useCustomTheme();
6
+ return (
7
+ <svg
8
+ width="12.09"
9
+ height="15.95"
10
+ viewBox="0 0 31 29"
11
+ fill="none"
12
+ xmlns="http://www.w3.org/2000/svg"
13
+ >
14
+ <path
15
+ d="M30.4999 6.26137V7.81058H15.9761H14.8787V22.8508V28.8862H12.5226C9.6824 28.8862 7.32632 26.4656 7.06812 23.3995C7.06812 23.2381 7.06812 23.0444 7.06812 22.8508V18.3323C7.06812 18.2677 7.06812 18.2032 7.06812 18.1063V15.5889V6.2291C7.06812 2.80793 9.84378 -5.72205e-06 13.2972 -5.72205e-06H24.8517C28.0147 0.355021 30.4676 3.00158 30.4676 6.2291L30.4999 6.26137Z"
16
+ fill={theme.colors.black}
17
+ />
18
+ <path
19
+ d="M7.10053 23.3672H7.03598C5.16402 23.2381 3.48571 22.4635 2.25926 21.3338C0.871428 20.0428 0 18.2677 0 16.3312V15.6211H7.06825V18.1386C7.06825 18.2032 7.06825 18.2677 7.06825 18.3645V22.883C7.06825 23.0767 7.06825 23.2381 7.06825 23.4317L7.10053 23.3672Z"
20
+ fill={theme.colors.black}
21
+ />
22
+ <path
23
+ d="M30.4678 12.0063V15.6211V17.1703C30.4678 20.6238 26.272 23.3994 21.0757 23.3994H14.8789V22.8508V15.6211H22.6572V7.81056C22.6895 7.81056 30.5001 7.81056 30.5001 7.81056V11.5868C30.5001 11.7159 30.5001 11.8772 30.5001 12.0063H30.4678Z"
24
+ fill={theme.colors.black}
25
+ />
26
+ </svg>
27
+
28
+ )
29
+ };
30
+
31
+ export default DefaultLogo;
@@ -1,4 +1,4 @@
1
1
  import React from "react";
2
2
  import { TableBodyPageProps } from "../TableProps";
3
- declare const TableBody: ({ data, isCheckbox, columns, startRow, columnWidths, freezedBgColor, freezedTextColor, noBorders, handleCheckbox, selections, isLoading, onRowClick, isContent, isLink, isActionFreeze, loadingSkeletonRows, }: TableBodyPageProps) => React.JSX.Element;
3
+ declare const TableBody: ({ data, isCheckbox, columns, startRow, columnWidths, freezedBgColor, freezedTextColor, noBorders, handleCheckbox, selections, isLoading, onRowClick, isContent, isLink, isActionFreeze, loadingSkeletonRows, scrollContainerRef, }: TableBodyPageProps) => React.JSX.Element;
4
4
  export default TableBody;
@@ -84,10 +84,62 @@ var TableRow = react_2.default.memo(function (_a) {
84
84
  });
85
85
  var TableBody = function (_a) {
86
86
  var _b, _c, _d, _e, _f, _g, _h;
87
- var data = _a.data, isCheckbox = _a.isCheckbox, columns = _a.columns, startRow = _a.startRow, columnWidths = _a.columnWidths, freezedBgColor = _a.freezedBgColor, freezedTextColor = _a.freezedTextColor, noBorders = _a.noBorders, handleCheckbox = _a.handleCheckbox, selections = _a.selections, isLoading = _a.isLoading, onRowClick = _a.onRowClick, isContent = _a.isContent, isLink = _a.isLink, isActionFreeze = _a.isActionFreeze, loadingSkeletonRows = _a.loadingSkeletonRows;
87
+ var data = _a.data, isCheckbox = _a.isCheckbox, columns = _a.columns, startRow = _a.startRow, columnWidths = _a.columnWidths, freezedBgColor = _a.freezedBgColor, freezedTextColor = _a.freezedTextColor, noBorders = _a.noBorders, handleCheckbox = _a.handleCheckbox, selections = _a.selections, isLoading = _a.isLoading, onRowClick = _a.onRowClick, isContent = _a.isContent, isLink = _a.isLink, isActionFreeze = _a.isActionFreeze, loadingSkeletonRows = _a.loadingSkeletonRows, scrollContainerRef = _a.scrollContainerRef;
88
88
  var theme = (0, useCustomTheme_1.useCustomTheme)();
89
89
  var _j = (0, react_2.useState)(new Set()), expandedRows = _j[0], setExpandedRows = _j[1];
90
90
  var selectionsSet = (0, react_2.useMemo)(function () { return new Set(selections); }, [selections]);
91
+ // --- Row virtualization ---------------------------------------------------
92
+ // Rows are a fixed 45px tall (see the `height={45}` on every <Td/> below),
93
+ // and the scroll viewport is capped at ~500px, so only ~11 rows are ever
94
+ // visible. Mounting all 50/100 page rows is what makes paging freeze. We
95
+ // render only the rows inside the viewport (+ overscan) and reserve the
96
+ // remaining height with empty spacer rows. Spacer rows (rather than CSS
97
+ // transforms) keep the table in normal flow so the sticky header and
98
+ // `position: sticky` frozen columns keep working.
99
+ // Disabled when expandable content rows are present, since those break the
100
+ // fixed-height assumption.
101
+ var ROW_HEIGHT = 45;
102
+ var OVERSCAN = 6;
103
+ var VIRTUALIZE_THRESHOLD = 30;
104
+ var shouldVirtualize = !isContent && data.length > VIRTUALIZE_THRESHOLD;
105
+ var _k = (0, react_2.useState)(0), scrollTop = _k[0], setScrollTop = _k[1];
106
+ var _l = (0, react_2.useState)(0), viewportH = _l[0], setViewportH = _l[1];
107
+ (0, react_2.useEffect)(function () {
108
+ var el = scrollContainerRef === null || scrollContainerRef === void 0 ? void 0 : scrollContainerRef.current;
109
+ if (!el || !shouldVirtualize)
110
+ return;
111
+ var onScroll = function () { return setScrollTop(el.scrollTop); };
112
+ var measure = function () { return setViewportH(el.clientHeight); };
113
+ measure();
114
+ setScrollTop(el.scrollTop);
115
+ el.addEventListener("scroll", onScroll, { passive: true });
116
+ window.addEventListener("resize", measure);
117
+ return function () {
118
+ el.removeEventListener("scroll", onScroll);
119
+ window.removeEventListener("resize", measure);
120
+ };
121
+ }, [scrollContainerRef, shouldVirtualize, data.length]);
122
+ // New page: jump back to the top so the window recomputes from row 0.
123
+ (0, react_2.useEffect)(function () {
124
+ if (!shouldVirtualize)
125
+ return;
126
+ var el = scrollContainerRef === null || scrollContainerRef === void 0 ? void 0 : scrollContainerRef.current;
127
+ if (el)
128
+ el.scrollTop = 0;
129
+ setScrollTop(0);
130
+ }, [startRow, shouldVirtualize, scrollContainerRef]);
131
+ var total = data.length;
132
+ var firstIndex = 0;
133
+ var lastIndex = total;
134
+ if (shouldVirtualize) {
135
+ var vh = viewportH || 500;
136
+ firstIndex = Math.max(0, Math.floor(scrollTop / ROW_HEIGHT) - OVERSCAN);
137
+ var count = Math.ceil(vh / ROW_HEIGHT) + OVERSCAN * 2;
138
+ lastIndex = Math.min(total, firstIndex + count);
139
+ }
140
+ var visibleRows = shouldVirtualize ? data.slice(firstIndex, lastIndex) : data;
141
+ var topPad = firstIndex * ROW_HEIGHT;
142
+ var bottomPad = (total - lastIndex) * ROW_HEIGHT;
91
143
  var toggleRowExpansion = (0, react_2.useCallback)(function (rowIndex) {
92
144
  setExpandedRows(function (prev) {
93
145
  var newSet = new Set(prev);
@@ -133,12 +185,17 @@ var TableBody = function (_a) {
133
185
  react_2.default.createElement(react_1.Td, { colSpan: totalVisibleColumns, p: 0, border: "none", position: "relative", height: 0 },
134
186
  react_2.default.createElement(react_1.Box, { position: "absolute", top: 4, left: "50%", transform: "translateX(-50%)", zIndex: 10 },
135
187
  react_2.default.createElement(react_1.Spinner, { size: "sm", color: ((_h = (_g = theme.colors) === null || _g === void 0 ? void 0 : _g.primary) === null || _h === void 0 ? void 0 : _h[500]) || "blue.500" }))))),
136
- data.map(function (row, index) {
188
+ shouldVirtualize && topPad > 0 && (react_2.default.createElement("tr", { "aria-hidden": "true", style: { height: topPad } },
189
+ react_2.default.createElement("td", { colSpan: totalVisibleColumns, style: { padding: 0, border: "none", height: topPad } }))),
190
+ visibleRows.map(function (row, i) {
137
191
  var _a;
192
+ var index = firstIndex + i;
138
193
  var rowIndex = startRow + index;
139
194
  var isExpanded = expandedRows.has(rowIndex);
140
195
  var isChecked = selectionsSet.has(row.id);
141
196
  return (react_2.default.createElement(TableRow, { key: (_a = row.id) !== null && _a !== void 0 ? _a : rowIndex, row: row, rowIndex: rowIndex, index: index, isChecked: isChecked, isExpanded: isExpanded, isContent: isContent, isLink: isLink, isCheckbox: isCheckbox, isLoading: isLoading, isActionFreeze: isActionFreeze, columns: columns, leftOffsets: leftOffsets, noBorders: noBorders, freezedBgColor: freezedBgColor, freezedTextColor: freezedTextColor, theme: theme, borderStyle: borderStyle, hoverStyle: hoverStyle, handleCheckbox: handleCheckbox, onRowClick: onRowClick, toggleRowExpansion: toggleRowExpansion }));
142
- })));
197
+ }),
198
+ shouldVirtualize && bottomPad > 0 && (react_2.default.createElement("tr", { "aria-hidden": "true", style: { height: bottomPad } },
199
+ react_2.default.createElement("td", { colSpan: totalVisibleColumns, style: { padding: 0, border: "none", height: bottomPad } })))));
143
200
  };
144
201
  exports.default = TableBody;
@@ -0,0 +1 @@
1
+ import "@testing-library/jest-dom";
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ var react_1 = __importStar(require("react"));
40
+ var react_2 = require("@testing-library/react");
41
+ require("@testing-library/jest-dom");
42
+ var react_3 = require("@chakra-ui/react");
43
+ var TableBody_1 = __importDefault(require("./TableBody"));
44
+ jest.mock("../../../Theme/useCustomTheme", function () { return ({
45
+ useCustomTheme: function () { return ({
46
+ colors: {
47
+ background: { 50: "#fff", 100: "#f9f9f9" },
48
+ backgroundColor: { light: "#fafafa", secondary: "#eee", muted: "#f3f3f3" },
49
+ disabled: { 100: "#eee" },
50
+ gray: { 100: "#f0f0f0", 200: "#eee", 300: "#ddd", 400: "#ccc", 500: "#bbb", 600: "#666" },
51
+ border: { 500: "#ddd" },
52
+ primary: { 500: "#3182ce" },
53
+ text: { 500: "#555" },
54
+ secondary: { opacity: { 4: "rgba(0,0,0,0.04)" } },
55
+ white: "#fff",
56
+ },
57
+ shadows: { lg: "0 0 0" },
58
+ }); },
59
+ }); });
60
+ var columns = [{ id: "name", label: "Name" }];
61
+ var makeData = function (n) {
62
+ return Array.from({ length: n }, function (_, i) { return ({ id: i, name: "Row ".concat(i) }); });
63
+ };
64
+ var Harness = function (_a) {
65
+ var count = _a.count;
66
+ var ref = (0, react_1.useRef)(null);
67
+ return (react_1.default.createElement(react_3.ChakraProvider, null,
68
+ react_1.default.createElement("div", { ref: ref },
69
+ react_1.default.createElement(react_3.Table, null,
70
+ react_1.default.createElement(react_3.Tbody, null,
71
+ react_1.default.createElement(TableBody_1.default, { data: makeData(count), columns: columns, startRow: 0, endRow: count, columnWidths: [120], isCheckbox: false, isContent: false, isLink: false, isActionFreeze: false, noBorders: false, selections: [], handleCheckbox: function () { }, scrollContainerRef: ref }))))));
72
+ };
73
+ describe("TableBody virtualization", function () {
74
+ it("windows large pages and reserves height with spacer rows", function () {
75
+ var _a = (0, react_2.render)(react_1.default.createElement(Harness, { count: 100 })), container = _a.container, queryByText = _a.queryByText;
76
+ // jsdom clientHeight=0 -> 500px fallback -> ceil(500/45)+12 = 24 rows
77
+ expect(queryByText("Row 0")).toBeInTheDocument();
78
+ expect(queryByText("Row 23")).toBeInTheDocument();
79
+ // Rows beyond the window are not mounted.
80
+ expect(queryByText("Row 50")).not.toBeInTheDocument();
81
+ expect(queryByText("Row 99")).not.toBeInTheDocument();
82
+ // A trailing spacer reserves the height of the unrendered rows.
83
+ var spacers = container.querySelectorAll('tr[aria-hidden="true"]');
84
+ expect(spacers.length).toBe(1);
85
+ expect(spacers[0]).toHaveStyle({ height: "".concat((100 - 24) * 45, "px") });
86
+ });
87
+ it("renders every row and no spacers below the threshold", function () {
88
+ var _a = (0, react_2.render)(react_1.default.createElement(Harness, { count: 30 })), container = _a.container, queryByText = _a.queryByText;
89
+ expect(queryByText("Row 0")).toBeInTheDocument();
90
+ expect(queryByText("Row 29")).toBeInTheDocument();
91
+ expect(container.querySelectorAll('tr[aria-hidden="true"]').length).toBe(0);
92
+ });
93
+ });
@@ -278,5 +278,5 @@ function Table(_a) {
278
278
  ? false
279
279
  : "indeterminate", isContent: isContent, isLink: isLink, isActionFreeze: isActionFreeze, setColumnsSearch: setColumnsSearch, columnsSearch: columnsSearch, isSelecting: isSelecting })),
280
280
  react_1.default.createElement(react_3.Tbody, null,
281
- react_1.default.createElement(TableBody_1.default, { data: _filteredData, columns: columnsList, startRow: startRow, endRow: endRow, isCheckbox: isCheckbox, columnWidths: columnWidths, noBorders: noBorders, freezedBgColor: freezedBgColor !== null && freezedBgColor !== void 0 ? freezedBgColor : theme.colors.backgroundColor.secondary, freezedTextColor: freezedTextColor !== null && freezedTextColor !== void 0 ? freezedTextColor : (_z = theme.colors) === null || _z === void 0 ? void 0 : _z.gray[600], handleCheckbox: handleCheckbox, selections: selection, isLoading: isTableLoading, loadingSkeletonRows: loadingSkeletonRows, onRowClick: onRowClick, isContent: isContent, isLink: isLink, isActionFreeze: isActionFreeze }))))))));
281
+ react_1.default.createElement(TableBody_1.default, { data: _filteredData, columns: columnsList, startRow: 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 : (_z = theme.colors) === null || _z === void 0 ? void 0 : _z.gray[600], handleCheckbox: handleCheckbox, selections: selection, isLoading: isTableLoading, loadingSkeletonRows: loadingSkeletonRows, onRowClick: onRowClick, isContent: isContent, isLink: isLink, isActionFreeze: isActionFreeze }))))))));
282
282
  }
@@ -118,6 +118,7 @@ export type TableBodyPageProps = Pick<TableProps, "columns" | "isCheckbox" | "da
118
118
  selections: (string | number)[];
119
119
  isContent: boolean;
120
120
  isLink: boolean;
121
+ scrollContainerRef?: MutableRefObject<HTMLDivElement | null>;
121
122
  };
122
123
  export type TableFiltersProps = {
123
124
  header: DataObject;
@@ -0,0 +1,370 @@
1
+ declare const darkPalette: {
2
+ primary: {
3
+ 50: string;
4
+ 100: string;
5
+ 200: string;
6
+ 300: string;
7
+ 400: string;
8
+ 500: string;
9
+ 600: string;
10
+ 700: string;
11
+ 800: string;
12
+ 900: string;
13
+ opacity: {
14
+ 4: string;
15
+ 8: string;
16
+ 16: string;
17
+ 24: string;
18
+ 32: string;
19
+ 40: string;
20
+ 48: string;
21
+ };
22
+ };
23
+ secondary: {
24
+ 50: string;
25
+ 100: string;
26
+ 200: string;
27
+ 300: string;
28
+ 400: string;
29
+ 500: string;
30
+ 600: string;
31
+ 700: string;
32
+ 800: string;
33
+ 900: string;
34
+ opacity: {
35
+ 4: string;
36
+ 8: string;
37
+ 16: string;
38
+ 24: string;
39
+ 32: string;
40
+ 40: string;
41
+ 48: string;
42
+ };
43
+ };
44
+ tertiary: {
45
+ 50: string;
46
+ 100: string;
47
+ 200: string;
48
+ 300: string;
49
+ 400: string;
50
+ 500: string;
51
+ 600: string;
52
+ 700: string;
53
+ 800: string;
54
+ 900: string;
55
+ opacity: {
56
+ 4: string;
57
+ 8: string;
58
+ 16: string;
59
+ 24: string;
60
+ 32: string;
61
+ 40: string;
62
+ 48: string;
63
+ };
64
+ };
65
+ transparent: string;
66
+ black: string;
67
+ white: string;
68
+ semantic: {
69
+ success: {
70
+ 50: string;
71
+ 100: string;
72
+ 200: string;
73
+ 300: string;
74
+ 400: string;
75
+ 500: string;
76
+ 600: string;
77
+ 700: string;
78
+ 800: string;
79
+ 900: string;
80
+ };
81
+ error: {
82
+ 50: string;
83
+ 100: string;
84
+ 200: string;
85
+ 300: string;
86
+ 400: string;
87
+ 500: string;
88
+ 600: string;
89
+ 700: string;
90
+ 800: string;
91
+ 900: string;
92
+ };
93
+ warning: {
94
+ 50: string;
95
+ 100: string;
96
+ 200: string;
97
+ 300: string;
98
+ 400: string;
99
+ 500: string;
100
+ 600: string;
101
+ 700: string;
102
+ 800: string;
103
+ 900: string;
104
+ };
105
+ info: {
106
+ 50: string;
107
+ 100: string;
108
+ 200: string;
109
+ 300: string;
110
+ 400: string;
111
+ 500: string;
112
+ 600: string;
113
+ 700: string;
114
+ 800: string;
115
+ 900: string;
116
+ };
117
+ };
118
+ gray: {
119
+ 50: string;
120
+ 100: string;
121
+ 200: string;
122
+ 300: string;
123
+ 400: string;
124
+ 500: string;
125
+ 600: string;
126
+ 700: string;
127
+ 800: string;
128
+ 900: string;
129
+ };
130
+ red: {
131
+ 50: string;
132
+ 100: string;
133
+ 200: string;
134
+ 300: string;
135
+ 400: string;
136
+ 500: string;
137
+ 600: string;
138
+ 700: string;
139
+ 800: string;
140
+ 900: string;
141
+ };
142
+ orange: {
143
+ 50: string;
144
+ 100: string;
145
+ 200: string;
146
+ 300: string;
147
+ 400: string;
148
+ 500: string;
149
+ 600: string;
150
+ 700: string;
151
+ 800: string;
152
+ 900: string;
153
+ };
154
+ yellow: {
155
+ 50: string;
156
+ 100: string;
157
+ 200: string;
158
+ 300: string;
159
+ 400: string;
160
+ 500: string;
161
+ 600: string;
162
+ 700: string;
163
+ 800: string;
164
+ 900: string;
165
+ };
166
+ green: {
167
+ 50: string;
168
+ 100: string;
169
+ 200: string;
170
+ 300: string;
171
+ 400: string;
172
+ 500: string;
173
+ 600: string;
174
+ 700: string;
175
+ 800: string;
176
+ 900: string;
177
+ };
178
+ teal: {
179
+ 50: string;
180
+ 100: string;
181
+ 200: string;
182
+ 300: string;
183
+ 400: string;
184
+ 500: string;
185
+ 600: string;
186
+ 700: string;
187
+ 800: string;
188
+ 900: string;
189
+ };
190
+ blue: {
191
+ 50: string;
192
+ 100: string;
193
+ 200: string;
194
+ 300: string;
195
+ 400: string;
196
+ 500: string;
197
+ 600: string;
198
+ 700: string;
199
+ 800: string;
200
+ 900: string;
201
+ };
202
+ cyan: {
203
+ 50: string;
204
+ 100: string;
205
+ 200: string;
206
+ 300: string;
207
+ 400: string;
208
+ 500: string;
209
+ 600: string;
210
+ 700: string;
211
+ 800: string;
212
+ 900: string;
213
+ };
214
+ purple: {
215
+ 50: string;
216
+ 100: string;
217
+ 200: string;
218
+ 300: string;
219
+ 400: string;
220
+ 500: string;
221
+ 600: string;
222
+ 700: string;
223
+ 800: string;
224
+ 900: string;
225
+ };
226
+ pink: {
227
+ 50: string;
228
+ 100: string;
229
+ 200: string;
230
+ 300: string;
231
+ 400: string;
232
+ 500: string;
233
+ 600: string;
234
+ 700: string;
235
+ 800: string;
236
+ 900: string;
237
+ };
238
+ background: {
239
+ 50: string;
240
+ 100: string;
241
+ 200: string;
242
+ 300: string;
243
+ 400: string;
244
+ 500: string;
245
+ 600: string;
246
+ 700: string;
247
+ 800: string;
248
+ 900: string;
249
+ };
250
+ backgroundColor: {
251
+ main: string;
252
+ secondary: string;
253
+ tertiary: string;
254
+ quaternary: string;
255
+ light: string;
256
+ medium: string;
257
+ accent: string;
258
+ subtle: string;
259
+ muted: string;
260
+ neutral: string;
261
+ base: string;
262
+ tableHeader: string;
263
+ };
264
+ text: {
265
+ 50: string;
266
+ 100: string;
267
+ 200: string;
268
+ 300: string;
269
+ 400: string;
270
+ 500: string;
271
+ 600: string;
272
+ 700: string;
273
+ 800: string;
274
+ 900: string;
275
+ };
276
+ header: {
277
+ 50: string;
278
+ 100: string;
279
+ 200: string;
280
+ 300: string;
281
+ 400: string;
282
+ 500: string;
283
+ 600: string;
284
+ 700: string;
285
+ 800: string;
286
+ 900: string;
287
+ };
288
+ placeholder: {
289
+ 50: string;
290
+ 100: string;
291
+ 200: string;
292
+ 300: string;
293
+ 400: string;
294
+ 500: string;
295
+ 600: string;
296
+ 700: string;
297
+ 800: string;
298
+ 900: string;
299
+ };
300
+ boxShadow: {
301
+ primary: string;
302
+ error: string;
303
+ default: string;
304
+ };
305
+ sidebar: {
306
+ background: {
307
+ 50: string;
308
+ 100: string;
309
+ 200: string;
310
+ 300: string;
311
+ 400: string;
312
+ 500: string;
313
+ 600: string;
314
+ 700: string;
315
+ 800: string;
316
+ 900: string;
317
+ };
318
+ };
319
+ boxborder: {
320
+ 50: string;
321
+ 100: string;
322
+ 200: string;
323
+ 300: string;
324
+ 400: string;
325
+ 500: string;
326
+ 600: string;
327
+ 700: string;
328
+ 800: string;
329
+ 900: string;
330
+ };
331
+ border: {
332
+ 50: string;
333
+ 100: string;
334
+ 200: string;
335
+ 300: string;
336
+ 400: string;
337
+ 500: string;
338
+ 600: string;
339
+ 700: string;
340
+ 800: string;
341
+ 900: string;
342
+ };
343
+ table: {
344
+ hover: {
345
+ 50: string;
346
+ 100: string;
347
+ 200: string;
348
+ 300: string;
349
+ 400: string;
350
+ 500: string;
351
+ 600: string;
352
+ 700: string;
353
+ 800: string;
354
+ 900: string;
355
+ };
356
+ };
357
+ disabled: {
358
+ 50: string;
359
+ 100: string;
360
+ 200: string;
361
+ 300: string;
362
+ 400: string;
363
+ 500: string;
364
+ 600: string;
365
+ 700: string;
366
+ 800: string;
367
+ 900: string;
368
+ };
369
+ };
370
+ export default darkPalette;