intelicoreact 1.5.33 → 1.5.35

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 (520) 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 +25 -15
  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 +46 -41
  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 -571
  33. package/dist/Atomic/FormElements/Dropdown/Dropdown.scss +61 -59
  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 -397
  37. package/dist/Atomic/FormElements/DropdownLiveSearch/DropdownLiveSearch.scss +36 -32
  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 -143
  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 -159
  51. package/dist/Atomic/FormElements/FileLoaderLocalGroup/FileLoaderLocalGroup.stories.js +84 -0
  52. package/dist/Atomic/FormElements/FormattedRawSSN/FormattedRawSSN.js +158 -117
  53. package/dist/Atomic/FormElements/FormattedRawSSN/FormattedRawSSN.stories.js +107 -0
  54. package/dist/Atomic/FormElements/FormattedRawSSN/FormattedRawSSN_old.js +151 -98
  55. package/dist/Atomic/FormElements/Input/Input.js +340 -337
  56. package/dist/Atomic/FormElements/Input/Input.scss +1 -1
  57. package/dist/Atomic/FormElements/Input/Input.stories.js +251 -0
  58. package/dist/Atomic/FormElements/InputCalendar/InputCalendar.js +156 -112
  59. package/dist/Atomic/FormElements/InputCalendar/InputCalendar.stories.js +115 -0
  60. package/dist/Atomic/FormElements/InputColor/InputColor.js +57 -58
  61. package/dist/Atomic/FormElements/InputColor/InputColor.stories.js +119 -0
  62. package/dist/Atomic/FormElements/InputCurrency/InputCurrency.interface.js +4 -0
  63. package/dist/Atomic/FormElements/InputCurrency/InputCurrency.js +189 -125
  64. package/dist/Atomic/FormElements/InputCurrency/InputCurrency.stories.js +178 -0
  65. package/dist/Atomic/FormElements/InputCurrency/InputCurrency.test.js +129 -0
  66. package/dist/Atomic/FormElements/InputCurrency/index.js +16 -0
  67. package/dist/Atomic/FormElements/InputDateRange/InputDateRange.js +294 -233
  68. package/dist/Atomic/FormElements/InputDateRange/InputDateRange.scss +1 -2
  69. package/dist/Atomic/FormElements/InputDateRange/InputDateRange.stories.js +123 -0
  70. package/dist/Atomic/FormElements/InputDateRange/components/DateInput.js +55 -56
  71. package/dist/Atomic/FormElements/InputDateRange/components/Datepicker.js +645 -545
  72. package/dist/Atomic/FormElements/InputDateRange/components/OpenedPart.js +220 -193
  73. package/dist/Atomic/FormElements/InputDateRange/components/SelectItem.js +33 -31
  74. package/dist/Atomic/FormElements/InputDateRange/dependencies.js +247 -172
  75. package/dist/Atomic/FormElements/InputLink/InputLink.js +118 -73
  76. package/dist/Atomic/FormElements/InputLink/InputLink.stories.js +140 -0
  77. package/dist/Atomic/FormElements/InputMask/InputCarretPosition.js +47 -38
  78. package/dist/Atomic/FormElements/InputMask/InputMask.js +947 -1061
  79. package/dist/Atomic/FormElements/InputMask/InputMask.stories.js +303 -0
  80. package/dist/Atomic/FormElements/InputMask/config.js +16 -15
  81. package/dist/Atomic/FormElements/InputMask/functions.js +77 -52
  82. package/dist/Atomic/FormElements/InputMask2/InputMask2.js +573 -600
  83. package/dist/Atomic/FormElements/InputMask2/InputMask2.stories.js +314 -0
  84. package/dist/Atomic/FormElements/InputMask2/config.js +16 -15
  85. package/dist/Atomic/FormElements/InputMask2/functions.js +77 -52
  86. package/dist/Atomic/FormElements/InputMask3/InputMask3.js +655 -691
  87. package/dist/Atomic/FormElements/InputMask3/InputMask3.stories.js +335 -0
  88. package/dist/Atomic/FormElements/InputMask3/config.js +16 -15
  89. package/dist/Atomic/FormElements/InputMask3/functions.js +77 -52
  90. package/dist/Atomic/FormElements/InputWithAction/InputWithAction.js +127 -88
  91. package/dist/Atomic/FormElements/InputWithAction/InputWithAction.scss +1 -1
  92. package/dist/Atomic/FormElements/InputWithAction/InputWithAction.stories.js +276 -0
  93. package/dist/Atomic/FormElements/InputsRow/InputsRow.js +182 -111
  94. package/dist/Atomic/FormElements/InputsRow/InputsRow.stories.js +56 -0
  95. package/dist/Atomic/FormElements/Label/Label.interface.js +4 -0
  96. package/dist/Atomic/FormElements/Label/Label.js +82 -55
  97. package/dist/Atomic/FormElements/Label/Label.scss +18 -8
  98. package/dist/Atomic/FormElements/Label/Label.stories.js +47 -0
  99. package/dist/Atomic/FormElements/Label/Label.test.js +167 -0
  100. package/dist/Atomic/FormElements/Label/index.js +17 -0
  101. package/dist/Atomic/FormElements/MobileCalendar/MobileCalendar.js +437 -388
  102. package/dist/Atomic/FormElements/MobileCalendar/MobileCalendar.scss +3 -3
  103. package/dist/Atomic/FormElements/MobileCalendar/MobileCalendar.stories.js +172 -0
  104. package/dist/Atomic/FormElements/MultiSelect/MultiSelect.js +88 -50
  105. package/dist/Atomic/FormElements/MultiSelect/MultiSelect.stories.js +121 -0
  106. package/dist/Atomic/FormElements/NumericInput/NumericInput.js +314 -270
  107. package/dist/Atomic/FormElements/NumericInput/NumericInput.scss +1 -1
  108. package/dist/Atomic/FormElements/NumericInput/NumericInput.stories.js +184 -0
  109. package/dist/Atomic/FormElements/RadioGroup/RadioGroup.js +93 -51
  110. package/dist/Atomic/FormElements/RadioGroup/RadioGroup.stories.js +79 -0
  111. package/dist/Atomic/FormElements/RadioGroupWithInput/RadioGroupWithInput.js +69 -55
  112. package/dist/Atomic/FormElements/RadioGroupWithInput/RadioGroupWithInput.stories.js +151 -0
  113. package/dist/Atomic/FormElements/RadioInput/RadioInput.js +51 -45
  114. package/dist/Atomic/FormElements/RadioInput/RadioInput.scss +4 -4
  115. package/dist/Atomic/FormElements/RadioInput/RadioInput.stories.js +67 -0
  116. package/dist/Atomic/FormElements/RadioRowSwitcher/RadioRowSwitcher.js +53 -40
  117. package/dist/Atomic/FormElements/RadioRowSwitcher/RadioRowSwitcher.stories.js +116 -0
  118. package/dist/Atomic/FormElements/RangeCalendar/RangeCalendar.js +169 -120
  119. package/dist/Atomic/FormElements/RangeCalendar/RangeCalendar.stories.js +107 -0
  120. package/dist/Atomic/FormElements/RangeInputs/RangeInputs.js +195 -144
  121. package/dist/Atomic/FormElements/RangeInputs/RangeInputs.stories.js +92 -0
  122. package/dist/Atomic/FormElements/RangeList/RangeList.js +199 -141
  123. package/dist/Atomic/FormElements/RangeList/RangeList.scss +2 -2
  124. package/dist/Atomic/FormElements/RangeList/RangeList.stories.js +169 -0
  125. package/dist/Atomic/FormElements/RangeList/partial/AnyOuterClass.scss +1 -4
  126. package/dist/Atomic/FormElements/RangeList/partial/RangeListRow.js +57 -44
  127. package/dist/Atomic/FormElements/RangeSlider/RangeSlider.js +463 -381
  128. package/dist/Atomic/FormElements/RangeSlider/RangeSlider.scss +1 -1
  129. package/dist/Atomic/FormElements/RangeSlider/RangeSlider.stories.js +401 -0
  130. package/dist/Atomic/FormElements/RangeSlider2/RangeSlider2.js +760 -770
  131. package/dist/Atomic/FormElements/RangeSlider2/RangeSlider2.scss +9 -9
  132. package/dist/Atomic/FormElements/RangeSlider2/RangeSlider2.stories.js +314 -0
  133. package/dist/Atomic/FormElements/SwitchableRow/SwitchableRow.js +36 -31
  134. package/dist/Atomic/FormElements/SwitchableRow/SwitchableRow.scss +0 -2
  135. package/dist/Atomic/FormElements/SwitchableRow/SwitchableRow.stories.js +137 -0
  136. package/dist/Atomic/FormElements/SwitchableRow/partial/AnyOuterClass.scss +1 -1
  137. package/dist/Atomic/FormElements/Switcher/Switcher.js +52 -44
  138. package/dist/Atomic/FormElements/Switcher/Switcher.scss +3 -3
  139. package/dist/Atomic/FormElements/Switcher/Switcher.stories.js +91 -0
  140. package/dist/Atomic/FormElements/SwitcherCheckbox/SwitcherCheckbox.js +43 -44
  141. package/dist/Atomic/FormElements/SwitcherCheckbox/SwitcherCheckbox.scss +0 -2
  142. package/dist/Atomic/FormElements/SwitcherCheckbox/SwitcherCheckbox.stories.js +104 -0
  143. package/dist/Atomic/FormElements/SwitcherHide/SwitcherHide.js +37 -36
  144. package/dist/Atomic/FormElements/SwitcherHide/SwitcherHide.scss +0 -2
  145. package/dist/Atomic/FormElements/SwitcherHide/SwitcherHide.stories.js +96 -0
  146. package/dist/Atomic/FormElements/SwitcherRadio/SwitcherRadio.js +93 -57
  147. package/dist/Atomic/FormElements/SwitcherRadio/SwitcherRadio.scss +0 -2
  148. package/dist/Atomic/FormElements/SwitcherRadio/SwitcherRadio.stories.js +140 -0
  149. package/dist/Atomic/FormElements/SwitcherRange/SwitcherRange.js +86 -53
  150. package/dist/Atomic/FormElements/SwitcherRange/SwitcherRange.scss +0 -2
  151. package/dist/Atomic/FormElements/SwitcherRange/SwitcherRange.stories.js +112 -0
  152. package/dist/Atomic/FormElements/SwitcherRangeList/SwitcherRangeList.js +46 -54
  153. package/dist/Atomic/FormElements/SwitcherRangeList/SwitcherRangeList.stories.js +145 -0
  154. package/dist/Atomic/FormElements/SwitcherRangeList/partial/AnyOuterClass.scss +1 -1
  155. package/dist/Atomic/FormElements/SwitcherTagsDropdown/SwitcherTagsDropdown.js +172 -109
  156. package/dist/Atomic/FormElements/SwitcherTagsDropdown/SwitcherTagsDropdown.scss +4 -6
  157. package/dist/Atomic/FormElements/SwitcherTagsDropdown/SwitcherTagsDropdown.stories.js +158 -0
  158. package/dist/Atomic/FormElements/SwitcherTagsDropdown/partial/States.js +209 -154
  159. package/dist/Atomic/FormElements/SwitcherTextarea/SwitcherTextarea.js +59 -56
  160. package/dist/Atomic/FormElements/SwitcherTextarea/SwitcherTextarea.scss +2 -2
  161. package/dist/Atomic/FormElements/SwitcherTextarea/SwitcherTextarea.stories.js +101 -0
  162. package/dist/Atomic/FormElements/TagListToDropdown/TagListToDropdown.js +140 -113
  163. package/dist/Atomic/FormElements/TagListToDropdown/TagListToDropdown.stories.js +131 -0
  164. package/dist/Atomic/FormElements/TagsDropdown/TagsDropdown.js +1035 -962
  165. package/dist/Atomic/FormElements/TagsDropdown/TagsDropdown.scss +155 -119
  166. package/dist/Atomic/FormElements/TagsDropdown/TagsDropdown.stories.js +357 -0
  167. package/dist/Atomic/FormElements/Text/Text.js +88 -97
  168. package/dist/Atomic/FormElements/Text/Text.stories.js +80 -0
  169. package/dist/Atomic/FormElements/TextSwitcher/TextSwitcher.js +44 -35
  170. package/dist/Atomic/FormElements/TextSwitcher/TextSwitcher.scss +8 -8
  171. package/dist/Atomic/FormElements/TextSwitcher/TextSwitcher.stories.js +106 -0
  172. package/dist/Atomic/FormElements/TextSwitcher/TextSwitcher.test.js +93 -0
  173. package/dist/Atomic/FormElements/Textarea/Textarea.js +102 -64
  174. package/dist/Atomic/FormElements/Textarea/Textarea.scss +4 -8
  175. package/dist/Atomic/FormElements/Textarea/Textarea.stories.js +103 -0
  176. package/dist/Atomic/FormElements/TieredCheckboxes/TieredCheckboxes.js +172 -136
  177. package/dist/Atomic/FormElements/TieredCheckboxes/TieredCheckboxes.stories.js +174 -0
  178. package/dist/Atomic/FormElements/TieredCheckboxes/partial/AccordionWithCheckbox.js +48 -50
  179. package/dist/Atomic/FormElements/TimeRange/TimeRange.interface.js +4 -0
  180. package/dist/Atomic/FormElements/TimeRange/TimeRange.js +114 -63
  181. package/dist/Atomic/FormElements/TimeRange/TimeRange.scss +9 -3
  182. package/dist/Atomic/FormElements/TimeRange/TimeRange.stories.js +40 -0
  183. package/dist/Atomic/FormElements/TimeRange/TimeRange.test.js +163 -0
  184. package/dist/Atomic/FormElements/TimeRange/index.js +17 -0
  185. package/dist/Atomic/FormElements/UserContacts/UserContact.test.js +381 -0
  186. package/dist/Atomic/FormElements/UserContacts/UserContacts.interface.js +4 -0
  187. package/dist/Atomic/FormElements/UserContacts/UserContacts.js +179 -123
  188. package/dist/Atomic/FormElements/UserContacts/UserContacts.scss +10 -5
  189. package/dist/Atomic/FormElements/UserContacts/UserContacts.stories.js +74 -0
  190. package/dist/Atomic/FormElements/UserContacts/index.js +17 -0
  191. package/dist/Atomic/FormElements/UserContacts/partial/AnyOuterClass.scss +1 -1
  192. package/dist/Atomic/FormElements/VariantsListRadio/VariantsListRadio.js +101 -65
  193. package/dist/Atomic/FormElements/VariantsListRadio/VariantsListRadio.scss +4 -12
  194. package/dist/Atomic/FormElements/VariantsListRadio/VariantsListRadio.stories.js +193 -0
  195. package/dist/Atomic/FormElements/VariantsListRadio/partials/VariantsListRadioItem.js +80 -71
  196. package/dist/Atomic/FormElements/WidgetPseudoTable/WidgetPseudoTable.js +79 -64
  197. package/dist/Atomic/FormElements/WidgetPseudoTable/WidgetPseudoTable.scss +1 -3
  198. package/dist/Atomic/FormElements/WidgetPseudoTable/WidgetPseudoTable.stories.js +147 -0
  199. package/dist/Atomic/FormElements/WidgetPseudoTable/partial/AnyOuterClass.scss +1 -1
  200. package/dist/Atomic/FormElements/WidgetPseudoTable/partial/constructor.js +42 -34
  201. package/dist/Atomic/FormElements/WidgetWithSwitchableRows/WidgetWithSwitchableRows.js +102 -83
  202. package/dist/Atomic/FormElements/WidgetWithSwitchableRows/WidgetWithSwitchableRows.scss +1 -3
  203. package/dist/Atomic/FormElements/WidgetWithSwitchableRows/WidgetWithSwitchableRows.stories.js +151 -0
  204. package/dist/Atomic/FormElements/WidgetWithSwitchableRows/partial/AnyOuterClass.scss +1 -1
  205. package/dist/Atomic/FormElements/WidgetWithSwitchableRows/partial/constructor.js +42 -35
  206. package/dist/Atomic/Layout/Header/Header.js +148 -80
  207. package/dist/Atomic/Layout/Header/Header.scss +1 -1
  208. package/dist/Atomic/Layout/Header/Header.stories.js +71 -0
  209. package/dist/Atomic/Layout/MainMenu/MainMenu.js +213 -133
  210. package/dist/Atomic/Layout/MainMenu/MainMenu.scss +9 -9
  211. package/dist/Atomic/Layout/MainMenu/MainMenu.stories.js +115 -0
  212. package/dist/Atomic/Layout/Spinner/Spinner.interface.js +4 -0
  213. package/dist/Atomic/Layout/Spinner/Spinner.js +39 -22
  214. package/dist/Atomic/Layout/Spinner/Spinner.scss +32 -16
  215. package/dist/Atomic/Layout/Spinner/Spinner.stories.js +46 -0
  216. package/dist/Atomic/Layout/Spinner/Spinner.test.js +54 -0
  217. package/dist/Atomic/Layout/Spinner/index.js +17 -0
  218. package/dist/Atomic/UI/Accordion/Accordion.interface.js +4 -0
  219. package/dist/Atomic/UI/Accordion/Accordion.js +102 -52
  220. package/dist/Atomic/UI/Accordion/Accordion.scss +25 -14
  221. package/dist/Atomic/UI/Accordion/Accordion.stories.js +168 -0
  222. package/dist/Atomic/UI/Accordion/Accordion.test.js +54 -0
  223. package/dist/Atomic/UI/Accordion/AccordionItem.js +170 -104
  224. package/dist/Atomic/UI/Accordion/AccordionItem.test.js +50 -0
  225. package/dist/Atomic/UI/Accordion/index.js +17 -0
  226. package/dist/Atomic/UI/AccordionTable/AccordionTable.js +251 -173
  227. package/dist/Atomic/UI/AccordionTable/AccordionTable.stories.js +268 -0
  228. package/dist/Atomic/UI/AccordionText/AccordionText.js +105 -54
  229. package/dist/Atomic/UI/AccordionText/AccordionText.scss +22 -9
  230. package/dist/Atomic/UI/AccordionText/AccordionText.stories.js +125 -0
  231. package/dist/Atomic/UI/AdvancedTag/AdvTag.js +207 -136
  232. package/dist/Atomic/UI/AdvancedTag/AdvancedTags.js +100 -46
  233. package/dist/Atomic/UI/AdvancedTag/AdvancedTags.scss +2 -2
  234. package/dist/Atomic/UI/AdvancedTag/AdvancedTags.stories.js +115 -0
  235. package/dist/Atomic/UI/Alert/Alert.js +116 -63
  236. package/dist/Atomic/UI/Alert/Alert.scss +2 -2
  237. package/dist/Atomic/UI/Alert/Alert.stories.js +81 -0
  238. package/dist/Atomic/UI/Arrow/Arrow.js +163 -110
  239. package/dist/Atomic/UI/Arrow/Arrow.stories.js +62 -0
  240. package/dist/Atomic/UI/Box/Box.js +37 -37
  241. package/dist/Atomic/UI/Box/Box.scss +11 -11
  242. package/dist/Atomic/UI/Box/Box.stories.js +114 -0
  243. package/dist/Atomic/UI/Button/Button.js +43 -42
  244. package/dist/Atomic/UI/Button/Button.stories.js +105 -0
  245. package/dist/Atomic/UI/Button/Button.test.js +147 -0
  246. package/dist/Atomic/UI/ButtonsBar/ButtonsBar.js +61 -67
  247. package/dist/Atomic/UI/ButtonsBar/ButtonsBar.stories.js +129 -0
  248. package/dist/Atomic/UI/Chart/Chart.js +170 -98
  249. package/dist/Atomic/UI/Chart/Chart.stories.js +93 -0
  250. package/dist/Atomic/UI/Chart/partial/Chart.constants.js +142 -74
  251. package/dist/Atomic/UI/Chart/partial/ChartTypeSwitcherIcon/ChartTypeSwitcherIcon.js +91 -77
  252. package/dist/Atomic/UI/Chart/partial/datasetSetters.js +120 -120
  253. package/dist/Atomic/UI/Chart/partial/optionsConstructor.js +311 -293
  254. package/dist/Atomic/UI/Chart/partial/optionsSetters.js +54 -42
  255. package/dist/Atomic/UI/Chart/partial/utils.js +55 -35
  256. package/dist/Atomic/UI/CircleProgressBar/CircleProgressBar.js +145 -88
  257. package/dist/Atomic/UI/CircleProgressBar/CircleProgressBar.stories.js +85 -0
  258. package/dist/Atomic/UI/DateTime/DateTime.js +89 -37
  259. package/dist/Atomic/UI/DateTime/DateTime.scss +2 -2
  260. package/dist/Atomic/UI/DateTime/DateTime.stories.js +50 -0
  261. package/dist/Atomic/UI/DateTime/partial/AnyOuterClass.scss +1 -1
  262. package/dist/Atomic/UI/DebugContainer/DebugContainer.js +93 -33
  263. package/dist/Atomic/UI/DebugContainer/useDebugContainer.js +66 -18
  264. package/dist/Atomic/UI/DoubleString/DoubleString.js +134 -78
  265. package/dist/Atomic/UI/DoubleString/DoubleString.scss +6 -4
  266. package/dist/Atomic/UI/DoubleString/DoubleString.stories.js +79 -0
  267. package/dist/Atomic/UI/DoubleString/partial/AnyOuterClass.scss +1 -1
  268. package/dist/Atomic/UI/DynamicIcon/DynamicIcon.interface.js +4 -0
  269. package/dist/Atomic/UI/DynamicIcon/DynamicIcon.js +65 -22
  270. package/dist/Atomic/UI/DynamicIcon/DynamicIcon.stories.js +98 -0
  271. package/dist/Atomic/UI/DynamicIcon/DynamicIcon.test.js +51 -0
  272. package/dist/Atomic/UI/DynamicIcon/index.js +17 -0
  273. package/dist/Atomic/UI/ExampleChartIntegration/ExampleChartIntegration.js +250 -172
  274. package/dist/Atomic/UI/ExampleChartIntegration/ExampleChartIntegration.stories.js +98 -0
  275. package/dist/Atomic/UI/ExampleChartIntegration/partial/AnyOuterClass.scss +1 -1
  276. package/dist/Atomic/UI/ExampleChartIntegration/partial/utils.js +109 -84
  277. package/dist/Atomic/UI/Hint/Hint.js +243 -204
  278. package/dist/Atomic/UI/Hint/Hint.scss +5 -3
  279. package/dist/Atomic/UI/Hint/Hint.stories.js +101 -0
  280. package/dist/Atomic/UI/Hint/index.js +16 -0
  281. package/dist/Atomic/UI/Hint/partials/_utils.js +54 -44
  282. package/dist/Atomic/UI/Modal/Modal.interface.js +4 -0
  283. package/dist/Atomic/UI/Modal/Modal.js +171 -172
  284. package/dist/Atomic/UI/Modal/Modal.scss +91 -69
  285. package/dist/Atomic/UI/Modal/Modal.stories.js +370 -0
  286. package/dist/Atomic/UI/Modal/ModalHOC.js +92 -38
  287. package/dist/Atomic/UI/Modal/ModalHOC.stories.js +191 -0
  288. package/dist/Atomic/UI/Modal/ModalHOC.test.js +187 -0
  289. package/dist/Atomic/UI/Modal/ModalMobile.scss +24 -14
  290. package/dist/Atomic/UI/Modal/index.js +26 -0
  291. package/dist/Atomic/UI/Modal/partials/ModalFooter.js +68 -18
  292. package/dist/Atomic/UI/Modal/partials/ModalFooter.test.js +118 -0
  293. package/dist/Atomic/UI/Modal/partials/ModalTitle.js +107 -38
  294. package/dist/Atomic/UI/Modal/partials/ModalTitle.test.js +126 -0
  295. package/dist/Atomic/UI/Modal/partials/useMobileModal.js +128 -163
  296. package/dist/Atomic/UI/Modal/partials/useMobileModal.test.js +133 -0
  297. package/dist/Atomic/UI/MonoAccordion/MonoAccordion.interface.js +4 -0
  298. package/dist/Atomic/UI/MonoAccordion/MonoAccordion.js +117 -64
  299. package/dist/Atomic/UI/MonoAccordion/MonoAccordion.scss +163 -25
  300. package/dist/Atomic/UI/MonoAccordion/MonoAccordion.stories.js +513 -0
  301. package/dist/Atomic/UI/MonoAccordion/MonoAccordion.test.js +84 -0
  302. package/dist/Atomic/UI/MonoAccordion/index.js +17 -0
  303. package/dist/Atomic/UI/NavLine/NavLine.interface.js +4 -0
  304. package/dist/Atomic/UI/NavLine/NavLine.js +306 -279
  305. package/dist/Atomic/UI/NavLine/NavLine.scss +195 -155
  306. package/dist/Atomic/UI/NavLine/NavLine.stories.js +434 -0
  307. package/dist/Atomic/UI/NavLine/NavLine.test.js +311 -0
  308. package/dist/Atomic/UI/NavLine/index.js +17 -0
  309. package/dist/Atomic/UI/PageTitle/PageTitle.interface.js +4 -0
  310. package/dist/Atomic/UI/PageTitle/PageTitle.js +73 -52
  311. package/dist/Atomic/UI/PageTitle/PageTitle.scss +52 -14
  312. package/dist/Atomic/UI/PageTitle/PageTitle.stories.js +62 -0
  313. package/dist/Atomic/UI/PageTitle/PageTitle.test.js +181 -0
  314. package/dist/Atomic/UI/PageTitle/index.js +17 -0
  315. package/dist/Atomic/UI/PieChart/PieChar.interface.js +4 -0
  316. package/dist/Atomic/UI/PieChart/PieChart.js +105 -42
  317. package/dist/Atomic/UI/PieChart/PieChart.scss +86 -11
  318. package/dist/Atomic/UI/PieChart/PieChart.stories.js +82 -0
  319. package/dist/Atomic/UI/PieChart/PieChart.test.js +142 -0
  320. package/dist/Atomic/UI/PieChart/index.js +26 -0
  321. package/dist/Atomic/UI/Price/Price.interface.js +4 -0
  322. package/dist/Atomic/UI/Price/Price.js +27 -20
  323. package/dist/Atomic/UI/Price/Price.stories.js +52 -0
  324. package/dist/Atomic/UI/Price/Price.test.js +83 -0
  325. package/dist/Atomic/UI/Price/index.js +17 -0
  326. package/dist/Atomic/UI/PriceRange/PriceRange.interface.js +4 -0
  327. package/dist/Atomic/UI/PriceRange/PriceRange.js +40 -18
  328. package/dist/Atomic/UI/PriceRange/PriceRange.stories.js +51 -0
  329. package/dist/Atomic/UI/PriceRange/PriceRange.test.js +72 -0
  330. package/dist/Atomic/UI/PriceRange/index.js +17 -0
  331. package/dist/Atomic/UI/ProgressLine/ProgressLine.interface.js +4 -0
  332. package/dist/Atomic/UI/ProgressLine/ProgressLine.js +92 -73
  333. package/dist/Atomic/UI/ProgressLine/ProgressLine.scss +85 -71
  334. package/dist/Atomic/UI/ProgressLine/ProgressLine.stories.js +163 -0
  335. package/dist/Atomic/UI/ProgressLine/ProgressLine.test.js +60 -0
  336. package/dist/Atomic/UI/ProgressLine/index.js +17 -0
  337. package/dist/Atomic/UI/Status/Status.interface.js +4 -0
  338. package/dist/Atomic/UI/Status/Status.js +62 -51
  339. package/dist/Atomic/UI/Status/Status.scss +48 -29
  340. package/dist/Atomic/UI/Status/Status.stories.js +79 -0
  341. package/dist/Atomic/UI/Status/Status.test.js +103 -0
  342. package/dist/Atomic/UI/Status/index.js +17 -0
  343. package/dist/Atomic/UI/Table/Partials/TdCell.js +126 -88
  344. package/dist/Atomic/UI/Table/Partials/TdHeader.js +58 -39
  345. package/dist/Atomic/UI/Table/Partials/TdRow.js +124 -73
  346. package/dist/Atomic/UI/Table/Partials/TdTitle.js +113 -45
  347. package/dist/Atomic/UI/Table/Table.js +61 -43
  348. package/dist/Atomic/UI/Table/Table.scss +0 -3
  349. package/dist/Atomic/UI/Table/Table.stories.js +250 -0
  350. package/dist/Atomic/UI/Table/TdTypes/TdActions.js +108 -64
  351. package/dist/Atomic/UI/Table/TdTypes/TdPriority.js +44 -31
  352. package/dist/Atomic/UI/Table/TdTypes/TdRange.js +24 -10
  353. package/dist/Atomic/UI/Table/TdTypes/TdWeight.js +59 -48
  354. package/dist/Atomic/UI/Tag/Tag.interface.js +4 -0
  355. package/dist/Atomic/UI/Tag/Tag.js +157 -115
  356. package/dist/Atomic/UI/Tag/Tag.scss +102 -48
  357. package/dist/Atomic/UI/Tag/Tag.stories.js +108 -0
  358. package/dist/Atomic/UI/Tag/Tag.test.js +75 -0
  359. package/dist/Atomic/UI/Tag/index.js +17 -0
  360. package/dist/Atomic/UI/TagList/TagList.js +223 -184
  361. package/dist/Atomic/UI/TagList/TagList.scss +13 -9
  362. package/dist/Atomic/UI/TagList/TagList.stories.js +169 -0
  363. package/dist/Atomic/UI/UserBox/UserBox.interface.js +4 -0
  364. package/dist/Atomic/UI/UserBox/UserBox.js +80 -56
  365. package/dist/Atomic/UI/UserBox/UserBox.scss +45 -21
  366. package/dist/Atomic/UI/UserBox/UserBox.stories.js +57 -0
  367. package/dist/Atomic/UI/UserBox/UserBox.test.js +136 -0
  368. package/dist/Atomic/UI/UserBox/index.js +17 -0
  369. package/dist/Atomic/UI/WizardStepper/WizardStepper.stories.js +70 -0
  370. package/dist/Atomic/UI/WizardStepper/constructor.js +127 -89
  371. package/dist/Atomic/UI/WizardStepper/index.js +14 -6
  372. package/dist/Atomic/UI/WizardStepper/ui/StateIcon/StateIcon.js +53 -51
  373. package/dist/Atomic/UI/WizardStepper/ui/StateIcon/StateIcon.scss +11 -7
  374. package/dist/Atomic/UI/WizardStepper/ui/StateIcon/index.js +9 -5
  375. package/dist/Atomic/UI/WizardStepper/ui/StepRow/StepRow.js +84 -70
  376. package/dist/Atomic/UI/WizardStepper/ui/StepRow/StepRow.scss +13 -7
  377. package/dist/Atomic/UI/WizardStepper/ui/StepRow/index.js +14 -6
  378. package/dist/Atomic/UI/WizardStepper/ui/StepWrapper/StepWrapper.js +50 -45
  379. package/dist/Atomic/UI/WizardStepper/ui/StepWrapper/StepWrapper.scss +24 -18
  380. package/dist/Atomic/UI/WizardStepper/ui/StepWrapper/index.js +14 -6
  381. package/dist/Atomic/UI/WizardStepper/ui/icons.js +138 -106
  382. package/dist/Atomic/UI/WizardStepper/ui/index.js +14 -6
  383. package/dist/Classes/AbortableFetch.js +394 -375
  384. package/dist/Classes/AnimatedHandler.js +31 -44
  385. package/dist/Classes/RESTAPI/index.js +131 -174
  386. package/dist/Classes/RESTAPI/partials/AbortableFetch.js +399 -382
  387. package/dist/Classes/RESTAPI/partials/ApiBase.js +30 -30
  388. package/dist/Classes/RESTAPI/partials/ApiRequestCreators.js +107 -94
  389. package/dist/Classes/RESTAPI/partials/ApiUtils.js +144 -166
  390. package/dist/Classes/RESTAPI/partials/CredentialsProcessing.js +180 -205
  391. package/dist/Classes/RESTAPI/partials/Utils.js +80 -83
  392. package/dist/Classes/RESTAPI/partials/_outerDependencies.js +16 -8
  393. package/dist/Classes/RESTAPI/partials/_utils.js +139 -134
  394. package/dist/Constants/index.constants.js +102 -22
  395. package/dist/Functions/Portal.js +67 -25
  396. package/dist/Functions/animatingFunctions/getAnimatedHandler.js +1 -1
  397. package/dist/Functions/customEventListener.js +48 -50
  398. package/dist/Functions/dateTime.js +130 -177
  399. package/dist/Functions/fieldValueFormatters.js +274 -350
  400. package/dist/Functions/hooks/useFormFieldsChangesManager.js +125 -100
  401. package/dist/Functions/locale/createTranslator.js +29 -29
  402. package/dist/Functions/operations.js +129 -102
  403. package/dist/Functions/presets/inputMaskPresets.js +88 -99
  404. package/dist/Functions/presets/inputPresets.js +41 -35
  405. package/dist/Functions/presets/mobileKeyboardTypesPresets.js +30 -49
  406. package/dist/Functions/schemas.js +78 -20
  407. package/dist/Functions/useBodyScrollLock.js +21 -15
  408. package/dist/Functions/useClickOutside.js +21 -16
  409. package/dist/Functions/useDebounce.js +62 -21
  410. package/dist/Functions/useFieldFocus.js +83 -84
  411. package/dist/Functions/useFormTools/form-drivers/ArrayWithObjects.js +39 -47
  412. package/dist/Functions/useFormTools/form-drivers/ObjectWithIterableObjects.js +132 -137
  413. package/dist/Functions/useFormTools/form-drivers/ObjectWithNamedKeyObjects.js +63 -74
  414. package/dist/Functions/useFormTools/functions/General.js +117 -129
  415. package/dist/Functions/useFormTools/functions/RenderFields.js +75 -85
  416. package/dist/Functions/useFormTools/functions/usePrevious.js +16 -10
  417. package/dist/Functions/useFormTools/index.js +647 -720
  418. package/dist/Functions/useInputHighlightError.js +104 -53
  419. package/dist/Functions/useIsMobile/index.js +17 -0
  420. package/dist/Functions/useIsMobile/useIsMobile.js +33 -0
  421. package/dist/Functions/useIsMobile/useIsMobile.test.js +104 -0
  422. package/dist/Functions/useKeyPress/useHandleKeyPress.js +40 -33
  423. package/dist/Functions/useKeyPress/useHandleKeyPress.test.js +96 -0
  424. package/dist/Functions/useKeyPress/useKeyPress.js +48 -39
  425. package/dist/Functions/useKeyPress/useKeyPress.test.js +87 -0
  426. package/dist/Functions/useLocalStorage.js +38 -31
  427. package/dist/Functions/useLocationParams.js +31 -25
  428. package/dist/Functions/useMediaQuery.js +14 -10
  429. package/dist/Functions/useMetaInfo.js +45 -35
  430. package/dist/Functions/useMouseUpOutside.js +21 -15
  431. package/dist/Functions/useOnlineStatus.js +25 -21
  432. package/dist/Functions/usePasswordChecker.js +183 -111
  433. package/dist/Functions/usePrevious.js +16 -10
  434. package/dist/Functions/useResize.js +32 -30
  435. package/dist/Functions/useScrollTo.js +26 -17
  436. package/dist/Functions/useToggle.js +20 -16
  437. package/dist/Functions/utils.js +493 -472
  438. package/dist/Molecular/CustomIcons/components/AffiliateNetworks.js +75 -28
  439. package/dist/Molecular/CustomIcons/components/AlertCircle.js +77 -28
  440. package/dist/Molecular/CustomIcons/components/AppStore.js +84 -32
  441. package/dist/Molecular/CustomIcons/components/Arrow.js +93 -38
  442. package/dist/Molecular/CustomIcons/components/ArrowDown.js +63 -20
  443. package/dist/Molecular/CustomIcons/components/ArrowLeft.js +71 -23
  444. package/dist/Molecular/CustomIcons/components/ArrowRight.js +71 -23
  445. package/dist/Molecular/CustomIcons/components/ArrowUp.js +63 -20
  446. package/dist/Molecular/CustomIcons/components/Bell.js +61 -18
  447. package/dist/Molecular/CustomIcons/components/Button.js +61 -18
  448. package/dist/Molecular/CustomIcons/components/Campaigns.js +62 -19
  449. package/dist/Molecular/CustomIcons/components/Check.js +62 -19
  450. package/dist/Molecular/CustomIcons/components/Check2.js +61 -18
  451. package/dist/Molecular/CustomIcons/components/ChevronDown.js +61 -18
  452. package/dist/Molecular/CustomIcons/components/ChevronDownDisabled.js +61 -18
  453. package/dist/Molecular/CustomIcons/components/ChevronLeft.js +61 -18
  454. package/dist/Molecular/CustomIcons/components/ChevronRight.js +61 -18
  455. package/dist/Molecular/CustomIcons/components/ChevronUp.js +61 -18
  456. package/dist/Molecular/CustomIcons/components/ChevronUpDown.js +81 -33
  457. package/dist/Molecular/CustomIcons/components/Close.js +64 -20
  458. package/dist/Molecular/CustomIcons/components/ColumnsOrder.js +95 -45
  459. package/dist/Molecular/CustomIcons/components/Delete.js +62 -19
  460. package/dist/Molecular/CustomIcons/components/Edit.js +61 -18
  461. package/dist/Molecular/CustomIcons/components/Email.js +87 -36
  462. package/dist/Molecular/CustomIcons/components/FinturfLogo.js +82 -26
  463. package/dist/Molecular/CustomIcons/components/FinturfLogo2.js +83 -34
  464. package/dist/Molecular/CustomIcons/components/Flows.js +61 -18
  465. package/dist/Molecular/CustomIcons/components/Gift.js +71 -23
  466. package/dist/Molecular/CustomIcons/components/GoogleAuth.js +84 -32
  467. package/dist/Molecular/CustomIcons/components/GooglePlay.js +84 -32
  468. package/dist/Molecular/CustomIcons/components/HelpCircle.js +67 -21
  469. package/dist/Molecular/CustomIcons/components/HelpCircle2.js +68 -22
  470. package/dist/Molecular/CustomIcons/components/HelpCircleFilled.js +67 -21
  471. package/dist/Molecular/CustomIcons/components/Home.js +67 -21
  472. package/dist/Molecular/CustomIcons/components/Home2.js +70 -24
  473. package/dist/Molecular/CustomIcons/components/Key.js +69 -26
  474. package/dist/Molecular/CustomIcons/components/Landers.js +68 -22
  475. package/dist/Molecular/CustomIcons/components/Lock.js +61 -18
  476. package/dist/Molecular/CustomIcons/components/Mail.js +75 -26
  477. package/dist/Molecular/CustomIcons/components/Mastercard.js +128 -68
  478. package/dist/Molecular/CustomIcons/components/Minus.js +79 -31
  479. package/dist/Molecular/CustomIcons/components/Offers.js +62 -19
  480. package/dist/Molecular/CustomIcons/components/Pause.js +79 -31
  481. package/dist/Molecular/CustomIcons/components/PayPal.js +96 -45
  482. package/dist/Molecular/CustomIcons/components/PayPalLightLarge.js +81 -32
  483. package/dist/Molecular/CustomIcons/components/Phone.js +81 -33
  484. package/dist/Molecular/CustomIcons/components/Play.js +79 -31
  485. package/dist/Molecular/CustomIcons/components/Plus.js +79 -31
  486. package/dist/Molecular/CustomIcons/components/Profile.js +69 -23
  487. package/dist/Molecular/CustomIcons/components/QRCode.js +85 -33
  488. package/dist/Molecular/CustomIcons/components/Rectangle.js +61 -18
  489. package/dist/Molecular/CustomIcons/components/Revert.js +67 -21
  490. package/dist/Molecular/CustomIcons/components/Star.js +60 -17
  491. package/dist/Molecular/CustomIcons/components/Star2.js +62 -19
  492. package/dist/Molecular/CustomIcons/components/TrafficSources.js +68 -21
  493. package/dist/Molecular/CustomIcons/components/Trash.js +61 -18
  494. package/dist/Molecular/CustomIcons/components/TrashRed.js +61 -18
  495. package/dist/Molecular/CustomIcons/components/Triggers.js +61 -18
  496. package/dist/Molecular/CustomIcons/components/User.js +71 -23
  497. package/dist/Molecular/CustomIcons/components/Visa.js +88 -34
  498. package/dist/Molecular/CustomIcons/components/X.js +61 -18
  499. package/dist/Molecular/CustomIcons/index.js +76 -674
  500. package/dist/Molecular/FormElement/FormElement.js +44 -41
  501. package/dist/Molecular/FormElement/FormElement.stories.js +92 -0
  502. package/dist/Molecular/FormWithDependOn/FormWithDependOn.js +179 -161
  503. package/dist/Molecular/FormWithDependOn/FormWithDependOn.stories.js +301 -0
  504. package/dist/Molecular/FormWithDependOn/partials/_utils.js +49 -60
  505. package/dist/Molecular/InputAddress/InputAddress.js +496 -439
  506. package/dist/Molecular/InputAddress/InputAddress.scss +14 -16
  507. package/dist/Molecular/InputAddress/InputAddress.stories.js +541 -0
  508. package/dist/Molecular/InputPassword/InputPassword.js +99 -48
  509. package/dist/Molecular/InputPassword/InputPassword.stories.js +86 -0
  510. package/dist/index.js +11 -8
  511. package/dist/scss/_fonts.scss +48 -60
  512. package/dist/scss/_mixins.scss +2 -2
  513. package/dist/scss/_vars.scss +4 -5
  514. package/dist/scss/main.scss +5 -4
  515. package/dist/types/base.interface.js +4 -0
  516. package/dist/types/base.types.js +4 -0
  517. package/package.json +17 -21
  518. package/dist/Atomic/UI/Hint/partial/_utils.js +0 -52
  519. package/dist/Atomic/UI/NavLine/Tabs.js +0 -115
  520. package/dist/Functions/useIsMobile.js +0 -26
