@skbkontur/react-ui 0.0.0-a5ba2462c5 → 0.0.0-a6f09fbded

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 (246) hide show
  1. package/CHANGELOG.md +0 -30
  2. package/cjs/components/Autocomplete/Autocomplete.md +113 -0
  3. package/cjs/components/Button/Button.md +261 -0
  4. package/cjs/components/Calendar/Calendar.md +276 -0
  5. package/cjs/components/Calendar/CalendarDay.md +70 -0
  6. package/cjs/components/Center/Center.md +26 -0
  7. package/cjs/components/Checkbox/Checkbox.md +171 -0
  8. package/cjs/components/ComboBox/ComboBox.d.ts +11 -5
  9. package/cjs/components/ComboBox/ComboBox.js +10 -1
  10. package/cjs/components/ComboBox/ComboBox.js.map +1 -1
  11. package/cjs/components/ComboBox/ComboBox.md +574 -0
  12. package/cjs/components/CurrencyInput/CurrencyInput.md +39 -0
  13. package/cjs/components/CurrencyLabel/CurrencyLabel.js +2 -2
  14. package/cjs/components/CurrencyLabel/CurrencyLabel.js.map +1 -1
  15. package/cjs/components/CurrencyLabel/CurrencyLabel.md +29 -0
  16. package/cjs/components/DateInput/DateInput.md +111 -0
  17. package/cjs/components/DatePicker/DatePicker.md +368 -0
  18. package/cjs/components/Dropdown/Dropdown.md +45 -0
  19. package/cjs/components/DropdownMenu/DropdownMenu.md +290 -0
  20. package/cjs/components/FileUploader/FileUploader.md +131 -0
  21. package/cjs/components/FxInput/FxInput.md +31 -0
  22. package/cjs/components/Gapped/Gapped.md +44 -0
  23. package/cjs/components/GlobalLoader/GlobalLoader.md +97 -0
  24. package/cjs/components/Group/Group.md +19 -0
  25. package/cjs/components/Hint/Hint.md +86 -0
  26. package/cjs/components/Input/Input.md +86 -0
  27. package/cjs/components/Input/InputLayout/InputLayout.d.ts +1 -0
  28. package/cjs/components/Input/InputLayout/InputLayout.js +4 -2
  29. package/cjs/components/Input/InputLayout/InputLayout.js.map +1 -1
  30. package/cjs/components/Kebab/Kebab.md +306 -0
  31. package/cjs/components/Link/Link.md +182 -0
  32. package/cjs/components/Loader/Loader.md +33 -0
  33. package/cjs/components/MaskedInput/MaskedInput.d.ts +0 -8
  34. package/cjs/components/MaskedInput/MaskedInput.js +2 -23
  35. package/cjs/components/MaskedInput/MaskedInput.js.map +1 -1
  36. package/cjs/components/MaskedInput/MaskedInput.md +114 -0
  37. package/cjs/components/MenuFooter/MenuFooter.md +27 -0
  38. package/cjs/components/MenuHeader/MenuHeader.md +35 -0
  39. package/cjs/components/MenuItem/MenuItem.md +139 -0
  40. package/cjs/components/MenuSeparator/MenuSeparator.md +14 -0
  41. package/cjs/components/MiniModal/MiniModal.md +231 -0
  42. package/cjs/components/Modal/Modal.md +56 -0
  43. package/cjs/components/Paging/Paging.md +57 -0
  44. package/cjs/components/PasswordInput/PasswordInput.md +29 -0
  45. package/cjs/components/Radio/Radio.md +57 -0
  46. package/cjs/components/RadioGroup/RadioGroup.md +44 -0
  47. package/cjs/components/ResponsiveLayout/ResponsiveLayout.md +75 -0
  48. package/cjs/components/ScrollContainer/ScrollContainer.md +224 -0
  49. package/cjs/components/Select/Select.md +113 -0
  50. package/cjs/components/SidePage/SidePage.md +65 -0
  51. package/cjs/components/SingleToast/SingleToast.md +36 -0
  52. package/cjs/components/Spinner/Spinner.md +36 -0
  53. package/cjs/components/Sticky/Sticky.md +28 -0
  54. package/cjs/components/Switcher/Switcher.md +111 -0
  55. package/cjs/components/Tabs/Tab.md +73 -0
  56. package/cjs/components/Tabs/Tabs.md +54 -0
  57. package/cjs/components/Textarea/Textarea.d.ts +6 -1
  58. package/cjs/components/Textarea/Textarea.js +16 -3
  59. package/cjs/components/Textarea/Textarea.js.map +1 -1
  60. package/cjs/components/Textarea/Textarea.md +58 -0
  61. package/cjs/components/Textarea/Textarea.styles.js +2 -1
  62. package/cjs/components/Textarea/Textarea.styles.js.map +1 -1
  63. package/cjs/components/Toast/Toast.md +69 -0
  64. package/cjs/components/Toggle/Toggle.md +110 -0
  65. package/cjs/components/Token/Token.md +48 -0
  66. package/cjs/components/TokenInput/TokenInput.md +277 -0
  67. package/cjs/components/Tooltip/Tooltip.d.ts +1 -1
  68. package/cjs/components/Tooltip/Tooltip.js +6 -8
  69. package/cjs/components/Tooltip/Tooltip.js.map +1 -1
  70. package/cjs/components/Tooltip/Tooltip.md +322 -0
  71. package/cjs/components/TooltipMenu/TooltipMenu.md +241 -0
  72. package/cjs/internal/ClearCrossIcon/ClearCrossIcon.d.ts +1 -0
  73. package/cjs/internal/ClearCrossIcon/ClearCrossIcon.js +16 -7
  74. package/cjs/internal/ClearCrossIcon/ClearCrossIcon.js.map +1 -1
  75. package/cjs/internal/ClearCrossIcon/ClearCrossIcon.styles.d.ts +3 -0
  76. package/cjs/internal/ClearCrossIcon/ClearCrossIcon.styles.js +27 -9
  77. package/cjs/internal/ClearCrossIcon/ClearCrossIcon.styles.js.map +1 -1
  78. package/cjs/internal/CustomComboBox/ComboBoxView.d.ts +7 -6
  79. package/cjs/internal/CustomComboBox/ComboBoxView.js +2 -7
  80. package/cjs/internal/CustomComboBox/ComboBoxView.js.map +1 -1
  81. package/cjs/internal/CustomComboBox/CustomComboBox.d.ts +6 -5
  82. package/cjs/internal/CustomComboBox/CustomComboBox.js +1 -3
  83. package/cjs/internal/CustomComboBox/CustomComboBox.js.map +1 -1
  84. package/cjs/internal/CustomComboBox/getComboBoxTheme.d.ts +2 -1
  85. package/cjs/internal/CustomComboBox/getComboBoxTheme.js +10 -7
  86. package/cjs/internal/CustomComboBox/getComboBoxTheme.js.map +1 -1
  87. package/cjs/internal/DataTids/DATATIDS.md +12 -0
  88. package/cjs/internal/DataTids/DataTids.d.ts +12 -0
  89. package/cjs/internal/DataTids/DataTids.js +50 -0
  90. package/cjs/internal/DataTids/DataTids.js.map +1 -0
  91. package/cjs/internal/DataTids/DataTids.styles.d.ts +7 -0
  92. package/cjs/internal/DataTids/DataTids.styles.js +42 -0
  93. package/cjs/internal/DataTids/DataTids.styles.js.map +1 -0
  94. package/cjs/internal/DataTids/componentsDataTids.d.ts +5 -0
  95. package/cjs/internal/DataTids/componentsDataTids.js +15 -0
  96. package/cjs/internal/DataTids/componentsDataTids.js.map +1 -0
  97. package/cjs/internal/InputLikeText/InputLikeText.styles.d.ts +1 -0
  98. package/cjs/internal/InputLikeText/InputLikeText.styles.js +12 -4
  99. package/cjs/internal/InputLikeText/InputLikeText.styles.js.map +1 -1
  100. package/cjs/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.d.ts +37 -0
  101. package/cjs/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.js +235 -0
  102. package/cjs/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.js.map +1 -0
  103. package/cjs/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.styles.d.ts +3 -0
  104. package/cjs/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.styles.js +10 -0
  105. package/cjs/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.styles.js.map +1 -0
  106. package/cjs/internal/ThemePlayground/Playground.md +7 -0
  107. package/cjs/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  108. package/cjs/internal/themes/BasicTheme.d.ts +2 -0
  109. package/cjs/internal/themes/BasicTheme.js +11 -6
  110. package/cjs/internal/themes/BasicTheme.js.map +1 -1
  111. package/cjs/internal/themes/DarkTheme5_4.js +10 -3
  112. package/cjs/internal/themes/DarkTheme5_4.js.map +1 -1
  113. package/cjs/internal/themes/LightTheme5_4.js +10 -3
  114. package/cjs/internal/themes/LightTheme5_4.js.map +1 -1
  115. package/cjs/internal/themes/consts.d.ts +7 -0
  116. package/cjs/internal/themes/consts.js +7 -0
  117. package/cjs/internal/themes/consts.js.map +1 -0
  118. package/cjs/lib/featureFlagsContext/FEATUREFLAGSCONTEXT.md +64 -0
  119. package/cjs/lib/locale/LOCALECONTEXT.md +222 -0
  120. package/cjs/lib/theming/ThemeContext.md +265 -0
  121. package/components/Autocomplete/Autocomplete.md +113 -0
  122. package/components/Button/Button.md +261 -0
  123. package/components/Calendar/Calendar.md +276 -0
  124. package/components/Calendar/CalendarDay.md +70 -0
  125. package/components/Center/Center.md +26 -0
  126. package/components/Checkbox/Checkbox.md +171 -0
  127. package/components/ComboBox/ComboBox/ComboBox.js +2 -1
  128. package/components/ComboBox/ComboBox/ComboBox.js.map +1 -1
  129. package/components/ComboBox/ComboBox.d.ts +11 -5
  130. package/components/ComboBox/ComboBox.md +574 -0
  131. package/components/CurrencyInput/CurrencyInput.md +39 -0
  132. package/components/CurrencyLabel/CurrencyLabel/CurrencyLabel.js +1 -1
  133. package/components/CurrencyLabel/CurrencyLabel/CurrencyLabel.js.map +1 -1
  134. package/components/CurrencyLabel/CurrencyLabel.md +29 -0
  135. package/components/DateInput/DateInput.md +111 -0
  136. package/components/DatePicker/DatePicker.md +368 -0
  137. package/components/Dropdown/Dropdown.md +45 -0
  138. package/components/DropdownMenu/DropdownMenu.md +290 -0
  139. package/components/FileUploader/FileUploader.md +131 -0
  140. package/components/FxInput/FxInput.md +31 -0
  141. package/components/Gapped/Gapped.md +44 -0
  142. package/components/GlobalLoader/GlobalLoader.md +97 -0
  143. package/components/Group/Group.md +19 -0
  144. package/components/Hint/Hint.md +86 -0
  145. package/components/Input/Input.md +86 -0
  146. package/components/Input/InputLayout/InputLayout/InputLayout.js +5 -2
  147. package/components/Input/InputLayout/InputLayout/InputLayout.js.map +1 -1
  148. package/components/Input/InputLayout/InputLayout.d.ts +1 -0
  149. package/components/Kebab/Kebab.md +306 -0
  150. package/components/Link/Link.md +182 -0
  151. package/components/Loader/Loader.md +33 -0
  152. package/components/MaskedInput/MaskedInput/MaskedInput.js +1 -11
  153. package/components/MaskedInput/MaskedInput/MaskedInput.js.map +1 -1
  154. package/components/MaskedInput/MaskedInput.d.ts +0 -8
  155. package/components/MaskedInput/MaskedInput.md +114 -0
  156. package/components/MenuFooter/MenuFooter.md +27 -0
  157. package/components/MenuHeader/MenuHeader.md +35 -0
  158. package/components/MenuItem/MenuItem.md +139 -0
  159. package/components/MenuSeparator/MenuSeparator.md +14 -0
  160. package/components/MiniModal/MiniModal.md +231 -0
  161. package/components/Modal/Modal.md +56 -0
  162. package/components/Paging/Paging.md +57 -0
  163. package/components/PasswordInput/PasswordInput.md +29 -0
  164. package/components/Radio/Radio.md +57 -0
  165. package/components/RadioGroup/RadioGroup.md +44 -0
  166. package/components/ResponsiveLayout/ResponsiveLayout.md +75 -0
  167. package/components/ScrollContainer/ScrollContainer.md +224 -0
  168. package/components/Select/Select.md +113 -0
  169. package/components/SidePage/SidePage.md +65 -0
  170. package/components/SingleToast/SingleToast.md +36 -0
  171. package/components/Spinner/Spinner.md +36 -0
  172. package/components/Sticky/Sticky.md +28 -0
  173. package/components/Switcher/Switcher.md +111 -0
  174. package/components/Tabs/Tab.md +73 -0
  175. package/components/Tabs/Tabs.md +54 -0
  176. package/components/Textarea/Textarea/Textarea.js +11 -2
  177. package/components/Textarea/Textarea/Textarea.js.map +1 -1
  178. package/components/Textarea/Textarea.d.ts +6 -1
  179. package/components/Textarea/Textarea.md +58 -0
  180. package/components/Textarea/Textarea.styles/Textarea.styles.js +1 -1
  181. package/components/Textarea/Textarea.styles/Textarea.styles.js.map +1 -1
  182. package/components/Toast/Toast.md +69 -0
  183. package/components/Toggle/Toggle.md +110 -0
  184. package/components/Token/Token.md +48 -0
  185. package/components/TokenInput/TokenInput.md +277 -0
  186. package/components/Tooltip/Tooltip/Tooltip.js +4 -7
  187. package/components/Tooltip/Tooltip/Tooltip.js.map +1 -1
  188. package/components/Tooltip/Tooltip.d.ts +1 -1
  189. package/components/Tooltip/Tooltip.md +322 -0
  190. package/components/TooltipMenu/TooltipMenu.md +241 -0
  191. package/internal/ClearCrossIcon/ClearCrossIcon/ClearCrossIcon.js +21 -7
  192. package/internal/ClearCrossIcon/ClearCrossIcon/ClearCrossIcon.js.map +1 -1
  193. package/internal/ClearCrossIcon/ClearCrossIcon.d.ts +1 -0
  194. package/internal/ClearCrossIcon/ClearCrossIcon.styles/ClearCrossIcon.styles.js +14 -5
  195. package/internal/ClearCrossIcon/ClearCrossIcon.styles/ClearCrossIcon.styles.js.map +1 -1
  196. package/internal/ClearCrossIcon/ClearCrossIcon.styles.d.ts +3 -0
  197. package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js +44 -51
  198. package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js.map +1 -1
  199. package/internal/CustomComboBox/ComboBoxView.d.ts +7 -6
  200. package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js +3 -5
  201. package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js.map +1 -1
  202. package/internal/CustomComboBox/CustomComboBox.d.ts +6 -5
  203. package/internal/CustomComboBox/getComboBoxTheme/getComboBoxTheme.js +5 -3
  204. package/internal/CustomComboBox/getComboBoxTheme/getComboBoxTheme.js.map +1 -1
  205. package/internal/CustomComboBox/getComboBoxTheme.d.ts +2 -1
  206. package/internal/DataTids/DATATIDS.md +12 -0
  207. package/internal/DataTids/DataTids/DataTids.js +69 -0
  208. package/internal/DataTids/DataTids/DataTids.js.map +1 -0
  209. package/internal/DataTids/DataTids/package.json +6 -0
  210. package/internal/DataTids/DataTids.d.ts +12 -0
  211. package/internal/DataTids/DataTids.styles/DataTids.styles.js +20 -0
  212. package/internal/DataTids/DataTids.styles/DataTids.styles.js.map +1 -0
  213. package/internal/DataTids/DataTids.styles/package.json +6 -0
  214. package/internal/DataTids/DataTids.styles.d.ts +7 -0
  215. package/internal/DataTids/componentsDataTids/componentsDataTids.js +12 -0
  216. package/internal/DataTids/componentsDataTids/componentsDataTids.js.map +1 -0
  217. package/internal/DataTids/componentsDataTids/package.json +6 -0
  218. package/internal/DataTids/componentsDataTids.d.ts +5 -0
  219. package/internal/InputLikeText/InputLikeText.styles/InputLikeText.styles.js +7 -4
  220. package/internal/InputLikeText/InputLikeText.styles/InputLikeText.styles.js.map +1 -1
  221. package/internal/InputLikeText/InputLikeText.styles.d.ts +1 -0
  222. package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout/InternalTextareaWithLayout.js +249 -0
  223. package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout/InternalTextareaWithLayout.js.map +1 -0
  224. package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout/package.json +6 -0
  225. package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.d.ts +37 -0
  226. package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.styles/InternalTextareaWithLayout.styles.js +8 -0
  227. package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.styles/InternalTextareaWithLayout.styles.js.map +1 -0
  228. package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.styles/package.json +6 -0
  229. package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.styles.d.ts +3 -0
  230. package/internal/ThemePlayground/Playground.md +7 -0
  231. package/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  232. package/internal/themes/BasicTheme/BasicTheme.js +4 -4
  233. package/internal/themes/BasicTheme/BasicTheme.js.map +1 -1
  234. package/internal/themes/BasicTheme.d.ts +2 -0
  235. package/internal/themes/DarkTheme5_4/DarkTheme5_4.js +4 -2
  236. package/internal/themes/DarkTheme5_4/DarkTheme5_4.js.map +1 -1
  237. package/internal/themes/LightTheme5_4/LightTheme5_4.js +4 -2
  238. package/internal/themes/LightTheme5_4/LightTheme5_4.js.map +1 -1
  239. package/internal/themes/consts/consts.js +7 -0
  240. package/internal/themes/consts/consts.js.map +1 -0
  241. package/internal/themes/consts/package.json +6 -0
  242. package/internal/themes/consts.d.ts +7 -0
  243. package/lib/featureFlagsContext/FEATUREFLAGSCONTEXT.md +64 -0
  244. package/lib/locale/LOCALECONTEXT.md +222 -0
  245. package/lib/theming/ThemeContext.md +265 -0
  246. package/package.json +6 -1
