@true-engineering/true-react-common-ui-kit 4.0.0-alpha5 → 4.0.0-alpha51

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 (468) hide show
  1. package/README.md +11 -607
  2. package/dist/components/AccountInfo/AccountInfo.styles.d.ts +1 -1
  3. package/dist/components/AddButton/AddButton.styles.d.ts +1 -1
  4. package/dist/components/Button/Button.d.ts +1 -1
  5. package/dist/components/Button/Button.styles.d.ts +1 -1
  6. package/dist/components/Checkbox/Checkbox.d.ts +3 -1
  7. package/dist/components/Checkbox/Checkbox.styles.d.ts +3 -2
  8. package/dist/components/Checkbox/index.d.ts +1 -0
  9. package/dist/components/Checkbox/types.d.ts +3 -0
  10. package/dist/components/CloseButton/CloseButton.styles.d.ts +1 -1
  11. package/dist/components/ControlWrapper/ControlWrapper.d.ts +7 -3
  12. package/dist/components/ControlWrapper/ControlWrapper.styles.d.ts +3 -2
  13. package/dist/components/ControlWrapper/constants.d.ts +1 -0
  14. package/dist/components/ControlWrapper/helpers.d.ts +4 -0
  15. package/dist/components/ControlWrapper/index.d.ts +3 -0
  16. package/dist/components/ControlWrapper/types.d.ts +14 -0
  17. package/dist/components/CssBaseline/CssBaseline.styles.d.ts +1 -1
  18. package/dist/components/DateInput/DateInput.d.ts +1 -3
  19. package/dist/components/DateInput/DateInput.styles.d.ts +1 -1
  20. package/dist/components/DateInput/constants.d.ts +1 -1
  21. package/dist/components/DatePicker/DatePicker.d.ts +4 -4
  22. package/dist/components/DatePicker/DatePicker.styles.d.ts +1 -1
  23. package/dist/components/DatePicker/components/DatePickerBase/DatePickerBase.d.ts +5 -0
  24. package/dist/components/DatePicker/components/DatePickerBase/index.d.ts +1 -0
  25. package/dist/components/DatePicker/components/DatePickerHeader/DatePickerHeader.styles.d.ts +1 -1
  26. package/dist/components/DatePicker/components/PopperContainer/PopperContainer.d.ts +2 -4
  27. package/dist/components/DatePicker/components/index.d.ts +1 -0
  28. package/dist/components/DatePicker/constants.d.ts +7 -2
  29. package/dist/components/DatePicker/index.d.ts +1 -0
  30. package/dist/components/DatePicker/types.d.ts +2 -2
  31. package/dist/components/Description/Description.styles.d.ts +1 -1
  32. package/dist/components/FileInput/FileInput.d.ts +1 -1
  33. package/dist/components/FileInput/FileInput.styles.d.ts +1 -1
  34. package/dist/components/FileItem/FileItem.styles.d.ts +1 -1
  35. package/dist/components/FileItem/constants.d.ts +3 -4
  36. package/dist/components/FileItem/helpers.d.ts +3 -2
  37. package/dist/components/FileItem/types.d.ts +1 -2
  38. package/dist/components/FiltersPane/FiltersPane.d.ts +7 -3
  39. package/dist/components/FiltersPane/FiltersPane.styles.d.ts +2 -2
  40. package/dist/components/FiltersPane/components/Filter/Filter.d.ts +3 -4
  41. package/dist/components/FiltersPane/components/Filter/helpers.d.ts +4 -0
  42. package/dist/components/FiltersPane/components/FilterInterval/FilterInterval.d.ts +3 -11
  43. package/dist/components/FiltersPane/components/FilterInterval/FilterInterval.styles.d.ts +3 -6
  44. package/dist/components/FiltersPane/components/FilterMultiSelect/FilterMultiSelect.d.ts +0 -1
  45. package/dist/components/FiltersPane/components/FilterSelect/FilterSelect.styles.d.ts +3 -6
  46. package/dist/components/FiltersPane/components/FilterValueView/FilterValueView.d.ts +4 -3
  47. package/dist/components/FiltersPane/components/FilterValueView/FilterValueView.styles.d.ts +1 -1
  48. package/dist/components/FiltersPane/components/FilterWithDates/FilterWithDates.styles.d.ts +5 -11
  49. package/dist/components/FiltersPane/components/FilterWithPeriod/FilterWithPeriod.styles.d.ts +1 -1
  50. package/dist/components/FiltersPane/components/FilterWrapper/FilterWrapper.d.ts +2 -3
  51. package/dist/components/FiltersPane/components/FilterWrapper/FilterWrapper.styles.d.ts +2 -2
  52. package/dist/components/FiltersPane/components/FiltersPaneSearch/FiltersPaneSearch.d.ts +2 -1
  53. package/dist/components/FiltersPane/components/FiltersPaneSearch/FiltersPaneSearch.styles.d.ts +1 -1
  54. package/dist/components/FiltersPane/constants.d.ts +1 -1
  55. package/dist/components/FiltersPane/helpers.d.ts +1 -1
  56. package/dist/components/FiltersPane/index.d.ts +1 -0
  57. package/dist/components/FiltersPane/types.d.ts +21 -7
  58. package/dist/components/Flag/Flag.styles.d.ts +1 -1
  59. package/dist/components/Flag/customFlags/customFlags.d.ts +10 -0
  60. package/dist/components/Flag/customFlags/index.d.ts +1 -0
  61. package/dist/components/FlexibleTable/FlexibleTable.d.ts +4 -2
  62. package/dist/components/FlexibleTable/FlexibleTable.styles.d.ts +2 -2
  63. package/dist/components/FlexibleTable/components/FlexibleTableCell/FlexibleTableCell.d.ts +4 -3
  64. package/dist/components/FlexibleTable/components/FlexibleTableCell/FlexibleTableCell.styles.d.ts +1 -1
  65. package/dist/components/FlexibleTable/components/FlexibleTableRow/FlexibleTableRow.d.ts +6 -6
  66. package/dist/components/FlexibleTable/components/FlexibleTableRow/FlexibleTableRow.styles.d.ts +1 -1
  67. package/dist/components/FlexibleTable/constants.d.ts +18 -2
  68. package/dist/components/FlexibleTable/helpers.d.ts +2 -2
  69. package/dist/components/FlexibleTable/types.d.ts +20 -12
  70. package/dist/components/FloatDocActions/FloatDocActions.d.ts +6 -0
  71. package/dist/components/FloatDocActions/FloatDocActions.styles.d.ts +8 -0
  72. package/dist/components/FloatDocActions/components/DocActions/DocActions.d.ts +12 -0
  73. package/dist/components/FloatDocActions/components/DocActions/DocActions.styles.d.ts +6 -0
  74. package/dist/components/FloatDocActions/components/DocActions/constants.d.ts +1 -0
  75. package/dist/components/FloatDocActions/components/DocActions/index.d.ts +4 -0
  76. package/dist/components/FloatDocActions/components/DocActions/types.d.ts +2 -0
  77. package/dist/components/FloatDocActions/components/index.d.ts +1 -0
  78. package/dist/components/FloatDocActions/constants.d.ts +1 -0
  79. package/dist/components/FloatDocActions/index.d.ts +3 -0
  80. package/dist/components/Icon/Icon.styles.d.ts +1 -1
  81. package/dist/components/Icon/icons/index.d.ts +31 -0
  82. package/dist/components/Icon/index.d.ts +1 -1
  83. package/dist/components/Icon/types.d.ts +7 -11
  84. package/dist/components/IconButton/IconButton.d.ts +1 -2
  85. package/dist/components/IconButton/IconButton.styles.d.ts +1 -1
  86. package/dist/components/IconButton/constants.d.ts +1 -1
  87. package/dist/components/IncrementInput/IncrementInput.styles.d.ts +1 -3
  88. package/dist/components/Input/Input.d.ts +3 -3
  89. package/dist/components/Input/Input.styles.d.ts +1 -1
  90. package/dist/components/Input/InputBase.d.ts +3 -3
  91. package/dist/components/List/List.d.ts +1 -1
  92. package/dist/components/List/List.styles.d.ts +1 -1
  93. package/dist/components/List/components/ListItem/ListItem.styles.d.ts +1 -1
  94. package/dist/components/List/index.d.ts +2 -1
  95. package/dist/components/List/types.d.ts +4 -0
  96. package/dist/components/Modal/Modal.d.ts +1 -1
  97. package/dist/components/Modal/Modal.styles.d.ts +1 -1
  98. package/dist/components/MoreMenu/MoreMenu.styles.d.ts +1 -1
  99. package/dist/components/MultiSelect/MultiSelect.d.ts +0 -1
  100. package/dist/components/MultiSelect/MultiSelect.styles.d.ts +1 -1
  101. package/dist/components/MultiSelect/components/MultiSelectInput/MultiSelectInput.styles.d.ts +1 -1
  102. package/dist/components/MultiSelectList/MultiSelectList.styles.d.ts +1 -1
  103. package/dist/components/MultiSelectList/constants.d.ts +1 -1
  104. package/dist/components/MultiSelectList/helpers.d.ts +1 -1
  105. package/dist/components/NewMoreMenu/NewMoreMenu.styles.d.ts +1 -1
  106. package/dist/components/Notification/Notification.styles.d.ts +1 -1
  107. package/dist/components/NumberInput/NumberInput.d.ts +1 -2
  108. package/dist/components/NumberInput/helpers.d.ts +2 -2
  109. package/dist/components/PhoneInput/PhoneInput.styles.d.ts +1 -1
  110. package/dist/components/PhoneInput/components/PhoneInputCountryList/PhoneInputCountryList.styles.d.ts +1 -1
  111. package/dist/components/RadioButton/RadioButton.d.ts +3 -1
  112. package/dist/components/RadioButton/RadioButton.styles.d.ts +3 -2
  113. package/dist/components/RadioButton/index.d.ts +1 -0
  114. package/dist/components/RadioButton/types.d.ts +3 -0
  115. package/dist/components/ScrollIntoViewIfNeeded/ScrollIntoViewIfNeeded.d.ts +3 -373
  116. package/dist/components/ScrollIntoViewIfNeeded/constants.d.ts +1 -1
  117. package/dist/components/SearchInput/SearchInput.d.ts +1 -2
  118. package/dist/components/Select/Select.d.ts +8 -6
  119. package/dist/components/Select/Select.styles.d.ts +12 -22
  120. package/dist/components/Select/components/SelectList/SelectList.d.ts +5 -5
  121. package/dist/components/Select/components/SelectList/SelectList.styles.d.ts +1 -1
  122. package/dist/components/Select/components/SelectListItem/SelectListItem.d.ts +4 -3
  123. package/dist/components/Select/helpers.d.ts +1 -1
  124. package/dist/components/Select/index.d.ts +1 -1
  125. package/dist/components/Select/types.d.ts +4 -0
  126. package/dist/components/Selector/Selector.d.ts +0 -1
  127. package/dist/components/Selector/Selector.styles.d.ts +1 -1
  128. package/dist/components/Skeleton/Skeleton.styles.d.ts +1 -1
  129. package/dist/components/SmartInput/SmartInput.d.ts +1 -1
  130. package/dist/components/Status/Status.styles.d.ts +3 -2
  131. package/dist/components/Status/constants.d.ts +0 -1
  132. package/dist/components/Status/index.d.ts +1 -0
  133. package/dist/components/Status/types.d.ts +5 -2
  134. package/dist/components/Switch/Switch.styles.d.ts +1 -1
  135. package/dist/components/TextArea/TextArea.d.ts +5 -6
  136. package/dist/components/TextArea/TextArea.styles.d.ts +5 -4
  137. package/dist/components/TextArea/index.d.ts +1 -1
  138. package/dist/components/TextArea/types.d.ts +4 -2
  139. package/dist/components/TextButton/TextButton.d.ts +1 -1
  140. package/dist/components/TextButton/TextButton.styles.d.ts +1 -1
  141. package/dist/components/TextWithInfo/TextWithInfo.styles.d.ts +1 -1
  142. package/dist/components/TextWithTooltip/TextWithTooltip.styles.d.ts +1 -1
  143. package/dist/components/ThemedPreloader/ThemedPreloader.styles.d.ts +1 -1
  144. package/dist/components/ThemedPreloader/components/DotsPreloader/DotsPreloader.styles.d.ts +1 -1
  145. package/dist/components/ThemedPreloader/components/SvgPreloader/SvgPreloader.styles.d.ts +1 -1
  146. package/dist/components/Toaster/Toaster.styles.d.ts +1 -1
  147. package/dist/components/Tooltip/Tooltip.d.ts +1 -1
  148. package/dist/components/Tooltip/Tooltip.styles.d.ts +1 -1
  149. package/dist/components/WithMessages/WithMessages.d.ts +1 -1
  150. package/dist/components/WithMessages/WithMessages.styles.d.ts +1 -1
  151. package/dist/components/WithPopup/WithPopup.d.ts +11 -3
  152. package/dist/components/WithPopup/WithPopup.styles.d.ts +1 -1
  153. package/dist/components/WithPopup/types.d.ts +4 -4
  154. package/dist/components/index.d.ts +1 -1
  155. package/dist/constants/phone-info.d.ts +1 -1
  156. package/dist/helpers/misc.d.ts +3 -3
  157. package/dist/helpers/phone.d.ts +1 -1
  158. package/dist/hooks/index.d.ts +7 -4
  159. package/dist/hooks/use-dropdown.d.ts +3 -3
  160. package/dist/hooks/use-intersection-ref.d.ts +8 -0
  161. package/dist/hooks/use-latest-ref.d.ts +2 -0
  162. package/dist/hooks/use-merge.d.ts +1 -0
  163. package/dist/hooks/use-mixed-styles.d.ts +3 -1
  164. package/dist/hooks/use-on-click-outside.d.ts +2 -2
  165. package/dist/hooks/use-tweak-styles.d.ts +6 -6
  166. package/dist/theme/Provider.d.ts +5 -2
  167. package/dist/theme/common.d.ts +1 -1
  168. package/dist/theme/create-themed-styles.d.ts +2 -0
  169. package/dist/theme/helpers.d.ts +9 -3
  170. package/dist/theme/index.d.ts +2 -0
  171. package/dist/theme/true-jss/ThemedStylesManager.d.ts +18 -0
  172. package/dist/theme/true-jss/TweakStylesManager.d.ts +34 -0
  173. package/dist/theme/true-jss/index.d.ts +2 -0
  174. package/dist/theme/true-jss/jss-context.d.ts +9 -0
  175. package/dist/theme/types.d.ts +7 -5
  176. package/dist/{style.css → true-react-common-ui-kit.css} +78 -142
  177. package/dist/true-react-common-ui-kit.js +2 -31591
  178. package/dist/true-react-common-ui-kit.js.map +1 -1
  179. package/dist/true-react-common-ui-kit.umd.cjs +3 -31580
  180. package/dist/true-react-common-ui-kit.umd.cjs.map +1 -1
  181. package/dist/types.d.ts +9 -2
  182. package/package.json +36 -37
  183. package/src/components/AccountInfo/AccountInfo.stories.tsx +19 -27
  184. package/src/components/AddButton/AddButton.stories.tsx +14 -17
  185. package/src/components/Button/Button.stories.tsx +8 -26
  186. package/src/components/Checkbox/Checkbox.stories.tsx +27 -16
  187. package/src/components/Checkbox/Checkbox.styles.ts +3 -1
  188. package/src/components/Checkbox/Checkbox.tsx +7 -5
  189. package/src/components/Checkbox/index.ts +1 -0
  190. package/src/components/Checkbox/types.ts +4 -0
  191. package/src/components/CloseButton/CloseButton.stories.tsx +5 -6
  192. package/src/components/Colors/Colors.stories.tsx +63 -3
  193. package/src/components/ControlWrapper/ControlWrapper.stories.tsx +45 -35
  194. package/src/components/ControlWrapper/ControlWrapper.styles.ts +7 -6
  195. package/src/components/ControlWrapper/ControlWrapper.tsx +33 -30
  196. package/src/components/ControlWrapper/constants.ts +11 -0
  197. package/src/components/ControlWrapper/helpers.ts +11 -0
  198. package/src/components/ControlWrapper/index.ts +3 -0
  199. package/src/components/ControlWrapper/types.ts +19 -0
  200. package/src/components/DateInput/DateInput.stories.tsx +13 -31
  201. package/src/components/DateInput/DateInput.tsx +3 -4
  202. package/src/components/DatePicker/DatePicker.stories.tsx +18 -42
  203. package/src/components/DatePicker/DatePicker.styles.ts +3 -1
  204. package/src/components/DatePicker/DatePicker.tsx +47 -16
  205. package/src/components/DatePicker/components/DatePickerBase/DatePickerBase.tsx +14 -0
  206. package/src/components/DatePicker/components/DatePickerBase/index.ts +1 -0
  207. package/src/components/DatePicker/components/PopperContainer/PopperContainer.tsx +4 -4
  208. package/src/components/DatePicker/components/index.ts +1 -0
  209. package/src/components/DatePicker/constants.ts +9 -3
  210. package/src/components/DatePicker/helpers.ts +1 -1
  211. package/src/components/DatePicker/index.ts +1 -0
  212. package/src/components/DatePicker/types.ts +6 -4
  213. package/src/components/Description/Description.stories.tsx +11 -16
  214. package/src/components/FileInput/FileInput.stories.tsx +59 -63
  215. package/src/components/FileItem/FileItem.stories.tsx +48 -48
  216. package/src/components/FileItem/constants.ts +3 -14
  217. package/src/components/FileItem/helpers.ts +3 -2
  218. package/src/components/FileItem/types.ts +1 -3
  219. package/src/components/FiltersPane/FiltersPane.stories.tsx +31 -28
  220. package/src/components/FiltersPane/FiltersPane.tsx +28 -19
  221. package/src/components/FiltersPane/components/Filter/Filter.tsx +36 -30
  222. package/src/components/FiltersPane/components/Filter/helpers.ts +18 -0
  223. package/src/components/FiltersPane/components/FilterInterval/FilterInterval.styles.ts +1 -2
  224. package/src/components/FiltersPane/components/FilterInterval/FilterInterval.tsx +5 -17
  225. package/src/components/FiltersPane/components/FilterSelect/FilterSelect.styles.ts +1 -2
  226. package/src/components/FiltersPane/components/FilterSelect/FilterSelect.tsx +22 -23
  227. package/src/components/FiltersPane/components/FilterValueView/FilterValueView.tsx +27 -22
  228. package/src/components/FiltersPane/components/FilterWithDates/FilterWithDates.styles.ts +3 -3
  229. package/src/components/FiltersPane/components/FilterWithDates/FilterWithDates.tsx +3 -4
  230. package/src/components/FiltersPane/components/FilterWithPeriod/FilterWithPeriod.tsx +4 -3
  231. package/src/components/FiltersPane/components/FilterWrapper/FilterWrapper.tsx +14 -10
  232. package/src/components/FiltersPane/components/FiltersPaneSearch/FiltersPaneSearch.styles.ts +5 -0
  233. package/src/components/FiltersPane/components/FiltersPaneSearch/FiltersPaneSearch.tsx +19 -19
  234. package/src/components/FiltersPane/helpers.ts +3 -3
  235. package/src/components/FiltersPane/index.ts +1 -0
  236. package/src/components/FiltersPane/types.ts +30 -6
  237. package/src/components/Flag/Flag.stories.tsx +16 -20
  238. package/src/components/Flag/Flag.styles.ts +4 -0
  239. package/src/components/Flag/Flag.tsx +25 -11
  240. package/src/components/Flag/customFlags/AB.svg +1 -0
  241. package/src/components/Flag/customFlags/OS.svg +1 -0
  242. package/src/components/Flag/customFlags/customFlags.ts +13 -0
  243. package/src/components/Flag/customFlags/index.ts +1 -0
  244. package/src/components/FlexibleTable/FlexibleTable.stories.tsx +47 -50
  245. package/src/components/FlexibleTable/FlexibleTable.styles.ts +4 -2
  246. package/src/components/FlexibleTable/FlexibleTable.tsx +44 -64
  247. package/src/components/FlexibleTable/components/FlexibleTableCell/FlexibleTableCell.tsx +8 -5
  248. package/src/components/FlexibleTable/components/FlexibleTableRow/FlexibleTableRow.tsx +13 -12
  249. package/src/components/FlexibleTable/constants.ts +6 -3
  250. package/src/components/FlexibleTable/types.ts +20 -16
  251. package/src/components/FloatDocActions/FloatDocActions.stories.tsx +111 -0
  252. package/src/components/FloatDocActions/FloatDocActions.styles.ts +12 -0
  253. package/src/components/FloatDocActions/FloatDocActions.tsx +34 -0
  254. package/src/components/FloatDocActions/components/DocActions/DocActions.styles.ts +29 -0
  255. package/src/components/FloatDocActions/components/DocActions/DocActions.tsx +43 -0
  256. package/src/components/FloatDocActions/components/DocActions/constants.ts +1 -0
  257. package/src/components/FloatDocActions/components/DocActions/index.ts +4 -0
  258. package/src/components/FloatDocActions/components/DocActions/types.ts +3 -0
  259. package/src/components/FloatDocActions/components/index.ts +1 -0
  260. package/src/components/FloatDocActions/constants.ts +1 -0
  261. package/src/components/FloatDocActions/index.ts +3 -0
  262. package/src/components/Icon/Icon.stories.tsx +80 -67
  263. package/src/components/Icon/Icon.styles.ts +1 -1
  264. package/src/components/Icon/Icon.tsx +17 -12
  265. package/src/components/Icon/icons/calendar.svg +1 -0
  266. package/src/components/Icon/icons/check.svg +1 -0
  267. package/src/components/Icon/icons/chevron-down-small.svg +1 -0
  268. package/src/components/Icon/icons/chevron-down.svg +1 -0
  269. package/src/components/Icon/icons/chevron-left.svg +1 -0
  270. package/src/components/Icon/icons/chevron-right.svg +1 -0
  271. package/src/components/Icon/icons/close-large.svg +1 -0
  272. package/src/components/Icon/icons/close-window.svg +1 -0
  273. package/src/components/Icon/icons/close.svg +1 -0
  274. package/src/components/Icon/icons/filter.svg +1 -0
  275. package/src/components/Icon/icons/index.ts +62 -0
  276. package/src/components/Icon/icons/information.svg +1 -0
  277. package/src/components/Icon/icons/menu.svg +1 -0
  278. package/src/components/Icon/icons/minus.svg +1 -0
  279. package/src/components/Icon/icons/plus.svg +1 -0
  280. package/src/components/Icon/icons/search.svg +1 -0
  281. package/src/components/Icon/icons/status-error.svg +1 -0
  282. package/src/components/Icon/icons/status-info.svg +1 -0
  283. package/src/components/Icon/icons/status-not-ok.svg +1 -0
  284. package/src/components/Icon/icons/status-ok.svg +1 -0
  285. package/src/components/Icon/icons/status-warning.svg +1 -0
  286. package/src/components/Icon/icons/trash-can.svg +1 -0
  287. package/src/components/Icon/index.ts +1 -1
  288. package/src/components/Icon/types.ts +7 -13
  289. package/src/components/IconButton/IconButton.stories.tsx +7 -12
  290. package/src/components/IconButton/IconButton.styles.ts +15 -13
  291. package/src/components/IconButton/constants.ts +1 -1
  292. package/src/components/IncrementInput/IncrementInput.stories.tsx +25 -23
  293. package/src/components/IncrementInput/IncrementInput.styles.ts +31 -39
  294. package/src/components/IncrementInput/IncrementInput.tsx +28 -25
  295. package/src/components/Input/Input.stories.tsx +37 -68
  296. package/src/components/Input/Input.styles.ts +4 -0
  297. package/src/components/Input/Input.tsx +3 -2
  298. package/src/components/Input/InputBase.tsx +54 -55
  299. package/src/components/List/List.stories.tsx +22 -17
  300. package/src/components/List/List.styles.ts +2 -1
  301. package/src/components/List/List.tsx +5 -2
  302. package/src/components/List/index.ts +2 -1
  303. package/src/components/List/types.ts +5 -0
  304. package/src/components/Modal/Modal.stories.tsx +50 -59
  305. package/src/components/Modal/Modal.tsx +1 -1
  306. package/src/components/MoreMenu/MoreMenu.stories.tsx +24 -15
  307. package/src/components/MultiSelect/MultiSelect.stories.tsx +23 -20
  308. package/src/components/MultiSelectList/MultiSelectList.tsx +15 -11
  309. package/src/components/MultiSelectList/helpers.ts +2 -2
  310. package/src/components/NewMoreMenu/NewMoreMenu.stories.tsx +42 -40
  311. package/src/components/Notification/Notification.stories.tsx +35 -34
  312. package/src/components/NumberInput/NumberInput.stories.tsx +32 -28
  313. package/src/components/PhoneInput/PhoneInput.stories.tsx +31 -56
  314. package/src/components/PhoneInput/PhoneInput.tsx +5 -2
  315. package/src/components/PhoneInput/components/PhoneInputCountryList/PhoneInputCountryList.stories.tsx +5 -11
  316. package/src/components/PhoneInput/components/PhoneInputCountryList/PhoneInputCountryList.tsx +1 -4
  317. package/src/components/RadioButton/RadioButton.stories.tsx +31 -21
  318. package/src/components/RadioButton/RadioButton.styles.ts +2 -1
  319. package/src/components/RadioButton/RadioButton.tsx +12 -5
  320. package/src/components/RadioButton/index.ts +1 -0
  321. package/src/components/RadioButton/types.ts +4 -0
  322. package/src/components/ScrollIntoViewIfNeeded/ScrollIntoViewIfNeeded.ts +15 -9
  323. package/src/components/SearchInput/SearchInput.stories.tsx +14 -14
  324. package/src/components/SearchInput/SearchInput.tsx +20 -29
  325. package/src/components/Select/CustomSelect.stories.tsx +29 -32
  326. package/src/components/Select/MultiSelect.stories.tsx +45 -45
  327. package/src/components/Select/Select.stories.tsx +45 -44
  328. package/src/components/Select/Select.styles.ts +5 -40
  329. package/src/components/Select/Select.tsx +67 -53
  330. package/src/components/Select/components/SelectList/SelectList.tsx +8 -6
  331. package/src/components/Select/components/SelectListItem/SelectListItem.tsx +5 -2
  332. package/src/components/Select/index.ts +1 -1
  333. package/src/components/Select/types.ts +3 -0
  334. package/src/components/Selector/Selector.stories.tsx +25 -27
  335. package/src/components/Selector/Selector.tsx +1 -2
  336. package/src/components/Skeleton/Skeleton.stories.tsx +13 -12
  337. package/src/components/SmartInput/SmartInput.stories.tsx +23 -23
  338. package/src/components/Status/Status.stories.tsx +79 -28
  339. package/src/components/Status/Status.styles.ts +2 -37
  340. package/src/components/Status/constants.ts +0 -10
  341. package/src/components/Status/index.ts +1 -1
  342. package/src/components/Status/types.ts +7 -3
  343. package/src/components/Switch/Switch.stories.tsx +19 -26
  344. package/src/components/TextArea/TextArea.stories.tsx +37 -26
  345. package/src/components/TextArea/TextArea.styles.ts +15 -8
  346. package/src/components/TextArea/TextArea.tsx +95 -62
  347. package/src/components/TextArea/index.ts +1 -1
  348. package/src/components/TextArea/types.ts +5 -5
  349. package/src/components/TextButton/TextButton.stories.tsx +8 -19
  350. package/src/components/TextButton/TextButton.styles.ts +1 -0
  351. package/src/components/TextWithInfo/TextWithInfo.stories.tsx +13 -21
  352. package/src/components/TextWithTooltip/TextWithTooltip.stories.tsx +26 -25
  353. package/src/components/TextWithTooltip/TextWithTooltip.tsx +1 -2
  354. package/src/components/ThemedPreloader/ThemedPreloader.stories.tsx +12 -23
  355. package/src/components/ThemedPreloader/components/SvgPreloader/SvgPreloader.tsx +4 -4
  356. package/src/components/Toaster/Toaster.stories.tsx +16 -14
  357. package/src/components/Tooltip/Tooltip.stories.tsx +5 -4
  358. package/src/components/Tooltip/Tooltip.styles.ts +2 -0
  359. package/src/components/Tooltip/Tooltip.tsx +1 -1
  360. package/src/components/WithMessages/WithMessages.stories.tsx +16 -20
  361. package/src/components/WithPopup/WithPopup.stories.tsx +27 -26
  362. package/src/components/WithPopup/WithPopup.tsx +36 -15
  363. package/src/components/WithTooltip/WithTooltip.stories.tsx +28 -28
  364. package/src/components/index.ts +1 -1
  365. package/src/constants/phone-info.ts +20 -33
  366. package/src/helpers/misc.ts +9 -7
  367. package/src/helpers/phone.ts +19 -15
  368. package/src/helpers/popper-helpers.ts +0 -1
  369. package/src/hooks/index.ts +7 -4
  370. package/src/hooks/use-intersection-ref.ts +30 -0
  371. package/src/hooks/use-latest-ref.ts +7 -0
  372. package/src/hooks/use-merge.ts +8 -0
  373. package/src/hooks/use-mixed-styles.ts +9 -11
  374. package/src/hooks/use-on-click-outside.ts +22 -14
  375. package/src/hooks/use-tweak-styles.ts +49 -27
  376. package/src/theme/Provider.tsx +10 -5
  377. package/src/theme/create-themed-styles.ts +78 -0
  378. package/src/theme/helpers.ts +41 -39
  379. package/src/theme/index.ts +2 -0
  380. package/src/theme/true-jss/ThemedStylesManager.ts +93 -0
  381. package/src/theme/true-jss/TweakStylesManager.ts +156 -0
  382. package/src/theme/true-jss/index.ts +2 -0
  383. package/src/theme/true-jss/jss-context.tsx +34 -0
  384. package/src/theme/types.ts +9 -8
  385. package/src/types.ts +17 -6
  386. package/dist/components/AccountInfo/AccountInfo.stories.d.ts +0 -6
  387. package/dist/components/AddButton/AddButton.stories.d.ts +0 -6
  388. package/dist/components/Button/Button.stories.d.ts +0 -6
  389. package/dist/components/Checkbox/Checkbox.stories.d.ts +0 -8
  390. package/dist/components/CloseButton/CloseButton.stories.d.ts +0 -5
  391. package/dist/components/Colors/Colors.d.ts +0 -2
  392. package/dist/components/Colors/Colors.stories.d.ts +0 -5
  393. package/dist/components/Colors/Colors.styles.d.ts +0 -1
  394. package/dist/components/Colors/index.d.ts +0 -1
  395. package/dist/components/ControlWrapper/ControlWrapper.stories.d.ts +0 -6
  396. package/dist/components/DateInput/DateInput.stories.d.ts +0 -7
  397. package/dist/components/DatePicker/DatePicker.stories.d.ts +0 -7
  398. package/dist/components/Description/Description.stories.d.ts +0 -16
  399. package/dist/components/FileInput/FileInput.stories.d.ts +0 -7
  400. package/dist/components/FileItem/FileItem.stories.d.ts +0 -8
  401. package/dist/components/FiltersPane/FiltersPane.stories.d.ts +0 -31
  402. package/dist/components/Flag/Flag.stories.d.ts +0 -12
  403. package/dist/components/FlexibleTable/FlexibleTable.stories.d.ts +0 -19
  404. package/dist/components/Icon/Icon.stories.d.ts +0 -6
  405. package/dist/components/Icon/complexIcons/icons.d.ts +0 -10
  406. package/dist/components/Icon/complexIcons/index.d.ts +0 -1
  407. package/dist/components/Icon/components/ComplexIconBoilerplate/ComplexIconBoilerplate.d.ts +0 -6
  408. package/dist/components/Icon/components/ComplexIconBoilerplate/index.d.ts +0 -1
  409. package/dist/components/Icon/components/IconBolerplate/IconBoilerplate.d.ts +0 -6
  410. package/dist/components/Icon/components/IconBolerplate/index.d.ts +0 -1
  411. package/dist/components/Icon/components/index.d.ts +0 -2
  412. package/dist/components/Icon/helpers.d.ts +0 -6
  413. package/dist/components/Icon/icons-list.d.ts +0 -1
  414. package/dist/components/IconButton/IconButton.stories.d.ts +0 -6
  415. package/dist/components/IncrementInput/IncrementInput.stories.d.ts +0 -6
  416. package/dist/components/Input/Input.stories.d.ts +0 -25
  417. package/dist/components/List/List.stories.d.ts +0 -5
  418. package/dist/components/Modal/Modal.stories.d.ts +0 -29
  419. package/dist/components/MoreMenu/MoreMenu.stories.d.ts +0 -6
  420. package/dist/components/MultiSelect/MultiSelect.stories.d.ts +0 -13
  421. package/dist/components/NewMoreMenu/NewMoreMenu.stories.d.ts +0 -12
  422. package/dist/components/Notification/Notification.stories.d.ts +0 -8
  423. package/dist/components/NumberInput/NumberInput.stories.d.ts +0 -7
  424. package/dist/components/PhoneInput/PhoneInput.stories.d.ts +0 -28
  425. package/dist/components/PhoneInput/components/PhoneInputCountryList/PhoneInputCountryList.stories.d.ts +0 -5
  426. package/dist/components/RadioButton/RadioButton.stories.d.ts +0 -7
  427. package/dist/components/SearchInput/SearchInput.stories.d.ts +0 -6
  428. package/dist/components/Select/CustomSelect.stories.d.ts +0 -11
  429. package/dist/components/Select/MultiSelect.stories.d.ts +0 -15
  430. package/dist/components/Select/Select.stories.d.ts +0 -15
  431. package/dist/components/Selector/Selector.stories.d.ts +0 -7
  432. package/dist/components/Skeleton/Skeleton.stories.d.ts +0 -6
  433. package/dist/components/SmartInput/SmartInput.stories.d.ts +0 -18
  434. package/dist/components/Status/Status.stories.d.ts +0 -6
  435. package/dist/components/Switch/Switch.stories.d.ts +0 -16
  436. package/dist/components/TextArea/TextArea.stories.d.ts +0 -17
  437. package/dist/components/TextButton/TextButton.stories.d.ts +0 -6
  438. package/dist/components/TextWithInfo/TextWithInfo.stories.d.ts +0 -12
  439. package/dist/components/TextWithTooltip/TextWithTooltip.stories.d.ts +0 -24
  440. package/dist/components/ThemedPreloader/ThemedPreloader.stories.d.ts +0 -17
  441. package/dist/components/Toaster/Toaster.stories.d.ts +0 -5
  442. package/dist/components/Tooltip/Tooltip.stories.d.ts +0 -5
  443. package/dist/components/WithMessages/WithMessages.stories.d.ts +0 -7
  444. package/dist/components/WithPopup/WithPopup.stories.d.ts +0 -16
  445. package/dist/components/WithTooltip/WithTooltip.stories.d.ts +0 -6
  446. package/src/components/Colors/Colors.styles.ts +0 -36
  447. package/src/components/Colors/Colors.tsx +0 -26
  448. package/src/components/Colors/index.ts +0 -1
  449. package/src/components/Flag/augment.d.ts +0 -1
  450. package/src/components/Icon/complexIcons/augment.d.ts +0 -1
  451. package/src/components/Icon/complexIcons/icons.ts +0 -19
  452. package/src/components/Icon/complexIcons/index.ts +0 -1
  453. package/src/components/Icon/components/ComplexIconBoilerplate/ComplexIconBoilerplate.tsx +0 -16
  454. package/src/components/Icon/components/ComplexIconBoilerplate/index.ts +0 -1
  455. package/src/components/Icon/components/IconBolerplate/IconBoilerplate.tsx +0 -43
  456. package/src/components/Icon/components/IconBolerplate/index.ts +0 -1
  457. package/src/components/Icon/components/index.ts +0 -2
  458. package/src/components/Icon/helpers.tsx +0 -9
  459. package/src/components/Icon/icons-list.ts +0 -855
  460. package/src/vite-env.d.ts +0 -1
  461. /package/src/components/Icon/{complexIcons/avatarGreen.svg → icons/avatar.svg} +0 -0
  462. /package/src/components/Icon/{complexIcons/fileExcel.svg → icons/file-excel.svg} +0 -0
  463. /package/src/components/Icon/{complexIcons/fileImage.svg → icons/file-image.svg} +0 -0
  464. /package/src/components/Icon/{complexIcons/fileOther.svg → icons/file-other.svg} +0 -0
  465. /package/src/components/Icon/{complexIcons/filePdf.svg → icons/file-pdf.svg} +0 -0
  466. /package/src/components/Icon/{complexIcons/fileWord.svg → icons/file-word.svg} +0 -0
  467. /package/src/components/Icon/{complexIcons/fileXml.svg → icons/file-xml.svg} +0 -0
  468. /package/src/components/Icon/{complexIcons/fileZip.svg → icons/file-zip.svg} +0 -0
