react-restyle-components 0.4.39 → 0.4.41

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 (243) hide show
  1. package/lib/index.js +3 -1
  2. package/lib/src/core-components/index.js +1 -1
  3. package/lib/src/core-components/src/components/Accordion/AccordionSection/Accordion.js +15 -1
  4. package/lib/src/core-components/src/components/Accordion/AccordionSection/AccordionContext.js +6 -1
  5. package/lib/src/core-components/src/components/Accordion/AccordionSection/AccordionSection.js +39 -1
  6. package/lib/src/core-components/src/components/Accordion/AccordionSection/Header.js +39 -1
  7. package/lib/src/core-components/src/components/Accordion/AccordionSection/elements.js +94 -57
  8. package/lib/src/core-components/src/components/Accordion/AccordionSection/hooks/useCurrentAccordionIndex.js +13 -1
  9. package/lib/src/core-components/src/components/Accordion/AccordionSection/index.js +3 -1
  10. package/lib/src/core-components/src/components/Accordion/AccordionSection/types.js +9 -1
  11. package/lib/src/core-components/src/components/Accordion/Collapsible/Collapsible2.component.js +249 -1
  12. package/lib/src/core-components/src/components/Action/types.js +8 -1
  13. package/lib/src/core-components/src/components/AlertBanner/AlertBanner.js +45 -1
  14. package/lib/src/core-components/src/components/AlertBanner/elements.js +120 -45
  15. package/lib/src/core-components/src/components/AlertBanner/index.js +2 -1
  16. package/lib/src/core-components/src/components/AlertBanner/types.js +10 -1
  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 +334 -1
  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 +229 -1
  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 +174 -1
  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 +129 -2
  21. package/lib/src/core-components/src/components/AutoComplete/auto-complete-filter-single-select/auto-complete-filter-single-select.component.js +55 -1
  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 +308 -2
  23. package/lib/src/core-components/src/components/AutoComplete/auto-complete-group-by/auto-complete-group-by.component.js +115 -1
  24. package/lib/src/core-components/src/components/AutoComplete/autocomplete/autocomplete.js +442 -2
  25. package/lib/src/core-components/src/components/AutoComplete/index.js +8 -1
  26. package/lib/src/core-components/src/components/Avatar/Avatar.js +148 -14
  27. package/lib/src/core-components/src/components/Badge/Badge.js +25 -2
  28. package/lib/src/core-components/src/components/Badge/InnerBadge/Inline.js +25 -1
  29. package/lib/src/core-components/src/components/Badge/InnerBadge/InnerBadge.js +25 -1
  30. package/lib/src/core-components/src/components/Badge/InnerBadge/elements.js +78 -32
  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 +5 -1
  34. package/lib/src/core-components/src/components/Breadcrumb/Breadcrumb.js +83 -1
  35. package/lib/src/core-components/src/components/Breadcrumb/elements.js +166 -94
  36. package/lib/src/core-components/src/components/Breadcrumb/index.js +3 -1
  37. package/lib/src/core-components/src/components/Breadcrumb/types.js +3 -1
  38. package/lib/src/core-components/src/components/Button/button.component.js +18 -1
  39. package/lib/src/core-components/src/components/Button/buttonGroup/buttonGroup.component.js +4 -1
  40. package/lib/src/core-components/src/components/Button/index.js +2 -1
  41. package/lib/src/core-components/src/components/Button/types.js +1 -1
  42. package/lib/src/core-components/src/components/Chip/Chip.js +64 -1
  43. package/lib/src/core-components/src/components/Chip/elements.js +148 -48
  44. package/lib/src/core-components/src/components/Chip/index.js +2 -1
  45. package/lib/src/core-components/src/components/Chip/types.js +4 -1
  46. package/lib/src/core-components/src/components/Divider/Divider.js +25 -1
  47. package/lib/src/core-components/src/components/Divider/elements.js +68 -31
  48. package/lib/src/core-components/src/components/Divider/index.js +2 -1
  49. package/lib/src/core-components/src/components/Divider/types.js +4 -1
  50. package/lib/src/core-components/src/components/DynamicGrid/DynamicGrid.js +147 -1
  51. package/lib/src/core-components/src/components/DynamicGrid/GridContainer.js +24 -17
  52. package/lib/src/core-components/src/components/DynamicGrid/elements.js +162 -100
  53. package/lib/src/core-components/src/components/DynamicGrid/index.js +3 -1
  54. package/lib/src/core-components/src/components/DynamicGrid/types.js +28 -1
  55. package/lib/src/core-components/src/components/DynamicGrid/utils.js +193 -1
  56. package/lib/src/core-components/src/components/FormField/FormField.js +103 -1
  57. package/lib/src/core-components/src/components/FormField/components/CheckboxGroupInput.js +37 -1
  58. package/lib/src/core-components/src/components/FormField/components/CheckboxInput.js +8 -1
  59. package/lib/src/core-components/src/components/FormField/components/CssMultilineInput.js +192 -1
  60. package/lib/src/core-components/src/components/FormField/components/DatePickerInput.js +99 -1
  61. package/lib/src/core-components/src/components/FormField/components/DropdownInput.js +70 -1
  62. package/lib/src/core-components/src/components/FormField/components/OtpInput.js +81 -1
  63. package/lib/src/core-components/src/components/FormField/components/PasswordInput.js +40 -1
  64. package/lib/src/core-components/src/components/FormField/components/PinInput.js +75 -1
  65. package/lib/src/core-components/src/components/FormField/components/RadioInput.js +54 -1
  66. package/lib/src/core-components/src/components/FormField/components/TextDropdownInput.js +94 -1
  67. package/lib/src/core-components/src/components/FormField/components/ToggleInput.js +36 -1
  68. package/lib/src/core-components/src/components/FormField/components/index.js +11 -1
  69. package/lib/src/core-components/src/components/FormField/css-properties.js +161 -1
  70. package/lib/src/core-components/src/components/FormField/index.js +2 -1
  71. package/lib/src/core-components/src/components/Icon/Icon.js +79 -1
  72. package/lib/src/core-components/src/components/Icon/index.js +2 -1
  73. package/lib/src/core-components/src/components/Icon/types.js +9 -1
  74. package/lib/src/core-components/src/components/Loader/loader.component.js +215 -2
  75. package/lib/src/core-components/src/components/Masonry/Masonry.js +73 -1
  76. package/lib/src/core-components/src/components/Masonry/elements.js +46 -29
  77. package/lib/src/core-components/src/components/Masonry/hooks.js +100 -1
  78. package/lib/src/core-components/src/components/Masonry/index.js +3 -1
  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 +116 -1
  81. package/lib/src/core-components/src/components/Modal/index.js +2 -1
  82. package/lib/src/core-components/src/components/Modal/modal-confirm/modal-confirm.component.js +147 -1
  83. package/lib/src/core-components/src/components/Picker/color-picker/color-picker.component.js +12 -1
  84. package/lib/src/core-components/src/components/Picker/color-picker-modal/color-picker-modal.component.js +40 -1
  85. package/lib/src/core-components/src/components/Picker/index.js +2 -1
  86. package/lib/src/core-components/src/components/Selection/index.js +4 -1
  87. package/lib/src/core-components/src/components/Selection/multi-select/multi-select.component.js +49 -1
  88. package/lib/src/core-components/src/components/Selection/multi-select-with-field/multi-select-with-field.component.js +58 -1
  89. package/lib/src/core-components/src/components/Selection/multi-selection-dropdown/multi-selection-dropdown.component.js +43 -1
  90. package/lib/src/core-components/src/components/Selection/single-select/single-select.component.js +87 -1
  91. package/lib/src/core-components/src/components/Skeleton/Skeleton.js +51 -1
  92. package/lib/src/core-components/src/components/Skeleton/elements.js +143 -54
  93. package/lib/src/core-components/src/components/Skeleton/index.js +2 -1
  94. package/lib/src/core-components/src/components/Skeleton/types.js +4 -1
  95. package/lib/src/core-components/src/components/SpeedDial/SpeedDial.js +128 -1
  96. package/lib/src/core-components/src/components/SpeedDial/elements.js +132 -62
  97. package/lib/src/core-components/src/components/SpeedDial/index.js +2 -1
  98. package/lib/src/core-components/src/components/SpeedDial/types.js +3 -1
  99. package/lib/src/core-components/src/components/Stepper2/stepper.component.js +139 -1
  100. package/lib/src/core-components/src/components/Switch/Switch.js +26 -1
  101. package/lib/src/core-components/src/components/Switch/elements.js +103 -34
  102. package/lib/src/core-components/src/components/Switch/index.js +2 -1
  103. package/lib/src/core-components/src/components/Switch/types.js +3 -1
  104. package/lib/src/core-components/src/components/Table/Table.js +1357 -1
  105. package/lib/src/core-components/src/components/Table/columnReorder.d.ts +128 -0
  106. package/lib/src/core-components/src/components/Table/columnReorder.js +530 -0
  107. package/lib/src/core-components/src/components/Table/columnResize.d.ts +99 -0
  108. package/lib/src/core-components/src/components/Table/columnResize.js +399 -0
  109. package/lib/src/core-components/src/components/Table/elements.d.ts +9 -1
  110. package/lib/src/core-components/src/components/Table/elements.js +324 -155
  111. package/lib/src/core-components/src/components/Table/filters.js +555 -30
  112. package/lib/src/core-components/src/components/Table/hooks.js +536 -2
  113. package/lib/src/core-components/src/components/Table/index.d.ts +4 -0
  114. package/lib/src/core-components/src/components/Table/index.js +6 -1
  115. package/lib/src/core-components/src/components/Table/types.d.ts +58 -0
  116. package/lib/src/core-components/src/components/Table/types.js +1 -1
  117. package/lib/src/core-components/src/components/Tabs/tabs.component.js +22 -1
  118. package/lib/src/core-components/src/components/Tags1/Tags.component.js +118 -1
  119. package/lib/src/core-components/src/components/Tags1/types.js +20 -1
  120. package/lib/src/core-components/src/components/Timer1/timer.component.js +76 -1
  121. package/lib/src/core-components/src/components/Toast/Toast.js +50 -1
  122. package/lib/src/core-components/src/components/Toast/elements.js +122 -41
  123. package/lib/src/core-components/src/components/Toast/index.js +2 -1
  124. package/lib/src/core-components/src/components/Toast/types.js +9 -1
  125. package/lib/src/core-components/src/components/Tooltip/Tooltip.js +200 -1
  126. package/lib/src/core-components/src/components/Tooltip/elements.js +117 -55
  127. package/lib/src/core-components/src/components/Tooltip/index.js +2 -1
  128. package/lib/src/core-components/src/components/Tooltip/types.js +17 -1
  129. package/lib/src/core-components/src/components/Tooltip/utils.js +140 -1
  130. package/lib/src/core-components/src/components/TreeSelect/TreeSelect.js +303 -1
  131. package/lib/src/core-components/src/components/TreeSelect/elements.js +216 -117
  132. package/lib/src/core-components/src/components/TreeSelect/hooks.js +252 -1
  133. package/lib/src/core-components/src/components/TreeSelect/index.js +3 -1
  134. package/lib/src/core-components/src/components/TreeSelect/types.js +1 -1
  135. package/lib/src/core-components/src/components/ag-grid/AgGrid.d.ts +11 -0
  136. package/lib/src/core-components/src/components/ag-grid/AgGrid.js +733 -0
  137. package/lib/src/core-components/src/components/ag-grid/elements.d.ts +246 -0
  138. package/lib/src/core-components/src/components/ag-grid/elements.js +1156 -0
  139. package/lib/src/core-components/src/components/ag-grid/hooks.d.ts +196 -0
  140. package/lib/src/core-components/src/components/ag-grid/hooks.js +943 -0
  141. package/lib/src/core-components/src/components/ag-grid/index.d.ts +9 -0
  142. package/lib/src/core-components/src/components/ag-grid/index.js +13 -0
  143. package/lib/src/core-components/src/components/ag-grid/types.d.ts +1367 -0
  144. package/lib/src/core-components/src/components/ag-grid/types.js +6 -0
  145. package/lib/src/core-components/src/components/index.d.ts +1 -0
  146. package/lib/src/core-components/src/components/index.js +31 -1
  147. package/lib/src/core-components/src/components/pdf/pdf-images.components.js +7 -1
  148. package/lib/src/core-components/src/components/pdf/pdf-table.components.js +48 -5
  149. package/lib/src/core-components/src/components/pdf/pdf-typography.components.js +70 -1
  150. package/lib/src/core-components/src/components/pdf/pdf-wrapped-view.components.js +50 -1
  151. package/lib/src/core-components/src/core-components/Avatar.js +33 -4
  152. package/lib/src/core-components/src/core-components/CoreButton/CoreButton.js +10 -1
  153. package/lib/src/core-components/src/core-components/CoreButton/elements.js +176 -67
  154. package/lib/src/core-components/src/core-components/CoreButton/index.js +3 -1
  155. package/lib/src/core-components/src/core-components/CoreButton/types.js +6 -1
  156. package/lib/src/core-components/src/core-components/CoreButton/utils.js +12 -1
  157. package/lib/src/core-components/src/core-components/Divider/Divider.js +19 -4
  158. package/lib/src/core-components/src/core-components/Divider/index.js +1 -1
  159. package/lib/src/core-components/src/core-components/SelectionCardStrip/index.js +1 -1
  160. package/lib/src/core-components/src/core-components/SelectionCardStrip/selectionCardStrip.js +33 -10
  161. package/lib/src/core-components/src/core-components/StateLayer.js +5 -3
  162. package/lib/src/core-components/src/core-components/ToggleCore/elements.js +50 -25
  163. package/lib/src/core-components/src/core-components/ToggleCore/index.js +2 -1
  164. package/lib/src/core-components/src/core-components/ToggleCore/toggleCore.js +14 -1
  165. package/lib/src/core-components/src/core-components/atoms/Input/Input.js +22 -1
  166. package/lib/src/core-components/src/core-components/atoms/Label/Label.js +21 -1
  167. package/lib/src/core-components/src/core-components/atoms/Textarea/Textarea.js +19 -1
  168. package/lib/src/core-components/src/core-components/index.js +3 -1
  169. package/lib/src/core-components/src/helpers/constants.js +11 -1
  170. package/lib/src/core-components/src/hooks/index.js +1 -1
  171. package/lib/src/core-components/src/hooks/outside.hook.js +28 -1
  172. package/lib/src/core-components/src/index.js +12 -1
  173. package/lib/src/core-components/src/tc.global.css +16 -3
  174. package/lib/src/core-components/src/tc.module.css +2 -2
  175. package/lib/src/core-components/src/utils/abstracts/breakpoints/index.js +28 -1
  176. package/lib/src/core-components/src/utils/abstracts/colors/index.js +49 -1
  177. package/lib/src/core-components/src/utils/abstracts/index.js +5 -1
  178. package/lib/src/core-components/src/utils/abstracts/space/index.js +26 -1
  179. package/lib/src/core-components/src/utils/abstracts/theme/ThemeBoundary.js +8 -1
  180. package/lib/src/core-components/src/utils/abstracts/theme/default-themes.js +30 -1
  181. package/lib/src/core-components/src/utils/abstracts/theme/index.js +3 -1
  182. package/lib/src/core-components/src/utils/abstracts/theme/theme.js +30 -1
  183. package/lib/src/core-components/src/utils/abstracts/theme/types.js +1 -1
  184. package/lib/src/core-components/src/utils/abstracts/theme/useTheme.js +17 -1
  185. package/lib/src/core-components/src/utils/abstracts/typography/index.js +25 -1
  186. package/lib/src/core-components/src/utils/context/DefaultsProvider.js +8 -1
  187. package/lib/src/core-components/src/utils/context/InternalProvider.js +24 -1
  188. package/lib/src/core-components/src/utils/context/index.js +2 -1
  189. package/lib/src/core-components/src/utils/designTokens.js +125 -1
  190. package/lib/src/core-components/src/utils/helpers/attachSubComponents.js +23 -1
  191. package/lib/src/core-components/src/utils/helpers/flattenChildren.js +11 -1
  192. package/lib/src/core-components/src/utils/helpers/getChildByType.js +3 -1
  193. package/lib/src/core-components/src/utils/helpers/index.js +5 -1
  194. package/lib/src/core-components/src/utils/helpers/isComponentType.js +16 -1
  195. package/lib/src/core-components/src/utils/helpers/separateChildrenByType.js +12 -1
  196. package/lib/src/core-components/src/utils/hooks/index.js +18 -1
  197. package/lib/src/core-components/src/utils/hooks/useClickOutside.js +18 -1
  198. package/lib/src/core-components/src/utils/hooks/useCombinedRefs.js +17 -1
  199. package/lib/src/core-components/src/utils/hooks/useDebouncedCallback.js +12 -1
  200. package/lib/src/core-components/src/utils/hooks/useDebouncedValue.js +20 -1
  201. package/lib/src/core-components/src/utils/hooks/useDeprecation.js +40 -1
  202. package/lib/src/core-components/src/utils/hooks/useDeviceDetect.js +10 -1
  203. package/lib/src/core-components/src/utils/hooks/useDeviceForm.js +24 -1
  204. package/lib/src/core-components/src/utils/hooks/useDisableBodyScroll.js +16 -1
  205. package/lib/src/core-components/src/utils/hooks/useHoverState.js +36 -1
  206. package/lib/src/core-components/src/utils/hooks/useId.js +7 -1
  207. package/lib/src/core-components/src/utils/hooks/useIsBrowser.js +11 -1
  208. package/lib/src/core-components/src/utils/hooks/useMediaQuery.js +16 -1
  209. package/lib/src/core-components/src/utils/hooks/useOverflow.js +22 -1
  210. package/lib/src/core-components/src/utils/hooks/useSafeLayoutEffect.js +5 -1
  211. package/lib/src/core-components/src/utils/hooks/useScrollingUp.js +18 -1
  212. package/lib/src/core-components/src/utils/hooks/useTrapFocus.js +30 -1
  213. package/lib/src/core-components/src/utils/hooks/useWindowDimensions.js +23 -1
  214. package/lib/src/core-components/src/utils/index.js +9 -1
  215. package/lib/src/core-components/src/utils/stories/Wrappers.js +23 -8
  216. package/lib/src/core-components/src/utils/stories/cleanProps.js +5 -1
  217. package/lib/src/core-components/src/utils/stories/index.js +4 -1
  218. package/lib/src/core-components/src/utils/stories/sleep.js +4 -1
  219. package/lib/src/core-components/src/utils/stories/view-ports.js +50 -1
  220. package/lib/src/core-components/src/utils/styling/calcWidthOfColumns.js +5 -1
  221. package/lib/src/core-components/src/utils/styling/createGridContainer.js +12 -6
  222. package/lib/src/core-components/src/utils/styling/createTransition.js +7 -2
  223. package/lib/src/core-components/src/utils/styling/forwardProps.js +10 -1
  224. package/lib/src/core-components/src/utils/styling/index.js +5 -1
  225. package/lib/src/core-components/src/utils/styling/pxToRem.js +6 -1
  226. package/lib/src/core-components/src/utils/testing/getComputedStyle.js +3 -1
  227. package/lib/src/core-components/src/utils/testing/index.js +1 -1
  228. package/lib/src/core-components/src/utils/utility.util.js +14 -1
  229. package/lib/src/core-components/tailwind.config.js +233 -1
  230. package/lib/src/core-hooks/index.js +3 -1
  231. package/lib/src/core-hooks/src/useClickOutside/useClickOutside.hook.js +46 -1
  232. package/lib/src/core-hooks/src/useDebounce/useDebounce.hook.js +30 -1
  233. package/lib/src/core-hooks/src/usePreventEKey/usePreventEKey.hook.js +8 -1
  234. package/lib/src/core-utils/index.js +7 -1
  235. package/lib/src/core-utils/src/calculation/calculation.util.js +89 -1
  236. package/lib/src/core-utils/src/colors/color.util.js +15 -1
  237. package/lib/src/core-utils/src/convert/numberToWords/numToWords.util.js +145 -1
  238. package/lib/src/core-utils/src/convert/typography/camelCaseToTitleCase.util.js +5 -1
  239. package/lib/src/core-utils/src/form-helper/form-helper.util.js +82 -1
  240. package/lib/src/core-utils/src/index.js +7 -1
  241. package/lib/src/core-utils/src/utility/utility.util.js +12 -1
  242. package/lib/src/core-utils/src/uuid/uuid.util.js +8 -1
  243. package/package.json +1 -1
