@true-engineering/true-react-common-ui-kit 3.9.1 → 3.9.2

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 (625) hide show
  1. package/LICENSE +201 -201
  2. package/README.md +7 -1
  3. package/dist/components/AccountInfo/AccountInfo.d.ts +11 -11
  4. package/dist/components/AccountInfo/AccountInfo.stories.d.ts +6 -8
  5. package/dist/components/AccountInfo/AccountInfo.styles.d.ts +6 -6
  6. package/dist/components/AccountInfo/constants.d.ts +1 -1
  7. package/dist/components/AccountInfo/index.d.ts +2 -2
  8. package/dist/components/AddButton/AddButton.d.ts +14 -14
  9. package/dist/components/AddButton/AddButton.stories.d.ts +6 -8
  10. package/dist/components/AddButton/AddButton.styles.d.ts +3 -3
  11. package/dist/components/AddButton/index.d.ts +2 -2
  12. package/dist/components/Button/Button.d.ts +41 -41
  13. package/dist/components/Button/Button.stories.d.ts +6 -6
  14. package/dist/components/Button/Button.styles.d.ts +8 -8
  15. package/dist/components/Button/constants.d.ts +1 -1
  16. package/dist/components/Button/index.d.ts +3 -3
  17. package/dist/components/Button/types.d.ts +3 -3
  18. package/dist/components/Checkbox/Checkbox.d.ts +23 -23
  19. package/dist/components/Checkbox/Checkbox.stories.d.ts +5 -5
  20. package/dist/components/Checkbox/Checkbox.styles.d.ts +3 -3
  21. package/dist/components/Checkbox/index.d.ts +2 -2
  22. package/dist/components/CloseButton/CloseButton.d.ts +9 -9
  23. package/dist/components/CloseButton/CloseButton.styles.d.ts +3 -3
  24. package/dist/components/CloseButton/index.d.ts +2 -2
  25. package/dist/components/Colors/Colors.d.ts +2 -2
  26. package/dist/components/Colors/Colors.stories.d.ts +5 -5
  27. package/dist/components/Colors/Colors.styles.d.ts +1 -1
  28. package/dist/components/Colors/index.d.ts +1 -1
  29. package/dist/components/CssBaseline/CssBaseline.d.ts +5 -5
  30. package/dist/components/CssBaseline/CssBaseline.styles.d.ts +3 -3
  31. package/dist/components/CssBaseline/index.d.ts +2 -2
  32. package/dist/components/DateInput/DateInput.d.ts +17 -17
  33. package/dist/components/DateInput/DateInput.stories.d.ts +7 -8
  34. package/dist/components/DateInput/DateInput.styles.d.ts +6 -6
  35. package/dist/components/DateInput/constants.d.ts +2 -2
  36. package/dist/components/DateInput/index.d.ts +3 -3
  37. package/dist/components/DatePicker/DatePicker.d.ts +26 -26
  38. package/dist/components/DatePicker/DatePicker.stories.d.ts +7 -8
  39. package/dist/components/DatePicker/DatePicker.styles.d.ts +6 -6
  40. package/dist/components/DatePicker/components/DatePickerHeader/DatePickerHeader.d.ts +8 -8
  41. package/dist/components/DatePicker/components/DatePickerHeader/DatePickerHeader.styles.d.ts +7 -7
  42. package/dist/components/DatePicker/components/DatePickerHeader/index.d.ts +2 -2
  43. package/dist/components/DatePicker/components/PopperContainer/PopperContainer.d.ts +4 -4
  44. package/dist/components/DatePicker/components/PopperContainer/index.d.ts +1 -1
  45. package/dist/components/DatePicker/components/index.d.ts +2 -2
  46. package/dist/components/DatePicker/constants.d.ts +3 -3
  47. package/dist/components/DatePicker/helpers.d.ts +3 -3
  48. package/dist/components/DatePicker/index.d.ts +4 -4
  49. package/dist/components/DatePicker/types.d.ts +4 -4
  50. package/dist/components/Description/Description.d.ts +13 -13
  51. package/dist/components/Description/Description.stories.d.ts +16 -18
  52. package/dist/components/Description/Description.styles.d.ts +3 -3
  53. package/dist/components/Description/constants.d.ts +1 -1
  54. package/dist/components/Description/index.d.ts +2 -2
  55. package/dist/components/FiltersPane/FiltersPane.d.ts +22 -22
  56. package/dist/components/FiltersPane/FiltersPane.stories.d.ts +31 -33
  57. package/dist/components/FiltersPane/FiltersPane.styles.d.ts +9 -9
  58. package/dist/components/FiltersPane/components/Filter/Filter.d.ts +12 -12
  59. package/dist/components/FiltersPane/components/Filter/index.d.ts +1 -1
  60. package/dist/components/FiltersPane/components/FilterInterval/FilterInterval.d.ts +24 -24
  61. package/dist/components/FiltersPane/components/FilterInterval/FilterInterval.styles.d.ts +15 -15
  62. package/dist/components/FiltersPane/components/FilterInterval/index.d.ts +2 -2
  63. package/dist/components/FiltersPane/components/FilterMultiSelect/FilterMultiSelect.d.ts +5 -5
  64. package/dist/components/FiltersPane/components/FilterMultiSelect/index.d.ts +1 -1
  65. package/dist/components/FiltersPane/components/FilterSelect/FilterSelect.d.ts +29 -29
  66. package/dist/components/FiltersPane/components/FilterSelect/FilterSelect.styles.d.ts +15 -15
  67. package/dist/components/FiltersPane/components/FilterSelect/index.d.ts +2 -2
  68. package/dist/components/FiltersPane/components/FilterValueView/FilterValueView.d.ts +5 -5
  69. package/dist/components/FiltersPane/components/FilterValueView/FilterValueView.styles.d.ts +3 -3
  70. package/dist/components/FiltersPane/components/FilterValueView/index.d.ts +2 -2
  71. package/dist/components/FiltersPane/components/FilterWithDates/FilterWithDates.d.ts +16 -16
  72. package/dist/components/FiltersPane/components/FilterWithDates/FilterWithDates.styles.d.ts +26 -26
  73. package/dist/components/FiltersPane/components/FilterWithDates/index.d.ts +2 -2
  74. package/dist/components/FiltersPane/components/FilterWithPeriod/FilterWithPeriod.d.ts +13 -13
  75. package/dist/components/FiltersPane/components/FilterWithPeriod/FilterWithPeriod.styles.d.ts +7 -7
  76. package/dist/components/FiltersPane/components/FilterWithPeriod/index.d.ts +2 -2
  77. package/dist/components/FiltersPane/components/FilterWrapper/FilterWrapper.d.ts +14 -14
  78. package/dist/components/FiltersPane/components/FilterWrapper/FilterWrapper.styles.d.ts +6 -6
  79. package/dist/components/FiltersPane/components/FilterWrapper/index.d.ts +2 -2
  80. package/dist/components/FiltersPane/components/FiltersPaneSearch/FiltersPaneSearch.d.ts +21 -21
  81. package/dist/components/FiltersPane/components/FiltersPaneSearch/FiltersPaneSearch.styles.d.ts +10 -10
  82. package/dist/components/FiltersPane/components/FiltersPaneSearch/index.d.ts +2 -2
  83. package/dist/components/FiltersPane/components/index.d.ts +9 -9
  84. package/dist/components/FiltersPane/constants.d.ts +9 -9
  85. package/dist/components/FiltersPane/helpers.d.ts +5 -5
  86. package/dist/components/FiltersPane/index.d.ts +4 -4
  87. package/dist/components/FiltersPane/types.d.ts +107 -107
  88. package/dist/components/Flag/Flag.d.ts +8 -8
  89. package/dist/components/Flag/Flag.stories.d.ts +12 -14
  90. package/dist/components/Flag/Flag.styles.d.ts +3 -3
  91. package/dist/components/Flag/index.d.ts +2 -2
  92. package/dist/components/FlexibleTable/FlexibleTable.d.ts +22 -22
  93. package/dist/components/FlexibleTable/FlexibleTable.stories.d.ts +15 -18
  94. package/dist/components/FlexibleTable/FlexibleTable.styles.d.ts +7 -7
  95. package/dist/components/FlexibleTable/components/FlexibleTableCell/FlexibleTableCell.d.ts +14 -14
  96. package/dist/components/FlexibleTable/components/FlexibleTableCell/FlexibleTableCell.styles.d.ts +3 -3
  97. package/dist/components/FlexibleTable/components/FlexibleTableCell/index.d.ts +2 -2
  98. package/dist/components/FlexibleTable/components/FlexibleTableRow/FlexibleTableRow.d.ts +28 -28
  99. package/dist/components/FlexibleTable/components/FlexibleTableRow/FlexibleTableRow.styles.d.ts +6 -6
  100. package/dist/components/FlexibleTable/components/FlexibleTableRow/index.d.ts +2 -2
  101. package/dist/components/FlexibleTable/components/index.d.ts +2 -2
  102. package/dist/components/FlexibleTable/constants.d.ts +1 -1
  103. package/dist/components/FlexibleTable/helpers.d.ts +3 -3
  104. package/dist/components/FlexibleTable/index.d.ts +4 -4
  105. package/dist/components/FlexibleTable/types.d.ts +44 -44
  106. package/dist/components/Icon/Icon.d.ts +8 -8
  107. package/dist/components/Icon/Icon.stories.d.ts +6 -6
  108. package/dist/components/Icon/Icon.styles.d.ts +3 -3
  109. package/dist/components/Icon/complexIcons/icons.d.ts +3 -3
  110. package/dist/components/Icon/complexIcons/index.d.ts +1 -1
  111. package/dist/components/Icon/components/ComplexIconBoilerplate/ComplexIconBoilerplate.d.ts +6 -6
  112. package/dist/components/Icon/components/ComplexIconBoilerplate/index.d.ts +1 -1
  113. package/dist/components/Icon/components/IconBolerplate/IconBoilerplate.d.ts +6 -6
  114. package/dist/components/Icon/components/IconBolerplate/index.d.ts +1 -1
  115. package/dist/components/Icon/components/index.d.ts +2 -2
  116. package/dist/components/Icon/helpers.d.ts +6 -6
  117. package/dist/components/Icon/icons-list.d.ts +1 -1
  118. package/dist/components/Icon/index.d.ts +5 -5
  119. package/dist/components/Icon/snippet.d.ts +3 -3
  120. package/dist/components/Icon/types.d.ts +13 -13
  121. package/dist/components/IncrementInput/IncrementInput.d.ts +9 -9
  122. package/dist/components/IncrementInput/IncrementInput.stories.d.ts +6 -8
  123. package/dist/components/IncrementInput/IncrementInput.styles.d.ts +9 -9
  124. package/dist/components/IncrementInput/index.d.ts +2 -2
  125. package/dist/components/Input/Input.d.ts +52 -52
  126. package/dist/components/Input/Input.stories.d.ts +34 -35
  127. package/dist/components/Input/Input.styles.d.ts +7 -7
  128. package/dist/components/Input/constants.d.ts +1 -1
  129. package/dist/components/Input/index.d.ts +3 -3
  130. package/dist/components/Input/types.d.ts +4 -4
  131. package/dist/components/List/List.d.ts +9 -9
  132. package/dist/components/List/List.stories.d.ts +5 -6
  133. package/dist/components/List/List.styles.d.ts +3 -3
  134. package/dist/components/List/components/ListItem/ListItem.d.ts +15 -15
  135. package/dist/components/List/components/ListItem/ListItem.styles.d.ts +3 -3
  136. package/dist/components/List/components/ListItem/index.d.ts +2 -2
  137. package/dist/components/List/components/index.d.ts +1 -1
  138. package/dist/components/List/index.d.ts +3 -3
  139. package/dist/components/Modal/Modal.d.ts +32 -32
  140. package/dist/components/Modal/Modal.stories.d.ts +29 -30
  141. package/dist/components/Modal/Modal.styles.d.ts +6 -6
  142. package/dist/components/Modal/index.d.ts +3 -3
  143. package/dist/components/Modal/types.d.ts +3 -3
  144. package/dist/components/MoreMenu/MoreMenu.d.ts +15 -15
  145. package/dist/components/MoreMenu/MoreMenu.stories.d.ts +6 -8
  146. package/dist/components/MoreMenu/MoreMenu.styles.d.ts +6 -6
  147. package/dist/components/MoreMenu/index.d.ts +2 -2
  148. package/dist/components/MultiSelect/MultiSelect.d.ts +23 -23
  149. package/dist/components/MultiSelect/MultiSelect.stories.d.ts +13 -14
  150. package/dist/components/MultiSelect/MultiSelect.styles.d.ts +7 -7
  151. package/dist/components/MultiSelect/components/MultiSelectInput/MultiSelectInput.d.ts +12 -12
  152. package/dist/components/MultiSelect/components/MultiSelectInput/MultiSelectInput.styles.d.ts +3 -3
  153. package/dist/components/MultiSelect/components/MultiSelectInput/index.d.ts +2 -2
  154. package/dist/components/MultiSelect/components/index.d.ts +1 -1
  155. package/dist/components/MultiSelect/index.d.ts +4 -4
  156. package/dist/components/MultiSelect/types.d.ts +1 -1
  157. package/dist/components/MultiSelectList/MultiSelectList.d.ts +25 -25
  158. package/dist/components/MultiSelectList/MultiSelectList.styles.d.ts +13 -13
  159. package/dist/components/MultiSelectList/constants.d.ts +3 -3
  160. package/dist/components/MultiSelectList/helpers.d.ts +3 -3
  161. package/dist/components/MultiSelectList/index.d.ts +3 -3
  162. package/dist/components/MultiSelectList/types.d.ts +12 -12
  163. package/dist/components/NewMoreMenu/NewMoreMenu.d.ts +15 -15
  164. package/dist/components/NewMoreMenu/NewMoreMenu.stories.d.ts +12 -14
  165. package/dist/components/NewMoreMenu/NewMoreMenu.styles.d.ts +8 -8
  166. package/dist/components/NewMoreMenu/index.d.ts +2 -2
  167. package/dist/components/Notification/Notification.d.ts +15 -15
  168. package/dist/components/Notification/Notification.stories.d.ts +8 -8
  169. package/dist/components/Notification/Notification.styles.d.ts +3 -3
  170. package/dist/components/Notification/index.d.ts +3 -3
  171. package/dist/components/Notification/types.d.ts +1 -1
  172. package/dist/components/NumberInput/NumberInput.d.ts +18 -18
  173. package/dist/components/NumberInput/NumberInput.stories.d.ts +7 -8
  174. package/dist/components/NumberInput/helpers.d.ts +4 -4
  175. package/dist/components/NumberInput/index.d.ts +1 -1
  176. package/dist/components/PhoneInput/PhoneInput.d.ts +17 -17
  177. package/dist/components/PhoneInput/PhoneInput.stories.d.ts +28 -30
  178. package/dist/components/PhoneInput/PhoneInput.styles.d.ts +9 -9
  179. package/dist/components/PhoneInput/components/PhoneInputCountryList/PhoneInputCountryList.d.ts +13 -13
  180. package/dist/components/PhoneInput/components/PhoneInputCountryList/PhoneInputCountryList.stories.d.ts +5 -6
  181. package/dist/components/PhoneInput/components/PhoneInputCountryList/PhoneInputCountryList.styles.d.ts +7 -7
  182. package/dist/components/PhoneInput/components/PhoneInputCountryList/index.d.ts +2 -2
  183. package/dist/components/PhoneInput/components/index.d.ts +1 -1
  184. package/dist/components/PhoneInput/constants.d.ts +2 -2
  185. package/dist/components/PhoneInput/index.d.ts +4 -4
  186. package/dist/components/PhoneInput/types.d.ts +15 -15
  187. package/dist/components/RadioButton/RadioButton.d.ts +15 -15
  188. package/dist/components/RadioButton/RadioButton.stories.d.ts +7 -8
  189. package/dist/components/RadioButton/RadioButton.styles.d.ts +3 -3
  190. package/dist/components/RadioButton/index.d.ts +2 -2
  191. package/dist/components/ScrollIntoViewIfNeeded/ScrollIntoViewIfNeeded.d.ts +386 -382
  192. package/dist/components/ScrollIntoViewIfNeeded/constants.d.ts +3 -3
  193. package/dist/components/ScrollIntoViewIfNeeded/index.d.ts +1 -1
  194. package/dist/components/SearchInput/SearchInput.d.ts +6 -6
  195. package/dist/components/SearchInput/SearchInput.stories.d.ts +13 -8
  196. package/dist/components/SearchInput/SearchInput.styles.d.ts +7 -7
  197. package/dist/components/SearchInput/index.d.ts +2 -2
  198. package/dist/components/Select/CustomSelect.stories.d.ts +11 -14
  199. package/dist/components/Select/MultiSelect.stories.d.ts +15 -18
  200. package/dist/components/Select/Select.d.ts +47 -47
  201. package/dist/components/Select/Select.stories.d.ts +15 -18
  202. package/dist/components/Select/Select.styles.d.ts +33 -33
  203. package/dist/components/Select/components/SelectList/SelectList.d.ts +22 -22
  204. package/dist/components/Select/components/SelectList/SelectList.styles.d.ts +6 -6
  205. package/dist/components/Select/components/SelectList/index.d.ts +2 -2
  206. package/dist/components/Select/components/SelectListItem/SelectListItem.d.ts +14 -14
  207. package/dist/components/Select/components/SelectListItem/SelectListItem.styles.d.ts +2 -2
  208. package/dist/components/Select/components/SelectListItem/index.d.ts +1 -1
  209. package/dist/components/Select/components/index.d.ts +2 -2
  210. package/dist/components/Select/constants.d.ts +2 -2
  211. package/dist/components/Select/helpers.d.ts +7 -7
  212. package/dist/components/Select/index.d.ts +4 -4
  213. package/dist/components/Select/types.d.ts +1 -1
  214. package/dist/components/Selector/Selector.d.ts +22 -22
  215. package/dist/components/Selector/Selector.stories.d.ts +7 -8
  216. package/dist/components/Selector/Selector.styles.d.ts +9 -9
  217. package/dist/components/Selector/index.d.ts +2 -2
  218. package/dist/components/Selector/types.d.ts +10 -10
  219. package/dist/components/Skeleton/Skeleton.d.ts +7 -7
  220. package/dist/components/Skeleton/Skeleton.stories.d.ts +6 -8
  221. package/dist/components/Skeleton/Skeleton.styles.d.ts +3 -3
  222. package/dist/components/Skeleton/index.d.ts +2 -2
  223. package/dist/components/SmartInput/SmartInput.d.ts +12 -12
  224. package/dist/components/SmartInput/SmartInput.stories.d.ts +18 -19
  225. package/dist/components/SmartInput/constants.d.ts +18 -18
  226. package/dist/components/SmartInput/helpers.d.ts +4 -4
  227. package/dist/components/SmartInput/index.d.ts +2 -2
  228. package/dist/components/SmartInput/types.d.ts +1 -1
  229. package/dist/components/Status/Status.d.ts +16 -16
  230. package/dist/components/Status/Status.stories.d.ts +6 -8
  231. package/dist/components/Status/Status.styles.d.ts +3 -3
  232. package/dist/components/Status/constants.d.ts +2 -2
  233. package/dist/components/Status/index.d.ts +2 -2
  234. package/dist/components/Status/types.d.ts +3 -3
  235. package/dist/components/Switch/Switch.d.ts +20 -20
  236. package/dist/components/Switch/Switch.stories.d.ts +16 -17
  237. package/dist/components/Switch/Switch.styles.d.ts +3 -3
  238. package/dist/components/Switch/index.d.ts +3 -3
  239. package/dist/components/Switch/types.d.ts +4 -4
  240. package/dist/components/TextArea/TextArea.d.ts +36 -36
  241. package/dist/components/TextArea/TextArea.stories.d.ts +16 -18
  242. package/dist/components/TextArea/TextArea.styles.d.ts +3 -3
  243. package/dist/components/TextArea/index.d.ts +2 -2
  244. package/dist/components/TextButton/TextButton.d.ts +30 -30
  245. package/dist/components/TextButton/TextButton.stories.d.ts +5 -6
  246. package/dist/components/TextButton/TextButton.styles.d.ts +7 -7
  247. package/dist/components/TextButton/index.d.ts +3 -3
  248. package/dist/components/TextWithInfo/TextWithInfo.d.ts +15 -15
  249. package/dist/components/TextWithInfo/TextWithInfo.stories.d.ts +12 -13
  250. package/dist/components/TextWithInfo/TextWithInfo.styles.d.ts +3 -3
  251. package/dist/components/TextWithInfo/index.d.ts +2 -2
  252. package/dist/components/TextWithTooltip/TextWithTooltip.d.ts +26 -26
  253. package/dist/components/TextWithTooltip/TextWithTooltip.stories.d.ts +24 -26
  254. package/dist/components/TextWithTooltip/TextWithTooltip.styles.d.ts +6 -6
  255. package/dist/components/TextWithTooltip/index.d.ts +2 -2
  256. package/dist/components/ThemedPreloader/ThemedPreloader.d.ts +11 -11
  257. package/dist/components/ThemedPreloader/ThemedPreloader.stories.d.ts +17 -18
  258. package/dist/components/ThemedPreloader/ThemedPreloader.styles.d.ts +7 -7
  259. package/dist/components/ThemedPreloader/components/DefaultPreloader/DefaultPreloader.d.ts +2 -2
  260. package/dist/components/ThemedPreloader/components/DefaultPreloader/index.d.ts +1 -1
  261. package/dist/components/ThemedPreloader/components/DotsPreloader/DotsPreloader.d.ts +5 -5
  262. package/dist/components/ThemedPreloader/components/DotsPreloader/DotsPreloader.styles.d.ts +3 -3
  263. package/dist/components/ThemedPreloader/components/DotsPreloader/index.d.ts +2 -2
  264. package/dist/components/ThemedPreloader/components/SvgPreloader/SvgPreloader.d.ts +8 -8
  265. package/dist/components/ThemedPreloader/components/SvgPreloader/SvgPreloader.styles.d.ts +3 -3
  266. package/dist/components/ThemedPreloader/components/SvgPreloader/index.d.ts +2 -2
  267. package/dist/components/ThemedPreloader/components/index.d.ts +3 -3
  268. package/dist/components/ThemedPreloader/constants.d.ts +1 -1
  269. package/dist/components/ThemedPreloader/index.d.ts +4 -4
  270. package/dist/components/ThemedPreloader/types.d.ts +2 -2
  271. package/dist/components/Toaster/Toaster.d.ts +23 -23
  272. package/dist/components/Toaster/Toaster.stories.d.ts +5 -6
  273. package/dist/components/Toaster/Toaster.styles.d.ts +6 -6
  274. package/dist/components/Toaster/constants.d.ts +1 -1
  275. package/dist/components/Toaster/index.d.ts +3 -3
  276. package/dist/components/Toaster/types.d.ts +1 -1
  277. package/dist/components/Tooltip/Tooltip.d.ts +11 -11
  278. package/dist/components/Tooltip/Tooltip.stories.d.ts +5 -6
  279. package/dist/components/Tooltip/Tooltip.styles.d.ts +3 -3
  280. package/dist/components/Tooltip/index.d.ts +3 -3
  281. package/dist/components/Tooltip/types.d.ts +1 -1
  282. package/dist/components/WithPopup/WithPopup.d.ts +30 -30
  283. package/dist/components/WithPopup/WithPopup.stories.d.ts +16 -18
  284. package/dist/components/WithPopup/WithPopup.styles.d.ts +3 -3
  285. package/dist/components/WithPopup/constants.d.ts +2 -2
  286. package/dist/components/WithPopup/index.d.ts +2 -2
  287. package/dist/components/WithPopup/types.d.ts +2 -2
  288. package/dist/components/index.d.ts +42 -42
  289. package/dist/constants/index.d.ts +1 -1
  290. package/dist/constants/phone-info.d.ts +2 -2
  291. package/dist/helpers/index.d.ts +3 -3
  292. package/dist/helpers/misc.d.ts +19 -19
  293. package/dist/helpers/phone.d.ts +14 -14
  294. package/dist/helpers/popper-helpers.d.ts +2 -2
  295. package/dist/hooks/index.d.ts +7 -7
  296. package/dist/hooks/use-did-mount-effect.d.ts +2 -2
  297. package/dist/hooks/use-dropdown.d.ts +11 -11
  298. package/dist/hooks/use-is-mounted.d.ts +1 -1
  299. package/dist/hooks/use-merged-refs.d.ts +2 -2
  300. package/dist/hooks/use-mixed-styles.d.ts +1 -1
  301. package/dist/hooks/use-on-click-outside.d.ts +5 -5
  302. package/dist/hooks/use-tweak-styles.d.ts +21 -21
  303. package/dist/index.d.ts +6 -6
  304. package/dist/theme/Provider.d.ts +11 -11
  305. package/dist/theme/common.d.ts +98 -98
  306. package/dist/theme/helpers.d.ts +10 -10
  307. package/dist/theme/index.d.ts +4 -4
  308. package/dist/theme/types.d.ts +79 -79
  309. package/dist/true-react-common-ui-kit.js +128 -266
  310. package/dist/true-react-common-ui-kit.js.map +1 -1
  311. package/dist/true-react-common-ui-kit.umd.cjs +135 -273
  312. package/dist/true-react-common-ui-kit.umd.cjs.map +1 -1
  313. package/dist/types.d.ts +19 -19
  314. package/package.json +97 -96
  315. package/src/components/AccountInfo/AccountInfo.stories.tsx +32 -32
  316. package/src/components/AccountInfo/AccountInfo.styles.ts +51 -51
  317. package/src/components/AccountInfo/AccountInfo.tsx +80 -80
  318. package/src/components/AccountInfo/constants.ts +1 -1
  319. package/src/components/AccountInfo/index.ts +2 -2
  320. package/src/components/AddButton/AddButton.stories.tsx +21 -21
  321. package/src/components/AddButton/AddButton.styles.ts +34 -34
  322. package/src/components/AddButton/AddButton.tsx +52 -52
  323. package/src/components/AddButton/index.ts +2 -2
  324. package/src/components/Button/Button.stories.tsx +56 -56
  325. package/src/components/Button/Button.styles.ts +200 -200
  326. package/src/components/Button/Button.tsx +129 -129
  327. package/src/components/Button/constants.ts +9 -9
  328. package/src/components/Button/index.ts +3 -3
  329. package/src/components/Button/types.ts +5 -5
  330. package/src/components/Checkbox/Checkbox.stories.tsx +28 -28
  331. package/src/components/Checkbox/Checkbox.styles.ts +47 -47
  332. package/src/components/Checkbox/Checkbox.tsx +88 -88
  333. package/src/components/Checkbox/index.ts +2 -2
  334. package/src/components/CloseButton/CloseButton.styles.ts +33 -33
  335. package/src/components/CloseButton/CloseButton.tsx +34 -34
  336. package/src/components/CloseButton/index.ts +2 -2
  337. package/src/components/Colors/Colors.stories.tsx +7 -7
  338. package/src/components/Colors/Colors.styles.ts +36 -36
  339. package/src/components/Colors/Colors.tsx +26 -26
  340. package/src/components/Colors/index.ts +1 -1
  341. package/src/components/CssBaseline/CssBaseline.styles.ts +14 -14
  342. package/src/components/CssBaseline/CssBaseline.tsx +13 -13
  343. package/src/components/CssBaseline/index.ts +2 -2
  344. package/src/components/DateInput/DateInput.stories.tsx +61 -61
  345. package/src/components/DateInput/DateInput.styles.ts +18 -18
  346. package/src/components/DateInput/DateInput.tsx +90 -90
  347. package/src/components/DateInput/constants.ts +2 -2
  348. package/src/components/DateInput/index.ts +3 -3
  349. package/src/components/DatePicker/DatePicker.stories.tsx +88 -88
  350. package/src/components/DatePicker/DatePicker.styles.ts +38 -38
  351. package/src/components/DatePicker/DatePicker.tsx +308 -308
  352. package/src/components/DatePicker/components/DatePickerHeader/DatePickerHeader.styles.ts +88 -88
  353. package/src/components/DatePicker/components/DatePickerHeader/DatePickerHeader.tsx +89 -89
  354. package/src/components/DatePicker/components/DatePickerHeader/index.ts +2 -2
  355. package/src/components/DatePicker/components/PopperContainer/PopperContainer.tsx +6 -6
  356. package/src/components/DatePicker/components/PopperContainer/index.ts +1 -1
  357. package/src/components/DatePicker/components/index.ts +2 -2
  358. package/src/components/DatePicker/constants.ts +6 -6
  359. package/src/components/DatePicker/helpers.ts +23 -23
  360. package/src/components/DatePicker/index.ts +4 -4
  361. package/src/components/DatePicker/types.ts +45 -45
  362. package/src/components/Description/Description.stories.tsx +27 -27
  363. package/src/components/Description/Description.styles.ts +30 -30
  364. package/src/components/Description/Description.tsx +61 -61
  365. package/src/components/Description/constants.ts +1 -1
  366. package/src/components/Description/index.ts +2 -2
  367. package/src/components/FiltersPane/FiltersPane.stories.tsx +287 -287
  368. package/src/components/FiltersPane/FiltersPane.styles.ts +87 -87
  369. package/src/components/FiltersPane/FiltersPane.tsx +158 -158
  370. package/src/components/FiltersPane/components/Filter/Filter.tsx +203 -203
  371. package/src/components/FiltersPane/components/Filter/index.ts +1 -1
  372. package/src/components/FiltersPane/components/FilterInterval/FilterInterval.styles.ts +61 -61
  373. package/src/components/FiltersPane/components/FilterInterval/FilterInterval.tsx +154 -154
  374. package/src/components/FiltersPane/components/FilterInterval/index.ts +2 -2
  375. package/src/components/FiltersPane/components/FilterMultiSelect/FilterMultiSelect.tsx +10 -10
  376. package/src/components/FiltersPane/components/FilterMultiSelect/index.ts +1 -1
  377. package/src/components/FiltersPane/components/FilterSelect/FilterSelect.styles.ts +140 -140
  378. package/src/components/FiltersPane/components/FilterSelect/FilterSelect.tsx +354 -354
  379. package/src/components/FiltersPane/components/FilterSelect/index.ts +2 -2
  380. package/src/components/FiltersPane/components/FilterValueView/FilterValueView.styles.tsx +15 -15
  381. package/src/components/FiltersPane/components/FilterValueView/FilterValueView.tsx +166 -166
  382. package/src/components/FiltersPane/components/FilterValueView/index.tsx +2 -2
  383. package/src/components/FiltersPane/components/FilterWithDates/FilterWithDates.styles.ts +68 -68
  384. package/src/components/FiltersPane/components/FilterWithDates/FilterWithDates.tsx +210 -210
  385. package/src/components/FiltersPane/components/FilterWithDates/index.ts +2 -2
  386. package/src/components/FiltersPane/components/FilterWithPeriod/FilterWithPeriod.styles.ts +21 -21
  387. package/src/components/FiltersPane/components/FilterWithPeriod/FilterWithPeriod.tsx +177 -177
  388. package/src/components/FiltersPane/components/FilterWithPeriod/index.ts +2 -2
  389. package/src/components/FiltersPane/components/FilterWrapper/FilterWrapper.styles.ts +115 -115
  390. package/src/components/FiltersPane/components/FilterWrapper/FilterWrapper.tsx +167 -167
  391. package/src/components/FiltersPane/components/FilterWrapper/index.ts +2 -2
  392. package/src/components/FiltersPane/components/FiltersPaneSearch/FiltersPaneSearch.styles.ts +117 -117
  393. package/src/components/FiltersPane/components/FiltersPaneSearch/FiltersPaneSearch.tsx +165 -165
  394. package/src/components/FiltersPane/components/FiltersPaneSearch/index.ts +2 -2
  395. package/src/components/FiltersPane/components/index.ts +9 -9
  396. package/src/components/FiltersPane/constants.ts +137 -137
  397. package/src/components/FiltersPane/helpers.ts +26 -26
  398. package/src/components/FiltersPane/index.ts +5 -5
  399. package/src/components/FiltersPane/types.ts +156 -156
  400. package/src/components/Flag/Flag.stories.tsx +29 -29
  401. package/src/components/Flag/Flag.styles.ts +17 -17
  402. package/src/components/Flag/Flag.tsx +26 -26
  403. package/src/components/Flag/augment.d.ts +1 -1
  404. package/src/components/Flag/index.ts +2 -2
  405. package/src/components/FlexibleTable/FlexibleTable.stories.tsx +267 -267
  406. package/src/components/FlexibleTable/FlexibleTable.styles.ts +110 -110
  407. package/src/components/FlexibleTable/FlexibleTable.tsx +271 -271
  408. package/src/components/FlexibleTable/components/FlexibleTableCell/FlexibleTableCell.styles.ts +38 -38
  409. package/src/components/FlexibleTable/components/FlexibleTableCell/FlexibleTableCell.tsx +83 -83
  410. package/src/components/FlexibleTable/components/FlexibleTableCell/index.ts +2 -2
  411. package/src/components/FlexibleTable/components/FlexibleTableRow/FlexibleTableRow.styles.ts +25 -25
  412. package/src/components/FlexibleTable/components/FlexibleTableRow/FlexibleTableRow.tsx +196 -196
  413. package/src/components/FlexibleTable/components/FlexibleTableRow/index.ts +2 -2
  414. package/src/components/FlexibleTable/components/index.ts +2 -2
  415. package/src/components/FlexibleTable/constants.ts +1 -1
  416. package/src/components/FlexibleTable/helpers.ts +13 -13
  417. package/src/components/FlexibleTable/index.ts +4 -4
  418. package/src/components/FlexibleTable/types.ts +52 -52
  419. package/src/components/Icon/Icon.stories.tsx +86 -86
  420. package/src/components/Icon/Icon.styles.ts +10 -10
  421. package/src/components/Icon/Icon.tsx +26 -26
  422. package/src/components/Icon/complexIcons/augment.d.ts +1 -1
  423. package/src/components/Icon/complexIcons/avatarGreen.svg +57 -57
  424. package/src/components/Icon/complexIcons/icons.ts +5 -5
  425. package/src/components/Icon/complexIcons/index.ts +1 -1
  426. package/src/components/Icon/components/ComplexIconBoilerplate/ComplexIconBoilerplate.tsx +16 -16
  427. package/src/components/Icon/components/ComplexIconBoilerplate/index.ts +1 -1
  428. package/src/components/Icon/components/IconBolerplate/IconBoilerplate.tsx +43 -43
  429. package/src/components/Icon/components/IconBolerplate/index.ts +1 -1
  430. package/src/components/Icon/components/index.ts +2 -2
  431. package/src/components/Icon/helpers.tsx +9 -9
  432. package/src/components/Icon/icons-list.ts +856 -856
  433. package/src/components/Icon/index.ts +5 -5
  434. package/src/components/Icon/snippet.tsx +6 -6
  435. package/src/components/Icon/types.ts +18 -18
  436. package/src/components/IncrementInput/IncrementInput.stories.tsx +31 -31
  437. package/src/components/IncrementInput/IncrementInput.styles.ts +77 -77
  438. package/src/components/IncrementInput/IncrementInput.tsx +105 -105
  439. package/src/components/IncrementInput/index.ts +2 -2
  440. package/src/components/Input/Input.stories.tsx +86 -86
  441. package/src/components/Input/Input.styles.ts +307 -307
  442. package/src/components/Input/Input.tsx +297 -297
  443. package/src/components/Input/constants.ts +1 -1
  444. package/src/components/Input/index.ts +3 -3
  445. package/src/components/Input/types.ts +32 -32
  446. package/src/components/List/List.stories.tsx +70 -70
  447. package/src/components/List/List.styles.ts +51 -51
  448. package/src/components/List/List.tsx +33 -33
  449. package/src/components/List/components/ListItem/ListItem.styles.ts +47 -47
  450. package/src/components/List/components/ListItem/ListItem.tsx +57 -57
  451. package/src/components/List/components/ListItem/index.ts +2 -2
  452. package/src/components/List/components/index.ts +1 -1
  453. package/src/components/List/index.ts +3 -3
  454. package/src/components/Modal/Modal.stories.tsx +105 -105
  455. package/src/components/Modal/Modal.styles.ts +303 -303
  456. package/src/components/Modal/Modal.tsx +196 -196
  457. package/src/components/Modal/index.ts +3 -3
  458. package/src/components/Modal/types.ts +17 -17
  459. package/src/components/MoreMenu/MoreMenu.stories.tsx +46 -46
  460. package/src/components/MoreMenu/MoreMenu.styles.ts +68 -68
  461. package/src/components/MoreMenu/MoreMenu.tsx +93 -93
  462. package/src/components/MoreMenu/index.ts +2 -2
  463. package/src/components/MultiSelect/MultiSelect.stories.tsx +46 -46
  464. package/src/components/MultiSelect/MultiSelect.styles.ts +59 -59
  465. package/src/components/MultiSelect/MultiSelect.tsx +106 -106
  466. package/src/components/MultiSelect/components/MultiSelectInput/MultiSelectInput.styles.ts +73 -73
  467. package/src/components/MultiSelect/components/MultiSelectInput/MultiSelectInput.tsx +53 -53
  468. package/src/components/MultiSelect/components/MultiSelectInput/index.ts +2 -2
  469. package/src/components/MultiSelect/components/index.ts +1 -1
  470. package/src/components/MultiSelect/index.ts +4 -4
  471. package/src/components/MultiSelect/types.ts +1 -1
  472. package/src/components/MultiSelectList/MultiSelectList.styles.ts +136 -136
  473. package/src/components/MultiSelectList/MultiSelectList.tsx +461 -461
  474. package/src/components/MultiSelectList/constants.ts +21 -21
  475. package/src/components/MultiSelectList/helpers.ts +11 -11
  476. package/src/components/MultiSelectList/index.ts +3 -3
  477. package/src/components/MultiSelectList/types.ts +15 -15
  478. package/src/components/NewMoreMenu/NewMoreMenu.stories.tsx +73 -73
  479. package/src/components/NewMoreMenu/NewMoreMenu.styles.ts +38 -38
  480. package/src/components/NewMoreMenu/NewMoreMenu.tsx +80 -80
  481. package/src/components/NewMoreMenu/index.ts +2 -2
  482. package/src/components/Notification/Notification.stories.tsx +46 -46
  483. package/src/components/Notification/Notification.styles.ts +55 -55
  484. package/src/components/Notification/Notification.tsx +69 -69
  485. package/src/components/Notification/index.ts +3 -3
  486. package/src/components/Notification/types.ts +1 -1
  487. package/src/components/NumberInput/NumberInput.stories.tsx +35 -35
  488. package/src/components/NumberInput/NumberInput.tsx +137 -137
  489. package/src/components/NumberInput/helpers.ts +86 -86
  490. package/src/components/NumberInput/index.ts +1 -1
  491. package/src/components/PhoneInput/PhoneInput.stories.tsx +70 -70
  492. package/src/components/PhoneInput/PhoneInput.styles.ts +89 -89
  493. package/src/components/PhoneInput/PhoneInput.tsx +214 -214
  494. package/src/components/PhoneInput/components/PhoneInputCountryList/PhoneInputCountryList.stories.tsx +21 -21
  495. package/src/components/PhoneInput/components/PhoneInputCountryList/PhoneInputCountryList.styles.ts +103 -103
  496. package/src/components/PhoneInput/components/PhoneInputCountryList/PhoneInputCountryList.tsx +155 -155
  497. package/src/components/PhoneInput/components/PhoneInputCountryList/index.ts +2 -2
  498. package/src/components/PhoneInput/components/index.ts +1 -1
  499. package/src/components/PhoneInput/constants.ts +3 -3
  500. package/src/components/PhoneInput/index.ts +4 -4
  501. package/src/components/PhoneInput/types.ts +16 -16
  502. package/src/components/RadioButton/RadioButton.stories.tsx +46 -46
  503. package/src/components/RadioButton/RadioButton.styles.ts +37 -37
  504. package/src/components/RadioButton/RadioButton.tsx +57 -57
  505. package/src/components/RadioButton/index.ts +2 -2
  506. package/src/components/ScrollIntoViewIfNeeded/ScrollIntoViewIfNeeded.ts +54 -54
  507. package/src/components/ScrollIntoViewIfNeeded/constants.ts +12 -12
  508. package/src/components/ScrollIntoViewIfNeeded/index.ts +1 -1
  509. package/src/components/SearchInput/SearchInput.stories.tsx +23 -23
  510. package/src/components/SearchInput/SearchInput.styles.ts +50 -50
  511. package/src/components/SearchInput/SearchInput.tsx +56 -56
  512. package/src/components/SearchInput/index.ts +2 -2
  513. package/src/components/Select/CustomSelect.stories.tsx +217 -217
  514. package/src/components/Select/MultiSelect.stories.tsx +240 -240
  515. package/src/components/Select/Select.stories.tsx +235 -235
  516. package/src/components/Select/Select.styles.ts +146 -146
  517. package/src/components/Select/Select.tsx +609 -609
  518. package/src/components/Select/components/SelectList/SelectList.styles.ts +71 -71
  519. package/src/components/Select/components/SelectList/SelectList.tsx +156 -156
  520. package/src/components/Select/components/SelectList/index.ts +2 -2
  521. package/src/components/Select/components/SelectListItem/SelectListItem.styles.ts +14 -14
  522. package/src/components/Select/components/SelectListItem/SelectListItem.tsx +72 -72
  523. package/src/components/Select/components/SelectListItem/index.ts +1 -1
  524. package/src/components/Select/components/index.ts +2 -2
  525. package/src/components/Select/constants.ts +2 -2
  526. package/src/components/Select/helpers.ts +27 -27
  527. package/src/components/Select/index.ts +4 -4
  528. package/src/components/Select/types.ts +1 -1
  529. package/src/components/Selector/Selector.stories.tsx +62 -62
  530. package/src/components/Selector/Selector.styles.ts +164 -164
  531. package/src/components/Selector/Selector.tsx +115 -115
  532. package/src/components/Selector/index.ts +2 -2
  533. package/src/components/Selector/types.ts +12 -12
  534. package/src/components/Skeleton/Skeleton.stories.tsx +19 -19
  535. package/src/components/Skeleton/Skeleton.styles.ts +46 -46
  536. package/src/components/Skeleton/Skeleton.tsx +12 -12
  537. package/src/components/Skeleton/index.ts +2 -2
  538. package/src/components/SmartInput/SmartInput.stories.tsx +51 -51
  539. package/src/components/SmartInput/SmartInput.tsx +134 -134
  540. package/src/components/SmartInput/constants.ts +84 -84
  541. package/src/components/SmartInput/helpers.ts +13 -13
  542. package/src/components/SmartInput/index.ts +2 -2
  543. package/src/components/SmartInput/types.ts +11 -11
  544. package/src/components/Status/Status.stories.tsx +73 -73
  545. package/src/components/Status/Status.styles.ts +143 -143
  546. package/src/components/Status/Status.tsx +49 -49
  547. package/src/components/Status/constants.ts +11 -11
  548. package/src/components/Status/index.ts +3 -3
  549. package/src/components/Status/types.ts +5 -5
  550. package/src/components/Switch/Switch.stories.tsx +40 -40
  551. package/src/components/Switch/Switch.styles.ts +75 -75
  552. package/src/components/Switch/Switch.tsx +75 -75
  553. package/src/components/Switch/index.ts +3 -3
  554. package/src/components/Switch/types.ts +4 -4
  555. package/src/components/TextArea/TextArea.stories.tsx +35 -35
  556. package/src/components/TextArea/TextArea.styles.ts +157 -157
  557. package/src/components/TextArea/TextArea.tsx +180 -180
  558. package/src/components/TextArea/index.ts +2 -2
  559. package/src/components/TextButton/TextButton.stories.tsx +46 -46
  560. package/src/components/TextButton/TextButton.styles.ts +129 -129
  561. package/src/components/TextButton/TextButton.tsx +103 -103
  562. package/src/components/TextButton/index.ts +4 -4
  563. package/src/components/TextWithInfo/TextWithInfo.stories.tsx +53 -53
  564. package/src/components/TextWithInfo/TextWithInfo.styles.ts +59 -59
  565. package/src/components/TextWithInfo/TextWithInfo.tsx +62 -62
  566. package/src/components/TextWithInfo/index.ts +2 -2
  567. package/src/components/TextWithTooltip/TextWithTooltip.stories.tsx +58 -58
  568. package/src/components/TextWithTooltip/TextWithTooltip.styles.ts +21 -21
  569. package/src/components/TextWithTooltip/TextWithTooltip.tsx +156 -156
  570. package/src/components/TextWithTooltip/index.ts +2 -2
  571. package/src/components/ThemedPreloader/ThemedPreloader.stories.tsx +41 -41
  572. package/src/components/ThemedPreloader/ThemedPreloader.styles.ts +26 -26
  573. package/src/components/ThemedPreloader/ThemedPreloader.tsx +54 -54
  574. package/src/components/ThemedPreloader/components/DefaultPreloader/DefaultPreloader.tsx +29 -29
  575. package/src/components/ThemedPreloader/components/DefaultPreloader/index.ts +1 -1
  576. package/src/components/ThemedPreloader/components/DotsPreloader/DotsPreloader.styles.ts +54 -54
  577. package/src/components/ThemedPreloader/components/DotsPreloader/DotsPreloader.tsx +15 -15
  578. package/src/components/ThemedPreloader/components/DotsPreloader/index.ts +2 -2
  579. package/src/components/ThemedPreloader/components/SvgPreloader/SvgPreloader.styles.ts +11 -11
  580. package/src/components/ThemedPreloader/components/SvgPreloader/SvgPreloader.tsx +24 -24
  581. package/src/components/ThemedPreloader/components/SvgPreloader/index.ts +2 -2
  582. package/src/components/ThemedPreloader/components/index.ts +3 -3
  583. package/src/components/ThemedPreloader/constants.ts +1 -1
  584. package/src/components/ThemedPreloader/index.ts +4 -4
  585. package/src/components/ThemedPreloader/types.ts +3 -3
  586. package/src/components/Toaster/Toaster.stories.tsx +30 -30
  587. package/src/components/Toaster/Toaster.styles.ts +60 -60
  588. package/src/components/Toaster/Toaster.tsx +108 -108
  589. package/src/components/Toaster/constants.ts +1 -1
  590. package/src/components/Toaster/index.ts +3 -3
  591. package/src/components/Toaster/types.ts +1 -1
  592. package/src/components/Tooltip/Tooltip.stories.tsx +19 -19
  593. package/src/components/Tooltip/Tooltip.styles.ts +49 -49
  594. package/src/components/Tooltip/Tooltip.tsx +35 -35
  595. package/src/components/Tooltip/index.ts +3 -3
  596. package/src/components/Tooltip/types.ts +1 -1
  597. package/src/components/WithPopup/WithPopup.stories.tsx +77 -77
  598. package/src/components/WithPopup/WithPopup.styles.ts +21 -21
  599. package/src/components/WithPopup/WithPopup.tsx +130 -130
  600. package/src/components/WithPopup/constants.ts +3 -3
  601. package/src/components/WithPopup/index.ts +2 -2
  602. package/src/components/WithPopup/types.ts +3 -3
  603. package/src/components/index.ts +42 -42
  604. package/src/constants/index.ts +1 -1
  605. package/src/constants/phone-info.ts +2147 -2147
  606. package/src/helpers/index.ts +3 -3
  607. package/src/helpers/misc.ts +158 -158
  608. package/src/helpers/phone.ts +91 -91
  609. package/src/helpers/popper-helpers.ts +17 -17
  610. package/src/hooks/index.ts +7 -7
  611. package/src/hooks/use-did-mount-effect.ts +18 -18
  612. package/src/hooks/use-dropdown.ts +84 -84
  613. package/src/hooks/use-is-mounted.ts +15 -15
  614. package/src/hooks/use-merged-refs.ts +4 -4
  615. package/src/hooks/use-mixed-styles.ts +14 -14
  616. package/src/hooks/use-on-click-outside.ts +77 -77
  617. package/src/hooks/use-tweak-styles.ts +57 -57
  618. package/src/index.ts +6 -6
  619. package/src/theme/Provider.tsx +21 -21
  620. package/src/theme/common.ts +161 -161
  621. package/src/theme/helpers.ts +76 -76
  622. package/src/theme/index.ts +4 -4
  623. package/src/theme/types.ts +151 -151
  624. package/src/types.ts +26 -26
  625. package/src/vite-env.d.ts +1 -1
