@vkontakte/vkui 4.15.0 → 4.16.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 +391 -282
- package/.cache/ts/src/components/AppRoot/AppRoot.d.ts +1 -0
- package/.cache/ts/src/components/ChipsSelect/ChipsSelect.d.ts +1 -1
- package/.cache/ts/src/components/CustomSelect/CustomSelect.d.ts +2 -2
- package/.cache/ts/src/components/FixedLayout/FixedLayout.d.ts +4 -9
- package/.cache/ts/src/components/ModalPage/ModalPage.d.ts +1 -2
- package/.cache/ts/src/components/Root/Root.d.ts +5 -27
- package/.cache/ts/src/components/SimpleCheckbox/SimpleCheckbox.d.ts +9 -0
- package/.cache/ts/src/components/Tappable/Tappable.d.ts +12 -9
- package/.cache/ts/src/components/Touch/Touch.d.ts +1 -2
- package/.cache/ts/src/components/UsersStack/masks.d.ts +1 -1
- package/.cache/ts/src/hooks/useEventListener.d.ts +2 -2
- package/.cache/ts/src/hooks/useKeyboard.d.ts +11 -0
- package/.cache/ts/src/index.d.ts +1 -1
- package/.cache/ts/src/lib/select.d.ts +7 -0
- package/.cache/ts/src/lib/touch.d.ts +1 -1
- package/.cache/ts/src/lib/utils.d.ts +2 -3
- package/.cache/ts/src/types.d.ts +2 -6
- package/.cache/ts/src/unstable/index.d.ts +2 -0
- package/babel.cjs.config.js +7 -1
- package/babel.config.js +7 -1
- package/dist/cjs/components/AppRoot/AppRoot.d.ts +1 -0
- package/dist/cjs/components/AppRoot/AppRoot.js +29 -1
- package/dist/cjs/components/AppRoot/AppRoot.js.map +1 -1
- package/dist/cjs/components/Banner/Banner.js +1 -1
- package/dist/cjs/components/Banner/Banner.js.map +1 -1
- package/dist/cjs/components/Cell/Cell.js +3 -3
- package/dist/cjs/components/Cell/Cell.js.map +1 -1
- package/dist/cjs/components/ChipsSelect/ChipsSelect.d.ts +1 -1
- package/dist/cjs/components/ChipsSelect/ChipsSelect.js +5 -6
- package/dist/cjs/components/ChipsSelect/ChipsSelect.js.map +1 -1
- package/dist/cjs/components/ChipsSelect/useChipsSelect.js +2 -2
- package/dist/cjs/components/ChipsSelect/useChipsSelect.js.map +1 -1
- package/dist/cjs/components/CustomSelect/CustomSelect.d.ts +2 -2
- package/dist/cjs/components/CustomSelect/CustomSelect.js +3 -3
- package/dist/cjs/components/CustomSelect/CustomSelect.js.map +1 -1
- package/dist/cjs/components/FixedLayout/FixedLayout.d.ts +4 -9
- package/dist/cjs/components/FixedLayout/FixedLayout.js +91 -179
- package/dist/cjs/components/FixedLayout/FixedLayout.js.map +1 -1
- package/dist/cjs/components/Gallery/Gallery.js +2 -2
- package/dist/cjs/components/Gallery/Gallery.js.map +1 -1
- package/dist/cjs/components/Header/Header.js +1 -1
- package/dist/cjs/components/Header/Header.js.map +1 -1
- package/dist/cjs/components/ModalCardBase/ModalCardBase.js +6 -1
- package/dist/cjs/components/ModalCardBase/ModalCardBase.js.map +1 -1
- package/dist/cjs/components/ModalPage/ModalPage.d.ts +1 -2
- package/dist/cjs/components/ModalPage/ModalPage.js.map +1 -1
- package/dist/cjs/components/ModalRoot/ModalRoot.js +2 -2
- package/dist/cjs/components/ModalRoot/ModalRoot.js.map +1 -1
- package/dist/cjs/components/Panel/Panel.js +2 -2
- package/dist/cjs/components/Panel/Panel.js.map +1 -1
- package/dist/cjs/components/PanelHeaderContent/PanelHeaderContent.js +0 -1
- package/dist/cjs/components/PanelHeaderContent/PanelHeaderContent.js.map +1 -1
- package/dist/cjs/components/PullToRefresh/PullToRefresh.js +2 -2
- package/dist/cjs/components/PullToRefresh/PullToRefresh.js.map +1 -1
- package/dist/cjs/components/RangeSlider/UniversalSlider.js +2 -2
- package/dist/cjs/components/RangeSlider/UniversalSlider.js.map +1 -1
- package/dist/cjs/components/Root/Root.d.ts +5 -27
- package/dist/cjs/components/Root/Root.js +158 -214
- package/dist/cjs/components/Root/Root.js.map +1 -1
- package/dist/cjs/components/Search/Search.js +3 -3
- package/dist/cjs/components/Search/Search.js.map +1 -1
- package/dist/cjs/components/SimpleCell/SimpleCell.js.map +1 -1
- package/dist/cjs/components/SimpleCheckbox/SimpleCheckbox.d.ts +9 -0
- package/dist/cjs/components/SimpleCheckbox/SimpleCheckbox.js +126 -0
- package/dist/cjs/components/SimpleCheckbox/SimpleCheckbox.js.map +1 -0
- package/dist/cjs/components/Snackbar/Snackbar.js +2 -2
- package/dist/cjs/components/Snackbar/Snackbar.js.map +1 -1
- package/dist/cjs/components/Tappable/Tappable.d.ts +12 -9
- package/dist/cjs/components/Tappable/Tappable.js +47 -36
- package/dist/cjs/components/Tappable/Tappable.js.map +1 -1
- package/dist/cjs/components/Touch/Touch.d.ts +1 -2
- package/dist/cjs/components/Touch/Touch.js +172 -283
- package/dist/cjs/components/Touch/Touch.js.map +1 -1
- package/dist/cjs/components/UsersStack/UsersStack.js +9 -18
- package/dist/cjs/components/UsersStack/UsersStack.js.map +1 -1
- package/dist/cjs/components/UsersStack/masks.d.ts +1 -1
- package/dist/cjs/components/UsersStack/masks.js +5 -8
- package/dist/cjs/components/UsersStack/masks.js.map +1 -1
- package/dist/cjs/components/View/View.js +2 -2
- package/dist/cjs/components/View/View.js.map +1 -1
- package/dist/cjs/components/View/ViewInfinite.js +2 -2
- package/dist/cjs/components/View/ViewInfinite.js.map +1 -1
- package/dist/cjs/hooks/useEventListener.d.ts +2 -2
- package/dist/cjs/hooks/useEventListener.js +9 -4
- package/dist/cjs/hooks/useEventListener.js.map +1 -1
- package/dist/cjs/hooks/useGlobalEventListener.js +2 -4
- package/dist/cjs/hooks/useGlobalEventListener.js.map +1 -1
- package/dist/cjs/hooks/useInsets.js +3 -10
- package/dist/cjs/hooks/useInsets.js.map +1 -1
- package/dist/cjs/hooks/useKeyboard.d.ts +11 -0
- package/dist/cjs/hooks/useKeyboard.js +78 -0
- package/dist/cjs/hooks/useKeyboard.js.map +1 -0
- package/dist/cjs/hooks/useKeyboardInputTracker.js +4 -2
- package/dist/cjs/hooks/useKeyboardInputTracker.js.map +1 -1
- package/dist/cjs/index.d.ts +1 -1
- package/dist/cjs/index.js +2 -2
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/lib/select.d.ts +7 -0
- package/dist/cjs/lib/select.js +73 -0
- package/dist/cjs/lib/select.js.map +1 -0
- package/dist/cjs/lib/touch.d.ts +1 -1
- package/dist/cjs/lib/touch.js +6 -2
- package/dist/cjs/lib/touch.js.map +1 -1
- package/dist/cjs/lib/utils.d.ts +2 -3
- package/dist/cjs/lib/utils.js.map +1 -1
- package/dist/cjs/types.d.ts +2 -6
- package/dist/cjs/unstable/index.d.ts +2 -0
- package/dist/cjs/unstable/index.js +8 -0
- package/dist/cjs/unstable/index.js.map +1 -1
- package/dist/components/AppRoot/AppRoot.d.ts +1 -0
- package/dist/components/AppRoot/AppRoot.js +29 -5
- package/dist/components/AppRoot/AppRoot.js.map +1 -1
- package/dist/components/Banner/Banner.js +1 -1
- package/dist/components/Banner/Banner.js.map +1 -1
- package/dist/components/Cell/Cell.js +1 -1
- package/dist/components/Cell/Cell.js.map +1 -1
- package/dist/components/ChipsSelect/ChipsSelect.d.ts +1 -1
- package/dist/components/ChipsSelect/ChipsSelect.js +4 -6
- package/dist/components/ChipsSelect/ChipsSelect.js.map +1 -1
- package/dist/components/ChipsSelect/useChipsSelect.js +2 -2
- package/dist/components/ChipsSelect/useChipsSelect.js.map +1 -1
- package/dist/components/CustomSelect/CustomSelect.d.ts +2 -2
- package/dist/components/CustomSelect/CustomSelect.js +2 -3
- package/dist/components/CustomSelect/CustomSelect.js.map +1 -1
- package/dist/components/FixedLayout/FixedLayout.d.ts +4 -9
- package/dist/components/FixedLayout/FixedLayout.js +84 -175
- package/dist/components/FixedLayout/FixedLayout.js.map +1 -1
- package/dist/components/Gallery/Gallery.js +1 -1
- package/dist/components/Gallery/Gallery.js.map +1 -1
- package/dist/components/Header/Header.js +1 -1
- package/dist/components/Header/Header.js.map +1 -1
- package/dist/components/ModalCardBase/ModalCardBase.js +5 -1
- package/dist/components/ModalCardBase/ModalCardBase.js.map +1 -1
- package/dist/components/ModalPage/ModalPage.d.ts +1 -2
- package/dist/components/ModalPage/ModalPage.js.map +1 -1
- package/dist/components/ModalRoot/ModalRoot.js +1 -1
- package/dist/components/ModalRoot/ModalRoot.js.map +1 -1
- package/dist/components/Panel/Panel.js +1 -1
- package/dist/components/Panel/Panel.js.map +1 -1
- package/dist/components/PanelHeaderContent/PanelHeaderContent.js +0 -1
- package/dist/components/PanelHeaderContent/PanelHeaderContent.js.map +1 -1
- package/dist/components/PullToRefresh/PullToRefresh.js +1 -1
- package/dist/components/PullToRefresh/PullToRefresh.js.map +1 -1
- package/dist/components/RangeSlider/UniversalSlider.js +1 -1
- package/dist/components/RangeSlider/UniversalSlider.js.map +1 -1
- package/dist/components/Root/Root.d.ts +5 -27
- package/dist/components/Root/Root.js +152 -207
- package/dist/components/Root/Root.js.map +1 -1
- package/dist/components/Search/Search.js +1 -1
- package/dist/components/Search/Search.js.map +1 -1
- package/dist/components/SimpleCell/SimpleCell.js.map +1 -1
- package/dist/components/SimpleCheckbox/SimpleCheckbox.d.ts +9 -0
- package/dist/components/SimpleCheckbox/SimpleCheckbox.js +97 -0
- package/dist/components/SimpleCheckbox/SimpleCheckbox.js.map +1 -0
- package/dist/components/Snackbar/Snackbar.js +1 -1
- package/dist/components/Snackbar/Snackbar.js.map +1 -1
- package/dist/components/Tappable/Tappable.d.ts +12 -9
- package/dist/components/Tappable/Tappable.js +45 -37
- package/dist/components/Tappable/Tappable.js.map +1 -1
- package/dist/components/Touch/Touch.d.ts +1 -2
- package/dist/components/Touch/Touch.js +163 -286
- package/dist/components/Touch/Touch.js.map +1 -1
- package/dist/components/UsersStack/UsersStack.js +7 -16
- package/dist/components/UsersStack/UsersStack.js.map +1 -1
- package/dist/components/UsersStack/masks.d.ts +1 -1
- package/dist/components/UsersStack/masks.js +6 -9
- package/dist/components/UsersStack/masks.js.map +1 -1
- package/dist/components/View/View.js +1 -1
- package/dist/components/View/View.js.map +1 -1
- package/dist/components/View/ViewInfinite.js +1 -1
- 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/ActionSheetItem/ActionSheetItem.css +1 -1
- package/dist/cssm/components/AppRoot/AppRoot.css +1 -0
- package/dist/cssm/components/AppRoot/AppRoot.js +30 -2
- package/dist/cssm/components/AppRoot/AppRoot.js.map +1 -1
- package/dist/cssm/components/Banner/Banner.css +1 -1
- package/dist/cssm/components/Banner/Banner.js +1 -1
- package/dist/cssm/components/Banner/Banner.js.map +1 -1
- package/dist/cssm/components/Cell/Cell.js +1 -1
- package/dist/cssm/components/Cell/Cell.js.map +1 -1
- package/dist/cssm/components/ChipsSelect/ChipsSelect.js +4 -6
- package/dist/cssm/components/ChipsSelect/ChipsSelect.js.map +1 -1
- package/dist/cssm/components/ChipsSelect/useChipsSelect.js +2 -2
- package/dist/cssm/components/ChipsSelect/useChipsSelect.js.map +1 -1
- package/dist/cssm/components/CustomSelect/CustomSelect.js +2 -3
- package/dist/cssm/components/CustomSelect/CustomSelect.js.map +1 -1
- package/dist/cssm/components/FixedLayout/FixedLayout.js +84 -175
- package/dist/cssm/components/FixedLayout/FixedLayout.js.map +1 -1
- package/dist/cssm/components/Gallery/Gallery.js +1 -1
- package/dist/cssm/components/Gallery/Gallery.js.map +1 -1
- package/dist/cssm/components/Header/Header.js +1 -1
- package/dist/cssm/components/Header/Header.js.map +1 -1
- package/dist/cssm/components/ModalCardBase/ModalCardBase.css +1 -1
- package/dist/cssm/components/ModalCardBase/ModalCardBase.js +5 -1
- package/dist/cssm/components/ModalCardBase/ModalCardBase.js.map +1 -1
- package/dist/cssm/components/ModalPage/ModalPage.js.map +1 -1
- package/dist/cssm/components/ModalRoot/ModalRoot.css +1 -1
- package/dist/cssm/components/ModalRoot/ModalRoot.js +1 -1
- package/dist/cssm/components/ModalRoot/ModalRoot.js.map +1 -1
- package/dist/cssm/components/Panel/Panel.js +1 -1
- package/dist/cssm/components/Panel/Panel.js.map +1 -1
- package/dist/cssm/components/PanelHeaderContent/PanelHeaderContent.css +1 -1
- package/dist/cssm/components/PanelHeaderContent/PanelHeaderContent.js +0 -1
- package/dist/cssm/components/PanelHeaderContent/PanelHeaderContent.js.map +1 -1
- package/dist/cssm/components/PullToRefresh/PullToRefresh.js +1 -1
- package/dist/cssm/components/PullToRefresh/PullToRefresh.js.map +1 -1
- package/dist/cssm/components/RangeSlider/UniversalSlider.js +1 -1
- package/dist/cssm/components/RangeSlider/UniversalSlider.js.map +1 -1
- package/dist/cssm/components/Root/Root.js +152 -207
- package/dist/cssm/components/Root/Root.js.map +1 -1
- package/dist/cssm/components/Search/Search.js +1 -1
- package/dist/cssm/components/Search/Search.js.map +1 -1
- package/dist/cssm/components/SimpleCell/SimpleCell.js.map +1 -1
- package/dist/cssm/components/SimpleCheckbox/SimpleCheckbox.css +1 -0
- package/dist/cssm/components/SimpleCheckbox/SimpleCheckbox.js +98 -0
- package/dist/cssm/components/SimpleCheckbox/SimpleCheckbox.js.map +1 -0
- package/dist/cssm/components/Snackbar/Snackbar.js +1 -1
- package/dist/cssm/components/Snackbar/Snackbar.js.map +1 -1
- package/dist/cssm/components/Tappable/Tappable.js +45 -37
- package/dist/cssm/components/Tappable/Tappable.js.map +1 -1
- package/dist/cssm/components/Touch/Touch.js +163 -286
- package/dist/cssm/components/Touch/Touch.js.map +1 -1
- package/dist/cssm/components/UsersStack/UsersStack.css +1 -1
- package/dist/cssm/components/UsersStack/UsersStack.js +7 -16
- package/dist/cssm/components/UsersStack/UsersStack.js.map +1 -1
- package/dist/cssm/components/UsersStack/masks.js +6 -9
- package/dist/cssm/components/UsersStack/masks.js.map +1 -1
- package/dist/cssm/components/View/View.js +1 -1
- package/dist/cssm/components/View/View.js.map +1 -1
- package/dist/cssm/components/View/ViewInfinite.js +1 -1
- package/dist/cssm/components/View/ViewInfinite.js.map +1 -1
- package/dist/cssm/hooks/useEventListener.js +8 -4
- package/dist/cssm/hooks/useEventListener.js.map +1 -1
- package/dist/cssm/hooks/useGlobalEventListener.js +2 -2
- package/dist/cssm/hooks/useGlobalEventListener.js.map +1 -1
- package/dist/cssm/hooks/useInsets.js +2 -10
- package/dist/cssm/hooks/useInsets.js.map +1 -1
- package/dist/cssm/hooks/useKeyboard.js +62 -0
- package/dist/cssm/hooks/useKeyboard.js.map +1 -0
- package/dist/cssm/hooks/useKeyboardInputTracker.js +4 -2
- package/dist/cssm/hooks/useKeyboardInputTracker.js.map +1 -1
- package/dist/cssm/index.js +1 -1
- package/dist/cssm/index.js.map +1 -1
- package/dist/cssm/lib/select.js +62 -0
- package/dist/cssm/lib/select.js.map +1 -0
- package/dist/cssm/lib/touch.js +5 -2
- package/dist/cssm/lib/touch.js.map +1 -1
- package/dist/cssm/lib/utils.js.map +1 -1
- package/dist/cssm/styles/animations.css +1 -1
- package/dist/cssm/styles/common.css +1 -1
- package/dist/cssm/styles/components.css +1 -1
- package/dist/cssm/styles/constants.css +1 -1
- package/dist/cssm/styles/unstable.css +1 -1
- package/dist/cssm/unstable/index.js +1 -0
- package/dist/cssm/unstable/index.js.map +1 -1
- package/dist/hooks/useEventListener.d.ts +2 -2
- package/dist/hooks/useEventListener.js +8 -4
- package/dist/hooks/useEventListener.js.map +1 -1
- package/dist/hooks/useGlobalEventListener.js +2 -2
- package/dist/hooks/useGlobalEventListener.js.map +1 -1
- package/dist/hooks/useInsets.js +2 -10
- package/dist/hooks/useInsets.js.map +1 -1
- package/dist/hooks/useKeyboard.d.ts +11 -0
- package/dist/hooks/useKeyboard.js +62 -0
- package/dist/hooks/useKeyboard.js.map +1 -0
- package/dist/hooks/useKeyboardInputTracker.js +4 -2
- package/dist/hooks/useKeyboardInputTracker.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/select.d.ts +7 -0
- package/dist/lib/select.js +62 -0
- package/dist/lib/select.js.map +1 -0
- package/dist/lib/touch.d.ts +1 -1
- package/dist/lib/touch.js +5 -2
- package/dist/lib/touch.js.map +1 -1
- package/dist/lib/utils.d.ts +2 -3
- package/dist/lib/utils.js.map +1 -1
- package/dist/types.d.ts +2 -6
- package/dist/unstable/index.d.ts +2 -0
- package/dist/unstable/index.js +1 -0
- package/dist/unstable/index.js.map +1 -1
- package/dist/unstable.css +1 -1
- package/dist/unstable.css.map +1 -1
- package/dist/vkui.css +1 -1
- package/dist/vkui.css.map +1 -1
- package/package.json +4 -2
- package/postcss.config.js +1 -1
- package/src/components/ActionSheetItem/ActionSheetItem.css +4 -8
- package/src/components/AppRoot/AppRoot.css +20 -0
- package/src/components/AppRoot/AppRoot.tsx +30 -0
- package/src/components/Banner/Banner.css +4 -0
- package/src/components/Banner/Banner.tsx +1 -1
- package/src/components/Cell/Cell.tsx +1 -1
- package/src/components/ChipsSelect/ChipsSelect.tsx +4 -7
- package/src/components/ChipsSelect/Readme.md +0 -2
- package/src/components/ChipsSelect/useChipsSelect.ts +1 -1
- package/src/components/CustomSelect/CustomSelect.tsx +3 -2
- package/src/components/FixedLayout/FixedLayout.tsx +61 -147
- package/src/components/Gallery/Gallery.tsx +1 -1
- package/src/components/Header/Header.tsx +1 -1
- package/src/components/ModalCardBase/ModalCardBase.css +4 -0
- package/src/components/ModalCardBase/ModalCardBase.tsx +5 -1
- package/src/components/ModalPage/ModalPage.tsx +1 -2
- package/src/components/ModalRoot/ModalRoot.css +10 -0
- package/src/components/ModalRoot/ModalRoot.tsx +1 -1
- package/src/components/Panel/Panel.tsx +1 -1
- package/src/components/PanelHeaderContent/PanelHeaderContent.css +2 -1
- package/src/components/PanelHeaderContent/PanelHeaderContent.tsx +2 -2
- package/src/components/PullToRefresh/PullToRefresh.tsx +1 -1
- package/src/components/RangeSlider/UniversalSlider.tsx +1 -1
- package/src/components/Root/Readme.md +27 -37
- package/src/components/Root/Root.tsx +112 -191
- package/src/components/Search/Search.tsx +1 -1
- package/src/components/Separator/Readme.md +3 -1
- package/src/components/SimpleCell/SimpleCell.tsx +1 -1
- package/src/components/SimpleCheckbox/Readme.md +17 -0
- package/src/components/SimpleCheckbox/SimpleCheckbox.css +115 -0
- package/src/components/SimpleCheckbox/SimpleCheckbox.tsx +105 -0
- package/src/components/Snackbar/Snackbar.tsx +1 -1
- package/src/components/Tappable/Tappable.tsx +28 -37
- package/src/components/Touch/Touch.tsx +100 -238
- package/src/components/UsersStack/UsersStack.css +5 -9
- package/src/components/UsersStack/UsersStack.tsx +4 -11
- package/src/components/UsersStack/masks.tsx +6 -9
- package/src/components/View/Readme.md +34 -42
- package/src/components/View/View.tsx +1 -1
- package/src/components/View/ViewInfinite.tsx +1 -1
- package/src/hooks/useEventListener.ts +11 -8
- package/src/hooks/useGlobalEventListener.ts +2 -2
- package/src/hooks/useInsets.ts +2 -8
- package/src/hooks/useKeyboard.ts +67 -0
- package/src/hooks/useKeyboardInputTracker.ts +4 -2
- package/src/index.ts +1 -1
- package/src/lib/select.ts +53 -0
- package/src/lib/touch.ts +2 -2
- package/src/lib/utils.ts +3 -4
- package/src/styles/animations.css +0 -14
- package/src/styles/common.css +0 -21
- package/src/styles/components.css +2 -0
- package/src/styles/constants.css +3 -0
- package/src/styles/unstable.css +1 -0
- package/src/types.ts +2 -8
- package/src/unstable/index.ts +3 -0
|
@@ -15,216 +15,128 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
|
|
|
15
15
|
|
|
16
16
|
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
17
17
|
|
|
18
|
-
var
|
|
19
|
-
|
|
20
|
-
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
21
|
-
|
|
22
|
-
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
23
|
-
|
|
24
|
-
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
18
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
25
19
|
|
|
26
|
-
var
|
|
27
|
-
|
|
28
|
-
var _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/createSuper"));
|
|
29
|
-
|
|
30
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
20
|
+
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
31
21
|
|
|
32
22
|
var React = _interopRequireWildcard(require("react"));
|
|
33
23
|
|
|
34
24
|
var _getClassName = require("../../helpers/getClassName");
|
|
35
25
|
|
|
36
|
-
var
|
|
26
|
+
var _classNames = require("../../lib/classNames");
|
|
37
27
|
|
|
38
28
|
var _View = require("../View/View");
|
|
39
29
|
|
|
40
|
-
var _withContext = require("../../hoc/withContext");
|
|
41
|
-
|
|
42
|
-
var _withPlatform = require("../../hoc/withPlatform");
|
|
43
|
-
|
|
44
|
-
var _withPanelContext = require("../Panel/withPanelContext");
|
|
45
|
-
|
|
46
|
-
var _utils = require("../../lib/utils");
|
|
47
|
-
|
|
48
30
|
var _SplitCol = require("../SplitCol/SplitCol");
|
|
49
31
|
|
|
50
32
|
var _TooltipContainer = require("../Tooltip/TooltipContainer");
|
|
51
33
|
|
|
34
|
+
var _PanelContext = require("../Panel/PanelContext");
|
|
35
|
+
|
|
52
36
|
var _dom = require("../../lib/dom");
|
|
53
37
|
|
|
54
38
|
var _platform = require("../../lib/platform");
|
|
55
39
|
|
|
56
40
|
var _warnOnce = require("../../lib/warnOnce");
|
|
57
41
|
|
|
58
|
-
var
|
|
59
|
-
var warn = (0, _warnOnce.warnOnce)('FixedLayout');
|
|
42
|
+
var _useGlobalEventListener = require("../../hooks/useGlobalEventListener");
|
|
60
43
|
|
|
61
|
-
var
|
|
62
|
-
(0, _inherits2.default)(FixedLayout, _React$Component);
|
|
44
|
+
var _useExternRef = require("../../hooks/useExternRef");
|
|
63
45
|
|
|
64
|
-
|
|
46
|
+
var _usePlatform = require("../../hooks/usePlatform");
|
|
65
47
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
(0, _classCallCheck2.default)(this, FixedLayout);
|
|
48
|
+
var _excluded = ["children", "style", "vertical", "getRootRef", "getRef", "filled"];
|
|
49
|
+
var warn = (0, _warnOnce.warnOnce)('FixedLayout');
|
|
70
50
|
|
|
71
|
-
|
|
72
|
-
|
|
51
|
+
var FixedLayout = function FixedLayout(_ref) {
|
|
52
|
+
var children = _ref.children,
|
|
53
|
+
style = _ref.style,
|
|
54
|
+
vertical = _ref.vertical,
|
|
55
|
+
getRootRef = _ref.getRootRef,
|
|
56
|
+
getRef = _ref.getRef,
|
|
57
|
+
filled = _ref.filled,
|
|
58
|
+
restProps = (0, _objectWithoutProperties2.default)(_ref, _excluded);
|
|
59
|
+
var platform = (0, _usePlatform.usePlatform)();
|
|
60
|
+
|
|
61
|
+
var _React$useContext = React.useContext(_SplitCol.SplitColContext),
|
|
62
|
+
colRef = _React$useContext.colRef;
|
|
63
|
+
|
|
64
|
+
var _useDOM = (0, _dom.useDOM)(),
|
|
65
|
+
window = _useDOM.window,
|
|
66
|
+
document = _useDOM.document;
|
|
67
|
+
|
|
68
|
+
var _React$useContext2 = React.useContext(_PanelContext.PanelContext),
|
|
69
|
+
panel = _React$useContext2.panel,
|
|
70
|
+
getPanelNode = _React$useContext2.getPanelNode;
|
|
71
|
+
|
|
72
|
+
var _React$useState = React.useState({}),
|
|
73
|
+
_React$useState2 = (0, _slicedToArray2.default)(_React$useState, 2),
|
|
74
|
+
transitionOverrideStyle = _React$useState2[0],
|
|
75
|
+
setTransitionOverrideStyle = _React$useState2[1];
|
|
76
|
+
|
|
77
|
+
var _React$useState3 = React.useState(null),
|
|
78
|
+
_React$useState4 = (0, _slicedToArray2.default)(_React$useState3, 2),
|
|
79
|
+
width = _React$useState4[0],
|
|
80
|
+
setWidth = _React$useState4[1];
|
|
81
|
+
|
|
82
|
+
var elRef = (0, _useExternRef.useExternRef)(getRootRef);
|
|
83
|
+
|
|
84
|
+
var doResize = function doResize() {
|
|
85
|
+
return setWidth(colRef !== null && colRef !== void 0 && colRef.current ? "".concat(colRef.current.offsetWidth, "px") : null);
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
React.useEffect(doResize, []);
|
|
89
|
+
(0, _useGlobalEventListener.useGlobalEventListener)(window, 'resize', doResize);
|
|
90
|
+
(0, _useGlobalEventListener.useGlobalEventListener)(document, _View.transitionStartEventName, function (e) {
|
|
91
|
+
var panelScroll = e.detail.scrolls[panel] || 0; // support for unstable ViewInfinite
|
|
92
|
+
|
|
93
|
+
if (Array.isArray(panelScroll)) {
|
|
94
|
+
var scrolls = panelScroll;
|
|
95
|
+
panelScroll = scrolls[scrolls.length - 1];
|
|
73
96
|
}
|
|
74
97
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
top: null,
|
|
79
|
-
bottom: null,
|
|
80
|
-
width: ''
|
|
81
|
-
});
|
|
82
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "el", void 0);
|
|
83
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onMountResizeTimeout", void 0);
|
|
84
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onViewTransitionStart", function (e) {
|
|
85
|
-
var panelScroll = e.detail.scrolls[_this.props.panel] || 0; // support for unstable ViewInfinite
|
|
86
|
-
|
|
87
|
-
if (Array.isArray(panelScroll)) {
|
|
88
|
-
var scrolls = panelScroll;
|
|
89
|
-
panelScroll = scrolls[scrolls.length - 1];
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
var fromPanelHasScroll = _this.props.panel === e.detail.from && panelScroll > 0;
|
|
93
|
-
var toPanelHasScroll = _this.props.panel === e.detail.to && panelScroll > 0; // если переход назад на Android - анимация только у панели с которой уходим (detail.from), и подстраиваться под скролл надо только на ней
|
|
94
|
-
// на iOS переход между панелями горизонтальный, поэтому там нужно подстраивать хедеры на обеих панелях
|
|
95
|
-
|
|
96
|
-
var panelAnimated = _this.props.platform === _platform.IOS || !(_this.props.panel === e.detail.to && e.detail.isBack); // Для панелей, с которых уходим всегда выставляется скролл
|
|
97
|
-
// Для панелей на которые приходим надо смотреть, есть ли браузерный скролл и применяется ли к ней анимация перехода:
|
|
98
|
-
|
|
99
|
-
if (fromPanelHasScroll || toPanelHasScroll && _this.canTargetPanelScroll && panelAnimated) {
|
|
100
|
-
_this.setState({
|
|
101
|
-
position: 'absolute',
|
|
102
|
-
top: _this.props.vertical === 'top' || fromPanelHasScroll ? _this.el.offsetTop + panelScroll : null,
|
|
103
|
-
bottom: _this.props.vertical === 'bottom' && !fromPanelHasScroll ? -panelScroll : null,
|
|
104
|
-
width: ''
|
|
105
|
-
});
|
|
106
|
-
}
|
|
107
|
-
});
|
|
108
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onViewTransitionEnd", function () {
|
|
109
|
-
_this.setState({
|
|
110
|
-
position: null,
|
|
111
|
-
top: null,
|
|
112
|
-
bottom: null
|
|
113
|
-
});
|
|
114
|
-
|
|
115
|
-
_this.doResize();
|
|
116
|
-
});
|
|
117
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "doResize", function () {
|
|
118
|
-
var colRef = _this.props.splitCol.colRef;
|
|
119
|
-
|
|
120
|
-
if (colRef && colRef.current) {
|
|
121
|
-
var node = colRef.current;
|
|
122
|
-
var width = node.offsetWidth;
|
|
123
|
-
|
|
124
|
-
_this.setState({
|
|
125
|
-
width: "".concat(width, "px"),
|
|
126
|
-
position: null
|
|
127
|
-
});
|
|
128
|
-
} else {
|
|
129
|
-
_this.setState({
|
|
130
|
-
width: '',
|
|
131
|
-
position: null
|
|
132
|
-
});
|
|
133
|
-
}
|
|
134
|
-
});
|
|
135
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "getRef", function (element) {
|
|
136
|
-
_this.el = element;
|
|
137
|
-
(0, _utils.setRef)(element, _this.props.getRootRef);
|
|
138
|
-
});
|
|
139
|
-
return _this;
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
(0, _createClass2.default)(FixedLayout, [{
|
|
143
|
-
key: "document",
|
|
144
|
-
get: function get() {
|
|
145
|
-
return this.props.document;
|
|
146
|
-
}
|
|
147
|
-
}, {
|
|
148
|
-
key: "window",
|
|
149
|
-
get: function get() {
|
|
150
|
-
return this.props.window;
|
|
151
|
-
}
|
|
152
|
-
}, {
|
|
153
|
-
key: "currentPanel",
|
|
154
|
-
get: function get() {
|
|
155
|
-
var elem = this.props.getPanelNode();
|
|
98
|
+
var fromPanelHasScroll = panel === e.detail.from && panelScroll > 0;
|
|
99
|
+
var toPanelHasScroll = panel === e.detail.to && panelScroll > 0; // если переход назад на Android - анимация только у панели с которой уходим (detail.from), и подстраиваться под скролл надо только на ней
|
|
100
|
+
// на iOS переход между панелями горизонтальный, поэтому там нужно подстраивать хедеры на обеих панелях
|
|
156
101
|
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
}
|
|
102
|
+
var panelAnimated = platform === _platform.IOS || !(panel === e.detail.to && e.detail.isBack);
|
|
103
|
+
var currentPanel = getPanelNode();
|
|
160
104
|
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
key: "canTargetPanelScroll",
|
|
165
|
-
get: function get() {
|
|
166
|
-
var panelEl = this.currentPanel;
|
|
105
|
+
if (process.env.NODE_ENV === 'development' && !currentPanel) {
|
|
106
|
+
warn('Panel element not found');
|
|
107
|
+
} // Всегда предпологаем, что может быть скролл в случае, если нет document
|
|
167
108
|
|
|
168
|
-
if (!panelEl) {
|
|
169
|
-
return true; // Всегда предпологаем, что может быть скролл в случае, если нет document
|
|
170
|
-
}
|
|
171
109
|
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
}, {
|
|
175
|
-
key: "componentDidMount",
|
|
176
|
-
value: function componentDidMount() {
|
|
177
|
-
var _this2 = this;
|
|
110
|
+
var canTargetPanelScroll = !currentPanel || currentPanel.scrollHeight > currentPanel.clientHeight; // Для панелей, с которых уходим всегда выставляется скролл
|
|
111
|
+
// Для панелей на которые приходим надо смотреть, есть ли браузерный скролл и применяется ли к ней анимация перехода:
|
|
178
112
|
|
|
179
|
-
|
|
180
|
-
|
|
113
|
+
if (fromPanelHasScroll || toPanelHasScroll && canTargetPanelScroll && panelAnimated) {
|
|
114
|
+
setTransitionOverrideStyle({
|
|
115
|
+
position: 'absolute',
|
|
116
|
+
top: vertical === 'top' || fromPanelHasScroll ? elRef.current.offsetTop + panelScroll : null,
|
|
117
|
+
bottom: vertical === 'bottom' && !fromPanelHasScroll ? -panelScroll : null
|
|
181
118
|
});
|
|
182
|
-
this.window.addEventListener('resize', this.doResize);
|
|
183
|
-
this.document.addEventListener(_View.transitionStartEventName, this.onViewTransitionStart);
|
|
184
|
-
this.document.addEventListener(_View.transitionEndEventName, this.onViewTransitionEnd);
|
|
185
|
-
}
|
|
186
|
-
}, {
|
|
187
|
-
key: "componentWillUnmount",
|
|
188
|
-
value: function componentWillUnmount() {
|
|
189
|
-
clearTimeout(this.onMountResizeTimeout);
|
|
190
|
-
this.window.removeEventListener('resize', this.doResize);
|
|
191
|
-
this.document.removeEventListener(_View.transitionStartEventName, this.onViewTransitionStart);
|
|
192
|
-
this.document.removeEventListener(_View.transitionEndEventName, this.onViewTransitionEnd);
|
|
193
119
|
}
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
'FixedLayout--filled': filled
|
|
216
|
-
}, "FixedLayout--".concat(vertical), !!vertical)),
|
|
217
|
-
style: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, style), this.state)
|
|
218
|
-
}), (0, _jsxRuntime.createScopedElement)("div", {
|
|
219
|
-
vkuiClass: "FixedLayout__in",
|
|
220
|
-
ref: getRef
|
|
221
|
-
}, children));
|
|
222
|
-
}
|
|
223
|
-
}]);
|
|
224
|
-
return FixedLayout;
|
|
225
|
-
}(React.Component);
|
|
226
|
-
|
|
227
|
-
var _default = (0, _withContext.withContext)((0, _withPlatform.withPlatform)((0, _withPanelContext.withPanelContext)((0, _dom.withDOM)(FixedLayout))), _SplitCol.SplitColContext, 'splitCol');
|
|
228
|
-
|
|
120
|
+
});
|
|
121
|
+
(0, _useGlobalEventListener.useGlobalEventListener)(document, _View.transitionEndEventName, function () {
|
|
122
|
+
setTransitionOverrideStyle({});
|
|
123
|
+
doResize();
|
|
124
|
+
});
|
|
125
|
+
return (0, _jsxRuntime.createScopedElement)(_TooltipContainer.TooltipContainer, (0, _extends2.default)({}, restProps, {
|
|
126
|
+
fixed: true,
|
|
127
|
+
ref: elRef,
|
|
128
|
+
vkuiClass: (0, _classNames.classNames)((0, _getClassName.getClassName)('FixedLayout', platform), {
|
|
129
|
+
'FixedLayout--filled': filled
|
|
130
|
+
}, "FixedLayout--".concat(vertical)),
|
|
131
|
+
style: (0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, style), transitionOverrideStyle), {}, {
|
|
132
|
+
width: width
|
|
133
|
+
})
|
|
134
|
+
}), (0, _jsxRuntime.createScopedElement)("div", {
|
|
135
|
+
vkuiClass: "FixedLayout__in",
|
|
136
|
+
ref: getRef
|
|
137
|
+
}, children));
|
|
138
|
+
};
|
|
139
|
+
|
|
140
|
+
var _default = FixedLayout;
|
|
229
141
|
exports.default = _default;
|
|
230
142
|
//# sourceMappingURL=FixedLayout.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/FixedLayout/FixedLayout.tsx"],"names":["warn","FixedLayout","position","top","bottom","width","e","panelScroll","detail","scrolls","props","panel","Array","isArray","length","fromPanelHasScroll","from","toPanelHasScroll","to","panelAnimated","platform","IOS","isBack","canTargetPanelScroll","setState","vertical","el","offsetTop","doResize","colRef","splitCol","current","node","offsetWidth","element","getRootRef","document","window","elem","getPanelNode","process","env","NODE_ENV","panelEl","currentPanel","scrollHeight","clientHeight","onMountResizeTimeout","setTimeout","addEventListener","transitionStartEventName","onViewTransitionStart","transitionEndEventName","onViewTransitionEnd","clearTimeout","removeEventListener","children","style","getRef","filled","restProps","state","React","Component","SplitColContext"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { getClassName } from '../../helpers/getClassName';\nimport { classNames } from '../../lib/classNames';\nimport { transitionEndEventName, TransitionStartEventDetail, transitionStartEventName } from '../View/View';\nimport { withContext } from '../../hoc/withContext';\nimport { HasPlatform, HasRef, HasRootRef } from '../../types';\nimport { withPlatform } from '../../hoc/withPlatform';\nimport { withPanelContext } from '../Panel/withPanelContext';\nimport { setRef } from '../../lib/utils';\nimport { SplitColContext, SplitColContextProps } from '../SplitCol/SplitCol';\nimport { TooltipContainer } from '../Tooltip/TooltipContainer';\nimport { PanelContextProps } from '../Panel/PanelContext';\nimport { DOMProps, withDOM } from '../../lib/dom';\nimport { IOS } from '../../lib/platform';\nimport { warnOnce } from '../../lib/warnOnce';\nimport './FixedLayout.css';\n\nexport interface FixedLayoutProps extends\n React.HTMLAttributes<HTMLDivElement>,\n HasRootRef<HTMLDivElement>,\n HasRef<HTMLDivElement>,\n HasPlatform {\n vertical?: 'top' | 'bottom';\n /**\n * Это свойство определяет, будет ли фон компонента окрашен в цвет фона контента.\n * Это часто необходимо для фиксированных кнопок в нижней части экрана.\n */\n filled?: boolean;\n /**\n * @ignore\n */\n splitCol?: SplitColContextProps;\n}\n\nexport interface FixedLayoutState {\n position: 'absolute' | null;\n top: number;\n bottom: number;\n width: string;\n}\n\nconst warn = warnOnce('FixedLayout');\n\nclass FixedLayout extends React.Component<FixedLayoutProps & DOMProps & PanelContextProps, FixedLayoutState> {\n state: FixedLayoutState = {\n position: 'absolute',\n top: null,\n bottom: null,\n width: '',\n };\n\n el: HTMLDivElement;\n\n private onMountResizeTimeout: number;\n\n get document() {\n return this.props.document;\n }\n\n get window() {\n return this.props.window;\n }\n\n get currentPanel(): HTMLElement {\n const elem = this.props.getPanelNode();\n\n if (process.env.NODE_ENV === 'development' && !elem) {\n warn('Panel element not found');\n }\n\n return elem;\n }\n\n get canTargetPanelScroll() {\n const panelEl = this.currentPanel;\n if (!panelEl) {\n return true; // Всегда предпологаем, что может быть скролл в случае, если нет document\n }\n return panelEl.scrollHeight > panelEl.clientHeight;\n }\n\n componentDidMount() {\n this.onMountResizeTimeout = setTimeout(() => this.doResize());\n this.window.addEventListener('resize', this.doResize);\n\n this.document.addEventListener(transitionStartEventName, this.onViewTransitionStart);\n this.document.addEventListener(transitionEndEventName, this.onViewTransitionEnd);\n }\n\n componentWillUnmount() {\n clearTimeout(this.onMountResizeTimeout);\n this.window.removeEventListener('resize', this.doResize);\n\n this.document.removeEventListener(transitionStartEventName, this.onViewTransitionStart);\n this.document.removeEventListener(transitionEndEventName, this.onViewTransitionEnd);\n }\n\n onViewTransitionStart: EventListener = (e: CustomEvent<TransitionStartEventDetail>) => {\n let panelScroll = e.detail.scrolls[this.props.panel] || 0;\n\n // support for unstable ViewInfinite\n if (Array.isArray(panelScroll)) {\n const scrolls = panelScroll as number[];\n panelScroll = scrolls[scrolls.length - 1];\n }\n\n const fromPanelHasScroll = this.props.panel === e.detail.from && panelScroll > 0;\n const toPanelHasScroll = this.props.panel === e.detail.to && panelScroll > 0;\n\n // если переход назад на Android - анимация только у панели с которой уходим (detail.from), и подстраиваться под скролл надо только на ней\n // на iOS переход между панелями горизонтальный, поэтому там нужно подстраивать хедеры на обеих панелях\n const panelAnimated = this.props.platform === IOS || !(this.props.panel === e.detail.to && e.detail.isBack);\n\n // Для панелей, с которых уходим всегда выставляется скролл\n // Для панелей на которые приходим надо смотреть, есть ли браузерный скролл и применяется ли к ней анимация перехода:\n if (fromPanelHasScroll || toPanelHasScroll && this.canTargetPanelScroll && panelAnimated) {\n this.setState({\n position: 'absolute',\n top: this.props.vertical === 'top' || fromPanelHasScroll ? this.el.offsetTop + panelScroll : null,\n bottom: this.props.vertical === 'bottom' && !fromPanelHasScroll ? -panelScroll : null,\n width: '',\n });\n }\n };\n\n onViewTransitionEnd: VoidFunction = () => {\n this.setState({\n position: null,\n top: null,\n bottom: null,\n });\n\n this.doResize();\n };\n\n doResize = () => {\n const { colRef } = this.props.splitCol;\n\n if (colRef && colRef.current) {\n const node: HTMLElement = colRef.current;\n const width = node.offsetWidth;\n\n this.setState({ width: `${width}px`, position: null });\n } else {\n this.setState({ width: '', position: null });\n }\n };\n\n getRef: React.RefCallback<HTMLDivElement> = (element) => {\n this.el = element;\n setRef(element, this.props.getRootRef);\n };\n\n render() {\n const {\n children,\n style,\n vertical,\n getRootRef,\n getRef,\n platform,\n filled,\n splitCol,\n panel,\n getPanelNode,\n window,\n document,\n ...restProps\n } = this.props;\n\n return (\n <TooltipContainer\n {...restProps}\n fixed\n ref={this.getRef}\n vkuiClass={classNames(getClassName('FixedLayout', platform), {\n 'FixedLayout--filled': filled,\n [`FixedLayout--${vertical}`]: !!vertical,\n })}\n style={{ ...style, ...this.state }}\n >\n <div vkuiClass=\"FixedLayout__in\" ref={getRef}>{children}</div>\n </TooltipContainer>\n );\n }\n}\n\nexport default withContext(\n withPlatform(withPanelContext(withDOM<FixedLayoutProps>(FixedLayout))),\n SplitColContext,\n 'splitCol',\n);\n"],"file":"FixedLayout.js"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/FixedLayout/FixedLayout.tsx"],"names":["warn","FixedLayout","children","style","vertical","getRootRef","getRef","filled","restProps","platform","React","useContext","SplitColContext","colRef","window","document","PanelContext","panel","getPanelNode","useState","transitionOverrideStyle","setTransitionOverrideStyle","width","setWidth","elRef","doResize","current","offsetWidth","useEffect","transitionStartEventName","e","panelScroll","detail","scrolls","Array","isArray","length","fromPanelHasScroll","from","toPanelHasScroll","to","panelAnimated","IOS","isBack","currentPanel","process","env","NODE_ENV","canTargetPanelScroll","scrollHeight","clientHeight","position","top","offsetTop","bottom","transitionEndEventName"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { getClassName } from '../../helpers/getClassName';\nimport { classNames } from '../../lib/classNames';\nimport { transitionEndEventName, TransitionStartEventDetail, transitionStartEventName } from '../View/View';\nimport { HasRef, HasRootRef } from '../../types';\nimport { SplitColContext } from '../SplitCol/SplitCol';\nimport { TooltipContainer } from '../Tooltip/TooltipContainer';\nimport { PanelContext } from '../Panel/PanelContext';\nimport { useDOM } from '../../lib/dom';\nimport { IOS } from '../../lib/platform';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { useGlobalEventListener } from '../../hooks/useGlobalEventListener';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport './FixedLayout.css';\n\nexport interface FixedLayoutProps extends\n React.HTMLAttributes<HTMLDivElement>,\n HasRootRef<HTMLDivElement>,\n HasRef<HTMLDivElement> {\n vertical?: 'top' | 'bottom';\n /**\n * Это свойство определяет, будет ли фон компонента окрашен в цвет фона контента.\n * Это часто необходимо для фиксированных кнопок в нижней части экрана.\n */\n filled?: boolean;\n}\n\nexport interface FixedLayoutState {\n position: 'absolute' | null;\n top: number;\n bottom: number;\n width: string;\n}\n\nconst warn = warnOnce('FixedLayout');\n\nconst FixedLayout: React.FC<FixedLayoutProps> = ({\n children, style, vertical, getRootRef, getRef, filled,\n ...restProps\n}) => {\n const platform = usePlatform();\n const { colRef } = React.useContext(SplitColContext);\n const { window, document } = useDOM();\n const { panel, getPanelNode } = React.useContext(PanelContext);\n const [transitionOverrideStyle, setTransitionOverrideStyle] = React.useState<React.CSSProperties>({});\n const [width, setWidth] = React.useState<string>(null);\n const elRef = useExternRef(getRootRef);\n\n const doResize = () => setWidth(colRef?.current ? `${colRef.current.offsetWidth}px` : null);\n React.useEffect(doResize, []);\n useGlobalEventListener(window, 'resize', doResize);\n useGlobalEventListener(document, transitionStartEventName, (e: CustomEvent<TransitionStartEventDetail>) => {\n let panelScroll = e.detail.scrolls[panel] || 0;\n\n // support for unstable ViewInfinite\n if (Array.isArray(panelScroll)) {\n const scrolls = panelScroll as number[];\n panelScroll = scrolls[scrolls.length - 1];\n }\n\n const fromPanelHasScroll = panel === e.detail.from && panelScroll > 0;\n const toPanelHasScroll = panel === e.detail.to && panelScroll > 0;\n\n // если переход назад на Android - анимация только у панели с которой уходим (detail.from), и подстраиваться под скролл надо только на ней\n // на iOS переход между панелями горизонтальный, поэтому там нужно подстраивать хедеры на обеих панелях\n const panelAnimated = platform === IOS || !(panel === e.detail.to && e.detail.isBack);\n\n const currentPanel = getPanelNode();\n if (process.env.NODE_ENV === 'development' && !currentPanel) {\n warn('Panel element not found');\n }\n // Всегда предпологаем, что может быть скролл в случае, если нет document\n const canTargetPanelScroll = !currentPanel || currentPanel.scrollHeight > currentPanel.clientHeight;\n\n // Для панелей, с которых уходим всегда выставляется скролл\n // Для панелей на которые приходим надо смотреть, есть ли браузерный скролл и применяется ли к ней анимация перехода:\n if (fromPanelHasScroll || toPanelHasScroll && canTargetPanelScroll && panelAnimated) {\n setTransitionOverrideStyle({\n position: 'absolute',\n top: vertical === 'top' || fromPanelHasScroll ? elRef.current.offsetTop + panelScroll : null,\n bottom: vertical === 'bottom' && !fromPanelHasScroll ? -panelScroll : null,\n });\n }\n });\n useGlobalEventListener(document, transitionEndEventName, () => {\n setTransitionOverrideStyle({});\n doResize();\n });\n\n return (\n <TooltipContainer\n {...restProps}\n fixed\n ref={elRef}\n vkuiClass={classNames(getClassName('FixedLayout', platform), {\n 'FixedLayout--filled': filled,\n }, `FixedLayout--${vertical}`)}\n style={{ ...style, ...transitionOverrideStyle, width }}\n >\n <div vkuiClass=\"FixedLayout__in\" ref={getRef}>{children}</div>\n </TooltipContainer>\n );\n};\n\nexport default FixedLayout;\n"],"file":"FixedLayout.js"}
|
|
@@ -33,7 +33,7 @@ var React = _interopRequireWildcard(require("react"));
|
|
|
33
33
|
|
|
34
34
|
var _getClassName = require("../../helpers/getClassName");
|
|
35
35
|
|
|
36
|
-
var _Touch =
|
|
36
|
+
var _Touch = require("../Touch/Touch");
|
|
37
37
|
|
|
38
38
|
var _classNames = require("../../lib/classNames");
|
|
39
39
|
|
|
@@ -469,7 +469,7 @@ var BaseGallery = /*#__PURE__*/function (_React$Component) {
|
|
|
469
469
|
'Gallery--custom-width': slideWidth === 'custom'
|
|
470
470
|
}),
|
|
471
471
|
ref: this.getRootRef
|
|
472
|
-
}), (0, _jsxRuntime.createScopedElement)(_Touch.
|
|
472
|
+
}), (0, _jsxRuntime.createScopedElement)(_Touch.Touch, {
|
|
473
473
|
vkuiClass: "Gallery__viewport",
|
|
474
474
|
onStartX: this.onStart,
|
|
475
475
|
onMoveX: this.onMoveX,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/Gallery/Gallery.tsx"],"names":["BaseGallery","props","e","setState","animation","startT","isDraggable","isFullyVisible","originalEvent","preventDefault","isSlideX","onDragStart","state","deltaX","shiftX","dragging","targetIndex","isSlide","getTarget","slideIndex","onDragEnd","onChange","onEnd","initializeSlides","canSlideLeft","canSlideRight","id","slide","slidesStore","viewport","getRef","container","getRootRef","containerWidth","slides","duration","slideWidth","align","options","React","Children","map","children","_item","i","elem","coordX","offsetLeft","width","offsetWidth","layerWidth","reduce","val","min","calcMin","max","calcMax","calculateIndent","isValidShift","validateIndent","window","requestAnimationFrame","viewportWidth","isCenterWithCustomWidth","length","targetSlide","indent","Number","value","expectDeltaX","Date","now","getTime","shift","direction","item","index","previousValue","Math","abs","currentValue","addEventListener","onResize","prevProps","widthChanged","isPropUpdate","slideCountChanged","count","isCustomWidth","removeEventListener","bullets","platform","hasMouse","showArrows","document","restProps","calculateDragIndent","layerStyle","WebkitTransform","transform","WebkitTransition","transition","onStart","onMoveX","getViewportRef","getSlideRef","slideLeft","slideRight","Component","BaseGalleryAdaptive","Gallery","initialSlideIndex","timeout","useState","localSlideIndex","setSlideIndex","isControlled","Boolean","toArray","filter","childCount","handleChange","useCallback","current","autoplay","useEffect","set","clear","safeSlideIndex"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { getClassName } from '../../helpers/getClassName';\nimport Touch, { TouchEventHandler, TouchEvent } from '../Touch/Touch';\nimport { classNames } from '../../lib/classNames';\nimport { withPlatform } from '../../hoc/withPlatform';\nimport { HasAlign, HasPlatform, HasRef, HasRootRef } from '../../types';\nimport { withDOM, DOMProps } from '../../lib/dom';\nimport { setRef } from '../../lib/utils';\nimport { withAdaptivity, AdaptivityProps } from '../../hoc/withAdaptivity';\nimport HorizontalScrollArrow from '../HorizontalScroll/HorizontalScrollArrow';\nimport { clamp } from '../../helpers/math';\nimport { useTimeout } from '../../hooks/useTimeout';\nimport './Gallery.css';\n\nexport interface BaseGalleryProps extends\n Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange' | 'onDragStart' | 'onDragEnd'>,\n HasPlatform,\n HasAlign,\n HasRootRef<HTMLDivElement>,\n HasRef<HTMLElement> {\n slideWidth?: string | number;\n slideIndex?: number;\n onDragStart?: TouchEventHandler;\n onDragEnd?: TouchEventHandler;\n onChange?(current: number): void;\n onEnd?({ targetIndex }: { targetIndex: number }): void;\n bullets?: 'dark' | 'light' | false;\n isDraggable?: boolean;\n showArrows?: boolean;\n}\n\nexport interface GalleryProps extends BaseGalleryProps {\n initialSlideIndex?: number;\n timeout?: number;\n}\n\nexport interface GalleryState {\n containerWidth: number;\n layerWidth?: number;\n min?: number;\n max?: number;\n startT?: Date;\n deltaX: number;\n shiftX: number;\n slides: GallerySlidesState[];\n animation: boolean;\n duration: number;\n dragging?: boolean;\n}\n\nexport interface GallerySlidesState {\n coordX: number;\n width: number;\n}\n\ntype GetSlideRef = (index: number) => React.RefCallback<HTMLElement>;\n\nclass BaseGallery extends React.Component<BaseGalleryProps & DOMProps & AdaptivityProps, GalleryState> {\n constructor(props: GalleryProps) {\n super(props);\n\n this.state = {\n containerWidth: 0,\n deltaX: 0,\n shiftX: 0,\n slides: [],\n animation: true,\n duration: 0.24,\n };\n\n this.slidesStore = {};\n }\n\n container: HTMLDivElement;\n slidesStore: {\n [index: string]: HTMLElement;\n };\n viewport: HTMLElement;\n\n static defaultProps: Partial<BaseGalleryProps> = {\n slideWidth: '100%',\n children: '',\n align: 'left',\n bullets: false,\n isDraggable: true,\n };\n\n get isCenterWithCustomWidth() {\n return this.props.slideWidth === 'custom' && this.props.align === 'center';\n }\n\n initializeSlides(options: { animation?: boolean } = {}) {\n const slides: GallerySlidesState[] = React.Children.map(\n this.props.children,\n (_item: React.ReactElement, i: number): GallerySlidesState => {\n const elem = this.slidesStore[`slide-${i}`];\n return {\n coordX: elem.offsetLeft,\n width: elem.offsetWidth,\n };\n });\n\n const containerWidth = this.container.offsetWidth;\n const layerWidth = slides.reduce((val: number, slide: GallerySlidesState) => slide.width + val, 0);\n\n const min = this.calcMin({ containerWidth, layerWidth, slides });\n const max = this.calcMax({ slides });\n\n this.setState({ min, max, layerWidth, containerWidth, slides }, () => {\n const shiftX = this.calculateIndent(this.props.slideIndex);\n if (this.state.shiftX === shiftX) {\n return;\n }\n const isValidShift = this.state.shiftX === this.validateIndent(this.state.shiftX);\n const { animation = isValidShift } = options;\n this.setState({ shiftX, animation }, () => {\n if (!this.state.animation) {\n this.props.window.requestAnimationFrame(() => this.setState({ animation: true }));\n }\n });\n });\n }\n\n calcMin({ containerWidth, layerWidth, slides }: Pick<GalleryState, 'containerWidth' | 'layerWidth' | 'slides'>) {\n const viewportWidth = this.viewport.offsetWidth;\n switch (this.props.align) {\n case 'left':\n return containerWidth - layerWidth;\n case 'right':\n return viewportWidth - layerWidth;\n case 'center':\n if (this.isCenterWithCustomWidth && slides.length) {\n const { coordX, width } = slides[slides.length - 1];\n return viewportWidth / 2 - coordX - width / 2;\n } else {\n return viewportWidth - (containerWidth - viewportWidth) / 2 - layerWidth;\n }\n }\n }\n\n calcMax({ slides }: Pick<GalleryState, 'slides'>) {\n const viewportWidth = this.viewport.offsetWidth;\n if (this.isCenterWithCustomWidth && slides.length) {\n const { width, coordX } = slides[0];\n return viewportWidth / 2 - coordX - width / 2;\n } else {\n return 0;\n }\n }\n\n /*\n * Считает отступ слоя галереи\n */\n calculateIndent(targetIndex: number) {\n const { slides } = this.state;\n\n if (this.isFullyVisible) {\n return 0;\n }\n\n const targetSlide = slides.length ? slides[targetIndex] : null;\n\n if (targetSlide) {\n const { coordX, width } = targetSlide;\n\n if (this.isCenterWithCustomWidth) {\n const viewportWidth = this.viewport.offsetWidth;\n return viewportWidth / 2 - coordX - width / 2;\n }\n\n return this.validateIndent(-1 * coordX);\n } else {\n return 0;\n }\n }\n\n /*\n * Считает отступ слоя галереи во время драга\n */\n calculateDragIndent() {\n const { shiftX, deltaX, min, max } = this.state;\n const indent = shiftX + deltaX;\n\n if (indent > max) {\n return max + Number((indent - max) / 3);\n } else if (indent < min) {\n return min + Number((indent - min) / 3);\n }\n\n return indent;\n }\n\n validateIndent(value: number) {\n const { min, max } = this.state;\n\n if (value < min) {\n return min;\n } else if (value > max) {\n return max;\n }\n\n return value;\n }\n\n get isFullyVisible() {\n return this.state.layerWidth <= this.state.containerWidth;\n }\n\n /*\n * Получает индекс слайда, к которому будет осуществлен переход\n */\n getTarget() {\n const { slides, deltaX, shiftX, startT, max } = this.state;\n const { slideIndex } = this.props;\n const expectDeltaX = deltaX / (Date.now() - startT.getTime()) * 240 * 0.6;\n const shift = shiftX + deltaX + expectDeltaX - max;\n const direction = deltaX < 0 ? 1 : -1;\n\n // Находим ближайшую границу слайда к текущему отступу\n let targetIndex = slides.reduce((val: number, item: GallerySlidesState, index: number) => {\n const previousValue = Math.abs(slides[val].coordX + shift);\n const currentValue = Math.abs(item.coordX + shift);\n\n return previousValue < currentValue ? val : index;\n }, slideIndex);\n\n if (targetIndex === slideIndex) {\n let targetSlide = slideIndex + direction;\n\n if (targetSlide >= 0 && targetSlide < slides.length) {\n if (Math.abs(deltaX) > slides[targetSlide].width * 0.05) {\n targetIndex = targetSlide;\n }\n }\n }\n\n return targetIndex;\n }\n\n onStart: TouchEventHandler = (e: TouchEvent) => {\n this.setState({\n animation: false,\n startT: e.startT,\n });\n };\n\n onMoveX: TouchEventHandler = (e: TouchEvent) => {\n if (this.props.isDraggable && !this.isFullyVisible) {\n e.originalEvent.preventDefault();\n\n if (e.isSlideX) {\n this.props.onDragStart && this.props.onDragStart(e);\n\n if (this.state.deltaX !== e.shiftX || this.state.dragging !== e.isSlideX) {\n this.setState({\n deltaX: e.shiftX,\n dragging: e.isSlideX,\n });\n }\n }\n }\n };\n\n onEnd: TouchEventHandler = (e: TouchEvent) => {\n const targetIndex = e.isSlide ? this.getTarget() : this.props.slideIndex;\n this.props.onDragEnd && this.props.onDragEnd(e);\n this.setState({ deltaX: 0, animation: true }, () => this.props.onChange(targetIndex));\n\n if (this.props.onEnd) {\n this.props.onEnd({ targetIndex });\n }\n };\n\n onResize: VoidFunction = () => this.initializeSlides({ animation: false });\n\n get canSlideLeft() {\n // shiftX is negative number <= 0, we can swipe back only if it is < 0\n return !this.isFullyVisible && this.state.shiftX < 0;\n }\n\n get canSlideRight() {\n const { containerWidth, layerWidth, shiftX, slides } = this.state;\n const { align, slideIndex } = this.props;\n return !this.isFullyVisible && (\n // we can't move right when gallery layer fully scrolled right, if gallery aligned by left side\n align === 'left' && containerWidth - shiftX < layerWidth ||\n // otherwise we need to check current slide index (align = right or align = center)\n align !== 'left' && slideIndex < slides.length - 1\n );\n }\n\n slideLeft = () => {\n const { slideIndex, onChange } = this.props;\n if (this.canSlideLeft) {\n this.setState({ deltaX: 0, animation: true }, () => onChange(slideIndex - 1));\n }\n };\n\n slideRight = () => {\n const { slideIndex, onChange } = this.props;\n if (this.canSlideRight) {\n this.setState({ deltaX: 0, animation: true }, () => onChange(slideIndex + 1));\n }\n };\n\n getSlideRef: GetSlideRef = (id: number) => (slide) => {\n this.slidesStore[`slide-${id}`] = slide;\n };\n\n getViewportRef: React.RefCallback<HTMLElement> = (viewport) => {\n this.viewport = viewport;\n setRef(viewport, this.props.getRef);\n };\n\n getRootRef: React.RefCallback<HTMLDivElement> = (container) => {\n this.container = container;\n setRef(container, this.props.getRootRef);\n };\n\n componentDidMount() {\n this.initializeSlides({ animation: false });\n this.props.window.addEventListener('resize', this.onResize);\n }\n\n componentDidUpdate(prevProps: GalleryProps) {\n const widthChanged = this.props.slideWidth !== prevProps.slideWidth;\n const isPropUpdate = this.props !== prevProps;\n const slideCountChanged = React.Children.count(this.props.children) !== React.Children.count(prevProps.children);\n const isCustomWidth = this.props.slideWidth === 'custom';\n\n // в любом из этих случаев позиция могла поменяться\n if (widthChanged || slideCountChanged || isCustomWidth && isPropUpdate) {\n this.initializeSlides();\n } else if (this.props.slideIndex !== prevProps.slideIndex) {\n this.setState({\n animation: true,\n deltaX: 0,\n shiftX: this.calculateIndent(this.props.slideIndex),\n });\n }\n }\n\n componentWillUnmount() {\n this.props.window.removeEventListener('resize', this.onResize);\n }\n\n render() {\n const { animation, duration, dragging } = this.state;\n const {\n children,\n slideWidth,\n slideIndex,\n isDraggable,\n onDragStart,\n onDragEnd,\n onChange,\n onEnd,\n align,\n bullets,\n platform,\n hasMouse,\n showArrows,\n window,\n document,\n getRef,\n getRootRef,\n ...restProps\n } = this.props;\n\n const indent = dragging ? this.calculateDragIndent() : this.calculateIndent(slideIndex);\n\n const layerStyle = {\n WebkitTransform: `translateX(${indent}px)`,\n transform: `translateX(${indent}px)`,\n WebkitTransition: animation ? `-webkit-transform ${duration}s cubic-bezier(.1, 0, .25, 1)` : 'none',\n transition: animation ? `transform ${duration}s cubic-bezier(.1, 0, .25, 1)` : 'none',\n };\n\n return (\n <div\n {...restProps}\n vkuiClass={classNames(getClassName('Gallery', platform), `Gallery--${align}`, {\n 'Gallery--dragging': dragging,\n 'Gallery--custom-width': slideWidth === 'custom',\n })}\n ref={this.getRootRef}\n >\n <Touch\n vkuiClass=\"Gallery__viewport\"\n onStartX={this.onStart}\n onMoveX={this.onMoveX}\n onEnd={this.onEnd}\n noSlideClick\n style={{ width: slideWidth === 'custom' ? '100%' : slideWidth }}\n getRootRef={this.getViewportRef}\n >\n <div vkuiClass=\"Gallery__layer\" style={layerStyle}>\n {React.Children.map(children, (item: React.ReactElement, i: number) =>\n <div vkuiClass=\"Gallery__slide\" key={`slide-${i}`} ref={this.getSlideRef(i)}>{item}</div>,\n )}\n </div>\n </Touch>\n\n {bullets &&\n <div aria-hidden=\"true\" vkuiClass={classNames('Gallery__bullets', `Gallery__bullets--${bullets}`)}>\n {React.Children.map(children, (_item: React.ReactElement, index: number) =>\n <div\n vkuiClass={classNames('Gallery__bullet', { 'Gallery__bullet--active': index === slideIndex })}\n key={index}\n />,\n )}\n </div>\n }\n\n {showArrows && hasMouse && this.canSlideLeft && <HorizontalScrollArrow direction=\"left\" onClick={this.slideLeft} />}\n {showArrows && hasMouse && this.canSlideRight && <HorizontalScrollArrow direction=\"right\" onClick={this.slideRight} />}\n </div>\n );\n }\n}\n\nconst BaseGalleryAdaptive = withAdaptivity(withDOM<BaseGalleryProps>(BaseGallery), {\n hasMouse: true,\n});\n\nconst Gallery: React.FC<GalleryProps> = ({\n initialSlideIndex = 0,\n children,\n timeout,\n onChange,\n ...props\n}: GalleryProps) => {\n const [localSlideIndex, setSlideIndex] = React.useState(initialSlideIndex);\n const isControlled = typeof props.slideIndex === 'number';\n const slideIndex = isControlled ? props.slideIndex : localSlideIndex;\n const isDraggable = !isControlled || Boolean(onChange);\n const slides = React.Children.toArray(children).filter((item) => Boolean(item));\n const childCount = slides.length;\n\n const handleChange: GalleryProps['onChange'] = React.useCallback((current) => {\n if (current === slideIndex) {\n return;\n }\n !isControlled && setSlideIndex(current);\n onChange && onChange(current);\n }, [onChange, slideIndex]);\n\n const autoplay = useTimeout(() => handleChange((slideIndex + 1) % childCount), timeout);\n React.useEffect(() => timeout ? autoplay.set() : autoplay.clear(), [timeout, slideIndex]);\n\n // prevent invalid slideIndex\n // any slide index is invalid with no slides, just keep it as is\n const safeSlideIndex = childCount > 0 ? clamp(slideIndex, 0, childCount - 1) : slideIndex;\n // notify parent in controlled mode\n React.useEffect(() => {\n if (onChange && safeSlideIndex !== slideIndex) {\n onChange(safeSlideIndex);\n }\n }, [safeSlideIndex]);\n\n return (\n <BaseGalleryAdaptive\n isDraggable={isDraggable}\n {...props}\n slideIndex={safeSlideIndex}\n onChange={handleChange}\n >{slides}</BaseGalleryAdaptive>\n );\n};\n\nexport default withPlatform(Gallery);\n"],"file":"Gallery.js"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/Gallery/Gallery.tsx"],"names":["BaseGallery","props","e","setState","animation","startT","isDraggable","isFullyVisible","originalEvent","preventDefault","isSlideX","onDragStart","state","deltaX","shiftX","dragging","targetIndex","isSlide","getTarget","slideIndex","onDragEnd","onChange","onEnd","initializeSlides","canSlideLeft","canSlideRight","id","slide","slidesStore","viewport","getRef","container","getRootRef","containerWidth","slides","duration","slideWidth","align","options","React","Children","map","children","_item","i","elem","coordX","offsetLeft","width","offsetWidth","layerWidth","reduce","val","min","calcMin","max","calcMax","calculateIndent","isValidShift","validateIndent","window","requestAnimationFrame","viewportWidth","isCenterWithCustomWidth","length","targetSlide","indent","Number","value","expectDeltaX","Date","now","getTime","shift","direction","item","index","previousValue","Math","abs","currentValue","addEventListener","onResize","prevProps","widthChanged","isPropUpdate","slideCountChanged","count","isCustomWidth","removeEventListener","bullets","platform","hasMouse","showArrows","document","restProps","calculateDragIndent","layerStyle","WebkitTransform","transform","WebkitTransition","transition","onStart","onMoveX","getViewportRef","getSlideRef","slideLeft","slideRight","Component","BaseGalleryAdaptive","Gallery","initialSlideIndex","timeout","useState","localSlideIndex","setSlideIndex","isControlled","Boolean","toArray","filter","childCount","handleChange","useCallback","current","autoplay","useEffect","set","clear","safeSlideIndex"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { getClassName } from '../../helpers/getClassName';\nimport { Touch, TouchEventHandler, TouchEvent } from '../Touch/Touch';\nimport { classNames } from '../../lib/classNames';\nimport { withPlatform } from '../../hoc/withPlatform';\nimport { HasAlign, HasPlatform, HasRef, HasRootRef } from '../../types';\nimport { withDOM, DOMProps } from '../../lib/dom';\nimport { setRef } from '../../lib/utils';\nimport { withAdaptivity, AdaptivityProps } from '../../hoc/withAdaptivity';\nimport HorizontalScrollArrow from '../HorizontalScroll/HorizontalScrollArrow';\nimport { clamp } from '../../helpers/math';\nimport { useTimeout } from '../../hooks/useTimeout';\nimport './Gallery.css';\n\nexport interface BaseGalleryProps extends\n Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange' | 'onDragStart' | 'onDragEnd'>,\n HasPlatform,\n HasAlign,\n HasRootRef<HTMLDivElement>,\n HasRef<HTMLElement> {\n slideWidth?: string | number;\n slideIndex?: number;\n onDragStart?: TouchEventHandler;\n onDragEnd?: TouchEventHandler;\n onChange?(current: number): void;\n onEnd?({ targetIndex }: { targetIndex: number }): void;\n bullets?: 'dark' | 'light' | false;\n isDraggable?: boolean;\n showArrows?: boolean;\n}\n\nexport interface GalleryProps extends BaseGalleryProps {\n initialSlideIndex?: number;\n timeout?: number;\n}\n\nexport interface GalleryState {\n containerWidth: number;\n layerWidth?: number;\n min?: number;\n max?: number;\n startT?: Date;\n deltaX: number;\n shiftX: number;\n slides: GallerySlidesState[];\n animation: boolean;\n duration: number;\n dragging?: boolean;\n}\n\nexport interface GallerySlidesState {\n coordX: number;\n width: number;\n}\n\ntype GetSlideRef = (index: number) => React.RefCallback<HTMLElement>;\n\nclass BaseGallery extends React.Component<BaseGalleryProps & DOMProps & AdaptivityProps, GalleryState> {\n constructor(props: GalleryProps) {\n super(props);\n\n this.state = {\n containerWidth: 0,\n deltaX: 0,\n shiftX: 0,\n slides: [],\n animation: true,\n duration: 0.24,\n };\n\n this.slidesStore = {};\n }\n\n container: HTMLDivElement;\n slidesStore: {\n [index: string]: HTMLElement;\n };\n viewport: HTMLElement;\n\n static defaultProps: Partial<BaseGalleryProps> = {\n slideWidth: '100%',\n children: '',\n align: 'left',\n bullets: false,\n isDraggable: true,\n };\n\n get isCenterWithCustomWidth() {\n return this.props.slideWidth === 'custom' && this.props.align === 'center';\n }\n\n initializeSlides(options: { animation?: boolean } = {}) {\n const slides: GallerySlidesState[] = React.Children.map(\n this.props.children,\n (_item: React.ReactElement, i: number): GallerySlidesState => {\n const elem = this.slidesStore[`slide-${i}`];\n return {\n coordX: elem.offsetLeft,\n width: elem.offsetWidth,\n };\n });\n\n const containerWidth = this.container.offsetWidth;\n const layerWidth = slides.reduce((val: number, slide: GallerySlidesState) => slide.width + val, 0);\n\n const min = this.calcMin({ containerWidth, layerWidth, slides });\n const max = this.calcMax({ slides });\n\n this.setState({ min, max, layerWidth, containerWidth, slides }, () => {\n const shiftX = this.calculateIndent(this.props.slideIndex);\n if (this.state.shiftX === shiftX) {\n return;\n }\n const isValidShift = this.state.shiftX === this.validateIndent(this.state.shiftX);\n const { animation = isValidShift } = options;\n this.setState({ shiftX, animation }, () => {\n if (!this.state.animation) {\n this.props.window.requestAnimationFrame(() => this.setState({ animation: true }));\n }\n });\n });\n }\n\n calcMin({ containerWidth, layerWidth, slides }: Pick<GalleryState, 'containerWidth' | 'layerWidth' | 'slides'>) {\n const viewportWidth = this.viewport.offsetWidth;\n switch (this.props.align) {\n case 'left':\n return containerWidth - layerWidth;\n case 'right':\n return viewportWidth - layerWidth;\n case 'center':\n if (this.isCenterWithCustomWidth && slides.length) {\n const { coordX, width } = slides[slides.length - 1];\n return viewportWidth / 2 - coordX - width / 2;\n } else {\n return viewportWidth - (containerWidth - viewportWidth) / 2 - layerWidth;\n }\n }\n }\n\n calcMax({ slides }: Pick<GalleryState, 'slides'>) {\n const viewportWidth = this.viewport.offsetWidth;\n if (this.isCenterWithCustomWidth && slides.length) {\n const { width, coordX } = slides[0];\n return viewportWidth / 2 - coordX - width / 2;\n } else {\n return 0;\n }\n }\n\n /*\n * Считает отступ слоя галереи\n */\n calculateIndent(targetIndex: number) {\n const { slides } = this.state;\n\n if (this.isFullyVisible) {\n return 0;\n }\n\n const targetSlide = slides.length ? slides[targetIndex] : null;\n\n if (targetSlide) {\n const { coordX, width } = targetSlide;\n\n if (this.isCenterWithCustomWidth) {\n const viewportWidth = this.viewport.offsetWidth;\n return viewportWidth / 2 - coordX - width / 2;\n }\n\n return this.validateIndent(-1 * coordX);\n } else {\n return 0;\n }\n }\n\n /*\n * Считает отступ слоя галереи во время драга\n */\n calculateDragIndent() {\n const { shiftX, deltaX, min, max } = this.state;\n const indent = shiftX + deltaX;\n\n if (indent > max) {\n return max + Number((indent - max) / 3);\n } else if (indent < min) {\n return min + Number((indent - min) / 3);\n }\n\n return indent;\n }\n\n validateIndent(value: number) {\n const { min, max } = this.state;\n\n if (value < min) {\n return min;\n } else if (value > max) {\n return max;\n }\n\n return value;\n }\n\n get isFullyVisible() {\n return this.state.layerWidth <= this.state.containerWidth;\n }\n\n /*\n * Получает индекс слайда, к которому будет осуществлен переход\n */\n getTarget() {\n const { slides, deltaX, shiftX, startT, max } = this.state;\n const { slideIndex } = this.props;\n const expectDeltaX = deltaX / (Date.now() - startT.getTime()) * 240 * 0.6;\n const shift = shiftX + deltaX + expectDeltaX - max;\n const direction = deltaX < 0 ? 1 : -1;\n\n // Находим ближайшую границу слайда к текущему отступу\n let targetIndex = slides.reduce((val: number, item: GallerySlidesState, index: number) => {\n const previousValue = Math.abs(slides[val].coordX + shift);\n const currentValue = Math.abs(item.coordX + shift);\n\n return previousValue < currentValue ? val : index;\n }, slideIndex);\n\n if (targetIndex === slideIndex) {\n let targetSlide = slideIndex + direction;\n\n if (targetSlide >= 0 && targetSlide < slides.length) {\n if (Math.abs(deltaX) > slides[targetSlide].width * 0.05) {\n targetIndex = targetSlide;\n }\n }\n }\n\n return targetIndex;\n }\n\n onStart: TouchEventHandler = (e: TouchEvent) => {\n this.setState({\n animation: false,\n startT: e.startT,\n });\n };\n\n onMoveX: TouchEventHandler = (e: TouchEvent) => {\n if (this.props.isDraggable && !this.isFullyVisible) {\n e.originalEvent.preventDefault();\n\n if (e.isSlideX) {\n this.props.onDragStart && this.props.onDragStart(e);\n\n if (this.state.deltaX !== e.shiftX || this.state.dragging !== e.isSlideX) {\n this.setState({\n deltaX: e.shiftX,\n dragging: e.isSlideX,\n });\n }\n }\n }\n };\n\n onEnd: TouchEventHandler = (e: TouchEvent) => {\n const targetIndex = e.isSlide ? this.getTarget() : this.props.slideIndex;\n this.props.onDragEnd && this.props.onDragEnd(e);\n this.setState({ deltaX: 0, animation: true }, () => this.props.onChange(targetIndex));\n\n if (this.props.onEnd) {\n this.props.onEnd({ targetIndex });\n }\n };\n\n onResize: VoidFunction = () => this.initializeSlides({ animation: false });\n\n get canSlideLeft() {\n // shiftX is negative number <= 0, we can swipe back only if it is < 0\n return !this.isFullyVisible && this.state.shiftX < 0;\n }\n\n get canSlideRight() {\n const { containerWidth, layerWidth, shiftX, slides } = this.state;\n const { align, slideIndex } = this.props;\n return !this.isFullyVisible && (\n // we can't move right when gallery layer fully scrolled right, if gallery aligned by left side\n align === 'left' && containerWidth - shiftX < layerWidth ||\n // otherwise we need to check current slide index (align = right or align = center)\n align !== 'left' && slideIndex < slides.length - 1\n );\n }\n\n slideLeft = () => {\n const { slideIndex, onChange } = this.props;\n if (this.canSlideLeft) {\n this.setState({ deltaX: 0, animation: true }, () => onChange(slideIndex - 1));\n }\n };\n\n slideRight = () => {\n const { slideIndex, onChange } = this.props;\n if (this.canSlideRight) {\n this.setState({ deltaX: 0, animation: true }, () => onChange(slideIndex + 1));\n }\n };\n\n getSlideRef: GetSlideRef = (id: number) => (slide) => {\n this.slidesStore[`slide-${id}`] = slide;\n };\n\n getViewportRef: React.RefCallback<HTMLElement> = (viewport) => {\n this.viewport = viewport;\n setRef(viewport, this.props.getRef);\n };\n\n getRootRef: React.RefCallback<HTMLDivElement> = (container) => {\n this.container = container;\n setRef(container, this.props.getRootRef);\n };\n\n componentDidMount() {\n this.initializeSlides({ animation: false });\n this.props.window.addEventListener('resize', this.onResize);\n }\n\n componentDidUpdate(prevProps: GalleryProps) {\n const widthChanged = this.props.slideWidth !== prevProps.slideWidth;\n const isPropUpdate = this.props !== prevProps;\n const slideCountChanged = React.Children.count(this.props.children) !== React.Children.count(prevProps.children);\n const isCustomWidth = this.props.slideWidth === 'custom';\n\n // в любом из этих случаев позиция могла поменяться\n if (widthChanged || slideCountChanged || isCustomWidth && isPropUpdate) {\n this.initializeSlides();\n } else if (this.props.slideIndex !== prevProps.slideIndex) {\n this.setState({\n animation: true,\n deltaX: 0,\n shiftX: this.calculateIndent(this.props.slideIndex),\n });\n }\n }\n\n componentWillUnmount() {\n this.props.window.removeEventListener('resize', this.onResize);\n }\n\n render() {\n const { animation, duration, dragging } = this.state;\n const {\n children,\n slideWidth,\n slideIndex,\n isDraggable,\n onDragStart,\n onDragEnd,\n onChange,\n onEnd,\n align,\n bullets,\n platform,\n hasMouse,\n showArrows,\n window,\n document,\n getRef,\n getRootRef,\n ...restProps\n } = this.props;\n\n const indent = dragging ? this.calculateDragIndent() : this.calculateIndent(slideIndex);\n\n const layerStyle = {\n WebkitTransform: `translateX(${indent}px)`,\n transform: `translateX(${indent}px)`,\n WebkitTransition: animation ? `-webkit-transform ${duration}s cubic-bezier(.1, 0, .25, 1)` : 'none',\n transition: animation ? `transform ${duration}s cubic-bezier(.1, 0, .25, 1)` : 'none',\n };\n\n return (\n <div\n {...restProps}\n vkuiClass={classNames(getClassName('Gallery', platform), `Gallery--${align}`, {\n 'Gallery--dragging': dragging,\n 'Gallery--custom-width': slideWidth === 'custom',\n })}\n ref={this.getRootRef}\n >\n <Touch\n vkuiClass=\"Gallery__viewport\"\n onStartX={this.onStart}\n onMoveX={this.onMoveX}\n onEnd={this.onEnd}\n noSlideClick\n style={{ width: slideWidth === 'custom' ? '100%' : slideWidth }}\n getRootRef={this.getViewportRef}\n >\n <div vkuiClass=\"Gallery__layer\" style={layerStyle}>\n {React.Children.map(children, (item: React.ReactElement, i: number) =>\n <div vkuiClass=\"Gallery__slide\" key={`slide-${i}`} ref={this.getSlideRef(i)}>{item}</div>,\n )}\n </div>\n </Touch>\n\n {bullets &&\n <div aria-hidden=\"true\" vkuiClass={classNames('Gallery__bullets', `Gallery__bullets--${bullets}`)}>\n {React.Children.map(children, (_item: React.ReactElement, index: number) =>\n <div\n vkuiClass={classNames('Gallery__bullet', { 'Gallery__bullet--active': index === slideIndex })}\n key={index}\n />,\n )}\n </div>\n }\n\n {showArrows && hasMouse && this.canSlideLeft && <HorizontalScrollArrow direction=\"left\" onClick={this.slideLeft} />}\n {showArrows && hasMouse && this.canSlideRight && <HorizontalScrollArrow direction=\"right\" onClick={this.slideRight} />}\n </div>\n );\n }\n}\n\nconst BaseGalleryAdaptive = withAdaptivity(withDOM<BaseGalleryProps>(BaseGallery), {\n hasMouse: true,\n});\n\nconst Gallery: React.FC<GalleryProps> = ({\n initialSlideIndex = 0,\n children,\n timeout,\n onChange,\n ...props\n}: GalleryProps) => {\n const [localSlideIndex, setSlideIndex] = React.useState(initialSlideIndex);\n const isControlled = typeof props.slideIndex === 'number';\n const slideIndex = isControlled ? props.slideIndex : localSlideIndex;\n const isDraggable = !isControlled || Boolean(onChange);\n const slides = React.Children.toArray(children).filter((item) => Boolean(item));\n const childCount = slides.length;\n\n const handleChange: GalleryProps['onChange'] = React.useCallback((current) => {\n if (current === slideIndex) {\n return;\n }\n !isControlled && setSlideIndex(current);\n onChange && onChange(current);\n }, [onChange, slideIndex]);\n\n const autoplay = useTimeout(() => handleChange((slideIndex + 1) % childCount), timeout);\n React.useEffect(() => timeout ? autoplay.set() : autoplay.clear(), [timeout, slideIndex]);\n\n // prevent invalid slideIndex\n // any slide index is invalid with no slides, just keep it as is\n const safeSlideIndex = childCount > 0 ? clamp(slideIndex, 0, childCount - 1) : slideIndex;\n // notify parent in controlled mode\n React.useEffect(() => {\n if (onChange && safeSlideIndex !== slideIndex) {\n onChange(safeSlideIndex);\n }\n }, [safeSlideIndex]);\n\n return (\n <BaseGalleryAdaptive\n isDraggable={isDraggable}\n {...props}\n slideIndex={safeSlideIndex}\n onChange={handleChange}\n >{slides}</BaseGalleryAdaptive>\n );\n};\n\nexport default withPlatform(Gallery);\n"],"file":"Gallery.js"}
|
|
@@ -133,7 +133,7 @@ var Header = function Header(_ref4) {
|
|
|
133
133
|
vkuiClass: "Header__main"
|
|
134
134
|
}, (0, _jsxRuntime.createScopedElement)(HeaderContent, {
|
|
135
135
|
vkuiClass: "Header__content",
|
|
136
|
-
Component: "
|
|
136
|
+
Component: "span",
|
|
137
137
|
mode: mode,
|
|
138
138
|
platform: platform
|
|
139
139
|
}, (0, _jsxRuntime.createScopedElement)("span", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/Header/Header.tsx"],"names":["HeaderContent","platform","mode","restProps","Platform","IOS","VKCOM","HeaderAside","HeaderSubtitle","Header","children","subtitle","indicator","aside","getRootRef","multiline","defaultProps"],"mappings":"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
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/Header/Header.tsx"],"names":["HeaderContent","platform","mode","restProps","Platform","IOS","VKCOM","HeaderAside","HeaderSubtitle","Header","children","subtitle","indicator","aside","getRootRef","multiline","defaultProps"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { getClassName } from '../../helpers/getClassName';\nimport { classNames } from '../../lib/classNames';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { HasPlatform, HasRootRef } from '../../types';\nimport { hasReactNode, isPrimitiveReactNode } from '../../lib/utils';\nimport { Platform } from '../../lib/platform';\nimport Headline from '../Typography/Headline/Headline';\nimport Caption from '../Typography/Caption/Caption';\nimport Title from '../Typography/Title/Title';\nimport Text from '../Typography/Text/Text';\nimport Subhead from '../Typography/Subhead/Subhead';\nimport './Header.css';\n\nexport interface HeaderProps extends React.HTMLAttributes<HTMLElement>, HasRootRef<HTMLElement> {\n mode?: 'primary' | 'secondary' | 'tertiary';\n subtitle?: React.ReactNode;\n /**\n * Допускаются иконки, текст, Link\n */\n aside?: React.ReactNode;\n /**\n * Допускаются текст, Indicator\n */\n indicator?: React.ReactNode;\n multiline?: boolean;\n}\n\ntype HeaderContentProps = Pick<HeaderProps, 'children' | 'mode'> & HasPlatform & { Component: React.ElementType };\n\nconst HeaderContent: React.FC<HeaderContentProps> = ({ platform, mode, ...restProps }) => {\n if (platform === Platform.IOS) {\n switch (mode) {\n case 'primary':\n case 'tertiary':\n return <Title weight=\"semibold\" level=\"3\" {...restProps} />;\n case 'secondary':\n return <Caption level=\"1\" weight=\"semibold\" caps {...restProps} />;\n }\n }\n\n if (platform === Platform.VKCOM) {\n switch (mode) {\n case 'primary':\n return <Headline weight=\"regular\" {...restProps} />;\n case 'secondary':\n case 'tertiary':\n return <Caption level=\"1\" weight=\"regular\" {...restProps} />;\n }\n }\n\n switch (mode) {\n case 'primary':\n case 'tertiary':\n return <Headline weight=\"medium\" {...restProps} />;\n case 'secondary':\n return <Caption level=\"1\" weight=\"medium\" caps {...restProps} />;\n }\n};\n\ntype HeaderAsideProps = Pick<HeaderProps, 'aside'> & HasPlatform & { Component: React.ElementType };\n\nconst HeaderAside: React.FC<HeaderAsideProps> = ({ platform, ...restProps }) => {\n return platform === Platform.VKCOM\n ? <Subhead weight=\"regular\" {...restProps} />\n : <Text weight=\"regular\" {...restProps} />;\n};\n\ntype HeaderSubtitleProps = Pick<HeaderProps, 'subtitle' | 'mode'> & { Component: React.ElementType };\n\nconst HeaderSubtitle: React.FC<HeaderSubtitleProps> = ({ mode, ...restProps }) => {\n return mode === 'secondary'\n ? <Subhead weight=\"regular\" {...restProps} />\n : <Caption weight=\"regular\" level=\"1\" {...restProps} />;\n};\n\nconst Header: React.FC<HeaderProps> = ({\n mode,\n children,\n subtitle,\n indicator,\n aside,\n getRootRef,\n multiline,\n ...restProps\n}: HeaderProps) => {\n const platform = usePlatform();\n\n return (\n <header\n {...restProps}\n ref={getRootRef}\n vkuiClass={classNames(getClassName('Header', platform), `Header--mode-${mode}`, { 'Header--pi': isPrimitiveReactNode(indicator) })}\n >\n <div vkuiClass=\"Header__main\">\n <HeaderContent vkuiClass=\"Header__content\" Component=\"span\" mode={mode} platform={platform}>\n <span vkuiClass={classNames('Header__content-in', { 'Header__content-in--multiline': multiline })}>{children}</span>\n {hasReactNode(indicator) && (\n <Caption\n vkuiClass=\"Header__indicator\"\n weight={mode === 'primary' || mode === 'secondary' ? 'medium' : 'regular'}\n level=\"1\"\n >\n {indicator}\n </Caption>\n )}\n </HeaderContent>\n\n {hasReactNode(subtitle) && <HeaderSubtitle vkuiClass=\"Header__subtitle\" Component=\"span\">{subtitle}</HeaderSubtitle>}\n </div>\n\n {hasReactNode(aside) && <HeaderAside vkuiClass=\"Header__aside\" Component=\"span\" platform={platform}>{aside}</HeaderAside>}\n </header>\n );\n};\n\nHeader.defaultProps = {\n mode: 'primary',\n};\n\nexport default Header;\n"],"file":"Header.js"}
|
|
@@ -35,6 +35,8 @@ var _ModalDismissButton = _interopRequireDefault(require("../ModalDismissButton/
|
|
|
35
35
|
|
|
36
36
|
var _icons = require("@vkontakte/icons");
|
|
37
37
|
|
|
38
|
+
var _useKeyboard = require("../../hooks/useKeyboard");
|
|
39
|
+
|
|
38
40
|
var _excluded = ["getRootRef", "icon", "header", "subheader", "children", "actions", "actionsLayout", "viewWidth", "hasMouse", "viewHeight", "onClose"];
|
|
39
41
|
var ModalCardBase = (0, _withAdaptivity.withAdaptivity)(function (_ref) {
|
|
40
42
|
var getRootRef = _ref.getRootRef,
|
|
@@ -51,6 +53,7 @@ var ModalCardBase = (0, _withAdaptivity.withAdaptivity)(function (_ref) {
|
|
|
51
53
|
restProps = (0, _objectWithoutProperties2.default)(_ref, _excluded);
|
|
52
54
|
var platform = (0, _usePlatform.usePlatform)();
|
|
53
55
|
var isDesktop = viewWidth >= _withAdaptivity.ViewWidth.SMALL_TABLET && (hasMouse || viewHeight >= _withAdaptivity.ViewHeight.MEDIUM);
|
|
56
|
+
var isSoftwareKeyboardOpened = (0, _useKeyboard.useKeyboard)().isOpened;
|
|
54
57
|
var canShowCloseBtn = viewWidth >= _withAdaptivity.ViewWidth.SMALL_TABLET;
|
|
55
58
|
var canShowCloseBtnIos = platform === _platform.IOS && !canShowCloseBtn;
|
|
56
59
|
return (0, _jsxRuntime.createScopedElement)("div", (0, _extends2.default)({}, restProps, {
|
|
@@ -59,7 +62,9 @@ var ModalCardBase = (0, _withAdaptivity.withAdaptivity)(function (_ref) {
|
|
|
59
62
|
}),
|
|
60
63
|
ref: getRootRef
|
|
61
64
|
}), (0, _jsxRuntime.createScopedElement)("div", {
|
|
62
|
-
vkuiClass:
|
|
65
|
+
vkuiClass: (0, _classNames.classNames)('ModalCardBase__container', {
|
|
66
|
+
'ModalCardBase__container--softwareKeyboardOpened': isSoftwareKeyboardOpened
|
|
67
|
+
})
|
|
63
68
|
}, (0, _utils.hasReactNode)(icon) && (0, _jsxRuntime.createScopedElement)("div", {
|
|
64
69
|
vkuiClass: "ModalCardBase__icon"
|
|
65
70
|
}, icon), (0, _utils.hasReactNode)(header) && (0, _jsxRuntime.createScopedElement)(_Title.default, {
|