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,74 +1,64 @@
1
- 'use client';
2
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
- import { useState, useCallback, useEffect, useRef } from 'react';
4
- import { styled, css } from 'styled-components';
5
- import { tokens } from '../../utils/designTokens';
6
- import { useDebouncedValue } from '../../utils/hooks/useDebouncedValue';
7
- // Styled components for filters
8
- const FilterContainer = styled.div `
1
+ "use strict";"use client";import{jsx as c,jsxs as G,Fragment as Q}from"react/jsx-runtime";import{useState as _,useCallback as B,useEffect as d,useRef as f}from"react";import{styled as M,css as U}from"styled-components";import{tokens as i}from"../../utils/designTokens";import{useDebouncedValue as H}from"../../utils/hooks/useDebouncedValue";const X=M.div`
9
2
  display: flex;
10
3
  align-items: center;
11
4
  gap: 3px;
12
- `;
13
- const FilterInputBase = styled.input `
5
+ `,Y=M.input`
14
6
  width: 100%;
15
7
  height: 22px;
16
8
  padding: 0 5px;
17
9
  font-size: 10px;
18
10
  font-weight: normal;
19
11
  color: #000000;
20
- border: 1px solid ${tokens.outline || '#e2e8f0'};
12
+ border: 1px solid ${i.outline||"#e2e8f0"};
21
13
  border-radius: 2px;
22
14
  background: white;
23
15
  transition: all 0.15s ease;
24
16
 
25
17
  &:hover {
26
- border-color: ${tokens.primary || '#94a3b8'};
18
+ border-color: ${i.primary||"#94a3b8"};
27
19
  }
28
20
 
29
21
  &:focus {
30
22
  outline: none;
31
- border-color: ${tokens.primary || '#3b82f6'};
23
+ border-color: ${i.primary||"#3b82f6"};
32
24
  box-shadow: 0 0 0 1px
33
- ${tokens.primary ? `${tokens.primary}20` : '#3b82f620'};
25
+ ${i.primary?`${i.primary}20`:"#3b82f620"};
34
26
  }
35
27
 
36
28
  &::placeholder {
37
- color: ${tokens.onSurface ? `${tokens.onSurface}50` : '#94a3af'};
29
+ color: ${i.onSurface?`${i.onSurface}50`:"#94a3af"};
38
30
  font-size: 9px;
39
31
  }
40
- `;
41
- const FilterSelectBase = styled.select `
32
+ `,ne=M.select`
42
33
  width: 100%;
43
34
  height: 22px;
44
35
  padding: 0 5px;
45
36
  font-size: 10px;
46
37
  font-weight: normal;
47
38
  color: #000000;
48
- border: 1px solid ${tokens.outline || '#e2e8f0'};
39
+ border: 1px solid ${i.outline||"#e2e8f0"};
49
40
  border-radius: 2px;
50
41
  background: white;
51
42
  cursor: pointer;
52
43
  transition: all 0.15s ease;
53
44
 
54
45
  &:hover {
55
- border-color: ${tokens.primary || '#94a3b8'};
46
+ border-color: ${i.primary||"#94a3b8"};
56
47
  }
57
48
 
58
49
  &:focus {
59
50
  outline: none;
60
- border-color: ${tokens.primary || '#3b82f6'};
51
+ border-color: ${i.primary||"#3b82f6"};
61
52
  box-shadow: 0 0 0 1px
62
- ${tokens.primary ? `${tokens.primary}20` : '#3b82f620'};
53
+ ${i.primary?`${i.primary}20`:"#3b82f620"};
63
54
  }
64
- `;
65
- const ComparatorSelect = styled.select `
55
+ `,Z=M.select`
66
56
  width: 38px;
67
57
  height: 22px;
68
58
  padding: 0 2px;
69
59
  font-size: 9px;
70
60
  font-weight: normal;
71
- border: 1px solid ${tokens.outline || '#e2e8f0'};
61
+ border: 1px solid ${i.outline||"#e2e8f0"};
72
62
  border-radius: 2px;
73
63
  background: white;
74
64
  cursor: pointer;
