@true-engineering/true-react-common-ui-kit 2.0.1 → 2.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (275) hide show
  1. package/LICENSE +201 -201
  2. package/README.md +17 -0
  3. package/dist/components/Button/Button.d.ts +36 -1
  4. package/dist/components/Checkbox/Checkbox.d.ts +15 -2
  5. package/dist/components/DatePicker/DatePicker.d.ts +4 -5
  6. package/dist/components/DatePicker/types.d.ts +1 -1
  7. package/dist/components/FiltersPane/FilterMultiSelect/FilterMultiSelect.d.ts +1 -1
  8. package/dist/components/FiltersPane/FilterSelect/FilterSelect.d.ts +13 -1
  9. package/dist/components/FiltersPane/FilterWithDates/FilterWithDates.d.ts +1 -1
  10. package/dist/components/FiltersPane/FilterWithPeriod/FilterWithPeriod.d.ts +1 -1
  11. package/dist/components/FiltersPane/FilterWrapper/FilterWrapper.d.ts +1 -1
  12. package/dist/components/FiltersPane/FiltersPane.d.ts +2 -2
  13. package/dist/components/FiltersPane/FiltersPaneSearch/FiltersPaneSearch.d.ts +1 -1
  14. package/dist/components/FiltersPane/types.d.ts +1 -1
  15. package/dist/components/Flag/augment.d.ts +1 -1
  16. package/dist/components/FlexibleTable/FlexibleTable.d.ts +1 -1
  17. package/dist/components/FlexibleTable/TableRow.d.ts +1 -1
  18. package/dist/components/Icon/Icon.d.ts +2 -2
  19. package/dist/components/Icon/complexIcons/augment.d.ts +1 -1
  20. package/dist/components/Input/Input.d.ts +18 -1
  21. package/dist/components/MoreMenu/MoreMenu.d.ts +3 -0
  22. package/dist/components/MultiSelect/MultiSelectInput/MultiSelectInput.d.ts +1 -1
  23. package/dist/components/MultiSelectList/MultiSelectList.d.ts +1 -1
  24. package/dist/components/Notification/Notification.d.ts +6 -0
  25. package/dist/components/PhoneInput/PhoneInput.d.ts +1 -1
  26. package/dist/components/RadioButton/RadioButton.d.ts +4 -3
  27. package/dist/components/Select/Select.d.ts +3 -3
  28. package/dist/components/Switch/Switch.d.ts +10 -4
  29. package/dist/components/TextWithTooltip/TextWithTooltip.d.ts +1 -1
  30. package/dist/components/ThemedPreloader/ThemedPreloader.d.ts +3 -0
  31. package/dist/components/Toaster/Toaster.d.ts +13 -0
  32. package/dist/components/Tooltip/Tooltip.d.ts +6 -0
  33. package/dist/helpers/snippets.d.ts +1 -1
  34. package/dist/helpers/utils.d.ts +15 -1
  35. package/dist/true-react-common-ui-kit.js +3873 -3875
  36. package/dist/true-react-common-ui-kit.js.map +1 -1
  37. package/dist/true-react-common-ui-kit.umd.cjs +3893 -3895
  38. package/dist/true-react-common-ui-kit.umd.cjs.map +1 -1
  39. package/dist/types.d.ts +3 -0
  40. package/dist/vite-env.d.ts +1 -1
  41. package/package.json +2 -1
  42. package/src/components/AccountInfo/AccountInfo.stories.tsx +32 -35
  43. package/src/components/AccountInfo/AccountInfo.styles.ts +55 -55
  44. package/src/components/AccountInfo/AccountInfo.tsx +77 -106
  45. package/src/components/AccountInfo/index.ts +2 -2
  46. package/src/components/AddButton/AddButton.stories.tsx +21 -21
  47. package/src/components/AddButton/AddButton.styles.ts +34 -34
  48. package/src/components/AddButton/AddButton.tsx +48 -49
  49. package/src/components/AddButton/index.ts +2 -2
  50. package/src/components/Button/Button.stories.tsx +52 -61
  51. package/src/components/Button/Button.styles.ts +196 -196
  52. package/src/components/Button/Button.tsx +187 -207
  53. package/src/components/Button/index.ts +2 -2
  54. package/src/components/Checkbox/Checkbox.stories.tsx +32 -35
  55. package/src/components/Checkbox/Checkbox.styles.ts +62 -62
  56. package/src/components/Checkbox/Checkbox.tsx +100 -106
  57. package/src/components/Checkbox/index.ts +2 -2
  58. package/src/components/CloseButton/CloseButton.styles.ts +34 -34
  59. package/src/components/CloseButton/CloseButton.tsx +35 -37
  60. package/src/components/CloseButton/index.ts +2 -2
  61. package/src/components/Colors/Colors.stories.tsx +7 -7
  62. package/src/components/Colors/Colors.styles.ts +38 -38
  63. package/src/components/Colors/Colors.tsx +26 -34
  64. package/src/components/Colors/index.ts +2 -2
  65. package/src/components/CssBaseline/CssBaseline.styles.ts +15 -15
  66. package/src/components/CssBaseline/CssBaseline.tsx +15 -17
  67. package/src/components/CssBaseline/index.ts +2 -2
  68. package/src/components/DateInput/DateInput.stories.tsx +61 -67
  69. package/src/components/DateInput/DateInput.styles.ts +14 -14
  70. package/src/components/DateInput/DateInput.tsx +82 -101
  71. package/src/components/DateInput/constants.ts +2 -2
  72. package/src/components/DateInput/index.ts +3 -3
  73. package/src/components/DatePicker/DatePicker.stories.tsx +87 -90
  74. package/src/components/DatePicker/DatePicker.styles.ts +44 -44
  75. package/src/components/DatePicker/DatePicker.tsx +322 -354
  76. package/src/components/DatePicker/DatePickerHeader/DatePickerHeader.styles.ts +84 -84
  77. package/src/components/DatePicker/DatePickerHeader/DatePickerHeader.tsx +79 -80
  78. package/src/components/DatePicker/DatePickerHeader/index.ts +2 -2
  79. package/src/components/DatePicker/constants.ts +1 -1
  80. package/src/components/DatePicker/helpers.ts +19 -24
  81. package/src/components/DatePicker/index.ts +3 -3
  82. package/src/components/DatePicker/types.ts +45 -40
  83. package/src/components/Description/Description.stories.tsx +27 -29
  84. package/src/components/Description/Description.styles.ts +31 -31
  85. package/src/components/Description/Description.tsx +60 -69
  86. package/src/components/Description/index.ts +2 -2
  87. package/src/components/FiltersPane/FilterInterval/FilterInterval.styles.ts +64 -64
  88. package/src/components/FiltersPane/FilterInterval/FilterInterval.tsx +143 -162
  89. package/src/components/FiltersPane/FilterInterval/index.ts +1 -1
  90. package/src/components/FiltersPane/FilterMultiSelect/FilterMultiSelect.tsx +10 -14
  91. package/src/components/FiltersPane/FilterMultiSelect/index.ts +1 -1
  92. package/src/components/FiltersPane/FilterSelect/FilterSelect.styles.ts +143 -144
  93. package/src/components/FiltersPane/FilterSelect/FilterSelect.tsx +347 -397
  94. package/src/components/FiltersPane/FilterSelect/index.ts +1 -1
  95. package/src/components/FiltersPane/FilterSelect/locales.ts +37 -37
  96. package/src/components/FiltersPane/FilterValueView/FilterValueView.styles.tsx +15 -15
  97. package/src/components/FiltersPane/FilterValueView/FilterValueView.tsx +166 -186
  98. package/src/components/FiltersPane/FilterValueView/index.tsx +1 -1
  99. package/src/components/FiltersPane/FilterWithDates/FilterWithDates.styles.ts +60 -60
  100. package/src/components/FiltersPane/FilterWithDates/FilterWithDates.tsx +183 -210
  101. package/src/components/FiltersPane/FilterWithDates/index.ts +1 -1
  102. package/src/components/FiltersPane/FilterWithPeriod/FilterWithPeriod.styles.ts +17 -17
  103. package/src/components/FiltersPane/FilterWithPeriod/FilterWithPeriod.tsx +198 -231
  104. package/src/components/FiltersPane/FilterWithPeriod/index.ts +1 -1
  105. package/src/components/FiltersPane/FilterWrapper/FilterWrapper.styles.ts +110 -110
  106. package/src/components/FiltersPane/FilterWrapper/FilterWrapper.tsx +346 -360
  107. package/src/components/FiltersPane/FilterWrapper/index.ts +1 -1
  108. package/src/components/FiltersPane/FiltersPane.stories.tsx +295 -308
  109. package/src/components/FiltersPane/FiltersPane.styles.ts +71 -71
  110. package/src/components/FiltersPane/FiltersPane.tsx +151 -193
  111. package/src/components/FiltersPane/FiltersPaneSearch/FiltersPaneSearch.styles.ts +109 -109
  112. package/src/components/FiltersPane/FiltersPaneSearch/FiltersPaneSearch.tsx +155 -175
  113. package/src/components/FiltersPane/FiltersPaneSearch/index.ts +1 -1
  114. package/src/components/FiltersPane/index.ts +20 -20
  115. package/src/components/FiltersPane/locales.ts +107 -107
  116. package/src/components/FiltersPane/types.ts +112 -126
  117. package/src/components/Flag/Flag.stories.tsx +29 -29
  118. package/src/components/Flag/Flag.styles.ts +18 -18
  119. package/src/components/Flag/Flag.tsx +27 -28
  120. package/src/components/Flag/augment.d.ts +1 -1
  121. package/src/components/Flag/index.ts +2 -2
  122. package/src/components/FlexibleTable/FlexibleTable.stories.tsx +3 -5
  123. package/src/components/FlexibleTable/FlexibleTable.styles.ts +131 -131
  124. package/src/components/FlexibleTable/FlexibleTable.tsx +205 -243
  125. package/src/components/FlexibleTable/TableRow.tsx +152 -171
  126. package/src/components/FlexibleTable/TableValue.tsx +75 -81
  127. package/src/components/FlexibleTable/fixture-test.ts +254 -254
  128. package/src/components/FlexibleTable/index.ts +3 -3
  129. package/src/components/FlexibleTable/types.ts +52 -58
  130. package/src/components/Icon/ComplexIconBoilerplate.tsx +17 -17
  131. package/src/components/Icon/Icon.stories.tsx +85 -88
  132. package/src/components/Icon/Icon.styles.ts +10 -10
  133. package/src/components/Icon/Icon.tsx +32 -34
  134. package/src/components/Icon/IconBoilerplate.tsx +42 -42
  135. package/src/components/Icon/complexIcons/augment.d.ts +1 -1
  136. package/src/components/Icon/complexIcons/avatarGreen.svg +57 -57
  137. package/src/components/Icon/complexIcons/icons.ts +7 -7
  138. package/src/components/Icon/complexIcons/index.ts +1 -1
  139. package/src/components/Icon/icons/icons.ts +838 -838
  140. package/src/components/Icon/icons/index.ts +1 -1
  141. package/src/components/Icon/index.ts +4 -4
  142. package/src/components/IncrementInput/ChangeButton.tsx +33 -34
  143. package/src/components/IncrementInput/IncrementInput.stories.tsx +31 -34
  144. package/src/components/IncrementInput/IncrementInput.styles.ts +77 -77
  145. package/src/components/IncrementInput/IncrementInput.tsx +79 -95
  146. package/src/components/IncrementInput/index.ts +2 -2
  147. package/src/components/Input/Input.stories.tsx +86 -92
  148. package/src/components/Input/Input.styles.ts +307 -307
  149. package/src/components/Input/Input.tsx +306 -321
  150. package/src/components/Input/index.ts +2 -2
  151. package/src/components/List/List.stories.tsx +62 -62
  152. package/src/components/List/List.styles.ts +52 -52
  153. package/src/components/List/List.tsx +61 -82
  154. package/src/components/List/index.ts +2 -2
  155. package/src/components/Modal/Modal.stories.tsx +105 -113
  156. package/src/components/Modal/Modal.styles.ts +305 -308
  157. package/src/components/Modal/Modal.tsx +181 -210
  158. package/src/components/Modal/index.ts +2 -2
  159. package/src/components/MoreMenu/MoreMenu.stories.tsx +46 -46
  160. package/src/components/MoreMenu/MoreMenu.styles.ts +70 -70
  161. package/src/components/MoreMenu/MoreMenu.tsx +89 -102
  162. package/src/components/MoreMenu/index.ts +2 -2
  163. package/src/components/MultiSelect/MultiSelect.stories.tsx +46 -46
  164. package/src/components/MultiSelect/MultiSelect.styles.ts +55 -55
  165. package/src/components/MultiSelect/MultiSelect.tsx +89 -98
  166. package/src/components/MultiSelect/MultiSelectInput/MultiSelectInput.styles.ts +73 -73
  167. package/src/components/MultiSelect/MultiSelectInput/MultiSelectInput.tsx +51 -62
  168. package/src/components/MultiSelect/MultiSelectInput/index.ts +1 -1
  169. package/src/components/MultiSelect/index.ts +3 -3
  170. package/src/components/MultiSelectList/MultiSelectList.styles.ts +124 -125
  171. package/src/components/MultiSelectList/MultiSelectList.tsx +451 -519
  172. package/src/components/MultiSelectList/index.ts +2 -2
  173. package/src/components/MultiSelectList/locales.ts +37 -37
  174. package/src/components/Notification/Notification.stories.tsx +46 -51
  175. package/src/components/Notification/Notification.styles.ts +50 -50
  176. package/src/components/Notification/Notification.tsx +75 -84
  177. package/src/components/Notification/index.ts +2 -2
  178. package/src/components/NumberInput/NumberInput.stories.tsx +35 -36
  179. package/src/components/NumberInput/NumberInput.tsx +133 -154
  180. package/src/components/NumberInput/helpers.ts +85 -87
  181. package/src/components/NumberInput/index.ts +1 -1
  182. package/src/components/PhoneInput/PhoneInput.stories.tsx +70 -71
  183. package/src/components/PhoneInput/PhoneInput.styles.ts +84 -84
  184. package/src/components/PhoneInput/PhoneInput.tsx +194 -223
  185. package/src/components/PhoneInput/PhoneInputCountryList/PhoneInputCountryList.stories.tsx +21 -21
  186. package/src/components/PhoneInput/PhoneInputCountryList/PhoneInputCountryList.styles.ts +100 -100
  187. package/src/components/PhoneInput/PhoneInputCountryList/PhoneInputCountryList.tsx +147 -171
  188. package/src/components/PhoneInput/PhoneInputCountryList/index.ts +2 -2
  189. package/src/components/PhoneInput/index.ts +6 -6
  190. package/src/components/PhoneInput/phone-info.ts +2147 -2167
  191. package/src/components/PhoneInput/types.ts +16 -16
  192. package/src/components/RadioButton/RadioButton.stories.tsx +46 -46
  193. package/src/components/RadioButton/RadioButton.styles.ts +37 -37
  194. package/src/components/RadioButton/RadioButton.tsx +54 -56
  195. package/src/components/RadioButton/index.ts +2 -2
  196. package/src/components/ScrollIntoViewIfNeeded/ScrollIntoViewIfNeeded.ts +61 -66
  197. package/src/components/ScrollIntoViewIfNeeded/index.ts +1 -1
  198. package/src/components/SearchInput/SearchInput.stories.tsx +23 -24
  199. package/src/components/SearchInput/SearchInput.styles.ts +50 -50
  200. package/src/components/SearchInput/SearchInput.tsx +49 -63
  201. package/src/components/SearchInput/index.ts +2 -2
  202. package/src/components/Select/MultiSelect.stories.tsx +240 -263
  203. package/src/components/Select/Select.stories.tsx +235 -258
  204. package/src/components/Select/Select.styles.ts +96 -96
  205. package/src/components/Select/Select.tsx +49 -108
  206. package/src/components/Select/SelectList/SelectList.styles.ts +72 -72
  207. package/src/components/Select/SelectList/SelectList.tsx +152 -165
  208. package/src/components/Select/SelectList/index.ts +1 -1
  209. package/src/components/Select/SelectListItem/SelectListItem.styles.ts +14 -14
  210. package/src/components/Select/SelectListItem/SelectListItem.tsx +67 -73
  211. package/src/components/Select/constants.ts +2 -2
  212. package/src/components/Select/helpers.ts +26 -29
  213. package/src/components/Select/index.ts +4 -4
  214. package/src/components/Select/types.ts +1 -1
  215. package/src/components/SmartInput/SmartInput.stories.tsx +50 -63
  216. package/src/components/SmartInput/SmartInput.tsx +147 -180
  217. package/src/components/SmartInput/helpers.ts +85 -85
  218. package/src/components/SmartInput/index.ts +1 -1
  219. package/src/components/Switch/Switch.stories.tsx +40 -40
  220. package/src/components/Switch/Switch.styles.ts +75 -75
  221. package/src/components/Switch/Switch.tsx +82 -89
  222. package/src/components/Switch/index.ts +2 -2
  223. package/src/components/TextArea/TextArea.stories.tsx +35 -35
  224. package/src/components/TextArea/TextArea.styles.ts +153 -153
  225. package/src/components/TextArea/TextArea.tsx +165 -178
  226. package/src/components/TextArea/index.ts +2 -2
  227. package/src/components/TextWithInfo/TextWithInfo.stories.tsx +53 -53
  228. package/src/components/TextWithInfo/TextWithInfo.styles.ts +60 -60
  229. package/src/components/TextWithInfo/TextWithInfo.tsx +60 -67
  230. package/src/components/TextWithInfo/index.ts +2 -2
  231. package/src/components/TextWithTooltip/TextWithTooltip.stories.tsx +58 -58
  232. package/src/components/TextWithTooltip/TextWithTooltip.styles.ts +19 -19
  233. package/src/components/TextWithTooltip/TextWithTooltip.tsx +143 -163
  234. package/src/components/TextWithTooltip/index.ts +2 -2
  235. package/src/components/ThemedPreloader/ThemedPreloader.stories.tsx +41 -41
  236. package/src/components/ThemedPreloader/ThemedPreloader.styles.ts +21 -21
  237. package/src/components/ThemedPreloader/ThemedPreloader.tsx +50 -56
  238. package/src/components/ThemedPreloader/components/DefaultPreloader/DefaultPreloader.tsx +29 -34
  239. package/src/components/ThemedPreloader/components/DefaultPreloader/index.ts +1 -1
  240. package/src/components/ThemedPreloader/components/DotsPreloader/DotsPreloader.styles.ts +54 -54
  241. package/src/components/ThemedPreloader/components/DotsPreloader/DotsPreloader.tsx +18 -18
  242. package/src/components/ThemedPreloader/components/DotsPreloader/index.ts +2 -2
  243. package/src/components/ThemedPreloader/components/SvgPreloader/SvgPreloader.styles.ts +11 -11
  244. package/src/components/ThemedPreloader/components/SvgPreloader/SvgPreloader.tsx +25 -32
  245. package/src/components/ThemedPreloader/components/SvgPreloader/index.ts +2 -2
  246. package/src/components/ThemedPreloader/components/index.ts +2 -2
  247. package/src/components/ThemedPreloader/index.ts +2 -2
  248. package/src/components/Toaster/Toaster.stories.tsx +30 -34
  249. package/src/components/Toaster/Toaster.styles.ts +59 -59
  250. package/src/components/Toaster/Toaster.tsx +105 -113
  251. package/src/components/Toaster/index.ts +2 -2
  252. package/src/components/Tooltip/Tooltip.stories.tsx +19 -21
  253. package/src/components/Tooltip/Tooltip.styles.ts +45 -45
  254. package/src/components/Tooltip/Tooltip.tsx +35 -40
  255. package/src/components/Tooltip/index.ts +3 -3
  256. package/src/components/Tooltip/types.ts +1 -1
  257. package/src/components/index.ts +36 -36
  258. package/src/helpers/colors.ts +3 -2
  259. package/src/helpers/dateHelpers/date-helpers.ts +9 -9
  260. package/src/helpers/index.ts +4 -4
  261. package/src/helpers/phone.ts +87 -106
  262. package/src/helpers/popper-helpers.ts +17 -17
  263. package/src/helpers/snippets.tsx +5 -5
  264. package/src/helpers/utils.ts +231 -261
  265. package/src/hooks/index.ts +6 -6
  266. package/src/hooks/use-did-mount-effect.ts +18 -21
  267. package/src/hooks/use-dropdown.ts +82 -85
  268. package/src/hooks/use-is-mounted.ts +15 -15
  269. package/src/hooks/use-on-click-outside.ts +77 -92
  270. package/src/hooks/use-theme.ts +32 -36
  271. package/src/hooks/use-tweak-styles.ts +13 -14
  272. package/src/index.ts +6 -6
  273. package/src/theme.ts +149 -155
  274. package/src/types.ts +98 -105
  275. package/src/vite-env.d.ts +1 -1
