@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
|
@@ -4,9 +4,15 @@ import Counter from '../Counter/Counter';
|
|
|
4
4
|
import { classNames } from '../../lib/classNames';
|
|
5
5
|
import { usePlatform } from '../../hooks/usePlatform';
|
|
6
6
|
import { hasReactNode } from '../../lib/utils';
|
|
7
|
+
import Tappable from '../Tappable/Tappable';
|
|
8
|
+
import { Platform } from '../../lib/platform';
|
|
9
|
+
import { HasComponent, HasRootRef } from '../../types';
|
|
7
10
|
import './TabbarItem.css';
|
|
8
11
|
|
|
9
|
-
export interface TabbarItemProps extends
|
|
12
|
+
export interface TabbarItemProps extends
|
|
13
|
+
Omit<React.AllHTMLAttributes<HTMLElement>, 'label'>, // TODO убрать Omit после удаления свойства label
|
|
14
|
+
HasRootRef<HTMLElement>,
|
|
15
|
+
HasComponent {
|
|
10
16
|
selected?: boolean;
|
|
11
17
|
/**
|
|
12
18
|
* Тест рядом с иконкой
|
|
@@ -22,31 +28,49 @@ export interface TabbarItemProps extends React.HTMLAttributes<HTMLElement>, Reac
|
|
|
22
28
|
label?: React.ReactNode;
|
|
23
29
|
}
|
|
24
30
|
|
|
25
|
-
const TabbarItem: React.FunctionComponent<TabbarItemProps> = (
|
|
26
|
-
|
|
31
|
+
const TabbarItem: React.FunctionComponent<TabbarItemProps> = ({
|
|
32
|
+
children,
|
|
33
|
+
selected,
|
|
34
|
+
label,
|
|
35
|
+
indicator,
|
|
36
|
+
text,
|
|
37
|
+
href,
|
|
38
|
+
Component = href ? 'a' : 'button',
|
|
39
|
+
disabled,
|
|
40
|
+
...restProps
|
|
41
|
+
}: TabbarItemProps) => {
|
|
27
42
|
const platform = usePlatform();
|
|
28
|
-
const Component: React.ElementType = restProps.href ? 'a' : 'div';
|
|
29
43
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
44
|
+
// @ts-ignore ругается на то, что у AllHTMLAttributes type это строка, а button не любую строку считает валидным значением
|
|
45
|
+
return (<Component
|
|
46
|
+
{...restProps}
|
|
47
|
+
disabled={disabled}
|
|
48
|
+
href={href}
|
|
49
|
+
vkuiClass={classNames(getClassName('TabbarItem', platform), {
|
|
50
|
+
'TabbarItem--selected': selected,
|
|
51
|
+
'TabbarItem--text': !!text,
|
|
52
|
+
})}
|
|
53
|
+
>
|
|
54
|
+
<Tappable
|
|
55
|
+
role="presentation"
|
|
56
|
+
Component="div"
|
|
57
|
+
disabled={disabled}
|
|
58
|
+
activeMode={platform === Platform.IOS ? 'TabbarItem__tappable--active' : 'background'}
|
|
59
|
+
activeEffectDelay={platform === Platform.IOS ? 0 : 300}
|
|
60
|
+
hasHover={false}
|
|
61
|
+
vkuiClass="TabbarItem__tappable"
|
|
62
|
+
/>
|
|
63
|
+
<div vkuiClass="TabbarItem__in">
|
|
64
|
+
<div vkuiClass="TabbarItem__icon">
|
|
65
|
+
{children}
|
|
66
|
+
<div vkuiClass="TabbarItem__label">
|
|
67
|
+
{hasReactNode(indicator) && indicator}
|
|
68
|
+
{!indicator && label && <Counter size="s" mode="prominent">{label}</Counter>}
|
|
45
69
|
</div>
|
|
46
|
-
{text && <div vkuiClass="TabbarItem__text">{text}</div>}
|
|
47
70
|
</div>
|
|
48
|
-
|
|
49
|
-
|
|
71
|
+
{text && <div vkuiClass="TabbarItem__text">{text}</div>}
|
|
72
|
+
</div>
|
|
73
|
+
</Component>);
|
|
50
74
|
};
|
|
51
75
|
|
|
52
76
|
export default TabbarItem;
|
|
@@ -106,6 +106,7 @@
|
|
|
106
106
|
flex-basis: 0;
|
|
107
107
|
flex-shrink: 0;
|
|
108
108
|
flex-grow: 1;
|
|
109
|
+
border-radius: 0;
|
|
109
110
|
}
|
|
110
111
|
|
|
111
112
|
.Tabs--ios.Tabs--segmented .TabsItem__in {
|
|
@@ -117,11 +118,13 @@
|
|
|
117
118
|
}
|
|
118
119
|
|
|
119
120
|
.Tabs--ios.Tabs--segmented .TabsItem:last-child {
|
|
120
|
-
border-radius:
|
|
121
|
+
border-top-right-radius: 10px;
|
|
122
|
+
border-bottom-right-radius: 10px;
|
|
121
123
|
}
|
|
122
124
|
|
|
123
125
|
.Tabs--ios.Tabs--segmented .TabsItem:first-child {
|
|
124
|
-
border-radius: 10px
|
|
126
|
+
border-top-left-radius: 10px;
|
|
127
|
+
border-bottom-left-radius: 10px;
|
|
125
128
|
}
|
|
126
129
|
|
|
127
130
|
.Tabs--ios.Tabs--segmented .TabsItem {
|
|
@@ -159,23 +159,27 @@ class View extends React.Component<ViewProps & DOMProps, ViewState> {
|
|
|
159
159
|
.find((id) => id === prevProps.activePanel || id === this.props.activePanel);
|
|
160
160
|
|
|
161
161
|
const isBack = firstLayerId === this.props.activePanel;
|
|
162
|
+
this.scrolls[prevProps.activePanel] = this.props.scroll.getScroll().y;
|
|
162
163
|
|
|
163
|
-
this.
|
|
164
|
+
if (this.shouldDisableTransitionMotion()) {
|
|
165
|
+
this.flushTransition(prevProps.activePanel, isBack);
|
|
166
|
+
} else {
|
|
167
|
+
this.blurActiveElement();
|
|
164
168
|
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
});
|
|
169
|
+
this.setState({
|
|
170
|
+
visiblePanels: [prevProps.activePanel, this.props.activePanel],
|
|
171
|
+
prevPanel: prevProps.activePanel,
|
|
172
|
+
nextPanel: this.props.activePanel,
|
|
173
|
+
activePanel: null,
|
|
174
|
+
animated: true,
|
|
175
|
+
isBack,
|
|
176
|
+
});
|
|
174
177
|
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
178
|
+
// Фолбек анимации перехода
|
|
179
|
+
if (!animationEvent.supported) {
|
|
180
|
+
clearTimeout(this.animationFinishTimeout);
|
|
181
|
+
this.animationFinishTimeout = setTimeout(this.transitionEndHandler, this.props.platform === ANDROID || this.props.platform === VKCOM ? 300 : 600);
|
|
182
|
+
}
|
|
179
183
|
}
|
|
180
184
|
}
|
|
181
185
|
|
|
@@ -252,6 +256,24 @@ class View extends React.Component<ViewProps & DOMProps, ViewState> {
|
|
|
252
256
|
return this.panelNodes[id];
|
|
253
257
|
}
|
|
254
258
|
|
|
259
|
+
flushTransition(prevPanel: string, isBack: boolean) {
|
|
260
|
+
const activePanel = this.props.activePanel;
|
|
261
|
+
if (isBack) {
|
|
262
|
+
this.scrolls[prevPanel] = 0;
|
|
263
|
+
}
|
|
264
|
+
this.setState({
|
|
265
|
+
prevPanel: null,
|
|
266
|
+
nextPanel: null,
|
|
267
|
+
visiblePanels: [activePanel],
|
|
268
|
+
activePanel,
|
|
269
|
+
animated: false,
|
|
270
|
+
isBack: undefined,
|
|
271
|
+
}, () => {
|
|
272
|
+
this.props.scroll.scrollTo(0, isBack ? this.scrolls[activePanel] : 0);
|
|
273
|
+
this.props.onTransition && this.props.onTransition({ isBack, from: prevPanel, to: activePanel });
|
|
274
|
+
});
|
|
275
|
+
}
|
|
276
|
+
|
|
255
277
|
transitionEndHandler = (e?: React.AnimationEvent): void => {
|
|
256
278
|
if (!e || [
|
|
257
279
|
'vkui-animation-ios-next-forward',
|
|
@@ -259,23 +281,7 @@ class View extends React.Component<ViewProps & DOMProps, ViewState> {
|
|
|
259
281
|
'vkui-animation-view-next-forward',
|
|
260
282
|
'vkui-animation-view-prev-back',
|
|
261
283
|
].includes(e.animationName)) {
|
|
262
|
-
|
|
263
|
-
const isBack = this.state.isBack;
|
|
264
|
-
const prevPanel = this.state.prevPanel;
|
|
265
|
-
if (isBack) {
|
|
266
|
-
this.scrolls[prevPanel] = 0;
|
|
267
|
-
}
|
|
268
|
-
this.setState({
|
|
269
|
-
prevPanel: null,
|
|
270
|
-
nextPanel: null,
|
|
271
|
-
visiblePanels: [activePanel],
|
|
272
|
-
activePanel: activePanel,
|
|
273
|
-
animated: false,
|
|
274
|
-
isBack: undefined,
|
|
275
|
-
}, () => {
|
|
276
|
-
isBack && this.props.scroll.scrollTo(0, this.scrolls[activePanel]);
|
|
277
|
-
this.props.onTransition && this.props.onTransition({ isBack, from: prevPanel, to: activePanel });
|
|
278
|
-
});
|
|
284
|
+
this.flushTransition(this.state.prevPanel, this.state.isBack);
|
|
279
285
|
}
|
|
280
286
|
};
|
|
281
287
|
|
|
@@ -167,19 +167,23 @@ class ViewInfinite extends React.Component<ViewInfiniteProps & DOMProps, ViewInf
|
|
|
167
167
|
};
|
|
168
168
|
this.scrolls = scrolls;
|
|
169
169
|
|
|
170
|
-
this.
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
170
|
+
if (this.shouldDisableTransitionMotion()) {
|
|
171
|
+
this.flushTransition(prevProps.activePanel, isBack);
|
|
172
|
+
} else {
|
|
173
|
+
this.setState({
|
|
174
|
+
visiblePanels: [prevProps.activePanel, this.props.activePanel],
|
|
175
|
+
prevPanel: prevProps.activePanel,
|
|
176
|
+
nextPanel: this.props.activePanel,
|
|
177
|
+
activePanel: null,
|
|
178
|
+
animated: true,
|
|
179
|
+
isBack,
|
|
180
|
+
});
|
|
178
181
|
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
182
|
+
// Фолбек анимации перехода
|
|
183
|
+
if (!animationEvent.supported) {
|
|
184
|
+
clearTimeout(this.animationFinishTimeout);
|
|
185
|
+
this.animationFinishTimeout = setTimeout(this.transitionEndHandler, this.props.platform === ANDROID || this.props.platform === VKCOM ? 300 : 600);
|
|
186
|
+
}
|
|
183
187
|
}
|
|
184
188
|
}
|
|
185
189
|
|
|
@@ -272,6 +276,33 @@ class ViewInfinite extends React.Component<ViewInfiniteProps & DOMProps, ViewInf
|
|
|
272
276
|
return this.panelNodes[id];
|
|
273
277
|
}
|
|
274
278
|
|
|
279
|
+
flushTransition(prevPanel: string, isBack: boolean) {
|
|
280
|
+
const activePanel = this.props.activePanel;
|
|
281
|
+
|
|
282
|
+
const prevPanelScrolls = [...this.scrolls[prevPanel] || []].slice(0, -1);
|
|
283
|
+
const newPanelScrolls = [...this.scrolls[activePanel] || []];
|
|
284
|
+
const scrollPosition = isBack ? newPanelScrolls.pop() : 0;
|
|
285
|
+
if (isBack) {
|
|
286
|
+
this.scrolls = {
|
|
287
|
+
...this.scrolls,
|
|
288
|
+
[prevPanel]: prevPanelScrolls,
|
|
289
|
+
[activePanel]: newPanelScrolls,
|
|
290
|
+
};
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
this.setState({
|
|
294
|
+
prevPanel: null,
|
|
295
|
+
nextPanel: null,
|
|
296
|
+
visiblePanels: [activePanel],
|
|
297
|
+
activePanel: activePanel,
|
|
298
|
+
animated: false,
|
|
299
|
+
isBack: undefined,
|
|
300
|
+
}, () => {
|
|
301
|
+
this.props.scroll.scrollTo(0, isBack ? scrollPosition : 0);
|
|
302
|
+
this.props.onTransition && this.props.onTransition({ isBack, from: prevPanel, to: activePanel });
|
|
303
|
+
});
|
|
304
|
+
}
|
|
305
|
+
|
|
275
306
|
transitionEndHandler = (e?: React.AnimationEvent): void => {
|
|
276
307
|
if (!e || [
|
|
277
308
|
'vkui-animation-ios-next-forward',
|
|
@@ -279,32 +310,7 @@ class ViewInfinite extends React.Component<ViewInfiniteProps & DOMProps, ViewInf
|
|
|
279
310
|
'vkui-animation-view-next-forward',
|
|
280
311
|
'vkui-animation-view-prev-back',
|
|
281
312
|
].includes(e.animationName)) {
|
|
282
|
-
|
|
283
|
-
const prevPanel = this.state.prevPanel;
|
|
284
|
-
const isBack = this.state.isBack;
|
|
285
|
-
|
|
286
|
-
const prevPanelScrolls = [...this.scrolls[prevPanel] || []].slice(0, -1);
|
|
287
|
-
const newPanelScrolls = [...this.scrolls[activePanel] || []];
|
|
288
|
-
const scrollPosition = isBack ? newPanelScrolls.pop() : 0;
|
|
289
|
-
if (isBack) {
|
|
290
|
-
this.scrolls = {
|
|
291
|
-
...this.scrolls,
|
|
292
|
-
[prevPanel]: prevPanelScrolls,
|
|
293
|
-
[activePanel]: newPanelScrolls,
|
|
294
|
-
};
|
|
295
|
-
}
|
|
296
|
-
|
|
297
|
-
this.setState({
|
|
298
|
-
prevPanel: null,
|
|
299
|
-
nextPanel: null,
|
|
300
|
-
visiblePanels: [activePanel],
|
|
301
|
-
activePanel: activePanel,
|
|
302
|
-
animated: false,
|
|
303
|
-
isBack: undefined,
|
|
304
|
-
}, () => {
|
|
305
|
-
isBack && this.props.scroll.scrollTo(0, scrollPosition);
|
|
306
|
-
this.props.onTransition && this.props.onTransition({ isBack, from: prevPanel, to: activePanel });
|
|
307
|
-
});
|
|
313
|
+
this.flushTransition(this.state.prevPanel, this.state.isBack);
|
|
308
314
|
}
|
|
309
315
|
};
|
|
310
316
|
|
package/src/index.ts
CHANGED
|
@@ -109,6 +109,10 @@ export { default as Gallery } from './components/Gallery/Gallery';
|
|
|
109
109
|
export type { GalleryProps } from './components/Gallery/Gallery';
|
|
110
110
|
export { default as Avatar } from './components/Avatar/Avatar';
|
|
111
111
|
export type { AvatarProps } from './components/Avatar/Avatar';
|
|
112
|
+
export { GridAvatar } from './components/GridAvatar/GridAvatar';
|
|
113
|
+
export type { GridAvatarProps } from './components/GridAvatar/GridAvatar';
|
|
114
|
+
export { InitialsAvatar } from './components/InitialsAvatar/InitialsAvatar';
|
|
115
|
+
export type { InitialsAvatarProps } from './components/InitialsAvatar/InitialsAvatar';
|
|
112
116
|
export { default as Progress } from './components/Progress/Progress';
|
|
113
117
|
export type { ProgressProps } from './components/Progress/Progress';
|
|
114
118
|
export { default as Search } from './components/Search/Search';
|
package/src/lib/prefixClass.ts
CHANGED
|
@@ -16,13 +16,16 @@ function prefixSingle(scopedStyle: string): string {
|
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
export function prefixClass(scopedStyle?: string | string[]) {
|
|
19
|
-
let resolved = '';
|
|
20
19
|
if (typeof scopedStyle === 'string') {
|
|
21
|
-
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
20
|
+
return prefixSingle(scopedStyle);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
let resolved = '';
|
|
24
|
+
for (let i = 0; i < scopedStyle.length; i++) {
|
|
25
|
+
const separator = resolved ? ' ' : '';
|
|
26
|
+
|
|
27
|
+
resolved += separator + prefixSingle(scopedStyle[i]);
|
|
26
28
|
}
|
|
29
|
+
|
|
27
30
|
return resolved;
|
|
28
31
|
}
|
|
@@ -71,6 +71,8 @@
|
|
|
71
71
|
@import '../components/Gradient/Gradient.css';
|
|
72
72
|
@import '../components/SimpleCell/SimpleCell.css';
|
|
73
73
|
@import '../components/Cell/Cell.css';
|
|
74
|
+
@import '../components/Cell/CellCheckbox/CellCheckbox.css';
|
|
75
|
+
@import '../components/Cell/CellDragger/CellDragger.css';
|
|
74
76
|
@import '../components/CellButton/CellButton.css';
|
|
75
77
|
@import '../components/RichCell/RichCell.css';
|
|
76
78
|
@import '../components/HorizontalCell/HorizontalCell.css';
|
|
@@ -80,6 +82,8 @@
|
|
|
80
82
|
@import '../components/Switch/Switch.css';
|
|
81
83
|
@import '../components/InfoRow/InfoRow.css';
|
|
82
84
|
@import '../components/Avatar/Avatar.css';
|
|
85
|
+
@import '../components/InitialsAvatar/InitialsAvatar.css';
|
|
86
|
+
@import '../components/GridAvatar/GridAvatar.css';
|
|
83
87
|
@import '../components/Gallery/Gallery.css';
|
|
84
88
|
@import '../components/Progress/Progress.css';
|
|
85
89
|
@import '../components/Search/Search.css';
|