@@ -1,590 +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 && Object.prototype.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
- var _options$find, _dropdownListWrapperR3, _dropdownListRef$curr5, _dropdownListRef$curr6, _filteredOptions$find, _tabIndex$toString;
26
- let {
27
- label,
28
- options = [],
29
- value,
30
- error,
31
- disabled,
32
- onChange,
33
- placeholder,
34
- className,
35
- isSearchable,
36
- entity,
37
- scrollReactionObj,
38
- isListTop,
39
- isNotValidateASCII = false,
40
- testId = "dropdown",
41
- sortAlphabetical = true,
42
- fieldKey,
43
- id,
44
- noOptionsText = "No options available",
45
- attributesOfNativeInput = {},
46
- isDoNotPullOutListOfMainContainer,
47
- withMobileLogic,
48
- withActions,
49
- minItemsForShowMobileSearch = MIN_ITEMS_FOR_SHOW_MOBILE_SEARCH,
50
- customTrigger,
51
- tabIndex,
52
- onActionConfirmClick,
53
- onActionCancelClick,
54
- isDefaultOpened
55
- } = _ref;
56
- const {
57
- isMobile: isMobileProp
58
- } = (0, _useIsMobile.default)();
59
- const isMobile = isMobileProp && withMobileLogic && window.screen.width <= 768;
60
- const [dropdownId, setDropdownId] = (0, _react.useState)(id || fieldKey || Math.random().toString(16).slice(2));
61
- const [isOpen, setIsOpen] = (0, _react.useState)(false);
62
- const [searchValue, setSearchValue] = (0, _react.useState)();
63
- const dropdownRef = (0, _react.useRef)(null);
64
- const dropdownListRef = (0, _react.useRef)(null);
65
- const dropdownListWrapperRef = (0, _react.useRef)(null);
66
- const searchInputRef = (0, _react.useRef)(null);
67
- const wrapperRef = (0, _react.useRef)(null);
68
- const [initListHeight, setInitListHeight] = (0, _react.useState)(null);
69
- const [isSearchChanged, setIsSearchChanged] = (0, _react.useState)(false);
70
- const [isSearchInputFocused, setIsSearchInputFocused] = (0, _react.useState)(false);
71
- const [isScrollableList, setIsScrollableList] = (0, _react.useState)(null);
72
- const [isFixedMaxHeight, setIsFixedMaxHeight] = (0, _react.useState)(false);
73
- const [scrollTop, setScrollTop] = (0, _react.useState)(0);
74
- const [scrollHeight, setScrollHeight] = (0, _react.useState)(1);
75
- if (!options) return null;
76
- const getTotalOptions = (0, _react.useCallback)(() => {
77
- return options === null || options === void 0 ? void 0 : options.reduce((result, item) => {
78
- if (item !== null && item !== void 0 && item.list || item !== null && item !== void 0 && item.items) {
79
- var _item$list, _item$items;
80
- result += (item === null || item === void 0 || (_item$list = item.list) === null || _item$list === void 0 ? void 0 : _item$list.length) || (item === null || item === void 0 || (_item$items = item.items) === null || _item$items === void 0 ? void 0 : _item$items.length) || 0;
81
- } else {
82
- ++result;
83
- }
84
- return result;
85
- }, 0);
86
- }, [options]);
87
- if (isMobile) {
88
- isSearchable = getTotalOptions() > (minItemsForShowMobileSearch || MIN_ITEMS_FOR_SHOW_MOBILE_SEARCH);
89
- }
90
- const moveOtherToEnd = options => {
91
- const otherIndex = options === null || options === void 0 ? void 0 : options.findIndex(option => (option === null || option === void 0 ? void 0 : option.value) === "other");
92
- if (otherIndex > -1) {
93
- const other = options === null || options === void 0 ? void 0 : options.splice(otherIndex, 1);
94
- options.push(...other);
5
+ Object.defineProperty(exports, "default", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return _default;
95
9
  }
96
- return options;
97
- };
98
- const optionsWithOtherAtTheEnd = moveOtherToEnd(options);
99
- options.map(option => {
100
- if (option.items) {
101
- return option.items = moveOtherToEnd(option.items);
102
- } else return option;
103
- });
104
- const filteredGroups = optionsWithOtherAtTheEnd.map(item => {
105
- var _item$items2;
106
- return {
107
- ...item,
108
- items: !isSearchable || !isSearchChanged ? item === null || item === void 0 ? void 0 : item.items : (_item$items2 = item.items) === null || _item$items2 === void 0 ? void 0 : _item$items2.slice().filter(el => {
109
- var _el$label;
110
- return (el === null || el === 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 && el.value) || (el === null || el === void 0 ? void 0 : el.value) === "";
111
- })
112
- };
113
- }).filter(item => {
114
- var _item$items3;
115
- return ((_item$items3 = item.items) === null || _item$items3 === void 0 ? void 0 : _item$items3.length) > 0;
116
- });
117
- const filteredItems = optionsWithOtherAtTheEnd.filter(item => {
118
- var _item$items4;
119
- return !((_item$items4 = item.items) !== null && _item$items4 !== void 0 && _item$items4.length);
120
- }).filter(item => {
121
- var _item$label;
122
- if (!isSearchable || !isSearchChanged) return true;
123
- return (item === null || item === 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 && item.value) || (item === null || item === void 0 ? void 0 : item.value) === "";
124
- });
125
- const filteredOptions = [...filteredItems, ...filteredGroups];
126
- const modalBtnTrigger = entity && entity !== "" && typeof entity === "string";
127
- const onChangeHandler = item => {
128
- setIsOpen(false);
129
- onChange(item.value);
130
- };
131
- const onKeyDown = e => {
132
- if (![9, 13].includes(e.keyCode)) return false;
133
- setIsOpen(false);
134
- };
135
- const onKeyUp = e => {
136
- if (![9, 13].includes(e.keyCode)) return false;
137
- setIsOpen(true);
138
- };
139
- // decorator
140
- const getDepends = getDependsTrigger => {
141
- const newOnChange = e => {
142
- if (e.value === "open_modal") {
143
- onChange("open_modal");
144
- } else {
145
- onChangeHandler(e);
146
- }
147
- };
148
-
149
- // add pseudo option
150
- const newOptions = [{
151
- label: "New ".concat(entity),
152
- value: "open_modal",
153
- className: "dropdown__list-item--modal"
154
- }, ...filteredOptions];
155
- return {
156
- onChange: changeItem => {
157
- return getDependsTrigger ? newOnChange(changeItem) : onChangeHandler(changeItem);
158
- },
159
- 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
160
26
  };
161
- };
162
- const handleClickOutside = event => {
163
- var _getListContainer;
164
- if (!((_getListContainer = getListContainer()) !== null && _getListContainer !== void 0 && _getListContainer.contains(event === null || event === void 0 ? void 0 : event.target)) && !(dropdownRef !== null && dropdownRef !== void 0 && dropdownRef.current.contains(event === null || event === void 0 ? void 0 : event.target))) {
165
- 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;
166
39
  }
167
- };
168
- const onSearchHandler = name => {
169
- let inputValue = name;
170
- if (!isNotValidateASCII) inputValue = (0, _fieldValueFormatters.formatToOnlyASCIICodeText)(inputValue);
171
- setIsSearchChanged(true);
172
- setSearchValue(inputValue);
173
- };
174
- const onWrapperClick = e => {
175
- if (e.target === (wrapperRef === null || wrapperRef === void 0 ? void 0 : wrapperRef.current)) {
176
- e.stopPropagation();
177
- e.preventDefault();
178
- setIsOpen(false);
40
+ if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
41
+ return {
42
+ default: obj
43
+ };
179
44
  }
180
- };
181
- const hightlightedText = (text, postfix, description) => {
182
- var _text;
183
- const prepare = text => text === null || text === void 0 ? void 0 : text.replace(/[|\\{}()[\]^$+*?.]/g, "\\$&");
184
- text = text.replace(/["&<>]/g, a => {
185
- return {
186
- '"': "&quot;",
187
- "&": "&amp;",
188
- "<": "&lt;",
189
- ">": "&gt;"
190
- }[a];
191
- });
192
- const main = isSearchable && searchValue ? (_text = text) === null || _text === void 0 ? void 0 : _text.replace(new RegExp(prepare(searchValue), "i"), match => "<span class=\"bg--yellow\">".concat(match, "</span>")) : text;
193
- const postfixPart = postfix ? "<span class=\"dropdown__list-item-postfix\">".concat(postfix, "</span>") : "";
194
- const descriptionPart = description ? "<span class=\"dropdown__list-item-description\">".concat(description, "</span>") : "";
195
- return main + postfixPart + descriptionPart;
196
- };
197
- const depend = getDepends(modalBtnTrigger);
198
- const getMarkupForElement = (item, index, optTestId) => {
199
- var _item$value, _item$customMobileIco;
200
- return /*#__PURE__*/_react.default.createElement("button", {
201
- "data-testid": "".concat(testId, "-").concat(optTestId, "-option"),
202
- key: (_item$value = item.value) === null || _item$value === void 0 || (_item$value = _item$value.toString()) === null || _item$value === void 0 ? void 0 : _item$value.replace(/ /g, "_"),
203
- onMouseDown: () => depend.onChange(item),
204
- className: (0, _classnames.default)("".concat(RC, "__list-item"), {
205
- ["".concat(RC, "__list-item_active")]: item.value === value,
206
- ["".concat(RC, "__list-item_disabled")]: item.disabled
207
- }, item.className)
208
- }, !isMobile && /*#__PURE__*/_react.default.createElement("span", {
209
- className: (0, _classnames.default)("".concat(RC, "__active-icon"), {
210
- ["".concat(RC, "__active-icon_active")]: item.value === value
211
- })
212
- }, /*#__PURE__*/_react.default.createElement(_reactFeather.Check, null)), /*#__PURE__*/_react.default.createElement("div", {
213
- className: (0, _classnames.default)("".concat(RC, "__list-item-label"), item.labelClassName || ""),
214
- dangerouslySetInnerHTML: {
215
- __html: hightlightedText(item.label, item.postfix, item.description)
216
- }
217
- }), (item === null || item === void 0 ? void 0 : item.icon) || "", isMobile ? (_item$customMobileIco = item === null || item === void 0 ? void 0 : item.customMobileIcon) !== null && _item$customMobileIco !== void 0 ? _item$customMobileIco : /*#__PURE__*/_react.default.createElement(_RadioInput.default, {
218
- value: item.value,
219
- checked: value
220
- }) : "");
221
- };
222
- const filteredOptionList = filteredOption => {
223
- var _filteredOption$items, _filteredOption$label;
224
- return ((_filteredOption$items = filteredOption.items) === null || _filteredOption$items === void 0 ? void 0 : _filteredOption$items.length) > 0 ? /*#__PURE__*/_react.default.createElement("div", {
225
- key: (_filteredOption$label = filteredOption.label) === null || _filteredOption$label === void 0 || (_filteredOption$label = _filteredOption$label.toString()) === null || _filteredOption$label === void 0 ? void 0 : _filteredOption$label.replace(/ /g, "_").concat(Date.now()),
226
- className: (0, _classnames.default)("".concat(RC, "-group"), filteredOption.className)
227
- }, /*#__PURE__*/_react.default.createElement("div", {
228
- className: "".concat(RC, "-group__name")
229
- }, filteredOption.label), filteredOption.items.map((el, index) => getMarkupForElement(el, index, (el === null || el === void 0 ? void 0 : el.testId) || index))) : null;
230
- };
231
- const selectedLabel = ((_options$find = options.find(el => el.value === value)) === null || _options$find === void 0 ? void 0 : _options$find.label) || options.reduce((acc, item) => {
232
- var _item$items5;
233
- return acc || ((_item$items5 = item.items) === null || _item$items5 === void 0 || (_item$items5 = _item$items5.find(el => el.value === value)) === null || _item$items5 === void 0 ? void 0 : _item$items5.label);
234
- }, null);
235
- const doScrollCallback = (0, _react.useCallback)(e => {
236
- const {
237
- callback,
238
- isWithAnyScrolling,
239
- scrollingInaccuracy = 0
240
- } = scrollReactionObj || {};
241
- if (callback && typeof callback === "function") {
242
- if (isWithAnyScrolling) callback(e);else if (Math.round(e.target.clientHeight + e.target.scrollTop + scrollingInaccuracy) >= e.target.scrollHeight) {
243
- callback(e);
244
- }
45
+ var cache = _getRequireWildcardCache(nodeInterop);
46
+ if (cache && cache.has(obj)) {
47
+ return cache.get(obj);
245
48
  }
246
- }, [filteredOptions]);
247
- const getParentNode = () => {
248
- var _ref2, _document$querySelect;
249
- if (isDoNotPullOutListOfMainContainer) return dropdownRef.current;
250
- return (_ref2 = (_document$querySelect = document.querySelector("div#root")) !== null && _document$querySelect !== void 0 ? _document$querySelect : document.querySelector("div#app")) !== null && _ref2 !== void 0 ? _ref2 : document.querySelector("div#storybook-root");
251
- };
252
- const initListContainer = () => {
253
- const dropdownList = document.createElement("div");
254
- dropdownList.setAttribute("id", dropdownId);
255
- dropdownList.classList.add("dropdown__container");
256
- if (isMobile) {
257
- dropdownList.addEventListener("click", e => {
258
- if (e.target.id === dropdownId) setIsOpen(false);
259
- });
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
+ }
260
62
  }
261
- try {
262
- var _getListContainer2;
263
- (_getListContainer2 = getListContainer()) === null || _getListContainer2 === void 0 || _getListContainer2.remove();
264
- } finally {
265
- if (isMobile) {
266
- var _getParentNode;
267
- try {
268
- var _document$getElementB;
269
- (_document$getElementB = document.getElementById("mlw-".concat(dropdownId))) === null || _document$getElementB === void 0 || _document$getElementB.remove();
270
- } catch (e) {}
271
- const dropdownMobileListWrapper = document.createElement("div");
272
- dropdownMobileListWrapper.classList.add("dropdown-mobile");
273
- dropdownMobileListWrapper.setAttribute("id", "mlw-".concat(dropdownId));
274
- dropdownMobileListWrapper === null || dropdownMobileListWrapper === void 0 || dropdownMobileListWrapper.append(dropdownList);
275
- (_getParentNode = getParentNode()) === null || _getParentNode === void 0 || _getParentNode.append(dropdownMobileListWrapper);
276
- } else {
277
- var _getParentNode2;
278
- (_getParentNode2 = getParentNode()) === null || _getParentNode2 === void 0 || _getParentNode2.append(dropdownList);
279
- }
63
+ newObj.default = obj;
64
+ if (cache) {
65
+ cache.set(obj, newObj);
280
66
  }
281
- };
282
- const getListContainer = () => {
283
- return document.getElementById(dropdownId);
284
- };
285
- const getListContainerWrapper = () => {
286
- return document.getElementById("mlw-".concat(dropdownId));
287
- };
288
- const setListContainerStyles = () => {
289
- var _dropdownRef$current$, _dropdownListWrapperR, _getComputedStyle$mar, _getComputedStyle, _getComputedStyle$max, _getComputedStyle2, _sw$getBoundingClient, _dropdownListWrapperR2, _lh$getBoundingClient, _getComputedStyle$hei, _getComputedStyle3;
290
- const lc = getListContainer();
291
- if (!lc || !isOpen) return false;
292
- const windowHeight = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
293
- const {
294
- width,
295
- height,
296
- left,
297
- top
298
- } = (_dropdownRef$current$ = dropdownRef === null || dropdownRef === void 0 ? void 0 : dropdownRef.current.getBoundingClientRect()) !== null && _dropdownRef$current$ !== void 0 ? _dropdownRef$current$ : {};
299
- const sw = lc.getElementsByClassName("dropdown__list")[0];
300
- const lh = dropdownListWrapperRef === null || dropdownListWrapperRef === void 0 || (_dropdownListWrapperR = dropdownListWrapperRef.current) === null || _dropdownListWrapperR === void 0 ? void 0 : _dropdownListWrapperR.getElementsByClassName("dropdown__list-header")[0];
301
- const margin = parseInt((_getComputedStyle$mar = (_getComputedStyle = getComputedStyle(dropdownListWrapperRef === null || dropdownListWrapperRef === void 0 ? void 0 : dropdownListWrapperRef.current)) === null || _getComputedStyle === void 0 || (_getComputedStyle = _getComputedStyle.marginTop) === null || _getComputedStyle === void 0 ? void 0 : _getComputedStyle.replace("px", "")) !== null && _getComputedStyle$mar !== void 0 ? _getComputedStyle$mar : 0, 10);
302
- const maxHeight = initListHeight !== null && initListHeight !== void 0 ? initListHeight : parseInt((_getComputedStyle$max = (_getComputedStyle2 = getComputedStyle(sw)) === null || _getComputedStyle2 === void 0 || (_getComputedStyle2 = _getComputedStyle2.maxHeight) === null || _getComputedStyle2 === void 0 ? void 0 : _getComputedStyle2.replace("px", "")) !== null && _getComputedStyle$max !== void 0 ? _getComputedStyle$max : 0, 10);
303
- if (initListHeight === null) setInitListHeight(maxHeight);
304
- const toTop = top - margin;
305
- const toBottom = windowHeight - top - height - margin * 2;
306
- const swHeight = sw === null || sw === void 0 || (_sw$getBoundingClient = sw.getBoundingClientRect()) === null || _sw$getBoundingClient === void 0 ? void 0 : _sw$getBoundingClient.height;
307
- const maxSwHeight = isMobile ? (dropdownListWrapperRef === null || dropdownListWrapperRef === void 0 || (_dropdownListWrapperR2 = dropdownListWrapperRef.current) === null || _dropdownListWrapperR2 === void 0 || (_dropdownListWrapperR2 = _dropdownListWrapperR2.getBoundingClientRect()) === null || _dropdownListWrapperR2 === void 0 ? void 0 : _dropdownListWrapperR2.height) - (lh === null || lh === void 0 || (_lh$getBoundingClient = lh.getBoundingClientRect()) === null || _lh$getBoundingClient === void 0 ? void 0 : _lh$getBoundingClient.height) : toTop >= maxHeight || toBottom >= maxHeight ? maxHeight - 3 * margin : toTop > toBottom ? toTop - 3 * margin : toBottom - 4 * margin;
308
- const listPos = toTop < toBottom || toBottom >= swHeight ? "bottom" : "top";
309
- lc.style.minWidth = "".concat(width, "px");
310
- lc.style.left = "".concat(left, "px");
311
- lc.style.top = "".concat(listPos === "bottom" ? top + height : top - margin * 3 - parseInt((_getComputedStyle$hei = (_getComputedStyle3 = getComputedStyle(dropdownListWrapperRef === null || dropdownListWrapperRef === void 0 ? void 0 : dropdownListWrapperRef.current)) === null || _getComputedStyle3 === void 0 || (_getComputedStyle3 = _getComputedStyle3.height) === null || _getComputedStyle3 === void 0 ? void 0 : _getComputedStyle3.replace("px", "")) !== null && _getComputedStyle$hei !== void 0 ? _getComputedStyle$hei : 0, 10), "px");
312
- sw.style.maxHeight = "".concat(maxSwHeight, "px");
313
- };
314
- const renderListContainer = () => {
315
- const lc = getListContainer();
316
- if (!lc) return null;
317
- return /*#__PURE__*/(0, _reactDom.createPortal)(getListMarkUp(), lc);
318
- };
319
- const getSortedOptions = data => {
320
- let newData = [...data];
321
- if (sortAlphabetical) {
322
- const openModalOption = newData.filter(_ref3 => {
323
- let {
324
- value
325
- } = _ref3;
326
- return value === "open_modal";
327
- });
328
- const emptyOption = newData.filter(_ref4 => {
329
- let {
330
- value
331
- } = _ref4;
332
- return value === "";
333
- });
334
- const restOfOptions = newData.filter(_ref5 => {
335
- let {
336
- value
337
- } = _ref5;
338
- return value !== "open_modal" && value !== "";
339
- }).sort(_utils.compareAlphabetical);
340
- newData = [...openModalOption, ...emptyOption, ...restOfOptions].map(item => {
341
- if (item !== null && item !== void 0 && item.items) {
342
- item.items = [...item.items].sort(_utils.compareAlphabetical);
343
- }
344
- return item;
345
- });
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);
346
106
  }
347
- return newData;
348
- };
349
- const getListMarkUp = () => {
350
- var _getSortedOptions;
351
- return /*#__PURE__*/_react.default.createElement("div", {
352
- className: (0, _classnames.default)("".concat(RC, "__container-wrapper")),
353
- ref: wrapperRef,
354
- onClick: isMobile ? onWrapperClick : () => {}
355
- }, /*#__PURE__*/_react.default.createElement("div", {
356
- className: (0, _classnames.default)("".concat(RC, "__list-wrapper"), {
357
- ["".concat(RC, "__list-wrapper--fixed-height")]: isFixedMaxHeight,
358
- ["".concat(RC, "__list-wrapper--with-bottom-shadow")]: isScrollableList && isMobile,
359
- ["".concat(RC, "__list-wrapper--with-bottom-shadow-hidden")]: scrollTop === scrollHeight
360
- }),
361
- ref: dropdownListWrapperRef
362
- }, isMobile && /*#__PURE__*/_react.default.createElement("div", {
363
- className: (0, _classnames.default)("".concat(RC, "__list-header"), {
364
- ["".concat(RC, "__list-header-with-shadow")]: isScrollableList && isMobile,
365
- ["".concat(RC, "__list-header-with-shadow-hidden")]: scrollTop === 0
366
- })
367
- }, /*#__PURE__*/_react.default.createElement("div", {
368
- className: (0, _classnames.default)("".concat(RC, "__list-header-row"))
369
- }, /*#__PURE__*/_react.default.createElement("div", {
370
- className: (0, _classnames.default)("".concat(RC, "__list-label"))
371
- }, label), /*#__PURE__*/_react.default.createElement("div", {
372
- className: (0, _classnames.default)("".concat(RC, "__list-close-icon")),
373
- onClick: () => setIsOpen(false)
374
- }, /*#__PURE__*/_react.default.createElement(_reactFeather.X, {
375
- onClick: () => setIsOpen(false)
376
- }))), isSearchable && /*#__PURE__*/_react.default.createElement("div", {
377
- className: (0, _classnames.default)("".concat(RC, "__list-header-row"))
378
- }, /*#__PURE__*/_react.default.createElement(_Input.default, (0, _extends2.default)({
379
- ref: searchInputRef,
380
- className: "".concat(RC, "__input"),
381
- value: searchValue !== null && searchValue !== void 0 ? searchValue : selectedLabel,
382
- onChange: v => onSearchHandler(v),
383
- placeholder: placeholder || "Search",
384
- withDelete: true,
385
- onFocus: () => setIsSearchInputFocused(true),
386
- onBlur: () => setIsSearchInputFocused(false),
387
- onMouseDown: () => {
388
- if (!isOpen) {
389
- setIsSearchInputFocused(true);
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);
390
112
  }
391
- }
392
- }, attributesOfNativeInput)))), /*#__PURE__*/_react.default.createElement("div", {
393
- className: (0, _classnames.default)("".concat(RC, "__list"), {
394
- ["".concat(RC, "__list-top")]: isListTop
395
- }),
396
- ref: dropdownListRef
397
- }, (_getSortedOptions = getSortedOptions(depend.options)) === null || _getSortedOptions === void 0 ? void 0 : _getSortedOptions.map(option => {
398
- var _option$items, _option$label;
399
- if (option !== null && option !== void 0 && (_option$items = option.items) !== null && _option$items !== void 0 && _option$items.length) {
400
- if (!isSearchable || !isSearchChanged) {
401
- return filteredOptionList(option);
402
- } else {
403
- var _option$items2;
404
- const items = (_option$items2 = option.items) === null || _option$items2 === void 0 ? void 0 : _option$items2.slice().filter(el => {
405
- var _el$label2;
406
- return (el === null || el === void 0 || (_el$label2 = el.label) === null || _el$label2 === void 0 ? void 0 : _el$label2.toLowerCase().includes((searchValue === null || searchValue === void 0 ? void 0 : searchValue.toLowerCase()) || "")) || !(el !== null && el !== void 0 && el.value) || (el === null || el === void 0 ? void 0 : el.value) === "";
407
- });
408
- if (items !== null && items !== void 0 && items.length) return filteredOptionList({
409
- ...option,
410
- items
411
- });
412
- return null;
413
- }
414
- } else if (!isSearchable || !isSearchChanged || option !== null && option !== void 0 && (_option$label = option.label) !== null && _option$label !== void 0 && _option$label.toLowerCase().includes((searchValue === null || searchValue === void 0 ? void 0 : searchValue.toLowerCase()) || "") || !(option !== null && option !== void 0 && option.value) || (option === null || option === void 0 ? void 0 : option.value) === "") {
415
- return getMarkupForElement(option);
416
- }
417
- }), !filteredItems.length && !filteredGroups.length && /*#__PURE__*/_react.default.createElement("div", {
418
- className: "".concat(RC, "__list-item ").concat(RC, "__list-item--no-options")
419
- }, noOptionsText), disabled && isOpen && /*#__PURE__*/_react.default.createElement(_DropdownLoader.default, null))));
420
- };
421
- const toggleList = e => {
422
- e === null || e === void 0 || e.stopPropagation();
423
- setIsOpen(isOpen => {
424
- 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;
425
120
  });
426
- };
427
- const closeList = isOpen ? handleClickOutside : () => {};
428
- (0, _react.useEffect)(() => {
429
- if (!isDoNotPullOutListOfMainContainer || dropdownRef.current) {
430
- initListContainer();
431
- if (isDefaultOpened && !isMobileProp) setIsOpen(true);
432
- }
433
- }, [isDoNotPullOutListOfMainContainer, dropdownRef.current]);
434
- (0, _react.useLayoutEffect)(() => {
435
- var _getListContainer3;
436
- if (!isMobile) {
437
- window.addEventListener("resize", setListContainerStyles);
438
- window.addEventListener("mousewheel", closeList);
439
- window.addEventListener("scroll", closeList);
440
- window.addEventListener("touchmove", closeList);
441
- } else {
442
- window.removeEventListener("resize", setListContainerStyles);
443
- window.removeEventListener("mousewheel", closeList);
444
- window.removeEventListener("scroll", closeList);
445
- window.removeEventListener("touchmove", closeList);
446
- }
447
- (_getListContainer3 = getListContainer()) === null || _getListContainer3 === void 0 || _getListContainer3.addEventListener("click", closeList);
448
- return () => {
449
- var _getListContainer4;
450
- window.removeEventListener("resize", setListContainerStyles);
451
- window.removeEventListener("mousewheel", closeList);
452
- window.removeEventListener("scroll", closeList);
453
- window.removeEventListener("touchmove", closeList);
454
- (_getListContainer4 = getListContainer()) === null || _getListContainer4 === void 0 || _getListContainer4.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);
455
150
  };
456
- }, [getListContainer]);
457
- (0, _react.useLayoutEffect)(() => {
458
- setListContainerStyles();
459
- }, [isOpen, searchValue, isMobile, options, dropdownListWrapperRef === null || dropdownListWrapperRef === void 0 || (_dropdownListWrapperR3 = dropdownListWrapperRef.current) === null || _dropdownListWrapperR3 === void 0 || (_dropdownListWrapperR3 = _dropdownListWrapperR3.getBoundingClientRect()) === null || _dropdownListWrapperR3 === void 0 ? void 0 : _dropdownListWrapperR3.height]);
460
- (0, _react.useEffect)(() => {
461
- document.addEventListener("click", handleClickOutside, true);
462
- return () => document.removeEventListener("click", handleClickOutside, true);
463
- }, []);
464
- (0, _react.useEffect)(() => {
465
- if (!isOpen) {
466
- setIsSearchChanged(false);
467
- }
468
- if (scrollReactionObj && typeof scrollReactionObj === "object" && isOpen && dropdownListRef && dropdownListRef.current) {
469
- dropdownListRef.current.addEventListener("scroll", doScrollCallback);
470
- }
471
- return () => {
472
- 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);
473
157
  };
474
- }, [isOpen, dropdownListRef]);
475
- (0, _react.useEffect)(() => {
476
- if (!searchValue && isSearchInputFocused) {
477
- setSearchValue(selectedLabel);
478
- setTimeout(() => searchInputRef.current.select(), 1);
479
- }
480
- if (!isSearchInputFocused && !isOpen) {
481
- setSearchValue(null);
482
- }
483
- }, [isSearchInputFocused]);
484
- (0, _react.useEffect)(() => {
485
- var _searchInputRef$curre;
486
- if (isOpen && !isSearchInputFocused && searchInputRef !== null && searchInputRef !== void 0 && searchInputRef.current && !isMobile) searchInputRef === null || searchInputRef === void 0 || (_searchInputRef$curre = searchInputRef.current) === null || _searchInputRef$curre === void 0 || _searchInputRef$curre.focus();
487
- if (isOpen) {
488
- var _getListContainer5;
489
- (_getListContainer5 = getListContainer()) === null || _getListContainer5 === void 0 || _getListContainer5.classList.add("dropdown__container--opened");
490
- } else {
491
- var _searchInputRef$curre2, _getListContainer6;
492
- searchInputRef === null || searchInputRef === void 0 || (_searchInputRef$curre2 = searchInputRef.current) === null || _searchInputRef$curre2 === void 0 || _searchInputRef$curre2.blur();
493
- (_getListContainer6 = getListContainer()) === null || _getListContainer6 === void 0 || _getListContainer6.classList.remove("dropdown__container--opened");
494
- }
495
- if (!isOpen && isMobile) {
496
- setSearchValue(null);
497
- }
498
- }, [isOpen]);
499
- (0, _react.useEffect)(() => {
500
- if (isOpen && isMobile && dropdownListRef !== null && dropdownListRef !== void 0 && dropdownListRef.current && !searchValue) {
501
- var _dropdownListRef$curr, _dropdownListRef$curr2, _dropdownListRef$curr3, _dropdownListRef$curr4;
502
- setIsScrollableList((dropdownListRef === null || dropdownListRef === void 0 || (_dropdownListRef$curr = dropdownListRef.current) === null || _dropdownListRef$curr === void 0 ? void 0 : _dropdownListRef$curr.scrollHeight) > (dropdownListRef === null || dropdownListRef === void 0 || (_dropdownListRef$curr2 = dropdownListRef.current) === null || _dropdownListRef$curr2 === void 0 ? void 0 : _dropdownListRef$curr2.clientHeight));
503
- setIsFixedMaxHeight(isScrollableList || (dropdownListRef === null || dropdownListRef === void 0 || (_dropdownListRef$curr3 = dropdownListRef.current) === null || _dropdownListRef$curr3 === void 0 ? void 0 : _dropdownListRef$curr3.scrollHeight) > (dropdownListRef === null || dropdownListRef === void 0 || (_dropdownListRef$curr4 = dropdownListRef.current) === null || _dropdownListRef$curr4 === void 0 ? void 0 : _dropdownListRef$curr4.clientHeight));
504
- }
505
- }, [isOpen, isMobile, isScrollableList, dropdownListRef === null || dropdownListRef === void 0 ? void 0 : dropdownListRef.current, dropdownListRef === null || dropdownListRef === void 0 || (_dropdownListRef$curr5 = dropdownListRef.current) === null || _dropdownListRef$curr5 === void 0 ? void 0 : _dropdownListRef$curr5.scrollHeight, dropdownListRef === null || dropdownListRef === void 0 || (_dropdownListRef$curr6 = dropdownListRef.current) === null || _dropdownListRef$curr6 === void 0 ? void 0 : _dropdownListRef$curr6.clientHeight]);
506
- (0, _react.useEffect)(() => {
507
- const setScrollTopValue = e => {
508
- 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);
509
164
  };
510
- if (isOpen && isMobile && dropdownListRef !== null && dropdownListRef !== void 0 && dropdownListRef.current) {
511
- var _dropdownListRef$curr7;
512
- dropdownListRef === null || dropdownListRef === void 0 || (_dropdownListRef$curr7 = dropdownListRef.current) === null || _dropdownListRef$curr7 === void 0 || _dropdownListRef$curr7.addEventListener("scroll", setScrollTopValue);
513
- }
514
- return () => {
515
- var _dropdownListRef$curr8;
516
- dropdownListRef === null || dropdownListRef === void 0 || (_dropdownListRef$curr8 = dropdownListRef.current) === null || _dropdownListRef$curr8 === void 0 || _dropdownListRef$curr8.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
+ };
517
189
  };