@@ -0,0 +1,110 @@
1
+ ### Базовый пример
2
+
3
+ ```jsx harmony
4
+ const [checked, setChecked] = React.useState(false);
5
+
6
+ <Toggle checked={checked} onValueChange={setChecked}>
7
+ {checked ? 'On' : 'Off'}
8
+ </Toggle>
9
+ ```
10
+
11
+ ### Тогл включенный по умолчанию
12
+
13
+ ```jsx harmony
14
+ <Toggle defaultChecked>
15
+ Включен по умолчанию
16
+ </Toggle>
17
+ ```
18
+
19
+ ### Надпись слева от переключателя
20
+
21
+ ```jsx harmony
22
+ const [checked, setChecked] = React.useState(false);
23
+
24
+ <Toggle checked={checked} onValueChange={setChecked} captionPosition="left">
25
+ Показывать уведомления
26
+ </Toggle>
27
+ ```
28
+
29
+ ### Тогл с внешним `<label/>`
30
+
31
+ ```jsx harmony
32
+ import { Gapped } from '@skbkontur/react-ui';
33
+
34
+ const [checked, setChecked] = React.useState(false);
35
+
36
+ <Gapped>
37
+ <Toggle id="toggle-1" checked={checked} onValueChange={setChecked}/>
38
+ <label htmlFor="toggle-1">Внешний label</label>
39
+ </Gapped>
40
+ ```
41
+
42
+ ### Получение фокуса после загрузки страницы
43
+
44
+ ```jsx harmony
45
+ <Toggle autoFocus>
46
+ Сразу с фокусом
47
+ </Toggle>
48
+ ```
49
+
50
+ ### Стили
51
+
52
+ ```jsx harmony
53
+ import { Gapped } from '@skbkontur/react-ui';
54
+
55
+ <Gapped gap="20px">
56
+ <Toggle warning>
57
+ Warning
58
+ </Toggle>
59
+ <Toggle error>
60
+ Error
61
+ </Toggle>
62
+ <Toggle loading>
63
+ Loading
64
+ </Toggle>
65
+ <Toggle disabled>
66
+ Disabled
67
+ </Toggle>
68
+ </Gapped>
69
+ ```
70
+
71
+ ### Размер
72
+
73
+ ```jsx harmony
74
+ import { Gapped } from '@skbkontur/react-ui';
75
+
76
+ <Gapped vertical>
77
+ <Toggle size="small">
78
+ Маленький
79
+ </Toggle>
80
+ <Toggle size="medium">
81
+ Средний
82
+ </Toggle>
83
+ <Toggle size="large">
84
+ Большой
85
+ </Toggle>
86
+ </Gapped>
87
+ ```
88
+
89
+ ### Кастомное действие при получении и потере фокуса
90
+
91
+ ```jsx harmony
92
+ import { Toast } from '@skbkontur/react-ui';
93
+
94
+ <Toggle
95
+ onFocus={() => Toast.push('Я получил фокус!')}
96
+ onBlur={() => Toast.push('И потерял его...')}
97
+ >
98
+ С кастомными действиями при фокусе и его потере
99
+ </Toggle>
100
+ ```
101
+
102
+ ### Кастомное действие при переключении
103
+
104
+ ```jsx harmony
105
+ import { Toast } from '@skbkontur/react-ui';
106
+
107
+ <Toggle onChange={() => Toast.push("Запускаю кастомное действие")}>
108
+ Кастомное действие при переключении
109
+ </Toggle>
110
+ ```
@@ -0,0 +1,48 @@
1
+ ### Базовый пример
2
+
3
+ ```jsx harmony
4
+ import { Token } from '@skbkontur/react-ui';
5
+
6
+ <Token>Example</Token>;
7
+ ```
8
+
9
+ ### Состояние валидации
10
+
11
+ ```jsx harmony
12
+ import { Gapped, Token } from '@skbkontur/react-ui';
13
+
14
+ <Gapped gap={20} vertical>
15
+ <Gapped gap={10}>
16
+ <Token>Correct</Token>
17
+ <Token warning>Warned</Token>
18
+ <Token error>Errored</Token>
19
+ </Gapped>
20
+ <Gapped gap={10}>
21
+ <Token isActive>Correct</Token>
22
+ <Token isActive warning>
23
+ Warned
24
+ </Token>
25
+ <Token isActive error>
26
+ Errored
27
+ </Token>
28
+ </Gapped>
29
+ </Gapped>;
30
+ ```
31
+
32
+ ### Размер
33
+
34
+ ```jsx harmony
35
+ import { Gapped, Token } from '@skbkontur/react-ui';
36
+
37
+ <Gapped vertical>
38
+ <Token size="small">
39
+ Маленький
40
+ </Token>
41
+ <Token size="medium">
42
+ Средний
43
+ </Token>
44
+ <Token size="large">
45
+ Большой
46
+ </Token>
47
+ </Gapped>
48
+ ```
@@ -0,0 +1,277 @@
1
+ ### Базовый пример
2
+ ```jsx harmony
3
+ import { Token } from '@skbkontur/react-ui';
4
+ import { TokenInputType } from '@skbkontur/react-ui/components/TokenInput';
5
+
6
+ const [selectedItems, setSelectedItems] = React.useState([]);
7
+
8
+ const delay = time => args => new Promise(resolve => setTimeout(resolve, time, args));
9
+
10
+ const getItems = q =>
11
+ Promise.resolve(
12
+ ['First', 'Second', 'Third', 'Fourth', 'Fifth', 'Sixth'].filter(
13
+ x => x.toLowerCase().includes(q.toLowerCase()) || x.toString() === q,
14
+ ),
15
+ ).then(delay(500));
16
+
17
+ <div style={{ width: '300px' }}>
18
+ <TokenInput
19
+ type={TokenInputType.Combined}
20
+ getItems={getItems}
21
+ selectedItems={selectedItems}
22
+ onValueChange={setSelectedItems}
23
+ renderToken={(item, tokenProps) => (
24
+ <Token key={item.toString()} {...tokenProps}>
25
+ {item}
26
+ </Token>
27
+ )}
28
+ />
29
+ </div>;
30
+ ```
31
+
32
+ ### Размер
33
+
34
+ ```jsx harmony
35
+ import { Token } from '@skbkontur/react-ui';
36
+ import { TokenInputType } from '@skbkontur/react-ui/components/TokenInput';
37
+
38
+ const [selectedItems, setSelectedItems] = React.useState([]);
39
+
40
+ const delay = time => args => new Promise(resolve => setTimeout(resolve, time, args));
41
+
42
+ const getItems = q =>
43
+ Promise.resolve(
44
+ ['First', 'Second', 'Third', 'Fourth', 'Fifth', 'Sixth'].filter(
45
+ x => x.toLowerCase().includes(q.toLowerCase()) || x.toString(10) === q,
46
+ ),
47
+ ).then(delay(500));
48
+
49
+ <div style={{ width: '300px' }}>
50
+ <TokenInput
51
+ size={'small'}
52
+ getItems={getItems}
53
+ selectedItems={selectedItems}
54
+ onValueChange={setSelectedItems}
55
+ />
56
+ <TokenInput
57
+ size={'medium'}
58
+ getItems={getItems}
59
+ selectedItems={selectedItems}
60
+ onValueChange={setSelectedItems}
61
+ />
62
+ <TokenInput
63
+ size={'large'}
64
+ getItems={getItems}
65
+ selectedItems={selectedItems}
66
+ onValueChange={setSelectedItems}
67
+ />
68
+ </div>;
69
+ ```
70
+
71
+ ### Заблокированный TokenInput с кастомными Token
72
+
73
+ ```jsx harmony
74
+ import { Token } from '@skbkontur/react-ui';
75
+ import { TokenInputType } from '@skbkontur/react-ui/components/TokenInput';
76
+
77
+ const [selectedItems, setSelectedItems] = React.useState(['aaa', 'bbb', 'ccc']);
78
+
79
+ async function getItems(query) {
80
+ return ['aaa', 'bbb', 'ccc'].filter((s) => s.includes(query));
81
+ };
82
+
83
+ <TokenInput
84
+ disabled
85
+ type={TokenInputType.Combined}
86
+ getItems={getItems}
87
+ selectedItems={selectedItems}
88
+ onValueChange={setSelectedItems}
89
+ renderToken={(item, tokenProps) => (
90
+ <Token key={item.toString()} {...tokenProps} disabled={item === 'bbb' || tokenProps.disabled} >
91
+ {item}
92
+ </Token>
93
+ )}
94
+ />
95
+ ```
96
+
97
+ ### Ограничение количества токенов в выпадающем списке
98
+
99
+ ```jsx harmony
100
+ import { Token } from '@skbkontur/react-ui';
101
+ import { TokenInputType } from '@skbkontur/react-ui/components/TokenInput';
102
+
103
+
104
+ const delay = time => args => new Promise(resolve => setTimeout(resolve, time, args));
105
+ const { cities } = require('../ComboBox/__mocks__/cities');
106
+
107
+ const maxItems = 5;
108
+
109
+ const [totalCount, setTotalCount] = React.useState(cities.length);
110
+ const [value, setValue] = React.useState([]);
111
+
112
+ const getItems = (query) => {
113
+ const items = cities
114
+ .map((x) => x.City)
115
+ .filter((x) => x.toLowerCase().includes(query.toLowerCase()) || x.toString() === query);
116
+ const result = items.slice(0, maxItems);
117
+ setTotalCount(items.length);
118
+
119
+ return Promise.resolve(result).then(delay(500));
120
+ };
121
+
122
+ const renderTotalCount = (foundCount, totalCount) => (
123
+ <span>
124
+ Показано {foundCount} из {totalCount} найденных городов
125
+ </span>
126
+ );
127
+
128
+ <div style={{ width: "300px" }}>
129
+ <TokenInput
130
+ type={TokenInputType.Combined}
131
+ selectedItems={value}
132
+ onValueChange={setValue}
133
+ getItems={getItems}
134
+ placeholder="Начните вводить название"
135
+ renderTotalCount={renderTotalCount}
136
+ totalCount={totalCount}
137
+ />
138
+ </div>
139
+ ```
140
+
141
+ ### Кастомный тип элементов меню
142
+ ```jsx harmony
143
+ import { Token } from '@skbkontur/react-ui';
144
+ import { TokenInputType } from '@skbkontur/react-ui/components/TokenInput';
145
+
146
+ const [selectedItems, setSelectedItems] = React.useState([]);
147
+
148
+ const delay = time => args => new Promise(resolve => setTimeout(resolve, time, args));
149
+ const getGenericItems = () => [
150
+ { id: '111', value: 'aaa' },
151
+ { id: '222', value: 'bbb' },
152
+ { id: '333', value: 'ccc' },
153
+ { id: '444', value: 'ddd' },
154
+ ];
155
+ const renderItem = (item) => item.value;
156
+ const renderValue = (value) => value.value;
157
+ const valueToItem = (item) => ({
158
+ value: item,
159
+ });
160
+ const getModelItems = async (query) => {
161
+ await delay(400);
162
+ return getGenericItems().filter((s) => s.value.includes(query));
163
+ }
164
+
165
+ <div style={{ width: '300px' }}>
166
+ <TokenInput
167
+ selectedItems={selectedItems}
168
+ renderItem={renderItem}
169
+ renderValue={renderValue}
170
+ valueToItem={valueToItem}
171
+ valueToString={renderValue}
172
+ getItems={getModelItems}
173
+ onValueChange={setSelectedItems}
174
+ placeholder="placeholder"
175
+ type={TokenInputType.Combined}
176
+ renderToken={(item, tokenProps) => (
177
+ <Token
178
+ key={item.id}
179
+ {...tokenProps}
180
+ >
181
+ {item.value}
182
+ </Token>
183
+ )}
184
+ />
185
+ </div>;
186
+ ```
187
+
188
+ ### Дебаунс функции getItems
189
+
190
+ Функция debounce из lodash некорректно работает с async/promise, поэтому лучше использовать кастомную функцию, как в примере ниже.
191
+
192
+ ```jsx harmony
193
+ import { TokenInput } from "@skbkontur/react-ui";
194
+ import { TokenInputType } from "@skbkontur/react-ui/components/TokenInput";
195
+
196
+ const [value, setValue] = React.useState([]);
197
+
198
+ function debounceAsync(callback, wait) {
199
+ let timeoutId = null;
200
+
201
+ return (...args) => {
202
+ if (timeoutId) {
203
+ clearTimeout(timeoutId);
204
+ }
205
+
206
+ return new Promise((resolve) => {
207
+ const timeoutPromise = new Promise((resolve) => {
208
+ timeoutId = setTimeout(resolve, wait);
209
+ });
210
+ timeoutPromise.then(async () => {
211
+ resolve(await callback(...args));
212
+ });
213
+ });
214
+ };
215
+ }
216
+
217
+ const items = ["kon", "kod", "kof", "kor", "kos"];
218
+
219
+ const getItems = async (query) => {
220
+ console.log("query: ", query);
221
+ return items.filter((item) => item.includes(query));
222
+ };
223
+
224
+ <TokenInput
225
+ style={{ width: "300px" }}
226
+ type={TokenInputType.Combined}
227
+ selectedItems={value}
228
+ onValueChange={setValue}
229
+ getItems={debounceAsync(getItems, 300)}
230
+ placeholder="Начните вводить название"
231
+ />
232
+ ```
233
+
234
+ ### Типизированная версия функции
235
+
236
+ ```typescript static
237
+ function debounceAsync<T, Callback extends (...args: any[]) => Promise<T>>(
238
+ callback: Callback,
239
+ wait: number,
240
+ ): (...args: Parameters<Callback>) => Promise<T> {
241
+ let timeoutId: number | null = null;
242
+
243
+ return (...args: any[]) => {
244
+ if (timeoutId) {
245
+ clearTimeout(timeoutId);
246
+ }
247
+
248
+ return new Promise<T>((resolve) => {
249
+ const timeoutPromise = new Promise<void>((resolve) => {
250
+ timeoutId = setTimeout(resolve, wait);
251
+ });
252
+ timeoutPromise.then(async () => {
253
+ resolve(await callback(...args));
254
+ });
255
+ });
256
+ };
257
+ }
258
+ ```
259
+
260
+ ### Локали по умолчанию
261
+
262
+ ```typescript static
263
+ interface TokenInputLocale {
264
+ addButtonComment?: string;
265
+ addButtonTitle?: string;
266
+ }
267
+
268
+ const ru_RU = {
269
+ addButtonComment: 'Нажмите запятую',
270
+ addButtonTitle: 'Добавить',
271
+ };
272
+
273
+ const en_GB = {
274
+ addButtonComment: 'Type comma',
275
+ addButtonTitle: 'Add',
276
+ };
277
+ ```
@@ -18,7 +18,6 @@ import { CloseButtonIcon } from "../../../internal/CloseButtonIcon/CloseButtonIc
18
18
  import { isInstanceOf } from "../../../lib/isInstanceOf";