@@ -77,571 +67,56 @@ const ComparatorSelect = styled.select `
77
67
  transition: all 0.15s ease;
78
68
 
79
69
  &:hover {
80
- border-color: ${tokens.primary || '#94a3b8'};
70
+ border-color: ${i.primary||"#94a3b8"};
81
71
  }
82
72
 
83
73
  &:focus {
84
74
  outline: none;
85
- border-color: ${tokens.primary || '#3b82f6'};
75
+ border-color: ${i.primary||"#3b82f6"};
86
76
  }
87
- `;
88
- const DateInput = styled.input `
77
+ `,O=M.input`
89
78
  flex: 1;
90
79
  height: 22px;
91
80
  padding: 0 4px;
92
81
  font-size: 10px;
93
- border: 1px solid ${tokens.outline || '#e2e8f0'};
82
+ border: 1px solid ${i.outline||"#e2e8f0"};
94
83
  border-radius: 2px;
95
84
  background: white;
96
85
  min-width: 80px;
97
86
  transition: all 0.15s ease;
98
87
 
99
88
  &:hover {
100
- border-color: ${tokens.primary || '#94a3b8'};
89
+ border-color: ${i.primary||"#94a3b8"};
101
90
  }
102
91
 
103
92
  &:focus {
104
93
  outline: none;
105
- border-color: ${tokens.primary || '#3b82f6'};
94
+ border-color: ${i.primary||"#3b82f6"};
106
95
  box-shadow: 0 0 0 1px
107
- ${tokens.primary ? `${tokens.primary}20` : '#3b82f620'};
96
+ ${i.primary?`${i.primary}20`:"#3b82f620"};
108
97
  }
109
- `;
110
- const ToggleButton = styled.button `
98
+ `,ae=M.button`
111
99
  height: 22px;
112
100
  padding: 0 5px;
113
101
  font-size: 9px;
114
102
  font-weight: normal;
115
- border: 1px solid ${tokens.outline || '#e2e8f0'};
103
+ border: 1px solid ${i.outline||"#e2e8f0"};
116
104
  border-radius: 2px;
117
105
  cursor: pointer;
118
106
  transition: all 0.15s ease;
119
107
  white-space: nowrap;
120
108
 
121
- ${({ $active }) => $active
122
- ? css `
123
- background: ${tokens.primary || '#3b82f6'};
109
+ ${({$active:e})=>e?U`
110
+ background: ${i.primary||"#3b82f6"};
124
111
  color: white;
125
- border-color: ${tokens.primary || '#3b82f6'};
126
- `
127
- : css `
112
+ border-color: ${i.primary||"#3b82f6"};
113
+ `:U`
128
114
  background: white;
129
- color: ${tokens.onSurface || '#374151'};
115
+ color: ${i.onSurface||"#374151"};
130
116
 
131
117
  &:hover {
132
118
  background: #f8fafc;
133
- border-color: ${tokens.primary || '#94a3b8'};
119
+ border-color: ${i.primary||"#94a3b8"};
134
120
  }
135
121
  `}