@@ -0,0 +1,99 @@
1
+ /**
2
+ * Column Resize Feature
3
+ *
4
+ * This file contains the column resizing functionality for the Table component.
5
+ * It can be easily enabled/disabled via props without affecting core table logic.
6
+ *
7
+ * Features:
8
+ * - Drag to resize columns
9
+ * - Min/Max width constraints
10
+ * - Double-click to auto-fit column width
11
+ * - Persist column widths (optional)
12
+ *
13
+ * Usage:
14
+ * <Table
15
+ * resizable={true}
16
+ * resizeConfig={{
17
+ * minWidth: 50,
18
+ * maxWidth: 500,
19
+ * onResize: (columnWidths) => console.log(columnWidths),
20
+ * }}
21
+ * />
22
+ */
23
+ import React from 'react';
24
+ import { TableColumn } from './types';
25
+ export interface ColumnResizeConfig {
26
+ /** Minimum column width in pixels (default: 50) */
27
+ minWidth?: number;
28
+ /** Maximum column width in pixels (default: 800) */
29
+ maxWidth?: number;
30
+ /** Enable double-click to auto-fit width (default: true) */
31
+ autoFit?: boolean;
32
+ /** Callback when column is resized */
33
+ onResize?: (columnWidths: Record<string, number>) => void;
34
+ /** Callback when resize starts */
35
+ onResizeStart?: (dataField: string, width: number) => void;
36
+ /** Callback when resize ends */
37
+ onResizeEnd?: (dataField: string, width: number) => void;
38
+ /** Initial column widths */
39
+ defaultWidths?: Record<string, number>;
40
+ /** Handle color */
41
+ handleColor?: string;
42
+ /** Handle hover color */
43
+ handleHoverColor?: string;
44
+ /** Handle width in pixels (default: 4) */
45
+ handleWidth?: number;
46
+ }
47
+ export interface UseColumnResizeProps<T> {
48
+ columns: TableColumn<T>[];
49
+ config?: ColumnResizeConfig;
50
+ enabled?: boolean;
51
+ tableId?: string;
52
+ }
53
+ export interface UseColumnResizeReturn {
54
+ columnWidths: Record<string, number>;
55
+ getResizeHandle: (dataField: string, headerRef: React.RefObject<HTMLElement>) => React.ReactNode;
56
+ resetWidths: () => void;
57
+ setColumnWidth: (dataField: string, width: number) => void;
58
+ isResizing: boolean;
59
+ resizingColumn: string | null;
60
+ }
61
+ export declare const ResizeHandle: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {
62
+ $isResizing: boolean;
63
+ $handleColor?: string | undefined;
64
+ $handleHoverColor?: string | undefined;
65
+ $handleWidth?: number | undefined;
66
+ }>> & string;
67
+ export declare const ResizeLine: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {
68
+ $left: number;
69
+ $visible: boolean;
70
+ $color?: string | undefined;
71
+ }>> & string;
72
+ export declare function useColumnResize<T>({ columns, config, enabled, tableId, }: UseColumnResizeProps<T>): UseColumnResizeReturn;
73
+ export declare function getColumnStyle<T>(column: TableColumn<T>, columnWidths: Record<string, number>, resizable: boolean, isResizing?: boolean): React.CSSProperties;
74
+ interface ResizableHeaderCellProps {
75
+ children: React.ReactNode;
76
+ dataField: string;
77
+ resizable: boolean;
78
+ getResizeHandle: (dataField: string, headerRef: React.RefObject<HTMLElement>) => React.ReactNode;
79
+ style?: React.CSSProperties;
80
+ className?: string;
81
+ }
82
+ export declare const ResizableHeaderCell: React.FC<ResizableHeaderCellProps>;
83
+ declare const _default: {
84
+ useColumnResize: typeof useColumnResize;
85
+ getColumnStyle: typeof getColumnStyle;
86
+ ResizeHandle: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {
87
+ $isResizing: boolean;
88
+ $handleColor?: string | undefined;
89
+ $handleHoverColor?: string | undefined;
90
+ $handleWidth?: number | undefined;
91
+ }>> & string;
92
+ ResizeLine: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {
93
+ $left: number;
94
+ $visible: boolean;
95
+ $color?: string | undefined;
96
+ }>> & string;
97
+ ResizableHeaderCell: React.FC<ResizableHeaderCellProps>;
98
+ };
99
+ export default _default;
@@ -0,0 +1,399 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * Column Resize Feature
4
+ *
5
+ * This file contains the column resizing functionality for the Table component.
6
+ * It can be easily enabled/disabled via props without affecting core table logic.
7
+ *
8
+ * Features:
9
+ * - Drag to resize columns
10
+ * - Min/Max width constraints
11
+ * - Double-click to auto-fit column width
12
+ * - Persist column widths (optional)
13
+ *
14
+ * Usage:
15
+ * <Table
16
+ * resizable={true}
17
+ * resizeConfig={{
18
+ * minWidth: 50,
19
+ * maxWidth: 500,
20
+ * onResize: (columnWidths) => console.log(columnWidths),
21
+ * }}
22
+ * />
23
+ */
24
+ import { useRef, useState, useCallback, useEffect, useMemo, } from 'react';
25
+ import { styled, css, keyframes } from 'styled-components';
26
+ // ============================================================================
27
+ // Animations
28
+ // ============================================================================
29
+ const pulseGlow = keyframes `
30
+ 0%, 100% {
31
+ box-shadow: 0 0 0 0 rgba(59, 130, 246, 0.4);
32
+ }
33
+ 50% {
34
+ box-shadow: 0 0 8px 2px rgba(59, 130, 246, 0.6);
35
+ }
36
+ `;
37
+ const slideIn = keyframes `
38
+ from {
39
+ transform: scaleY(0);
40
+ opacity: 0;
41
+ }
42
+ to {
43
+ transform: scaleY(1);
44
+ opacity: 1;
45
+ }
46
+ `;
47
+ const shimmer = keyframes `
48
+ 0% { background-position: -200% 0; }
49
+ 100% { background-position: 200% 0; }
50
+ `;
51
+ // ============================================================================
52
+ // Styled Components
53
+ // ============================================================================
54
+ export const ResizeHandle = styled.div `
55
+ position: absolute;
56
+ top: 0;
57
+ right: -2px;
58
+ width: ${({ $handleWidth }) => ($handleWidth || 8) + 4}px;
59
+ height: 100%;
60
+ cursor: col-resize;
61
+ background: transparent;
62
+ z-index: 10;
63
+ user-select: none;
64
+ touch-action: none;
65
+ display: flex;
66
+ align-items: center;
67
+ justify-content: center;
68
+
69
+ /* Visible handle bar */
70
+ &::after {
71
+ content: '';
72
+ position: absolute;
73
+ top: 20%;
74
+ width: 3px;
75
+ height: 60%;
76
+ background: ${({ $isResizing, $handleColor, $handleHoverColor }) => $isResizing
77
+ ? $handleHoverColor || '#3b82f6'
78
+ : $handleColor || 'rgba(255, 255, 255, 0.25)'};
79
+ border-radius: 2px;
80
+ transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
81
+ transform: scaleY(${({ $isResizing }) => ($isResizing ? 1 : 0.7)});
82
+ }
83
+
84
+ /* Hover effect - expand and glow */
85
+ &:hover::after {
86
+ background: ${({ $handleHoverColor }) => $handleHoverColor || '#3b82f6'};
87
+ transform: scaleY(1);
88
+ box-shadow: 0 0 8px rgba(59, 130, 246, 0.5);
89
+ }
90
+
91
+ /* Active/resizing state */
92
+ ${({ $isResizing }) => $isResizing &&
93
+ css `
94
+ &::after {
95
+ animation: ${pulseGlow} 1s ease-in-out infinite;
96
+ transform: scaleY(1.1);
97
+ }
98
+
99
+ &::before {
100
+ content: '';
101
+ position: fixed;
102
+ top: 0;
103
+ left: 0;
104
+ right: 0;
105
+ bottom: 0;
106
+ cursor: col-resize;
107
+ z-index: 9999;
108
+ background: rgba(59, 130, 246, 0.02);
109
+ }
110
+ `}
111
+
112
+ /* Grip dots pattern */
113
+ &::before {
114
+ content: '';
115
+ position: absolute;
116
+ width: 4px;
117
+ height: 12px;
118
+ background-image: radial-gradient(
119
+ circle,
120
+ rgba(255, 255, 255, 0.4) 1px,
121
+ transparent 1px
122
+ );
123
+ background-size: 4px 4px;
124
+ opacity: 0;
125
+ transition: opacity 0.2s ease;
126
+ }
127
+
128
+ &:hover::before {
129
+ opacity: 1;
130
+ }
131
+ `;
132
+ export const ResizeLine = styled.div `
133
+ position: fixed;
134
+ top: 0;
135
+ left: ${({ $left }) => $left}px;
136
+ width: 2px;
137
+ height: 100vh;
138
+ pointer-events: none;
139
+ z-index: 10000;
140
+ opacity: ${({ $visible }) => ($visible ? 1 : 0)};
141
+ transition: opacity 0.15s ease, transform 0.1s ease;
142
+ transform: ${({ $visible }) => ($visible ? 'scaleX(1)' : 'scaleX(0)')};
143
+ transform-origin: center;
144
+
145
+ /* Gradient line with glow effect */
146
+ background: linear-gradient(
147
+ to bottom,
148
+ transparent 0%,
149
+ ${({ $color }) => $color || '#3b82f6'} 5%,
150
+ ${({ $color }) => $color || '#3b82f6'} 95%,
151
+ transparent 100%
152
+ );
153
+ box-shadow:
154
+ 0 0 10px ${({ $color }) => $color || '#3b82f6'},
155
+ 0 0 20px ${({ $color }) => ($color || '#3b82f6') + '80'},
156
+ 0 0 30px ${({ $color }) => ($color || '#3b82f6') + '40'};
157
+
158
+ /* Animated shimmer effect */
159
+ &::after {
160
+ content: '';
161
+ position: absolute;
162
+ top: 0;
163
+ left: -2px;
164
+ right: -2px;
165
+ bottom: 0;
166
+ background: linear-gradient(
167
+ to bottom,
168
+ transparent,
169
+ rgba(255, 255, 255, 0.3),
170
+ transparent
171
+ );
172
+ animation: ${slideIn} 0.3s ease-out;
173
+ }
174
+ `;
175
+ // ============================================================================
176
+ // Hook: useColumnResize
177
+ // ============================================================================
178
+ export function useColumnResize({ columns, config = {}, enabled = true, tableId, }) {
179
+ const { minWidth = 50, maxWidth = 800, autoFit = true, onResize, onResizeStart, onResizeEnd, defaultWidths = {}, handleColor, handleHoverColor, handleWidth = 4, } = config;
180
+ // Initialize column widths - Column-level width takes FIRST priority
181
+ const initialWidths = useMemo(() => {
182
+ const widths = {};
183
+ columns.forEach((col) => {
184
+ // Priority 1: Column-level width (user-defined in column)
185
+ if (typeof col.width === 'number') {
186
+ widths[col.dataField] = col.width;
187
+ }
188
+ else if (typeof col.width === 'string' && col.width.endsWith('px')) {
189
+ widths[col.dataField] = parseInt(col.width, 10);
190
+ }
191
+ // Priority 2: defaultWidths from resizeConfig (only if column width not set)
192
+ else if (defaultWidths[col.dataField]) {
193
+ widths[col.dataField] = defaultWidths[col.dataField];
194
+ }
195
+ });
196
+ return widths;
197
+ }, [columns, defaultWidths]);
198
+ const [columnWidths, setColumnWidths] = useState(initialWidths);
199
+ const [isResizing, setIsResizing] = useState(false);
200
+ const [resizingColumn, setResizingColumn] = useState(null);
201
+ // Refs for drag tracking
202
+ const startXRef = useRef(0);
203
+ const startWidthRef = useRef(0);
204
+ const currentColumnRef = useRef(null);
205
+ const headerRefMap = useRef(new Map());
206
+ // Update widths when columns change - Column-level width takes FIRST priority
207
+ useEffect(() => {
208
+ setColumnWidths((prev) => {
209
+ const newWidths = { ...prev };
210
+ columns.forEach((col) => {
211
+ // Only add if not already set (user hasn't resized it)
212
+ if (!(col.dataField in newWidths)) {
213
+ // Priority 1: Column-level width
214
+ if (typeof col.width === 'number') {
215
+ newWidths[col.dataField] = col.width;
216
+ }
217
+ else if (typeof col.width === 'string' && col.width.endsWith('px')) {
218
+ newWidths[col.dataField] = parseInt(col.width, 10);
219
+ }
220
+ // Priority 2: defaultWidths from resizeConfig
221
+ else if (defaultWidths[col.dataField]) {
222
+ newWidths[col.dataField] = defaultWidths[col.dataField];
223
+ }
224
+ }
225
+ });
226
+ return newWidths;
227
+ });
228
+ }, [columns, defaultWidths]);
229
+ // Handle mouse move during resize
230
+ const handleMouseMove = useCallback((e) => {
231
+ if (!currentColumnRef.current)
232
+ return;
233
+ const deltaX = e.clientX - startXRef.current;
234
+ let newWidth = startWidthRef.current + deltaX;
235
+ // Apply min/max constraints
236
+ const column = columns.find((col) => col.dataField === currentColumnRef.current);
237
+ const colMinWidth = typeof column?.minWidth === 'number'
238
+ ? column.minWidth
239
+ : typeof column?.minWidth === 'string' && column.minWidth.endsWith('px')
240
+ ? parseInt(column.minWidth, 10)
241
+ : minWidth;
242
+ const colMaxWidth = typeof column?.maxWidth === 'number'
243
+ ? column.maxWidth
244
+ : typeof column?.maxWidth === 'string' && column.maxWidth.endsWith('px')
245
+ ? parseInt(column.maxWidth, 10)
246
+ : maxWidth;
247
+ newWidth = Math.max(colMinWidth, Math.min(colMaxWidth, newWidth));
248
+ setColumnWidths((prev) => ({
249
+ ...prev,
250
+ [currentColumnRef.current]: newWidth,
251
+ }));
252
+ }, [columns, minWidth, maxWidth]);
253
+ // Handle mouse up (end resize)
254
+ const handleMouseUp = useCallback(() => {
255
+ if (currentColumnRef.current) {
256
+ const finalWidth = columnWidths[currentColumnRef.current];
257
+ onResizeEnd?.(currentColumnRef.current, finalWidth);
258
+ onResize?.(columnWidths);
259
+ }
260
+ setIsResizing(false);
261
+ setResizingColumn(null);
262
+ currentColumnRef.current = null;
263
+ document.removeEventListener('mousemove', handleMouseMove);
264
+ document.removeEventListener('mouseup', handleMouseUp);
265
+ document.body.style.cursor = '';
266
+ document.body.style.userSelect = '';
267
+ }, [columnWidths, handleMouseMove, onResize, onResizeEnd]);
268
+ // Handle mouse down (start resize)
269
+ const handleMouseDown = useCallback((e, dataField, headerRef) => {
270
+ if (!enabled)
271
+ return;
272
+ e.preventDefault();
273
+ e.stopPropagation();
274
+ const headerEl = headerRef.current;
275
+ if (!headerEl)
276
+ return;
277
+ const currentWidth = headerEl.offsetWidth;
278
+ startXRef.current = e.clientX;
279
+ startWidthRef.current = currentWidth;
280
+ currentColumnRef.current = dataField;
281
+ setIsResizing(true);
282
+ setResizingColumn(dataField);
283
+ onResizeStart?.(dataField, currentWidth);
284
+ document.addEventListener('mousemove', handleMouseMove);
285
+ document.addEventListener('mouseup', handleMouseUp);
286
+ document.body.style.cursor = 'col-resize';
287
+ document.body.style.userSelect = 'none';
288
+ }, [enabled, handleMouseMove, handleMouseUp, onResizeStart]);
289
+ // Handle double-click for auto-fit
290
+ const handleDoubleClick = useCallback((e, dataField) => {
291
+ if (!enabled || !autoFit)
292
+ return;
293
+ e.preventDefault();
294
+ e.stopPropagation();
295
+ // Get all cells for this column and find the max content width
296
+ const cells = document.querySelectorAll(`[data-column="${dataField}"]`);
297
+ let maxContentWidth = minWidth;
298
+ cells.forEach((cell) => {
299
+ // Create a temporary span to measure text width
300
+ const span = document.createElement('span');
301
+ span.style.visibility = 'hidden';
302
+ span.style.position = 'absolute';
303
+ span.style.whiteSpace = 'nowrap';
304
+ span.style.font = window.getComputedStyle(cell).font;
305
+ span.textContent = cell.innerText;
306
+ document.body.appendChild(span);
307
+ maxContentWidth = Math.max(maxContentWidth, span.offsetWidth + 24); // Add padding
308
+ document.body.removeChild(span);
309
+ });
310
+ // Apply constraints
311
+ maxContentWidth = Math.min(maxContentWidth, maxWidth);
312
+ setColumnWidths((prev) => {
313
+ const newWidths = { ...prev, [dataField]: maxContentWidth };
314
+ onResize?.(newWidths);
315
+ return newWidths;
316
+ });
317
+ onResizeEnd?.(dataField, maxContentWidth);
318
+ }, [enabled, autoFit, minWidth, maxWidth, onResize, onResizeEnd]);
319
+ // Get resize handle component
320
+ const getResizeHandle = useCallback((dataField, headerRef) => {
321
+ if (!enabled)
322
+ return null;
323
+ headerRefMap.current.set(dataField, headerRef);
324
+ return (_jsx(ResizeHandle, { "$isResizing": resizingColumn === dataField, "$handleColor": handleColor, "$handleHoverColor": handleHoverColor, "$handleWidth": handleWidth, onMouseDown: (e) => handleMouseDown(e, dataField, headerRef), onDoubleClick: (e) => handleDoubleClick(e, dataField), onClick: (e) => e.stopPropagation() }));
325
+ }, [
326
+ enabled,
327
+ resizingColumn,
328
+ handleColor,
329
+ handleHoverColor,
330
+ handleWidth,
331
+ handleMouseDown,
332
+ handleDoubleClick,
333
+ ]);
334
+ // Reset all widths
335
+ const resetWidths = useCallback(() => {
336
+ setColumnWidths(initialWidths);
337
+ onResize?.(initialWidths);
338
+ }, [initialWidths, onResize]);
339
+ // Set specific column width
340
+ const setColumnWidth = useCallback((dataField, width) => {
341
+ const constrainedWidth = Math.max(minWidth, Math.min(maxWidth, width));
342
+ setColumnWidths((prev) => {
343
+ const newWidths = { ...prev, [dataField]: constrainedWidth };
344
+ onResize?.(newWidths);
345
+ return newWidths;
346
+ });
347
+ }, [minWidth, maxWidth, onResize]);
348
+ return {
349
+ columnWidths,
350
+ getResizeHandle,
351
+ resetWidths,
352
+ setColumnWidth,
353
+ isResizing,
354
+ resizingColumn,
355
+ };
356
+ }
357
+ // ============================================================================
358
+ // Helper: Get column style with resize width
359
+ // ============================================================================
360
+ export function getColumnStyle(column, columnWidths, resizable, isResizing) {
361
+ const style = {};
362
+ // Use resized width if available
363
+ if (resizable && columnWidths[column.dataField]) {
364
+ style.width = columnWidths[column.dataField];
365
+ style.minWidth = columnWidths[column.dataField];
366
+ style.maxWidth = columnWidths[column.dataField];
367
+ }
368
+ else {
369
+ // Use column-defined widths
370
+ if (column.width) {
371
+ style.width = column.width;
372
+ }
373
+ if (column.minWidth) {
374
+ style.minWidth = column.minWidth;
375
+ }
376
+ if (column.maxWidth) {
377
+ style.maxWidth = column.maxWidth;
378
+ }
379
+ }
380
+ // Add smooth transition when not actively resizing (for auto-fit double-click)
381
+ if (resizable && !isResizing) {
382
+ style.transition = 'width 0.2s cubic-bezier(0.4, 0, 0.2, 1)';
383
+ }
384
+ return style;
385
+ }
386
+ export const ResizableHeaderCell = ({ children, dataField, resizable, getResizeHandle, style, className, }) => {
387
+ const headerRef = useRef(null);
388
+ return (_jsxs("th", { ref: headerRef, style: { ...style, position: 'relative' }, className: className, "data-column": dataField, children: [children, resizable && getResizeHandle(dataField, headerRef)] }));
389
+ };
390
+ // ============================================================================
391
+ // Export
392
+ // ============================================================================
393
+ export default {
394
+ useColumnResize,
395
+ getColumnStyle,
396
+ ResizeHandle,
397
+ ResizeLine,
398
+ ResizableHeaderCell,
399
+ };
@@ -97,5 +97,13 @@ export declare const ColumnTogglePanel: import("styled-components/dist/types").I
97
97
  export declare const ColumnToggleHeader: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
98
98
  export declare const ColumnToggleSearch: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
99
99
  export declare const ColumnToggleList: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
100
- export declare const ColumnToggleItem: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").LabelHTMLAttributes<HTMLLabelElement>, HTMLLabelElement>, never>> & string;
100
+ export declare const ColumnToggleItem: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").LabelHTMLAttributes<HTMLLabelElement>, HTMLLabelElement>, {
101
+ $isDragging?: boolean | undefined;
102
+ $isDragOver?: boolean | undefined;
103
+ $reorderable?: boolean | undefined;
104
+ }>> & string;
105
+ export declare const ColumnToggleDragHandle: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {
106
+ $isDragging?: boolean | undefined;
107
+ }>> & string;
108
+ export declare const ColumnToggleListAnimated: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
101
109
  export declare const ResizeHandle: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;