@@ -1,96 +1,96 @@
1
- import { ComponentStyles } from '../../types';
2
-
3
- export const styles = {
4
- root: {
5
- width: '100%',
6
- position: 'relative',
7
- boxSizing: 'border-box',
8
- },
9
-
10
- inputWrapper: {
11
- width: '100%',
12
- cursor: 'text',
13
- position: 'relative',
14
- },
15
-
16
- listWrapper: {
17
- left: -1,
18
- zIndex: 3,
19
- width: 'fit-content',
20
- minWidth: 'calc(100% + 1px)',
21
- },
22
-
23
- withoutPopper: {
24
- position: 'absolute',
25
- top: 'calc(100% + 6px)',
26
- },
27
-
28
- listWrapperInBody: {
29
- minWidth: 'auto',
30
- width: 'auto',
31
- maxWidth: 'min-content',
32
- },
33
-
34
- arrow: {
35
- position: 'absolute',
36
- right: 12,
37
- top: 14,
38
- width: 20,
39
- height: 20,
40
- cursor: 'pointer',
41
- zIndex: 1,
42
- transition: 'transform 0.1s ease',
43
- },
44
-
45
- activeArrow: {
46
- transform: 'rotate(180deg)',
47
- },
48
-
49
- disabled: {
50
- '& $arrow': {
51
- cursor: 'default',
52
- },
53
- },
54
-
55
- counter: {
56
- '&:not(:last-child)': {
57
- paddingRight: 8,
58
- },
59
- },
60
-
61
- icon: {
62
- width: 16,
63
- height: 16,
64
- },
65
-
66
- tweakInput: {
67
- input: {
68
- paddingRight: 32,
69
- },
70
-
71
- disabled: {
72
- '& $input': {
73
- cursor: 'default',
74
- },
75
- },
76
-
77
- controls: {
78
- paddingRight: 32,
79
- },
80
- },
81
-
82
- tweakSelectList: {},
83
-
84
- tweakSearchInput: {
85
- tweakInput: {
86
- inputWrapper: {
87
- height: 48,
88
- borderRadius: 0,
89
- border: 'none',
90
- backgroundColor: 'transparent',
91
- },
92
- },
93
- },
94
- };
95
-
96
- export type SelectStyles = ComponentStyles<typeof styles>;
1
+ import { ComponentStyles } from '../../types';
2
+
3
+ export const styles = {
4
+ root: {
5
+ width: '100%',
6
+ position: 'relative',
7
+ boxSizing: 'border-box',
8
+ },
9
+
10
+ inputWrapper: {
11
+ width: '100%',
12
+ cursor: 'text',
13
+ position: 'relative',
14
+ },
15
+
16
+ listWrapper: {
17
+ left: -1,
18
+ zIndex: 3,
19
+ width: 'fit-content',
20
+ minWidth: 'calc(100% + 1px)',
21
+ },
22
+
23
+ withoutPopper: {
24
+ position: 'absolute',
25
+ top: 'calc(100% + 6px)',
26
+ },
27
+
28
+ listWrapperInBody: {
29
+ minWidth: 'auto',
30
+ width: 'auto',
31
+ maxWidth: 'min-content',
32
+ },
33
+
34
+ arrow: {
35
+ position: 'absolute',
36
+ right: 12,
37
+ top: 14,
38
+ width: 20,
39
+ height: 20,
40
+ cursor: 'pointer',
41
+ zIndex: 1,
42
+ transition: 'transform 0.1s ease',
43
+ },
44
+
45
+ activeArrow: {
46
+ transform: 'rotate(180deg)',
47
+ },
48
+
49
+ disabled: {
50
+ '& $arrow': {
51
+ cursor: 'default',
52
+ },
53
+ },
54
+
55
+ counter: {
56
+ '&:not(:last-child)': {
57
+ paddingRight: 8,
58
+ },
59
+ },
60
+
61
+ icon: {
62
+ width: 16,
63
+ height: 16,
64
+ },
65
+
66
+ tweakInput: {
67
+ input: {
68
+ paddingRight: 32,
69
+ },
70
+
71
+ disabled: {
72
+ '& $input': {
73
+ cursor: 'default',
74
+ },
75
+ },
76
+
77
+ controls: {
78
+ paddingRight: 32,
79
+ },
80
+ },
81
+
82
+ tweakSelectList: {},
83
+
84
+ tweakSearchInput: {
85
+ tweakInput: {
86
+ inputWrapper: {
87
+ height: 48,
88
+ borderRadius: 0,
89
+ border: 'none',
90
+ backgroundColor: 'transparent',
91
+ },
92
+ },
93
+ },
94
+ };
95
+
96
+ export type SelectStyles = ComponentStyles<typeof styles>;
@@ -10,14 +10,19 @@ import {
10
10
  useState,
11
11
  SyntheticEvent,
12
12
  } from 'react';
