intelicoreact 1.5.38 → 1.5.41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (519) hide show
  1. package/dist/Atomic/FormElements/ActionAlert/ActionAlert.js +44 -93
  2. package/dist/Atomic/FormElements/ActionAlert/ActionAlert.scss +13 -23
  3. package/dist/Atomic/FormElements/AdvancedStatus/AdvancedStatus.js +38 -43
  4. package/dist/Atomic/FormElements/AdvancedStatus/AdvancedStatus.scss +10 -20
  5. package/dist/Atomic/FormElements/Calendar/Calendar.js +164 -243
  6. package/dist/Atomic/FormElements/Calendar/Calendar.scss +0 -1
  7. package/dist/Atomic/FormElements/CheckboxInput/CheckboxInput.js +51 -60
  8. package/dist/Atomic/FormElements/CheckboxInput/CheckboxInput.scss +15 -25
  9. package/dist/Atomic/FormElements/CheckboxesLine/CheckboxesLine.js +39 -47
  10. package/dist/Atomic/FormElements/CheckboxesLine/CheckboxesLine.scss +2 -5
  11. package/dist/Atomic/FormElements/Datepicker/Datepicker.js +308 -410
  12. package/dist/Atomic/FormElements/Datepicker/components/Calendar.js +109 -169
  13. package/dist/Atomic/FormElements/Dropdown/Dropdown.js +527 -680
  14. package/dist/Atomic/FormElements/Dropdown/Dropdown.scss +59 -61
  15. package/dist/Atomic/FormElements/Dropdown/components/DropdownLoader.js +15 -28
  16. package/dist/Atomic/FormElements/DropdownLiveSearch/DropdownLiveSearch.js +378 -498
  17. package/dist/Atomic/FormElements/DropdownLiveSearch/DropdownLiveSearch.scss +32 -36
  18. package/dist/Atomic/FormElements/FileLoader/FileLoader.js +70 -103
  19. package/dist/Atomic/FormElements/FileLoader/FileLoader.scss +2 -0
  20. package/dist/Atomic/FormElements/FileLoader/partial/LoadZone.js +91 -138
  21. package/dist/Atomic/FormElements/FileLoader/partial/LoadedContent.js +55 -109
  22. package/dist/Atomic/FormElements/FileLoaderDescription/FileLoaderDescription.js +193 -254
  23. package/dist/Atomic/FormElements/FileLoaderDescription/FileLoaderDescription.scss +16 -19
  24. package/dist/Atomic/FormElements/FileLoaderLocal/FileLoaderLocal.js +140 -156
  25. package/dist/Atomic/FormElements/FileLoaderLocal/FileLoaderLocal.scss +4 -8
  26. package/dist/Atomic/FormElements/FileLoaderLocalGroup/FileLoaderLocalGroup.js +156 -222
  27. package/dist/Atomic/FormElements/FormattedRawSSN/FormattedRawSSN.js +114 -158
  28. package/dist/Atomic/FormElements/FormattedRawSSN/FormattedRawSSN_old.js +92 -151
  29. package/dist/Atomic/FormElements/Input/Input.js +330 -340
  30. package/dist/Atomic/FormElements/Input/Input.scss +1 -1
  31. package/dist/Atomic/FormElements/InputCalendar/InputCalendar.js +110 -156
  32. package/dist/Atomic/FormElements/InputColor/InputColor.js +58 -57
  33. package/dist/Atomic/FormElements/InputCurrency/InputCurrency.js +145 -188
  34. package/dist/Atomic/FormElements/InputDateRange/InputDateRange.js +228 -294
  35. package/dist/Atomic/FormElements/InputDateRange/InputDateRange.scss +2 -1
  36. package/dist/Atomic/FormElements/InputDateRange/components/DateInput.js +56 -55
  37. package/dist/Atomic/FormElements/InputDateRange/components/Datepicker.js +536 -645
  38. package/dist/Atomic/FormElements/InputDateRange/components/OpenedPart.js +190 -220
  39. package/dist/Atomic/FormElements/InputDateRange/components/SelectItem.js +31 -33
  40. package/dist/Atomic/FormElements/InputDateRange/dependencies.js +169 -247
  41. package/dist/Atomic/FormElements/InputLink/InputLink.js +71 -118
  42. package/dist/Atomic/FormElements/InputMask/InputCarretPosition.js +38 -47
  43. package/dist/Atomic/FormElements/InputMask/InputMask.js +1053 -938
  44. package/dist/Atomic/FormElements/InputMask/config.js +15 -16
  45. package/dist/Atomic/FormElements/InputMask/functions.js +51 -77
  46. package/dist/Atomic/FormElements/InputMask2/InputMask2.js +592 -569
  47. package/dist/Atomic/FormElements/InputMask2/config.js +15 -16
  48. package/dist/Atomic/FormElements/InputMask2/functions.js +51 -77
  49. package/dist/Atomic/FormElements/InputMask3/InputMask3.js +679 -651
  50. package/dist/Atomic/FormElements/InputMask3/config.js +15 -16
  51. package/dist/Atomic/FormElements/InputMask3/functions.js +51 -77
  52. package/dist/Atomic/FormElements/InputWithAction/InputWithAction.js +88 -127
  53. package/dist/Atomic/FormElements/InputWithAction/InputWithAction.scss +1 -1
  54. package/dist/Atomic/FormElements/InputsRow/InputsRow.js +111 -182
  55. package/dist/Atomic/FormElements/Label/Label.js +55 -82
  56. package/dist/Atomic/FormElements/Label/Label.scss +8 -18
  57. package/dist/Atomic/FormElements/MobileCalendar/MobileCalendar.js +382 -437
  58. package/dist/Atomic/FormElements/MobileCalendar/MobileCalendar.scss +3 -3
  59. package/dist/Atomic/FormElements/MultiSelect/MultiSelect.js +50 -88
  60. package/dist/Atomic/FormElements/NumericInput/NumericInput.js +264 -314
  61. package/dist/Atomic/FormElements/NumericInput/NumericInput.scss +1 -1
  62. package/dist/Atomic/FormElements/RadioGroup/RadioGroup.js +51 -93
  63. package/dist/Atomic/FormElements/RadioGroupWithInput/RadioGroupWithInput.js +55 -69
  64. package/dist/Atomic/FormElements/RadioInput/RadioInput.js +45 -51
  65. package/dist/Atomic/FormElements/RadioInput/RadioInput.scss +4 -4
  66. package/dist/Atomic/FormElements/RadioRowSwitcher/RadioRowSwitcher.js +40 -53
  67. package/dist/Atomic/FormElements/RangeCalendar/RangeCalendar.js +120 -169
  68. package/dist/Atomic/FormElements/RangeInputs/RangeInputs.js +141 -195
  69. package/dist/Atomic/FormElements/RangeList/RangeList.js +140 -199
  70. package/dist/Atomic/FormElements/RangeList/RangeList.scss +2 -2
  71. package/dist/Atomic/FormElements/RangeList/partial/AnyOuterClass.scss +4 -1
  72. package/dist/Atomic/FormElements/RangeList/partial/RangeListRow.js +44 -57
  73. package/dist/Atomic/FormElements/RangeSlider/RangeSlider.js +377 -463
  74. package/dist/Atomic/FormElements/RangeSlider/RangeSlider.scss +1 -1
  75. package/dist/Atomic/FormElements/RangeSlider2/RangeSlider2.js +759 -760
  76. package/dist/Atomic/FormElements/RangeSlider2/RangeSlider2.scss +9 -9
  77. package/dist/Atomic/FormElements/SwitchableRow/SwitchableRow.js +31 -36
  78. package/dist/Atomic/FormElements/SwitchableRow/SwitchableRow.scss +2 -0
  79. package/dist/Atomic/FormElements/SwitchableRow/partial/AnyOuterClass.scss +1 -1
  80. package/dist/Atomic/FormElements/Switcher/Switcher.js +44 -52
  81. package/dist/Atomic/FormElements/Switcher/Switcher.scss +3 -3
  82. package/dist/Atomic/FormElements/SwitcherCheckbox/SwitcherCheckbox.js +44 -43
  83. package/dist/Atomic/FormElements/SwitcherCheckbox/SwitcherCheckbox.scss +2 -0
  84. package/dist/Atomic/FormElements/SwitcherHide/SwitcherHide.js +36 -37
  85. package/dist/Atomic/FormElements/SwitcherHide/SwitcherHide.scss +2 -0
  86. package/dist/Atomic/FormElements/SwitcherRadio/SwitcherRadio.js +56 -93
  87. package/dist/Atomic/FormElements/SwitcherRadio/SwitcherRadio.scss +2 -0
  88. package/dist/Atomic/FormElements/SwitcherRange/SwitcherRange.js +53 -86
  89. package/dist/Atomic/FormElements/SwitcherRange/SwitcherRange.scss +2 -0
  90. package/dist/Atomic/FormElements/SwitcherRangeList/SwitcherRangeList.js +54 -46
  91. package/dist/Atomic/FormElements/SwitcherRangeList/partial/AnyOuterClass.scss +1 -1
  92. package/dist/Atomic/FormElements/SwitcherTagsDropdown/SwitcherTagsDropdown.js +102 -172
  93. package/dist/Atomic/FormElements/SwitcherTagsDropdown/SwitcherTagsDropdown.scss +6 -4
  94. package/dist/Atomic/FormElements/SwitcherTagsDropdown/partial/States.js +154 -209
  95. package/dist/Atomic/FormElements/SwitcherTextarea/SwitcherTextarea.js +56 -59
  96. package/dist/Atomic/FormElements/SwitcherTextarea/SwitcherTextarea.scss +2 -2
  97. package/dist/Atomic/FormElements/TagListToDropdown/TagListToDropdown.js +112 -140
  98. package/dist/Atomic/FormElements/TagsDropdown/TagsDropdown.js +919 -1035
  99. package/dist/Atomic/FormElements/TagsDropdown/TagsDropdown.scss +119 -155
  100. package/dist/Atomic/FormElements/Text/Text.js +97 -88
  101. package/dist/Atomic/FormElements/TextSwitcher/TextSwitcher.js +35 -44
  102. package/dist/Atomic/FormElements/TextSwitcher/TextSwitcher.scss +8 -8
  103. package/dist/Atomic/FormElements/Textarea/Textarea.js +64 -102
  104. package/dist/Atomic/FormElements/Textarea/Textarea.scss +8 -4
  105. package/dist/Atomic/FormElements/TieredCheckboxes/TieredCheckboxes.js +133 -172
  106. package/dist/Atomic/FormElements/TieredCheckboxes/partial/AccordionWithCheckbox.js +49 -48
  107. package/dist/Atomic/FormElements/TimeRange/TimeRange.js +63 -114
  108. package/dist/Atomic/FormElements/TimeRange/TimeRange.scss +3 -9
  109. package/dist/Atomic/FormElements/UserContacts/UserContacts.js +122 -179
  110. package/dist/Atomic/FormElements/UserContacts/UserContacts.scss +5 -10
  111. package/dist/Atomic/FormElements/UserContacts/partial/AnyOuterClass.scss +1 -1
  112. package/dist/Atomic/FormElements/VariantsListRadio/VariantsListRadio.js +65 -101
  113. package/dist/Atomic/FormElements/VariantsListRadio/VariantsListRadio.scss +12 -4
  114. package/dist/Atomic/FormElements/VariantsListRadio/partials/VariantsListRadioItem.js +71 -80
  115. package/dist/Atomic/FormElements/WidgetPseudoTable/WidgetPseudoTable.js +64 -79
  116. package/dist/Atomic/FormElements/WidgetPseudoTable/WidgetPseudoTable.scss +3 -1
  117. package/dist/Atomic/FormElements/WidgetPseudoTable/partial/AnyOuterClass.scss +1 -1
  118. package/dist/Atomic/FormElements/WidgetPseudoTable/partial/constructor.js +34 -42
  119. package/dist/Atomic/FormElements/WidgetWithSwitchableRows/WidgetWithSwitchableRows.js +83 -102
  120. package/dist/Atomic/FormElements/WidgetWithSwitchableRows/WidgetWithSwitchableRows.scss +3 -1
  121. package/dist/Atomic/FormElements/WidgetWithSwitchableRows/partial/AnyOuterClass.scss +1 -1
  122. package/dist/Atomic/FormElements/WidgetWithSwitchableRows/partial/constructor.js +35 -42
  123. package/dist/Atomic/Layout/Header/Header.js +80 -148
  124. package/dist/Atomic/Layout/Header/Header.scss +1 -1
  125. package/dist/Atomic/Layout/MainMenu/MainMenu.js +133 -213
  126. package/dist/Atomic/Layout/MainMenu/MainMenu.scss +9 -9
  127. package/dist/Atomic/Layout/Spinner/Spinner.js +22 -39
  128. package/dist/Atomic/Layout/Spinner/Spinner.scss +16 -32
  129. package/dist/Atomic/UI/Accordion/Accordion.js +52 -102
  130. package/dist/Atomic/UI/Accordion/Accordion.scss +14 -25
  131. package/dist/Atomic/UI/Accordion/AccordionItem.js +102 -170
  132. package/dist/Atomic/UI/AccordionTable/AccordionTable.js +167 -251
  133. package/dist/Atomic/UI/AccordionText/AccordionText.js +54 -105
  134. package/dist/Atomic/UI/AccordionText/AccordionText.scss +9 -22
  135. package/dist/Atomic/UI/AdvancedTag/AdvTag.js +135 -207
  136. package/dist/Atomic/UI/AdvancedTag/AdvancedTags.js +46 -100
  137. package/dist/Atomic/UI/AdvancedTag/AdvancedTags.scss +2 -2
  138. package/dist/Atomic/UI/Alert/Alert.js +63 -116
  139. package/dist/Atomic/UI/Alert/Alert.scss +2 -2
  140. package/dist/Atomic/UI/Arrow/Arrow.js +110 -163
  141. package/dist/Atomic/UI/Box/Box.js +37 -37
  142. package/dist/Atomic/UI/Box/Box.scss +11 -11
  143. package/dist/Atomic/UI/Button/Button.js +41 -43
  144. package/dist/Atomic/UI/ButtonsBar/ButtonsBar.js +67 -61
  145. package/dist/Atomic/UI/Chart/Chart.js +96 -170
  146. package/dist/Atomic/UI/Chart/partial/Chart.constants.js +74 -142
  147. package/dist/Atomic/UI/Chart/partial/ChartTypeSwitcherIcon/ChartTypeSwitcherIcon.js +77 -91
  148. package/dist/Atomic/UI/Chart/partial/datasetSetters.js +117 -120
  149. package/dist/Atomic/UI/Chart/partial/optionsConstructor.js +292 -314
  150. package/dist/Atomic/UI/Chart/partial/optionsSetters.js +39 -54
  151. package/dist/Atomic/UI/Chart/partial/utils.js +33 -56
  152. package/dist/Atomic/UI/CircleProgressBar/CircleProgressBar.js +88 -145
  153. package/dist/Atomic/UI/DateTime/DateTime.js +37 -89
  154. package/dist/Atomic/UI/DateTime/DateTime.scss +2 -2
  155. package/dist/Atomic/UI/DateTime/partial/AnyOuterClass.scss +1 -1
  156. package/dist/Atomic/UI/DebugContainer/DebugContainer.js +31 -93
  157. package/dist/Atomic/UI/DebugContainer/useDebugContainer.js +18 -66
  158. package/dist/Atomic/UI/DoubleString/DoubleString.js +77 -134
  159. package/dist/Atomic/UI/DoubleString/DoubleString.scss +4 -6
  160. package/dist/Atomic/UI/DoubleString/partial/AnyOuterClass.scss +1 -1
  161. package/dist/Atomic/UI/DynamicIcon/DynamicIcon.js +22 -65
  162. package/dist/Atomic/UI/ExampleChartIntegration/ExampleChartIntegration.js +170 -251
  163. package/dist/Atomic/UI/ExampleChartIntegration/partial/AnyOuterClass.scss +1 -1
  164. package/dist/Atomic/UI/ExampleChartIntegration/partial/utils.js +84 -109
  165. package/dist/Atomic/UI/Hint/Hint.js +202 -243
  166. package/dist/Atomic/UI/Hint/Hint.scss +3 -5
  167. package/dist/Atomic/UI/Hint/partials/_utils.js +42 -54
  168. package/dist/Atomic/UI/Modal/Modal.js +172 -171
  169. package/dist/Atomic/UI/Modal/Modal.scss +69 -91
  170. package/dist/Atomic/UI/Modal/ModalHOC.js +38 -92
  171. package/dist/Atomic/UI/Modal/ModalMobile.scss +14 -24
  172. package/dist/Atomic/UI/Modal/partials/ModalFooter.js +18 -68
  173. package/dist/Atomic/UI/Modal/partials/ModalTitle.js +38 -107
  174. package/dist/Atomic/UI/Modal/partials/useMobileModal.js +153 -130
  175. package/dist/Atomic/UI/MonoAccordion/MonoAccordion.js +62 -118
  176. package/dist/Atomic/UI/MonoAccordion/MonoAccordion.scss +25 -163
  177. package/dist/Atomic/UI/NavLine/NavLine.js +273 -306
  178. package/dist/Atomic/UI/NavLine/NavLine.scss +155 -195
  179. package/dist/Atomic/UI/NavLine/Tabs.js +115 -0
  180. package/dist/Atomic/UI/PageTitle/PageTitle.js +52 -73
  181. package/dist/Atomic/UI/PageTitle/PageTitle.scss +14 -52
  182. package/dist/Atomic/UI/PieChart/PieChart.js +42 -105
  183. package/dist/Atomic/UI/PieChart/PieChart.scss +11 -86
  184. package/dist/Atomic/UI/Price/Price.js +20 -27
  185. package/dist/Atomic/UI/PriceRange/PriceRange.js +18 -40
  186. package/dist/Atomic/UI/ProgressLine/ProgressLine.js +73 -92
  187. package/dist/Atomic/UI/ProgressLine/ProgressLine.scss +71 -85
  188. package/dist/Atomic/UI/Status/Status.js +51 -62
  189. package/dist/Atomic/UI/Status/Status.scss +29 -48
  190. package/dist/Atomic/UI/Table/Partials/TdCell.js +88 -126
  191. package/dist/Atomic/UI/Table/Partials/TdHeader.js +39 -58
  192. package/dist/Atomic/UI/Table/Partials/TdRow.js +73 -124
  193. package/dist/Atomic/UI/Table/Partials/TdTitle.js +45 -113
  194. package/dist/Atomic/UI/Table/Table.js +43 -61
  195. package/dist/Atomic/UI/Table/Table.scss +3 -0
  196. package/dist/Atomic/UI/Table/TdTypes/TdActions.js +64 -108
  197. package/dist/Atomic/UI/Table/TdTypes/TdPriority.js +31 -44
  198. package/dist/Atomic/UI/Table/TdTypes/TdRange.js +10 -24
  199. package/dist/Atomic/UI/Table/TdTypes/TdWeight.js +48 -59
  200. package/dist/Atomic/UI/Tag/Tag.js +113 -157
  201. package/dist/Atomic/UI/Tag/Tag.scss +48 -102
  202. package/dist/Atomic/UI/TagList/TagList.js +179 -223
  203. package/dist/Atomic/UI/TagList/TagList.scss +9 -13
  204. package/dist/Atomic/UI/UserBox/UserBox.js +56 -80
  205. package/dist/Atomic/UI/UserBox/UserBox.scss +21 -45
  206. package/dist/Atomic/UI/WizardStepper/constructor.js +89 -127
  207. package/dist/Atomic/UI/WizardStepper/index.js +6 -14
  208. package/dist/Atomic/UI/WizardStepper/ui/StateIcon/StateIcon.js +51 -53
  209. package/dist/Atomic/UI/WizardStepper/ui/StateIcon/StateIcon.scss +7 -11
  210. package/dist/Atomic/UI/WizardStepper/ui/StateIcon/index.js +5 -9
  211. package/dist/Atomic/UI/WizardStepper/ui/StepRow/StepRow.js +67 -84
  212. package/dist/Atomic/UI/WizardStepper/ui/StepRow/StepRow.scss +7 -13
  213. package/dist/Atomic/UI/WizardStepper/ui/StepRow/index.js +6 -14
  214. package/dist/Atomic/UI/WizardStepper/ui/StepWrapper/StepWrapper.js +45 -50
  215. package/dist/Atomic/UI/WizardStepper/ui/StepWrapper/StepWrapper.scss +18 -24
  216. package/dist/Atomic/UI/WizardStepper/ui/StepWrapper/index.js +6 -14
  217. package/dist/Atomic/UI/WizardStepper/ui/icons.js +106 -138
  218. package/dist/Atomic/UI/WizardStepper/ui/index.js +6 -14
  219. package/dist/Classes/AbortableFetch.js +326 -394
  220. package/dist/Classes/AnimatedHandler.js +44 -31
  221. package/dist/Classes/RESTAPI/index.js +173 -131
  222. package/dist/Classes/RESTAPI/partials/AbortableFetch.js +334 -399
  223. package/dist/Classes/RESTAPI/partials/ApiBase.js +30 -30
  224. package/dist/Classes/RESTAPI/partials/ApiRequestCreators.js +88 -107
  225. package/dist/Classes/RESTAPI/partials/ApiUtils.js +166 -144
  226. package/dist/Classes/RESTAPI/partials/CredentialsProcessing.js +204 -180
  227. package/dist/Classes/RESTAPI/partials/Utils.js +83 -80
  228. package/dist/Classes/RESTAPI/partials/_outerDependencies.js +8 -16
  229. package/dist/Classes/RESTAPI/partials/_utils.js +125 -139
  230. package/dist/Constants/index.constants.js +22 -102
  231. package/dist/Functions/Portal.js +23 -67
  232. package/dist/Functions/animatingFunctions/getAnimatedHandler.js +1 -1
  233. package/dist/Functions/customEventListener.js +50 -48
  234. package/dist/Functions/dateTime.js +177 -130
  235. package/dist/Functions/fieldValueFormatters.js +346 -275
  236. package/dist/Functions/hooks/useFormFieldsChangesManager.js +96 -125
  237. package/dist/Functions/locale/createTranslator.js +27 -29
  238. package/dist/Functions/operations.js +102 -129
  239. package/dist/Functions/presets/inputMaskPresets.js +99 -88
  240. package/dist/Functions/presets/inputPresets.js +35 -41
  241. package/dist/Functions/presets/mobileKeyboardTypesPresets.js +49 -30
  242. package/dist/Functions/schemas.js +20 -78
  243. package/dist/Functions/useBodyScrollLock.js +15 -21
  244. package/dist/Functions/useClickOutside.js +16 -21
  245. package/dist/Functions/useDebounce.js +21 -62
  246. package/dist/Functions/useFieldFocus.js +79 -83
  247. package/dist/Functions/useFormTools/form-drivers/ArrayWithObjects.js +46 -39
  248. package/dist/Functions/useFormTools/form-drivers/ObjectWithIterableObjects.js +137 -132
  249. package/dist/Functions/useFormTools/form-drivers/ObjectWithNamedKeyObjects.js +73 -63
  250. package/dist/Functions/useFormTools/functions/General.js +129 -117
  251. package/dist/Functions/useFormTools/functions/RenderFields.js +85 -75
  252. package/dist/Functions/useFormTools/functions/usePrevious.js +10 -16
  253. package/dist/Functions/useFormTools/index.js +709 -647
  254. package/dist/Functions/useInputHighlightError.js +53 -104
  255. package/dist/Functions/useIsMobile.js +26 -0
  256. package/dist/Functions/useKeyPress/useHandleKeyPress.js +33 -40
  257. package/dist/Functions/useKeyPress/useKeyPress.js +39 -48
  258. package/dist/Functions/useLocalStorage.js +31 -38
  259. package/dist/Functions/useLocationParams.js +24 -31
  260. package/dist/Functions/useMediaQuery.js +10 -14
  261. package/dist/Functions/useMetaInfo.js +35 -45
  262. package/dist/Functions/useMouseUpOutside.js +15 -21
  263. package/dist/Functions/useOnlineStatus.js +21 -25
  264. package/dist/Functions/usePasswordChecker.js +111 -183
  265. package/dist/Functions/usePrevious.js +10 -16
  266. package/dist/Functions/useResize.js +28 -32
  267. package/dist/Functions/useScrollTo.js +16 -26
  268. package/dist/Functions/useToggle.js +16 -20
  269. package/dist/Functions/utils.js +469 -493
  270. package/dist/Molecular/CustomIcons/components/AffiliateNetworks.js +28 -75
  271. package/dist/Molecular/CustomIcons/components/AlertCircle.js +28 -77
  272. package/dist/Molecular/CustomIcons/components/AppStore.js +32 -84
  273. package/dist/Molecular/CustomIcons/components/Arrow.js +38 -93
  274. package/dist/Molecular/CustomIcons/components/ArrowDown.js +20 -63
  275. package/dist/Molecular/CustomIcons/components/ArrowLeft.js +23 -71
  276. package/dist/Molecular/CustomIcons/components/ArrowRight.js +23 -71
  277. package/dist/Molecular/CustomIcons/components/ArrowUp.js +20 -63
  278. package/dist/Molecular/CustomIcons/components/Bell.js +18 -61
  279. package/dist/Molecular/CustomIcons/components/Button.js +18 -61
  280. package/dist/Molecular/CustomIcons/components/Campaigns.js +19 -62
  281. package/dist/Molecular/CustomIcons/components/Check.js +19 -62
  282. package/dist/Molecular/CustomIcons/components/Check2.js +18 -61
  283. package/dist/Molecular/CustomIcons/components/ChevronDown.js +18 -61
  284. package/dist/Molecular/CustomIcons/components/ChevronDownDisabled.js +18 -61
  285. package/dist/Molecular/CustomIcons/components/ChevronLeft.js +18 -61
  286. package/dist/Molecular/CustomIcons/components/ChevronRight.js +18 -61
  287. package/dist/Molecular/CustomIcons/components/ChevronUp.js +18 -61
  288. package/dist/Molecular/CustomIcons/components/ChevronUpDown.js +33 -81
  289. package/dist/Molecular/CustomIcons/components/Close.js +20 -64
  290. package/dist/Molecular/CustomIcons/components/ColumnsOrder.js +45 -95
  291. package/dist/Molecular/CustomIcons/components/Delete.js +19 -62
  292. package/dist/Molecular/CustomIcons/components/Edit.js +18 -61
  293. package/dist/Molecular/CustomIcons/components/Email.js +36 -87
  294. package/dist/Molecular/CustomIcons/components/FinturfLogo.js +26 -82
  295. package/dist/Molecular/CustomIcons/components/FinturfLogo2.js +34 -83
  296. package/dist/Molecular/CustomIcons/components/Flows.js +18 -61
  297. package/dist/Molecular/CustomIcons/components/Gift.js +23 -71
  298. package/dist/Molecular/CustomIcons/components/GoogleAuth.js +32 -84
  299. package/dist/Molecular/CustomIcons/components/GooglePlay.js +32 -84
  300. package/dist/Molecular/CustomIcons/components/HelpCircle.js +21 -67
  301. package/dist/Molecular/CustomIcons/components/HelpCircle2.js +22 -68
  302. package/dist/Molecular/CustomIcons/components/HelpCircleFilled.js +21 -67
  303. package/dist/Molecular/CustomIcons/components/Home.js +21 -67
  304. package/dist/Molecular/CustomIcons/components/Home2.js +24 -70
  305. package/dist/Molecular/CustomIcons/components/Key.js +26 -69
  306. package/dist/Molecular/CustomIcons/components/Landers.js +22 -68
  307. package/dist/Molecular/CustomIcons/components/Lock.js +18 -61
  308. package/dist/Molecular/CustomIcons/components/Mail.js +26 -75
  309. package/dist/Molecular/CustomIcons/components/Mastercard.js +68 -128
  310. package/dist/Molecular/CustomIcons/components/Minus.js +31 -79
  311. package/dist/Molecular/CustomIcons/components/Offers.js +19 -62
  312. package/dist/Molecular/CustomIcons/components/Pause.js +31 -79
  313. package/dist/Molecular/CustomIcons/components/PayPal.js +45 -96
  314. package/dist/Molecular/CustomIcons/components/PayPalLightLarge.js +32 -81
  315. package/dist/Molecular/CustomIcons/components/Phone.js +33 -81
  316. package/dist/Molecular/CustomIcons/components/Play.js +31 -79
  317. package/dist/Molecular/CustomIcons/components/Plus.js +31 -79
  318. package/dist/Molecular/CustomIcons/components/Profile.js +23 -69
  319. package/dist/Molecular/CustomIcons/components/QRCode.js +33 -85
  320. package/dist/Molecular/CustomIcons/components/Rectangle.js +18 -61
  321. package/dist/Molecular/CustomIcons/components/Revert.js +21 -67
  322. package/dist/Molecular/CustomIcons/components/Star.js +17 -60
  323. package/dist/Molecular/CustomIcons/components/Star2.js +19 -62
  324. package/dist/Molecular/CustomIcons/components/TrafficSources.js +21 -68
  325. package/dist/Molecular/CustomIcons/components/Trash.js +18 -61
  326. package/dist/Molecular/CustomIcons/components/TrashRed.js +18 -61
  327. package/dist/Molecular/CustomIcons/components/Triggers.js +18 -61
  328. package/dist/Molecular/CustomIcons/components/User.js +23 -71
  329. package/dist/Molecular/CustomIcons/components/Visa.js +34 -88
  330. package/dist/Molecular/CustomIcons/components/X.js +18 -61
  331. package/dist/Molecular/CustomIcons/index.js +674 -76
  332. package/dist/Molecular/FormElement/FormElement.js +41 -44
  333. package/dist/Molecular/FormWithDependOn/FormWithDependOn.js +161 -179
  334. package/dist/Molecular/FormWithDependOn/partials/_utils.js +56 -49
  335. package/dist/Molecular/InputAddress/InputAddress.js +421 -496
  336. package/dist/Molecular/InputAddress/InputAddress.scss +16 -14
  337. package/dist/Molecular/InputPassword/InputPassword.js +47 -99
  338. package/dist/index.js +8 -11
  339. package/dist/scss/_fonts.scss +60 -48
  340. package/dist/scss/_mixins.scss +2 -2
  341. package/dist/scss/_vars.scss +5 -4
  342. package/dist/scss/main.scss +4 -5
  343. package/package.json +21 -18
  344. package/dist/Atomic/FormElements/ActionAlert/ActionAlert.interface.js +0 -4
  345. package/dist/Atomic/FormElements/ActionAlert/ActionAlert.stories.js +0 -89
  346. package/dist/Atomic/FormElements/ActionAlert/ActionAlert.test.js +0 -130
  347. package/dist/Atomic/FormElements/ActionAlert/index.js +0 -17
  348. package/dist/Atomic/FormElements/AdvancedStatus/AdvancedStatus.interface.js +0 -4
  349. package/dist/Atomic/FormElements/AdvancedStatus/AdvancedStatus.stories.js +0 -81
  350. package/dist/Atomic/FormElements/AdvancedStatus/AdvancedStatus.test.js +0 -104
  351. package/dist/Atomic/FormElements/AdvancedStatus/index.js +0 -17
  352. package/dist/Atomic/FormElements/Calendar/Calendar.props.js +0 -4
  353. package/dist/Atomic/FormElements/Calendar/Calendar.stories.js +0 -108
  354. package/dist/Atomic/FormElements/CheckboxInput/CheckboxInput.interface.js +0 -4
  355. package/dist/Atomic/FormElements/CheckboxInput/CheckboxInput.stories.js +0 -100
  356. package/dist/Atomic/FormElements/CheckboxInput/CheckboxInput.test.js +0 -143
  357. package/dist/Atomic/FormElements/CheckboxInput/index.js +0 -17
  358. package/dist/Atomic/FormElements/CheckboxesLine/CheckboxesLine.interface.js +0 -4
  359. package/dist/Atomic/FormElements/CheckboxesLine/CheckboxesLine.stories.js +0 -94
  360. package/dist/Atomic/FormElements/CheckboxesLine/CheckboxesLine.test.js +0 -177
  361. package/dist/Atomic/FormElements/CheckboxesLine/index.js +0 -17
  362. package/dist/Atomic/FormElements/Datepicker/Datepicker.stories.js +0 -51
  363. package/dist/Atomic/FormElements/Dropdown/Dropdown.stories.js +0 -596
  364. package/dist/Atomic/FormElements/DropdownLiveSearch/DropdownLiveSearch.stories.js +0 -272
  365. package/dist/Atomic/FormElements/FileLoader/FileLoader.stories.js +0 -182
  366. package/dist/Atomic/FormElements/FileLoaderDescription/FileLoaderDescription.stories.js +0 -327
  367. package/dist/Atomic/FormElements/FileLoaderLocal/FileLoaderLocal.stories.js +0 -186
  368. package/dist/Atomic/FormElements/FileLoaderLocalGroup/FileLoaderLocalGroup.stories.js +0 -84
  369. package/dist/Atomic/FormElements/FormattedRawSSN/FormattedRawSSN.stories.js +0 -107
  370. package/dist/Atomic/FormElements/Input/Input.stories.js +0 -251
  371. package/dist/Atomic/FormElements/InputCalendar/InputCalendar.stories.js +0 -115
  372. package/dist/Atomic/FormElements/InputColor/InputColor.stories.js +0 -119
  373. package/dist/Atomic/FormElements/InputCurrency/InputCurrency.interface.js +0 -4
  374. package/dist/Atomic/FormElements/InputCurrency/InputCurrency.stories.js +0 -178
  375. package/dist/Atomic/FormElements/InputCurrency/InputCurrency.test.js +0 -129
  376. package/dist/Atomic/FormElements/InputCurrency/index.js +0 -16
  377. package/dist/Atomic/FormElements/InputDateRange/InputDateRange.stories.js +0 -123
  378. package/dist/Atomic/FormElements/InputLink/InputLink.stories.js +0 -140
  379. package/dist/Atomic/FormElements/InputMask/InputMask.stories.js +0 -303
  380. package/dist/Atomic/FormElements/InputMask2/InputMask2.stories.js +0 -314
  381. package/dist/Atomic/FormElements/InputMask3/InputMask3.stories.js +0 -335
  382. package/dist/Atomic/FormElements/InputWithAction/InputWithAction.stories.js +0 -276
  383. package/dist/Atomic/FormElements/InputsRow/InputsRow.stories.js +0 -56
  384. package/dist/Atomic/FormElements/Label/Label.interface.js +0 -4
  385. package/dist/Atomic/FormElements/Label/Label.stories.js +0 -47
  386. package/dist/Atomic/FormElements/Label/Label.test.js +0 -167
  387. package/dist/Atomic/FormElements/Label/index.js +0 -17
  388. package/dist/Atomic/FormElements/MobileCalendar/MobileCalendar.stories.js +0 -172
  389. package/dist/Atomic/FormElements/MultiSelect/MultiSelect.stories.js +0 -121
  390. package/dist/Atomic/FormElements/NumericInput/NumericInput.stories.js +0 -184
  391. package/dist/Atomic/FormElements/RadioGroup/RadioGroup.stories.js +0 -79
  392. package/dist/Atomic/FormElements/RadioGroupWithInput/RadioGroupWithInput.stories.js +0 -151
  393. package/dist/Atomic/FormElements/RadioInput/RadioInput.stories.js +0 -67
  394. package/dist/Atomic/FormElements/RadioRowSwitcher/RadioRowSwitcher.stories.js +0 -116
  395. package/dist/Atomic/FormElements/RangeCalendar/RangeCalendar.stories.js +0 -107
  396. package/dist/Atomic/FormElements/RangeInputs/RangeInputs.stories.js +0 -92
  397. package/dist/Atomic/FormElements/RangeList/RangeList.stories.js +0 -169
  398. package/dist/Atomic/FormElements/RangeSlider/RangeSlider.stories.js +0 -401
  399. package/dist/Atomic/FormElements/RangeSlider2/RangeSlider2.stories.js +0 -314
  400. package/dist/Atomic/FormElements/SwitchableRow/SwitchableRow.stories.js +0 -137
  401. package/dist/Atomic/FormElements/Switcher/Switcher.stories.js +0 -91
  402. package/dist/Atomic/FormElements/SwitcherCheckbox/SwitcherCheckbox.stories.js +0 -104
  403. package/dist/Atomic/FormElements/SwitcherHide/SwitcherHide.stories.js +0 -96
  404. package/dist/Atomic/FormElements/SwitcherRadio/SwitcherRadio.stories.js +0 -140
  405. package/dist/Atomic/FormElements/SwitcherRange/SwitcherRange.stories.js +0 -112
  406. package/dist/Atomic/FormElements/SwitcherRangeList/SwitcherRangeList.stories.js +0 -145
  407. package/dist/Atomic/FormElements/SwitcherTagsDropdown/SwitcherTagsDropdown.stories.js +0 -158
  408. package/dist/Atomic/FormElements/SwitcherTextarea/SwitcherTextarea.stories.js +0 -101
  409. package/dist/Atomic/FormElements/TagListToDropdown/TagListToDropdown.stories.js +0 -131
  410. package/dist/Atomic/FormElements/TagsDropdown/TagsDropdown.stories.js +0 -357
  411. package/dist/Atomic/FormElements/Text/Text.stories.js +0 -80
  412. package/dist/Atomic/FormElements/TextSwitcher/TextSwitcher.stories.js +0 -106
  413. package/dist/Atomic/FormElements/TextSwitcher/TextSwitcher.test.js +0 -93
  414. package/dist/Atomic/FormElements/Textarea/Textarea.stories.js +0 -103
  415. package/dist/Atomic/FormElements/TieredCheckboxes/TieredCheckboxes.stories.js +0 -174
  416. package/dist/Atomic/FormElements/TimeRange/TimeRange.interface.js +0 -4
  417. package/dist/Atomic/FormElements/TimeRange/TimeRange.stories.js +0 -40
  418. package/dist/Atomic/FormElements/TimeRange/TimeRange.test.js +0 -163
  419. package/dist/Atomic/FormElements/TimeRange/index.js +0 -17
  420. package/dist/Atomic/FormElements/UserContacts/UserContact.test.js +0 -381
  421. package/dist/Atomic/FormElements/UserContacts/UserContacts.interface.js +0 -4
  422. package/dist/Atomic/FormElements/UserContacts/UserContacts.stories.js +0 -74
  423. package/dist/Atomic/FormElements/UserContacts/index.js +0 -17
  424. package/dist/Atomic/FormElements/VariantsListRadio/VariantsListRadio.stories.js +0 -193
  425. package/dist/Atomic/FormElements/WidgetPseudoTable/WidgetPseudoTable.stories.js +0 -147
  426. package/dist/Atomic/FormElements/WidgetWithSwitchableRows/WidgetWithSwitchableRows.stories.js +0 -151
  427. package/dist/Atomic/Layout/Header/Header.stories.js +0 -71
  428. package/dist/Atomic/Layout/MainMenu/MainMenu.stories.js +0 -115
  429. package/dist/Atomic/Layout/Spinner/Spinner.interface.js +0 -4
  430. package/dist/Atomic/Layout/Spinner/Spinner.stories.js +0 -46
  431. package/dist/Atomic/Layout/Spinner/Spinner.test.js +0 -54
  432. package/dist/Atomic/Layout/Spinner/index.js +0 -17
  433. package/dist/Atomic/UI/Accordion/Accordion.interface.js +0 -4
  434. package/dist/Atomic/UI/Accordion/Accordion.stories.js +0 -168
  435. package/dist/Atomic/UI/Accordion/Accordion.test.js +0 -54
  436. package/dist/Atomic/UI/Accordion/AccordionItem.test.js +0 -50
  437. package/dist/Atomic/UI/Accordion/index.js +0 -17
  438. package/dist/Atomic/UI/AccordionTable/AccordionTable.stories.js +0 -268
  439. package/dist/Atomic/UI/AccordionText/AccordionText.stories.js +0 -125
  440. package/dist/Atomic/UI/AdvancedTag/AdvancedTags.stories.js +0 -115
  441. package/dist/Atomic/UI/Alert/Alert.stories.js +0 -81
  442. package/dist/Atomic/UI/Arrow/Arrow.stories.js +0 -62
  443. package/dist/Atomic/UI/Box/Box.stories.js +0 -114
  444. package/dist/Atomic/UI/Button/Button.stories.js +0 -105
  445. package/dist/Atomic/UI/Button/Button.test.js +0 -147
  446. package/dist/Atomic/UI/ButtonsBar/ButtonsBar.stories.js +0 -129
  447. package/dist/Atomic/UI/Chart/Chart.stories.js +0 -93
  448. package/dist/Atomic/UI/CircleProgressBar/CircleProgressBar.stories.js +0 -85
  449. package/dist/Atomic/UI/DateTime/DateTime.stories.js +0 -50
  450. package/dist/Atomic/UI/DoubleString/DoubleString.stories.js +0 -79
  451. package/dist/Atomic/UI/DynamicIcon/DynamicIcon.interface.js +0 -4
  452. package/dist/Atomic/UI/DynamicIcon/DynamicIcon.stories.js +0 -98
  453. package/dist/Atomic/UI/DynamicIcon/DynamicIcon.test.js +0 -51
  454. package/dist/Atomic/UI/DynamicIcon/index.js +0 -17
  455. package/dist/Atomic/UI/ExampleChartIntegration/ExampleChartIntegration.stories.js +0 -98
  456. package/dist/Atomic/UI/Hint/Hint.stories.js +0 -101
  457. package/dist/Atomic/UI/Hint/index.js +0 -16
  458. package/dist/Atomic/UI/Modal/Modal.interface.js +0 -4
  459. package/dist/Atomic/UI/Modal/Modal.stories.js +0 -370
  460. package/dist/Atomic/UI/Modal/ModalHOC.stories.js +0 -191
  461. package/dist/Atomic/UI/Modal/ModalHOC.test.js +0 -187
  462. package/dist/Atomic/UI/Modal/index.js +0 -26
  463. package/dist/Atomic/UI/Modal/partials/ModalFooter.test.js +0 -118
  464. package/dist/Atomic/UI/Modal/partials/ModalTitle.test.js +0 -126
  465. package/dist/Atomic/UI/Modal/partials/useMobileModal.test.js +0 -133
  466. package/dist/Atomic/UI/MonoAccordion/MonoAccordion.interface.js +0 -4
  467. package/dist/Atomic/UI/MonoAccordion/MonoAccordion.stories.js +0 -513
  468. package/dist/Atomic/UI/MonoAccordion/MonoAccordion.test.js +0 -84
  469. package/dist/Atomic/UI/MonoAccordion/index.js +0 -17
  470. package/dist/Atomic/UI/NavLine/NavLine.interface.js +0 -4
  471. package/dist/Atomic/UI/NavLine/NavLine.stories.js +0 -434
  472. package/dist/Atomic/UI/NavLine/NavLine.test.js +0 -311
  473. package/dist/Atomic/UI/NavLine/index.js +0 -17
  474. package/dist/Atomic/UI/PageTitle/PageTitle.interface.js +0 -4
  475. package/dist/Atomic/UI/PageTitle/PageTitle.stories.js +0 -62
  476. package/dist/Atomic/UI/PageTitle/PageTitle.test.js +0 -181
  477. package/dist/Atomic/UI/PageTitle/index.js +0 -17
  478. package/dist/Atomic/UI/PieChart/PieChar.interface.js +0 -4
  479. package/dist/Atomic/UI/PieChart/PieChart.stories.js +0 -82
  480. package/dist/Atomic/UI/PieChart/PieChart.test.js +0 -142
  481. package/dist/Atomic/UI/PieChart/index.js +0 -26
  482. package/dist/Atomic/UI/Price/Price.interface.js +0 -4
  483. package/dist/Atomic/UI/Price/Price.stories.js +0 -52
  484. package/dist/Atomic/UI/Price/Price.test.js +0 -83
  485. package/dist/Atomic/UI/Price/index.js +0 -17
  486. package/dist/Atomic/UI/PriceRange/PriceRange.interface.js +0 -4
  487. package/dist/Atomic/UI/PriceRange/PriceRange.stories.js +0 -51
  488. package/dist/Atomic/UI/PriceRange/PriceRange.test.js +0 -72
  489. package/dist/Atomic/UI/PriceRange/index.js +0 -17
  490. package/dist/Atomic/UI/ProgressLine/ProgressLine.interface.js +0 -4
  491. package/dist/Atomic/UI/ProgressLine/ProgressLine.stories.js +0 -163
  492. package/dist/Atomic/UI/ProgressLine/ProgressLine.test.js +0 -60
  493. package/dist/Atomic/UI/ProgressLine/index.js +0 -17
  494. package/dist/Atomic/UI/Status/Status.interface.js +0 -4
  495. package/dist/Atomic/UI/Status/Status.stories.js +0 -79
  496. package/dist/Atomic/UI/Status/Status.test.js +0 -103
  497. package/dist/Atomic/UI/Status/index.js +0 -17
  498. package/dist/Atomic/UI/Table/Table.stories.js +0 -250
  499. package/dist/Atomic/UI/Tag/Tag.interface.js +0 -4
  500. package/dist/Atomic/UI/Tag/Tag.stories.js +0 -108
  501. package/dist/Atomic/UI/Tag/Tag.test.js +0 -75
  502. package/dist/Atomic/UI/Tag/index.js +0 -17
  503. package/dist/Atomic/UI/TagList/TagList.stories.js +0 -169
  504. package/dist/Atomic/UI/UserBox/UserBox.interface.js +0 -4
  505. package/dist/Atomic/UI/UserBox/UserBox.stories.js +0 -57
  506. package/dist/Atomic/UI/UserBox/UserBox.test.js +0 -136
  507. package/dist/Atomic/UI/UserBox/index.js +0 -17
  508. package/dist/Atomic/UI/WizardStepper/WizardStepper.stories.js +0 -70
  509. package/dist/Functions/useIsMobile/index.js +0 -17
  510. package/dist/Functions/useIsMobile/useIsMobile.js +0 -33
  511. package/dist/Functions/useIsMobile/useIsMobile.test.js +0 -104
  512. package/dist/Functions/useKeyPress/useHandleKeyPress.test.js +0 -96
  513. package/dist/Functions/useKeyPress/useKeyPress.test.js +0 -87
  514. package/dist/Molecular/FormElement/FormElement.stories.js +0 -92
  515. package/dist/Molecular/FormWithDependOn/FormWithDependOn.stories.js +0 -301
  516. package/dist/Molecular/InputAddress/InputAddress.stories.js +0 -541
  517. package/dist/Molecular/InputPassword/InputPassword.stories.js +0 -86
  518. package/dist/types/base.interface.js +0 -4
  519. package/dist/types/base.types.js +0 -4
