@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.
- package/CHANGELOG.md +0 -30
- package/cjs/components/Autocomplete/Autocomplete.md +113 -0
- package/cjs/components/Button/Button.md +261 -0
- package/cjs/components/Calendar/Calendar.md +276 -0
- package/cjs/components/Calendar/CalendarDay.md +70 -0
- package/cjs/components/Center/Center.md +26 -0
- package/cjs/components/Checkbox/Checkbox.md +171 -0
- package/cjs/components/ComboBox/ComboBox.d.ts +11 -5
- package/cjs/components/ComboBox/ComboBox.js +10 -1
- package/cjs/components/ComboBox/ComboBox.js.map +1 -1
- package/cjs/components/ComboBox/ComboBox.md +574 -0
- package/cjs/components/CurrencyInput/CurrencyInput.md +39 -0
- package/cjs/components/CurrencyLabel/CurrencyLabel.js +2 -2
- package/cjs/components/CurrencyLabel/CurrencyLabel.js.map +1 -1
- package/cjs/components/CurrencyLabel/CurrencyLabel.md +29 -0
- package/cjs/components/DateInput/DateInput.md +111 -0
- package/cjs/components/DatePicker/DatePicker.md +368 -0
- package/cjs/components/Dropdown/Dropdown.md +45 -0
- package/cjs/components/DropdownMenu/DropdownMenu.md +290 -0
- package/cjs/components/FileUploader/FileUploader.md +131 -0
- package/cjs/components/FxInput/FxInput.md +31 -0
- package/cjs/components/Gapped/Gapped.md +44 -0
- package/cjs/components/GlobalLoader/GlobalLoader.md +97 -0
- package/cjs/components/Group/Group.md +19 -0
- package/cjs/components/Hint/Hint.md +86 -0
- package/cjs/components/Input/Input.md +86 -0
- package/cjs/components/Input/InputLayout/InputLayout.d.ts +1 -0
- package/cjs/components/Input/InputLayout/InputLayout.js +4 -2
- package/cjs/components/Input/InputLayout/InputLayout.js.map +1 -1
- package/cjs/components/Kebab/Kebab.md +306 -0
- package/cjs/components/Link/Link.md +182 -0
- package/cjs/components/Loader/Loader.md +33 -0
- package/cjs/components/MaskedInput/MaskedInput.d.ts +0 -8
- package/cjs/components/MaskedInput/MaskedInput.js +2 -23
- package/cjs/components/MaskedInput/MaskedInput.js.map +1 -1
- package/cjs/components/MaskedInput/MaskedInput.md +114 -0
- package/cjs/components/MenuFooter/MenuFooter.md +27 -0
- package/cjs/components/MenuHeader/MenuHeader.md +35 -0
- package/cjs/components/MenuItem/MenuItem.md +139 -0
- package/cjs/components/MenuSeparator/MenuSeparator.md +14 -0
- package/cjs/components/MiniModal/MiniModal.md +231 -0
- package/cjs/components/Modal/Modal.md +56 -0
- package/cjs/components/Paging/Paging.md +57 -0
- package/cjs/components/PasswordInput/PasswordInput.md +29 -0
- package/cjs/components/Radio/Radio.md +57 -0
- package/cjs/components/RadioGroup/RadioGroup.md +44 -0
- package/cjs/components/ResponsiveLayout/ResponsiveLayout.md +75 -0
- package/cjs/components/ScrollContainer/ScrollContainer.md +224 -0
- package/cjs/components/Select/Select.md +113 -0
- package/cjs/components/SidePage/SidePage.md +65 -0
- package/cjs/components/SingleToast/SingleToast.md +36 -0
- package/cjs/components/Spinner/Spinner.md +36 -0
- package/cjs/components/Sticky/Sticky.md +28 -0
- package/cjs/components/Switcher/Switcher.md +111 -0
- package/cjs/components/Tabs/Tab.md +73 -0
- package/cjs/components/Tabs/Tabs.md +54 -0
- package/cjs/components/Textarea/Textarea.d.ts +6 -1
- package/cjs/components/Textarea/Textarea.js +16 -3
- package/cjs/components/Textarea/Textarea.js.map +1 -1
- package/cjs/components/Textarea/Textarea.md +58 -0
- package/cjs/components/Textarea/Textarea.styles.js +2 -1
- package/cjs/components/Textarea/Textarea.styles.js.map +1 -1
- package/cjs/components/Toast/Toast.md +69 -0
- package/cjs/components/Toggle/Toggle.md +110 -0
- package/cjs/components/Token/Token.md +48 -0
- package/cjs/components/TokenInput/TokenInput.md +277 -0
- package/cjs/components/Tooltip/Tooltip.d.ts +1 -1
- package/cjs/components/Tooltip/Tooltip.js +6 -8
- package/cjs/components/Tooltip/Tooltip.js.map +1 -1
- package/cjs/components/Tooltip/Tooltip.md +322 -0
- package/cjs/components/TooltipMenu/TooltipMenu.md +241 -0
- package/cjs/internal/ClearCrossIcon/ClearCrossIcon.d.ts +1 -0
- package/cjs/internal/ClearCrossIcon/ClearCrossIcon.js +16 -7
- package/cjs/internal/ClearCrossIcon/ClearCrossIcon.js.map +1 -1
- package/cjs/internal/ClearCrossIcon/ClearCrossIcon.styles.d.ts +3 -0
- package/cjs/internal/ClearCrossIcon/ClearCrossIcon.styles.js +27 -9
- package/cjs/internal/ClearCrossIcon/ClearCrossIcon.styles.js.map +1 -1
- package/cjs/internal/CustomComboBox/ComboBoxView.d.ts +7 -6
- package/cjs/internal/CustomComboBox/ComboBoxView.js +2 -7
- package/cjs/internal/CustomComboBox/ComboBoxView.js.map +1 -1
- package/cjs/internal/CustomComboBox/CustomComboBox.d.ts +6 -5
- package/cjs/internal/CustomComboBox/CustomComboBox.js +1 -3
- package/cjs/internal/CustomComboBox/CustomComboBox.js.map +1 -1
- package/cjs/internal/CustomComboBox/getComboBoxTheme.d.ts +2 -1
- package/cjs/internal/CustomComboBox/getComboBoxTheme.js +10 -7
- package/cjs/internal/CustomComboBox/getComboBoxTheme.js.map +1 -1
- package/cjs/internal/DataTids/DATATIDS.md +12 -0
- package/cjs/internal/DataTids/DataTids.d.ts +12 -0
- package/cjs/internal/DataTids/DataTids.js +50 -0
- package/cjs/internal/DataTids/DataTids.js.map +1 -0
- package/cjs/internal/DataTids/DataTids.styles.d.ts +7 -0
- package/cjs/internal/DataTids/DataTids.styles.js +42 -0
- package/cjs/internal/DataTids/DataTids.styles.js.map +1 -0
- package/cjs/internal/DataTids/componentsDataTids.d.ts +5 -0
- package/cjs/internal/DataTids/componentsDataTids.js +15 -0
- package/cjs/internal/DataTids/componentsDataTids.js.map +1 -0
- package/cjs/internal/InputLikeText/InputLikeText.styles.d.ts +1 -0
- package/cjs/internal/InputLikeText/InputLikeText.styles.js +12 -4
- package/cjs/internal/InputLikeText/InputLikeText.styles.js.map +1 -1
- package/cjs/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.d.ts +37 -0
- package/cjs/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.js +235 -0
- package/cjs/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.js.map +1 -0
- package/cjs/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.styles.d.ts +3 -0
- package/cjs/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.styles.js +10 -0
- package/cjs/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.styles.js.map +1 -0
- package/cjs/internal/ThemePlayground/Playground.md +7 -0
- package/cjs/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
- package/cjs/internal/themes/BasicTheme.d.ts +2 -0
- package/cjs/internal/themes/BasicTheme.js +11 -6
- package/cjs/internal/themes/BasicTheme.js.map +1 -1
- package/cjs/internal/themes/DarkTheme5_4.js +10 -3
- package/cjs/internal/themes/DarkTheme5_4.js.map +1 -1
- package/cjs/internal/themes/LightTheme5_4.js +10 -3
- package/cjs/internal/themes/LightTheme5_4.js.map +1 -1
- package/cjs/internal/themes/consts.d.ts +7 -0
- package/cjs/internal/themes/consts.js +7 -0
- package/cjs/internal/themes/consts.js.map +1 -0
- package/cjs/lib/featureFlagsContext/FEATUREFLAGSCONTEXT.md +64 -0
- package/cjs/lib/locale/LOCALECONTEXT.md +222 -0
- package/cjs/lib/theming/ThemeContext.md +265 -0
- package/components/Autocomplete/Autocomplete.md +113 -0
- package/components/Button/Button.md +261 -0
- package/components/Calendar/Calendar.md +276 -0
- package/components/Calendar/CalendarDay.md +70 -0
- package/components/Center/Center.md +26 -0
- package/components/Checkbox/Checkbox.md +171 -0
- package/components/ComboBox/ComboBox/ComboBox.js +2 -1
- package/components/ComboBox/ComboBox/ComboBox.js.map +1 -1
- package/components/ComboBox/ComboBox.d.ts +11 -5
- package/components/ComboBox/ComboBox.md +574 -0
- package/components/CurrencyInput/CurrencyInput.md +39 -0
- package/components/CurrencyLabel/CurrencyLabel/CurrencyLabel.js +1 -1
- package/components/CurrencyLabel/CurrencyLabel/CurrencyLabel.js.map +1 -1
- package/components/CurrencyLabel/CurrencyLabel.md +29 -0
- package/components/DateInput/DateInput.md +111 -0
- package/components/DatePicker/DatePicker.md +368 -0
- package/components/Dropdown/Dropdown.md +45 -0
- package/components/DropdownMenu/DropdownMenu.md +290 -0
- package/components/FileUploader/FileUploader.md +131 -0
- package/components/FxInput/FxInput.md +31 -0
- package/components/Gapped/Gapped.md +44 -0
- package/components/GlobalLoader/GlobalLoader.md +97 -0
- package/components/Group/Group.md +19 -0
- package/components/Hint/Hint.md +86 -0
- package/components/Input/Input.md +86 -0
- package/components/Input/InputLayout/InputLayout/InputLayout.js +5 -2
- package/components/Input/InputLayout/InputLayout/InputLayout.js.map +1 -1
- package/components/Input/InputLayout/InputLayout.d.ts +1 -0
- package/components/Kebab/Kebab.md +306 -0
- package/components/Link/Link.md +182 -0
- package/components/Loader/Loader.md +33 -0
- package/components/MaskedInput/MaskedInput/MaskedInput.js +1 -11
- package/components/MaskedInput/MaskedInput/MaskedInput.js.map +1 -1
- package/components/MaskedInput/MaskedInput.d.ts +0 -8
- package/components/MaskedInput/MaskedInput.md +114 -0
- package/components/MenuFooter/MenuFooter.md +27 -0
- package/components/MenuHeader/MenuHeader.md +35 -0
- package/components/MenuItem/MenuItem.md +139 -0
- package/components/MenuSeparator/MenuSeparator.md +14 -0
- package/components/MiniModal/MiniModal.md +231 -0
- package/components/Modal/Modal.md +56 -0
- package/components/Paging/Paging.md +57 -0
- package/components/PasswordInput/PasswordInput.md +29 -0
- package/components/Radio/Radio.md +57 -0
- package/components/RadioGroup/RadioGroup.md +44 -0
- package/components/ResponsiveLayout/ResponsiveLayout.md +75 -0
- package/components/ScrollContainer/ScrollContainer.md +224 -0
- package/components/Select/Select.md +113 -0
- package/components/SidePage/SidePage.md +65 -0
- package/components/SingleToast/SingleToast.md +36 -0
- package/components/Spinner/Spinner.md +36 -0
- package/components/Sticky/Sticky.md +28 -0
- package/components/Switcher/Switcher.md +111 -0
- package/components/Tabs/Tab.md +73 -0
- package/components/Tabs/Tabs.md +54 -0
- package/components/Textarea/Textarea/Textarea.js +11 -2
- package/components/Textarea/Textarea/Textarea.js.map +1 -1
- package/components/Textarea/Textarea.d.ts +6 -1
- package/components/Textarea/Textarea.md +58 -0
- package/components/Textarea/Textarea.styles/Textarea.styles.js +1 -1
- package/components/Textarea/Textarea.styles/Textarea.styles.js.map +1 -1
- package/components/Toast/Toast.md +69 -0
- package/components/Toggle/Toggle.md +110 -0
- package/components/Token/Token.md +48 -0
- package/components/TokenInput/TokenInput.md +277 -0
- package/components/Tooltip/Tooltip/Tooltip.js +4 -7
- package/components/Tooltip/Tooltip/Tooltip.js.map +1 -1
- package/components/Tooltip/Tooltip.d.ts +1 -1
- package/components/Tooltip/Tooltip.md +322 -0
- package/components/TooltipMenu/TooltipMenu.md +241 -0
- package/internal/ClearCrossIcon/ClearCrossIcon/ClearCrossIcon.js +21 -7
- package/internal/ClearCrossIcon/ClearCrossIcon/ClearCrossIcon.js.map +1 -1
- package/internal/ClearCrossIcon/ClearCrossIcon.d.ts +1 -0
- package/internal/ClearCrossIcon/ClearCrossIcon.styles/ClearCrossIcon.styles.js +14 -5
- package/internal/ClearCrossIcon/ClearCrossIcon.styles/ClearCrossIcon.styles.js.map +1 -1
- package/internal/ClearCrossIcon/ClearCrossIcon.styles.d.ts +3 -0
- package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js +44 -51
- package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js.map +1 -1
- package/internal/CustomComboBox/ComboBoxView.d.ts +7 -6
- package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js +3 -5
- package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js.map +1 -1
- package/internal/CustomComboBox/CustomComboBox.d.ts +6 -5
- package/internal/CustomComboBox/getComboBoxTheme/getComboBoxTheme.js +5 -3
- package/internal/CustomComboBox/getComboBoxTheme/getComboBoxTheme.js.map +1 -1
- package/internal/CustomComboBox/getComboBoxTheme.d.ts +2 -1
- package/internal/DataTids/DATATIDS.md +12 -0
- package/internal/DataTids/DataTids/DataTids.js +69 -0
- package/internal/DataTids/DataTids/DataTids.js.map +1 -0
- package/internal/DataTids/DataTids/package.json +6 -0
- package/internal/DataTids/DataTids.d.ts +12 -0
- package/internal/DataTids/DataTids.styles/DataTids.styles.js +20 -0
- package/internal/DataTids/DataTids.styles/DataTids.styles.js.map +1 -0
- package/internal/DataTids/DataTids.styles/package.json +6 -0
- package/internal/DataTids/DataTids.styles.d.ts +7 -0
- package/internal/DataTids/componentsDataTids/componentsDataTids.js +12 -0
- package/internal/DataTids/componentsDataTids/componentsDataTids.js.map +1 -0
- package/internal/DataTids/componentsDataTids/package.json +6 -0
- package/internal/DataTids/componentsDataTids.d.ts +5 -0
- package/internal/InputLikeText/InputLikeText.styles/InputLikeText.styles.js +7 -4
- package/internal/InputLikeText/InputLikeText.styles/InputLikeText.styles.js.map +1 -1
- package/internal/InputLikeText/InputLikeText.styles.d.ts +1 -0
- package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout/InternalTextareaWithLayout.js +249 -0
- package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout/InternalTextareaWithLayout.js.map +1 -0
- package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout/package.json +6 -0
- package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.d.ts +37 -0
- package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.styles/InternalTextareaWithLayout.styles.js +8 -0
- package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.styles/InternalTextareaWithLayout.styles.js.map +1 -0
- package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.styles/package.json +6 -0
- package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.styles.d.ts +3 -0
- package/internal/ThemePlayground/Playground.md +7 -0
- package/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
- package/internal/themes/BasicTheme/BasicTheme.js +4 -4
- package/internal/themes/BasicTheme/BasicTheme.js.map +1 -1
- package/internal/themes/BasicTheme.d.ts +2 -0
- package/internal/themes/DarkTheme5_4/DarkTheme5_4.js +4 -2
- package/internal/themes/DarkTheme5_4/DarkTheme5_4.js.map +1 -1
- package/internal/themes/LightTheme5_4/LightTheme5_4.js +4 -2
- package/internal/themes/LightTheme5_4/LightTheme5_4.js.map +1 -1
- package/internal/themes/consts/consts.js +7 -0
- package/internal/themes/consts/consts.js.map +1 -0
- package/internal/themes/consts/package.json +6 -0
- package/internal/themes/consts.d.ts +7 -0
- package/lib/featureFlagsContext/FEATUREFLAGSCONTEXT.md +64 -0
- package/lib/locale/LOCALECONTEXT.md +222 -0
- package/lib/theming/ThemeContext.md +265 -0
- 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
|
|
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
|
|
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 :
|
|
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:
|
|
311
|
+
positions: this.getPositions(),
|
|
315
312
|
pos: this.props.pos,
|
|
316
313
|
ignoreHover: trigger === 'hoverAnchor',
|
|
317
314
|
onOpen: this.props.onOpen,
|