@skbkontur/react-ui 5.3.1 → 5.3.2
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 +8 -0
- package/package.json +1 -6
- package/cjs/components/Autocomplete/Autocomplete.md +0 -113
- package/cjs/components/Button/Button.md +0 -261
- package/cjs/components/Calendar/Calendar.md +0 -276
- package/cjs/components/Calendar/CalendarDay.md +0 -70
- package/cjs/components/Center/Center.md +0 -26
- package/cjs/components/Checkbox/Checkbox.md +0 -171
- package/cjs/components/ComboBox/ComboBox.md +0 -574
- package/cjs/components/CurrencyInput/CurrencyInput.md +0 -39
- package/cjs/components/CurrencyLabel/CurrencyLabel.md +0 -29
- package/cjs/components/DateInput/DateInput.md +0 -111
- package/cjs/components/DatePicker/DatePicker.md +0 -368
- package/cjs/components/Dropdown/Dropdown.md +0 -45
- package/cjs/components/DropdownMenu/DropdownMenu.md +0 -290
- package/cjs/components/FileUploader/FileUploader.md +0 -131
- package/cjs/components/FxInput/FxInput.md +0 -31
- package/cjs/components/Gapped/Gapped.md +0 -44
- package/cjs/components/GlobalLoader/GlobalLoader.md +0 -97
- package/cjs/components/Group/Group.md +0 -19
- package/cjs/components/Hint/Hint.md +0 -86
- package/cjs/components/Input/Input.md +0 -86
- package/cjs/components/Kebab/Kebab.md +0 -306
- package/cjs/components/Link/Link.md +0 -182
- package/cjs/components/Loader/Loader.md +0 -33
- package/cjs/components/MaskedInput/MaskedInput.md +0 -114
- package/cjs/components/MenuFooter/MenuFooter.md +0 -27
- package/cjs/components/MenuHeader/MenuHeader.md +0 -35
- package/cjs/components/MenuItem/MenuItem.md +0 -139
- package/cjs/components/MenuSeparator/MenuSeparator.md +0 -14
- package/cjs/components/MiniModal/MiniModal.md +0 -231
- package/cjs/components/Modal/Modal.md +0 -56
- package/cjs/components/Paging/Paging.md +0 -57
- package/cjs/components/PasswordInput/PasswordInput.md +0 -29
- package/cjs/components/Radio/Radio.md +0 -57
- package/cjs/components/RadioGroup/RadioGroup.md +0 -44
- package/cjs/components/ResponsiveLayout/ResponsiveLayout.md +0 -75
- package/cjs/components/ScrollContainer/ScrollContainer.md +0 -224
- package/cjs/components/Select/Select.md +0 -113
- package/cjs/components/SidePage/SidePage.md +0 -65
- package/cjs/components/SingleToast/SingleToast.md +0 -36
- package/cjs/components/Spinner/Spinner.md +0 -36
- package/cjs/components/Sticky/Sticky.md +0 -28
- package/cjs/components/Switcher/Switcher.md +0 -111
- package/cjs/components/Tabs/Tab.md +0 -73
- package/cjs/components/Tabs/Tabs.md +0 -54
- package/cjs/components/Textarea/Textarea.md +0 -58
- package/cjs/components/Toast/Toast.md +0 -69
- package/cjs/components/Toggle/Toggle.md +0 -110
- package/cjs/components/Token/Token.md +0 -48
- package/cjs/components/TokenInput/TokenInput.md +0 -277
- package/cjs/components/Tooltip/Tooltip.md +0 -322
- package/cjs/components/TooltipMenu/TooltipMenu.md +0 -241
- package/cjs/internal/DataTids/DATATIDS.md +0 -12
- package/cjs/internal/DataTids/DataTids.d.ts +0 -12
- package/cjs/internal/DataTids/DataTids.js +0 -50
- package/cjs/internal/DataTids/DataTids.js.map +0 -1
- package/cjs/internal/DataTids/DataTids.styles.d.ts +0 -7
- package/cjs/internal/DataTids/DataTids.styles.js +0 -42
- package/cjs/internal/DataTids/DataTids.styles.js.map +0 -1
- package/cjs/internal/DataTids/componentsDataTids.d.ts +0 -5
- package/cjs/internal/DataTids/componentsDataTids.js +0 -15
- package/cjs/internal/DataTids/componentsDataTids.js.map +0 -1
- package/cjs/internal/ThemePlayground/Playground.md +0 -7
- package/cjs/lib/featureFlagsContext/FEATUREFLAGSCONTEXT.md +0 -64
- package/cjs/lib/locale/LOCALECONTEXT.md +0 -222
- package/cjs/lib/theming/ThemeContext.md +0 -265
- package/components/Autocomplete/Autocomplete.md +0 -113
- package/components/Button/Button.md +0 -261
- package/components/Calendar/Calendar.md +0 -276
- package/components/Calendar/CalendarDay.md +0 -70
- package/components/Center/Center.md +0 -26
- package/components/Checkbox/Checkbox.md +0 -171
- package/components/ComboBox/ComboBox.md +0 -574
- package/components/CurrencyInput/CurrencyInput.md +0 -39
- package/components/CurrencyLabel/CurrencyLabel.md +0 -29
- package/components/DateInput/DateInput.md +0 -111
- package/components/DatePicker/DatePicker.md +0 -368
- package/components/Dropdown/Dropdown.md +0 -45
- package/components/DropdownMenu/DropdownMenu.md +0 -290
- package/components/FileUploader/FileUploader.md +0 -131
- package/components/FxInput/FxInput.md +0 -31
- package/components/Gapped/Gapped.md +0 -44
- package/components/GlobalLoader/GlobalLoader.md +0 -97
- package/components/Group/Group.md +0 -19
- package/components/Hint/Hint.md +0 -86
- package/components/Input/Input.md +0 -86
- package/components/Kebab/Kebab.md +0 -306
- package/components/Link/Link.md +0 -182
- package/components/Loader/Loader.md +0 -33
- package/components/MaskedInput/MaskedInput.md +0 -114
- package/components/MenuFooter/MenuFooter.md +0 -27
- package/components/MenuHeader/MenuHeader.md +0 -35
- package/components/MenuItem/MenuItem.md +0 -139
- package/components/MenuSeparator/MenuSeparator.md +0 -14
- package/components/MiniModal/MiniModal.md +0 -231
- package/components/Modal/Modal.md +0 -56
- package/components/Paging/Paging.md +0 -57
- package/components/PasswordInput/PasswordInput.md +0 -29
- package/components/Radio/Radio.md +0 -57
- package/components/RadioGroup/RadioGroup.md +0 -44
- package/components/ResponsiveLayout/ResponsiveLayout.md +0 -75
- package/components/ScrollContainer/ScrollContainer.md +0 -224
- package/components/Select/Select.md +0 -113
- package/components/SidePage/SidePage.md +0 -65
- package/components/SingleToast/SingleToast.md +0 -36
- package/components/Spinner/Spinner.md +0 -36
- package/components/Sticky/Sticky.md +0 -28
- package/components/Switcher/Switcher.md +0 -111
- package/components/Tabs/Tab.md +0 -73
- package/components/Tabs/Tabs.md +0 -54
- package/components/Textarea/Textarea.md +0 -58
- package/components/Toast/Toast.md +0 -69
- package/components/Toggle/Toggle.md +0 -110
- package/components/Token/Token.md +0 -48
- package/components/TokenInput/TokenInput.md +0 -277
- package/components/Tooltip/Tooltip.md +0 -322
- package/components/TooltipMenu/TooltipMenu.md +0 -241
- package/internal/DataTids/DATATIDS.md +0 -12
- package/internal/DataTids/DataTids/DataTids.js +0 -69
- package/internal/DataTids/DataTids/DataTids.js.map +0 -1
- package/internal/DataTids/DataTids/package.json +0 -6
- package/internal/DataTids/DataTids.d.ts +0 -12
- package/internal/DataTids/DataTids.styles/DataTids.styles.js +0 -20
- package/internal/DataTids/DataTids.styles/DataTids.styles.js.map +0 -1
- package/internal/DataTids/DataTids.styles/package.json +0 -6
- package/internal/DataTids/DataTids.styles.d.ts +0 -7
- package/internal/DataTids/componentsDataTids/componentsDataTids.js +0 -12
- package/internal/DataTids/componentsDataTids/componentsDataTids.js.map +0 -1
- package/internal/DataTids/componentsDataTids/package.json +0 -6
- package/internal/DataTids/componentsDataTids.d.ts +0 -5
- package/internal/ThemePlayground/Playground.md +0 -7
- package/lib/featureFlagsContext/FEATUREFLAGSCONTEXT.md +0 -64
- package/lib/locale/LOCALECONTEXT.md +0 -222
- package/lib/theming/ThemeContext.md +0 -265
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
### Базовый пример
|
|
2
|
-
```jsx harmony
|
|
3
|
-
<PasswordInput />
|
|
4
|
-
```
|
|
5
|
-
|
|
6
|
-
### Отслеживание нажатия CapsLock
|
|
7
|
-
|
|
8
|
-
```jsx harmony
|
|
9
|
-
<PasswordInput detectCapsLock />
|
|
10
|
-
```
|
|
11
|
-
|
|
12
|
-
### Локали по умолчанию
|
|
13
|
-
|
|
14
|
-
```typescript static
|
|
15
|
-
interface PasswordInputLocale {
|
|
16
|
-
eyeOpenedAriaLabel?: string;
|
|
17
|
-
eyeClosedAriaLabel?: string;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
const ru_RU = {
|
|
21
|
-
eyeOpenedAriaLabel: 'Скрыть символы пароля',
|
|
22
|
-
eyeClosedAriaLabel: 'Отобразить символы пароля',
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
const en_GB = {
|
|
26
|
-
eyeOpenedAriaLabel: 'Hide password symbols',
|
|
27
|
-
eyeClosedAriaLabel: 'Show password symbols',
|
|
28
|
-
}
|
|
29
|
-
```
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
### Виды радио-кнопок
|
|
2
|
-
|
|
3
|
-
```jsx harmony
|
|
4
|
-
import { Gapped, Radio, RadioGroup } from '@skbkontur/react-ui';
|
|
5
|
-
|
|
6
|
-
const [chosen, setChosen] = React.useState(null);
|
|
7
|
-
|
|
8
|
-
<RadioGroup onValueChange={(value) => setChosen(value)}>
|
|
9
|
-
<Gapped gap={3} vertical>
|
|
10
|
-
<Radio value={1}>
|
|
11
|
-
Обычная радио-кнопка
|
|
12
|
-
</Radio>
|
|
13
|
-
<Radio value={2} disabled>
|
|
14
|
-
Отключенная радио-кнопка
|
|
15
|
-
</Radio>
|
|
16
|
-
<Radio value={3} checked={!chosen}>
|
|
17
|
-
Радио-кнопка отмеченная по умолчанию
|
|
18
|
-
</Radio>
|
|
19
|
-
<Radio value={4} focused>
|
|
20
|
-
Радио-кнопка в состоянии <b>focused</b> (меняется только обводка)
|
|
21
|
-
</Radio>
|
|
22
|
-
<Radio value={5} error>
|
|
23
|
-
Радио-кнопка в состоянии <b>error</b>
|
|
24
|
-
</Radio>
|
|
25
|
-
<Radio value={6} warning>
|
|
26
|
-
Радио-кнопка в состоянии <b>warning</b>
|
|
27
|
-
</Radio>
|
|
28
|
-
</Gapped>
|
|
29
|
-
</RadioGroup>
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
### Состояния
|
|
33
|
-
Радио-кнопки могут иметь сразу несколько состояний.
|
|
34
|
-
|
|
35
|
-
```jsx harmony
|
|
36
|
-
<Radio disabled checked warning>
|
|
37
|
-
Отключенная, отмеченная радио-кнопка в состоянии <b>warning</b>
|
|
38
|
-
</Radio>
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
### Размер
|
|
42
|
-
|
|
43
|
-
```jsx harmony
|
|
44
|
-
import { Gapped } from '@skbkontur/react-ui';
|
|
45
|
-
|
|
46
|
-
<Gapped vertical>
|
|
47
|
-
<Radio size="small" value="value" >
|
|
48
|
-
Маленький
|
|
49
|
-
</Radio>
|
|
50
|
-
<Radio size="medium" value="value" >
|
|
51
|
-
Средний
|
|
52
|
-
</Radio>
|
|
53
|
-
<Radio size="large" value="value" >
|
|
54
|
-
Большой
|
|
55
|
-
</Radio>
|
|
56
|
-
</Gapped>
|
|
57
|
-
```
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
### Базовый пример
|
|
2
|
-
```jsx harmony
|
|
3
|
-
import { Gapped, Radio } from '@skbkontur/react-ui';
|
|
4
|
-
|
|
5
|
-
let items = ['One', 'Two', 'Three', 'Four'];
|
|
6
|
-
|
|
7
|
-
let simpleRadioGroup = (
|
|
8
|
-
<div>
|
|
9
|
-
<h2>Numbers</h2>
|
|
10
|
-
<RadioGroup name="number-simple" items={items} defaultValue="One" />
|
|
11
|
-
</div>
|
|
12
|
-
);
|
|
13
|
-
|
|
14
|
-
let complexRadioGroup = (
|
|
15
|
-
<div>
|
|
16
|
-
<h2>Numbers</h2>
|
|
17
|
-
<RadioGroup name="number-complex" defaultValue="3">
|
|
18
|
-
<Gapped gap={40}>
|
|
19
|
-
<Gapped vertical gap={0}>
|
|
20
|
-
<b>Odd</b>
|
|
21
|
-
<Radio value="1">One</Radio>
|
|
22
|
-
<Radio value="3">Three</Radio>
|
|
23
|
-
<Radio value="5" disabled>
|
|
24
|
-
Five
|
|
25
|
-
</Radio>
|
|
26
|
-
<Radio value="7">Seven</Radio>
|
|
27
|
-
</Gapped>
|
|
28
|
-
<Gapped vertical gap={0}>
|
|
29
|
-
<b>Even</b>
|
|
30
|
-
<Radio value="2">Two</Radio>
|
|
31
|
-
<Radio value="4">Four</Radio>
|
|
32
|
-
<Radio value="6">Six</Radio>
|
|
33
|
-
<Radio value="8">Eight</Radio>
|
|
34
|
-
</Gapped>
|
|
35
|
-
</Gapped>
|
|
36
|
-
</RadioGroup>
|
|
37
|
-
</div>
|
|
38
|
-
);
|
|
39
|
-
|
|
40
|
-
<div>
|
|
41
|
-
{simpleRadioGroup}
|
|
42
|
-
{complexRadioGroup}
|
|
43
|
-
</div>;
|
|
44
|
-
```
|
|
@@ -1,75 +0,0 @@
|
|
|
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).
|
|
@@ -1,224 +0,0 @@
|
|
|
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
|
-
```
|
|
@@ -1,113 +0,0 @@
|
|
|
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
|
-
```
|
|
@@ -1,65 +0,0 @@
|
|
|
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
|
-
```
|
|
@@ -1,36 +0,0 @@
|
|
|
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
|
-
```
|
|
@@ -1,36 +0,0 @@
|
|
|
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
|
-
```
|