@vkontakte/vkui 4.21.0 → 4.22.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/.cache/.eslintcache +1 -1
- package/.cache/.stylelintcache +1 -1
- package/.cache/.tsbuildinfo +271 -37
- package/.cache/ts/src/components/Avatar/Avatar.d.ts +2 -0
- package/.cache/ts/src/components/Cell/Cell.d.ts +11 -0
- package/.cache/ts/src/components/Cell/CellCheckbox/CellCheckbox.d.ts +5 -0
- package/.cache/ts/src/components/Cell/CellDragger/CellDragger.d.ts +6 -0
- package/.cache/ts/src/components/Cell/useDraggable.d.ts +13 -0
- package/.cache/ts/src/components/CustomSelect/CustomSelect.d.ts +0 -1
- package/.cache/ts/src/components/DropdownIcon/DropdownIcon.d.ts +3 -0
- package/.cache/ts/src/components/GridAvatar/GridAvatar.d.ts +9 -0
- package/.cache/ts/src/components/InitialsAvatar/InitialsAvatar.d.ts +33 -0
- package/.cache/ts/src/components/Removable/Removable.d.ts +2 -1
- package/.cache/ts/src/components/TabbarItem/TabbarItem.d.ts +3 -1
- package/.cache/ts/src/index.d.ts +4 -0
- package/dist/cjs/components/ActionSheet/ActionSheet.js +1 -12
- package/dist/cjs/components/ActionSheet/ActionSheet.js.map +1 -1
- package/dist/cjs/components/Avatar/Avatar.d.ts +2 -0
- package/dist/cjs/components/Avatar/Avatar.js +7 -3
- package/dist/cjs/components/Avatar/Avatar.js.map +1 -1
- package/dist/cjs/components/CardScroll/CardScroll.js +1 -1
- package/dist/cjs/components/CardScroll/CardScroll.js.map +1 -1
- package/dist/cjs/components/Cell/Cell.d.ts +11 -0
- package/dist/cjs/components/Cell/Cell.js +109 -182
- package/dist/cjs/components/Cell/Cell.js.map +1 -1
- package/dist/cjs/components/Cell/CellCheckbox/CellCheckbox.d.ts +5 -0
- package/dist/cjs/components/Cell/CellCheckbox/CellCheckbox.js +50 -0
- package/dist/cjs/components/Cell/CellCheckbox/CellCheckbox.js.map +1 -0
- package/dist/cjs/components/Cell/CellDragger/CellDragger.d.ts +6 -0
- package/dist/cjs/components/Cell/CellDragger/CellDragger.js +53 -0
- package/dist/cjs/components/Cell/CellDragger/CellDragger.js.map +1 -0
- package/dist/cjs/components/Cell/useDraggable.d.ts +13 -0
- package/dist/cjs/components/Cell/useDraggable.js +142 -0
- package/dist/cjs/components/Cell/useDraggable.js.map +1 -0
- package/dist/cjs/components/ChipsSelect/ChipsSelect.js +2 -2
- package/dist/cjs/components/ChipsSelect/ChipsSelect.js.map +1 -1
- package/dist/cjs/components/CustomSelect/CustomSelect.d.ts +0 -1
- package/dist/cjs/components/CustomSelect/CustomSelect.js +2 -3
- package/dist/cjs/components/CustomSelect/CustomSelect.js.map +1 -1
- package/dist/cjs/components/DropdownIcon/DropdownIcon.d.ts +3 -0
- package/dist/cjs/components/DropdownIcon/DropdownIcon.js +37 -0
- package/dist/cjs/components/DropdownIcon/DropdownIcon.js.map +1 -0
- package/dist/cjs/components/FocusTrap/FocusTrap.js +3 -5
- package/dist/cjs/components/FocusTrap/FocusTrap.js.map +1 -1
- package/dist/cjs/components/FormLayoutGroup/FormLayoutGroup.js +1 -0
- package/dist/cjs/components/FormLayoutGroup/FormLayoutGroup.js.map +1 -1
- package/dist/cjs/components/GridAvatar/GridAvatar.d.ts +9 -0
- package/dist/cjs/components/GridAvatar/GridAvatar.js +61 -0
- package/dist/cjs/components/GridAvatar/GridAvatar.js.map +1 -0
- package/dist/cjs/components/InitialsAvatar/InitialsAvatar.d.ts +33 -0
- package/dist/cjs/components/InitialsAvatar/InitialsAvatar.js +64 -0
- package/dist/cjs/components/InitialsAvatar/InitialsAvatar.js.map +1 -0
- package/dist/cjs/components/NativeSelect/NativeSelect.js +2 -2
- package/dist/cjs/components/NativeSelect/NativeSelect.js.map +1 -1
- package/dist/cjs/components/Progress/Progress.js +6 -3
- package/dist/cjs/components/Progress/Progress.js.map +1 -1
- package/dist/cjs/components/Removable/Removable.d.ts +2 -1
- package/dist/cjs/components/Removable/Removable.js +20 -10
- package/dist/cjs/components/Removable/Removable.js.map +1 -1
- package/dist/cjs/components/SelectMimicry/SelectMimicry.js +2 -2
- package/dist/cjs/components/SelectMimicry/SelectMimicry.js.map +1 -1
- package/dist/cjs/components/Tabbar/Tabbar.js +3 -1
- package/dist/cjs/components/Tabbar/Tabbar.js.map +1 -1
- package/dist/cjs/components/TabbarItem/TabbarItem.d.ts +3 -1
- package/dist/cjs/components/TabbarItem/TabbarItem.js +29 -11
- package/dist/cjs/components/TabbarItem/TabbarItem.js.map +1 -1
- package/dist/cjs/components/View/View.js +53 -42
- package/dist/cjs/components/View/View.js.map +1 -1
- package/dist/cjs/components/View/ViewInfinite.js +63 -52
- package/dist/cjs/components/View/ViewInfinite.js.map +1 -1
- package/dist/cjs/index.d.ts +4 -0
- package/dist/cjs/index.js +16 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/lib/prefixClass.js +7 -6
- package/dist/cjs/lib/prefixClass.js.map +1 -1
- package/dist/components/ActionSheet/ActionSheet.js +1 -11
- package/dist/components/ActionSheet/ActionSheet.js.map +1 -1
- package/dist/components/Avatar/Avatar.d.ts +2 -0
- package/dist/components/Avatar/Avatar.js +4 -2
- package/dist/components/Avatar/Avatar.js.map +1 -1
- package/dist/components/CardScroll/CardScroll.js +1 -1
- package/dist/components/CardScroll/CardScroll.js.map +1 -1
- package/dist/components/Cell/Cell.d.ts +11 -0
- package/dist/components/Cell/Cell.js +103 -177
- package/dist/components/Cell/Cell.js.map +1 -1
- package/dist/components/Cell/CellCheckbox/CellCheckbox.d.ts +5 -0
- package/dist/components/Cell/CellCheckbox/CellCheckbox.js +31 -0
- package/dist/components/Cell/CellCheckbox/CellCheckbox.js.map +1 -0
- package/dist/components/Cell/CellDragger/CellDragger.d.ts +6 -0
- package/dist/components/Cell/CellDragger/CellDragger.js +30 -0
- package/dist/components/Cell/CellDragger/CellDragger.js.map +1 -0
- package/dist/components/Cell/useDraggable.d.ts +13 -0
- package/dist/components/Cell/useDraggable.js +126 -0
- package/dist/components/Cell/useDraggable.js.map +1 -0
- package/dist/components/ChipsSelect/ChipsSelect.js +2 -2
- package/dist/components/ChipsSelect/ChipsSelect.js.map +1 -1
- package/dist/components/CustomSelect/CustomSelect.d.ts +0 -1
- package/dist/components/CustomSelect/CustomSelect.js +3 -5
- package/dist/components/CustomSelect/CustomSelect.js.map +1 -1
- package/dist/components/DropdownIcon/DropdownIcon.d.ts +3 -0
- package/dist/components/DropdownIcon/DropdownIcon.js +19 -0
- package/dist/components/DropdownIcon/DropdownIcon.js.map +1 -0
- package/dist/components/FocusTrap/FocusTrap.js +3 -5
- package/dist/components/FocusTrap/FocusTrap.js.map +1 -1
- package/dist/components/FormLayoutGroup/FormLayoutGroup.js +1 -0
- package/dist/components/FormLayoutGroup/FormLayoutGroup.js.map +1 -1
- package/dist/components/GridAvatar/GridAvatar.d.ts +9 -0
- package/dist/components/GridAvatar/GridAvatar.js +41 -0
- package/dist/components/GridAvatar/GridAvatar.js.map +1 -0
- package/dist/components/InitialsAvatar/InitialsAvatar.d.ts +33 -0
- package/dist/components/InitialsAvatar/InitialsAvatar.js +46 -0
- package/dist/components/InitialsAvatar/InitialsAvatar.js.map +1 -0
- package/dist/components/NativeSelect/NativeSelect.js +2 -2
- package/dist/components/NativeSelect/NativeSelect.js.map +1 -1
- package/dist/components/Progress/Progress.js +6 -3
- package/dist/components/Progress/Progress.js.map +1 -1
- package/dist/components/Removable/Removable.d.ts +2 -1
- package/dist/components/Removable/Removable.js +20 -11
- package/dist/components/Removable/Removable.js.map +1 -1
- package/dist/components/SelectMimicry/SelectMimicry.js +2 -2
- package/dist/components/SelectMimicry/SelectMimicry.js.map +1 -1
- package/dist/components/Tabbar/Tabbar.js +3 -1
- package/dist/components/Tabbar/Tabbar.js.map +1 -1
- package/dist/components/TabbarItem/TabbarItem.d.ts +3 -1
- package/dist/components/TabbarItem/TabbarItem.js +26 -10
- package/dist/components/TabbarItem/TabbarItem.js.map +1 -1
- package/dist/components/View/View.js +53 -42
- package/dist/components/View/View.js.map +1 -1
- package/dist/components/View/ViewInfinite.js +65 -54
- package/dist/components/View/ViewInfinite.js.map +1 -1
- package/dist/components.css +1 -1
- package/dist/components.css.map +1 -1
- package/dist/cssm/components/ActionSheet/ActionSheet.js +1 -11
- package/dist/cssm/components/ActionSheet/ActionSheet.js.map +1 -1
- package/dist/cssm/components/Avatar/Avatar.js +4 -2
- package/dist/cssm/components/Avatar/Avatar.js.map +1 -1
- package/dist/cssm/components/CardScroll/CardScroll.js +1 -1
- package/dist/cssm/components/CardScroll/CardScroll.js.map +1 -1
- package/dist/cssm/components/Cell/Cell.css +1 -1
- package/dist/cssm/components/Cell/Cell.js +103 -177
- package/dist/cssm/components/Cell/Cell.js.map +1 -1
- package/dist/cssm/components/Cell/CellCheckbox/CellCheckbox.css +1 -0
- package/dist/cssm/components/Cell/CellCheckbox/CellCheckbox.js +32 -0
- package/dist/cssm/components/Cell/CellCheckbox/CellCheckbox.js.map +1 -0
- package/dist/cssm/components/Cell/CellDragger/CellDragger.css +1 -0
- package/dist/cssm/components/Cell/CellDragger/CellDragger.js +31 -0
- package/dist/cssm/components/Cell/CellDragger/CellDragger.js.map +1 -0
- package/dist/cssm/components/Cell/useDraggable.js +126 -0
- package/dist/cssm/components/Cell/useDraggable.js.map +1 -0
- package/dist/cssm/components/ChipsSelect/ChipsSelect.js +2 -2
- package/dist/cssm/components/ChipsSelect/ChipsSelect.js.map +1 -1
- package/dist/cssm/components/CustomSelect/CustomSelect.js +3 -5
- package/dist/cssm/components/CustomSelect/CustomSelect.js.map +1 -1
- package/dist/cssm/components/DropdownIcon/DropdownIcon.css +1 -0
- package/dist/cssm/components/DropdownIcon/DropdownIcon.js +20 -0
- package/dist/cssm/components/DropdownIcon/DropdownIcon.js.map +1 -0
- package/dist/cssm/components/FocusTrap/FocusTrap.js +3 -5
- package/dist/cssm/components/FocusTrap/FocusTrap.js.map +1 -1
- package/dist/cssm/components/FormItem/FormItem.css +1 -1
- package/dist/cssm/components/FormLayoutGroup/FormLayoutGroup.css +1 -1
- package/dist/cssm/components/FormLayoutGroup/FormLayoutGroup.js +1 -0
- package/dist/cssm/components/FormLayoutGroup/FormLayoutGroup.js.map +1 -1
- package/dist/cssm/components/GridAvatar/GridAvatar.css +1 -0
- package/dist/cssm/components/GridAvatar/GridAvatar.js +42 -0
- package/dist/cssm/components/GridAvatar/GridAvatar.js.map +1 -0
- package/dist/cssm/components/InitialsAvatar/InitialsAvatar.css +1 -0
- package/dist/cssm/components/InitialsAvatar/InitialsAvatar.js +52 -0
- package/dist/cssm/components/InitialsAvatar/InitialsAvatar.js.map +1 -0
- package/dist/cssm/components/NativeSelect/NativeSelect.js +2 -2
- package/dist/cssm/components/NativeSelect/NativeSelect.js.map +1 -1
- package/dist/cssm/components/Progress/Progress.js +6 -3
- package/dist/cssm/components/Progress/Progress.js.map +1 -1
- package/dist/cssm/components/Removable/Removable.css +1 -1
- package/dist/cssm/components/Removable/Removable.js +20 -11
- package/dist/cssm/components/Removable/Removable.js.map +1 -1
- package/dist/cssm/components/Select/Select.css +1 -1
- package/dist/cssm/components/SelectMimicry/SelectMimicry.js +2 -2
- package/dist/cssm/components/SelectMimicry/SelectMimicry.js.map +1 -1
- package/dist/cssm/components/SimpleCell/SimpleCell.css +1 -1
- package/dist/cssm/components/Tabbar/Tabbar.css +1 -1
- package/dist/cssm/components/Tabbar/Tabbar.js +3 -1
- package/dist/cssm/components/Tabbar/Tabbar.js.map +1 -1
- package/dist/cssm/components/TabbarItem/TabbarItem.css +1 -1
- package/dist/cssm/components/TabbarItem/TabbarItem.js +26 -10
- package/dist/cssm/components/TabbarItem/TabbarItem.js.map +1 -1
- package/dist/cssm/components/TabsItem/TabsItem.css +1 -1
- package/dist/cssm/components/View/View.js +53 -42
- package/dist/cssm/components/View/View.js.map +1 -1
- package/dist/cssm/components/View/ViewInfinite.js +65 -54
- package/dist/cssm/components/View/ViewInfinite.js.map +1 -1
- package/dist/cssm/index.js +2 -0
- package/dist/cssm/index.js.map +1 -1
- package/dist/cssm/lib/prefixClass.js +7 -6
- package/dist/cssm/lib/prefixClass.js.map +1 -1
- package/dist/cssm/styles/components.css +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/prefixClass.js +7 -6
- package/dist/lib/prefixClass.js.map +1 -1
- package/dist/vkui.css +1 -1
- package/dist/vkui.css.map +1 -1
- package/package.json +1 -1
- package/src/components/ActionSheet/ActionSheet.tsx +1 -8
- package/src/components/Avatar/Avatar.tsx +5 -2
- package/src/components/CardScroll/CardScroll.tsx +4 -1
- package/src/components/Cell/Cell.css +22 -45
- package/src/components/Cell/Cell.tsx +101 -162
- package/src/components/Cell/CellCheckbox/CellCheckbox.css +17 -0
- package/src/components/Cell/CellCheckbox/CellCheckbox.tsx +42 -0
- package/src/components/Cell/CellDragger/CellDragger.css +4 -0
- package/src/components/Cell/CellDragger/CellDragger.tsx +40 -0
- package/src/components/Cell/Readme.md +89 -51
- package/src/components/Cell/useDraggable.tsx +112 -0
- package/src/components/ChipsSelect/ChipsSelect.tsx +2 -2
- package/src/components/CustomSelect/CustomSelect.tsx +3 -4
- package/src/components/DropdownIcon/DropdownIcon.css +3 -0
- package/src/components/DropdownIcon/DropdownIcon.tsx +20 -0
- package/src/components/Epic/Readme.md +1 -0
- package/src/components/FocusTrap/FocusTrap.tsx +11 -8
- package/src/components/FormItem/FormItem.css +8 -8
- package/src/components/FormLayoutGroup/FormLayoutGroup.css +9 -3
- package/src/components/FormLayoutGroup/FormLayoutGroup.tsx +10 -1
- package/src/components/GridAvatar/GridAvatar.css +37 -0
- package/src/components/GridAvatar/GridAvatar.tsx +55 -0
- package/src/components/GridAvatar/Readme.md +12 -0
- package/src/components/InitialsAvatar/InitialsAvatar.css +53 -0
- package/src/components/InitialsAvatar/InitialsAvatar.tsx +90 -0
- package/src/components/InitialsAvatar/Readme.md +14 -0
- package/src/components/ModalRoot/Readme.md +2 -2
- package/src/components/NativeSelect/NativeSelect.tsx +2 -2
- package/src/components/Progress/Progress.tsx +8 -3
- package/src/components/Removable/Removable.css +9 -20
- package/src/components/Removable/Removable.tsx +19 -11
- package/src/components/Select/Select.css +1 -1
- package/src/components/SelectMimicry/SelectMimicry.tsx +2 -2
- package/src/components/SimpleCell/SimpleCell.css +10 -27
- package/src/components/Tabbar/Tabbar.css +15 -4
- package/src/components/Tabbar/Tabbar.tsx +3 -1
- package/src/components/TabbarItem/Readme.md +72 -0
- package/src/components/TabbarItem/TabbarItem.css +65 -14
- package/src/components/TabbarItem/TabbarItem.tsx +46 -22
- package/src/components/TabsItem/TabsItem.css +5 -2
- package/src/components/View/View.tsx +37 -31
- package/src/components/View/ViewInfinite.tsx +44 -38
- package/src/index.ts +4 -0
- package/src/lib/prefixClass.ts +9 -6
- package/src/styles/components.css +4 -0
|
@@ -1,58 +1,96 @@
|
|
|
1
1
|
Надстройка над SimpleCell, позволяющая удалять, перетаскивать и выделять ячейки.
|
|
2
2
|
|
|
3
3
|
```jsx
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
4
|
+
const [removeList, updateRemoveList] = React.useState(['Михаил Андриевский', 'Вадим Дорохов', 'Саша Колобов']);
|
|
5
|
+
const [draggingList, updateDraggingList] = React.useState(['Say', 'Hello', 'To', 'My', 'Little', 'Friend']);
|
|
6
|
+
const [dragAndSelectList, updateDragAndSelectList] = React.useState([{ label: 'Фотографии', defaultChecked: true }, { label: 'Музыка' }, { label: 'Видео' }]);
|
|
7
|
+
const [dragAndRemoveList, updateDragAndRemoveList] = React.useState(['Евгения Полозова', 'Артур Стамбульцян', 'Владимир Клепов']);
|
|
8
|
+
|
|
9
|
+
const removeFromList = (idx, list, updateListFn) => {
|
|
10
|
+
const _list = [...list];
|
|
11
|
+
_list.splice(idx, 1);
|
|
12
|
+
updateListFn(_list);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
const reorderList = ({ from, to }, list, updateListFn) => {
|
|
16
|
+
const _list = [...list];
|
|
17
|
+
_list.splice(from, 1);
|
|
18
|
+
_list.splice(to, 0, list[from]);
|
|
19
|
+
updateListFn(_list);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
<View activePanel="list">
|
|
23
|
+
<Panel id="list">
|
|
24
|
+
<PanelHeader>Cell</PanelHeader>
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
<Group header={<Header subtitle={<code>mode="selectable"</code>}>Выделение</Header>}>
|
|
28
|
+
<Cell mode="selectable" before={<Avatar />}>Артур Стамбульцян</Cell>
|
|
29
|
+
<Cell mode="selectable" before={<Avatar />}>Игорь Федоров</Cell>
|
|
30
|
+
<Cell mode="selectable" disabled before={<Avatar />}>Михаил Лихачев</Cell>
|
|
31
|
+
</Group>
|
|
13
32
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
<Group header={<Header mode="secondary">Удаление</Header>}>
|
|
28
|
-
<List>
|
|
29
|
-
{this.state.removeList.map((item, index) => (
|
|
30
|
-
<Cell key={item} removable onRemove={() => {
|
|
31
|
-
this.setState({
|
|
32
|
-
removeList: [...this.state.removeList.slice(0, index), ...this.state.removeList.slice(index + 1)]
|
|
33
|
-
})
|
|
34
|
-
}}>{item}</Cell>
|
|
35
|
-
))}
|
|
36
|
-
</List>
|
|
37
|
-
</Group>
|
|
38
|
-
}
|
|
39
|
-
<Group header={<Header mode="secondary">Перетаскивание</Header>}>
|
|
40
|
-
<List>
|
|
41
|
-
{this.state.draggingList.map((item) => (
|
|
42
|
-
<Cell before={<Avatar />} key={item} draggable onDragFinish={({ from, to }) => {
|
|
43
|
-
const draggingList = [...this.state.draggingList];
|
|
44
|
-
draggingList.splice(from, 1);
|
|
45
|
-
draggingList.splice(to, 0, this.state.draggingList[from]);
|
|
46
|
-
this.setState({ draggingList });
|
|
47
|
-
}}>{item}</Cell>
|
|
48
|
-
))}
|
|
49
|
-
</List>
|
|
50
|
-
</Group>
|
|
51
|
-
</Panel>
|
|
52
|
-
</View>
|
|
53
|
-
)
|
|
33
|
+
|
|
34
|
+
{removeList.length > 0 &&
|
|
35
|
+
<Group header={<Header subtitle={<code>mode="removable"</code>}>Удаление</Header>}>
|
|
36
|
+
<List>
|
|
37
|
+
{removeList.map((item, idx) => (
|
|
38
|
+
<Cell
|
|
39
|
+
key={item}
|
|
40
|
+
mode="removable"
|
|
41
|
+
onRemove={() => removeFromList(idx, removeList, updateRemoveList)}
|
|
42
|
+
>{item}</Cell>
|
|
43
|
+
))}
|
|
44
|
+
</List>
|
|
45
|
+
</Group>
|
|
54
46
|
}
|
|
55
|
-
}
|
|
56
47
|
|
|
57
|
-
|
|
48
|
+
|
|
49
|
+
<Group header={<Header subtitle={<code>draggable</code>}>Перетаскивание</Header>}>
|
|
50
|
+
<List>
|
|
51
|
+
{draggingList.map((item) => (
|
|
52
|
+
<Cell
|
|
53
|
+
key={item}
|
|
54
|
+
before={<Avatar />}
|
|
55
|
+
draggable
|
|
56
|
+
onDragFinish={({ from, to }) => reorderList({from, to}, draggingList, updateDraggingList)}
|
|
57
|
+
>{item}</Cell>
|
|
58
|
+
))}
|
|
59
|
+
</List>
|
|
60
|
+
</Group>
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
<Group header={<Header subtitle={<code>draggable mode="selectable"</code>}>Перетаскивание c выделением</Header>}>
|
|
64
|
+
<List>
|
|
65
|
+
{dragAndSelectList.map(({ label, ...restItem }) => (
|
|
66
|
+
<Cell
|
|
67
|
+
key={label}
|
|
68
|
+
mode="selectable"
|
|
69
|
+
draggable
|
|
70
|
+
before={<Avatar mode="app" size={32} />}
|
|
71
|
+
onDragFinish={({ from, to }) => reorderList({from, to}, dragAndSelectList, updateDragAndSelectList)}
|
|
72
|
+
{...restItem}
|
|
73
|
+
>{label}</Cell>
|
|
74
|
+
))}
|
|
75
|
+
</List>
|
|
76
|
+
</Group>
|
|
77
|
+
|
|
78
|
+
{dragAndRemoveList.length > 0 &&
|
|
79
|
+
<Group header={<Header subtitle={<code>draggable mode="removable"</code>} >Перетаскивание c удалением</Header>}>
|
|
80
|
+
<List>
|
|
81
|
+
{dragAndRemoveList.map((item, idx) => (
|
|
82
|
+
<Cell
|
|
83
|
+
key={item}
|
|
84
|
+
mode="removable"
|
|
85
|
+
draggable
|
|
86
|
+
before={<Avatar />}
|
|
87
|
+
onRemove={() => removeFromList(idx, dragAndRemoveList, updateDragAndRemoveList)}
|
|
88
|
+
onDragFinish={({ from, to }) => reorderList({from, to}, dragAndRemoveList, updateDragAndRemoveList)}
|
|
89
|
+
>{item}</Cell>
|
|
90
|
+
))}
|
|
91
|
+
</List>
|
|
92
|
+
</Group>
|
|
93
|
+
}
|
|
94
|
+
</Panel>
|
|
95
|
+
</View>
|
|
58
96
|
```
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { TouchEvent } from '../Touch/Touch';
|
|
3
|
+
import { CellProps } from './Cell';
|
|
4
|
+
|
|
5
|
+
export interface DraggableProps {
|
|
6
|
+
onDragStart: () => void;
|
|
7
|
+
onDragEnd: () => void;
|
|
8
|
+
onDragMove: (e: TouchEvent) => void;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
interface UseDraggableProps extends DraggableProps {
|
|
12
|
+
dragging: boolean;
|
|
13
|
+
rootElRef: any;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export const useDraggable = ({ onDragFinish }: Pick<CellProps, 'onDragFinish'>) => {
|
|
17
|
+
const [dragging, setDragging] = React.useState<boolean>(false);
|
|
18
|
+
const rootElRef = React.useRef(null);
|
|
19
|
+
|
|
20
|
+
const [siblings, setSiblings] = React.useState<HTMLElement[]>(undefined);
|
|
21
|
+
const [dragStartIndex, setDragStartIndex] = React.useState<number>(undefined);
|
|
22
|
+
const [dragEndIndex, setDragEndIndex] = React.useState<number>(undefined);
|
|
23
|
+
const [dragShift, setDragShift] = React.useState<number>(0);
|
|
24
|
+
const [dragDirection, setDragDirection] = React.useState<'down' | 'up'>(undefined);
|
|
25
|
+
|
|
26
|
+
const onDragStart = () => {
|
|
27
|
+
const rootEl = rootElRef.current;
|
|
28
|
+
|
|
29
|
+
setDragging(true);
|
|
30
|
+
|
|
31
|
+
const _siblings: HTMLElement[] = [...rootEl.parentElement.childNodes];
|
|
32
|
+
const idx = _siblings.indexOf(rootEl);
|
|
33
|
+
|
|
34
|
+
setDragStartIndex(idx);
|
|
35
|
+
setDragEndIndex(idx);
|
|
36
|
+
setSiblings(_siblings);
|
|
37
|
+
setDragShift(0);
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
const onDragMove = (e: TouchEvent) => {
|
|
41
|
+
e.originalEvent.preventDefault();
|
|
42
|
+
|
|
43
|
+
const rootEl = rootElRef.current;
|
|
44
|
+
|
|
45
|
+
rootEl.style.transform = `translateY(${e.shiftY}px)`;
|
|
46
|
+
const rootGesture = rootEl.getBoundingClientRect();
|
|
47
|
+
|
|
48
|
+
setDragDirection(dragShift - e.shiftY < 0 ? 'down' : 'up');
|
|
49
|
+
setDragShift(e.shiftY);
|
|
50
|
+
setDragEndIndex(dragStartIndex);
|
|
51
|
+
|
|
52
|
+
siblings.forEach((sibling: HTMLElement, siblingIndex: number) => {
|
|
53
|
+
const siblingGesture = sibling.getBoundingClientRect();
|
|
54
|
+
const siblingHalfHeight = siblingGesture.height / 2;
|
|
55
|
+
|
|
56
|
+
const rootOverSibling = rootGesture.bottom > siblingGesture.top + siblingHalfHeight;
|
|
57
|
+
const rootUnderSibling = rootGesture.top < siblingGesture.bottom - siblingHalfHeight;
|
|
58
|
+
|
|
59
|
+
if (dragStartIndex < siblingIndex) {
|
|
60
|
+
if (rootOverSibling) {
|
|
61
|
+
if (dragDirection === 'down') {
|
|
62
|
+
sibling.style.transform = 'translateY(-100%)';
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
setDragEndIndex((dragEndIndex) => dragEndIndex + 1);
|
|
66
|
+
}
|
|
67
|
+
if (rootUnderSibling && dragDirection === 'up') {
|
|
68
|
+
sibling.style.transform = 'translateY(0)';
|
|
69
|
+
}
|
|
70
|
+
} else if (dragStartIndex > siblingIndex) {
|
|
71
|
+
if (rootUnderSibling) {
|
|
72
|
+
if (dragDirection === 'up') {
|
|
73
|
+
sibling.style.transform = 'translateY(100%)';
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
setDragEndIndex((dragEndIndex) => dragEndIndex - 1);
|
|
77
|
+
}
|
|
78
|
+
if (rootOverSibling && dragDirection === 'down') {
|
|
79
|
+
sibling.style.transform = 'translateY(0)';
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
const onDragEnd = () => {
|
|
86
|
+
const [from, to] = [dragStartIndex, dragEndIndex];
|
|
87
|
+
|
|
88
|
+
siblings.forEach((sibling: HTMLElement) => {
|
|
89
|
+
sibling.style.transform = null;
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
setSiblings(undefined);
|
|
93
|
+
setDragEndIndex(undefined);
|
|
94
|
+
setDragStartIndex(undefined);
|
|
95
|
+
setDragDirection(undefined);
|
|
96
|
+
setDragShift(undefined);
|
|
97
|
+
|
|
98
|
+
setDragging(false);
|
|
99
|
+
|
|
100
|
+
onDragFinish && onDragFinish({ from, to });
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
const useDraggableProps: UseDraggableProps = {
|
|
104
|
+
onDragStart,
|
|
105
|
+
onDragMove,
|
|
106
|
+
onDragEnd,
|
|
107
|
+
dragging,
|
|
108
|
+
rootElRef,
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
return useDraggableProps;
|
|
112
|
+
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { DropdownIcon } from '../DropdownIcon/DropdownIcon';
|
|
3
3
|
import { classNames } from '../../lib/classNames';
|
|
4
4
|
import Spinner from '../Spinner/Spinner';
|
|
5
5
|
import CustomScrollView from '../CustomScrollView/CustomScrollView';
|
|
@@ -247,7 +247,7 @@ const ChipsSelect = <Option extends ChipsInputOption>(props: ChipsSelectProps<Op
|
|
|
247
247
|
getRef={getRef}
|
|
248
248
|
disabled={disabled}
|
|
249
249
|
onInputChange={handleInputChange}
|
|
250
|
-
after={<
|
|
250
|
+
after={<DropdownIcon />}
|
|
251
251
|
/>
|
|
252
252
|
{opened &&
|
|
253
253
|
<div
|
|
@@ -4,14 +4,14 @@ import { debounce, setRef } from '../../lib/utils';
|
|
|
4
4
|
import { classNames } from '../../lib/classNames';
|
|
5
5
|
import { NativeSelectProps } from '../NativeSelect/NativeSelect';
|
|
6
6
|
import CustomScrollView from '../CustomScrollView/CustomScrollView';
|
|
7
|
-
import {
|
|
7
|
+
import { withAdaptivity } from '../../hoc/withAdaptivity';
|
|
8
8
|
import { withPlatform } from '../../hoc/withPlatform';
|
|
9
9
|
import CustomSelectOption, { CustomSelectOptionProps } from '../CustomSelectOption/CustomSelectOption';
|
|
10
10
|
import { getClassName } from '../../helpers/getClassName';
|
|
11
11
|
import { FormFieldProps } from '../FormField/FormField';
|
|
12
12
|
import { HasPlatform } from '../../types';
|
|
13
13
|
import Input from '../Input/Input';
|
|
14
|
-
import {
|
|
14
|
+
import { DropdownIcon } from '../DropdownIcon/DropdownIcon';
|
|
15
15
|
import Caption from '../Typography/Caption/Caption';
|
|
16
16
|
import { warnOnce } from '../../lib/warnOnce';
|
|
17
17
|
import Spinner from '../Spinner/Spinner';
|
|
@@ -150,7 +150,6 @@ class CustomSelect extends React.Component<CustomSelectProps, CustomSelectState>
|
|
|
150
150
|
}
|
|
151
151
|
}
|
|
152
152
|
|
|
153
|
-
public state: CustomSelectState;
|
|
154
153
|
private keyboardInput: string;
|
|
155
154
|
private isControlledOutside: boolean;
|
|
156
155
|
private selectEl: HTMLSelectElement;
|
|
@@ -576,7 +575,7 @@ class CustomSelect extends React.Component<CustomSelectProps, CustomSelectState>
|
|
|
576
575
|
// TODO Нужно перестать пытаться превратить CustomSelect в select. Тогда эта проблема уйдёт.
|
|
577
576
|
// @ts-ignore
|
|
578
577
|
onClick={onClick}
|
|
579
|
-
after={
|
|
578
|
+
after={<DropdownIcon />}
|
|
580
579
|
placeholder={restProps.placeholder}
|
|
581
580
|
/> :
|
|
582
581
|
<SelectMimicry
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { Icon20Dropdown, Icon24ChevronDown } from '@vkontakte/icons';
|
|
3
|
+
import { SizeType } from '../AdaptivityProvider/AdaptivityContext';
|
|
4
|
+
import { getClassName } from '../../helpers/getClassName';
|
|
5
|
+
import { useAdaptivity } from '../../hooks/useAdaptivity';
|
|
6
|
+
import { usePlatform } from '../../hooks/usePlatform';
|
|
7
|
+
import './DropdownIcon.css';
|
|
8
|
+
|
|
9
|
+
export const DropdownIcon: React.FC<React.HTMLAttributes<HTMLElement>> = (props) => {
|
|
10
|
+
const platform = usePlatform();
|
|
11
|
+
const { sizeY } = useAdaptivity();
|
|
12
|
+
|
|
13
|
+
const Icon = sizeY === SizeType.COMPACT
|
|
14
|
+
? Icon20Dropdown
|
|
15
|
+
: Icon24ChevronDown;
|
|
16
|
+
|
|
17
|
+
return (
|
|
18
|
+
<Icon vkuiClass={getClassName('DropdownIcon', platform)} {...props} />
|
|
19
|
+
);
|
|
20
|
+
};
|
|
@@ -135,6 +135,7 @@ const Example = withAdaptivity(({ viewWidth }) => {
|
|
|
135
135
|
onClick={onStoryChange}
|
|
136
136
|
selected={activeStory === 'profile'}
|
|
137
137
|
data-story="profile"
|
|
138
|
+
indicator={<Badge mode="prominent" />}
|
|
138
139
|
text="Профиль"
|
|
139
140
|
><Icon28UserCircleOutline /></TabbarItem>
|
|
140
141
|
</Tabbar>
|
|
@@ -54,14 +54,17 @@ export const FocusTrap: React.FC<FocusTrapProps> = ({
|
|
|
54
54
|
}
|
|
55
55
|
|
|
56
56
|
const nodes: HTMLElement[] = [];
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
57
|
+
Array.prototype.forEach.call(
|
|
58
|
+
// eslint-disable-next-line no-restricted-properties
|
|
59
|
+
ref.current.querySelectorAll(FOCUSABLE_ELEMENTS),
|
|
60
|
+
(focusableEl: Element) => {
|
|
61
|
+
const { display, visibility } = window.getComputedStyle(focusableEl);
|
|
62
|
+
|
|
63
|
+
if (display !== 'none' && visibility !== 'hidden') {
|
|
64
|
+
nodes.push(focusableEl as HTMLElement);
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
);
|
|
65
68
|
|
|
66
69
|
if (nodes?.length) {
|
|
67
70
|
setFocusableNodes(nodes);
|
|
@@ -56,14 +56,6 @@
|
|
|
56
56
|
--formitem_padding: 12px;
|
|
57
57
|
}
|
|
58
58
|
|
|
59
|
-
.FormLayoutGroup .Removable .FormItem--ios.FormItem--withTop {
|
|
60
|
-
margin-top: -28px;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
.FormLayoutGroup .Removable .FormItem--ios.FormItem--sizeY-compact.FormItem--withTop {
|
|
64
|
-
margin-top: -26px;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
59
|
/**
|
|
68
60
|
* CMP:
|
|
69
61
|
* FormLayoutGroup
|
|
@@ -80,3 +72,11 @@
|
|
|
80
72
|
.FormLayoutGroup--horizontal .FormItem + .FormItem {
|
|
81
73
|
margin-left: 24px;
|
|
82
74
|
}
|
|
75
|
+
|
|
76
|
+
.FormLayoutGroup--removable .FormItem--ios.FormItem--withTop {
|
|
77
|
+
margin-top: -28px;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
.FormLayoutGroup--removable .FormItem--ios.FormItem--withTop.FormItem--sizeY-compact {
|
|
81
|
+
margin-top: -26px;
|
|
82
|
+
}
|
|
@@ -3,9 +3,10 @@
|
|
|
3
3
|
padding: 12px var(--formitem_padding);
|
|
4
4
|
}
|
|
5
5
|
|
|
6
|
-
.
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
.FormLayoutGroup__removable {
|
|
7
|
+
flex-grow: 1;
|
|
8
|
+
min-width: 0;
|
|
9
|
+
max-width: 100%;
|
|
9
10
|
}
|
|
10
11
|
|
|
11
12
|
/**
|
|
@@ -14,3 +15,8 @@
|
|
|
14
15
|
.FormLayoutGroup--ios {
|
|
15
16
|
--formitem_padding: 12px;
|
|
16
17
|
}
|
|
18
|
+
|
|
19
|
+
.FormLayoutGroup--removable {
|
|
20
|
+
padding-left: 0;
|
|
21
|
+
padding-right: 0;
|
|
22
|
+
}
|
|
@@ -42,7 +42,16 @@ const FormLayoutGroup: React.FC<FormLayoutGroupProps> = ({
|
|
|
42
42
|
)}
|
|
43
43
|
{...restProps}>
|
|
44
44
|
{isRemovable
|
|
45
|
-
?
|
|
45
|
+
? (
|
|
46
|
+
<Removable
|
|
47
|
+
vkuiClass="FormLayoutGroup__removable"
|
|
48
|
+
align="start"
|
|
49
|
+
removePlaceholder={removePlaceholder}
|
|
50
|
+
onRemove={(e) => onRemove(e, rootEl?.current)}
|
|
51
|
+
>
|
|
52
|
+
{children}
|
|
53
|
+
</Removable>
|
|
54
|
+
)
|
|
46
55
|
: children
|
|
47
56
|
}
|
|
48
57
|
</div>
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
.GridAvatar__in {
|
|
2
|
+
display: flex;
|
|
3
|
+
flex-flow: column wrap;
|
|
4
|
+
height: 100%;
|
|
5
|
+
width: 100%;
|
|
6
|
+
overflow: hidden;
|
|
7
|
+
border-radius: inherit;
|
|
8
|
+
|
|
9
|
+
--grid-avatar-image-offset: 2px;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
.GridAvatar__item {
|
|
13
|
+
width: calc(50% - var(--grid-avatar-image-offset) / 2);
|
|
14
|
+
height: 100%;
|
|
15
|
+
background-size: cover;
|
|
16
|
+
background-position: center;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.GridAvatar--images-1 .GridAvatar__item {
|
|
20
|
+
width: 100%;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.GridAvatar--images-3 .GridAvatar__item:nth-child(1n + 2),
|
|
24
|
+
.GridAvatar--images-4 .GridAvatar__item {
|
|
25
|
+
height: calc(50% - var(--grid-avatar-image-offset) / 2);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
.GridAvatar--images-2 .GridAvatar__item:nth-child(1n + 2),
|
|
29
|
+
.GridAvatar--images-3 .GridAvatar__item:nth-child(1n + 2),
|
|
30
|
+
.GridAvatar--images-4 .GridAvatar__item:nth-child(1n + 3) {
|
|
31
|
+
margin-left: var(--grid-avatar-image-offset);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.GridAvatar--images-3 .GridAvatar__item:nth-child(2),
|
|
35
|
+
.GridAvatar--images-4 .GridAvatar__item:nth-child(odd) {
|
|
36
|
+
margin-bottom: var(--grid-avatar-image-offset);
|
|
37
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import Avatar, { AVATAR_DEFAULT_SHADOW, AVATAR_DEFAULT_SIZE } from '../Avatar/Avatar';
|
|
3
|
+
import { classNames } from '../../lib/classNames';
|
|
4
|
+
import { warnOnce } from '../../lib/warnOnce';
|
|
5
|
+
import { HasRootRef } from '../../types';
|
|
6
|
+
import './GridAvatar.css';
|
|
7
|
+
|
|
8
|
+
export interface GridAvatarProps extends React.HTMLAttributes<HTMLDivElement>, HasRootRef<HTMLDivElement> {
|
|
9
|
+
src?: string[];
|
|
10
|
+
size?: number;
|
|
11
|
+
shadow?: boolean;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
const MIN_GRID_LENGTH = 1;
|
|
15
|
+
const MAX_GRID_LENGTH = 4;
|
|
16
|
+
|
|
17
|
+
const warn = warnOnce('GridAvatar');
|
|
18
|
+
|
|
19
|
+
export const GridAvatar: React.FC<GridAvatarProps> = ({
|
|
20
|
+
src = [],
|
|
21
|
+
size = AVATAR_DEFAULT_SIZE,
|
|
22
|
+
shadow = AVATAR_DEFAULT_SHADOW,
|
|
23
|
+
...restProps
|
|
24
|
+
}: GridAvatarProps) => {
|
|
25
|
+
if (process.env.NODE_ENV === 'development' && src.length > MAX_GRID_LENGTH) {
|
|
26
|
+
warn(`Размер пропа src (${src.length}) больше максимального (${MAX_GRID_LENGTH})`);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
const count = Math.max(MIN_GRID_LENGTH, Math.min(MAX_GRID_LENGTH, src.length));
|
|
30
|
+
|
|
31
|
+
return (
|
|
32
|
+
<Avatar
|
|
33
|
+
{...restProps}
|
|
34
|
+
vkuiClass={classNames(
|
|
35
|
+
'GridAvatar',
|
|
36
|
+
`GridAvatar--images-${count}`,
|
|
37
|
+
)}
|
|
38
|
+
shadow={shadow}
|
|
39
|
+
size={size}
|
|
40
|
+
>
|
|
41
|
+
<div vkuiClass="GridAvatar__in">
|
|
42
|
+
{src.slice(0, MAX_GRID_LENGTH).map((src, i) => {
|
|
43
|
+
return (
|
|
44
|
+
<div
|
|
45
|
+
key={i}
|
|
46
|
+
vkuiClass="GridAvatar__item"
|
|
47
|
+
style={{ backgroundImage: `url(${src})` }}
|
|
48
|
+
>
|
|
49
|
+
</div>
|
|
50
|
+
);
|
|
51
|
+
})}
|
|
52
|
+
</div>
|
|
53
|
+
</Avatar>
|
|
54
|
+
);
|
|
55
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
Отображение нескольких аватаров в сетке от 1 до 4 элементов.
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
```jsx { "props": { "layout": false, "iframe": false } }
|
|
5
|
+
<div style={{ display: 'flex', padding: 12, gap: 8, flexFlow: 'row wrap' }}>
|
|
6
|
+
<GridAvatar />
|
|
7
|
+
<GridAvatar src={[getAvatarUrl('user_ji')]} />
|
|
8
|
+
<GridAvatar src={[getAvatarUrl('user_wayshev'), getAvatarUrl('user_mm')]} />
|
|
9
|
+
<GridAvatar src={[getAvatarUrl('user_arthurstam'), getAvatarUrl('user_xyz'), getAvatarUrl('user_ox')]} />
|
|
10
|
+
<GridAvatar src={[getAvatarUrl('user_ilyagrshn'), getAvatarUrl('user_tc'), getAvatarUrl('user_lihachyov'), getAvatarUrl('user_va')]} />
|
|
11
|
+
</div>
|
|
12
|
+
```
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
.InitialsAvatar {
|
|
2
|
+
overflow: hidden;
|
|
3
|
+
background: #99a2ad;
|
|
4
|
+
background: linear-gradient(135deg, #b1b6bd, #99a2ad);
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
.InitialsAvatar__text {
|
|
8
|
+
font-family: var(--font-tt);
|
|
9
|
+
font-weight: 600;
|
|
10
|
+
color: var(--white); /* stylelint-disable-line plugin/only-tokens-are-allowed */
|
|
11
|
+
text-transform: uppercase;
|
|
12
|
+
text-align: center;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.InitialsAvatar--color-red {
|
|
16
|
+
background: #e52e40;
|
|
17
|
+
background: linear-gradient(135deg, #ff7583, #e52e40);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.InitialsAvatar--color-pink {
|
|
21
|
+
background: #e62e6b;
|
|
22
|
+
background: linear-gradient(135deg, #ff8880, #e62e6b);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
.InitialsAvatar--color-orange {
|
|
26
|
+
background: #e66b2e;
|
|
27
|
+
background: linear-gradient(135deg, #ffbf80, #e66b2e);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.InitialsAvatar--color-yellow {
|
|
31
|
+
background: #e7a902;
|
|
32
|
+
background: linear-gradient(135deg, #ffd54f, #e7a902);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.InitialsAvatar--color-green {
|
|
36
|
+
background: #6cd97e;
|
|
37
|
+
background: linear-gradient(135deg, #6cd97e, #12b212);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.InitialsAvatar--color-l-blue {
|
|
41
|
+
background: #2bb4d6;
|
|
42
|
+
background: linear-gradient(135deg, #7df1fa, #2bb4d6);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.InitialsAvatar--color-blue {
|
|
46
|
+
background: #3f8ae0;
|
|
47
|
+
background: linear-gradient(135deg, #6cf, #3f8ae0);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.InitialsAvatar--color-violet {
|
|
51
|
+
background: #8f3fe0;
|
|
52
|
+
background: linear-gradient(135deg, #d3a6ff, #8f3fe0);
|
|
53
|
+
}
|