@@ -1,1063 +1,947 @@
1
1
  "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
2
4
  Object.defineProperty(exports, "__esModule", {
3
- value: true
5
+ value: true
4
6
  });
5
- Object.defineProperty(exports, "default", {
6
- enumerable: true,
7
- get: function() {
8
- return _default;
9
- }
10
- });
11
- const _jsxruntime = require("react/jsx-runtime");
12
- const _react = /*#__PURE__*/ _interop_require_wildcard(require("react"));
13
- const _classnames = /*#__PURE__*/ _interop_require_default(require("classnames"));
14
- const _reactdom = require("react-dom");
15
- const _reactfeather = require("react-feather");
16
- const _fieldValueFormatters = require("../../../Functions/fieldValueFormatters");
17
- const _useDebounce = require("../../../Functions/useDebounce");
18
- const _useIsMobile = /*#__PURE__*/ _interop_require_default(require("../../../Functions/useIsMobile/useIsMobile"));
19
- const _CheckboxInput = /*#__PURE__*/ _interop_require_default(require("../../FormElements/CheckboxInput/CheckboxInput"));
20
- const _Input = /*#__PURE__*/ _interop_require_default(require("../../FormElements/Input/Input"));
21
- const _Button = /*#__PURE__*/ _interop_require_default(require("../../UI/Button/Button"));
22
- const _Tag = /*#__PURE__*/ _interop_require_default(require("../../UI/Tag/Tag"));
23
- const _TagList = /*#__PURE__*/ _interop_require_default(require("../../UI/TagList/TagList"));
7
+ exports.default = void 0;
8
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
+ var _react = _interopRequireWildcard(require("react"));
10
+ var _classnames = _interopRequireDefault(require("classnames"));
11
+ var _reactDom = require("react-dom");
12
+ var _reactFeather = require("react-feather");
13
+ var _fieldValueFormatters = require("../../../Functions/fieldValueFormatters");
14
+ var _useDebounce = require("../../../Functions/useDebounce");
15
+ var _useIsMobile = _interopRequireDefault(require("../../../Functions/useIsMobile"));
16
+ var _CheckboxInput = _interopRequireDefault(require("../../FormElements/CheckboxInput/CheckboxInput"));
17
+ var _Input = _interopRequireDefault(require("../../FormElements/Input/Input"));
18
+ var _Button = _interopRequireDefault(require("../../UI/Button/Button"));
19
+ var _Tag = _interopRequireDefault(require("../../UI/Tag/Tag"));
20
+ var _TagList = _interopRequireDefault(require("../../UI/TagList/TagList"));
24
21
  require("./TagsDropdown.scss");
