@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,75 @@
|
|
|
1
|
+
### Вспомогательный интерфейс
|
|
2
|
+
```ts static
|
|
3
|
+
interface ResponsiveLayoutFlags {
|
|
4
|
+
isMobile: boolean;
|
|
5
|
+
}
|
|
6
|
+
```
|
|
7
|
+
|
|
8
|
+
### Компонент ожидает в себя функцию, в которую аргументом передается объект с флагом лэйаута.
|
|
9
|
+
|
|
10
|
+
```jsx static
|
|
11
|
+
import { ResponsiveLayout } from '@skbkontur/react-ui';
|
|
12
|
+
|
|
13
|
+
class SomeComponent {
|
|
14
|
+
public render() {
|
|
15
|
+
return (
|
|
16
|
+
<ResponsiveLayout>
|
|
17
|
+
{
|
|
18
|
+
({ isMobile }) => {
|
|
19
|
+
/* ... */
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
</ResponsiveLayout>
|
|
23
|
+
)
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### Также существует проп `onLayoutChange`, который вызывает переданный в него коллбэк при изменении лэйаута. Аргументом передается объект с флагом.
|
|
29
|
+
|
|
30
|
+
```jsx static
|
|
31
|
+
import { ResponsiveLayout } from '@skbkontur/react-ui';
|
|
32
|
+
|
|
33
|
+
class SomeComponent {
|
|
34
|
+
public render() {
|
|
35
|
+
return (
|
|
36
|
+
<div>
|
|
37
|
+
<ResponsiveLayout onLayoutChange={({ isMobile }) => console.log(isMobile)} />
|
|
38
|
+
</div>
|
|
39
|
+
)
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### В компонент можно передать проп `customMediaQueries: MediaQueriesType`, который позволяет кастомизировать возвращаемые флаги:
|
|
45
|
+
```ts static
|
|
46
|
+
type MediaQueriesType = Record<string, string>;
|
|
47
|
+
```
|
|
48
|
+
1. Без кастомизации есть только флаг isMobile
|
|
49
|
+
2. Поля из `customMediaQueries` дополняют список возвращаемых флагов в `ResponsiveLayoutFlags`
|
|
50
|
+
3. При добавлении кастомного флага isMobile, значение дефолтного флага перезаписывается в пользу кастомного
|
|
51
|
+
|
|
52
|
+
```jsx static
|
|
53
|
+
import { ResponsiveLayout } from '@skbkontur/react-ui';
|
|
54
|
+
|
|
55
|
+
const customMediaQueries = {
|
|
56
|
+
isTablet: '(min-width: 577px)',
|
|
57
|
+
isDesktop: '(min-width: 1280px)',
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
class SomeComponent {
|
|
61
|
+
public render() {
|
|
62
|
+
return (
|
|
63
|
+
<ResponsiveLayout customMediaQueries={customMediaQueries}>
|
|
64
|
+
{
|
|
65
|
+
({ isMobile, isTablet, isDesktop }) => {
|
|
66
|
+
/* ... */
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
</ResponsiveLayout>
|
|
70
|
+
)
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
Как альтернативу можно использовать хук [useResponsiveLayout](#/Mobiles).
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
### Базовый пример
|
|
2
|
+
```jsx harmony
|
|
3
|
+
function items(count) {
|
|
4
|
+
var items = [];
|
|
5
|
+
for (var i = 0; i < count; ++i) {
|
|
6
|
+
items.push(i);
|
|
7
|
+
}
|
|
8
|
+
return items;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
var divStyle = {
|
|
12
|
+
display: 'inline-block',
|
|
13
|
+
border: '1px solid #f99',
|
|
14
|
+
height: 200,
|
|
15
|
+
margin: 1,
|
|
16
|
+
position: 'relative',
|
|
17
|
+
verticalAlign: 'top',
|
|
18
|
+
width: 200,
|
|
19
|
+
};
|
|
20
|
+
var absStyle = {
|
|
21
|
+
border: '1px solid',
|
|
22
|
+
boxSizing: 'border-box',
|
|
23
|
+
position: 'absolute',
|
|
24
|
+
width: '100%',
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
<div>
|
|
28
|
+
<div style={divStyle}>
|
|
29
|
+
<ScrollContainer>
|
|
30
|
+
{items(20).map((i) => (
|
|
31
|
+
<div key={i}>{i}</div>
|
|
32
|
+
))}
|
|
33
|
+
</ScrollContainer>
|
|
34
|
+
</div>
|
|
35
|
+
<div style={{ ...divStyle, background: '#888' }}>
|
|
36
|
+
<ScrollContainer invert>
|
|
37
|
+
{items(20).map((i) => (
|
|
38
|
+
<div key={i}>{i}</div>
|
|
39
|
+
))}
|
|
40
|
+
</ScrollContainer>
|
|
41
|
+
</div>
|
|
42
|
+
<div style={divStyle}>
|
|
43
|
+
<div style={absStyle}>
|
|
44
|
+
<ScrollContainer>
|
|
45
|
+
{items(3).map((i) => (
|
|
46
|
+
<div key={i}>{i}</div>
|
|
47
|
+
))}
|
|
48
|
+
</ScrollContainer>
|
|
49
|
+
</div>
|
|
50
|
+
</div>
|
|
51
|
+
<div style={divStyle}>
|
|
52
|
+
<div style={absStyle}>
|
|
53
|
+
<ScrollContainer maxHeight={150}>
|
|
54
|
+
{items(30).map((i) => (
|
|
55
|
+
<div key={i}>{i}</div>
|
|
56
|
+
))}
|
|
57
|
+
</ScrollContainer>
|
|
58
|
+
</div>
|
|
59
|
+
</div>
|
|
60
|
+
</div>;
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### Горизонтальный scrollbar
|
|
64
|
+
|
|
65
|
+
```jsx harmony
|
|
66
|
+
var divStyle = {
|
|
67
|
+
display: 'inline-block',
|
|
68
|
+
border: '1px solid #f99',
|
|
69
|
+
height: 200,
|
|
70
|
+
margin: 1,
|
|
71
|
+
position: 'relative',
|
|
72
|
+
verticalAlign: 'top',
|
|
73
|
+
width: 200,
|
|
74
|
+
};
|
|
75
|
+
var absStyle = {
|
|
76
|
+
border: '1px solid',
|
|
77
|
+
boxSizing: 'border-box',
|
|
78
|
+
position: 'absolute',
|
|
79
|
+
width: '100%',
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
function items(count) {
|
|
83
|
+
var items = [];
|
|
84
|
+
for (var i = 0; i < count; ++i) {
|
|
85
|
+
items.push(i);
|
|
86
|
+
}
|
|
87
|
+
return items;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
var containerStyle = {
|
|
91
|
+
display: 'inline-block',
|
|
92
|
+
border: '1px solid #f99',
|
|
93
|
+
height: 200,
|
|
94
|
+
margin: 1,
|
|
95
|
+
width: 200,
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
var innerStyle = {
|
|
99
|
+
width: 400,
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
<div>
|
|
103
|
+
<div style={divStyle}>
|
|
104
|
+
<ScrollContainer>
|
|
105
|
+
{items(5).map((i) => (
|
|
106
|
+
<div style={innerStyle} key={i}>
|
|
107
|
+
{i}
|
|
108
|
+
</div>
|
|
109
|
+
))}
|
|
110
|
+
</ScrollContainer>
|
|
111
|
+
</div>
|
|
112
|
+
<div style={{ ...divStyle, background: '#888' }}>
|
|
113
|
+
<ScrollContainer invert>
|
|
114
|
+
{items(20).map((i) => (
|
|
115
|
+
<div style={innerStyle} key={i}>
|
|
116
|
+
{i}
|
|
117
|
+
</div>
|
|
118
|
+
))}
|
|
119
|
+
</ScrollContainer>
|
|
120
|
+
</div>
|
|
121
|
+
<div style={divStyle}>
|
|
122
|
+
<div style={absStyle}>
|
|
123
|
+
<ScrollContainer maxHeight={150}>
|
|
124
|
+
{items(3).map((i) => (
|
|
125
|
+
<div style={innerStyle} key={i}>
|
|
126
|
+
{i}
|
|
127
|
+
</div>
|
|
128
|
+
))}
|
|
129
|
+
</ScrollContainer>
|
|
130
|
+
</div>
|
|
131
|
+
</div>
|
|
132
|
+
<div style={divStyle}>
|
|
133
|
+
<div style={absStyle}>
|
|
134
|
+
<ScrollContainer maxHeight={150} maxWidth={200}>
|
|
135
|
+
{items(30).map((i) => (
|
|
136
|
+
<div style={innerStyle} key={i}>
|
|
137
|
+
{i}
|
|
138
|
+
</div>
|
|
139
|
+
))}
|
|
140
|
+
</ScrollContainer>
|
|
141
|
+
</div>
|
|
142
|
+
</div>
|
|
143
|
+
</div>;
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### Смещение скроллбара
|
|
147
|
+
|
|
148
|
+
```jsx harmony
|
|
149
|
+
const containerStyle = {
|
|
150
|
+
display: 'inline-block',
|
|
151
|
+
border: '1px solid #f99',
|
|
152
|
+
height: 200,
|
|
153
|
+
margin: 1,
|
|
154
|
+
width: 200,
|
|
155
|
+
};
|
|
156
|
+
|
|
157
|
+
const offsetY = {
|
|
158
|
+
top: 8,
|
|
159
|
+
bottom: 8,
|
|
160
|
+
right: 8,
|
|
161
|
+
};
|
|
162
|
+
|
|
163
|
+
<div style={containerStyle}>
|
|
164
|
+
<ScrollContainer offsetY={offsetY}>
|
|
165
|
+
{Array(30).fill(null).map((_,i) => (
|
|
166
|
+
<div key={i}>
|
|
167
|
+
{i}
|
|
168
|
+
</div>
|
|
169
|
+
))}
|
|
170
|
+
</ScrollContainer>
|
|
171
|
+
</div>
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
### Скрытие если нет активности пользователя
|
|
175
|
+
Проп `showScrollBar` со значением `scroll` скрывает скроллбар при отсутствии активности пользователя. Задержку на скрытие скроллбара можно регулировать пропом `hideScrollBarDelay` (по умолчанию 500ms)
|
|
176
|
+
|
|
177
|
+
```jsx harmony
|
|
178
|
+
var divStyle = {
|
|
179
|
+
display: 'inline-block',
|
|
180
|
+
border: '1px solid #f99',
|
|
181
|
+
height: 200,
|
|
182
|
+
margin: 1,
|
|
183
|
+
position: 'relative',
|
|
184
|
+
verticalAlign: 'top',
|
|
185
|
+
width: 200,
|
|
186
|
+
};
|
|
187
|
+
<div style={divStyle}>
|
|
188
|
+
<ScrollContainer showScrollBar={'scroll'}>
|
|
189
|
+
{Array(30).fill(null).map((_,i) => (
|
|
190
|
+
<div key={i}>
|
|
191
|
+
{i}
|
|
192
|
+
</div>
|
|
193
|
+
))}
|
|
194
|
+
</ScrollContainer>
|
|
195
|
+
</div>
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
### Показ скролбара при наведении
|
|
199
|
+
Проп `showScrollBar` со значением `hover` позволяет показывать скроллбар только когда курсор находится над скролл контейнером
|
|
200
|
+
|
|
201
|
+
```jsx harmony
|
|
202
|
+
var divStyle = {
|
|
203
|
+
display: 'inline-block',
|
|
204
|
+
border: '1px solid #f99',
|
|
205
|
+
height: 200,
|
|
206
|
+
margin: 1,
|
|
207
|
+
position: 'relative',
|
|
208
|
+
verticalAlign: 'top',
|
|
209
|
+
width: 200,
|
|
210
|
+
};
|
|
211
|
+
|
|
212
|
+
|
|
213
|
+
<span>
|
|
214
|
+
<div style={divStyle}>
|
|
215
|
+
<ScrollContainer showScrollBar={'hover'}>
|
|
216
|
+
{Array(30).fill(null).map((_,i) => (
|
|
217
|
+
<div key={i}>
|
|
218
|
+
{i}
|
|
219
|
+
</div>
|
|
220
|
+
))}
|
|
221
|
+
</ScrollContainer>
|
|
222
|
+
</div>
|
|
223
|
+
</span>
|
|
224
|
+
```
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
### Базовый пример
|
|
2
|
+
|
|
3
|
+
```jsx harmony
|
|
4
|
+
const [value, setValue] = React.useState();
|
|
5
|
+
|
|
6
|
+
const items = [Select.staticElement(() => <Select.Item>Not
|
|
7
|
+
selectable</Select.Item>), 'One', 'Two', 'Three', Select.SEP, 'Four'];
|
|
8
|
+
|
|
9
|
+
<Select items={items} value={value} onValueChange={setValue}/>;
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
### Запрет выделения и выбора
|
|
13
|
+
В пункты меню можно передать проп `isNotSelectable`, чтобы запретить выделение и выбор этого пункта меню
|
|
14
|
+
|
|
15
|
+
```jsx harmony
|
|
16
|
+
|
|
17
|
+
const [value, setValue] = React.useState();
|
|
18
|
+
|
|
19
|
+
const items = [<Select.Item isNotSelectable>Not selectable</Select.Item>, 'One', 'Two', 'Three', Select.SEP, 'Four'];
|
|
20
|
+
|
|
21
|
+
<Select items={items} value={value} onValueChange={setValue} />
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
### Очистка значения
|
|
25
|
+
Очистить значение в `Select`'е можно только с помощью `null`
|
|
26
|
+
```jsx harmony
|
|
27
|
+
import { Button, Group } from '@skbkontur/react-ui';
|
|
28
|
+
|
|
29
|
+
const [value, setValue] = React.useState();
|
|
30
|
+
|
|
31
|
+
const items = ['One', 'Two', 'Three', 'Four'];
|
|
32
|
+
|
|
33
|
+
<Group>
|
|
34
|
+
<Select items={items} value={value} onValueChange={setValue} />
|
|
35
|
+
<Button onClick={() => setValue(null)}>Очистить</Button>
|
|
36
|
+
</Group>
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### Поле поиска
|
|
40
|
+
|
|
41
|
+
```jsx harmony
|
|
42
|
+
const [value, setValue] = React.useState();
|
|
43
|
+
|
|
44
|
+
const items = ['One', 'Two', 'Three', Select.SEP, 'Four'];
|
|
45
|
+
|
|
46
|
+
<Select items={items} value={value} onValueChange={setValue} search />;
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### Пример использования пропа `_renderButton`:
|
|
50
|
+
|
|
51
|
+
```jsx harmony
|
|
52
|
+
import { Link } from '@skbkontur/react-ui';
|
|
53
|
+
import { People3Icon16Regular } from '@skbkontur/icons/icons/People3Icon/People3Icon16Regular';
|
|
54
|
+
|
|
55
|
+
const [value, setValue] = React.useState();
|
|
56
|
+
|
|
57
|
+
const items = [Select.staticElement(() => <Select.Item>Not
|
|
58
|
+
selectable</Select.Item>), 'One', 'Two', 'Three', Select.SEP, 'Four'];
|
|
59
|
+
|
|
60
|
+
const renderLinkButton = params => {
|
|
61
|
+
const linkProps = {
|
|
62
|
+
disabled: params.disabled,
|
|
63
|
+
icon: <People3Icon16Regular />,
|
|
64
|
+
_button: true,
|
|
65
|
+
_buttonOpened: params.opened,
|
|
66
|
+
|
|
67
|
+
onClick: params.onClick,
|
|
68
|
+
onKeyDown: params.onKeyDown,
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
return <Link {...linkProps}>{params.label}</Link>;
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
<Select
|
|
75
|
+
items={items}
|
|
76
|
+
value={value}
|
|
77
|
+
onValueChange={setValue}
|
|
78
|
+
_renderButton={renderLinkButton}
|
|
79
|
+
/>;
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### Локали по умолчанию
|
|
83
|
+
|
|
84
|
+
```typescript static
|
|
85
|
+
interface SelectLocale {
|
|
86
|
+
placeholder?: React.ReactNode;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
const ru_RU = {
|
|
90
|
+
placeholder: 'Ничего не выбрано',
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
const en_GB = {
|
|
94
|
+
placeholder: 'Nothing selected',
|
|
95
|
+
};
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### Размер
|
|
99
|
+
```jsx harmony
|
|
100
|
+
import { Gapped } from '@skbkontur/react-ui';
|
|
101
|
+
|
|
102
|
+
const [valueSmall, setValueSmall] = React.useState('Маленький');
|
|
103
|
+
const [valueMedium, setValueMedium] = React.useState('Средний');
|
|
104
|
+
const [valueLarge, setValueLarge] = React.useState('Большой');
|
|
105
|
+
|
|
106
|
+
const items = ['Маленький', 'Средний', 'Большой'];
|
|
107
|
+
|
|
108
|
+
<Gapped vertical>
|
|
109
|
+
<Select items={items} value={valueSmall} onValueChange={setValueSmall} size={'small'} />
|
|
110
|
+
<Select items={items} value={valueMedium} onValueChange={setValueMedium} size={'medium'} />
|
|
111
|
+
<Select items={items} value={valueLarge} onValueChange={setValueLarge} size={'large'} />
|
|
112
|
+
</Gapped>
|
|
113
|
+
```
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
### Базовый пример
|
|
2
|
+
```jsx harmony
|
|
3
|
+
import { Button } from '@skbkontur/react-ui';
|
|
4
|
+
|
|
5
|
+
const [opened, setOpened] = React.useState(false);
|
|
6
|
+
|
|
7
|
+
function renderSidePage() {
|
|
8
|
+
return (
|
|
9
|
+
<SidePage onClose={close} blockBackground>
|
|
10
|
+
<SidePage.Header>Title</SidePage.Header>
|
|
11
|
+
<SidePage.Body>
|
|
12
|
+
<div
|
|
13
|
+
style={{
|
|
14
|
+
background: `repeating-linear-gradient(
|
|
15
|
+
60deg,
|
|
16
|
+
#808080,
|
|
17
|
+
#808080 20px,
|
|
18
|
+
#d3d3d3 20px,
|
|
19
|
+
#d3d3d3 40px
|
|
20
|
+
)`,
|
|
21
|
+
height: 600,
|
|
22
|
+
padding: '20px 0',
|
|
23
|
+
}}
|
|
24
|
+
>
|
|
25
|
+
<SidePage.Container>
|
|
26
|
+
<p>Use rxjs operators with react hooks</p>
|
|
27
|
+
</SidePage.Container>
|
|
28
|
+
</div>
|
|
29
|
+
</SidePage.Body>
|
|
30
|
+
<SidePage.Footer panel>
|
|
31
|
+
<Button onClick={close}>Close</Button>
|
|
32
|
+
</SidePage.Footer>
|
|
33
|
+
</SidePage>
|
|
34
|
+
);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
function open() {
|
|
38
|
+
setOpened(true);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
function close() {
|
|
42
|
+
setOpened(false);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
<div>
|
|
46
|
+
{opened && renderSidePage()}
|
|
47
|
+
<Button onClick={open}>Open</Button>
|
|
48
|
+
</div>;
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### Локали по умолчанию
|
|
52
|
+
|
|
53
|
+
```typescript static
|
|
54
|
+
interface SidePageLocale {
|
|
55
|
+
closeButtonAriaLabel?: string;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
const ru_RU = {
|
|
59
|
+
closeButtonAriaLabel: 'Закрыть модальное окно'
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
const en_GB = {
|
|
63
|
+
closeButtonAriaLabel: 'Close modal window'
|
|
64
|
+
}
|
|
65
|
+
```
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
`<SingleToast>` можно добавить в единственном месте в проекте, а статические методы будут всегда использовать последний отрендеренный экземпляр `<Toast>`.
|
|
2
|
+
|
|
3
|
+
_На внешний вид этого примера влияет следующий пример_
|
|
4
|
+
### Базовый пример
|
|
5
|
+
```jsx harmony
|
|
6
|
+
import { Button, SingleToast } from '@skbkontur/react-ui';
|
|
7
|
+
|
|
8
|
+
<div>
|
|
9
|
+
<SingleToast />
|
|
10
|
+
<Button onClick={() => SingleToast.push('Статический тост')}>
|
|
11
|
+
Показать статический тост
|
|
12
|
+
</Button>
|
|
13
|
+
</div>
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
### Кастомизация
|
|
17
|
+
`<SingleToast>` можно кастомизировать с помощью переменных темы для `toast`.
|
|
18
|
+
```jsx harmony
|
|
19
|
+
import { Button, SingleToast, ThemeContext, ThemeFactory, THEME_2022 } from '@skbkontur/react-ui';
|
|
20
|
+
|
|
21
|
+
const rand = () => "Пример жёлтого тоста № " + Math.round(Math.random() * 100).toString();
|
|
22
|
+
|
|
23
|
+
const pushToast = () => {
|
|
24
|
+
SingleToast.push(rand(), {
|
|
25
|
+
label: "Cancel",
|
|
26
|
+
handler: () => SingleToast.push("Canceled")
|
|
27
|
+
});
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
<div>
|
|
31
|
+
<SingleToast theme={{ toastBg: '#f1c40f' }} />
|
|
32
|
+
<Button onClick={pushToast}>
|
|
33
|
+
Показать тост с жёлтым фоном
|
|
34
|
+
</Button>
|
|
35
|
+
</div>
|
|
36
|
+
```
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
### Базовый пример
|
|
2
|
+
```jsx harmony
|
|
3
|
+
import { Gapped, Spinner } from '@skbkontur/react-ui';
|
|
4
|
+
|
|
5
|
+
const reactNodeCaption = (
|
|
6
|
+
<div>
|
|
7
|
+
<Spinner type="mini" caption={null} /> <span style={{ color: 'tomato', fontSize: '1.3em' }}>З</span>
|
|
8
|
+
агрузка
|
|
9
|
+
</div>
|
|
10
|
+
);
|
|
11
|
+
|
|
12
|
+
<Gapped>
|
|
13
|
+
<Spinner type="big" caption="big" />
|
|
14
|
+
<Spinner type="normal" caption="normal" />
|
|
15
|
+
<Spinner type="mini" caption="mini" />
|
|
16
|
+
<Spinner type="mini" dimmed caption="mini dimmed" />
|
|
17
|
+
<Spinner type="big" caption={reactNodeCaption} />
|
|
18
|
+
<Spinner type="big" caption="custom" width={8} color={'#538A1B'}/>
|
|
19
|
+
</Gapped>;
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
### Локали по умолчанию
|
|
23
|
+
|
|
24
|
+
```typescript static
|
|
25
|
+
interface SpinnerLocale {
|
|
26
|
+
loading?: React.ReactNode;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
const ru_RU = {
|
|
30
|
+
loading: 'Загрузка',
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
const en_GB = {
|
|
34
|
+
loading: 'Loading',
|
|
35
|
+
};
|
|
36
|
+
```
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
### Базовый пример
|
|
2
|
+
```jsx harmony
|
|
3
|
+
const style = {
|
|
4
|
+
padding: 10,
|
|
5
|
+
background: '#f99',
|
|
6
|
+
};
|
|
7
|
+
|
|
8
|
+
let stop = null;
|
|
9
|
+
|
|
10
|
+
<div>
|
|
11
|
+
<Sticky side="top" getStop={() => stop}>
|
|
12
|
+
{fixed => (
|
|
13
|
+
<div style={style}>
|
|
14
|
+
Small loan of a million dollars
|
|
15
|
+
{fixed ? ' fixed' : <div>not fixed</div>}
|
|
16
|
+
</div>
|
|
17
|
+
)}
|
|
18
|
+
</Sticky>
|
|
19
|
+
Great
|
|
20
|
+
<div style={{ height: 1000 }} />
|
|
21
|
+
<div ref={el => (stop = el)} style={{ borderTop: '1px solid' }} />
|
|
22
|
+
<div style={{ height: 1000 }} />
|
|
23
|
+
<Sticky side="bottom" getStop={() => stop} offset={20}>
|
|
24
|
+
<div style={style}>Make America Great Again</div>
|
|
25
|
+
</Sticky>
|
|
26
|
+
<div style={{ height: 100 }} />
|
|
27
|
+
</div>;
|
|
28
|
+
```
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
### Базовый пример
|
|
2
|
+
```jsx harmony
|
|
3
|
+
const [value, setValue] = React.useState();
|
|
4
|
+
|
|
5
|
+
<Switcher
|
|
6
|
+
caption="Switch the switcher"
|
|
7
|
+
items={['One', 'Two', 'Three']}
|
|
8
|
+
value={value}
|
|
9
|
+
onValueChange={setValue}
|
|
10
|
+
/>;
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
### items в виде объектов
|
|
14
|
+
Случай, когда `items` принимает объект типа `{ label: string, value: string }`
|
|
15
|
+
|
|
16
|
+
```jsx harmony
|
|
17
|
+
const [value, setValue] = React.useState();
|
|
18
|
+
const items = [
|
|
19
|
+
{
|
|
20
|
+
label: 'One',
|
|
21
|
+
value: '111',
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
label: 'Two',
|
|
25
|
+
value: '222',
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
label: 'Three',
|
|
29
|
+
value: '333',
|
|
30
|
+
}
|
|
31
|
+
];
|
|
32
|
+
|
|
33
|
+
<Switcher
|
|
34
|
+
caption="Switch the switcher"
|
|
35
|
+
items={items}
|
|
36
|
+
value={value}
|
|
37
|
+
onValueChange={setValue}
|
|
38
|
+
/>;
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### Кастомизация кнопки
|
|
42
|
+
Вариант `items` с полем `buttonProps`, который позволяет кастомизировать кнопку
|
|
43
|
+
|
|
44
|
+
```jsx harmony
|
|
45
|
+
const [value, setValue] = React.useState();
|
|
46
|
+
const items = [
|
|
47
|
+
{
|
|
48
|
+
label: 'One',
|
|
49
|
+
value: '111',
|
|
50
|
+
buttonProps: {
|
|
51
|
+
'data-tid': "1-1-1",
|
|
52
|
+
disabled: true,
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
label: 'Three',
|
|
57
|
+
value: '333',
|
|
58
|
+
buttonProps: {
|
|
59
|
+
'data-tid': "1-1-1",
|
|
60
|
+
use: "primary",
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
label: 'Two',
|
|
65
|
+
value: '222',
|
|
66
|
+
buttonProps: {
|
|
67
|
+
'data-tid': "1-1-1",
|
|
68
|
+
arrow: true,
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
];
|
|
72
|
+
|
|
73
|
+
<Switcher
|
|
74
|
+
caption="Switch the switcher"
|
|
75
|
+
items={items}
|
|
76
|
+
value={value}
|
|
77
|
+
onValueChange={setValue}
|
|
78
|
+
/>;
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### Кастомизация items
|
|
82
|
+
Пример с методом `renderItem` для кастомизации `items`:
|
|
83
|
+
|
|
84
|
+
```jsx harmony
|
|
85
|
+
import {Hint, Tooltip} from '@skbkontur/react-ui';
|
|
86
|
+
|
|
87
|
+
const [value, setValue] = React.useState();
|
|
88
|
+
const items = ['One', 'Two', 'Three'];
|
|
89
|
+
|
|
90
|
+
const renderItem = (label, value, buttonProps, renderDefault) => {
|
|
91
|
+
if (value === 'One') {
|
|
92
|
+
return <Hint pos="bottom" text="Подсказка" opened manual>{renderDefault()}</Hint>;
|
|
93
|
+
}
|
|
94
|
+
if (value === 'Three') {
|
|
95
|
+
return (
|
|
96
|
+
<Tooltip pos="right middle" trigger="opened" render={() => 'Тултип'}>
|
|
97
|
+
{renderDefault()}
|
|
98
|
+
</Tooltip>
|
|
99
|
+
);
|
|
100
|
+
}
|
|
101
|
+
return renderDefault();
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
<Switcher
|
|
105
|
+
caption="Switch the switcher"
|
|
106
|
+
items={items}
|
|
107
|
+
value={value}
|
|
108
|
+
onValueChange={setValue}
|
|
109
|
+
renderItem={renderItem}
|
|
110
|
+
/>;
|
|
111
|
+
```
|