intelicoreact 1.5.41 → 1.6.0

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 (521) hide show
  1. package/dist/Atomic/FormElements/ActionAlert/ActionAlert.interface.js +4 -0
  2. package/dist/Atomic/FormElements/ActionAlert/ActionAlert.js +93 -44
  3. package/dist/Atomic/FormElements/ActionAlert/ActionAlert.scss +23 -13
  4. package/dist/Atomic/FormElements/ActionAlert/ActionAlert.stories.js +89 -0
  5. package/dist/Atomic/FormElements/ActionAlert/ActionAlert.test.js +130 -0
  6. package/dist/Atomic/FormElements/ActionAlert/index.js +17 -0
  7. package/dist/Atomic/FormElements/AdvancedStatus/AdvancedStatus.interface.js +4 -0
  8. package/dist/Atomic/FormElements/AdvancedStatus/AdvancedStatus.js +43 -38
  9. package/dist/Atomic/FormElements/AdvancedStatus/AdvancedStatus.scss +20 -10
  10. package/dist/Atomic/FormElements/AdvancedStatus/AdvancedStatus.stories.js +81 -0
  11. package/dist/Atomic/FormElements/AdvancedStatus/AdvancedStatus.test.js +104 -0
  12. package/dist/Atomic/FormElements/AdvancedStatus/index.js +17 -0
  13. package/dist/Atomic/FormElements/Calendar/Calendar.js +243 -164
  14. package/dist/Atomic/FormElements/Calendar/Calendar.props.js +4 -0
  15. package/dist/Atomic/FormElements/Calendar/Calendar.scss +1 -0
  16. package/dist/Atomic/FormElements/Calendar/Calendar.stories.js +108 -0
  17. package/dist/Atomic/FormElements/CheckboxInput/CheckboxInput.interface.js +4 -0
  18. package/dist/Atomic/FormElements/CheckboxInput/CheckboxInput.js +60 -51
  19. package/dist/Atomic/FormElements/CheckboxInput/CheckboxInput.scss +21 -11
  20. package/dist/Atomic/FormElements/CheckboxInput/CheckboxInput.stories.js +100 -0
  21. package/dist/Atomic/FormElements/CheckboxInput/CheckboxInput.test.js +143 -0
  22. package/dist/Atomic/FormElements/CheckboxInput/index.js +17 -0
  23. package/dist/Atomic/FormElements/CheckboxesLine/CheckboxesLine.interface.js +4 -0
  24. package/dist/Atomic/FormElements/CheckboxesLine/CheckboxesLine.js +47 -39
  25. package/dist/Atomic/FormElements/CheckboxesLine/CheckboxesLine.scss +5 -2
  26. package/dist/Atomic/FormElements/CheckboxesLine/CheckboxesLine.stories.js +94 -0
  27. package/dist/Atomic/FormElements/CheckboxesLine/CheckboxesLine.test.js +177 -0
  28. package/dist/Atomic/FormElements/CheckboxesLine/index.js +17 -0
  29. package/dist/Atomic/FormElements/Datepicker/Datepicker.js +410 -308
  30. package/dist/Atomic/FormElements/Datepicker/Datepicker.stories.js +51 -0
  31. package/dist/Atomic/FormElements/Datepicker/components/Calendar.js +169 -109
  32. package/dist/Atomic/FormElements/Dropdown/Dropdown.js +680 -527
  33. package/dist/Atomic/FormElements/Dropdown/Dropdown.scss +58 -56
  34. package/dist/Atomic/FormElements/Dropdown/Dropdown.stories.js +596 -0
  35. package/dist/Atomic/FormElements/Dropdown/components/DropdownLoader.js +28 -15
  36. package/dist/Atomic/FormElements/DropdownLiveSearch/DropdownLiveSearch.js +498 -378
  37. package/dist/Atomic/FormElements/DropdownLiveSearch/DropdownLiveSearch.scss +33 -29
  38. package/dist/Atomic/FormElements/DropdownLiveSearch/DropdownLiveSearch.stories.js +272 -0
  39. package/dist/Atomic/FormElements/FileLoader/FileLoader.js +103 -70
  40. package/dist/Atomic/FormElements/FileLoader/FileLoader.scss +0 -2
  41. package/dist/Atomic/FormElements/FileLoader/FileLoader.stories.js +182 -0
  42. package/dist/Atomic/FormElements/FileLoader/partial/LoadZone.js +138 -91
  43. package/dist/Atomic/FormElements/FileLoader/partial/LoadedContent.js +109 -55
  44. package/dist/Atomic/FormElements/FileLoaderDescription/FileLoaderDescription.js +254 -193
  45. package/dist/Atomic/FormElements/FileLoaderDescription/FileLoaderDescription.scss +19 -16
  46. package/dist/Atomic/FormElements/FileLoaderDescription/FileLoaderDescription.stories.js +327 -0
  47. package/dist/Atomic/FormElements/FileLoaderLocal/FileLoaderLocal.js +156 -140
  48. package/dist/Atomic/FormElements/FileLoaderLocal/FileLoaderLocal.scss +8 -4
  49. package/dist/Atomic/FormElements/FileLoaderLocal/FileLoaderLocal.stories.js +186 -0
  50. package/dist/Atomic/FormElements/FileLoaderLocalGroup/FileLoaderLocalGroup.js +222 -156
  51. package/dist/Atomic/FormElements/FileLoaderLocalGroup/FileLoaderLocalGroup.stories.js +84 -0
  52. package/dist/Atomic/FormElements/FormattedRawSSN/FormattedRawSSN.js +158 -114
  53. package/dist/Atomic/FormElements/FormattedRawSSN/FormattedRawSSN.stories.js +107 -0
  54. package/dist/Atomic/FormElements/FormattedRawSSN/FormattedRawSSN_old.js +151 -92
  55. package/dist/Atomic/FormElements/Input/Input.js +340 -330
  56. package/dist/Atomic/FormElements/Input/Input.stories.js +251 -0
  57. package/dist/Atomic/FormElements/InputCalendar/InputCalendar.js +156 -110
  58. package/dist/Atomic/FormElements/InputCalendar/InputCalendar.stories.js +115 -0
  59. package/dist/Atomic/FormElements/InputColor/InputColor.js +57 -58
  60. package/dist/Atomic/FormElements/InputColor/InputColor.stories.js +119 -0
  61. package/dist/Atomic/FormElements/InputCurrency/InputCurrency.interface.js +4 -0
  62. package/dist/Atomic/FormElements/InputCurrency/InputCurrency.js +189 -145
  63. package/dist/Atomic/FormElements/InputCurrency/InputCurrency.stories.js +178 -0
  64. package/dist/Atomic/FormElements/InputCurrency/InputCurrency.test.js +129 -0
  65. package/dist/Atomic/FormElements/InputCurrency/index.js +16 -0
  66. package/dist/Atomic/FormElements/InputDateRange/InputDateRange.js +294 -228
  67. package/dist/Atomic/FormElements/InputDateRange/InputDateRange.stories.js +123 -0
  68. package/dist/Atomic/FormElements/InputDateRange/components/DateInput.js +55 -56
  69. package/dist/Atomic/FormElements/InputDateRange/components/Datepicker.js +645 -536
  70. package/dist/Atomic/FormElements/InputDateRange/components/OpenedPart.js +220 -190
  71. package/dist/Atomic/FormElements/InputDateRange/components/SelectItem.js +33 -31
  72. package/dist/Atomic/FormElements/InputDateRange/dependencies.js +247 -169
  73. package/dist/Atomic/FormElements/InputLink/InputLink.js +118 -71
  74. package/dist/Atomic/FormElements/InputLink/InputLink.stories.js +140 -0
  75. package/dist/Atomic/FormElements/InputMask/InputCarretPosition.js +47 -38
  76. package/dist/Atomic/FormElements/InputMask/InputMask.js +938 -1053
  77. package/dist/Atomic/FormElements/InputMask/InputMask.stories.js +303 -0
  78. package/dist/Atomic/FormElements/InputMask/config.js +16 -15
  79. package/dist/Atomic/FormElements/InputMask/functions.js +77 -51
  80. package/dist/Atomic/FormElements/InputMask2/InputMask2.js +569 -592
  81. package/dist/Atomic/FormElements/InputMask2/InputMask2.stories.js +314 -0
  82. package/dist/Atomic/FormElements/InputMask2/config.js +16 -15
  83. package/dist/Atomic/FormElements/InputMask2/functions.js +77 -51
  84. package/dist/Atomic/FormElements/InputMask3/InputMask3.js +651 -679
  85. package/dist/Atomic/FormElements/InputMask3/InputMask3.stories.js +335 -0
  86. package/dist/Atomic/FormElements/InputMask3/config.js +16 -15
  87. package/dist/Atomic/FormElements/InputMask3/functions.js +77 -51
  88. package/dist/Atomic/FormElements/InputWithAction/InputWithAction.js +127 -88
  89. package/dist/Atomic/FormElements/InputWithAction/InputWithAction.stories.js +276 -0
  90. package/dist/Atomic/FormElements/InputsRow/InputsRow.js +182 -111
  91. package/dist/Atomic/FormElements/InputsRow/InputsRow.stories.js +56 -0
  92. package/dist/Atomic/FormElements/Label/Label.interface.js +4 -0
  93. package/dist/Atomic/FormElements/Label/Label.js +82 -55
  94. package/dist/Atomic/FormElements/Label/Label.scss +18 -8
  95. package/dist/Atomic/FormElements/Label/Label.stories.js +47 -0
  96. package/dist/Atomic/FormElements/Label/Label.test.js +167 -0
  97. package/dist/Atomic/FormElements/Label/index.js +17 -0
  98. package/dist/Atomic/FormElements/MobileCalendar/MobileCalendar.js +437 -382
  99. package/dist/Atomic/FormElements/MobileCalendar/MobileCalendar.stories.js +172 -0
  100. package/dist/Atomic/FormElements/MultiSelect/MultiSelect.js +88 -50
  101. package/dist/Atomic/FormElements/MultiSelect/MultiSelect.stories.js +121 -0
  102. package/dist/Atomic/FormElements/NumericInput/NumericInput.js +314 -264
  103. package/dist/Atomic/FormElements/NumericInput/NumericInput.stories.js +184 -0
  104. package/dist/Atomic/FormElements/RadioGroup/RadioGroup.js +93 -51
  105. package/dist/Atomic/FormElements/RadioGroup/RadioGroup.stories.js +79 -0
  106. package/dist/Atomic/FormElements/RadioGroupWithInput/RadioGroupWithInput.js +69 -55
  107. package/dist/Atomic/FormElements/RadioGroupWithInput/RadioGroupWithInput.stories.js +151 -0
  108. package/dist/Atomic/FormElements/RadioInput/RadioInput.js +51 -45
  109. package/dist/Atomic/FormElements/RadioInput/RadioInput.scss +4 -4
  110. package/dist/Atomic/FormElements/RadioInput/RadioInput.stories.js +67 -0
  111. package/dist/Atomic/FormElements/RadioRowSwitcher/RadioRowSwitcher.js +53 -40
  112. package/dist/Atomic/FormElements/RadioRowSwitcher/RadioRowSwitcher.stories.js +116 -0
  113. package/dist/Atomic/FormElements/RangeCalendar/RangeCalendar.js +169 -120
  114. package/dist/Atomic/FormElements/RangeCalendar/RangeCalendar.stories.js +107 -0
  115. package/dist/Atomic/FormElements/RangeInputs/RangeInputs.js +195 -141
  116. package/dist/Atomic/FormElements/RangeInputs/RangeInputs.stories.js +92 -0
  117. package/dist/Atomic/FormElements/RangeList/RangeList.js +199 -140
  118. package/dist/Atomic/FormElements/RangeList/RangeList.scss +2 -2
  119. package/dist/Atomic/FormElements/RangeList/RangeList.stories.js +169 -0
  120. package/dist/Atomic/FormElements/RangeList/partial/AnyOuterClass.scss +0 -3
  121. package/dist/Atomic/FormElements/RangeList/partial/RangeListRow.js +57 -44
  122. package/dist/Atomic/FormElements/RangeSlider/RangeSlider.js +463 -377
  123. package/dist/Atomic/FormElements/RangeSlider/RangeSlider.stories.js +401 -0
  124. package/dist/Atomic/FormElements/RangeSlider2/RangeSlider2.js +760 -759
  125. package/dist/Atomic/FormElements/RangeSlider2/RangeSlider2.stories.js +314 -0
  126. package/dist/Atomic/FormElements/SwitchableRow/SwitchableRow.js +36 -31
  127. package/dist/Atomic/FormElements/SwitchableRow/SwitchableRow.scss +0 -2
  128. package/dist/Atomic/FormElements/SwitchableRow/SwitchableRow.stories.js +137 -0
  129. package/dist/Atomic/FormElements/Switcher/Switcher.js +52 -44
  130. package/dist/Atomic/FormElements/Switcher/Switcher.scss +3 -3
  131. package/dist/Atomic/FormElements/Switcher/Switcher.stories.js +91 -0
  132. package/dist/Atomic/FormElements/SwitcherCheckbox/SwitcherCheckbox.js +43 -44
  133. package/dist/Atomic/FormElements/SwitcherCheckbox/SwitcherCheckbox.scss +0 -2
  134. package/dist/Atomic/FormElements/SwitcherCheckbox/SwitcherCheckbox.stories.js +104 -0
  135. package/dist/Atomic/FormElements/SwitcherHide/SwitcherHide.js +37 -36
  136. package/dist/Atomic/FormElements/SwitcherHide/SwitcherHide.scss +0 -2
  137. package/dist/Atomic/FormElements/SwitcherHide/SwitcherHide.stories.js +96 -0
  138. package/dist/Atomic/FormElements/SwitcherRadio/SwitcherRadio.js +93 -56
  139. package/dist/Atomic/FormElements/SwitcherRadio/SwitcherRadio.scss +0 -2
  140. package/dist/Atomic/FormElements/SwitcherRadio/SwitcherRadio.stories.js +140 -0
  141. package/dist/Atomic/FormElements/SwitcherRange/SwitcherRange.js +86 -53
  142. package/dist/Atomic/FormElements/SwitcherRange/SwitcherRange.scss +0 -2
  143. package/dist/Atomic/FormElements/SwitcherRange/SwitcherRange.stories.js +112 -0
  144. package/dist/Atomic/FormElements/SwitcherRangeList/SwitcherRangeList.js +46 -54
  145. package/dist/Atomic/FormElements/SwitcherRangeList/SwitcherRangeList.stories.js +145 -0
  146. package/dist/Atomic/FormElements/SwitcherTagsDropdown/SwitcherTagsDropdown.js +172 -102
  147. package/dist/Atomic/FormElements/SwitcherTagsDropdown/SwitcherTagsDropdown.scss +4 -6
  148. package/dist/Atomic/FormElements/SwitcherTagsDropdown/SwitcherTagsDropdown.stories.js +158 -0
  149. package/dist/Atomic/FormElements/SwitcherTagsDropdown/partial/States.js +209 -154
  150. package/dist/Atomic/FormElements/SwitcherTextarea/SwitcherTextarea.js +59 -56
  151. package/dist/Atomic/FormElements/SwitcherTextarea/SwitcherTextarea.scss +2 -2
  152. package/dist/Atomic/FormElements/SwitcherTextarea/SwitcherTextarea.stories.js +101 -0
  153. package/dist/Atomic/FormElements/TagListToDropdown/TagListToDropdown.js +140 -112
  154. package/dist/Atomic/FormElements/TagListToDropdown/TagListToDropdown.stories.js +131 -0
  155. package/dist/Atomic/FormElements/TagsDropdown/TagsDropdown.js +1035 -919
  156. package/dist/Atomic/FormElements/TagsDropdown/TagsDropdown.scss +153 -116
  157. package/dist/Atomic/FormElements/TagsDropdown/TagsDropdown.stories.js +357 -0
  158. package/dist/Atomic/FormElements/Text/Text.js +88 -97
  159. package/dist/Atomic/FormElements/Text/Text.stories.js +80 -0
  160. package/dist/Atomic/FormElements/TextSwitcher/TextSwitcher.js +44 -35
  161. package/dist/Atomic/FormElements/TextSwitcher/TextSwitcher.scss +8 -8
  162. package/dist/Atomic/FormElements/TextSwitcher/TextSwitcher.stories.js +106 -0
  163. package/dist/Atomic/FormElements/TextSwitcher/TextSwitcher.test.js +93 -0
  164. package/dist/Atomic/FormElements/Textarea/Textarea.js +102 -64
  165. package/dist/Atomic/FormElements/Textarea/Textarea.scss +4 -8
  166. package/dist/Atomic/FormElements/Textarea/Textarea.stories.js +103 -0
  167. package/dist/Atomic/FormElements/TieredCheckboxes/TieredCheckboxes.js +172 -133
  168. package/dist/Atomic/FormElements/TieredCheckboxes/TieredCheckboxes.stories.js +174 -0
  169. package/dist/Atomic/FormElements/TieredCheckboxes/partial/AccordionWithCheckbox.js +48 -49
  170. package/dist/Atomic/FormElements/TimeRange/TimeRange.interface.js +4 -0
  171. package/dist/Atomic/FormElements/TimeRange/TimeRange.js +114 -63
  172. package/dist/Atomic/FormElements/TimeRange/TimeRange.scss +9 -3
  173. package/dist/Atomic/FormElements/TimeRange/TimeRange.stories.js +40 -0
  174. package/dist/Atomic/FormElements/TimeRange/TimeRange.test.js +163 -0
  175. package/dist/Atomic/FormElements/TimeRange/index.js +17 -0
  176. package/dist/Atomic/FormElements/UserContacts/UserContact.test.js +381 -0
  177. package/dist/Atomic/FormElements/UserContacts/UserContacts.interface.js +4 -0
  178. package/dist/Atomic/FormElements/UserContacts/UserContacts.js +179 -122
  179. package/dist/Atomic/FormElements/UserContacts/UserContacts.scss +10 -5
  180. package/dist/Atomic/FormElements/UserContacts/UserContacts.stories.js +74 -0
  181. package/dist/Atomic/FormElements/UserContacts/index.js +17 -0
  182. package/dist/Atomic/FormElements/VariantsListRadio/VariantsListRadio.js +101 -65
  183. package/dist/Atomic/FormElements/VariantsListRadio/VariantsListRadio.stories.js +193 -0
  184. package/dist/Atomic/FormElements/VariantsListRadio/partials/VariantsListRadioItem.js +80 -71
  185. package/dist/Atomic/FormElements/WidgetPseudoTable/WidgetPseudoTable.js +79 -64
  186. package/dist/Atomic/FormElements/WidgetPseudoTable/WidgetPseudoTable.scss +0 -2
  187. package/dist/Atomic/FormElements/WidgetPseudoTable/WidgetPseudoTable.stories.js +147 -0
  188. package/dist/Atomic/FormElements/WidgetPseudoTable/partial/constructor.js +42 -34
  189. package/dist/Atomic/FormElements/WidgetWithSwitchableRows/WidgetWithSwitchableRows.js +102 -83
  190. package/dist/Atomic/FormElements/WidgetWithSwitchableRows/WidgetWithSwitchableRows.scss +0 -2
  191. package/dist/Atomic/FormElements/WidgetWithSwitchableRows/WidgetWithSwitchableRows.stories.js +151 -0
  192. package/dist/Atomic/FormElements/WidgetWithSwitchableRows/partial/constructor.js +42 -35
  193. package/dist/Atomic/Layout/Header/Header.js +148 -80
  194. package/dist/Atomic/Layout/Header/Header.stories.js +71 -0
  195. package/dist/Atomic/Layout/MainMenu/MainMenu.js +213 -133
  196. package/dist/Atomic/Layout/MainMenu/MainMenu.scss +7 -7
  197. package/dist/Atomic/Layout/MainMenu/MainMenu.stories.js +115 -0
  198. package/dist/Atomic/Layout/Spinner/Spinner.interface.js +4 -0
  199. package/dist/Atomic/Layout/Spinner/Spinner.js +39 -22
  200. package/dist/Atomic/Layout/Spinner/Spinner.scss +36 -16
  201. package/dist/Atomic/Layout/Spinner/Spinner.stories.js +46 -0
  202. package/dist/Atomic/Layout/Spinner/Spinner.test.js +54 -0
  203. package/dist/Atomic/Layout/Spinner/index.js +17 -0
  204. package/dist/Atomic/UI/Accordion/Accordion.interface.js +4 -0
  205. package/dist/Atomic/UI/Accordion/Accordion.js +102 -53
  206. package/dist/Atomic/UI/Accordion/Accordion.scss +25 -14
  207. package/dist/Atomic/UI/Accordion/Accordion.stories.js +168 -0
  208. package/dist/Atomic/UI/Accordion/Accordion.test.js +54 -0
  209. package/dist/Atomic/UI/Accordion/AccordionItem.js +170 -102
  210. package/dist/Atomic/UI/Accordion/AccordionItem.test.js +50 -0
  211. package/dist/Atomic/UI/Accordion/index.js +17 -0
  212. package/dist/Atomic/UI/AccordionTable/AccordionTable.js +251 -167
  213. package/dist/Atomic/UI/AccordionTable/AccordionTable.stories.js +268 -0
  214. package/dist/Atomic/UI/AccordionText/AccordionText.js +105 -54
  215. package/dist/Atomic/UI/AccordionText/AccordionText.scss +22 -9
  216. package/dist/Atomic/UI/AccordionText/AccordionText.stories.js +125 -0
  217. package/dist/Atomic/UI/AdvancedTag/AdvTag.js +207 -135
  218. package/dist/Atomic/UI/AdvancedTag/AdvancedTags.js +100 -46
  219. package/dist/Atomic/UI/AdvancedTag/AdvancedTags.stories.js +115 -0
  220. package/dist/Atomic/UI/Alert/Alert.js +116 -63
  221. package/dist/Atomic/UI/Alert/Alert.scss +2 -2
  222. package/dist/Atomic/UI/Alert/Alert.stories.js +81 -0
  223. package/dist/Atomic/UI/Arrow/Arrow.js +163 -110
  224. package/dist/Atomic/UI/Arrow/Arrow.stories.js +62 -0
  225. package/dist/Atomic/UI/Box/Box.js +37 -37
  226. package/dist/Atomic/UI/Box/Box.scss +11 -11
  227. package/dist/Atomic/UI/Box/Box.stories.js +114 -0
  228. package/dist/Atomic/UI/Button/Button.js +43 -41
  229. package/dist/Atomic/UI/Button/Button.stories.js +105 -0
  230. package/dist/Atomic/UI/Button/Button.test.js +147 -0
  231. package/dist/Atomic/UI/ButtonsBar/ButtonsBar.js +61 -67
  232. package/dist/Atomic/UI/ButtonsBar/ButtonsBar.stories.js +129 -0
  233. package/dist/Atomic/UI/Chart/Chart.js +170 -96
  234. package/dist/Atomic/UI/Chart/Chart.stories.js +93 -0
  235. package/dist/Atomic/UI/Chart/partial/Chart.constants.js +142 -74
  236. package/dist/Atomic/UI/Chart/partial/ChartTypeSwitcherIcon/ChartTypeSwitcherIcon.js +91 -77
  237. package/dist/Atomic/UI/Chart/partial/datasetSetters.js +120 -117
  238. package/dist/Atomic/UI/Chart/partial/optionsConstructor.js +314 -292
  239. package/dist/Atomic/UI/Chart/partial/optionsSetters.js +54 -39
  240. package/dist/Atomic/UI/Chart/partial/utils.js +56 -33
  241. package/dist/Atomic/UI/CircleProgressBar/CircleProgressBar.js +145 -88
  242. package/dist/Atomic/UI/CircleProgressBar/CircleProgressBar.stories.js +85 -0
  243. package/dist/Atomic/UI/DateTime/DateTime.js +89 -37
  244. package/dist/Atomic/UI/DateTime/DateTime.scss +2 -2
  245. package/dist/Atomic/UI/DateTime/DateTime.stories.js +50 -0
  246. package/dist/Atomic/UI/DebugContainer/DebugContainer.js +93 -31
  247. package/dist/Atomic/UI/DebugContainer/useDebugContainer.js +66 -18
  248. package/dist/Atomic/UI/DoubleString/DoubleString.js +134 -77
  249. package/dist/Atomic/UI/DoubleString/DoubleString.scss +6 -4
  250. package/dist/Atomic/UI/DoubleString/DoubleString.stories.js +79 -0
  251. package/dist/Atomic/UI/DynamicIcon/DynamicIcon.interface.js +4 -0
  252. package/dist/Atomic/UI/DynamicIcon/DynamicIcon.js +65 -22
  253. package/dist/Atomic/UI/DynamicIcon/DynamicIcon.stories.js +98 -0
  254. package/dist/Atomic/UI/DynamicIcon/DynamicIcon.test.js +51 -0
  255. package/dist/Atomic/UI/DynamicIcon/index.js +17 -0
  256. package/dist/Atomic/UI/ExampleChartIntegration/ExampleChartIntegration.js +251 -170
  257. package/dist/Atomic/UI/ExampleChartIntegration/ExampleChartIntegration.stories.js +98 -0
  258. package/dist/Atomic/UI/ExampleChartIntegration/partial/utils.js +109 -84
  259. package/dist/Atomic/UI/Hint/Hint.interface.js +4 -0
  260. package/dist/Atomic/UI/Hint/Hint.js +247 -204
  261. package/dist/Atomic/UI/Hint/Hint.scss +4 -2
  262. package/dist/Atomic/UI/Hint/Hint.stories.js +106 -0
  263. package/dist/Atomic/UI/Hint/Hint.test.js +96 -0
  264. package/dist/Atomic/UI/Hint/index.js +17 -0
  265. package/dist/Atomic/UI/Hint/partials/_utils.js +60 -46
  266. package/dist/Atomic/UI/Modal/Modal.interface.js +4 -0
  267. package/dist/Atomic/UI/Modal/Modal.js +171 -172
  268. package/dist/Atomic/UI/Modal/Modal.scss +91 -65
  269. package/dist/Atomic/UI/Modal/Modal.stories.js +370 -0
  270. package/dist/Atomic/UI/Modal/ModalHOC.js +92 -38
  271. package/dist/Atomic/UI/Modal/ModalHOC.stories.js +191 -0
  272. package/dist/Atomic/UI/Modal/ModalHOC.test.js +187 -0
  273. package/dist/Atomic/UI/Modal/ModalMobile.scss +26 -14
  274. package/dist/Atomic/UI/Modal/index.js +26 -0
  275. package/dist/Atomic/UI/Modal/partials/ModalFooter.js +68 -18
  276. package/dist/Atomic/UI/Modal/partials/ModalFooter.test.js +118 -0
  277. package/dist/Atomic/UI/Modal/partials/ModalTitle.js +107 -38
  278. package/dist/Atomic/UI/Modal/partials/ModalTitle.test.js +126 -0
  279. package/dist/Atomic/UI/Modal/partials/useMobileModal.js +130 -153
  280. package/dist/Atomic/UI/Modal/partials/useMobileModal.test.js +133 -0
  281. package/dist/Atomic/UI/MonoAccordion/MonoAccordion.interface.js +4 -0
  282. package/dist/Atomic/UI/MonoAccordion/MonoAccordion.js +118 -62
  283. package/dist/Atomic/UI/MonoAccordion/MonoAccordion.scss +172 -25
  284. package/dist/Atomic/UI/MonoAccordion/MonoAccordion.stories.js +513 -0
  285. package/dist/Atomic/UI/MonoAccordion/MonoAccordion.test.js +84 -0
  286. package/dist/Atomic/UI/MonoAccordion/index.js +17 -0
  287. package/dist/Atomic/UI/NavLine/NavLine.interface.js +4 -0
  288. package/dist/Atomic/UI/NavLine/NavLine.js +306 -273
  289. package/dist/Atomic/UI/NavLine/NavLine.scss +202 -155
  290. package/dist/Atomic/UI/NavLine/NavLine.stories.js +434 -0
  291. package/dist/Atomic/UI/NavLine/NavLine.test.js +311 -0
  292. package/dist/Atomic/UI/NavLine/index.js +17 -0
  293. package/dist/Atomic/UI/PageTitle/PageTitle.interface.js +4 -0
  294. package/dist/Atomic/UI/PageTitle/PageTitle.js +73 -52
  295. package/dist/Atomic/UI/PageTitle/PageTitle.scss +52 -14
  296. package/dist/Atomic/UI/PageTitle/PageTitle.stories.js +62 -0
  297. package/dist/Atomic/UI/PageTitle/PageTitle.test.js +181 -0
  298. package/dist/Atomic/UI/PageTitle/index.js +17 -0
  299. package/dist/Atomic/UI/PieChart/PieChar.interface.js +4 -0
  300. package/dist/Atomic/UI/PieChart/PieChart.js +105 -42
  301. package/dist/Atomic/UI/PieChart/PieChart.scss +87 -11
  302. package/dist/Atomic/UI/PieChart/PieChart.stories.js +82 -0
  303. package/dist/Atomic/UI/PieChart/PieChart.test.js +142 -0
  304. package/dist/Atomic/UI/PieChart/index.js +26 -0
  305. package/dist/Atomic/UI/Price/Price.interface.js +4 -0
  306. package/dist/Atomic/UI/Price/Price.js +27 -20
  307. package/dist/Atomic/UI/Price/Price.stories.js +52 -0
  308. package/dist/Atomic/UI/Price/Price.test.js +83 -0
  309. package/dist/Atomic/UI/Price/index.js +17 -0
  310. package/dist/Atomic/UI/PriceRange/PriceRange.interface.js +4 -0
  311. package/dist/Atomic/UI/PriceRange/PriceRange.js +40 -18
  312. package/dist/Atomic/UI/PriceRange/PriceRange.stories.js +51 -0
  313. package/dist/Atomic/UI/PriceRange/PriceRange.test.js +72 -0
  314. package/dist/Atomic/UI/PriceRange/index.js +17 -0
  315. package/dist/Atomic/UI/ProgressLine/ProgressLine.interface.js +4 -0
  316. package/dist/Atomic/UI/ProgressLine/ProgressLine.js +92 -73
  317. package/dist/Atomic/UI/ProgressLine/ProgressLine.scss +66 -52
  318. package/dist/Atomic/UI/ProgressLine/ProgressLine.stories.js +163 -0
  319. package/dist/Atomic/UI/ProgressLine/ProgressLine.test.js +60 -0
  320. package/dist/Atomic/UI/ProgressLine/index.js +17 -0
  321. package/dist/Atomic/UI/Status/Status.interface.js +4 -0
  322. package/dist/Atomic/UI/Status/Status.js +62 -51
  323. package/dist/Atomic/UI/Status/Status.scss +48 -29
  324. package/dist/Atomic/UI/Status/Status.stories.js +79 -0
  325. package/dist/Atomic/UI/Status/Status.test.js +103 -0
  326. package/dist/Atomic/UI/Status/index.js +17 -0
  327. package/dist/Atomic/UI/Table/Partials/TdCell.js +126 -88
  328. package/dist/Atomic/UI/Table/Partials/TdHeader.js +58 -39
  329. package/dist/Atomic/UI/Table/Partials/TdRow.js +124 -73
  330. package/dist/Atomic/UI/Table/Partials/TdTitle.js +113 -45
  331. package/dist/Atomic/UI/Table/Table.js +61 -43
  332. package/dist/Atomic/UI/Table/Table.scss +0 -3
  333. package/dist/Atomic/UI/Table/Table.stories.js +250 -0
  334. package/dist/Atomic/UI/Table/TdTypes/TdActions.js +108 -64
  335. package/dist/Atomic/UI/Table/TdTypes/TdPriority.js +44 -31
  336. package/dist/Atomic/UI/Table/TdTypes/TdRange.js +24 -10
  337. package/dist/Atomic/UI/Table/TdTypes/TdWeight.js +59 -48
  338. package/dist/Atomic/UI/Tag/Tag.interface.js +4 -0
  339. package/dist/Atomic/UI/Tag/Tag.js +157 -113
  340. package/dist/Atomic/UI/Tag/Tag.scss +104 -47
  341. package/dist/Atomic/UI/Tag/Tag.stories.js +108 -0
  342. package/dist/Atomic/UI/Tag/Tag.test.js +75 -0
  343. package/dist/Atomic/UI/Tag/index.js +17 -0
  344. package/dist/Atomic/UI/TagList/TagList.js +223 -179
  345. package/dist/Atomic/UI/TagList/TagList.scss +13 -9
  346. package/dist/Atomic/UI/TagList/TagList.stories.js +169 -0
  347. package/dist/Atomic/UI/UserBox/UserBox.interface.js +4 -0
  348. package/dist/Atomic/UI/UserBox/UserBox.js +80 -56
  349. package/dist/Atomic/UI/UserBox/UserBox.scss +45 -21
  350. package/dist/Atomic/UI/UserBox/UserBox.stories.js +57 -0
  351. package/dist/Atomic/UI/UserBox/UserBox.test.js +136 -0
  352. package/dist/Atomic/UI/UserBox/index.js +17 -0
  353. package/dist/Atomic/UI/WizardStepper/WizardStepper.stories.js +70 -0
  354. package/dist/Atomic/UI/WizardStepper/constructor.js +127 -89
  355. package/dist/Atomic/UI/WizardStepper/index.js +14 -6
  356. package/dist/Atomic/UI/WizardStepper/ui/StateIcon/StateIcon.js +53 -51
  357. package/dist/Atomic/UI/WizardStepper/ui/StateIcon/StateIcon.scss +11 -7
  358. package/dist/Atomic/UI/WizardStepper/ui/StateIcon/index.js +9 -5
  359. package/dist/Atomic/UI/WizardStepper/ui/StepRow/StepRow.js +84 -67
  360. package/dist/Atomic/UI/WizardStepper/ui/StepRow/StepRow.scss +13 -7
  361. package/dist/Atomic/UI/WizardStepper/ui/StepRow/index.js +14 -6
  362. package/dist/Atomic/UI/WizardStepper/ui/StepWrapper/StepWrapper.js +50 -45
  363. package/dist/Atomic/UI/WizardStepper/ui/StepWrapper/StepWrapper.scss +24 -18
  364. package/dist/Atomic/UI/WizardStepper/ui/StepWrapper/index.js +14 -6
  365. package/dist/Atomic/UI/WizardStepper/ui/icons.js +138 -106
  366. package/dist/Atomic/UI/WizardStepper/ui/index.js +14 -6
  367. package/dist/Classes/AbortableFetch.js +394 -326
  368. package/dist/Classes/AnimatedHandler.js +31 -44
  369. package/dist/Classes/RESTAPI/index.js +131 -173
  370. package/dist/Classes/RESTAPI/partials/AbortableFetch.js +399 -334
  371. package/dist/Classes/RESTAPI/partials/ApiBase.js +30 -30
  372. package/dist/Classes/RESTAPI/partials/ApiRequestCreators.js +107 -88
  373. package/dist/Classes/RESTAPI/partials/ApiUtils.js +144 -166
  374. package/dist/Classes/RESTAPI/partials/CredentialsProcessing.js +180 -204
  375. package/dist/Classes/RESTAPI/partials/Utils.js +80 -83
  376. package/dist/Classes/RESTAPI/partials/_outerDependencies.js +16 -8
  377. package/dist/Classes/RESTAPI/partials/_utils.js +139 -125
  378. package/dist/Constants/index.constants.js +102 -22
  379. package/dist/Functions/Portal.js +67 -23
  380. package/dist/Functions/customEventListener.js +48 -50
  381. package/dist/Functions/dateTime.js +130 -177
  382. package/dist/Functions/fieldValueFormatters.js +275 -346
  383. package/dist/Functions/guards/assertions.js +294 -0
  384. package/dist/Functions/guards/safeValue.js +75 -0
  385. package/dist/Functions/guards/typeGuards.js +374 -0
  386. package/dist/Functions/hooks/useFormFieldsChangesManager.js +125 -96
  387. package/dist/Functions/locale/createTranslator.js +29 -27
  388. package/dist/Functions/operations.js +129 -102
  389. package/dist/Functions/presets/inputMaskPresets.js +88 -99
  390. package/dist/Functions/presets/inputPresets.js +41 -35
  391. package/dist/Functions/presets/mobileKeyboardTypesPresets.js +30 -49
  392. package/dist/Functions/schemas.js +78 -20
  393. package/dist/Functions/useBodyScrollLock.js +21 -15
  394. package/dist/Functions/useClickOutside.js +21 -16
  395. package/dist/Functions/useDebounce.js +62 -21
  396. package/dist/Functions/useFieldFocus.js +83 -79
  397. package/dist/Functions/useFormTools/form-drivers/ArrayWithObjects.js +39 -46
  398. package/dist/Functions/useFormTools/form-drivers/ObjectWithIterableObjects.js +132 -137
  399. package/dist/Functions/useFormTools/form-drivers/ObjectWithNamedKeyObjects.js +63 -73
  400. package/dist/Functions/useFormTools/functions/General.js +117 -129
  401. package/dist/Functions/useFormTools/functions/RenderFields.js +75 -85
  402. package/dist/Functions/useFormTools/functions/usePrevious.js +16 -10
  403. package/dist/Functions/useFormTools/index.js +647 -709
  404. package/dist/Functions/useInputHighlightError.js +104 -53
  405. package/dist/Functions/useIsMobile/index.js +17 -0
  406. package/dist/Functions/useIsMobile/useIsMobile.js +33 -0
  407. package/dist/Functions/useIsMobile/useIsMobile.test.js +104 -0
  408. package/dist/Functions/useKeyPress/useHandleKeyPress.js +40 -33
  409. package/dist/Functions/useKeyPress/useHandleKeyPress.test.js +96 -0
  410. package/dist/Functions/useKeyPress/useKeyPress.js +48 -39
  411. package/dist/Functions/useKeyPress/useKeyPress.test.js +87 -0
  412. package/dist/Functions/useLocalStorage.js +38 -31
  413. package/dist/Functions/useLocationParams.js +31 -24
  414. package/dist/Functions/useMediaQuery.js +14 -10
  415. package/dist/Functions/useMetaInfo.js +45 -35
  416. package/dist/Functions/useMouseUpOutside.js +21 -15
  417. package/dist/Functions/useOnlineStatus.js +25 -21
  418. package/dist/Functions/usePasswordChecker.js +183 -111
  419. package/dist/Functions/usePrevious.js +16 -10
  420. package/dist/Functions/useResize.js +32 -28
  421. package/dist/Functions/useScrollTo.js +26 -16
  422. package/dist/Functions/useToggle.js +20 -16
  423. package/dist/Functions/utils.js +493 -469
  424. package/dist/Molecular/CustomIcons/components/AffiliateNetworks.js +75 -28
  425. package/dist/Molecular/CustomIcons/components/AlertCircle.js +77 -28
  426. package/dist/Molecular/CustomIcons/components/AppStore.js +84 -32
  427. package/dist/Molecular/CustomIcons/components/Arrow.js +93 -38
  428. package/dist/Molecular/CustomIcons/components/ArrowDown.js +63 -20
  429. package/dist/Molecular/CustomIcons/components/ArrowLeft.js +71 -23
  430. package/dist/Molecular/CustomIcons/components/ArrowRight.js +71 -23
  431. package/dist/Molecular/CustomIcons/components/ArrowUp.js +63 -20
  432. package/dist/Molecular/CustomIcons/components/Bell.js +61 -18
  433. package/dist/Molecular/CustomIcons/components/Button.js +61 -18
  434. package/dist/Molecular/CustomIcons/components/Campaigns.js +62 -19
  435. package/dist/Molecular/CustomIcons/components/Check.js +62 -19
  436. package/dist/Molecular/CustomIcons/components/Check2.js +61 -18
  437. package/dist/Molecular/CustomIcons/components/ChevronDown.js +61 -18
  438. package/dist/Molecular/CustomIcons/components/ChevronDownDisabled.js +61 -18
  439. package/dist/Molecular/CustomIcons/components/ChevronLeft.js +61 -18
  440. package/dist/Molecular/CustomIcons/components/ChevronRight.js +61 -18
  441. package/dist/Molecular/CustomIcons/components/ChevronUp.js +61 -18
  442. package/dist/Molecular/CustomIcons/components/ChevronUpDown.js +81 -33
  443. package/dist/Molecular/CustomIcons/components/Close.js +64 -20
  444. package/dist/Molecular/CustomIcons/components/ColumnsOrder.js +95 -45
  445. package/dist/Molecular/CustomIcons/components/Delete.js +62 -19
  446. package/dist/Molecular/CustomIcons/components/Edit.js +61 -18
  447. package/dist/Molecular/CustomIcons/components/Email.js +87 -36
  448. package/dist/Molecular/CustomIcons/components/FinturfLogo.js +82 -26
  449. package/dist/Molecular/CustomIcons/components/FinturfLogo2.js +83 -34
  450. package/dist/Molecular/CustomIcons/components/Flows.js +61 -18
  451. package/dist/Molecular/CustomIcons/components/Gift.js +71 -23
  452. package/dist/Molecular/CustomIcons/components/GoogleAuth.js +84 -32
  453. package/dist/Molecular/CustomIcons/components/GooglePlay.js +84 -32
  454. package/dist/Molecular/CustomIcons/components/HelpCircle.js +67 -21
  455. package/dist/Molecular/CustomIcons/components/HelpCircle2.js +68 -22
  456. package/dist/Molecular/CustomIcons/components/HelpCircleFilled.js +67 -21
  457. package/dist/Molecular/CustomIcons/components/Home.js +67 -21
  458. package/dist/Molecular/CustomIcons/components/Home2.js +70 -24
  459. package/dist/Molecular/CustomIcons/components/Key.js +69 -26
  460. package/dist/Molecular/CustomIcons/components/Landers.js +68 -22
  461. package/dist/Molecular/CustomIcons/components/Lock.js +61 -18
  462. package/dist/Molecular/CustomIcons/components/Mail.js +75 -26
  463. package/dist/Molecular/CustomIcons/components/Mastercard.js +128 -68
  464. package/dist/Molecular/CustomIcons/components/Minus.js +79 -31
  465. package/dist/Molecular/CustomIcons/components/Offers.js +62 -19
  466. package/dist/Molecular/CustomIcons/components/Pause.js +79 -31
  467. package/dist/Molecular/CustomIcons/components/PayPal.js +96 -45
  468. package/dist/Molecular/CustomIcons/components/PayPalLightLarge.js +81 -32
  469. package/dist/Molecular/CustomIcons/components/Phone.js +81 -33
  470. package/dist/Molecular/CustomIcons/components/Play.js +79 -31
  471. package/dist/Molecular/CustomIcons/components/Plus.js +79 -31
  472. package/dist/Molecular/CustomIcons/components/Profile.js +69 -23
  473. package/dist/Molecular/CustomIcons/components/QRCode.js +85 -33
  474. package/dist/Molecular/CustomIcons/components/Rectangle.js +61 -18
  475. package/dist/Molecular/CustomIcons/components/Revert.js +67 -21
  476. package/dist/Molecular/CustomIcons/components/Star.js +60 -17
  477. package/dist/Molecular/CustomIcons/components/Star2.js +62 -19
  478. package/dist/Molecular/CustomIcons/components/TrafficSources.js +68 -21
  479. package/dist/Molecular/CustomIcons/components/Trash.js +61 -18
  480. package/dist/Molecular/CustomIcons/components/TrashRed.js +61 -18
  481. package/dist/Molecular/CustomIcons/components/Triggers.js +61 -18
  482. package/dist/Molecular/CustomIcons/components/User.js +71 -23
  483. package/dist/Molecular/CustomIcons/components/Visa.js +88 -34
  484. package/dist/Molecular/CustomIcons/components/X.js +61 -18
  485. package/dist/Molecular/CustomIcons/index.js +76 -674
  486. package/dist/Molecular/FormElement/FormElement.js +44 -41
  487. package/dist/Molecular/FormElement/FormElement.stories.js +92 -0
  488. package/dist/Molecular/FormWithDependOn/FormWithDependOn.js +179 -161
  489. package/dist/Molecular/FormWithDependOn/FormWithDependOn.stories.js +301 -0
  490. package/dist/Molecular/FormWithDependOn/partials/_utils.js +49 -56
  491. package/dist/Molecular/InputAddress/InputAddress.js +496 -421
  492. package/dist/Molecular/InputAddress/InputAddress.scss +12 -14
  493. package/dist/Molecular/InputAddress/InputAddress.stories.js +541 -0
  494. package/dist/Molecular/InputPassword/InputPassword.js +99 -47
  495. package/dist/Molecular/InputPassword/InputPassword.stories.js +86 -0
  496. package/dist/index.js +11 -8
  497. package/dist/scss/_mixins.scss +2 -2
  498. package/dist/scss/_vars.scss +1 -2
  499. package/dist/scss/main.scss +4 -3
  500. package/dist/types/base.interface.js +4 -0
  501. package/dist/types/base.types.js +4 -0
  502. package/dist/types/declaration/ArrayElement.d.js +4 -0
  503. package/dist/types/declaration/AsyncReturnType.d.js +4 -0
  504. package/dist/types/declaration/DeepPartial.d.js +4 -0
  505. package/dist/types/declaration/DeepReadonly.d.js +4 -0
  506. package/dist/types/declaration/DeepRequired.d.js +4 -0
  507. package/dist/types/declaration/Flatten.d.js +4 -0
  508. package/dist/types/declaration/FunctionType.d.js +4 -0
  509. package/dist/types/declaration/If.d.js +4 -0
  510. package/dist/types/declaration/KeysType.d.js +4 -0
  511. package/dist/types/declaration/NonNullableType.d.js +4 -0
  512. package/dist/types/declaration/ObjectType.d.js +4 -0
  513. package/dist/types/declaration/OnlyObjectKeys.d.js +4 -0
  514. package/dist/types/declaration/PrettyPrint.d.js +31 -0
  515. package/dist/types/declaration/RequiredFields.d.js +4 -0
  516. package/dist/types/declaration/TupleType.d.js +4 -0
  517. package/dist/types/declaration/ValuesType.d.js +4 -0
  518. package/package.json +18 -21
  519. package/dist/Atomic/UI/NavLine/Tabs.js +0 -115
  520. package/dist/Functions/animatingFunctions/getAnimatedHandler.js +0 -1
  521. package/dist/Functions/useIsMobile.js +0 -26
