react-restyle-components 0.4.39 → 0.4.40

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 (232) 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 +1332 -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/index.js +30 -1
  136. package/lib/src/core-components/src/components/pdf/pdf-images.components.js +7 -1
  137. package/lib/src/core-components/src/components/pdf/pdf-table.components.js +48 -5
  138. package/lib/src/core-components/src/components/pdf/pdf-typography.components.js +70 -1
  139. package/lib/src/core-components/src/components/pdf/pdf-wrapped-view.components.js +50 -1
  140. package/lib/src/core-components/src/core-components/Avatar.js +33 -4
  141. package/lib/src/core-components/src/core-components/CoreButton/CoreButton.js +10 -1
  142. package/lib/src/core-components/src/core-components/CoreButton/elements.js +176 -67
  143. package/lib/src/core-components/src/core-components/CoreButton/index.js +3 -1
  144. package/lib/src/core-components/src/core-components/CoreButton/types.js +6 -1
  145. package/lib/src/core-components/src/core-components/CoreButton/utils.js +12 -1
  146. package/lib/src/core-components/src/core-components/Divider/Divider.js +19 -4
  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 +33 -10
  150. package/lib/src/core-components/src/core-components/StateLayer.js +5 -3
  151. package/lib/src/core-components/src/core-components/ToggleCore/elements.js +50 -25
  152. package/lib/src/core-components/src/core-components/ToggleCore/index.js +2 -1
  153. package/lib/src/core-components/src/core-components/ToggleCore/toggleCore.js +14 -1
  154. package/lib/src/core-components/src/core-components/atoms/Input/Input.js +22 -1
  155. package/lib/src/core-components/src/core-components/atoms/Label/Label.js +21 -1
  156. package/lib/src/core-components/src/core-components/atoms/Textarea/Textarea.js +19 -1
  157. package/lib/src/core-components/src/core-components/index.js +3 -1
  158. package/lib/src/core-components/src/helpers/constants.js +11 -1
  159. package/lib/src/core-components/src/hooks/index.js +1 -1
  160. package/lib/src/core-components/src/hooks/outside.hook.js +28 -1
  161. package/lib/src/core-components/src/index.js +12 -1
  162. package/lib/src/core-components/src/tc.global.css +12 -1
  163. package/lib/src/core-components/src/tc.module.css +1 -1
  164. package/lib/src/core-components/src/utils/abstracts/breakpoints/index.js +28 -1
  165. package/lib/src/core-components/src/utils/abstracts/colors/index.js +49 -1
  166. package/lib/src/core-components/src/utils/abstracts/index.js +5 -1
  167. package/lib/src/core-components/src/utils/abstracts/space/index.js +26 -1
  168. package/lib/src/core-components/src/utils/abstracts/theme/ThemeBoundary.js +8 -1
  169. package/lib/src/core-components/src/utils/abstracts/theme/default-themes.js +30 -1
  170. package/lib/src/core-components/src/utils/abstracts/theme/index.js +3 -1
  171. package/lib/src/core-components/src/utils/abstracts/theme/theme.js +30 -1
  172. package/lib/src/core-components/src/utils/abstracts/theme/types.js +1 -1
  173. package/lib/src/core-components/src/utils/abstracts/theme/useTheme.js +17 -1
  174. package/lib/src/core-components/src/utils/abstracts/typography/index.js +25 -1
  175. package/lib/src/core-components/src/utils/context/DefaultsProvider.js +8 -1
  176. package/lib/src/core-components/src/utils/context/InternalProvider.js +24 -1
  177. package/lib/src/core-components/src/utils/context/index.js +2 -1
  178. package/lib/src/core-components/src/utils/designTokens.js +125 -1
  179. package/lib/src/core-components/src/utils/helpers/attachSubComponents.js +23 -1
  180. package/lib/src/core-components/src/utils/helpers/flattenChildren.js +11 -1
  181. package/lib/src/core-components/src/utils/helpers/getChildByType.js +3 -1
  182. package/lib/src/core-components/src/utils/helpers/index.js +5 -1
  183. package/lib/src/core-components/src/utils/helpers/isComponentType.js +16 -1
  184. package/lib/src/core-components/src/utils/helpers/separateChildrenByType.js +12 -1
  185. package/lib/src/core-components/src/utils/hooks/index.js +18 -1
  186. package/lib/src/core-components/src/utils/hooks/useClickOutside.js +18 -1
  187. package/lib/src/core-components/src/utils/hooks/useCombinedRefs.js +17 -1
  188. package/lib/src/core-components/src/utils/hooks/useDebouncedCallback.js +12 -1
  189. package/lib/src/core-components/src/utils/hooks/useDebouncedValue.js +20 -1
  190. package/lib/src/core-components/src/utils/hooks/useDeprecation.js +40 -1
  191. package/lib/src/core-components/src/utils/hooks/useDeviceDetect.js +10 -1
  192. package/lib/src/core-components/src/utils/hooks/useDeviceForm.js +24 -1
  193. package/lib/src/core-components/src/utils/hooks/useDisableBodyScroll.js +16 -1
  194. package/lib/src/core-components/src/utils/hooks/useHoverState.js +36 -1
  195. package/lib/src/core-components/src/utils/hooks/useId.js +7 -1
  196. package/lib/src/core-components/src/utils/hooks/useIsBrowser.js +11 -1
  197. package/lib/src/core-components/src/utils/hooks/useMediaQuery.js +16 -1
  198. package/lib/src/core-components/src/utils/hooks/useOverflow.js +22 -1
  199. package/lib/src/core-components/src/utils/hooks/useSafeLayoutEffect.js +5 -1
  200. package/lib/src/core-components/src/utils/hooks/useScrollingUp.js +18 -1
  201. package/lib/src/core-components/src/utils/hooks/useTrapFocus.js +30 -1
  202. package/lib/src/core-components/src/utils/hooks/useWindowDimensions.js +23 -1
  203. package/lib/src/core-components/src/utils/index.js +9 -1
  204. package/lib/src/core-components/src/utils/stories/Wrappers.js +23 -8
  205. package/lib/src/core-components/src/utils/stories/cleanProps.js +5 -1
  206. package/lib/src/core-components/src/utils/stories/index.js +4 -1
  207. package/lib/src/core-components/src/utils/stories/sleep.js +4 -1
  208. package/lib/src/core-components/src/utils/stories/view-ports.js +50 -1
  209. package/lib/src/core-components/src/utils/styling/calcWidthOfColumns.js +5 -1
  210. package/lib/src/core-components/src/utils/styling/createGridContainer.js +12 -6
  211. package/lib/src/core-components/src/utils/styling/createTransition.js +7 -2
  212. package/lib/src/core-components/src/utils/styling/forwardProps.js +10 -1
  213. package/lib/src/core-components/src/utils/styling/index.js +5 -1
  214. package/lib/src/core-components/src/utils/styling/pxToRem.js +6 -1
  215. package/lib/src/core-components/src/utils/testing/getComputedStyle.js +3 -1
  216. package/lib/src/core-components/src/utils/testing/index.js +1 -1
  217. package/lib/src/core-components/src/utils/utility.util.js +14 -1
  218. package/lib/src/core-components/tailwind.config.js +233 -1
  219. package/lib/src/core-hooks/index.js +3 -1
  220. package/lib/src/core-hooks/src/useClickOutside/useClickOutside.hook.js +46 -1
  221. package/lib/src/core-hooks/src/useDebounce/useDebounce.hook.js +30 -1
  222. package/lib/src/core-hooks/src/usePreventEKey/usePreventEKey.hook.js +8 -1
  223. package/lib/src/core-utils/index.js +7 -1
  224. package/lib/src/core-utils/src/calculation/calculation.util.js +89 -1
  225. package/lib/src/core-utils/src/colors/color.util.js +15 -1
  226. package/lib/src/core-utils/src/convert/numberToWords/numToWords.util.js +145 -1
  227. package/lib/src/core-utils/src/convert/typography/camelCaseToTitleCase.util.js +5 -1
  228. package/lib/src/core-utils/src/form-helper/form-helper.util.js +82 -1
  229. package/lib/src/core-utils/src/index.js +7 -1
  230. package/lib/src/core-utils/src/utility/utility.util.js +12 -1
  231. package/lib/src/core-utils/src/uuid/uuid.util.js +8 -1
  232. package/package.json +1 -1
