@skbkontur/react-ui 3.8.0 → 3.8.4
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 +54 -2
- package/README.md +1 -1
- package/cjs/components/Center/Center.d.ts +4 -8
- package/cjs/components/Center/Center.js +1 -6
- package/cjs/components/Center/Center.js.map +1 -1
- package/cjs/components/Center/Center.md +24 -3
- package/cjs/components/Checkbox/Checkbox.styles.js +1 -2
- package/cjs/components/Checkbox/Checkbox.styles.js.map +1 -1
- package/cjs/components/CurrencyLabel/CurrencyLabel.js +5 -14
- package/cjs/components/CurrencyLabel/CurrencyLabel.js.map +1 -1
- package/cjs/components/DateInput/DateInput.js +4 -1
- package/cjs/components/DateInput/DateInput.js.map +1 -1
- package/cjs/components/DateInput/DateInput.styles.d.ts +2 -0
- package/cjs/components/DateInput/DateInput.styles.js +13 -1
- package/cjs/components/DateInput/DateInput.styles.js.map +1 -1
- package/cjs/components/DatePicker/DatePicker.d.ts +3 -2
- package/cjs/components/DatePicker/DatePicker.js +12 -5
- package/cjs/components/DatePicker/DatePicker.js.map +1 -1
- package/cjs/components/Dropdown/Dropdown.d.ts +1 -0
- package/cjs/components/Dropdown/Dropdown.js +1 -0
- package/cjs/components/Dropdown/Dropdown.js.map +1 -1
- package/cjs/components/Dropdown/Dropdown.md +0 -1
- package/cjs/components/DropdownMenu/DropdownMenu.d.ts +17 -3
- package/cjs/components/DropdownMenu/DropdownMenu.js +15 -1
- package/cjs/components/DropdownMenu/DropdownMenu.js.map +1 -1
- package/cjs/components/DropdownMenu/DropdownMenu.md +87 -6
- package/cjs/components/Kebab/Kebab.d.ts +5 -2
- package/cjs/components/Kebab/Kebab.js +5 -1
- package/cjs/components/Kebab/Kebab.js.map +1 -1
- package/cjs/components/Kebab/Kebab.md +249 -3
- package/cjs/components/MenuHeader/MenuHeader.d.ts +5 -1
- package/cjs/components/MenuHeader/MenuHeader.js +5 -1
- package/cjs/components/MenuHeader/MenuHeader.js.map +1 -1
- package/cjs/components/MenuHeader/MenuHeader.md +23 -0
- package/cjs/components/MenuItem/MenuItem.d.ts +10 -1
- package/cjs/components/MenuItem/MenuItem.js +11 -1
- package/cjs/components/MenuItem/MenuItem.js.map +1 -1
- package/cjs/components/MenuItem/MenuItem.md +106 -4
- package/cjs/components/MenuSeparator/MenuSeparator.d.ts +3 -1
- package/cjs/components/MenuSeparator/MenuSeparator.js +3 -1
- package/cjs/components/MenuSeparator/MenuSeparator.js.map +1 -1
- package/cjs/components/MenuSeparator/MenuSeparator.md +14 -0
- package/cjs/components/RadioGroup/RadioGroup.d.ts +51 -61
- package/cjs/components/RadioGroup/RadioGroup.js +25 -71
- package/cjs/components/RadioGroup/RadioGroup.js.map +1 -1
- package/cjs/components/Select/Select.js +6 -1
- package/cjs/components/Select/Select.js.map +1 -1
- package/cjs/components/Select/Select.styles.d.ts +1 -0
- package/cjs/components/Select/Select.styles.js +15 -9
- package/cjs/components/Select/Select.styles.js.map +1 -1
- package/cjs/components/Select/selectTheme.js +5 -1
- package/cjs/components/Select/selectTheme.js.map +1 -1
- package/cjs/components/Textarea/Textarea.d.ts +0 -2
- package/cjs/components/Textarea/Textarea.js +6 -3
- package/cjs/components/Textarea/Textarea.js.map +1 -1
- package/cjs/components/Toggle/Toggle.d.ts +47 -1
- package/cjs/components/Toggle/Toggle.js +51 -2
- package/cjs/components/Toggle/Toggle.js.map +1 -1
- package/cjs/components/Toggle/Toggle.md +83 -9
- package/cjs/components/Toggle/Toggle.styles.d.ts +2 -0
- package/cjs/components/Toggle/Toggle.styles.js +14 -9
- package/cjs/components/Toggle/Toggle.styles.js.map +1 -1
- package/cjs/components/TooltipMenu/TooltipMenu.d.ts +26 -8
- package/cjs/components/TooltipMenu/TooltipMenu.js +24 -6
- package/cjs/components/TooltipMenu/TooltipMenu.js.map +1 -1
- package/cjs/components/TooltipMenu/TooltipMenu.md +76 -8
- package/cjs/internal/CommonWrapper/CommonWrapper.d.ts +9 -1
- package/cjs/internal/CommonWrapper/CommonWrapper.js +8 -0
- package/cjs/internal/CommonWrapper/CommonWrapper.js.map +1 -1
- package/cjs/internal/InputLikeText/InputLikeText.d.ts +1 -0
- package/cjs/internal/InputLikeText/InputLikeText.js +7 -3
- package/cjs/internal/InputLikeText/InputLikeText.js.map +1 -1
- package/cjs/internal/InputLikeText/InputLikeText.styles.d.ts +1 -1
- package/cjs/internal/InputLikeText/InputLikeText.styles.js +1 -1
- package/cjs/internal/InputLikeText/InputLikeText.styles.js.map +1 -1
- package/cjs/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
- package/cjs/internal/themes/DefaultTheme.d.ts +4 -0
- package/cjs/internal/themes/DefaultTheme.js +12 -0
- package/cjs/internal/themes/DefaultTheme.js.map +1 -1
- package/components/Center/Center/Center.js +1 -2
- package/components/Center/Center/Center.js.map +1 -1
- package/components/Center/Center.d.ts +4 -8
- package/components/Center/Center.md +24 -3
- package/components/Checkbox/Checkbox.styles/Checkbox.styles.js +1 -1
- package/components/Checkbox/Checkbox.styles/Checkbox.styles.js.map +1 -1
- package/components/CurrencyLabel/CurrencyLabel/CurrencyLabel.js +5 -11
- package/components/CurrencyLabel/CurrencyLabel/CurrencyLabel.js.map +1 -1
- package/components/DateInput/DateInput/DateInput.js +9 -4
- package/components/DateInput/DateInput/DateInput.js.map +1 -1
- package/components/DateInput/DateInput.styles/DateInput.styles.js +7 -1
- package/components/DateInput/DateInput.styles/DateInput.styles.js.map +1 -1
- package/components/DateInput/DateInput.styles.d.ts +2 -0
- package/components/DatePicker/DatePicker/DatePicker.js +12 -4
- package/components/DatePicker/DatePicker/DatePicker.js.map +1 -1
- package/components/DatePicker/DatePicker.d.ts +3 -2
- package/components/Dropdown/Dropdown/Dropdown.js +1 -0
- package/components/Dropdown/Dropdown/Dropdown.js.map +1 -1
- package/components/Dropdown/Dropdown.d.ts +1 -0
- package/components/Dropdown/Dropdown.md +0 -1
- package/components/DropdownMenu/DropdownMenu/DropdownMenu.js +1 -1
- package/components/DropdownMenu/DropdownMenu/DropdownMenu.js.map +1 -1
- package/components/DropdownMenu/DropdownMenu.d.ts +17 -3
- package/components/DropdownMenu/DropdownMenu.md +87 -6
- package/components/Kebab/Kebab/Kebab.js +2 -1
- package/components/Kebab/Kebab/Kebab.js.map +1 -1
- package/components/Kebab/Kebab.d.ts +5 -2
- package/components/Kebab/Kebab.md +249 -3
- package/components/MenuHeader/MenuHeader/MenuHeader.js +5 -1
- package/components/MenuHeader/MenuHeader/MenuHeader.js.map +1 -1
- package/components/MenuHeader/MenuHeader.d.ts +5 -1
- package/components/MenuHeader/MenuHeader.md +23 -0
- package/components/MenuItem/MenuItem/MenuItem.js +4 -1
- package/components/MenuItem/MenuItem/MenuItem.js.map +1 -1
- package/components/MenuItem/MenuItem.d.ts +10 -1
- package/components/MenuItem/MenuItem.md +106 -4
- package/components/MenuSeparator/MenuSeparator/MenuSeparator.js +3 -1
- package/components/MenuSeparator/MenuSeparator/MenuSeparator.js.map +1 -1
- package/components/MenuSeparator/MenuSeparator.d.ts +3 -1
- package/components/MenuSeparator/MenuSeparator.md +14 -0
- package/components/RadioGroup/RadioGroup/RadioGroup.js +0 -72
- package/components/RadioGroup/RadioGroup/RadioGroup.js.map +1 -1
- package/components/RadioGroup/RadioGroup.d.ts +51 -61
- package/components/Select/Select/Select.js +2 -2
- package/components/Select/Select/Select.js.map +1 -1
- package/components/Select/Select.styles/Select.styles.js +12 -9
- package/components/Select/Select.styles/Select.styles.js.map +1 -1
- package/components/Select/Select.styles.d.ts +1 -0
- package/components/Select/selectTheme/selectTheme.js +4 -1
- package/components/Select/selectTheme/selectTheme.js.map +1 -1
- package/components/Textarea/Textarea/Textarea.js +1 -2
- package/components/Textarea/Textarea/Textarea.js.map +1 -1
- package/components/Textarea/Textarea.d.ts +0 -2
- package/components/Toggle/Toggle/Toggle.js +10 -4
- package/components/Toggle/Toggle/Toggle.js.map +1 -1
- package/components/Toggle/Toggle.d.ts +47 -1
- package/components/Toggle/Toggle.md +83 -9
- package/components/Toggle/Toggle.styles/Toggle.styles.js +8 -5
- package/components/Toggle/Toggle.styles/Toggle.styles.js.map +1 -1
- package/components/Toggle/Toggle.styles.d.ts +2 -0
- package/components/TooltipMenu/TooltipMenu/TooltipMenu.js +9 -6
- package/components/TooltipMenu/TooltipMenu/TooltipMenu.js.map +1 -1
- package/components/TooltipMenu/TooltipMenu.d.ts +26 -8
- package/components/TooltipMenu/TooltipMenu.md +76 -8
- package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js.map +1 -1
- package/internal/CommonWrapper/CommonWrapper.d.ts +9 -1
- package/internal/InputLikeText/InputLikeText/InputLikeText.js +5 -3
- package/internal/InputLikeText/InputLikeText/InputLikeText.js.map +1 -1
- package/internal/InputLikeText/InputLikeText.d.ts +1 -0
- package/internal/InputLikeText/InputLikeText.styles/InputLikeText.styles.js +1 -1
- package/internal/InputLikeText/InputLikeText.styles/InputLikeText.styles.js.map +1 -1
- package/internal/InputLikeText/InputLikeText.styles.d.ts +1 -1
- package/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
- package/internal/themes/DefaultTheme/DefaultTheme.js +20 -0
- package/internal/themes/DefaultTheme/DefaultTheme.js.map +1 -1
- package/internal/themes/DefaultTheme.d.ts +4 -0
- package/package.json +2 -2
- package/cjs/components/CurrencyLabel/CurrencyLabel.styles.d.ts +0 -4
- package/cjs/components/CurrencyLabel/CurrencyLabel.styles.js +0 -9
- package/cjs/components/CurrencyLabel/CurrencyLabel.styles.js.map +0 -1
- package/components/CurrencyLabel/CurrencyLabel.styles/CurrencyLabel.styles.js +0 -10
- package/components/CurrencyLabel/CurrencyLabel.styles/CurrencyLabel.styles.js.map +0 -1
- package/components/CurrencyLabel/CurrencyLabel.styles/package.json +0 -6
- package/components/CurrencyLabel/CurrencyLabel.styles.d.ts +0 -4
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
Базовый пример кебаб-меню.
|
|
2
|
+
|
|
1
3
|
```jsx harmony
|
|
2
4
|
import EditIcon from '@skbkontur/react-icons/Edit';
|
|
3
5
|
import TrashIcon from '@skbkontur/react-icons/Trash';
|
|
4
|
-
import { Gapped, MenuItem } from '@skbkontur/react-ui';
|
|
6
|
+
import { Gapped, MenuItem, Toast } from '@skbkontur/react-ui';
|
|
5
7
|
|
|
6
8
|
let style = {
|
|
7
9
|
alignItems: 'center',
|
|
@@ -22,10 +24,10 @@ let Card = ({ name, post }) => (
|
|
|
22
24
|
</div>
|
|
23
25
|
|
|
24
26
|
<Kebab size="large">
|
|
25
|
-
<MenuItem icon={<EditIcon />} onClick={() => Toast.push('
|
|
27
|
+
<MenuItem icon={<EditIcon />} onClick={() => Toast.push('Отредактировано')}>
|
|
26
28
|
Редактировать
|
|
27
29
|
</MenuItem>
|
|
28
|
-
<MenuItem icon={<TrashIcon />} onClick={() => Toast.push('
|
|
30
|
+
<MenuItem icon={<TrashIcon />} onClick={() => Toast.push('Удалено')}>
|
|
29
31
|
Удалить
|
|
30
32
|
</MenuItem>
|
|
31
33
|
</Kebab>
|
|
@@ -43,3 +45,247 @@ let Card = ({ name, post }) => (
|
|
|
43
45
|
</Gapped>
|
|
44
46
|
</Gapped>;
|
|
45
47
|
```
|
|
48
|
+
|
|
49
|
+
Различные размеры кебаб-меню.
|
|
50
|
+
|
|
51
|
+
```jsx harmony
|
|
52
|
+
import EditIcon from '@skbkontur/react-icons/Edit';
|
|
53
|
+
import TrashIcon from '@skbkontur/react-icons/Trash';
|
|
54
|
+
import { Gapped, MenuItem, Toast} from '@skbkontur/react-ui';
|
|
55
|
+
|
|
56
|
+
let style = {
|
|
57
|
+
alignItems: 'center',
|
|
58
|
+
background: 'white',
|
|
59
|
+
border: '1px solid #dfdede',
|
|
60
|
+
color: '#333',
|
|
61
|
+
display: 'flex',
|
|
62
|
+
justifyContent: 'space-between',
|
|
63
|
+
padding: '0 20px',
|
|
64
|
+
width: 230,
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
let Card = ({ title, size }) => (
|
|
68
|
+
<div style={style}>
|
|
69
|
+
<div>
|
|
70
|
+
<h3>{title}</h3>
|
|
71
|
+
</div>
|
|
72
|
+
|
|
73
|
+
<Kebab size={size}>
|
|
74
|
+
<MenuItem icon={<EditIcon />} onClick={() => Toast.push('Отредактировано')}>
|
|
75
|
+
Редактировать
|
|
76
|
+
</MenuItem>
|
|
77
|
+
<MenuItem icon={<TrashIcon />} onClick={() => Toast.push('Удалено')}>
|
|
78
|
+
Удалить
|
|
79
|
+
</MenuItem>
|
|
80
|
+
</Kebab>
|
|
81
|
+
</div>
|
|
82
|
+
);
|
|
83
|
+
|
|
84
|
+
<Gapped>
|
|
85
|
+
<Card title="Маленький кебаб" size="small" />
|
|
86
|
+
<Card title="Средний кебаб" size="medium" />
|
|
87
|
+
<Card title="Большой кебаб" size="large" />
|
|
88
|
+
</Gapped>
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
Кебаб-меню с выпадашкой слева.
|
|
92
|
+
|
|
93
|
+
```jsx harmony
|
|
94
|
+
import EditIcon from '@skbkontur/react-icons/Edit';
|
|
95
|
+
import TrashIcon from '@skbkontur/react-icons/Trash';
|
|
96
|
+
import { MenuItem, Toast } from '@skbkontur/react-ui';
|
|
97
|
+
|
|
98
|
+
let style = {
|
|
99
|
+
alignItems: 'center',
|
|
100
|
+
background: 'white',
|
|
101
|
+
border: '1px solid #dfdede',
|
|
102
|
+
color: '#333',
|
|
103
|
+
display: 'flex',
|
|
104
|
+
justifyContent: 'space-between',
|
|
105
|
+
padding: '0 20px',
|
|
106
|
+
width: 250,
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
let Card = ({ title }) => (
|
|
110
|
+
<div style={style}>
|
|
111
|
+
<div>
|
|
112
|
+
<h3>{title}</h3>
|
|
113
|
+
</div>
|
|
114
|
+
|
|
115
|
+
<Kebab positions={['left middle']} size="large">
|
|
116
|
+
<MenuItem icon={<EditIcon />} onClick={() => Toast.push('Отредактировано')}>
|
|
117
|
+
Редактировать
|
|
118
|
+
</MenuItem>
|
|
119
|
+
<MenuItem icon={<TrashIcon />} onClick={() => Toast.push('Удалено')}>
|
|
120
|
+
Удалить
|
|
121
|
+
</MenuItem>
|
|
122
|
+
</Kebab>
|
|
123
|
+
</div>
|
|
124
|
+
);
|
|
125
|
+
|
|
126
|
+
<Card title="С выпадашкой слева" />
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
С кастомным действием при открытии.
|
|
130
|
+
|
|
131
|
+
```jsx harmony
|
|
132
|
+
import EditIcon from '@skbkontur/react-icons/Edit';
|
|
133
|
+
import TrashIcon from '@skbkontur/react-icons/Trash';
|
|
134
|
+
import { MenuItem, Toast } from '@skbkontur/react-ui';
|
|
135
|
+
|
|
136
|
+
let style = {
|
|
137
|
+
alignItems: 'center',
|
|
138
|
+
background: 'white',
|
|
139
|
+
border: '1px solid #dfdede',
|
|
140
|
+
color: '#333',
|
|
141
|
+
display: 'flex',
|
|
142
|
+
justifyContent: 'space-between',
|
|
143
|
+
padding: '0 20px',
|
|
144
|
+
width: 250,
|
|
145
|
+
};
|
|
146
|
+
|
|
147
|
+
let Card = ({ title }) => (
|
|
148
|
+
<div style={style}>
|
|
149
|
+
<div>
|
|
150
|
+
<h3>{title}</h3>
|
|
151
|
+
</div>
|
|
152
|
+
|
|
153
|
+
<Kebab
|
|
154
|
+
onOpen={() => Toast.push('Кебаб-меню открылось!')}
|
|
155
|
+
size="large"
|
|
156
|
+
>
|
|
157
|
+
<MenuItem icon={<EditIcon />} onClick={() => Toast.push('Отредактировано')}>
|
|
158
|
+
Редактировать
|
|
159
|
+
</MenuItem>
|
|
160
|
+
<MenuItem icon={<TrashIcon />} onClick={() => Toast.push('Удалено')}>
|
|
161
|
+
Удалить
|
|
162
|
+
</MenuItem>
|
|
163
|
+
</Kebab>
|
|
164
|
+
</div>
|
|
165
|
+
);
|
|
166
|
+
|
|
167
|
+
<Card title="С кастомным действием" />
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
Отключенное кебаб-меню.
|
|
171
|
+
|
|
172
|
+
```jsx harmony
|
|
173
|
+
import EditIcon from '@skbkontur/react-icons/Edit';
|
|
174
|
+
import TrashIcon from '@skbkontur/react-icons/Trash';
|
|
175
|
+
import { MenuItem, Toast } from '@skbkontur/react-ui';
|
|
176
|
+
|
|
177
|
+
let style = {
|
|
178
|
+
alignItems: 'center',
|
|
179
|
+
background: 'white',
|
|
180
|
+
border: '1px solid #dfdede',
|
|
181
|
+
color: '#333',
|
|
182
|
+
display: 'flex',
|
|
183
|
+
justifyContent: 'space-between',
|
|
184
|
+
padding: '0 20px',
|
|
185
|
+
width: 250,
|
|
186
|
+
};
|
|
187
|
+
|
|
188
|
+
let Card = ({ title }) => (
|
|
189
|
+
<div style={style}>
|
|
190
|
+
<div>
|
|
191
|
+
<h3>{title}</h3>
|
|
192
|
+
</div>
|
|
193
|
+
|
|
194
|
+
<Kebab disabled size="large">
|
|
195
|
+
<MenuItem icon={<EditIcon />} onClick={() => Toast.push('Отредактировано')}>
|
|
196
|
+
Редактировать
|
|
197
|
+
</MenuItem>
|
|
198
|
+
<MenuItem icon={<TrashIcon />} onClick={() => Toast.push('Удалено')}>
|
|
199
|
+
Удалить
|
|
200
|
+
</MenuItem>
|
|
201
|
+
</Kebab>
|
|
202
|
+
</div>
|
|
203
|
+
);
|
|
204
|
+
|
|
205
|
+
<Card title="Не нажимается :(" />
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
Кебаб-меню с отключенной анимацией.
|
|
209
|
+
|
|
210
|
+
```jsx harmony
|
|
211
|
+
import EditIcon from '@skbkontur/react-icons/Edit';
|
|
212
|
+
import TrashIcon from '@skbkontur/react-icons/Trash';
|
|
213
|
+
import { MenuItem, Toast } from '@skbkontur/react-ui';
|
|
214
|
+
|
|
215
|
+
let style = {
|
|
216
|
+
alignItems: 'center',
|
|
217
|
+
background: 'white',
|
|
218
|
+
border: '1px solid #dfdede',
|
|
219
|
+
color: '#333',
|
|
220
|
+
display: 'flex',
|
|
221
|
+
justifyContent: 'space-between',
|
|
222
|
+
padding: '0 20px',
|
|
223
|
+
width: 250,
|
|
224
|
+
};
|
|
225
|
+
|
|
226
|
+
let Card = ({ title }) => (
|
|
227
|
+
<div style={style}>
|
|
228
|
+
<div>
|
|
229
|
+
<h3>{title}</h3>
|
|
230
|
+
</div>
|
|
231
|
+
|
|
232
|
+
<Kebab disableAnimations size="large">
|
|
233
|
+
<MenuItem icon={<EditIcon />} onClick={() => Toast.push('Отредактировано')}>
|
|
234
|
+
Редактировать
|
|
235
|
+
</MenuItem>
|
|
236
|
+
<MenuItem icon={<TrashIcon />} onClick={() => Toast.push('Удалено')}>
|
|
237
|
+
Удалить
|
|
238
|
+
</MenuItem>
|
|
239
|
+
</Kebab>
|
|
240
|
+
</div>
|
|
241
|
+
);
|
|
242
|
+
|
|
243
|
+
<Card title="Без анимации" />
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
Кебаб-меню с заданной высотой.
|
|
247
|
+
|
|
248
|
+
```jsx harmony
|
|
249
|
+
import EditIcon from '@skbkontur/react-icons/Edit';
|
|
250
|
+
import TrashIcon from '@skbkontur/react-icons/Trash';
|
|
251
|
+
import { MenuItem, Toast } from '@skbkontur/react-ui';
|
|
252
|
+
|
|
253
|
+
let style = {
|
|
254
|
+
alignItems: 'center',
|
|
255
|
+
background: 'white',
|
|
256
|
+
border: '1px solid #dfdede',
|
|
257
|
+
color: '#333',
|
|
258
|
+
display: 'flex',
|
|
259
|
+
justifyContent: 'space-between',
|
|
260
|
+
padding: '0 20px',
|
|
261
|
+
width: 250,
|
|
262
|
+
};
|
|
263
|
+
|
|
264
|
+
let Card = ({ title }) => (
|
|
265
|
+
<div style={style}>
|
|
266
|
+
<div>
|
|
267
|
+
<h3>{title}</h3>
|
|
268
|
+
</div>
|
|
269
|
+
|
|
270
|
+
<Kebab
|
|
271
|
+
menuMaxHeight="100px"
|
|
272
|
+
size="large"
|
|
273
|
+
>
|
|
274
|
+
<MenuItem>
|
|
275
|
+
Действие
|
|
276
|
+
</MenuItem>
|
|
277
|
+
<MenuItem>
|
|
278
|
+
И ещё одно
|
|
279
|
+
</MenuItem>
|
|
280
|
+
<MenuItem>
|
|
281
|
+
Ещё действие
|
|
282
|
+
</MenuItem>
|
|
283
|
+
<MenuItem>
|
|
284
|
+
И последнее действие
|
|
285
|
+
</MenuItem>
|
|
286
|
+
</Kebab>
|
|
287
|
+
</div>
|
|
288
|
+
);
|
|
289
|
+
|
|
290
|
+
<Card title="С заданной высотой" />
|
|
291
|
+
```
|
|
@@ -5,7 +5,11 @@ export interface MenuHeaderProps extends CommonProps {
|
|
|
5
5
|
children: ReactNode;
|
|
6
6
|
}
|
|
7
7
|
/**
|
|
8
|
-
*
|
|
8
|
+
* `Заголовок меню` используется для того, чтобы разделить `элементы меню` на категории в рамках одного меню.
|
|
9
|
+
*
|
|
10
|
+
* _Примечание_: `заголовок меню`, в отличие от `элемента меню` нельзя затаргетить с клавиатуры.
|
|
11
|
+
*
|
|
12
|
+
* Сущности в которых может быть использован `MenuHeader`: [`DropdownMenu`](#/Components/DropdownMenu), [`Kebab`](#/Components/Kebab), [`TooltipMenu`](#/Components/TooltipMenu) и [`Select`](#/Components/Select).
|
|
9
13
|
*/
|
|
10
14
|
declare function MenuHeader({ _enableIconPadding, children, ...rest }: MenuHeaderProps): JSX.Element;
|
|
11
15
|
declare namespace MenuHeader {
|
|
@@ -12,7 +12,11 @@ var _MenuHeader = require("./MenuHeader.styles");
|
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
|
-
*
|
|
15
|
+
* `Заголовок меню` используется для того, чтобы разделить `элементы меню` на категории в рамках одного меню.
|
|
16
|
+
*
|
|
17
|
+
* _Примечание_: `заголовок меню`, в отличие от `элемента меню` нельзя затаргетить с клавиатуры.
|
|
18
|
+
*
|
|
19
|
+
* Сущности в которых может быть использован `MenuHeader`: [`DropdownMenu`](#/Components/DropdownMenu), [`Kebab`](#/Components/Kebab), [`TooltipMenu`](#/Components/TooltipMenu) и [`Select`](#/Components/Select).
|
|
16
20
|
*/
|
|
17
21
|
function MenuHeader(_ref) {var _cx;var _ref$_enableIconPaddi = _ref._enableIconPadding,_enableIconPadding = _ref$_enableIconPaddi === void 0 ? false : _ref$_enableIconPaddi,children = _ref.children,rest = (0, _objectWithoutPropertiesLoose2.default)(_ref, ["_enableIconPadding", "children"]);
|
|
18
22
|
var theme = (0, _react.useContext)(_ThemeContext.ThemeContext);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["MenuHeader.tsx"],"names":["MenuHeader","_enableIconPadding","children","rest","theme","ThemeContext","styles","root","withLeftPadding","__KONTUR_REACT_UI__","__MENU_HEADER__","isMenuHeader","child","isValidElement","Object","prototype","hasOwnProperty","call","type"],"mappings":"6YAAA;;AAEA;AACA;AACA;;AAEA;;;;;;;AAOA;AACA;AACA;AACA,SAASA,UAAT,OAAwF,0CAAlEC,kBAAkE,CAAlEA,kBAAkE,sCAA7C,KAA6C,yBAAtCC,QAAsC,QAAtCA,QAAsC,CAAzBC,IAAyB;AACtF,MAAMC,KAAK,GAAG,uBAAWC,0BAAX,CAAd;;AAEA;AACE,iCAAC,4BAAD,EAAmBF,IAAnB;AACE;AACE,MAAA,SAAS,EAAE;AACRG,yBAAOC,IAAP,CAAYH,KAAZ,CADQ,IACa,IADb;AAERE,yBAAOE,eAAP,CAAuBJ,KAAvB,CAFQ,IAEwBH,kBAFxB,OADb;;;AAMGC,IAAAA,QANH,CADF,CADF;;;;AAYD;;AAEDF,UAAU,CAACS,mBAAX,GAAiC,YAAjC;AACAT,UAAU,CAACU,eAAX,GAA6B,IAA7B;;;;AAIO,IAAMC,YAAY,GAAG,SAAfA,YAAe,CAACC,KAAD,EAA0E;AACpG,SAAO,4BAAMC,cAAN,CAAsCD,KAAtC;AACHE,EAAAA,MAAM,CAACC,SAAP,CAAiBC,cAAjB,CAAgCC,IAAhC,CAAqCL,KAAK,CAACM,IAA3C,EAAiD,iBAAjD,CADG;AAEH,OAFJ;AAGD,CAJM,C","sourcesContent":["import React, { ReactNode, useContext } from 'react';\n\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { styles } from './MenuHeader.styles';\n\nexport interface MenuHeaderProps extends CommonProps {\n _enableIconPadding?: boolean;\n children: ReactNode;\n}\n\n/**\n *
|
|
1
|
+
{"version":3,"sources":["MenuHeader.tsx"],"names":["MenuHeader","_enableIconPadding","children","rest","theme","ThemeContext","styles","root","withLeftPadding","__KONTUR_REACT_UI__","__MENU_HEADER__","isMenuHeader","child","isValidElement","Object","prototype","hasOwnProperty","call","type"],"mappings":"6YAAA;;AAEA;AACA;AACA;;AAEA;;;;;;;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,UAAT,OAAwF,0CAAlEC,kBAAkE,CAAlEA,kBAAkE,sCAA7C,KAA6C,yBAAtCC,QAAsC,QAAtCA,QAAsC,CAAzBC,IAAyB;AACtF,MAAMC,KAAK,GAAG,uBAAWC,0BAAX,CAAd;;AAEA;AACE,iCAAC,4BAAD,EAAmBF,IAAnB;AACE;AACE,MAAA,SAAS,EAAE;AACRG,yBAAOC,IAAP,CAAYH,KAAZ,CADQ,IACa,IADb;AAERE,yBAAOE,eAAP,CAAuBJ,KAAvB,CAFQ,IAEwBH,kBAFxB,OADb;;;AAMGC,IAAAA,QANH,CADF,CADF;;;;AAYD;;AAEDF,UAAU,CAACS,mBAAX,GAAiC,YAAjC;AACAT,UAAU,CAACU,eAAX,GAA6B,IAA7B;;;;AAIO,IAAMC,YAAY,GAAG,SAAfA,YAAe,CAACC,KAAD,EAA0E;AACpG,SAAO,4BAAMC,cAAN,CAAsCD,KAAtC;AACHE,EAAAA,MAAM,CAACC,SAAP,CAAiBC,cAAjB,CAAgCC,IAAhC,CAAqCL,KAAK,CAACM,IAA3C,EAAiD,iBAAjD,CADG;AAEH,OAFJ;AAGD,CAJM,C","sourcesContent":["import React, { ReactNode, useContext } from 'react';\n\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { styles } from './MenuHeader.styles';\n\nexport interface MenuHeaderProps extends CommonProps {\n _enableIconPadding?: boolean;\n children: ReactNode;\n}\n\n/**\n * `Заголовок меню` используется для того, чтобы разделить `элементы меню` на категории в рамках одного меню.\n *\n * _Примечание_: `заголовок меню`, в отличие от `элемента меню` нельзя затаргетить с клавиатуры.\n *\n * Сущности в которых может быть использован `MenuHeader`: [`DropdownMenu`](#/Components/DropdownMenu), [`Kebab`](#/Components/Kebab), [`TooltipMenu`](#/Components/TooltipMenu) и [`Select`](#/Components/Select).\n */\nfunction MenuHeader({ _enableIconPadding = false, children, ...rest }: MenuHeaderProps) {\n const theme = useContext(ThemeContext);\n\n return (\n <CommonWrapper {...rest}>\n <div\n className={cx({\n [styles.root(theme)]: true,\n [styles.withLeftPadding(theme)]: _enableIconPadding,\n })}\n >\n {children}\n </div>\n </CommonWrapper>\n );\n}\n\nMenuHeader.__KONTUR_REACT_UI__ = 'MenuHeader';\nMenuHeader.__MENU_HEADER__ = true;\n\nexport { MenuHeader };\n\nexport const isMenuHeader = (child: React.ReactNode): child is React.ReactElement<MenuHeaderProps> => {\n return React.isValidElement<MenuHeaderProps>(child)\n ? Object.prototype.hasOwnProperty.call(child.type, '__MENU_HEADER__')\n : false;\n};\n"]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
Базовый пример меню с заголовками.
|
|
2
|
+
|
|
3
|
+
```jsx harmony
|
|
4
|
+
import { Button, MenuItem, DropdownMenu } from '@skbkontur/react-ui';
|
|
5
|
+
|
|
6
|
+
<DropdownMenu
|
|
7
|
+
menuMaxHeight="10rem"
|
|
8
|
+
caption={<Button use="primary">Сотрудники компании</Button>}
|
|
9
|
+
>
|
|
10
|
+
<MenuHeader>Разработчики</MenuHeader>
|
|
11
|
+
<MenuItem>Вася</MenuItem>
|
|
12
|
+
<MenuItem>Петя</MenuItem>
|
|
13
|
+
<MenuItem>Маша</MenuItem>
|
|
14
|
+
<MenuHeader>Дизайнеры</MenuHeader>
|
|
15
|
+
<MenuItem>Галя</MenuItem>
|
|
16
|
+
<MenuItem>Гриша</MenuItem>
|
|
17
|
+
<MenuItem>Гена</MenuItem>
|
|
18
|
+
<MenuHeader>Продакты</MenuHeader>
|
|
19
|
+
<MenuItem>Валя</MenuItem>
|
|
20
|
+
<MenuItem>Аля</MenuItem>
|
|
21
|
+
<MenuItem>Артём</MenuItem>
|
|
22
|
+
</DropdownMenu>
|
|
23
|
+
```
|
|
@@ -8,6 +8,9 @@ export interface MenuItemProps extends CommonProps {
|
|
|
8
8
|
comment?: React.ReactNode;
|
|
9
9
|
disabled?: boolean;
|
|
10
10
|
icon?: React.ReactElement<any>;
|
|
11
|
+
/**
|
|
12
|
+
* Меняет цвет текста на синий
|
|
13
|
+
*/
|
|
11
14
|
link?: boolean;
|
|
12
15
|
/** @ignore */
|
|
13
16
|
loose?: boolean;
|
|
@@ -16,6 +19,9 @@ export interface MenuItemProps extends CommonProps {
|
|
|
16
19
|
onClick?: (event: React.SyntheticEvent<HTMLElement>) => void;
|
|
17
20
|
children?: React.ReactNode | ((state: MenuItemState) => React.ReactNode);
|
|
18
21
|
target?: React.AnchorHTMLAttributes<HTMLAnchorElement>['target'];
|
|
22
|
+
/**
|
|
23
|
+
* HTML-атрибут title
|
|
24
|
+
*/
|
|
19
25
|
title?: React.AnchorHTMLAttributes<HTMLAnchorElement>['title'];
|
|
20
26
|
href?: React.AnchorHTMLAttributes<HTMLAnchorElement>['href'];
|
|
21
27
|
onMouseEnter?: React.MouseEventHandler;
|
|
@@ -23,7 +29,10 @@ export interface MenuItemProps extends CommonProps {
|
|
|
23
29
|
component?: React.ComponentType<any>;
|
|
24
30
|
}
|
|
25
31
|
/**
|
|
26
|
-
*
|
|
32
|
+
*
|
|
33
|
+
* `MenuItem` - это вложенный компонент, задающий базовые стили для элемента меню и позволяющий навигироваться по элементам меню с помощью клавиатуры.
|
|
34
|
+
*
|
|
35
|
+
* Сущности в которых может быть использован `MenuItem`: [`DropdownMenu`](#/Components/DropdownMenu), [`Kebab`](#/Components/Kebab), [`TooltipMenu`](#/Components/TooltipMenu) и [`Select`](#/Components/Select).
|
|
27
36
|
*/
|
|
28
37
|
export declare class MenuItem extends React.Component<MenuItemProps> {
|
|
29
38
|
static __KONTUR_REACT_UI__: string;
|
|
@@ -28,6 +28,13 @@ var _MenuItem = require("./MenuItem.styles");
|
|
|
28
28
|
|
|
29
29
|
|
|
30
30
|
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
|
|
31
38
|
|
|
32
39
|
|
|
33
40
|
|
|
@@ -37,7 +44,10 @@ var _MenuItem = require("./MenuItem.styles");
|
|
|
37
44
|
|
|
38
45
|
|
|
39
46
|
/**
|
|
40
|
-
*
|
|
47
|
+
*
|
|
48
|
+
* `MenuItem` - это вложенный компонент, задающий базовые стили для элемента меню и позволяющий навигироваться по элементам меню с помощью клавиатуры.
|
|
49
|
+
*
|
|
50
|
+
* Сущности в которых может быть использован `MenuItem`: [`DropdownMenu`](#/Components/DropdownMenu), [`Kebab`](#/Components/Kebab), [`TooltipMenu`](#/Components/TooltipMenu) и [`Select`](#/Components/Select).
|
|
41
51
|
*/var
|
|
42
52
|
MenuItem = /*#__PURE__*/function (_React$Component) {(0, _inheritsLoose2.default)(MenuItem, _React$Component);function MenuItem() {var _this;for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {args[_key] = arguments[_key];}_this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;_this.
|
|
43
53
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["MenuItem.tsx"],"names":["MenuItem","theme","mouseEntered","renderMain","props","link","comment","icon","loose","state","_enableIconPadding","component","onMouseEnter","onMouseLeave","rest","hover","disabled","iconElement","styles","className","root","selected","withIcon","Boolean","children","content","Component","getComponent","handleMouseEnterFix","handleMouseLeave","commentHover","e","href","render","React","__KONTUR_REACT_UI__","__MENU_ITEM__","propTypes","PropTypes","node","bool","string","oneOfType","target","onClick","func","isMenuItem","child","isValidElement","Object","prototype","hasOwnProperty","call","type"],"mappings":"udAAA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA
|
|
1
|
+
{"version":3,"sources":["MenuItem.tsx"],"names":["MenuItem","theme","mouseEntered","renderMain","props","link","comment","icon","loose","state","_enableIconPadding","component","onMouseEnter","onMouseLeave","rest","hover","disabled","iconElement","styles","className","root","selected","withIcon","Boolean","children","content","Component","getComponent","handleMouseEnterFix","handleMouseLeave","commentHover","e","href","render","React","__KONTUR_REACT_UI__","__MENU_ITEM__","propTypes","PropTypes","node","bool","string","oneOfType","target","onClick","func","isMenuItem","child","isValidElement","Object","prototype","hasOwnProperty","call","type"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { isFunction } from '../../lib/utils';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonProps, CommonWrapper, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { styles } from './MenuItem.styles';\n\nexport type MenuItemState = null | 'hover' | 'selected' | void;\n\nexport interface MenuItemProps extends CommonProps {\n /** @ignore */\n _enableIconPadding?: boolean;\n\n comment?: React.ReactNode;\n disabled?: boolean;\n icon?: React.ReactElement<any>;\n\n /**\n * Меняет цвет текста на синий\n */\n link?: boolean;\n\n /** @ignore */\n loose?: boolean;\n\n /** @ignore */\n state?: MenuItemState;\n onClick?: (event: React.SyntheticEvent<HTMLElement>) => void;\n children?: React.ReactNode | ((state: MenuItemState) => React.ReactNode);\n target?: React.AnchorHTMLAttributes<HTMLAnchorElement>['target'];\n /**\n * HTML-атрибут title\n */\n title?: React.AnchorHTMLAttributes<HTMLAnchorElement>['title'];\n href?: React.AnchorHTMLAttributes<HTMLAnchorElement>['href'];\n onMouseEnter?: React.MouseEventHandler;\n onMouseLeave?: React.MouseEventHandler;\n\n component?: React.ComponentType<any>;\n}\n\n/**\n *\n * `MenuItem` - это вложенный компонент, задающий базовые стили для элемента меню и позволяющий навигироваться по элементам меню с помощью клавиатуры.\n *\n * Сущности в которых может быть использован `MenuItem`: [`DropdownMenu`](#/Components/DropdownMenu), [`Kebab`](#/Components/Kebab), [`TooltipMenu`](#/Components/TooltipMenu) и [`Select`](#/Components/Select).\n */\nexport class MenuItem extends React.Component<MenuItemProps> {\n public static __KONTUR_REACT_UI__ = 'MenuItem';\n public static __MENU_ITEM__ = true;\n\n public static propTypes = {\n comment: PropTypes.node,\n\n disabled: PropTypes.bool,\n\n href: PropTypes.string,\n\n icon: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),\n\n loose: PropTypes.bool,\n\n state: PropTypes.string,\n\n target: PropTypes.string,\n\n onClick: PropTypes.func,\n };\n\n private theme!: Theme;\n private mouseEntered = false;\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return <CommonWrapper {...this.props}>{this.renderMain}</CommonWrapper>;\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain = (props: CommonWrapperRestProps<MenuItemProps>) => {\n const { link, comment, icon, loose, state, _enableIconPadding, component, onMouseEnter, onMouseLeave, ...rest } =\n props;\n\n const hover = state === 'hover' && !this.props.disabled;\n\n let iconElement = null;\n if (icon) {\n iconElement = <div className={styles.icon(this.theme)}>{icon}</div>;\n }\n\n const className = cx({\n [styles.root(this.theme)]: true,\n [styles.loose()]: !!loose,\n [styles.hover(this.theme)]: hover,\n [styles.selected(this.theme)]: state === 'selected',\n [styles.link(this.theme)]: !!link,\n [styles.withIcon(this.theme)]: Boolean(iconElement) || !!_enableIconPadding,\n [styles.disabled(this.theme)]: !!this.props.disabled,\n });\n\n const { children } = this.props;\n\n let content = children;\n if (isFunction(children)) {\n content = children(this.props.state);\n }\n\n const Component = this.getComponent();\n\n return (\n <Component\n {...rest}\n state={state}\n onMouseOver={this.handleMouseEnterFix}\n onMouseLeave={this.handleMouseLeave}\n className={className}\n tabIndex={-1}\n >\n {iconElement}\n {content}\n {this.props.comment && (\n <div\n data-tid=\"MenuItem__comment\"\n className={cx({\n [styles.comment(this.theme)]: true,\n [styles.commentHover(this.theme)]: hover,\n })}\n >\n {comment}\n </div>\n )}\n </Component>\n );\n };\n\n // https://github.com/facebook/react/issues/10109\n // Mouseenter event not triggered when cursor moves from disabled button\n private handleMouseEnterFix = (e: React.MouseEvent<HTMLElement>) => {\n if (!this.mouseEntered && this.props.onMouseEnter) {\n this.mouseEntered = true;\n this.props.onMouseEnter(e);\n }\n };\n\n private handleMouseLeave = (e: React.MouseEvent<HTMLElement>) => {\n this.mouseEntered = false;\n if (this.props.onMouseLeave) {\n this.props.onMouseLeave(e);\n }\n };\n\n private getComponent = () => {\n const { disabled, component, href } = this.props;\n\n if (disabled) {\n return 'button';\n }\n\n if (component) {\n return component;\n }\n\n if (href) {\n return 'a';\n }\n\n return 'button';\n };\n}\n\nexport const isMenuItem = (child: React.ReactNode): child is React.ReactElement<MenuItemProps> => {\n return React.isValidElement<MenuItemProps>(child)\n ? Object.prototype.hasOwnProperty.call(child.type, '__MENU_ITEM__')\n : false;\n};\n"]}
|
|
@@ -1,7 +1,109 @@
|
|
|
1
|
+
Меню с базовыми элементами меню.
|
|
2
|
+
|
|
3
|
+
```jsx harmony
|
|
4
|
+
import { Button, MenuItem, DropdownMenu } from '@skbkontur/react-ui';
|
|
5
|
+
|
|
6
|
+
<DropdownMenu
|
|
7
|
+
caption={<Button use="primary">Открыть меню с базовыми элементами меню</Button>}
|
|
8
|
+
>
|
|
9
|
+
<MenuItem>Базовый элемент меню</MenuItem>
|
|
10
|
+
<MenuItem>Ещё один базовый элемент меню</MenuItem>
|
|
11
|
+
<MenuItem>И ещё один</MenuItem>
|
|
12
|
+
</DropdownMenu>
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Меню с отключёнными и базовыми элементами меню.
|
|
16
|
+
<br/>
|
|
17
|
+
К отключённым элементам меню не применяются стили при наведении и их нельзя затаргетить с клавиатуры.
|
|
18
|
+
|
|
1
19
|
```jsx harmony
|
|
2
|
-
import {
|
|
20
|
+
import { Button, MenuItem, DropdownMenu } from '@skbkontur/react-ui';
|
|
21
|
+
|
|
22
|
+
<DropdownMenu
|
|
23
|
+
caption={<Button use="primary">Открыть меню с базовыми и отключёнными элементами</Button>}
|
|
24
|
+
>
|
|
25
|
+
<MenuItem>Это базовый элемент меню</MenuItem>
|
|
26
|
+
<MenuItem disabled>А это отключённый</MenuItem>
|
|
27
|
+
<MenuItem>А это снова базовый</MenuItem>
|
|
28
|
+
<MenuItem disabled>И снова отключённый</MenuItem>
|
|
29
|
+
<MenuItem disabled>И вот ещё один отключённый</MenuItem>
|
|
30
|
+
</DropdownMenu>
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Меню с элементами меню содержащими описание.
|
|
34
|
+
|
|
35
|
+
```jsx harmony
|
|
36
|
+
import { Button, MenuItem, DropdownMenu } from '@skbkontur/react-ui';
|
|
37
|
+
|
|
38
|
+
<DropdownMenu
|
|
39
|
+
caption={<Button use="primary">Открыть меню с причастными к Pied Piper</Button>}
|
|
40
|
+
>
|
|
41
|
+
<MenuItem comment="Системный инженер">Bertram Gilfoyle</MenuItem>
|
|
42
|
+
<MenuItem comment="Hooli CEO">Gavin Belson</MenuItem>
|
|
43
|
+
<MenuItem comment="Java-разработчик">Dinesh Chugtai</MenuItem>
|
|
44
|
+
<MenuItem comment="Основатель Pied Piper">Richard Hendricks</MenuItem>
|
|
45
|
+
<MenuItem comment="Владелец инкубатора">Erlich Bachman</MenuItem>
|
|
46
|
+
</DropdownMenu>
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Меню с элементами меню содержащими иконки.
|
|
50
|
+
|
|
51
|
+
```jsx harmony
|
|
52
|
+
import { Button, MenuItem, DropdownMenu } from '@skbkontur/react-ui';
|
|
53
|
+
import DeviceSmartphoneIcon from '@skbkontur/react-icons/DeviceSmartphone';
|
|
54
|
+
import OkIcon from '@skbkontur/react-icons/Ok';
|
|
55
|
+
import ThumbDownIcon from '@skbkontur/react-icons/ThumbDown';
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
<DropdownMenu
|
|
59
|
+
caption={<Button use="primary">Открыть меню с иконками</Button>}
|
|
60
|
+
>
|
|
61
|
+
<MenuItem icon={<OkIcon />}>Базовый элемент меню c иконкой</MenuItem>
|
|
62
|
+
<MenuItem
|
|
63
|
+
disabled
|
|
64
|
+
icon={<ThumbDownIcon />}
|
|
65
|
+
>
|
|
66
|
+
Отключённый элемент меню с иконкой
|
|
67
|
+
</MenuItem>
|
|
68
|
+
<MenuItem
|
|
69
|
+
icon={<DeviceSmartphoneIcon />}
|
|
70
|
+
comment="А слева вы можете видеть икону 21-го века"
|
|
71
|
+
>
|
|
72
|
+
Элемент меню с описанием и иконкой
|
|
73
|
+
</MenuItem>
|
|
74
|
+
</DropdownMenu>
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Меню с элементами меню обёрнутыми в контрол ссылки.
|
|
78
|
+
|
|
79
|
+
```jsx harmony
|
|
80
|
+
import { Button, MenuItem, DropdownMenu, Link } from '@skbkontur/react-ui';
|
|
81
|
+
|
|
82
|
+
const LinkMenuItem = ({link, title}) => {
|
|
83
|
+
return <MenuItem
|
|
84
|
+
href={link}
|
|
85
|
+
component={({ href, ...rest }) => {
|
|
86
|
+
return <Link target="_blank" rel="noopener noreferrer" href={href} {...rest} />
|
|
87
|
+
}}
|
|
88
|
+
>
|
|
89
|
+
{title}
|
|
90
|
+
</MenuItem>
|
|
91
|
+
}
|
|
3
92
|
|
|
4
|
-
<
|
|
5
|
-
|
|
6
|
-
|
|
93
|
+
<DropdownMenu
|
|
94
|
+
caption={<Button use="primary">Открыть меню с ссылками</Button>}
|
|
95
|
+
>
|
|
96
|
+
<LinkMenuItem
|
|
97
|
+
link="http://tech.skbkontur.ru/react-ui/"
|
|
98
|
+
title="Начало документации"
|
|
99
|
+
/>
|
|
100
|
+
<LinkMenuItem
|
|
101
|
+
link="https://guides.kontur.ru/"
|
|
102
|
+
title="Контур Гайды"
|
|
103
|
+
/>
|
|
104
|
+
<LinkMenuItem
|
|
105
|
+
link="https://github.com/skbkontur/retail-ui/graphs/contributors"
|
|
106
|
+
title="Список прекрасных людей"
|
|
107
|
+
/>
|
|
108
|
+
</DropdownMenu>
|
|
7
109
|
```
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { CommonProps } from '../../internal/CommonWrapper';
|
|
2
2
|
export declare type MenuSeparatorProps = CommonProps;
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
4
|
+
* Добавляет разделительную линию между элементами меню.
|
|
5
|
+
*
|
|
6
|
+
* Сущности в которых может быть использован `MenuSeparator`: [`DropdownMenu`](#/Components/DropdownMenu), [`Kebab`](#/Components/Kebab), [`TooltipMenu`](#/Components/TooltipMenu) и [`Select`](#/Components/Select).
|
|
5
7
|
*/
|
|
6
8
|
declare function MenuSeparator(props: MenuSeparatorProps): JSX.Element;
|
|
7
9
|
declare namespace MenuSeparator {
|
|
@@ -7,7 +7,9 @@ var _MenuSeparator = require("./MenuSeparator.styles");
|
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
|
-
*
|
|
10
|
+
* Добавляет разделительную линию между элементами меню.
|
|
11
|
+
*
|
|
12
|
+
* Сущности в которых может быть использован `MenuSeparator`: [`DropdownMenu`](#/Components/DropdownMenu), [`Kebab`](#/Components/Kebab), [`TooltipMenu`](#/Components/TooltipMenu) и [`Select`](#/Components/Select).
|
|
11
13
|
*/
|
|
12
14
|
function MenuSeparator(props) {
|
|
13
15
|
var theme = (0, _react.useContext)(_ThemeContext.ThemeContext);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["MenuSeparator.tsx"],"names":["MenuSeparator","props","theme","ThemeContext","styles","root","__KONTUR_REACT_UI__"],"mappings":"oKAAA;;AAEA;AACA;;AAEA;;;AAGA;AACA;AACA;AACA,SAASA,aAAT,CAAuBC,KAAvB,EAAkD;AAChD,MAAMC,KAAK,GAAG,uBAAWC,0BAAX,CAAd;;AAEA;AACE,iCAAC,4BAAD,EAAmBF,KAAnB;AACE,0CAAK,SAAS,EAAEG,sBAAOC,IAAP,CAAYH,KAAZ,CAAhB,GADF,CADF;;;AAKD;;AAEDF,aAAa,CAACM,mBAAd,GAAoC,eAApC","sourcesContent":["import React, { useContext } from 'react';\n\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\n\nimport { styles } from './MenuSeparator.styles';\n\nexport type MenuSeparatorProps = CommonProps;\n/**\n *
|
|
1
|
+
{"version":3,"sources":["MenuSeparator.tsx"],"names":["MenuSeparator","props","theme","ThemeContext","styles","root","__KONTUR_REACT_UI__"],"mappings":"oKAAA;;AAEA;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA,SAASA,aAAT,CAAuBC,KAAvB,EAAkD;AAChD,MAAMC,KAAK,GAAG,uBAAWC,0BAAX,CAAd;;AAEA;AACE,iCAAC,4BAAD,EAAmBF,KAAnB;AACE,0CAAK,SAAS,EAAEG,sBAAOC,IAAP,CAAYH,KAAZ,CAAhB,GADF,CADF;;;AAKD;;AAEDF,aAAa,CAACM,mBAAd,GAAoC,eAApC","sourcesContent":["import React, { useContext } from 'react';\n\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\n\nimport { styles } from './MenuSeparator.styles';\n\nexport type MenuSeparatorProps = CommonProps;\n/**\n * Добавляет разделительную линию между элементами меню.\n *\n * Сущности в которых может быть использован `MenuSeparator`: [`DropdownMenu`](#/Components/DropdownMenu), [`Kebab`](#/Components/Kebab), [`TooltipMenu`](#/Components/TooltipMenu) и [`Select`](#/Components/Select).\n */\nfunction MenuSeparator(props: MenuSeparatorProps) {\n const theme = useContext(ThemeContext);\n\n return (\n <CommonWrapper {...props}>\n <div className={styles.root(theme)} />\n </CommonWrapper>\n );\n}\n\nMenuSeparator.__KONTUR_REACT_UI__ = 'MenuSeparator';\n\nexport { MenuSeparator };\n"]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
Пример меню с разделителями.
|
|
2
|
+
|
|
3
|
+
```jsx harmony
|
|
4
|
+
import { Button, MenuHeader, MenuItem, DropdownMenu } from '@skbkontur/react-ui';
|
|
5
|
+
|
|
6
|
+
<DropdownMenu caption={<Button use="primary">Открыть меню с разделителями</Button>}>
|
|
7
|
+
<MenuItem>У меня есть разделитель</MenuItem>
|
|
8
|
+
<MenuSeparator />
|
|
9
|
+
<MenuItem>У меня тоже!</MenuItem>
|
|
10
|
+
<MenuSeparator />
|
|
11
|
+
<MenuItem>А у меня нет :(</MenuItem>
|
|
12
|
+
<MenuItem>Как и у меня :(</MenuItem>
|
|
13
|
+
</DropdownMenu>;
|
|
14
|
+
```
|