@@ -1,6 +1,8 @@
1
- import { ReactNode, useEffect, useState } from 'react';
1
+ import { ReactElement, ReactNode, useEffect, useState } from 'react';
2
2
  import { isStringNotEmpty } from '@true-engineering/true-react-platform-helpers';
3
- import { ComponentMeta, ComponentStory } from '@storybook/react';
3
+ import { type Meta } from '@storybook/react';
4
+ import { GROUP_PLACEMENTS } from '../ControlWrapper';
5
+ import { iconsMap } from '../Icon';
4
6
  import { IMultipleSelectProps, Select } from './Select';
5
7
 
6
8
  interface ObjectValue {
@@ -9,8 +11,6 @@ interface ObjectValue {
9
11
  isDisabled?: boolean;
10
12
  }
11
13
 
12
- const groupPlacements = [undefined, 'left', 'right', 'middle'];
13
-
14
14
  const genLetters = (qnt = 1): string =>
15
15
  Math.random()
16
16
  .toString(36)
@@ -54,11 +54,13 @@ const objectOptions: ObjectValue[] = [
54
54
  { name: 'Artem', age: 23 },
55
55
  ];
56
56
 
57
+ const icons = [undefined, ...Object.keys(iconsMap)];
58
+
57
59
  // Максимум не включается, минимум включается
58
60
  const getRandomInt = (min: number, max: number) =>
59
61
  Math.floor(Math.random() * (Math.floor(max) - Math.ceil(min))) + Math.ceil(min);
60
62
 
61
- interface ISelectWithCustomProps<T> extends IMultipleSelectProps<T> {
63
+ interface ISelectCustomProps<T> extends IMultipleSelectProps<T> {
62
64
  valuesType: 'strings' | 'objects';
63
65
  shouldUseReactNodes?: boolean;
64
66
  shouldUsePopper?: boolean;
@@ -70,7 +72,7 @@ interface ISelectWithCustomProps<T> extends IMultipleSelectProps<T> {
70
72
  scrollParent?: 'document' | 'auto';
71
73
  }
72
74
 
73
- function SelectWithCustomProps<T>({
75
+ function Story<T>({
74
76
  valuesType,
75
77
  optionsMode,
76
78
  shouldUseReactNodes,
@@ -82,8 +84,8 @@ function SelectWithCustomProps<T>({
82
84
  canBeFlipped,
83
85
  scrollParent,
84
86
  noMatchesLabel,
85
- ...rest
86
- }: ISelectWithCustomProps<T>) {
87
+ ...args
88
+ }: ISelectCustomProps<T>): ReactElement {
87
89
  const [stringValue, setStringValue] = useState<string[]>();
88
90
 
89
91
  const stringHandler = (newValue?: string[]) => {
@@ -157,7 +159,7 @@ function SelectWithCustomProps<T>({
157
159
 
158
160
  return (
159
161
  <Select
160
- {...rest}
162
+ {...args}
161
163
  {...(props as unknown as IMultipleSelectProps<any>)}
162
164
  {...(shouldRenderSearchInputInList && {
163
165
  searchInput: { shouldRenderInList: true },
@@ -179,14 +181,41 @@ function SelectWithCustomProps<T>({
179
181
  );
180
182
  }
181
183
 
182
- export default {
184
+ const meta: Meta<typeof Story> = {
183
185
  title: 'Controls/Select',
184
- component: SelectWithCustomProps,
186
+ component: Story,
187
+ args: {
188
+ label: 'Dropdown',
189
+ noMatchesLabel: 'No matches',
190
+ isInvalid: false,
191
+ errorMessage: 'Error Text',
192
+ icon: 'filter',
193
+ defaultOptionLabel: '',
194
+ allOptionsLabel: 'Все опции',
195
+ isDisabled: false,
196
+ isRequired: false,
197
+ isClearable: false,
198
+ isLoading: false,
199
+ debounceTime: 400,
200
+ // custom options
201
+ shouldUseReactNodes: false,
202
+ valuesType: 'strings',
203
+ optionsMode: 'normal',
204
+ shouldUsePopper: false,
205
+ shouldRenderInBody: false,
206
+ shouldHideOnScroll: false,
207
+ shouldUseCustomIsDisabledFunction: false,
208
+ shouldRenderSearchInputInList: false,
209
+ shouldScrollToList: true,
210
+ canBeFlipped: false,
211
+ scrollParent: 'document',
212
+ size: undefined,
213
+ },
185
214
  argTypes: {
186
215
  debounceTime: {
187
216
  control: { type: 'range', min: 0, max: 1000, step: 100 },
188
217
  },
189
- groupPlacement: { control: 'select', options: groupPlacements },
218
+ groupPlacement: { options: [undefined, ...GROUP_PLACEMENTS], control: 'select' },
190
219
  optionsMode: {
191
220
  control: 'inline-radio',
192
221
  options: ['normal', 'search', 'dynamic'],
@@ -195,38 +224,9 @@ export default {
195
224
  control: 'inline-radio',
196
225
  options: ['strings', 'objects'],
197
226
  },
227
+ icon: { control: 'select', options: icons },
198
228
  },
199
- } as ComponentMeta<typeof SelectWithCustomProps>;
200
-
201
- const Template: ComponentStory<typeof SelectWithCustomProps> = (args) => (
202
- <SelectWithCustomProps {...args} />
203
- );
204
-
205
- export const MultiSelect = Template.bind({});
206
-
207
- MultiSelect.args = {
208
- label: 'Dropdown',
209
- noMatchesLabel: 'No matches',
210
- isInvalid: false,
211
- errorMessage: 'Error Text',
212
- icon: 'document',
213
- defaultOptionLabel: '',
214
- allOptionsLabel: 'Все опции',
215
- isDisabled: false,
216
- isRequired: false,
217
- isClearable: false,
218
- isLoading: false,
219
- debounceTime: 400,
220
- // custom options
221
- shouldUseReactNodes: false,
222
- valuesType: 'strings',
223
- optionsMode: 'normal',
224
- shouldUsePopper: false,
225
- shouldRenderInBody: false,
226
- shouldHideOnScroll: false,
227
- shouldUseCustomIsDisabledFunction: false,
228
- shouldRenderSearchInputInList: false,
229
- shouldScrollToList: true,
230
- canBeFlipped: false,
231
- scrollParent: 'document',
232
229
  };
230
+
231
+ export default meta;
232
+ export const MultiSelect = {};
@@ -1,6 +1,8 @@
1
- import { ReactNode, useEffect, useState } from 'react';
1
+ import { ReactElement, ReactNode, useEffect, useState } from 'react';
2
2
  import { isStringNotEmpty } from '@true-engineering/true-react-platform-helpers';
3
- import { ComponentMeta, ComponentStory } from '@storybook/react';
3
+ import { type Meta } from '@storybook/react';
4
+ import { GROUP_PLACEMENTS } from '../ControlWrapper';
5
+ import { iconsMap } from '../Icon';
4
6
  import { ISelectProps, Select } from './Select';
5
7
 
6
8
  interface ObjectValue {
@@ -9,8 +11,6 @@ interface ObjectValue {
9
11
  isDisabled?: boolean;
10
12
  }
11
13
 
12
- const groupPlacements = [undefined, 'left', 'right', 'middle'];
13
-
14
14
  const genLetters = (qnt = 1): string =>
15
15
  Math.random()
16
16
  .toString(36)
@@ -54,11 +54,13 @@ const objectOptions: ObjectValue[] = [
54
54
  { name: 'Artem', age: 23 },
55
55
  ];
56
56
 
57
+ const icons = [undefined, ...Object.keys(iconsMap)];
58
+
57
59
  // Максимум не включается, минимум включается
58
60
  const getRandomInt = (min: number, max: number) =>
59
61
  Math.floor(Math.random() * (Math.floor(max) - Math.ceil(min))) + Math.ceil(min);
60
62
 
61
- interface ISelectWithCustomProps<T> extends ISelectProps<T> {
63
+ interface ISelectCustomProps<T> extends ISelectProps<T> {
62
64
  valuesType: 'strings' | 'objects';
63
65
  shouldUseReactNodes?: boolean;
64
66
  shouldUsePopper?: boolean;
@@ -70,7 +72,7 @@ interface ISelectWithCustomProps<T> extends ISelectProps<T> {
70
72
  scrollParent?: 'document' | 'auto';
71
73
  }
72
74
 
73
- function SelectWithCustomProps<T>({
75
+ function Story<T>({
74
76
  valuesType,
75
77
  optionsMode,
76
78
  shouldUseReactNodes,
@@ -82,8 +84,8 @@ function SelectWithCustomProps<T>({
82
84
  canBeFlipped,
83
85
  scrollParent,
84
86
  noMatchesLabel,
85
- ...rest
86
- }: ISelectWithCustomProps<T>) {
87
+ ...args
88
+ }: ISelectCustomProps<T>): ReactElement {
87
89
  const [stringValue, setStringValue] = useState<string>();
88
90
  const stringHandler = (newValue?: string) => {
89
91
  console.log('change');
@@ -155,7 +157,7 @@ function SelectWithCustomProps<T>({
155
157
 
156
158
  return (
157
159
  <Select
158
- {...rest}
160
+ {...args}
159
161
  {...(props as unknown as ISelectProps<any>)}
160
162
  {...(shouldRenderSearchInputInList && {
161
163
  searchInput: { shouldRenderInList: true },
@@ -176,14 +178,41 @@ function SelectWithCustomProps<T>({
176
178
  );
177
179
  }
178
180
 
179
- export default {
181
+ const meta: Meta<typeof Story> = {
180
182
  title: 'Controls/Select',
181
- component: SelectWithCustomProps,
183
+ component: Story,
184
+ args: {
185
+ label: 'Dropdown',
186
+ defaultOptionLabel: 'Default Option',
187
+ noMatchesLabel: 'No matches',
188
+ isInvalid: false,
189
+ errorMessage: 'Error Text',
190
+ isDisabled: false,
191
+ isReadonly: false,
192
+ isRequired: false,
193
+ isClearable: false,
194
+ isLoading: false,
195
+ debounceTime: 400,
196
+ icon: undefined,
197
+ // custom options
198
+ shouldUseReactNodes: false,
199
+ valuesType: 'strings',
200
+ optionsMode: 'normal',
201
+ shouldUsePopper: false,
202
+ shouldRenderInBody: false,
203
+ shouldHideOnScroll: false,
204
+ shouldUseCustomIsDisabledFunction: false,
205
+ shouldRenderSearchInputInList: false,
206
+ shouldScrollToList: true,
207
+ canBeFlipped: false,
208
+ scrollParent: 'document',
209
+ size: undefined,
210
+ },
182
211
  argTypes: {
183
212
  debounceTime: {
184
213
  control: { type: 'range', min: 0, max: 1000, step: 100 },
185
214
  },
186
- groupPlacement: { control: 'select', options: groupPlacements },
215
+ groupPlacement: { options: [undefined, ...GROUP_PLACEMENTS], control: 'select' },
187
216
  optionsMode: {
188
217
  control: 'inline-radio',
189
218
  options: ['normal', 'search', 'dynamic'],
@@ -192,37 +221,9 @@ export default {
192
221
  control: 'inline-radio',
193
222
  options: ['strings', 'objects'],
194
223
  },
224
+ icon: { control: 'select', options: icons },
195
225
  },
196
- } as ComponentMeta<typeof SelectWithCustomProps>;
197
-
198
- const Template: ComponentStory<typeof SelectWithCustomProps> = (args) => (
199
- <SelectWithCustomProps {...args} />
200
- );
201
-
202
- export const Default = Template.bind({});
203
-
204
- Default.args = {
205
- label: 'Dropdown',
206
- defaultOptionLabel: 'Default Option',
207
- noMatchesLabel: 'No matches',
208
- isInvalid: false,
209
- errorMessage: 'Error Text',
210
- isDisabled: false,
211
- isReadonly: false,
212
- isRequired: false,
213
- isClearable: false,
214
- isLoading: false,
215
- debounceTime: 400,
216
- // custom options
217
- shouldUseReactNodes: false,
218
- valuesType: 'strings',
219
- optionsMode: 'normal',
220
- shouldUsePopper: false,
221
- shouldRenderInBody: false,
222
- shouldHideOnScroll: false,
223
- shouldUseCustomIsDisabledFunction: false,
224
- shouldRenderSearchInputInList: false,
225
- shouldScrollToList: true,
226
- canBeFlipped: false,
227
- scrollParent: 'document',
228
226
  };
227
+
228
+ export default meta;
229
+ export const Default = {};
@@ -5,7 +5,7 @@ import { type ISearchInputStyles } from '../SearchInput';
5
5
  import { IWithMessagesStyles } from '../WithMessages';
6
6
  import { type ISelectListStyles } from './components';
7
7
 
8
- const { CONTROL, Z_INDEX } = dimensions;
8
+ const { Z_INDEX } = dimensions;
9
9
 
10
10
  export const useStyles = createThemedStyles('Select', {
11
11
  root: {
@@ -17,7 +17,6 @@ export const useStyles = createThemedStyles('Select', {
17
17
  inputWrapper: {
18
18
  width: '100%',
19
19
  cursor: 'text',
20
- position: 'relative',
21
20
  },
22
21
 
23
22
  listWrapper: {
@@ -40,20 +39,16 @@ export const useStyles = createThemedStyles('Select', {
40
39
  },
41
40
 
42
41
  arrow: {
43
- position: 'absolute',
44
- right: 12,
45
- top: '50%',
46
- width: 20,
47
- height: 20,
42
+ width: 'var(--icon-inner-size, 20px)',
43
+ height: 'var(--icon-inner-size, 20px)',
48
44
  cursor: 'pointer',
49
- transform: 'translateY(-50%)',
50
45
  transition: animations.defaultTransition,
51
46
  transitionProperty: 'transform',
52
47
  zIndex: Z_INDEX.CONTROL_FOCUS + 1,
53
48
  },
54
49
 
55
50
  activeArrow: {
56
- transform: 'translateY(-50%) rotate(180deg)',
51
+ transform: 'rotate(180deg)',
57
52
  },
58
53
 
59
54
  disabled: {
@@ -62,45 +57,15 @@ export const useStyles = createThemedStyles('Select', {
62
57
  },
63
58
  },
64
59
 
65
- counter: {
66
- '&:not(:last-child)': {
67
- paddingRight: 8,
68
- },
69
- },
70
-
71
- icon: {
72
- width: CONTROL.ICON_INNER_SIZE,
73
- height: CONTROL.ICON_INNER_SIZE,
74
- },
75
-
76
- iconWrapper: {
77
- display: 'flex',
78
- alignItems: 'center',
79
- },
60
+ counter: {},
80
61
  });
81
62
 
82
63
  const baseInputStyles: IInputStyles = {
83
- inputContent: {
84
- paddingRight: 32,
85
- },
86
-
87
64
  input: {
88
65
  '&[readonly]': {
89
66
  cursor: 'pointer',
90
67
  },
91
68
  },
92
-
93
- tweakControlWrapper: {
94
- controls: {
95
- paddingRight: 40,
96
- },
97
-
98
- icon: {
99
- '&:last-child': {
100
- paddingRight: 0,
101
- },
102
- },
103
- },
104
69
  };
105
70
 
106
71
  const readonlyInputBaseStyles: IInputStyles = {
@@ -5,6 +5,7 @@ import {
5
5
  KeyboardEvent,
6
6
  MouseEvent,
7
7
  ReactNode,
8
+ Ref,
8
9
  SyntheticEvent,
9
10
  useCallback,
10
11
  useEffect,
@@ -16,7 +17,9 @@ import { Portal } from 'react-overlays';
16
17
  import clsx from 'clsx';
17
18
  import { debounce } from 'ts-debounce';
18
19
  import {
20
+ applyAction,
19
21
  createFilter,
22
+ getArray,
20
23
  getTestId,
21
24
  isNotEmpty,
22
25
  isReactNodeNotEmpty,
@@ -37,14 +40,14 @@ import {
37
40
  defaultIsOptionDisabled,
38
41
  getDefaultConvertToIdFunction,
39
42
  } from './helpers';
40
- import { IChangeSelectEvent, IMultipleSelectValue } from './types';
43
+ import { IChangeSelectEvent, IMultipleSelectValue, ISelectFooter } from './types';
41
44
  import { getInputStyles, ISelectStyles, useStyles } from './Select.styles';
42
45
 
43
46
  export interface ISelectProps<Value>
44
47
  extends Omit<IInputProps, 'value' | 'onChange' | 'onBlur' | 'type' | 'tweakStyles'>,
45
48
  ICommonProps<ISelectStyles> {
46
49
  header?: ReactNode;
47
- footer?: ReactNode;
50
+ footer?: ISelectFooter<Value>;
48
51
  defaultOptionLabel?: ReactNode;
49
52
  allOptionsLabel?: string;
50
53
  noMatchesLabel?: string;
@@ -58,12 +61,16 @@ export interface ISelectProps<Value>
58
61
  dropdownOptions?: IDropdownWithPopperOptions;
59
62
  /** @default 'chevron-down' */
60
63
  dropdownIcon?: IIcon;
61
- options: Value[] | Readonly<Value[]>;
64
+ options: Value[] | readonly Value[];
62
65
  value: Value | undefined;
63
66
  /** @default true */
64
67
  shouldScrollToList?: boolean;
65
68
  isMultiSelect?: false;
66
- searchInput?: { shouldRenderInList: true } & Pick<ISearchInputProps, 'placeholder'>;
69
+ searchInput?: {
70
+ /** @default false */
71
+ shouldRenderInList?: boolean;
72
+ ref?: Ref<HTMLInputElement>;
73
+ } & Pick<ISearchInputProps, 'placeholder' | 'shouldFocusOnMount'>;
67
74
  isOptionDisabled?: (option: Value) => boolean;
68
75
  onChange: (value: Value | undefined, event: IChangeSelectEvent) => void; // подумать как возвращать индекс
69
76
  onBlur?: (event: Event | SyntheticEvent) => void;
@@ -188,7 +195,7 @@ export function Select<Value>(
188
195
 
189
196
  const filteredOptions = useMemo(() => {
190
197
  if (optionsMode !== 'search') {
191
- return options;
198
+ return options as Value[];
192
199
  }
193
200
 
194
201
  const filter =
@@ -248,10 +255,14 @@ export function Select<Value>(
248
255
 
249
256
  const handleListClose = useCallback(
250
257
  (event: Event | SyntheticEvent) => {
258
+ if (!isListOpen) {
259
+ return;
260
+ }
261
+
251
262
  closeList();
252
263
  onBlur?.(event);
253
264
  },
254
- [closeList, onBlur],
265
+ [isListOpen, closeList, onBlur],
255
266
  );
256
267
 
257
268
  const handleListOpen = () => {
@@ -269,32 +280,6 @@ export function Select<Value>(
269
280
  handleListOpen();
270
281
  };
271
282
 
272
- const handleBlur = (event: FocusEvent<HTMLInputElement>) => {
273
- // Когда что-то блокирует открытие листа, но блур все равно должен сработать
274
- // например minSymbolsCount
275
- if (isListOpen && !isOpen) {
276
- handleListClose(event);
277
- return;
278
- }
279
-
280
- if (
281
- !isNotEmpty(event.relatedTarget) ||
282
- !isNotEmpty(list.current) ||
283
- !isNotEmpty(inputWrapper.current)
284
- ) {
285
- return;
286
- }
287
-
288
- const isActionInsideSelect =
289
- hasExactParent(event.relatedTarget, list.current) ||
290
- hasExactParent(event.relatedTarget, inputWrapper.current);
291
-
292
- // Ничего не делаем, если клик был внутри селекта
293
- if (!isActionInsideSelect) {
294
- handleListClose(event);
295
- }
296
- };
297
-
298
283
  const handleChange = useCallback(
299
284
  (newValue: Value | IMultipleSelectValue<Value> | undefined, event: IChangeSelectEvent) => {
300
285
  // Тут беда с типами, сорри
@@ -473,6 +458,32 @@ export function Select<Value>(
473
458
  // Последняя проверка на случай, если мы че то ищем в опциях
474
459
  (optionsMode === 'normal' || hasEnoughSymbolsToSearch);
475
460
 
461
+ const handleBlur = (event: FocusEvent<HTMLInputElement>) => {
462
+ // Когда что-то блокирует открытие листа, но блур все равно должен сработать
463
+ // например minSymbolsCount
464
+ if (isListOpen && !isOpen) {
465
+ handleListClose(event);
466
+ return;
467
+ }
468
+
469
+ if (
470
+ !isNotEmpty(event.relatedTarget) ||
471
+ !isNotEmpty(list.current) ||
472
+ !isNotEmpty(inputWrapper.current)
473
+ ) {
474
+ return;
475
+ }
476
+
477
+ const isActionInsideSelect =
478
+ hasExactParent(event.relatedTarget, list.current) ||
479
+ hasExactParent(event.relatedTarget, inputWrapper.current);
480
+
481
+ // Ничего не делаем, если клик был внутри селекта
482
+ if (!isActionInsideSelect) {
483
+ handleListClose(event);
484
+ }
485
+ };
486
+
476
487
  // Эти значения ставятся в false по дефолту также в useDropdown
477
488
  const {
478
489
  shouldUsePopper = false,
@@ -544,7 +555,7 @@ export function Select<Value>(
544
555
  allOptionsLabel={shouldShowAllOption && allOptionsLabel}
545
556
  areAllOptionsSelected={areAllOptionsSelected}
546
557
  customListHeader={customHeader}
547
- customListFooter={footer}
558
+ customListFooter={applyAction(footer, { filteredOptions })}
548
559
  noMatchesLabel={noMatchesLabel}
549
560
  focusedIndex={focusedListCellIndex}
550
561
  activeValue={value}
@@ -566,16 +577,6 @@ export function Select<Value>(
566
577
  </div>
567
578
  );
568
579
 
569
- const multiSelectCounterWithIcon =
570
- shouldShowMultiSelectCounter || isNotEmpty(icon) ? (
571
- <div className={classes.iconWrapper}>
572
- {shouldShowMultiSelectCounter && (
573
- <div className={classes.counter}>(+{value.length - 1})</div>
574
- )}
575
- {isNotEmpty(icon) && <div className={classes.icon}>{renderIcon(icon)}</div>}
576
- </div>
577
- ) : undefined;
578
-
579
580
  return (
580
581
  <WithMessages
581
582
  errorMessage={errorMessage}
@@ -603,18 +604,31 @@ export function Select<Value>(
603
604
  isLoading={areOptionsLoading}
604
605
  tweakStyles={tweakInputStyles}
605
606
  testId={testId}
606
- icon={isMultiSelect ? multiSelectCounterWithIcon : icon}
607
+ icon={[
608
+ isMultiSelect && shouldShowMultiSelectCounter
609
+ ? {
610
+ key: 'counter',
611
+ iconComponent: (
612
+ <div key="counter" className={classes.counter}>
613
+ (+{value.length - 1})
614
+ </div>
615
+ ),
616
+ shouldResetSize: true,
617
+ }
618
+ : undefined,
619
+
620
+ ...getArray(icon),
621
+
622
+ <div
623
+ key="arrow"
624
+ className={clsx(classes.arrow, isOpen && classes.activeArrow)}
625
+ onClick={onArrowClick} // клик тут, потому что onClick в ControlWrapper добавляет tabIndex={0}
626
+ >
627
+ {renderIcon(dropdownIcon)}
628
+ </div>,
629
+ ].filter(isNotEmpty)}
607
630
  {...inputProps}
608
631
  />
609
- <div
610
- onMouseDown={(event: MouseEvent) => {
611
- event.preventDefault();
612
- }}
613
- onClick={onArrowClick}
614
- className={clsx(classes.arrow, isOpen && classes.activeArrow)}
615
- >
616
- {renderIcon(dropdownIcon)}
617
- </div>
618
632
  </div>
619
633
  {shouldUsePopper ? (
620
634
  <Portal container={shouldRenderInBody ? document.body : inputWrapper.current}>
@@ -1,4 +1,4 @@
1
- import { useMemo, type ReactNode } from 'react';
1
+ import { type ReactNode, useMemo } from 'react';
2
2
  import clsx from 'clsx';
3
3
  import {
4
4
  addDataTestId,
@@ -8,13 +8,13 @@ import {
8
8
  import { type ICommonProps } from '../../../../types';
9
9
  import { ScrollIntoViewIfNeeded } from '../../../ScrollIntoViewIfNeeded';
10
10
  import { ALL_OPTION_INDEX, DEFAULT_OPTION_INDEX } from '../../constants';
11
- import { SelectListItem, type ISelectListItemProps } from '../SelectListItem';
12
- import { useStyles, type ISelectListStyles } from './SelectList.styles';
11
+ import { type ISelectListItemProps, SelectListItem } from '../SelectListItem';
12
+ import { type ISelectListStyles, useStyles } from './SelectList.styles';
13
13
 
14
14
  export interface ISelectListProps<Value>
15
15
  extends ICommonProps<ISelectListStyles>,
16
16
  Pick<ISelectListItemProps, 'onToggleCheckbox' | 'onOptionSelect' | 'isMultiSelect'> {
17
- options: Value[] | Readonly<Value[]>;
17
+ options: Value[] | readonly Value[];
18
18
  focusedIndex?: number;
19
19
  activeValue?: Value | Value[];
20
20
  noMatchesLabel?: string;
@@ -84,7 +84,7 @@ export function SelectList<Value>({
84
84
  })}
85
85
  >
86
86
  {isHeaderNotEmpty && <div className={classes.listHeader}>{customListHeader}</div>}
87
- <div className={classes.list} {...addDataTestId(testId)}>
87
+ <div className={classes.list} {...addDataTestId(testId)} tabIndex={-1}>
88
88
  {isLoading ? (
89
89
  <div className={clsx(classes.cell, classes.loading)}>{loadingLabel}</div>
90
90
  ) : (
@@ -119,8 +119,9 @@ export function SelectList<Value>({
119
119
  )}
120
120
  {listOptions.map((opt, i) => {
121
121
  const optionValue = options[i];
122
+ const id = convertValueToId(optionValue);
122
123
  const isFocused = focusedIndex === i;
123
- const isActive = activeOptionsIds.has(convertValueToId(optionValue));
124
+ const isActive = activeOptionsIds.has(id);
124
125
  // проверяем, что опция задизейблена
125
126
  const isDisabled = optionsDisableMap[i];
126
127
 
@@ -135,6 +136,7 @@ export function SelectList<Value>({
135
136
  isMultiSelect={isMultiSelect}
136
137
  onOptionSelect={onOptionSelect}
137
138
  onToggleCheckbox={onToggleCheckbox}
139
+ data={{ id }}
138
140
  >
139
141
  {opt}
140
142
  </SelectListItem>
@@ -7,12 +7,13 @@ import {
7
7
  } from 'react';
8
8
  import clsx from 'clsx';
9
9
  import { type Classes } from 'jss';
10
- import { addDataAttributes } from '../../../../helpers';
10
+ import { addDataAttributes } from '@true-engineering/true-react-platform-helpers';
11
+ import { IDataAttributesProps } from '../../../../types';
11
12
  import { Checkbox } from '../../../Checkbox';
12
13
  import { ScrollIntoViewIfNeeded } from '../../../ScrollIntoViewIfNeeded';
13
14
  import { checkboxStyles } from './SelectListItem.styles';
14
15
 
15
- export interface ISelectListItemProps {
16
+ export interface ISelectListItemProps extends IDataAttributesProps {
16
17
  index: number;
17
18
  isSemiChecked?: boolean;
18
19
  isDisabled?: boolean;
@@ -38,6 +39,7 @@ export const SelectListItem: FC<ISelectListItemProps> = ({
38
39
  children,
39
40
  isFocused,
40
41
  isMultiSelect,
42
+ data,
41
43
  onOptionSelect,
42
44
  onToggleCheckbox,
43
45
  }) => {
@@ -67,6 +69,7 @@ export const SelectListItem: FC<ISelectListItemProps> = ({
67
69
  disabled: isDisabled,
68
70
  active: isActive,
69
71
  focused: isFocused,
72
+ ...data,
70
73
  })}
71
74
  onClick={!isDisabled && !isMultiSelect ? (event) => onOptionSelect(index, event) : undefined}
72
75
  >
@@ -1,4 +1,4 @@
1
1
  export * from './Select';
2
2
  export * from './types';
3
3
  export type { ISelectStyles } from './Select.styles';
4
- export type { ISelectListStyles } from './components';
4
+ export { type ISelectListStyles, SelectList } from './components';
@@ -1,6 +1,9 @@
1
1
  import { ChangeEvent, KeyboardEvent } from 'react';
2
+ import { IRenderNode } from '../../types';
2
3
  import { IChangeInputEvent } from '../Input';
3
4
 
4
5
  export type IMultipleSelectValue<Value> = Array<NonNullable<Value>>;
5
6
 
6
7
  export type IChangeSelectEvent = IChangeInputEvent | ChangeEvent<HTMLElement> | KeyboardEvent;
8
+
9
+ export type ISelectFooter<T> = IRenderNode<{ filteredOptions: T[] }>;