@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
|
@@ -40,31 +40,27 @@
|
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
.UsersStack__photo + .UsersStack__photo {
|
|
43
|
-
margin-left: 4px;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
.UsersStack:not(.UsersStack--simple) .UsersStack__photo + .UsersStack__photo {
|
|
47
43
|
margin-left: -2px;
|
|
48
44
|
}
|
|
49
45
|
|
|
50
|
-
.UsersStack--size-xs
|
|
46
|
+
.UsersStack--size-xs .UsersStack__photo + .UsersStack__photo {
|
|
51
47
|
margin-left: -1px;
|
|
52
48
|
clip-path: url(#users_stack_mask_16_left);
|
|
53
49
|
}
|
|
54
50
|
|
|
55
|
-
.UsersStack--size-s
|
|
51
|
+
.UsersStack--size-s .UsersStack__photo + .UsersStack__photo {
|
|
56
52
|
clip-path: url(#users_stack_mask_24_left);
|
|
57
53
|
}
|
|
58
54
|
|
|
59
|
-
.UsersStack--size-m
|
|
55
|
+
.UsersStack--size-m .UsersStack__photo + .UsersStack__photo {
|
|
60
56
|
clip-path: url(#users_stack_mask_32_left);
|
|
61
57
|
}
|
|
62
58
|
|
|
63
|
-
.UsersStack--size-m.UsersStack--others
|
|
59
|
+
.UsersStack--size-m.UsersStack--others .UsersStack__photo {
|
|
64
60
|
clip-path: url(#users_stack_mask_32_right);
|
|
65
61
|
}
|
|
66
62
|
|
|
67
|
-
.UsersStack--size-m.UsersStack--others
|
|
63
|
+
.UsersStack--size-m.UsersStack--others .UsersStack__photo:last-child {
|
|
68
64
|
clip-path: none;
|
|
69
65
|
}
|
|
70
66
|
|
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { getClassName } from '../../helpers/getClassName';
|
|
3
|
-
import { useBrowserInfo } from '../../hooks/useBrowserInfo';
|
|
4
3
|
import { usePlatform } from '../../hooks/usePlatform';
|
|
5
4
|
import { hasReactNode } from '../../lib/utils';
|
|
6
5
|
import { classNames } from '../../lib/classNames';
|
|
7
|
-
import { System } from '../../lib/browser';
|
|
8
6
|
import { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';
|
|
9
7
|
import Caption from '../Typography/Caption/Caption';
|
|
10
8
|
import Subhead from '../Typography/Subhead/Subhead';
|
|
11
9
|
import { createMasks } from './masks';
|
|
10
|
+
import { useDOM } from '../../lib/dom';
|
|
12
11
|
import './UsersStack.css';
|
|
13
12
|
|
|
14
13
|
export interface UsersStackProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
@@ -32,24 +31,19 @@ export interface UsersStackProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
|
32
31
|
}
|
|
33
32
|
|
|
34
33
|
const UsersStack: React.FC<UsersStackProps> = (props: UsersStackProps) => {
|
|
35
|
-
const { system, systemVersion } = useBrowserInfo();
|
|
36
34
|
const platform = usePlatform();
|
|
37
35
|
const { photos, visibleCount, size, layout, children, ...restProps } = props;
|
|
36
|
+
const { document } = useDOM();
|
|
38
37
|
|
|
39
38
|
useIsomorphicLayoutEffect(() => {
|
|
40
|
-
createMasks();
|
|
41
|
-
}, []);
|
|
39
|
+
createMasks(document);
|
|
40
|
+
}, [document]);
|
|
42
41
|
|
|
43
42
|
const othersCount = Math.max(0, photos.length - visibleCount);
|
|
44
43
|
const canShowOthers = othersCount > 0 && size === 'm';
|
|
45
44
|
|
|
46
45
|
const photosShown = photos.slice(0, visibleCount);
|
|
47
46
|
|
|
48
|
-
let canUseClipPath = true;
|
|
49
|
-
if (system === System.IOS) {
|
|
50
|
-
canUseClipPath = systemVersion && systemVersion.major >= 12;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
47
|
return (
|
|
54
48
|
<div
|
|
55
49
|
{...restProps}
|
|
@@ -60,7 +54,6 @@ const UsersStack: React.FC<UsersStackProps> = (props: UsersStackProps) => {
|
|
|
60
54
|
`UsersStack--l-${layout}`,
|
|
61
55
|
{
|
|
62
56
|
'UsersStack--others': canShowOthers,
|
|
63
|
-
'UsersStack--simple': !canUseClipPath,
|
|
64
57
|
},
|
|
65
58
|
)
|
|
66
59
|
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { canUseDOM
|
|
1
|
+
import { canUseDOM } from '../../lib/dom';
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
const masksCreated: Document[] = [];
|
|
4
4
|
|
|
5
|
-
export function createMasks(): void {
|
|
6
|
-
if (!canUseDOM || masksCreated) {
|
|
5
|
+
export function createMasks(document: Document): void {
|
|
6
|
+
if (!canUseDOM || masksCreated.includes(document)) {
|
|
7
7
|
return;
|
|
8
8
|
}
|
|
9
9
|
|
|
@@ -38,9 +38,6 @@ export function createMasks(): void {
|
|
|
38
38
|
</clipPath>
|
|
39
39
|
</defs>`;
|
|
40
40
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
document.body.appendChild(svgElement);
|
|
44
|
-
});
|
|
45
|
-
masksCreated = true;
|
|
41
|
+
document.body.appendChild(svgElement);
|
|
42
|
+
masksCreated.push(document);
|
|
46
43
|
}
|
|
@@ -5,48 +5,40 @@
|
|
|
5
5
|
Как только он заканчивается, вызывается свойство-функция `onTransition`.
|
|
6
6
|
|
|
7
7
|
```jsx
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
</Group>
|
|
43
|
-
</Panel>
|
|
44
|
-
</View>
|
|
45
|
-
)
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
<Example />
|
|
8
|
+
const [activePanel, setActivePanel] = useState('panel1');
|
|
9
|
+
|
|
10
|
+
<View activePanel={activePanel}>
|
|
11
|
+
<Panel id="panel1">
|
|
12
|
+
<PanelHeader>Panel 1</PanelHeader>
|
|
13
|
+
<Group>
|
|
14
|
+
<div style={{ height: 200 }} />
|
|
15
|
+
<CellButton onClick={ () => setActivePanel('panel2') }>
|
|
16
|
+
Go to panel 2
|
|
17
|
+
</CellButton>
|
|
18
|
+
<div style={{ height: 600 }} />
|
|
19
|
+
</Group>
|
|
20
|
+
</Panel>
|
|
21
|
+
<Panel id="panel2">
|
|
22
|
+
<PanelHeader>Panel 2</PanelHeader>
|
|
23
|
+
<Group>
|
|
24
|
+
<div style={{ height: 200 }} />
|
|
25
|
+
<CellButton onClick={ () => setActivePanel('panel3') }>
|
|
26
|
+
Go to panel 3
|
|
27
|
+
</CellButton>
|
|
28
|
+
<div style={{ height: 600 }} />
|
|
29
|
+
</Group>
|
|
30
|
+
</Panel>
|
|
31
|
+
<Panel id="panel3">
|
|
32
|
+
<PanelHeader>Panel 3</PanelHeader>
|
|
33
|
+
<Group>
|
|
34
|
+
<div style={{ height: 200 }} />
|
|
35
|
+
<CellButton onClick={ () => setActivePanel('panel1') }>
|
|
36
|
+
Back to panel 1
|
|
37
|
+
</CellButton>
|
|
38
|
+
<div style={{ height: 600 }} />
|
|
39
|
+
</Group>
|
|
40
|
+
</Panel>
|
|
41
|
+
</View>
|
|
50
42
|
```
|
|
51
43
|
|
|
52
44
|
### <a id="/View?id=iosswipeback"></a>[iOS Swipe Back](#/View?id=iosswipeback)
|
|
@@ -3,7 +3,7 @@ import { classNames } from '../../lib/classNames';
|
|
|
3
3
|
import { transitionEvent, animationEvent } from '../../lib/supportEvents';
|
|
4
4
|
import { getClassName } from '../../helpers/getClassName';
|
|
5
5
|
import { IOS, ANDROID, VKCOM } from '../../lib/platform';
|
|
6
|
-
import Touch,
|
|
6
|
+
import { Touch, TouchEvent } from '../Touch/Touch';
|
|
7
7
|
import { removeObjectKeys } from '../../lib/removeObjectKeys';
|
|
8
8
|
import { HasPlatform } from '../../types';
|
|
9
9
|
import { withPlatform } from '../../hoc/withPlatform';
|
|
@@ -3,7 +3,7 @@ import { classNames } from '../../lib/classNames';
|
|
|
3
3
|
import { transitionEvent, animationEvent } from '../../lib/supportEvents';
|
|
4
4
|
import { getClassName } from '../../helpers/getClassName';
|
|
5
5
|
import { IOS, ANDROID, VKCOM } from '../../lib/platform';
|
|
6
|
-
import Touch,
|
|
6
|
+
import { Touch, TouchEvent } from '../Touch/Touch';
|
|
7
7
|
import { HasPlatform } from '../../types';
|
|
8
8
|
import { withPlatform } from '../../hoc/withPlatform';
|
|
9
9
|
import { withContext } from '../../hoc/withContext';
|
|
@@ -4,8 +4,8 @@ import { canUseDOM } from '../lib/dom';
|
|
|
4
4
|
import { useIsomorphicLayoutEffect } from '../lib/useIsomorphicLayoutEffect';
|
|
5
5
|
|
|
6
6
|
interface EventListenerHandle {
|
|
7
|
-
add(el: HTMLElement | Document)
|
|
8
|
-
remove()
|
|
7
|
+
add: (el: HTMLElement | Document) => void;
|
|
8
|
+
remove: () => void;
|
|
9
9
|
}
|
|
10
10
|
|
|
11
11
|
export function useEventListener<K extends keyof GlobalEventHandlersEventMap>(
|
|
@@ -19,21 +19,24 @@ export function useEventListener(event: string, _cb: (ev: Event) => any, _option
|
|
|
19
19
|
useIsomorphicLayoutEffect(() => {
|
|
20
20
|
cbRef.current = _cb;
|
|
21
21
|
}, [_cb]);
|
|
22
|
-
const cb = React.useCallback<typeof _cb>((e) => cbRef.current(e), []);
|
|
22
|
+
const cb = React.useCallback<typeof _cb>((e) => cbRef.current && cbRef.current(e), []);
|
|
23
23
|
|
|
24
24
|
const detach = React.useRef(noop);
|
|
25
|
-
const remove = React.useCallback(() =>
|
|
25
|
+
const remove = React.useCallback(() => {
|
|
26
|
+
detach.current();
|
|
27
|
+
detach.current = noop;
|
|
28
|
+
}, []);
|
|
26
29
|
const add = React.useCallback((el: HTMLElement | Document) => {
|
|
27
30
|
if (!canUseDOM) {
|
|
28
31
|
return;
|
|
29
32
|
}
|
|
30
33
|
remove();
|
|
34
|
+
if (!el) {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
31
37
|
const options = { ..._options };
|
|
32
38
|
el.addEventListener(event, cb, options);
|
|
33
|
-
detach.current = () =>
|
|
34
|
-
el.removeEventListener(event, cb, options);
|
|
35
|
-
detach.current = noop;
|
|
36
|
-
};
|
|
39
|
+
detach.current = () => el.removeEventListener(event, cb, options);
|
|
37
40
|
}, []);
|
|
38
41
|
React.useEffect(() => remove, []);
|
|
39
42
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { useIsomorphicLayoutEffect } from '../lib/useIsomorphicLayoutEffect';
|
|
2
2
|
import { useEventListener } from './useEventListener';
|
|
3
3
|
|
|
4
4
|
export function useGlobalEventListener<K extends keyof GlobalEventHandlersEventMap>(
|
|
@@ -15,5 +15,5 @@ export function useGlobalEventListener(
|
|
|
15
15
|
): void;
|
|
16
16
|
export function useGlobalEventListener(element: any, event: string, cb: (ev: Event) => any, options?: AddEventListenerOptions) {
|
|
17
17
|
const listener = useEventListener(event, cb, options);
|
|
18
|
-
|
|
18
|
+
useIsomorphicLayoutEffect(() => cb ? listener.add(element) : listener.remove(), [Boolean(cb)]);
|
|
19
19
|
}
|
package/src/hooks/useInsets.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import vkBridge, { Insets } from '@vkontakte/vk-bridge';
|
|
3
|
+
import { useIsomorphicLayoutEffect } from '../lib/useIsomorphicLayoutEffect';
|
|
3
4
|
|
|
4
5
|
let initialState: Insets = {
|
|
5
6
|
bottom: null,
|
|
@@ -36,13 +37,6 @@ function resolveInsets(e: BridgeEvent): Insets | null {
|
|
|
36
37
|
vkBridge.subscribe((e: BridgeEvent) => {
|
|
37
38
|
const insets = resolveInsets(e);
|
|
38
39
|
if (insets) {
|
|
39
|
-
// eslint-disable-next-line no-restricted-globals
|
|
40
|
-
const htmlElement = document.documentElement;
|
|
41
|
-
for (let key in insets) {
|
|
42
|
-
if (insets.hasOwnProperty(key) && (insets[key as keyof Insets] > 0 || key === 'bottom')) {
|
|
43
|
-
htmlElement.style.setProperty(`--safe-area-inset-${key}`, `${insets[key as keyof Insets]}px`);
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
40
|
initialState = insets;
|
|
47
41
|
}
|
|
48
42
|
});
|
|
@@ -50,7 +44,7 @@ vkBridge.subscribe((e: BridgeEvent) => {
|
|
|
50
44
|
export function useInsets(): Insets {
|
|
51
45
|
const [insets, setInsets] = React.useState<Insets>(initialState);
|
|
52
46
|
|
|
53
|
-
|
|
47
|
+
useIsomorphicLayoutEffect(() => {
|
|
54
48
|
function connectListener(e: BridgeEvent) {
|
|
55
49
|
const insets = resolveInsets(e);
|
|
56
50
|
if (insets) {
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { useDOM } from '../lib/dom';
|
|
3
|
+
import { useGlobalEventListener } from './useGlobalEventListener';
|
|
4
|
+
|
|
5
|
+
interface SoftwareKeyboardState {
|
|
6
|
+
isOpened: boolean;
|
|
7
|
+
isPrecise: boolean;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
Проверяет, закрыла ли клавиатура часть экрана, 24% подошло к большиству устройств
|
|
12
|
+
Работает на iOS и Android, где софт-клавиатура ресайзит viewport в браузерах
|
|
13
|
+
*/
|
|
14
|
+
export function getPreciseKeyboardState(window: any): boolean {
|
|
15
|
+
const { availHeight } = window.screen;
|
|
16
|
+
const { innerHeight } = window;
|
|
17
|
+
|
|
18
|
+
const coveredViewportPercentage = Math.round((1 - innerHeight / availHeight) * 100);
|
|
19
|
+
return coveredViewportPercentage > 24;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export function useKeyboard(): SoftwareKeyboardState {
|
|
23
|
+
const { window, document } = useDOM();
|
|
24
|
+
|
|
25
|
+
const [keyboardState, setKeyboardState] = React.useState<SoftwareKeyboardState>({
|
|
26
|
+
isOpened: false,
|
|
27
|
+
isPrecise: false,
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
const transitionalTimeout = React.useRef<ReturnType<typeof setTimeout> | null>(null);
|
|
31
|
+
|
|
32
|
+
const eventOptions = {
|
|
33
|
+
passive: true,
|
|
34
|
+
capture: false,
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
У полей с autoFocus не отлавливаются события focus, для этого вызываем вручную,
|
|
39
|
+
чтобы иметь хоть какое-то понимание происходящего.
|
|
40
|
+
*/
|
|
41
|
+
React.useEffect(() => {
|
|
42
|
+
onFocus(true);
|
|
43
|
+
}, [onFocus]);
|
|
44
|
+
|
|
45
|
+
function onFocus(event: FocusEvent | true) {
|
|
46
|
+
clearTimeout(transitionalTimeout.current);
|
|
47
|
+
|
|
48
|
+
let returnObject = {
|
|
49
|
+
isOpened: (event === true || event.type === 'focusin') && (
|
|
50
|
+
document.activeElement?.tagName === 'INPUT' ||
|
|
51
|
+
document.activeElement?.tagName === 'TEXTAREA'
|
|
52
|
+
),
|
|
53
|
+
isPrecise: false,
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
// Ожидаем прохождение анимации раскрытия клавиатуры
|
|
57
|
+
transitionalTimeout.current = setTimeout(() => {
|
|
58
|
+
returnObject.isPrecise = getPreciseKeyboardState(window);
|
|
59
|
+
setKeyboardState(returnObject);
|
|
60
|
+
}, 300);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
useGlobalEventListener(document, 'focusout', onFocus, eventOptions);
|
|
64
|
+
useGlobalEventListener(document, 'focusin', onFocus, eventOptions);
|
|
65
|
+
|
|
66
|
+
return keyboardState;
|
|
67
|
+
}
|
|
@@ -6,10 +6,12 @@ import { useGlobalEventListener } from './useGlobalEventListener';
|
|
|
6
6
|
export function useKeyboardInputTracker(): boolean {
|
|
7
7
|
const { document } = useDOM();
|
|
8
8
|
|
|
9
|
-
const [isKeyboardInputActive, toggleKeyboardInput] = React.useState<boolean>(
|
|
9
|
+
const [isKeyboardInputActive, toggleKeyboardInput] = React.useState<boolean>(false);
|
|
10
10
|
|
|
11
11
|
const enableKeyboardInput = React.useCallback((e: KeyboardEvent) => {
|
|
12
|
-
|
|
12
|
+
if (pressedKey(e) === Keys.TAB) {
|
|
13
|
+
toggleKeyboardInput(true);
|
|
14
|
+
}
|
|
13
15
|
}, []);
|
|
14
16
|
|
|
15
17
|
const disableKeyboardInput = React.useCallback(() => {
|
package/src/index.ts
CHANGED
|
@@ -204,7 +204,7 @@ export { default as Div } from './components/Div/Div';
|
|
|
204
204
|
export type { DivProps } from './components/Div/Div';
|
|
205
205
|
export { default as Tappable } from './components/Tappable/Tappable';
|
|
206
206
|
export type { TappableProps } from './components/Tappable/Tappable';
|
|
207
|
-
export {
|
|
207
|
+
export { Touch } from './components/Touch/Touch';
|
|
208
208
|
export type { TouchProps } from './components/Touch/Touch';
|
|
209
209
|
export { default as PanelSpinner } from './components/PanelSpinner/PanelSpinner';
|
|
210
210
|
export type { PanelSpinnerProps } from './components/PanelSpinner/PanelSpinner';
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
type Option = {
|
|
2
|
+
label?: string;
|
|
3
|
+
[index: string]: any;
|
|
4
|
+
};
|
|
5
|
+
|
|
6
|
+
type GetOptionLabel = (option: Option) => string;
|
|
7
|
+
|
|
8
|
+
const findAllIncludes = (target = '', search = '') => {
|
|
9
|
+
const includes = [];
|
|
10
|
+
|
|
11
|
+
let i = target.indexOf(search);
|
|
12
|
+
while (i !== -1) {
|
|
13
|
+
includes.push(i);
|
|
14
|
+
i = target.indexOf(search, i + 1);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
return includes;
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
let letterRegexp: RegExp;
|
|
21
|
+
|
|
22
|
+
// На момент написания флаг u не поддерживался рядом браузеров, поэтому добавили фоллбэк.
|
|
23
|
+
try {
|
|
24
|
+
letterRegexp = new RegExp('\\p{L}', 'u');
|
|
25
|
+
} catch (e) {}
|
|
26
|
+
|
|
27
|
+
export const defaultFilterFn = (
|
|
28
|
+
query = '',
|
|
29
|
+
option: Option,
|
|
30
|
+
getOptionLabel: GetOptionLabel = (option) => option.label,
|
|
31
|
+
) => {
|
|
32
|
+
query = query.toLocaleLowerCase();
|
|
33
|
+
let label = getOptionLabel(option).toLocaleLowerCase();
|
|
34
|
+
|
|
35
|
+
if (label.startsWith(query)) {
|
|
36
|
+
return true;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
const includes = findAllIncludes(label, query);
|
|
40
|
+
|
|
41
|
+
// Ищем вхождение перед началом которого не буква
|
|
42
|
+
if (letterRegexp) {
|
|
43
|
+
for (const index of includes) {
|
|
44
|
+
if (!letterRegexp.test(label[index - 1])) {
|
|
45
|
+
return true;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
} else { // если regexp не поддерживается, то ищем любое вхождение
|
|
49
|
+
return includes.length > 0;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
return false;
|
|
53
|
+
};
|
package/src/lib/touch.ts
CHANGED
|
@@ -24,7 +24,7 @@ const coordY = (e: VKUITouchEvent): number => {
|
|
|
24
24
|
};
|
|
25
25
|
|
|
26
26
|
// eslint-disable-next-line no-restricted-globals
|
|
27
|
-
const touchEnabled
|
|
27
|
+
const touchEnabled = () => canUseDOM && 'ontouchstart' in window;
|
|
28
28
|
|
|
29
29
|
/*
|
|
30
30
|
* Возвращает массив поддерживаемых событий
|
|
@@ -32,7 +32,7 @@ const touchEnabled: boolean = canUseDOM && 'ontouchstart' in window;
|
|
|
32
32
|
* Если нет, используем события мыши
|
|
33
33
|
*/
|
|
34
34
|
function getSupportedEvents(): string[] {
|
|
35
|
-
if (touchEnabled) {
|
|
35
|
+
if (touchEnabled()) {
|
|
36
36
|
return ['touchstart', 'touchmove', 'touchend', 'touchcancel'];
|
|
37
37
|
}
|
|
38
38
|
|
package/src/lib/utils.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import { Ref, RefWithCurrent } from '../types';
|
|
3
2
|
|
|
4
3
|
export type ImgOnlyAttributes = {
|
|
5
4
|
[index in Exclude<keyof React.ImgHTMLAttributes<HTMLImageElement>, keyof React.HTMLAttributes<HTMLImageElement>>]: React.ImgHTMLAttributes<HTMLImageElement>[index];
|
|
@@ -42,17 +41,17 @@ export function isPrimitiveReactNode(node: React.ReactNode): boolean {
|
|
|
42
41
|
return typeof node === 'string' || typeof node === 'number';
|
|
43
42
|
}
|
|
44
43
|
|
|
45
|
-
export function setRef<T>(element: T, ref: Ref<T>): void {
|
|
44
|
+
export function setRef<T>(element: T, ref: React.Ref<T>): void {
|
|
46
45
|
if (ref) {
|
|
47
46
|
if (typeof ref === 'function') {
|
|
48
47
|
ref(element);
|
|
49
48
|
} else {
|
|
50
|
-
ref.current = element;
|
|
49
|
+
(ref as React.MutableRefObject<T>).current = element;
|
|
51
50
|
}
|
|
52
51
|
}
|
|
53
52
|
}
|
|
54
53
|
|
|
55
|
-
export function multiRef<T>(...refs: Array<Ref<T>>):
|
|
54
|
+
export function multiRef<T>(...refs: Array<React.Ref<T>>): React.RefObject<T> {
|
|
56
55
|
let current: T | null = null;
|
|
57
56
|
return {
|
|
58
57
|
get current() {
|
package/src/styles/common.css
CHANGED
|
@@ -22,27 +22,6 @@
|
|
|
22
22
|
color: var(--text_primary);
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
-
.vkui__root--embedded {
|
|
26
|
-
transform: translate3d(0, 0, 0);
|
|
27
|
-
overflow-x: hidden;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
.AppRoot {
|
|
31
|
-
height: 100%;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
.vkui__root--embedded .AppRoot {
|
|
35
|
-
overflow: auto;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
.vkui--sizeX-regular {
|
|
39
|
-
background: var(--background_page);
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
.AppRoot--no-mouse {
|
|
43
|
-
user-select: none;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
25
|
.vkui__root input,
|
|
47
26
|
.vkui__root textarea,
|
|
48
27
|
.vkui__root select,
|
package/src/styles/constants.css
CHANGED
package/src/styles/unstable.css
CHANGED
package/src/types.ts
CHANGED
|
@@ -6,18 +6,12 @@ export type AnyFunction = (...args: any[]) => any;
|
|
|
6
6
|
|
|
7
7
|
export type AlignType = 'left' | 'center' | 'right';
|
|
8
8
|
|
|
9
|
-
export type RefWithCurrent<T> = {
|
|
10
|
-
current: T | null;
|
|
11
|
-
};
|
|
12
|
-
|
|
13
|
-
export type Ref<T> = React.RefCallback<T> | RefWithCurrent<T>;
|
|
14
|
-
|
|
15
9
|
export interface HasRootRef<T> {
|
|
16
|
-
getRootRef?: Ref<T>;
|
|
10
|
+
getRootRef?: React.Ref<T>;
|
|
17
11
|
}
|
|
18
12
|
|
|
19
13
|
export interface HasRef<T> {
|
|
20
|
-
getRef?: Ref<T>;
|
|
14
|
+
getRef?: React.Ref<T>;
|
|
21
15
|
}
|
|
22
16
|
|
|
23
17
|
export interface HasAlign {
|
package/src/unstable/index.ts
CHANGED
|
@@ -6,3 +6,6 @@ export type { ChipsSelectProps } from './../components/ChipsSelect/ChipsSelect';
|
|
|
6
6
|
|
|
7
7
|
export { default as ViewInfinite } from './../components/View/ViewInfinite';
|
|
8
8
|
export type { ViewInfiniteProps } from './../components/View/ViewInfinite';
|
|
9
|
+
|
|
10
|
+
export { default as SimpleCheckbox } from './../components/SimpleCheckbox/SimpleCheckbox';
|
|
11
|
+
export type { SimpleCheckboxProps } from './../components/SimpleCheckbox/SimpleCheckbox';
|