@@ -1,461 +1,461 @@
1
- import { useEffect, useState, useMemo, useRef, useCallback, ReactNode } from 'react';
2
- import clsx from 'clsx';
3
- import { debounce } from 'ts-debounce';
4
- import { addDataAttributes } from '../../helpers';
5
- import { useIsMounted, useTweakStyles } from '../../hooks';
6
- import { ICommonProps } from '../../types';
7
- import { Button } from '../Button';
8
- import { Checkbox, ICheckboxProps } from '../Checkbox';
9
- import { SearchInput } from '../SearchInput';
10
- import { ThemedPreloader } from '../ThemedPreloader';
11
- import { DEFAULT_LOCALE, MultiSelectLocales } from './constants';
12
- import { defaultConvertFunction, getLocale } from './helpers';
13
- import { IMultiSelectListValues, IMultiSelectLocale, IMultiSelectLocaleKey } from './types';
14
- import {
15
- useStyles,
16
- IMultiSelectListStyles,
17
- checkboxStyles,
18
- searchInputStyles,
19
- clearButtonStyles,
20
- } from './MultiSelectList.styles';
21
-
22
- export interface IMultiSelectListProps<Value, Option> extends ICommonProps<IMultiSelectListStyles> {
23
- value?: Value;
24
- /** @default false */
25
- isSearchEnabled?: boolean;
26
- localeKey?: IMultiSelectLocaleKey;
27
- locale?: Partial<IMultiSelectLocale>;
28
- onClose?: () => void;
29
- onChange: (val?: Value) => void;
30
- options?: Option[];
31
- fetchOptions?: (val?: string, page?: number) => Promise<Option[]>;
32
- getValueView?: (val: Option) => ReactNode;
33
- getValueId?: (val: Option) => string;
34
- getValueString?: (val: Option) => string;
35
- /** @default по умолчанию значение совпадает с isSearchEnabled */
36
- isGroupingEnabled?: boolean;
37
- /** @default 'left' */
38
- checkboxPosition?: 'left' | 'right';
39
- pageSize?: number;
40
- searchMaxLength?: number;
41
- }
42
-
43
- export function MultiSelectList<Value extends IMultiSelectListValues<Option>, Option = string>({
44
- value,
45
- tweakStyles,
46
- data,
47
- isSearchEnabled = false,
48
- localeKey = DEFAULT_LOCALE,
49
- locale = MultiSelectLocales[localeKey],
50
- onChange,
51
- onClose,
52
- options,
53
- fetchOptions,
54
- isGroupingEnabled = isSearchEnabled,
55
- getValueView = defaultConvertFunction,
56
- getValueId = defaultConvertFunction,
57
- getValueString = defaultConvertFunction,
58
- checkboxPosition = 'left',
59
- pageSize,
60
- searchMaxLength,
61
- testId,
62
- }: IMultiSelectListProps<Value, Option>): JSX.Element {
63
- const isMounted = useIsMounted();
64
- const classes = useStyles({ theme: tweakStyles });
65
-
66
- const tweakCheckboxStyles = useTweakStyles({
67
- innerStyles: checkboxStyles,
68
- tweakStyles,
69
- className: 'tweakCheckbox',
70
- currentComponentName: 'MultiSelectList',
71
- });
72
-
73
- const tweakSearchInputStyles = useTweakStyles({
74
- innerStyles: searchInputStyles,
75
- tweakStyles,
76
- className: 'tweakSearchInput',
77
- currentComponentName: 'MultiSelectList',
78
- });
79
-
80
- const tweakClearButtonStyles = useTweakStyles({
81
- innerStyles: clearButtonStyles,
82
- tweakStyles,
83
- className: 'tweakClearButton',
84
- currentComponentName: 'MultiSelectList',
85
- });
86
-
87
- const [keyCursorOn, setKeyCursorOn] = useState(0);
88
- const [searchValue, setSearchValue] = useState('');
89
- // Опции, которые получаем с бека при изменении строки поиска
90
- const [allOptions, setAllOptions] = useState<Option[]>([]);
91
-
92
- const [isLoading, setIsLoading] = useState(false);
93
- const [isLoadingOptionsOnScroll, setLoadingOptionsOnScroll] = useState(false);
94
-
95
- const [activePage, setActivePage] = useState(0);
96
- const [isMaxPage, setIsMaxPage] = useState(false);
97
-
98
- const observer = useRef<IntersectionObserver>();
99
-
100
- const chosenValues = value?.include;
101
-
102
- const translates = useMemo(() => getLocale(localeKey, locale), [localeKey, locale]);
103
- const chosenValuesIds = useMemo(() => chosenValues?.map(getValueId), [getValueId, chosenValues]);
104
-
105
- const unchosenOptions = useMemo(
106
- () => allOptions.filter((v) => !chosenValuesIds?.includes(getValueId(v))),
107
- [getValueId, allOptions, chosenValuesIds],
108
- );
109
-
110
- const handleSearchInputChange = useCallback(
111
- async (inputValue?: string) => {
112
- if (fetchOptions === undefined) {
113
- return;
114
- }
115
- setIsLoading(true);
116
-
117
- try {
118
- const response = await fetchOptions(inputValue?.trim() ?? '');
119
- if (isMounted() && response !== undefined) {
120
- setAllOptions(response);
121
- setActivePage(0);
122
- setIsMaxPage(
123
- response.length === 0 || (pageSize !== undefined && response.length < pageSize),
124
- );
125
- }
126
- } finally {
127
- if (isMounted()) {
128
- setIsLoading(false);
129
- }
130
- }
131
- },
132
- [fetchOptions, pageSize],
133
- );
134
-
135
- const changeSearchValue = useCallback(debounce(handleSearchInputChange), [
136
- handleSearchInputChange,
137
- ]);
138
-
139
- function handleOnChange(inputValue: string) {
140
- setSearchValue(inputValue);
141
-
142
- if (fetchOptions === undefined) {
143
- if (options !== undefined) {
144
- const lowerSearchValue = inputValue.toLowerCase();
145
- setAllOptions(
146
- options.filter((o) => getValueString(o).toLowerCase().includes(lowerSearchValue)),
147
- );
148
- }
149
- } else {
150
- setIsLoading(true);
151
- changeSearchValue(inputValue);
152
- }
153
- }
154
-
155
- const handleSelectValue = (val: Option[]) => {
156
- if (val.length === 0) {
157
- onChange(undefined);
158
- return;
159
- }
160
-
161
- onChange({
162
- include: val,
163
- } as Value);
164
- };
165
-
166
- const handleClear = () => {
167
- onChange(undefined);
168
- };
169
-
170
- const onSelect: ICheckboxProps<Option>['onSelect'] = (val) => {
171
- handleSelectValue(
172
- val.isSelected
173
- ? [...(chosenValues ?? []), val.value]
174
- : chosenValues?.filter((v) => getValueId(v) !== getValueId(val.value)) ?? [],
175
- );
176
- };
177
-
178
- const handleKeyDown = (event: KeyboardEvent) => {
179
- // TODO: это все очень плохо работает
180
- if (event.code === 'Escape') {
181
- onChange(value);
182
- if (onClose) {
183
- onClose();
184
- }
185
- }
186
- if (event.code === 'ArrowDown') {
187
- if (keyCursorOn < unchosenOptions.length + (value?.include.length ?? 0) - 1) {
188
- setKeyCursorOn(keyCursorOn + 1);
189
- }
190
- }
191
- if (event.code === 'ArrowUp') {
192
- if (keyCursorOn >= 1) {
193
- setKeyCursorOn(keyCursorOn - 1);
194
- }
195
- }
196
- if (event.code === 'Enter') {
197
- if (
198
- unchosenOptions[keyCursorOn] === undefined &&
199
- (value === undefined || value.include.length === 0)
200
- ) {
201
- return;
202
- }
203
- if (value !== undefined) {
204
- if (keyCursorOn < value.include.length) {
205
- onChange({
206
- ...value,
207
- include:
208
- value.include.filter(
209
- (val) => getValueId(val) !== getValueId(value.include[keyCursorOn]),
210
- ) ?? [],
211
- });
212
- } else {
213
- onChange({
214
- ...value,
215
- include: [...value.include, unchosenOptions[keyCursorOn - value.include.length]],
216
- });
217
- }
218
- } else {
219
- onChange({
220
- include: [unchosenOptions[keyCursorOn]],
221
- } as Value);
222
- }
223
- }
224
- };
225
-
226
- const getIsValueChosen = (id: string) => chosenValues?.some((v) => getValueId(v) === id);
227
-
228
- const handleLoadItemsOnScroll = useCallback(
229
- async (inputValue?: string, page?: number) => {
230
- if (fetchOptions === undefined) {
231
- return;
232
- }
233
-
234
- setLoadingOptionsOnScroll(true);
235
-
236
- try {
237
- const response = await fetchOptions(inputValue ?? '', page ?? 0);
238
- if (isMounted()) {
239
- if (response.length > 0) {
240
- setAllOptions((prevState) => [...prevState, ...response]);
241
- }
242
- if (response.length === 0 || (pageSize !== undefined && response.length < pageSize)) {
243
- setIsMaxPage(true);
244
- }
245
- }
246
- } finally {
247
- if (isMounted()) {
248
- setLoadingOptionsOnScroll(false);
249
- }
250
- }
251
- },
252
- [fetchOptions, getValueId],
253
- );
254
-
255
- const initIntersectionObserver = useCallback(
256
- (node: HTMLDivElement) => {
257
- if (isLoadingOptionsOnScroll || isMaxPage) {
258
- return;
259
- }
260
-
261
- if (observer.current) {
262
- observer.current.disconnect();
263
- }
264
-
265
- observer.current = new IntersectionObserver(async (entries) => {
266
- if (entries[0].isIntersecting) {
267
- await handleLoadItemsOnScroll(searchValue, activePage + 1);
268
- if (isMounted()) {
269
- setActivePage((prevState) => prevState + 1);
270
- }
271
- }
272
- });
273
-
274
- if (node) {
275
- observer.current.observe(node);
276
- }
277
- },
278
- [activePage, handleLoadItemsOnScroll, isLoadingOptionsOnScroll, isMaxPage, searchValue],
279
- );
280
-
281
- useEffect(() => {
282
- if (fetchOptions === undefined) {
283
- setAllOptions(options ?? []);
284
- return;
285
- }
286
-
287
- const doFetchOptions = async () => {
288
- setIsLoading(true);
289
-
290
- try {
291
- const response = await fetchOptions('');
292
- if (response !== undefined && isMounted()) {
293
- if (response.length === 0 || (pageSize !== undefined && response.length < pageSize)) {
294
- setIsMaxPage(true);
295
- }
296
- setAllOptions(response);
297
- }
298
- } finally {
299
- if (isMounted()) {
300
- setIsLoading(false);
301
- }
302
- }
303
- };
304
- doFetchOptions();
305
- }, []);
306
-
307
- useEffect(() => {
308
- document.addEventListener('keydown', handleKeyDown, false);
309
-
310
- return () => {
311
- document.removeEventListener('keydown', handleKeyDown, false);
312
- };
313
- });
314
-
315
- const mainOptionsList = isGroupingEnabled ? unchosenOptions : allOptions;
316
-
317
- const hasSelectedOptionsGroup =
318
- isGroupingEnabled && chosenValues !== undefined && chosenValues.length > 0;
319
-
320
- const shouldShowNothingFoundMessage = !isLoading && allOptions.length === 0;
321
-
322
- const shouldShowAllOptionsLabel =
323
- isGroupingEnabled &&
324
- unchosenOptions.length > 0 &&
325
- chosenValues !== undefined &&
326
- chosenValues.length > 0;
327
-
328
- const shouldShowPreloader = isLoading || isLoadingOptionsOnScroll;
329
-
330
- const shouldShowOptionsList = !isLoading && allOptions.length !== 0;
331
-
332
- return (
333
- <div className={classes.root} {...addDataAttributes(data)}>
334
- {isSearchEnabled && (
335
- <div className={classes.dropdownInput}>
336
- <SearchInput
337
- value={searchValue}
338
- placeholder={translates.searchPlaceholder}
339
- onChange={handleOnChange}
340
- tweakStyles={tweakSearchInputStyles}
341
- maxLength={searchMaxLength}
342
- testId={testId !== undefined ? `${testId}-search` : undefined}
343
- shouldFocusOnMount
344
- />
345
- </div>
346
- )}
347
- {shouldShowOptionsList && (
348
- <div
349
- className={classes.list}
350
- data-testid={testId !== undefined ? `${testId}-list` : undefined}
351
- >
352
- {/* Выбранные */}
353
- {hasSelectedOptionsGroup && (
354
- <>
355
- <div
356
- className={clsx(
357
- classes.label,
358
- classes.labelChosen,
359
- !isSearchEnabled && classes.withoutTopGap,
360
- )}
361
- >
362
- {translates.chosen}
363
- </div>
364
- {chosenValues?.map((val) => {
365
- const id = getValueId(val);
366
- const view = getValueView(val);
367
-
368
- return (
369
- <div
370
- className={clsx(
371
- classes.item,
372
- // keyCursorOn === index && classes.selectedItem,
373
- )}
374
- key={id}
375
- >
376
- <Checkbox
377
- onSelect={onSelect}
378
- isChecked
379
- value={val}
380
- tweakStyles={tweakCheckboxStyles}
381
- labelPosition={checkboxPosition === 'left' ? 'right' : 'left'}
382
- >
383
- <div className={classes.option} data-option={id}>
384
- {view}
385
- </div>
386
- </Checkbox>
387
- </div>
388
- );
389
- })}
390
- </>
391
- )}
392
-
393
- {!isLoading && (
394
- <>
395
- {/* Не выбранные (или все если нет группировки) */}
396
- {shouldShowAllOptionsLabel && <div className={classes.label}>{translates.all}</div>}
397
-
398
- {mainOptionsList.map((val, index) => {
399
- const id = getValueId(val);
400
- const view = getValueView(val);
401
-
402
- return (
403
- <div
404
- className={clsx(
405
- classes.item,
406
- // keyCursorOn === index + (value?.include.length ?? 0) &&
407
- // classes.selectedItem,
408
- )}
409
- ref={
410
- mainOptionsList.length - 1 === index ? initIntersectionObserver : undefined
411
- }
412
- key={id}
413
- >
414
- <Checkbox
415
- onSelect={onSelect}
416
- isChecked={getIsValueChosen(id)}
417
- value={val}
418
- tweakStyles={tweakCheckboxStyles}
419
- labelPosition={checkboxPosition === 'left' ? 'right' : 'left'}
420
- >
421
- <div className={classes.option} data-option={id}>
422
- {view}
423
- </div>
424
- </Checkbox>
425
- </div>
426
- );
427
- })}
428
- </>
429
- )}
430
- </div>
431
- )}
432
-
433
- {/* Preloader */}
434
- {shouldShowPreloader && (
435
- <div className={classes.preloader}>
436
- <ThemedPreloader type="dots" />
437
- </div>
438
- )}
439
-
440
- {/* Nothing found */}
441
- {shouldShowNothingFoundMessage && (
442
- <div className={classes.nothingFound}>{translates.nothingFound}</div>
443
- )}
444
-
445
- {/* Controls */}
446
- <div className={classes.panel}>
447
- <div className={classes.clear}>
448
- <Button
449
- onClick={handleClear}
450
- size="s"
451
- view="text"
452
- testId={testId !== undefined ? `${testId}-clear-button` : undefined}
453
- tweakStyles={tweakClearButtonStyles}
454
- >
455
- {translates.clear}
456
- </Button>
457
- </div>
458
- </div>
459
- </div>
460
- );
461
- }
1
+ import { useEffect, useState, useMemo, useRef, useCallback, ReactNode } from 'react';
2
+ import clsx from 'clsx';
3
+ import { debounce } from 'ts-debounce';
4
+ import { addDataAttributes } from '../../helpers';
5
+ import { useIsMounted, useTweakStyles } from '../../hooks';
6
+ import { ICommonProps } from '../../types';
7
+ import { Button } from '../Button';
8
+ import { Checkbox, ICheckboxProps } from '../Checkbox';
9
+ import { SearchInput } from '../SearchInput';
10
+ import { ThemedPreloader } from '../ThemedPreloader';
11
+ import { DEFAULT_LOCALE, MultiSelectLocales } from './constants';
12
+ import { defaultConvertFunction, getLocale } from './helpers';
13
+ import { IMultiSelectListValues, IMultiSelectLocale, IMultiSelectLocaleKey } from './types';
14
+ import {
15
+ useStyles,
16
+ IMultiSelectListStyles,
17
+ checkboxStyles,
18
+ searchInputStyles,
19
+ clearButtonStyles,
20
+ } from './MultiSelectList.styles';
21
+
22
+ export interface IMultiSelectListProps<Value, Option> extends ICommonProps<IMultiSelectListStyles> {
23
+ value?: Value;
24
+ /** @default false */
25
+ isSearchEnabled?: boolean;
26
+ localeKey?: IMultiSelectLocaleKey;
27
+ locale?: Partial<IMultiSelectLocale>;
28
+ onClose?: () => void;
29
+ onChange: (val?: Value) => void;
30
+ options?: Option[];
31
+ fetchOptions?: (val?: string, page?: number) => Promise<Option[]>;
32
+ getValueView?: (val: Option) => ReactNode;
33
+ getValueId?: (val: Option) => string;
34
+ getValueString?: (val: Option) => string;
35
+ /** @default по умолчанию значение совпадает с isSearchEnabled */
36
+ isGroupingEnabled?: boolean;
37
+ /** @default 'left' */
38
+ checkboxPosition?: 'left' | 'right';
39
+ pageSize?: number;
40
+ searchMaxLength?: number;
41
+ }
42
+
43
+ export function MultiSelectList<Value extends IMultiSelectListValues<Option>, Option = string>({
44
+ value,
45
+ tweakStyles,
46
+ data,
47
+ isSearchEnabled = false,
48
+ localeKey = DEFAULT_LOCALE,
49
+ locale = MultiSelectLocales[localeKey],
50
+ onChange,
51
+ onClose,
52
+ options,
53
+ fetchOptions,
54
+ isGroupingEnabled = isSearchEnabled,
55
+ getValueView = defaultConvertFunction,
56
+ getValueId = defaultConvertFunction,
57
+ getValueString = defaultConvertFunction,
58
+ checkboxPosition = 'left',
59
+ pageSize,
60
+ searchMaxLength,
61
+ testId,
62
+ }: IMultiSelectListProps<Value, Option>): JSX.Element {
63
+ const isMounted = useIsMounted();
64
+ const classes = useStyles({ theme: tweakStyles });
65
+
66
+ const tweakCheckboxStyles = useTweakStyles({
67
+ innerStyles: checkboxStyles,
68
+ tweakStyles,
69
+ className: 'tweakCheckbox',
70
+ currentComponentName: 'MultiSelectList',
71
+ });
72
+
73
+ const tweakSearchInputStyles = useTweakStyles({
74
+ innerStyles: searchInputStyles,
75
+ tweakStyles,
76
+ className: 'tweakSearchInput',
77
+ currentComponentName: 'MultiSelectList',
78
+ });
79
+
80
+ const tweakClearButtonStyles = useTweakStyles({
81
+ innerStyles: clearButtonStyles,
82
+ tweakStyles,
83
+ className: 'tweakClearButton',
84
+ currentComponentName: 'MultiSelectList',
85
+ });
86
+
87
+ const [keyCursorOn, setKeyCursorOn] = useState(0);
88
+ const [searchValue, setSearchValue] = useState('');
89
+ // Опции, которые получаем с бека при изменении строки поиска
90
+ const [allOptions, setAllOptions] = useState<Option[]>([]);
91
+
92
+ const [isLoading, setIsLoading] = useState(false);
93
+ const [isLoadingOptionsOnScroll, setLoadingOptionsOnScroll] = useState(false);
94
+
95
+ const [activePage, setActivePage] = useState(0);
96
+ const [isMaxPage, setIsMaxPage] = useState(false);
97
+
98
+ const observer = useRef<IntersectionObserver>();
99
+
100
+ const chosenValues = value?.include;
101
+
102
+ const translates = useMemo(() => getLocale(localeKey, locale), [localeKey, locale]);
103
+ const chosenValuesIds = useMemo(() => chosenValues?.map(getValueId), [getValueId, chosenValues]);
104
+
105
+ const unchosenOptions = useMemo(
106
+ () => allOptions.filter((v) => !chosenValuesIds?.includes(getValueId(v))),
107
+ [getValueId, allOptions, chosenValuesIds],
108
+ );
109
+
110
+ const handleSearchInputChange = useCallback(
111
+ async (inputValue?: string) => {
112
+ if (fetchOptions === undefined) {
113
+ return;
114
+ }
115
+ setIsLoading(true);
116
+
117
+ try {
118
+ const response = await fetchOptions(inputValue?.trim() ?? '');
119
+ if (isMounted() && response !== undefined) {
120
+ setAllOptions(response);
121
+ setActivePage(0);
122
+ setIsMaxPage(
123
+ response.length === 0 || (pageSize !== undefined && response.length < pageSize),
124
+ );
125
+ }
126
+ } finally {
127
+ if (isMounted()) {
128
+ setIsLoading(false);
129
+ }
130
+ }
131
+ },
132
+ [fetchOptions, pageSize],
133
+ );
134
+
135
+ const changeSearchValue = useCallback(debounce(handleSearchInputChange), [
136
+ handleSearchInputChange,
137
+ ]);
138
+
139
+ function handleOnChange(inputValue: string) {
140
+ setSearchValue(inputValue);
141
+
142
+ if (fetchOptions === undefined) {
143
+ if (options !== undefined) {
144
+ const lowerSearchValue = inputValue.toLowerCase();
145
+ setAllOptions(
146
+ options.filter((o) => getValueString(o).toLowerCase().includes(lowerSearchValue)),
147
+ );
148
+ }
149
+ } else {
150
+ setIsLoading(true);
151
+ changeSearchValue(inputValue);
152
+ }
153
+ }
154
+
155
+ const handleSelectValue = (val: Option[]) => {
156
+ if (val.length === 0) {
157
+ onChange(undefined);
158
+ return;
159
+ }
160
+
161
+ onChange({
162
+ include: val,
163
+ } as Value);
164
+ };
165
+
166
+ const handleClear = () => {
167
+ onChange(undefined);
168
+ };
169
+
170
+ const onSelect: ICheckboxProps<Option>['onSelect'] = (val) => {
171
+ handleSelectValue(
172
+ val.isSelected
173
+ ? [...(chosenValues ?? []), val.value]
174
+ : chosenValues?.filter((v) => getValueId(v) !== getValueId(val.value)) ?? [],
175
+ );
176
+ };
177
+
178
+ const handleKeyDown = (event: KeyboardEvent) => {
179
+ // TODO: это все очень плохо работает
180
+ if (event.code === 'Escape') {
181
+ onChange(value);
182
+ if (onClose) {
183
+ onClose();
184
+ }
185
+ }
186
+ if (event.code === 'ArrowDown') {
187
+ if (keyCursorOn < unchosenOptions.length + (value?.include.length ?? 0) - 1) {
188
+ setKeyCursorOn(keyCursorOn + 1);
189
+ }
190
+ }
191
+ if (event.code === 'ArrowUp') {
192
+ if (keyCursorOn >= 1) {
193
+ setKeyCursorOn(keyCursorOn - 1);
194
+ }
195
+ }
196
+ if (event.code === 'Enter') {
197
+ if (
198
+ unchosenOptions[keyCursorOn] === undefined &&
199
+ (value === undefined || value.include.length === 0)
200
+ ) {
201
+ return;
202
+ }
203
+ if (value !== undefined) {
204
+ if (keyCursorOn < value.include.length) {
205
+ onChange({
206
+ ...value,
207
+ include:
208
+ value.include.filter(
209
+ (val) => getValueId(val) !== getValueId(value.include[keyCursorOn]),
210
+ ) ?? [],
211
+ });
212
+ } else {
213
+ onChange({
214
+ ...value,
215
+ include: [...value.include, unchosenOptions[keyCursorOn - value.include.length]],
216
+ });
217
+ }
218
+ } else {
219
+ onChange({
220
+ include: [unchosenOptions[keyCursorOn]],
221
+ } as Value);
222
+ }
223
+ }
224
+ };
225
+
226
+ const getIsValueChosen = (id: string) => chosenValues?.some((v) => getValueId(v) === id);
227
+
228
+ const handleLoadItemsOnScroll = useCallback(
229
+ async (inputValue?: string, page?: number) => {
230
+ if (fetchOptions === undefined) {
231
+ return;
232
+ }
233
+
234
+ setLoadingOptionsOnScroll(true);
235
+
236
+ try {
237
+ const response = await fetchOptions(inputValue ?? '', page ?? 0);
238
+ if (isMounted()) {
239
+ if (response.length > 0) {
240
+ setAllOptions((prevState) => [...prevState, ...response]);
241
+ }
242
+ if (response.length === 0 || (pageSize !== undefined && response.length < pageSize)) {
243
+ setIsMaxPage(true);
244
+ }
245
+ }
246
+ } finally {
247
+ if (isMounted()) {
248
+ setLoadingOptionsOnScroll(false);
249
+ }
250
+ }
251
+ },
252
+ [fetchOptions, getValueId],
253
+ );
254
+
255
+ const initIntersectionObserver = useCallback(
256
+ (node: HTMLDivElement) => {
257
+ if (isLoadingOptionsOnScroll || isMaxPage) {
258
+ return;
259
+ }
260
+
261
+ if (observer.current) {
262
+ observer.current.disconnect();
263
+ }
264
+
265
+ observer.current = new IntersectionObserver(async (entries) => {
266
+ if (entries[0].isIntersecting) {
267
+ await handleLoadItemsOnScroll(searchValue, activePage + 1);
268
+ if (isMounted()) {
269
+ setActivePage((prevState) => prevState + 1);
270
+ }
271
+ }
272
+ });
273
+
274
+ if (node) {
275
+ observer.current.observe(node);
276
+ }
277
+ },
278
+ [activePage, handleLoadItemsOnScroll, isLoadingOptionsOnScroll, isMaxPage, searchValue],
279
+ );
280
+
281
+ useEffect(() => {
282
+ if (fetchOptions === undefined) {
283
+ setAllOptions(options ?? []);
284
+ return;
285
+ }
286
+
287
+ const doFetchOptions = async () => {
288
+ setIsLoading(true);
289
+
290
+ try {
291
+ const response = await fetchOptions('');
292
+ if (response !== undefined && isMounted()) {
293
+ if (response.length === 0 || (pageSize !== undefined && response.length < pageSize)) {
294
+ setIsMaxPage(true);
295
+ }
296
+ setAllOptions(response);
297
+ }
298
+ } finally {
299
+ if (isMounted()) {
300
+ setIsLoading(false);
301
+ }
302
+ }
303
+ };
304
+ doFetchOptions();
305
+ }, []);
306
+
307
+ useEffect(() => {
308
+ document.addEventListener('keydown', handleKeyDown, false);
309
+
310
+ return () => {
311
+ document.removeEventListener('keydown', handleKeyDown, false);
312
+ };
313
+ });
314
+
315
+ const mainOptionsList = isGroupingEnabled ? unchosenOptions : allOptions;
316
+
317
+ const hasSelectedOptionsGroup =
318
+ isGroupingEnabled && chosenValues !== undefined && chosenValues.length > 0;
319
+
320
+ const shouldShowNothingFoundMessage = !isLoading && allOptions.length === 0;
321
+
322
+ const shouldShowAllOptionsLabel =
323
+ isGroupingEnabled &&
324
+ unchosenOptions.length > 0 &&
325
+ chosenValues !== undefined &&
326
+ chosenValues.length > 0;
327
+
328
+ const shouldShowPreloader = isLoading || isLoadingOptionsOnScroll;
329
+
330
+ const shouldShowOptionsList = !isLoading && allOptions.length !== 0;
331
+
332
+ return (
333
+ <div className={classes.root} {...addDataAttributes(data)}>
334
+ {isSearchEnabled && (
335
+ <div className={classes.dropdownInput}>
336
+ <SearchInput
337
+ value={searchValue}
338
+ placeholder={translates.searchPlaceholder}
339
+ onChange={handleOnChange}
340
+ tweakStyles={tweakSearchInputStyles}
341
+ maxLength={searchMaxLength}
342
+ testId={testId !== undefined ? `${testId}-search` : undefined}
343
+ shouldFocusOnMount
344
+ />
345
+ </div>
346
+ )}
347
+ {shouldShowOptionsList && (
348
+ <div
349
+ className={classes.list}
350
+ data-testid={testId !== undefined ? `${testId}-list` : undefined}
351
+ >
352
+ {/* Выбранные */}
353
+ {hasSelectedOptionsGroup && (
354
+ <>
355
+ <div
356
+ className={clsx(
357
+ classes.label,
358
+ classes.labelChosen,
359
+ !isSearchEnabled && classes.withoutTopGap,
360
+ )}
361
+ >
362
+ {translates.chosen}
363
+ </div>
364
+ {chosenValues?.map((val) => {
365
+ const id = getValueId(val);
366
+ const view = getValueView(val);
367
+
368
+ return (
369
+ <div
370
+ className={clsx(
371
+ classes.item,
372
+ // keyCursorOn === index && classes.selectedItem,
373
+ )}
374
+ key={id}
375
+ >
376
+ <Checkbox
377
+ onSelect={onSelect}
378
+ isChecked
379
+ value={val}
380
+ tweakStyles={tweakCheckboxStyles}
381
+ labelPosition={checkboxPosition === 'left' ? 'right' : 'left'}
382
+ >
383
+ <div className={classes.option} data-option={id}>
384
+ {view}
385
+ </div>
386
+ </Checkbox>
387
+ </div>
388
+ );
389
+ })}
390
+ </>
391
+ )}
392
+
393
+ {!isLoading && (
394
+ <>
395
+ {/* Не выбранные (или все если нет группировки) */}
396
+ {shouldShowAllOptionsLabel && <div className={classes.label}>{translates.all}</div>}
397
+
398
+ {mainOptionsList.map((val, index) => {
399
+ const id = getValueId(val);
400
+ const view = getValueView(val);
401
+
402
+ return (
403
+ <div
404
+ className={clsx(
405
+ classes.item,
406
+ // keyCursorOn === index + (value?.include.length ?? 0) &&
407
+ // classes.selectedItem,
408
+ )}
409
+ ref={
410
+ mainOptionsList.length - 1 === index ? initIntersectionObserver : undefined
411
+ }
412
+ key={id}
413
+ >
414
+ <Checkbox
415
+ onSelect={onSelect}
416
+ isChecked={getIsValueChosen(id)}
417
+ value={val}
418
+ tweakStyles={tweakCheckboxStyles}
419
+ labelPosition={checkboxPosition === 'left' ? 'right' : 'left'}
420
+ >
421
+ <div className={classes.option} data-option={id}>
422
+ {view}
423
+ </div>
424
+ </Checkbox>
425
+ </div>
426
+ );
427
+ })}
428
+ </>
429
+ )}
430
+ </div>
431
+ )}
432
+
433
+ {/* Preloader */}
434
+ {shouldShowPreloader && (
435
+ <div className={classes.preloader}>
436
+ <ThemedPreloader type="dots" />
437
+ </div>
438
+ )}
439
+
440
+ {/* Nothing found */}
441
+ {shouldShowNothingFoundMessage && (
442
+ <div className={classes.nothingFound}>{translates.nothingFound}</div>
443
+ )}
444
+
445
+ {/* Controls */}
446
+ <div className={classes.panel}>
447
+ <div className={classes.clear}>
448
+ <Button
449
+ onClick={handleClear}
450
+ size="s"
451
+ view="text"
452
+ testId={testId !== undefined ? `${testId}-clear-button` : undefined}
453
+ tweakStyles={tweakClearButtonStyles}
454
+ >
455
+ {translates.clear}
456
+ </Button>
457
+ </div>
458
+ </div>
459
+ </div>
460
+ );
461
+ }