@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,290 +0,0 @@
|
|
|
1
|
-
### Базовый пример меню
|
|
2
|
-
|
|
3
|
-
```jsx harmony
|
|
4
|
-
import { Button, MenuHeader, MenuItem, MenuSeparator } from '@skbkontur/react-ui';
|
|
5
|
-
|
|
6
|
-
<DropdownMenu caption={<Button use="primary">Открыть меню</Button>}>
|
|
7
|
-
<MenuHeader>Заголовок меню</MenuHeader>
|
|
8
|
-
<MenuSeparator />
|
|
9
|
-
<MenuItem>Раз</MenuItem>
|
|
10
|
-
<MenuItem>Два</MenuItem>
|
|
11
|
-
<MenuItem>Три</MenuItem>
|
|
12
|
-
<MenuSeparator />
|
|
13
|
-
<MenuItem>Раз</MenuItem>
|
|
14
|
-
<MenuItem>Два</MenuItem>
|
|
15
|
-
<MenuItem>Три</MenuItem>
|
|
16
|
-
</DropdownMenu>;
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
В проп `caption` помимо компонента можно передать функцию, возвращающую компонент, с помощью которой можно управлять текущим состоянием меню.
|
|
20
|
-
|
|
21
|
-
```jsx harmony
|
|
22
|
-
import { Button, MenuHeader, MenuItem, MenuSeparator } from '@skbkontur/react-ui';
|
|
23
|
-
|
|
24
|
-
<DropdownMenu caption={({ opened, openMenu, closeMenu, toggleMenu }) => {
|
|
25
|
-
return (
|
|
26
|
-
<>
|
|
27
|
-
<p>Сейчас меню { opened ? 'окрыто' : 'закрыто' }</p>
|
|
28
|
-
<Button onClick={toggleMenu}>Переключить меню</Button>
|
|
29
|
-
<Button onClick={openMenu}>Открыть меню</Button>
|
|
30
|
-
<Button onClick={closeMenu}>Закрыть меню</Button>
|
|
31
|
-
</>
|
|
32
|
-
)
|
|
33
|
-
}}>
|
|
34
|
-
<MenuHeader>Заголовок меню</MenuHeader>
|
|
35
|
-
<MenuSeparator />
|
|
36
|
-
<MenuItem>Раз</MenuItem>
|
|
37
|
-
<MenuItem>Два</MenuItem>
|
|
38
|
-
<MenuItem>Три</MenuItem>
|
|
39
|
-
<MenuSeparator />
|
|
40
|
-
<MenuItem>Раз</MenuItem>
|
|
41
|
-
<MenuItem>Два</MenuItem>
|
|
42
|
-
<MenuItem>Три</MenuItem>
|
|
43
|
-
</DropdownMenu>;
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
### Ширина
|
|
47
|
-
|
|
48
|
-
```jsx harmony
|
|
49
|
-
import { Button, MenuHeader, MenuItem, MenuSeparator } from '@skbkontur/react-ui';
|
|
50
|
-
|
|
51
|
-
<DropdownMenu caption={<Button use="primary">Открыть меню c заданной шириной</Button>} menuWidth={350}>
|
|
52
|
-
<MenuHeader>Заголовок меню</MenuHeader>
|
|
53
|
-
<MenuSeparator />
|
|
54
|
-
<MenuItem>Раз</MenuItem>
|
|
55
|
-
<MenuItem>Два</MenuItem>
|
|
56
|
-
<MenuItem>Три</MenuItem>
|
|
57
|
-
<MenuSeparator />
|
|
58
|
-
<MenuItem>Раз</MenuItem>
|
|
59
|
-
<MenuItem>Два</MenuItem>
|
|
60
|
-
<MenuItem>Три</MenuItem>
|
|
61
|
-
</DropdownMenu>;
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
### Максимальная высота
|
|
65
|
-
|
|
66
|
-
```jsx harmony
|
|
67
|
-
import { Button, MenuHeader, MenuItem, MenuSeparator } from '@skbkontur/react-ui';
|
|
68
|
-
|
|
69
|
-
<DropdownMenu caption={<Button use="primary">Открыть меню c заданной высотой</Button>} menuMaxHeight={150}>
|
|
70
|
-
<MenuHeader>Заголовок меню</MenuHeader>
|
|
71
|
-
<MenuSeparator />
|
|
72
|
-
<MenuItem>Раз</MenuItem>
|
|
73
|
-
<MenuItem>Два</MenuItem>
|
|
74
|
-
<MenuItem>Три</MenuItem>
|
|
75
|
-
<MenuSeparator />
|
|
76
|
-
<MenuItem>Раз</MenuItem>
|
|
77
|
-
<MenuItem>Два</MenuItem>
|
|
78
|
-
<MenuItem>Три</MenuItem>
|
|
79
|
-
</DropdownMenu>;
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
### Выпадашка слева по центру
|
|
83
|
-
|
|
84
|
-
```jsx harmony
|
|
85
|
-
import { Button, MenuHeader, MenuItem, MenuSeparator } from '@skbkontur/react-ui';
|
|
86
|
-
|
|
87
|
-
<DropdownMenu positions={["left middle"]} caption={<Button use="primary">Открыть меню</Button>}>
|
|
88
|
-
<MenuHeader>Заголовок меню</MenuHeader>
|
|
89
|
-
<MenuSeparator />
|
|
90
|
-
<MenuItem>Раз</MenuItem>
|
|
91
|
-
<MenuItem>Два</MenuItem>
|
|
92
|
-
<MenuItem>Три</MenuItem>
|
|
93
|
-
<MenuSeparator />
|
|
94
|
-
<MenuItem>Раз</MenuItem>
|
|
95
|
-
<MenuItem>Два</MenuItem>
|
|
96
|
-
<MenuItem>Три</MenuItem>
|
|
97
|
-
</DropdownMenu>;
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
### Меню c шапкой и подвалом
|
|
101
|
-
|
|
102
|
-
```jsx harmony
|
|
103
|
-
import { Button, MenuHeader, MenuItem, MenuSeparator } from '@skbkontur/react-ui';
|
|
104
|
-
|
|
105
|
-
<DropdownMenu
|
|
106
|
-
header={<p>Это шапка в виде обычного текста</p>}
|
|
107
|
-
footer={<Button>А это подвал в виде кнопки</Button>}
|
|
108
|
-
caption={<Button use="primary">Открыть меню</Button>}
|
|
109
|
-
>
|
|
110
|
-
<MenuItem>Раз</MenuItem>
|
|
111
|
-
<MenuItem>Два</MenuItem>
|
|
112
|
-
<MenuItem>Три</MenuItem>
|
|
113
|
-
</DropdownMenu>;
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
### Иконка и автовыравнивание текста
|
|
117
|
-
|
|
118
|
-
```jsx harmony
|
|
119
|
-
import { Button, MenuHeader, MenuItem, MenuSeparator, DropdownMenu } from '@skbkontur/react-ui';
|
|
120
|
-
import { CheckAIcon16Regular } from '@skbkontur/icons/icons/CheckAIcon/CheckAIcon16Regular';;
|
|
121
|
-
|
|
122
|
-
<DropdownMenu caption={<Button use="primary">Открыть меню</Button>}>
|
|
123
|
-
<MenuHeader>MenuHeader</MenuHeader>
|
|
124
|
-
<MenuItem icon={<CheckAIcon16Regular />}>MenuItem1</MenuItem>
|
|
125
|
-
<MenuItem icon={<CheckAIcon16Regular />}>MenuItem2</MenuItem>
|
|
126
|
-
<MenuItem>MenuItem3</MenuItem>
|
|
127
|
-
</DropdownMenu>;
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
### Иконка и отключенное автовыравнивание текста
|
|
131
|
-
|
|
132
|
-
```jsx harmony
|
|
133
|
-
import { Button, MenuHeader, MenuItem, MenuSeparator, DropdownMenu } from '@skbkontur/react-ui';
|
|
134
|
-
import { CheckAIcon16Regular } from '@skbkontur/icons/icons/CheckAIcon/CheckAIcon16Regular';;
|
|
135
|
-
|
|
136
|
-
<DropdownMenu preventIconsOffset caption={<Button use="primary">Открыть меню</Button>}>
|
|
137
|
-
<MenuHeader>MenuHeader</MenuHeader>
|
|
138
|
-
<MenuItem icon={<CheckAIcon16Regular />}>MenuItem1</MenuItem>
|
|
139
|
-
<MenuItem icon={<CheckAIcon16Regular />}>MenuItem2</MenuItem>
|
|
140
|
-
<MenuItem>MenuItem3</MenuItem>
|
|
141
|
-
</DropdownMenu>
|
|
142
|
-
```
|
|
143
|
-
|
|
144
|
-
### Отключенная анимация
|
|
145
|
-
|
|
146
|
-
```jsx harmony
|
|
147
|
-
import { Button, MenuHeader, MenuItem, MenuSeparator } from '@skbkontur/react-ui';
|
|
148
|
-
|
|
149
|
-
<DropdownMenu
|
|
150
|
-
disableAnimations
|
|
151
|
-
caption={<Button use="primary">Открыть меню без анимации</Button>}
|
|
152
|
-
>
|
|
153
|
-
<MenuHeader>Заголовок меню</MenuHeader>
|
|
154
|
-
<MenuSeparator />
|
|
155
|
-
<MenuItem>Раз</MenuItem>
|
|
156
|
-
<MenuItem>Два</MenuItem>
|
|
157
|
-
<MenuItem>Три</MenuItem>
|
|
158
|
-
</DropdownMenu>;
|
|
159
|
-
```
|
|
160
|
-
|
|
161
|
-
### Подпись
|
|
162
|
-
В `caption` можно передать любой элемент.
|
|
163
|
-
|
|
164
|
-
```jsx harmony
|
|
165
|
-
import { UiMenuBars3HIcon16Regular } from '@skbkontur/icons/icons/UiMenuBars3HIcon/UiMenuBars3HIcon16Regular';
|
|
166
|
-
import { MenuItem } from '@skbkontur/react-ui';
|
|
167
|
-
|
|
168
|
-
<DropdownMenu
|
|
169
|
-
caption={
|
|
170
|
-
<span style={{ display: 'inline-block' }} tabIndex="0">
|
|
171
|
-
<UiMenuBars3HIcon16Regular size={32} />
|
|
172
|
-
</span>
|
|
173
|
-
}
|
|
174
|
-
menuWidth="300px"
|
|
175
|
-
>
|
|
176
|
-
<MenuItem>Раз</MenuItem>
|
|
177
|
-
<MenuItem>Два</MenuItem>
|
|
178
|
-
<MenuItem>Три</MenuItem>
|
|
179
|
-
</DropdownMenu>;
|
|
180
|
-
```
|
|
181
|
-
|
|
182
|
-
### Чекбокс внутри MenuItem
|
|
183
|
-
|
|
184
|
-
```jsx harmony
|
|
185
|
-
import { MenuItem, Checkbox, Button, ThemeContext, ThemeFactory } from '@skbkontur/react-ui';
|
|
186
|
-
|
|
187
|
-
const [checked, setChecked] = React.useState(false);
|
|
188
|
-
|
|
189
|
-
let close;
|
|
190
|
-
|
|
191
|
-
const renderCaption = ({ openMenu, closeMenu }) => {
|
|
192
|
-
close = closeMenu;
|
|
193
|
-
return (
|
|
194
|
-
<Button onClick={openMenu} use="primary">
|
|
195
|
-
Открыть меню
|
|
196
|
-
</Button>
|
|
197
|
-
);
|
|
198
|
-
};
|
|
199
|
-
|
|
200
|
-
<DropdownMenu caption={renderCaption}>
|
|
201
|
-
<MenuItem onClick={(e) => e.preventDefault()}>Просто пункт</MenuItem>
|
|
202
|
-
<ThemeContext.Provider value={ThemeFactory.create({ menuItemHoverBg: 'initial' })}>
|
|
203
|
-
<MenuItem
|
|
204
|
-
onClick={(e) => {
|
|
205
|
-
e.preventDefault();
|
|
206
|
-
setChecked(!checked);
|
|
207
|
-
}}
|
|
208
|
-
>
|
|
209
|
-
<Checkbox checked={checked}>с чекбоксом</Checkbox>
|
|
210
|
-
</MenuItem>
|
|
211
|
-
</ThemeContext.Provider>
|
|
212
|
-
<MenuItem
|
|
213
|
-
onClick={(e) => {
|
|
214
|
-
e.preventDefault();
|
|
215
|
-
close();
|
|
216
|
-
}}
|
|
217
|
-
>
|
|
218
|
-
Закрыть
|
|
219
|
-
</MenuItem>
|
|
220
|
-
</DropdownMenu>
|
|
221
|
-
```
|
|
222
|
-
|
|
223
|
-
### Условный рендер элементов меню
|
|
224
|
-
(с сохранением поведения [MenuItem](#/Components/MenuItem))
|
|
225
|
-
|
|
226
|
-
```jsx harmony
|
|
227
|
-
import {Button, MenuItem, Gapped, MenuSeparator} from '@skbkontur/react-ui';
|
|
228
|
-
|
|
229
|
-
const [showItems, setShowItems] = React.useState(false);
|
|
230
|
-
|
|
231
|
-
const hiddenItems = [
|
|
232
|
-
<MenuSeparator />,
|
|
233
|
-
<MenuItem>А я скрываюсь</MenuItem>,
|
|
234
|
-
<MenuItem>И я</MenuItem>,
|
|
235
|
-
<MenuItem>Я с вами</MenuItem>,
|
|
236
|
-
];
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
<Gapped>
|
|
240
|
-
<Button onClick={() => setShowItems(!showItems)}>
|
|
241
|
-
{showItems ? 'Спрятать' : 'Показать'} элементы
|
|
242
|
-
</Button>
|
|
243
|
-
|
|
244
|
-
<DropdownMenu caption={<Button use="primary">Открыть меню</Button>}>
|
|
245
|
-
<MenuItem>Меня видно всегда</MenuItem>
|
|
246
|
-
<MenuItem>Меня тоже</MenuItem>
|
|
247
|
-
<MenuItem>Ага, и меня!</MenuItem>
|
|
248
|
-
{showItems && hiddenItems}
|
|
249
|
-
</DropdownMenu>
|
|
250
|
-
</Gapped>
|
|
251
|
-
```
|
|
252
|
-
|
|
253
|
-
С использованием фиче-флага menuItemsAtAnyLevel. Mожно использовать различные обертки для пунктов меню.
|
|
254
|
-
|
|
255
|
-
```jsx harmony
|
|
256
|
-
import {
|
|
257
|
-
DropdownMenu,
|
|
258
|
-
Button,
|
|
259
|
-
MenuHeader,
|
|
260
|
-
MenuItem,
|
|
261
|
-
MenuSeparator,
|
|
262
|
-
ReactUIFeatureFlagsContext,
|
|
263
|
-
Gapped
|
|
264
|
-
} from '@skbkontur/react-ui';
|
|
265
|
-
|
|
266
|
-
const groupedMenuItems = (
|
|
267
|
-
<div>
|
|
268
|
-
<MenuItem>MenuItem1</MenuItem>
|
|
269
|
-
<MenuItem>MenuItem2</MenuItem>
|
|
270
|
-
<MenuItem isNotSelectable>Not Selectable</MenuItem>
|
|
271
|
-
</div>
|
|
272
|
-
);
|
|
273
|
-
|
|
274
|
-
<Gapped>
|
|
275
|
-
<ReactUIFeatureFlagsContext.Provider value={{ menuItemsAtAnyLevel: true }}>
|
|
276
|
-
<DropdownMenu caption={<Button use="primary">Открыть меню</Button>}>
|
|
277
|
-
<>
|
|
278
|
-
<MenuHeader>Заголовок меню</MenuHeader>
|
|
279
|
-
<MenuSeparator />
|
|
280
|
-
<div>
|
|
281
|
-
{groupedMenuItems}
|
|
282
|
-
</div>
|
|
283
|
-
</>
|
|
284
|
-
<MenuItem>MenuItem3</MenuItem>
|
|
285
|
-
</DropdownMenu>
|
|
286
|
-
</ReactUIFeatureFlagsContext.Provider>
|
|
287
|
-
</Gapped>;
|
|
288
|
-
```
|
|
289
|
-
|
|
290
|
-
|
|
@@ -1,131 +0,0 @@
|
|
|
1
|
-
Контрол загрузки файлов.
|
|
2
|
-
Можно использовать для синхронной отправки данных, например, в форме.
|
|
3
|
-
Или же можно использовать в асинхронном режиме.
|
|
4
|
-
|
|
5
|
-
### Синхронный контрол
|
|
6
|
-
```jsx harmony
|
|
7
|
-
import { FileUploader } from '@skbkontur/react-ui';
|
|
8
|
-
|
|
9
|
-
<FileUploader />
|
|
10
|
-
```
|
|
11
|
-
|
|
12
|
-
### Асинхронный контрол
|
|
13
|
-
```jsx harmony
|
|
14
|
-
import { FileUploader } from '@skbkontur/react-ui';
|
|
15
|
-
|
|
16
|
-
const request = () => Promise.resolve();
|
|
17
|
-
|
|
18
|
-
<FileUploader request={request} />
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
### Multiple контрол
|
|
22
|
-
```jsx harmony
|
|
23
|
-
import { FileUploader } from '@skbkontur/react-ui';
|
|
24
|
-
|
|
25
|
-
const request = () => Promise.reject();
|
|
26
|
-
|
|
27
|
-
<FileUploader request={request} multiple />
|
|
28
|
-
```
|
|
29
|
-
|
|
30
|
-
### Файлы по умолчанию
|
|
31
|
-
```jsx harmony
|
|
32
|
-
import { FileUploader } from '@skbkontur/react-ui';
|
|
33
|
-
|
|
34
|
-
function createFile(filename, content) {
|
|
35
|
-
return new File(['content'], filename, { type: 'text/plain' });
|
|
36
|
-
};
|
|
37
|
-
|
|
38
|
-
const initialFiles = [createFile('test1.txt'), createFile('test2.txt')];
|
|
39
|
-
<FileUploader multiple initialFiles={initialFiles} />
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
### Файлы по умолчанию с кастомизацией рендеринга
|
|
43
|
-
```jsx harmony
|
|
44
|
-
import { cloneElement } from 'react';
|
|
45
|
-
import { FileUploader } from '@skbkontur/react-ui';
|
|
46
|
-
|
|
47
|
-
function createFile(filename, content) {
|
|
48
|
-
return new File(['content'], filename, { type: 'text/plain' });
|
|
49
|
-
};
|
|
50
|
-
|
|
51
|
-
const initialFiles = [createFile('test1.txt'), createFile('test2.txt')];
|
|
52
|
-
<FileUploader
|
|
53
|
-
multiple
|
|
54
|
-
initialFiles={initialFiles}
|
|
55
|
-
renderFile={(file, fileNode) => cloneElement(fileNode, { showSize: false })}
|
|
56
|
-
/>
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
### Использование `accept`
|
|
60
|
-
```jsx harmony
|
|
61
|
-
import { FileUploader } from '@skbkontur/react-ui';
|
|
62
|
-
|
|
63
|
-
<FileUploader multiple accept="image/*" />
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
### Валидация файла в списке
|
|
67
|
-
```jsx harmony
|
|
68
|
-
import { FileUploader } from '@skbkontur/react-ui';
|
|
69
|
-
|
|
70
|
-
<FileUploader
|
|
71
|
-
multiple
|
|
72
|
-
validateBeforeUpload={({ originalFile }) => {
|
|
73
|
-
return Promise.resolve(`У файла ${originalFile.name} неверный формат`);
|
|
74
|
-
}}
|
|
75
|
-
/>;
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
### Валидация контрола
|
|
79
|
-
```jsx harmony
|
|
80
|
-
import { FileUploader } from '@skbkontur/react-ui';
|
|
81
|
-
|
|
82
|
-
<FileUploader multiple error />
|
|
83
|
-
```
|
|
84
|
-
|
|
85
|
-
Ручное удаление файлов
|
|
86
|
-
|
|
87
|
-
В критичных случаях, если нужно удалить файлы из контрола вручную, то это можно сделать, используя метод `removeFile` из `ref`.
|
|
88
|
-
Обратите внимание, что при вызове `removeFile` вызываются коллбэки `onRemove` и `onValueChange`.
|
|
89
|
-
|
|
90
|
-
```jsx harmony
|
|
91
|
-
import { FileUploader, Button } from '@skbkontur/react-ui';
|
|
92
|
-
|
|
93
|
-
const fileUploaderRef = React.useRef(null);
|
|
94
|
-
const [fileList, setFileList] = React.useState([]);
|
|
95
|
-
|
|
96
|
-
<div style={{ display: 'inline-grid', gap: '10px' }}>
|
|
97
|
-
<FileUploader ref={fileUploaderRef} multiple onValueChange={(files) => setFileList(files)} />
|
|
98
|
-
{fileList.map((file) => {
|
|
99
|
-
return (
|
|
100
|
-
<Button key={file.id} onClick={() => fileUploaderRef.current.removeFile(file.id)}>
|
|
101
|
-
Delete file {file.originalFile.name}
|
|
102
|
-
</Button>
|
|
103
|
-
);
|
|
104
|
-
})}
|
|
105
|
-
</div>
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
### Локали по умолчанию
|
|
109
|
-
|
|
110
|
-
```typescript static
|
|
111
|
-
interface FileUploaderLocale {
|
|
112
|
-
chooseFile: string;
|
|
113
|
-
choosedFile: string;
|
|
114
|
-
orDragHere: string;
|
|
115
|
-
requestErrorText: string;
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
const ru_RU = {
|
|
119
|
-
chooseFile: 'Выберите файл',
|
|
120
|
-
choosedFile: 'Выбран файл',
|
|
121
|
-
orDragHere: 'или перетащите сюда',
|
|
122
|
-
requestErrorText: 'Файл не удалось загрузить на сервер, повторите попытку позже',
|
|
123
|
-
};
|
|
124
|
-
|
|
125
|
-
const en_GB = {
|
|
126
|
-
chooseFile: 'Select a file',
|
|
127
|
-
choosedFile: 'File selected',
|
|
128
|
-
orDragHere: 'or drag here',
|
|
129
|
-
requestErrorText: 'The file could not be uploaded to the server, please try again later',
|
|
130
|
-
};
|
|
131
|
-
```
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
### Базовый пример
|
|
2
|
-
```jsx harmony
|
|
3
|
-
const [auto, setAuto] = React.useState(false);
|
|
4
|
-
const [value, setValue] = React.useState();
|
|
5
|
-
|
|
6
|
-
function handleValueChange(value) {
|
|
7
|
-
setAuto(false);
|
|
8
|
-
setValue(value);
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
function handleRestore() {
|
|
12
|
-
setAuto(true);
|
|
13
|
-
setValue('auto');
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
<FxInput auto={auto} value={value} onValueChange={handleValueChange} onRestore={handleRestore} />;
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
### Очистка значения
|
|
20
|
-
Очистить значение в `FxInput`'е можно с помощью пустой строки или `undefined`
|
|
21
|
-
```jsx harmony
|
|
22
|
-
import { Group, Button } from '@skbkontur/react-ui';
|
|
23
|
-
|
|
24
|
-
const [value, setValue] = React.useState(12345);
|
|
25
|
-
|
|
26
|
-
<Group>
|
|
27
|
-
<FxInput value={value} onValueChange={setValue} />
|
|
28
|
-
<Button onClick={() => setValue(undefined)}>Undefined</Button>
|
|
29
|
-
<Button onClick={() => setValue('')}>Пустая строка</Button>
|
|
30
|
-
</Group>
|
|
31
|
-
```
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
### Вывод элементов с горизонтальным расположением
|
|
2
|
-
|
|
3
|
-
```jsx harmony
|
|
4
|
-
import { Button } from '@skbkontur/react-ui';
|
|
5
|
-
|
|
6
|
-
<Gapped gap={20}>
|
|
7
|
-
<Button use="primary">Сохранить</Button>
|
|
8
|
-
<Button>Отмена</Button>
|
|
9
|
-
</Gapped>;
|
|
10
|
-
```
|
|
11
|
-
|
|
12
|
-
### Вертикальное расположение
|
|
13
|
-
|
|
14
|
-
```jsx harmony
|
|
15
|
-
import { Checkbox } from '@skbkontur/react-ui';
|
|
16
|
-
|
|
17
|
-
<Gapped vertical gap={20}>
|
|
18
|
-
<Checkbox checked>Write todos</Checkbox>
|
|
19
|
-
<Checkbox initialIndeterminate>Work in progress</Checkbox>
|
|
20
|
-
<Checkbox>Make things done</Checkbox>
|
|
21
|
-
</Gapped>;
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
### Wrap
|
|
25
|
-
По умолчанию `Gapped` выстраивает элементы в одну строчку, но с помощью свойства `wrap` можно включить перенос элементов на новую строку.
|
|
26
|
-
При этом между строчками будет отступ равный значению свойста `gap`
|
|
27
|
-
В таком случае из-за особенности верстки `Gapped` может перекрывать элементы расположенные сверху-слева.
|
|
28
|
-
|
|
29
|
-
```jsx harmony
|
|
30
|
-
import { Button, Checkbox, Toggle } from '@skbkontur/react-ui';
|
|
31
|
-
|
|
32
|
-
<>
|
|
33
|
-
{"U Can't Touch This! => "}
|
|
34
|
-
<Toggle />
|
|
35
|
-
|
|
36
|
-
<div style={{ paddingTop: '10px', position: 'relative', width: '250px' }}>
|
|
37
|
-
<Gapped wrap gap={50}>
|
|
38
|
-
<Button use="primary">Сохранить</Button>
|
|
39
|
-
<Button>Отмена</Button>
|
|
40
|
-
<Checkbox>Я не робот</Checkbox>
|
|
41
|
-
</Gapped>
|
|
42
|
-
</div>
|
|
43
|
-
</>;
|
|
44
|
-
```
|
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
Индикатор обмена данными с сервером.
|
|
2
|
-
|
|
3
|
-
Глобальный Лоадер может быть только один в приложении. Поэтому, каждый новый экземпляр компонента
|
|
4
|
-
"убивает" предыдущий
|
|
5
|
-
экземпляр, и начинает перехватывать статические методы.
|
|
6
|
-
|
|
7
|
-
Предполагается монтирование компонента в единственном месте. И управление им через статические методы, либо через пропы.
|
|
8
|
-
|
|
9
|
-
### Все статические методы
|
|
10
|
-
```jsx harmony
|
|
11
|
-
import { Button, Gapped } from '@skbkontur/react-ui';
|
|
12
|
-
|
|
13
|
-
<Gapped>
|
|
14
|
-
<Button onClick={GlobalLoader.start} use="primary">start</Button>
|
|
15
|
-
<Button onClick={GlobalLoader.done} use="success">done</Button>
|
|
16
|
-
<Button onClick={GlobalLoader.reject} use="danger">reject</Button>
|
|
17
|
-
<Button onClick={GlobalLoader.accept} use="pay">accept</Button>
|
|
18
|
-
</Gapped>
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
### Монтирование и кастомизация
|
|
22
|
-
```jsx harmony
|
|
23
|
-
import { Button, Toggle, Gapped, GlobalLoader, ThemeContext, ThemeFactory } from '@skbkontur/react-ui';
|
|
24
|
-
|
|
25
|
-
const myTheme = ThemeFactory.create({ globalLoaderColor: 'red' });
|
|
26
|
-
|
|
27
|
-
const [manually, setManually] = React.useState(false);
|
|
28
|
-
const [active, setActive] = React.useState(false);
|
|
29
|
-
const [error, setError] = React.useState(false);
|
|
30
|
-
|
|
31
|
-
const reset = () => {
|
|
32
|
-
if (manually) {
|
|
33
|
-
setManually(false);
|
|
34
|
-
setError(false);
|
|
35
|
-
setActive(false);
|
|
36
|
-
} else {
|
|
37
|
-
setManually(true);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
<Gapped vertical>
|
|
42
|
-
<Toggle checked={manually} onValueChange={reset}>
|
|
43
|
-
Управление пропами
|
|
44
|
-
</Toggle>
|
|
45
|
-
<Toggle checked={active} onValueChange={setActive} disabled={!manually}>
|
|
46
|
-
<code>active</code>
|
|
47
|
-
</Toggle>
|
|
48
|
-
<Toggle checked={error} onValueChange={setError} disabled={!manually}>
|
|
49
|
-
<code>rejected</code>
|
|
50
|
-
</Toggle>
|
|
51
|
-
|
|
52
|
-
<ThemeContext.Provider value={myTheme}>
|
|
53
|
-
<GlobalLoader expectedResponseTime={2000} delayBeforeShow={1000} active={active} rejected={error}
|
|
54
|
-
onStart={() => console.log('start')}
|
|
55
|
-
onDone={() => console.log('done')}
|
|
56
|
-
onReject={() => console.log('reject')}
|
|
57
|
-
onAccept={() => console.log('accept')}
|
|
58
|
-
/>
|
|
59
|
-
</ThemeContext.Provider>
|
|
60
|
-
|
|
61
|
-
</Gapped>
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
### Статические методы в модалке
|
|
66
|
-
```jsx harmony
|
|
67
|
-
import { Button, Gapped, Modal } from '@skbkontur/react-ui';
|
|
68
|
-
|
|
69
|
-
const [opened, setOpened] = React.useState(false);
|
|
70
|
-
|
|
71
|
-
function renderModal() {
|
|
72
|
-
return (
|
|
73
|
-
<Modal onClose={close}>
|
|
74
|
-
<Modal.Header>Заголовок</Modal.Header>
|
|
75
|
-
<Modal.Body>
|
|
76
|
-
<Gapped>
|
|
77
|
-
<Button onClick={GlobalLoader.start} use="primary">start</Button>
|
|
78
|
-
<Button onClick={GlobalLoader.done} use="success">done</Button>
|
|
79
|
-
</Gapped>
|
|
80
|
-
</Modal.Body>
|
|
81
|
-
</Modal>
|
|
82
|
-
);
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
function open() {
|
|
86
|
-
setOpened(true);
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
function close() {
|
|
90
|
-
setOpened(false);
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
<div>
|
|
94
|
-
{opened && renderModal()}
|
|
95
|
-
<Button onClick={open}>Открыть</Button>
|
|
96
|
-
</div>;
|
|
97
|
-
```
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
### Базовый пример
|
|
2
|
-
```jsx harmony
|
|
3
|
-
import { MathFunctionIcon16Regular } from '@skbkontur/icons/icons/MathFunctionIcon/MathFunctionIcon16Regular';
|
|
4
|
-
import { SearchLoupeIcon16Regular } from '@skbkontur/icons/icons/SearchLoupeIcon/SearchLoupeIcon16Regular';
|
|
5
|
-
import { Button, Input } from '@skbkontur/react-ui';
|
|
6
|
-
|
|
7
|
-
const [value, setValue] = React.useState('Foo');
|
|
8
|
-
|
|
9
|
-
<Group width={300}>
|
|
10
|
-
<Button>
|
|
11
|
-
<MathFunctionIcon16Regular />
|
|
12
|
-
</Button>
|
|
13
|
-
<Input value={value} width="100%" onValueChange={setValue} />
|
|
14
|
-
<Button>
|
|
15
|
-
<SearchLoupeIcon16Regular />
|
|
16
|
-
</Button>
|
|
17
|
-
<Button>Bar</Button>
|
|
18
|
-
</Group>;
|
|
19
|
-
```
|