@true-engineering/true-react-common-ui-kit 4.0.0-alpha6 → 4.0.0-alpha62

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 (489) hide show
  1. package/README.md +12 -660
  2. package/dist/components/AccountInfo/AccountInfo.styles.d.ts +1 -1
  3. package/dist/components/AddButton/AddButton.d.ts +1 -0
  4. package/dist/components/AddButton/AddButton.styles.d.ts +1 -1
  5. package/dist/components/Button/Button.d.ts +1 -1
  6. package/dist/components/Button/Button.styles.d.ts +1 -1
  7. package/dist/components/Checkbox/Checkbox.d.ts +3 -1
  8. package/dist/components/Checkbox/Checkbox.styles.d.ts +3 -2
  9. package/dist/components/Checkbox/index.d.ts +1 -0
  10. package/dist/components/Checkbox/types.d.ts +3 -0
  11. package/dist/components/CloseButton/CloseButton.styles.d.ts +1 -1
  12. package/dist/components/ControlWrapper/ControlWrapper.d.ts +10 -3
  13. package/dist/components/ControlWrapper/ControlWrapper.styles.d.ts +3 -2
  14. package/dist/components/ControlWrapper/constants.d.ts +1 -0
  15. package/dist/components/ControlWrapper/helpers.d.ts +4 -0
  16. package/dist/components/ControlWrapper/index.d.ts +3 -0
  17. package/dist/components/ControlWrapper/types.d.ts +14 -0
  18. package/dist/components/CssBaseline/CssBaseline.styles.d.ts +1 -1
  19. package/dist/components/DateInput/DateInput.d.ts +1 -3
  20. package/dist/components/DateInput/DateInput.styles.d.ts +1 -1
  21. package/dist/components/DateInput/constants.d.ts +1 -1
  22. package/dist/components/DatePicker/DatePicker.d.ts +4 -4
  23. package/dist/components/DatePicker/DatePicker.styles.d.ts +1 -1
  24. package/dist/components/DatePicker/components/DatePickerBase/DatePickerBase.d.ts +5 -0
  25. package/dist/components/DatePicker/components/DatePickerBase/index.d.ts +1 -0
  26. package/dist/components/DatePicker/components/DatePickerHeader/DatePickerHeader.styles.d.ts +1 -1
  27. package/dist/components/DatePicker/components/PopperContainer/PopperContainer.d.ts +2 -4
  28. package/dist/components/DatePicker/components/index.d.ts +1 -0
  29. package/dist/components/DatePicker/constants.d.ts +7 -2
  30. package/dist/components/DatePicker/index.d.ts +1 -0
  31. package/dist/components/DatePicker/types.d.ts +2 -2
  32. package/dist/components/Description/Description.styles.d.ts +1 -1
  33. package/dist/components/FileInput/FileInput.d.ts +1 -1
  34. package/dist/components/FileInput/FileInput.styles.d.ts +1 -1
  35. package/dist/components/FileItem/FileItem.styles.d.ts +1 -1
  36. package/dist/components/FileItem/constants.d.ts +3 -4
  37. package/dist/components/FileItem/helpers.d.ts +3 -2
  38. package/dist/components/FileItem/types.d.ts +1 -2
  39. package/dist/components/FiltersPane/FiltersPane.d.ts +7 -3
  40. package/dist/components/FiltersPane/FiltersPane.styles.d.ts +2 -2
  41. package/dist/components/FiltersPane/components/Filter/Filter.d.ts +3 -4
  42. package/dist/components/FiltersPane/components/Filter/helpers.d.ts +4 -0
  43. package/dist/components/FiltersPane/components/FilterInterval/FilterInterval.d.ts +3 -11
  44. package/dist/components/FiltersPane/components/FilterInterval/FilterInterval.styles.d.ts +3 -6
  45. package/dist/components/FiltersPane/components/FilterMultiSelect/FilterMultiSelect.d.ts +0 -1
  46. package/dist/components/FiltersPane/components/FilterSelect/FilterSelect.styles.d.ts +3 -6
  47. package/dist/components/FiltersPane/components/FilterValueView/FilterValueView.d.ts +4 -3
  48. package/dist/components/FiltersPane/components/FilterValueView/FilterValueView.styles.d.ts +1 -1
  49. package/dist/components/FiltersPane/components/FilterWithDates/FilterWithDates.styles.d.ts +5 -11
  50. package/dist/components/FiltersPane/components/FilterWithPeriod/FilterWithPeriod.styles.d.ts +1 -1
  51. package/dist/components/FiltersPane/components/FilterWrapper/FilterWrapper.d.ts +2 -3
  52. package/dist/components/FiltersPane/components/FilterWrapper/FilterWrapper.styles.d.ts +2 -2
  53. package/dist/components/FiltersPane/components/FiltersPaneSearch/FiltersPaneSearch.d.ts +2 -1
  54. package/dist/components/FiltersPane/components/FiltersPaneSearch/FiltersPaneSearch.styles.d.ts +1 -1
  55. package/dist/components/FiltersPane/constants.d.ts +1 -1
  56. package/dist/components/FiltersPane/helpers.d.ts +1 -1
  57. package/dist/components/FiltersPane/index.d.ts +1 -0
  58. package/dist/components/FiltersPane/types.d.ts +8 -3
  59. package/dist/components/Flag/Flag.styles.d.ts +1 -1
  60. package/dist/components/FlexibleTable/FlexibleTable.d.ts +4 -2
  61. package/dist/components/FlexibleTable/FlexibleTable.styles.d.ts +2 -2
  62. package/dist/components/FlexibleTable/components/FlexibleTableCell/FlexibleTableCell.d.ts +4 -3
  63. package/dist/components/FlexibleTable/components/FlexibleTableCell/FlexibleTableCell.styles.d.ts +1 -1
  64. package/dist/components/FlexibleTable/components/FlexibleTableRow/FlexibleTableRow.d.ts +2 -5
  65. package/dist/components/FlexibleTable/components/FlexibleTableRow/FlexibleTableRow.styles.d.ts +1 -1
  66. package/dist/components/FlexibleTable/helpers.d.ts +2 -2
  67. package/dist/components/FlexibleTable/types.d.ts +19 -11
  68. package/dist/components/FloatDocActions/FloatDocActions.d.ts +6 -0
  69. package/dist/components/FloatDocActions/FloatDocActions.styles.d.ts +8 -0
  70. package/dist/components/FloatDocActions/components/DocActions/DocActions.d.ts +12 -0
  71. package/dist/components/FloatDocActions/components/DocActions/DocActions.styles.d.ts +6 -0
  72. package/dist/components/FloatDocActions/components/DocActions/constants.d.ts +1 -0
  73. package/dist/components/FloatDocActions/components/DocActions/index.d.ts +4 -0
  74. package/dist/components/FloatDocActions/components/DocActions/types.d.ts +2 -0
  75. package/dist/components/FloatDocActions/components/index.d.ts +1 -0
  76. package/dist/components/FloatDocActions/constants.d.ts +1 -0
  77. package/dist/components/FloatDocActions/index.d.ts +3 -0
  78. package/dist/components/Icon/Icon.styles.d.ts +1 -1
  79. package/dist/components/Icon/icons/index.d.ts +31 -0
  80. package/dist/components/Icon/index.d.ts +1 -1
  81. package/dist/components/Icon/types.d.ts +7 -11
  82. package/dist/components/IconButton/IconButton.d.ts +1 -2
  83. package/dist/components/IconButton/IconButton.styles.d.ts +1 -1
  84. package/dist/components/IconButton/constants.d.ts +1 -1
  85. package/dist/components/IncrementInput/IncrementInput.styles.d.ts +1 -3
  86. package/dist/components/Input/Input.d.ts +3 -3
  87. package/dist/components/Input/Input.styles.d.ts +1 -1
  88. package/dist/components/Input/InputBase.d.ts +3 -3
  89. package/dist/components/List/List.d.ts +2 -1
  90. package/dist/components/List/List.styles.d.ts +3 -2
  91. package/dist/components/List/components/ListItem/ListItem.d.ts +2 -0
  92. package/dist/components/List/components/ListItem/ListItem.styles.d.ts +3 -2
  93. package/dist/components/List/index.d.ts +2 -1
  94. package/dist/components/List/types.d.ts +8 -0
  95. package/dist/components/Modal/Modal.d.ts +1 -1
  96. package/dist/components/Modal/Modal.styles.d.ts +1 -1
  97. package/dist/components/MoreMenu/MoreMenu.styles.d.ts +1 -1
  98. package/dist/components/MultiSelect/MultiSelect.d.ts +0 -1
  99. package/dist/components/MultiSelect/MultiSelect.styles.d.ts +1 -1
  100. package/dist/components/MultiSelect/components/MultiSelectInput/MultiSelectInput.styles.d.ts +1 -1
  101. package/dist/components/MultiSelectList/MultiSelectList.styles.d.ts +1 -1
  102. package/dist/components/MultiSelectList/constants.d.ts +1 -1
  103. package/dist/components/MultiSelectList/helpers.d.ts +1 -1
  104. package/dist/components/NewMoreMenu/NewMoreMenu.d.ts +5 -2
  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 +2 -3
  118. package/dist/components/Select/Select.d.ts +3 -3
  119. package/dist/components/Select/Select.styles.d.ts +12 -22
  120. package/dist/components/Select/components/SelectList/SelectList.d.ts +8 -6
  121. package/dist/components/Select/components/SelectList/SelectList.styles.d.ts +3 -2
  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.d.ts +3 -2
  135. package/dist/components/Switch/Switch.styles.d.ts +3 -2
  136. package/dist/components/Switch/types.d.ts +3 -0
  137. package/dist/components/TextArea/TextArea.d.ts +5 -6
  138. package/dist/components/TextArea/TextArea.styles.d.ts +5 -4
  139. package/dist/components/TextArea/index.d.ts +1 -1
  140. package/dist/components/TextArea/types.d.ts +4 -2
  141. package/dist/components/TextButton/TextButton.d.ts +1 -1
  142. package/dist/components/TextButton/TextButton.styles.d.ts +1 -1
  143. package/dist/components/TextWithInfo/TextWithInfo.styles.d.ts +1 -1
  144. package/dist/components/TextWithTooltip/TextWithTooltip.d.ts +2 -0
  145. package/dist/components/TextWithTooltip/TextWithTooltip.styles.d.ts +1 -1
  146. package/dist/components/ThemedPreloader/ThemedPreloader.styles.d.ts +1 -1
  147. package/dist/components/ThemedPreloader/components/DotsPreloader/DotsPreloader.styles.d.ts +1 -1
  148. package/dist/components/ThemedPreloader/components/SvgPreloader/SvgPreloader.styles.d.ts +1 -1
  149. package/dist/components/Toaster/Toaster.styles.d.ts +1 -1
  150. package/dist/components/Tooltip/Tooltip.d.ts +3 -0
  151. package/dist/components/Tooltip/Tooltip.styles.d.ts +3 -2
  152. package/dist/components/Tooltip/types.d.ts +3 -0
  153. package/dist/components/WithMessages/WithMessages.d.ts +1 -1
  154. package/dist/components/WithMessages/WithMessages.styles.d.ts +1 -1
  155. package/dist/components/WithPopup/WithPopup.d.ts +11 -3
  156. package/dist/components/WithPopup/WithPopup.styles.d.ts +1 -1
  157. package/dist/components/WithPopup/types.d.ts +4 -4
  158. package/dist/components/WithTooltip/WithTooltip.d.ts +2 -0
  159. package/dist/components/index.d.ts +1 -1
  160. package/dist/constants/phone-info.d.ts +1 -1
  161. package/dist/helpers/misc.d.ts +5 -3
  162. package/dist/helpers/phone.d.ts +1 -1
  163. package/dist/hooks/index.d.ts +8 -4
  164. package/dist/hooks/use-dropdown.d.ts +3 -3
  165. package/dist/hooks/use-intersection-ref.d.ts +9 -0
  166. package/dist/hooks/use-latest-ref.d.ts +2 -0
  167. package/dist/hooks/use-merge.d.ts +1 -0
  168. package/dist/hooks/use-mixed-styles.d.ts +3 -1
  169. package/dist/hooks/use-on-click-outside.d.ts +2 -2
  170. package/dist/hooks/use-resize-ref.d.ts +7 -0
  171. package/dist/hooks/use-tweak-styles.d.ts +8 -7
  172. package/dist/theme/Provider.d.ts +3 -10
  173. package/dist/theme/common.d.ts +34 -4
  174. package/dist/theme/helpers.d.ts +2 -9
  175. package/dist/theme/types.d.ts +13 -10
  176. package/dist/true-react-common-ui-kit.js +7874 -27363
  177. package/dist/true-react-common-ui-kit.js.map +1 -1
  178. package/dist/true-react-common-ui-kit.umd.cjs +1 -31620
  179. package/dist/true-react-common-ui-kit.umd.cjs.map +1 -1
  180. package/dist/types.d.ts +9 -2
  181. package/package.json +36 -39
  182. package/src/components/AccountInfo/AccountInfo.stories.tsx +19 -27
  183. package/src/components/AccountInfo/AccountInfo.tsx +2 -3
  184. package/src/components/AddButton/AddButton.stories.tsx +14 -17
  185. package/src/components/AddButton/AddButton.tsx +3 -5
  186. package/src/components/Button/Button.stories.tsx +8 -26
  187. package/src/components/Button/Button.tsx +76 -77
  188. package/src/components/Checkbox/Checkbox.stories.tsx +27 -16
  189. package/src/components/Checkbox/Checkbox.styles.ts +3 -1
  190. package/src/components/Checkbox/Checkbox.tsx +7 -5
  191. package/src/components/Checkbox/index.ts +1 -0
  192. package/src/components/Checkbox/types.ts +4 -0
  193. package/src/components/CloseButton/CloseButton.stories.tsx +5 -6
  194. package/src/components/CloseButton/CloseButton.tsx +2 -4
  195. package/src/components/Colors/Colors.stories.tsx +64 -3
  196. package/src/components/ControlWrapper/ControlWrapper.stories.tsx +46 -35
  197. package/src/components/ControlWrapper/ControlWrapper.styles.ts +15 -6
  198. package/src/components/ControlWrapper/ControlWrapper.tsx +73 -44
  199. package/src/components/ControlWrapper/constants.ts +11 -0
  200. package/src/components/ControlWrapper/helpers.ts +11 -0
  201. package/src/components/ControlWrapper/index.ts +3 -0
  202. package/src/components/ControlWrapper/types.ts +19 -0
  203. package/src/components/CssBaseline/CssBaseline.styles.ts +2 -0
  204. package/src/components/CssBaseline/CssBaseline.tsx +2 -3
  205. package/src/components/DateInput/DateInput.stories.tsx +13 -31
  206. package/src/components/DateInput/DateInput.tsx +61 -64
  207. package/src/components/DatePicker/DatePicker.stories.tsx +18 -42
  208. package/src/components/DatePicker/DatePicker.styles.ts +3 -1
  209. package/src/components/DatePicker/DatePicker.tsx +284 -256
  210. package/src/components/DatePicker/components/DatePickerBase/DatePickerBase.tsx +14 -0
  211. package/src/components/DatePicker/components/DatePickerBase/index.ts +1 -0
  212. package/src/components/DatePicker/components/PopperContainer/PopperContainer.tsx +4 -4
  213. package/src/components/DatePicker/components/index.ts +1 -0
  214. package/src/components/DatePicker/constants.ts +9 -3
  215. package/src/components/DatePicker/helpers.ts +1 -1
  216. package/src/components/DatePicker/index.ts +1 -0
  217. package/src/components/DatePicker/types.ts +6 -4
  218. package/src/components/Description/Description.stories.tsx +11 -16
  219. package/src/components/Description/Description.tsx +2 -3
  220. package/src/components/FileInput/FileInput.stories.tsx +59 -63
  221. package/src/components/FileInput/FileInput.tsx +87 -95
  222. package/src/components/FileItem/FileItem.stories.tsx +48 -48
  223. package/src/components/FileItem/FileItem.tsx +2 -4
  224. package/src/components/FileItem/constants.ts +3 -14
  225. package/src/components/FileItem/helpers.ts +3 -2
  226. package/src/components/FileItem/types.ts +1 -3
  227. package/src/components/FiltersPane/FiltersPane.stories.tsx +34 -28
  228. package/src/components/FiltersPane/FiltersPane.tsx +28 -19
  229. package/src/components/FiltersPane/components/Filter/Filter.tsx +36 -30
  230. package/src/components/FiltersPane/components/Filter/helpers.ts +18 -0
  231. package/src/components/FiltersPane/components/FilterInterval/FilterInterval.styles.ts +1 -2
  232. package/src/components/FiltersPane/components/FilterInterval/FilterInterval.tsx +7 -20
  233. package/src/components/FiltersPane/components/FilterSelect/FilterSelect.styles.ts +1 -2
  234. package/src/components/FiltersPane/components/FilterSelect/FilterSelect.tsx +22 -23
  235. package/src/components/FiltersPane/components/FilterValueView/FilterValueView.tsx +8 -5
  236. package/src/components/FiltersPane/components/FilterWithDates/FilterWithDates.styles.ts +3 -3
  237. package/src/components/FiltersPane/components/FilterWithDates/FilterWithDates.tsx +9 -7
  238. package/src/components/FiltersPane/components/FilterWithPeriod/FilterWithPeriod.tsx +4 -3
  239. package/src/components/FiltersPane/components/FilterWrapper/FilterWrapper.tsx +17 -12
  240. package/src/components/FiltersPane/components/FiltersPaneSearch/FiltersPaneSearch.styles.ts +5 -0
  241. package/src/components/FiltersPane/components/FiltersPaneSearch/FiltersPaneSearch.tsx +19 -19
  242. package/src/components/FiltersPane/helpers.ts +3 -3
  243. package/src/components/FiltersPane/index.ts +1 -0
  244. package/src/components/FiltersPane/types.ts +12 -4
  245. package/src/components/Flag/Flag.stories.tsx +15 -20
  246. package/src/components/Flag/Flag.tsx +2 -2
  247. package/src/components/FlexibleTable/FlexibleTable.stories.tsx +47 -50
  248. package/src/components/FlexibleTable/FlexibleTable.styles.ts +5 -2
  249. package/src/components/FlexibleTable/FlexibleTable.tsx +43 -64
  250. package/src/components/FlexibleTable/components/FlexibleTableCell/FlexibleTableCell.styles.ts +1 -0
  251. package/src/components/FlexibleTable/components/FlexibleTableCell/FlexibleTableCell.tsx +13 -7
  252. package/src/components/FlexibleTable/components/FlexibleTableRow/FlexibleTableRow.tsx +15 -15
  253. package/src/components/FlexibleTable/types.ts +19 -11
  254. package/src/components/FloatDocActions/FloatDocActions.stories.tsx +111 -0
  255. package/src/components/FloatDocActions/FloatDocActions.styles.ts +12 -0
  256. package/src/components/FloatDocActions/FloatDocActions.tsx +34 -0
  257. package/src/components/FloatDocActions/components/DocActions/DocActions.styles.ts +29 -0
  258. package/src/components/FloatDocActions/components/DocActions/DocActions.tsx +43 -0
  259. package/src/components/FloatDocActions/components/DocActions/constants.ts +1 -0
  260. package/src/components/FloatDocActions/components/DocActions/index.ts +4 -0
  261. package/src/components/FloatDocActions/components/DocActions/types.ts +3 -0
  262. package/src/components/FloatDocActions/components/index.ts +1 -0
  263. package/src/components/FloatDocActions/constants.ts +1 -0
  264. package/src/components/FloatDocActions/index.ts +3 -0
  265. package/src/components/Icon/Icon.stories.tsx +80 -67
  266. package/src/components/Icon/Icon.styles.ts +1 -1
  267. package/src/components/Icon/Icon.tsx +17 -12
  268. package/src/components/Icon/icons/calendar.svg +1 -0
  269. package/src/components/Icon/icons/check.svg +1 -0
  270. package/src/components/Icon/icons/chevron-down-small.svg +1 -0
  271. package/src/components/Icon/icons/chevron-down.svg +1 -0
  272. package/src/components/Icon/icons/chevron-left.svg +1 -0
  273. package/src/components/Icon/icons/chevron-right.svg +1 -0
  274. package/src/components/Icon/icons/close-large.svg +1 -0
  275. package/src/components/Icon/icons/close-window.svg +1 -0
  276. package/src/components/Icon/icons/close.svg +1 -0
  277. package/src/components/Icon/icons/filter.svg +1 -0
  278. package/src/components/Icon/icons/index.ts +62 -0
  279. package/src/components/Icon/icons/information.svg +1 -0
  280. package/src/components/Icon/icons/menu.svg +1 -0
  281. package/src/components/Icon/icons/minus.svg +1 -0
  282. package/src/components/Icon/icons/plus.svg +1 -0
  283. package/src/components/Icon/icons/search.svg +1 -0
  284. package/src/components/Icon/icons/status-error.svg +1 -0
  285. package/src/components/Icon/icons/status-info.svg +1 -0
  286. package/src/components/Icon/icons/status-not-ok.svg +1 -0
  287. package/src/components/Icon/icons/status-ok.svg +1 -0
  288. package/src/components/Icon/icons/status-warning.svg +1 -0
  289. package/src/components/Icon/icons/trash-can.svg +1 -0
  290. package/src/components/Icon/index.ts +1 -1
  291. package/src/components/Icon/types.ts +7 -13
  292. package/src/components/IconButton/IconButton.stories.tsx +7 -12
  293. package/src/components/IconButton/IconButton.styles.ts +15 -13
  294. package/src/components/IconButton/IconButton.tsx +44 -48
  295. package/src/components/IconButton/constants.ts +1 -1
  296. package/src/components/IncrementInput/IncrementInput.stories.tsx +25 -23
  297. package/src/components/IncrementInput/IncrementInput.styles.ts +31 -39
  298. package/src/components/IncrementInput/IncrementInput.tsx +28 -25
  299. package/src/components/Input/Input.stories.tsx +38 -68
  300. package/src/components/Input/Input.styles.ts +5 -2
  301. package/src/components/Input/Input.tsx +29 -26
  302. package/src/components/Input/InputBase.tsx +172 -172
  303. package/src/components/List/List.stories.tsx +34 -17
  304. package/src/components/List/List.styles.ts +4 -2
  305. package/src/components/List/List.tsx +15 -7
  306. package/src/components/List/components/ListItem/ListItem.styles.ts +2 -1
  307. package/src/components/List/components/ListItem/ListItem.tsx +7 -5
  308. package/src/components/List/index.ts +2 -1
  309. package/src/components/List/types.ts +11 -0
  310. package/src/components/Modal/Modal.stories.tsx +50 -59
  311. package/src/components/Modal/Modal.tsx +3 -5
  312. package/src/components/MoreMenu/MoreMenu.stories.tsx +24 -15
  313. package/src/components/MoreMenu/MoreMenu.tsx +2 -4
  314. package/src/components/MultiSelect/MultiSelect.stories.tsx +23 -20
  315. package/src/components/MultiSelect/MultiSelect.tsx +2 -4
  316. package/src/components/MultiSelectList/MultiSelectList.tsx +15 -11
  317. package/src/components/MultiSelectList/helpers.ts +2 -2
  318. package/src/components/NewMoreMenu/NewMoreMenu.stories.tsx +51 -39
  319. package/src/components/NewMoreMenu/NewMoreMenu.tsx +29 -22
  320. package/src/components/Notification/Notification.stories.tsx +35 -34
  321. package/src/components/Notification/Notification.tsx +2 -3
  322. package/src/components/NumberInput/NumberInput.stories.tsx +32 -28
  323. package/src/components/NumberInput/NumberInput.tsx +91 -93
  324. package/src/components/PhoneInput/PhoneInput.stories.tsx +29 -55
  325. package/src/components/PhoneInput/PhoneInput.tsx +3 -4
  326. package/src/components/PhoneInput/components/PhoneInputCountryList/PhoneInputCountryList.stories.tsx +5 -11
  327. package/src/components/PhoneInput/components/PhoneInputCountryList/PhoneInputCountryList.tsx +1 -4
  328. package/src/components/RadioButton/RadioButton.stories.tsx +31 -21
  329. package/src/components/RadioButton/RadioButton.styles.ts +2 -1
  330. package/src/components/RadioButton/RadioButton.tsx +12 -5
  331. package/src/components/RadioButton/index.ts +1 -0
  332. package/src/components/RadioButton/types.ts +4 -0
  333. package/src/components/ScrollIntoViewIfNeeded/ScrollIntoViewIfNeeded.ts +15 -9
  334. package/src/components/SearchInput/SearchInput.stories.tsx +19 -14
  335. package/src/components/SearchInput/SearchInput.styles.ts +6 -12
  336. package/src/components/SearchInput/SearchInput.tsx +21 -24
  337. package/src/components/Select/CustomSelect.stories.tsx +29 -32
  338. package/src/components/Select/MultiSelect.stories.tsx +45 -45
  339. package/src/components/Select/Select.stories.tsx +45 -44
  340. package/src/components/Select/Select.styles.ts +5 -40
  341. package/src/components/Select/Select.tsx +62 -52
  342. package/src/components/Select/components/SelectList/SelectList.styles.ts +2 -1
  343. package/src/components/Select/components/SelectList/SelectList.tsx +13 -7
  344. package/src/components/Select/components/SelectListItem/SelectListItem.tsx +5 -2
  345. package/src/components/Select/index.ts +1 -1
  346. package/src/components/Select/types.ts +3 -0
  347. package/src/components/Selector/Selector.stories.tsx +25 -27
  348. package/src/components/Selector/Selector.tsx +5 -8
  349. package/src/components/Skeleton/Skeleton.stories.tsx +13 -12
  350. package/src/components/SmartInput/SmartInput.stories.tsx +23 -23
  351. package/src/components/SmartInput/SmartInput.tsx +85 -87
  352. package/src/components/Status/Status.stories.tsx +79 -28
  353. package/src/components/Status/Status.styles.ts +2 -37
  354. package/src/components/Status/Status.tsx +5 -4
  355. package/src/components/Status/constants.ts +0 -10
  356. package/src/components/Status/index.ts +1 -1
  357. package/src/components/Status/types.ts +7 -3
  358. package/src/components/Switch/Switch.stories.tsx +19 -26
  359. package/src/components/Switch/Switch.styles.ts +21 -13
  360. package/src/components/Switch/Switch.tsx +11 -6
  361. package/src/components/Switch/types.ts +5 -0
  362. package/src/components/TextArea/TextArea.stories.tsx +37 -26
  363. package/src/components/TextArea/TextArea.styles.ts +15 -8
  364. package/src/components/TextArea/TextArea.tsx +114 -83
  365. package/src/components/TextArea/index.ts +1 -1
  366. package/src/components/TextArea/types.ts +5 -5
  367. package/src/components/TextButton/TextButton.stories.tsx +8 -19
  368. package/src/components/TextButton/TextButton.styles.ts +1 -0
  369. package/src/components/TextButton/TextButton.tsx +68 -69
  370. package/src/components/TextWithInfo/TextWithInfo.stories.tsx +13 -21
  371. package/src/components/TextWithInfo/TextWithInfo.tsx +2 -4
  372. package/src/components/TextWithTooltip/TextWithTooltip.stories.tsx +26 -25
  373. package/src/components/TextWithTooltip/TextWithTooltip.tsx +7 -6
  374. package/src/components/ThemedPreloader/ThemedPreloader.stories.tsx +12 -23
  375. package/src/components/ThemedPreloader/ThemedPreloader.tsx +2 -4
  376. package/src/components/ThemedPreloader/components/SvgPreloader/SvgPreloader.tsx +4 -4
  377. package/src/components/Toaster/Toaster.stories.tsx +16 -14
  378. package/src/components/Toaster/Toaster.tsx +2 -4
  379. package/src/components/Tooltip/Tooltip.stories.tsx +15 -4
  380. package/src/components/Tooltip/Tooltip.styles.ts +2 -1
  381. package/src/components/Tooltip/Tooltip.tsx +12 -5
  382. package/src/components/Tooltip/types.ts +5 -0
  383. package/src/components/WithMessages/WithMessages.stories.tsx +16 -20
  384. package/src/components/WithMessages/WithMessages.tsx +41 -40
  385. package/src/components/WithPopup/WithPopup.stories.tsx +27 -26
  386. package/src/components/WithPopup/WithPopup.tsx +36 -15
  387. package/src/components/WithTooltip/WithTooltip.stories.tsx +28 -28
  388. package/src/components/WithTooltip/WithTooltip.tsx +4 -0
  389. package/src/components/index.ts +1 -1
  390. package/src/helpers/misc.ts +15 -7
  391. package/src/helpers/popper-helpers.ts +0 -1
  392. package/src/hooks/index.ts +8 -4
  393. package/src/hooks/use-intersection-ref.ts +48 -0
  394. package/src/hooks/use-latest-ref.ts +11 -0
  395. package/src/hooks/use-merge.ts +8 -0
  396. package/src/hooks/use-mixed-styles.ts +9 -11
  397. package/src/hooks/use-on-click-outside.ts +22 -14
  398. package/src/hooks/use-resize-ref.ts +35 -0
  399. package/src/hooks/use-tweak-styles.ts +18 -33
  400. package/src/theme/Provider.tsx +5 -17
  401. package/src/theme/common.ts +33 -36
  402. package/src/theme/helpers.ts +60 -50
  403. package/src/theme/types.ts +19 -15
  404. package/src/types.ts +17 -6
  405. package/dist/components/AccountInfo/AccountInfo.stories.d.ts +0 -6
  406. package/dist/components/AddButton/AddButton.stories.d.ts +0 -6
  407. package/dist/components/Button/Button.stories.d.ts +0 -6
  408. package/dist/components/Checkbox/Checkbox.stories.d.ts +0 -8
  409. package/dist/components/CloseButton/CloseButton.stories.d.ts +0 -5
  410. package/dist/components/Colors/Colors.d.ts +0 -2
  411. package/dist/components/Colors/Colors.stories.d.ts +0 -5
  412. package/dist/components/Colors/Colors.styles.d.ts +0 -1
  413. package/dist/components/Colors/index.d.ts +0 -1
  414. package/dist/components/ControlWrapper/ControlWrapper.stories.d.ts +0 -6
  415. package/dist/components/DateInput/DateInput.stories.d.ts +0 -7
  416. package/dist/components/DatePicker/DatePicker.stories.d.ts +0 -7
  417. package/dist/components/Description/Description.stories.d.ts +0 -16
  418. package/dist/components/FileInput/FileInput.stories.d.ts +0 -7
  419. package/dist/components/FileItem/FileItem.stories.d.ts +0 -8
  420. package/dist/components/FiltersPane/FiltersPane.stories.d.ts +0 -31
  421. package/dist/components/Flag/Flag.stories.d.ts +0 -12
  422. package/dist/components/FlexibleTable/FlexibleTable.stories.d.ts +0 -19
  423. package/dist/components/Icon/Icon.stories.d.ts +0 -6
  424. package/dist/components/Icon/complexIcons/icons.d.ts +0 -10
  425. package/dist/components/Icon/complexIcons/index.d.ts +0 -1
  426. package/dist/components/Icon/components/ComplexIconBoilerplate/ComplexIconBoilerplate.d.ts +0 -6
  427. package/dist/components/Icon/components/ComplexIconBoilerplate/index.d.ts +0 -1
  428. package/dist/components/Icon/components/IconBolerplate/IconBoilerplate.d.ts +0 -6
  429. package/dist/components/Icon/components/IconBolerplate/index.d.ts +0 -1
  430. package/dist/components/Icon/components/index.d.ts +0 -2
  431. package/dist/components/Icon/helpers.d.ts +0 -6
  432. package/dist/components/Icon/icons-list.d.ts +0 -1
  433. package/dist/components/IconButton/IconButton.stories.d.ts +0 -6
  434. package/dist/components/IncrementInput/IncrementInput.stories.d.ts +0 -6
  435. package/dist/components/Input/Input.stories.d.ts +0 -25
  436. package/dist/components/List/List.stories.d.ts +0 -5
  437. package/dist/components/Modal/Modal.stories.d.ts +0 -29
  438. package/dist/components/MoreMenu/MoreMenu.stories.d.ts +0 -6
  439. package/dist/components/MultiSelect/MultiSelect.stories.d.ts +0 -13
  440. package/dist/components/NewMoreMenu/NewMoreMenu.stories.d.ts +0 -12
  441. package/dist/components/Notification/Notification.stories.d.ts +0 -8
  442. package/dist/components/NumberInput/NumberInput.stories.d.ts +0 -7
  443. package/dist/components/PhoneInput/PhoneInput.stories.d.ts +0 -28
  444. package/dist/components/PhoneInput/components/PhoneInputCountryList/PhoneInputCountryList.stories.d.ts +0 -5
  445. package/dist/components/RadioButton/RadioButton.stories.d.ts +0 -7
  446. package/dist/components/SearchInput/SearchInput.stories.d.ts +0 -7
  447. package/dist/components/Select/CustomSelect.stories.d.ts +0 -11
  448. package/dist/components/Select/MultiSelect.stories.d.ts +0 -15
  449. package/dist/components/Select/Select.stories.d.ts +0 -15
  450. package/dist/components/Selector/Selector.stories.d.ts +0 -7
  451. package/dist/components/Skeleton/Skeleton.stories.d.ts +0 -6
  452. package/dist/components/SmartInput/SmartInput.stories.d.ts +0 -18
  453. package/dist/components/Status/Status.stories.d.ts +0 -6
  454. package/dist/components/Switch/Switch.stories.d.ts +0 -16
  455. package/dist/components/TextArea/TextArea.stories.d.ts +0 -17
  456. package/dist/components/TextButton/TextButton.stories.d.ts +0 -6
  457. package/dist/components/TextWithInfo/TextWithInfo.stories.d.ts +0 -12
  458. package/dist/components/TextWithTooltip/TextWithTooltip.stories.d.ts +0 -24
  459. package/dist/components/ThemedPreloader/ThemedPreloader.stories.d.ts +0 -17
  460. package/dist/components/Toaster/Toaster.stories.d.ts +0 -5
  461. package/dist/components/Tooltip/Tooltip.stories.d.ts +0 -5
  462. package/dist/components/WithMessages/WithMessages.stories.d.ts +0 -7
  463. package/dist/components/WithPopup/WithPopup.stories.d.ts +0 -16
  464. package/dist/components/WithTooltip/WithTooltip.stories.d.ts +0 -6
  465. package/dist/style.css +0 -820
  466. package/src/components/Colors/Colors.styles.ts +0 -36
  467. package/src/components/Colors/Colors.tsx +0 -26
  468. package/src/components/Colors/index.ts +0 -1
  469. package/src/components/Flag/augment.d.ts +0 -1
  470. package/src/components/Flag/customFlags/augment.d.ts +0 -1
  471. package/src/components/Icon/complexIcons/augment.d.ts +0 -1
  472. package/src/components/Icon/complexIcons/icons.ts +0 -19
  473. package/src/components/Icon/complexIcons/index.ts +0 -1
  474. package/src/components/Icon/components/ComplexIconBoilerplate/ComplexIconBoilerplate.tsx +0 -16
  475. package/src/components/Icon/components/ComplexIconBoilerplate/index.ts +0 -1
  476. package/src/components/Icon/components/IconBolerplate/IconBoilerplate.tsx +0 -43
  477. package/src/components/Icon/components/IconBolerplate/index.ts +0 -1
  478. package/src/components/Icon/components/index.ts +0 -2
  479. package/src/components/Icon/helpers.tsx +0 -9
  480. package/src/components/Icon/icons-list.ts +0 -855
  481. package/src/vite-env.d.ts +0 -1
  482. /package/src/components/Icon/{complexIcons/avatarGreen.svg → icons/avatar.svg} +0 -0
  483. /package/src/components/Icon/{complexIcons/fileExcel.svg → icons/file-excel.svg} +0 -0
  484. /package/src/components/Icon/{complexIcons/fileImage.svg → icons/file-image.svg} +0 -0
  485. /package/src/components/Icon/{complexIcons/fileOther.svg → icons/file-other.svg} +0 -0
  486. /package/src/components/Icon/{complexIcons/filePdf.svg → icons/file-pdf.svg} +0 -0
  487. /package/src/components/Icon/{complexIcons/fileWord.svg → icons/file-word.svg} +0 -0
  488. /package/src/components/Icon/{complexIcons/fileXml.svg → icons/file-xml.svg} +0 -0
  489. /package/src/components/Icon/{complexIcons/fileZip.svg → icons/file-zip.svg} +0 -0