13
- import { Styles } from 'jss';
13
+ import { Portal } from 'react-overlays';
14
14
  import clsx from 'clsx';
15
+ import { Styles } from 'jss';
15
16
  import merge from 'lodash-es/merge';
16
17
  import { debounce } from 'ts-debounce';
17
- import { Portal } from 'react-overlays';
18
- import { SelectList } from './SelectList';
19
- import { IInputProps, Input } from '../Input';
20
- import { IIconType, Icon } from '../Icon';
18
+ import {
19
+ createFilter,
20
+ getTestId,
21
+ hasExactParent,
22
+ isNotEmpty,
23
+ isStringNotEmpty,
24
+ } from '../../helpers';
25
+ import { renderIcon } from '../../helpers/snippets';
21
26
  import {
22
27
  useIsMounted,
23
28
  useTheme,
@@ -26,13 +31,12 @@ import {
26
31
  useTweakStyles,
27
32
  } from '../../hooks';
28
33
  import { IDropdownWithPopperOptions } from '../../types';
29
- import {
30
- createFilter,
31
- getTestId,
32
- hasExactParent,
33
- isNotEmpty,
34
- isStringNotEmpty,
35
- } from '../../helpers';
34
+ import { IIconType, Icon } from '../Icon';
35
+ import { IInputProps, Input } from '../Input';
36
+ import { ISearchInputProps, SearchInput } from '../SearchInput';
37
+ import { SelectStyles, styles } from './Select.styles';
38
+ import { SelectList } from './SelectList';
39
+ import { ALL_OPTION_INDEX, DEFAULT_OPTION_INDEX } from './constants';
36
40
  import {
37
41
  defaultConvertFunction,
38
42
  defaultCompareFunction,
@@ -40,11 +44,7 @@ import {
40
44
  getDefaultConvertToIdFunction,
41
45
  isMultiSelectValue,
42
46
  } from './helpers';
43
- import { SelectStyles, styles } from './Select.styles';
44
- import { ISearchInputProps, SearchInput } from '../SearchInput';
45
47
  import { IMultipleSelectValue } from './types';
46
- import { ALL_OPTION_INDEX, DEFAULT_OPTION_INDEX } from './constants';
47
- import { renderIcon } from '../../helpers/snippets';
48
48
 
49
49
  export interface ISelectProps<Value>
50
50
  extends Omit<IInputProps, 'value' | 'onChange' | 'onBlur' | 'type'> {
@@ -62,10 +62,7 @@ export interface ISelectProps<Value>
62
62
  value: Value | undefined;
63
63
  shouldScrollToList?: boolean;
64
64
  isMultiSelect?: boolean;
65
- searchInput?: { shouldRenderInList: true } & Pick<
66
- ISearchInputProps,
67
- 'placeholder'
68
- >;
65
+ searchInput?: { shouldRenderInList: true } & Pick<ISearchInputProps, 'placeholder'>;
69
66
  isOptionDisabled?(option: Value): boolean;
70
67
  onChange(value?: Value): void; // подумать как возвращать индекс
71
68
  onBlur?(event: Event | SyntheticEvent): void;
@@ -81,10 +78,7 @@ export interface ISelectProps<Value>
81
78
  }
82
79
 
83
80
  export interface IMultipleSelectProps<Value>
84
- extends Omit<
85
- ISelectProps<Value>,
86
- 'value' | 'onChange' | 'compareValuesOnChange'
87
- > {
81
+ extends Omit<ISelectProps<Value>, 'value' | 'onChange' | 'compareValuesOnChange'> {
88
82
  isMultiSelect: true;
89
83
  value: IMultipleSelectValue<Value> | undefined;
90
84
  onChange(value?: IMultipleSelectValue<Value>): void;
@@ -135,8 +129,7 @@ export function Select<Value>(
135
129
  const [areOptionsLoading, setAreOptionsLoading] = useState(false);
136
130
  const hasDefaultOption = isStringNotEmpty(defaultOptionLabel);
137
131
 
138
- const [focusedListCellIndex, setFocusedListCellIndex] =
139
- useState(DEFAULT_OPTION_INDEX);
132
+ const [focusedListCellIndex, setFocusedListCellIndex] = useState(DEFAULT_OPTION_INDEX);
140
133
  const [searchValue, setSearchValue] = useState('');
141
134
  // если мы ввели что то в строку поиска - то этот булеан будет отключаться
142
135
  // вынесен отдельно, из-за проблем с дебаунсом при динамич. опциях
@@ -146,15 +139,12 @@ export function Select<Value>(
146
139
  const list = useRef<HTMLDivElement>(null);
147
140
  const input = useRef<HTMLInputElement>(null); // TODO ref снаружи?
148
141
 
149
- const shouldRenderSearchInputInList =
150
- searchInput?.shouldRenderInList === true;
151
- const hasSearchInputInList =
152
- optionsMode !== 'normal' && shouldRenderSearchInputInList;
142
+ const shouldRenderSearchInputInList = searchInput?.shouldRenderInList === true;
143
+ const hasSearchInputInList = optionsMode !== 'normal' && shouldRenderSearchInputInList;
153
144
 
154
145
  const isMultiSelect = isMultiSelectValue(props, value);
155
146
  const strValue = isMultiSelect ? value?.[0] : value;
156
- const shouldShowAllOption =
157
- isMultiSelect && isNotEmpty(allOptionsLabel) && searchValue === '';
147
+ const shouldShowAllOption = isMultiSelect && isNotEmpty(allOptionsLabel) && searchValue === '';
158
148
 
159
149
  const filteredOptions = useMemo(() => {
160
150
  if (optionsMode !== 'search') {
@@ -162,8 +152,7 @@ export function Select<Value>(
162
152
  }
163
153
 
164
154
  const filter =
165
- optionsFilter ??
166
- createFilter<Value>((option) => [convertValueToString(option) ?? '']);
155
+ optionsFilter ?? createFilter<Value>((option) => [convertValueToString(option) ?? '']);
167
156
 
168
157
  return filter(options, searchValue);
169
158
  }, [optionsFilter, options, convertValueToString, searchValue, optionsMode]);
@@ -173,13 +162,9 @@ export function Select<Value>(
173
162
  [options, isOptionDisabled],
174
163
  );
175
164
 
176
- const areAllOptionsSelected =
177
- isMultiSelect && value?.length === availableOptions.length;
165
+ const areAllOptionsSelected = isMultiSelect && value?.length === availableOptions.length;
178
166
  const shouldShowMultiSelectCounter =
179
- isMultiSelect &&
180
- isNotEmpty(value) &&
181
- value.length > 1 &&
182
- !areAllOptionsSelected;
167
+ isMultiSelect && isNotEmpty(value) && value.length > 1 && !areAllOptionsSelected;
183
168
 
184
169
  const optionsIndexesForNavigation = useMemo(() => {
185
170
  const result: number[] = [];
@@ -199,20 +184,13 @@ export function Select<Value>(
199
184
  );
200
185
  }, [filteredOptions]);
201
186
 
202
- const stringValue = isNotEmpty(strValue)
203
- ? convertValueToString(strValue)
204
- : undefined;
187
+ const stringValue = isNotEmpty(strValue) ? convertValueToString(strValue) : undefined;
205
188
  // Для мультиселекта пытаемся показать "Все опции" если выбраны все опции
206
189
  const showedStringValue =
207
- areAllOptionsSelected && isNotEmpty(allOptionsLabel)
208
- ? allOptionsLabel
209
- : stringValue;
190
+ areAllOptionsSelected && isNotEmpty(allOptionsLabel) ? allOptionsLabel : stringValue;
210
191
 
211
192
  const convertToId = useCallback(
212
- (v: Value) =>
213
- (convertValueToId ?? getDefaultConvertToIdFunction(convertValueToString))(
214
- v,
215
- ),
193
+ (v: Value) => (convertValueToId ?? getDefaultConvertToIdFunction(convertValueToString))(v),
216
194
  [convertValueToId, convertValueToString],
217
195
  );
218
196
 
@@ -279,9 +257,7 @@ export function Select<Value>(
279
257
 
280
258
  const handleOptionSelect = useCallback(
281
259
  (index: number, event: MouseEvent<HTMLElement> | KeyboardEvent) => {
282
- handleOnChange(
283
- index === DEFAULT_OPTION_INDEX ? undefined : filteredOptions[index],
284
- );
260
+ handleOnChange(index === DEFAULT_OPTION_INDEX ? undefined : filteredOptions[index]);
285
261
  handleListClose(event);
286
262
  input.current?.blur();
287
263
  },
@@ -296,10 +272,7 @@ export function Select<Value>(
296
272
  }
297
273
 
298
274
  // Если выбрана не дефолтная опция, которая сетит андеф
299
- if (
300
- index === DEFAULT_OPTION_INDEX ||
301
- (index === ALL_OPTION_INDEX && !isSelected)
302
- ) {
275
+ if (index === DEFAULT_OPTION_INDEX || (index === ALL_OPTION_INDEX && !isSelected)) {
303
276
  handleOnChange(undefined);
304
277
  return;
305
278
  }
@@ -338,10 +311,10 @@ export function Select<Value>(
338
311
  [onType, optionsMode],
339
312
  );
340
313
 
341
- const debounceHandleOnType = useCallback(
342
- debounce(handleOnType, debounceTime),
343
- [handleOnType, debounceTime],
344
- );
314
+ const debounceHandleOnType = useCallback(debounce(handleOnType, debounceTime), [
315
+ handleOnType,
316
+ debounceTime,
317
+ ]);
345
318
 
346
319
  const handleInputChange = (v: string) => {
347
320
  if (onType !== undefined) {
@@ -376,10 +349,7 @@ export function Select<Value>(
376
349
 
377
350
  // если осталась одна опция в списке,
378
351
  // то выбираем ее нажатием на enter
379
- if (
380
- indexToSelect === DEFAULT_OPTION_INDEX &&
381
- filteredOptions.length === 1
382
- ) {
352
+ if (indexToSelect === DEFAULT_OPTION_INDEX && filteredOptions.length === 1) {
383
353
  indexToSelect = 0;
384
354
  }
385
355
 
@@ -391,13 +361,9 @@ export function Select<Value>(
391
361
  // подумать над концептом реального фокуса на опциях, а не вот эти вот focusedCell
392
362
  const valueIdToSelect = convertToId(filteredOptions[indexToSelect]);
393
363
  isThisValueAlreadySelected =
394
- value?.some((opt) => convertToId(opt) === valueIdToSelect) ??
395
- false;
364
+ value?.some((opt) => convertToId(opt) === valueIdToSelect) ?? false;
396
365
  }
397
- handleToggleOptionCheckbox(
398
- indexToSelect,
399
- !isThisValueAlreadySelected,
400
- );
366
+ handleToggleOptionCheckbox(indexToSelect, !isThisValueAlreadySelected);
401
367
  } else {
402
368
  handleOptionSelect(indexToSelect, event);
403
369
  }
@@ -409,9 +375,7 @@ export function Select<Value>(
409
375
  event.preventDefault();
410
376
  const targetIndexInNavigation =
411
377
  (curIndexInNavigation + 1) % optionsIndexesForNavigation.length;
412
- setFocusedListCellIndex(
413
- optionsIndexesForNavigation[targetIndexInNavigation],
414
- );
378
+ setFocusedListCellIndex(optionsIndexesForNavigation[targetIndexInNavigation]);
415
379
  break;
416
380
  }
417
381
 
@@ -421,9 +385,7 @@ export function Select<Value>(
421
385
  const targetIndexInNavigation =
422
386
  (curIndexInNavigation - 1 + optionsIndexesForNavigation.length) %
423
387
  optionsIndexesForNavigation.length;
424
- setFocusedListCellIndex(
425
- optionsIndexesForNavigation[targetIndexInNavigation],
426
- );
388
+ setFocusedListCellIndex(optionsIndexesForNavigation[targetIndexInNavigation]);
427
389
  break;
428
390
  }
429
391
  }
@@ -439,8 +401,7 @@ export function Select<Value>(
439
401
 
440
402
  useOnClickOutsideWithRef(list, handleListClose, inputWrapper);
441
403
 
442
- const hasEnoughSymbolsToSearch =
443
- searchValue.trim().length >= minSymbolsCountToOpenList;
404
+ const hasEnoughSymbolsToSearch = searchValue.trim().length >= minSymbolsCountToOpenList;
444
405
 
445
406
  const isOpen =
446
407
  // Пользователь пытается открыть лист
@@ -459,8 +420,7 @@ export function Select<Value>(
459
420
  // Последняя проверка на случай, если мы че то ищем в опциях
460
421
  (optionsMode === 'normal' || hasEnoughSymbolsToSearch);
461
422
 
462
- const hasReadonlyInput =
463
- isReadonly || optionsMode === 'normal' || shouldRenderSearchInputInList;
423
+ const hasReadonlyInput = isReadonly || optionsMode === 'normal' || shouldRenderSearchInputInList;
464
424
 
465
425
  const tweakInputStyles = useMemo(
466
426
  () =>
@@ -474,11 +434,7 @@ export function Select<Value>(
474
434
  [tweakStyles?.tweakInput, hasReadonlyInput],
475
435
  );
476
436
 
477
- const tweakSearchInputStyles = useTweakStyles(
478
- componentStyles,
479
- tweakStyles,
480
- 'tweakSearchInput',
481
- );
437
+ const tweakSearchInputStyles = useTweakStyles(componentStyles, tweakStyles, 'tweakSearchInput');
482
438
 
483
439
  // Эти значения ставятся в false по дефолту также в useDropdown
484
440
  const {
@@ -493,10 +449,7 @@ export function Select<Value>(
493
449
  referenceElement: inputWrapper.current,
494
450
  dropdownElement: list.current,
495
451
  options: dropdownOptions,
496
- dependenciesForPositionUpdating: [
497
- inputProps.isLoading,
498
- filteredOptions.length,
499
- ],
452
+ dependenciesForPositionUpdating: [inputProps.isLoading, filteredOptions.length],
500
453
  });
501
454
 
502
455
  useEffect(() => {
@@ -531,9 +484,7 @@ export function Select<Value>(
531
484
  <SelectList
532
485
  options={filteredOptions}
533
486
  defaultOptionLabel={
534
- hasDefaultOption && shouldShowDefaultOption
535
- ? defaultOptionLabel
536
- : undefined
487
+ hasDefaultOption && shouldShowDefaultOption ? defaultOptionLabel : undefined
537
488
  }
538
489
  allOptionsLabel={shouldShowAllOption ? allOptionsLabel : undefined}
539
490
  areAllOptionsSelected={areAllOptionsSelected}
@@ -556,17 +507,13 @@ export function Select<Value>(
556
507
  tweakStyles={tweakStyles?.tweakSelectList as Styles}
557
508
  testId={getTestId(testId, 'list')}
558
509
  // скролл не работает с включеным поппером
559
- shouldScrollToList={
560
- shouldScrollToList && !shouldUsePopper && !shouldHideOnScroll
561
- }
510
+ shouldScrollToList={shouldScrollToList && !shouldUsePopper && !shouldHideOnScroll}
562
511
  isOptionDisabled={isOptionDisabled}
563
512
  convertValueToString={convertValueToString}
564
513
  convertValueToReactNode={convertValueToReactNode}
565
514
  convertValueToId={convertToId}
566
515
  onOptionSelect={handleOptionSelect}
567
- onToggleCheckbox={
568
- isMultiSelect ? handleToggleOptionCheckbox : undefined
569
- }
516
+ onToggleCheckbox={isMultiSelect ? handleToggleOptionCheckbox : undefined}
570
517
  />
571
518
  )}
572
519
  </div>
@@ -578,9 +525,7 @@ export function Select<Value>(
578
525
  {shouldShowMultiSelectCounter && (
579
526
  <div className={classes.counter}>(+{value.length - 1})</div>
580
527
  )}
581
- {isNotEmpty(iconType) && (
582
- <div className={classes.icon}>{renderIcon(iconType)}</div>
583
- )}
528
+ {isNotEmpty(iconType) && <div className={classes.icon}>{renderIcon(iconType)}</div>}
584
529
  </>
585
530
  ) : undefined;
586
531
 
@@ -593,9 +538,7 @@ export function Select<Value>(
593
538
  >
594
539
  <Input
595
540
  value={
596
- searchValue !== '' && !shouldRenderSearchInputInList
597
- ? searchValue
598
- : showedStringValue
541
+ searchValue !== '' && !shouldRenderSearchInputInList ? searchValue : showedStringValue
599
542
  }
600
543
  onChange={handleInputChange}
601
544
  isActive={isListOpen}
@@ -621,9 +564,7 @@ export function Select<Value>(
621
564
  </div>
622
565
  </div>
623
566
  {shouldUsePopper ? (
624
- <Portal
625
- container={shouldRenderInBody ? document.body : inputWrapper.current}
626
- >
567
+ <Portal container={shouldRenderInBody ? document.body : inputWrapper.current}>
627
568
  <>{listEl}</>
628
569
  </Portal>
629
570
  ) : (
@@ -1,72 +1,72 @@
1
- import { colors, dimensions, helpers } from '../../../theme';
2
- import { ComponentStyles } from '../../../types';
3
-
4
- export const ROW_HEIGHT = 40;
5
- export const CONTAINER_PADDING = 10;
6
- export const CELL_PADDING = [10, 20];
7
-
8
- export const styles = {
9
- root: {
10
- borderRadius: dimensions.BORDER_RADIUS_SMALL,
11
- boxShadow: '0 13px 74px -27px rgba(0, 0, 0, 0.11)',
12
- boxSizing: 'border-box',
13
- padding: [CONTAINER_PADDING, 0],
14
- fontSize: 16,
15
- overflow: 'hidden',
16
- },
17
-
18
- withListHeader: {
19
- paddingTop: 0,
20
- },
21
-
22
- listHeader: {
23
- '& + $list': {
24
- borderTop: [1, 'solid', colors.BORDER_LIGHT],
25
- },
26
- },
27
-
28
- list: {
29
- height: '100%',
30
- maxHeight: ROW_HEIGHT * 6,
31
- cursor: 'pointer',
32
- backgroundColor: colors.CLASSIC_WHITE,
33
-
34
- ...helpers.withScrollBar,
35
- },
36
-
37
- cell: {
38
- display: 'flex',
39
- cursor: 'pointer',
40
- minHeight: ROW_HEIGHT,
41
- width: 'auto',
42
- padding: CELL_PADDING,
43
- alignItems: 'center',
44
- boxSizing: 'border-box',
45
- fontSize: 14,
46
- },
47
-
48
- cellWithCheckbox: {
49
- padding: 0,
50
- },
51
-
52
- noMatchesLabel: {
53
- pointerEvents: 'none',
54
- },
55
-
56
- focused: {},
57
-
58
- active: {},
59
-
60
- disabled: {
61
- cursor: 'default',
62
- },
63
-
64
- loading: {
65
- cursor: 'default',
66
- pointerEvents: 'none',
67
- },
68
-
69
- defaultCell: {},
70
- };
71
-
72
- export type SelectListStyles = ComponentStyles<typeof styles>;
1
+ import { colors, dimensions, helpers } from '../../../theme';
2
+ import { ComponentStyles } from '../../../types';
3
+
4
+ export const ROW_HEIGHT = 40;
5
+ export const CONTAINER_PADDING = 10;
6
+ export const CELL_PADDING = [10, 20];
7
+
8
+ export const styles = {
9
+ root: {
10
+ borderRadius: dimensions.BORDER_RADIUS_SMALL,
11
+ boxShadow: '0 13px 74px -27px rgba(0, 0, 0, 0.11)',
12
+ boxSizing: 'border-box',
13
+ padding: [CONTAINER_PADDING, 0],
14
+ fontSize: 16,
15
+ overflow: 'hidden',
16
+ },
17
+
18
+ withListHeader: {
19
+ paddingTop: 0,
20
+ },
21
+
22
+ listHeader: {
23
+ '& + $list': {
24
+ borderTop: [1, 'solid', colors.BORDER_LIGHT],
25
+ },
26
+ },
27
+
28
+ list: {
29
+ height: '100%',
30
+ maxHeight: ROW_HEIGHT * 6,
31
+ cursor: 'pointer',
32
+ backgroundColor: colors.CLASSIC_WHITE,
33
+
34
+ ...helpers.withScrollBar,
35
+ },
36
+
37
+ cell: {
38
+ display: 'flex',
39
+ cursor: 'pointer',
40
+ minHeight: ROW_HEIGHT,
41
+ width: 'auto',
42
+ padding: CELL_PADDING,
43
+ alignItems: 'center',
44
+ boxSizing: 'border-box',
45
+ fontSize: 14,
46
+ },
47
+
48
+ cellWithCheckbox: {
49
+ padding: 0,
50
+ },
51
+
52
+ noMatchesLabel: {
53
+ pointerEvents: 'none',
54
+ },
55
+
56
+ focused: {},
57
+
58
+ active: {},
59
+
60
+ disabled: {
61
+ cursor: 'default',
62
+ },
63
+
64
+ loading: {
65
+ cursor: 'default',
66
+ pointerEvents: 'none',
67
+ },
68
+
69
+ defaultCell: {},
70
+ };
71
+
72
+ export type SelectListStyles = ComponentStyles<typeof styles>;