@@ -1,947 +1,1063 @@
1
1
  "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
2
  Object.defineProperty(exports, "__esModule", {
5
- value: true
3
+ value: true
6
4
  });
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"));
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"));
21
24
  require("./TagsDropdown.scss");
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; }
24
- const RC = "tags-dropdown";
25
- const MIN_ITEMS_FOR_SHOW_MOBILE_SEARCH = 10;
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)
120
- });
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;
140
- };
141
- const randomIndex = getRandomIndex(0, COLORS.length - 1);
142
- return COLORS[randomIndex];
143
- // eslint-disable-next-line react-hooks/exhaustive-deps
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
- }
25
+ function _interop_require_default(obj) {
26
+ return obj && obj.__esModule ? obj : {
27
+ default: obj
158
28
  };
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
- }));
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;
176
41
  }
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
- });
42
+ if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
43
+ return {
44
+ default: obj
45
+ };
193
46
  }
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);
47
+ var cache = _getRequireWildcardCache(nodeInterop);
48
+ if (cache && cache.has(obj)) {
49
+ return cache.get(obj);
206
50
  }
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;
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
+ }
247
63
  }
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
64
  }
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)()
275
- };
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;
65
+ newObj.default = obj;
66
+ if (cache) {
67
+ cache.set(obj, newObj);
308
68
  }