@@ -1,5 +1,5 @@
1
- import { ReactNode, useState } from 'react';
2
- import { ComponentStory } from '@storybook/react';
1
+ import { FC, ReactNode, useState } from 'react';
2
+ import { type Meta } from '@storybook/react';
3
3
  import { IMultiSelectListValues } from '../MultiSelectList';
4
4
  import { FiltersPane, IFiltersPaneProps } from './FiltersPane';
5
5
  import { FilterSelect } from './components';
@@ -8,11 +8,13 @@ import { ConfigType, IDatePeriod, IFiltersPaneSearchPayload, IPeriod } from './t
8
8
  const LONG_STRING = 'or veeeeeeeeery looooooooooooooooooooooooooooooooooooooooong';
9
9
 
10
10
  const convertVToString = (val: { v: string }): string => val.v;
11
+
11
12
  const convertVToNode = (val: { v: string }): ReactNode => (
12
13
  <b>
13
14
  <i>{val.v}</i>
14
15
  </b>
15
16
  );
17
+
16
18
  const fieldTranslates = {
17
19
  interval: 'Interval',
18
20
  name: 'Name',
@@ -57,8 +59,7 @@ const fetchOptionsMock = [
57
59
  'or vee444ee',
58
60
  ];
59
61
 
60
- // eslint-disable-next-line @typescript-eslint/consistent-type-definitions
61
- type ConfigValues = {
62
+ interface ConfigValues extends Record<string, unknown> {
62
63
  name: string;
63
64
  date: IPeriod;
64
65
  select: string;
@@ -68,9 +69,10 @@ type ConfigValues = {
68
69
  isActive: boolean;
69
70
  selectSearch: string;
70
71
  custom: string;
71
- };
72
+ }
72
73
 
73
- interface IFiltersPaneWithCustomProps<Values, Content> extends IFiltersPaneProps<Values, Content> {
74
+ interface IFiltersPaneCustomProps<Values extends Record<string, unknown>, Content>
75
+ extends IFiltersPaneProps<Values, Content> {
74
76
  containerWidth: number;
75
77
  isSearchDisabled: boolean;
76
78
  shouldShowSettingsButton: boolean;
@@ -78,9 +80,12 @@ interface IFiltersPaneWithCustomProps<Values, Content> extends IFiltersPaneProps
78
80
  isGroupingEnabled: boolean;
79
81
  checkboxPosition: 'left' | 'right';
80
82
  isClearableFields: boolean;
83
+ isSearchAutoSized: boolean;
81
84
  }
82
85
 
83
- function FiltersPaneWithCustomProps<Values, Content>({
86
+ const tweakWrapperStyles = { name: { color: 'tomato' } };
87
+
88
+ const Story: FC<IFiltersPaneCustomProps<ConfigValues, unknown>> = ({
84
89
  containerWidth,
85
90
  isSearchDisabled,
86
91
  shouldShowSettingsButton,
@@ -88,8 +93,9 @@ function FiltersPaneWithCustomProps<Values, Content>({
88
93
  isGroupingEnabled,
89
94
  checkboxPosition,
90
95
  isClearableFields,
96
+ isSearchAutoSized,
91
97
  ...args
92
- }: IFiltersPaneWithCustomProps<Values, Content>) {
98
+ }) => {
93
99
  const config: ConfigType<ConfigValues> = {
94
100
  name: {
95
101
  name: 'name',
@@ -212,6 +218,7 @@ function FiltersPaneWithCustomProps<Values, Content>({
212
218
  isClearable: isClearableFields,
213
219
  options: [LONG_STRING, '2', '3'],
214
220
  component: ({ filter, ...props }) => <FilterSelect {...props} {...filter} />,
221
+ tweakWrapperStyles,
215
222
  },
216
223
  };
217
224
 
@@ -238,6 +245,7 @@ function FiltersPaneWithCustomProps<Values, Content>({
238
245
  getValueView: convertFieldToString,
239
246
  onChange: setSearchValue,
240
247
  isDisabled: isSearchDisabled,
248
+ isAutoSized: isSearchAutoSized,
241
249
  }}
242
250
  enabledFilters={[
243
251
  'name',
@@ -260,11 +268,24 @@ function FiltersPaneWithCustomProps<Values, Content>({
260
268
  />
261
269
  </div>
262
270
  );
263
- }
271
+ };
264
272
 
265
- export default {
273
+ const meta: Meta<typeof Story> = {
266
274
  title: 'Table/FiltersPane',
267
- component: FiltersPaneWithCustomProps,
275
+ component: Story,
276
+ args: {
277
+ shouldShowSettingsButton: false,
278
+ isSearchDisabled: false,
279
+ hasClearButton: true,
280
+ isClearableFields: false,
281
+ isDisabled: false,
282
+ shouldRenderDataId: false,
283
+ containerWidth: 400,
284
+ withFieldNameInLabel: true,
285
+ isGroupingEnabled: true,
286
+ checkboxPosition: 'left',
287
+ isSearchAutoSized: false,
288
+ },
268
289
  argTypes: {
269
290
  containerWidth: {
270
291
  control: { type: 'range', min: 100, max: 1000, step: 100 },
@@ -276,20 +297,5 @@ export default {
276
297
  },
277
298
  };
278
299
 
279
- const Template: ComponentStory<typeof FiltersPaneWithCustomProps> = (args) => (
280
- <FiltersPaneWithCustomProps {...args} />
281
- );
282
-
283
- export const Default = Template.bind({});
284
-
285
- Default.args = {
286
- shouldShowSettingsButton: false,
287
- isSearchDisabled: false,
288
- hasClearButton: true,
289
- isClearableFields: false,
290
- isDisabled: false,
291
- containerWidth: 400,
292
- withFieldNameInLabel: true,
293
- isGroupingEnabled: true,
294
- checkboxPosition: 'left',
295
- };
300
+ export default meta;
301
+ export const Default = {};
@@ -1,16 +1,20 @@
1
1
  import { useMemo } from 'react';
2
- import { addDataTestId, getTestId } from '@true-engineering/true-react-platform-helpers';
3
- import { addDataAttributes } from '../../helpers';
2
+ import {
3
+ addDataAttributes,
4
+ addDataTestId,
5
+ getTestId,
6
+ isNotEmpty,
7
+ } from '@true-engineering/true-react-platform-helpers';
4
8
  import { useTweakStyles } from '../../hooks';
5
9
  import { ICommonProps } from '../../types';
6
10
  import { Button } from '../Button';
7
- import { Icon } from '../Icon';
11
+ import { IIcon, renderIcon } from '../Icon';
8
12
  import { FilterWrapper, IFiltersPaneSearchProps, FiltersPaneSearch } from './components';
9
13
  import { getLocale } from './helpers';
10
14
  import { ConfigType, IFilterLocaleKey, IPartialFilterLocale } from './types';
11
15
  import { useStyles, IFiltersPaneStyles, clearButtonStyles } from './FiltersPane.styles';
12
16
 
13
- export interface IFiltersPaneProps<Values, Content = Values>
17
+ export interface IFiltersPaneProps<Values extends Record<string, unknown>, Content = Values>
14
18
  extends ICommonProps<IFiltersPaneStyles> {
15
19
  filtersConfig: ConfigType<Values>;
16
20
  enabledFilters?: Array<keyof ConfigType<Values>>;
@@ -23,6 +27,10 @@ export interface IFiltersPaneProps<Values, Content = Values>
23
27
  isDisabled?: boolean;
24
28
  /** @default true */
25
29
  hasClearButton?: boolean;
30
+ /** @default false */
31
+ shouldRenderDataId?: boolean;
32
+ /** @default 'filter' */
33
+ settingsIcon?: IIcon;
26
34
  onChangeFilters: (values: Partial<Values>) => void;
27
35
  onSettingsButtonClick?: () => void;
28
36
  onClear?: () => void;
@@ -39,6 +47,8 @@ export function FiltersPane<Values extends Record<string, unknown>, Content = Va
39
47
  search,
40
48
  isDisabled = false,
41
49
  hasClearButton = true,
50
+ shouldRenderDataId = false,
51
+ settingsIcon = 'filter',
42
52
  testId,
43
53
  onChangeFilters,
44
54
  onSettingsButtonClick,
@@ -61,10 +71,10 @@ export function FiltersPane<Values extends Record<string, unknown>, Content = Va
61
71
 
62
72
  const translates = useMemo(() => getLocale(localeKey, locale), [localeKey, locale]);
63
73
 
64
- const filtersKeys = enabledFilters || Object.keys(filtersConfig);
74
+ const filtersKeys = enabledFilters ?? Object.keys(filtersConfig);
65
75
 
66
76
  const handleClear = () => {
67
- if (onClear !== undefined) {
77
+ if (isNotEmpty(onClear)) {
68
78
  onClear();
69
79
  return;
70
80
  }
@@ -76,8 +86,7 @@ export function FiltersPane<Values extends Record<string, unknown>, Content = Va
76
86
 
77
87
  const shouldShowClearButton =
78
88
  hasClearButton &&
79
- (search !== undefined ||
80
- filtersKeys.filter((key) => filtersConfig[key] !== undefined).length > 0);
89
+ (isNotEmpty(search) || filtersKeys.some((key) => isNotEmpty(filtersConfig[key])));
81
90
 
82
91
  const clearButton = (
83
92
  <div className={classes.clear}>
@@ -95,7 +104,7 @@ export function FiltersPane<Values extends Record<string, unknown>, Content = Va
95
104
  );
96
105
 
97
106
  return (
98
- <div className={classes.root} {...addDataTestId(testId)} {...addDataAttributes(data)}>
107
+ <div className={classes.root} {...addDataAttributes(data, testId)}>
99
108
  {/* Settings */}
100
109
  {onSettingsButtonClick !== undefined && (
101
110
  <div
@@ -104,9 +113,7 @@ export function FiltersPane<Values extends Record<string, unknown>, Content = Va
104
113
  {...addDataTestId(testId, 'settings-button')}
105
114
  onClick={!isDisabled ? onSettingsButtonClick : undefined}
106
115
  >
107
- <div className={classes.settingsIcon}>
108
- <Icon type="filter" />
109
- </div>
116
+ <div className={classes.settingsIcon}>{renderIcon(settingsIcon)}</div>
110
117
  </div>
111
118
  )}
112
119
  {/* Search */}
@@ -122,10 +129,11 @@ export function FiltersPane<Values extends Record<string, unknown>, Content = Va
122
129
  {/* Filters */}
123
130
  {filtersKeys.map((key, index) => {
124
131
  const isLast = index === filtersKeys.length - 1;
125
- const currentValue = values[key];
126
- const filter = filtersConfig[key];
132
+ const filterKey = String(key);
133
+ const currentValue = values[filterKey];
134
+ const filter = filtersConfig[filterKey];
127
135
  if (filter === undefined) {
128
- console.error(`enabledFilters содержит фильтр ${String(key)}, не описанный в конфиге`);
136
+ console.error(`enabledFilters содержит фильтр ${filterKey}, не описанный в конфиге`);
129
137
  if (isLast) {
130
138
  return clearButton;
131
139
  }
@@ -137,18 +145,19 @@ export function FiltersPane<Values extends Record<string, unknown>, Content = Va
137
145
  filter={filter}
138
146
  locale={locale}
139
147
  localeKey={localeKey}
140
- onChange={(value) => onChangeFilters({ ...values, [key]: value })}
148
+ onChange={(value) => onChangeFilters({ ...values, [filterKey]: value })}
141
149
  value={currentValue}
142
- key={key as string}
150
+ key={filterKey}
143
151
  isDisabled={isDisabled || filter?.requiredFilledFilters?.some((item) => !values[item])}
144
152
  tweakStyles={tweakFilterWrapperStyles}
145
- testId={getTestId(testId, `filter-${String(key)}`)}
153
+ data={shouldRenderDataId ? { id: filterKey } : undefined}
154
+ testId={getTestId(testId, `filter-${filterKey}`)}
146
155
  />
147
156
  );
148
157
 
149
158
  if (isLast) {
150
159
  return (
151
- <div className={classes.filterWithClearButton} key={key as string}>
160
+ <div className={classes.filterWithClearButton} key={filterKey}>
152
161
  {filterWrapper}
153
162
  {shouldShowClearButton && <>{clearButton}</>}
154
163
  </div>
@@ -1,20 +1,21 @@
1
1
  import { useMemo } from 'react';
2
+ import { getTestId } from '@true-engineering/true-react-platform-helpers';
2
3
  import { getLocale } from '../../helpers';
3
- import { IFilterMultiSelectValues, IFilterWithDatesValue, IPeriod } from '../../types';
4
4
  import { FilterInterval } from '../FilterInterval';
5
5
  import { FilterMultiSelect } from '../FilterMultiSelect';
6
6
  import { FilterSelect } from '../FilterSelect';
7
7
  import { FilterWithDates } from '../FilterWithDates';
8
8
  import { FilterWithPeriod } from '../FilterWithPeriod';
9
9
  import type { IFilterWrapperProps } from '../FilterWrapper';
10
+ import { isDatePeriodValue, isMultiSelectValue, isPeriodValue } from './helpers';
10
11
 
11
- export interface IFilterProps<Values, Key extends keyof Values>
12
+ export interface IFilterProps<Values extends Record<string, unknown>, Key extends keyof Values>
12
13
  extends IFilterWrapperProps<Values, Key> {
13
14
  onChange: <V>(v: V) => void;
14
15
  onClose?: () => void;
15
16
  }
16
17
 
17
- export function Filter<Values, Key extends keyof Values>(
18
+ export function Filter<Values extends Record<string, unknown>, Key extends keyof Values>(
18
19
  props: IFilterProps<Values, Key>,
19
20
  ): JSX.Element | null {
20
21
  const { filter, value, onChange, onClose, localeKey, locale, testId } = props;
@@ -32,83 +33,88 @@ export function Filter<Values, Key extends keyof Values>(
32
33
  onClose={onClose}
33
34
  localeKey={translatesLocaleKey}
34
35
  locale={translates}
35
- testId={testId !== undefined ? `${testId}-select` : undefined}
36
+ testId={getTestId(testId, 'select')}
36
37
  {...filter}
37
38
  />
38
39
  );
39
40
  }
40
41
 
41
42
  if (filter.type === 'dateRange') {
43
+ const preparedValue = isPeriodValue(value) ? { ...value } : undefined;
44
+
42
45
  return (
43
46
  <FilterWithPeriod
44
- value={{ ...value } as IPeriod}
47
+ value={preparedValue}
45
48
  onChange={onChange}
46
49
  onClose={onClose}
47
50
  localeKey={translatesLocaleKey}
48
51
  locale={translates}
49
- testId={testId !== undefined ? `${testId}-period` : undefined}
52
+ testId={getTestId(testId, 'period')}
50
53
  {...filter}
51
54
  />
52
55
  );
53
56
  }
54
57
 
55
58
  if (filter.type === 'dateRangeWithoutPeriod') {
59
+ const preparedValue = isDatePeriodValue(value) ? value : undefined;
60
+
56
61
  return (
57
- <div style={{ width: 320 }}>
58
- <FilterWithDates
59
- value={value as unknown as IFilterWithDatesValue}
60
- onChange={(v) => onChange({ ...v, periodType: 'CUSTOM' })}
61
- onEndBtnSubmit={() => onChange(undefined)}
62
- localeKey={translatesLocaleKey}
63
- locale={translates}
64
- testId={testId !== undefined ? `${testId}-dates` : undefined}
65
- {...filter}
66
- />
67
- </div>
62
+ <FilterWithDates
63
+ value={preparedValue}
64
+ onChange={(v) => onChange({ ...v, periodType: 'CUSTOM' })}
65
+ onEndBtnSubmit={() => onChange(undefined)}
66
+ localeKey={translatesLocaleKey}
67
+ locale={translates}
68
+ testId={getTestId(testId, 'dates')}
69
+ {...filter}
70
+ />
68
71
  );
69
72
  }
70
73
 
71
74
  if (filter.type === 'multiSelect') {
75
+ const preparedValue = isMultiSelectValue<any>(value) ? value : undefined;
76
+
72
77
  return (
73
78
  <FilterMultiSelect
74
- value={value as unknown as IFilterMultiSelectValues<any>}
79
+ value={preparedValue}
75
80
  onChange={onChange}
76
81
  onClose={onClose}
77
82
  localeKey={translatesLocaleKey}
78
83
  locale={translates}
79
- testId={testId !== undefined ? `${testId}-multiSelect` : undefined}
84
+ testId={getTestId(testId, 'multiSelect')}
80
85
  {...filter}
81
86
  />
82
87
  );
83
88
  }
84
89
 
85
90
  if (filter.type === 'interval') {
91
+ const preparedValue = Array.isArray(value) ? (value as number[]) : undefined;
92
+
86
93
  return (
87
94
  <FilterInterval
88
- value={value as unknown as number[]}
95
+ value={preparedValue}
89
96
  onChange={onChange}
90
97
  localeKey={translatesLocaleKey}
91
98
  locale={translates}
92
99
  labelName={filter.name}
93
- testId={testId !== undefined ? `${testId}-interval` : undefined}
100
+ testId={getTestId(testId, 'interval')}
94
101
  {...filter}
95
102
  />
96
103
  );
97
104
  }
98
105
 
99
- if (filter.type === 'boolean') {
100
- return null;
101
- }
102
-
103
106
  if (filter.type === 'custom' && filter.component) {
104
107
  const Component = filter.component;
105
- return <Component {...props} filter={filter} />;
108
+
109
+ return <Component {...props} filter={filter} testId={getTestId(testId, 'dropdown')} />;
106
110
  }
107
111
 
108
- console.warn(
109
- `%cДля фильтра ${filter.name} не задан тип или component`,
110
- 'background: red; color: black',
111
- );
112
+ if (filter.type !== 'boolean') {
113
+ console.warn(
114
+ `%cДля фильтра ${filter.name} не задан тип или component`,
115
+ 'background: red; color: black',
116
+ );
117
+ }
112
118
 
113
119
  return null;
114
120
  }
@@ -0,0 +1,18 @@
1
+ import { isEmpty, isString } from '@true-engineering/true-react-platform-helpers';
2
+ import { IDatePeriod, IFilterMultiSelectValues, IPeriod } from '../../types';
3
+
4
+ const isDateOrEmpty = (value: unknown): value is Date | null | undefined =>
5
+ isEmpty(value) || value instanceof Date;
6
+
7
+ // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
8
+ export const isDatePeriodValue = (value: any): value is IDatePeriod =>
9
+ isDateOrEmpty(value?.from) && isDateOrEmpty(value?.to);
10
+
11
+ // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
12
+ export const isPeriodValue = (value: any): value is IPeriod =>
13
+ isString(value?.periodType) && isDatePeriodValue(value);
14
+
15
+ export const isMultiSelectValue = <T extends string>(
16
+ // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
17
+ value: any,
18
+ ): value is IFilterMultiSelectValues<T> => Array.isArray(value?.include);
@@ -1,4 +1,3 @@
1
- import cloneDeep from 'lodash-es/cloneDeep';
2
1
  import { colors, createThemedStyles, ITweakStyles } from '../../../../theme';
3
2
  import { IButtonStyles } from '../../../Button';
4
3
  import { IInputStyles } from '../../../Input';
@@ -52,7 +51,7 @@ export const inputStyles: IInputStyles = {
52
51
  },
53
52
  };
54
53
 
55
- export const clearButtonStyles = cloneDeep(innerTextButtonStyles);
54
+ export const clearButtonStyles = structuredClone(innerTextButtonStyles);
56
55
 
57
56
  export type IFilterIntervalStyles = ITweakStyles<
58
57
  typeof useStyles,
@@ -1,12 +1,11 @@
1
1
  import { FC, useMemo } from 'react';
2
- import { getTestId } from '@true-engineering/true-react-platform-helpers';
3
- import { addDataAttributes } from '../../../../helpers';
2
+ import { getTestId, addDataAttributes } from '@true-engineering/true-react-platform-helpers';
4
3
  import { useTweakStyles } from '../../../../hooks';
5
4
  import { ICommonProps } from '../../../../types';
6
5
  import { Button } from '../../../Button';
7
6
  import { NumberInput } from '../../../NumberInput';
8
7
  import { getLocale, sortValues } from '../../helpers';
9
- import { IFilterLocaleKey, IPartialFilterLocale } from '../../types';
8
+ import { IFilterLocaleKey, IFilterNumberInputProps, IPartialFilterLocale } from '../../types';
10
9
  import {
11
10
  clearButtonStyles,
12
11
  IFilterIntervalStyles,
@@ -22,16 +21,8 @@ export interface IFilterIntervalProps extends ICommonProps<IFilterIntervalStyles
22
21
  locale?: IPartialFilterLocale;
23
22
  withFieldNameInLabel?: boolean;
24
23
  canBeFloat?: boolean;
25
- fromInput?: {
26
- min?: number;
27
- max?: number;
28
- maxLength?: number;
29
- };
30
- toInput?: {
31
- min?: number;
32
- max?: number;
33
- maxLength?: number;
34
- };
24
+ fromInput?: IFilterNumberInputProps;
25
+ toInput?: IFilterNumberInputProps;
35
26
  }
36
27
 
37
28
  export const FilterInterval: FC<IFilterIntervalProps> = ({
@@ -87,7 +78,7 @@ export const FilterInterval: FC<IFilterIntervalProps> = ({
87
78
  });
88
79
 
89
80
  return (
90
- <div className={classes.root} {...addDataAttributes(data)}>
81
+ <div className={classes.root} {...addDataAttributes(data, testId)}>
91
82
  <div className={classes.inputWrapper}>
92
83
  <div>
93
84
  <NumberInput
@@ -100,11 +91,9 @@ export const FilterInterval: FC<IFilterIntervalProps> = ({
100
91
  }
101
92
  canBeFloat={canBeFloat}
102
93
  isClearable
103
- min={fromInput?.min}
104
- max={fromInput?.max}
105
- maxLength={fromInput?.maxLength}
106
94
  tweakStyles={tweakInputStyles}
107
95
  testId={getTestId(testId, 'start')}
96
+ {...fromInput}
108
97
  />
109
98
  {withFieldNameInLabel && (
110
99
  <div className={classes.autosize}>
@@ -123,11 +112,9 @@ export const FilterInterval: FC<IFilterIntervalProps> = ({
123
112
  }
124
113
  canBeFloat={canBeFloat}
125
114
  isClearable
126
- min={toInput?.min}
127
- max={toInput?.max}
128
- maxLength={toInput?.maxLength}
129
115
  tweakStyles={tweakInputStyles}
130
116
  testId={getTestId(testId, 'end')}
117
+ {...toInput}
131
118
  />
132
119
  {withFieldNameInLabel && (
133
120
  <div className={classes.autosize}>
@@ -1,4 +1,3 @@
1
- import cloneDeep from 'lodash-es/cloneDeep';
2
1
  import { animations, colors, createThemedStyles, helpers, ITweakStyles } from '../../../../theme';
3
2
  import { IButtonStyles } from '../../../Button';
4
3
  import { ISearchInputStyles } from '../../../SearchInput';
@@ -132,7 +131,7 @@ export const searchInputStyles: ISearchInputStyles = {
132
131
  },
133
132
  };
134
133
 
135
- export const clearButtonStyles = cloneDeep(innerTextButtonStyles);
134
+ export const clearButtonStyles = structuredClone(innerTextButtonStyles);
136
135
 
137
136
  export type IFilterSelectStyles = ITweakStyles<
138
137
  typeof useStyles,
@@ -1,8 +1,14 @@
1
1
  import { ReactNode, useCallback, useEffect, useMemo, useRef, useState } from 'react';
2
2
  import clsx from 'clsx';
3
3
  import { debounce } from 'ts-debounce';
4
- import { isReactNodeNotEmpty } from '@true-engineering/true-react-platform-helpers';
5
- import { addDataAttributes } from '../../../../helpers';
4
+ import {
5
+ addDataTestId,
6
+ getTestId,
7
+ isReactNodeNotEmpty,
8
+ addDataAttributes,
9
+ isArrayNotEmpty,
10
+ isNotEmpty,
11
+ } from '@true-engineering/true-react-platform-helpers';
6
12
  import { useIsMounted, useTweakStyles } from '../../../../hooks';
7
13
  import { ICommonProps } from '../../../../types';
8
14
  import { Button } from '../../../Button';
@@ -227,7 +233,7 @@ export function FilterSelect<Value>({
227
233
  }, []);
228
234
 
229
235
  return (
230
- <div className={classes.root} {...addDataAttributes(data)}>
236
+ <div className={classes.root} {...addDataAttributes(data, testId)}>
231
237
  {isSearchEnabled && (
232
238
  <div className={classes.dropdownInput}>
233
239
  <SearchInput
@@ -235,7 +241,7 @@ export function FilterSelect<Value>({
235
241
  placeholder={translates.searchPlaceholder}
236
242
  onChange={handleOnChange}
237
243
  tweakStyles={tweakSearchInputStyles}
238
- testId={testId !== undefined ? `${testId}-search` : undefined}
244
+ testId={getTestId(testId, 'search')}
239
245
  shouldFocusOnMount
240
246
  />
241
247
  </div>
@@ -243,19 +249,17 @@ export function FilterSelect<Value>({
243
249
 
244
250
  {!isLoading && (
245
251
  <>
246
- {allOptions.length !== 0 && (
252
+ {isArrayNotEmpty(allOptions) && (
247
253
  <div
248
- className={clsx(classes.list, hasClearButton && classes.withClearButton)}
249
- data-testid={testId !== undefined ? `${testId}-list` : undefined}
254
+ className={clsx(classes.list, { [classes.withClearButton]: hasClearButton })}
255
+ {...addDataTestId(testId, 'list')}
250
256
  >
251
- {isGroupingEnabled && value !== undefined && (
257
+ {isGroupingEnabled && isNotEmpty(value) && (
252
258
  <>
253
259
  <div
254
- className={clsx(
255
- classes.label,
256
- classes.labelChosen,
257
- !isSearchEnabled && classes.withoutTopGap,
258
- )}
260
+ className={clsx(classes.label, classes.labelChosen, {
261
+ [classes.withoutTopGap]: !isSearchEnabled,
262
+ })}
259
263
  >
260
264
  {translates.chosen}
261
265
  </div>
@@ -269,7 +273,7 @@ export function FilterSelect<Value>({
269
273
  </>
270
274
  )}
271
275
  {allOptions.map((item, index) => {
272
- const isActive = value !== undefined && getValueId(value) === getValueId(item);
276
+ const isActive = isNotEmpty(value) && getValueId(value) === getValueId(item);
273
277
  if (isGroupingEnabled && isActive) {
274
278
  return null;
275
279
  }
@@ -287,8 +291,7 @@ export function FilterSelect<Value>({
287
291
  }
288
292
  onClick={() => handleChange(item)}
289
293
  >
290
- {/* data нужно ли? */}
291
- <div className={classes.option} data-option={id}>
294
+ <div className={classes.option} {...addDataAttributes({ id, option: id })}>
292
295
  {view}
293
296
  </div>
294
297
  {isActive && (
@@ -320,17 +323,13 @@ export function FilterSelect<Value>({
320
323
  )}
321
324
 
322
325
  {/* Nothing found */}
323
- {allOptions.length === 0 && (
326
+ {!isArrayNotEmpty(allOptions) && (
324
327
  <div className={classes.nothingFound}>{translates.nothingFound}</div>
325
328
  )}
326
329
 
327
330
  {/* Controls and footer */}
328
331
  {(hasClearButton || hasFooter) && (
329
- <div
330
- className={clsx(classes.panel, {
331
- [classes.panelWithFooter]: hasFooter,
332
- })}
333
- >
332
+ <div className={clsx(classes.panel, { [classes.panelWithFooter]: hasFooter })}>
334
333
  {hasFooter && <div className={classes.footer}>{footer}</div>}
335
334
 
336
335
  {hasClearButton && (
@@ -339,7 +338,7 @@ export function FilterSelect<Value>({
339
338
  onClick={handleClear}
340
339
  size="s"
341
340
  view="text"
342
- testId={testId !== undefined ? `${testId}-clear-button` : undefined}
341
+ testId={getTestId(testId, 'clear-button')}
343
342
  tweakStyles={tweakClearButtonStyles}
344
343
  >
345
344
  {translates.clear}
@@ -9,14 +9,17 @@ import { IDateRangeConfigItem, IFilterWithDatesValue, IPeriod } from '../../type
9
9
  import type { IFilterWrapperProps } from '../FilterWrapper';
10
10
  import { IFilterValueViewStyles, useStyles } from './FilterValueView.styles';
11
11
 
12
- export function FilterValueView<Values, Key extends keyof Values>({
12
+ export interface IFilterValueView<Values extends Record<string, unknown>, Key extends keyof Values>
13
+ extends Omit<IFilterWrapperProps<Values, Key>, 'filtersPaneRef' | 'tweakStyles' | 'onChange'>,
14
+ ICommonProps<IFilterValueViewStyles> {}
15
+
16
+ export function FilterValueView<Values extends Record<string, unknown>, Key extends keyof Values>({
17
+ value,
18
+ filter,
13
19
  locale,
14
20
  localeKey,
15
- filter,
16
- value,
17
21
  tweakStyles,
18
- }: Omit<IFilterWrapperProps<Values, Key>, 'onChange' | 'filtersPaneRef' | 'tweakStyles'> &
19
- ICommonProps<IFilterValueViewStyles>): JSX.Element {
22
+ }: IFilterValueView<Values, Key>): JSX.Element {
20
23
  const classes = useStyles({ theme: tweakStyles });
21
24
 
22
25
  const translatesLocaleKey = filter.localeKey ?? localeKey;