136
- `;
137
- /**
138
- * Internal Text filter component with options support
139
- */
140
- const TextFilterComponent = ({ column, value, onChange, options }) => {
141
- const { placeholder, className, style, defaultValue, delay = 500, getFilter, onFilter, id, disabled, } = options || {};
142
- // Local state for immediate input updates (maintains focus)
143
- const [internalValue, setInternalValue] = useState(value || defaultValue || '');
144
- const internalValueRef = useRef(internalValue);
145
- const inputRef = useRef(null);
146
- const onChangeRef = useRef(onChange);
147
- const onFilterRef = useRef(onFilter);
148
- // Track if the last change was from user input (internal) vs external (e.g., clear all)
149
- const lastInternalValueRef = useRef(internalValue);
150
- // Keep refs in sync
151
- useEffect(() => {
152
- internalValueRef.current = internalValue;
153
- }, [internalValue]);
154
- useEffect(() => {
155
- onChangeRef.current = onChange;
156
- onFilterRef.current = onFilter;
157
- }, [onChange, onFilter]);
158
- // Sync internal value when external value changes (e.g., from clear all filters)
159
- // Only sync when external value differs from what we last sent to parent
160
- useEffect(() => {
161
- const externalValue = value || '';
162
- // Only sync if external value is different from what we last propagated
163
- // This prevents overwriting user input while they're typing
164
- if (externalValue !== lastInternalValueRef.current) {
165
- setInternalValue(externalValue);
166
- lastInternalValueRef.current = externalValue;
167
- }
168
- }, [value]);
169
- // Debounce the internal value
170
- const [debouncedValue] = useDebouncedValue(internalValue, { wait: delay });
171
- // Propagate debounced value to parent
172
- useEffect(() => {
173
- // Update the ref to track what we're sending to parent
174
- lastInternalValueRef.current = debouncedValue || '';
175
- onChangeRef.current(debouncedValue || null);
176
- onFilterRef.current?.(debouncedValue);
177
- }, [debouncedValue]);
178
- // Provide filter instance via getFilter callback - only on mount
179
- useEffect(() => {
180
- if (getFilter) {
181
- getFilter({
182
- get value() {
183
- return internalValueRef.current;
184
- },
185
- setValue: (newValue) => {
186
- setInternalValue(newValue);
187
- onChangeRef.current(newValue || null);
188
- onFilterRef.current?.(newValue);
189
- },
190
- clear: () => {
191
- setInternalValue('');
192
- onChangeRef.current(null);
193
- onFilterRef.current?.('');
194
- },
195
- });
196
- }
197
- // eslint-disable-next-line react-hooks/exhaustive-deps
198
- }, [getFilter]);
199
- // Track if input should be focused (user is actively typing)
200
- const hasFocusRef = useRef(false);
201
- // Simple change handler - just update local state
202
- const handleChange = useCallback((e) => {
203
- setInternalValue(e.target.value);
204
- }, []);
205
- // Track focus state
206
- const handleFocus = useCallback(() => {
207
- hasFocusRef.current = true;
208
- }, []);
209
- const handleBlur = useCallback(() => {
210
- hasFocusRef.current = false;
211
- }, []);
212
- // Restore focus after re-renders if it was focused
213
- useEffect(() => {
214
- if (hasFocusRef.current && inputRef.current) {
215
- // Use requestAnimationFrame to ensure DOM is ready
216
- requestAnimationFrame(() => {
217
- if (hasFocusRef.current && inputRef.current) {
218
- inputRef.current.focus();
219
- }
220
- });
221
- }
222
- });
223
- const inputStyle = {
224
- fontWeight: 400,
225
- ...style,
226
- };
227
- // If custom className is provided, use plain input to allow full CSS control
228
- if (className) {
229
- return (_jsx("input", { ref: inputRef, type: "text", id: id, "data-filter-field": column.dataField, value: internalValue, onChange: handleChange, onFocus: handleFocus, onBlur: handleBlur, placeholder: placeholder || column.filterPlaceholder || `Filter ${column.text}...`, className: className, style: {
230
- width: '100%',
231
- fontWeight: 400,
232
- ...style,
233
- }, disabled: disabled }));
234
- }
235
- return (_jsx(FilterInputBase, { ref: inputRef, type: "text", id: id, "data-filter-field": column.dataField, value: internalValue, onChange: handleChange, onFocus: handleFocus, onBlur: handleBlur, placeholder: placeholder || column.filterPlaceholder || `Filter ${column.text}...`, style: inputStyle, disabled: disabled }));
236
- };
237
- export function TextFilter(optionsOrProps) {
238
- // Check if it's being used as a factory function (options object without column/value/onChange)
239
- if (!('column' in optionsOrProps) &&
240
- !('value' in optionsOrProps) &&
241
- !('onChange' in optionsOrProps)) {
242
- // Factory function usage - return a component
243
- const options = optionsOrProps;
244
- const FilterWithOptions = (props) => (_jsx(TextFilterComponent, { ...props, options: options }));
245
- FilterWithOptions.displayName = 'TextFilter';
246
- return FilterWithOptions;
247
- }
248
- // Direct component usage
249
- const props = optionsOrProps;
250
- return _jsx(TextFilterComponent, { ...props });
251
- }
252
- /**
253
- * Internal Number filter component with options support
254
- */
255
- const NumberFilterComponent = ({ column, value, onChange, options }) => {
256
- const { placeholder, className, style, defaultValue, delay = 500, defaultComparator = '=', allowDecimal = true, getFilter, onFilter, id, disabled, hideComparator, comparators = ['=', '!=', '>', '>=', '<', '<='], } = options || {};
257
- // Local state for immediate input updates (maintains focus)
258
- const [number, setNumber] = useState(value?.number || defaultValue?.number || '');
259
- const [comparator, setComparator] = useState(value?.comparator || defaultValue?.comparator || defaultComparator);
260
- const numberRef = useRef(number);
261
- const comparatorRef = useRef(comparator);
262
- const inputRef = useRef(null);
263
- const onChangeRef = useRef(onChange);
264
- const onFilterRef = useRef(onFilter);
265
- // Track last value sent to parent to prevent sync loops
266
- const lastNumberRef = useRef(number);
267
- const lastComparatorRef = useRef(comparator);
268
- // Keep refs in sync with state
269
- useEffect(() => {
270
- numberRef.current = number;
271
- comparatorRef.current = comparator;
272
- }, [number, comparator]);
273
- useEffect(() => {
274
- onChangeRef.current = onChange;
275
- onFilterRef.current = onFilter;
276
- }, [onChange, onFilter]);
277
- // Sync internal value when external value changes (e.g., from clear all filters)
278
- useEffect(() => {
279
- const externalNumber = value?.number || '';
280
- const externalComparator = value?.comparator || defaultComparator;
281
- // Only sync if different from what we last sent to parent
282
- if (externalNumber !== lastNumberRef.current) {
283
- setNumber(externalNumber);
284
- lastNumberRef.current = externalNumber;
285
- }
286
- if (externalComparator !== lastComparatorRef.current) {
287
- setComparator(externalComparator);
288
- lastComparatorRef.current = externalComparator;
289
- }
290
- }, [value, defaultComparator]);
291
- // Debounce the number value
292
- const [debouncedNumber] = useDebouncedValue(number, { wait: delay });
293
- // Propagate debounced value to parent
294
- useEffect(() => {
295
- // Update refs to track what we're sending to parent
296
- lastNumberRef.current = debouncedNumber || '';
297
- lastComparatorRef.current = comparatorRef.current;
298
- const newValue = debouncedNumber
299
- ? { number: debouncedNumber, comparator: comparatorRef.current }
300
- : null;
301
- onChangeRef.current(newValue);
302
- onFilterRef.current?.(newValue);
303
- }, [debouncedNumber]);
304
- // Provide filter instance via getFilter callback - only on mount
305
- useEffect(() => {
306
- if (getFilter) {
307
- getFilter({
308
- get value() {
309
- return numberRef.current
310
- ? { number: numberRef.current, comparator: comparatorRef.current }
311
- : null;
312
- },
313
- setValue: (newValue) => {
314
- if (newValue) {
315
- setNumber(newValue.number);
316
- setComparator(newValue.comparator);
317
- onChangeRef.current(newValue);
318
- onFilterRef.current?.(newValue);
319
- }
320
- else {
321
- setNumber('');
322
- onChangeRef.current(null);
323
- onFilterRef.current?.(null);
324
- }
325
- },
326
- clear: () => {
327
- setNumber('');
328
- setComparator(defaultComparator);
329
- onChangeRef.current(null);
330
- onFilterRef.current?.(null);
331
- },
332
- });
333
- }
334
- // eslint-disable-next-line react-hooks/exhaustive-deps
335
- }, [getFilter]);
336
- // Track if input should be focused
337
- const hasFocusRef = useRef(false);
338
- // Track focus state
339
- const handleFocus = useCallback(() => {
340
- hasFocusRef.current = true;
341
- }, []);
342
- const handleBlur = useCallback(() => {
343
- hasFocusRef.current = false;
344
- }, []);
345
- // Restore focus after re-renders if it was focused
346
- useEffect(() => {
347
- if (hasFocusRef.current && inputRef.current) {
348
- requestAnimationFrame(() => {
349
- if (hasFocusRef.current && inputRef.current) {
350
- inputRef.current.focus();
351
- }
352
- });
353
- }
354
- });
355
- // Handle comparator change - trigger immediate filter update
356
- const handleComparatorChange = useCallback((newComparator) => {
357
- setComparator(newComparator);
358
- if (number) {
359
- const newValue = { number, comparator: newComparator };
360
- onChangeRef.current(newValue);
361
- onFilterRef.current?.(newValue);
362
- }
363
- }, [number]);
364
- const comparatorSymbols = {
365
- '=': '=',
366
- '!=': '≠',
367
- '>': '>',
368
- '>=': '≥',
369
- '<': '<',
370
- '<=': '≤',
371
- };
372
- const inputStyle = {
373
- flex: 1,
374
- fontWeight: 400,
375
- ...style,
376
- };
377
- const inputProps = {
378
- type: 'text',
379
- id,
380
- 'data-filter-field': column.dataField,
381
- value: number,
382
- onChange: (e) => {
383
- const val = e.target.value;
384
- const pattern = allowDecimal ? /^[0-9.,]*$/ : /^[0-9]*$/;
385
- if (pattern.test(val)) {
386
- setNumber(val);
387
- }
388
- },
389
- onFocus: handleFocus,
390
- onBlur: handleBlur,
391
- placeholder: placeholder || column.filterPlaceholder || 'Number...',
392
- disabled,
393
- };
394
- return (_jsxs(FilterContainer, { children: [!hideComparator && (_jsx(ComparatorSelect, { value: comparator, onChange: (e) => handleComparatorChange(e.target.value), disabled: disabled, children: comparators.map((comp) => (_jsx("option", { value: comp, children: comparatorSymbols[comp] || comp }, comp))) })), className ? (_jsx("input", { ref: inputRef, ...inputProps, className: className, style: { flex: 1, width: '100%', fontWeight: 400, ...style } })) : (_jsx(FilterInputBase, { ref: inputRef, ...inputProps, style: inputStyle }))] }));
395
- };
396
- export function NumberFilter(optionsOrProps) {
397
- if (!('column' in optionsOrProps) &&
398
- !('value' in optionsOrProps) &&
399
- !('onChange' in optionsOrProps)) {
400
- const options = optionsOrProps;
401
- const FilterWithOptions = (props) => (_jsx(NumberFilterComponent, { ...props, options: options }));
402
- FilterWithOptions.displayName = 'NumberFilter';
403
- return FilterWithOptions;
404
- }
405
- const props = optionsOrProps;
406
- return _jsx(NumberFilterComponent, { ...props });
407
- }
408
- /**
409
- * Internal Date filter component with options support
410
- */
411
- const DateFilterComponent = ({ column, value, onChange, options }) => {
412
- const { className, style, defaultValue, defaultComparator = '=', defaultRangeMode = false, getFilter, onFilter, id, disabled, minDate, maxDate, } = options || {};
413
- // Local state for immediate updates
414
- const [startDate, setStartDate] = useState(value?.startDate || defaultValue?.startDate || '');
415
- const [endDate, setEndDate] = useState(value?.endDate || defaultValue?.endDate || '');
416
- const [diffFlag, setDiffFlag] = useState(value?.diffFlag ?? defaultValue?.diffFlag ?? defaultRangeMode);
417
- const [comparator, setComparator] = useState(value?.comparator || defaultValue?.comparator || defaultComparator);
418
- const stateRef = useRef({ startDate, endDate, diffFlag, comparator });
419
- const onChangeRef = useRef(onChange);
420
- const onFilterRef = useRef(onFilter);
421
- // Track last values sent to parent to prevent sync loops
422
- const lastValuesRef = useRef({
423
- startDate,
424
- endDate,
425
- diffFlag,
426
- comparator,
427
- });
428
- // Keep refs in sync with state
429
- useEffect(() => {
430
- stateRef.current = { startDate, endDate, diffFlag, comparator };
431
- }, [startDate, endDate, diffFlag, comparator]);
432
- useEffect(() => {
433
- onChangeRef.current = onChange;
434
- onFilterRef.current = onFilter;
435
- }, [onChange, onFilter]);
436
- // Sync internal value when external value changes (e.g., from clear all filters)
437
- useEffect(() => {
438
- const externalStartDate = value?.startDate || '';
439
- const externalEndDate = value?.endDate || '';
440
- const externalDiffFlag = value?.diffFlag ?? defaultRangeMode;
441
- const externalComparator = value?.comparator || defaultComparator;
442
- // Only sync if different from what we last sent to parent
443
- if (externalStartDate !== lastValuesRef.current.startDate) {
444
- setStartDate(externalStartDate);
445
- lastValuesRef.current.startDate = externalStartDate;
446
- }
447
- if (externalEndDate !== lastValuesRef.current.endDate) {
448
- setEndDate(externalEndDate);
449
- lastValuesRef.current.endDate = externalEndDate;
450
- }
451
- if (externalDiffFlag !== lastValuesRef.current.diffFlag) {
452
- setDiffFlag(externalDiffFlag);
453
- lastValuesRef.current.diffFlag = externalDiffFlag;
454
- }
455
- if (externalComparator !== lastValuesRef.current.comparator) {
456
- setComparator(externalComparator);
457
- lastValuesRef.current.comparator = externalComparator;
458
- }
459
- }, [value, defaultRangeMode, defaultComparator]);
460
- // Debounce the date values
461
- const [debouncedStartDate] = useDebouncedValue(startDate, { wait: 500 });
462
- const [debouncedEndDate] = useDebouncedValue(endDate, { wait: 500 });
463
- // Propagate debounced value to parent
464
- useEffect(() => {
465
- // Update refs to track what we're sending to parent
466
- lastValuesRef.current = {
467
- startDate: debouncedStartDate,
468
- endDate: debouncedEndDate,
469
- diffFlag,
470
- comparator,
471
- };
472
- const newValue = debouncedStartDate || debouncedEndDate
473
- ? {
474
- startDate: debouncedStartDate,
475
- endDate: debouncedEndDate,
476
- diffFlag,
477
- comparator,
478
- }
479
- : null;
480
- onChangeRef.current(newValue);
481
- onFilterRef.current?.(newValue);
482
- }, [debouncedStartDate, debouncedEndDate, diffFlag, comparator]);
483
- // Provide filter instance via getFilter callback - only on mount
484
- useEffect(() => {
485
- if (getFilter) {
486
- getFilter({
487
- get value() {
488
- const { startDate: s, endDate: e, diffFlag: d, comparator: c, } = stateRef.current;
489
- return s || e
490
- ? { startDate: s, endDate: e, diffFlag: d, comparator: c }
491
- : null;
492
- },
493
- setValue: (newValue) => {
494
- if (newValue) {
495
- setStartDate(newValue.startDate || '');
496
- setEndDate(newValue.endDate || '');
497
- setDiffFlag(newValue.diffFlag ?? defaultRangeMode);
498
- setComparator(newValue.comparator || defaultComparator);
499
- onChangeRef.current(newValue);
500
- onFilterRef.current?.(newValue);
501
- }
502
- else {
503
- setStartDate('');
504
- setEndDate('');
505
- onChangeRef.current(null);
506
- onFilterRef.current?.(null);
507
- }
508
- },
509
- clear: () => {
510
- setStartDate('');
511
- setEndDate('');
512
- setDiffFlag(defaultRangeMode);
513
- setComparator(defaultComparator);
514
- onChangeRef.current(null);
515
- onFilterRef.current?.(null);
516
- },
517
- });
518
- }
519
- // eslint-disable-next-line react-hooks/exhaustive-deps
520
- }, [getFilter]);
521
- // Simple change handlers - just update local state
522
- const handleStartDateChange = useCallback((e) => {
523
- setStartDate(e.target.value);
524
- }, []);
525
- const handleEndDateChange = useCallback((e) => {
526
- setEndDate(e.target.value);
527
- }, []);
528
- const handleDiffFlagChange = useCallback(() => {
529
- setDiffFlag((prev) => !prev);
530
- }, []);
531
- const handleComparatorChange = useCallback((e) => {
532
- setComparator(e.target.value);
533
- }, []);
534
- return (_jsxs(FilterContainer, { className: className, style: style, children: [_jsx(ToggleButton, { "$active": diffFlag, onClick: handleDiffFlagChange, title: "Date range mode", disabled: disabled, children: diffFlag ? 'Range' : 'Single' }), !diffFlag && (_jsxs(ComparatorSelect, { value: comparator, onChange: handleComparatorChange, disabled: disabled, style: { fontWeight: 400 }, children: [_jsx("option", { value: "=", children: "=" }), _jsx("option", { value: ">=", children: "\u2265" }), _jsx("option", { value: "<", children: "<" })] })), _jsx(DateInput, { type: "date", id: id, value: startDate, onChange: handleStartDateChange, disabled: disabled, min: minDate, max: maxDate, style: { fontWeight: 400 } }), diffFlag && (_jsxs(_Fragment, { children: [_jsx("span", { style: { color: '#6b7280', fontSize: 12, fontWeight: 400 }, children: "to" }), _jsx(DateInput, { type: "date", value: endDate, onChange: handleEndDateChange, disabled: disabled, min: minDate, max: maxDate, style: { fontWeight: 400 } })] }))] }));
535
- };
536
- export function DateFilter(optionsOrProps) {
537
- if (!('column' in optionsOrProps) &&
538
- !('value' in optionsOrProps) &&
539
- !('onChange' in optionsOrProps)) {
540
- const options = optionsOrProps;
541
- const FilterWithOptions = (props) => (_jsx(DateFilterComponent, { ...props, options: options }));
542
- FilterWithOptions.displayName = 'DateFilter';
543
- return FilterWithOptions;
544
- }
545
- const props = optionsOrProps;
546
- return _jsx(DateFilterComponent, { ...props });
547
- }
548
- /**
549
- * Internal Select filter component with options support
550
- */
551
- const SelectFilterComponent = ({ column, value, onChange, options }) => {
552
- const { placeholder = 'All', className, style, defaultValue, delay = 300, options: customOptions, getFilter, onFilter, id, disabled, } = options || {};
553
- // Local state for immediate updates
554
- const [selectedValue, setSelectedValue] = useState(value || defaultValue || '');
555
- const selectedValueRef = useRef(selectedValue);
556
- const onChangeRef = useRef(onChange);
557
- const onFilterRef = useRef(onFilter);
558
- // Track last value sent to parent to prevent sync loops
559
- const lastValueRef = useRef(selectedValue);
560
- // Keep refs in sync with state
561
- useEffect(() => {
562
- selectedValueRef.current = selectedValue;
563
- }, [selectedValue]);
564
- useEffect(() => {
565
- onChangeRef.current = onChange;
566
- onFilterRef.current = onFilter;
567
- }, [onChange, onFilter]);
568
- // Sync internal value when external value changes (e.g., from clear all filters)
569
- useEffect(() => {
570
- const externalValue = value || '';
571
- // Only sync if different from what we last sent to parent
572
- if (externalValue !== lastValueRef.current) {
573
- setSelectedValue(externalValue);
574
- lastValueRef.current = externalValue;
575
- }
576
- }, [value]);
577
- // Debounce the selected value
578
- const [debouncedValue] = useDebouncedValue(selectedValue, { wait: delay });
579
- // Propagate debounced value to parent
580
- useEffect(() => {
581
- // Update ref to track what we're sending to parent
582
- lastValueRef.current = debouncedValue || '';
583
- onChangeRef.current(debouncedValue || null);
584
- onFilterRef.current?.(debouncedValue || null);
585
- }, [debouncedValue]);
586
- // Provide filter instance via getFilter callback - only on mount
587
- useEffect(() => {
588
- if (getFilter) {
589
- getFilter({
590
- get value() {
591
- return selectedValueRef.current || null;
592
- },
593
- setValue: (newValue) => {
594
- setSelectedValue(newValue || '');
595
- onChangeRef.current(newValue);
596
- onFilterRef.current?.(newValue);
597
- },
598
- clear: () => {
599
- setSelectedValue('');
600
- onChangeRef.current(null);
601
- onFilterRef.current?.(null);
602
- },
603
- });
604
- }
605
- // eslint-disable-next-line react-hooks/exhaustive-deps
606
- }, [getFilter]);
607
- // Simple change handler - just update local state
608
- const handleChange = useCallback((e) => {
609
- setSelectedValue(e.target.value);
610
- }, []);
611
- // Use custom options if provided, otherwise fall back to column.filterOptions
612
- const selectOptions = customOptions || column.filterOptions || [];
613
- const selectContent = (_jsxs(_Fragment, { children: [_jsx("option", { value: "", children: placeholder }), selectOptions.map((opt) => (_jsx("option", { value: opt.value, children: opt.label }, opt.value)))] }));
614
- // If custom className is provided, use plain select to allow full CSS control
615
- if (className) {
616
- return (_jsx("select", { id: id, value: selectedValue, onChange: handleChange, className: className, style: { width: '100%', fontWeight: 400, ...style }, disabled: disabled, children: selectContent }));
617
- }
618
- return (_jsx(FilterSelectBase, { id: id, value: selectedValue, onChange: handleChange, style: { fontWeight: 400, ...style }, disabled: disabled, children: selectContent }));
619
- };
620
- export function SelectFilter(optionsOrProps) {
621
- if (!('column' in optionsOrProps) &&
622
- !('value' in optionsOrProps) &&
623
- !('onChange' in optionsOrProps)) {
624
- const options = optionsOrProps;
625
- const FilterWithOptions = (props) => (_jsx(SelectFilterComponent, { ...props, options: options }));
626
- FilterWithOptions.displayName = 'SelectFilter';
627
- return FilterWithOptions;
628
- }
629
- const props = optionsOrProps;
630
- return _jsx(SelectFilterComponent, { ...props });
631
- }
632
- /**
633
- * Get filter component based on type
634
- */
635
- export const getFilterComponent = (type) => {
636
- switch (type) {
637
- case 'number':
638
- return NumberFilter;
639
- case 'date':
640
- case 'dateRange':
641
- return DateFilter;
642
- case 'select':
643
- return SelectFilter;
644
- default:
645
- return TextFilter;
646
- }
647
- };
122
+ `,P=({column:e,value:n,onChange:s,options:h})=>{const{placeholder:x,className:z,style:S,defaultValue:W,delay:V=500,getFilter:C,onFilter:w,id:k,disabled:$}=h||{},[D,b]=_(n||W||""),F=f(D),y=f(null),o=f(s),p=f(w),l=f(D);d(()=>{F.current=D},[D]),d(()=>{o.current=s,p.current=w},[s,w]),d(()=>{const u=n||"";u!==l.current&&(b(u),l.current=u)},[n]);const[g]=H(D,{wait:V});d(()=>{l.current=g||"",o.current(g||null),p.current?.(g)},[g]),d(()=>{C&&C({get value(){return F.current},setValue:u=>{b(u),o.current(u||null),p.current?.(u)},clear:()=>{b(""),o.current(null),p.current?.("")}})},[C]);const m=f(!1),R=B(u=>{b(u.target.value)},[]),v=B(()=>{m.current=!0},[]),r=B(()=>{m.current=!1},[]);d(()=>{m.current&&y.current&&requestAnimationFrame(()=>{m.current&&y.current&&y.current.focus()})});const N={fontWeight:400,...S};return z?c("input",{ref:y,type:"text",id:k,"data-filter-field":e.dataField,value:D,onChange:R,onFocus:v,onBlur:r,placeholder:x||e.filterPlaceholder||`Filter ${e.text}...`,className:z,style:{width:"100%",fontWeight:400,...S},disabled:$}):c(Y,{ref:y,type:"text",id:k,"data-filter-field":e.dataField,value:D,onChange:R,onFocus:v,onBlur:r,placeholder:x||e.filterPlaceholder||`Filter ${e.text}...`,style:N,disabled:$})};export function TextFilter(e){if(!("column"in e)&&!("value"in e)&&!("onChange"in e)){const s=e,h=x=>c(P,{...x,options:s});return h.displayName="TextFilter",h}return c(P,{...e})}const ee=({column:e,value:n,onChange:s,options:h})=>{const{placeholder:x,className:z,style:S,defaultValue:W,delay:V=500,defaultComparator:C="=",allowDecimal:w=!0,getFilter:k,onFilter:$,id:D,disabled:b,hideComparator:F,comparators:y=["=","!=",">",">=","<","<="]}=h||{},[o,p]=_(n?.number||W?.number||""),[l,g]=_(n?.comparator||W?.comparator||C),m=f(o),R=f(l),v=f(null),r=f(s),N=f($),u=f(o),I=f(l);d(()=>{m.current=o,R.current=l},[o,l]),d(()=>{r.current=s,N.current=$},[s,$]),d(()=>{const t=n?.number||"",j=n?.comparator||C;t!==u.current&&(p(t),u.current=t),j!==I.current&&(g(j),I.current=j)},[n,C]);const[E]=H(o,{wait:V});d(()=>{u.current=E||"",I.current=R.current;const t=E?{number:E,comparator:R.current}:null;r.current(t),N.current?.(t)},[E]),d(()=>{k&&k({get value(){return m.current?{number:m.current,comparator:R.current}:null},setValue:t=>{t?(p(t.number),g(t.comparator),r.current(t),N.current?.(t)):(p(""),r.current(null),N.current?.(null))},clear:()=>{p(""),g(C),r.current(null),N.current?.(null)}})},[k]);const q=f(!1),J=B(()=>{q.current=!0},[]),K=B(()=>{q.current=!1},[]);d(()=>{q.current&&v.current&&requestAnimationFrame(()=>{q.current&&v.current&&v.current.focus()})});const L=B(t=>{if(g(t),o){const j={number:o,comparator:t};r.current(j),N.current?.(j)}},[o]),a={"=":"=","!=":"\u2260",">":">",">=":"\u2265","<":"<","<=":"\u2264"},T={flex:1,fontWeight:400,...S},A={type:"text",id:D,"data-filter-field":e.dataField,value:o,onChange:t=>{const j=t.target.value;(w?/^[0-9.,]*$/:/^[0-9]*$/).test(j)&&p(j)},onFocus:J,onBlur:K,placeholder:x||e.filterPlaceholder||"Number...",disabled:b};return G(X,{children:[!F&&c(Z,{value:l,onChange:t=>L(t.target.value),disabled:b,children:y.map(t=>c("option",{value:t,children:a[t]||t},t))}),z?c("input",{ref:v,...A,className:z,style:{flex:1,width:"100%",fontWeight:400,...S}}):c(Y,{ref:v,...A,style:T})]})};export function NumberFilter(e){if(!("column"in e)&&!("value"in e)&&!("onChange"in e)){const s=e,h=x=>c(ee,{...x,options:s});return h.displayName="NumberFilter",h}return c(ee,{...e})}const te=({column:e,value:n,onChange:s,options:h})=>{const{className:x,style:z,defaultValue:S,defaultComparator:W="=",defaultRangeMode:V=!1,getFilter:C,onFilter:w,id:k,disabled:$,minDate:D,maxDate:b}=h||{},[F,y]=_(n?.startDate||S?.startDate||""),[o,p]=_(n?.endDate||S?.endDate||""),[l,g]=_(n?.diffFlag??S?.diffFlag??V),[m,R]=_(n?.comparator||S?.comparator||W),v=f({startDate:F,endDate:o,diffFlag:l,comparator:m}),r=f(s),N=f(w),u=f({startDate:F,endDate:o,diffFlag:l,comparator:m});d(()=>{v.current={startDate:F,endDate:o,diffFlag:l,comparator:m}},[F,o,l,m]),d(()=>{r.current=s,N.current=w},[s,w]),d(()=>{const a=n?.startDate||"",T=n?.endDate||"",A=n?.diffFlag??V,t=n?.comparator||W;a!==u.current.startDate&&(y(a),u.current.startDate=a),T!==u.current.endDate&&(p(T),u.current.endDate=T),A!==u.current.diffFlag&&(g(A),u.current.diffFlag=A),t!==u.current.comparator&&(R(t),u.current.comparator=t)},[n,V,W]);const[I]=H(F,{wait:500}),[E]=H(o,{wait:500});d(()=>{u.current={startDate:I,endDate:E,diffFlag:l,comparator:m};const a=I||E?{startDate:I,endDate:E,diffFlag:l,comparator:m}:null;r.current(a),N.current?.(a)},[I,E,l,m]),d(()=>{C&&C({get value(){const{startDate:a,endDate:T,diffFlag:A,comparator:t}=v.current;return a||T?{startDate:a,endDate:T,diffFlag:A,comparator:t}:null},setValue:a=>{a?(y(a.startDate||""),p(a.endDate||""),g(a.diffFlag??V),R(a.comparator||W),r.current(a),N.current?.(a)):(y(""),p(""),r.current(null),N.current?.(null))},clear:()=>{y(""),p(""),g(V),R(W),r.current(null),N.current?.(null)}})},[C]);const q=B(a=>{y(a.target.value)},[]),J=B(a=>{p(a.target.value)},[]),K=B(()=>{g(a=>!a)},[]),L=B(a=>{R(a.target.value)},[]);return G(X,{className:x,style:z,children:[c(ae,{$active:l,onClick:K,title:"Date range mode",disabled:$,children:l?"Range":"Single"}),!l&&G(Z,{value:m,onChange:L,disabled:$,style:{fontWeight:400},children:[c("option",{value:"=",children:"="}),c("option",{value:">=",children:"\u2265"}),c("option",{value:"<",children:"<"})]}),c(O,{type:"date",id:k,value:F,onChange:q,disabled:$,min:D,max:b,style:{fontWeight:400}}),l&&G(Q,{children:[c("span",{style:{color:"#6b7280",fontSize:12,fontWeight:400},children:"to"}),c(O,{type:"date",value:o,onChange:J,disabled:$,min:D,max:b,style:{fontWeight:400}})]})]})};export function DateFilter(e){if(!("column"in e)&&!("value"in e)&&!("onChange"in e)){const s=e,h=x=>c(te,{...x,options:s});return h.displayName="DateFilter",h}return c(te,{...e})}const re=({column:e,value:n,onChange:s,options:h})=>{const{placeholder:x="All",className:z,style:S,defaultValue:W,delay:V=300,options:C,getFilter:w,onFilter:k,id:$,disabled:D}=h||{},[b,F]=_(n||W||""),y=f(b),o=f(s),p=f(k),l=f(b);d(()=>{y.current=b},[b]),d(()=>{o.current=s,p.current=k},[s,k]),d(()=>{const r=n||"";r!==l.current&&(F(r),l.current=r)},[n]);const[g]=H(b,{wait:V});d(()=>{l.current=g||"",o.current(g||null),p.current?.(g||null)},[g]),d(()=>{w&&w({get value(){return y.current||null},setValue:r=>{F(r||""),o.current(r),p.current?.(r)},clear:()=>{F(""),o.current(null),p.current?.(null)}})},[w]);const m=B(r=>{F(r.target.value)},[]),R=C||e.filterOptions||[],v=G(Q,{children:[c("option",{value:"",children:x}),R.map(r=>c("option",{value:r.value,children:r.label},r.value))]});return z?c("select",{id:$,value:b,onChange:m,className:z,style:{width:"100%",fontWeight:400,...S},disabled:D,children:v}):c(ne,{id:$,value:b,onChange:m,style:{fontWeight:400,...S},disabled:D,children:v})};export function SelectFilter(e){if(!("column"in e)&&!("value"in e)&&!("onChange"in e)){const s=e,h=x=>c(re,{...x,options:s});return h.displayName="SelectFilter",h}return c(re,{...e})}export const getFilterComponent=e=>{switch(e){case"number":return NumberFilter;case"date":case"dateRange":return DateFilter;case"select":return SelectFilter;default:return TextFilter}};