@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/ModalRoot/ModalRoot.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { clamp } from '../../helpers/math';\nimport { withContext } from '../../hoc/withContext';\nimport { withPlatform } from '../../hoc/withPlatform';\nimport { type DOMProps, withDOM } from '../../lib/dom';\nimport { getNavId } from '../../lib/getNavId';\nimport { rubber } from '../../lib/touch';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { ConfigProviderContext } from '../ConfigProvider/ConfigProviderContext';\nimport { FocusTrap } from '../FocusTrap/FocusTrap';\nimport { type CustomTouchEvent, Touch } from '../Touch/Touch';\nimport TouchRootContext from '../Touch/TouchContext';\nimport { ModalRootContext, type ModalRootContextInterface } from './ModalRootContext';\nimport { MODAL_PAGE_DEFAULT_PERCENT_HEIGHT } from './constants';\nimport type { ModalRootWithDOMProps, ModalsStateEntry, TranslateRange } from './types';\nimport { type ModalTransitionProps, withModalManager } from './useModalManager';\nimport styles from './ModalRoot.module.css';\n\nconst warn = warnOnce('ModalRoot');\n\nfunction numberInRange(number: number, range: TranslateRange | undefined) {\n if (!range) {\n return false;\n }\n return number >= range[0] && number <= range[1];\n}\n\nfunction rangeTranslate(number: number) {\n return clamp(number, 0, 98);\n}\n\ninterface ModalRootState {\n touchDown?: boolean;\n dragging?: boolean;\n modalOpenedLog: string[];\n}\n\nclass ModalRootTouchComponent extends React.Component<\n ModalRootWithDOMProps & DOMProps & ModalTransitionProps,\n ModalRootState\n> {\n constructor(props: ModalRootWithDOMProps & ModalTransitionProps) {\n super(props);\n this.state = {\n touchDown: false,\n dragging: false,\n modalOpenedLog: [],\n };\n\n this.maskElementRef = React.createRef();\n\n this.modalRootContext = {\n updateModalHeight: this.updateModalHeight,\n registerModal: ({ id, ...data }) => Object.assign(this.props.getModalState(id) ?? {}, data),\n onClose: () => this.props.onExit(),\n isInsideModal: true,\n };\n\n this.frameIds = {};\n }\n\n private readonly maskElementRef: React.RefObject<HTMLDivElement>;\n private readonly viewportRef = React.createRef<HTMLDivElement>();\n private maskAnimationFrame: number | undefined = undefined;\n private readonly modalRootContext: ModalRootContextInterface;\n private readonly frameIds: {\n [index: string]: number;\n };\n private restoreFocusTo: HTMLElement | undefined | null = undefined;\n\n get timeout(): number {\n return this.props.platform === 'ios' ? 400 : 320;\n }\n\n get document(): Document {\n return this.props.document as Document;\n }\n\n get window(): Window {\n return this.props.window as Window;\n }\n\n getModals() {\n return React.Children.toArray(this.props.children) as React.ReactElement[];\n }\n\n componentDidMount() {\n // Отслеживаем изменение размеров viewport\n this.window?.addEventListener('resize', this.updateModalHeight, false);\n }\n\n componentWillUnmount() {\n this.toggleDocumentScrolling(true);\n this.window.removeEventListener('resize', this.updateModalHeight, false);\n }\n\n componentDidUpdate(prevProps: ModalRootWithDOMProps & ModalTransitionProps) {\n // transition phase 2: animate exiting modal\n if (this.props.exitingModal && this.props.exitingModal !== prevProps.exitingModal) {\n this.closeModal(this.props.exitingModal);\n }\n\n // transition phase 3: animate entering modal\n if (this.props.enteringModal && this.props.enteringModal !== prevProps.enteringModal) {\n const enteringState = this.props.getModalState(this.props.enteringModal);\n this.props.onEnter();\n this.waitTransitionFinish(enteringState, () => {\n if (enteringState) {\n if (enteringState.innerElement) {\n enteringState.innerElement.style.transitionDelay = '';\n }\n this.onEntered(enteringState);\n }\n });\n\n if (enteringState?.innerElement) {\n enteringState.innerElement.style.transitionDelay = this.props.delayEnter\n ? `${this.timeout}ms`\n : '';\n this.animateTranslate(enteringState, enteringState.translateY);\n this.setMaskOpacity(enteringState, 1);\n }\n }\n\n // focus restoration\n if (this.props.activeModal && !prevProps.activeModal) {\n this.restoreFocusTo = this.document.activeElement as HTMLElement;\n }\n if (!this.props.activeModal && !this.props.exitingModal && this.restoreFocusTo) {\n this.restoreFocusTo.focus();\n this.restoreFocusTo = null;\n }\n\n this.toggleDocumentScrolling(!this.props.activeModal && !this.props.exitingModal);\n }\n\n /* Отключает скролл документа */\n toggleDocumentScrolling(enabled: boolean) {\n if (enabled) {\n // восстанавливаем значение overscroll behavior\n // eslint-disable-next-line no-restricted-properties\n this.document.documentElement.classList.remove('vkui--disable-overscroll-behavior');\n } else {\n // отключаем нативный pull-to-refresh при открытом модальном окне\n // чтобы он не срабатывал при закрытии модалки смахиванием вниз\n // eslint-disable-next-line no-restricted-properties\n this.document.documentElement.classList.add('vkui--disable-overscroll-behavior');\n }\n }\n\n checkPageContentHeight() {\n const modalState = this.props.getModalState(this.props.activeModal);\n\n if (modalState?.type === 'page' && modalState?.modalElement) {\n const prevModalState = { ...modalState };\n initPageModal(modalState);\n const currentModalState = { ...modalState };\n\n let needAnimate = false;\n\n if (prevModalState.expandable === currentModalState.expandable) {\n if (prevModalState.translateYFrom !== currentModalState.translateYFrom) {\n needAnimate = true;\n }\n } else {\n needAnimate = true;\n }\n\n if (needAnimate) {\n this.animateTranslate(modalState, modalState.translateY);\n }\n }\n }\n\n updateModalHeight = () => {\n const modalState = this.props.getModalState(this.props.activeModal);\n\n if (modalState && modalState.type === 'page') {\n if (this.props.enteringModal) {\n this.waitTransitionFinish(modalState, () => {\n requestAnimationFrame(() => this.checkPageContentHeight());\n });\n } else {\n requestAnimationFrame(() => this.checkPageContentHeight());\n }\n }\n };\n\n onEntered({ id, modalElement }: ModalsStateEntry) {\n if (\n !this.props.noFocusToDialog &&\n modalElement &&\n !modalElement.contains(this.document.activeElement)\n ) {\n modalElement.focus();\n }\n\n this.props.onEntered(id);\n }\n\n closeModal(id: string) {\n // Сбрасываем состояния, которые могут помешать закрытию модального окна\n this.setState({ touchDown: false });\n\n const prevModalState = this.props.getModalState(id);\n\n if (!prevModalState) {\n id && warn(`closeActiveModal: модальное окно (страница) ${id} не существует`, 'error');\n return;\n }\n if (!this.state.modalOpenedLog.length) {\n this.setState((prevState) => ({\n modalOpenedLog: [...prevState.modalOpenedLog, id],\n }));\n }\n const nextModalState = this.props.getModalState(this.props.activeModal);\n const nextIsPage = !!nextModalState && nextModalState.type === 'page';\n\n const prevIsPage = !!prevModalState && prevModalState.type === 'page';\n this.waitTransitionFinish(prevModalState, () => this.props.onExited(id));\n const exitTranslate =\n prevIsPage &&\n nextIsPage &&\n (prevModalState.translateY ?? 0) <= (nextModalState?.translateYFrom ?? 0) &&\n !this.props.isBack\n ? (nextModalState?.translateYFrom ?? 0) + 10\n : 100;\n this.animateTranslate(prevModalState, exitTranslate);\n\n if (!nextModalState) {\n // NOTE: was only for clean exit\n this.setMaskOpacity(prevModalState, 0);\n this.setState({ modalOpenedLog: [] });\n prevModalState.translateY = undefined;\n prevModalState.expandable = undefined;\n } else if (nextModalState.id && !this.state.modalOpenedLog.includes(nextModalState.id)) {\n nextModalState.translateY = undefined;\n this.setState((prevState) => ({\n modalOpenedLog: [...prevState.modalOpenedLog, nextModalState.id!],\n }));\n }\n }\n\n onTouchMove = (e: CustomTouchEvent) => {\n if (this.props.exitingModal) {\n return;\n }\n const modalState = this.props.getModalState(this.props.activeModal);\n if (!modalState) {\n return;\n }\n\n if (modalState.type === 'page') {\n return this.onPageTouchMove(e, modalState);\n }\n\n if (modalState.type === 'card') {\n return this.onCardTouchMove(e, modalState);\n }\n };\n\n onPageTouchMove(event: CustomTouchEvent, modalState: ModalsStateEntry) {\n const { shiftY, originalEvent } = event;\n const target = originalEvent.target as HTMLElement;\n\n if (!event.isY) {\n if (this.viewportRef.current?.contains(target)) {\n originalEvent.preventDefault();\n }\n return;\n }\n\n if (!modalState.innerElement?.contains(target)) {\n return originalEvent.preventDefault();\n }\n\n originalEvent.stopPropagation();\n\n const { expandable, contentScrolled, collapsed, expanded } = modalState;\n\n if (!this.state.touchDown) {\n modalState.touchStartContentScrollTop = modalState.contentElement?.scrollTop ?? 0;\n this.setState({ touchDown: true });\n }\n\n if (contentScrolled) {\n return;\n }\n\n if (modalState.touchMovePositive === null) {\n modalState.touchMovePositive = shiftY > 0;\n }\n\n if (\n !modalState.expandable ||\n collapsed ||\n (expanded && modalState.touchMovePositive && modalState.touchStartContentScrollTop === 0) ||\n modalState.headerElement?.contains(target)\n ) {\n originalEvent.preventDefault();\n\n if ((!expandable && shiftY < 0) || !this.window) {\n return;\n }\n\n !this.state.dragging && this.setState({ dragging: true });\n\n const shiftYPercent = (shiftY / this.window.innerHeight) * 100;\n const shiftYCurrent = rubber(shiftYPercent, 72, 0.8, this.props.platform !== 'ios');\n\n modalState.touchShiftYPercent = shiftYPercent;\n modalState.translateYCurrent = rangeTranslate((modalState.translateY ?? 0) + shiftYCurrent);\n\n this.animateTranslate(modalState, modalState.translateYCurrent);\n this.setMaskOpacity(modalState);\n }\n }\n\n onCardTouchMove(event: CustomTouchEvent, modalState: ModalsStateEntry) {\n const { originalEvent, shiftY } = event;\n const target = originalEvent.target as HTMLElement;\n if (modalState.innerElement?.contains(target)) {\n if (!this.state.touchDown) {\n this.setState({ touchDown: true, dragging: true });\n }\n\n const shiftYPercent = (shiftY / modalState.innerElement.offsetHeight) * 100;\n const shiftYCurrent = rubber(shiftYPercent, 72, 1.2, this.props.platform !== 'ios');\n\n modalState.touchShiftYPercent = shiftYPercent;\n modalState.translateYCurrent = Math.max(0, (modalState.translateY ?? 0) + shiftYCurrent);\n\n this.animateTranslate(modalState, modalState.translateYCurrent);\n this.setMaskOpacity(modalState);\n }\n }\n\n onTouchEnd = (e: CustomTouchEvent) => {\n const modalState = this.props.getModalState(this.props.activeModal);\n\n if (modalState?.type === 'page') {\n return this.onPageTouchEnd(e, modalState);\n }\n\n if (modalState?.type === 'card') {\n return this.onCardTouchEnd(e, modalState);\n }\n };\n\n onPageTouchEnd(event: CustomTouchEvent, modalState: ModalsStateEntry) {\n const { startY, shiftY } = event;\n\n modalState.contentScrolled = false;\n modalState.touchMovePositive = null;\n\n let setStateCallback;\n\n if (this.state.dragging && this.window) {\n const shiftYEndPercent = ((startY + shiftY) / this.window.innerHeight) * 100;\n\n let translateY = modalState.translateYCurrent ?? 0;\n const expectTranslateY =\n (translateY / event.duration) *\n 240 *\n 0.6 *\n ((modalState.touchShiftYPercent ?? 0) < 0 ? -1 : 1);\n translateY = rangeTranslate(translateY + expectTranslateY);\n\n if (modalState.settlingHeight !== 100) {\n if (numberInRange(translateY, modalState.expandedRange)) {\n translateY = modalState.expandedRange?.[0] ?? 0;\n } else if (numberInRange(translateY, modalState.collapsedRange)) {\n translateY = modalState.translateYFrom ?? 0;\n } else if (numberInRange(translateY, modalState.hiddenRange)) {\n translateY = modalState.preventClose ? modalState.translateYFrom ?? 0 : 100;\n } else {\n translateY = modalState.translateYFrom ?? 0;\n }\n } else {\n if (numberInRange(translateY, [0, 25])) {\n translateY = 0;\n } else {\n translateY = modalState.preventClose ? modalState.translateYFrom ?? 0 : 100;\n }\n }\n\n if (translateY !== 100 && shiftYEndPercent >= 75 && !modalState.preventClose) {\n translateY = 100;\n }\n\n modalState.translateY = translateY;\n modalState.translateYCurrent = translateY;\n modalState.collapsed = numberInRange(translateY, modalState.collapsedRange);\n modalState.expanded = translateY === 0;\n modalState.hidden = translateY === 100;\n\n if (modalState.hidden) {\n this.props.onExit();\n }\n\n setStateCallback = () => {\n if (!modalState.hidden) {\n this.animateTranslate(modalState, modalState.translateY);\n }\n\n this.setMaskOpacity(modalState);\n };\n }\n\n this.setState(\n {\n touchDown: false,\n dragging: false,\n },\n setStateCallback,\n );\n }\n\n onCardTouchEnd({ duration }: CustomTouchEvent, modalState: ModalsStateEntry) {\n let setStateCallback;\n\n if (this.state.dragging) {\n let translateY = modalState.translateYCurrent ?? 0;\n\n const expectTranslateY =\n (translateY / duration) * 240 * 0.6 * ((modalState.touchShiftYPercent ?? 0) < 0 ? -1 : 1);\n translateY = Math.max(0, translateY + expectTranslateY);\n\n if (translateY >= 30) {\n translateY = 100;\n } else {\n translateY = 0;\n }\n\n modalState.translateY = translateY;\n modalState.hidden = translateY === 100;\n\n if (modalState.hidden) {\n this.props.onExit();\n }\n\n setStateCallback = () => {\n if (!modalState.hidden) {\n this.animateTranslate(modalState, modalState.translateY);\n }\n\n this.setMaskOpacity(modalState);\n };\n }\n\n this.setState(\n {\n touchDown: false,\n dragging: false,\n },\n setStateCallback,\n );\n }\n\n onScroll = (e: React.SyntheticEvent) => {\n const activeModal = this.props.activeModal;\n\n const target = e.target as HTMLElement;\n\n if (!activeModal) {\n return;\n }\n const modalState = this.props.getModalState(activeModal);\n if (modalState?.type === 'page' && modalState?.contentElement?.contains(target)) {\n modalState.contentScrolled = true;\n\n if (modalState.contentScrollStopTimeout) {\n clearTimeout(modalState.contentScrollStopTimeout);\n }\n\n modalState.contentScrollStopTimeout = setTimeout(() => {\n if (modalState.contentScrolled) {\n modalState.contentScrolled = false;\n }\n }, 250);\n }\n };\n\n waitTransitionFinish(modalState: ModalsStateEntry | undefined, eventHandler: () => void) {\n const el = modalState ? modalState.innerElement : null;\n if (el) {\n el.addEventListener('transitionend', eventHandler, { once: true });\n } else {\n setTimeout(eventHandler, this.timeout);\n }\n }\n\n /**\n * Анимирует сдвиг модалки\n *\n * @param {ModalsStateEntry} modalState\n * @param {number} percent Процент сдвига: 0 – полностью открыта, 100 – полностью закрыта\n */\n animateTranslate(modalState: ModalsStateEntry, percent: number | undefined) {\n const frameId = `animateTranslateFrame${modalState.id}`;\n\n cancelAnimationFrame(this.frameIds[frameId]);\n\n this.frameIds[frameId] = requestAnimationFrame(() => {\n if (!modalState.innerElement) {\n return;\n }\n modalState.innerElement.style.transform = `translate3d(0, ${percent}%, 0)`;\n });\n }\n\n /* Устанавливает прозрачность для полупрозрачной подложки */\n setMaskOpacity(modalState: ModalsStateEntry, forceOpacity: number | null = null) {\n if (forceOpacity === null && this.props.history?.[0] !== modalState.id) {\n return;\n }\n if (this.maskAnimationFrame) {\n cancelAnimationFrame(this.maskAnimationFrame);\n }\n this.maskAnimationFrame = requestAnimationFrame(() => {\n if (this.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 this.maskElementRef.current.style.opacity = clamp(opacity, 0, 100).toString();\n this.maskElementRef.current.style.transitionDelay =\n opacity && this.props.delayEnter ? `${this.timeout}ms` : '';\n }\n });\n }\n\n render() {\n const { activeModal, exitingModal, enteringModal, modalOverlayTestId } = this.props;\n const { touchDown, dragging } = this.state;\n\n if (!activeModal && !exitingModal) {\n return null;\n }\n\n return (\n <TouchRootContext.Provider value={true}>\n <ModalRootContext.Provider value={this.modalRootContext}>\n <Touch\n className={classNames(\n styles.host,\n this.props.configProvider?.hasCustomPanelHeaderAfter &&\n styles.hasCustomPanelHeaderAfterSlot,\n touchDown && classNames(styles.touched, 'vkuiInternalModalRoot--touched'),\n !!(enteringModal || exitingModal) &&\n classNames(styles.switching, 'vkuiInternalModalRoot--switching'),\n )}\n onMove={this.onTouchMove}\n onEnd={this.onTouchEnd}\n onScroll={this.onScroll}\n >\n <div\n data-testid={modalOverlayTestId}\n className={styles.mask}\n onClick={this.props.onExit}\n ref={this.maskElementRef}\n />\n <div className={styles.viewport} ref={this.viewportRef}>\n {this.getModals().map((Modal) => {\n const modalId = getNavId(Modal.props, warn);\n const _modalState = this.props.getModalState(modalId);\n if ((modalId !== activeModal && modalId !== exitingModal) || !_modalState) {\n return null;\n }\n const modalState = { ..._modalState };\n\n const isPage = modalState.type === 'page';\n const key = `modal-${modalId}`;\n\n return (\n <FocusTrap\n key={key}\n onClose={this.props.onExit}\n timeout={this.timeout}\n className={classNames(\n styles.modal,\n\n dragging && 'vkuiInternalModalRoot__modal--dragging',\n\n isPage && modalState.expandable && 'vkuiInternalModalRoot__modal--expandable',\n isPage && modalState.collapsed && 'vkuiInternalModalRoot__modal--collapsed',\n )}\n autoFocus={false}\n restoreFocus={false}\n >\n {Modal}\n </FocusTrap>\n );\n })}\n </div>\n </Touch>\n </ModalRootContext.Provider>\n </TouchRootContext.Provider>\n );\n }\n}\n\nexport const ModalRootTouch: React.FC<ModalRootWithDOMProps> = withContext(\n withPlatform(\n withDOM<ModalRootWithDOMProps>(withModalManager(initModal)(ModalRootTouchComponent)),\n ),\n ConfigProviderContext,\n 'configProvider',\n);\n\n/**\n * Инициализирует модалку перед анимацией открытия\n */\nfunction initModal(modalState: ModalsStateEntry) {\n switch (modalState.type) {\n case 'page':\n modalState.settlingHeight = modalState.settlingHeight || MODAL_PAGE_DEFAULT_PERCENT_HEIGHT;\n return initPageModal(modalState);\n case 'card':\n return initCardModal(modalState);\n default:\n process.env.NODE_ENV === 'development' &&\n warn(`initActiveModal: modalState.type=\"${modalState.type}\" не поддерживается`, 'error');\n }\n}\n\nfunction initPageModal(modalState: ModalsStateEntry) {\n const { contentElement, bottomInset } = modalState;\n const contentElementHeight = calculateModalContentHeight(\n contentElement?.firstElementChild as HTMLElement,\n modalState.expandable,\n );\n const bottomInsetHeight = bottomInset?.offsetHeight || 0;\n const contentHeight = contentElementHeight + bottomInsetHeight;\n let prevTranslateY = modalState.translateY;\n let prevExpandable = modalState.expandable;\n\n modalState.expandable =\n contentHeight > (contentElement?.clientHeight ?? 0) || modalState.settlingHeight === 100;\n\n let collapsed = false;\n let expanded = false;\n let translateYFrom;\n let translateY;\n let expandedRange: TranslateRange;\n let collapsedRange: TranslateRange | undefined;\n let hiddenRange: TranslateRange;\n\n const hasCollapsedState = Boolean(modalState.expandable && modalState.settlingHeight !== 100);\n if (modalState.expandable) {\n translateYFrom = 100 - (modalState.settlingHeight ?? 0);\n\n const shiftHalf = translateYFrom / 2;\n const visiblePart = 100 - translateYFrom;\n\n expandedRange = [0, shiftHalf];\n collapsedRange = hasCollapsedState ? [shiftHalf, translateYFrom + visiblePart / 4] : undefined;\n hiddenRange = [translateYFrom + visiblePart / 4, 100];\n\n collapsed = hasCollapsedState && translateYFrom > 0;\n expanded = translateYFrom <= 0;\n translateY = translateYFrom;\n } else {\n const headerHeight = modalState.headerElement?.offsetHeight ?? 0;\n const height = contentHeight + headerHeight;\n\n translateYFrom =\n 100 - (height / (modalState.innerElement?.parentElement?.offsetHeight ?? 0)) * 100;\n translateY = translateYFrom;\n\n expandedRange = [translateY, translateY + 25];\n collapsedRange = undefined;\n hiddenRange = [translateY + 25, translateY + 100];\n }\n\n // Свойство expandable может измениться из-за высоты контента, в таком случае на всю высоту не разворачиваем\n const shouldExpand = prevExpandable && modalState.expandable;\n // Если модалка может открываться на весь экран, и новый сдвиг больше предыдущего, то откроем её на весь экран\n if ((shouldExpand && translateY > (prevTranslateY ?? 100)) || modalState.settlingHeight === 100) {\n translateY = 0;\n }\n\n // Если модалка уже раскрыта обновляем состояния\n if (translateY === 0) {\n expanded = true;\n collapsed = false;\n }\n\n modalState.expandedRange = expandedRange;\n modalState.collapsedRange = collapsedRange;\n modalState.hiddenRange = hiddenRange;\n modalState.translateY = translateY;\n modalState.translateYFrom = translateYFrom;\n modalState.collapsed = collapsed;\n modalState.expanded = expanded;\n}\n\nfunction initCardModal(modalState: ModalsStateEntry) {\n modalState.translateY = 0;\n}\n\nfunction calculateModalContentHeight(\n element: HTMLElement,\n isExpandable: ModalsStateEntry['expandable'],\n) {\n if (!isExpandable) {\n return element.scrollHeight;\n }\n\n /*\n * В режиме expandable мы назначаем контейнеру контента высоту 100%, что не даёт\n * получить реальную высоту контента.\n * Поэтому мы пересчитываем высоту, временно устанавливая height: auto;\n * */\n const currentHeightStyle = element.style.height;\n element.style.height = 'auto';\n\n const elementHeight = element.scrollHeight;\n element.style.height = currentHeightStyle;\n\n return elementHeight;\n}\n"],"names":["React","classNames","clamp","withContext","withPlatform","withDOM","getNavId","rubber","warnOnce","ConfigProviderContext","FocusTrap","Touch","TouchRootContext","ModalRootContext","MODAL_PAGE_DEFAULT_PERCENT_HEIGHT","withModalManager","warn","numberInRange","number","range","rangeTranslate","ModalRootTouchComponent","Component","timeout","props","platform","document","window","getModals","Children","toArray","children","componentDidMount","addEventListener","updateModalHeight","componentWillUnmount","toggleDocumentScrolling","removeEventListener","componentDidUpdate","prevProps","exitingModal","closeModal","enteringModal","enteringState","getModalState","onEnter","waitTransitionFinish","innerElement","style","transitionDelay","onEntered","delayEnter","animateTranslate","translateY","setMaskOpacity","activeModal","restoreFocusTo","activeElement","focus","enabled","documentElement","classList","remove","add","checkPageContentHeight","modalState","type","modalElement","prevModalState","initPageModal","currentModalState","needAnimate","expandable","translateYFrom","id","noFocusToDialog","contains","setState","touchDown","state","modalOpenedLog","length","prevState","nextModalState","nextIsPage","prevIsPage","onExited","exitTranslate","isBack","undefined","includes","onPageTouchMove","event","shiftY","originalEvent","target","isY","viewportRef","current","preventDefault","stopPropagation","contentScrolled","collapsed","expanded","touchStartContentScrollTop","contentElement","scrollTop","touchMovePositive","headerElement","dragging","shiftYPercent","innerHeight","shiftYCurrent","touchShiftYPercent","translateYCurrent","onCardTouchMove","offsetHeight","Math","max","onPageTouchEnd","startY","setStateCallback","shiftYEndPercent","expectTranslateY","duration","settlingHeight","expandedRange","collapsedRange","hiddenRange","preventClose","hidden","onExit","onCardTouchEnd","eventHandler","el","once","setTimeout","percent","frameId","cancelAnimationFrame","frameIds","requestAnimationFrame","transform","forceOpacity","history","maskAnimationFrame","maskElementRef","opacity","toString","render","modalOverlayTestId","Provider","value","modalRootContext","className","configProvider","hasCustomPanelHeaderAfter","onMove","onTouchMove","onEnd","onTouchEnd","onScroll","div","data-testid","onClick","ref","map","Modal","modalId","_modalState","isPage","key","onClose","autoFocus","restoreFocus","constructor","createRef","e","contentScrollStopTimeout","clearTimeout","registerModal","data","Object","assign","isInsideModal","ModalRootTouch","initModal","initCardModal","process","env","NODE_ENV","bottomInset","contentElementHeight","calculateModalContentHeight","firstElementChild","bottomInsetHeight","contentHeight","prevTranslateY","prevExpandable","clientHeight","hasCollapsedState","Boolean","shiftHalf","visiblePart","headerHeight","height","parentElement","shouldExpand","element","isExpandable","scrollHeight","currentHeightStyle","elementHeight"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/ModalRoot/ModalRoot.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { noop } from '@vkontakte/vkjs';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { ModalPopoutPortal } from '../AppRoot/ModalPopoutPortal';\nimport { ModalOverlay } from '../ModalOverlay/ModalOverlay';\nimport { ModalRootContext, ModalRootOverlayContext } from './ModalRootContext';\nimport type { ModalRootProps } from './types';\n\nconst warn = warnOnce('ModalRoot');\n\n/**\n * @see https://vkcom.github.io/VKUI/#/ModalRoot\n */\nexport const ModalRoot = ({\n activeModal,\n children,\n modalOverlayTestId,\n noFocusToDialog,\n usePortal,\n onOpen,\n onOpened,\n onClose,\n onClosed,\n}: ModalRootProps): React.ReactNode => {\n const contextValue = React.useMemo(\n () => ({\n isInsideModal: true,\n\n // base props\n activeModal,\n modalOverlayTestId,\n noFocusToDialog,\n\n // callbacks\n onOpen,\n onOpened,\n onClose,\n onClosed,\n\n // TODO [>=8] Удалить метод\n updateModalHeight:\n /* istanbul ignore next: deprecated */\n process.env.NODE_ENV === 'development'\n ? () => {\n warn('Метод updateModalHeight() устарел и будет удалён в VKUI v8');\n }\n : noop,\n\n // TODO [>=8] Удалить метод\n registerModal:\n /* istanbul ignore next: deprecated */\n process.env.NODE_ENV === 'development'\n ? () => {\n warn('Метод registerModal() устарел и будет удалён в VKUI v8');\n }\n : noop,\n }),\n [activeModal, modalOverlayTestId, noFocusToDialog, onClose, onClosed, onOpen, onOpened],\n );\n const modalOverlayRef = React.useRef<HTMLDivElement>(null);\n return (\n <ModalPopoutPortal usePortal={usePortal}>\n <ModalRootContext.Provider value={contextValue}>\n <ModalRootOverlayContext.Provider value={modalOverlayRef}>\n <ModalOverlay visible={typeof activeModal === 'string'} getRootRef={modalOverlayRef} />\n {children}\n </ModalRootOverlayContext.Provider>\n </ModalRootContext.Provider>\n </ModalPopoutPortal>\n );\n};\n"],"names":["React","noop","warnOnce","ModalPopoutPortal","ModalOverlay","ModalRootContext","ModalRootOverlayContext","warn","ModalRoot","activeModal","children","modalOverlayTestId","noFocusToDialog","usePortal","onOpen","onOpened","onClose","onClosed","contextValue","useMemo","isInsideModal","updateModalHeight","process","env","NODE_ENV","registerModal","modalOverlayRef","useRef","Provider","value","visible","getRootRef"],"mappings":"AAAA;;AAEA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,IAAI,QAAQ,kBAAkB;AACvC,SAASC,QAAQ,QAAQ,wBAAqB;AAC9C,SAASC,iBAAiB,QAAQ,kCAA+B;AACjE,SAASC,YAAY,QAAQ,kCAA+B;AAC5D,SAASC,gBAAgB,EAAEC,uBAAuB,QAAQ,wBAAqB;AAG/E,MAAMC,OAAOL,SAAS;AAEtB;;CAEC,GACD,OAAO,MAAMM,YAAY,CAAC,EACxBC,WAAW,EACXC,QAAQ,EACRC,kBAAkB,EAClBC,eAAe,EACfC,SAAS,EACTC,MAAM,EACNC,QAAQ,EACRC,OAAO,EACPC,QAAQ,EACO;IACf,MAAMC,eAAelB,MAAMmB,OAAO,CAChC,IAAO,CAAA;YACLC,eAAe;YAEf,aAAa;YACbX;YACAE;YACAC;YAEA,YAAY;YACZE;YACAC;YACAC;YACAC;YAEA,2BAA2B;YAC3BI,mBACE,oCAAoC,GACpCC,QAAQC,GAAG,CAACC,QAAQ,KAAK,gBACrB;gBACEjB,KAAK;YACP,IACAN;YAEN,2BAA2B;YAC3BwB,eACE,oCAAoC,GACpCH,QAAQC,GAAG,CAACC,QAAQ,KAAK,gBACrB;gBACEjB,KAAK;YACP,IACAN;QACR,CAAA,GACA;QAACQ;QAAaE;QAAoBC;QAAiBI;QAASC;QAAUH;QAAQC;KAAS;IAEzF,MAAMW,kBAAkB1B,MAAM2B,MAAM,CAAiB;IACrD,qBACE,KAACxB;QAAkBU,WAAWA;kBAC5B,cAAA,KAACR,iBAAiBuB,QAAQ;YAACC,OAAOX;sBAChC,cAAA,MAACZ,wBAAwBsB,QAAQ;gBAACC,OAAOH;;kCACvC,KAACtB;wBAAa0B,SAAS,OAAOrB,gBAAgB;wBAAUsB,YAAYL;;oBACnEhB;;;;;AAKX,EAAE"}
|
|
@@ -1,21 +1,11 @@
|
|
|
1
|
-
import
|
|
2
|
-
import type {
|
|
3
|
-
export type ModalRegistryEntry = ModalElements & Required<Pick<ModalsStateEntry, 'type' | 'id'>>;
|
|
4
|
-
type ModalRefs = {
|
|
5
|
-
[k in keyof ModalElements]: (e: ModalElements[k]) => void;
|
|
6
|
-
};
|
|
7
|
-
export interface ModalRootContextInterface {
|
|
8
|
-
updateModalHeight: VoidFunction;
|
|
9
|
-
registerModal: (data: ModalRegistryEntry) => void;
|
|
10
|
-
onClose?: VoidFunction;
|
|
11
|
-
isInsideModal: boolean;
|
|
12
|
-
}
|
|
13
|
-
export declare const ModalRootContext: React.Context<ModalRootContextInterface>;
|
|
1
|
+
import { type RefObject } from 'react';
|
|
2
|
+
import type { ModalRootContextInterface } from './types';
|
|
14
3
|
/**
|
|
15
|
-
*
|
|
4
|
+
* Сохраняем `ref` компонента `ModalOverlay` из `ModalRoot` в контекст, чтобы можно было пробросить
|
|
5
|
+
* его до `ModalPage` и `ModalCard`.
|
|
6
|
+
*
|
|
7
|
+
* @private
|
|
16
8
|
*/
|
|
17
|
-
export declare
|
|
18
|
-
|
|
19
|
-
};
|
|
20
|
-
export {};
|
|
9
|
+
export declare const ModalRootOverlayContext: import("react").Context<RefObject<HTMLDivElement>>;
|
|
10
|
+
export declare const ModalRootContext: import("react").Context<ModalRootContextInterface>;
|
|
21
11
|
//# sourceMappingURL=ModalRootContext.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModalRootContext.d.ts","sourceRoot":"","sources":["../../../src/components/ModalRoot/ModalRootContext.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"ModalRootContext.d.ts","sourceRoot":"","sources":["../../../src/components/ModalRoot/ModalRootContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEtD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAC;AAEzD;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,oDAA8D,CAAC;AAEnG,eAAO,MAAM,gBAAgB,oDAI3B,CAAC"}
|
|
@@ -1,44 +1,17 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
import { createContext } from "react";
|
|
2
|
+
import { noop } from "@vkontakte/vkjs";
|
|
3
|
+
/**
|
|
4
|
+
* Сохраняем `ref` компонента `ModalOverlay` из `ModalRoot` в контекст, чтобы можно было пробросить
|
|
5
|
+
* его до `ModalPage` и `ModalCard`.
|
|
6
|
+
*
|
|
7
|
+
* @private
|
|
8
|
+
*/ export const ModalRootOverlayContext = /*#__PURE__*/ createContext({
|
|
9
|
+
current: null
|
|
10
|
+
});
|
|
11
|
+
export const ModalRootContext = /*#__PURE__*/ createContext({
|
|
12
|
+
updateModalHeight: noop,
|
|
13
|
+
registerModal: noop,
|
|
8
14
|
isInsideModal: false
|
|
9
15
|
});
|
|
10
|
-
/**
|
|
11
|
-
* All referenced elements must be static
|
|
12
|
-
*/ export function useModalRegistry(id, type) {
|
|
13
|
-
const modalContext = React.useContext(ModalRootContext);
|
|
14
|
-
const elements = React.useRef({}).current;
|
|
15
|
-
useIsomorphicLayoutEffect(()=>{
|
|
16
|
-
if (id !== undefined) {
|
|
17
|
-
modalContext.registerModal(_object_spread_props(_object_spread({}, elements), {
|
|
18
|
-
type,
|
|
19
|
-
id
|
|
20
|
-
}));
|
|
21
|
-
// unset refs on unmount to prevent leak
|
|
22
|
-
const reset = Object.keys(elements).reduce((acc, k)=>_object_spread_props(_object_spread({}, acc), {
|
|
23
|
-
[k]: null
|
|
24
|
-
}), {
|
|
25
|
-
type,
|
|
26
|
-
id
|
|
27
|
-
});
|
|
28
|
-
return ()=>modalContext.registerModal(reset);
|
|
29
|
-
}
|
|
30
|
-
return undefined;
|
|
31
|
-
}, []);
|
|
32
|
-
const refs = React.useRef({
|
|
33
|
-
modalElement: (e)=>elements.modalElement = e,
|
|
34
|
-
innerElement: (e)=>elements.innerElement = e,
|
|
35
|
-
headerElement: (e)=>elements.headerElement = e,
|
|
36
|
-
contentElement: (e)=>elements.contentElement = e,
|
|
37
|
-
bottomInset: (e)=>elements.bottomInset = e
|
|
38
|
-
}).current;
|
|
39
|
-
return {
|
|
40
|
-
refs
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
16
|
|
|
44
17
|
//# sourceMappingURL=ModalRootContext.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/ModalRoot/ModalRootContext.tsx"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"sources":["../../../src/components/ModalRoot/ModalRootContext.tsx"],"sourcesContent":["import { createContext, type RefObject } from 'react';\nimport { noop } from '@vkontakte/vkjs';\nimport type { ModalRootContextInterface } from './types';\n\n/**\n * Сохраняем `ref` компонента `ModalOverlay` из `ModalRoot` в контекст, чтобы можно было пробросить\n * его до `ModalPage` и `ModalCard`.\n *\n * @private\n */\nexport const ModalRootOverlayContext = createContext<RefObject<HTMLDivElement>>({ current: null });\n\nexport const ModalRootContext = createContext<ModalRootContextInterface>({\n updateModalHeight: noop,\n registerModal: noop,\n isInsideModal: false,\n});\n"],"names":["createContext","noop","ModalRootOverlayContext","current","ModalRootContext","updateModalHeight","registerModal","isInsideModal"],"mappings":"AAAA,SAASA,aAAa,QAAwB,QAAQ;AACtD,SAASC,IAAI,QAAQ,kBAAkB;AAGvC;;;;;CAKC,GACD,OAAO,MAAMC,wCAA0BF,cAAyC;IAAEG,SAAS;AAAK,GAAG;AAEnG,OAAO,MAAMC,iCAAmBJ,cAAyC;IACvEK,mBAAmBJ;IACnBK,eAAeL;IACfM,eAAe;AACjB,GAAG"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ModalOverlayProps } from '../../ModalOverlay/ModalOverlay';
|
|
2
|
+
export type VisuallyHiddenModalOverlayProps = ModalOverlayProps;
|
|
3
|
+
/**
|
|
4
|
+
* `ModalRoot` выставляет общий `ModalOverlay` для всех потомков, и чтобы не нарушить логику
|
|
5
|
+
* в `ModalPage` и `ModalCard`, в них прокидывается данный компонент, который визуально не виден,
|
|
6
|
+
* но при этом на нём сохраняется возможность взаимодействия.
|
|
7
|
+
*
|
|
8
|
+
* В `getRooRef` отдаёт ссылку на DOM общего `ModalOverlay`.
|
|
9
|
+
*
|
|
10
|
+
* @private
|
|
11
|
+
*/
|
|
12
|
+
export declare const VisuallyHiddenModalOverlay: ({ visible: visibleExcluded, position: positionExcluded, getRootRef, ...restProps }: VisuallyHiddenModalOverlayProps) => import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
//# sourceMappingURL=VisuallyHiddenModalOverlay.d.ts.map
|
package/dist/components/ModalRoot/VisuallyHiddenModalOverlay/VisuallyHiddenModalOverlay.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VisuallyHiddenModalOverlay.d.ts","sourceRoot":"","sources":["../../../../src/components/ModalRoot/VisuallyHiddenModalOverlay/VisuallyHiddenModalOverlay.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAIzE,MAAM,MAAM,+BAA+B,GAAG,iBAAiB,CAAC;AAEhE;;;;;;;;GAQG;AACH,eAAO,MAAM,0BAA0B,uFAKpC,+BAA+B,4CAYjC,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { _ as _object_spread } from "@swc/helpers/_/_object_spread";
|
|
3
|
+
import { _ as _object_spread_props } from "@swc/helpers/_/_object_spread_props";
|
|
4
|
+
import { _ as _object_without_properties } from "@swc/helpers/_/_object_without_properties";
|
|
5
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
6
|
+
import { useContext } from "react";
|
|
7
|
+
import { setRef } from "../../../lib/utils.js";
|
|
8
|
+
import { ModalRootOverlayContext } from "../ModalRootContext.js";
|
|
9
|
+
/**
|
|
10
|
+
* `ModalRoot` выставляет общий `ModalOverlay` для всех потомков, и чтобы не нарушить логику
|
|
11
|
+
* в `ModalPage` и `ModalCard`, в них прокидывается данный компонент, который визуально не виден,
|
|
12
|
+
* но при этом на нём сохраняется возможность взаимодействия.
|
|
13
|
+
*
|
|
14
|
+
* В `getRooRef` отдаёт ссылку на DOM общего `ModalOverlay`.
|
|
15
|
+
*
|
|
16
|
+
* @private
|
|
17
|
+
*/ export const VisuallyHiddenModalOverlay = (_param)=>{
|
|
18
|
+
var { visible: visibleExcluded, position: positionExcluded, getRootRef } = _param, restProps = _object_without_properties(_param, [
|
|
19
|
+
"visible",
|
|
20
|
+
"position",
|
|
21
|
+
"getRootRef"
|
|
22
|
+
]);
|
|
23
|
+
const ref = useContext(ModalRootOverlayContext);
|
|
24
|
+
return /*#__PURE__*/ _jsx("div", _object_spread_props(_object_spread({}, restProps), {
|
|
25
|
+
"aria-hidden": "true",
|
|
26
|
+
className: "vkuiVisuallyHiddenModalOverlay__host",
|
|
27
|
+
ref: function handleCurrentRefForForwardContextRef() {
|
|
28
|
+
setRef(ref.current, getRootRef);
|
|
29
|
+
}
|
|
30
|
+
}));
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
//# sourceMappingURL=VisuallyHiddenModalOverlay.js.map
|
package/dist/components/ModalRoot/VisuallyHiddenModalOverlay/VisuallyHiddenModalOverlay.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/ModalRoot/VisuallyHiddenModalOverlay/VisuallyHiddenModalOverlay.tsx"],"sourcesContent":["'use client';\n\nimport { useContext } from 'react';\nimport { setRef } from '../../../lib/utils';\nimport type { ModalOverlayProps } from '../../ModalOverlay/ModalOverlay';\nimport { ModalRootOverlayContext } from '../ModalRootContext';\nimport styles from './VisuallyHiddenModalOverlay.module.css';\n\nexport type VisuallyHiddenModalOverlayProps = ModalOverlayProps;\n\n/**\n * `ModalRoot` выставляет общий `ModalOverlay` для всех потомков, и чтобы не нарушить логику\n * в `ModalPage` и `ModalCard`, в них прокидывается данный компонент, который визуально не виден,\n * но при этом на нём сохраняется возможность взаимодействия.\n *\n * В `getRooRef` отдаёт ссылку на DOM общего `ModalOverlay`.\n *\n * @private\n */\nexport const VisuallyHiddenModalOverlay = ({\n visible: visibleExcluded,\n position: positionExcluded,\n getRootRef,\n ...restProps\n}: VisuallyHiddenModalOverlayProps) => {\n const ref = useContext(ModalRootOverlayContext);\n return (\n <div\n {...restProps}\n aria-hidden=\"true\"\n className={styles.host}\n ref={function handleCurrentRefForForwardContextRef() {\n setRef(ref.current, getRootRef);\n }}\n />\n );\n};\n"],"names":["useContext","setRef","ModalRootOverlayContext","VisuallyHiddenModalOverlay","visible","visibleExcluded","position","positionExcluded","getRootRef","restProps","ref","div","aria-hidden","className","handleCurrentRefForForwardContextRef","current"],"mappings":"AAAA;;;;;AAEA,SAASA,UAAU,QAAQ,QAAQ;AACnC,SAASC,MAAM,QAAQ,wBAAqB;AAE5C,SAASC,uBAAuB,QAAQ,yBAAsB;AAK9D;;;;;;;;CAQC,GACD,OAAO,MAAMC,6BAA6B;QAAC,EACzCC,SAASC,eAAe,EACxBC,UAAUC,gBAAgB,EAC1BC,UAAU,EAEsB,WAD7BC;QAHHL;QACAE;QACAE;;IAGA,MAAME,MAAMV,WAAWE;IACvB,qBACE,KAACS,+CACKF;QACJG,eAAY;QACZC,SAAS;QACTH,KAAK,SAASI;YACZb,OAAOS,IAAIK,OAAO,EAAEP;QACtB;;AAGN,EAAE"}
|
|
@@ -1,11 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
import type {
|
|
3
|
-
|
|
1
|
+
/** TODO [>=8] Удалить deprecated типы */
|
|
2
|
+
import type { AppRootPortalProps } from '../AppRoot/AppRootPortal';
|
|
3
|
+
/**
|
|
4
|
+
* @deprecated будет удалён в **VKUI v8**
|
|
5
|
+
*/
|
|
4
6
|
export type ModalType = 'page' | 'card';
|
|
7
|
+
/**
|
|
8
|
+
* @deprecated будет удалён в **VKUI v8**
|
|
9
|
+
*/
|
|
5
10
|
export type TranslateRange = [number, number];
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
11
|
+
/**
|
|
12
|
+
* @deprecated будет удалён в **VKUI v8**
|
|
13
|
+
*/
|
|
9
14
|
export interface ModalElements {
|
|
10
15
|
modalElement?: HTMLElement | null;
|
|
11
16
|
innerElement?: HTMLElement | null;
|
|
@@ -13,6 +18,9 @@ export interface ModalElements {
|
|
|
13
18
|
contentElement?: HTMLElement | null;
|
|
14
19
|
bottomInset?: HTMLElement | null;
|
|
15
20
|
}
|
|
21
|
+
/**
|
|
22
|
+
* @deprecated будет удалён в **VKUI v8**
|
|
23
|
+
*/
|
|
16
24
|
export interface ModalsStateEntry extends ModalElements {
|
|
17
25
|
id: string | null;
|
|
18
26
|
/**
|
|
@@ -62,38 +70,61 @@ export interface ModalsStateEntry extends ModalElements {
|
|
|
62
70
|
*/
|
|
63
71
|
preventClose?: boolean;
|
|
64
72
|
}
|
|
65
|
-
export
|
|
66
|
-
|
|
67
|
-
|
|
73
|
+
export type ModalRootActiveModal = string | null;
|
|
74
|
+
export type ModalRootCallbackFunction = (modalId: string) => void;
|
|
75
|
+
type ModalRootBaseProps = {
|
|
76
|
+
activeModal?: ModalRootActiveModal;
|
|
77
|
+
/**
|
|
78
|
+
* `data-testid` для маски
|
|
79
|
+
*/
|
|
80
|
+
modalOverlayTestId?: string;
|
|
81
|
+
/**
|
|
82
|
+
* Отключает фокус на контейнер диалогового окна при открытии.
|
|
83
|
+
*/
|
|
84
|
+
noFocusToDialog?: boolean;
|
|
85
|
+
usePortal?: AppRootPortalProps['usePortal'];
|
|
68
86
|
/**
|
|
69
87
|
* Будет вызвано при начале открытия активной модалки с её id
|
|
70
88
|
*/
|
|
71
|
-
onOpen?:
|
|
89
|
+
onOpen?: ModalRootCallbackFunction;
|
|
72
90
|
/**
|
|
73
91
|
* Будет вызвано при окончательном открытии активной модалки с её id
|
|
74
92
|
*/
|
|
75
|
-
onOpened?:
|
|
93
|
+
onOpened?: ModalRootCallbackFunction;
|
|
76
94
|
/**
|
|
77
95
|
* Будет вызвано при начале закрытия активной модалки с её id
|
|
78
96
|
*/
|
|
79
|
-
onClose?:
|
|
97
|
+
onClose?: ModalRootCallbackFunction;
|
|
80
98
|
/**
|
|
81
99
|
* Будет вызвано при окончательном закрытии активной модалки с её id
|
|
82
100
|
*/
|
|
83
|
-
onClosed?:
|
|
101
|
+
onClosed?: ModalRootCallbackFunction;
|
|
102
|
+
};
|
|
103
|
+
export interface ModalRootProps extends ModalRootBaseProps {
|
|
104
|
+
children: React.ReactElement | Iterable<React.ReactElement>;
|
|
105
|
+
}
|
|
106
|
+
type ModalRootContextBaseInterface = {
|
|
84
107
|
/**
|
|
85
|
-
*
|
|
108
|
+
* Обозначает, в контексте ли модального окна мы сейчас.
|
|
86
109
|
*/
|
|
87
|
-
|
|
110
|
+
isInsideModal: boolean;
|
|
88
111
|
/**
|
|
89
|
-
*
|
|
112
|
+
* С **VKUI v7** задача с обновлением высоты контента при `dynamicContentHeight` решается через CSS.
|
|
113
|
+
*
|
|
114
|
+
* @deprecated будет удалён в **VKUI v8**
|
|
90
115
|
*/
|
|
91
|
-
|
|
92
|
-
}
|
|
93
|
-
export interface ModalRootWithDOMProps extends HasPlatform, ModalRootProps, DOMContextInterface {
|
|
116
|
+
updateModalHeight: VoidFunction;
|
|
94
117
|
/**
|
|
95
|
-
*
|
|
118
|
+
* С **VKUI v7** регистрация модальных окон больше не требуется.
|
|
119
|
+
*
|
|
120
|
+
* @deprecated будет удалён в **VKUI v8**
|
|
96
121
|
*/
|
|
97
|
-
|
|
122
|
+
registerModal: (data: ModalElements & Required<Pick<ModalsStateEntry, 'type' | 'id'>>) => void;
|
|
123
|
+
};
|
|
124
|
+
export interface ModalRootContextInterface extends ModalRootContextBaseInterface, ModalRootBaseProps {
|
|
125
|
+
}
|
|
126
|
+
export interface UseModalRootContext extends ModalRootContextBaseInterface {
|
|
127
|
+
onClose?: VoidFunction;
|
|
98
128
|
}
|
|
129
|
+
export {};
|
|
99
130
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/ModalRoot/types.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/ModalRoot/types.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAEnE;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AAExC;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAE9C;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,YAAY,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAClC,YAAY,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAClC,aAAa,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IACnC,cAAc,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IACpC,WAAW,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,aAAa;IACrD,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB;;OAEG;IACH,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB;;OAEG;IACH,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB;;OAEG;IACH,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB;;OAEG;IACH,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,IAAI,CAAC,EAAE,SAAS,CAAC;IAEjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,iBAAiB,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACnC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,wBAAwB,CAAC,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;IAEzD,aAAa,CAAC,EAAE,cAAc,CAAC;IAC/B,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,WAAW,CAAC,EAAE,cAAc,CAAC;IAC7B;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,IAAI,CAAC;AAEjD,MAAM,MAAM,yBAAyB,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;AAElE,KAAK,kBAAkB,GAAG;IACxB,WAAW,CAAC,EAAE,oBAAoB,CAAC;IAEnC;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B,SAAS,CAAC,EAAE,kBAAkB,CAAC,WAAW,CAAC,CAAC;IAE5C;;OAEG;IACH,MAAM,CAAC,EAAE,yBAAyB,CAAC;IAEnC;;OAEG;IACH,QAAQ,CAAC,EAAE,yBAAyB,CAAC;IAErC;;OAEG;IACH,OAAO,CAAC,EAAE,yBAAyB,CAAC;IAEpC;;OAEG;IACH,QAAQ,CAAC,EAAE,yBAAyB,CAAC;CACtC,CAAC;AAEF,MAAM,WAAW,cAAe,SAAQ,kBAAkB;IACxD,QAAQ,EAAE,KAAK,CAAC,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;CAC7D;AAED,KAAK,6BAA6B,GAAG;IACnC;;OAEG;IACH,aAAa,EAAE,OAAO,CAAC;IAEvB;;;;OAIG;IACH,iBAAiB,EAAE,YAAY,CAAC;IAEhC;;;;OAIG;IACH,aAAa,EAAE,CAAC,IAAI,EAAE,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC;CAChG,CAAC;AAEF,MAAM,WAAW,yBACf,SAAQ,6BAA6B,EACnC,kBAAkB;CAAG;AAEzB,MAAM,WAAW,mBAAoB,SAAQ,6BAA6B;IACxE,OAAO,CAAC,EAAE,YAAY,CAAC;CACxB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/ModalRoot/types.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["../../../src/components/ModalRoot/types.ts"],"sourcesContent":["/** TODO [>=8] Удалить deprecated типы */\nimport type { AppRootPortalProps } from '../AppRoot/AppRootPortal';\n\n/**\n * @deprecated будет удалён в **VKUI v8**\n */\nexport type ModalType = 'page' | 'card';\n\n/**\n * @deprecated будет удалён в **VKUI v8**\n */\nexport type TranslateRange = [number, number];\n\n/**\n * @deprecated будет удалён в **VKUI v8**\n */\nexport interface ModalElements {\n modalElement?: HTMLElement | null;\n innerElement?: HTMLElement | null;\n headerElement?: HTMLElement | null;\n contentElement?: HTMLElement | null;\n bottomInset?: HTMLElement | null;\n}\n\n/**\n * @deprecated будет удалён в **VKUI v8**\n */\nexport interface ModalsStateEntry extends ModalElements {\n id: string | null;\n /**\n * Событие начала открытия модалки.\n */\n onOpen?: VoidFunction;\n /**\n * Событие открытия модалки.\n */\n onOpened?: VoidFunction;\n /**\n * Событие начала закрытия модалки.\n */\n onClose?: VoidFunction;\n /**\n * Событие закрытия модалки.\n */\n onClosed?: VoidFunction;\n type?: ModalType;\n\n settlingHeight?: number;\n expandable?: boolean;\n\n /**\n * Процент текущего сдвига модалки\n */\n translateY?: number;\n /**\n * Процент сдвига модалки в изначальном состоянии\n */\n translateYFrom?: number;\n /**\n * Процент сдвига модалки во время взаимодействия с ней (потянуть, чтобы открыть или закрыть)\n */\n translateYCurrent?: number;\n\n touchStartContentScrollTop?: number;\n touchMovePositive?: boolean | null;\n touchShiftYPercent?: number;\n\n expanded?: boolean;\n collapsed?: boolean;\n hidden?: boolean;\n\n contentScrolled?: boolean;\n contentScrollStopTimeout?: ReturnType<typeof setTimeout>;\n\n expandedRange?: TranslateRange;\n collapsedRange?: TranslateRange;\n hiddenRange?: TranslateRange;\n /**\n * Отключает возможность закрыть модалку стандартными способами\n */\n preventClose?: boolean;\n}\n\nexport type ModalRootActiveModal = string | null;\n\nexport type ModalRootCallbackFunction = (modalId: string) => void;\n\ntype ModalRootBaseProps = {\n activeModal?: ModalRootActiveModal;\n\n /**\n * `data-testid` для маски\n */\n modalOverlayTestId?: string;\n\n /**\n * Отключает фокус на контейнер диалогового окна при открытии.\n */\n noFocusToDialog?: boolean;\n\n usePortal?: AppRootPortalProps['usePortal'];\n\n /**\n * Будет вызвано при начале открытия активной модалки с её id\n */\n onOpen?: ModalRootCallbackFunction;\n\n /**\n * Будет вызвано при окончательном открытии активной модалки с её id\n */\n onOpened?: ModalRootCallbackFunction;\n\n /**\n * Будет вызвано при начале закрытия активной модалки с её id\n */\n onClose?: ModalRootCallbackFunction;\n\n /**\n * Будет вызвано при окончательном закрытии активной модалки с её id\n */\n onClosed?: ModalRootCallbackFunction;\n};\n\nexport interface ModalRootProps extends ModalRootBaseProps {\n children: React.ReactElement | Iterable<React.ReactElement>;\n}\n\ntype ModalRootContextBaseInterface = {\n /**\n * Обозначает, в контексте ли модального окна мы сейчас.\n */\n isInsideModal: boolean;\n\n /**\n * С **VKUI v7** задача с обновлением высоты контента при `dynamicContentHeight` решается через CSS.\n *\n * @deprecated будет удалён в **VKUI v8**\n */\n updateModalHeight: VoidFunction;\n\n /**\n * С **VKUI v7** регистрация модальных окон больше не требуется.\n *\n * @deprecated будет удалён в **VKUI v8**\n */\n registerModal: (data: ModalElements & Required<Pick<ModalsStateEntry, 'type' | 'id'>>) => void;\n};\n\nexport interface ModalRootContextInterface\n extends ModalRootContextBaseInterface,\n ModalRootBaseProps {}\n\nexport interface UseModalRootContext extends ModalRootContextBaseInterface {\n onClose?: VoidFunction;\n}\n"],"names":[],"mappings":"AAAA,uCAAuC,GAwJvC,WAEC"}
|
|
@@ -1,41 +1,30 @@
|
|
|
1
|
-
import
|
|
2
|
-
import type
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
import type { AnyFunction } from '../../types';
|
|
2
|
+
import { type ModalOverlayProps } from '../ModalOverlay/ModalOverlay';
|
|
3
|
+
export interface UseModalManager {
|
|
4
|
+
id: string;
|
|
5
|
+
open: boolean;
|
|
6
|
+
keepMounted: boolean;
|
|
7
|
+
modalOverlayTestId?: string;
|
|
8
|
+
noFocusToDialog?: boolean;
|
|
9
|
+
onOpen?: AnyFunction;
|
|
10
|
+
onOpened?: AnyFunction;
|
|
11
|
+
onClose?: AnyFunction;
|
|
12
|
+
onClosed?: AnyFunction;
|
|
10
13
|
}
|
|
11
|
-
export interface
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
14
|
+
export interface UseModalManagerResolvedProps {
|
|
15
|
+
open: boolean;
|
|
16
|
+
noFocusToDialog?: boolean;
|
|
17
|
+
modalOverlayTestId?: string;
|
|
18
|
+
ModalOverlay: React.ComponentType<ModalOverlayProps>;
|
|
19
|
+
onOpen?: AnyFunction;
|
|
20
|
+
onOpened?: AnyFunction;
|
|
21
|
+
onClose?: AnyFunction;
|
|
22
|
+
onClosed?: AnyFunction;
|
|
18
23
|
}
|
|
19
|
-
export
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
* 1. activeModal: m1, exitingModal: null, enteringModal: null, триггер перехода
|
|
26
|
-
* 2. activeModal: m2, exitingModal: m1, enteringModal: null, рендерим m2 чтобы прошел init, начинаем анимацию выхода
|
|
27
|
-
* одновременный переход между ModalPage:
|
|
28
|
-
* 3a. activeModal: m2, exitingModal: m1, enteringModal: m2
|
|
29
|
-
* 4a. exitingModal и enteringModal переходят в null в порядке завершения анимации
|
|
30
|
-
* ИЛИ дожидаемся скрытия ModalCard
|
|
31
|
-
* 3b. activeModal: m2, exitingModal: null, enteringModal: m2
|
|
32
|
-
* 4b. enteringModal переходит в null после завершения анимации
|
|
33
|
-
* 5. activeModal: m2, exitingModal: null, enteringModal: null, переход закончен
|
|
34
|
-
*/
|
|
35
|
-
export declare function useModalManager(activeModal: string | null | undefined, children: React.ReactNode | React.ReactNode[], onOpen?: (id: string) => void, onOpened?: (id: string) => void, onClose?: (id: string) => void, onClosed?: (id: string) => void, initModal?: (state: ModalsStateEntry) => void): ModalTransitionProps;
|
|
36
|
-
type WithModalManager<Props extends ModalTransitionProps> = HasChildren & Omit<Props, keyof ModalTransitionProps> & {
|
|
37
|
-
activeModal?: string | null;
|
|
38
|
-
};
|
|
39
|
-
export declare function withModalManager(initModal?: (a: ModalsStateEntry) => void): <Props extends ModalTransitionProps>(Wrapped: React.ComponentType<Props>) => React.ComponentType<WithModalManager<Props>>;
|
|
40
|
-
export {};
|
|
24
|
+
export type UseModalManagerResult = {
|
|
25
|
+
mounted: false;
|
|
26
|
+
} | ({
|
|
27
|
+
mounted: true;
|
|
28
|
+
} & UseModalManagerResolvedProps);
|
|
29
|
+
export declare const useModalManager: ({ id, open, keepMounted, modalOverlayTestId, noFocusToDialog, onOpen, onOpened, onClose, onClosed, }: UseModalManager) => UseModalManagerResult;
|
|
41
30
|
//# sourceMappingURL=useModalManager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useModalManager.d.ts","sourceRoot":"","sources":["../../../src/components/ModalRoot/useModalManager.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"useModalManager.d.ts","sourceRoot":"","sources":["../../../src/components/ModalRoot/useModalManager.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAgB,KAAK,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAKpF,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,OAAO,CAAC;IACd,WAAW,EAAE,OAAO,CAAC;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,QAAQ,CAAC,EAAE,WAAW,CAAC;CACxB;AAED,MAAM,WAAW,4BAA4B;IAC3C,IAAI,EAAE,OAAO,CAAC;IACd,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,YAAY,EAAE,KAAK,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;IACrD,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,QAAQ,CAAC,EAAE,WAAW,CAAC;CACxB;AAED,MAAM,MAAM,qBAAqB,GAC7B;IAAE,OAAO,EAAE,KAAK,CAAA;CAAE,GAClB,CAAC;IAAE,OAAO,EAAE,IAAI,CAAA;CAAE,GAAG,4BAA4B,CAAC,CAAC;AAEvD,eAAO,MAAM,eAAe,yGAUzB,eAAe,KAAG,qBAwCpB,CAAC"}
|