19
19
  import { getFullReactUIFlagsContext, ReactUIFeatureFlagsContext } from "../../../lib/featureFlagsContext";
20
20
  import { cx } from "../../../lib/theming/Emotion";
21
- import { isThemeGTE } from "../../../lib/theming/ThemeHelpers";
22
21
  import { styles } from "../Tooltip.styles";
23
22
  var DEFAULT_DELAY = 100;
24
23
  export var TooltipDataTids = {
@@ -26,7 +25,7 @@ export var TooltipDataTids = {
26
25
  content: 'Tooltip__content',
27
26
  crossIcon: 'Tooltip__crossIcon'
28
27
  };
29
- var DefaultPositions = ['right bottom', 'right middle', 'right top', 'top right', 'top center', 'top left', 'left top', 'left middle', 'left bottom', 'bottom left', 'bottom center', 'bottom right'];
28
+ var OldPositions = ['right bottom', 'right middle', 'right top', 'top right', 'top center', 'top left', 'left top', 'left middle', 'left bottom', 'bottom left', 'bottom center', 'bottom right'];
30
29
 
31
30
  /**
32
31
  * `Tooltip` — это подсказка, которая объясняет состояние контрола или даёт контекстную справку.
@@ -67,9 +66,7 @@ export var Tooltip = rootNode(_class = (_Tooltip = /*#__PURE__*/function (_React
67
66
  return (_this$popupRef$curren = _this.popupRef.current) == null ? void 0 : _this$popupRef$curren.anchorElement;
68
67
  };
69
68
  _this.getPositions = function () {
70
- return _this.props.allowedPositions ? _this.props.allowedPositions.filter(function (item) {
71
- return DefaultPositions.includes(item);
72
- }) : DefaultPositions;
69
+ return _this.props.allowedPositions;
73
70
  };
74
71
  _this.refContent = function (node) {
75
72
  _this.contentElement = node;
@@ -201,7 +198,7 @@ export var Tooltip = rootNode(_class = (_Tooltip = /*#__PURE__*/function (_React
201
198
  warning(props.children || props.anchorElement, "[Tooltip]: you must provide either 'children' or 'anchorElement' prop for Tooltip to work properly");
202
199
  };
203
200
  _proto.getAllowedPositions = function getAllowedPositions() {
204
- return this.props.allowedPositions ? this.props.allowedPositions : DefaultPositions;
201
+ return this.props.allowedPositions ? this.props.allowedPositions : OldPositions;
205
202
  };
206
203
  _proto.componentDidMount = function componentDidMount() {
207
204
  this.validateProps(this.getProps());
@@ -311,7 +308,7 @@ export var Tooltip = rootNode(_class = (_Tooltip = /*#__PURE__*/function (_React
311
308
  maxWidth: "none",
312
309
  opened: this.state.opened,
313
310
  disableAnimations: disableAnimations,
314
- positions: isThemeGTE(this.theme, '5.4') ? this.getPositions() : this.props.allowedPositions,
311
+ positions: this.getPositions(),
315
312
  pos: this.props.pos,
316
313
  ignoreHover: trigger === 'hoverAnchor',
317
314
  onOpen: this.props.onOpen,