25
- function _interop_require_default(obj) {
26
- return obj && obj.__esModule ? obj : {
27
- default: obj
28
- };
29
- }
30
- function _getRequireWildcardCache(nodeInterop) {
31
- if (typeof WeakMap !== "function") return null;
32
- var cacheBabelInterop = new WeakMap();
33
- var cacheNodeInterop = new WeakMap();
34
- return (_getRequireWildcardCache = function(nodeInterop) {
35
- return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
36
- })(nodeInterop);
37
- }
38
- function _interop_require_wildcard(obj, nodeInterop) {
39
- if (!nodeInterop && obj && obj.__esModule) {
40
- return obj;
41
- }
42
- if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
43
- return {
44
- default: obj
45
- };
46
- }
47
- var cache = _getRequireWildcardCache(nodeInterop);
48
- if (cache && cache.has(obj)) {
49
- return cache.get(obj);
50
- }
51
- var newObj = {
52
- __proto__: null
53
- };
54
- var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
55
- for(var key in obj){
56
- if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
57
- var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
58
- if (desc && (desc.get || desc.set)) {
59
- Object.defineProperty(newObj, key, desc);
60
- } else {
61
- newObj[key] = obj[key];
62
- }
63
- }
64
- }
65
- newObj.default = obj;
66
- if (cache) {
67
- cache.set(obj, newObj);
68
- }
69
- return newObj;
70
- }
22
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
23
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
71
24
  const RC = "tags-dropdown";
72
25
  const MIN_ITEMS_FOR_SHOW_MOBILE_SEARCH = 10;
