@vkontakte/vkui 7.0.0-dev-efd91c.0 → 7.0.0-dev-efd91c.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/dist/components/Accordion/Accordion.d.ts.map +1 -1
- package/dist/components/Accordion/Accordion.js +9 -5
- package/dist/components/Accordion/Accordion.js.map +1 -1
- package/dist/components/ActionSheet/ActionSheet.d.ts.map +1 -1
- package/dist/components/ActionSheet/ActionSheet.js +20 -14
- package/dist/components/ActionSheet/ActionSheet.js.map +1 -1
- package/dist/components/Alert/Alert.d.ts +3 -1
- package/dist/components/Alert/Alert.d.ts.map +1 -1
- package/dist/components/Alert/Alert.js +61 -56
- package/dist/components/Alert/Alert.js.map +1 -1
- package/dist/components/AppRoot/AppRoot.d.ts +2 -1
- package/dist/components/AppRoot/AppRoot.d.ts.map +1 -1
- package/dist/components/AppRoot/AppRoot.js +75 -102
- package/dist/components/AppRoot/AppRoot.js.map +1 -1
- package/dist/components/AppRoot/AppRootContext.d.ts +6 -1
- package/dist/components/AppRoot/AppRootContext.d.ts.map +1 -1
- package/dist/components/AppRoot/AppRootContext.js +5 -1
- package/dist/components/AppRoot/AppRootContext.js.map +1 -1
- package/dist/components/AppRoot/AppRootPortal.d.ts +6 -2
- package/dist/components/AppRoot/AppRootPortal.d.ts.map +1 -1
- package/dist/components/AppRoot/AppRootPortal.js +49 -27
- package/dist/components/AppRoot/AppRootPortal.js.map +1 -1
- package/dist/components/AppRoot/AppRootStyleContainer.d.ts +16 -0
- package/dist/components/AppRoot/AppRootStyleContainer.d.ts.map +1 -0
- package/dist/components/AppRoot/AppRootStyleContainer.js +57 -0
- package/dist/components/AppRoot/AppRootStyleContainer.js.map +1 -0
- package/dist/components/AppRoot/ModalPopoutPortal.d.ts +11 -0
- package/dist/components/AppRoot/ModalPopoutPortal.d.ts.map +1 -0
- package/dist/components/AppRoot/ModalPopoutPortal.js +28 -0
- package/dist/components/AppRoot/ModalPopoutPortal.js.map +1 -0
- package/dist/components/AppRoot/helpers.d.ts +2 -12
- package/dist/components/AppRoot/helpers.d.ts.map +1 -1
- package/dist/components/AppRoot/helpers.js +6 -56
- package/dist/components/AppRoot/helpers.js.map +1 -1
- package/dist/components/BaseGallery/BaseGallery.js.map +1 -1
- package/dist/components/BaseGallery/CarouselBase/CarouselBase.d.ts.map +1 -1
- package/dist/components/BaseGallery/CarouselBase/CarouselBase.js +1 -0
- package/dist/components/BaseGallery/CarouselBase/CarouselBase.js.map +1 -1
- package/dist/components/CalendarHeader/CalendarHeader.d.ts.map +1 -1
- package/dist/components/CalendarHeader/CalendarHeader.js +2 -2
- package/dist/components/CalendarHeader/CalendarHeader.js.map +1 -1
- package/dist/components/CalendarTime/CalendarTime.d.ts.map +1 -1
- package/dist/components/CalendarTime/CalendarTime.js +2 -2
- package/dist/components/CalendarTime/CalendarTime.js.map +1 -1
- package/dist/components/ConfigProvider/ConfigProvider.d.ts.map +1 -1
- package/dist/components/ConfigProvider/ConfigProvider.js +15 -7
- package/dist/components/ConfigProvider/ConfigProvider.js.map +1 -1
- package/dist/components/Counter/Counter.d.ts +16 -6
- package/dist/components/Counter/Counter.d.ts.map +1 -1
- package/dist/components/Counter/Counter.js +50 -5
- package/dist/components/Counter/Counter.js.map +1 -1
- package/dist/components/CustomSelect/CustomSelect.d.ts.map +1 -1
- package/dist/components/CustomSelect/CustomSelect.js +7 -1
- package/dist/components/CustomSelect/CustomSelect.js.map +1 -1
- package/dist/components/FormItem/FormItem.d.ts.map +1 -1
- package/dist/components/FormItem/FormItem.js +5 -3
- package/dist/components/FormItem/FormItem.js.map +1 -1
- package/dist/components/Gallery/Gallery.js.map +1 -1
- package/dist/components/Group/GroupContainer.d.ts.map +1 -1
- package/dist/components/Group/GroupContainer.js +2 -2
- package/dist/components/Group/GroupContainer.js.map +1 -1
- package/dist/components/Link/Link.d.ts +15 -2
- package/dist/components/Link/Link.d.ts.map +1 -1
- package/dist/components/Link/Link.js +20 -5
- package/dist/components/Link/Link.js.map +1 -1
- package/dist/components/ModalCard/ModalCard.d.ts +2 -6
- package/dist/components/ModalCard/ModalCard.d.ts.map +1 -1
- package/dist/components/ModalCard/ModalCard.js +40 -65
- package/dist/components/ModalCard/ModalCard.js.map +1 -1
- package/dist/components/ModalCard/ModalCardInternal.d.ts +13 -0
- package/dist/components/ModalCard/ModalCardInternal.d.ts.map +1 -0
- package/dist/components/ModalCard/ModalCardInternal.js +147 -0
- package/dist/components/ModalCard/ModalCardInternal.js.map +1 -0
- package/dist/components/ModalCard/types.d.ts +44 -0
- package/dist/components/ModalCard/types.d.ts.map +1 -0
- package/dist/components/ModalCard/types.js +3 -0
- package/dist/components/ModalCard/types.js.map +1 -0
- package/dist/components/ModalCardBase/ModalCardBase.d.ts.map +1 -1
- package/dist/components/ModalCardBase/ModalCardBase.js +1 -3
- package/dist/components/ModalCardBase/ModalCardBase.js.map +1 -1
- package/dist/components/ModalOutlet/ModalOutlet.d.ts +9 -0
- package/dist/components/ModalOutlet/ModalOutlet.d.ts.map +1 -0
- package/dist/components/ModalOutlet/ModalOutlet.js +25 -0
- package/dist/components/ModalOutlet/ModalOutlet.js.map +1 -0
- package/dist/components/ModalOverlay/ModalOverlay.d.ts +12 -0
- package/dist/components/ModalOverlay/ModalOverlay.d.ts.map +1 -0
- package/dist/components/ModalOverlay/ModalOverlay.js +47 -0
- package/dist/components/ModalOverlay/ModalOverlay.js.map +1 -0
- package/dist/components/ModalPage/ModalPage.d.ts +2 -60
- package/dist/components/ModalPage/ModalPage.d.ts.map +1 -1
- package/dist/components/ModalPage/ModalPage.js +39 -111
- package/dist/components/ModalPage/ModalPage.js.map +1 -1
- package/dist/components/ModalPage/ModalPageInternal.d.ts +13 -0
- package/dist/components/ModalPage/ModalPageInternal.d.ts.map +1 -0
- package/dist/components/ModalPage/ModalPageInternal.js +181 -0
- package/dist/components/ModalPage/ModalPageInternal.js.map +1 -0
- package/dist/components/ModalPage/types.d.ts +104 -0
- package/dist/components/ModalPage/types.d.ts.map +1 -0
- package/dist/components/ModalPage/types.js +3 -0
- package/dist/components/ModalPage/types.js.map +1 -0
- package/dist/components/ModalPageContent/ModalPageContent.d.ts +4 -0
- package/dist/components/ModalPageContent/ModalPageContent.d.ts.map +1 -0
- package/dist/components/ModalPageContent/ModalPageContent.js +22 -0
- package/dist/components/ModalPageContent/ModalPageContent.js.map +1 -0
- package/dist/components/ModalPageFooter/ModalPageFooter.d.ts +7 -0
- package/dist/components/ModalPageFooter/ModalPageFooter.d.ts.map +1 -0
- package/dist/components/ModalPageFooter/ModalPageFooter.js +30 -0
- package/dist/components/ModalPageFooter/ModalPageFooter.js.map +1 -0
- package/dist/components/ModalPageHeader/ModalPageHeader.d.ts.map +1 -1
- package/dist/components/ModalPageHeader/ModalPageHeader.js +4 -4
- package/dist/components/ModalPageHeader/ModalPageHeader.js.map +1 -1
- package/dist/components/ModalRoot/ModalRoot.d.ts +5 -2
- package/dist/components/ModalRoot/ModalRoot.d.ts.map +1 -1
- package/dist/components/ModalRoot/ModalRoot.js +52 -590
- package/dist/components/ModalRoot/ModalRoot.js.map +1 -1
- package/dist/components/ModalRoot/ModalRootContext.d.ts +8 -18
- package/dist/components/ModalRoot/ModalRootContext.d.ts.map +1 -1
- package/dist/components/ModalRoot/ModalRootContext.js +13 -40
- package/dist/components/ModalRoot/ModalRootContext.js.map +1 -1
- package/dist/components/ModalRoot/VisuallyHiddenModalOverlay/VisuallyHiddenModalOverlay.d.ts +13 -0
- package/dist/components/ModalRoot/VisuallyHiddenModalOverlay/VisuallyHiddenModalOverlay.d.ts.map +1 -0
- package/dist/components/ModalRoot/VisuallyHiddenModalOverlay/VisuallyHiddenModalOverlay.js +33 -0
- package/dist/components/ModalRoot/VisuallyHiddenModalOverlay/VisuallyHiddenModalOverlay.js.map +1 -0
- package/dist/components/ModalRoot/types.d.ts +52 -21
- package/dist/components/ModalRoot/types.d.ts.map +1 -1
- package/dist/components/ModalRoot/types.js +1 -1
- package/dist/components/ModalRoot/types.js.map +1 -1
- package/dist/components/ModalRoot/useModalManager.d.ts +27 -38
- package/dist/components/ModalRoot/useModalManager.d.ts.map +1 -1
- package/dist/components/ModalRoot/useModalManager.js +37 -193
- package/dist/components/ModalRoot/useModalManager.js.map +1 -1
- package/dist/components/ModalRoot/useModalRootContext.d.ts +2 -2
- package/dist/components/ModalRoot/useModalRootContext.d.ts.map +1 -1
- package/dist/components/ModalRoot/useModalRootContext.js +18 -2
- package/dist/components/ModalRoot/useModalRootContext.js.map +1 -1
- package/dist/components/ModalRoot/withModalRootContext.d.ts +6 -1
- package/dist/components/ModalRoot/withModalRootContext.d.ts.map +1 -1
- package/dist/components/ModalRoot/withModalRootContext.js +7 -4
- package/dist/components/ModalRoot/withModalRootContext.js.map +1 -1
- package/dist/components/NativeSelect/NativeSelect.d.ts +5 -6
- package/dist/components/NativeSelect/NativeSelect.d.ts.map +1 -1
- package/dist/components/NativeSelect/NativeSelect.js +7 -1
- package/dist/components/NativeSelect/NativeSelect.js.map +1 -1
- package/dist/components/NavTransitionContext/NavTransitionContext.d.ts.map +1 -1
- package/dist/components/NavTransitionContext/NavTransitionContext.js +6 -4
- package/dist/components/NavTransitionContext/NavTransitionContext.js.map +1 -1
- package/dist/components/PanelHeader/PanelHeader.d.ts.map +1 -1
- package/dist/components/PanelHeader/PanelHeader.js +2 -2
- package/dist/components/PanelHeader/PanelHeader.js.map +1 -1
- package/dist/components/PanelHeaderBack/PanelHeaderBack.d.ts +5 -4
- package/dist/components/PanelHeaderBack/PanelHeaderBack.d.ts.map +1 -1
- package/dist/components/PanelHeaderBack/PanelHeaderBack.js +10 -12
- package/dist/components/PanelHeaderBack/PanelHeaderBack.js.map +1 -1
- package/dist/components/PanelHeaderButton/PanelHeaderButton.d.ts.map +1 -1
- package/dist/components/PanelHeaderButton/PanelHeaderButton.js +6 -1
- package/dist/components/PanelHeaderButton/PanelHeaderButton.js.map +1 -1
- package/dist/components/PanelHeaderClose/PanelHeaderClose.d.ts +2 -1
- package/dist/components/PanelHeaderClose/PanelHeaderClose.d.ts.map +1 -1
- package/dist/components/PanelHeaderClose/PanelHeaderClose.js +9 -13
- package/dist/components/PanelHeaderClose/PanelHeaderClose.js.map +1 -1
- package/dist/components/PanelHeaderEdit/PanelHeaderEdit.d.ts +1 -1
- package/dist/components/PanelHeaderEdit/PanelHeaderEdit.d.ts.map +1 -1
- package/dist/components/PanelHeaderEdit/PanelHeaderEdit.js +7 -11
- package/dist/components/PanelHeaderEdit/PanelHeaderEdit.js.map +1 -1
- package/dist/components/PanelHeaderSubmit/PanelHeaderSubmit.d.ts +2 -1
- package/dist/components/PanelHeaderSubmit/PanelHeaderSubmit.d.ts.map +1 -1
- package/dist/components/PanelHeaderSubmit/PanelHeaderSubmit.js +10 -14
- package/dist/components/PanelHeaderSubmit/PanelHeaderSubmit.js.map +1 -1
- package/dist/components/PopoutWrapper/PopoutWrapper.d.ts +5 -1
- package/dist/components/PopoutWrapper/PopoutWrapper.d.ts.map +1 -1
- package/dist/components/PopoutWrapper/PopoutWrapper.js +6 -2
- package/dist/components/PopoutWrapper/PopoutWrapper.js.map +1 -1
- package/dist/components/PullToRefresh/PullToRefresh.d.ts.map +1 -1
- package/dist/components/PullToRefresh/PullToRefresh.js +9 -8
- package/dist/components/PullToRefresh/PullToRefresh.js.map +1 -1
- package/dist/components/ScreenSpinner/ScreenSpinner.d.ts.map +1 -1
- package/dist/components/ScreenSpinner/ScreenSpinner.js +23 -18
- package/dist/components/ScreenSpinner/ScreenSpinner.js.map +1 -1
- package/dist/components/ScreenSpinner/types.d.ts +2 -0
- package/dist/components/ScreenSpinner/types.d.ts.map +1 -1
- package/dist/components/ScreenSpinner/types.js.map +1 -1
- package/dist/components/Separator/Separator.d.ts +2 -0
- package/dist/components/Separator/Separator.d.ts.map +1 -1
- package/dist/components/Separator/Separator.js +4 -5
- package/dist/components/Separator/Separator.js.map +1 -1
- package/dist/components/Skeleton/Skeleton.js +4 -4
- package/dist/components/Skeleton/Skeleton.js.map +1 -1
- package/dist/components/Spacing/Spacing.d.ts +3 -1
- package/dist/components/Spacing/Spacing.d.ts.map +1 -1
- package/dist/components/Spacing/Spacing.js +4 -5
- package/dist/components/Spacing/Spacing.js.map +1 -1
- package/dist/components/SplitCol/SplitCol.d.ts.map +1 -1
- package/dist/components/SplitCol/SplitCol.js +7 -5
- package/dist/components/SplitCol/SplitCol.js.map +1 -1
- package/dist/components/SplitLayout/SplitLayout.d.ts +9 -1
- package/dist/components/SplitLayout/SplitLayout.d.ts.map +1 -1
- package/dist/components/SplitLayout/SplitLayout.js +17 -12
- package/dist/components/SplitLayout/SplitLayout.js.map +1 -1
- package/dist/components/Tappable/Tappable.d.ts.map +1 -1
- package/dist/components/Tappable/Tappable.js +1 -1
- package/dist/components/Tappable/Tappable.js.map +1 -1
- package/dist/components/View/useLayoutEffectCall.d.ts +1 -1
- package/dist/components/View/useLayoutEffectCall.d.ts.map +1 -1
- package/dist/components/View/useLayoutEffectCall.js +8 -33
- package/dist/components/View/useLayoutEffectCall.js.map +1 -1
- package/dist/components.css +1 -1
- package/dist/components.css.map +1 -1
- package/dist/context/ModalContext.d.ts +15 -0
- package/dist/context/ModalContext.d.ts.map +1 -0
- package/dist/context/ModalContext.js +13 -0
- package/dist/context/ModalContext.js.map +1 -0
- package/dist/cssm/components/Accordion/Accordion.js +9 -5
- package/dist/cssm/components/Accordion/Accordion.js.map +1 -1
- package/dist/cssm/components/ActionSheet/ActionSheet.js +20 -14
- package/dist/cssm/components/ActionSheet/ActionSheet.js.map +1 -1
- package/dist/cssm/components/Alert/Alert.js +60 -56
- package/dist/cssm/components/Alert/Alert.js.map +1 -1
- package/dist/cssm/components/AppRoot/AppRoot.js +73 -100
- package/dist/cssm/components/AppRoot/AppRoot.js.map +1 -1
- package/dist/cssm/components/AppRoot/AppRoot.module.css +2 -40
- package/dist/cssm/components/AppRoot/AppRootContext.js +5 -1
- package/dist/cssm/components/AppRoot/AppRootContext.js.map +1 -1
- package/dist/cssm/components/AppRoot/AppRootPortal.js +49 -27
- package/dist/cssm/components/AppRoot/AppRootPortal.js.map +1 -1
- package/dist/cssm/components/AppRoot/AppRootStyleContainer.js +57 -0
- package/dist/cssm/components/AppRoot/AppRootStyleContainer.js.map +1 -0
- package/dist/cssm/components/AppRoot/AppRootStyleContainer.module.css +87 -0
- package/dist/cssm/components/AppRoot/ModalPopoutPortal.js +27 -0
- package/dist/cssm/components/AppRoot/ModalPopoutPortal.js.map +1 -0
- package/dist/cssm/components/AppRoot/helpers.js +6 -56
- package/dist/cssm/components/AppRoot/helpers.js.map +1 -1
- package/dist/cssm/components/BaseGallery/BaseGallery.js.map +1 -1
- package/dist/cssm/components/BaseGallery/CarouselBase/CarouselBase.js +1 -0
- package/dist/cssm/components/BaseGallery/CarouselBase/CarouselBase.js.map +1 -1
- package/dist/cssm/components/CalendarHeader/CalendarHeader.js +2 -2
- package/dist/cssm/components/CalendarHeader/CalendarHeader.js.map +1 -1
- package/dist/cssm/components/CalendarTime/CalendarTime.js +2 -2
- package/dist/cssm/components/CalendarTime/CalendarTime.js.map +1 -1
- package/dist/cssm/components/ConfigProvider/ConfigProvider.js +15 -7
- package/dist/cssm/components/ConfigProvider/ConfigProvider.js.map +1 -1
- package/dist/cssm/components/Counter/Counter.js +48 -4
- package/dist/cssm/components/Counter/Counter.js.map +1 -1
- package/dist/cssm/components/Counter/Counter.module.css +81 -12
- package/dist/cssm/components/CustomSelect/CustomSelect.js +7 -1
- package/dist/cssm/components/CustomSelect/CustomSelect.js.map +1 -1
- package/dist/cssm/components/FormItem/FormItem.js +5 -3
- package/dist/cssm/components/FormItem/FormItem.js.map +1 -1
- package/dist/cssm/components/Gallery/Gallery.js.map +1 -1
- package/dist/cssm/components/Group/GroupContainer.js +2 -2
- package/dist/cssm/components/Group/GroupContainer.js.map +1 -1
- package/dist/cssm/components/Link/Link.js +17 -5
- package/dist/cssm/components/Link/Link.js.map +1 -1
- package/dist/cssm/components/Link/Link.module.css +13 -4
- package/dist/cssm/components/ModalCard/ModalCard.js +30 -51
- package/dist/cssm/components/ModalCard/ModalCard.js.map +1 -1
- package/dist/cssm/components/ModalCard/ModalCard.module.css +62 -44
- package/dist/cssm/components/ModalCard/ModalCardInternal.js +122 -0
- package/dist/cssm/components/ModalCard/ModalCardInternal.js.map +1 -0
- package/dist/cssm/components/ModalCard/types.js +3 -0
- package/dist/cssm/components/ModalCard/types.js.map +1 -0
- package/dist/cssm/components/ModalCardBase/ModalCardBase.js +1 -3
- package/dist/cssm/components/ModalCardBase/ModalCardBase.js.map +1 -1
- package/dist/cssm/components/ModalCardBase/ModalCardBase.module.css +0 -2
- package/dist/cssm/components/ModalOutlet/ModalOutlet.js +17 -0
- package/dist/cssm/components/ModalOutlet/ModalOutlet.js.map +1 -0
- package/dist/cssm/components/ModalOutlet/ModalOutlet.module.css +17 -0
- package/dist/cssm/components/ModalOverlay/ModalOverlay.js +40 -0
- package/dist/cssm/components/ModalOverlay/ModalOverlay.js.map +1 -0
- package/dist/cssm/components/ModalOverlay/ModalOverlay.module.css +71 -0
- package/dist/cssm/components/ModalPage/ModalPage.js +32 -99
- package/dist/cssm/components/ModalPage/ModalPage.js.map +1 -1
- package/dist/cssm/components/ModalPage/ModalPage.module.css +125 -123
- package/dist/cssm/components/ModalPage/ModalPageInternal.js +161 -0
- package/dist/cssm/components/ModalPage/ModalPageInternal.js.map +1 -0
- package/dist/cssm/components/ModalPage/types.js +3 -0
- package/dist/cssm/components/ModalPage/types.js.map +1 -0
- package/dist/cssm/components/ModalPageContent/ModalPageContent.js +15 -0
- package/dist/cssm/components/ModalPageContent/ModalPageContent.js.map +1 -0
- package/dist/cssm/components/ModalPageContent/ModalPageContent.module.css +4 -0
- package/dist/cssm/components/ModalPageFooter/ModalPageFooter.js +23 -0
- package/dist/cssm/components/ModalPageFooter/ModalPageFooter.js.map +1 -0
- package/dist/cssm/components/ModalPageFooter/ModalPageFooter.module.css +35 -0
- package/dist/cssm/components/ModalPageHeader/ModalPageHeader.js +4 -4
- package/dist/cssm/components/ModalPageHeader/ModalPageHeader.js.map +1 -1
- package/dist/cssm/components/ModalPageHeader/ModalPageHeader.module.css +8 -2
- package/dist/cssm/components/ModalRoot/ModalRoot.js +52 -571
- package/dist/cssm/components/ModalRoot/ModalRoot.js.map +1 -1
- package/dist/cssm/components/ModalRoot/ModalRootContext.js +13 -40
- package/dist/cssm/components/ModalRoot/ModalRootContext.js.map +1 -1
- package/dist/cssm/components/ModalRoot/VisuallyHiddenModalOverlay/VisuallyHiddenModalOverlay.js +27 -0
- package/dist/cssm/components/ModalRoot/VisuallyHiddenModalOverlay/VisuallyHiddenModalOverlay.js.map +1 -0
- package/dist/cssm/components/ModalRoot/VisuallyHiddenModalOverlay/VisuallyHiddenModalOverlay.module.css +8 -0
- package/dist/cssm/components/ModalRoot/types.js +1 -1
- package/dist/cssm/components/ModalRoot/types.js.map +1 -1
- package/dist/cssm/components/ModalRoot/useModalManager.js +36 -194
- package/dist/cssm/components/ModalRoot/useModalManager.js.map +1 -1
- package/dist/cssm/components/ModalRoot/useModalRootContext.js +18 -2
- package/dist/cssm/components/ModalRoot/useModalRootContext.js.map +1 -1
- package/dist/cssm/components/ModalRoot/withModalRootContext.js +7 -4
- package/dist/cssm/components/ModalRoot/withModalRootContext.js.map +1 -1
- package/dist/cssm/components/NativeSelect/NativeSelect.js +7 -1
- package/dist/cssm/components/NativeSelect/NativeSelect.js.map +1 -1
- package/dist/cssm/components/NavTransitionContext/NavTransitionContext.js +6 -4
- package/dist/cssm/components/NavTransitionContext/NavTransitionContext.js.map +1 -1
- package/dist/cssm/components/PanelHeader/PanelHeader.js +2 -2
- package/dist/cssm/components/PanelHeader/PanelHeader.js.map +1 -1
- package/dist/cssm/components/PanelHeaderBack/PanelHeaderBack.js +9 -12
- package/dist/cssm/components/PanelHeaderBack/PanelHeaderBack.js.map +1 -1
- package/dist/cssm/components/PanelHeaderButton/PanelHeaderButton.js +6 -1
- package/dist/cssm/components/PanelHeaderButton/PanelHeaderButton.js.map +1 -1
- package/dist/cssm/components/PanelHeaderClose/PanelHeaderClose.js +8 -12
- package/dist/cssm/components/PanelHeaderClose/PanelHeaderClose.js.map +1 -1
- package/dist/cssm/components/PanelHeaderEdit/PanelHeaderEdit.js +7 -11
- package/dist/cssm/components/PanelHeaderEdit/PanelHeaderEdit.js.map +1 -1
- package/dist/cssm/components/PanelHeaderSubmit/PanelHeaderSubmit.js +8 -12
- package/dist/cssm/components/PanelHeaderSubmit/PanelHeaderSubmit.js.map +1 -1
- package/dist/cssm/components/PopoutWrapper/PopoutWrapper.js +5 -1
- package/dist/cssm/components/PopoutWrapper/PopoutWrapper.js.map +1 -1
- package/dist/cssm/components/PullToRefresh/PullToRefresh.js +9 -8
- package/dist/cssm/components/PullToRefresh/PullToRefresh.js.map +1 -1
- package/dist/cssm/components/ScreenSpinner/ScreenSpinner.js +23 -19
- package/dist/cssm/components/ScreenSpinner/ScreenSpinner.js.map +1 -1
- package/dist/cssm/components/ScreenSpinner/types.js.map +1 -1
- package/dist/cssm/components/Search/Search.module.css +2 -2
- package/dist/cssm/components/Separator/Separator.js +9 -8
- package/dist/cssm/components/Separator/Separator.js.map +1 -1
- package/dist/cssm/components/Skeleton/Skeleton.js +4 -4
- package/dist/cssm/components/Skeleton/Skeleton.js.map +1 -1
- package/dist/cssm/components/Spacing/Spacing.js +6 -7
- package/dist/cssm/components/Spacing/Spacing.js.map +1 -1
- package/dist/cssm/components/SplitCol/SplitCol.js +7 -5
- package/dist/cssm/components/SplitCol/SplitCol.js.map +1 -1
- package/dist/cssm/components/SplitLayout/SplitLayout.js +14 -9
- package/dist/cssm/components/SplitLayout/SplitLayout.js.map +1 -1
- package/dist/cssm/components/Tappable/Tappable.js +1 -1
- package/dist/cssm/components/Tappable/Tappable.js.map +1 -1
- package/dist/cssm/components/View/useLayoutEffectCall.js +8 -23
- package/dist/cssm/components/View/useLayoutEffectCall.js.map +1 -1
- package/dist/cssm/context/ModalContext.js +13 -0
- package/dist/cssm/context/ModalContext.js.map +1 -0
- package/dist/cssm/helpers/range.js +3 -0
- package/dist/cssm/helpers/range.js.map +1 -1
- package/dist/cssm/hooks/useObjectMemo.js +6 -2
- package/dist/cssm/hooks/useObjectMemo.js.map +1 -1
- package/dist/cssm/hooks/usePrevious.js +9 -2
- package/dist/cssm/hooks/usePrevious.js.map +1 -1
- package/dist/cssm/hooks/useStableCallback.js +1 -1
- package/dist/cssm/hooks/useStableCallback.js.map +1 -1
- package/dist/cssm/hooks/useStateWithPrev.js +34 -0
- package/dist/cssm/hooks/useStateWithPrev.js.map +1 -0
- package/dist/cssm/hooks/useSyncHTMLWithBaseVKUIClasses.js +23 -0
- package/dist/cssm/hooks/useSyncHTMLWithBaseVKUIClasses.js.map +1 -0
- package/dist/cssm/hooks/useSyncHTMLWithTokens.js +19 -0
- package/dist/cssm/hooks/useSyncHTMLWithTokens.js.map +1 -0
- package/dist/cssm/hooks/useVirtualKeyboardState.js +134 -0
- package/dist/cssm/hooks/useVirtualKeyboardState.js.map +1 -0
- package/dist/cssm/index.js +6 -2
- package/dist/cssm/index.js.map +1 -1
- package/dist/cssm/lib/SSR.js +1 -7
- package/dist/cssm/lib/SSR.js.map +1 -1
- package/dist/cssm/lib/adaptivity/functions.js +7 -1
- package/dist/cssm/lib/adaptivity/functions.js.map +1 -1
- package/dist/cssm/lib/animation/useCSSKeyframesAnimationController.js +7 -5
- package/dist/cssm/lib/animation/useCSSKeyframesAnimationController.js.map +1 -1
- package/dist/cssm/lib/animation/useCSSTransition.js +4 -4
- package/dist/cssm/lib/animation/useCSSTransition.js.map +1 -1
- package/dist/cssm/lib/dom.js +65 -11
- package/dist/cssm/lib/dom.js.map +1 -1
- package/dist/cssm/lib/floating/usePlacementChangeCallback.js +6 -3
- package/dist/cssm/lib/floating/usePlacementChangeCallback.js.map +1 -1
- package/dist/cssm/lib/sheet/constants.js +23 -0
- package/dist/cssm/lib/sheet/constants.js.map +1 -0
- package/dist/cssm/lib/sheet/controllers/BottomSheetController.js +252 -0
- package/dist/cssm/lib/sheet/controllers/BottomSheetController.js.map +1 -0
- package/dist/cssm/lib/sheet/controllers/CSSTransitionController.js +50 -0
- package/dist/cssm/lib/sheet/controllers/CSSTransitionController.js.map +1 -0
- package/dist/cssm/lib/sheet/index.js +4 -0
- package/dist/cssm/lib/sheet/index.js.map +1 -0
- package/dist/cssm/lib/sheet/useBottomSheet.js +116 -0
- package/dist/cssm/lib/sheet/useBottomSheet.js.map +1 -0
- package/dist/cssm/lib/spacings/sizes.js +23 -0
- package/dist/cssm/lib/spacings/sizes.js.map +1 -1
- package/dist/cssm/lib/touch/UIPanGestureRecognizer.js +10 -0
- package/dist/cssm/lib/touch/UIPanGestureRecognizer.js.map +1 -1
- package/dist/cssm/lib/touch/index.js.map +1 -1
- package/dist/cssm/styles/common.css +31 -34
- package/dist/cssm/styles/constants.css +5 -0
- package/dist/helpers/range.d.ts +1 -0
- package/dist/helpers/range.d.ts.map +1 -1
- package/dist/helpers/range.js +3 -0
- package/dist/helpers/range.js.map +1 -1
- package/dist/hooks/useObjectMemo.d.ts +3 -0
- package/dist/hooks/useObjectMemo.d.ts.map +1 -1
- package/dist/hooks/useObjectMemo.js +6 -2
- package/dist/hooks/useObjectMemo.js.map +1 -1
- package/dist/hooks/usePrevious.d.ts +3 -0
- package/dist/hooks/usePrevious.d.ts.map +1 -1
- package/dist/hooks/usePrevious.js +9 -2
- package/dist/hooks/usePrevious.js.map +1 -1
- package/dist/hooks/useStableCallback.js +1 -1
- package/dist/hooks/useStableCallback.js.map +1 -1
- package/dist/hooks/useStateWithPrev.d.ts +12 -0
- package/dist/hooks/useStateWithPrev.d.ts.map +1 -0
- package/dist/hooks/useStateWithPrev.js +34 -0
- package/dist/hooks/useStateWithPrev.js.map +1 -0
- package/dist/hooks/useSyncHTMLWithBaseVKUIClasses.d.ts +8 -0
- package/dist/hooks/useSyncHTMLWithBaseVKUIClasses.d.ts.map +1 -0
- package/dist/hooks/useSyncHTMLWithBaseVKUIClasses.js +24 -0
- package/dist/hooks/useSyncHTMLWithBaseVKUIClasses.js.map +1 -0
- package/dist/hooks/useSyncHTMLWithTokens.d.ts +5 -0
- package/dist/hooks/useSyncHTMLWithTokens.d.ts.map +1 -0
- package/dist/hooks/useSyncHTMLWithTokens.js +20 -0
- package/dist/hooks/useSyncHTMLWithTokens.js.map +1 -0
- package/dist/hooks/useVirtualKeyboardState.d.ts +32 -0
- package/dist/hooks/useVirtualKeyboardState.d.ts.map +1 -0
- package/dist/hooks/useVirtualKeyboardState.js +134 -0
- package/dist/hooks/useVirtualKeyboardState.js.map +1 -0
- package/dist/index.d.ts +13 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -2
- package/dist/index.js.map +1 -1
- package/dist/lib/SSR.d.ts.map +1 -1
- package/dist/lib/SSR.js +1 -7
- package/dist/lib/SSR.js.map +1 -1
- package/dist/lib/adaptivity/functions.d.ts +1 -0
- package/dist/lib/adaptivity/functions.d.ts.map +1 -1
- package/dist/lib/adaptivity/functions.js +7 -1
- package/dist/lib/adaptivity/functions.js.map +1 -1
- package/dist/lib/animation/useCSSKeyframesAnimationController.d.ts.map +1 -1
- package/dist/lib/animation/useCSSKeyframesAnimationController.js +7 -5
- package/dist/lib/animation/useCSSKeyframesAnimationController.js.map +1 -1
- package/dist/lib/animation/useCSSTransition.d.ts.map +1 -1
- package/dist/lib/animation/useCSSTransition.js +4 -4
- package/dist/lib/animation/useCSSTransition.js.map +1 -1
- package/dist/lib/dom.d.ts +20 -5
- package/dist/lib/dom.d.ts.map +1 -1
- package/dist/lib/dom.js +65 -11
- package/dist/lib/dom.js.map +1 -1
- package/dist/lib/floating/usePlacementChangeCallback.d.ts.map +1 -1
- package/dist/lib/floating/usePlacementChangeCallback.js +6 -3
- package/dist/lib/floating/usePlacementChangeCallback.js.map +1 -1
- package/dist/lib/sheet/constants.d.ts +28 -0
- package/dist/lib/sheet/constants.d.ts.map +1 -0
- package/dist/lib/sheet/constants.js +23 -0
- package/dist/lib/sheet/constants.js.map +1 -0
- package/dist/lib/sheet/controllers/BottomSheetController.d.ts +51 -0
- package/dist/lib/sheet/controllers/BottomSheetController.d.ts.map +1 -0
- package/dist/lib/sheet/controllers/BottomSheetController.js +259 -0
- package/dist/lib/sheet/controllers/BottomSheetController.js.map +1 -0
- package/dist/lib/sheet/controllers/CSSTransitionController.d.ts +14 -0
- package/dist/lib/sheet/controllers/CSSTransitionController.d.ts.map +1 -0
- package/dist/lib/sheet/controllers/CSSTransitionController.js +51 -0
- package/dist/lib/sheet/controllers/CSSTransitionController.js.map +1 -0
- package/dist/lib/sheet/index.d.ts +3 -0
- package/dist/lib/sheet/index.d.ts.map +1 -0
- package/dist/lib/sheet/index.js +4 -0
- package/dist/lib/sheet/index.js.map +1 -0
- package/dist/lib/sheet/useBottomSheet.d.ts +56 -0
- package/dist/lib/sheet/useBottomSheet.d.ts.map +1 -0
- package/dist/lib/sheet/useBottomSheet.js +116 -0
- package/dist/lib/sheet/useBottomSheet.js.map +1 -0
- package/dist/lib/spacings/sizes.d.ts +3 -2
- package/dist/lib/spacings/sizes.d.ts.map +1 -1
- package/dist/lib/spacings/sizes.js +23 -0
- package/dist/lib/spacings/sizes.js.map +1 -1
- package/dist/lib/touch/UIPanGestureRecognizer.d.ts +8 -9
- package/dist/lib/touch/UIPanGestureRecognizer.d.ts.map +1 -1
- package/dist/lib/touch/UIPanGestureRecognizer.js +10 -0
- package/dist/lib/touch/UIPanGestureRecognizer.js.map +1 -1
- package/dist/lib/touch/index.d.ts +1 -1
- package/dist/lib/touch/index.d.ts.map +1 -1
- package/dist/lib/touch/index.js.map +1 -1
- package/dist/vkui.css +1 -1
- package/dist/vkui.css.map +1 -1
- package/package.json +9 -6
- package/src/components/Accordion/Accordion.tsx +9 -7
- package/src/components/ActionSheet/ActionSheet.tsx +18 -13
- package/src/components/Alert/Alert.tsx +65 -59
- package/src/components/AppRoot/AppRoot.module.css +2 -30
- package/src/components/AppRoot/AppRoot.tsx +90 -122
- package/src/components/AppRoot/AppRootContext.ts +11 -2
- package/src/components/AppRoot/AppRootPortal.tsx +71 -30
- package/src/components/AppRoot/AppRootStyleContainer.module.css +77 -0
- package/src/components/AppRoot/AppRootStyleContainer.tsx +72 -0
- package/src/components/AppRoot/ModalPopoutPortal.tsx +27 -0
- package/src/components/AppRoot/helpers.ts +10 -65
- package/src/components/BaseGallery/BaseGallery.tsx +1 -1
- package/src/components/BaseGallery/CarouselBase/CarouselBase.tsx +1 -0
- package/src/components/CalendarHeader/CalendarHeader.tsx +5 -2
- package/src/components/CalendarTime/CalendarTime.tsx +5 -2
- package/src/components/ConfigProvider/ConfigProvider.tsx +22 -11
- package/src/components/Counter/Counter.module.css +80 -12
- package/src/components/Counter/Counter.tsx +64 -7
- package/src/components/CustomSelect/CustomSelect.tsx +7 -1
- package/src/components/FormItem/FormItem.tsx +1 -2
- package/src/components/Gallery/Gallery.tsx +1 -1
- package/src/components/Group/GroupContainer.tsx +2 -2
- package/src/components/Link/Link.module.css +11 -3
- package/src/components/Link/Link.tsx +28 -2
- package/src/components/ModalCard/ModalCard.module.css +60 -44
- package/src/components/ModalCard/ModalCard.tsx +41 -74
- package/src/components/ModalCard/ModalCardInternal.tsx +175 -0
- package/src/components/ModalCard/types.ts +51 -0
- package/src/components/ModalCardBase/ModalCardBase.module.css +0 -1
- package/src/components/ModalCardBase/ModalCardBase.tsx +1 -8
- package/src/components/ModalOutlet/ModalOutlet.module.css +16 -0
- package/src/components/ModalOutlet/ModalOutlet.tsx +31 -0
- package/src/components/ModalOverlay/ModalOverlay.module.css +65 -0
- package/src/components/ModalOverlay/ModalOverlay.tsx +66 -0
- package/src/components/ModalPage/ModalPage.module.css +124 -123
- package/src/components/ModalPage/ModalPage.tsx +42 -164
- package/src/components/ModalPage/ModalPageInternal.tsx +229 -0
- package/src/components/ModalPage/types.ts +112 -0
- package/src/components/ModalPageContent/ModalPageContent.module.css +4 -0
- package/src/components/ModalPageContent/ModalPageContent.tsx +25 -0
- package/src/components/ModalPageFooter/ModalPageFooter.module.css +33 -0
- package/src/components/ModalPageFooter/ModalPageFooter.tsx +31 -0
- package/src/components/ModalPageHeader/ModalPageHeader.module.css +8 -2
- package/src/components/ModalPageHeader/ModalPageHeader.tsx +5 -5
- package/src/components/ModalRoot/ModalRoot.tsx +62 -716
- package/src/components/ModalRoot/ModalRootContext.tsx +13 -50
- package/src/components/ModalRoot/VisuallyHiddenModalOverlay/VisuallyHiddenModalOverlay.module.css +6 -0
- package/src/components/ModalRoot/VisuallyHiddenModalOverlay/VisuallyHiddenModalOverlay.tsx +37 -0
- package/src/components/ModalRoot/types.ts +60 -20
- package/src/components/ModalRoot/useModalManager.tsx +74 -228
- package/src/components/ModalRoot/useModalRootContext.ts +21 -0
- package/src/components/ModalRoot/withModalRootContext.tsx +8 -3
- package/src/components/NativeSelect/NativeSelect.tsx +12 -9
- package/src/components/NavTransitionContext/NavTransitionContext.tsx +7 -4
- package/src/components/PanelHeader/PanelHeader.tsx +2 -2
- package/src/components/PanelHeaderBack/PanelHeaderBack.tsx +14 -12
- package/src/components/PanelHeaderButton/PanelHeaderButton.tsx +4 -1
- package/src/components/PanelHeaderClose/PanelHeaderClose.tsx +10 -13
- package/src/components/PanelHeaderEdit/PanelHeaderEdit.tsx +10 -12
- package/src/components/PanelHeaderSubmit/PanelHeaderSubmit.tsx +11 -10
- package/src/components/PopoutWrapper/PopoutWrapper.tsx +9 -0
- package/src/components/PullToRefresh/PullToRefresh.tsx +11 -7
- package/src/components/ScreenSpinner/ScreenSpinner.tsx +10 -6
- package/src/components/ScreenSpinner/types.tsx +2 -0
- package/src/components/Search/Search.module.css +2 -2
- package/src/components/Separator/Separator.tsx +32 -20
- package/src/components/Skeleton/Skeleton.tsx +4 -4
- package/src/components/Spacing/Spacing.tsx +17 -10
- package/src/components/SplitCol/SplitCol.tsx +7 -5
- package/src/components/SplitLayout/SplitLayout.tsx +20 -10
- package/src/components/Tappable/Tappable.tsx +1 -0
- package/src/components/View/useLayoutEffectCall.tsx +7 -29
- package/src/context/ModalContext.tsx +18 -0
- package/src/helpers/range.ts +4 -0
- package/src/hooks/useObjectMemo.ts +6 -0
- package/src/hooks/usePrevious.ts +9 -0
- package/src/hooks/useStableCallback.ts +1 -1
- package/src/hooks/useStateWithPrev.ts +43 -0
- package/src/hooks/useSyncHTMLWithBaseVKUIClasses.ts +39 -0
- package/src/hooks/useSyncHTMLWithTokens.ts +27 -0
- package/src/hooks/useVirtualKeyboardState.ts +152 -0
- package/src/index.ts +22 -5
- package/src/lib/SSR.tsx +1 -7
- package/src/lib/adaptivity/functions.ts +8 -1
- package/src/lib/animation/useCSSKeyframesAnimationController.ts +10 -5
- package/src/lib/animation/useCSSTransition.ts +4 -10
- package/src/lib/dom.tsx +85 -13
- package/src/lib/floating/usePlacementChangeCallback.ts +9 -3
- package/src/lib/sheet/constants.ts +32 -0
- package/src/lib/sheet/controllers/BottomSheetController.ts +382 -0
- package/src/lib/sheet/controllers/CSSTransitionController.ts +51 -0
- package/src/lib/sheet/index.ts +10 -0
- package/src/lib/sheet/useBottomSheet.ts +175 -0
- package/src/lib/spacings/sizes.ts +17 -2
- package/src/lib/touch/UIPanGestureRecognizer.ts +12 -9
- package/src/lib/touch/index.ts +4 -1
- package/src/styles/common.css +31 -41
- package/src/styles/constants.css +5 -0
- package/dist/components/ModalPage/ModalPageContext.d.ts +0 -6
- package/dist/components/ModalPage/ModalPageContext.d.ts.map +0 -1
- package/dist/components/ModalPage/ModalPageContext.js +0 -4
- package/dist/components/ModalPage/ModalPageContext.js.map +0 -1
- package/dist/components/ModalRoot/ModalRootAdaptive.d.ts +0 -7
- package/dist/components/ModalRoot/ModalRootAdaptive.d.ts.map +0 -1
- package/dist/components/ModalRoot/ModalRootAdaptive.js +0 -18
- package/dist/components/ModalRoot/ModalRootAdaptive.js.map +0 -1
- package/dist/components/ModalRoot/ModalRootDesktop.d.ts +0 -4
- package/dist/components/ModalRoot/ModalRootDesktop.d.ts.map +0 -1
- package/dist/components/ModalRoot/ModalRootDesktop.js +0 -186
- package/dist/components/ModalRoot/ModalRootDesktop.js.map +0 -1
- package/dist/components/ModalRoot/constants.d.ts +0 -2
- package/dist/components/ModalRoot/constants.d.ts.map +0 -1
- package/dist/components/ModalRoot/constants.js +0 -3
- package/dist/components/ModalRoot/constants.js.map +0 -1
- package/dist/components/PopoutRoot/PopoutRoot.d.ts +0 -19
- package/dist/components/PopoutRoot/PopoutRoot.d.ts.map +0 -1
- package/dist/components/PopoutRoot/PopoutRoot.js +0 -55
- package/dist/components/PopoutRoot/PopoutRoot.js.map +0 -1
- package/dist/cssm/components/ModalPage/ModalPageContext.js +0 -4
- package/dist/cssm/components/ModalPage/ModalPageContext.js.map +0 -1
- package/dist/cssm/components/ModalRoot/ModalRoot.module.css +0 -61
- package/dist/cssm/components/ModalRoot/ModalRootAdaptive.js +0 -19
- package/dist/cssm/components/ModalRoot/ModalRootAdaptive.js.map +0 -1
- package/dist/cssm/components/ModalRoot/ModalRootDesktop.js +0 -179
- package/dist/cssm/components/ModalRoot/ModalRootDesktop.js.map +0 -1
- package/dist/cssm/components/ModalRoot/constants.js +0 -3
- package/dist/cssm/components/ModalRoot/constants.js.map +0 -1
- package/dist/cssm/components/PopoutRoot/PopoutRoot.js +0 -41
- package/dist/cssm/components/PopoutRoot/PopoutRoot.js.map +0 -1
- package/dist/cssm/components/PopoutRoot/PopoutRoot.module.css +0 -28
- package/dist/cssm/hooks/useKeyboard.js +0 -40
- package/dist/cssm/hooks/useKeyboard.js.map +0 -1
- package/dist/hooks/useKeyboard.d.ts +0 -11
- package/dist/hooks/useKeyboard.d.ts.map +0 -1
- package/dist/hooks/useKeyboard.js +0 -42
- package/dist/hooks/useKeyboard.js.map +0 -1
- package/src/components/ModalPage/ModalPageContext.tsx +0 -8
- package/src/components/ModalRoot/ModalRoot.module.css +0 -59
- package/src/components/ModalRoot/ModalRootAdaptive.tsx +0 -21
- package/src/components/ModalRoot/ModalRootDesktop.tsx +0 -243
- package/src/components/ModalRoot/constants.ts +0 -1
- package/src/components/ModalRoot/useModalRootContext.tsx +0 -5
- package/src/components/PopoutRoot/PopoutRoot.module.css +0 -28
- package/src/components/PopoutRoot/PopoutRoot.tsx +0 -51
- package/src/hooks/useKeyboard.ts +0 -56
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
type CSSProperties,
|
|
5
|
+
type Dispatch,
|
|
6
|
+
type SetStateAction,
|
|
7
|
+
type UIEvent,
|
|
8
|
+
type UIEventHandler,
|
|
9
|
+
useMemo,
|
|
10
|
+
useState,
|
|
11
|
+
} from 'react';
|
|
12
|
+
import { noop } from '@vkontakte/vkjs';
|
|
13
|
+
import { useStableCallback } from '../../hooks/useStableCallback';
|
|
14
|
+
import { useIsomorphicLayoutEffect } from '../useIsomorphicLayoutEffect';
|
|
15
|
+
import { BottomSheetController, type InitialSnapPoint } from './controllers/BottomSheetController';
|
|
16
|
+
import { CSSTransitionController } from './controllers/CSSTransitionController';
|
|
17
|
+
|
|
18
|
+
export type UseBottomSheetOptions = {
|
|
19
|
+
sheetCSSProperty: string;
|
|
20
|
+
backdropCSSProperty: string;
|
|
21
|
+
initialSnapPoint?: InitialSnapPoint;
|
|
22
|
+
blocked?: boolean;
|
|
23
|
+
onDismiss?: VoidFunction;
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
export type UseBottomSheetHandlers = {
|
|
27
|
+
onTouchStart: UIEventHandler<HTMLElement>;
|
|
28
|
+
onTouchMove: UIEventHandler<HTMLElement>;
|
|
29
|
+
onTouchEnd: UIEventHandler<HTMLElement>;
|
|
30
|
+
onTouchCancel: UIEventHandler<HTMLElement>;
|
|
31
|
+
onMouseDown: UIEventHandler<HTMLElement>;
|
|
32
|
+
onMouseMove: UIEventHandler<HTMLElement>;
|
|
33
|
+
onMouseUp: UIEventHandler<HTMLElement>;
|
|
34
|
+
onMouseLeave: UIEventHandler<HTMLElement>;
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
export type UseBottomSheetResult = [
|
|
38
|
+
{
|
|
39
|
+
initialStyle?: CSSProperties;
|
|
40
|
+
setSheetEl: Dispatch<SetStateAction<HTMLElement | null>>;
|
|
41
|
+
setSheetScrollEl: Dispatch<SetStateAction<HTMLElement | null>>;
|
|
42
|
+
setBackdropEl: Dispatch<SetStateAction<HTMLElement | null>>;
|
|
43
|
+
},
|
|
44
|
+
UseBottomSheetHandlers | undefined,
|
|
45
|
+
];
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* # Checklist
|
|
49
|
+
*
|
|
50
|
+
* ## Возможности
|
|
51
|
+
*
|
|
52
|
+
* - [x] есть возможность открывать до определенного размера (см. `initialSnapPoint`)
|
|
53
|
+
* - [x] есть возможность закрыть при сильном смахивании вниз
|
|
54
|
+
* - [x] есть возможность отключить взаимодействие на определённых элементах используя data-атрибут
|
|
55
|
+
* - [x] есть возможность отключить взаимодействие на определённых элементах используя stopPropagation()
|
|
56
|
+
*
|
|
57
|
+
* ## Анимации
|
|
58
|
+
*
|
|
59
|
+
* - [x] оверлей становится светлее в зависимости от процента сворачивания
|
|
60
|
+
* - [x] при `initialSnapPoint !== 'auto'` процент высчитывается относительно переданного `initialSnapPoint`
|
|
61
|
+
* - [x] при перетаскивании за пределы есть анимация натяжения
|
|
62
|
+
* > note: в `ModalPage` этого эффекта нет при высоте 100% из-за `max-block-size: 100%`
|
|
63
|
+
*
|
|
64
|
+
* ## Пограничные кейсы
|
|
65
|
+
*
|
|
66
|
+
* - [x] ⚠️ не блокирует взаимодействие с _горизонтальным_ скроллом
|
|
67
|
+
* - [x] ⚠️ не блокирует взаимодействие с _вертикальным_ скроллом
|
|
68
|
+
* - [x] ⚠️ не блокирует взаимодействие с полями ввода
|
|
69
|
+
* - [x] ⚠️ не блокирует взаимодействие с элементами вне корневого элемента
|
|
70
|
+
*
|
|
71
|
+
* @private
|
|
72
|
+
*/
|
|
73
|
+
export const useBottomSheet = (
|
|
74
|
+
enabled: boolean,
|
|
75
|
+
{
|
|
76
|
+
blocked,
|
|
77
|
+
initialSnapPoint,
|
|
78
|
+
sheetCSSProperty,
|
|
79
|
+
backdropCSSProperty,
|
|
80
|
+
onDismiss: onDismissProp,
|
|
81
|
+
}: UseBottomSheetOptions,
|
|
82
|
+
): UseBottomSheetResult => {
|
|
83
|
+
const [sheetScrollEl, setSheetScrollEl] = useState<HTMLElement | null>(null);
|
|
84
|
+
const [sheetEl, setSheetEl] = useState<HTMLElement | null>(null);
|
|
85
|
+
const [backdropEl, setBackdropEl] = useState<HTMLElement | null>(null);
|
|
86
|
+
|
|
87
|
+
const initialStyle = useMemo<CSSProperties | undefined>(() => {
|
|
88
|
+
if (!enabled) {
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
const { unit, currentSnapPoint } =
|
|
93
|
+
BottomSheetController.parseInitialSnapPoint(initialSnapPoint);
|
|
94
|
+
|
|
95
|
+
return unit === '%' ? { [sheetCSSProperty]: `${currentSnapPoint}${unit}` } : undefined;
|
|
96
|
+
}, [enabled, initialSnapPoint, sheetCSSProperty]);
|
|
97
|
+
|
|
98
|
+
const onDismiss = useStableCallback(onDismissProp || noop);
|
|
99
|
+
const bsController = useMemo<BottomSheetController | null>(() => {
|
|
100
|
+
if (!enabled || sheetEl === null) {
|
|
101
|
+
return null;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
return new BottomSheetController(sheetEl, {
|
|
105
|
+
sheetScrollEl: sheetScrollEl || null,
|
|
106
|
+
sheetTransitionController: new CSSTransitionController<string>(sheetEl, sheetCSSProperty),
|
|
107
|
+
backdropTransitionController: backdropEl
|
|
108
|
+
? new CSSTransitionController(backdropEl, backdropCSSProperty)
|
|
109
|
+
: null,
|
|
110
|
+
onDismiss,
|
|
111
|
+
});
|
|
112
|
+
}, [
|
|
113
|
+
enabled,
|
|
114
|
+
sheetEl,
|
|
115
|
+
sheetCSSProperty,
|
|
116
|
+
sheetScrollEl,
|
|
117
|
+
backdropEl,
|
|
118
|
+
backdropCSSProperty,
|
|
119
|
+
onDismiss,
|
|
120
|
+
]);
|
|
121
|
+
|
|
122
|
+
const onPanStart = function onPanStart(event: UIEvent<HTMLElement>) {
|
|
123
|
+
if (!blocked) {
|
|
124
|
+
bsController!.panStart(event.nativeEvent);
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
|
|
128
|
+
const onPanMove = function onPanMove(event: UIEvent<HTMLElement>) {
|
|
129
|
+
bsController!.panMove(event.nativeEvent);
|
|
130
|
+
};
|
|
131
|
+
|
|
132
|
+
const onPanEnd = function onPanEnd() {
|
|
133
|
+
bsController!.panEnd();
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
useIsomorphicLayoutEffect(
|
|
137
|
+
function init() {
|
|
138
|
+
if (bsController) {
|
|
139
|
+
bsController.init(initialSnapPoint);
|
|
140
|
+
}
|
|
141
|
+
},
|
|
142
|
+
[initialSnapPoint, bsController],
|
|
143
|
+
);
|
|
144
|
+
|
|
145
|
+
useIsomorphicLayoutEffect(
|
|
146
|
+
() =>
|
|
147
|
+
function unmount() {
|
|
148
|
+
if (bsController) {
|
|
149
|
+
bsController.destroy();
|
|
150
|
+
}
|
|
151
|
+
},
|
|
152
|
+
[bsController],
|
|
153
|
+
);
|
|
154
|
+
|
|
155
|
+
return [
|
|
156
|
+
{
|
|
157
|
+
initialStyle,
|
|
158
|
+
setSheetEl,
|
|
159
|
+
setSheetScrollEl,
|
|
160
|
+
setBackdropEl,
|
|
161
|
+
},
|
|
162
|
+
bsController !== null
|
|
163
|
+
? {
|
|
164
|
+
onTouchStart: onPanStart,
|
|
165
|
+
onTouchMove: onPanMove,
|
|
166
|
+
onTouchEnd: onPanEnd,
|
|
167
|
+
onTouchCancel: onPanEnd,
|
|
168
|
+
onMouseDown: onPanStart,
|
|
169
|
+
onMouseMove: onPanMove,
|
|
170
|
+
onMouseUp: onPanEnd,
|
|
171
|
+
onMouseLeave: onPanEnd,
|
|
172
|
+
}
|
|
173
|
+
: undefined,
|
|
174
|
+
];
|
|
175
|
+
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { LiteralUnion } from '../../types';
|
|
1
|
+
import type { CSSCustomProperties, LiteralUnion } from '../../types';
|
|
2
2
|
import styles from '../../styles/spacings.module.css';
|
|
3
3
|
|
|
4
4
|
export type SpacingSize = '2xs' | 'xs' | 's' | 'm' | 'l' | 'xl' | '2xl' | '3xl' | '4xl';
|
|
@@ -15,4 +15,19 @@ export const spacingSizeClassNames: Record<SpacingSize, string> = {
|
|
|
15
15
|
'4xl': styles['-spacing--4xl'],
|
|
16
16
|
};
|
|
17
17
|
|
|
18
|
-
export type SpacingSizeProp = LiteralUnion<SpacingSize
|
|
18
|
+
export type SpacingSizeProp = LiteralUnion<SpacingSize | `--${string}`, number>;
|
|
19
|
+
|
|
20
|
+
export function resolveSpacingSize(
|
|
21
|
+
cssVariable: string,
|
|
22
|
+
size?: SpacingSizeProp,
|
|
23
|
+
): [string | undefined, CSSCustomProperties | undefined] {
|
|
24
|
+
if (typeof size === 'string') {
|
|
25
|
+
if (size.startsWith('--')) {
|
|
26
|
+
return [undefined, { [cssVariable]: `var(${size})` }];
|
|
27
|
+
} else {
|
|
28
|
+
return [spacingSizeClassNames[size as SpacingSize], undefined];
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
return [undefined, typeof size === 'number' ? { [cssVariable]: `${size}px` } : undefined];
|
|
33
|
+
}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { getFirstTouchEventData } from '../dom';
|
|
2
2
|
|
|
3
|
-
export type
|
|
3
|
+
export type Direction = { axis: 'x' | 'y'; direction: -1 | 1 | null };
|
|
4
|
+
|
|
5
|
+
export type Coords = { x: number; y: number };
|
|
4
6
|
|
|
5
7
|
const DEFAULT_INITIAL_TIME = 0;
|
|
6
8
|
const MILLISECONDS = 1000;
|
|
@@ -35,10 +37,7 @@ export class UIPanGestureRecognizer {
|
|
|
35
37
|
this.y2 = clientY;
|
|
36
38
|
}
|
|
37
39
|
|
|
38
|
-
delta(): {
|
|
39
|
-
x: number;
|
|
40
|
-
y: number;
|
|
41
|
-
} {
|
|
40
|
+
delta(): Coords {
|
|
42
41
|
return {
|
|
43
42
|
x: this.x2 - this.x1,
|
|
44
43
|
y: this.y2 - this.y1,
|
|
@@ -50,10 +49,7 @@ export class UIPanGestureRecognizer {
|
|
|
50
49
|
return Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));
|
|
51
50
|
}
|
|
52
51
|
|
|
53
|
-
velocity(): {
|
|
54
|
-
x: number;
|
|
55
|
-
y: number;
|
|
56
|
-
} {
|
|
52
|
+
velocity(): Coords {
|
|
57
53
|
const deltaTime = (Date.now() - this.initialTime) / MILLISECONDS;
|
|
58
54
|
|
|
59
55
|
if (deltaTime <= 0) {
|
|
@@ -72,6 +68,13 @@ export class UIPanGestureRecognizer {
|
|
|
72
68
|
return degrees < 0 ? 360 + degrees : degrees;
|
|
73
69
|
}
|
|
74
70
|
|
|
71
|
+
direction(): Direction {
|
|
72
|
+
const { x, y } = this.delta();
|
|
73
|
+
return Math.abs(x) > Math.abs(y)
|
|
74
|
+
? { axis: 'x', direction: x > 0 ? 1 : x < 0 ? -1 : null }
|
|
75
|
+
: { axis: 'y', direction: y > 0 ? 1 : y < 0 ? -1 : null };
|
|
76
|
+
}
|
|
77
|
+
|
|
75
78
|
reset(): void {
|
|
76
79
|
this.initialTime = DEFAULT_INITIAL_TIME;
|
|
77
80
|
this.x1 = this.y1 = 0;
|
package/src/lib/touch/index.ts
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
export type * from './functions';
|
|
2
2
|
export { getSupportedEvents, coordX, coordY, touchEnabled, rubber } from './functions';
|
|
3
3
|
|
|
4
|
-
export type {
|
|
4
|
+
export type {
|
|
5
|
+
Direction as UIPanGestureRecognizerDirection,
|
|
6
|
+
Coords as UIPanGestureRecognizerCoords,
|
|
7
|
+
} from './UIPanGestureRecognizer';
|
|
5
8
|
export { UIPanGestureRecognizer } from './UIPanGestureRecognizer';
|
package/src/styles/common.css
CHANGED
|
@@ -1,3 +1,23 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* .vkui класс в режиме full необходим на элементе html
|
|
3
|
+
* чтобы правильно устанавливалось значение color-scheme
|
|
4
|
+
* окрашивающее фон html и скроллбар в цвета текущей цветовой
|
|
5
|
+
* схемы.
|
|
6
|
+
* Так как color-scheme зависит от vkui токена, то в
|
|
7
|
+
* full режиме класс токенов vkui также должен
|
|
8
|
+
* быть установлен на html.
|
|
9
|
+
*
|
|
10
|
+
* В SSR есть проблема - чтобы на сервере правильно установить
|
|
11
|
+
* нужный класс для токенов надо знать предпочитаемую цветовую
|
|
12
|
+
* схему пользователя и передать её через свойство appearance.
|
|
13
|
+
* Если ошибиться со схемой на сервере, то пользователь
|
|
14
|
+
* может получить не ту схему, либо может увидеть как интерфейс моргает
|
|
15
|
+
* из-за переключения со светлой темы на тёмную.
|
|
16
|
+
* Чтобы окончательно избавиться от этой проблемы нужно
|
|
17
|
+
* в vkui-tokens создавать темы в которые старазу же зашиты обе цветовые схемы.
|
|
18
|
+
* А переключение между темами задавалось бы через медиа выражения
|
|
19
|
+
* с помощью prefers-color-scheme.
|
|
20
|
+
* */
|
|
1
21
|
/* stylelint-disable-next-line selector-max-type */
|
|
2
22
|
.vkui > body,
|
|
3
23
|
.vkui,
|
|
@@ -5,53 +25,23 @@
|
|
|
5
25
|
margin: 0;
|
|
6
26
|
padding: 0;
|
|
7
27
|
block-size: 100%;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
.vkui__root--embedded {
|
|
11
|
-
overflow-x: hidden;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
.vkui,
|
|
15
|
-
.vkui__root--embedded {
|
|
16
28
|
color-scheme: var(--vkui--colors_scheme);
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
-webkit-text-size-adjust: 100%;
|
|
24
|
-
font-family: var(--vkui--font_family_base);
|
|
25
|
-
color: var(--vkui--color_text_primary);
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
.vkui--sizeX-regular {
|
|
29
|
-
background: var(--vkui--color_background);
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
@media (--sizeX-regular) {
|
|
33
|
-
.vkui--sizeX-none {
|
|
34
|
-
background: var(--vkui--color_background);
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
.vkui--layout-card {
|
|
29
|
+
/*
|
|
30
|
+
* TODO [>=8]: Убрать background с html элемента, но для этого надо
|
|
31
|
+
* чтобы height у всех родителей Panel вплоть до html имели
|
|
32
|
+
* min-height: 100% вместо height: 100% иначе фон html выглядывает в
|
|
33
|
+
* многоколоночном режиме если чуть ниже проскролить контент.
|
|
34
|
+
*/
|
|
39
35
|
background: var(--vkui--color_background);
|
|
40
36
|
}
|
|
41
37
|
|
|
42
|
-
.
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
--vkui_internal--panel_header_height: var(--vkui--size_panel_header_height--compact);
|
|
38
|
+
.vkui__root {
|
|
39
|
+
/* чтобы можно было ограничить размеры приложения
|
|
40
|
+
* извне с помощью max-height, max-width */
|
|
41
|
+
max-inline-size: inherit;
|
|
42
|
+
max-block-size: inherit;
|
|
48
43
|
}
|
|
49
44
|
|
|
50
|
-
@media (--sizeY-compact) {
|
|
51
|
-
.vkui--sizeY-none {
|
|
52
|
-
--vkui_internal--panel_header_height: var(--vkui--size_panel_header_height--compact);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
45
|
/* отключаем нативный pull-to-refresh при взаимодействии с компонентом
|
|
56
46
|
* PullToRefresh или при открывании модалки */
|
|
57
47
|
.vkui--disable-overscroll-behavior {
|
package/src/styles/constants.css
CHANGED
|
@@ -43,6 +43,8 @@
|
|
|
43
43
|
|
|
44
44
|
/* animations */
|
|
45
45
|
--vkui_internal--duration: 0.7s;
|
|
46
|
+
--vkui_internal--slide-easing: cubic-bezier(0.16, 1, 0.3, 1);
|
|
47
|
+
--vkui_internal--spring-easing: cubic-bezier(0.22, 1, 0.6, 1.03);
|
|
46
48
|
|
|
47
49
|
/* z_index */
|
|
48
50
|
--vkui_internal--z_index_cell_dragging: 100;
|
|
@@ -85,6 +87,9 @@
|
|
|
85
87
|
|
|
86
88
|
/* Spacing size */
|
|
87
89
|
--vkui_internal--spacing_size: 0px;
|
|
90
|
+
|
|
91
|
+
/** ModalOverlay props */
|
|
92
|
+
--vkui_internal--modal-overlay--opacity: 1;
|
|
88
93
|
}
|
|
89
94
|
|
|
90
95
|
@supports (padding-top: constant(safe-area-inset-top)) {
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ModalPageContext.d.ts","sourceRoot":"","sources":["../../../src/components/ModalPage/ModalPageContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,MAAM,WAAW,yBAAyB;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,OAAO,CAAC,yBAAyB,CAClB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/ModalPage/ModalPageContext.tsx"],"sourcesContent":["import * as React from 'react';\n\nexport interface ModalPageContextInterface {\n labelId?: string;\n}\n\nexport const ModalPageContext: React.Context<ModalPageContextInterface> =\n React.createContext<ModalPageContextInterface>({});\n"],"names":["React","ModalPageContext","createContext"],"mappings":"AAAA,YAAYA,WAAW,QAAQ;AAM/B,OAAO,MAAMC,iCACXD,MAAME,aAAa,CAA4B,CAAC,GAAG"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
2
|
-
import type { ModalRootProps } from './types';
|
|
3
|
-
/**
|
|
4
|
-
* @see https://vkcom.github.io/VKUI/#/ModalRoot
|
|
5
|
-
*/
|
|
6
|
-
export declare const ModalRoot: (props: ModalRootProps) => React.ReactNode;
|
|
7
|
-
//# sourceMappingURL=ModalRootAdaptive.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ModalRootAdaptive.d.ts","sourceRoot":"","sources":["../../../src/components/ModalRoot/ModalRootAdaptive.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C;;GAEG;AACH,eAAO,MAAM,SAAS,UAAW,cAAc,KAAG,KAAK,CAAC,SAQvD,CAAC"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
import { _ as _object_spread } from "@swc/helpers/_/_object_spread";
|
|
3
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
4
|
-
import * as React from "react";
|
|
5
|
-
import { useAdaptivityWithJSMediaQueries } from "../../hooks/useAdaptivityWithJSMediaQueries.js";
|
|
6
|
-
import { useScrollLock } from "../AppRoot/ScrollContext.js";
|
|
7
|
-
import { ModalRootTouch } from "./ModalRoot.js";
|
|
8
|
-
import { ModalRootDesktop } from "./ModalRootDesktop.js";
|
|
9
|
-
/**
|
|
10
|
-
* @see https://vkcom.github.io/VKUI/#/ModalRoot
|
|
11
|
-
*/ export const ModalRoot = (props)=>{
|
|
12
|
-
const { isDesktop } = useAdaptivityWithJSMediaQueries();
|
|
13
|
-
useScrollLock(!!props.activeModal);
|
|
14
|
-
const RootComponent = isDesktop ? ModalRootDesktop : ModalRootTouch;
|
|
15
|
-
return /*#__PURE__*/ _jsx(RootComponent, _object_spread({}, props));
|
|
16
|
-
};
|
|
17
|
-
|
|
18
|
-
//# sourceMappingURL=ModalRootAdaptive.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/ModalRoot/ModalRootAdaptive.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { useAdaptivityWithJSMediaQueries } from '../../hooks/useAdaptivityWithJSMediaQueries';\nimport { useScrollLock } from '../AppRoot/ScrollContext';\nimport { ModalRootTouch } from './ModalRoot';\nimport { ModalRootDesktop } from './ModalRootDesktop';\nimport type { ModalRootProps } from './types';\n\n/**\n * @see https://vkcom.github.io/VKUI/#/ModalRoot\n */\nexport const ModalRoot = (props: ModalRootProps): React.ReactNode => {\n const { isDesktop } = useAdaptivityWithJSMediaQueries();\n\n useScrollLock(!!props.activeModal);\n\n const RootComponent = isDesktop ? ModalRootDesktop : ModalRootTouch;\n\n return <RootComponent {...props} />;\n};\n"],"names":["React","useAdaptivityWithJSMediaQueries","useScrollLock","ModalRootTouch","ModalRootDesktop","ModalRoot","props","isDesktop","activeModal","RootComponent"],"mappings":"AAAA;;;AAEA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,+BAA+B,QAAQ,iDAA8C;AAC9F,SAASC,aAAa,QAAQ,8BAA2B;AACzD,SAASC,cAAc,QAAQ,iBAAc;AAC7C,SAASC,gBAAgB,QAAQ,wBAAqB;AAGtD;;CAEC,GACD,OAAO,MAAMC,YAAY,CAACC;IACxB,MAAM,EAAEC,SAAS,EAAE,GAAGN;IAEtBC,cAAc,CAAC,CAACI,MAAME,WAAW;IAEjC,MAAMC,gBAAgBF,YAAYH,mBAAmBD;IAErD,qBAAO,KAACM,kCAAkBH;AAC5B,EAAE"}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
2
|
-
import type { ModalRootWithDOMProps } from './types';
|
|
3
|
-
export declare const ModalRootDesktop: ({ activeModal: activeModalProp, children, noFocusToDialog, onOpen, onOpened, onClose, onClosed, modalOverlayTestId, }: ModalRootWithDOMProps) => React.ReactNode;
|
|
4
|
-
//# sourceMappingURL=ModalRootDesktop.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ModalRootDesktop.d.ts","sourceRoot":"","sources":["../../../src/components/ModalRoot/ModalRootDesktop.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAY/B,OAAO,KAAK,EAAE,qBAAqB,EAAoB,MAAM,SAAS,CAAC;AAMvE,eAAO,MAAM,gBAAgB,0HAS1B,qBAAqB,KAAG,KAAK,CAAC,SAqNhC,CAAC"}
|
|
@@ -1,186 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
import { _ as _object_without_properties } from "@swc/helpers/_/_object_without_properties";
|
|
3
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
4
|
-
import * as React from "react";
|
|
5
|
-
import { classNames, noop } from "@vkontakte/vkjs";
|
|
6
|
-
import { clamp } from "../../helpers/math.js";
|
|
7
|
-
import { useObjectMemo } from "../../hooks/useObjectMemo.js";
|
|
8
|
-
import { usePrevious } from "../../hooks/usePrevious.js";
|
|
9
|
-
import { useWaitTransitionFinish } from "../../hooks/useWaitTransitionFinish.js";
|
|
10
|
-
import { useDOM } from "../../lib/dom.js";
|
|
11
|
-
import { getNavId } from "../../lib/getNavId.js";
|
|
12
|
-
import { warnOnce } from "../../lib/warnOnce.js";
|
|
13
|
-
import { useConfigProvider } from "../ConfigProvider/ConfigProviderContext.js";
|
|
14
|
-
import { FocusTrap } from "../FocusTrap/FocusTrap.js";
|
|
15
|
-
import { ModalRootContext } from "./ModalRootContext.js";
|
|
16
|
-
import { useModalManager } from "./useModalManager.js";
|
|
17
|
-
const warn = warnOnce('ModalRoot');
|
|
18
|
-
export const ModalRootDesktop = ({ activeModal: activeModalProp, children, noFocusToDialog = false, onOpen, onOpened, onClose, onClosed, modalOverlayTestId })=>{
|
|
19
|
-
const maskElementRef = React.useRef(null);
|
|
20
|
-
const maskAnimationFrame = React.useRef(undefined);
|
|
21
|
-
const restoreFocusTo = React.useRef(undefined);
|
|
22
|
-
const { document } = useDOM();
|
|
23
|
-
const { hasCustomPanelHeaderAfter, platform } = useConfigProvider();
|
|
24
|
-
const { activeModal, exitingModal, onExit, getModalState, enteringModal, onEnter, onEntered: onEnteredProp, onExited, history, delayEnter } = useModalManager(activeModalProp, children, onOpen, onOpened, onClose, onClosed, noop);
|
|
25
|
-
const waitTransitionFinish = useWaitTransitionFinish();
|
|
26
|
-
const prevProps = usePrevious({
|
|
27
|
-
exitingModal,
|
|
28
|
-
enteringModal,
|
|
29
|
-
activeModal
|
|
30
|
-
});
|
|
31
|
-
const modalRootContext = useObjectMemo({
|
|
32
|
-
updateModalHeight: ()=>undefined,
|
|
33
|
-
registerModal: (_param)=>{
|
|
34
|
-
var { id } = _param, data = _object_without_properties(_param, [
|
|
35
|
-
"id"
|
|
36
|
-
]);
|
|
37
|
-
var _getModalState;
|
|
38
|
-
return Object.assign((_getModalState = getModalState(id)) !== null && _getModalState !== void 0 ? _getModalState : {}, data);
|
|
39
|
-
},
|
|
40
|
-
onClose: onExit,
|
|
41
|
-
isInsideModal: true
|
|
42
|
-
});
|
|
43
|
-
const timeout = platform === 'ios' ? 400 : 320;
|
|
44
|
-
const modals = React.Children.toArray(children);
|
|
45
|
-
/* Анимирует сдвиг модального окна */ const animateModalOpacity = (modalState, display)=>{
|
|
46
|
-
if (modalState === null || modalState === void 0 ? void 0 : modalState.innerElement) {
|
|
47
|
-
modalState.innerElement.style.transition = '';
|
|
48
|
-
modalState.innerElement.style.transitionDelay = display && delayEnter ? `${timeout}ms` : '';
|
|
49
|
-
modalState.innerElement.style.opacity = display ? '1' : '0';
|
|
50
|
-
}
|
|
51
|
-
};
|
|
52
|
-
/* Устанавливает прозрачность для полупрозрачной подложки */ const setMaskOpacity = (modalState, forceOpacity = null)=>{
|
|
53
|
-
if (forceOpacity === null && (history === null || history === void 0 ? void 0 : history[0]) !== modalState.id) {
|
|
54
|
-
return;
|
|
55
|
-
}
|
|
56
|
-
if (maskAnimationFrame.current) {
|
|
57
|
-
cancelAnimationFrame(maskAnimationFrame.current);
|
|
58
|
-
}
|
|
59
|
-
maskAnimationFrame.current = requestAnimationFrame(()=>{
|
|
60
|
-
if (maskElementRef.current) {
|
|
61
|
-
const { translateY = 0, translateYCurrent = 0 } = modalState;
|
|
62
|
-
const opacity = forceOpacity === null ? 1 - (translateYCurrent - translateY) / (100 - translateY) || 0 : forceOpacity;
|
|
63
|
-
maskElementRef.current.style.opacity = clamp(opacity, 0, 100).toString();
|
|
64
|
-
}
|
|
65
|
-
});
|
|
66
|
-
};
|
|
67
|
-
const onEntered = ({ id, modalElement })=>{
|
|
68
|
-
if (!noFocusToDialog && modalElement && !modalElement.contains(document.activeElement)) {
|
|
69
|
-
modalElement.focus();
|
|
70
|
-
}
|
|
71
|
-
onEnteredProp(id);
|
|
72
|
-
};
|
|
73
|
-
const openModal = ()=>{
|
|
74
|
-
if (!enteringModal || !prevProps) {
|
|
75
|
-
return;
|
|
76
|
-
}
|
|
77
|
-
const enteringState = getModalState(enteringModal);
|
|
78
|
-
onEnter();
|
|
79
|
-
// Анимация открытия модального окна
|
|
80
|
-
if (!prevProps.exitingModal) {
|
|
81
|
-
requestAnimationFrame(()=>{
|
|
82
|
-
if (enteringModal === enteringModal && enteringState) {
|
|
83
|
-
waitTransitionFinish(enteringState.innerElement, ()=>onEntered(enteringState), timeout);
|
|
84
|
-
animateModalOpacity(enteringState, true);
|
|
85
|
-
setMaskOpacity(enteringState, 1);
|
|
86
|
-
}
|
|
87
|
-
});
|
|
88
|
-
return;
|
|
89
|
-
}
|
|
90
|
-
// Переход между модальными окнами без анимации
|
|
91
|
-
requestAnimationFrame(()=>{
|
|
92
|
-
if (enteringState === null || enteringState === void 0 ? void 0 : enteringState.innerElement) {
|
|
93
|
-
enteringState.innerElement.style.transition = 'none';
|
|
94
|
-
enteringState.innerElement.style.opacity = '1';
|
|
95
|
-
setMaskOpacity(enteringState, 1);
|
|
96
|
-
}
|
|
97
|
-
});
|
|
98
|
-
if (enteringState) {
|
|
99
|
-
onEntered(enteringState);
|
|
100
|
-
}
|
|
101
|
-
};
|
|
102
|
-
const closeModal = (id)=>{
|
|
103
|
-
const prevModalState = getModalState(id);
|
|
104
|
-
if (!prevModalState) {
|
|
105
|
-
return;
|
|
106
|
-
}
|
|
107
|
-
// Анимация закрытия модального окна
|
|
108
|
-
if (!activeModal) {
|
|
109
|
-
requestAnimationFrame(()=>{
|
|
110
|
-
waitTransitionFinish(prevModalState === null || prevModalState === void 0 ? void 0 : prevModalState.innerElement, (event)=>{
|
|
111
|
-
// Исключаем дочерние элементы
|
|
112
|
-
if (event && event.target === (prevModalState === null || prevModalState === void 0 ? void 0 : prevModalState.innerElement)) {
|
|
113
|
-
onExited(id);
|
|
114
|
-
} else if (!event) {
|
|
115
|
-
// Вызвался по тайм-ауту
|
|
116
|
-
onExited(id);
|
|
117
|
-
}
|
|
118
|
-
}, timeout);
|
|
119
|
-
animateModalOpacity(prevModalState, false);
|
|
120
|
-
setMaskOpacity(prevModalState, 0);
|
|
121
|
-
});
|
|
122
|
-
return;
|
|
123
|
-
}
|
|
124
|
-
// Переход между модальными окнами без анимации
|
|
125
|
-
onExited(id);
|
|
126
|
-
};
|
|
127
|
-
React.useEffect(()=>{
|
|
128
|
-
if (!prevProps) {
|
|
129
|
-
return;
|
|
130
|
-
}
|
|
131
|
-
// transition phase 2: animate exiting modal
|
|
132
|
-
if (exitingModal && exitingModal !== prevProps.exitingModal) {
|
|
133
|
-
closeModal(exitingModal);
|
|
134
|
-
}
|
|
135
|
-
// transition phase 3: animate entering modal
|
|
136
|
-
if (enteringModal && enteringModal !== prevProps.enteringModal) {
|
|
137
|
-
openModal();
|
|
138
|
-
}
|
|
139
|
-
// focus restoration
|
|
140
|
-
if (activeModal && !prevProps.activeModal) {
|
|
141
|
-
var _document_activeElement;
|
|
142
|
-
restoreFocusTo.current = (_document_activeElement = document === null || document === void 0 ? void 0 : document.activeElement) !== null && _document_activeElement !== void 0 ? _document_activeElement : undefined;
|
|
143
|
-
}
|
|
144
|
-
if (!activeModal && !exitingModal && restoreFocusTo.current) {
|
|
145
|
-
restoreFocusTo.current.focus();
|
|
146
|
-
restoreFocusTo.current = undefined;
|
|
147
|
-
}
|
|
148
|
-
});
|
|
149
|
-
if (!activeModal && !exitingModal) {
|
|
150
|
-
return null;
|
|
151
|
-
}
|
|
152
|
-
return /*#__PURE__*/ _jsx(ModalRootContext.Provider, {
|
|
153
|
-
value: modalRootContext,
|
|
154
|
-
children: /*#__PURE__*/ _jsxs("div", {
|
|
155
|
-
className: classNames("vkuiModalRoot__host", hasCustomPanelHeaderAfter && "vkuiModalRoot__hasCustomPanelHeaderAfterSlot", "vkuiModalRoot__desktop"),
|
|
156
|
-
children: [
|
|
157
|
-
/*#__PURE__*/ _jsx("div", {
|
|
158
|
-
"data-testid": modalOverlayTestId,
|
|
159
|
-
className: "vkuiModalRoot__mask",
|
|
160
|
-
ref: maskElementRef,
|
|
161
|
-
onClick: onExit
|
|
162
|
-
}),
|
|
163
|
-
/*#__PURE__*/ _jsx("div", {
|
|
164
|
-
className: "vkuiModalRoot__viewport",
|
|
165
|
-
children: modals.map((Modal)=>{
|
|
166
|
-
const modalId = getNavId(Modal.props, warn);
|
|
167
|
-
if (modalId !== activeModal && modalId !== exitingModal) {
|
|
168
|
-
return null;
|
|
169
|
-
}
|
|
170
|
-
const key = `modal-${modalId}`;
|
|
171
|
-
return /*#__PURE__*/ _jsx(FocusTrap, {
|
|
172
|
-
autoFocus: false,
|
|
173
|
-
restoreFocus: false,
|
|
174
|
-
onClose: onExit,
|
|
175
|
-
timeout: timeout,
|
|
176
|
-
className: "vkuiModalRoot__modal",
|
|
177
|
-
children: Modal
|
|
178
|
-
}, key);
|
|
179
|
-
})
|
|
180
|
-
})
|
|
181
|
-
]
|
|
182
|
-
})
|
|
183
|
-
});
|
|
184
|
-
};
|
|
185
|
-
|
|
186
|
-
//# sourceMappingURL=ModalRootDesktop.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/ModalRoot/ModalRootDesktop.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { classNames, noop } from '@vkontakte/vkjs';\nimport { clamp } from '../../helpers/math';\nimport { useObjectMemo } from '../../hooks/useObjectMemo';\nimport { usePrevious } from '../../hooks/usePrevious';\nimport { useWaitTransitionFinish } from '../../hooks/useWaitTransitionFinish';\nimport { useDOM } from '../../lib/dom';\nimport { getNavId } from '../../lib/getNavId';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { useConfigProvider } from '../ConfigProvider/ConfigProviderContext';\nimport { FocusTrap } from '../FocusTrap/FocusTrap';\nimport { ModalRootContext, type ModalRootContextInterface } from './ModalRootContext';\nimport type { ModalRootWithDOMProps, ModalsStateEntry } from './types';\nimport { useModalManager } from './useModalManager';\nimport styles from './ModalRoot.module.css';\n\nconst warn = warnOnce('ModalRoot');\n\nexport const ModalRootDesktop = ({\n activeModal: activeModalProp,\n children,\n noFocusToDialog = false,\n onOpen,\n onOpened,\n onClose,\n onClosed,\n modalOverlayTestId,\n}: ModalRootWithDOMProps): React.ReactNode => {\n const maskElementRef = React.useRef<HTMLDivElement>(null);\n const maskAnimationFrame = React.useRef<number | undefined>(undefined);\n const restoreFocusTo = React.useRef<HTMLElement | undefined>(undefined);\n\n const { document } = useDOM();\n const { hasCustomPanelHeaderAfter, platform } = useConfigProvider();\n const {\n activeModal,\n exitingModal,\n onExit,\n getModalState,\n enteringModal,\n onEnter,\n onEntered: onEnteredProp,\n onExited,\n history,\n delayEnter,\n } = useModalManager(activeModalProp, children, onOpen, onOpened, onClose, onClosed, noop);\n\n const waitTransitionFinish = useWaitTransitionFinish();\n const prevProps = usePrevious({\n exitingModal,\n enteringModal,\n activeModal,\n });\n const modalRootContext: ModalRootContextInterface = useObjectMemo({\n updateModalHeight: () => undefined,\n registerModal: ({ id, ...data }) => Object.assign(getModalState(id) ?? {}, data),\n onClose: onExit,\n isInsideModal: true,\n });\n\n const timeout = platform === 'ios' ? 400 : 320;\n const modals = React.Children.toArray(children) as React.ReactElement[];\n\n /* Анимирует сдвиг модального окна */\n const animateModalOpacity = (modalState: ModalsStateEntry | undefined, display: boolean) => {\n if (modalState?.innerElement) {\n modalState.innerElement.style.transition = '';\n modalState.innerElement.style.transitionDelay = display && delayEnter ? `${timeout}ms` : '';\n modalState.innerElement.style.opacity = display ? '1' : '0';\n }\n };\n\n /* Устанавливает прозрачность для полупрозрачной подложки */\n const setMaskOpacity = (modalState: ModalsStateEntry, forceOpacity: number | null = null) => {\n if (forceOpacity === null && history?.[0] !== modalState.id) {\n return;\n }\n\n if (maskAnimationFrame.current) {\n cancelAnimationFrame(maskAnimationFrame.current);\n }\n maskAnimationFrame.current = requestAnimationFrame(() => {\n if (maskElementRef.current) {\n const { translateY = 0, translateYCurrent = 0 } = modalState;\n\n const opacity =\n forceOpacity === null\n ? 1 - (translateYCurrent - translateY) / (100 - translateY) || 0\n : forceOpacity;\n maskElementRef.current.style.opacity = clamp(opacity, 0, 100).toString();\n }\n });\n };\n\n const onEntered = ({ id, modalElement }: ModalsStateEntry) => {\n if (!noFocusToDialog && modalElement && !modalElement.contains(document!.activeElement)) {\n modalElement.focus();\n }\n\n onEnteredProp(id);\n };\n\n const openModal = () => {\n if (!enteringModal || !prevProps) {\n return;\n }\n\n const enteringState = getModalState(enteringModal);\n onEnter();\n\n // Анимация открытия модального окна\n if (!prevProps.exitingModal) {\n requestAnimationFrame(() => {\n if (enteringModal === enteringModal && enteringState) {\n waitTransitionFinish(enteringState.innerElement, () => onEntered(enteringState), timeout);\n animateModalOpacity(enteringState, true);\n setMaskOpacity(enteringState, 1);\n }\n });\n\n return;\n }\n\n // Переход между модальными окнами без анимации\n requestAnimationFrame(() => {\n if (enteringState?.innerElement) {\n enteringState.innerElement.style.transition = 'none';\n enteringState.innerElement.style.opacity = '1';\n setMaskOpacity(enteringState, 1);\n }\n });\n\n if (enteringState) {\n onEntered(enteringState);\n }\n };\n\n const closeModal = (id: string) => {\n const prevModalState = getModalState(id);\n if (!prevModalState) {\n return;\n }\n\n // Анимация закрытия модального окна\n if (!activeModal) {\n requestAnimationFrame(() => {\n waitTransitionFinish(\n prevModalState?.innerElement,\n (event) => {\n // Исключаем дочерние элементы\n if (event && event.target === prevModalState?.innerElement) {\n onExited(id);\n } else if (!event) {\n // Вызвался по тайм-ауту\n onExited(id);\n }\n },\n timeout,\n );\n animateModalOpacity(prevModalState, false);\n setMaskOpacity(prevModalState, 0);\n });\n\n return;\n }\n\n // Переход между модальными окнами без анимации\n onExited(id);\n };\n\n React.useEffect(() => {\n if (!prevProps) {\n return;\n }\n\n // transition phase 2: animate exiting modal\n if (exitingModal && exitingModal !== prevProps.exitingModal) {\n closeModal(exitingModal);\n }\n\n // transition phase 3: animate entering modal\n if (enteringModal && enteringModal !== prevProps.enteringModal) {\n openModal();\n }\n\n // focus restoration\n if (activeModal && !prevProps.activeModal) {\n restoreFocusTo.current = (document?.activeElement ?? undefined) as HTMLElement | undefined;\n }\n if (!activeModal && !exitingModal && restoreFocusTo.current) {\n restoreFocusTo.current.focus();\n restoreFocusTo.current = undefined;\n }\n });\n\n if (!activeModal && !exitingModal) {\n return null;\n }\n\n return (\n <ModalRootContext.Provider value={modalRootContext}>\n <div\n className={classNames(\n styles.host,\n hasCustomPanelHeaderAfter && styles.hasCustomPanelHeaderAfterSlot,\n styles.desktop,\n )}\n >\n <div\n data-testid={modalOverlayTestId}\n className={styles.mask}\n ref={maskElementRef}\n onClick={onExit}\n />\n <div className={styles.viewport}>\n {modals.map((Modal: React.ReactElement) => {\n const modalId = getNavId(Modal.props, warn);\n if (modalId !== activeModal && modalId !== exitingModal) {\n return null;\n }\n\n const key = `modal-${modalId}`;\n\n return (\n <FocusTrap\n autoFocus={false}\n restoreFocus={false}\n onClose={onExit}\n timeout={timeout}\n key={key}\n className={styles.modal}\n >\n {Modal}\n </FocusTrap>\n );\n })}\n </div>\n </div>\n </ModalRootContext.Provider>\n );\n};\n"],"names":["React","classNames","noop","clamp","useObjectMemo","usePrevious","useWaitTransitionFinish","useDOM","getNavId","warnOnce","useConfigProvider","FocusTrap","ModalRootContext","useModalManager","warn","ModalRootDesktop","activeModal","activeModalProp","children","noFocusToDialog","onOpen","onOpened","onClose","onClosed","modalOverlayTestId","maskElementRef","useRef","maskAnimationFrame","undefined","restoreFocusTo","document","hasCustomPanelHeaderAfter","platform","exitingModal","onExit","getModalState","enteringModal","onEnter","onEntered","onEnteredProp","onExited","history","delayEnter","waitTransitionFinish","prevProps","modalRootContext","updateModalHeight","registerModal","id","data","Object","assign","isInsideModal","timeout","modals","Children","toArray","animateModalOpacity","modalState","display","innerElement","style","transition","transitionDelay","opacity","setMaskOpacity","forceOpacity","current","cancelAnimationFrame","requestAnimationFrame","translateY","translateYCurrent","toString","modalElement","contains","activeElement","focus","openModal","enteringState","closeModal","prevModalState","event","target","useEffect","Provider","value","div","className","data-testid","ref","onClick","map","Modal","modalId","props","key","autoFocus","restoreFocus"],"mappings":"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"}
|