518
- }, [isOpen, isMobile, dropdownListRef === null || dropdownListRef === void 0 ? void 0 : dropdownListRef.current]);
519
- (0, _react.useEffect)(() => {
520
- if (dropdownListRef !== null && dropdownListRef !== void 0 && dropdownListRef.current) {
521
- var _dropdownListRef$curr9, _dropdownListRef$curr10;
522
- setScrollHeight(parseInt((dropdownListRef === null || dropdownListRef === void 0 || (_dropdownListRef$curr9 = dropdownListRef.current) === null || _dropdownListRef$curr9 === void 0 ? void 0 : _dropdownListRef$curr9.scrollHeight) - (dropdownListRef === null || dropdownListRef === void 0 || (_dropdownListRef$curr10 = dropdownListRef.current) === null || _dropdownListRef$curr10 === void 0 ? void 0 : _dropdownListRef$curr10.clientHeight), 10));
523
- }
524
- }, [scrollTop, dropdownListRef === null || dropdownListRef === void 0 ? void 0 : dropdownListRef.current]);
525
- (0, _react.useEffect)(() => {
526
- return () => {
527
- var _getListContainer7, _getListContainerWrap;
528
- (_getListContainer7 = getListContainer()) === null || _getListContainer7 === void 0 || _getListContainer7.remove();
529
- (_getListContainerWrap = getListContainerWrapper()) === null || _getListContainerWrap === void 0 || _getListContainerWrap.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
+ }
530
195
  };
531
- }, []);
532
- const postfixText = selectedLabel && ((_filteredOptions$find = filteredOptions.find(option => option.value === value)) === null || _filteredOptions$find === void 0 ? void 0 : _filteredOptions$find.postfix) || null;
533
- return /*#__PURE__*/_react.default.createElement("div", {
534
- className: (0, _classnames.default)(RC, className, {
535
- disabled,
536
- ["".concat(RC, "-mobile")]: isMobile,
537
- ["".concat(RC, "--focused")]: isOpen && !isMobile,
538
- ["".concat(RC, "--with-custom-trigger")]: Boolean(customTrigger)
539
- }),
540
- ref: dropdownRef,
541
- onKeyDown: onKeyDown,
542
- onKeyUp: onKeyUp
543
- }, /*#__PURE__*/_react.default.createElement("button", {
544
- "data-testid": testId,
545
- className: (0, _classnames.default)("".concat(RC, "__trigger"), "input__wrap", {
546
- ["".concat(RC, "__trigger--with-actions")]: withActions,
547
- placeholder: !value,
548
- error: error
549
- }),
550
- onClick: () => setIsOpen(true),
551
- onKeyDown: onKeyDown,
552
- onKeyUp: onKeyUp,
553
- tabIndex: tabIndex === null || tabIndex === void 0 || (_tabIndex$toString = tabIndex.toString) === null || _tabIndex$toString === void 0 ? void 0 : _tabIndex$toString.call(tabIndex)
554
- }, customTrigger || /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, isSearchable && !isMobile ? /*#__PURE__*/_react.default.createElement("input", (0, _extends2.default)({
555
- ref: searchInputRef,
556
- className: "".concat(RC, "__input"),
557
- value: isOpen ? searchValue !== null && searchValue !== void 0 ? searchValue : "" : selectedLabel || "",
558
- onChange: e => onSearchHandler(e.target.value),
559
- placeholder: placeholder,
560
- onFocus: () => setIsSearchInputFocused(true),
561
- onBlur: () => setIsSearchInputFocused(false),
562
- onMouseDown: () => {
563
- if (!isOpen) {
564
- setIsSearchInputFocused(true);
565
- }
566
- }
567
- }, attributesOfNativeInput, {
568
- tabIndex: -1
569
- })) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("span", {
570
- className: "text"
571
- }, selectedLabel || placeholder), postfixText && /*#__PURE__*/_react.default.createElement("span", {
572
- className: "dropdown__list-item-postfix"
573
- }, postfixText)), /*#__PURE__*/_react.default.createElement("span", {
574
- className: (0, _classnames.default)("".concat(RC, "__arrow"), {
575
- ["".concat(RC, "__arrow_active")]: isOpen
576
- }),
577
- onClick: toggleList
578
- }, isMobile ? /*#__PURE__*/_react.default.createElement(_reactFeather.Code, {
579
- className: "mobile-icon"
580
- }) : isOpen ? /*#__PURE__*/_react.default.createElement(_reactFeather.ChevronUp, null) : /*#__PURE__*/_react.default.createElement(_reactFeather.ChevronDown, null)))), withActions && /*#__PURE__*/_react.default.createElement("div", {
581
- className: (0, _classnames.default)("".concat(RC, "__actions"))
582
- }, /*#__PURE__*/_react.default.createElement("div", {
583
- className: (0, _classnames.default)("".concat(RC, "__actions-item")),
584
- onClick: onActionConfirmClick
585
- }, /*#__PURE__*/_react.default.createElement(_reactFeather.Check, null)), /*#__PURE__*/_react.default.createElement("div", {
586
- className: (0, _classnames.default)("".concat(RC, "__actions-item")),
587
- onClick: onActionCancelClick
588
- }, /*#__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
+ });
589
698
  };
590
- var _default = exports.default = Dropdown;
699
+ const _default = Dropdown;