309
- onOptionEdit?.(editingOption);
310
- setOptions(options => options.map(option => {
311
- if (editingOption && option.value === editingOption?.value) {
312
- const tmp = {
313
- ...editingOption
69
+ return newObj;
70
+ }
71
+ const RC = "tags-dropdown";
72
+ 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
111
+ });
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
+ });
127
+ };
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;
314
139
  };
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"
140
+ const randomIndex = getRandomIndex(0, COLORS.length - 1);
141
+ return COLORS[randomIndex];
142
+ // 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");
333
175
  };
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
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
+ });
396
190
  }
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
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}`);
213
+ };
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`;
257
+ }
258
+ };
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)()
275
+ };
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);
445
288
  });
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)));
552
289
  };
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);
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);
294
+ };
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;
308
+ }
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}`);
413
+ };
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();
656
425
  }
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);
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;
728
484
  }
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
- }
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
+ }));
753
490
  }
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
- })));
491
+ onChange([
492
+ ...chosenOptions,
493
+ item.value
494
+ ], "chosenOptions");
495
+ return null;
791
496
  };
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();
497
+ const onSearchHandler = (name)=>{
498
+ let inputValue = name;
499
+ if (!isNotValidateASCII) inputValue = (0, _fieldValueFormatters.formatToOnlyASCIICodeText)(inputValue);
500
+ setSearchValueInterceptor(inputValue);
810
501
  };
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);
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
+ }
831
508
  };
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
- }));
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));
847
517
  }
848
- });
849
- }
850
- }, [chosenOptions, isUseLocalOptionsStore]);
851
- (0, _react.useEffect)(() => {
852
- const windowScrollEventHandler = e => {
853
- setWindowScrollTop(window.scrollY);
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);
854
523
  };
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));
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);
883
531
  };
884
- const preventWindowScrolling = e => {
885
- e.preventDefault();
886
- window.scrollTo({
887
- top: windowScrollTop
888
- });
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}`);
889
627
  };
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);
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
+ });
905
765
  };
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());
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
+ });
788
+ };
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
+ });
946
1062
  };
947
- var _default = exports.default = TagsDropdown;
1063
+ const _default = TagsDropdown;