73
- const COLORS = [
74
- "#F1F0F0",
75
- "#E3E2E0",
76
- "#EEDFDA",
77
- "#F9DEC9",
78
- "#FDECC8",
79
- "#DBECDB",
80
- "#D3E4EF",
81
- "#E8DEEE",
82
- "#F4E0E9",
83
- "#FFE2DD",
84
- "#D3EFED",
85
- "#ECEEDE"
86
- ];
87
- const TagsDropdown = ({ options: optionsProp, chosenOptions = [], onChange, className, tagClassname, listClassName, onKeyPress = ()=>{}, placeholder, label, disabled, isValuesInTags, error, isNotValidateASCII = false, noTagsWrap = false, headerContent = null, footerContent = null, selectAllButtonRef = null, unselectAllButtonRef = null, closeOnSelect = false, closeOnRemove = false, closeOnRemoveAll = false, closeOnSelectAll = false, closeOnSelectMobile = false, closeOnRemoveMobile = false, closeOnRemoveAllMobile = false, closeOnSelectAllMobile = false, fieldKey, id, noOptionsText = "No options available", mobileSearchPlaceholder, isSearchable = true, useLiveSearch, doRequest: doLiveSearchRequest, attributesOfNativeInput = {}, isUseLocalOptionsStore = true, isDefaultOpened = false, withMobileLogic, withCreateLogic, withActions, withSearchInputInList, renderOptionsAsTags, minItemsForShowMobileSearch = MIN_ITEMS_FOR_SHOW_MOBILE_SEARCH, onOptionCreate, onOptionEdit, onOptionDelete, onActionConfirmClick, onActionCancelClick, onDropdownListClose, customTriggerRef, renderCustomTrigger, recalculateListContainerStylesTrigger })=>{
88
- var _Object_keys, _dropdownListWrapperRef_current_getBoundingClientRect, _dropdownListWrapperRef_current, _dropdownListRef_current, _dropdownListRef_current1;
89
- const inputRef = (0, _react.useRef)(null);
90
- const wrapperRef = (0, _react.useRef)(null);
91
- const dropdownRef = (0, _react.useRef)(null);
92
- const dropdownListRef = (0, _react.useRef)(null);
93
- const editOptionModalRef = (0, _react.useRef)(null);
94
- const dropdownListWrapperRef = (0, _react.useRef)(null);
95
- const { isMobile: isMobileProp } = (0, _useIsMobile.default)();
96
- const isMobile = isMobileProp && withMobileLogic && window.screen.width <= 768;
97
- const [dropdownId] = (0, _react.useState)(id || fieldKey || Math.random().toString(16).slice(2));
98
- const [isOpen, setIsOpen] = (0, _react.useState)(false);
99
- const [windowScrollTop, setWindowScrollTop] = (0, _react.useState)(0);
100
- const [listPos, setListPos] = (0, _react.useState)(null);
101
- const [initListHeight, setInitListHeight] = (0, _react.useState)(null);
102
- const [isScrollableList, setIsScrollableList] = (0, _react.useState)(null);
103
- const [isFixedMaxHeight, setIsFixedMaxHeight] = (0, _react.useState)(false);
104
- const [scrollTop, setScrollTop] = (0, _react.useState)(0);
105
- const [scrollHeight, setScrollHeight] = (0, _react.useState)(1);
106
- const searchValueRef = (0, _react.useRef)(null);
107
- const [searchValue, setSearchValue] = (0, _react.useState)("");
108
- const debouncedSearchTerm = (0, _useDebounce.useDebounce)({
109
- searchValue,
110
- delay: 600
26
+ const COLORS = ["#F1F0F0", "#E3E2E0", "#EEDFDA", "#F9DEC9", "#FDECC8", "#DBECDB", "#D3E4EF", "#E8DEEE", "#F4E0E9", "#FFE2DD", "#D3EFED", "#ECEEDE"];
27
+ const TagsDropdown = _ref => {
28
+ let {
29
+ options: optionsProp,
30
+ chosenOptions = [],
31
+ onChange,
32
+ className,
33
+ tagClassname,
34
+ listClassName,
35
+ onKeyPress = () => {},
36
+ placeholder,
37
+ label,
38
+ disabled,
39
+ isValuesInTags,
40
+ error,
41
+ isNotValidateASCII = false,
42
+ noTagsWrap = false,
43
+ headerContent = null,
44
+ footerContent = null,
45
+ selectAllButtonRef = null,
46
+ unselectAllButtonRef = null,
47
+ closeOnSelect = false,
48
+ closeOnRemove = false,
49
+ closeOnRemoveAll = false,
50
+ closeOnSelectAll = false,
51
+ closeOnSelectMobile = false,
52
+ closeOnRemoveMobile = false,
53
+ closeOnRemoveAllMobile = false,
54
+ closeOnSelectAllMobile = false,
55
+ fieldKey,
56
+ id,
57
+ noOptionsText = "No options available",
58
+ mobileSearchPlaceholder,
59
+ isSearchable = true,
60
+ useLiveSearch,
61
+ doRequest: doLiveSearchRequest,
62
+ attributesOfNativeInput = {},
63
+ isUseLocalOptionsStore = true,
64
+ isDefaultOpened = false,
65
+ withMobileLogic,
66
+ withCreateLogic,
67
+ withActions,
68
+ withSearchInputInList,
69
+ renderOptionsAsTags,
70
+ minItemsForShowMobileSearch = MIN_ITEMS_FOR_SHOW_MOBILE_SEARCH,
71
+ onOptionCreate,
72
+ onOptionEdit,
73
+ onOptionDelete,
74
+ onActionConfirmClick,
75
+ onActionCancelClick,
76
+ onDropdownListClose,
77
+ customTriggerRef,
78
+ renderCustomTrigger,
79
+ recalculateListContainerStylesTrigger
80
+ } = _ref;
81
+ const inputRef = (0, _react.useRef)(null);
82
+ const wrapperRef = (0, _react.useRef)(null);
83
+ const dropdownRef = (0, _react.useRef)(null);
84
+ const dropdownListRef = (0, _react.useRef)(null);
85
+ const editOptionModalRef = (0, _react.useRef)(null);
86
+ const dropdownListWrapperRef = (0, _react.useRef)(null);
87
+ const {
88
+ isMobile: isMobileProp
89
+ } = (0, _useIsMobile.default)();
90
+ const isMobile = isMobileProp && withMobileLogic && window.screen.width <= 768;
91
+ const [dropdownId] = (0, _react.useState)(id || fieldKey || Math.random().toString(16).slice(2));
92
+ const [isOpen, setIsOpen] = (0, _react.useState)(false);
93
+ const [windowScrollTop, setWindowScrollTop] = (0, _react.useState)(0);
94
+ const [listPos, setListPos] = (0, _react.useState)(null);
95
+ const [initListHeight, setInitListHeight] = (0, _react.useState)(null);
96
+ const [isScrollableList, setIsScrollableList] = (0, _react.useState)(null);
97
+ const [isFixedMaxHeight, setIsFixedMaxHeight] = (0, _react.useState)(false);
98
+ const [scrollTop, setScrollTop] = (0, _react.useState)(0);
99
+ const [scrollHeight, setScrollHeight] = (0, _react.useState)(1);
100
+ const searchValueRef = (0, _react.useRef)(null);
101
+ const [searchValue, setSearchValue] = (0, _react.useState)("");
102
+ const debouncedSearchTerm = (0, _useDebounce.useDebounce)({
103
+ searchValue,
104
+ delay: 600
105
+ });
106
+ const [isValueDeleted, setIsValueDeleted] = (0, _react.useState)(false);
107
+ const setSearchValueInterceptor = value => {
108
+ setSearchValue(value);
109
+ setIsValueDeleted(searchValue !== value && value === "");
110
+ searchValueRef.current = value;
111
+ };
112
+ const editingOptionInputRef = (0, _react.useRef)(null);
113
+ const [options, setOptions] = (0, _react.useState)([]);
114
+ const [editingOption, setEditingOptionState] = (0, _react.useState)(null);
115
+ const setEditingOption = data => {
116
+ setEditingOptionState(editingOption => !data ? data : {
117
+ ...(editingOption ?? {}),
118
+ ...(typeof data === "function" ? data?.(editingOption) : data),
119
+ isChanged: Boolean(editingOption)
111
120
  });
112
- const [isValueDeleted, setIsValueDeleted] = (0, _react.useState)(false);
113
- const setSearchValueInterceptor = (value)=>{
114
- setSearchValue(value);
115
- setIsValueDeleted(searchValue !== value && value === "");
116
- searchValueRef.current = value;
117
- };
118
- const editingOptionInputRef = (0, _react.useRef)(null);
119
- const [options, setOptions] = (0, _react.useState)([]);
120
- const [editingOption, setEditingOptionState] = (0, _react.useState)(null);
121
- const setEditingOption = (data)=>{
122
- setEditingOptionState((editingOption)=>!data ? data : {
123
- ...editingOption !== null && editingOption !== void 0 ? editingOption : {},
124
- ...typeof data === "function" ? data === null || data === void 0 ? void 0 : data(editingOption) : data,
125
- isChanged: Boolean(editingOption)
126
- });
121
+ };
122
+ const isEditingOptionError = (0, _react.useMemo)(() => {
123
+ if (!editingOption) return false;
124
+ return options.filter(_ref2 => {
125
+ let {
126
+ value
127
+ } = _ref2;
128
+ return value !== editingOption.value;
129
+ }).some(_ref3 => {
130
+ let {
131
+ label
132
+ } = _ref3;
133
+ return label === editingOption.label;
134
+ }) ? true : null;
135
+ }, [options, editingOption]);
136
+ const [localOptionsStore, setLocalOptionsStore] = (0, _react.useState)({});
137
+ const randomColorForNewOption = (0, _react.useMemo)(() => {
138
+ const getRandomIndex = (min, max) => {
139
+ return Math.floor(Math.random() * (max - min + 1)) + min;
127
140
  };
128
- const isEditingOptionError = (0, _react.useMemo)(()=>{
129
- if (!editingOption) return false;
130
- return options.filter(({ value })=>value !== editingOption.value).some(({ label })=>label === editingOption.label) ? true : null;
131
- }, [
132
- options,
133
- editingOption
134
- ]);
135
- const [localOptionsStore, setLocalOptionsStore] = (0, _react.useState)({});
136
- const randomColorForNewOption = (0, _react.useMemo)(()=>{
137
- const getRandomIndex = (min, max)=>{
138
- return Math.floor(Math.random() * (max - min + 1)) + min;
139
- };
140
- const randomIndex = getRandomIndex(0, COLORS.length - 1);
141
- return COLORS[randomIndex];
141
+ const randomIndex = getRandomIndex(0, COLORS.length - 1);
142
+ return COLORS[randomIndex];
142
143
  // eslint-disable-next-line react-hooks/exhaustive-deps
143
- }, [
144
- options.length
145
- ]);
146
- const singleLevelOptions = options === null || options === void 0 ? void 0 : options.reduce((acc, item)=>{
147
- const checkUniqAndPush = (acc, item)=>{
148
- const isExist = acc === null || acc === void 0 ? void 0 : acc.findIndex(({ value })=>value === (item === null || item === void 0 ? void 0 : item.value));
149
- if (isExist !== -1) {
150
- acc[isExist] = item;
151
- } else {
152
- acc.push(item);
153
- }
154
- };
155
- if (item.groupName) {
156
- var _item_list;
157
- (_item_list = item.list) === null || _item_list === void 0 ? void 0 : _item_list.map((item)=>checkUniqAndPush(acc, item));
158
- } else {
159
- checkUniqAndPush(acc, item);
160
- }
161
- return acc;
162
- }, isUseLocalOptionsStore ? (_Object_keys = Object.keys(localOptionsStore)) === null || _Object_keys === void 0 ? void 0 : _Object_keys.map((value)=>({
163
- value,
164
- label: localOptionsStore === null || localOptionsStore === void 0 ? void 0 : localOptionsStore[value]
165
- })) : []);
166
- const deleteChosen = (value)=>{
167
- if (isMobile ? closeOnRemoveMobile : closeOnRemove) setIsOpen(false);
168
- if (isUseLocalOptionsStore) {
169
- setLocalOptionsStore((options)=>({
170
- ...options,
171
- [value]: undefined
172
- }));
173
- }
174
- onChange(chosenOptions.filter((item)=>item !== value), "chosenOptions");
175
- };
176
- // --- LIST CONTAINER FUNCTIONS BEGIN --- //
177
- const getParentNode = ()=>{
178
- var _document_querySelector, _ref;
179
- return (_ref = (_document_querySelector = document.querySelector("div#root")) !== null && _document_querySelector !== void 0 ? _document_querySelector : document.querySelector("div#app")) !== null && _ref !== void 0 ? _ref : document.querySelector("div#storybook-root");
180
- };
181
- const initListContainer = ()=>{
182
- const dropdownList = document.createElement("div");
183
- dropdownList.setAttribute("id", dropdownId);
184
- dropdownList.classList.add("tags-dropdown__container");
185
- listClassName && dropdownList.classList.add(listClassName);
186
- if (isMobile) {
187
- dropdownList.addEventListener("click", (e)=>{
188
- if (e.target.id === dropdownId) setIsOpen(false);
189
- });
190
- }
191
- if (isMobile) {
192
- var _getParentNode;
193
- try {
194
- var _document_getElementById;
195
- (_document_getElementById = document.getElementById(`mlw-${dropdownId}`)) === null || _document_getElementById === void 0 ? void 0 : _document_getElementById.remove();
196
- // eslint-disable-next-line no-empty
197
- } catch (e) {}
198
- const dropdownMobileListWrapper = document.createElement("div");
199
- dropdownMobileListWrapper.classList.add("tags-dropdown-mobile");
200
- dropdownMobileListWrapper.setAttribute("id", `mlw-${dropdownId}`);
201
- dropdownMobileListWrapper === null || dropdownMobileListWrapper === void 0 ? void 0 : dropdownMobileListWrapper.append(dropdownList);
202
- (_getParentNode = getParentNode()) === null || _getParentNode === void 0 ? void 0 : _getParentNode.append(dropdownMobileListWrapper);
203
- } else {
204
- var _getParentNode1;
205
- (_getParentNode1 = getParentNode()) === null || _getParentNode1 === void 0 ? void 0 : _getParentNode1.append(dropdownList);
206
- }
207
- };
208
- const getListContainer = ()=>{
209
- return document.getElementById(dropdownId);
210
- };
211
- const getListContainerWrapper = ()=>{
212
- return document.getElementById(`mlw-${dropdownId}`);
144
+ }, [options.length]);
145
+ const singleLevelOptions = options?.reduce((acc, item) => {
146
+ const checkUniqAndPush = (acc, item) => {
147
+ const isExist = acc?.findIndex(_ref4 => {
148
+ let {
149
+ value
150
+ } = _ref4;
151
+ return value === item?.value;
152
+ });
153
+ if (isExist !== -1) {
154
+ acc[isExist] = item;
155
+ } else {
156
+ acc.push(item);
157
+ }
213
158
  };
214
- const setListContainerStyles = ()=>{
215
- var _dropdownRef_current, _getComputedStyle_marginTop, _getComputedStyle, _selectorWrapper_getBoundingClientRect, _listHeader_getBoundingClientRect, _listFooter_getBoundingClientRect;
216
- const listContainer = getListContainer();
217
- if (!listContainer || !isOpen) return false;
218
- const windowHeight = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
219
- var _dropdownRef_current_getBoundingClientRect;
220
- const { width, height, left, top } = (_dropdownRef_current_getBoundingClientRect = dropdownRef === null || dropdownRef === void 0 ? void 0 : (_dropdownRef_current = dropdownRef.current) === null || _dropdownRef_current === void 0 ? void 0 : _dropdownRef_current.getBoundingClientRect()) !== null && _dropdownRef_current_getBoundingClientRect !== void 0 ? _dropdownRef_current_getBoundingClientRect : {};
221
- const selectorWrapper = dropdownListWrapperRef === null || dropdownListWrapperRef === void 0 ? void 0 : dropdownListWrapperRef.current;
222
- const dropdownList = listContainer.getElementsByClassName("tags-dropdown__list")[0];
223
- const listHeader = selectorWrapper === null || selectorWrapper === void 0 ? void 0 : selectorWrapper.getElementsByClassName("tags-dropdown__header")[0];
224
- const listFooter = selectorWrapper === null || selectorWrapper === void 0 ? void 0 : selectorWrapper.getElementsByClassName("tags-dropdown__footer")[0];
225
- var _getComputedStyle_marginTop_replace;
226
- const margin = parseInt((_getComputedStyle_marginTop_replace = (_getComputedStyle = getComputedStyle(selectorWrapper)) === null || _getComputedStyle === void 0 ? void 0 : (_getComputedStyle_marginTop = _getComputedStyle.marginTop) === null || _getComputedStyle_marginTop === void 0 ? void 0 : _getComputedStyle_marginTop.replace("px", "")) !== null && _getComputedStyle_marginTop_replace !== void 0 ? _getComputedStyle_marginTop_replace : 0, 10);
227
- let selectorWrapperHeight = selectorWrapper === null || selectorWrapper === void 0 ? void 0 : (_selectorWrapper_getBoundingClientRect = selectorWrapper.getBoundingClientRect()) === null || _selectorWrapper_getBoundingClientRect === void 0 ? void 0 : _selectorWrapper_getBoundingClientRect.height;
228
- var _listHeader_getBoundingClientRect_height, _listFooter_getBoundingClientRect_height;
229
- const maxSelectorWrapperHeight = 500 - ((_listHeader_getBoundingClientRect_height = listHeader === null || listHeader === void 0 ? void 0 : (_listHeader_getBoundingClientRect = listHeader.getBoundingClientRect()) === null || _listHeader_getBoundingClientRect === void 0 ? void 0 : _listHeader_getBoundingClientRect.height) !== null && _listHeader_getBoundingClientRect_height !== void 0 ? _listHeader_getBoundingClientRect_height : 0) - ((_listFooter_getBoundingClientRect_height = listFooter === null || listFooter === void 0 ? void 0 : (_listFooter_getBoundingClientRect = listFooter.getBoundingClientRect()) === null || _listFooter_getBoundingClientRect === void 0 ? void 0 : _listFooter_getBoundingClientRect.height) !== null && _listFooter_getBoundingClientRect_height !== void 0 ? _listFooter_getBoundingClientRect_height : 0);
230
- if (!isMobile || !withMobileLogic) {
231
- var _getComputedStyle1, _customTriggerRef_current_getBoundingClientRect, _customTriggerRef_current;
232
- const dropdownListMaxHeightInPx = (_getComputedStyle1 = getComputedStyle(dropdownList)) === null || _getComputedStyle1 === void 0 ? void 0 : _getComputedStyle1.maxHeight;
233
- var _dropdownListMaxHeightInPx_replace;
234
- const maxHeight = initListHeight !== null && initListHeight !== void 0 ? initListHeight : parseInt((_dropdownListMaxHeightInPx_replace = dropdownListMaxHeightInPx === null || dropdownListMaxHeightInPx === void 0 ? void 0 : dropdownListMaxHeightInPx.replace("px", "")) !== null && _dropdownListMaxHeightInPx_replace !== void 0 ? _dropdownListMaxHeightInPx_replace : 0, 10);
235
- if (initListHeight === null && !isNaN(maxHeight)) setInitListHeight(maxHeight);
236
- if (selectorWrapperHeight > maxHeight && !isNaN(maxHeight)) selectorWrapperHeight = maxHeight - 2 * margin;
237
- var _customTriggerRef_current_getBoundingClientRect_height;
238
- const toTop = renderCustomTrigger ? top - margin - ((_customTriggerRef_current_getBoundingClientRect_height = customTriggerRef === null || customTriggerRef === void 0 ? void 0 : (_customTriggerRef_current = customTriggerRef.current) === null || _customTriggerRef_current === void 0 ? void 0 : (_customTriggerRef_current_getBoundingClientRect = _customTriggerRef_current.getBoundingClientRect()) === null || _customTriggerRef_current_getBoundingClientRect === void 0 ? void 0 : _customTriggerRef_current_getBoundingClientRect.height) !== null && _customTriggerRef_current_getBoundingClientRect_height !== void 0 ? _customTriggerRef_current_getBoundingClientRect_height : 0) : top - margin;
239
- const toBottom = windowHeight - top - height - margin * 2;
240
- let listPosition = listPos;
241
- if (!listPos && options.length) {
242
- listPosition = toTop < toBottom || toBottom >= selectorWrapperHeight ? "bottom" : "top";
243
- setListPos(listPosition);
244
- }
245
- if (selectorWrapperHeight > (listPosition === "top" ? toTop : toBottom)) {
246
- selectorWrapperHeight = (listPosition === "top" ? toTop : toBottom) - 3 * margin;
247
- if (selectorWrapperHeight < 200) {
248
- selectorWrapperHeight = 200;
249
- }
250
- selectorWrapper.style.maxHeight = `${selectorWrapperHeight}px`;
251
- }
252
- listContainer.style.minWidth = `${width}px`;
253
- listContainer.style.left = `${left}px`;
254
- listContainer.style.top = `${listPosition === "bottom" ? top + height : top - selectorWrapperHeight - 2 * margin}px`;
255
- } else {
256
- dropdownList.style.maxHeight = `${maxSelectorWrapperHeight}px`;
159
+ if (item.groupName) {
160
+ item.list?.map(item => checkUniqAndPush(acc, item));
161
+ } else {
162
+ checkUniqAndPush(acc, item);
163
+ }
164
+ return acc;
165
+ }, isUseLocalOptionsStore ? Object.keys(localOptionsStore)?.map(value => ({
166
+ value,
167
+ label: localOptionsStore?.[value]
168
+ })) : []);
169
+ const deleteChosen = value => {
170
+ if (isMobile ? closeOnRemoveMobile : closeOnRemove) setIsOpen(false);
171
+ if (isUseLocalOptionsStore) {
172
+ setLocalOptionsStore(options => ({
173
+ ...options,
174
+ [value]: undefined
175
+ }));
176
+ }
177
+ onChange(chosenOptions.filter(item => item !== value), "chosenOptions");
178
+ };
179
+
180
+ // --- LIST CONTAINER FUNCTIONS BEGIN --- //
181
+ const getParentNode = () => {
182
+ return document.querySelector("div#root") ?? document.querySelector("div#app") ?? document.querySelector("div#storybook-root");
183
+ };
184
+ const initListContainer = () => {
185
+ const dropdownList = document.createElement("div");
186
+ dropdownList.setAttribute("id", dropdownId);
187
+ dropdownList.classList.add("tags-dropdown__container");
188
+ listClassName && dropdownList.classList.add(listClassName);
189
+ if (isMobile) {
190
+ dropdownList.addEventListener("click", e => {
191
+ if (e.target.id === dropdownId) setIsOpen(false);
192
+ });
193
+ }
194
+ if (isMobile) {
195
+ try {
196
+ document.getElementById(`mlw-${dropdownId}`)?.remove();
197
+ // eslint-disable-next-line no-empty
198
+ } catch (e) {}
199
+ const dropdownMobileListWrapper = document.createElement("div");
200
+ dropdownMobileListWrapper.classList.add("tags-dropdown-mobile");
201
+ dropdownMobileListWrapper.setAttribute("id", `mlw-${dropdownId}`);
202
+ dropdownMobileListWrapper?.append(dropdownList);
203
+ getParentNode()?.append(dropdownMobileListWrapper);
204
+ } else {
205
+ getParentNode()?.append(dropdownList);
206
+ }
207
+ };
208
+ const getListContainer = () => {
209
+ return document.getElementById(dropdownId);
210
+ };
211
+ const getListContainerWrapper = () => {
212
+ return document.getElementById(`mlw-${dropdownId}`);
213
+ };
214
+ const setListContainerStyles = () => {
215
+ const listContainer = getListContainer();
216
+ if (!listContainer || !isOpen) return false;
217
+ const windowHeight = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
218
+ const {
219
+ width,
220
+ height,
221
+ left,
222
+ top
223
+ } = dropdownRef?.current?.getBoundingClientRect() ?? {};
224
+ const selectorWrapper = dropdownListWrapperRef?.current;
225
+ const dropdownList = listContainer.getElementsByClassName("tags-dropdown__list")[0];
226
+ const listHeader = selectorWrapper?.getElementsByClassName("tags-dropdown__header")[0];
227
+ const listFooter = selectorWrapper?.getElementsByClassName("tags-dropdown__footer")[0];
228
+ const margin = parseInt(getComputedStyle(selectorWrapper)?.marginTop?.replace("px", "") ?? 0, 10);
229
+ let selectorWrapperHeight = selectorWrapper?.getBoundingClientRect()?.height;
230
+ const maxSelectorWrapperHeight = 500 - (listHeader?.getBoundingClientRect()?.height ?? 0) - (listFooter?.getBoundingClientRect()?.height ?? 0);
231
+ if (!isMobile || !withMobileLogic) {
232
+ const dropdownListMaxHeightInPx = getComputedStyle(dropdownList)?.maxHeight;
233
+ const maxHeight = initListHeight ?? parseInt(dropdownListMaxHeightInPx?.replace("px", "") ?? 0, 10);
234
+ if (initListHeight === null && !isNaN(maxHeight)) setInitListHeight(maxHeight);
235
+ if (selectorWrapperHeight > maxHeight && !isNaN(maxHeight)) selectorWrapperHeight = maxHeight - 2 * margin;
236
+ const toTop = renderCustomTrigger ? top - margin - (customTriggerRef?.current?.getBoundingClientRect()?.height ?? 0) : top - margin;
237
+ const toBottom = windowHeight - top - height - margin * 2;
238
+ let listPosition = listPos;
239
+ if (!listPos && options.length) {
240
+ listPosition = toTop < toBottom || toBottom >= selectorWrapperHeight ? "bottom" : "top";
241
+ setListPos(listPosition);
242
+ }
243
+ if (selectorWrapperHeight > (listPosition === "top" ? toTop : toBottom)) {
244
+ selectorWrapperHeight = (listPosition === "top" ? toTop : toBottom) - 3 * margin;
245
+ if (selectorWrapperHeight < 200) {
246
+ selectorWrapperHeight = 200;
257
247
  }
248
+ selectorWrapper.style.maxHeight = `${selectorWrapperHeight}px`;
249
+ }
250
+ listContainer.style.minWidth = `${width}px`;
251
+ listContainer.style.left = `${left}px`;
252
+ listContainer.style.top = `${listPosition === "bottom" ? top + height : top - selectorWrapperHeight - 2 * margin}px`;
253
+ } else {
254
+ dropdownList.style.maxHeight = `${maxSelectorWrapperHeight}px`;
255
+ }
256
+ };
257
+ const renderListContainer = () => {
258
+ const lc = getListContainer();
259
+ if (!lc) return null;
260
+
261
+ // eslint-disable-next-line no-use-before-define
262
+ return /*#__PURE__*/(0, _reactDom.createPortal)(getListMarkUp(), lc);
263
+ };
264
+ // --- LIST CONTAINER FUNCTIONS END --- //
265
+
266
+ // --- CREATABLE LOGIC BEGIN --- //
267
+ const onOptionCreateClick = () => {
268
+ const newOption = {
269
+ label: searchValue,
270
+ style: {
271
+ backgroundColor: randomColorForNewOption
272
+ },
273
+ isEditable: true,
274
+ ref: /*#__PURE__*/(0, _react.createRef)()
258
275
  };
259
- const renderListContainer = ()=>{
260
- const lc = getListContainer();
261
- if (!lc) return null;
262
- // eslint-disable-next-line no-use-before-define
263
- return /*#__PURE__*/ (0, _reactdom.createPortal)(getListMarkUp(), lc);
264
- };
265
- // --- LIST CONTAINER FUNCTIONS END --- //
266
- // --- CREATABLE LOGIC BEGIN --- //
267
- const onOptionCreateClick = ()=>{
268
- const newOption = {
269
- label: searchValue,
270
- style: {
271
- backgroundColor: randomColorForNewOption
272
- },
273
- isEditable: true,
274
- ref: /*#__PURE__*/ (0, _react.createRef)()
276
+
277
+ // eslint-disable-next-line no-promise-executor-return
278
+ (onOptionCreate?.(newOption) ?? new Promise(r => r())).then(result => {
279
+ const tempId = Math.random().toString(16).slice(2);
280
+ newOption.value = result?.id ?? tempId;
281
+ setOptions(state => [...state, newOption]);
282
+ setSearchValue("");
283
+ onChangeHandler(newOption);
284
+ });
285
+ };
286
+ const onOptionEditClick = (e, item) => {
287
+ e?.preventDefault();
288
+ e?.stopPropagation();
289
+ setEditingOption(editingOption?.value === item?.value ? null : item);
290
+ };
291
+ const onOptionDeleteClick = () => {
292
+ // eslint-disable-next-line no-promise-executor-return
293
+ (onOptionDelete?.(editingOption) ?? new Promise(r => r())).then(() => {
294
+ deleteChosen(editingOption?.value);
295
+ setOptions(options => options.filter(_ref5 => {
296
+ let {
297
+ value
298
+ } = _ref5;
299
+ return value !== editingOption?.value;
300
+ }));
301
+ setEditingOption(null);
302
+ });
303
+ };
304
+ const saveEditingOption = () => {
305
+ if (!editingOption?.isChanged || isEditingOptionError) {
306
+ setEditingOption(null);
307
+ return false;
308
+ }
309
+ onOptionEdit?.(editingOption);
310
+ setOptions(options => options.map(option => {
311
+ if (editingOption && option.value === editingOption?.value) {
312
+ const tmp = {
313
+ ...editingOption
275
314
  };
276
- var // eslint-disable-next-line no-promise-executor-return
277
- _onOptionCreate;
278
- ((_onOptionCreate = onOptionCreate === null || onOptionCreate === void 0 ? void 0 : onOptionCreate(newOption)) !== null && _onOptionCreate !== void 0 ? _onOptionCreate : new Promise((r)=>r())).then((result)=>{
279
- const tempId = Math.random().toString(16).slice(2);
280
- var _result_id;
281
- newOption.value = (_result_id = result === null || result === void 0 ? void 0 : result.id) !== null && _result_id !== void 0 ? _result_id : tempId;
282
- setOptions((state)=>[
283
- ...state,
284
- newOption
285
- ]);
286
- setSearchValue("");
287
- onChangeHandler(newOption);
288
- });
289
- };
290
- const onOptionEditClick = (e, item)=>{
291
- e === null || e === void 0 ? void 0 : e.preventDefault();
292
- e === null || e === void 0 ? void 0 : e.stopPropagation();
293
- setEditingOption((editingOption === null || editingOption === void 0 ? void 0 : editingOption.value) === (item === null || item === void 0 ? void 0 : item.value) ? null : item);
315
+ setEditingOption(null);
316
+ return tmp;
317
+ }
318
+ return option;
319
+ }));
320
+ };
321
+ const setEditOptionModalStyles = () => {
322
+ if (!editingOption || !editOptionModalRef?.current) return null;
323
+ const modalSize = 200;
324
+ const {
325
+ scrollX,
326
+ scrollY
327
+ } = window;
328
+ const positionClasses = {
329
+ left: "modal-left",
330
+ right: "modal-right",
331
+ top: "modal-top",
332
+ bottom: "modal-bottom"
294
333
  };
295
- const onOptionDeleteClick = ()=>{
296
- var // eslint-disable-next-line no-promise-executor-return
297
- _onOptionDelete;
298
- ((_onOptionDelete = onOptionDelete === null || onOptionDelete === void 0 ? void 0 : onOptionDelete(editingOption)) !== null && _onOptionDelete !== void 0 ? _onOptionDelete : new Promise((r)=>r())).then(()=>{
299
- deleteChosen(editingOption === null || editingOption === void 0 ? void 0 : editingOption.value);
300
- setOptions((options)=>options.filter(({ value })=>value !== (editingOption === null || editingOption === void 0 ? void 0 : editingOption.value)));
301
- setEditingOption(null);
302
- });
303
- };
304
- const saveEditingOption = ()=>{
305
- if (!(editingOption === null || editingOption === void 0 ? void 0 : editingOption.isChanged) || isEditingOptionError) {
306
- setEditingOption(null);
307
- return false;
334
+ const windowWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
335
+ const windowHeight = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
336
+ const el = editingOption?.ref?.current;
337
+ const {
338
+ x,
339
+ y,
340
+ width,
341
+ height
342
+ } = el?.getBoundingClientRect() ?? {};
343
+ const containerPosition = dropdownListWrapperRef?.current?.getBoundingClientRect();
344
+ const distanceToRight = windowWidth - containerPosition?.x - containerPosition?.width;
345
+ const distanceToBottom = windowHeight - y - scrollY - height;
346
+ Object.values(positionClasses).map(className => editOptionModalRef.current.classList.remove(className));
347
+ editOptionModalRef.current.classList.add(positionClasses?.[distanceToRight < modalSize ? "left" : "right"] ?? "");
348
+ editOptionModalRef.current.classList.add(positionClasses?.[distanceToBottom < modalSize ? "top" : "bottom"] ?? "");
349
+ const xTranslate = distanceToRight < modalSize ? "calc(-100% + 7px)" : "-35px";
350
+ const yTranslate = distanceToBottom < modalSize ? `calc(-100% - ${height + 10}px)` : "10px";
351
+ editOptionModalRef.current.style.left = `${x + scrollX + width}px`;
352
+ editOptionModalRef.current.style.top = `${y + scrollY + height}px`;
353
+ editOptionModalRef.current.style.transform = `translate(${xTranslate}, ${yTranslate})`;
354
+ };
355
+ const renderEditOptionModal = () => {
356
+ return /*#__PURE__*/_react.default.createElement("div", {
357
+ key: `editOptionModal${editingOption?.value}`,
358
+ ref: editOptionModalRef,
359
+ className: (0, _classnames.default)(`${RC}__edit-option-modal`)
360
+ }, /*#__PURE__*/_react.default.createElement("div", {
361
+ className: (0, _classnames.default)(`${RC}__edit-option-modal-section`)
362
+ }, /*#__PURE__*/_react.default.createElement(_Input.default, {
363
+ value: editingOption.label,
364
+ onChange: v => setEditingOption(state => ({
365
+ ...state,
366
+ label: v
367
+ })),
368
+ error: isEditingOptionError,
369
+ onKeyDown: keyCode => {
370
+ if (keyCode === 13) saveEditingOption();
371
+ },
372
+ symbolsLimit: "50",
373
+ ref: editingOptionInputRef
374
+ }), /*#__PURE__*/_react.default.createElement(_Button.default, {
375
+ variant: "link",
376
+ icon: /*#__PURE__*/_react.default.createElement(_reactFeather.Trash2, null),
377
+ label: "Delete",
378
+ onClick: onOptionDeleteClick
379
+ })), /*#__PURE__*/_react.default.createElement("div", {
380
+ className: (0, _classnames.default)(`${RC}__edit-option-modal-section-divider`)
381
+ }), /*#__PURE__*/_react.default.createElement("div", {
382
+ className: (0, _classnames.default)(`${RC}__edit-option-modal-section`)
383
+ }, /*#__PURE__*/_react.default.createElement("h3", null, "Colors"), /*#__PURE__*/_react.default.createElement("div", {
384
+ className: (0, _classnames.default)(`${RC}__edit-option-modal-section-colors`)
385
+ }, COLORS.map(color => /*#__PURE__*/_react.default.createElement("div", {
386
+ key: color,
387
+ className: "color-block",
388
+ style: {
389
+ backgroundColor: color
390
+ },
391
+ onClick: () => setEditingOption(state => ({
392
+ ...state,
393
+ style: {
394
+ ...state.style,
395
+ backgroundColor: color
308
396
  }
309
- onOptionEdit === null || onOptionEdit === void 0 ? void 0 : onOptionEdit(editingOption);
310
- setOptions((options)=>options.map((option)=>{
311
- if (editingOption && option.value === (editingOption === null || editingOption === void 0 ? void 0 : editingOption.value)) {
312
- const tmp = {
313
- ...editingOption
314
- };
315
- setEditingOption(null);
316
- return tmp;
317
- }
318
- return option;
319
- }));
320
- };
321
- const setEditOptionModalStyles = ()=>{
322
- var _editingOption_ref, _dropdownListWrapperRef_current;
323
- if (!editingOption || !(editOptionModalRef === null || editOptionModalRef === void 0 ? void 0 : editOptionModalRef.current)) return null;
324
- const modalSize = 200;
325
- const { scrollX, scrollY } = window;
326
- const positionClasses = {
327
- left: "modal-left",
328
- right: "modal-right",
329
- top: "modal-top",
330
- bottom: "modal-bottom"
331
- };
332
- const windowWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
333
- const windowHeight = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
334
- const el = editingOption === null || editingOption === void 0 ? void 0 : (_editingOption_ref = editingOption.ref) === null || _editingOption_ref === void 0 ? void 0 : _editingOption_ref.current;
335
- var _el_getBoundingClientRect;
336
- const { x, y, width, height } = (_el_getBoundingClientRect = el === null || el === void 0 ? void 0 : el.getBoundingClientRect()) !== null && _el_getBoundingClientRect !== void 0 ? _el_getBoundingClientRect : {};
337
- const containerPosition = dropdownListWrapperRef === null || dropdownListWrapperRef === void 0 ? void 0 : (_dropdownListWrapperRef_current = dropdownListWrapperRef.current) === null || _dropdownListWrapperRef_current === void 0 ? void 0 : _dropdownListWrapperRef_current.getBoundingClientRect();
338
- const distanceToRight = windowWidth - (containerPosition === null || containerPosition === void 0 ? void 0 : containerPosition.x) - (containerPosition === null || containerPosition === void 0 ? void 0 : containerPosition.width);
339
- const distanceToBottom = windowHeight - y - scrollY - height;
340
- Object.values(positionClasses).map((className)=>editOptionModalRef.current.classList.remove(className));
341
- var _positionClasses_;
342
- editOptionModalRef.current.classList.add((_positionClasses_ = positionClasses === null || positionClasses === void 0 ? void 0 : positionClasses[distanceToRight < modalSize ? "left" : "right"]) !== null && _positionClasses_ !== void 0 ? _positionClasses_ : "");
343
- var _positionClasses_1;
344
- editOptionModalRef.current.classList.add((_positionClasses_1 = positionClasses === null || positionClasses === void 0 ? void 0 : positionClasses[distanceToBottom < modalSize ? "top" : "bottom"]) !== null && _positionClasses_1 !== void 0 ? _positionClasses_1 : "");
345
- const xTranslate = distanceToRight < modalSize ? "calc(-100% + 7px)" : "-35px";
346
- const yTranslate = distanceToBottom < modalSize ? `calc(-100% - ${height + 10}px)` : "10px";
347
- editOptionModalRef.current.style.left = `${x + scrollX + width}px`;
348
- editOptionModalRef.current.style.top = `${y + scrollY + height}px`;
349
- editOptionModalRef.current.style.transform = `translate(${xTranslate}, ${yTranslate})`;
350
- };
351
- const renderEditOptionModal = ()=>{
352
- return /*#__PURE__*/ (0, _jsxruntime.jsxs)("div", {
353
- ref: editOptionModalRef,
354
- className: (0, _classnames.default)(`${RC}__edit-option-modal`),
355
- children: [
356
- /*#__PURE__*/ (0, _jsxruntime.jsxs)("div", {
357
- className: (0, _classnames.default)(`${RC}__edit-option-modal-section`),
358
- children: [
359
- /*#__PURE__*/ (0, _jsxruntime.jsx)(_Input.default, {
360
- value: editingOption.label,
361
- onChange: (v)=>setEditingOption((state)=>({
362
- ...state,
363
- label: v
364
- })),
365
- error: isEditingOptionError,
366
- onKeyDown: (keyCode)=>{
367
- if (keyCode === 13) saveEditingOption();
368
- },
369
- symbolsLimit: "50",
370
- ref: editingOptionInputRef
371
- }),
372
- /*#__PURE__*/ (0, _jsxruntime.jsx)(_Button.default, {
373
- variant: "link",
374
- icon: /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactfeather.Trash2, {}),
375
- label: "Delete",
376
- onClick: onOptionDeleteClick
377
- })
378
- ]
379
- }),
380
- /*#__PURE__*/ (0, _jsxruntime.jsx)("div", {
381
- className: (0, _classnames.default)(`${RC}__edit-option-modal-section-divider`)
382
- }),
383
- /*#__PURE__*/ (0, _jsxruntime.jsxs)("div", {
384
- className: (0, _classnames.default)(`${RC}__edit-option-modal-section`),
385
- children: [
386
- /*#__PURE__*/ (0, _jsxruntime.jsx)("h3", {
387
- children: "Colors"
388
- }),
389
- /*#__PURE__*/ (0, _jsxruntime.jsx)("div", {
390
- className: (0, _classnames.default)(`${RC}__edit-option-modal-section-colors`),
391
- children: COLORS.map((color)=>{
392
- var _editingOption_style;
393
- return /*#__PURE__*/ (0, _jsxruntime.jsx)("div", {
394
- className: "color-block",
395
- style: {
396
- backgroundColor: color
397
- },
398
- onClick: ()=>setEditingOption((state)=>({
399
- ...state,
400
- style: {
401
- ...state.style,
402
- backgroundColor: color
403
- }
404
- })),
405
- children: (editingOption === null || editingOption === void 0 ? void 0 : (_editingOption_style = editingOption.style) === null || _editingOption_style === void 0 ? void 0 : _editingOption_style.backgroundColor) === color ? /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactfeather.Check, {}) : null
406
- }, color);
407
- })
408
- })
409
- ]
410
- })
411
- ]
412
- }, `editOptionModal${editingOption === null || editingOption === void 0 ? void 0 : editingOption.value}`);
397
+ }))
398
+ }, editingOption?.style?.backgroundColor === color ? /*#__PURE__*/_react.default.createElement(_reactFeather.Check, null) : null)))));
399
+ };
400
+ // --- CREATABLE LOGIC END --- //
401
+
402
+ // --- GENERAL FUNCTIONS BEGIN --- //
403
+ const handleClickOutside = e => {
404
+ const {
405
+ target
406
+ } = e;
407
+ if (isOpen && !getListContainer()?.contains(target) && !editOptionModalRef.current
408
+ // &&
409
+ // (
410
+ // customTriggerRef?.current ? customTriggerRef?.current?.contains(target) : true
411
+ // )
412
+ ) {
413
+ setIsOpen(false);
414
+ onDropdownListClose?.(e);
415
+ } else if (editOptionModalRef.current && !editOptionModalRef.current?.contains(target)) {
416
+ if (!document?.getElementById?.(`editTrigger${editingOption?.value}`)?.contains?.(target)) saveEditingOption();
417
+ }
418
+ };
419
+ const closeList = e => {
420
+ handleClickOutside(e);
421
+ if (!e.target.isEqualNode(inputRef?.current)) inputRef?.current?.blur();
422
+ };
423
+ const isTargetInParent = target => {
424
+ if (target?.tagName === "svg" && target?.parentNodclassName === "tag__button" || target?.tagName === "line") return false;
425
+ if (target?.tagName === "svg" && target?.parentNodclassName !== "tag__button" || target?.className?.indexOf?.("tag__label") !== -1 || target?.className?.indexOf?.("tag-list_wrapper") !== -1 || target?.className.indexOf(`${RC}__trigger`) !== -1 || target?.className === "tags-dropdown__arrow") return true;
426
+ return false;
427
+ };
428
+ const isItemMatchesSearch = item => {
429
+ if (item.isHiddenInList) return false;
430
+ const title = item.title || item.label;
431
+ return searchValue.length ? title?.toLowerCase().includes(searchValue?.toLowerCase() || "") : true;
432
+ };
433
+ // --- GENERAL FUNCTIONS END --- //
434
+
435
+ const prepareOptions = options => {
436
+ return options?.map(option => option?.groupName ? option?.list : option).flat();
437
+ };
438
+ const getFilteredOptions = options => options?.reduce((result, option) => {
439
+ if (option.groupName) {
440
+ const filteredGroupItems = option?.list?.filter(item => isItemMatchesSearch(item));
441
+ if (filteredGroupItems?.length) {
442
+ result.push({
443
+ ...option,
444
+ list: filteredGroupItems
445
+ });
446
+ }
447
+ } else if (isItemMatchesSearch(option)) {
448
+ result.push(option);
449
+ }
450
+ return result;
451
+ }, []);
452
+ const getTotalOptions = (0, _react.useCallback)(() => {
453
+ return options?.reduce((result, item) => {
454
+ if (item?.list) {
455
+ result += item?.list?.length || 0;
456
+ } else {
457
+ ++result;
458
+ }
459
+ return result;
460
+ }, 0);
461
+ }, [options]);
462
+ const onChangeHandler = item => {
463
+ if (item?.isFreezed) return false;
464
+ if (item?.closeOnOptionSelect !== undefined) {
465
+ if (item.closeOnOptionSelect) setIsOpen(false);
466
+ } else if (isMobile ? closeOnSelectMobile : closeOnSelect) setIsOpen(false);
467
+ setSearchValueInterceptor("");
468
+ if (chosenOptions.some(el => el === item.value)) {
469
+ deleteChosen(item.value);
470
+ return null;
471
+ }
472
+ if (isUseLocalOptionsStore) {
473
+ setLocalOptionsStore(options => ({
474
+ ...options,
475
+ [item?.value]: item?.label
476
+ }));
477
+ }
478
+ onChange([...chosenOptions, item.value], "chosenOptions");
479
+ return null;
480
+ };
481
+ const onSearchHandler = name => {
482
+ let inputValue = name;
483
+ if (!isNotValidateASCII) inputValue = (0, _fieldValueFormatters.formatToOnlyASCIICodeText)(inputValue);
484
+ setSearchValueInterceptor(inputValue);
485
+ };
486
+ const onWrapperClick = e => {
487
+ if (e.target === wrapperRef?.current) {
488
+ e.stopPropagation();
489
+ e.preventDefault();
490
+ setIsOpen(false);
491
+ }
492
+ };
493
+ const selectAllItems = () => {
494
+ const preparedOptions = prepareOptions(options)?.filter(_ref6 => {
495
+ let {
496
+ isFreezed,
497
+ value
498
+ } = _ref6;
499
+ return !isFreezed && !chosenOptions?.includes(value) && value !== "open_modal";
500
+ });
501
+ if (isUseLocalOptionsStore) {
502
+ setLocalOptionsStore(options => preparedOptions?.reduce((result, _ref7) => {
503
+ let {
504
+ value,
505
+ label
506
+ } = _ref7;
507
+ result[value] = label;
508
+ return result;
509
+ }, options));
510
+ }
511
+ onChange([...chosenOptions, ...(preparedOptions?.map(_ref8 => {
512
+ let {
513
+ value
514
+ } = _ref8;
515
+ return value;
516
+ }) || [])], "chosenOptions");
517
+ if (isMobile ? closeOnSelectAllMobile : closeOnSelectAll) setIsOpen(false);
518
+ };
519
+ const unselectAllItems = () => {
520
+ if (isUseLocalOptionsStore) setLocalOptionsStore({});
521
+ onChange(chosenOptions?.filter(item => prepareOptions(options)?.find(_ref9 => {
522
+ let {
523
+ value
524
+ } = _ref9;
525
+ return value === item;
526
+ })?.isFreezed), "chosenOptions");
527
+ if (isMobile ? closeOnRemoveAllMobile : closeOnRemoveAll) setIsOpen(false);
528
+ };
529
+ const doScrollCallback = (0, _react.useCallback)(e => {
530
+ if (doLiveSearchRequest && typeof doLiveSearchRequest === "function") {
531
+ if (Math.round(e.target.clientHeight + e.target.scrollTop) == e.target.scrollHeight) {
532
+ doLiveSearchRequest(searchValueRef.current, true);
533
+ }
534
+ }
535
+ }, [options]);
536
+
537
+ // --- RENDER FUNCTIONS BEGIN --- //
538
+
539
+ const getMarkupForElement = item => {
540
+ const {
541
+ description
542
+ } = item;
543
+ const title = item.title || item.label;
544
+ const hightlightSearchValue = title => {
545
+ const index = title?.toLowerCase()?.indexOf(searchValue?.toLowerCase());
546
+ if (index === -1) return title;
547
+ return /*#__PURE__*/_react.default.createElement("pre", {
548
+ className: "inherit-styles"
549
+ }, /*#__PURE__*/_react.default.createElement("span", null, title.substring(0, index)), /*#__PURE__*/_react.default.createElement("span", {
550
+ className: "search-match bg--yellow"
551
+ }, title.substring(index, index + searchValue?.length)), /*#__PURE__*/_react.default.createElement("span", null, title.substring(index + searchValue?.length)));
413
552
  };
414
- // --- CREATABLE LOGIC END --- //
415
- // --- GENERAL FUNCTIONS BEGIN --- //
416
- const handleClickOutside = (e)=>{
417
- var _getListContainer, _editOptionModalRef_current;
418
- const { target } = e;
419
- if (isOpen && !((_getListContainer = getListContainer()) === null || _getListContainer === void 0 ? void 0 : _getListContainer.contains(target)) && !editOptionModalRef.current) {
420
- setIsOpen(false);
421
- onDropdownListClose === null || onDropdownListClose === void 0 ? void 0 : onDropdownListClose(e);
422
- } else if (editOptionModalRef.current && !((_editOptionModalRef_current = editOptionModalRef.current) === null || _editOptionModalRef_current === void 0 ? void 0 : _editOptionModalRef_current.contains(target))) {
423
- var _document_getElementById_contains, _document_getElementById, _document_getElementById1, _document;
424
- if (!((_document = document) === null || _document === void 0 ? void 0 : (_document_getElementById1 = _document.getElementById) === null || _document_getElementById1 === void 0 ? void 0 : (_document_getElementById = _document_getElementById1.call(_document, `editTrigger${editingOption === null || editingOption === void 0 ? void 0 : editingOption.value}`)) === null || _document_getElementById === void 0 ? void 0 : (_document_getElementById_contains = _document_getElementById.contains) === null || _document_getElementById_contains === void 0 ? void 0 : _document_getElementById_contains.call(_document_getElementById, target))) saveEditingOption();
553
+ return /*#__PURE__*/_react.default.createElement("button", {
554
+ ref: item?.ref,
555
+ key: `${RC}__list-item-${item.id || item.value}`,
556
+ onClick: e => {
557
+ e.preventDefault();
558
+ e.stopPropagation();
559
+ onChangeHandler(item);
560
+ },
561
+ className: (0, _classnames.default)(`${RC}__list-item`, {
562
+ [`${RC}__list-item_active`]: chosenOptions?.some(value => value === item.value)
563
+ }, {
564
+ [`${RC}__list-item_disabled`]: item.disabled
565
+ }, {
566
+ [`${RC}__list-item_freezed`]: item?.isFreezed
567
+ }, {
568
+ [`${RC}__list-item--editing`]: item?.value === editingOption?.value
569
+ }, item.className)
570
+ }, !isMobile && /*#__PURE__*/_react.default.createElement("span", {
571
+ className: (0, _classnames.default)(`${RC}__active-icon`, {
572
+ [`${RC}__active-icon_active`]: chosenOptions?.some(value => value === item.value)
573
+ })
574
+ }, /*#__PURE__*/_react.default.createElement(_reactFeather.Check, {
575
+ width: 16,
576
+ height: 16,
577
+ className: "color--text"
578
+ })), /*#__PURE__*/_react.default.createElement("div", {
579
+ className: (0, _classnames.default)(`${RC}__list-item-body`)
580
+ }, renderOptionsAsTags ? /*#__PURE__*/_react.default.createElement(_Tag.default, {
581
+ key: item?.value,
582
+ className: (0, _classnames.default)(`${RC}__list-item-title`, item?.labelClassName, {
583
+ "tag_with-btn": !item?.isFreezed
584
+ }),
585
+ label: hightlightSearchValue(title),
586
+ style: item?.style,
587
+ isNoDismiss: true
588
+ }) : /*#__PURE__*/_react.default.createElement("span", {
589
+ className: (0, _classnames.default)(`${RC}__list-item-title`, item.labelClassName)
590
+ }, hightlightSearchValue(title)), description && /*#__PURE__*/_react.default.createElement("span", {
591
+ className: (0, _classnames.default)(`${RC}__list-item-description`)
592
+ }, description)), !isMobile && item?.isEditable && onOptionEdit && onOptionDelete && /*#__PURE__*/_react.default.createElement("div", {
593
+ id: `editTrigger${item?.value}`,
594
+ className: (0, _classnames.default)(`${RC}__list-item-edit-trigger`),
595
+ onClick: e => onOptionEditClick(e, item)
596
+ }, /*#__PURE__*/_react.default.createElement(_reactFeather.MoreHorizontal, null)), isMobile ? item?.customMobileIcon ?? /*#__PURE__*/_react.default.createElement(_CheckboxInput.default, {
597
+ value: chosenOptions?.some(value => value === item.value),
598
+ onChange: () => {
599
+ onChangeHandler(item);
600
+ }
601
+ }) : "");
602
+ };
603
+ const getListMarkUp = () => {
604
+ const filteredOptions = getFilteredOptions(options);
605
+ const arrToPrint = [];
606
+ for (const option of filteredOptions) {
607
+ if (option.groupName) {
608
+ arrToPrint.push(/*#__PURE__*/_react.default.createElement("div", {
609
+ key: option.groupName?.toString()?.replace(/ /g, "_").concat(Date.now()),
610
+ className: (0, _classnames.default)(`${RC}-group`, option.className)
611
+ }, /*#__PURE__*/_react.default.createElement("span", {
612
+ className: `${RC}-group__name`
613
+ }, option.groupName), option.list?.map(item => getMarkupForElement(item))));
614
+ } else arrToPrint.push(getMarkupForElement(option));
615
+ }
616
+ return /*#__PURE__*/_react.default.createElement("div", {
617
+ className: (0, _classnames.default)(`${RC}__container-wrapper`),
618
+ ref: wrapperRef,
619
+ onClick: isMobile ? onWrapperClick : () => {}
620
+ }, /*#__PURE__*/_react.default.createElement("div", {
621
+ ref: dropdownListWrapperRef,
622
+ className: (0, _classnames.default)(`${RC}__selector-wrapper`, {
623
+ [`${RC}__selector-wrapper--fixed-height`]: isFixedMaxHeight && isMobile
624
+ })
625
+ }, headerContent || isMobile ? /*#__PURE__*/_react.default.createElement("div", {
626
+ className: (0, _classnames.default)(`${RC}__header`, {
627
+ [`${RC}__header-with-shadow`]: isScrollableList && isMobile,
628
+ [`${RC}__header-with-shadow-hidden`]: scrollTop === 0
629
+ })
630
+ }, isMobile && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
631
+ className: (0, _classnames.default)(`${RC}__header-row`)
632
+ }, /*#__PURE__*/_react.default.createElement("div", {
633
+ className: (0, _classnames.default)(`${RC}__label`)
634
+ }, label), /*#__PURE__*/_react.default.createElement("div", {
635
+ className: (0, _classnames.default)(`${RC}__close-icon`),
636
+ onClick: e => {
637
+ e.stopPropagation();
638
+ setIsOpen(false);
639
+ }
640
+ }, /*#__PURE__*/_react.default.createElement(_reactFeather.X, {
641
+ onClick: e => {
642
+ e.stopPropagation();
643
+ setIsOpen(false);
644
+ }
645
+ }))), getTotalOptions() > (minItemsForShowMobileSearch || MIN_ITEMS_FOR_SHOW_MOBILE_SEARCH) && /*#__PURE__*/_react.default.createElement("div", {
646
+ className: (0, _classnames.default)(`${RC}__header-row`)
647
+ }, /*#__PURE__*/_react.default.createElement(_Input.default, (0, _extends2.default)({
648
+ className: `${RC}__input`,
649
+ value: searchValue,
650
+ onChange: v => setSearchValueInterceptor(v),
651
+ placeholder: mobileSearchPlaceholder || "Search",
652
+ withDelete: true,
653
+ onMouseDown: () => {
654
+ if (!isOpen) {
655
+ setIsOpen(true);
425
656
  }
426
- };
427
- const closeList = (e)=>{
428
- var _inputRef_current;
429
- handleClickOutside(e);
430
- if (!e.target.isEqualNode(inputRef === null || inputRef === void 0 ? void 0 : inputRef.current)) inputRef === null || inputRef === void 0 ? void 0 : (_inputRef_current = inputRef.current) === null || _inputRef_current === void 0 ? void 0 : _inputRef_current.blur();
431
- };
432
- const isTargetInParent = (target)=>{
433
- var _target_className_indexOf, _target_className, _target_className_indexOf1, _target_className1;
434
- if ((target === null || target === void 0 ? void 0 : target.tagName) === "svg" && (target === null || target === void 0 ? void 0 : target.parentNodclassName) === "tag__button" || (target === null || target === void 0 ? void 0 : target.tagName) === "line") return false;
435
- if ((target === null || target === void 0 ? void 0 : target.tagName) === "svg" && (target === null || target === void 0 ? void 0 : target.parentNodclassName) !== "tag__button" || (target === null || target === void 0 ? void 0 : (_target_className = target.className) === null || _target_className === void 0 ? void 0 : (_target_className_indexOf = _target_className.indexOf) === null || _target_className_indexOf === void 0 ? void 0 : _target_className_indexOf.call(_target_className, "tag__label")) !== -1 || (target === null || target === void 0 ? void 0 : (_target_className1 = target.className) === null || _target_className1 === void 0 ? void 0 : (_target_className_indexOf1 = _target_className1.indexOf) === null || _target_className_indexOf1 === void 0 ? void 0 : _target_className_indexOf1.call(_target_className1, "tag-list_wrapper")) !== -1 || (target === null || target === void 0 ? void 0 : target.className.indexOf(`${RC}__trigger`)) !== -1 || (target === null || target === void 0 ? void 0 : target.className) === "tags-dropdown__arrow") return true;
436
- return false;
437
- };
438
- const isItemMatchesSearch = (item)=>{
439
- if (item.isHiddenInList) return false;
440
- const title = item.title || item.label;
441
- return searchValue.length ? title === null || title === void 0 ? void 0 : title.toLowerCase().includes((searchValue === null || searchValue === void 0 ? void 0 : searchValue.toLowerCase()) || "") : true;
442
- };
443
- // --- GENERAL FUNCTIONS END --- //
444
- const prepareOptions = (options)=>{
445
- return options === null || options === void 0 ? void 0 : options.map((option)=>(option === null || option === void 0 ? void 0 : option.groupName) ? option === null || option === void 0 ? void 0 : option.list : option).flat();
446
- };
447
- const getFilteredOptions = (options)=>options === null || options === void 0 ? void 0 : options.reduce((result, option)=>{
448
- if (option.groupName) {
449
- var _option_list;
450
- const filteredGroupItems = option === null || option === void 0 ? void 0 : (_option_list = option.list) === null || _option_list === void 0 ? void 0 : _option_list.filter((item)=>isItemMatchesSearch(item));
451
- if (filteredGroupItems === null || filteredGroupItems === void 0 ? void 0 : filteredGroupItems.length) {
452
- result.push({
453
- ...option,
454
- list: filteredGroupItems
455
- });
456
- }
457
- } else if (isItemMatchesSearch(option)) {
458
- result.push(option);
459
- }
460
- return result;
461
- }, []);
462
- const getTotalOptions = (0, _react.useCallback)(()=>{
463
- return options === null || options === void 0 ? void 0 : options.reduce((result, item)=>{
464
- if (item === null || item === void 0 ? void 0 : item.list) {
465
- var _item_list;
466
- result += (item === null || item === void 0 ? void 0 : (_item_list = item.list) === null || _item_list === void 0 ? void 0 : _item_list.length) || 0;
467
- } else {
468
- ++result;
469
- }
470
- return result;
471
- }, 0);
472
- }, [
473
- options
474
- ]);
475
- const onChangeHandler = (item)=>{
476
- if (item === null || item === void 0 ? void 0 : item.isFreezed) return false;
477
- if ((item === null || item === void 0 ? void 0 : item.closeOnOptionSelect) !== undefined) {
478
- if (item.closeOnOptionSelect) setIsOpen(false);
479
- } else if (isMobile ? closeOnSelectMobile : closeOnSelect) setIsOpen(false);
480
- setSearchValueInterceptor("");
481
- if (chosenOptions.some((el)=>el === item.value)) {
482
- deleteChosen(item.value);
483
- return null;
657
+ }
658
+ }, attributesOfNativeInput)))), headerContent && /*#__PURE__*/_react.default.createElement("div", {
659
+ className: (0, _classnames.default)(`${RC}__header-row`)
660
+ }, headerContent)) : null, withSearchInputInList && /*#__PURE__*/_react.default.createElement("div", {
661
+ className: (0, _classnames.default)(`${RC}__input-list-wrapper`)
662
+ }, renderSearchInput()), withCreateLogic && onOptionCreate && searchValue && filteredOptions.length && singleLevelOptions.every(_ref10 => {
663
+ let {
664
+ label
665
+ } = _ref10;
666
+ return label?.toLowerCase() !== searchValue?.toLowerCase();
667
+ }) ? /*#__PURE__*/_react.default.createElement("div", {
668
+ className: (0, _classnames.default)(`${RC}__creatable-helper`)
669
+ }, "Select an option or create one") : null, /*#__PURE__*/_react.default.createElement("div", {
670
+ ref: dropdownListRef,
671
+ className: `${RC}__list ${headerContent || isMobile ? `${RC}__list--with-header` : ""} ${footerContent ? `${RC}__list--with-footer` : ""}`
672
+ }, arrToPrint, filteredOptions.filter(_ref11 => {
673
+ let {
674
+ value
675
+ } = _ref11;
676
+ return value !== "open_modal";
677
+ })?.length === 0 && (!withCreateLogic || !searchValue) ? /*#__PURE__*/_react.default.createElement("div", {
678
+ className: `${RC}__no-options`
679
+ }, noOptionsText) : null), (footerContent || isMobile) && filteredOptions.filter(_ref12 => {
680
+ let {
681
+ value
682
+ } = _ref12;
683
+ return value !== "open_modal";
684
+ })?.length > 0 ? /*#__PURE__*/_react.default.createElement("div", {
685
+ className: (0, _classnames.default)(`${RC}__footer`, {
686
+ [`${RC}__footer-with-shadow`]: isMobile && isScrollableList,
687
+ [`${RC}__footer-with-shadow-hidden`]: scrollTop === scrollHeight
688
+ })
689
+ }, footerContent, isMobile && /*#__PURE__*/_react.default.createElement("button", {
690
+ onClick: () => setIsOpen(false)
691
+ }, "Apply", chosenOptions?.length ? `(${chosenOptions?.length})` : "")) : null, editingOption && /*#__PURE__*/(0, _reactDom.createPortal)(renderEditOptionModal(), document.getElementById("app") ?? document.body), withCreateLogic && onOptionCreate && searchValue && singleLevelOptions.every(_ref13 => {
692
+ let {
693
+ label
694
+ } = _ref13;
695
+ return label?.toLowerCase() !== searchValue?.toLowerCase();
696
+ }) && /*#__PURE__*/_react.default.createElement("div", {
697
+ className: (0, _classnames.default)(`${RC}__create-option`),
698
+ onClick: onOptionCreateClick
699
+ }, "Create", /*#__PURE__*/_react.default.createElement(_Tag.default, {
700
+ label: searchValue,
701
+ style: {
702
+ backgroundColor: randomColorForNewOption
703
+ },
704
+ isNoDismiss: true
705
+ }))));
706
+ };
707
+ const renderSearchInput = () => {
708
+ return /*#__PURE__*/_react.default.createElement(_Input.default, (0, _extends2.default)({
709
+ ref: inputRef,
710
+ className: (0, _classnames.default)(`${RC}__input`, {
711
+ [`${RC}__input--in-list`]: withSearchInputInList
712
+ }),
713
+ value: searchValue,
714
+ onChange: onSearchHandler,
715
+ placeholder: placeholder || "Select from list",
716
+ attributesOfNativeInput: {
717
+ ...attributesOfNativeInput,
718
+ onKeyDown: e => {
719
+ if (e.keyCode === 13 && withCreateLogic && onOptionCreate && singleLevelOptions.every(_ref14 => {
720
+ let {
721
+ label
722
+ } = _ref14;
723
+ return label?.toLowerCase() !== searchValue?.toLowerCase();
724
+ })) {
725
+ onOptionCreateClick();
726
+ }
727
+ onKeyPress(e, searchValue);
484
728
  }
485
- if (isUseLocalOptionsStore) {
486
- setLocalOptionsStore((options)=>({
487
- ...options,
488
- [item === null || item === void 0 ? void 0 : item.value]: item === null || item === void 0 ? void 0 : item.label
489
- }));
729
+ // onFocus: (e) => {
730
+ // if (isMobile) e?.target?.blur();
731
+ // },
732
+ }
733
+ }, withCreateLogic ? {
734
+ symbolsLimit: 50
735
+ } : {}));
736
+ };
737
+ const renderDropdownTrigger = (0, _react.useCallback)(() => {
738
+ const renderDefaultDropdownTrigger = () => {
739
+ return /*#__PURE__*/_react.default.createElement("div", {
740
+ className: (0, _classnames.default)(`${RC}__trigger`, {
741
+ "tags-dropdown__error": error,
742
+ [`${RC}__trigger--with-actions`]: withActions
743
+ }),
744
+ onClick: _ref15 => {
745
+ let {
746
+ target
747
+ } = _ref15;
748
+ if (target?.tagName === "INPUT") {
749
+ setIsOpen(true);
750
+ } else if (isTargetInParent(target)) {
751
+ setIsOpen(isOpen => !isOpen);
752
+ }
490
753
  }
491
- onChange([
492
- ...chosenOptions,
493
- item.value
494
- ], "chosenOptions");
495
- return null;
754
+ }, noTagsWrap ? /*#__PURE__*/_react.default.createElement(_TagList.default, {
755
+ items: chosenOptions?.map((value, i) => {
756
+ const tag = singleLevelOptions?.find(el => el.value == value);
757
+ const label = isValuesInTags ? tag?.value : tag?.label || tag?.name || tag?.title;
758
+ return {
759
+ value,
760
+ label,
761
+ id: i,
762
+ className: tag?.labelClassName,
763
+ style: tag?.style
764
+ };
765
+ }),
766
+ disableShowMore: true
767
+ }) : chosenOptions?.map(value => {
768
+ const tag = singleLevelOptions?.find(el => el.value == value);
769
+ const label = isValuesInTags ? tag?.value : tag?.label || tag?.name || tag?.title;
770
+ return /*#__PURE__*/_react.default.createElement(_Tag.default, {
771
+ key: value,
772
+ className: (0, _classnames.default)(tagClassname, tag?.labelClassName, {
773
+ "tag_with-btn": !tag?.isFreezed
774
+ }),
775
+ label: label,
776
+ style: tag?.style,
777
+ removeItem: tag?.isFreezed ? null : () => deleteChosen(value),
778
+ isNoDismiss: false
779
+ });
780
+ }), chosenOptions.length === 0 || !noTagsWrap ? renderSearchInput() : "", /*#__PURE__*/_react.default.createElement("span", {
781
+ className: (0, _classnames.default)(`${RC}__arrow`, {
782
+ [`${RC}__arrow_active`]: isOpen
783
+ })
784
+ }, isMobile ? /*#__PURE__*/_react.default.createElement(_reactFeather.Code, {
785
+ className: "mobile-icon"
786
+ }) : isOpen ? /*#__PURE__*/_react.default.createElement(_reactFeather.ChevronUp, {
787
+ className: "color--text"
788
+ }) : /*#__PURE__*/_react.default.createElement(_reactFeather.ChevronDown, {
789
+ className: "color--text"
790
+ })));
496
791
  };
497
- const onSearchHandler = (name)=>{
498
- let inputValue = name;
499
- if (!isNotValidateASCII) inputValue = (0, _fieldValueFormatters.formatToOnlyASCIICodeText)(inputValue);
500
- setSearchValueInterceptor(inputValue);
792
+ return renderCustomTrigger?.({
793
+ chosenOptions,
794
+ singleLevelOptions,
795
+ deleteChosen,
796
+ inputRef,
797
+ onSearchHandler,
798
+ isOpen,
799
+ setIsOpen
800
+ }) ?? renderDefaultDropdownTrigger();
801
+ }, [chosenOptions, singleLevelOptions, inputRef, isOpen]);
802
+ // --- RENDER FUNCTIONS END --- //
803
+
804
+ (0, _react.useLayoutEffect)(() => {
805
+ initListContainer();
806
+ if (isDefaultOpened && !isMobileProp) setIsOpen(true);
807
+ return () => {
808
+ getListContainer()?.remove();
809
+ getListContainerWrapper()?.remove();
501
810
  };
502
- const onWrapperClick = (e)=>{
503
- if (e.target === (wrapperRef === null || wrapperRef === void 0 ? void 0 : wrapperRef.current)) {
504
- e.stopPropagation();
505
- e.preventDefault();
506
- setIsOpen(false);
507
- }
811
+ }, []);
812
+ (0, _react.useLayoutEffect)(() => {
813
+ if (!isMobile) {
814
+ window.addEventListener("mousewheel", closeList);
815
+ window.addEventListener("wheel", closeList);
816
+ window.addEventListener("touchmove", closeList);
817
+ window.addEventListener("mouseup", handleClickOutside);
818
+ } else {
819
+ window.removeEventListener("mousewheel", closeList);
820
+ window.removeEventListener("wheel", closeList);
821
+ window.removeEventListener("touchmove", closeList);
822
+ window.removeEventListener("mouseup", handleClickOutside);
823
+ }
824
+ getListContainer()?.addEventListener("click", closeList);
825
+ return () => {
826
+ window.removeEventListener("mousewheel", closeList);
827
+ window.removeEventListener("mouseup", handleClickOutside);
828
+ window.removeEventListener("wheel", closeList);
829
+ window.removeEventListener("touchmove", closeList);
830
+ getListContainer()?.removeEventListener("click", closeList);
508
831
  };
509
- const selectAllItems = ()=>{
510
- var _prepareOptions;
511
- const preparedOptions = (_prepareOptions = prepareOptions(options)) === null || _prepareOptions === void 0 ? void 0 : _prepareOptions.filter(({ isFreezed, value })=>!isFreezed && !(chosenOptions === null || chosenOptions === void 0 ? void 0 : chosenOptions.includes(value)) && value !== "open_modal");
512
- if (isUseLocalOptionsStore) {
513
- setLocalOptionsStore((options)=>preparedOptions === null || preparedOptions === void 0 ? void 0 : preparedOptions.reduce((result, { value, label })=>{
514
- result[value] = label;
515
- return result;
516
- }, options));
832
+ }, [getListContainer, isMobile]);
833
+ (0, _react.useLayoutEffect)(() => {
834
+ if (isOpen) {
835
+ setListContainerStyles();
836
+ setEditOptionModalStyles();
837
+ }
838
+ }, [isOpen, optionsProp, chosenOptions, searchValue, isMobile, dropdownListWrapperRef?.current?.getBoundingClientRect()?.height, recalculateListContainerStylesTrigger]);
839
+ (0, _react.useEffect)(() => {
840
+ if (isUseLocalOptionsStore && chosenOptions.length !== Object.keys(localOptionsStore).length) {
841
+ options.map(option => {
842
+ if (!localOptionsStore?.[option?.value]) {
843
+ setLocalOptionsStore(options => ({
844
+ ...options,
845
+ [option?.value]: option?.label
846
+ }));
517
847
  }
518
- onChange([
519
- ...chosenOptions,
520
- ...(preparedOptions === null || preparedOptions === void 0 ? void 0 : preparedOptions.map(({ value })=>value)) || []
521
- ], "chosenOptions");
522
- if (isMobile ? closeOnSelectAllMobile : closeOnSelectAll) setIsOpen(false);
523
- };
524
- const unselectAllItems = ()=>{
525
- if (isUseLocalOptionsStore) setLocalOptionsStore({});
526
- onChange(chosenOptions === null || chosenOptions === void 0 ? void 0 : chosenOptions.filter((item)=>{
527
- var _prepareOptions_find, _prepareOptions;
528
- return (_prepareOptions = prepareOptions(options)) === null || _prepareOptions === void 0 ? void 0 : (_prepareOptions_find = _prepareOptions.find(({ value })=>value === item)) === null || _prepareOptions_find === void 0 ? void 0 : _prepareOptions_find.isFreezed;
529
- }), "chosenOptions");
530
- if (isMobile ? closeOnRemoveAllMobile : closeOnRemoveAll) setIsOpen(false);
848
+ });
849
+ }
850
+ }, [chosenOptions, isUseLocalOptionsStore]);
851
+ (0, _react.useEffect)(() => {
852
+ const windowScrollEventHandler = e => {
853
+ setWindowScrollTop(window.scrollY);
531
854
  };
532
- const doScrollCallback = (0, _react.useCallback)((e)=>{
533
- if (doLiveSearchRequest && typeof doLiveSearchRequest === "function") {
534
- if (Math.round(e.target.clientHeight + e.target.scrollTop) == e.target.scrollHeight) {
535
- doLiveSearchRequest(searchValueRef.current, true);
536
- }
537
- }
538
- }, [
539
- options
540
- ]);
541
- // --- RENDER FUNCTIONS BEGIN --- //
542
- const getMarkupForElement = (item)=>{
543
- const { description } = item;
544
- const title = item.title || item.label;
545
- const hightlightSearchValue = (title)=>{
546
- var _title_toLowerCase;
547
- const index = title === null || title === void 0 ? void 0 : (_title_toLowerCase = title.toLowerCase()) === null || _title_toLowerCase === void 0 ? void 0 : _title_toLowerCase.indexOf(searchValue === null || searchValue === void 0 ? void 0 : searchValue.toLowerCase());
548
- if (index === -1) return title;
549
- return /*#__PURE__*/ (0, _jsxruntime.jsxs)("pre", {
550
- className: "inherit-styles",
551
- children: [
552
- /*#__PURE__*/ (0, _jsxruntime.jsx)("span", {
553
- children: title.substring(0, index)
554
- }),
555
- /*#__PURE__*/ (0, _jsxruntime.jsx)("span", {
556
- className: "search-match bg--yellow",
557
- children: title.substring(index, index + (searchValue === null || searchValue === void 0 ? void 0 : searchValue.length))
558
- }),
559
- /*#__PURE__*/ (0, _jsxruntime.jsx)("span", {
560
- children: title.substring(index + (searchValue === null || searchValue === void 0 ? void 0 : searchValue.length))
561
- })
562
- ]
563
- });
564
- };
565
- var _item_customMobileIcon;
566
- return /*#__PURE__*/ (0, _jsxruntime.jsxs)("button", {
567
- ref: item === null || item === void 0 ? void 0 : item.ref,
568
- onClick: (e)=>{
569
- e.preventDefault();
570
- e.stopPropagation();
571
- onChangeHandler(item);
572
- },
573
- className: (0, _classnames.default)(`${RC}__list-item`, {
574
- [`${RC}__list-item_active`]: chosenOptions === null || chosenOptions === void 0 ? void 0 : chosenOptions.some((value)=>value === item.value)
575
- }, {
576
- [`${RC}__list-item_disabled`]: item.disabled
577
- }, {
578
- [`${RC}__list-item_freezed`]: item === null || item === void 0 ? void 0 : item.isFreezed
579
- }, {
580
- [`${RC}__list-item--editing`]: (item === null || item === void 0 ? void 0 : item.value) === (editingOption === null || editingOption === void 0 ? void 0 : editingOption.value)
581
- }, item.className),
582
- children: [
583
- !isMobile && /*#__PURE__*/ (0, _jsxruntime.jsx)("span", {
584
- className: (0, _classnames.default)(`${RC}__active-icon`, {
585
- [`${RC}__active-icon_active`]: chosenOptions === null || chosenOptions === void 0 ? void 0 : chosenOptions.some((value)=>value === item.value)
586
- }),
587
- children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactfeather.Check, {
588
- width: 16,
589
- height: 16,
590
- className: "color--text"
591
- })
592
- }),
593
- /*#__PURE__*/ (0, _jsxruntime.jsxs)("div", {
594
- className: (0, _classnames.default)(`${RC}__list-item-body`),
595
- children: [
596
- renderOptionsAsTags ? /*#__PURE__*/ (0, _jsxruntime.jsx)(_Tag.default, {
597
- className: (0, _classnames.default)(`${RC}__list-item-title`, item === null || item === void 0 ? void 0 : item.labelClassName, {
598
- "tag_with-btn": !(item === null || item === void 0 ? void 0 : item.isFreezed)
599
- }),
600
- label: hightlightSearchValue(title),
601
- style: item === null || item === void 0 ? void 0 : item.style,
602
- isNoDismiss: true
603
- }, item === null || item === void 0 ? void 0 : item.value) : /*#__PURE__*/ (0, _jsxruntime.jsx)("span", {
604
- className: (0, _classnames.default)(`${RC}__list-item-title`, item.labelClassName),
605
- children: hightlightSearchValue(title)
606
- }),
607
- description && /*#__PURE__*/ (0, _jsxruntime.jsx)("span", {
608
- className: (0, _classnames.default)(`${RC}__list-item-description`),
609
- children: description
610
- })
611
- ]
612
- }),
613
- !isMobile && (item === null || item === void 0 ? void 0 : item.isEditable) && onOptionEdit && onOptionDelete && /*#__PURE__*/ (0, _jsxruntime.jsx)("div", {
614
- id: `editTrigger${item === null || item === void 0 ? void 0 : item.value}`,
615
- className: (0, _classnames.default)(`${RC}__list-item-edit-trigger`),
616
- onClick: (e)=>onOptionEditClick(e, item),
617
- children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactfeather.MoreHorizontal, {})
618
- }),
619
- isMobile ? (_item_customMobileIcon = item === null || item === void 0 ? void 0 : item.customMobileIcon) !== null && _item_customMobileIcon !== void 0 ? _item_customMobileIcon : /*#__PURE__*/ (0, _jsxruntime.jsx)(_CheckboxInput.default, {
620
- value: chosenOptions === null || chosenOptions === void 0 ? void 0 : chosenOptions.some((value)=>value === item.value),
621
- onChange: ()=>{
622
- onChangeHandler(item);
623
- }
624
- }) : ""
625
- ]
626
- }, `${RC}__list-item-${item.id || item.value}`);
855
+ const fn = isOpen ? "addEventListener" : "removeEventListener";
856
+ selectAllButtonRef?.current?.[fn]("click", selectAllItems, true);
857
+ unselectAllButtonRef?.current?.[fn]("click", unselectAllItems, true);
858
+ if (isOpen) {
859
+ if (!isMobile || !withMobileLogic) window.removeEventListener("scroll", windowScrollEventHandler);
860
+ if (customTriggerRef?.current) {
861
+ customTriggerRef.current.style.pointerEvents = "none";
862
+ }
863
+ getListContainer()?.classList.add("tags-dropdown__container--opened");
864
+ if (!isMobile) {
865
+ inputRef?.current?.focus?.();
866
+ } else {
867
+ inputRef?.current?.blur?.();
868
+ }
869
+ } else {
870
+ if (!isMobile || !withMobileLogic) window.addEventListener("scroll", windowScrollEventHandler);
871
+ if (customTriggerRef?.current) {
872
+ customTriggerRef.current.style.pointerEvents = "auto";
873
+ }
874
+ getListContainer()?.classList.remove("tags-dropdown__container--opened");
875
+ if (withSearchInputInList) setSearchValueInterceptor("");
876
+ setListPos(null);
877
+ setSearchValue("");
878
+ }
879
+ }, [isOpen]);
880
+ (0, _react.useEffect)(() => {
881
+ const setScrollTopValue = e => {
882
+ setScrollTop(parseInt(e.target.scrollTop, 10));
627
883
  };
628
- const getListMarkUp = ()=>{
629
- var _filteredOptions_filter, _filteredOptions_filter1;
630
- const filteredOptions = getFilteredOptions(options);
631
- const arrToPrint = [];
632
- for (const option of filteredOptions){
633
- if (option.groupName) {
634
- var _option_list, _option_groupName_toString, _option_groupName;
635
- arrToPrint.push(/*#__PURE__*/ (0, _jsxruntime.jsxs)("div", {
636
- className: (0, _classnames.default)(`${RC}-group`, option.className),
637
- children: [
638
- /*#__PURE__*/ (0, _jsxruntime.jsx)("span", {
639
- className: `${RC}-group__name`,
640
- children: option.groupName
641
- }),
642
- (_option_list = option.list) === null || _option_list === void 0 ? void 0 : _option_list.map((item)=>getMarkupForElement(item))
643
- ]
644
- }, (_option_groupName = option.groupName) === null || _option_groupName === void 0 ? void 0 : (_option_groupName_toString = _option_groupName.toString()) === null || _option_groupName_toString === void 0 ? void 0 : _option_groupName_toString.replace(/ /g, "_").concat(Date.now())));
645
- } else arrToPrint.push(getMarkupForElement(option));
646
- }
647
- var _document_getElementById;
648
- return /*#__PURE__*/ (0, _jsxruntime.jsx)("div", {
649
- className: (0, _classnames.default)(`${RC}__container-wrapper`),
650
- ref: wrapperRef,
651
- onClick: isMobile ? onWrapperClick : ()=>{},
652
- children: /*#__PURE__*/ (0, _jsxruntime.jsxs)("div", {
653
- ref: dropdownListWrapperRef,
654
- className: (0, _classnames.default)(`${RC}__selector-wrapper`, {
655
- [`${RC}__selector-wrapper--fixed-height`]: isFixedMaxHeight && isMobile
656
- }),
657
- children: [
658
- headerContent || isMobile ? /*#__PURE__*/ (0, _jsxruntime.jsxs)("div", {
659
- className: (0, _classnames.default)(`${RC}__header`, {
660
- [`${RC}__header-with-shadow`]: isScrollableList && isMobile,
661
- [`${RC}__header-with-shadow-hidden`]: scrollTop === 0
662
- }),
663
- children: [
664
- isMobile && /*#__PURE__*/ (0, _jsxruntime.jsxs)(_jsxruntime.Fragment, {
665
- children: [
666
- /*#__PURE__*/ (0, _jsxruntime.jsxs)("div", {
667
- className: (0, _classnames.default)(`${RC}__header-row`),
668
- children: [
669
- /*#__PURE__*/ (0, _jsxruntime.jsx)("div", {
670
- className: (0, _classnames.default)(`${RC}__label`),
671
- children: label
672
- }),
673
- /*#__PURE__*/ (0, _jsxruntime.jsx)("div", {
674
- className: (0, _classnames.default)(`${RC}__close-icon`),
675
- onClick: (e)=>{
676
- e.stopPropagation();
677
- setIsOpen(false);
678
- },
679
- children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactfeather.X, {
680
- onClick: (e)=>{
681
- e.stopPropagation();
682
- setIsOpen(false);
683
- }
684
- })
685
- })
686
- ]
687
- }),
688
- getTotalOptions() > (minItemsForShowMobileSearch || MIN_ITEMS_FOR_SHOW_MOBILE_SEARCH) && /*#__PURE__*/ (0, _jsxruntime.jsx)("div", {
689
- className: (0, _classnames.default)(`${RC}__header-row`),
690
- children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_Input.default, {
691
- className: `${RC}__input`,
692
- value: searchValue,
693
- onChange: (v)=>setSearchValueInterceptor(v),
694
- placeholder: mobileSearchPlaceholder || "Search",
695
- withDelete: true,
696
- onMouseDown: ()=>{
697
- if (!isOpen) {
698
- setIsOpen(true);
699
- }
700
- },
701
- ...attributesOfNativeInput
702
- })
703
- })
704
- ]
705
- }),
706
- headerContent && /*#__PURE__*/ (0, _jsxruntime.jsx)("div", {
707
- className: (0, _classnames.default)(`${RC}__header-row`),
708
- children: headerContent
709
- })
710
- ]
711
- }) : null,
712
- withSearchInputInList && /*#__PURE__*/ (0, _jsxruntime.jsx)("div", {
713
- className: (0, _classnames.default)(`${RC}__input-list-wrapper`),
714
- children: renderSearchInput()
715
- }),
716
- withCreateLogic && onOptionCreate && searchValue && filteredOptions.length && singleLevelOptions.every(({ label })=>(label === null || label === void 0 ? void 0 : label.toLowerCase()) !== (searchValue === null || searchValue === void 0 ? void 0 : searchValue.toLowerCase())) ? /*#__PURE__*/ (0, _jsxruntime.jsx)("div", {
717
- className: (0, _classnames.default)(`${RC}__creatable-helper`),
718
- children: "Select an option or create one"
719
- }) : null,
720
- /*#__PURE__*/ (0, _jsxruntime.jsxs)("div", {
721
- ref: dropdownListRef,
722
- className: `${RC}__list ${headerContent || isMobile ? `${RC}__list--with-header` : ""} ${footerContent ? `${RC}__list--with-footer` : ""}`,
723
- children: [
724
- arrToPrint,
725
- ((_filteredOptions_filter = filteredOptions.filter(({ value })=>value !== "open_modal")) === null || _filteredOptions_filter === void 0 ? void 0 : _filteredOptions_filter.length) === 0 && (!withCreateLogic || !searchValue) ? /*#__PURE__*/ (0, _jsxruntime.jsx)("div", {
726
- className: `${RC}__no-options`,
727
- children: noOptionsText
728
- }) : null
729
- ]
730
- }),
731
- (footerContent || isMobile) && ((_filteredOptions_filter1 = filteredOptions.filter(({ value })=>value !== "open_modal")) === null || _filteredOptions_filter1 === void 0 ? void 0 : _filteredOptions_filter1.length) > 0 ? /*#__PURE__*/ (0, _jsxruntime.jsxs)("div", {
732
- className: (0, _classnames.default)(`${RC}__footer`, {
733
- [`${RC}__footer-with-shadow`]: isMobile && isScrollableList,
734
- [`${RC}__footer-with-shadow-hidden`]: scrollTop === scrollHeight
735
- }),
736
- children: [
737
- footerContent,
738
- isMobile && /*#__PURE__*/ (0, _jsxruntime.jsxs)("button", {
739
- onClick: ()=>setIsOpen(false),
740
- children: [
741
- "Apply",
742
- (chosenOptions === null || chosenOptions === void 0 ? void 0 : chosenOptions.length) ? `(${chosenOptions === null || chosenOptions === void 0 ? void 0 : chosenOptions.length})` : ""
743
- ]
744
- })
745
- ]
746
- }) : null,
747
- editingOption && /*#__PURE__*/ (0, _reactdom.createPortal)(renderEditOptionModal(), (_document_getElementById = document.getElementById("app")) !== null && _document_getElementById !== void 0 ? _document_getElementById : document.body),
748
- withCreateLogic && onOptionCreate && searchValue && singleLevelOptions.every(({ label })=>(label === null || label === void 0 ? void 0 : label.toLowerCase()) !== (searchValue === null || searchValue === void 0 ? void 0 : searchValue.toLowerCase())) && /*#__PURE__*/ (0, _jsxruntime.jsxs)("div", {
749
- className: (0, _classnames.default)(`${RC}__create-option`),
750
- onClick: onOptionCreateClick,
751
- children: [
752
- "Create",
753
- /*#__PURE__*/ (0, _jsxruntime.jsx)(_Tag.default, {
754
- label: searchValue,
755
- style: {
756
- backgroundColor: randomColorForNewOption
757
- },
758
- isNoDismiss: true
759
- })
760
- ]
761
- })
762
- ]
763
- })
764
- });
884
+ const preventWindowScrolling = e => {
885
+ e.preventDefault();
886
+ window.scrollTo({
887
+ top: windowScrollTop
888
+ });
765
889
  };
766
- const renderSearchInput = ()=>{
767
- return /*#__PURE__*/ (0, _jsxruntime.jsx)(_Input.default, {
768
- ref: inputRef,
769
- className: (0, _classnames.default)(`${RC}__input`, {
770
- [`${RC}__input--in-list`]: withSearchInputInList
771
- }),
772
- value: searchValue,
773
- onChange: onSearchHandler,
774
- placeholder: placeholder || "Select from list",
775
- attributesOfNativeInput: {
776
- ...attributesOfNativeInput,
777
- onKeyDown: (e)=>{
778
- if (e.keyCode === 13 && withCreateLogic && onOptionCreate && singleLevelOptions.every(({ label })=>(label === null || label === void 0 ? void 0 : label.toLowerCase()) !== (searchValue === null || searchValue === void 0 ? void 0 : searchValue.toLowerCase()))) {
779
- onOptionCreateClick();
780
- }
781
- onKeyPress(e, searchValue);
782
- }
783
- },
784
- ...withCreateLogic ? {
785
- symbolsLimit: 50
786
- } : {}
787
- });
890
+ if (isOpen && isMobile && dropdownListRef?.current) {
891
+ dropdownListRef?.current?.addEventListener("scroll", setScrollTopValue);
892
+ setIsScrollableList(dropdownListRef?.current?.scrollHeight > dropdownListRef?.current?.clientHeight);
893
+ if (isScrollableList === null) {
894
+ setIsFixedMaxHeight(dropdownListRef?.current?.scrollHeight > dropdownListRef?.current?.clientHeight);
895
+ }
896
+ }
897
+ if (isOpen && dropdownListRef && dropdownListRef.current) {
898
+ dropdownListRef.current.addEventListener("scroll", doScrollCallback);
899
+ if (!isMobile || !withMobileLogic) window.addEventListener("scroll", preventWindowScrolling);
900
+ }
901
+ return () => {
902
+ if (!isMobile || !withMobileLogic) window.removeEventListener("scroll", preventWindowScrolling);
903
+ dropdownListRef?.current?.removeEventListener("scroll", doScrollCallback);
904
+ dropdownListRef?.current?.removeEventListener("scroll", setScrollTopValue);
788
905
  };
789
- const renderDropdownTrigger = (0, _react.useCallback)(()=>{
790
- const renderDefaultDropdownTrigger = ()=>{
791
- return /*#__PURE__*/ (0, _jsxruntime.jsxs)("div", {
792
- className: (0, _classnames.default)(`${RC}__trigger`, {
793
- "tags-dropdown__error": error,
794
- [`${RC}__trigger--with-actions`]: withActions
795
- }),
796
- onClick: ({ target })=>{
797
- if ((target === null || target === void 0 ? void 0 : target.tagName) === "INPUT") {
798
- setIsOpen(true);
799
- } else if (isTargetInParent(target)) {
800
- setIsOpen((isOpen)=>!isOpen);
801
- }
802
- },
803
- children: [
804
- noTagsWrap ? /*#__PURE__*/ (0, _jsxruntime.jsx)(_TagList.default, {
805
- items: chosenOptions === null || chosenOptions === void 0 ? void 0 : chosenOptions.map((value, i)=>{
806
- const tag = singleLevelOptions === null || singleLevelOptions === void 0 ? void 0 : singleLevelOptions.find((el)=>el.value == value);
807
- const label = isValuesInTags ? tag === null || tag === void 0 ? void 0 : tag.value : (tag === null || tag === void 0 ? void 0 : tag.label) || (tag === null || tag === void 0 ? void 0 : tag.name) || (tag === null || tag === void 0 ? void 0 : tag.title);
808
- return {
809
- value,
810
- label,
811
- id: i,
812
- className: tag === null || tag === void 0 ? void 0 : tag.labelClassName,
813
- style: tag === null || tag === void 0 ? void 0 : tag.style
814
- };
815
- }),
816
- disableShowMore: true
817
- }) : chosenOptions === null || chosenOptions === void 0 ? void 0 : chosenOptions.map((value)=>{
818
- const tag = singleLevelOptions === null || singleLevelOptions === void 0 ? void 0 : singleLevelOptions.find((el)=>el.value == value);
819
- const label = isValuesInTags ? tag === null || tag === void 0 ? void 0 : tag.value : (tag === null || tag === void 0 ? void 0 : tag.label) || (tag === null || tag === void 0 ? void 0 : tag.name) || (tag === null || tag === void 0 ? void 0 : tag.title);
820
- return /*#__PURE__*/ (0, _jsxruntime.jsx)(_Tag.default, {
821
- className: (0, _classnames.default)(tagClassname, tag === null || tag === void 0 ? void 0 : tag.labelClassName, {
822
- "tag_with-btn": !(tag === null || tag === void 0 ? void 0 : tag.isFreezed)
823
- }),
824
- label: label,
825
- style: tag === null || tag === void 0 ? void 0 : tag.style,
826
- removeItem: (tag === null || tag === void 0 ? void 0 : tag.isFreezed) ? null : ()=>deleteChosen(value),
827
- isNoDismiss: false
828
- }, value);
829
- }),
830
- chosenOptions.length === 0 || !noTagsWrap ? renderSearchInput() : "",
831
- /*#__PURE__*/ (0, _jsxruntime.jsx)("span", {
832
- className: (0, _classnames.default)(`${RC}__arrow`, {
833
- [`${RC}__arrow_active`]: isOpen
834
- }),
835
- children: isMobile ? /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactfeather.Code, {
836
- className: "mobile-icon"
837
- }) : isOpen ? /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactfeather.ChevronUp, {
838
- className: "color--text"
839
- }) : /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactfeather.ChevronDown, {
840
- className: "color--text"
841
- })
842
- })
843
- ]
844
- });
845
- };
846
- var _renderCustomTrigger;
847
- return (_renderCustomTrigger = renderCustomTrigger === null || renderCustomTrigger === void 0 ? void 0 : renderCustomTrigger({
848
- chosenOptions,
849
- singleLevelOptions,
850
- deleteChosen,
851
- inputRef,
852
- onSearchHandler,
853
- isOpen,
854
- setIsOpen
855
- })) !== null && _renderCustomTrigger !== void 0 ? _renderCustomTrigger : renderDefaultDropdownTrigger();
856
- }, [
857
- chosenOptions,
858
- singleLevelOptions,
859
- inputRef,
860
- isOpen
861
- ]);
862
- // --- RENDER FUNCTIONS END --- //
863
- (0, _react.useLayoutEffect)(()=>{
864
- initListContainer();
865
- if (isDefaultOpened && !isMobileProp) setIsOpen(true);
866
- return ()=>{
867
- var _getListContainer, _getListContainerWrapper;
868
- (_getListContainer = getListContainer()) === null || _getListContainer === void 0 ? void 0 : _getListContainer.remove();
869
- (_getListContainerWrapper = getListContainerWrapper()) === null || _getListContainerWrapper === void 0 ? void 0 : _getListContainerWrapper.remove();
870
- };
871
- }, []);
872
- (0, _react.useLayoutEffect)(()=>{
873
- var _getListContainer;
874
- if (!isMobile) {
875
- window.addEventListener("mousewheel", closeList);
876
- window.addEventListener("wheel", closeList);
877
- window.addEventListener("touchmove", closeList);
878
- window.addEventListener("mouseup", handleClickOutside);
879
- } else {
880
- window.removeEventListener("mousewheel", closeList);
881
- window.removeEventListener("wheel", closeList);
882
- window.removeEventListener("touchmove", closeList);
883
- window.removeEventListener("mouseup", handleClickOutside);
884
- }
885
- (_getListContainer = getListContainer()) === null || _getListContainer === void 0 ? void 0 : _getListContainer.addEventListener("click", closeList);
886
- return ()=>{
887
- var _getListContainer;
888
- window.removeEventListener("mousewheel", closeList);
889
- window.removeEventListener("mouseup", handleClickOutside);
890
- window.removeEventListener("wheel", closeList);
891
- window.removeEventListener("touchmove", closeList);
892
- (_getListContainer = getListContainer()) === null || _getListContainer === void 0 ? void 0 : _getListContainer.removeEventListener("click", closeList);
893
- };
894
- }, [
895
- getListContainer,
896
- isMobile
897
- ]);
898
- (0, _react.useLayoutEffect)(()=>{
899
- if (isOpen) {
900
- setListContainerStyles();
901
- setEditOptionModalStyles();
902
- }
903
- }, [
904
- isOpen,
905
- optionsProp,
906
- chosenOptions,
907
- searchValue,
908
- isMobile,
909
- dropdownListWrapperRef === null || dropdownListWrapperRef === void 0 ? void 0 : (_dropdownListWrapperRef_current = dropdownListWrapperRef.current) === null || _dropdownListWrapperRef_current === void 0 ? void 0 : (_dropdownListWrapperRef_current_getBoundingClientRect = _dropdownListWrapperRef_current.getBoundingClientRect()) === null || _dropdownListWrapperRef_current_getBoundingClientRect === void 0 ? void 0 : _dropdownListWrapperRef_current_getBoundingClientRect.height,
910
- recalculateListContainerStylesTrigger
911
- ]);
912
- (0, _react.useEffect)(()=>{
913
- if (isUseLocalOptionsStore && chosenOptions.length !== Object.keys(localOptionsStore).length) {
914
- options.map((option)=>{
915
- if (!(localOptionsStore === null || localOptionsStore === void 0 ? void 0 : localOptionsStore[option === null || option === void 0 ? void 0 : option.value])) {
916
- setLocalOptionsStore((options)=>({
917
- ...options,
918
- [option === null || option === void 0 ? void 0 : option.value]: option === null || option === void 0 ? void 0 : option.label
919
- }));
920
- }
921
- });
922
- }
923
- }, [
924
- chosenOptions,
925
- isUseLocalOptionsStore
926
- ]);
927
- (0, _react.useEffect)(()=>{
928
- var _selectAllButtonRef_current, _unselectAllButtonRef_current;
929
- const windowScrollEventHandler = (e)=>{
930
- setWindowScrollTop(window.scrollY);
931
- };
932
- const fn = isOpen ? "addEventListener" : "removeEventListener";
933
- selectAllButtonRef === null || selectAllButtonRef === void 0 ? void 0 : (_selectAllButtonRef_current = selectAllButtonRef.current) === null || _selectAllButtonRef_current === void 0 ? void 0 : _selectAllButtonRef_current[fn]("click", selectAllItems, true);
934
- unselectAllButtonRef === null || unselectAllButtonRef === void 0 ? void 0 : (_unselectAllButtonRef_current = unselectAllButtonRef.current) === null || _unselectAllButtonRef_current === void 0 ? void 0 : _unselectAllButtonRef_current[fn]("click", unselectAllItems, true);
935
- if (isOpen) {
936
- var _getListContainer;
937
- if (!isMobile || !withMobileLogic) window.removeEventListener("scroll", windowScrollEventHandler);
938
- if (customTriggerRef === null || customTriggerRef === void 0 ? void 0 : customTriggerRef.current) {
939
- customTriggerRef.current.style.pointerEvents = "none";
940
- }
941
- (_getListContainer = getListContainer()) === null || _getListContainer === void 0 ? void 0 : _getListContainer.classList.add("tags-dropdown__container--opened");
942
- if (!isMobile) {
943
- var _inputRef_current_focus, _inputRef_current;
944
- inputRef === null || inputRef === void 0 ? void 0 : (_inputRef_current = inputRef.current) === null || _inputRef_current === void 0 ? void 0 : (_inputRef_current_focus = _inputRef_current.focus) === null || _inputRef_current_focus === void 0 ? void 0 : _inputRef_current_focus.call(_inputRef_current);
945
- } else {
946
- var _inputRef_current_blur, _inputRef_current1;
947
- inputRef === null || inputRef === void 0 ? void 0 : (_inputRef_current1 = inputRef.current) === null || _inputRef_current1 === void 0 ? void 0 : (_inputRef_current_blur = _inputRef_current1.blur) === null || _inputRef_current_blur === void 0 ? void 0 : _inputRef_current_blur.call(_inputRef_current1);
948
- }
949
- } else {
950
- var _getListContainer1;
951
- if (!isMobile || !withMobileLogic) window.addEventListener("scroll", windowScrollEventHandler);
952
- if (customTriggerRef === null || customTriggerRef === void 0 ? void 0 : customTriggerRef.current) {
953
- customTriggerRef.current.style.pointerEvents = "auto";
954
- }
955
- (_getListContainer1 = getListContainer()) === null || _getListContainer1 === void 0 ? void 0 : _getListContainer1.classList.remove("tags-dropdown__container--opened");
956
- if (withSearchInputInList) setSearchValueInterceptor("");
957
- setListPos(null);
958
- setSearchValue("");
959
- }
960
- }, [
961
- isOpen
962
- ]);
963
- (0, _react.useEffect)(()=>{
964
- const setScrollTopValue = (e)=>{
965
- setScrollTop(parseInt(e.target.scrollTop, 10));
966
- };
967
- const preventWindowScrolling = (e)=>{
968
- e.preventDefault();
969
- window.scrollTo({
970
- top: windowScrollTop
971
- });
972
- };
973
- if (isOpen && isMobile && (dropdownListRef === null || dropdownListRef === void 0 ? void 0 : dropdownListRef.current)) {
974
- var _dropdownListRef_current, _dropdownListRef_current1, _dropdownListRef_current2;
975
- dropdownListRef === null || dropdownListRef === void 0 ? void 0 : (_dropdownListRef_current = dropdownListRef.current) === null || _dropdownListRef_current === void 0 ? void 0 : _dropdownListRef_current.addEventListener("scroll", setScrollTopValue);
976
- setIsScrollableList((dropdownListRef === null || dropdownListRef === void 0 ? void 0 : (_dropdownListRef_current1 = dropdownListRef.current) === null || _dropdownListRef_current1 === void 0 ? void 0 : _dropdownListRef_current1.scrollHeight) > (dropdownListRef === null || dropdownListRef === void 0 ? void 0 : (_dropdownListRef_current2 = dropdownListRef.current) === null || _dropdownListRef_current2 === void 0 ? void 0 : _dropdownListRef_current2.clientHeight));
977
- if (isScrollableList === null) {
978
- var _dropdownListRef_current3, _dropdownListRef_current4;
979
- setIsFixedMaxHeight((dropdownListRef === null || dropdownListRef === void 0 ? void 0 : (_dropdownListRef_current3 = dropdownListRef.current) === null || _dropdownListRef_current3 === void 0 ? void 0 : _dropdownListRef_current3.scrollHeight) > (dropdownListRef === null || dropdownListRef === void 0 ? void 0 : (_dropdownListRef_current4 = dropdownListRef.current) === null || _dropdownListRef_current4 === void 0 ? void 0 : _dropdownListRef_current4.clientHeight));
980
- }
981
- }
982
- if (isOpen && dropdownListRef && dropdownListRef.current) {
983
- dropdownListRef.current.addEventListener("scroll", doScrollCallback);
984
- if (!isMobile || !withMobileLogic) window.addEventListener("scroll", preventWindowScrolling);
985
- }
986
- return ()=>{
987
- var _dropdownListRef_current, _dropdownListRef_current1;
988
- if (!isMobile || !withMobileLogic) window.removeEventListener("scroll", preventWindowScrolling);
989
- dropdownListRef === null || dropdownListRef === void 0 ? void 0 : (_dropdownListRef_current = dropdownListRef.current) === null || _dropdownListRef_current === void 0 ? void 0 : _dropdownListRef_current.removeEventListener("scroll", doScrollCallback);
990
- dropdownListRef === null || dropdownListRef === void 0 ? void 0 : (_dropdownListRef_current1 = dropdownListRef.current) === null || _dropdownListRef_current1 === void 0 ? void 0 : _dropdownListRef_current1.removeEventListener("scroll", setScrollTopValue);
991
- };
992
- }, [
993
- isOpen,
994
- isMobile,
995
- dropdownListRef === null || dropdownListRef === void 0 ? void 0 : dropdownListRef.current,
996
- dropdownListRef === null || dropdownListRef === void 0 ? void 0 : (_dropdownListRef_current = dropdownListRef.current) === null || _dropdownListRef_current === void 0 ? void 0 : _dropdownListRef_current.scrollHeight,
997
- dropdownListRef === null || dropdownListRef === void 0 ? void 0 : (_dropdownListRef_current1 = dropdownListRef.current) === null || _dropdownListRef_current1 === void 0 ? void 0 : _dropdownListRef_current1.clientHeight
998
- ]);
999
- (0, _react.useEffect)(()=>{
1000
- if (dropdownListRef === null || dropdownListRef === void 0 ? void 0 : dropdownListRef.current) {
1001
- var _dropdownListRef_current, _dropdownListRef_current1;
1002
- setScrollHeight(parseInt((dropdownListRef === null || dropdownListRef === void 0 ? void 0 : (_dropdownListRef_current = dropdownListRef.current) === null || _dropdownListRef_current === void 0 ? void 0 : _dropdownListRef_current.scrollHeight) - (dropdownListRef === null || dropdownListRef === void 0 ? void 0 : (_dropdownListRef_current1 = dropdownListRef.current) === null || _dropdownListRef_current1 === void 0 ? void 0 : _dropdownListRef_current1.clientHeight), 10));
1003
- }
1004
- }, [
1005
- scrollTop,
1006
- dropdownListRef === null || dropdownListRef === void 0 ? void 0 : dropdownListRef.current
1007
- ]);
1008
- (0, _react.useEffect)(()=>{
1009
- if (isSearchable && useLiveSearch && (debouncedSearchTerm || isValueDeleted || isOpen)) {
1010
- doLiveSearchRequest === null || doLiveSearchRequest === void 0 ? void 0 : doLiveSearchRequest(debouncedSearchTerm);
1011
- }
1012
- }, [
1013
- isOpen,
1014
- debouncedSearchTerm,
1015
- isValueDeleted
1016
- ]);
1017
- (0, _react.useEffect)(()=>{
1018
- setOptions(optionsProp.map((option)=>({
1019
- ...option,
1020
- ref: /*#__PURE__*/ (0, _react.createRef)()
1021
- })));
1022
- }, [
1023
- optionsProp
1024
- ]);
1025
- (0, _react.useEffect)(()=>{
1026
- if (editingOption) {
1027
- var _editingOptionInputRef_current_focus, _editingOptionInputRef_current;
1028
- setEditOptionModalStyles();
1029
- editingOptionInputRef === null || editingOptionInputRef === void 0 ? void 0 : (_editingOptionInputRef_current = editingOptionInputRef.current) === null || _editingOptionInputRef_current === void 0 ? void 0 : (_editingOptionInputRef_current_focus = _editingOptionInputRef_current.focus) === null || _editingOptionInputRef_current_focus === void 0 ? void 0 : _editingOptionInputRef_current_focus.call(_editingOptionInputRef_current);
1030
- }
1031
- }, [
1032
- editingOption === null || editingOption === void 0 ? void 0 : editingOption.value
1033
- ]);
1034
- return /*#__PURE__*/ (0, _jsxruntime.jsxs)("div", {
1035
- className: (0, _classnames.default)(RC, className, {
1036
- [`${RC}_disabled`]: disabled,
1037
- [`${RC}-mobile`]: isMobile,
1038
- [`${RC}--focused`]: isOpen && !(customTriggerRef === null || customTriggerRef === void 0 ? void 0 : customTriggerRef.current) && !isMobile,
1039
- [`${RC}--custom-trigger`]: Boolean(customTriggerRef === null || customTriggerRef === void 0 ? void 0 : customTriggerRef.current)
1040
- }),
1041
- ref: dropdownRef,
1042
- children: [
1043
- renderDropdownTrigger(),
1044
- withActions && /*#__PURE__*/ (0, _jsxruntime.jsxs)("div", {
1045
- className: (0, _classnames.default)(`${RC}__actions`),
1046
- children: [
1047
- /*#__PURE__*/ (0, _jsxruntime.jsx)("div", {
1048
- className: (0, _classnames.default)(`${RC}__actions-item`),
1049
- onClick: onActionConfirmClick,
1050
- children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactfeather.Check, {})
1051
- }),
1052
- /*#__PURE__*/ (0, _jsxruntime.jsx)("div", {
1053
- className: (0, _classnames.default)(`${RC}__actions-item`),
1054
- onClick: onActionCancelClick,
1055
- children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactfeather.X, {})
1056
- })
1057
- ]
1058
- }),
1059
- isOpen && renderListContainer()
1060
- ]
1061
- });
906
+ }, [isOpen, isMobile, dropdownListRef?.current, dropdownListRef?.current?.scrollHeight, dropdownListRef?.current?.clientHeight]);
907
+ (0, _react.useEffect)(() => {
908
+ if (dropdownListRef?.current) {
909
+ setScrollHeight(parseInt(dropdownListRef?.current?.scrollHeight - dropdownListRef?.current?.clientHeight, 10));
910
+ }
911
+ }, [scrollTop, dropdownListRef?.current]);
912
+ (0, _react.useEffect)(() => {
913
+ if (isSearchable && useLiveSearch && (debouncedSearchTerm || isValueDeleted || isOpen)) {
914
+ doLiveSearchRequest?.(debouncedSearchTerm);
915
+ }
916
+ }, [isOpen, debouncedSearchTerm, isValueDeleted]);
917
+ (0, _react.useEffect)(() => {
918
+ setOptions(optionsProp.map(option => ({
919
+ ...option,
920
+ ref: /*#__PURE__*/(0, _react.createRef)()
921
+ })));
922
+ }, [optionsProp]);
923
+ (0, _react.useEffect)(() => {
924
+ if (editingOption) {
925
+ setEditOptionModalStyles();
926
+ editingOptionInputRef?.current?.focus?.();
927
+ }
928
+ }, [editingOption?.value]);
929
+ return /*#__PURE__*/_react.default.createElement("div", {
930
+ className: (0, _classnames.default)(RC, className, {
931
+ [`${RC}_disabled`]: disabled,
932
+ [`${RC}-mobile`]: isMobile,
933
+ [`${RC}--focused`]: isOpen && !customTriggerRef?.current && !isMobile,
934
+ [`${RC}--custom-trigger`]: Boolean(customTriggerRef?.current)
935
+ }),
936
+ ref: dropdownRef
937
+ }, renderDropdownTrigger(), withActions && /*#__PURE__*/_react.default.createElement("div", {
938
+ className: (0, _classnames.default)(`${RC}__actions`)
939
+ }, /*#__PURE__*/_react.default.createElement("div", {
940
+ className: (0, _classnames.default)(`${RC}__actions-item`),
941
+ onClick: onActionConfirmClick
942
+ }, /*#__PURE__*/_react.default.createElement(_reactFeather.Check, null)), /*#__PURE__*/_react.default.createElement("div", {
943
+ className: (0, _classnames.default)(`${RC}__actions-item`),
944
+ onClick: onActionCancelClick
945
+ }, /*#__PURE__*/_react.default.createElement(_reactFeather.X, null))), isOpen && renderListContainer());
1062
946
  };
1063
- const _default = TagsDropdown;
947
+ var _default = exports.default = TagsDropdown;