react-restyle-components 0.4.46 → 0.4.47

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 (231) hide show
  1. package/lib/index.js +1 -3
  2. package/lib/src/core-components/index.js +1 -1
  3. package/lib/src/core-components/src/components/Accordion/AccordionSection/Accordion.js +1 -15
  4. package/lib/src/core-components/src/components/Accordion/AccordionSection/AccordionContext.js +1 -6
  5. package/lib/src/core-components/src/components/Accordion/AccordionSection/AccordionSection.js +1 -39
  6. package/lib/src/core-components/src/components/Accordion/AccordionSection/Header.js +1 -39
  7. package/lib/src/core-components/src/components/Accordion/AccordionSection/elements.js +57 -94
  8. package/lib/src/core-components/src/components/Accordion/AccordionSection/hooks/useCurrentAccordionIndex.js +1 -13
  9. package/lib/src/core-components/src/components/Accordion/AccordionSection/index.js +1 -3
  10. package/lib/src/core-components/src/components/Accordion/AccordionSection/types.js +1 -9
  11. package/lib/src/core-components/src/components/Accordion/Collapsible/Collapsible2.component.js +1 -249
  12. package/lib/src/core-components/src/components/Action/types.js +1 -8
  13. package/lib/src/core-components/src/components/AlertBanner/AlertBanner.js +1 -45
  14. package/lib/src/core-components/src/components/AlertBanner/elements.js +45 -120
  15. package/lib/src/core-components/src/components/AlertBanner/index.js +1 -2
  16. package/lib/src/core-components/src/components/AlertBanner/types.js +1 -10
  17. package/lib/src/core-components/src/components/AutoComplete/auto-complete-filter-group-by-multiple-select-multiple-fields-display/auto-complete-filter-group-by-multiple-select-multiple-fields-display.component.js +1 -451
  18. package/lib/src/core-components/src/components/AutoComplete/auto-complete-filter-multi-select-multi-fields-display-drag-drop/auto-complete-filter-multi-select-multi-fields-display-drag-drop.component.js +1 -229
  19. package/lib/src/core-components/src/components/AutoComplete/auto-complete-filter-multi-select-selected-top-display/auto-complete-filter-multi-select-selected-top-display.component.js +1 -174
  20. package/lib/src/core-components/src/components/AutoComplete/auto-complete-filter-multiple-select-multiple-fields-display/auto-complete-filter-multiple-select-multiple-fields-display.component.js +2 -129
  21. package/lib/src/core-components/src/components/AutoComplete/auto-complete-filter-single-select/auto-complete-filter-single-select.component.js +1 -55
  22. package/lib/src/core-components/src/components/AutoComplete/auto-complete-filter-single-select-multiple-fields-display/auto-complete-filter-single-select-multiple-fields-display.component.js +2 -308
  23. package/lib/src/core-components/src/components/AutoComplete/auto-complete-group-by/auto-complete-group-by.component.js +1 -115
  24. package/lib/src/core-components/src/components/AutoComplete/autocomplete/autocomplete.js +2 -442
  25. package/lib/src/core-components/src/components/AutoComplete/index.js +1 -8
  26. package/lib/src/core-components/src/components/Avatar/Avatar.js +14 -148
  27. package/lib/src/core-components/src/components/Badge/Badge.js +2 -25
  28. package/lib/src/core-components/src/components/Badge/InnerBadge/Inline.js +1 -25
  29. package/lib/src/core-components/src/components/Badge/InnerBadge/InnerBadge.js +1 -25
  30. package/lib/src/core-components/src/components/Badge/InnerBadge/elements.js +32 -78
  31. package/lib/src/core-components/src/components/Badge/InnerBadge/index.js +1 -1
  32. package/lib/src/core-components/src/components/Badge/index.js +1 -1
  33. package/lib/src/core-components/src/components/Badge/types.js +1 -5
  34. package/lib/src/core-components/src/components/Breadcrumb/Breadcrumb.js +1 -83
  35. package/lib/src/core-components/src/components/Breadcrumb/elements.js +94 -166
  36. package/lib/src/core-components/src/components/Breadcrumb/index.js +1 -3
  37. package/lib/src/core-components/src/components/Breadcrumb/types.js +1 -3
  38. package/lib/src/core-components/src/components/Button/button.component.js +1 -18
  39. package/lib/src/core-components/src/components/Button/buttonGroup/buttonGroup.component.js +1 -4
  40. package/lib/src/core-components/src/components/Button/index.js +1 -2
  41. package/lib/src/core-components/src/components/Button/types.js +1 -1
  42. package/lib/src/core-components/src/components/Chip/Chip.js +1 -64
  43. package/lib/src/core-components/src/components/Chip/elements.js +48 -148
  44. package/lib/src/core-components/src/components/Chip/index.js +1 -2
  45. package/lib/src/core-components/src/components/Chip/types.js +1 -4
  46. package/lib/src/core-components/src/components/Divider/Divider.js +1 -25
  47. package/lib/src/core-components/src/components/Divider/elements.js +31 -68
  48. package/lib/src/core-components/src/components/Divider/index.js +1 -2
  49. package/lib/src/core-components/src/components/Divider/types.js +1 -4
  50. package/lib/src/core-components/src/components/DynamicGrid/DynamicGrid.js +1 -147
  51. package/lib/src/core-components/src/components/DynamicGrid/GridContainer.js +17 -24
  52. package/lib/src/core-components/src/components/DynamicGrid/elements.js +100 -162
  53. package/lib/src/core-components/src/components/DynamicGrid/index.js +1 -3
  54. package/lib/src/core-components/src/components/DynamicGrid/types.js +1 -28
  55. package/lib/src/core-components/src/components/DynamicGrid/utils.js +1 -193
  56. package/lib/src/core-components/src/components/FormField/FormField.js +1 -103
  57. package/lib/src/core-components/src/components/FormField/components/CheckboxGroupInput.js +1 -37
  58. package/lib/src/core-components/src/components/FormField/components/CheckboxInput.js +1 -8
  59. package/lib/src/core-components/src/components/FormField/components/CssMultilineInput.js +1 -192
  60. package/lib/src/core-components/src/components/FormField/components/DatePickerInput.js +1 -99
  61. package/lib/src/core-components/src/components/FormField/components/DropdownInput.js +1 -70
  62. package/lib/src/core-components/src/components/FormField/components/OtpInput.js +1 -81
  63. package/lib/src/core-components/src/components/FormField/components/PasswordInput.js +1 -40
  64. package/lib/src/core-components/src/components/FormField/components/PinInput.js +1 -75
  65. package/lib/src/core-components/src/components/FormField/components/RadioInput.js +1 -54
  66. package/lib/src/core-components/src/components/FormField/components/TextDropdownInput.js +1 -94
  67. package/lib/src/core-components/src/components/FormField/components/ToggleInput.js +1 -36
  68. package/lib/src/core-components/src/components/FormField/components/index.js +1 -11
  69. package/lib/src/core-components/src/components/FormField/css-properties.js +1 -161
  70. package/lib/src/core-components/src/components/FormField/index.js +1 -2
  71. package/lib/src/core-components/src/components/Icon/Icon.js +1 -159
  72. package/lib/src/core-components/src/components/Icon/index.js +1 -2
  73. package/lib/src/core-components/src/components/Icon/types.js +1 -9
  74. package/lib/src/core-components/src/components/Loader/loader.component.js +2 -215
  75. package/lib/src/core-components/src/components/Masonry/Masonry.js +1 -73
  76. package/lib/src/core-components/src/components/Masonry/elements.js +29 -46
  77. package/lib/src/core-components/src/components/Masonry/hooks.js +1 -100
  78. package/lib/src/core-components/src/components/Masonry/index.js +1 -3
  79. package/lib/src/core-components/src/components/Masonry/types.js +1 -1
  80. package/lib/src/core-components/src/components/Modal/BasicModal/modal.component.js +1 -116
  81. package/lib/src/core-components/src/components/Modal/index.js +1 -2
  82. package/lib/src/core-components/src/components/Modal/modal-confirm/modal-confirm.component.js +1 -147
  83. package/lib/src/core-components/src/components/Picker/color-picker/color-picker.component.js +1 -12
  84. package/lib/src/core-components/src/components/Picker/color-picker-modal/color-picker-modal.component.js +1 -40
  85. package/lib/src/core-components/src/components/Picker/index.js +1 -2
  86. package/lib/src/core-components/src/components/Selection/index.js +1 -4
  87. package/lib/src/core-components/src/components/Selection/multi-select/multi-select.component.js +1 -49
  88. package/lib/src/core-components/src/components/Selection/multi-select-with-field/multi-select-with-field.component.js +1 -58
  89. package/lib/src/core-components/src/components/Selection/multi-selection-dropdown/multi-selection-dropdown.component.js +1 -43
  90. package/lib/src/core-components/src/components/Selection/single-select/single-select.component.js +1 -87
  91. package/lib/src/core-components/src/components/Skeleton/Skeleton.js +1 -51
  92. package/lib/src/core-components/src/components/Skeleton/elements.js +54 -143
  93. package/lib/src/core-components/src/components/Skeleton/index.js +1 -2
  94. package/lib/src/core-components/src/components/Skeleton/types.js +1 -4
  95. package/lib/src/core-components/src/components/SpeedDial/SpeedDial.js +1 -128
  96. package/lib/src/core-components/src/components/SpeedDial/elements.js +62 -132
  97. package/lib/src/core-components/src/components/SpeedDial/index.js +1 -2
  98. package/lib/src/core-components/src/components/SpeedDial/types.js +1 -3
  99. package/lib/src/core-components/src/components/Stepper2/stepper.component.js +1 -139
  100. package/lib/src/core-components/src/components/Switch/Switch.js +1 -26
  101. package/lib/src/core-components/src/components/Switch/elements.js +34 -103
  102. package/lib/src/core-components/src/components/Switch/index.js +1 -2
  103. package/lib/src/core-components/src/components/Switch/types.js +1 -3
  104. package/lib/src/core-components/src/components/Table/Table.js +1 -1489
  105. package/lib/src/core-components/src/components/Table/columnReorder.js +36 -332
  106. package/lib/src/core-components/src/components/Table/columnResize.js +21 -284
  107. package/lib/src/core-components/src/components/Table/elements.js +173 -277
  108. package/lib/src/core-components/src/components/Table/filters.js +30 -555
  109. package/lib/src/core-components/src/components/Table/hooks.js +2 -536
  110. package/lib/src/core-components/src/components/Table/index.js +1 -6
  111. package/lib/src/core-components/src/components/Table/types.js +1 -1
  112. package/lib/src/core-components/src/components/Tabs/tabs.component.js +1 -22
  113. package/lib/src/core-components/src/components/Tags1/Tags.component.js +1 -118
  114. package/lib/src/core-components/src/components/Tags1/types.js +1 -20
  115. package/lib/src/core-components/src/components/Timer1/timer.component.js +1 -76
  116. package/lib/src/core-components/src/components/Toast/Toast.js +1 -50
  117. package/lib/src/core-components/src/components/Toast/elements.js +41 -122
  118. package/lib/src/core-components/src/components/Toast/index.js +1 -2
  119. package/lib/src/core-components/src/components/Toast/types.js +1 -9
  120. package/lib/src/core-components/src/components/Tooltip/Tooltip.js +1 -200
  121. package/lib/src/core-components/src/components/Tooltip/elements.js +55 -117
  122. package/lib/src/core-components/src/components/Tooltip/index.js +1 -2
  123. package/lib/src/core-components/src/components/Tooltip/types.js +1 -17
  124. package/lib/src/core-components/src/components/Tooltip/utils.js +1 -140
  125. package/lib/src/core-components/src/components/TreeSelect/TreeSelect.js +1 -303
  126. package/lib/src/core-components/src/components/TreeSelect/elements.js +117 -216
  127. package/lib/src/core-components/src/components/TreeSelect/hooks.js +1 -252
  128. package/lib/src/core-components/src/components/TreeSelect/index.js +1 -3
  129. package/lib/src/core-components/src/components/TreeSelect/types.js +1 -1
  130. package/lib/src/core-components/src/components/ag-grid/AgGrid.js +1 -1057
  131. package/lib/src/core-components/src/components/ag-grid/elements.js +396 -790
  132. package/lib/src/core-components/src/components/ag-grid/hooks.js +4 -1220
  133. package/lib/src/core-components/src/components/ag-grid/index.js +1 -15
  134. package/lib/src/core-components/src/components/ag-grid/types.js +1 -6
  135. package/lib/src/core-components/src/components/index.js +1 -31
  136. package/lib/src/core-components/src/components/pdf/pdf-images.components.js +1 -7
  137. package/lib/src/core-components/src/components/pdf/pdf-table.components.js +5 -48
  138. package/lib/src/core-components/src/components/pdf/pdf-typography.components.js +1 -70
  139. package/lib/src/core-components/src/components/pdf/pdf-wrapped-view.components.js +1 -50
  140. package/lib/src/core-components/src/core-components/Avatar.js +4 -33
  141. package/lib/src/core-components/src/core-components/CoreButton/CoreButton.js +1 -10
  142. package/lib/src/core-components/src/core-components/CoreButton/elements.js +67 -176
  143. package/lib/src/core-components/src/core-components/CoreButton/index.js +1 -3
  144. package/lib/src/core-components/src/core-components/CoreButton/types.js +1 -6
  145. package/lib/src/core-components/src/core-components/CoreButton/utils.js +1 -12
  146. package/lib/src/core-components/src/core-components/Divider/Divider.js +4 -19
  147. package/lib/src/core-components/src/core-components/Divider/index.js +1 -1
  148. package/lib/src/core-components/src/core-components/SelectionCardStrip/index.js +1 -1
  149. package/lib/src/core-components/src/core-components/SelectionCardStrip/selectionCardStrip.js +10 -33
  150. package/lib/src/core-components/src/core-components/StateLayer.js +3 -5
  151. package/lib/src/core-components/src/core-components/ToggleCore/elements.js +25 -50
  152. package/lib/src/core-components/src/core-components/ToggleCore/index.js +1 -2
  153. package/lib/src/core-components/src/core-components/ToggleCore/toggleCore.js +1 -14
  154. package/lib/src/core-components/src/core-components/atoms/Input/Input.js +1 -22
  155. package/lib/src/core-components/src/core-components/atoms/Label/Label.js +1 -21
  156. package/lib/src/core-components/src/core-components/atoms/Textarea/Textarea.js +1 -19
  157. package/lib/src/core-components/src/core-components/index.js +1 -3
  158. package/lib/src/core-components/src/helpers/constants.js +1 -11
  159. package/lib/src/core-components/src/hooks/index.js +1 -1
  160. package/lib/src/core-components/src/hooks/outside.hook.js +1 -28
  161. package/lib/src/core-components/src/index.js +1 -12
  162. package/lib/src/core-components/src/tc.global.css +1 -0
  163. package/lib/src/core-components/src/utils/abstracts/breakpoints/index.js +1 -28
  164. package/lib/src/core-components/src/utils/abstracts/colors/index.js +1 -49
  165. package/lib/src/core-components/src/utils/abstracts/index.js +1 -5
  166. package/lib/src/core-components/src/utils/abstracts/space/index.js +1 -26
  167. package/lib/src/core-components/src/utils/abstracts/theme/ThemeBoundary.js +1 -8
  168. package/lib/src/core-components/src/utils/abstracts/theme/default-themes.js +1 -30
  169. package/lib/src/core-components/src/utils/abstracts/theme/index.js +1 -3
  170. package/lib/src/core-components/src/utils/abstracts/theme/theme.js +1 -30
  171. package/lib/src/core-components/src/utils/abstracts/theme/types.js +1 -1
  172. package/lib/src/core-components/src/utils/abstracts/theme/useTheme.js +1 -17
  173. package/lib/src/core-components/src/utils/abstracts/typography/index.js +1 -25
  174. package/lib/src/core-components/src/utils/context/DefaultsProvider.js +1 -8
  175. package/lib/src/core-components/src/utils/context/InternalProvider.js +1 -24
  176. package/lib/src/core-components/src/utils/context/index.js +1 -2
  177. package/lib/src/core-components/src/utils/designTokens.js +1 -128
  178. package/lib/src/core-components/src/utils/helpers/attachSubComponents.js +1 -23
  179. package/lib/src/core-components/src/utils/helpers/flattenChildren.js +1 -11
  180. package/lib/src/core-components/src/utils/helpers/getChildByType.js +1 -3
  181. package/lib/src/core-components/src/utils/helpers/index.js +1 -5
  182. package/lib/src/core-components/src/utils/helpers/isComponentType.js +1 -16
  183. package/lib/src/core-components/src/utils/helpers/separateChildrenByType.js +1 -12
  184. package/lib/src/core-components/src/utils/hooks/index.js +1 -18
  185. package/lib/src/core-components/src/utils/hooks/useClickOutside.js +1 -18
  186. package/lib/src/core-components/src/utils/hooks/useCombinedRefs.js +1 -17
  187. package/lib/src/core-components/src/utils/hooks/useDebouncedCallback.js +1 -12
  188. package/lib/src/core-components/src/utils/hooks/useDebouncedValue.js +1 -20
  189. package/lib/src/core-components/src/utils/hooks/useDeprecation.js +1 -40
  190. package/lib/src/core-components/src/utils/hooks/useDeviceDetect.js +1 -10
  191. package/lib/src/core-components/src/utils/hooks/useDeviceForm.js +1 -24
  192. package/lib/src/core-components/src/utils/hooks/useDisableBodyScroll.js +1 -16
  193. package/lib/src/core-components/src/utils/hooks/useHoverState.js +1 -36
  194. package/lib/src/core-components/src/utils/hooks/useId.js +1 -7
  195. package/lib/src/core-components/src/utils/hooks/useIsBrowser.js +1 -11
  196. package/lib/src/core-components/src/utils/hooks/useMediaQuery.js +1 -16
  197. package/lib/src/core-components/src/utils/hooks/useOverflow.js +1 -22
  198. package/lib/src/core-components/src/utils/hooks/useSafeLayoutEffect.js +1 -5
  199. package/lib/src/core-components/src/utils/hooks/useScrollingUp.js +1 -18
  200. package/lib/src/core-components/src/utils/hooks/useTrapFocus.js +1 -30
  201. package/lib/src/core-components/src/utils/hooks/useWindowDimensions.js +1 -23
  202. package/lib/src/core-components/src/utils/index.js +1 -9
  203. package/lib/src/core-components/src/utils/stories/Wrappers.js +8 -23
  204. package/lib/src/core-components/src/utils/stories/cleanProps.js +1 -5
  205. package/lib/src/core-components/src/utils/stories/index.js +1 -4
  206. package/lib/src/core-components/src/utils/stories/sleep.js +1 -4
  207. package/lib/src/core-components/src/utils/stories/view-ports.js +1 -50
  208. package/lib/src/core-components/src/utils/styling/calcWidthOfColumns.js +1 -5
  209. package/lib/src/core-components/src/utils/styling/createGridContainer.js +6 -12
  210. package/lib/src/core-components/src/utils/styling/createTransition.js +2 -7
  211. package/lib/src/core-components/src/utils/styling/forwardProps.js +1 -10
  212. package/lib/src/core-components/src/utils/styling/index.js +1 -5
  213. package/lib/src/core-components/src/utils/styling/pxToRem.js +1 -6
  214. package/lib/src/core-components/src/utils/testing/getComputedStyle.js +1 -3
  215. package/lib/src/core-components/src/utils/testing/index.js +1 -1
  216. package/lib/src/core-components/src/utils/utility.util.js +1 -14
  217. package/lib/src/core-components/tailwind.config.js +1 -233
  218. package/lib/src/core-hooks/index.js +1 -3
  219. package/lib/src/core-hooks/src/useClickOutside/useClickOutside.hook.js +1 -46
  220. package/lib/src/core-hooks/src/useDebounce/useDebounce.hook.js +1 -30
  221. package/lib/src/core-hooks/src/usePreventEKey/usePreventEKey.hook.js +1 -8
  222. package/lib/src/core-utils/index.js +1 -7
  223. package/lib/src/core-utils/src/calculation/calculation.util.js +1 -89
  224. package/lib/src/core-utils/src/colors/color.util.js +1 -15
  225. package/lib/src/core-utils/src/convert/numberToWords/numToWords.util.js +1 -145
  226. package/lib/src/core-utils/src/convert/typography/camelCaseToTitleCase.util.js +1 -5
  227. package/lib/src/core-utils/src/form-helper/form-helper.util.js +1 -82
  228. package/lib/src/core-utils/src/index.js +1 -7
  229. package/lib/src/core-utils/src/utility/utility.util.js +1 -12
  230. package/lib/src/core-utils/src/uuid/uuid.util.js +1 -8
  231. package/package.json +1 -1