@@ -1,4 +1,78 @@
1
- "use strict";import{jsx as s,jsxs as C,Fragment as oe}from"react/jsx-runtime";import{useState as r,useEffect as g,useRef as H,useCallback as T}from"react";import{Icon as se}from"../../Icon/Icon";import e from"../../../tc.module.css";import{cn as c}from"../../../utils";import{debounce as Y}from"@techabl/core-utils";const i={dropdown:{base:{transformOrigin:"top center",transition:"opacity 200ms ease-out, transform 200ms ease-out"},entering:{opacity:1,transform:"scaleY(1) translateY(0)"},exiting:{opacity:0,transform:"scaleY(0.95) translateY(-8px)"}},listItem:{base:{transition:"opacity 180ms ease-out, transform 180ms ease-out, background-color 150ms ease",cursor:"pointer"},visible:{opacity:1,transform:"translateX(0)"},hidden:{opacity:0,transform:"translateX(-12px)"},hover:{backgroundColor:"rgba(59, 130, 246, 0.1)"}},skeleton:{base:{background:"linear-gradient(90deg, #e5e7eb 25%, #f3f4f6 50%, #e5e7eb 75%)",backgroundSize:"200% 100%",animation:"shimmer 1.5s infinite",borderRadius:"4px"}},spinner:{animation:"spin 0.8s linear infinite",border:"2px solid #e5e7eb",borderTopColor:"#3b82f6",borderRadius:"50%",width:"16px",height:"16px"},fadeContent:{base:{transition:"opacity 200ms ease-out"},loading:{opacity:.5},ready:{opacity:1}}},ie=()=>{const p="autocomplete-animations";if(typeof document<"u"&&!document.getElementById(p)){const l=document.createElement("style");l.id=p,l.textContent=`
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ /* eslint-disable */
3
+ import { useState, useEffect, useRef, useCallback } from 'react';
4
+ import { Icon } from '../../Icon/Icon';
5
+ import s from '../../../tc.module.css';
6
+ import { cn } from '../../../utils';
7
+ import { debounce } from '@techabl/core-utils';
8
+ // Inline styles for animations (CSS-in-JS approach for portability)
9
+ const animationStyles = {
10
+ dropdown: {
11
+ base: {
12
+ transformOrigin: 'top center',
13
+ transition: 'opacity 200ms ease-out, transform 200ms ease-out',
14
+ },
15
+ entering: {
16
+ opacity: 1,
17
+ transform: 'scaleY(1) translateY(0)',
18
+ },
19
+ exiting: {
20
+ opacity: 0,
21
+ transform: 'scaleY(0.95) translateY(-8px)',
22
+ },
23
+ },
24
+ listItem: {
25
+ base: {
26
+ transition: 'opacity 180ms ease-out, transform 180ms ease-out, background-color 150ms ease',
27
+ cursor: 'pointer',
28
+ },
29
+ visible: {
30
+ opacity: 1,
31
+ transform: 'translateX(0)',
32
+ },
33
+ hidden: {
34
+ opacity: 0,
35
+ transform: 'translateX(-12px)',
36
+ },
37
+ hover: {
38
+ backgroundColor: 'rgba(59, 130, 246, 0.1)',
39
+ },
40
+ },
41
+ skeleton: {
42
+ base: {
43
+ background: 'linear-gradient(90deg, #e5e7eb 25%, #f3f4f6 50%, #e5e7eb 75%)',
44
+ backgroundSize: '200% 100%',
45
+ animation: 'shimmer 1.5s infinite',
46
+ borderRadius: '4px',
47
+ },
48
+ },
49
+ spinner: {
50
+ animation: 'spin 0.8s linear infinite',
51
+ border: '2px solid #e5e7eb',
52
+ borderTopColor: '#3b82f6',
53
+ borderRadius: '50%',
54
+ width: '16px',
55
+ height: '16px',
56
+ },
57
+ fadeContent: {
58
+ base: {
59
+ transition: 'opacity 200ms ease-out',
60
+ },
61
+ loading: {
62
+ opacity: 0.5,
63
+ },
64
+ ready: {
65
+ opacity: 1,
66
+ },
67
+ },
68
+ };
69
+ // Inject keyframes for shimmer animation
70
+ const injectKeyframes = () => {
71
+ const styleId = 'autocomplete-animations';
72
+ if (typeof document !== 'undefined' && !document.getElementById(styleId)) {
73
+ const style = document.createElement('style');
74
+ style.id = styleId;
75
+ style.textContent = `
2
76
  @keyframes shimmer {
3
77
  0% { background-position: 200% 0; }
4
78
  100% { background-position: -200% 0; }
@@ -15,4 +89,236 @@
15
89
  0%, 100% { opacity: 1; }
16
90
  50% { opacity: 0.5; }
17
91
  }
18
- `,document.head.appendChild(l)}},ae=({delay:p=0})=>C("div",{style:{display:"flex",alignItems:"center",padding:"8px 8px",gap:"12px",animation:`fadeInUp 300ms ease-out ${p}ms both`},children:[s("div",{style:{...i.skeleton.base,width:"60px",height:"14px"}}),s("div",{style:{...i.skeleton.base,flex:1,height:"14px",maxWidth:"180px"}})]}),re=()=>s("div",{style:i.spinner,role:"status","aria-label":"Loading"});export const AutoCompleteFilterSingleSelectMultiFieldsDisplay=({disable:p=!1,loader:l=!1,displayValue:S="",placeholder:_="Search...",data:a,hasError:j=!1,className:U,posstion:le="absolute",keyboard:z="text",classNames:y={},styles:b={},onFilter:w,onSelect:f,onBlur:E})=>{const[M,h]=r(S),[d,K]=r(a.list),[m,O]=r(!1),[de,W]=r(),[$,x]=r(!1),[B,u]=r(new Set),[V,R]=r(null),[N,D]=r(!1),[X,A]=r(!1);g(()=>{ie()},[]);const q=t=>{g(()=>{function n(o){t.current&&!t.current.contains(o.target)&&m&&v()}return document.addEventListener("mousedown",n),()=>{document.removeEventListener("mousedown",n)}},[t,m])},L=H(null),F=H(null);q(F);const G=T(()=>{O(!0),requestAnimationFrame(()=>{A(!0)})},[]),v=T(()=>{A(!1),setTimeout(()=>{O(!1)},200)},[]);g(()=>{m&&d.length>0&&!l&&(u(new Set),d.forEach((t,n)=>{setTimeout(()=>{u(o=>new Set([...o,n]))},Math.min(n*30,300))}))},[m,d,l]),g(()=>{if(N){x(!0);const t=setTimeout(()=>{K(a.list),x(!1),D(!1),u(new Set),a.list.forEach((n,o)=>{setTimeout(()=>{u(I=>new Set([...I,o]))},Math.min(o*25,200))})},150);return()=>clearTimeout(t)}else K(a.list)},[a]),g(()=>{h(S)},[S]);const J=t=>{const n=t.target.value;h(n),W(n),D(!0);const o=a.list.filter(I=>a.displayKey.some(k=>I[k]?.toString().toLowerCase().includes(n.toLowerCase())));x(!0),setTimeout(()=>{K(o),x(!1),D(!1),u(new Set),o.forEach((I,k)=>{setTimeout(()=>{u(ne=>new Set([...ne,k]))},Math.min(k*25,200))})},100),Y(()=>{w&&w(n)})},P=t=>{if((t.which?t.which:t.keyCode)===8){const o=t.target.value;Y(()=>{w&&w(o)})}},Q=t=>{if((t.key==="Enter"||t.key==="Tab")&&d.length>0){const n=d.find(o=>o.labId===Number(M));n&&(h(a.displayKey.map(o=>`${n[o]}`).join(" - ")),v(),f&&f(n))}},Z=()=>{if(L.current){const t=L.current.getBoundingClientRect();return window.innerHeight-t.bottom-20}return"calc(100vh - 140px)"},ee=T(t=>{h(a.displayKey.map(n=>t[n]).filter(n=>n!=null).join(" - ")),v(),f&&f(t)},[a.displayKey,f,v]),te=l||N;return s(oe,{children:C("div",{ref:F,className:c(e["w-full"],e.relative,y.container),style:b.container,children:[C("div",{className:c(e.flex,e["p-2"],e["leading-4"],e["focus:outline-none"],e["focus:ring"],e["w-full"],e["shadow-sm"],e["sm:text-base"],e.border,e["rounded-md"],e["transition-all"],e["duration-200"],{[e["border-red"]]:j,[e["border-gray-300"]]:!j,[e["dark:text-black"]]:!0},y.inputWrapper),style:{transition:"border-color 200ms ease, box-shadow 200ms ease",...b.inputWrapper},children:[s("input",{ref:L,placeholder:_,type:z,value:M,className:c(e["w-full"],e["focus:outline-none"],e["bg-none"],e["dark:text-black"],U,y.input),style:b.input,onKeyUp:P,onChange:J,onClick:G,disabled:p,onMouseDown:()=>h(""),onBlur:t=>E&&E(t),onKeyDown:Q}),C("div",{style:{display:"flex",alignItems:"center",gap:"8px"},children:[te&&s(re,{}),s("div",{style:{transition:"transform 200ms ease",transform:m?"rotate(180deg)":"rotate(0deg)"},children:s(se,{nameIcon:"FaChevronDown",propsIcon:{size:16}})})]})]}),m&&s("div",{className:c(e.absolute,e["w-full"],e["bg-white"],e["rounded-md"],e["shadow-lg"],e["overflow-hidden"],y.dropdown),style:{...i.dropdown.base,...X?i.dropdown.entering:i.dropdown.exiting,zIndex:500,marginTop:"4px",border:"1px solid #e5e7eb",...b.dropdown},children:s("div",{className:c(e["overflow-y-auto"],e["p-1"]),style:{maxHeight:`${Z()}px`,...i.fadeContent.base,...$?i.fadeContent.loading:i.fadeContent.ready},children:l?s("div",{style:{padding:"4px 0"},children:[0,1,2,3,4].map(t=>s(ae,{delay:t*50},t))}):d.length>0?s("ul",{style:{listStyle:"none",margin:0,padding:0},children:d.map((t,n)=>s("li",{className:c(e.flex,e["items-center"]),onClick:()=>ee(t),onMouseEnter:()=>R(n),onMouseLeave:()=>R(null),style:{...i.listItem.base,...B.has(n)?i.listItem.visible:i.listItem.hidden,...V===n?i.listItem.hover:{},padding:"10px 12px",borderRadius:"6px",margin:"2px 0",transitionDelay:`${Math.min(n*20,150)}ms`},children:s("label",{className:c(e["text-gray-700"]),style:{textOverflow:"ellipsis",minWidth:0,overflow:"hidden",whiteSpace:"nowrap",cursor:"pointer",fontSize:"14px"},title:a.displayKey.map(o=>t[o]).join(" - "),children:a.displayKey.map(o=>t[o]).filter(o=>o!=null).join(" - ")})},n))}):s("div",{style:{padding:"16px",textAlign:"center",color:"#6b7280",animation:"fadeInUp 200ms ease-out"},children:s("span",{children:"No results found"})})})})]})})};
92
+ `;
93
+ document.head.appendChild(style);
94
+ }
95
+ };
96
+ // Skeleton loader component
97
+ const SkeletonItem = ({ delay = 0 }) => (_jsxs("div", { style: {
98
+ display: 'flex',
99
+ alignItems: 'center',
100
+ padding: '8px 8px',
101
+ gap: '12px',
102
+ animation: `fadeInUp 300ms ease-out ${delay}ms both`,
103
+ }, children: [_jsx("div", { style: {
104
+ ...animationStyles.skeleton.base,
105
+ width: '60px',
106
+ height: '14px',
107
+ } }), _jsx("div", { style: {
108
+ ...animationStyles.skeleton.base,
109
+ flex: 1,
110
+ height: '14px',
111
+ maxWidth: '180px',
112
+ } })] }));
113
+ // Loading spinner component
114
+ const LoadingSpinner = () => (_jsx("div", { style: animationStyles.spinner, role: "status", "aria-label": "Loading" }));
115
+ export const AutoCompleteFilterSingleSelectMultiFieldsDisplay = ({ disable = false, loader = false, displayValue = '', placeholder = 'Search...', data, hasError = false, className, posstion = 'absolute', keyboard = 'text', classNames: customClassNames = {}, styles: customStyles = {}, onFilter, onSelect, onBlur, }) => {
116
+ const [value, setValue] = useState(displayValue);
117
+ const [options, setOptions] = useState(data.list);
118
+ const [isListOpen, setIsListOpen] = useState(false);
119
+ const [filterValue, setFilterValue] = useState();
120
+ const [isAnimating, setIsAnimating] = useState(false);
121
+ const [visibleItems, setVisibleItems] = useState(new Set());
122
+ const [hoveredIndex, setHoveredIndex] = useState(null);
123
+ const [isFiltering, setIsFiltering] = useState(false);
124
+ const [showDropdown, setShowDropdown] = useState(false);
125
+ // Inject animation keyframes on mount
126
+ useEffect(() => {
127
+ injectKeyframes();
128
+ }, []);
129
+ const useOutsideAlerter = (ref) => {
130
+ useEffect(() => {
131
+ function handleClickOutside(event) {
132
+ if (ref.current && !ref.current.contains(event.target) && isListOpen) {
133
+ handleCloseDropdown();
134
+ }
135
+ }
136
+ document.addEventListener('mousedown', handleClickOutside);
137
+ return () => {
138
+ document.removeEventListener('mousedown', handleClickOutside);
139
+ };
140
+ }, [ref, isListOpen]);
141
+ };
142
+ const inputRef = useRef(null);
143
+ const wrapperRef = useRef(null);
144
+ useOutsideAlerter(wrapperRef);
145
+ // Smooth dropdown open/close with animation
146
+ const handleOpenDropdown = useCallback(() => {
147
+ setIsListOpen(true);
148
+ // Small delay to trigger CSS transition
149
+ requestAnimationFrame(() => {
150
+ setShowDropdown(true);
151
+ });
152
+ }, []);
153
+ const handleCloseDropdown = useCallback(() => {
154
+ setShowDropdown(false);
155
+ // Wait for animation to complete before hiding
156
+ setTimeout(() => {
157
+ setIsListOpen(false);
158
+ }, 200);
159
+ }, []);
160
+ // Staggered animation for list items
161
+ useEffect(() => {
162
+ if (isListOpen && options.length > 0 && !loader) {
163
+ setVisibleItems(new Set());
164
+ // Stagger the appearance of items
165
+ options.forEach((_, index) => {
166
+ setTimeout(() => {
167
+ setVisibleItems((prev) => new Set([...prev, index]));
168
+ }, Math.min(index * 30, 300)); // Cap at 300ms total
169
+ });
170
+ }
171
+ }, [isListOpen, options, loader]);
172
+ // Smooth transition when data changes
173
+ useEffect(() => {
174
+ if (isFiltering) {
175
+ // Brief fade out during filter
176
+ setIsAnimating(true);
177
+ const timer = setTimeout(() => {
178
+ setOptions(data.list);
179
+ setIsAnimating(false);
180
+ setIsFiltering(false);
181
+ // Re-trigger staggered animation
182
+ setVisibleItems(new Set());
183
+ data.list.forEach((_, index) => {
184
+ setTimeout(() => {
185
+ setVisibleItems((prev) => new Set([...prev, index]));
186
+ }, Math.min(index * 25, 200));
187
+ });
188
+ }, 150);
189
+ return () => clearTimeout(timer);
190
+ }
191
+ else {
192
+ setOptions(data.list);
193
+ }
194
+ }, [data]);
195
+ useEffect(() => {
196
+ setValue(displayValue);
197
+ }, [displayValue]);
198
+ const onChange = (e) => {
199
+ const search = e.target.value;
200
+ setValue(search);
201
+ setFilterValue(search);
202
+ setIsFiltering(true);
203
+ const filteredOptions = data.list.filter((item) => data.displayKey.some((key) => item[key]?.toString().toLowerCase().includes(search.toLowerCase())));
204
+ // Animate transition
205
+ setIsAnimating(true);
206
+ setTimeout(() => {
207
+ setOptions(filteredOptions);
208
+ setIsAnimating(false);
209
+ setIsFiltering(false);
210
+ // Re-animate visible items
211
+ setVisibleItems(new Set());
212
+ filteredOptions.forEach((_, index) => {
213
+ setTimeout(() => {
214
+ setVisibleItems((prev) => new Set([...prev, index]));
215
+ }, Math.min(index * 25, 200));
216
+ });
217
+ }, 100);
218
+ debounce(() => {
219
+ onFilter && onFilter(search);
220
+ });
221
+ };
222
+ const onKeyUp = (e) => {
223
+ const charCode = e.which ? e.which : e.keyCode;
224
+ if (charCode === 8) {
225
+ const search = e.target.value;
226
+ debounce(() => {
227
+ onFilter && onFilter(search);
228
+ });
229
+ }
230
+ };
231
+ const onKeyDown = (e) => {
232
+ if (e.key === 'Enter' || e.key === 'Tab') {
233
+ if (options.length > 0) {
234
+ const selectedItem = options.find((item) => item.labId === Number(value));
235
+ if (selectedItem) {
236
+ setValue(data.displayKey.map((key) => `${selectedItem[key]}`).join(' - '));
237
+ handleCloseDropdown();
238
+ onSelect && onSelect(selectedItem);
239
+ }
240
+ }
241
+ }
242
+ };
243
+ const calculateMaxHeight = () => {
244
+ if (inputRef.current) {
245
+ const inputRect = inputRef.current.getBoundingClientRect();
246
+ const availableHeight = window.innerHeight - inputRect.bottom - 20;
247
+ return availableHeight;
248
+ }
249
+ return 'calc(100vh - 140px)';
250
+ };
251
+ const handleSelectItem = useCallback((item) => {
252
+ setValue(data.displayKey
253
+ .map((key) => item[key])
254
+ .filter((value) => value !== null && value !== undefined)
255
+ .join(' - '));
256
+ handleCloseDropdown();
257
+ onSelect && onSelect(item);
258
+ }, [data.displayKey, onSelect, handleCloseDropdown]);
259
+ // Show loading state
260
+ const isLoading = loader || isFiltering;
261
+ return (_jsx(_Fragment, { children: _jsxs("div", { ref: wrapperRef, className: cn(s['w-full'], s['relative'], customClassNames.container), style: customStyles.container, children: [_jsxs("div", { className: cn(s['flex'], s['p-2'], s['leading-4'], s['focus:outline-none'], s['focus:ring'], s['w-full'], s['shadow-sm'], s['sm:text-base'], s['border'], s['rounded-md'], s['transition-all'], s['duration-200'], {
262
+ [s['border-red']]: hasError,
263
+ [s['border-gray-300']]: !hasError,
264
+ [s['dark:text-black']]: true,
265
+ }, customClassNames.inputWrapper), style: {
266
+ transition: 'border-color 200ms ease, box-shadow 200ms ease',
267
+ ...customStyles.inputWrapper,
268
+ }, children: [_jsx("input", { ref: inputRef, placeholder: placeholder, type: keyboard, value: value, className: cn(s['w-full'], s['focus:outline-none'], s['bg-none'], s['dark:text-black'], className, customClassNames.input), style: customStyles.input, onKeyUp: onKeyUp, onChange: onChange, onClick: handleOpenDropdown, disabled: disable, onMouseDown: () => setValue(''), onBlur: (e) => onBlur && onBlur(e), onKeyDown: onKeyDown }), _jsxs("div", { style: {
269
+ display: 'flex',
270
+ alignItems: 'center',
271
+ gap: '8px',
272
+ }, children: [isLoading && _jsx(LoadingSpinner, {}), _jsx("div", { style: {
273
+ transition: 'transform 200ms ease',
274
+ transform: isListOpen ? 'rotate(180deg)' : 'rotate(0deg)',
275
+ }, children: _jsx(Icon, { nameIcon: "FaChevronDown", propsIcon: {
276
+ size: 16,
277
+ } }) })] })] }), isListOpen && (_jsx("div", { className: cn(s['absolute'], s['w-full'], s['bg-white'], s['rounded-md'], s['shadow-lg'], s['overflow-hidden'], customClassNames.dropdown), style: {
278
+ ...animationStyles.dropdown.base,
279
+ ...(showDropdown
280
+ ? animationStyles.dropdown.entering
281
+ : animationStyles.dropdown.exiting),
282
+ zIndex: 500,
283
+ marginTop: '4px',
284
+ border: '1px solid #e5e7eb',
285
+ ...customStyles.dropdown,
286
+ }, children: _jsx("div", { className: cn(s['overflow-y-auto'], s['p-1']), style: {
287
+ maxHeight: `${calculateMaxHeight()}px`,
288
+ ...animationStyles.fadeContent.base,
289
+ ...(isAnimating
290
+ ? animationStyles.fadeContent.loading
291
+ : animationStyles.fadeContent.ready),
292
+ }, children: loader ? (
293
+ // Skeleton loading state
294
+ _jsx("div", { style: { padding: '4px 0' }, children: [0, 1, 2, 3, 4].map((i) => (_jsx(SkeletonItem, { delay: i * 50 }, i))) })) : options.length > 0 ? (_jsx("ul", { style: { listStyle: 'none', margin: 0, padding: 0 }, children: options.map((item, index) => (_jsx("li", { className: cn(s['flex'], s['items-center']), onClick: () => handleSelectItem(item), onMouseEnter: () => setHoveredIndex(index), onMouseLeave: () => setHoveredIndex(null), style: {
295
+ ...animationStyles.listItem.base,
296
+ ...(visibleItems.has(index)
297
+ ? animationStyles.listItem.visible
298
+ : animationStyles.listItem.hidden),
299
+ ...(hoveredIndex === index
300
+ ? animationStyles.listItem.hover
301
+ : {}),
302
+ padding: '10px 12px',
303
+ borderRadius: '6px',
304
+ margin: '2px 0',
305
+ transitionDelay: `${Math.min(index * 20, 150)}ms`,
306
+ }, children: _jsx("label", { className: cn(s['text-gray-700']), style: {
307
+ textOverflow: 'ellipsis',
308
+ minWidth: 0,
309
+ overflow: 'hidden',
310
+ whiteSpace: 'nowrap',
311
+ cursor: 'pointer',
312
+ fontSize: '14px',
313
+ }, title: data.displayKey
314
+ .map((key) => item[key])
315
+ .join(' - '), children: data.displayKey
316
+ .map((key) => item[key])
317
+ .filter((value) => value !== null && value !== undefined)
318
+ .join(' - ') }) }, index))) })) : (_jsx("div", { style: {
319
+ padding: '16px',
320
+ textAlign: 'center',
321
+ color: '#6b7280',
322
+ animation: 'fadeInUp 200ms ease-out',
323
+ }, children: _jsx("span", { children: "No results found" }) })) }) }))] }) }));
324
+ };
@@ -1 +1,115 @@
1
- "use strict";import{jsx as s,jsxs as v,Fragment as I}from"react/jsx-runtime";import{useState as C,useEffect as y,useRef as j}from"react";import{Icon as L}from"../../Icon/Icon";import e from"../../../tc.module.css";import{cn as i}from"../../../utils";export const AutocompleteGroupBy=({data:h=[],hasError:b=!1,displayValue:p="",onChange:f,onClose:z})=>{const[a,c]=C(p),[d,w]=C(),[u,m]=C(!1),k=l=>{y(()=>{function n(t){l.current&&!l.current.contains(t.target)&&u&&(m(!1),c(""))}return document.addEventListener("mousedown",n),()=>{document.removeEventListener("mousedown",n)}},[l,u])},N=j(null);k(N),y(()=>{c(p)},[p]),y(()=>{w(h||[])},[h]);const F=(l,n)=>{const t=new Set;return l.filter(r=>{const o=n(r);return t.has(o)?!1:t.add(o)})},O=(l,n)=>{if(l!==""){let t=[];n.filter(r=>{r.children.filter(o=>{o.title&&o.title.toLowerCase().indexOf(l.toLowerCase())>-1&&(t.filter((g,x)=>{if(g.name===r.name){const S=t[x].children.concat(o);t[x]={...t[x],children:S}}}).length<1&&t.push({...r,children:[o]}),t=F(t,g=>g.name))})}),w(t)}else w(n)},A=l=>{const n=l.target.value;c(n),O(n,h)};return s(I,{children:v("div",{ref:N,className:i(e["w-full"],e.relative),children:[v("div",{className:i(e.flex,e["items-center"],e["leading-4"],e["p-2"],e["bg-white"],e["focus:outline-none"],e["focus:ring"],e["w-full"],e["shadow-sm"],e["sm:text-base"],e.border,e["rounded-md"],{[e["border-red"]]:b,[e["border-gray-300"]]:!b}),children:[s("input",{placeholder:"Search...",value:a,className:i(e["w-full"],e["focus:outline-none"]),onChange:A,onClick:()=>m(!0),onKeyDown:l=>{if(l.key==="Enter"){l.preventDefault();let n=null,t=null;for(const r of d){for(const o of r.children)if(o.title.toLowerCase()===a.toLowerCase()||r.title.toLowerCase()===a.toLowerCase()){n=r,t=o;break}if(n)break}f&&n&&t&&f(n,t),m(!1),c(a)}}}),u?s(L,{nameIcon:"FaChevronUp",propsIcon:{size:16}}):s(L,{nameIcon:"FaChevronDown",propsIcon:{size:16}})]}),d&&u?d?.length>0?s("div",{className:i(e.flex,e["mt-1"],e.absolute,e["z-50"],e["rounded-md"],e["bg-gray-200"],e["w-100"],e["w-full"]),children:s("ul",{className:i(e.flex,e["p-2"],e["rounded-sm"],e["w-full"]),children:s("div",{className:i(e.flex,e["flex-col"],e["w-full"]),style:{height:"auto",maxHeight:"350px"},children:d?.map((l,n)=>v(I,{children:[s("li",{className:i(e.flex+" "+e["text-gray-400"]),children:l.title},n),s("ul",{className:i(e.flex,e["flex-col"],e["ml-4"],e["w-full"]),children:l?.children?.map((t,r)=>s("li",{className:i(e.flex,e["hover:bg-gray-200"],e["focus:outline-none"],e["cursor-pointer"],e["w-full"]),onClick:async()=>{f&&f(l,t),m(!1),c(t.title)},children:t.title},r))})]}))})})}):s("div",{className:i(e["mt-1"],e.absolute,e["bg-gray-200"],e["p-2"],e["rounded-md"]),style:{zIndex:80,width:"100%"},children:s("span",{children:"Not Found Result!!"})}):null]})})};
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ /* eslint-disable */
3
+ import { useState, useEffect, useRef } from 'react';
4
+ import { Icon } from '../../Icon/Icon';
5
+ import s from '../../../tc.module.css';
6
+ import { cn } from '../../../utils';
7
+ export const AutocompleteGroupBy = ({ data = [], hasError = false, displayValue = '', onChange, onClose, }) => {
8
+ //const [userRouter, setUserRouter] = useState<any>()
9
+ const [value, setValue] = useState(displayValue);
10
+ const [options, setOptions] = useState();
11
+ const [isListOpen, setIsListOpen] = useState(false);
12
+ const useOutsideAlerter = (ref) => {
13
+ useEffect(() => {
14
+ function handleClickOutside(event) {
15
+ if (ref.current && !ref.current.contains(event.target) && isListOpen) {
16
+ setIsListOpen(false);
17
+ setValue('');
18
+ }
19
+ }
20
+ document.addEventListener('mousedown', handleClickOutside);
21
+ return () => {
22
+ document.removeEventListener('mousedown', handleClickOutside);
23
+ };
24
+ }, [ref, isListOpen]);
25
+ };
26
+ const wrapperRef = useRef(null);
27
+ useOutsideAlerter(wrapperRef);
28
+ useEffect(() => {
29
+ setValue(displayValue);
30
+ }, [displayValue]);
31
+ useEffect(() => {
32
+ setOptions(data || []);
33
+ }, [data]);
34
+ const uniqByKeepFirst = (a, key) => {
35
+ const seen = new Set();
36
+ return a.filter((item) => {
37
+ const k = key(item);
38
+ return seen.has(k) ? false : seen.add(k);
39
+ });
40
+ };
41
+ const filter = (search, data) => {
42
+ if (search !== '') {
43
+ let filterArray = [];
44
+ data.filter((item) => {
45
+ item.children.filter((children) => {
46
+ const childrenItem = children.title &&
47
+ children.title.toLowerCase().indexOf(search.toLowerCase()) > -1;
48
+ if (childrenItem) {
49
+ const isSameArray = filterArray.filter((filterItem, index) => {
50
+ if (filterItem.name === item.name) {
51
+ const newChildren = filterArray[index].children.concat(children);
52
+ filterArray[index] = {
53
+ ...filterArray[index],
54
+ children: newChildren,
55
+ };
56
+ }
57
+ });
58
+ if (isSameArray.length < 1) {
59
+ filterArray.push({ ...item, children: [children] });
60
+ }
61
+ const uniqueChars = uniqByKeepFirst(filterArray, (it) => it.name);
62
+ filterArray = uniqueChars;
63
+ }
64
+ });
65
+ });
66
+ setOptions(filterArray);
67
+ }
68
+ else {
69
+ setOptions(data);
70
+ }
71
+ };
72
+ const onChangeValue = (e) => {
73
+ const search = e.target.value;
74
+ setValue(search);
75
+ filter(search, data);
76
+ };
77
+ return (_jsx(_Fragment, { children: _jsxs("div", { ref: wrapperRef, className: cn(s['w-full'], s['relative']), children: [_jsxs("div", { className: cn(s['flex'], s['items-center'], s['leading-4'], s['p-2'], s['bg-white'], s['focus:outline-none'], s['focus:ring'], s['w-full'], s['shadow-sm'], s['sm:text-base'], s['border'], s['rounded-md'], {
78
+ [s['border-red']]: hasError,
79
+ [s['border-gray-300']]: !hasError,
80
+ }), children: [_jsx("input", { placeholder: "Search...", value: !isListOpen ? value : value, className: cn(s['w-full'], s['focus:outline-none']), onChange: onChangeValue, onClick: () => setIsListOpen(true), onKeyDown: (e) => {
81
+ if (e.key === 'Enter') {
82
+ e.preventDefault();
83
+ // Find the selected item and children
84
+ let selectedItem = null;
85
+ let selectedChildren = null;
86
+ for (const item of options) {
87
+ for (const children of item.children) {
88
+ if (children.title.toLowerCase() === value.toLowerCase() ||
89
+ item.title.toLowerCase() === value.toLowerCase()) {
90
+ selectedItem = item;
91
+ selectedChildren = children;
92
+ break;
93
+ }
94
+ }
95
+ if (selectedItem) {
96
+ break;
97
+ }
98
+ }
99
+ // Call props.onChange with the selected item and children
100
+ if (onChange && selectedItem && selectedChildren) {
101
+ onChange(selectedItem, selectedChildren);
102
+ }
103
+ setIsListOpen(false);
104
+ setValue(value);
105
+ }
106
+ } }), isListOpen ? (_jsx(Icon, { nameIcon: "FaChevronUp", propsIcon: {
107
+ size: 16,
108
+ } })) : (_jsx(Icon, { nameIcon: "FaChevronDown", propsIcon: {
109
+ size: 16,
110
+ } }))] }), options && isListOpen ? (options?.length > 0 ? (_jsx("div", { className: cn(s['flex'], s['mt-1'], s['absolute'], s['z-50'], s['rounded-md'], s['bg-gray-200'], s['w-100'], s['w-full']), children: _jsx("ul", { className: cn(s['flex'], s['p-2'], s['rounded-sm'], s['w-full']), children: _jsx("div", { className: cn(s['flex'], s['flex-col'], s['w-full']), style: { height: 'auto', maxHeight: '350px' }, children: options?.map((item, index) => (_jsxs(_Fragment, { children: [_jsx("li", { className: cn(s['flex'] + ' ' + s['text-gray-400']), children: item.title }, index), _jsx("ul", { className: cn(s['flex'], s['flex-col'], s['ml-4'], s['w-full']), children: item?.children?.map((children, childrenIndex) => (_jsx("li", { className: cn(s['flex'], s['hover:bg-gray-200'], s['focus:outline-none'], s['cursor-pointer'], s['w-full']), onClick: async () => {
111
+ onChange && onChange(item, children);
112
+ setIsListOpen(false);
113
+ setValue(children.title);
114
+ }, children: children.title }, childrenIndex))) })] }))) }) }) })) : (_jsx("div", { className: cn(s['mt-1'], s['absolute'], s['bg-gray-200'], s['p-2'], s['rounded-md']), style: { zIndex: 80, width: '100%' }, children: _jsx("span", { children: "Not Found Result!!" }) }))) : null] }) }));
115
+ };