intelicoreact 1.5.41 → 1.6.1

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,546 +1,699 @@
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 _Input = _interopRequireDefault(require("../../../Atomic/FormElements/Input/Input"));
14
- var _RadioInput = _interopRequireDefault(require("../../../Atomic/FormElements/RadioInput/RadioInput"));
15
- var _fieldValueFormatters = require("../../../Functions/fieldValueFormatters");
16
- var _useIsMobile = _interopRequireDefault(require("../../../Functions/useIsMobile"));
17
- var _utils = require("../../../Functions/utils");
18
- var _DropdownLoader = _interopRequireDefault(require("./components/DropdownLoader"));
19
- require("./Dropdown.scss");
20
- 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); }
21
- 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; }
22
- const RC = "dropdown";
23
- const MIN_ITEMS_FOR_SHOW_MOBILE_SEARCH = 10;
24
- const Dropdown = _ref => {
25
- let {
26
- label,
27
- options = [],
28
- value,
29
- error,
30
- disabled,
31
- onChange,
32
- placeholder,
33
- className,
34
- isSearchable,
35
- entity,
36
- scrollReactionObj,
37
- isListTop,
38
- isNotValidateASCII = false,
39
- testId = "dropdown",
40
- sortAlphabetical = true,
41
- fieldKey,
42
- id,
43
- noOptionsText = "No options available",
44
- attributesOfNativeInput = {},
45
- isDoNotPullOutListOfMainContainer,
46
- withMobileLogic,
47
- withActions,
48
- minItemsForShowMobileSearch = MIN_ITEMS_FOR_SHOW_MOBILE_SEARCH,
49
- customTrigger,
50
- tabIndex,
51
- onActionConfirmClick,
52
- onActionCancelClick,
53
- isDefaultOpened
54
- } = _ref;
55
- const {
56
- isMobile: isMobileProp
57
- } = (0, _useIsMobile.default)();
58
- const isMobile = isMobileProp && withMobileLogic && window.screen.width <= 768;
59
- const [dropdownId, setDropdownId] = (0, _react.useState)(id || fieldKey || Math.random().toString(16).slice(2));
60
- const [isOpen, setIsOpen] = (0, _react.useState)(false);
61
- const [searchValue, setSearchValue] = (0, _react.useState)();
62
- const dropdownRef = (0, _react.useRef)(null);
63
- const dropdownListRef = (0, _react.useRef)(null);
64
- const dropdownListWrapperRef = (0, _react.useRef)(null);
65
- const searchInputRef = (0, _react.useRef)(null);
66
- const wrapperRef = (0, _react.useRef)(null);
67
- const [initListHeight, setInitListHeight] = (0, _react.useState)(null);
68
- const [isSearchChanged, setIsSearchChanged] = (0, _react.useState)(false);
69
- const [isSearchInputFocused, setIsSearchInputFocused] = (0, _react.useState)(false);
70
- const [isScrollableList, setIsScrollableList] = (0, _react.useState)(null);
71
- const [isFixedMaxHeight, setIsFixedMaxHeight] = (0, _react.useState)(false);
72
- const [scrollTop, setScrollTop] = (0, _react.useState)(0);
73
- const [scrollHeight, setScrollHeight] = (0, _react.useState)(1);
74
- if (!options) return null;
75
- const getTotalOptions = (0, _react.useCallback)(() => {
76
- return options?.reduce((result, item) => {
77
- if (item?.list || item?.items) {
78
- result += item?.list?.length || item?.items?.length || 0;
79
- } else {
80
- ++result;
81
- }
82
- return result;
83
- }, 0);
84
- }, [options]);
85
- if (isMobile) {
86
- isSearchable = getTotalOptions() > (minItemsForShowMobileSearch || MIN_ITEMS_FOR_SHOW_MOBILE_SEARCH);
87
- }
88
- const moveOtherToEnd = options => {
89
- const otherIndex = options?.findIndex(option => option?.value === "other");
90
- if (otherIndex > -1) {
91
- const other = options?.splice(otherIndex, 1);
92
- options.push(...other);
5
+ Object.defineProperty(exports, "default", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return _default;
93
9
  }
94
- return options;
95
- };
96
- const optionsWithOtherAtTheEnd = moveOtherToEnd(options);
97
- options.map(option => {
98
- if (option.items) {
99
- return option.items = moveOtherToEnd(option.items);
100
- } else return option;
101
- });
102
- const filteredGroups = optionsWithOtherAtTheEnd.map(item => ({
103
- ...item,
104
- items: !isSearchable || !isSearchChanged ? item?.items : item.items?.slice().filter(el => el?.label?.toLowerCase().includes(searchValue?.toLowerCase() || "") || !el?.value || el?.value === "")
105
- })).filter(item => item.items?.length > 0);
106
- const filteredItems = optionsWithOtherAtTheEnd.filter(item => !item.items?.length).filter(item => {
107
- if (!isSearchable || !isSearchChanged) return true;
108
- return item?.label?.toLowerCase().includes(searchValue?.toLowerCase() || "") || !item?.value || item?.value === "";
109
- });
110
- const filteredOptions = [...filteredItems, ...filteredGroups];
111
- const modalBtnTrigger = entity && entity !== "" && typeof entity === "string";
112
- const onChangeHandler = item => {
113
- setIsOpen(false);
114
- onChange(item.value);
115
- };
116
- const onKeyDown = e => {
117
- if (![9, 13].includes(e.keyCode)) return false;
118
- setIsOpen(false);
119
- };
120
- const onKeyUp = e => {
121
- if (![9, 13].includes(e.keyCode)) return false;
122
- setIsOpen(true);
123
- };
124
- // decorator
125
- const getDepends = getDependsTrigger => {
126
- const newOnChange = e => {
127
- if (e.value === "open_modal") {
128
- onChange("open_modal");
129
- } else {
130
- onChangeHandler(e);
131
- }
132
- };
133
-
134
- // add pseudo option
135
- const newOptions = [{
136
- label: `New ${entity}`,
137
- value: "open_modal",
138
- className: "dropdown__list-item--modal"
139
- }, ...filteredOptions];
140
- return {
141
- onChange: changeItem => {
142
- return getDependsTrigger ? newOnChange(changeItem) : onChangeHandler(changeItem);
143
- },
144
- options: getDependsTrigger ? newOptions : options
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 _Input = /*#__PURE__*/ _interop_require_default(require("../../../Atomic/FormElements/Input/Input"));
17
+ const _RadioInput = /*#__PURE__*/ _interop_require_default(require("../../../Atomic/FormElements/RadioInput/RadioInput"));
18
+ const _fieldValueFormatters = require("../../../Functions/fieldValueFormatters");
19
+ const _useIsMobile = /*#__PURE__*/ _interop_require_default(require("../../../Functions/useIsMobile/useIsMobile"));
20
+ const _utils = require("../../../Functions/utils");
21
+ const _DropdownLoader = /*#__PURE__*/ _interop_require_default(require("./components/DropdownLoader"));
22
+ require("./Dropdown.scss");
23
+ function _interop_require_default(obj) {
24
+ return obj && obj.__esModule ? obj : {
25
+ default: obj
145
26
  };
146
- };
147
- const handleClickOutside = event => {
148
- if (!getListContainer()?.contains(event?.target) && !dropdownRef?.current.contains(event?.target)) {
149
- setIsOpen(false);
27
+ }
28
+ function _getRequireWildcardCache(nodeInterop) {
29
+ if (typeof WeakMap !== "function") return null;
30
+ var cacheBabelInterop = new WeakMap();
31
+ var cacheNodeInterop = new WeakMap();
32
+ return (_getRequireWildcardCache = function(nodeInterop) {
33
+ return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
34
+ })(nodeInterop);
35
+ }
36
+ function _interop_require_wildcard(obj, nodeInterop) {
37
+ if (!nodeInterop && obj && obj.__esModule) {
38
+ return obj;
150
39
  }
151
- };
152
- const onSearchHandler = name => {
153
- let inputValue = name;
154
- if (!isNotValidateASCII) inputValue = (0, _fieldValueFormatters.formatToOnlyASCIICodeText)(inputValue);
155
- setIsSearchChanged(true);
156
- setSearchValue(inputValue);
157
- };
158
- const onWrapperClick = e => {
159
- if (e.target === wrapperRef?.current) {
160
- e.stopPropagation();
161
- e.preventDefault();
162
- setIsOpen(false);
40
+ if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
41
+ return {
42
+ default: obj
43
+ };
163
44
  }
164
- };
165
- const hightlightedText = (text, postfix, description) => {
166
- const prepare = text => text?.replace(/[|\\{}()[\]^$+*?.]/g, "\\$&");
167
- text = text.replace(/["&<>]/g, a => {
168
- return {
169
- '"': "&quot;",
170
- "&": "&amp;",
171
- "<": "&lt;",
172
- ">": "&gt;"
173
- }[a];
174
- });
175
- const main = isSearchable && searchValue ? text?.replace(new RegExp(prepare(searchValue), "i"), match => `<span class="bg--yellow">${match}</span>`) : text;
176
- const postfixPart = postfix ? `<span class="dropdown__list-item-postfix">${postfix}</span>` : "";
177
- const descriptionPart = description ? `<span class="dropdown__list-item-description">${description}</span>` : "";
178
- return main + postfixPart + descriptionPart;
179
- };
180
- const depend = getDepends(modalBtnTrigger);
181
- const getMarkupForElement = (item, index, optTestId) => {
182
- return /*#__PURE__*/_react.default.createElement("button", {
183
- "data-testid": `${testId}-${optTestId}-option`,
184
- key: item.value?.toString()?.replace(/ /g, "_"),
185
- onMouseDown: () => depend.onChange(item),
186
- className: (0, _classnames.default)(`${RC}__list-item`, {
187
- [`${RC}__list-item_active`]: item.value === value,
188
- [`${RC}__list-item_disabled`]: item.disabled
189
- }, item.className)
190
- }, !isMobile && /*#__PURE__*/_react.default.createElement("span", {
191
- className: (0, _classnames.default)(`${RC}__active-icon`, {
192
- [`${RC}__active-icon_active`]: item.value === value
193
- })
194
- }, /*#__PURE__*/_react.default.createElement(_reactFeather.Check, null)), /*#__PURE__*/_react.default.createElement("div", {
195
- className: (0, _classnames.default)(`${RC}__list-item-label`, item.labelClassName || ""),
196
- dangerouslySetInnerHTML: {
197
- __html: hightlightedText(item.label, item.postfix, item.description)
198
- }
199
- }), item?.icon || "", isMobile ? item?.customMobileIcon ?? /*#__PURE__*/_react.default.createElement(_RadioInput.default, {
200
- value: item.value,
201
- checked: value
202
- }) : "");
203
- };
204
- const filteredOptionList = filteredOption => {
205
- return filteredOption.items?.length > 0 ? /*#__PURE__*/_react.default.createElement("div", {
206
- key: filteredOption.label?.toString()?.replace(/ /g, "_").concat(Date.now()),
207
- className: (0, _classnames.default)(`${RC}-group`, filteredOption.className)
208
- }, /*#__PURE__*/_react.default.createElement("div", {
209
- className: `${RC}-group__name`
210
- }, filteredOption.label), filteredOption.items.map((el, index) => getMarkupForElement(el, index, el?.testId || index))) : null;
211
- };
212
- const selectedLabel = options.find(el => el.value === value)?.label || options.reduce((acc, item) => acc || item.items?.find(el => el.value === value)?.label, null);
213
- const doScrollCallback = (0, _react.useCallback)(e => {
214
- const {
215
- callback,
216
- isWithAnyScrolling,
217
- scrollingInaccuracy = 0
218
- } = scrollReactionObj || {};
219
- if (callback && typeof callback === "function") {
220
- if (isWithAnyScrolling) callback(e);else if (Math.round(e.target.clientHeight + e.target.scrollTop + scrollingInaccuracy) >= e.target.scrollHeight) {
221
- callback(e);
222
- }
45
+ var cache = _getRequireWildcardCache(nodeInterop);
46
+ if (cache && cache.has(obj)) {
47
+ return cache.get(obj);
223
48
  }
224
- }, [filteredOptions]);
225
- const getParentNode = () => {
226
- if (isDoNotPullOutListOfMainContainer) return dropdownRef.current;
227
- return document.querySelector("div#root") ?? document.querySelector("div#app") ?? document.querySelector("div#storybook-root");
228
- };
229
- const initListContainer = () => {
230
- const dropdownList = document.createElement("div");
231
- dropdownList.setAttribute("id", dropdownId);
232
- dropdownList.classList.add("dropdown__container");
233
- if (isMobile) {
234
- dropdownList.addEventListener("click", e => {
235
- if (e.target.id === dropdownId) setIsOpen(false);
236
- });
49
+ var newObj = {
50
+ __proto__: null
51
+ };
52
+ var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
53
+ for(var key in obj){
54
+ if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
55
+ var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
56
+ if (desc && (desc.get || desc.set)) {
57
+ Object.defineProperty(newObj, key, desc);
58
+ } else {
59
+ newObj[key] = obj[key];
60
+ }
61
+ }
237
62
  }
238
- try {
239
- getListContainer()?.remove();
240
- } finally {
241
- if (isMobile) {
242
- try {
243
- document.getElementById(`mlw-${dropdownId}`)?.remove();
244
- } catch (e) {}
245
- const dropdownMobileListWrapper = document.createElement("div");
246
- dropdownMobileListWrapper.classList.add("dropdown-mobile");
247
- dropdownMobileListWrapper.setAttribute("id", `mlw-${dropdownId}`);
248
- dropdownMobileListWrapper?.append(dropdownList);
249
- getParentNode()?.append(dropdownMobileListWrapper);
250
- } else {
251
- getParentNode()?.append(dropdownList);
252
- }
63
+ newObj.default = obj;
64
+ if (cache) {
65
+ cache.set(obj, newObj);
253
66
  }
254
- };
255
- const getListContainer = () => {
256
- return document.getElementById(dropdownId);
257
- };
258
- const getListContainerWrapper = () => {
259
- return document.getElementById(`mlw-${dropdownId}`);
260
- };
261
- const setListContainerStyles = () => {
262
- const lc = getListContainer();
263
- if (!lc || !isOpen) return false;
264
- const windowHeight = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
265
- const {
266
- width,
267
- height,
268
- left,
269
- top
270
- } = dropdownRef?.current.getBoundingClientRect() ?? {};
271
- const sw = lc.getElementsByClassName("dropdown__list")[0];
272
- const lh = dropdownListWrapperRef?.current?.getElementsByClassName("dropdown__list-header")[0];
273
- const margin = parseInt(getComputedStyle(dropdownListWrapperRef?.current)?.marginTop?.replace("px", "") ?? 0, 10);
274
- const maxHeight = initListHeight ?? parseInt(getComputedStyle(sw)?.maxHeight?.replace("px", "") ?? 0, 10);
275
- if (initListHeight === null) setInitListHeight(maxHeight);
276
- const toTop = top - margin;
277
- const toBottom = windowHeight - top - height - margin * 2;
278
- const swHeight = sw?.getBoundingClientRect()?.height;
279
- const maxSwHeight = isMobile ? dropdownListWrapperRef?.current?.getBoundingClientRect()?.height - lh?.getBoundingClientRect()?.height : toTop >= maxHeight || toBottom >= maxHeight ? maxHeight - 3 * margin : toTop > toBottom ? toTop - 3 * margin : toBottom - 4 * margin;
280
- const listPos = toTop < toBottom || toBottom >= swHeight ? "bottom" : "top";
281
- lc.style.minWidth = `${width}px`;
282
- lc.style.left = `${left}px`;
283
- lc.style.top = `${listPos === "bottom" ? top + height : top - margin * 3 - parseInt(getComputedStyle(dropdownListWrapperRef?.current)?.height?.replace("px", "") ?? 0, 10)}px`;
284
- sw.style.maxHeight = `${maxSwHeight}px`;
285
- };
286
- const renderListContainer = () => {
287
- const lc = getListContainer();
288
- if (!lc) return null;
289
- return /*#__PURE__*/(0, _reactDom.createPortal)(getListMarkUp(), lc);
290
- };
291
- const getSortedOptions = data => {
292
- let newData = [...data];
293
- if (sortAlphabetical) {
294
- const openModalOption = newData.filter(_ref2 => {
295
- let {
296
- value
297
- } = _ref2;
298
- return value === "open_modal";
299
- });
300
- const emptyOption = newData.filter(_ref3 => {
301
- let {
302
- value
303
- } = _ref3;
304
- return value === "";
305
- });
306
- const restOfOptions = newData.filter(_ref4 => {
307
- let {
308
- value
309
- } = _ref4;
310
- return value !== "open_modal" && value !== "";
311
- }).sort(_utils.compareAlphabetical);
312
- newData = [...openModalOption, ...emptyOption, ...restOfOptions].map(item => {
313
- if (item?.items) {
314
- item.items = [...item.items].sort(_utils.compareAlphabetical);
315
- }
316
- return item;
317
- });
67
+ return newObj;
68
+ }
69
+ const RC = "dropdown";
70
+ const MIN_ITEMS_FOR_SHOW_MOBILE_SEARCH = 10;
71
+ const Dropdown = ({ label, options = [], value, error, disabled, onChange, placeholder, className, isSearchable, entity, scrollReactionObj, isListTop, isNotValidateASCII = false, testId = "dropdown", sortAlphabetical = true, fieldKey, id, noOptionsText = "No options available", attributesOfNativeInput = {}, isDoNotPullOutListOfMainContainer, withMobileLogic, withActions, minItemsForShowMobileSearch = MIN_ITEMS_FOR_SHOW_MOBILE_SEARCH, customTrigger, tabIndex, onActionConfirmClick, onActionCancelClick, isDefaultOpened })=>{
72
+ var _options_find, _dropdownListWrapperRef_current_getBoundingClientRect, _dropdownListWrapperRef_current, _dropdownListRef_current, _dropdownListRef_current1, _filteredOptions_find, _tabIndex_toString;
73
+ const { isMobile: isMobileProp } = (0, _useIsMobile.default)();
74
+ const isMobile = isMobileProp && withMobileLogic && window.screen.width <= 768;
75
+ const [dropdownId, setDropdownId] = (0, _react.useState)(id || fieldKey || Math.random().toString(16).slice(2));
76
+ const [isOpen, setIsOpen] = (0, _react.useState)(false);
77
+ const [searchValue, setSearchValue] = (0, _react.useState)();
78
+ const dropdownRef = (0, _react.useRef)(null);
79
+ const dropdownListRef = (0, _react.useRef)(null);
80
+ const dropdownListWrapperRef = (0, _react.useRef)(null);
81
+ const searchInputRef = (0, _react.useRef)(null);
82
+ const wrapperRef = (0, _react.useRef)(null);
83
+ const [initListHeight, setInitListHeight] = (0, _react.useState)(null);
84
+ const [isSearchChanged, setIsSearchChanged] = (0, _react.useState)(false);
85
+ const [isSearchInputFocused, setIsSearchInputFocused] = (0, _react.useState)(false);
86
+ const [isScrollableList, setIsScrollableList] = (0, _react.useState)(null);
87
+ const [isFixedMaxHeight, setIsFixedMaxHeight] = (0, _react.useState)(false);
88
+ const [scrollTop, setScrollTop] = (0, _react.useState)(0);
89
+ const [scrollHeight, setScrollHeight] = (0, _react.useState)(1);
90
+ if (!options) return null;
91
+ const getTotalOptions = (0, _react.useCallback)(()=>{
92
+ return options === null || options === void 0 ? void 0 : options.reduce((result, item)=>{
93
+ if ((item === null || item === void 0 ? void 0 : item.list) || (item === null || item === void 0 ? void 0 : item.items)) {
94
+ var _item_list, _item_items;
95
+ result += (item === null || item === void 0 ? void 0 : (_item_list = item.list) === null || _item_list === void 0 ? void 0 : _item_list.length) || (item === null || item === void 0 ? void 0 : (_item_items = item.items) === null || _item_items === void 0 ? void 0 : _item_items.length) || 0;
96
+ } else {
97
+ ++result;
98
+ }
99
+ return result;
100
+ }, 0);
101
+ }, [
102
+ options
103
+ ]);
104
+ if (isMobile) {
105
+ isSearchable = getTotalOptions() > (minItemsForShowMobileSearch || MIN_ITEMS_FOR_SHOW_MOBILE_SEARCH);
318
106
  }
319
- return newData;
320
- };
321
- const getListMarkUp = () => {
322
- return /*#__PURE__*/_react.default.createElement("div", {
323
- className: (0, _classnames.default)(`${RC}__container-wrapper`),
324
- ref: wrapperRef,
325
- onClick: isMobile ? onWrapperClick : () => {}
326
- }, /*#__PURE__*/_react.default.createElement("div", {
327
- className: (0, _classnames.default)(`${RC}__list-wrapper`, {
328
- [`${RC}__list-wrapper--fixed-height`]: isFixedMaxHeight,
329
- [`${RC}__list-wrapper--with-bottom-shadow`]: isScrollableList && isMobile,
330
- [`${RC}__list-wrapper--with-bottom-shadow-hidden`]: scrollTop === scrollHeight
331
- }),
332
- ref: dropdownListWrapperRef
333
- }, isMobile && /*#__PURE__*/_react.default.createElement("div", {
334
- className: (0, _classnames.default)(`${RC}__list-header`, {
335
- [`${RC}__list-header-with-shadow`]: isScrollableList && isMobile,
336
- [`${RC}__list-header-with-shadow-hidden`]: scrollTop === 0
337
- })
338
- }, /*#__PURE__*/_react.default.createElement("div", {
339
- className: (0, _classnames.default)(`${RC}__list-header-row`)
340
- }, /*#__PURE__*/_react.default.createElement("div", {
341
- className: (0, _classnames.default)(`${RC}__list-label`)
342
- }, label), /*#__PURE__*/_react.default.createElement("div", {
343
- className: (0, _classnames.default)(`${RC}__list-close-icon`),
344
- onClick: () => setIsOpen(false)
345
- }, /*#__PURE__*/_react.default.createElement(_reactFeather.X, {
346
- onClick: () => setIsOpen(false)
347
- }))), isSearchable && /*#__PURE__*/_react.default.createElement("div", {
348
- className: (0, _classnames.default)(`${RC}__list-header-row`)
349
- }, /*#__PURE__*/_react.default.createElement(_Input.default, (0, _extends2.default)({
350
- ref: searchInputRef,
351
- className: `${RC}__input`,
352
- value: searchValue ?? selectedLabel,
353
- onChange: v => onSearchHandler(v),
354
- placeholder: placeholder || "Search",
355
- withDelete: true,
356
- onFocus: () => setIsSearchInputFocused(true),
357
- onBlur: () => setIsSearchInputFocused(false),
358
- onMouseDown: () => {
359
- if (!isOpen) {
360
- setIsSearchInputFocused(true);
361
- }
362
- }
363
- }, attributesOfNativeInput)))), /*#__PURE__*/_react.default.createElement("div", {
364
- className: (0, _classnames.default)(`${RC}__list`, {
365
- [`${RC}__list-top`]: isListTop
366
- }),
367
- ref: dropdownListRef
368
- }, getSortedOptions(depend.options)?.map(option => {
369
- if (option?.items?.length) {
370
- if (!isSearchable || !isSearchChanged) {
371
- return filteredOptionList(option);
372
- } else {
373
- const items = option.items?.slice().filter(el => el?.label?.toLowerCase().includes(searchValue?.toLowerCase() || "") || !el?.value || el?.value === "");
374
- if (items?.length) return filteredOptionList({
375
- ...option,
376
- items
377
- });
378
- return null;
107
+ const moveOtherToEnd = (options)=>{
108
+ const otherIndex = options === null || options === void 0 ? void 0 : options.findIndex((option)=>(option === null || option === void 0 ? void 0 : option.value) === "other");
109
+ if (otherIndex > -1) {
110
+ const other = options === null || options === void 0 ? void 0 : options.splice(otherIndex, 1);
111
+ options.push(...other);
379
112
  }
380
- } else if (!isSearchable || !isSearchChanged || option?.label?.toLowerCase().includes(searchValue?.toLowerCase() || "") || !option?.value || option?.value === "") {
381
- return getMarkupForElement(option);
382
- }
383
- }), !filteredItems.length && !filteredGroups.length && /*#__PURE__*/_react.default.createElement("div", {
384
- className: `${RC}__list-item ${RC}__list-item--no-options`
385
- }, noOptionsText), disabled && isOpen && /*#__PURE__*/_react.default.createElement(_DropdownLoader.default, null))));
386
- };
387
- const toggleList = e => {
388
- e?.stopPropagation();
389
- setIsOpen(isOpen => {
390
- return !isOpen;
113
+ return options;
114
+ };
115
+ const optionsWithOtherAtTheEnd = moveOtherToEnd(options);
116
+ options.map((option)=>{
117
+ if (option.items) {
118
+ return option.items = moveOtherToEnd(option.items);
119
+ } else return option;
391
120
  });
392
- };
393
- const closeList = isOpen ? handleClickOutside : () => {};
394
- (0, _react.useEffect)(() => {
395
- if (!isDoNotPullOutListOfMainContainer || dropdownRef.current) {
396
- initListContainer();
397
- if (isDefaultOpened && !isMobileProp) setIsOpen(true);
398
- }
399
- }, [isDoNotPullOutListOfMainContainer, dropdownRef.current]);
400
- (0, _react.useLayoutEffect)(() => {
401
- if (!isMobile) {
402
- window.addEventListener("resize", setListContainerStyles);
403
- window.addEventListener("mousewheel", closeList);
404
- window.addEventListener("scroll", closeList);
405
- window.addEventListener("touchmove", closeList);
406
- } else {
407
- window.removeEventListener("resize", setListContainerStyles);
408
- window.removeEventListener("mousewheel", closeList);
409
- window.removeEventListener("scroll", closeList);
410
- window.removeEventListener("touchmove", closeList);
411
- }
412
- getListContainer()?.addEventListener("click", closeList);
413
- return () => {
414
- window.removeEventListener("resize", setListContainerStyles);
415
- window.removeEventListener("mousewheel", closeList);
416
- window.removeEventListener("scroll", closeList);
417
- window.removeEventListener("touchmove", closeList);
418
- getListContainer()?.removeEventListener("click", closeList);
121
+ const filteredGroups = optionsWithOtherAtTheEnd.map((item)=>{
122
+ var _item_items;
123
+ return {
124
+ ...item,
125
+ items: !isSearchable || !isSearchChanged ? item === null || item === void 0 ? void 0 : item.items : (_item_items = item.items) === null || _item_items === void 0 ? void 0 : _item_items.slice().filter((el)=>{
126
+ var _el_label;
127
+ return (el === null || el === void 0 ? void 0 : (_el_label = el.label) === null || _el_label === void 0 ? void 0 : _el_label.toLowerCase().includes((searchValue === null || searchValue === void 0 ? void 0 : searchValue.toLowerCase()) || "")) || !(el === null || el === void 0 ? void 0 : el.value) || (el === null || el === void 0 ? void 0 : el.value) === "";
128
+ })
129
+ };
130
+ }).filter((item)=>{
131
+ var _item_items;
132
+ return ((_item_items = item.items) === null || _item_items === void 0 ? void 0 : _item_items.length) > 0;
133
+ });
134
+ const filteredItems = optionsWithOtherAtTheEnd.filter((item)=>{
135
+ var _item_items;
136
+ return !((_item_items = item.items) === null || _item_items === void 0 ? void 0 : _item_items.length);
137
+ }).filter((item)=>{
138
+ var _item_label;
139
+ if (!isSearchable || !isSearchChanged) return true;
140
+ return (item === null || item === void 0 ? void 0 : (_item_label = item.label) === null || _item_label === void 0 ? void 0 : _item_label.toLowerCase().includes((searchValue === null || searchValue === void 0 ? void 0 : searchValue.toLowerCase()) || "")) || !(item === null || item === void 0 ? void 0 : item.value) || (item === null || item === void 0 ? void 0 : item.value) === "";
141
+ });
142
+ const filteredOptions = [
143
+ ...filteredItems,
144
+ ...filteredGroups
145
+ ];
146
+ const modalBtnTrigger = entity && entity !== "" && typeof entity === "string";
147
+ const onChangeHandler = (item)=>{
148
+ setIsOpen(false);
149
+ onChange(item.value);
419
150
  };
420
- }, [getListContainer]);
421
- (0, _react.useLayoutEffect)(() => {
422
- setListContainerStyles();
423
- }, [isOpen, searchValue, isMobile, options, dropdownListWrapperRef?.current?.getBoundingClientRect()?.height]);
424
- (0, _react.useEffect)(() => {
425
- document.addEventListener("click", handleClickOutside, true);
426
- return () => document.removeEventListener("click", handleClickOutside, true);
427
- }, []);
428
- (0, _react.useEffect)(() => {
429
- if (!isOpen) {
430
- setIsSearchChanged(false);
431
- }
432
- if (scrollReactionObj && typeof scrollReactionObj === "object" && isOpen && dropdownListRef && dropdownListRef.current) {
433
- dropdownListRef.current.addEventListener("scroll", doScrollCallback);
434
- }
435
- return () => {
436
- if (scrollReactionObj && typeof scrollReactionObj === "object") removeEventListener("scroll", doScrollCallback);
151
+ const onKeyDown = (e)=>{
152
+ if (![
153
+ 9,
154
+ 13
155
+ ].includes(e.keyCode)) return false;
156
+ setIsOpen(false);
437
157
  };
438
- }, [isOpen, dropdownListRef]);
439
- (0, _react.useEffect)(() => {
440
- if (!searchValue && isSearchInputFocused) {
441
- setSearchValue(selectedLabel);
442
- setTimeout(() => searchInputRef.current.select(), 1);
443
- }
444
- if (!isSearchInputFocused && !isOpen) {
445
- setSearchValue(null);
446
- }
447
- }, [isSearchInputFocused]);
448
- (0, _react.useEffect)(() => {
449
- if (isOpen && !isSearchInputFocused && searchInputRef?.current && !isMobile) searchInputRef?.current?.focus();
450
- if (isOpen) {
451
- getListContainer()?.classList.add("dropdown__container--opened");
452
- } else {
453
- searchInputRef?.current?.blur();
454
- getListContainer()?.classList.remove("dropdown__container--opened");
455
- }
456
- if (!isOpen && isMobile) {
457
- setSearchValue(null);
458
- }
459
- }, [isOpen]);
460
- (0, _react.useEffect)(() => {
461
- if (isOpen && isMobile && dropdownListRef?.current && !searchValue) {
462
- setIsScrollableList(dropdownListRef?.current?.scrollHeight > dropdownListRef?.current?.clientHeight);
463
- setIsFixedMaxHeight(isScrollableList || dropdownListRef?.current?.scrollHeight > dropdownListRef?.current?.clientHeight);
464
- }
465
- }, [isOpen, isMobile, isScrollableList, dropdownListRef?.current, dropdownListRef?.current?.scrollHeight, dropdownListRef?.current?.clientHeight]);
466
- (0, _react.useEffect)(() => {
467
- const setScrollTopValue = e => {
468
- setScrollTop(parseInt(e.target.scrollTop, 10));
158
+ const onKeyUp = (e)=>{
159
+ if (![
160
+ 9,
161
+ 13
162
+ ].includes(e.keyCode)) return false;
163
+ setIsOpen(true);
469
164
  };
470
- if (isOpen && isMobile && dropdownListRef?.current) {
471
- dropdownListRef?.current?.addEventListener("scroll", setScrollTopValue);
472
- }
473
- return () => {
474
- dropdownListRef?.current?.removeEventListener("scroll", setScrollTopValue);
165
+ // decorator
166
+ const getDepends = (getDependsTrigger)=>{
167
+ const newOnChange = (e)=>{
168
+ if (e.value === "open_modal") {
169
+ onChange("open_modal");
170
+ } else {
171
+ onChangeHandler(e);
172
+ }
173
+ };
174
+ // add pseudo option
175
+ const newOptions = [
176
+ {
177
+ label: `New ${entity}`,
178
+ value: "open_modal",
179
+ className: "dropdown__list-item--modal"
180
+ },
181
+ ...filteredOptions
182
+ ];
183
+ return {
184
+ onChange: (changeItem)=>{
185
+ return getDependsTrigger ? newOnChange(changeItem) : onChangeHandler(changeItem);
186
+ },
187
+ options: getDependsTrigger ? newOptions : options
188
+ };
475
189
  };
476
- }, [isOpen, isMobile, dropdownListRef?.current]);
477
- (0, _react.useEffect)(() => {
478
- if (dropdownListRef?.current) {
479
- setScrollHeight(parseInt(dropdownListRef?.current?.scrollHeight - dropdownListRef?.current?.clientHeight, 10));
480
- }
481
- }, [scrollTop, dropdownListRef?.current]);
482
- (0, _react.useEffect)(() => {
483
- return () => {
484
- getListContainer()?.remove();
485
- getListContainerWrapper()?.remove();
190
+ const handleClickOutside = (event)=>{
191
+ var _getListContainer;
192
+ if (!((_getListContainer = getListContainer()) === null || _getListContainer === void 0 ? void 0 : _getListContainer.contains(event === null || event === void 0 ? void 0 : event.target)) && !(dropdownRef === null || dropdownRef === void 0 ? void 0 : dropdownRef.current.contains(event === null || event === void 0 ? void 0 : event.target))) {
193
+ setIsOpen(false);
194
+ }
486
195
  };
487
- }, []);
488
- const postfixText = selectedLabel && filteredOptions.find(option => option.value === value)?.postfix || null;
489
- return /*#__PURE__*/_react.default.createElement("div", {
490
- className: (0, _classnames.default)(RC, className, {
491
- disabled,
492
- [`${RC}-mobile`]: isMobile,
493
- [`${RC}--focused`]: isOpen && !isMobile,
494
- [`${RC}--with-custom-trigger`]: Boolean(customTrigger)
495
- }),
496
- ref: dropdownRef,
497
- onKeyDown: onKeyDown,
498
- onKeyUp: onKeyUp
499
- }, /*#__PURE__*/_react.default.createElement("button", {
500
- "data-testid": testId,
501
- className: (0, _classnames.default)(`${RC}__trigger`, "input__wrap", {
502
- [`${RC}__trigger--with-actions`]: withActions,
503
- placeholder: !value,
504
- error: error
505
- }),
506
- onClick: () => setIsOpen(true),
507
- onKeyDown: onKeyDown,
508
- onKeyUp: onKeyUp,
509
- tabIndex: tabIndex?.toString?.()
510
- }, customTrigger || /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, isSearchable && !isMobile ? /*#__PURE__*/_react.default.createElement("input", (0, _extends2.default)({
511
- ref: searchInputRef,
512
- className: `${RC}__input`,
513
- value: isOpen ? searchValue ?? "" : selectedLabel || "",
514
- onChange: e => onSearchHandler(e.target.value),
515
- placeholder: placeholder,
516
- onFocus: () => setIsSearchInputFocused(true),
517
- onBlur: () => setIsSearchInputFocused(false),
518
- onMouseDown: () => {
519
- if (!isOpen) {
520
- setIsSearchInputFocused(true);
521
- }
522
- }
523
- }, attributesOfNativeInput, {
524
- tabIndex: -1
525
- })) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("span", {
526
- className: "text"
527
- }, selectedLabel || placeholder), postfixText && /*#__PURE__*/_react.default.createElement("span", {
528
- className: "dropdown__list-item-postfix"
529
- }, postfixText)), /*#__PURE__*/_react.default.createElement("span", {
530
- className: (0, _classnames.default)(`${RC}__arrow`, {
531
- [`${RC}__arrow_active`]: isOpen
532
- }),
533
- onClick: toggleList
534
- }, isMobile ? /*#__PURE__*/_react.default.createElement(_reactFeather.Code, {
535
- className: "mobile-icon"
536
- }) : isOpen ? /*#__PURE__*/_react.default.createElement(_reactFeather.ChevronUp, null) : /*#__PURE__*/_react.default.createElement(_reactFeather.ChevronDown, null)))), withActions && /*#__PURE__*/_react.default.createElement("div", {
537
- className: (0, _classnames.default)(`${RC}__actions`)
538
- }, /*#__PURE__*/_react.default.createElement("div", {
539
- className: (0, _classnames.default)(`${RC}__actions-item`),
540
- onClick: onActionConfirmClick
541
- }, /*#__PURE__*/_react.default.createElement(_reactFeather.Check, null)), /*#__PURE__*/_react.default.createElement("div", {
542
- className: (0, _classnames.default)(`${RC}__actions-item`),
543
- onClick: onActionCancelClick
544
- }, /*#__PURE__*/_react.default.createElement(_reactFeather.X, null))), isOpen && renderListContainer());
196
+ const onSearchHandler = (name)=>{
197
+ let inputValue = name;
198
+ if (!isNotValidateASCII) inputValue = (0, _fieldValueFormatters.formatToOnlyASCIICodeText)(inputValue);
199
+ setIsSearchChanged(true);
200
+ setSearchValue(inputValue);
201
+ };
202
+ const onWrapperClick = (e)=>{
203
+ if (e.target === (wrapperRef === null || wrapperRef === void 0 ? void 0 : wrapperRef.current)) {
204
+ e.stopPropagation();
205
+ e.preventDefault();
206
+ setIsOpen(false);
207
+ }
208
+ };
209
+ const hightlightedText = (text, postfix, description)=>{
210
+ const prepare = (text)=>text === null || text === void 0 ? void 0 : text.replace(/[|\\{}()[\]^$+*?.]/g, "\\$&");
211
+ text = text.replace(/["&<>]/g, (a)=>{
212
+ return ({
213
+ '"': "&quot;",
214
+ "&": "&amp;",
215
+ "<": "&lt;",
216
+ ">": "&gt;"
217
+ })[a];
218
+ });
219
+ const main = isSearchable && searchValue ? text === null || text === void 0 ? void 0 : text.replace(new RegExp(prepare(searchValue), "i"), (match)=>`<span class="bg--yellow">${match}</span>`) : text;
220
+ const postfixPart = postfix ? `<span class="dropdown__list-item-postfix">${postfix}</span>` : "";
221
+ const descriptionPart = description ? `<span class="dropdown__list-item-description">${description}</span>` : "";
222
+ return main + postfixPart + descriptionPart;
223
+ };
224
+ const depend = getDepends(modalBtnTrigger);
225
+ const getMarkupForElement = (item, index, optTestId)=>{
226
+ var _item_value_toString, _item_value;
227
+ var _item_customMobileIcon;
228
+ return /*#__PURE__*/ (0, _jsxruntime.jsxs)("button", {
229
+ "data-testid": `${testId}-${optTestId}-option`,
230
+ onMouseDown: ()=>depend.onChange(item),
231
+ className: (0, _classnames.default)(`${RC}__list-item`, {
232
+ [`${RC}__list-item_active`]: item.value === value,
233
+ [`${RC}__list-item_disabled`]: item.disabled
234
+ }, item.className),
235
+ children: [
236
+ !isMobile && /*#__PURE__*/ (0, _jsxruntime.jsx)("span", {
237
+ className: (0, _classnames.default)(`${RC}__active-icon`, {
238
+ [`${RC}__active-icon_active`]: item.value === value
239
+ }),
240
+ children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactfeather.Check, {})
241
+ }),
242
+ /*#__PURE__*/ (0, _jsxruntime.jsx)("div", {
243
+ className: (0, _classnames.default)(`${RC}__list-item-label`, item.labelClassName || ""),
244
+ dangerouslySetInnerHTML: {
245
+ __html: hightlightedText(item.label, item.postfix, item.description)
246
+ }
247
+ }),
248
+ (item === null || item === void 0 ? void 0 : item.icon) || "",
249
+ isMobile ? (_item_customMobileIcon = item === null || item === void 0 ? void 0 : item.customMobileIcon) !== null && _item_customMobileIcon !== void 0 ? _item_customMobileIcon : /*#__PURE__*/ (0, _jsxruntime.jsx)(_RadioInput.default, {
250
+ value: item.value,
251
+ checked: value
252
+ }) : ""
253
+ ]
254
+ }, (_item_value = item.value) === null || _item_value === void 0 ? void 0 : (_item_value_toString = _item_value.toString()) === null || _item_value_toString === void 0 ? void 0 : _item_value_toString.replace(/ /g, "_"));
255
+ };
256
+ const filteredOptionList = (filteredOption)=>{
257
+ var _filteredOption_items, _filteredOption_label_toString, _filteredOption_label;
258
+ return ((_filteredOption_items = filteredOption.items) === null || _filteredOption_items === void 0 ? void 0 : _filteredOption_items.length) > 0 ? /*#__PURE__*/ (0, _jsxruntime.jsxs)("div", {
259
+ className: (0, _classnames.default)(`${RC}-group`, filteredOption.className),
260
+ children: [
261
+ /*#__PURE__*/ (0, _jsxruntime.jsx)("div", {
262
+ className: `${RC}-group__name`,
263
+ children: filteredOption.label
264
+ }),
265
+ filteredOption.items.map((el, index)=>getMarkupForElement(el, index, (el === null || el === void 0 ? void 0 : el.testId) || index))
266
+ ]
267
+ }, (_filteredOption_label = filteredOption.label) === null || _filteredOption_label === void 0 ? void 0 : (_filteredOption_label_toString = _filteredOption_label.toString()) === null || _filteredOption_label_toString === void 0 ? void 0 : _filteredOption_label_toString.replace(/ /g, "_").concat(Date.now())) : null;
268
+ };
269
+ const selectedLabel = ((_options_find = options.find((el)=>el.value === value)) === null || _options_find === void 0 ? void 0 : _options_find.label) || options.reduce((acc, item)=>{
270
+ var _item_items_find, _item_items;
271
+ return acc || ((_item_items = item.items) === null || _item_items === void 0 ? void 0 : (_item_items_find = _item_items.find((el)=>el.value === value)) === null || _item_items_find === void 0 ? void 0 : _item_items_find.label);
272
+ }, null);
273
+ const doScrollCallback = (0, _react.useCallback)((e)=>{
274
+ const { callback, isWithAnyScrolling, scrollingInaccuracy = 0 } = scrollReactionObj || {};
275
+ if (callback && typeof callback === "function") {
276
+ if (isWithAnyScrolling) callback(e);
277
+ else if (Math.round(e.target.clientHeight + e.target.scrollTop + scrollingInaccuracy) >= e.target.scrollHeight) {
278
+ callback(e);
279
+ }
280
+ }
281
+ }, [
282
+ filteredOptions
283
+ ]);
284
+ const getParentNode = ()=>{
285
+ if (isDoNotPullOutListOfMainContainer) return dropdownRef.current;
286
+ var _document_querySelector, _ref;
287
+ 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");
288
+ };
289
+ const initListContainer = ()=>{
290
+ const dropdownList = document.createElement("div");
291
+ dropdownList.setAttribute("id", dropdownId);
292
+ dropdownList.classList.add("dropdown__container");
293
+ if (isMobile) {
294
+ dropdownList.addEventListener("click", (e)=>{
295
+ if (e.target.id === dropdownId) setIsOpen(false);
296
+ });
297
+ }
298
+ try {
299
+ var _getListContainer;
300
+ (_getListContainer = getListContainer()) === null || _getListContainer === void 0 ? void 0 : _getListContainer.remove();
301
+ } finally{
302
+ if (isMobile) {
303
+ var _getParentNode;
304
+ try {
305
+ var _document_getElementById;
306
+ (_document_getElementById = document.getElementById(`mlw-${dropdownId}`)) === null || _document_getElementById === void 0 ? void 0 : _document_getElementById.remove();
307
+ } catch (e) {}
308
+ const dropdownMobileListWrapper = document.createElement("div");
309
+ dropdownMobileListWrapper.classList.add("dropdown-mobile");
310
+ dropdownMobileListWrapper.setAttribute("id", `mlw-${dropdownId}`);
311
+ dropdownMobileListWrapper === null || dropdownMobileListWrapper === void 0 ? void 0 : dropdownMobileListWrapper.append(dropdownList);
312
+ (_getParentNode = getParentNode()) === null || _getParentNode === void 0 ? void 0 : _getParentNode.append(dropdownMobileListWrapper);
313
+ } else {
314
+ var _getParentNode1;
315
+ (_getParentNode1 = getParentNode()) === null || _getParentNode1 === void 0 ? void 0 : _getParentNode1.append(dropdownList);
316
+ }
317
+ }
318
+ };
319
+ const getListContainer = ()=>{
320
+ return document.getElementById(dropdownId);
321
+ };
322
+ const getListContainerWrapper = ()=>{
323
+ return document.getElementById(`mlw-${dropdownId}`);
324
+ };
325
+ const setListContainerStyles = ()=>{
326
+ var _dropdownListWrapperRef_current, _getComputedStyle_marginTop, _getComputedStyle, _getComputedStyle_maxHeight, _getComputedStyle1, _sw_getBoundingClientRect, _dropdownListWrapperRef_current_getBoundingClientRect, _dropdownListWrapperRef_current1, _lh_getBoundingClientRect, _getComputedStyle_height, _getComputedStyle2;
327
+ const lc = getListContainer();
328
+ if (!lc || !isOpen) return false;
329
+ const windowHeight = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
330
+ var _dropdownRef_current_getBoundingClientRect;
331
+ const { width, height, left, top } = (_dropdownRef_current_getBoundingClientRect = dropdownRef === null || dropdownRef === void 0 ? void 0 : dropdownRef.current.getBoundingClientRect()) !== null && _dropdownRef_current_getBoundingClientRect !== void 0 ? _dropdownRef_current_getBoundingClientRect : {};
332
+ const sw = lc.getElementsByClassName("dropdown__list")[0];
333
+ const lh = dropdownListWrapperRef === null || dropdownListWrapperRef === void 0 ? void 0 : (_dropdownListWrapperRef_current = dropdownListWrapperRef.current) === null || _dropdownListWrapperRef_current === void 0 ? void 0 : _dropdownListWrapperRef_current.getElementsByClassName("dropdown__list-header")[0];
334
+ var _getComputedStyle_marginTop_replace;
335
+ const margin = parseInt((_getComputedStyle_marginTop_replace = (_getComputedStyle = getComputedStyle(dropdownListWrapperRef === null || dropdownListWrapperRef === void 0 ? void 0 : dropdownListWrapperRef.current)) === 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);
336
+ var _getComputedStyle_maxHeight_replace;
337
+ const maxHeight = initListHeight !== null && initListHeight !== void 0 ? initListHeight : parseInt((_getComputedStyle_maxHeight_replace = (_getComputedStyle1 = getComputedStyle(sw)) === null || _getComputedStyle1 === void 0 ? void 0 : (_getComputedStyle_maxHeight = _getComputedStyle1.maxHeight) === null || _getComputedStyle_maxHeight === void 0 ? void 0 : _getComputedStyle_maxHeight.replace("px", "")) !== null && _getComputedStyle_maxHeight_replace !== void 0 ? _getComputedStyle_maxHeight_replace : 0, 10);
338
+ if (initListHeight === null) setInitListHeight(maxHeight);
339
+ const toTop = top - margin;
340
+ const toBottom = windowHeight - top - height - margin * 2;
341
+ const swHeight = sw === null || sw === void 0 ? void 0 : (_sw_getBoundingClientRect = sw.getBoundingClientRect()) === null || _sw_getBoundingClientRect === void 0 ? void 0 : _sw_getBoundingClientRect.height;
342
+ const maxSwHeight = isMobile ? (dropdownListWrapperRef === null || dropdownListWrapperRef === void 0 ? void 0 : (_dropdownListWrapperRef_current1 = dropdownListWrapperRef.current) === null || _dropdownListWrapperRef_current1 === void 0 ? void 0 : (_dropdownListWrapperRef_current_getBoundingClientRect = _dropdownListWrapperRef_current1.getBoundingClientRect()) === null || _dropdownListWrapperRef_current_getBoundingClientRect === void 0 ? void 0 : _dropdownListWrapperRef_current_getBoundingClientRect.height) - (lh === null || lh === void 0 ? void 0 : (_lh_getBoundingClientRect = lh.getBoundingClientRect()) === null || _lh_getBoundingClientRect === void 0 ? void 0 : _lh_getBoundingClientRect.height) : toTop >= maxHeight || toBottom >= maxHeight ? maxHeight - 3 * margin : toTop > toBottom ? toTop - 3 * margin : toBottom - 4 * margin;
343
+ const listPos = toTop < toBottom || toBottom >= swHeight ? "bottom" : "top";
344
+ lc.style.minWidth = `${width}px`;
345
+ lc.style.left = `${left}px`;
346
+ var _getComputedStyle_height_replace;
347
+ lc.style.top = `${listPos === "bottom" ? top + height : top - margin * 3 - parseInt((_getComputedStyle_height_replace = (_getComputedStyle2 = getComputedStyle(dropdownListWrapperRef === null || dropdownListWrapperRef === void 0 ? void 0 : dropdownListWrapperRef.current)) === null || _getComputedStyle2 === void 0 ? void 0 : (_getComputedStyle_height = _getComputedStyle2.height) === null || _getComputedStyle_height === void 0 ? void 0 : _getComputedStyle_height.replace("px", "")) !== null && _getComputedStyle_height_replace !== void 0 ? _getComputedStyle_height_replace : 0, 10)}px`;
348
+ sw.style.maxHeight = `${maxSwHeight}px`;
349
+ };
350
+ const renderListContainer = ()=>{
351
+ const lc = getListContainer();
352
+ if (!lc) return null;
353
+ return /*#__PURE__*/ (0, _reactdom.createPortal)(getListMarkUp(), lc);
354
+ };
355
+ const getSortedOptions = (data)=>{
356
+ let newData = [
357
+ ...data
358
+ ];
359
+ if (sortAlphabetical) {
360
+ const openModalOption = newData.filter(({ value })=>value === "open_modal");
361
+ const emptyOption = newData.filter(({ value })=>value === "");
362
+ const restOfOptions = newData.filter(({ value })=>value !== "open_modal" && value !== "").sort(_utils.compareAlphabetical);
363
+ newData = [
364
+ ...openModalOption,
365
+ ...emptyOption,
366
+ ...restOfOptions
367
+ ].map((item)=>{
368
+ if (item === null || item === void 0 ? void 0 : item.items) {
369
+ item.items = [
370
+ ...item.items
371
+ ].sort(_utils.compareAlphabetical);
372
+ }
373
+ return item;
374
+ });
375
+ }
376
+ return newData;
377
+ };
378
+ const getListMarkUp = ()=>{
379
+ var _getSortedOptions;
380
+ return /*#__PURE__*/ (0, _jsxruntime.jsx)("div", {
381
+ className: (0, _classnames.default)(`${RC}__container-wrapper`),
382
+ ref: wrapperRef,
383
+ onClick: isMobile ? onWrapperClick : ()=>{},
384
+ children: /*#__PURE__*/ (0, _jsxruntime.jsxs)("div", {
385
+ className: (0, _classnames.default)(`${RC}__list-wrapper`, {
386
+ [`${RC}__list-wrapper--fixed-height`]: isFixedMaxHeight,
387
+ [`${RC}__list-wrapper--with-bottom-shadow`]: isScrollableList && isMobile,
388
+ [`${RC}__list-wrapper--with-bottom-shadow-hidden`]: scrollTop === scrollHeight
389
+ }),
390
+ ref: dropdownListWrapperRef,
391
+ children: [
392
+ isMobile && /*#__PURE__*/ (0, _jsxruntime.jsxs)("div", {
393
+ className: (0, _classnames.default)(`${RC}__list-header`, {
394
+ [`${RC}__list-header-with-shadow`]: isScrollableList && isMobile,
395
+ [`${RC}__list-header-with-shadow-hidden`]: scrollTop === 0
396
+ }),
397
+ children: [
398
+ /*#__PURE__*/ (0, _jsxruntime.jsxs)("div", {
399
+ className: (0, _classnames.default)(`${RC}__list-header-row`),
400
+ children: [
401
+ /*#__PURE__*/ (0, _jsxruntime.jsx)("div", {
402
+ className: (0, _classnames.default)(`${RC}__list-label`),
403
+ children: label
404
+ }),
405
+ /*#__PURE__*/ (0, _jsxruntime.jsx)("div", {
406
+ className: (0, _classnames.default)(`${RC}__list-close-icon`),
407
+ onClick: ()=>setIsOpen(false),
408
+ children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactfeather.X, {
409
+ onClick: ()=>setIsOpen(false)
410
+ })
411
+ })
412
+ ]
413
+ }),
414
+ isSearchable && /*#__PURE__*/ (0, _jsxruntime.jsx)("div", {
415
+ className: (0, _classnames.default)(`${RC}__list-header-row`),
416
+ children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_Input.default, {
417
+ ref: searchInputRef,
418
+ className: `${RC}__input`,
419
+ value: searchValue !== null && searchValue !== void 0 ? searchValue : selectedLabel,
420
+ onChange: (v)=>onSearchHandler(v),
421
+ placeholder: placeholder || "Search",
422
+ withDelete: true,
423
+ onFocus: ()=>setIsSearchInputFocused(true),
424
+ onBlur: ()=>setIsSearchInputFocused(false),
425
+ onMouseDown: ()=>{
426
+ if (!isOpen) {
427
+ setIsSearchInputFocused(true);
428
+ }
429
+ },
430
+ ...attributesOfNativeInput
431
+ })
432
+ })
433
+ ]
434
+ }),
435
+ /*#__PURE__*/ (0, _jsxruntime.jsxs)("div", {
436
+ className: (0, _classnames.default)(`${RC}__list`, {
437
+ [`${RC}__list-top`]: isListTop
438
+ }),
439
+ ref: dropdownListRef,
440
+ children: [
441
+ (_getSortedOptions = getSortedOptions(depend.options)) === null || _getSortedOptions === void 0 ? void 0 : _getSortedOptions.map((option)=>{
442
+ var _option_items, _option_label;
443
+ if (option === null || option === void 0 ? void 0 : (_option_items = option.items) === null || _option_items === void 0 ? void 0 : _option_items.length) {
444
+ if (!isSearchable || !isSearchChanged) {
445
+ return filteredOptionList(option);
446
+ } else {
447
+ var _option_items1;
448
+ const items = (_option_items1 = option.items) === null || _option_items1 === void 0 ? void 0 : _option_items1.slice().filter((el)=>{
449
+ var _el_label;
450
+ return (el === null || el === void 0 ? void 0 : (_el_label = el.label) === null || _el_label === void 0 ? void 0 : _el_label.toLowerCase().includes((searchValue === null || searchValue === void 0 ? void 0 : searchValue.toLowerCase()) || "")) || !(el === null || el === void 0 ? void 0 : el.value) || (el === null || el === void 0 ? void 0 : el.value) === "";
451
+ });
452
+ if (items === null || items === void 0 ? void 0 : items.length) return filteredOptionList({
453
+ ...option,
454
+ items
455
+ });
456
+ return null;
457
+ }
458
+ } else if (!isSearchable || !isSearchChanged || (option === null || option === void 0 ? void 0 : (_option_label = option.label) === null || _option_label === void 0 ? void 0 : _option_label.toLowerCase().includes((searchValue === null || searchValue === void 0 ? void 0 : searchValue.toLowerCase()) || "")) || !(option === null || option === void 0 ? void 0 : option.value) || (option === null || option === void 0 ? void 0 : option.value) === "") {
459
+ return getMarkupForElement(option);
460
+ }
461
+ }),
462
+ !filteredItems.length && !filteredGroups.length && /*#__PURE__*/ (0, _jsxruntime.jsx)("div", {
463
+ className: `${RC}__list-item ${RC}__list-item--no-options`,
464
+ children: noOptionsText
465
+ }),
466
+ disabled && isOpen && /*#__PURE__*/ (0, _jsxruntime.jsx)(_DropdownLoader.default, {})
467
+ ]
468
+ })
469
+ ]
470
+ })
471
+ });
472
+ };
473
+ const toggleList = (e)=>{
474
+ e === null || e === void 0 ? void 0 : e.stopPropagation();
475
+ setIsOpen((isOpen)=>{
476
+ return !isOpen;
477
+ });
478
+ };
479
+ const closeList = isOpen ? handleClickOutside : ()=>{};
480
+ (0, _react.useEffect)(()=>{
481
+ if (!isDoNotPullOutListOfMainContainer || dropdownRef.current) {
482
+ initListContainer();
483
+ if (isDefaultOpened && !isMobileProp) setIsOpen(true);
484
+ }
485
+ }, [
486
+ isDoNotPullOutListOfMainContainer,
487
+ dropdownRef.current
488
+ ]);
489
+ (0, _react.useLayoutEffect)(()=>{
490
+ var _getListContainer;
491
+ if (!isMobile) {
492
+ window.addEventListener("resize", setListContainerStyles);
493
+ window.addEventListener("mousewheel", closeList);
494
+ window.addEventListener("scroll", closeList);
495
+ window.addEventListener("touchmove", closeList);
496
+ } else {
497
+ window.removeEventListener("resize", setListContainerStyles);
498
+ window.removeEventListener("mousewheel", closeList);
499
+ window.removeEventListener("scroll", closeList);
500
+ window.removeEventListener("touchmove", closeList);
501
+ }
502
+ (_getListContainer = getListContainer()) === null || _getListContainer === void 0 ? void 0 : _getListContainer.addEventListener("click", closeList);
503
+ return ()=>{
504
+ var _getListContainer;
505
+ window.removeEventListener("resize", setListContainerStyles);
506
+ window.removeEventListener("mousewheel", closeList);
507
+ window.removeEventListener("scroll", closeList);
508
+ window.removeEventListener("touchmove", closeList);
509
+ (_getListContainer = getListContainer()) === null || _getListContainer === void 0 ? void 0 : _getListContainer.removeEventListener("click", closeList);
510
+ };
511
+ }, [
512
+ getListContainer
513
+ ]);
514
+ (0, _react.useLayoutEffect)(()=>{
515
+ setListContainerStyles();
516
+ }, [
517
+ isOpen,
518
+ searchValue,
519
+ isMobile,
520
+ options,
521
+ 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
522
+ ]);
523
+ (0, _react.useEffect)(()=>{
524
+ document.addEventListener("click", handleClickOutside, true);
525
+ return ()=>document.removeEventListener("click", handleClickOutside, true);
526
+ }, []);
527
+ (0, _react.useEffect)(()=>{
528
+ if (!isOpen) {
529
+ setIsSearchChanged(false);
530
+ }
531
+ if (scrollReactionObj && typeof scrollReactionObj === "object" && isOpen && dropdownListRef && dropdownListRef.current) {
532
+ dropdownListRef.current.addEventListener("scroll", doScrollCallback);
533
+ }
534
+ return ()=>{
535
+ if (scrollReactionObj && typeof scrollReactionObj === "object") removeEventListener("scroll", doScrollCallback);
536
+ };
537
+ }, [
538
+ isOpen,
539
+ dropdownListRef
540
+ ]);
541
+ (0, _react.useEffect)(()=>{
542
+ if (!searchValue && isSearchInputFocused) {
543
+ setSearchValue(selectedLabel);
544
+ setTimeout(()=>searchInputRef.current.select(), 1);
545
+ }
546
+ if (!isSearchInputFocused && !isOpen) {
547
+ setSearchValue(null);
548
+ }
549
+ }, [
550
+ isSearchInputFocused
551
+ ]);
552
+ (0, _react.useEffect)(()=>{
553
+ var _searchInputRef_current;
554
+ if (isOpen && !isSearchInputFocused && (searchInputRef === null || searchInputRef === void 0 ? void 0 : searchInputRef.current) && !isMobile) searchInputRef === null || searchInputRef === void 0 ? void 0 : (_searchInputRef_current = searchInputRef.current) === null || _searchInputRef_current === void 0 ? void 0 : _searchInputRef_current.focus();
555
+ if (isOpen) {
556
+ var _getListContainer;
557
+ (_getListContainer = getListContainer()) === null || _getListContainer === void 0 ? void 0 : _getListContainer.classList.add("dropdown__container--opened");
558
+ } else {
559
+ var _searchInputRef_current1, _getListContainer1;
560
+ searchInputRef === null || searchInputRef === void 0 ? void 0 : (_searchInputRef_current1 = searchInputRef.current) === null || _searchInputRef_current1 === void 0 ? void 0 : _searchInputRef_current1.blur();
561
+ (_getListContainer1 = getListContainer()) === null || _getListContainer1 === void 0 ? void 0 : _getListContainer1.classList.remove("dropdown__container--opened");
562
+ }
563
+ if (!isOpen && isMobile) {
564
+ setSearchValue(null);
565
+ }
566
+ }, [
567
+ isOpen
568
+ ]);
569
+ (0, _react.useEffect)(()=>{
570
+ if (isOpen && isMobile && (dropdownListRef === null || dropdownListRef === void 0 ? void 0 : dropdownListRef.current) && !searchValue) {
571
+ var _dropdownListRef_current, _dropdownListRef_current1, _dropdownListRef_current2, _dropdownListRef_current3;
572
+ setIsScrollableList((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));
573
+ setIsFixedMaxHeight(isScrollableList || (dropdownListRef === null || dropdownListRef === void 0 ? void 0 : (_dropdownListRef_current2 = dropdownListRef.current) === null || _dropdownListRef_current2 === void 0 ? void 0 : _dropdownListRef_current2.scrollHeight) > (dropdownListRef === null || dropdownListRef === void 0 ? void 0 : (_dropdownListRef_current3 = dropdownListRef.current) === null || _dropdownListRef_current3 === void 0 ? void 0 : _dropdownListRef_current3.clientHeight));
574
+ }
575
+ }, [
576
+ isOpen,
577
+ isMobile,
578
+ isScrollableList,
579
+ dropdownListRef === null || dropdownListRef === void 0 ? void 0 : dropdownListRef.current,
580
+ dropdownListRef === null || dropdownListRef === void 0 ? void 0 : (_dropdownListRef_current = dropdownListRef.current) === null || _dropdownListRef_current === void 0 ? void 0 : _dropdownListRef_current.scrollHeight,
581
+ dropdownListRef === null || dropdownListRef === void 0 ? void 0 : (_dropdownListRef_current1 = dropdownListRef.current) === null || _dropdownListRef_current1 === void 0 ? void 0 : _dropdownListRef_current1.clientHeight
582
+ ]);
583
+ (0, _react.useEffect)(()=>{
584
+ const setScrollTopValue = (e)=>{
585
+ setScrollTop(parseInt(e.target.scrollTop, 10));
586
+ };
587
+ if (isOpen && isMobile && (dropdownListRef === null || dropdownListRef === void 0 ? void 0 : dropdownListRef.current)) {
588
+ var _dropdownListRef_current;
589
+ dropdownListRef === null || dropdownListRef === void 0 ? void 0 : (_dropdownListRef_current = dropdownListRef.current) === null || _dropdownListRef_current === void 0 ? void 0 : _dropdownListRef_current.addEventListener("scroll", setScrollTopValue);
590
+ }
591
+ return ()=>{
592
+ var _dropdownListRef_current;
593
+ dropdownListRef === null || dropdownListRef === void 0 ? void 0 : (_dropdownListRef_current = dropdownListRef.current) === null || _dropdownListRef_current === void 0 ? void 0 : _dropdownListRef_current.removeEventListener("scroll", setScrollTopValue);
594
+ };
595
+ }, [
596
+ isOpen,
597
+ isMobile,
598
+ dropdownListRef === null || dropdownListRef === void 0 ? void 0 : dropdownListRef.current
599
+ ]);
600
+ (0, _react.useEffect)(()=>{
601
+ if (dropdownListRef === null || dropdownListRef === void 0 ? void 0 : dropdownListRef.current) {
602
+ var _dropdownListRef_current, _dropdownListRef_current1;
603
+ 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));
604
+ }
605
+ }, [
606
+ scrollTop,
607
+ dropdownListRef === null || dropdownListRef === void 0 ? void 0 : dropdownListRef.current
608
+ ]);
609
+ (0, _react.useEffect)(()=>{
610
+ return ()=>{
611
+ var _getListContainer, _getListContainerWrapper;
612
+ (_getListContainer = getListContainer()) === null || _getListContainer === void 0 ? void 0 : _getListContainer.remove();
613
+ (_getListContainerWrapper = getListContainerWrapper()) === null || _getListContainerWrapper === void 0 ? void 0 : _getListContainerWrapper.remove();
614
+ };
615
+ }, []);
616
+ const postfixText = selectedLabel && ((_filteredOptions_find = filteredOptions.find((option)=>option.value === value)) === null || _filteredOptions_find === void 0 ? void 0 : _filteredOptions_find.postfix) || null;
617
+ return /*#__PURE__*/ (0, _jsxruntime.jsxs)("div", {
618
+ className: (0, _classnames.default)(RC, className, {
619
+ disabled,
620
+ [`${RC}-mobile`]: isMobile,
621
+ [`${RC}--focused`]: isOpen && !isMobile,
622
+ [`${RC}--with-custom-trigger`]: Boolean(customTrigger)
623
+ }),
624
+ ref: dropdownRef,
625
+ onKeyDown: onKeyDown,
626
+ onKeyUp: onKeyUp,
627
+ children: [
628
+ /*#__PURE__*/ (0, _jsxruntime.jsx)("button", {
629
+ "data-testid": testId,
630
+ className: (0, _classnames.default)(`${RC}__trigger`, "input__wrap", {
631
+ [`${RC}__trigger--with-actions`]: withActions,
632
+ placeholder: !value,
633
+ error: error
634
+ }),
635
+ onClick: ()=>setIsOpen(true),
636
+ onKeyDown: onKeyDown,
637
+ onKeyUp: onKeyUp,
638
+ tabIndex: tabIndex === null || tabIndex === void 0 ? void 0 : (_tabIndex_toString = tabIndex.toString) === null || _tabIndex_toString === void 0 ? void 0 : _tabIndex_toString.call(tabIndex),
639
+ children: customTrigger || /*#__PURE__*/ (0, _jsxruntime.jsxs)(_jsxruntime.Fragment, {
640
+ children: [
641
+ isSearchable && !isMobile ? /*#__PURE__*/ (0, _jsxruntime.jsx)("input", {
642
+ ref: searchInputRef,
643
+ className: `${RC}__input`,
644
+ value: isOpen ? searchValue !== null && searchValue !== void 0 ? searchValue : "" : selectedLabel || "",
645
+ onChange: (e)=>onSearchHandler(e.target.value),
646
+ placeholder: placeholder,
647
+ onFocus: ()=>setIsSearchInputFocused(true),
648
+ onBlur: ()=>setIsSearchInputFocused(false),
649
+ onMouseDown: ()=>{
650
+ if (!isOpen) {
651
+ setIsSearchInputFocused(true);
652
+ }
653
+ },
654
+ ...attributesOfNativeInput,
655
+ tabIndex: -1
656
+ }) : /*#__PURE__*/ (0, _jsxruntime.jsxs)(_jsxruntime.Fragment, {
657
+ children: [
658
+ /*#__PURE__*/ (0, _jsxruntime.jsx)("span", {
659
+ className: "text",
660
+ children: selectedLabel || placeholder
661
+ }),
662
+ postfixText && /*#__PURE__*/ (0, _jsxruntime.jsx)("span", {
663
+ className: "dropdown__list-item-postfix",
664
+ children: postfixText
665
+ })
666
+ ]
667
+ }),
668
+ /*#__PURE__*/ (0, _jsxruntime.jsx)("span", {
669
+ className: (0, _classnames.default)(`${RC}__arrow`, {
670
+ [`${RC}__arrow_active`]: isOpen
671
+ }),
672
+ onClick: toggleList,
673
+ children: isMobile ? /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactfeather.Code, {
674
+ className: "mobile-icon"
675
+ }) : isOpen ? /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactfeather.ChevronUp, {}) : /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactfeather.ChevronDown, {})
676
+ })
677
+ ]
678
+ })
679
+ }),
680
+ withActions && /*#__PURE__*/ (0, _jsxruntime.jsxs)("div", {
681
+ className: (0, _classnames.default)(`${RC}__actions`),
682
+ children: [
683
+ /*#__PURE__*/ (0, _jsxruntime.jsx)("div", {
684
+ className: (0, _classnames.default)(`${RC}__actions-item`),
685
+ onClick: onActionConfirmClick,
686
+ children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactfeather.Check, {})
687
+ }),
688
+ /*#__PURE__*/ (0, _jsxruntime.jsx)("div", {
689
+ className: (0, _classnames.default)(`${RC}__actions-item`),
690
+ onClick: onActionCancelClick,
691
+ children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactfeather.X, {})
692
+ })
693
+ ]
694
+ }),
695
+ isOpen && renderListContainer()
696
+ ]
697
+ });
545
698
  };
546
- var _default = exports.default = Dropdown;
699
+ const _default = Dropdown;