@@ -1,536 +1,2 @@
1
- import { useState, useCallback, useMemo, useEffect } from 'react';
2
- /**
3
- * Debounce function for table
4
- */
5
- export function useTableDebounce(value, delay) {
6
- const [debouncedValue, setDebouncedValue] = useState(value);
7
- useEffect(() => {
8
- const handler = setTimeout(() => {
9
- setDebouncedValue(value);
10
- }, delay);
11
- return () => clearTimeout(handler);
12
- }, [value, delay]);
13
- return debouncedValue;
14
- }
15
- /**
16
- * Hook for managing sort state
17
- */
18
- export function useSortState(defaultSort, controlledSort, multiSort = false) {
19
- const [internalSort, setInternalSort] = useState(defaultSort || { field: '', order: null });
20
- const sort = controlledSort ?? internalSort;
21
- const handleSort = useCallback((field, currentOrder) => {
22
- let nextOrder;
23
- if (sort.field !== field) {
24
- nextOrder = 'asc';
25
- }
26
- else if (currentOrder === null) {
27
- nextOrder = 'asc';
28
- }
29
- else if (currentOrder === 'asc') {
30
- nextOrder = 'desc';
31
- }
32
- else {
33
- nextOrder = null;
34
- }
35
- const newSort = { field, order: nextOrder };
36
- setInternalSort(newSort);
37
- return newSort;
38
- }, [sort.field]);
39
- return { sort, handleSort, setSort: setInternalSort };
40
- }
41
- /**
42
- * Hook for managing filter state
43
- */
44
- export function useFilterState(defaultFilters, controlledFilters) {
45
- const [internalFilters, setInternalFilters] = useState(defaultFilters || {});
46
- const filters = controlledFilters ?? internalFilters;
47
- const setFilter = useCallback((field, value) => {
48
- setInternalFilters((prev) => {
49
- if (value === undefined || value === null || value === '') {
50
- const { [field]: _, ...rest } = prev;
51
- return rest;
52
- }
53
- return { ...prev, [field]: value };
54
- });
55
- }, []);
56
- const clearFilters = useCallback(() => {
57
- setInternalFilters({});
58
- }, []);
59
- return { filters, setFilter, clearFilters, setFilters: setInternalFilters };
60
- }
61
- /**
62
- * Hook for managing pagination state
63
- */
64
- export function usePaginationState(defaultPage = 0, defaultPageSize = 10, totalSize = 0) {
65
- const [page, setPage] = useState(defaultPage);
66
- const [pageSize, setPageSize] = useState(defaultPageSize);
67
- const totalPages = Math.ceil(totalSize / pageSize) || 1;
68
- const goToPage = useCallback((newPage) => {
69
- const validPage = Math.max(0, Math.min(newPage, totalPages - 1));
70
- setPage(validPage);
71
- }, [totalPages]);
72
- const goToNextPage = useCallback(() => {
73
- goToPage(page + 1);
74
- }, [page, goToPage]);
75
- const goToPrevPage = useCallback(() => {
76
- goToPage(page - 1);
77
- }, [page, goToPage]);
78
- const goToFirstPage = useCallback(() => {
79
- goToPage(0);
80
- }, [goToPage]);
81
- const goToLastPage = useCallback(() => {
82
- goToPage(totalPages - 1);
83
- }, [totalPages, goToPage]);
84
- const changePageSize = useCallback((newSize) => {
85
- setPageSize(newSize);
86
- setPage(0); // Reset to first page
87
- }, []);
88
- return {
89
- page,
90
- pageSize,
91
- totalPages,
92
- goToPage,
93
- goToNextPage,
94
- goToPrevPage,
95
- goToFirstPage,
96
- goToLastPage,
97
- changePageSize,
98
- setPage,
99
- setPageSize,
100
- };
101
- }
102
- /**
103
- * Hook for managing row selection
104
- */
105
- export function useRowSelection(data, keyField = '_id', mode = 'none', controlledSelectedKeys, getCheckboxProps) {
106
- const [internalSelected, setInternalSelected] = useState(new Set());
107
- const selectedKeys = controlledSelectedKeys
108
- ? new Set(controlledSelectedKeys)
109
- : internalSelected;
110
- const isSelected = useCallback((key) => selectedKeys.has(key), [selectedKeys]);
111
- const toggleRow = useCallback((row) => {
112
- const key = row[keyField];
113
- const props = getCheckboxProps?.(row);
114
- if (props?.disabled)
115
- return;
116
- if (mode === 'single') {
117
- setInternalSelected(new Set([key]));
118
- return { selectedKeys: [key], selectedRows: [row] };
119
- }
120
- setInternalSelected((prev) => {
121
- const next = new Set(prev);
122
- if (next.has(key)) {
123
- next.delete(key);
124
- }
125
- else {
126
- next.add(key);
127
- }
128
- return next;
129
- });
130
- const newSelected = selectedKeys.has(key)
131
- ? Array.from(selectedKeys).filter((k) => k !== key)
132
- : [...Array.from(selectedKeys), key];
133
- return {
134
- selectedKeys: newSelected,
135
- selectedRows: data.filter((r) => newSelected.includes(r[keyField])),
136
- };
137
- }, [data, keyField, mode, selectedKeys, getCheckboxProps]);
138
- const toggleAll = useCallback((selectAll) => {
139
- if (selectAll) {
140
- const selectableKeys = data
141
- .filter((row) => {
142
- const props = getCheckboxProps?.(row);
143
- return !props?.disabled;
144
- })
145
- .map((row) => row[keyField]);
146
- setInternalSelected(new Set(selectableKeys));
147
- return {
148
- selectedKeys: selectableKeys,
149
- selectedRows: data.filter((r) => selectableKeys.includes(r[keyField])),
150
- };
151
- }
152
- else {
153
- setInternalSelected(new Set());
154
- return { selectedKeys: [], selectedRows: [] };
155
- }
156
- }, [data, keyField, getCheckboxProps]);
157
- const isAllSelected = useMemo(() => {
158
- if (data.length === 0)
159
- return false;
160
- const selectableRows = data.filter((row) => {
161
- const props = getCheckboxProps?.(row);
162
- return !props?.disabled;
163
- });
164
- return selectableRows.every((row) => selectedKeys.has(row[keyField]));
165
- }, [data, selectedKeys, keyField, getCheckboxProps]);
166
- const isIndeterminate = useMemo(() => {
167
- if (data.length === 0)
168
- return false;
169
- const selectableRows = data.filter((row) => {
170
- const props = getCheckboxProps?.(row);
171
- return !props?.disabled;
172
- });
173
- const selectedCount = selectableRows.filter((row) => selectedKeys.has(row[keyField])).length;
174
- return selectedCount > 0 && selectedCount < selectableRows.length;
175
- }, [data, selectedKeys, keyField, getCheckboxProps]);
176
- const clearSelection = useCallback(() => {
177
- setInternalSelected(new Set());
178
- }, []);
179
- return {
180
- selectedKeys,
181
- isSelected,
182
- toggleRow,
183
- toggleAll,
184
- isAllSelected,
185
- isIndeterminate,
186
- clearSelection,
187
- setSelected: setInternalSelected,
188
- };
189
- }
190
- /**
191
- * Hook for managing row expansion
192
- */
193
- export function useRowExpansion(keyField = '_id', defaultExpandedKeys, controlledExpandedKeys, accordion = false) {
194
- const [internalExpanded, setInternalExpanded] = useState(new Set(defaultExpandedKeys || []));
195
- const expandedKeys = controlledExpandedKeys
196
- ? new Set(controlledExpandedKeys)
197
- : internalExpanded;
198
- const isExpanded = useCallback((key) => expandedKeys.has(key), [expandedKeys]);
199
- const toggleExpand = useCallback((row) => {
200
- const key = row[keyField];
201
- setInternalExpanded((prev) => {
202
- const next = accordion ? new Set() : new Set(prev);
203
- if (prev.has(key)) {
204
- next.delete(key);
205
- }
206
- else {
207
- next.add(key);
208
- }
209
- return next;
210
- });
211
- const newExpanded = expandedKeys.has(key)
212
- ? Array.from(expandedKeys).filter((k) => k !== key)
213
- : accordion
214
- ? [key]
215
- : [...Array.from(expandedKeys), key];
216
- return { expandedKeys: newExpanded, expanded: !expandedKeys.has(key), row };
217
- }, [keyField, expandedKeys, accordion]);
218
- return {
219
- expandedKeys,
220
- isExpanded,
221
- toggleExpand,
222
- setExpanded: setInternalExpanded,
223
- };
224
- }
225
- /**
226
- * Hook for managing column visibility
227
- */
228
- export function useColumnVisibility(columns, storageKey) {
229
- const [hiddenColumns, setHiddenColumns] = useState(() => {
230
- // Load from storage if available
231
- if (storageKey && typeof window !== 'undefined') {
232
- const stored = localStorage.getItem(`table_columns_${storageKey}`);
233
- if (stored) {
234
- try {
235
- return new Set(JSON.parse(stored));
236
- }
237
- catch (e) {
238
- // Ignore
239
- }
240
- }
241
- }
242
- return new Set(columns.filter((c) => c.hidden).map((c) => c.dataField));
243
- });
244
- const visibleColumns = useMemo(() => columns.filter((c) => !hiddenColumns.has(c.dataField)), [columns, hiddenColumns]);
245
- const toggleColumn = useCallback((dataField) => {
246
- setHiddenColumns((prev) => {
247
- const next = new Set(prev);
248
- if (next.has(dataField)) {
249
- next.delete(dataField);
250
- }
251
- else {
252
- next.add(dataField);
253
- }
254
- // Save to storage
255
- if (storageKey && typeof window !== 'undefined') {
256
- localStorage.setItem(`table_columns_${storageKey}`, JSON.stringify(Array.from(next)));
257
- }
258
- return next;
259
- });
260
- }, [storageKey]);
261
- const showAllColumns = useCallback(() => {
262
- setHiddenColumns(new Set());
263
- if (storageKey && typeof window !== 'undefined') {
264
- localStorage.removeItem(`table_columns_${storageKey}`);
265
- }
266
- }, [storageKey]);
267
- return {
268
- hiddenColumns,
269
- visibleColumns,
270
- toggleColumn,
271
- showAllColumns,
272
- isColumnHidden: (field) => hiddenColumns.has(field),
273
- };
274
- }
275
- /**
276
- * Sort data locally
277
- */
278
- export function sortData(data, sort, columns) {
279
- if (!sort.field || !sort.order)
280
- return data;
281
- const column = columns.find((c) => c.dataField === sort.field);
282
- if (!column)
283
- return data;
284
- const sorted = [...data].sort((a, b) => {
285
- const aVal = getNestedValue(a, sort.field);
286
- const bVal = getNestedValue(b, sort.field);
287
- if (column.sortFunc) {
288
- return column.sortFunc(aVal, bVal, sort.order, a, b);
289
- }
290
- // Default sorting
291
- if (aVal === bVal)
292
- return 0;
293
- if (aVal === null || aVal === undefined)
294
- return 1;
295
- if (bVal === null || bVal === undefined)
296
- return -1;
297
- const comparison = typeof aVal === 'string'
298
- ? aVal.localeCompare(bVal)
299
- : aVal < bVal
300
- ? -1
301
- : 1;
302
- return sort.order === 'asc' ? comparison : -comparison;
303
- });
304
- return sorted;
305
- }
306
- /**
307
- * Filter data locally
308
- */
309
- export function filterData(data, filters, columns, searchValue) {
310
- let filtered = data;
311
- // Apply column filters
312
- for (const [field, value] of Object.entries(filters)) {
313
- if (value === undefined || value === null || value === '')
314
- continue;
315
- const column = columns.find((c) => c.dataField === field);
316
- if (!column)
317
- continue;
318
- filtered = filtered.filter((row) => {
319
- const cellValue = getNestedValue(row, field);
320
- if (typeof value === 'object' && value !== null) {
321
- // Complex filter (number range, date range, etc.)
322
- if ('number' in value && 'comparator' in value) {
323
- return compareNumber(cellValue, value.number, value.comparator);
324
- }
325
- if ('startDate' in value) {
326
- return compareDateRange(cellValue, value);
327
- }
328
- return true;
329
- }
330
- // Simple text filter
331
- if (cellValue === null || cellValue === undefined)
332
- return false;
333
- return String(cellValue)
334
- .toLowerCase()
335
- .includes(String(value).toLowerCase());
336
- });
337
- }
338
- // Apply global search
339
- if (searchValue) {
340
- const searchLower = searchValue.toLowerCase();
341
- filtered = filtered.filter((row) => {
342
- return columns.some((column) => {
343
- const value = getNestedValue(row, column.dataField);
344
- if (value === null || value === undefined)
345
- return false;
346
- return String(value).toLowerCase().includes(searchLower);
347
- });
348
- });
349
- }
350
- return filtered;
351
- }
352
- /**
353
- * Paginate data locally
354
- */
355
- export function paginateData(data, page, pageSize) {
356
- const start = page * pageSize;
357
- return data.slice(start, start + pageSize);
358
- }
359
- /**
360
- * Get nested value from object
361
- */
362
- export function getNestedValue(obj, path) {
363
- return path.split('.').reduce((acc, part) => acc?.[part], obj);
364
- }
365
- /**
366
- * Compare numbers with comparator
367
- */
368
- function compareNumber(value, filterValue, comparator) {
369
- const num = parseFloat(value);
370
- const filterNum = parseFloat(filterValue);
371
- if (isNaN(num) || isNaN(filterNum))
372
- return false;
373
- switch (comparator) {
374
- case '=':
375
- return num === filterNum;
376
- case '!=':
377
- return num !== filterNum;
378
- case '>':
379
- return num > filterNum;
380
- case '>=':
381
- return num >= filterNum;
382
- case '<':
383
- return num < filterNum;
384
- case '<=':
385
- return num <= filterNum;
386
- default:
387
- return true;
388
- }
389
- }
390
- /**
391
- * Compare date range
392
- */
393
- function compareDateRange(value, filter) {
394
- if (!value)
395
- return false;
396
- const date = new Date(value);
397
- if (isNaN(date.getTime()))
398
- return false;
399
- if (filter.diffFlag && filter.startDate && filter.endDate) {
400
- const start = new Date(filter.startDate);
401
- const end = new Date(filter.endDate);
402
- return date >= start && date <= end;
403
- }
404
- if (filter.startDate) {
405
- const start = new Date(filter.startDate);
406
- switch (filter.comparator) {
407
- case '=':
408
- return date.toDateString() === start.toDateString();
409
- case '>=':
410
- return date >= start;
411
- case '<':
412
- return date < start;
413
- default:
414
- return date >= start;
415
- }
416
- }
417
- return true;
418
- }
419
- /**
420
- * Export data to CSV
421
- */
422
- export function exportToCSV(data, columns, fileName) {
423
- const exportColumns = columns.filter((c) => c.csvExport !== false);
424
- // Header row
425
- const header = exportColumns.map((c) => `"${c.text}"`).join(',');
426
- // Data rows
427
- const rows = data.map((row, rowIndex) => {
428
- return exportColumns
429
- .map((col) => {
430
- const value = col.csvFormatter
431
- ? col.csvFormatter(getNestedValue(row, col.dataField), row, rowIndex)
432
- : getNestedValue(row, col.dataField);
433
- if (value === null || value === undefined)
434
- return '""';
435
- if (typeof value === 'string')
436
- return `"${value.replace(/"/g, '""')}"`;
437
- if (typeof value === 'object')
438
- return `"${JSON.stringify(value).replace(/"/g, '""')}"`;
439
- return `"${value}"`;
440
- })
441
- .join(',');
442
- });
443
- const csv = [header, ...rows].join('\n');
444
- const blob = new Blob([csv], { type: 'text/csv;charset=utf-8;' });
445
- const url = URL.createObjectURL(blob);
446
- const link = document.createElement('a');
447
- link.href = url;
448
- link.download = `${fileName}_${new Date().toISOString().slice(0, 10)}.csv`;
449
- link.click();
450
- URL.revokeObjectURL(url);
451
- }
452
- /**
453
- * Dynamically load ExcelJS from CDN (no bundle impact)
454
- */
455
- async function loadExcelJS() {
456
- // Check if already loaded
457
- if (window.ExcelJS) {
458
- return window.ExcelJS;
459
- }
460
- return new Promise((resolve, reject) => {
461
- const script = document.createElement('script');
462
- script.src =
463
- 'https://cdn.jsdelivr.net/npm/exceljs@4.4.0/dist/exceljs.min.js';
464
- script.async = true;
465
- script.onload = () => resolve(window.ExcelJS);
466
- script.onerror = () => reject(new Error('Failed to load ExcelJS from CDN'));
467
- document.head.appendChild(script);
468
- });
469
- }
470
- /**
471
- * Export data to Excel (.xlsx) - loads ExcelJS dynamically from CDN
472
- */
473
- export async function exportToExcel(data, columns, fileName, options) {
474
- try {
475
- const ExcelJS = await loadExcelJS();
476
- const workbook = new ExcelJS.Workbook();
477
- const worksheet = workbook.addWorksheet(options?.sheetName || 'Sheet1');
478
- const exportColumns = columns.filter((c) => c.csvExport !== false);
479
- // Set up columns with headers
480
- worksheet.columns = exportColumns.map((col) => ({
481
- header: col.text,
482
- key: col.dataField,
483
- width: Math.max(col.text.length + 5, 15),
484
- }));
485
- // Style header row
486
- const headerRow = worksheet.getRow(1);
487
- headerRow.font = {
488
- bold: options?.headerStyle?.font?.bold ?? true,
489
- size: options?.headerStyle?.font?.size ?? 12,
490
- };
491
- if (options?.headerStyle?.fill?.color) {
492
- headerRow.fill = {
493
- type: 'pattern',
494
- pattern: 'solid',
495
- fgColor: { argb: options.headerStyle.fill.color.replace('#', '') },
496
- };
497
- }
498
- headerRow.commit();
499
- // Add data rows
500
- data.forEach((row, rowIndex) => {
501
- const rowData = {};
502
- exportColumns.forEach((col) => {
503
- const value = col.csvFormatter
504
- ? col.csvFormatter(getNestedValue(row, col.dataField), row, rowIndex)
505
- : getNestedValue(row, col.dataField);
506
- if (value === null || value === undefined) {
507
- rowData[col.dataField] = '';
508
- }
509
- else if (typeof value === 'object') {
510
- rowData[col.dataField] = JSON.stringify(value);
511
- }
512
- else {
513
- rowData[col.dataField] = value;
514
- }
515
- });
516
- worksheet.addRow(rowData);
517
- });
518
- // Generate and download
519
- const buffer = await workbook.xlsx.writeBuffer();
520
- const blob = new Blob([buffer], {
521
- type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
522
- });
523
- const url = URL.createObjectURL(blob);
524
- const link = document.createElement('a');
525
- link.href = url;
526
- link.download = `${fileName}_${new Date().toISOString().slice(0, 10)}.xlsx`;
527
- link.click();
528
- URL.revokeObjectURL(url);
529
- }
530
- catch (error) {
531
- console.error('Excel export failed:', error);
532
- // Fallback to CSV if Excel export fails
533
- console.warn('Falling back to CSV export');
534
- exportToCSV(data, columns, fileName);
535
- }
536
- }
1
+ "use strict";import{useState as g,useCallback as S,useMemo as D,useEffect as R}from"react";export function useTableDebounce(r,e){const[s,t]=g(r);return R(()=>{const a=setTimeout(()=>{t(r)},e);return()=>clearTimeout(a)},[r,e]),s}export function useSortState(r,e,s=!1){const[t,a]=g(r||{field:"",order:null}),i=e??t,o=S((n,l)=>{let c;i.field!==n||l===null?c="asc":l==="asc"?c="desc":c=null;const u={field:n,order:c};return a(u),u},[i.field]);return{sort:i,handleSort:o,setSort:a}}export function useFilterState(r,e){const[s,t]=g(r||{}),a=e??s,i=S((n,l)=>{t(c=>{if(l==null||l===""){const{[n]:u,...x}=c;return x}return{...c,[n]:l}})},[]),o=S(()=>{t({})},[]);return{filters:a,setFilter:i,clearFilters:o,setFilters:t}}export function usePaginationState(r=0,e=10,s=0){const[t,a]=g(r),[i,o]=g(e),n=Math.ceil(s/i)||1,l=S(w=>{const d=Math.max(0,Math.min(w,n-1));a(d)},[n]),c=S(()=>{l(t+1)},[t,l]),u=S(()=>{l(t-1)},[t,l]),x=S(()=>{l(0)},[l]),m=S(()=>{l(n-1)},[n,l]),f=S(w=>{o(w),a(0)},[]);return{page:t,pageSize:i,totalPages:n,goToPage:l,goToNextPage:c,goToPrevPage:u,goToFirstPage:x,goToLastPage:m,changePageSize:f,setPage:a,setPageSize:o}}export function useRowSelection(r,e="_id",s="none",t,a){const[i,o]=g(new Set),n=t?new Set(t):i,l=S(w=>n.has(w),[n]),c=S(w=>{const d=w[e];if(a?.(w)?.disabled)return;if(s==="single")return o(new Set([d])),{selectedKeys:[d],selectedRows:[w]};o(b=>{const E=new Set(b);return E.has(d)?E.delete(d):E.add(d),E});const h=n.has(d)?Array.from(n).filter(b=>b!==d):[...Array.from(n),d];return{selectedKeys:h,selectedRows:r.filter(b=>h.includes(b[e]))}},[r,e,s,n,a]),u=S(w=>{if(w){const d=r.filter(p=>!a?.(p)?.disabled).map(p=>p[e]);return o(new Set(d)),{selectedKeys:d,selectedRows:r.filter(p=>d.includes(p[e]))}}else return o(new Set),{selectedKeys:[],selectedRows:[]}},[r,e,a]),x=D(()=>r.length===0?!1:r.filter(d=>!a?.(d)?.disabled).every(d=>n.has(d[e])),[r,n,e,a]),m=D(()=>{if(r.length===0)return!1;const w=r.filter(p=>!a?.(p)?.disabled),d=w.filter(p=>n.has(p[e])).length;return d>0&&d<w.length},[r,n,e,a]),f=S(()=>{o(new Set)},[]);return{selectedKeys:n,isSelected:l,toggleRow:c,toggleAll:u,isAllSelected:x,isIndeterminate:m,clearSelection:f,setSelected:o}}export function useRowExpansion(r="_id",e,s,t=!1){const[a,i]=g(new Set(e||[])),o=s?new Set(s):a,n=S(c=>o.has(c),[o]),l=S(c=>{const u=c[r];return i(m=>{const f=t?new Set:new Set(m);return m.has(u)?f.delete(u):f.add(u),f}),{expandedKeys:o.has(u)?Array.from(o).filter(m=>m!==u):t?[u]:[...Array.from(o),u],expanded:!o.has(u),row:c}},[r,o,t]);return{expandedKeys:o,isExpanded:n,toggleExpand:l,setExpanded:i}}export function useColumnVisibility(r,e){const[s,t]=g(()=>{if(e&&typeof window<"u"){const n=localStorage.getItem(`table_columns_${e}`);if(n)try{return new Set(JSON.parse(n))}catch{}}return new Set(r.filter(n=>n.hidden).map(n=>n.dataField))}),a=D(()=>r.filter(n=>!s.has(n.dataField)),[r,s]),i=S(n=>{t(l=>{const c=new Set(l);return c.has(n)?c.delete(n):c.add(n),e&&typeof window<"u"&&localStorage.setItem(`table_columns_${e}`,JSON.stringify(Array.from(c))),c})},[e]),o=S(()=>{t(new Set),e&&typeof window<"u"&&localStorage.removeItem(`table_columns_${e}`)},[e]);return{hiddenColumns:s,visibleColumns:a,toggleColumn:i,showAllColumns:o,isColumnHidden:n=>s.has(n)}}export function sortData(r,e,s){if(!e.field||!e.order)return r;const t=s.find(i=>i.dataField===e.field);return t?[...r].sort((i,o)=>{const n=getNestedValue(i,e.field),l=getNestedValue(o,e.field);if(t.sortFunc)return t.sortFunc(n,l,e.order,i,o);if(n===l)return 0;if(n==null)return 1;if(l==null)return-1;const c=typeof n=="string"?n.localeCompare(l):n<l?-1:1;return e.order==="asc"?c:-c}):r}export function filterData(r,e,s,t){let a=r;for(const[i,o]of Object.entries(e))o==null||o===""||!s.find(l=>l.dataField===i)||(a=a.filter(l=>{const c=getNestedValue(l,i);return typeof o=="object"&&o!==null?"number"in o&&"comparator"in o?y(c,o.number,o.comparator):"startDate"in o?F(c,o):!0:c==null?!1:String(c).toLowerCase().includes(String(o).toLowerCase())}));if(t){const i=t.toLowerCase();a=a.filter(o=>s.some(n=>{const l=getNestedValue(o,n.dataField);return l==null?!1:String(l).toLowerCase().includes(i)}))}return a}export function paginateData(r,e,s){const t=e*s;return r.slice(t,t+s)}export function getNestedValue(r,e){return e.split(".").reduce((s,t)=>s?.[t],r)}function y(r,e,s){const t=parseFloat(r),a=parseFloat(e);if(isNaN(t)||isNaN(a))return!1;switch(s){case"=":return t===a;case"!=":return t!==a;case">":return t>a;case">=":return t>=a;case"<":return t<a;case"<=":return t<=a;default:return!0}}function F(r,e){if(!r)return!1;const s=new Date(r);if(isNaN(s.getTime()))return!1;if(e.diffFlag&&e.startDate&&e.endDate){const t=new Date(e.startDate),a=new Date(e.endDate);return s>=t&&s<=a}if(e.startDate){const t=new Date(e.startDate);switch(e.comparator){case"=":return s.toDateString()===t.toDateString();case">=":return s>=t;case"<":return s<t;default:return s>=t}}return!0}export function exportToCSV(r,e,s){const t=e.filter(u=>u.csvExport!==!1),a=t.map(u=>`"${u.text}"`).join(","),i=r.map((u,x)=>t.map(m=>{const f=m.csvFormatter?m.csvFormatter(getNestedValue(u,m.dataField),u,x):getNestedValue(u,m.dataField);return f==null?'""':typeof f=="string"?`"${f.replace(/"/g,'""')}"`:typeof f=="object"?`"${JSON.stringify(f).replace(/"/g,'""')}"`:`"${f}"`}).join(",")),o=[a,...i].join(`
2
+ `),n=new Blob([o],{type:"text/csv;charset=utf-8;"}),l=URL.createObjectURL(n),c=document.createElement("a");c.href=l,c.download=`${s}_${new Date().toISOString().slice(0,10)}.csv`,c.click(),URL.revokeObjectURL(l)}async function j(){return window.ExcelJS?window.ExcelJS:new Promise((r,e)=>{const s=document.createElement("script");s.src="https://cdn.jsdelivr.net/npm/exceljs@4.4.0/dist/exceljs.min.js",s.async=!0,s.onload=()=>r(window.ExcelJS),s.onerror=()=>e(new Error("Failed to load ExcelJS from CDN")),document.head.appendChild(s)})}export async function exportToExcel(r,e,s,t){try{const a=await j(),i=new a.Workbook,o=i.addWorksheet(t?.sheetName||"Sheet1"),n=e.filter(f=>f.csvExport!==!1);o.columns=n.map(f=>({header:f.text,key:f.dataField,width:Math.max(f.text.length+5,15)}));const l=o.getRow(1);l.font={bold:t?.headerStyle?.font?.bold??!0,size:t?.headerStyle?.font?.size??12},t?.headerStyle?.fill?.color&&(l.fill={type:"pattern",pattern:"solid",fgColor:{argb:t.headerStyle.fill.color.replace("#","")}}),l.commit(),r.forEach((f,w)=>{const d={};n.forEach(p=>{const h=p.csvFormatter?p.csvFormatter(getNestedValue(f,p.dataField),f,w):getNestedValue(f,p.dataField);h==null?d[p.dataField]="":typeof h=="object"?d[p.dataField]=JSON.stringify(h):d[p.dataField]=h}),o.addRow(d)});const c=await i.xlsx.writeBuffer(),u=new Blob([c],{type:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"}),x=URL.createObjectURL(u),m=document.createElement("a");m.href=x,m.download=`${s}_${new Date().toISOString().slice(0,10)}.xlsx`,m.click(),URL.revokeObjectURL(x)}catch(a){console.error("Excel export failed:",a),console.warn("Falling back to CSV export"),exportToCSV(r,e,s)}}
@@ -1,6 +1 @@
1
- export { Table, default } from './Table';
2
- export * from './types';
3
- export { useSortState, useFilterState, usePaginationState, useRowSelection, useRowExpansion, useColumnVisibility, useTableDebounce, sortData, filterData, paginateData, getNestedValue, exportToCSV, exportToExcel, } from './hooks';
4
- export { TextFilter, NumberFilter, DateFilter, SelectFilter, getFilterComponent, } from './filters';
5
- export { useColumnResize, getColumnStyle, ResizeHandle, ResizeLine, ResizableHeaderCell, } from './columnResize';
6
- export { useColumnReorder, DragGhost, DropIndicator, DraggableHeader, ColumnReorderGhost, ColumnDropIndicator, getReorderableHeaderProps, } from './columnReorder';
1
+ "use strict";export{Table,default}from"./Table";export*from"./types";export{useSortState,useFilterState,usePaginationState,useRowSelection,useRowExpansion,useColumnVisibility,useTableDebounce,sortData,filterData,paginateData,getNestedValue,exportToCSV,exportToExcel}from"./hooks";export{TextFilter,NumberFilter,DateFilter,SelectFilter,getFilterComponent}from"./filters";export{useColumnResize,getColumnStyle,ResizeHandle,ResizeLine,ResizableHeaderCell}from"./columnResize";export{useColumnReorder,DragGhost,DropIndicator,DraggableHeader,ColumnReorderGhost,ColumnDropIndicator,getReorderableHeaderProps}from"./columnReorder";
@@ -1 +1 @@
1
- export {};
1
+ "use strict";export{};
@@ -1,22 +1 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import React, { useState } from 'react';
3
- import s from '../../tc.module.css';
4
- import { cn } from '../../utils';
5
- export const Tab = ({ title, children, className, style }) => {
6
- return (_jsx("div", { className: cn(s.flex, className), style: style, children: children }, title));
7
- };
8
- export const Tabs = ({ options, onSelect, children, classNames = {}, styles = {}, }) => {
9
- const [activeTab, setActiveTab] = useState(0);
10
- const [selected, setSelected] = useState(options[0].title);
11
- const tabs = React.Children.toArray(children).filter((child) => React.isValidElement(child) && child.type === Tab);
12
- return (_jsx(_Fragment, { children: _jsxs("div", { className: cn(s.flex, s['flex-col'], s['w-full'], classNames.container), style: styles.container, children: [_jsx("div", { className: cn(s.flex, s['border-b'], classNames.tabsHeader), style: styles.tabsHeader, children: options?.map((tab, index) => (_jsx("button", { type: "button", className: cn(s['py-2'], s['px-4'], s['mr-1'], s['border-none'], s['rounded-t-md'], s['shadow-inner'], s['cursor-pointer'], activeTab === index && s['bg-blue-500'], activeTab === index && s['border-none'], activeTab === index && s['text-white'], classNames.tabButton, activeTab === index && classNames.activeTabButton), style: {
13
- ...styles.tabButton,
14
- ...(activeTab === index ? styles.activeTabButton : {}),
15
- }, onClick: () => {
16
- setSelected(tab?.title);
17
- onSelect && onSelect(tab, index);
18
- !tab.inActive && setActiveTab(index);
19
- }, disabled: tab.inActive, children: tab.title }, index))) }), _jsx("div", { className: cn(s['p-2'], s.border, s['border-solid'], s['border-slate-600'], s['rounded-b-md'], classNames.contentContainer), style: styles.contentContainer, children: options[activeTab]?.content
20
- ? options[activeTab]?.content
21
- : tabs[options?.findIndex((item) => item.title === selected)] })] }) }));
22
- };
1
+ "use strict";import{jsx as i,jsxs as h,Fragment as x}from"react/jsx-runtime";import s,{useState as m}from"react";import t from"../../tc.module.css";import{cn as l}from"../../utils";export const Tab=({title:n,children:d,className:b,style:o})=>i("div",{className:l(t.flex,b),style:o,children:d},n),Tabs=({options:n,onSelect:d,children:b,classNames:o={},styles:c={}})=>{const[a,u]=m(0),[f,v]=m(n[0].title),p=s.Children.toArray(b).filter(e=>s.isValidElement(e)&&e.type===Tab);return i(x,{children:h("div",{className:l(t.flex,t["flex-col"],t["w-full"],o.container),style:c.container,children:[i("div",{className:l(t.flex,t["border-b"],o.tabsHeader),style:c.tabsHeader,children:n?.map((e,r)=>i("button",{type:"button",className:l(t["py-2"],t["px-4"],t["mr-1"],t["border-none"],t["rounded-t-md"],t["shadow-inner"],t["cursor-pointer"],a===r&&t["bg-blue-500"],a===r&&t["border-none"],a===r&&t["text-white"],o.tabButton,a===r&&o.activeTabButton),style:{...c.tabButton,...a===r?c.activeTabButton:{}},onClick:()=>{v(e?.title),d&&d(e,r),!e.inActive&&u(r)},disabled:e.inActive,children:e.title},r))}),i("div",{className:l(t["p-2"],t.border,t["border-solid"],t["border-slate-600"],t["rounded-b-md"],o.contentContainer),style:c.contentContainer,children:n[a]?.content?n[a]?.content:p[n?.findIndex(e=>e.title===f)]})]})})};