@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
|
@@ -23,22 +23,40 @@ var _usePlatform = require("../../hooks/usePlatform");
|
|
|
23
23
|
|
|
24
24
|
var _utils = require("../../lib/utils");
|
|
25
25
|
|
|
26
|
-
var
|
|
27
|
-
|
|
28
|
-
var
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
26
|
+
var _Tappable = _interopRequireDefault(require("../Tappable/Tappable"));
|
|
27
|
+
|
|
28
|
+
var _platform = require("../../lib/platform");
|
|
29
|
+
|
|
30
|
+
var _excluded = ["children", "selected", "label", "indicator", "text", "href", "Component", "disabled"];
|
|
31
|
+
|
|
32
|
+
var TabbarItem = function TabbarItem(_ref) {
|
|
33
|
+
var children = _ref.children,
|
|
34
|
+
selected = _ref.selected,
|
|
35
|
+
label = _ref.label,
|
|
36
|
+
indicator = _ref.indicator,
|
|
37
|
+
text = _ref.text,
|
|
38
|
+
href = _ref.href,
|
|
39
|
+
_ref$Component = _ref.Component,
|
|
40
|
+
Component = _ref$Component === void 0 ? href ? 'a' : 'button' : _ref$Component,
|
|
41
|
+
disabled = _ref.disabled,
|
|
42
|
+
restProps = (0, _objectWithoutProperties2.default)(_ref, _excluded);
|
|
43
|
+
var platform = (0, _usePlatform.usePlatform)(); // @ts-ignore ругается на то, что у AllHTMLAttributes type это строка, а button не любую строку считает валидным значением
|
|
44
|
+
|
|
37
45
|
return (0, _jsxRuntime.createScopedElement)(Component, (0, _extends2.default)({}, restProps, {
|
|
46
|
+
disabled: disabled,
|
|
47
|
+
href: href,
|
|
38
48
|
vkuiClass: (0, _classNames.classNames)((0, _getClassName.getClassName)('TabbarItem', platform), {
|
|
39
49
|
'TabbarItem--selected': selected,
|
|
40
50
|
'TabbarItem--text': !!text
|
|
41
51
|
})
|
|
52
|
+
}), (0, _jsxRuntime.createScopedElement)(_Tappable.default, {
|
|
53
|
+
role: "presentation",
|
|
54
|
+
Component: "div",
|
|
55
|
+
disabled: disabled,
|
|
56
|
+
activeMode: platform === _platform.Platform.IOS ? 'TabbarItem__tappable--active' : 'background',
|
|
57
|
+
activeEffectDelay: platform === _platform.Platform.IOS ? 0 : 300,
|
|
58
|
+
hasHover: false,
|
|
59
|
+
vkuiClass: "TabbarItem__tappable"
|
|
42
60
|
}), (0, _jsxRuntime.createScopedElement)("div", {
|
|
43
61
|
vkuiClass: "TabbarItem__in"
|
|
44
62
|
}, (0, _jsxRuntime.createScopedElement)("div", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/TabbarItem/TabbarItem.tsx"],"names":["TabbarItem","
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/TabbarItem/TabbarItem.tsx"],"names":["TabbarItem","children","selected","label","indicator","text","href","Component","disabled","restProps","platform","Platform","IOS"],"mappings":";;;;;;;;;;;;;;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;AAuBA,IAAMA,UAAoD,GAAG,SAAvDA,UAAuD,OAUtC;AAAA,MATrBC,QASqB,QATrBA,QASqB;AAAA,MARrBC,QAQqB,QARrBA,QAQqB;AAAA,MAPrBC,KAOqB,QAPrBA,KAOqB;AAAA,MANrBC,SAMqB,QANrBA,SAMqB;AAAA,MALrBC,IAKqB,QALrBA,IAKqB;AAAA,MAJrBC,IAIqB,QAJrBA,IAIqB;AAAA,4BAHrBC,SAGqB;AAAA,MAHrBA,SAGqB,+BAHTD,IAAI,GAAG,GAAH,GAAS,QAGJ;AAAA,MAFrBE,QAEqB,QAFrBA,QAEqB;AAAA,MADlBC,SACkB;AACrB,MAAMC,QAAQ,GAAG,+BAAjB,CADqB,CAGrB;;AACA,SAAQ,qCAAC,SAAD,6BACFD,SADE;AAEN,IAAA,QAAQ,EAAED,QAFJ;AAGN,IAAA,IAAI,EAAEF,IAHA;AAIN,IAAA,SAAS,EAAE,4BAAW,gCAAa,YAAb,EAA2BI,QAA3B,CAAX,EAAiD;AAC1D,8BAAwBR,QADkC;AAE1D,0BAAoB,CAAC,CAACG;AAFoC,KAAjD;AAJL,MASN,qCAAC,iBAAD;AACE,IAAA,IAAI,EAAC,cADP;AAEE,IAAA,SAAS,EAAC,KAFZ;AAGE,IAAA,QAAQ,EAAEG,QAHZ;AAIE,IAAA,UAAU,EAAEE,QAAQ,KAAKC,mBAASC,GAAtB,GAA4B,8BAA5B,GAA6D,YAJ3E;AAKE,IAAA,iBAAiB,EAAEF,QAAQ,KAAKC,mBAASC,GAAtB,GAA4B,CAA5B,GAAgC,GALrD;AAME,IAAA,QAAQ,EAAE,KANZ;AAOE,IAAA,SAAS,EAAC;AAPZ,IATM,EAkBN;AAAK,IAAA,SAAS,EAAC;AAAf,KACE;AAAK,IAAA,SAAS,EAAC;AAAf,KACGX,QADH,EAEE;AAAK,IAAA,SAAS,EAAC;AAAf,KACG,yBAAaG,SAAb,KAA2BA,SAD9B,EAEG,CAACA,SAAD,IAAcD,KAAd,IAAuB,qCAAC,gBAAD;AAAS,IAAA,IAAI,EAAC,GAAd;AAAkB,IAAA,IAAI,EAAC;AAAvB,KAAoCA,KAApC,CAF1B,CAFF,CADF,EAQGE,IAAI,IAAI;AAAK,IAAA,SAAS,EAAC;AAAf,KAAmCA,IAAnC,CARX,CAlBM,CAAR;AA6BD,CA3CD;;eA6CeL,U","sourcesContent":["import * as React from 'react';\nimport { getClassName } from '../../helpers/getClassName';\nimport Counter from '../Counter/Counter';\nimport { classNames } from '../../lib/classNames';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { hasReactNode } from '../../lib/utils';\nimport Tappable from '../Tappable/Tappable';\nimport { Platform } from '../../lib/platform';\nimport { HasComponent, HasRootRef } from '../../types';\nimport './TabbarItem.css';\n\nexport interface TabbarItemProps extends\n Omit<React.AllHTMLAttributes<HTMLElement>, 'label'>, // TODO убрать Omit после удаления свойства label\n HasRootRef<HTMLElement>,\n HasComponent {\n selected?: boolean;\n /**\n * Тест рядом с иконкой\n */\n text?: React.ReactNode;\n /**\n * Индикатор над иконкой. Принимает `<Badge mode=\"prominent\" />` или `<Counter size=\"s\" mode=\"prominent\" />`\n */\n indicator?: React.ReactNode;\n /**\n * @deprecated будет удалено в 5.0.0. Используйте `indicator`\n */\n label?: React.ReactNode;\n}\n\nconst TabbarItem: React.FunctionComponent<TabbarItemProps> = ({\n children,\n selected,\n label,\n indicator,\n text,\n href,\n Component = href ? 'a' : 'button',\n disabled,\n ...restProps\n}: TabbarItemProps) => {\n const platform = usePlatform();\n\n // @ts-ignore ругается на то, что у AllHTMLAttributes type это строка, а button не любую строку считает валидным значением\n return (<Component\n {...restProps}\n disabled={disabled}\n href={href}\n vkuiClass={classNames(getClassName('TabbarItem', platform), {\n 'TabbarItem--selected': selected,\n 'TabbarItem--text': !!text,\n })}\n >\n <Tappable\n role=\"presentation\"\n Component=\"div\"\n disabled={disabled}\n activeMode={platform === Platform.IOS ? 'TabbarItem__tappable--active' : 'background'}\n activeEffectDelay={platform === Platform.IOS ? 0 : 300}\n hasHover={false}\n vkuiClass=\"TabbarItem__tappable\"\n />\n <div vkuiClass=\"TabbarItem__in\">\n <div vkuiClass=\"TabbarItem__icon\">\n {children}\n <div vkuiClass=\"TabbarItem__label\">\n {hasReactNode(indicator) && indicator}\n {!indicator && label && <Counter size=\"s\" mode=\"prominent\">{label}</Counter>}\n </div>\n </div>\n {text && <div vkuiClass=\"TabbarItem__text\">{text}</div>}\n </div>\n </Component>);\n};\n\nexport default TabbarItem;\n"],"file":"TabbarItem.js"}
|
|
@@ -89,29 +89,7 @@ var View = /*#__PURE__*/function (_React$Component) {
|
|
|
89
89
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "panelNodes", {});
|
|
90
90
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "transitionEndHandler", function (e) {
|
|
91
91
|
if (!e || ['vkui-animation-ios-next-forward', 'vkui-animation-ios-prev-back', 'vkui-animation-view-next-forward', 'vkui-animation-view-prev-back'].includes(e.animationName)) {
|
|
92
|
-
|
|
93
|
-
var isBack = _this.state.isBack;
|
|
94
|
-
var prevPanel = _this.state.prevPanel;
|
|
95
|
-
|
|
96
|
-
if (isBack) {
|
|
97
|
-
_this.scrolls[prevPanel] = 0;
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
_this.setState({
|
|
101
|
-
prevPanel: null,
|
|
102
|
-
nextPanel: null,
|
|
103
|
-
visiblePanels: [activePanel],
|
|
104
|
-
activePanel: activePanel,
|
|
105
|
-
animated: false,
|
|
106
|
-
isBack: undefined
|
|
107
|
-
}, function () {
|
|
108
|
-
isBack && _this.props.scroll.scrollTo(0, _this.scrolls[activePanel]);
|
|
109
|
-
_this.props.onTransition && _this.props.onTransition({
|
|
110
|
-
isBack: isBack,
|
|
111
|
-
from: prevPanel,
|
|
112
|
-
to: activePanel
|
|
113
|
-
});
|
|
114
|
-
});
|
|
92
|
+
_this.flushTransition(_this.state.prevPanel, _this.state.isBack);
|
|
115
93
|
}
|
|
116
94
|
});
|
|
117
95
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "swipingBackTransitionEndHandler", function (e) {
|
|
@@ -253,20 +231,25 @@ var View = /*#__PURE__*/function (_React$Component) {
|
|
|
253
231
|
return id === prevProps.activePanel || id === _this2.props.activePanel;
|
|
254
232
|
});
|
|
255
233
|
var isBack = firstLayerId === this.props.activePanel;
|
|
256
|
-
this.blurActiveElement();
|
|
257
234
|
this.scrolls[prevProps.activePanel] = this.props.scroll.getScroll().y;
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
235
|
+
|
|
236
|
+
if (this.shouldDisableTransitionMotion()) {
|
|
237
|
+
this.flushTransition(prevProps.activePanel, isBack);
|
|
238
|
+
} else {
|
|
239
|
+
this.blurActiveElement();
|
|
240
|
+
this.setState({
|
|
241
|
+
visiblePanels: [prevProps.activePanel, this.props.activePanel],
|
|
242
|
+
prevPanel: prevProps.activePanel,
|
|
243
|
+
nextPanel: this.props.activePanel,
|
|
244
|
+
activePanel: null,
|
|
245
|
+
animated: true,
|
|
246
|
+
isBack: isBack
|
|
247
|
+
}); // Фолбек анимации перехода
|
|
248
|
+
|
|
249
|
+
if (!_supportEvents.animationEvent.supported) {
|
|
250
|
+
clearTimeout(this.animationFinishTimeout);
|
|
251
|
+
this.animationFinishTimeout = setTimeout(this.transitionEndHandler, this.props.platform === _platform.ANDROID || this.props.platform === _platform.VKCOM ? 300 : 600);
|
|
252
|
+
}
|
|
270
253
|
}
|
|
271
254
|
} // Закончилась анимация свайпа назад
|
|
272
255
|
|
|
@@ -350,6 +333,34 @@ var View = /*#__PURE__*/function (_React$Component) {
|
|
|
350
333
|
value: function pickPanel(id) {
|
|
351
334
|
return this.panelNodes[id];
|
|
352
335
|
}
|
|
336
|
+
}, {
|
|
337
|
+
key: "flushTransition",
|
|
338
|
+
value: function flushTransition(prevPanel, isBack) {
|
|
339
|
+
var _this3 = this;
|
|
340
|
+
|
|
341
|
+
var activePanel = this.props.activePanel;
|
|
342
|
+
|
|
343
|
+
if (isBack) {
|
|
344
|
+
this.scrolls[prevPanel] = 0;
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
this.setState({
|
|
348
|
+
prevPanel: null,
|
|
349
|
+
nextPanel: null,
|
|
350
|
+
visiblePanels: [activePanel],
|
|
351
|
+
activePanel: activePanel,
|
|
352
|
+
animated: false,
|
|
353
|
+
isBack: undefined
|
|
354
|
+
}, function () {
|
|
355
|
+
_this3.props.scroll.scrollTo(0, isBack ? _this3.scrolls[activePanel] : 0);
|
|
356
|
+
|
|
357
|
+
_this3.props.onTransition && _this3.props.onTransition({
|
|
358
|
+
isBack: isBack,
|
|
359
|
+
from: prevPanel,
|
|
360
|
+
to: activePanel
|
|
361
|
+
});
|
|
362
|
+
});
|
|
363
|
+
}
|
|
353
364
|
}, {
|
|
354
365
|
key: "onSwipeBackSuccess",
|
|
355
366
|
value: function onSwipeBackSuccess() {
|
|
@@ -412,7 +423,7 @@ var View = /*#__PURE__*/function (_React$Component) {
|
|
|
412
423
|
}, {
|
|
413
424
|
key: "render",
|
|
414
425
|
value: function render() {
|
|
415
|
-
var
|
|
426
|
+
var _this4 = this;
|
|
416
427
|
|
|
417
428
|
var _this$props2 = this.props,
|
|
418
429
|
popout = _this$props2.popout,
|
|
@@ -444,7 +455,7 @@ var View = /*#__PURE__*/function (_React$Component) {
|
|
|
444
455
|
var hasModal = !!modal;
|
|
445
456
|
var panels = this.panels.filter(function (panel) {
|
|
446
457
|
var panelId = (0, _getNavId.getNavId)(panel.props, warn);
|
|
447
|
-
return
|
|
458
|
+
return _this4.state.visiblePanels.includes(panelId) || panelId === swipeBackPrevPanel || panelId === swipeBackNextPanel;
|
|
448
459
|
});
|
|
449
460
|
var disableAnimation = this.shouldDisableTransitionMotion();
|
|
450
461
|
var modifiers = {
|
|
@@ -475,16 +486,16 @@ var View = /*#__PURE__*/function (_React$Component) {
|
|
|
475
486
|
'View__panel--swipe-back-success': swipeBackResult === SwipeBackResults.success,
|
|
476
487
|
'View__panel--swipe-back-failed': swipeBackResult === SwipeBackResults.fail
|
|
477
488
|
}),
|
|
478
|
-
onAnimationEnd: isTransitionTarget ?
|
|
489
|
+
onAnimationEnd: isTransitionTarget ? _this4.transitionEndHandler : null,
|
|
479
490
|
ref: function ref(el) {
|
|
480
|
-
return
|
|
491
|
+
return _this4.panelNodes[panelId] = el;
|
|
481
492
|
},
|
|
482
|
-
style:
|
|
493
|
+
style: _this4.calcPanelSwipeStyles(panelId),
|
|
483
494
|
key: panelId
|
|
484
495
|
}, (0, _jsxRuntime.createScopedElement)("div", {
|
|
485
496
|
vkuiClass: "View__panel-in",
|
|
486
497
|
style: {
|
|
487
|
-
marginTop: compensateScroll ? -
|
|
498
|
+
marginTop: compensateScroll ? -_this4.scrolls[panelId] : null
|
|
488
499
|
}
|
|
489
500
|
}, (0, _jsxRuntime.createScopedElement)(_NavTransitionContext.NavTransitionProvider, {
|
|
490
501
|
entering: panelId === nextPanel || panelId === swipeBackNextPanel
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/View/View.tsx"],"names":["warn","SwipeBackResults","scrollsCache","View","props","e","includes","animationName","activePanel","isBack","state","prevPanel","scrolls","setState","nextPanel","visiblePanels","animated","undefined","scroll","scrollTo","onTransition","from","to","propertyName","target","pickPanel","swipeBackNextPanel","swipeBackResult","fail","onSwipeBackCancel","success","onSwipeBackSuccess","platform","configProvider","IOS","isWebView","startX","window","innerWidth","browserSwipe","onSwipeBack","swipingBack","history","length","getScroll","y","swipebackStartX","swipeBackPrevPanel","slice","swipeBackShift","shiftX","speed","duration","document","React","Children","toArray","children","id","prevProps","prevState","popout","blurActiveElement","modal","firstLayerId","panels","map","panel","find","animationEvent","supported","clearTimeout","animationFinishTimeout","setTimeout","transitionEndHandler","ANDROID","VKCOM","onSwipeBackStart","waitTransitionFinish","swipingBackTransitionEndHandler","transitionMotionEnabled","splitCol","animate","elem","eventHandler","transitionEvent","removeEventListener","name","addEventListener","transitionFinishTimeout","activeElement","blur","panelNodes","panelId","canUseDOM","isPrev","isNext","prevPanelTranslate","nextPanelTranslate","prevPanelShadow","boxShadow","transform","WebkitTransform","_1","nav","restProps","hasPopout","hasModal","filter","disableAnimation","shouldDisableTransitionMotion","modifiers","onMoveX","onEnd","isTransitionTarget","compensateScroll","el","calcPanelSwipeStyles","marginTop","Component","SplitColContext","ConfigProviderContext","ScrollContext"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { classNames } from '../../lib/classNames';\nimport { transitionEvent, animationEvent } from '../../lib/supportEvents';\nimport { getClassName } from '../../helpers/getClassName';\nimport { IOS, ANDROID, VKCOM } from '../../lib/platform';\nimport { Touch, TouchEvent } from '../Touch/Touch';\nimport { HasPlatform } from '../../types';\nimport { withPlatform } from '../../hoc/withPlatform';\nimport { withContext } from '../../hoc/withContext';\nimport { ConfigProviderContext, ConfigProviderContextInterface } from '../ConfigProvider/ConfigProviderContext';\nimport { SplitColContext, SplitColContextProps } from '../SplitCol/SplitCol';\nimport { AppRootPortal } from '../AppRoot/AppRootPortal';\nimport { canUseDOM, withDOM, DOMProps } from '../../lib/dom';\nimport { ScrollContext, ScrollContextInterface } from '../AppRoot/ScrollContext';\nimport { NavTransitionProvider } from '../NavTransitionContext/NavTransitionContext';\nimport { getNavId, NavIdProps } from '../../lib/getNavId';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { swipeBackExcluded } from './utils';\nimport './View.css';\n\nconst warn = warnOnce('View');\n\nenum SwipeBackResults { fail = 1, success}\n\ninterface Scrolls {\n [index: string]: number;\n}\n\ninterface ViewsScrolls {\n [index: string]: Scrolls;\n}\n\ntype TransitionEventHandler = (e?: TransitionEvent) => void;\n\nexport let scrollsCache: ViewsScrolls = {};\n\nexport interface ViewProps extends React.HTMLAttributes<HTMLElement>, HasPlatform, NavIdProps {\n activePanel: string;\n /**\n * @deprecated будет удалено в 5.0.0. Используйте одноименное свойство у `SplitLayout`.\n *\n * Свойство для отрисовки `Alert`, `ActionSheet` и `ScreenSpinner`.\n */\n popout?: React.ReactNode;\n /**\n * @deprecated будет удалено в 5.0.0. Используйте одноименное свойство у `SplitLayout`.\n *\n * Свойство для отрисовки `ModalRoot`.\n */\n modal?: React.ReactNode;\n onTransition?(params: { isBack: boolean; from: string; to: string }): void;\n /**\n * callback свайпа назад\n */\n onSwipeBack?(): void;\n /**\n * callback начала анимации свайпа назад.\n */\n onSwipeBackStart?(): void;\n /**\n * callback завершения анимации отмененного пользователем свайпа\n */\n onSwipeBackCancel?(): void;\n history?: string[];\n /**\n * @ignore\n */\n splitCol?: SplitColContextProps;\n /**\n * @ignore\n */\n configProvider?: ConfigProviderContextInterface;\n /**\n * @ignore\n */\n scroll?: ScrollContextInterface;\n}\n\nexport interface ViewState {\n animated: boolean;\n\n visiblePanels: string[];\n activePanel: string;\n isBack: boolean;\n prevPanel: string;\n nextPanel: string;\n\n swipingBack: boolean;\n swipebackStartX: number;\n swipeBackShift: number;\n swipeBackNextPanel: string;\n swipeBackPrevPanel: string;\n swipeBackResult: SwipeBackResults;\n\n browserSwipe: boolean;\n}\n\nclass View extends React.Component<ViewProps & DOMProps, ViewState> {\n constructor(props: ViewProps) {\n super(props);\n\n this.state = {\n animated: false,\n\n visiblePanels: [props.activePanel],\n activePanel: props.activePanel,\n isBack: undefined,\n prevPanel: null,\n nextPanel: null,\n\n swipingBack: false,\n swipebackStartX: 0,\n swipeBackShift: 0,\n swipeBackNextPanel: null,\n swipeBackPrevPanel: null,\n swipeBackResult: null,\n\n browserSwipe: false,\n };\n }\n\n static defaultProps: Partial<ViewProps> = {\n history: [],\n };\n\n private readonly scrolls = scrollsCache[getNavId(this.props)] || {};\n private transitionFinishTimeout: ReturnType<typeof setTimeout>;\n private animationFinishTimeout: ReturnType<typeof setTimeout>;\n\n get document() {\n return this.props.document;\n }\n\n get window() {\n return this.props.window;\n }\n\n get panels() {\n return React.Children.toArray(this.props.children) as React.ReactElement[];\n }\n\n panelNodes: { [id: string]: HTMLDivElement } = {};\n\n componentWillUnmount() {\n const id = getNavId(this.props);\n if (id) {\n scrollsCache[id] = this.scrolls;\n }\n }\n\n componentDidUpdate(prevProps: ViewProps, prevState: ViewState) {\n this.props.popout && !prevProps.popout && this.blurActiveElement();\n this.props.modal && !prevProps.modal && this.blurActiveElement();\n\n // Нужен переход\n if (prevProps.activePanel !== this.props.activePanel && !prevState.swipingBack && !prevState.browserSwipe) {\n const firstLayerId = this.panels\n .map((panel) => getNavId(panel.props, warn))\n .find((id) => id === prevProps.activePanel || id === this.props.activePanel);\n\n const isBack = firstLayerId === this.props.activePanel;\n\n this.blurActiveElement();\n\n this.scrolls[prevProps.activePanel] = this.props.scroll.getScroll().y;\n this.setState({\n visiblePanels: [prevProps.activePanel, this.props.activePanel],\n prevPanel: prevProps.activePanel,\n nextPanel: this.props.activePanel,\n activePanel: null,\n animated: true,\n isBack,\n });\n\n // Фолбек анимации перехода\n if (!animationEvent.supported) {\n clearTimeout(this.animationFinishTimeout);\n this.animationFinishTimeout = setTimeout(this.transitionEndHandler, this.props.platform === ANDROID || this.props.platform === VKCOM ? 300 : 600);\n }\n }\n\n // Закончилась анимация свайпа назад\n if (prevProps.activePanel !== this.props.activePanel && prevState.swipingBack) {\n const nextPanel = this.props.activePanel;\n const prevPanel = prevProps.activePanel;\n this.scrolls[prevState.swipeBackPrevPanel] = 0;\n this.setState({\n swipeBackPrevPanel: null,\n swipeBackNextPanel: null,\n swipingBack: false,\n swipeBackResult: null,\n swipebackStartX: 0,\n swipeBackShift: 0,\n activePanel: nextPanel,\n visiblePanels: [nextPanel],\n }, () => {\n this.props.scroll.scrollTo(0, this.scrolls[this.state.activePanel]);\n prevProps.onTransition && prevProps.onTransition({ isBack: true, from: prevPanel, to: nextPanel });\n });\n }\n\n // Начался свайп назад\n if (!prevState.swipingBack && this.state.swipingBack) {\n this.props.onSwipeBackStart && this.props.onSwipeBackStart();\n }\n\n // Началась анимация завершения свайпа назад.\n if (!prevState.swipeBackResult && this.state.swipeBackResult) {\n this.waitTransitionFinish(this.pickPanel(this.state.swipeBackNextPanel), this.swipingBackTransitionEndHandler);\n }\n\n // Если свайп назад отменился (когда пользователь недостаточно сильно свайпнул)\n if (prevState.swipeBackResult === SwipeBackResults.fail && !this.state.swipeBackResult) {\n this.props.scroll.scrollTo(0, this.scrolls[this.state.activePanel]);\n }\n\n // Закончился Safari свайп\n if (prevProps.activePanel !== this.props.activePanel && this.state.browserSwipe) {\n this.setState({\n browserSwipe: false,\n nextPanel: null,\n prevPanel: null,\n animated: false,\n visiblePanels: [this.props.activePanel],\n activePanel: this.props.activePanel,\n });\n }\n }\n\n shouldDisableTransitionMotion(): boolean {\n return this.props.configProvider.transitionMotionEnabled === false ||\n !this.props.splitCol.animate;\n }\n\n waitTransitionFinish(elem: HTMLElement, eventHandler: TransitionEventHandler): void {\n if (transitionEvent.supported) {\n elem.removeEventListener(transitionEvent.name, eventHandler);\n elem.addEventListener(transitionEvent.name, eventHandler);\n } else {\n clearTimeout(this.transitionFinishTimeout);\n this.transitionFinishTimeout = setTimeout(eventHandler, this.props.platform === ANDROID || this.props.platform === VKCOM ? 300 : 600);\n }\n }\n\n blurActiveElement(): void {\n if (typeof this.window !== 'undefined' && this.document.activeElement) {\n (this.document.activeElement as HTMLElement).blur();\n }\n }\n\n pickPanel(id: string) {\n return this.panelNodes[id];\n }\n\n transitionEndHandler = (e?: React.AnimationEvent): void => {\n if (!e || [\n 'vkui-animation-ios-next-forward',\n 'vkui-animation-ios-prev-back',\n 'vkui-animation-view-next-forward',\n 'vkui-animation-view-prev-back',\n ].includes(e.animationName)) {\n const activePanel = this.props.activePanel;\n const isBack = this.state.isBack;\n const prevPanel = this.state.prevPanel;\n if (isBack) {\n this.scrolls[prevPanel] = 0;\n }\n this.setState({\n prevPanel: null,\n nextPanel: null,\n visiblePanels: [activePanel],\n activePanel: activePanel,\n animated: false,\n isBack: undefined,\n }, () => {\n isBack && this.props.scroll.scrollTo(0, this.scrolls[activePanel]);\n this.props.onTransition && this.props.onTransition({ isBack, from: prevPanel, to: activePanel });\n });\n }\n };\n\n swipingBackTransitionEndHandler = (e?: TransitionEvent): void => {\n // indexOf because of vendor prefixes in old browsers\n if (!e || e?.propertyName.includes('transform') && e?.target === this.pickPanel(this.state.swipeBackNextPanel)) {\n switch (this.state.swipeBackResult) {\n case SwipeBackResults.fail:\n this.onSwipeBackCancel();\n break;\n case SwipeBackResults.success:\n this.onSwipeBackSuccess();\n }\n }\n };\n\n onSwipeBackSuccess(): void {\n this.props.onSwipeBack && this.props.onSwipeBack();\n }\n\n onSwipeBackCancel(): void {\n this.props.onSwipeBackCancel && this.props.onSwipeBackCancel();\n this.setState({\n swipeBackPrevPanel: null,\n swipeBackNextPanel: null,\n swipingBack: false,\n swipeBackResult: null,\n swipebackStartX: 0,\n swipeBackShift: 0,\n });\n }\n\n onMoveX = (e: TouchEvent): void => {\n if (swipeBackExcluded(e)) {\n return;\n }\n\n const { platform, configProvider } = this.props;\n\n if (platform === IOS && !configProvider.isWebView && (e.startX <= 70 || e.startX >= this.window.innerWidth - 70) && !this.state.browserSwipe) {\n this.setState({ browserSwipe: true });\n }\n\n if (platform === IOS && configProvider.isWebView && this.props.onSwipeBack) {\n if (this.state.animated && e.startX <= 70) {\n return;\n }\n\n if (e.startX <= 70 && !this.state.swipingBack && this.props.history.length > 1) {\n this.scrolls[this.state.activePanel] = this.props.scroll.getScroll().y;\n this.setState({\n swipingBack: true,\n swipebackStartX: e.startX,\n swipeBackPrevPanel: this.state.activePanel,\n swipeBackNextPanel: this.props.history.slice(-2)[0],\n });\n }\n if (this.state.swipingBack) {\n let swipeBackShift;\n if (e.shiftX < 0) {\n swipeBackShift = 0;\n } else if (e.shiftX > this.window.innerWidth - this.state.swipebackStartX) {\n swipeBackShift = this.window.innerWidth;\n } else {\n swipeBackShift = e.shiftX;\n }\n this.setState({ swipeBackShift });\n }\n }\n };\n\n onEnd = (e: TouchEvent): void => {\n if (this.state.swipingBack) {\n const speed = this.state.swipeBackShift / e.duration * 1000;\n if (this.state.swipeBackShift === 0) {\n this.onSwipeBackCancel();\n } else if (this.state.swipeBackShift >= this.window.innerWidth) {\n this.onSwipeBackSuccess();\n } else if (speed > 250 || this.state.swipebackStartX + this.state.swipeBackShift > this.window.innerWidth / 2) {\n this.setState({ swipeBackResult: SwipeBackResults.success });\n } else {\n this.setState({ swipeBackResult: SwipeBackResults.fail });\n }\n }\n };\n\n calcPanelSwipeStyles(panelId: string): React.CSSProperties {\n if (!canUseDOM) {\n return {};\n }\n\n const isPrev = panelId === this.state.swipeBackPrevPanel;\n const isNext = panelId === this.state.swipeBackNextPanel;\n\n if (!isPrev && !isNext || this.state.swipeBackResult) {\n return {};\n }\n\n let prevPanelTranslate = `${this.state.swipeBackShift}px`;\n let nextPanelTranslate = `${-50 + this.state.swipeBackShift * 100 / this.window.innerWidth / 2}%`;\n let prevPanelShadow = 0.3 * (this.window.innerWidth - this.state.swipeBackShift) / this.window.innerWidth;\n\n if (this.state.swipeBackResult) {\n return isPrev ? { boxShadow: `-2px 0 12px rgba(0, 0, 0, ${prevPanelShadow})` } : {};\n }\n\n if (isNext) {\n return {\n transform: `translate3d(${nextPanelTranslate}, 0, 0)`,\n WebkitTransform: `translate3d(${nextPanelTranslate}, 0, 0)`,\n };\n }\n if (isPrev) {\n return {\n transform: `translate3d(${prevPanelTranslate}, 0, 0)`,\n WebkitTransform: `translate3d(${prevPanelTranslate}, 0, 0)`,\n boxShadow: `-2px 0 12px rgba(0, 0, 0, ${prevPanelShadow})`,\n };\n }\n\n return {};\n }\n\n render() {\n const {\n popout, modal, platform,\n activePanel: _1, splitCol, configProvider, history, nav,\n onTransition, onSwipeBack, onSwipeBackStart, onSwipeBackCancel,\n window, document, scroll,\n ...restProps\n } = this.props;\n const {\n prevPanel, nextPanel, activePanel, swipeBackPrevPanel, swipeBackNextPanel,\n swipeBackResult, isBack, animated,\n } = this.state;\n\n const hasPopout = !!popout;\n const hasModal = !!modal;\n\n const panels = this.panels.filter((panel: React.ReactElement) => {\n const panelId = getNavId(panel.props, warn);\n\n return this.state.visiblePanels.includes(panelId) ||\n panelId === swipeBackPrevPanel ||\n panelId === swipeBackNextPanel;\n });\n\n const disableAnimation = this.shouldDisableTransitionMotion();\n\n const modifiers = {\n 'View--animated': !disableAnimation && animated,\n 'View--swiping-back': !disableAnimation && this.state.swipingBack,\n 'View--no-motion': disableAnimation,\n };\n\n return (\n <Touch\n Component=\"section\"\n {...restProps}\n vkuiClass={classNames(getClassName('View', platform), modifiers)}\n onMoveX={this.onMoveX}\n onEnd={this.onEnd}\n >\n <div vkuiClass=\"View__panels\">\n {panels.map((panel: React.ReactElement) => {\n const panelId = getNavId(panel.props, warn);\n const isPrev = panelId === prevPanel || panelId === swipeBackPrevPanel;\n const isTransitionTarget = animated && panelId === (isBack ? prevPanel : nextPanel);\n const compensateScroll = isPrev || panelId === swipeBackNextPanel || panelId === nextPanel && isBack;\n\n return (\n <div\n vkuiClass={classNames('View__panel', {\n 'View__panel--active': panelId === activePanel,\n 'View__panel--prev': panelId === prevPanel,\n 'View__panel--next': panelId === nextPanel,\n 'View__panel--swipe-back-prev': panelId === swipeBackPrevPanel,\n 'View__panel--swipe-back-next': panelId === swipeBackNextPanel,\n 'View__panel--swipe-back-success': swipeBackResult === SwipeBackResults.success,\n 'View__panel--swipe-back-failed': swipeBackResult === SwipeBackResults.fail,\n })}\n onAnimationEnd={isTransitionTarget ? this.transitionEndHandler : null}\n ref={(el) => this.panelNodes[panelId] = el}\n style={this.calcPanelSwipeStyles(panelId)}\n key={panelId}\n >\n <div vkuiClass=\"View__panel-in\" style={{ marginTop: compensateScroll ? -this.scrolls[panelId] : null }}>\n <NavTransitionProvider entering={panelId === nextPanel || panelId === swipeBackNextPanel}>\n {panel}\n </NavTransitionProvider>\n </div>\n </div>\n );\n })}\n </div>\n <AppRootPortal>\n {hasPopout && <div vkuiClass=\"View__popout\">{popout}</div>}\n {hasModal && <div vkuiClass=\"View__modal\">{modal}</div>}\n </AppRootPortal>\n </Touch>\n );\n }\n}\n\nexport default withContext(withContext(\n withContext(\n withPlatform(withDOM<ViewProps>(View)),\n SplitColContext, 'splitCol'),\n ConfigProviderContext, 'configProvider'),\nScrollContext, 'scroll');\n"],"file":"View.js"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/View/View.tsx"],"names":["warn","SwipeBackResults","scrollsCache","View","props","e","includes","animationName","flushTransition","state","prevPanel","isBack","propertyName","target","pickPanel","swipeBackNextPanel","swipeBackResult","fail","onSwipeBackCancel","success","onSwipeBackSuccess","platform","configProvider","IOS","isWebView","startX","window","innerWidth","browserSwipe","setState","onSwipeBack","animated","swipingBack","history","length","scrolls","activePanel","scroll","getScroll","y","swipebackStartX","swipeBackPrevPanel","slice","swipeBackShift","shiftX","speed","duration","visiblePanels","undefined","nextPanel","document","React","Children","toArray","children","id","prevProps","prevState","popout","blurActiveElement","modal","firstLayerId","panels","map","panel","find","shouldDisableTransitionMotion","animationEvent","supported","clearTimeout","animationFinishTimeout","setTimeout","transitionEndHandler","ANDROID","VKCOM","scrollTo","onTransition","from","to","onSwipeBackStart","waitTransitionFinish","swipingBackTransitionEndHandler","transitionMotionEnabled","splitCol","animate","elem","eventHandler","transitionEvent","removeEventListener","name","addEventListener","transitionFinishTimeout","activeElement","blur","panelNodes","panelId","canUseDOM","isPrev","isNext","prevPanelTranslate","nextPanelTranslate","prevPanelShadow","boxShadow","transform","WebkitTransform","_1","nav","restProps","hasPopout","hasModal","filter","disableAnimation","modifiers","onMoveX","onEnd","isTransitionTarget","compensateScroll","el","calcPanelSwipeStyles","marginTop","Component","SplitColContext","ConfigProviderContext","ScrollContext"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { classNames } from '../../lib/classNames';\nimport { transitionEvent, animationEvent } from '../../lib/supportEvents';\nimport { getClassName } from '../../helpers/getClassName';\nimport { IOS, ANDROID, VKCOM } from '../../lib/platform';\nimport { Touch, TouchEvent } from '../Touch/Touch';\nimport { HasPlatform } from '../../types';\nimport { withPlatform } from '../../hoc/withPlatform';\nimport { withContext } from '../../hoc/withContext';\nimport { ConfigProviderContext, ConfigProviderContextInterface } from '../ConfigProvider/ConfigProviderContext';\nimport { SplitColContext, SplitColContextProps } from '../SplitCol/SplitCol';\nimport { AppRootPortal } from '../AppRoot/AppRootPortal';\nimport { canUseDOM, withDOM, DOMProps } from '../../lib/dom';\nimport { ScrollContext, ScrollContextInterface } from '../AppRoot/ScrollContext';\nimport { NavTransitionProvider } from '../NavTransitionContext/NavTransitionContext';\nimport { getNavId, NavIdProps } from '../../lib/getNavId';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { swipeBackExcluded } from './utils';\nimport './View.css';\n\nconst warn = warnOnce('View');\n\nenum SwipeBackResults { fail = 1, success}\n\ninterface Scrolls {\n [index: string]: number;\n}\n\ninterface ViewsScrolls {\n [index: string]: Scrolls;\n}\n\ntype TransitionEventHandler = (e?: TransitionEvent) => void;\n\nexport let scrollsCache: ViewsScrolls = {};\n\nexport interface ViewProps extends React.HTMLAttributes<HTMLElement>, HasPlatform, NavIdProps {\n activePanel: string;\n /**\n * @deprecated будет удалено в 5.0.0. Используйте одноименное свойство у `SplitLayout`.\n *\n * Свойство для отрисовки `Alert`, `ActionSheet` и `ScreenSpinner`.\n */\n popout?: React.ReactNode;\n /**\n * @deprecated будет удалено в 5.0.0. Используйте одноименное свойство у `SplitLayout`.\n *\n * Свойство для отрисовки `ModalRoot`.\n */\n modal?: React.ReactNode;\n onTransition?(params: { isBack: boolean; from: string; to: string }): void;\n /**\n * callback свайпа назад\n */\n onSwipeBack?(): void;\n /**\n * callback начала анимации свайпа назад.\n */\n onSwipeBackStart?(): void;\n /**\n * callback завершения анимации отмененного пользователем свайпа\n */\n onSwipeBackCancel?(): void;\n history?: string[];\n /**\n * @ignore\n */\n splitCol?: SplitColContextProps;\n /**\n * @ignore\n */\n configProvider?: ConfigProviderContextInterface;\n /**\n * @ignore\n */\n scroll?: ScrollContextInterface;\n}\n\nexport interface ViewState {\n animated: boolean;\n\n visiblePanels: string[];\n activePanel: string;\n isBack: boolean;\n prevPanel: string;\n nextPanel: string;\n\n swipingBack: boolean;\n swipebackStartX: number;\n swipeBackShift: number;\n swipeBackNextPanel: string;\n swipeBackPrevPanel: string;\n swipeBackResult: SwipeBackResults;\n\n browserSwipe: boolean;\n}\n\nclass View extends React.Component<ViewProps & DOMProps, ViewState> {\n constructor(props: ViewProps) {\n super(props);\n\n this.state = {\n animated: false,\n\n visiblePanels: [props.activePanel],\n activePanel: props.activePanel,\n isBack: undefined,\n prevPanel: null,\n nextPanel: null,\n\n swipingBack: false,\n swipebackStartX: 0,\n swipeBackShift: 0,\n swipeBackNextPanel: null,\n swipeBackPrevPanel: null,\n swipeBackResult: null,\n\n browserSwipe: false,\n };\n }\n\n static defaultProps: Partial<ViewProps> = {\n history: [],\n };\n\n private readonly scrolls = scrollsCache[getNavId(this.props)] || {};\n private transitionFinishTimeout: ReturnType<typeof setTimeout>;\n private animationFinishTimeout: ReturnType<typeof setTimeout>;\n\n get document() {\n return this.props.document;\n }\n\n get window() {\n return this.props.window;\n }\n\n get panels() {\n return React.Children.toArray(this.props.children) as React.ReactElement[];\n }\n\n panelNodes: { [id: string]: HTMLDivElement } = {};\n\n componentWillUnmount() {\n const id = getNavId(this.props);\n if (id) {\n scrollsCache[id] = this.scrolls;\n }\n }\n\n componentDidUpdate(prevProps: ViewProps, prevState: ViewState) {\n this.props.popout && !prevProps.popout && this.blurActiveElement();\n this.props.modal && !prevProps.modal && this.blurActiveElement();\n\n // Нужен переход\n if (prevProps.activePanel !== this.props.activePanel && !prevState.swipingBack && !prevState.browserSwipe) {\n const firstLayerId = this.panels\n .map((panel) => getNavId(panel.props, warn))\n .find((id) => id === prevProps.activePanel || id === this.props.activePanel);\n\n const isBack = firstLayerId === this.props.activePanel;\n this.scrolls[prevProps.activePanel] = this.props.scroll.getScroll().y;\n\n if (this.shouldDisableTransitionMotion()) {\n this.flushTransition(prevProps.activePanel, isBack);\n } else {\n this.blurActiveElement();\n\n this.setState({\n visiblePanels: [prevProps.activePanel, this.props.activePanel],\n prevPanel: prevProps.activePanel,\n nextPanel: this.props.activePanel,\n activePanel: null,\n animated: true,\n isBack,\n });\n\n // Фолбек анимации перехода\n if (!animationEvent.supported) {\n clearTimeout(this.animationFinishTimeout);\n this.animationFinishTimeout = setTimeout(this.transitionEndHandler, this.props.platform === ANDROID || this.props.platform === VKCOM ? 300 : 600);\n }\n }\n }\n\n // Закончилась анимация свайпа назад\n if (prevProps.activePanel !== this.props.activePanel && prevState.swipingBack) {\n const nextPanel = this.props.activePanel;\n const prevPanel = prevProps.activePanel;\n this.scrolls[prevState.swipeBackPrevPanel] = 0;\n this.setState({\n swipeBackPrevPanel: null,\n swipeBackNextPanel: null,\n swipingBack: false,\n swipeBackResult: null,\n swipebackStartX: 0,\n swipeBackShift: 0,\n activePanel: nextPanel,\n visiblePanels: [nextPanel],\n }, () => {\n this.props.scroll.scrollTo(0, this.scrolls[this.state.activePanel]);\n prevProps.onTransition && prevProps.onTransition({ isBack: true, from: prevPanel, to: nextPanel });\n });\n }\n\n // Начался свайп назад\n if (!prevState.swipingBack && this.state.swipingBack) {\n this.props.onSwipeBackStart && this.props.onSwipeBackStart();\n }\n\n // Началась анимация завершения свайпа назад.\n if (!prevState.swipeBackResult && this.state.swipeBackResult) {\n this.waitTransitionFinish(this.pickPanel(this.state.swipeBackNextPanel), this.swipingBackTransitionEndHandler);\n }\n\n // Если свайп назад отменился (когда пользователь недостаточно сильно свайпнул)\n if (prevState.swipeBackResult === SwipeBackResults.fail && !this.state.swipeBackResult) {\n this.props.scroll.scrollTo(0, this.scrolls[this.state.activePanel]);\n }\n\n // Закончился Safari свайп\n if (prevProps.activePanel !== this.props.activePanel && this.state.browserSwipe) {\n this.setState({\n browserSwipe: false,\n nextPanel: null,\n prevPanel: null,\n animated: false,\n visiblePanels: [this.props.activePanel],\n activePanel: this.props.activePanel,\n });\n }\n }\n\n shouldDisableTransitionMotion(): boolean {\n return this.props.configProvider.transitionMotionEnabled === false ||\n !this.props.splitCol.animate;\n }\n\n waitTransitionFinish(elem: HTMLElement, eventHandler: TransitionEventHandler): void {\n if (transitionEvent.supported) {\n elem.removeEventListener(transitionEvent.name, eventHandler);\n elem.addEventListener(transitionEvent.name, eventHandler);\n } else {\n clearTimeout(this.transitionFinishTimeout);\n this.transitionFinishTimeout = setTimeout(eventHandler, this.props.platform === ANDROID || this.props.platform === VKCOM ? 300 : 600);\n }\n }\n\n blurActiveElement(): void {\n if (typeof this.window !== 'undefined' && this.document.activeElement) {\n (this.document.activeElement as HTMLElement).blur();\n }\n }\n\n pickPanel(id: string) {\n return this.panelNodes[id];\n }\n\n flushTransition(prevPanel: string, isBack: boolean) {\n const activePanel = this.props.activePanel;\n if (isBack) {\n this.scrolls[prevPanel] = 0;\n }\n this.setState({\n prevPanel: null,\n nextPanel: null,\n visiblePanels: [activePanel],\n activePanel,\n animated: false,\n isBack: undefined,\n }, () => {\n this.props.scroll.scrollTo(0, isBack ? this.scrolls[activePanel] : 0);\n this.props.onTransition && this.props.onTransition({ isBack, from: prevPanel, to: activePanel });\n });\n }\n\n transitionEndHandler = (e?: React.AnimationEvent): void => {\n if (!e || [\n 'vkui-animation-ios-next-forward',\n 'vkui-animation-ios-prev-back',\n 'vkui-animation-view-next-forward',\n 'vkui-animation-view-prev-back',\n ].includes(e.animationName)) {\n this.flushTransition(this.state.prevPanel, this.state.isBack);\n }\n };\n\n swipingBackTransitionEndHandler = (e?: TransitionEvent): void => {\n // indexOf because of vendor prefixes in old browsers\n if (!e || e?.propertyName.includes('transform') && e?.target === this.pickPanel(this.state.swipeBackNextPanel)) {\n switch (this.state.swipeBackResult) {\n case SwipeBackResults.fail:\n this.onSwipeBackCancel();\n break;\n case SwipeBackResults.success:\n this.onSwipeBackSuccess();\n }\n }\n };\n\n onSwipeBackSuccess(): void {\n this.props.onSwipeBack && this.props.onSwipeBack();\n }\n\n onSwipeBackCancel(): void {\n this.props.onSwipeBackCancel && this.props.onSwipeBackCancel();\n this.setState({\n swipeBackPrevPanel: null,\n swipeBackNextPanel: null,\n swipingBack: false,\n swipeBackResult: null,\n swipebackStartX: 0,\n swipeBackShift: 0,\n });\n }\n\n onMoveX = (e: TouchEvent): void => {\n if (swipeBackExcluded(e)) {\n return;\n }\n\n const { platform, configProvider } = this.props;\n\n if (platform === IOS && !configProvider.isWebView && (e.startX <= 70 || e.startX >= this.window.innerWidth - 70) && !this.state.browserSwipe) {\n this.setState({ browserSwipe: true });\n }\n\n if (platform === IOS && configProvider.isWebView && this.props.onSwipeBack) {\n if (this.state.animated && e.startX <= 70) {\n return;\n }\n\n if (e.startX <= 70 && !this.state.swipingBack && this.props.history.length > 1) {\n this.scrolls[this.state.activePanel] = this.props.scroll.getScroll().y;\n this.setState({\n swipingBack: true,\n swipebackStartX: e.startX,\n swipeBackPrevPanel: this.state.activePanel,\n swipeBackNextPanel: this.props.history.slice(-2)[0],\n });\n }\n if (this.state.swipingBack) {\n let swipeBackShift;\n if (e.shiftX < 0) {\n swipeBackShift = 0;\n } else if (e.shiftX > this.window.innerWidth - this.state.swipebackStartX) {\n swipeBackShift = this.window.innerWidth;\n } else {\n swipeBackShift = e.shiftX;\n }\n this.setState({ swipeBackShift });\n }\n }\n };\n\n onEnd = (e: TouchEvent): void => {\n if (this.state.swipingBack) {\n const speed = this.state.swipeBackShift / e.duration * 1000;\n if (this.state.swipeBackShift === 0) {\n this.onSwipeBackCancel();\n } else if (this.state.swipeBackShift >= this.window.innerWidth) {\n this.onSwipeBackSuccess();\n } else if (speed > 250 || this.state.swipebackStartX + this.state.swipeBackShift > this.window.innerWidth / 2) {\n this.setState({ swipeBackResult: SwipeBackResults.success });\n } else {\n this.setState({ swipeBackResult: SwipeBackResults.fail });\n }\n }\n };\n\n calcPanelSwipeStyles(panelId: string): React.CSSProperties {\n if (!canUseDOM) {\n return {};\n }\n\n const isPrev = panelId === this.state.swipeBackPrevPanel;\n const isNext = panelId === this.state.swipeBackNextPanel;\n\n if (!isPrev && !isNext || this.state.swipeBackResult) {\n return {};\n }\n\n let prevPanelTranslate = `${this.state.swipeBackShift}px`;\n let nextPanelTranslate = `${-50 + this.state.swipeBackShift * 100 / this.window.innerWidth / 2}%`;\n let prevPanelShadow = 0.3 * (this.window.innerWidth - this.state.swipeBackShift) / this.window.innerWidth;\n\n if (this.state.swipeBackResult) {\n return isPrev ? { boxShadow: `-2px 0 12px rgba(0, 0, 0, ${prevPanelShadow})` } : {};\n }\n\n if (isNext) {\n return {\n transform: `translate3d(${nextPanelTranslate}, 0, 0)`,\n WebkitTransform: `translate3d(${nextPanelTranslate}, 0, 0)`,\n };\n }\n if (isPrev) {\n return {\n transform: `translate3d(${prevPanelTranslate}, 0, 0)`,\n WebkitTransform: `translate3d(${prevPanelTranslate}, 0, 0)`,\n boxShadow: `-2px 0 12px rgba(0, 0, 0, ${prevPanelShadow})`,\n };\n }\n\n return {};\n }\n\n render() {\n const {\n popout, modal, platform,\n activePanel: _1, splitCol, configProvider, history, nav,\n onTransition, onSwipeBack, onSwipeBackStart, onSwipeBackCancel,\n window, document, scroll,\n ...restProps\n } = this.props;\n const {\n prevPanel, nextPanel, activePanel, swipeBackPrevPanel, swipeBackNextPanel,\n swipeBackResult, isBack, animated,\n } = this.state;\n\n const hasPopout = !!popout;\n const hasModal = !!modal;\n\n const panels = this.panels.filter((panel: React.ReactElement) => {\n const panelId = getNavId(panel.props, warn);\n\n return this.state.visiblePanels.includes(panelId) ||\n panelId === swipeBackPrevPanel ||\n panelId === swipeBackNextPanel;\n });\n\n const disableAnimation = this.shouldDisableTransitionMotion();\n\n const modifiers = {\n 'View--animated': !disableAnimation && animated,\n 'View--swiping-back': !disableAnimation && this.state.swipingBack,\n 'View--no-motion': disableAnimation,\n };\n\n return (\n <Touch\n Component=\"section\"\n {...restProps}\n vkuiClass={classNames(getClassName('View', platform), modifiers)}\n onMoveX={this.onMoveX}\n onEnd={this.onEnd}\n >\n <div vkuiClass=\"View__panels\">\n {panels.map((panel: React.ReactElement) => {\n const panelId = getNavId(panel.props, warn);\n const isPrev = panelId === prevPanel || panelId === swipeBackPrevPanel;\n const isTransitionTarget = animated && panelId === (isBack ? prevPanel : nextPanel);\n const compensateScroll = isPrev || panelId === swipeBackNextPanel || panelId === nextPanel && isBack;\n\n return (\n <div\n vkuiClass={classNames('View__panel', {\n 'View__panel--active': panelId === activePanel,\n 'View__panel--prev': panelId === prevPanel,\n 'View__panel--next': panelId === nextPanel,\n 'View__panel--swipe-back-prev': panelId === swipeBackPrevPanel,\n 'View__panel--swipe-back-next': panelId === swipeBackNextPanel,\n 'View__panel--swipe-back-success': swipeBackResult === SwipeBackResults.success,\n 'View__panel--swipe-back-failed': swipeBackResult === SwipeBackResults.fail,\n })}\n onAnimationEnd={isTransitionTarget ? this.transitionEndHandler : null}\n ref={(el) => this.panelNodes[panelId] = el}\n style={this.calcPanelSwipeStyles(panelId)}\n key={panelId}\n >\n <div vkuiClass=\"View__panel-in\" style={{ marginTop: compensateScroll ? -this.scrolls[panelId] : null }}>\n <NavTransitionProvider entering={panelId === nextPanel || panelId === swipeBackNextPanel}>\n {panel}\n </NavTransitionProvider>\n </div>\n </div>\n );\n })}\n </div>\n <AppRootPortal>\n {hasPopout && <div vkuiClass=\"View__popout\">{popout}</div>}\n {hasModal && <div vkuiClass=\"View__modal\">{modal}</div>}\n </AppRootPortal>\n </Touch>\n );\n }\n}\n\nexport default withContext(withContext(\n withContext(\n withPlatform(withDOM<ViewProps>(View)),\n SplitColContext, 'splitCol'),\n ConfigProviderContext, 'configProvider'),\nScrollContext, 'scroll');\n"],"file":"View.js"}
|
|
@@ -15,10 +15,10 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
|
|
|
15
15
|
|
|
16
16
|
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
17
17
|
|
|
18
|
-
var _objectSpread7 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
19
|
-
|
|
20
18
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
21
19
|
|
|
20
|
+
var _objectSpread7 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
21
|
+
|
|
22
22
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
23
23
|
|
|
24
24
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
@@ -92,34 +92,7 @@ var ViewInfinite = /*#__PURE__*/function (_React$Component) {
|
|
|
92
92
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "panelNodes", {});
|
|
93
93
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "transitionEndHandler", function (e) {
|
|
94
94
|
if (!e || ['vkui-animation-ios-next-forward', 'vkui-animation-ios-prev-back', 'vkui-animation-view-next-forward', 'vkui-animation-view-prev-back'].includes(e.animationName)) {
|
|
95
|
-
|
|
96
|
-
var prevPanel = _this.state.prevPanel;
|
|
97
|
-
var isBack = _this.state.isBack;
|
|
98
|
-
var prevPanelScrolls = (0, _toConsumableArray2.default)(_this.scrolls[prevPanel] || []).slice(0, -1);
|
|
99
|
-
var newPanelScrolls = (0, _toConsumableArray2.default)(_this.scrolls[activePanel] || []);
|
|
100
|
-
var scrollPosition = isBack ? newPanelScrolls.pop() : 0;
|
|
101
|
-
|
|
102
|
-
if (isBack) {
|
|
103
|
-
var _objectSpread2;
|
|
104
|
-
|
|
105
|
-
_this.scrolls = (0, _objectSpread7.default)((0, _objectSpread7.default)({}, _this.scrolls), {}, (_objectSpread2 = {}, (0, _defineProperty2.default)(_objectSpread2, prevPanel, prevPanelScrolls), (0, _defineProperty2.default)(_objectSpread2, activePanel, newPanelScrolls), _objectSpread2));
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
_this.setState({
|
|
109
|
-
prevPanel: null,
|
|
110
|
-
nextPanel: null,
|
|
111
|
-
visiblePanels: [activePanel],
|
|
112
|
-
activePanel: activePanel,
|
|
113
|
-
animated: false,
|
|
114
|
-
isBack: undefined
|
|
115
|
-
}, function () {
|
|
116
|
-
isBack && _this.props.scroll.scrollTo(0, scrollPosition);
|
|
117
|
-
_this.props.onTransition && _this.props.onTransition({
|
|
118
|
-
isBack: isBack,
|
|
119
|
-
from: prevPanel,
|
|
120
|
-
to: activePanel
|
|
121
|
-
});
|
|
122
|
-
});
|
|
95
|
+
_this.flushTransition(_this.state.prevPanel, _this.state.isBack);
|
|
123
96
|
}
|
|
124
97
|
});
|
|
125
98
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "swipingBackTransitionEndHandler", function (e) {
|
|
@@ -276,31 +249,36 @@ var ViewInfinite = /*#__PURE__*/function (_React$Component) {
|
|
|
276
249
|
var prevScrolls = this.scrolls[prevProps.activePanel] || [];
|
|
277
250
|
var scrolls = (0, _objectSpread7.default)((0, _objectSpread7.default)({}, this.scrolls), {}, (0, _defineProperty2.default)({}, prevProps.activePanel, [].concat((0, _toConsumableArray2.default)(prevScrolls), [this.props.scroll.getScroll().y])));
|
|
278
251
|
this.scrolls = scrolls;
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
252
|
+
|
|
253
|
+
if (this.shouldDisableTransitionMotion()) {
|
|
254
|
+
this.flushTransition(prevProps.activePanel, isBack);
|
|
255
|
+
} else {
|
|
256
|
+
this.setState({
|
|
257
|
+
visiblePanels: [prevProps.activePanel, this.props.activePanel],
|
|
258
|
+
prevPanel: prevProps.activePanel,
|
|
259
|
+
nextPanel: this.props.activePanel,
|
|
260
|
+
activePanel: null,
|
|
261
|
+
animated: true,
|
|
262
|
+
isBack: isBack
|
|
263
|
+
}); // Фолбек анимации перехода
|
|
264
|
+
|
|
265
|
+
if (!_supportEvents.animationEvent.supported) {
|
|
266
|
+
clearTimeout(this.animationFinishTimeout);
|
|
267
|
+
this.animationFinishTimeout = setTimeout(this.transitionEndHandler, this.props.platform === _platform.ANDROID || this.props.platform === _platform.VKCOM ? 300 : 600);
|
|
268
|
+
}
|
|
291
269
|
}
|
|
292
270
|
} // Закончилась анимация свайпа назад
|
|
293
271
|
|
|
294
272
|
|
|
295
273
|
if (prevProps.activePanel !== this.props.activePanel && prevState.swipingBack) {
|
|
296
|
-
var
|
|
274
|
+
var _objectSpread4;
|
|
297
275
|
|
|
298
276
|
var nextPanel = this.state.swipeBackNextPanel;
|
|
299
277
|
var prevPanel = this.state.swipeBackPrevPanel;
|
|
300
278
|
var prevPanelScrolls = (0, _toConsumableArray2.default)(this.scrolls[prevPanel] || []).slice(0, -1);
|
|
301
279
|
var newPanelScrolls = (0, _toConsumableArray2.default)(this.scrolls[nextPanel] || []);
|
|
302
280
|
var scrollPosition = newPanelScrolls.pop();
|
|
303
|
-
this.scrolls = (0, _objectSpread7.default)((0, _objectSpread7.default)({}, this.scrolls), {}, (
|
|
281
|
+
this.scrolls = (0, _objectSpread7.default)((0, _objectSpread7.default)({}, this.scrolls), {}, (_objectSpread4 = {}, (0, _defineProperty2.default)(_objectSpread4, nextPanel, newPanelScrolls), (0, _defineProperty2.default)(_objectSpread4, prevPanel, prevPanelScrolls), _objectSpread4));
|
|
304
282
|
this.setState({
|
|
305
283
|
swipeBackPrevPanel: null,
|
|
306
284
|
swipeBackNextPanel: null,
|
|
@@ -381,6 +359,39 @@ var ViewInfinite = /*#__PURE__*/function (_React$Component) {
|
|
|
381
359
|
value: function pickPanel(id) {
|
|
382
360
|
return this.panelNodes[id];
|
|
383
361
|
}
|
|
362
|
+
}, {
|
|
363
|
+
key: "flushTransition",
|
|
364
|
+
value: function flushTransition(prevPanel, isBack) {
|
|
365
|
+
var _this3 = this;
|
|
366
|
+
|
|
367
|
+
var activePanel = this.props.activePanel;
|
|
368
|
+
var prevPanelScrolls = (0, _toConsumableArray2.default)(this.scrolls[prevPanel] || []).slice(0, -1);
|
|
369
|
+
var newPanelScrolls = (0, _toConsumableArray2.default)(this.scrolls[activePanel] || []);
|
|
370
|
+
var scrollPosition = isBack ? newPanelScrolls.pop() : 0;
|
|
371
|
+
|
|
372
|
+
if (isBack) {
|
|
373
|
+
var _objectSpread6;
|
|
374
|
+
|
|
375
|
+
this.scrolls = (0, _objectSpread7.default)((0, _objectSpread7.default)({}, this.scrolls), {}, (_objectSpread6 = {}, (0, _defineProperty2.default)(_objectSpread6, prevPanel, prevPanelScrolls), (0, _defineProperty2.default)(_objectSpread6, activePanel, newPanelScrolls), _objectSpread6));
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
this.setState({
|
|
379
|
+
prevPanel: null,
|
|
380
|
+
nextPanel: null,
|
|
381
|
+
visiblePanels: [activePanel],
|
|
382
|
+
activePanel: activePanel,
|
|
383
|
+
animated: false,
|
|
384
|
+
isBack: undefined
|
|
385
|
+
}, function () {
|
|
386
|
+
_this3.props.scroll.scrollTo(0, isBack ? scrollPosition : 0);
|
|
387
|
+
|
|
388
|
+
_this3.props.onTransition && _this3.props.onTransition({
|
|
389
|
+
isBack: isBack,
|
|
390
|
+
from: prevPanel,
|
|
391
|
+
to: activePanel
|
|
392
|
+
});
|
|
393
|
+
});
|
|
394
|
+
}
|
|
384
395
|
}, {
|
|
385
396
|
key: "onSwipeBackSuccess",
|
|
386
397
|
value: function onSwipeBackSuccess() {
|
|
@@ -443,7 +454,7 @@ var ViewInfinite = /*#__PURE__*/function (_React$Component) {
|
|
|
443
454
|
}, {
|
|
444
455
|
key: "render",
|
|
445
456
|
value: function render() {
|
|
446
|
-
var
|
|
457
|
+
var _this4 = this;
|
|
447
458
|
|
|
448
459
|
var _this$props2 = this.props,
|
|
449
460
|
popout = _this$props2.popout,
|
|
@@ -478,18 +489,18 @@ var ViewInfinite = /*#__PURE__*/function (_React$Component) {
|
|
|
478
489
|
var hasModal = !!modal;
|
|
479
490
|
var panels = this.panels.filter(function (panel) {
|
|
480
491
|
var panelId = (0, _getNavId.getNavId)(panel.props, warn);
|
|
481
|
-
return
|
|
492
|
+
return _this4.state.visiblePanels.includes(panelId) || panelId === swipeBackPrevPanel || panelId === swipeBackNextPanel;
|
|
482
493
|
}).sort(function (panel) {
|
|
483
494
|
var panelId = (0, _getNavId.getNavId)(panel.props, warn);
|
|
484
495
|
var isPrevPanel = panelId === prevPanel || panelId === swipeBackPrevPanel;
|
|
485
496
|
var isNextPanel = panelId === nextPanel || panelId === swipeBackNextPanel;
|
|
486
497
|
|
|
487
498
|
if (isNextPanel) {
|
|
488
|
-
return swipingBack ||
|
|
499
|
+
return swipingBack || _this4.state.isBack ? -1 : 1;
|
|
489
500
|
}
|
|
490
501
|
|
|
491
502
|
if (isPrevPanel) {
|
|
492
|
-
return swipingBack ||
|
|
503
|
+
return swipingBack || _this4.state.isBack ? 1 : -1;
|
|
493
504
|
}
|
|
494
505
|
|
|
495
506
|
return 0;
|
|
@@ -513,7 +524,7 @@ var ViewInfinite = /*#__PURE__*/function (_React$Component) {
|
|
|
513
524
|
var isPrev = panelId === prevPanel || panelId === swipeBackPrevPanel;
|
|
514
525
|
var compensateScroll = isPrev || panelId === swipeBackNextPanel || panelId === nextPanel && isBack;
|
|
515
526
|
var isTransitionTarget = animated && panelId === (isBack ? prevPanel : nextPanel);
|
|
516
|
-
var scrollList =
|
|
527
|
+
var scrollList = _this4.scrolls[panelId] || [];
|
|
517
528
|
var scroll = scrollList[scrollList.length - 1] || 0;
|
|
518
529
|
return (0, _jsxRuntime.createScopedElement)("div", {
|
|
519
530
|
vkuiClass: (0, _classNames.classNames)('View__panel', {
|
|
@@ -525,11 +536,11 @@ var ViewInfinite = /*#__PURE__*/function (_React$Component) {
|
|
|
525
536
|
'View__panel--swipe-back-success': swipeBackResult === SwipeBackResults.success,
|
|
526
537
|
'View__panel--swipe-back-failed': swipeBackResult === SwipeBackResults.fail
|
|
527
538
|
}),
|
|
528
|
-
onAnimationEnd: isTransitionTarget ?
|
|
539
|
+
onAnimationEnd: isTransitionTarget ? _this4.transitionEndHandler : null,
|
|
529
540
|
ref: function ref(el) {
|
|
530
|
-
return
|
|
541
|
+
return _this4.panelNodes[panelId] = el;
|
|
531
542
|
},
|
|
532
|
-
style:
|
|
543
|
+
style: _this4.calcPanelSwipeStyles(panelId),
|
|
533
544
|
key: panelId
|
|
534
545
|
}, (0, _jsxRuntime.createScopedElement)("div", {
|
|
535
546
|
vkuiClass: "View__panel-in",
|