@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
|
@@ -4,157 +4,130 @@ import { _ as _object_spread_props } from "@swc/helpers/_/_object_spread_props";
|
|
|
4
4
|
import { _ as _object_without_properties } from "@swc/helpers/_/_object_without_properties";
|
|
5
5
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
6
6
|
import * as React from "react";
|
|
7
|
-
import { classNames } from "@vkontakte/vkjs";
|
|
8
|
-
import { useAdaptivity } from "../../hooks/useAdaptivity.js";
|
|
9
7
|
import { useKeyboardInputTracker } from "../../hooks/useKeyboardInputTracker.js";
|
|
10
8
|
import { useObjectMemo } from "../../hooks/useObjectMemo.js";
|
|
9
|
+
import { useSyncHTMLWithBaseVKUIClasses } from "../../hooks/useSyncHTMLWithBaseVKUIClasses.js";
|
|
10
|
+
import { useSyncHTMLWithTokens } from "../../hooks/useSyncHTMLWithTokens.js";
|
|
11
11
|
import { getDocumentBody } from "../../lib/dom.js";
|
|
12
|
-
import { useTokensClassName } from "../../lib/tokens/index.js";
|
|
13
12
|
import { useIsomorphicLayoutEffect } from "../../lib/useIsomorphicLayoutEffect.js";
|
|
14
|
-
import { useConfigProvider } from "../ConfigProvider/ConfigProviderContext.js";
|
|
15
13
|
import { AppRootContext } from "./AppRootContext.js";
|
|
14
|
+
import { AppRootStyleContainer } from "./AppRootStyleContainer.js";
|
|
16
15
|
import { ElementScrollController, GlobalScrollController } from "./ScrollContext.js";
|
|
17
|
-
import { extractPortalRootByProp
|
|
16
|
+
import { extractPortalRootByProp } from "./helpers.js";
|
|
18
17
|
/**
|
|
19
18
|
* @see https://vkcom.github.io/VKUI/#/AppRoot
|
|
20
19
|
*/ export const AppRoot = (_param)=>{
|
|
21
|
-
var { children, mode = 'full', scroll = 'global', portalRoot: portalRootProp
|
|
20
|
+
var { children, mode = 'full', scroll = 'global', portalRoot: portalRootProp, disablePortal = false, disableParentTransformForPositionFixedElements, safeAreaInsets: safeAreaInsetsProp, layout, userSelectMode, disableSettingVKUIClassesInRuntime } = _param, props = _object_without_properties(_param, [
|
|
22
21
|
"children",
|
|
23
22
|
"mode",
|
|
24
23
|
"scroll",
|
|
25
24
|
"portalRoot",
|
|
26
25
|
"disablePortal",
|
|
27
26
|
"disableParentTransformForPositionFixedElements",
|
|
28
|
-
"className",
|
|
29
27
|
"safeAreaInsets",
|
|
30
28
|
"layout",
|
|
31
|
-
"userSelectMode"
|
|
29
|
+
"userSelectMode",
|
|
30
|
+
"disableSettingVKUIClassesInRuntime"
|
|
32
31
|
]);
|
|
33
|
-
const { hasPointer, sizeX = 'none', sizeY = 'none' } = useAdaptivity();
|
|
34
|
-
const tokensClassName = useTokensClassName();
|
|
35
|
-
const safeAreaInsets = useObjectMemo(safeAreaInsetsProp);
|
|
36
|
-
const isKeyboardInputActiveRef = useKeyboardInputTracker();
|
|
37
32
|
const appRootRef = React.useRef(null);
|
|
38
|
-
const
|
|
39
|
-
|
|
33
|
+
const popoutModalContainerRef = React.useRef(null);
|
|
34
|
+
const [portalRoot, setPortalRoot] = React.useState(portalRootProp ? extractPortalRootByProp(portalRootProp) : null);
|
|
35
|
+
useIsomorphicLayoutEffect(function syncPortalRootWithPortalRootProp() {
|
|
40
36
|
const portalByProp = portalRootProp ? extractPortalRootByProp(portalRootProp) : null;
|
|
41
|
-
if (
|
|
42
|
-
|
|
43
|
-
return function cleanup() {
|
|
44
|
-
portalRootRef.current = null;
|
|
45
|
-
};
|
|
37
|
+
if (portalRootProp !== undefined) {
|
|
38
|
+
setPortalRoot(portalByProp);
|
|
46
39
|
}
|
|
47
|
-
const documentBody = getDocumentBody(appRootRef.current);
|
|
48
|
-
const portal = documentBody.ownerDocument.createElement('div');
|
|
49
|
-
documentBody.appendChild(portal);
|
|
50
|
-
portalRootRef.current = portal;
|
|
51
|
-
return function cleanup() {
|
|
52
|
-
documentBody.removeChild(portal);
|
|
53
|
-
portalRootRef.current = null;
|
|
54
|
-
};
|
|
55
40
|
}, [
|
|
56
41
|
portalRootProp
|
|
57
42
|
]);
|
|
58
|
-
useIsomorphicLayoutEffect(function
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
43
|
+
useIsomorphicLayoutEffect(function removePortalRootOnUnmount() {
|
|
44
|
+
// Контейнер PortalRoot создаётся при первом вызове модалки или
|
|
45
|
+
// поповера использующего AppRootPortal.
|
|
46
|
+
// Потом он переиспользуется и не удаляется пока
|
|
47
|
+
// приложение не размонтируется.
|
|
48
|
+
// И создаётся только если в приложение не был передан
|
|
49
|
+
// пользовательский контейнер через свойство portalRootProp
|
|
50
|
+
// Сделано для поддержки SSR, чтобы при старте приложения
|
|
51
|
+
// никаких новых нод в DOM не создавалось.
|
|
63
52
|
const documentBody = getDocumentBody(appRootRef.current);
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
/* eslint-disable no-restricted-properties */ switch(mode){
|
|
73
|
-
case 'full':
|
|
74
|
-
{
|
|
75
|
-
if (parentElement) {
|
|
76
|
-
parentElement.classList.add(...baseClassNames);
|
|
77
|
-
}
|
|
78
|
-
documentElement.classList.add(...stylesClassNames, 'vkui');
|
|
79
|
-
const unsetSafeAreaInsets = setSafeAreaInsets(safeAreaInsets, documentElement);
|
|
80
|
-
return function cleanup() {
|
|
81
|
-
if (parentElement) {
|
|
82
|
-
parentElement.classList.remove(...baseClassNames);
|
|
83
|
-
}
|
|
84
|
-
documentElement.classList.remove(...stylesClassNames, 'vkui');
|
|
85
|
-
unsetSafeAreaInsets();
|
|
86
|
-
};
|
|
87
|
-
}
|
|
88
|
-
case 'embedded':
|
|
89
|
-
{
|
|
90
|
-
if (parentElement) {
|
|
91
|
-
parentElement.classList.add(...baseClassNames, ...stylesClassNames);
|
|
92
|
-
if (!disableParentTransformForPositionFixedElements) {
|
|
93
|
-
parentElement.style.setProperty('transform', 'translate3d(0, 0, 0)');
|
|
94
|
-
}
|
|
95
|
-
const unsetSafeAreaInsets = setSafeAreaInsets(safeAreaInsets, parentElement, portalRootRef.current); // prettier-ignore
|
|
96
|
-
return function cleanup() {
|
|
97
|
-
parentElement.classList.remove(...baseClassNames, ...stylesClassNames);
|
|
98
|
-
if (!disableParentTransformForPositionFixedElements) {
|
|
99
|
-
parentElement.style.removeProperty('transform');
|
|
100
|
-
}
|
|
101
|
-
unsetSafeAreaInsets();
|
|
102
|
-
};
|
|
103
|
-
}
|
|
104
|
-
/* istanbul ignore next: node.parentElement может быть null, но такой кейс в теории невозможен */ return;
|
|
105
|
-
}
|
|
106
|
-
/* istanbul ignore next: не покрывается за счёт теста на <AppRoot mode="partial" /> */ case 'partial':
|
|
107
|
-
{
|
|
108
|
-
return;
|
|
53
|
+
return function cleanup() {
|
|
54
|
+
if (portalRoot) {
|
|
55
|
+
const isPortalRootPassedByProps = Boolean(portalRootProp);
|
|
56
|
+
if (!isPortalRootPassedByProps) {
|
|
57
|
+
// удаляем portalRoot из дома только если он
|
|
58
|
+
// был создан в AppRootPortal.
|
|
59
|
+
// Если он был передан через пропы - удалять нельзя
|
|
60
|
+
documentBody.removeChild(portalRoot);
|
|
109
61
|
}
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
disableParentTransformForPositionFixedElements,
|
|
115
|
-
tokensClassName,
|
|
116
|
-
sizeX,
|
|
117
|
-
sizeY,
|
|
118
|
-
safeAreaInsets
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
}, [
|
|
65
|
+
portalRootProp
|
|
119
66
|
]);
|
|
120
67
|
const ScrollController = React.useMemo(()=>scroll === 'contain' ? ElementScrollController : GlobalScrollController, [
|
|
121
68
|
scroll
|
|
122
69
|
]);
|
|
70
|
+
const isKeyboardInputActiveRef = useKeyboardInputTracker();
|
|
71
|
+
const safeAreaInsets = useObjectMemo(safeAreaInsetsProp);
|
|
123
72
|
const contextValue = React.useMemo(()=>({
|
|
124
73
|
appRoot: appRootRef,
|
|
125
|
-
portalRoot
|
|
74
|
+
portalRoot,
|
|
75
|
+
popoutModalRoot: popoutModalContainerRef,
|
|
76
|
+
setPortalRoot,
|
|
77
|
+
safeAreaInsets,
|
|
126
78
|
embedded: mode === 'embedded',
|
|
127
79
|
mode,
|
|
128
80
|
disablePortal,
|
|
129
81
|
layout,
|
|
130
82
|
get keyboardInput () {
|
|
131
83
|
return isKeyboardInputActiveRef.current;
|
|
132
|
-
}
|
|
84
|
+
},
|
|
85
|
+
userSelectMode
|
|
133
86
|
}), [
|
|
87
|
+
portalRoot,
|
|
134
88
|
disablePortal,
|
|
135
89
|
isKeyboardInputActiveRef,
|
|
136
90
|
layout,
|
|
137
|
-
mode
|
|
91
|
+
mode,
|
|
92
|
+
safeAreaInsets,
|
|
93
|
+
userSelectMode
|
|
138
94
|
]);
|
|
139
|
-
|
|
95
|
+
/*
|
|
96
|
+
* Вешаем класс токенов на html в режиме full.
|
|
97
|
+
* Это необходимо, чтобы цвета html элемента и скроллбара соответствовали текущей цветовой схеме:
|
|
98
|
+
* - фон html элемента виден, если пользователь оверскролит. Тогда возникает анимация bounce-эффекта и виден фон html элемента. Без токенов в черной теме будет выглядывать белый фон.
|
|
99
|
+
* - цвет системного сколлбара зависит от color-sheme свойства, значение которого задётся токенами и должно быть выставлено именно на html элементе.
|
|
100
|
+
* В режме SSR пользователи сами могу задать этот класс на html-элементе. главное, чтобы он соответствовал переданным platform и appearence свойствам.
|
|
101
|
+
*/ useSyncHTMLWithTokens({
|
|
102
|
+
appRootRef,
|
|
103
|
+
enable: mode === 'full'
|
|
104
|
+
});
|
|
105
|
+
/*
|
|
106
|
+
* По умолчанию VKUI будет выставлять .vkui на html и .vkui__root на контейнере в режиме full.
|
|
107
|
+
* В режиме embedded будет выставлять только .vkui__root на контейнере.
|
|
108
|
+
*/ useSyncHTMLWithBaseVKUIClasses({
|
|
109
|
+
appRootRef,
|
|
110
|
+
mode,
|
|
111
|
+
enable: mode !== 'partial' && !disableSettingVKUIClassesInRuntime
|
|
112
|
+
});
|
|
113
|
+
return mode === 'partial' ? /*#__PURE__*/ _jsx(AppRootContext.Provider, {
|
|
140
114
|
value: contextValue,
|
|
141
115
|
children: /*#__PURE__*/ _jsx(ScrollController, {
|
|
142
116
|
elRef: appRootRef,
|
|
143
117
|
children: children
|
|
144
118
|
})
|
|
119
|
+
}) : /*#__PURE__*/ _jsx(AppRootContext.Provider, {
|
|
120
|
+
value: contextValue,
|
|
121
|
+
children: /*#__PURE__*/ _jsx(AppRootStyleContainer, _object_spread_props(_object_spread({
|
|
122
|
+
getRootRef: appRootRef,
|
|
123
|
+
className: mode === 'embedded' && !disableParentTransformForPositionFixedElements ? "vkuiAppRoot__transformForPositionFixedElements" : undefined
|
|
124
|
+
}, props), {
|
|
125
|
+
children: /*#__PURE__*/ _jsx(ScrollController, {
|
|
126
|
+
elRef: appRootRef,
|
|
127
|
+
children: children
|
|
128
|
+
})
|
|
129
|
+
}))
|
|
145
130
|
});
|
|
146
|
-
const { isWebView } = useConfigProvider();
|
|
147
|
-
const userSelectModeClassName = getUserSelectModeClassName({
|
|
148
|
-
userSelectMode,
|
|
149
|
-
isWebView,
|
|
150
|
-
hasPointer
|
|
151
|
-
});
|
|
152
|
-
return mode === 'partial' ? content : /*#__PURE__*/ _jsx("div", _object_spread_props(_object_spread({
|
|
153
|
-
ref: appRootRef,
|
|
154
|
-
className: classNames("vkuiAppRoot__host", userSelectModeClassName, className)
|
|
155
|
-
}, props), {
|
|
156
|
-
children: content
|
|
157
|
-
}));
|
|
158
131
|
};
|
|
159
132
|
|
|
160
133
|
//# sourceMappingURL=AppRoot.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/AppRoot/AppRoot.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { useKeyboardInputTracker } from '../../hooks/useKeyboardInputTracker';\nimport { useObjectMemo } from '../../hooks/useObjectMemo';\nimport { getDocumentBody } from '../../lib/dom';\nimport { useTokensClassName } from '../../lib/tokens';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport { useConfigProvider } from '../ConfigProvider/ConfigProviderContext';\nimport { AppRootContext } from './AppRootContext';\nimport { ElementScrollController, GlobalScrollController } from './ScrollContext';\nimport {\n extractPortalRootByProp,\n getClassNamesByMode,\n getParentElement,\n getUserSelectModeClassName,\n setSafeAreaInsets,\n} from './helpers';\nimport type {\n AppRootLayout,\n AppRootMode,\n AppRootScroll,\n AppRootUserSelectMode,\n SafeAreaInsets,\n} from './types';\nimport styles from './AppRoot.module.css';\n\nexport interface AppRootProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Режим встраивания */\n mode?: AppRootMode;\n /**\n * - `global` (по умолчанию) — VKUI-приложение скроллится вместе со страницей.\n * - `contain` — VKUI-приложение живет в отдельной зоне и скроллится независимо внутри `AppRoot` (например, в модалке).\n *\n * Полезно при использовании `mode=\"embedded\"`.\n */\n scroll?: AppRootScroll;\n /**\n * см. документацию [mdn web docs | env#values](https://developer.mozilla.org/en-US/docs/Web/CSS/env#values).\n */\n safeAreaInsets?: SafeAreaInsets;\n /**\n * Кастомный root-элемент портала\n */\n portalRoot?: HTMLElement | React.RefObject<HTMLElement> | null;\n /**\n * Отключает рендер всплывающих компонентов в отдельном контейнере\n */\n disablePortal?: boolean;\n /**\n * По умолчанию, mode=\"embedded\" переносит систему координат элементов с `position: fixed` на\n * свой контейнер через `transform: translate3d(0, 0, 0)`.\n *\n * Это поведение можно отключить с помощью этого параметра.\n */\n disableParentTransformForPositionFixedElements?: boolean;\n /**\n * Глобально задаёт тип оформления макета для компонентов\n * [Panel](https://vkcom.github.io/VKUI/#/Panel) и [Group](https://vkcom.github.io/VKUI/#/Group).\n */\n layout?: AppRootLayout;\n /**\n * Задаёт режим выбора текста (выделения текста) для всего приложения.\n * По умолчанию, если режим не задан, запрещает выбор текста в приложениях,\n * запущенных в webview (по значению свойства `isWebView` из [ConfigProvider](https://vkcom.github.io/VKUI/#/ConfigProvider)).\n *\n * - `enabled-with-pointer` – разрешает выбор текста, если устройство ввода типа `pointer` (например, `мышь`), в остальных случаях запрещает;\n * - `disabled` – запрещает выбор текста;\n * - `enabled` – разрешает выбор текста.\n *\n * @since 6.2.0\n */\n userSelectMode?: AppRootUserSelectMode;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/AppRoot\n */\nexport const AppRoot = ({\n children,\n mode = 'full',\n scroll = 'global',\n portalRoot: portalRootProp = null,\n disablePortal = false,\n disableParentTransformForPositionFixedElements,\n className,\n safeAreaInsets: safeAreaInsetsProp,\n layout,\n userSelectMode,\n ...props\n}: AppRootProps): React.ReactNode => {\n const { hasPointer, sizeX = 'none', sizeY = 'none' } = useAdaptivity();\n const tokensClassName = useTokensClassName();\n\n const safeAreaInsets = useObjectMemo(safeAreaInsetsProp);\n const isKeyboardInputActiveRef = useKeyboardInputTracker();\n const appRootRef = React.useRef<HTMLDivElement | null>(null);\n const portalRootRef = React.useRef<HTMLElement | null>(null);\n\n useIsomorphicLayoutEffect(\n function setupPortalRoot() {\n const portalByProp = portalRootProp ? extractPortalRootByProp(portalRootProp) : null;\n\n if (portalByProp) {\n portalRootRef.current = portalByProp;\n return function cleanup() {\n portalRootRef.current = null;\n };\n }\n\n const documentBody = getDocumentBody(appRootRef.current);\n const portal = documentBody.ownerDocument.createElement('div');\n documentBody.appendChild(portal);\n portalRootRef.current = portal;\n return function cleanup() {\n documentBody.removeChild(portal);\n portalRootRef.current = null;\n };\n },\n [portalRootProp],\n );\n\n useIsomorphicLayoutEffect(\n function setupContainers() {\n if (!appRootRef.current || !portalRootRef.current) {\n return;\n }\n\n const parentElement = getParentElement(appRootRef.current);\n const documentBody = getDocumentBody(appRootRef.current);\n const documentElement = documentBody.ownerDocument.documentElement;\n\n const [baseClassNames, stylesClassNames] = getClassNamesByMode({\n mode,\n layout,\n tokensClassName,\n sizeX,\n sizeY,\n });\n\n /* eslint-disable no-restricted-properties */\n switch (mode) {\n case 'full': {\n if (parentElement) {\n parentElement.classList.add(...baseClassNames);\n }\n\n documentElement.classList.add(...stylesClassNames, 'vkui');\n const unsetSafeAreaInsets = setSafeAreaInsets(safeAreaInsets, documentElement);\n\n return function cleanup() {\n if (parentElement) {\n parentElement.classList.remove(...baseClassNames);\n }\n\n documentElement.classList.remove(...stylesClassNames, 'vkui');\n unsetSafeAreaInsets();\n };\n }\n case 'embedded': {\n if (parentElement) {\n parentElement.classList.add(...baseClassNames, ...stylesClassNames);\n if (!disableParentTransformForPositionFixedElements) {\n parentElement.style.setProperty('transform', 'translate3d(0, 0, 0)');\n }\n const unsetSafeAreaInsets = setSafeAreaInsets(safeAreaInsets, parentElement, portalRootRef.current); // prettier-ignore\n return function cleanup() {\n parentElement.classList.remove(...baseClassNames, ...stylesClassNames);\n if (!disableParentTransformForPositionFixedElements) {\n parentElement.style.removeProperty('transform');\n }\n unsetSafeAreaInsets();\n };\n }\n /* istanbul ignore next: node.parentElement может быть null, но такой кейс в теории невозможен */\n return;\n }\n /* istanbul ignore next: не покрывается за счёт теста на <AppRoot mode=\"partial\" /> */\n case 'partial': {\n return;\n }\n }\n /* eslint-enable no-restricted-properties */\n },\n [\n mode,\n layout,\n disableParentTransformForPositionFixedElements,\n tokensClassName,\n sizeX,\n sizeY,\n safeAreaInsets,\n ],\n );\n\n const ScrollController = React.useMemo(\n () => (scroll === 'contain' ? ElementScrollController : GlobalScrollController),\n [scroll],\n );\n\n const contextValue = React.useMemo(\n () => ({\n appRoot: appRootRef,\n portalRoot: portalRootRef,\n embedded: mode === 'embedded',\n mode,\n disablePortal,\n layout,\n get keyboardInput() {\n return isKeyboardInputActiveRef.current;\n },\n }),\n [disablePortal, isKeyboardInputActiveRef, layout, mode],\n );\n\n const content = (\n <AppRootContext.Provider value={contextValue}>\n <ScrollController elRef={appRootRef}>{children}</ScrollController>\n </AppRootContext.Provider>\n );\n\n const { isWebView } = useConfigProvider();\n const userSelectModeClassName = getUserSelectModeClassName({\n userSelectMode,\n isWebView,\n hasPointer,\n });\n\n return mode === 'partial' ? (\n content\n ) : (\n <div\n ref={appRootRef}\n className={classNames(styles.host, userSelectModeClassName, className)}\n {...props}\n >\n {content}\n </div>\n );\n};\n"],"names":["React","classNames","useAdaptivity","useKeyboardInputTracker","useObjectMemo","getDocumentBody","useTokensClassName","useIsomorphicLayoutEffect","useConfigProvider","AppRootContext","ElementScrollController","GlobalScrollController","extractPortalRootByProp","getClassNamesByMode","getParentElement","getUserSelectModeClassName","setSafeAreaInsets","AppRoot","children","mode","scroll","portalRoot","portalRootProp","disablePortal","disableParentTransformForPositionFixedElements","className","safeAreaInsets","safeAreaInsetsProp","layout","userSelectMode","props","hasPointer","sizeX","sizeY","tokensClassName","isKeyboardInputActiveRef","appRootRef","useRef","portalRootRef","setupPortalRoot","portalByProp","current","cleanup","documentBody","portal","ownerDocument","createElement","appendChild","removeChild","setupContainers","parentElement","documentElement","baseClassNames","stylesClassNames","classList","add","unsetSafeAreaInsets","remove","style","setProperty","removeProperty","ScrollController","useMemo","contextValue","appRoot","embedded","keyboardInput","content","Provider","value","elRef","isWebView","userSelectModeClassName","div","ref"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/AppRoot/AppRoot.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { useKeyboardInputTracker } from '../../hooks/useKeyboardInputTracker';\nimport { useObjectMemo } from '../../hooks/useObjectMemo';\nimport { useSyncHTMLWithBaseVKUIClasses } from '../../hooks/useSyncHTMLWithBaseVKUIClasses';\nimport { useSyncHTMLWithTokens } from '../../hooks/useSyncHTMLWithTokens';\nimport { getDocumentBody } from '../../lib/dom';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport { AppRootContext } from './AppRootContext';\nimport { AppRootStyleContainer } from './AppRootStyleContainer';\nimport { ElementScrollController, GlobalScrollController } from './ScrollContext';\nimport { extractPortalRootByProp } from './helpers';\nimport type {\n AppRootLayout,\n AppRootMode,\n AppRootScroll,\n AppRootUserSelectMode,\n SafeAreaInsets,\n} from './types';\nimport styles from './AppRoot.module.css';\n\nexport interface AppRootProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Режим встраивания */\n mode?: AppRootMode;\n /**\n * - `global` (по умолчанию) — VKUI-приложение скроллится вместе со страницей.\n * - `contain` — VKUI-приложение живет в отдельной зоне и скроллится независимо внутри `AppRoot` (например, в модалке).\n *\n * Полезно при использовании `mode=\"embedded\"`.\n */\n scroll?: AppRootScroll;\n /**\n * см. документацию [mdn web docs | env#values](https://developer.mozilla.org/en-US/docs/Web/CSS/env#values).\n */\n safeAreaInsets?: SafeAreaInsets;\n /**\n * Кастомный root-элемент портала\n */\n portalRoot?: HTMLElement | React.RefObject<HTMLElement> | null;\n /**\n * Отключает рендер всплывающих компонентов в отдельном контейнере\n */\n disablePortal?: boolean;\n /**\n * По умолчанию, mode=\"embedded\" переносит систему координат элементов с `position: fixed` на\n * свой контейнер через `transform: translate3d(0, 0, 0)`.\n *\n * Это поведение можно отключить с помощью этого параметра.\n */\n disableParentTransformForPositionFixedElements?: boolean;\n /**\n * Глобально задаёт тип оформления макета для компонентов\n * [Panel](https://vkcom.github.io/VKUI/#/Panel) и [Group](https://vkcom.github.io/VKUI/#/Group).\n */\n layout?: AppRootLayout;\n /**\n * Задаёт режим выбора текста (выделения текста) для всего приложения.\n * По умолчанию, если режим не задан, запрещает выбор текста в приложениях,\n * запущенных в webview (по значению свойства `isWebView` из [ConfigProvider](https://vkcom.github.io/VKUI/#/ConfigProvider)).\n *\n * - `enabled-with-pointer` – разрешает выбор текста, если устройство ввода типа `pointer` (например, `мышь`), в остальных случаях запрещает;\n * - `disabled` – запрещает выбор текста;\n * - `enabled` – разрешает выбор текста.\n *\n * @since 6.2.0\n */\n userSelectMode?: AppRootUserSelectMode;\n /*\n * По умолчанию в режиме `mode=\"full\"` VKUI в рантайме выставляет:\n * - класс .vkui на html элемент\n * - класс .vkui__root на элемент-контейнер, в который монтируется VKUI\n * С помощью этой опции такое поведение можно отключить.\n *\n * Для корректной работы SSR рекоммендуется выставлять эти классы самостоятельно\n * и отключить это поводение.\n */\n disableSettingVKUIClassesInRuntime?: boolean;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/AppRoot\n */\nexport const AppRoot = ({\n children,\n mode = 'full',\n scroll = 'global',\n portalRoot: portalRootProp,\n disablePortal = false,\n disableParentTransformForPositionFixedElements,\n safeAreaInsets: safeAreaInsetsProp,\n layout,\n userSelectMode,\n disableSettingVKUIClassesInRuntime,\n ...props\n}: AppRootProps): React.ReactNode => {\n const appRootRef = React.useRef<HTMLDivElement | null>(null);\n const popoutModalContainerRef = React.useRef<HTMLDivElement | null>(null);\n const [portalRoot, setPortalRoot] = React.useState<HTMLElement | null>(\n portalRootProp ? extractPortalRootByProp(portalRootProp) : null,\n );\n\n useIsomorphicLayoutEffect(\n function syncPortalRootWithPortalRootProp() {\n const portalByProp = portalRootProp ? extractPortalRootByProp(portalRootProp) : null;\n if (portalRootProp !== undefined) {\n setPortalRoot(portalByProp);\n }\n },\n [portalRootProp],\n );\n\n useIsomorphicLayoutEffect(\n function removePortalRootOnUnmount() {\n // Контейнер PortalRoot создаётся при первом вызове модалки или\n // поповера использующего AppRootPortal.\n // Потом он переиспользуется и не удаляется пока\n // приложение не размонтируется.\n // И создаётся только если в приложение не был передан\n // пользовательский контейнер через свойство portalRootProp\n // Сделано для поддержки SSR, чтобы при старте приложения\n // никаких новых нод в DOM не создавалось.\n const documentBody = getDocumentBody(appRootRef.current);\n return function cleanup() {\n if (portalRoot) {\n const isPortalRootPassedByProps = Boolean(portalRootProp);\n if (!isPortalRootPassedByProps) {\n // удаляем portalRoot из дома только если он\n // был создан в AppRootPortal.\n // Если он был передан через пропы - удалять нельзя\n documentBody.removeChild(portalRoot);\n }\n }\n };\n },\n [portalRootProp],\n );\n\n const ScrollController = React.useMemo(\n () => (scroll === 'contain' ? ElementScrollController : GlobalScrollController),\n [scroll],\n );\n\n const isKeyboardInputActiveRef = useKeyboardInputTracker();\n const safeAreaInsets = useObjectMemo(safeAreaInsetsProp);\n const contextValue = React.useMemo(\n () => ({\n appRoot: appRootRef,\n portalRoot,\n popoutModalRoot: popoutModalContainerRef,\n setPortalRoot,\n safeAreaInsets,\n embedded: mode === 'embedded',\n mode,\n disablePortal,\n layout,\n get keyboardInput() {\n return isKeyboardInputActiveRef.current;\n },\n userSelectMode,\n }),\n [\n portalRoot,\n disablePortal,\n isKeyboardInputActiveRef,\n layout,\n mode,\n safeAreaInsets,\n userSelectMode,\n ],\n );\n\n /*\n * Вешаем класс токенов на html в режиме full.\n * Это необходимо, чтобы цвета html элемента и скроллбара соответствовали текущей цветовой схеме:\n * - фон html элемента виден, если пользователь оверскролит. Тогда возникает анимация bounce-эффекта и виден фон html элемента. Без токенов в черной теме будет выглядывать белый фон.\n * - цвет системного сколлбара зависит от color-sheme свойства, значение которого задётся токенами и должно быть выставлено именно на html элементе.\n * В режме SSR пользователи сами могу задать этот класс на html-элементе. главное, чтобы он соответствовал переданным platform и appearence свойствам.\n */\n useSyncHTMLWithTokens({ appRootRef, enable: mode === 'full' });\n /*\n * По умолчанию VKUI будет выставлять .vkui на html и .vkui__root на контейнере в режиме full.\n * В режиме embedded будет выставлять только .vkui__root на контейнере.\n */\n useSyncHTMLWithBaseVKUIClasses({\n appRootRef,\n mode,\n enable: mode !== 'partial' && !disableSettingVKUIClassesInRuntime,\n });\n\n return mode === 'partial' ? (\n <AppRootContext.Provider value={contextValue}>\n <ScrollController elRef={appRootRef}>{children}</ScrollController>\n </AppRootContext.Provider>\n ) : (\n <AppRootContext.Provider value={contextValue}>\n <AppRootStyleContainer\n getRootRef={appRootRef}\n className={\n mode === 'embedded' && !disableParentTransformForPositionFixedElements\n ? styles.transformForPositionFixedElements\n : undefined\n }\n {...props}\n >\n <ScrollController elRef={appRootRef}>{children}</ScrollController>\n </AppRootStyleContainer>\n </AppRootContext.Provider>\n );\n};\n"],"names":["React","useKeyboardInputTracker","useObjectMemo","useSyncHTMLWithBaseVKUIClasses","useSyncHTMLWithTokens","getDocumentBody","useIsomorphicLayoutEffect","AppRootContext","AppRootStyleContainer","ElementScrollController","GlobalScrollController","extractPortalRootByProp","AppRoot","children","mode","scroll","portalRoot","portalRootProp","disablePortal","disableParentTransformForPositionFixedElements","safeAreaInsets","safeAreaInsetsProp","layout","userSelectMode","disableSettingVKUIClassesInRuntime","props","appRootRef","useRef","popoutModalContainerRef","setPortalRoot","useState","syncPortalRootWithPortalRootProp","portalByProp","undefined","removePortalRootOnUnmount","documentBody","current","cleanup","isPortalRootPassedByProps","Boolean","removeChild","ScrollController","useMemo","isKeyboardInputActiveRef","contextValue","appRoot","popoutModalRoot","embedded","keyboardInput","enable","Provider","value","elRef","getRootRef","className"],"mappings":"AAAA;;;;;AAEA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,uBAAuB,QAAQ,yCAAsC;AAC9E,SAASC,aAAa,QAAQ,+BAA4B;AAC1D,SAASC,8BAA8B,QAAQ,gDAA6C;AAC5F,SAASC,qBAAqB,QAAQ,uCAAoC;AAC1E,SAASC,eAAe,QAAQ,mBAAgB;AAChD,SAASC,yBAAyB,QAAQ,yCAAsC;AAChF,SAASC,cAAc,QAAQ,sBAAmB;AAClD,SAASC,qBAAqB,QAAQ,6BAA0B;AAChE,SAASC,uBAAuB,EAAEC,sBAAsB,QAAQ,qBAAkB;AAClF,SAASC,uBAAuB,QAAQ,eAAY;AAoEpD;;CAEC,GACD,OAAO,MAAMC,UAAU;QAAC,EACtBC,QAAQ,EACRC,OAAO,MAAM,EACbC,SAAS,QAAQ,EACjBC,YAAYC,cAAc,EAC1BC,gBAAgB,KAAK,EACrBC,8CAA8C,EAC9CC,gBAAgBC,kBAAkB,EAClCC,MAAM,EACNC,cAAc,EACdC,kCAAkC,EAErB,WADVC;QAVHZ;QACAC;QACAC;QACAC;QACAE;QACAC;QACAC;QACAE;QACAC;QACAC;;IAGA,MAAME,aAAa1B,MAAM2B,MAAM,CAAwB;IACvD,MAAMC,0BAA0B5B,MAAM2B,MAAM,CAAwB;IACpE,MAAM,CAACX,YAAYa,cAAc,GAAG7B,MAAM8B,QAAQ,CAChDb,iBAAiBN,wBAAwBM,kBAAkB;IAG7DX,0BACE,SAASyB;QACP,MAAMC,eAAef,iBAAiBN,wBAAwBM,kBAAkB;QAChF,IAAIA,mBAAmBgB,WAAW;YAChCJ,cAAcG;QAChB;IACF,GACA;QAACf;KAAe;IAGlBX,0BACE,SAAS4B;QACP,+DAA+D;QAC/D,wCAAwC;QACxC,gDAAgD;QAChD,gCAAgC;QAChC,sDAAsD;QACtD,2DAA2D;QAC3D,yDAAyD;QACzD,0CAA0C;QAC1C,MAAMC,eAAe9B,gBAAgBqB,WAAWU,OAAO;QACvD,OAAO,SAASC;YACd,IAAIrB,YAAY;gBACd,MAAMsB,4BAA4BC,QAAQtB;gBAC1C,IAAI,CAACqB,2BAA2B;oBAC9B,4CAA4C;oBAC5C,8BAA8B;oBAC9B,mDAAmD;oBACnDH,aAAaK,WAAW,CAACxB;gBAC3B;YACF;QACF;IACF,GACA;QAACC;KAAe;IAGlB,MAAMwB,mBAAmBzC,MAAM0C,OAAO,CACpC,IAAO3B,WAAW,YAAYN,0BAA0BC,wBACxD;QAACK;KAAO;IAGV,MAAM4B,2BAA2B1C;IACjC,MAAMmB,iBAAiBlB,cAAcmB;IACrC,MAAMuB,eAAe5C,MAAM0C,OAAO,CAChC,IAAO,CAAA;YACLG,SAASnB;YACTV;YACA8B,iBAAiBlB;YACjBC;YACAT;YACA2B,UAAUjC,SAAS;YACnBA;YACAI;YACAI;YACA,IAAI0B,iBAAgB;gBAClB,OAAOL,yBAAyBP,OAAO;YACzC;YACAb;QACF,CAAA,GACA;QACEP;QACAE;QACAyB;QACArB;QACAR;QACAM;QACAG;KACD;IAGH;;;;;;GAMC,GACDnB,sBAAsB;QAAEsB;QAAYuB,QAAQnC,SAAS;IAAO;IAC5D;;;GAGC,GACDX,+BAA+B;QAC7BuB;QACAZ;QACAmC,QAAQnC,SAAS,aAAa,CAACU;IACjC;IAEA,OAAOV,SAAS,0BACd,KAACP,eAAe2C,QAAQ;QAACC,OAAOP;kBAC9B,cAAA,KAACH;YAAiBW,OAAO1B;sBAAab;;uBAGxC,KAACN,eAAe2C,QAAQ;QAACC,OAAOP;kBAC9B,cAAA,KAACpC;YACC6C,YAAY3B;YACZ4B,WACExC,SAAS,cAAc,CAACK,oGAEpBc;WAEFR;sBAEJ,cAAA,KAACgB;gBAAiBW,OAAO1B;0BAAab;;;;AAI9C,EAAE"}
|
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
+
import { type AppRootUserSelectMode, type SafeAreaInsets } from './types';
|
|
2
3
|
export interface AppRootContextInterface {
|
|
3
4
|
appRoot: React.RefObject<HTMLElement>;
|
|
4
|
-
portalRoot:
|
|
5
|
+
portalRoot: HTMLElement | null;
|
|
6
|
+
popoutModalRoot: React.MutableRefObject<HTMLDivElement | null>;
|
|
7
|
+
setPortalRoot: (element: HTMLElement) => void;
|
|
8
|
+
safeAreaInsets?: SafeAreaInsets;
|
|
5
9
|
embedded: boolean;
|
|
6
10
|
mode: 'partial' | 'embedded' | 'full';
|
|
7
11
|
keyboardInput: boolean;
|
|
8
12
|
disablePortal: boolean;
|
|
9
13
|
layout?: 'card' | 'plain';
|
|
14
|
+
userSelectMode?: AppRootUserSelectMode;
|
|
10
15
|
}
|
|
11
16
|
/**
|
|
12
17
|
* Вынесен в константу, чтобы можно было в тестах создавать свой контекст и сливать перед этим значения по-умолчанию
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AppRootContext.d.ts","sourceRoot":"","sources":["../../../src/components/AppRoot/AppRootContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACtC,UAAU,EAAE,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"AppRootContext.d.ts","sourceRoot":"","sources":["../../../src/components/AppRoot/AppRootContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,KAAK,qBAAqB,EAAE,KAAK,cAAc,EAAE,MAAM,SAAS,CAAC;AAE1E,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACtC,UAAU,EAAE,WAAW,GAAG,IAAI,CAAC;IAC/B,eAAe,EAAE,KAAK,CAAC,gBAAgB,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAC/D,aAAa,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,CAAC;IAC9C,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,SAAS,GAAG,UAAU,GAAG,MAAM,CAAC;IACtC,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,EAAE,OAAO,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC1B,cAAc,CAAC,EAAE,qBAAqB,CAAC;CACxC;AAED;;;;GAIG;AACH,eAAO,MAAM,8BAA8B,EAAE,uBAU5C,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,OAAO,CAAC,uBAAuB,CACY,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
+
import { noop } from "@vkontakte/vkjs";
|
|
2
3
|
/**
|
|
3
4
|
* Вынесен в константу, чтобы можно было в тестах создавать свой контекст и сливать перед этим значения по-умолчанию
|
|
4
5
|
*
|
|
@@ -6,7 +7,10 @@ import * as React from "react";
|
|
|
6
7
|
*/ export const DEFAULT_APP_ROOT_CONTEXT_VALUE = {
|
|
7
8
|
appRoot: React.createRef(),
|
|
8
9
|
mode: 'full',
|
|
9
|
-
portalRoot:
|
|
10
|
+
portalRoot: null,
|
|
11
|
+
popoutModalRoot: React.createRef(),
|
|
12
|
+
setPortalRoot: noop,
|
|
13
|
+
safeAreaInsets: undefined,
|
|
10
14
|
embedded: false,
|
|
11
15
|
keyboardInput: false,
|
|
12
16
|
disablePortal: false
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/AppRoot/AppRootContext.ts"],"sourcesContent":["import * as React from 'react';\n\nexport interface AppRootContextInterface {\n appRoot: React.RefObject<HTMLElement>;\n portalRoot: React.
|
|
1
|
+
{"version":3,"sources":["../../../src/components/AppRoot/AppRootContext.ts"],"sourcesContent":["import * as React from 'react';\nimport { noop } from '@vkontakte/vkjs';\nimport { type AppRootUserSelectMode, type SafeAreaInsets } from './types';\n\nexport interface AppRootContextInterface {\n appRoot: React.RefObject<HTMLElement>;\n portalRoot: HTMLElement | null;\n popoutModalRoot: React.MutableRefObject<HTMLDivElement | null>;\n setPortalRoot: (element: HTMLElement) => void;\n safeAreaInsets?: SafeAreaInsets;\n embedded: boolean;\n mode: 'partial' | 'embedded' | 'full';\n keyboardInput: boolean;\n disablePortal: boolean;\n layout?: 'card' | 'plain';\n userSelectMode?: AppRootUserSelectMode;\n}\n\n/**\n * Вынесен в константу, чтобы можно было в тестах создавать свой контекст и сливать перед этим значения по-умолчанию\n *\n * > Note: не смог убрать из покрытия через 'istanbul ignore next'.\n */\nexport const DEFAULT_APP_ROOT_CONTEXT_VALUE: AppRootContextInterface = {\n appRoot: React.createRef(),\n mode: 'full',\n portalRoot: null,\n popoutModalRoot: React.createRef(),\n setPortalRoot: noop,\n safeAreaInsets: undefined,\n embedded: false,\n keyboardInput: false,\n disablePortal: false,\n};\n\nexport const AppRootContext: React.Context<AppRootContextInterface> =\n React.createContext<AppRootContextInterface>(DEFAULT_APP_ROOT_CONTEXT_VALUE);\n"],"names":["React","noop","DEFAULT_APP_ROOT_CONTEXT_VALUE","appRoot","createRef","mode","portalRoot","popoutModalRoot","setPortalRoot","safeAreaInsets","undefined","embedded","keyboardInput","disablePortal","AppRootContext","createContext"],"mappings":"AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,IAAI,QAAQ,kBAAkB;AAiBvC;;;;CAIC,GACD,OAAO,MAAMC,iCAA0D;IACrEC,SAASH,MAAMI,SAAS;IACxBC,MAAM;IACNC,YAAY;IACZC,iBAAiBP,MAAMI,SAAS;IAChCI,eAAeP;IACfQ,gBAAgBC;IAChBC,UAAU;IACVC,eAAe;IACfC,eAAe;AACjB,EAAE;AAEF,OAAO,MAAMC,iBACXd,MAAMe,aAAa,CAA0Bb,gCAAgC"}
|
|
@@ -4,8 +4,12 @@ export interface AppRootPortalProps extends HasChildren {
|
|
|
4
4
|
/**
|
|
5
5
|
* - При передаче `true` будет использовать `portalRoot` из контекста `AppRoot`.
|
|
6
6
|
* - При передаче элемента будут игнорироваться `portalRoot` и `disablePortal` из контекста `AppRoot`.
|
|
7
|
+
* - При передаче `SplitLayout` будет использоваться контейнер внутри `SplitLayout`, сразу после контента приложения.
|
|
8
|
+
* Если контейнера `SplitLayout` в приложении нет, то будет использован глобальный `portalRoot`, чаще всего
|
|
9
|
+
* это последний дочерний элемент `body`.
|
|
7
10
|
*/
|
|
8
|
-
usePortal?: boolean | HTMLElement | React.RefObject<HTMLElement> | null;
|
|
11
|
+
usePortal?: boolean | HTMLElement | React.RefObject<HTMLElement> | null | 'SplitLayout';
|
|
12
|
+
className?: string;
|
|
9
13
|
}
|
|
10
|
-
export declare const AppRootPortal: ({ children, usePortal }: AppRootPortalProps) => React.ReactNode;
|
|
14
|
+
export declare const AppRootPortal: ({ children, usePortal, className, }: AppRootPortalProps) => React.ReactNode;
|
|
11
15
|
//# sourceMappingURL=AppRootPortal.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AppRootPortal.d.ts","sourceRoot":"","sources":["../../../src/components/AppRoot/AppRootPortal.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"AppRootPortal.d.ts","sourceRoot":"","sources":["../../../src/components/AppRoot/AppRootPortal.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAK/C,MAAM,WAAW,kBAAmB,SAAQ,WAAW;IACrD;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,OAAO,GAAG,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,IAAI,GAAG,aAAa,CAAC;IACxF,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,aAAa,wCAIvB,kBAAkB,KAAG,KAAK,CAAC,SA8C7B,CAAC"}
|
|
@@ -2,42 +2,64 @@
|
|
|
2
2
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
3
|
import * as React from "react";
|
|
4
4
|
import { useColorScheme } from "../../hooks/useColorScheme.js";
|
|
5
|
-
import { useIsClient } from "../../hooks/useIsClient.js";
|
|
6
5
|
import { createPortal } from "../../lib/createPortal.js";
|
|
6
|
+
import { getDocumentBody } from "../../lib/dom.js";
|
|
7
7
|
import { isRefObject } from "../../lib/isRefObject.js";
|
|
8
|
+
import { useIsomorphicLayoutEffect } from "../../lib/useIsomorphicLayoutEffect.js";
|
|
8
9
|
import { ColorSchemeProvider } from "../ColorSchemeProvider/ColorSchemeProvider.js";
|
|
9
10
|
import { AppRootContext } from "./AppRootContext.js";
|
|
10
|
-
|
|
11
|
-
|
|
11
|
+
import { AppRootStyleContainer } from "./AppRootStyleContainer.js";
|
|
12
|
+
export const AppRootPortal = ({ children, usePortal, className })=>{
|
|
13
|
+
const { setPortalRoot, appRoot, mode, disablePortal: disableCreatePortalInGlobalPortalRoot } = React.useContext(AppRootContext);
|
|
12
14
|
const colorScheme = useColorScheme();
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
15
|
+
const canUsePortal = shouldUsePortal(usePortal, mode, Boolean(disableCreatePortalInGlobalPortalRoot));
|
|
16
|
+
const portalContainer = usePortalContainer(usePortal);
|
|
17
|
+
useIsomorphicLayoutEffect(// Создаём контейнер для портала по запросу один раз
|
|
18
|
+
// и пока приложение не размонтируется.
|
|
19
|
+
// Удаление созданной ноды происходит в AppRoot
|
|
20
|
+
function initializePortalRootIfNeeded() {
|
|
21
|
+
const shouldCreatePortalRoot = canUsePortal && portalContainer === null;
|
|
22
|
+
if (shouldCreatePortalRoot) {
|
|
23
|
+
const documentBody = getDocumentBody(appRoot.current);
|
|
24
|
+
const portal = documentBody.ownerDocument.createElement('div');
|
|
25
|
+
documentBody.appendChild(portal);
|
|
26
|
+
setPortalRoot(portal);
|
|
27
|
+
}
|
|
28
|
+
// Note:
|
|
29
|
+
// Очистка и удаление `portalRoot` делегируется `AppRoot`, т.к. экземпляров `AppRootPortal` может быть несколько и размонтирование одного из них удалит `portalRoot`, что сломает работу других экземпляров.
|
|
30
|
+
}, [
|
|
31
|
+
canUsePortal,
|
|
32
|
+
appRoot,
|
|
33
|
+
portalContainer,
|
|
34
|
+
setPortalRoot
|
|
35
|
+
]);
|
|
36
|
+
if (canUsePortal && portalContainer) {
|
|
37
|
+
return createPortal(/*#__PURE__*/ _jsx(ColorSchemeProvider, {
|
|
38
|
+
value: colorScheme,
|
|
39
|
+
children: /*#__PURE__*/ _jsx(AppRootStyleContainer, {
|
|
40
|
+
className: className,
|
|
41
|
+
children: children
|
|
42
|
+
})
|
|
43
|
+
}), portalContainer);
|
|
22
44
|
}
|
|
23
|
-
return
|
|
24
|
-
value: colorScheme,
|
|
25
|
-
children: children
|
|
26
|
-
}), portalContainer);
|
|
45
|
+
return children;
|
|
27
46
|
};
|
|
28
|
-
function
|
|
29
|
-
if (usePortal
|
|
30
|
-
|
|
31
|
-
return false;
|
|
32
|
-
}
|
|
33
|
-
return disablePortal || usePortal !== true;
|
|
47
|
+
function shouldUsePortal(usePortal, mode, disableCreatePortalInGlobalPortalRoot) {
|
|
48
|
+
if (usePortal === undefined) {
|
|
49
|
+
return disableCreatePortalInGlobalPortalRoot === false && mode !== 'full';
|
|
34
50
|
}
|
|
35
|
-
|
|
36
|
-
|
|
51
|
+
if (typeof usePortal !== 'boolean') {
|
|
52
|
+
return true;
|
|
53
|
+
}
|
|
54
|
+
return disableCreatePortalInGlobalPortalRoot === false && usePortal === true;
|
|
37
55
|
}
|
|
38
|
-
function
|
|
39
|
-
|
|
40
|
-
|
|
56
|
+
function usePortalContainer(usePortal) {
|
|
57
|
+
const { portalRoot, popoutModalRoot } = React.useContext(AppRootContext);
|
|
58
|
+
if (typeof usePortal === 'boolean' || usePortal === undefined) {
|
|
59
|
+
return portalRoot;
|
|
60
|
+
}
|
|
61
|
+
if (usePortal === 'SplitLayout') {
|
|
62
|
+
return popoutModalRoot.current || portalRoot;
|
|
41
63
|
}
|
|
42
64
|
return isRefObject(usePortal) ? usePortal.current : usePortal;
|
|
43
65
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/AppRoot/AppRootPortal.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { useColorScheme } from '../../hooks/useColorScheme';\nimport {
|
|
1
|
+
{"version":3,"sources":["../../../src/components/AppRoot/AppRootPortal.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { useColorScheme } from '../../hooks/useColorScheme';\nimport { createPortal } from '../../lib/createPortal';\nimport { getDocumentBody } from '../../lib/dom';\nimport { isRefObject } from '../../lib/isRefObject';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport type { HasChildren } from '../../types';\nimport { ColorSchemeProvider } from '../ColorSchemeProvider/ColorSchemeProvider';\nimport { AppRootContext, type AppRootContextInterface } from './AppRootContext';\nimport { AppRootStyleContainer } from './AppRootStyleContainer';\n\nexport interface AppRootPortalProps extends HasChildren {\n /**\n * - При передаче `true` будет использовать `portalRoot` из контекста `AppRoot`.\n * - При передаче элемента будут игнорироваться `portalRoot` и `disablePortal` из контекста `AppRoot`.\n * - При передаче `SplitLayout` будет использоваться контейнер внутри `SplitLayout`, сразу после контента приложения.\n * Если контейнера `SplitLayout` в приложении нет, то будет использован глобальный `portalRoot`, чаще всего\n * это последний дочерний элемент `body`.\n */\n usePortal?: boolean | HTMLElement | React.RefObject<HTMLElement> | null | 'SplitLayout';\n className?: string;\n}\n\nexport const AppRootPortal = ({\n children,\n usePortal,\n className,\n}: AppRootPortalProps): React.ReactNode => {\n const {\n setPortalRoot,\n appRoot,\n mode,\n disablePortal: disableCreatePortalInGlobalPortalRoot,\n } = React.useContext(AppRootContext);\n const colorScheme = useColorScheme();\n\n const canUsePortal = shouldUsePortal(\n usePortal,\n mode,\n Boolean(disableCreatePortalInGlobalPortalRoot),\n );\n const portalContainer = usePortalContainer(usePortal);\n\n useIsomorphicLayoutEffect(\n // Создаём контейнер для портала по запросу один раз\n // и пока приложение не размонтируется.\n // Удаление созданной ноды происходит в AppRoot\n function initializePortalRootIfNeeded() {\n const shouldCreatePortalRoot = canUsePortal && portalContainer === null;\n if (shouldCreatePortalRoot) {\n const documentBody = getDocumentBody(appRoot.current);\n const portal = documentBody.ownerDocument.createElement('div');\n documentBody.appendChild(portal);\n\n setPortalRoot(portal);\n }\n\n // Note:\n // Очистка и удаление `portalRoot` делегируется `AppRoot`, т.к. экземпляров `AppRootPortal` может быть несколько и размонтирование одного из них удалит `portalRoot`, что сломает работу других экземпляров.\n },\n [canUsePortal, appRoot, portalContainer, setPortalRoot],\n );\n\n if (canUsePortal && portalContainer) {\n return createPortal(\n <ColorSchemeProvider value={colorScheme}>\n <AppRootStyleContainer className={className}>{children}</AppRootStyleContainer>\n </ColorSchemeProvider>,\n portalContainer,\n );\n }\n\n return children;\n};\n\nfunction shouldUsePortal(\n usePortal: AppRootPortalProps['usePortal'],\n mode: AppRootContextInterface['mode'],\n disableCreatePortalInGlobalPortalRoot: boolean,\n) {\n if (usePortal === undefined) {\n return disableCreatePortalInGlobalPortalRoot === false && mode !== 'full';\n }\n\n if (typeof usePortal !== 'boolean') {\n return true;\n }\n\n return disableCreatePortalInGlobalPortalRoot === false && usePortal === true;\n}\n\nfunction usePortalContainer(usePortal: AppRootPortalProps['usePortal']): HTMLElement | null {\n const { portalRoot, popoutModalRoot } = React.useContext(AppRootContext);\n if (typeof usePortal === 'boolean' || usePortal === undefined) {\n return portalRoot;\n }\n\n if (usePortal === 'SplitLayout') {\n return popoutModalRoot.current || portalRoot;\n }\n\n return isRefObject(usePortal) ? usePortal.current : usePortal;\n}\n"],"names":["React","useColorScheme","createPortal","getDocumentBody","isRefObject","useIsomorphicLayoutEffect","ColorSchemeProvider","AppRootContext","AppRootStyleContainer","AppRootPortal","children","usePortal","className","setPortalRoot","appRoot","mode","disablePortal","disableCreatePortalInGlobalPortalRoot","useContext","colorScheme","canUsePortal","shouldUsePortal","Boolean","portalContainer","usePortalContainer","initializePortalRootIfNeeded","shouldCreatePortalRoot","documentBody","current","portal","ownerDocument","createElement","appendChild","value","undefined","portalRoot","popoutModalRoot"],"mappings":"AAAA;;AAEA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,cAAc,QAAQ,gCAA6B;AAC5D,SAASC,YAAY,QAAQ,4BAAyB;AACtD,SAASC,eAAe,QAAQ,mBAAgB;AAChD,SAASC,WAAW,QAAQ,2BAAwB;AACpD,SAASC,yBAAyB,QAAQ,yCAAsC;AAEhF,SAASC,mBAAmB,QAAQ,gDAA6C;AACjF,SAASC,cAAc,QAAsC,sBAAmB;AAChF,SAASC,qBAAqB,QAAQ,6BAA0B;AAchE,OAAO,MAAMC,gBAAgB,CAAC,EAC5BC,QAAQ,EACRC,SAAS,EACTC,SAAS,EACU;IACnB,MAAM,EACJC,aAAa,EACbC,OAAO,EACPC,IAAI,EACJC,eAAeC,qCAAqC,EACrD,GAAGjB,MAAMkB,UAAU,CAACX;IACrB,MAAMY,cAAclB;IAEpB,MAAMmB,eAAeC,gBACnBV,WACAI,MACAO,QAAQL;IAEV,MAAMM,kBAAkBC,mBAAmBb;IAE3CN,0BACE,oDAAoD;IACpD,uCAAuC;IACvC,+CAA+C;IAC/C,SAASoB;QACP,MAAMC,yBAAyBN,gBAAgBG,oBAAoB;QACnE,IAAIG,wBAAwB;YAC1B,MAAMC,eAAexB,gBAAgBW,QAAQc,OAAO;YACpD,MAAMC,SAASF,aAAaG,aAAa,CAACC,aAAa,CAAC;YACxDJ,aAAaK,WAAW,CAACH;YAEzBhB,cAAcgB;QAChB;IAEA,QAAQ;IACR,4MAA4M;IAC9M,GACA;QAACT;QAAcN;QAASS;QAAiBV;KAAc;IAGzD,IAAIO,gBAAgBG,iBAAiB;QACnC,OAAOrB,2BACL,KAACI;YAAoB2B,OAAOd;sBAC1B,cAAA,KAACX;gBAAsBI,WAAWA;0BAAYF;;YAEhDa;IAEJ;IAEA,OAAOb;AACT,EAAE;AAEF,SAASW,gBACPV,SAA0C,EAC1CI,IAAqC,EACrCE,qCAA8C;IAE9C,IAAIN,cAAcuB,WAAW;QAC3B,OAAOjB,0CAA0C,SAASF,SAAS;IACrE;IAEA,IAAI,OAAOJ,cAAc,WAAW;QAClC,OAAO;IACT;IAEA,OAAOM,0CAA0C,SAASN,cAAc;AAC1E;AAEA,SAASa,mBAAmBb,SAA0C;IACpE,MAAM,EAAEwB,UAAU,EAAEC,eAAe,EAAE,GAAGpC,MAAMkB,UAAU,CAACX;IACzD,IAAI,OAAOI,cAAc,aAAaA,cAAcuB,WAAW;QAC7D,OAAOC;IACT;IAEA,IAAIxB,cAAc,eAAe;QAC/B,OAAOyB,gBAAgBR,OAAO,IAAIO;IACpC;IAEA,OAAO/B,YAAYO,aAAaA,UAAUiB,OAAO,GAAGjB;AACtD"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { type RootComponentProps } from '../RootComponent/RootComponent';
|
|
2
|
+
export declare function useAppRootStyles(): {
|
|
3
|
+
style: Record<string, string> | undefined;
|
|
4
|
+
className: string;
|
|
5
|
+
};
|
|
6
|
+
type AppRootStyleContainerProps = RootComponentProps<HTMLDivElement>;
|
|
7
|
+
/**
|
|
8
|
+
* Специальный контейнер для переиспользования стилей, токенов и safe-area-inset в:
|
|
9
|
+
* - точке монтирования приложения – `AppRoot`;
|
|
10
|
+
* - точке монтирования порталов для модальных окон – `PortalRoot`.
|
|
11
|
+
*
|
|
12
|
+
* @private
|
|
13
|
+
*/
|
|
14
|
+
export declare function AppRootStyleContainer({ style, ...props }: AppRootStyleContainerProps): import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=AppRootStyleContainer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AppRootStyleContainer.d.ts","sourceRoot":"","sources":["../../../src/components/AppRoot/AppRootStyleContainer.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAiB,KAAK,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAoBxF,wBAAgB,gBAAgB;;;EAuB/B;AAED,KAAK,0BAA0B,GAAG,kBAAkB,CAAC,cAAc,CAAC,CAAC;AAErE;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,0BAA0B,2CAUpF"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { _ as _object_spread } from "@swc/helpers/_/_object_spread";
|
|
3
|
+
import { _ as _object_without_properties } from "@swc/helpers/_/_object_without_properties";
|
|
4
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
5
|
+
import * as React from "react";
|
|
6
|
+
import { classNames } from "@vkontakte/vkjs";
|
|
7
|
+
import { useAdaptivity } from "../../hooks/useAdaptivity.js";
|
|
8
|
+
import { useTokensClassName } from "../../lib/tokens/index.js";
|
|
9
|
+
import { useConfigProvider } from "../ConfigProvider/ConfigProviderContext.js";
|
|
10
|
+
import { RootComponent } from "../RootComponent/RootComponent.js";
|
|
11
|
+
import { AppRootContext } from "./AppRootContext.js";
|
|
12
|
+
import { getSafeAreaInsetsAsCssVariables, getUserSelectModeClassName } from "./helpers.js";
|
|
13
|
+
const sizeXClassNames = {
|
|
14
|
+
none: "vkuiAppRoot__sizeXNone",
|
|
15
|
+
regular: "vkuiAppRoot__sizeXRegular"
|
|
16
|
+
};
|
|
17
|
+
const sizeYClassNames = {
|
|
18
|
+
none: "vkuiAppRoot__sizeYNone",
|
|
19
|
+
compact: "vkuiAppRoot__sizeYCompact"
|
|
20
|
+
};
|
|
21
|
+
const layoutClassNames = {
|
|
22
|
+
card: "vkuiAppRoot__layoutCard",
|
|
23
|
+
plain: "vkuiAppRoot__layoutPlain"
|
|
24
|
+
};
|
|
25
|
+
export function useAppRootStyles() {
|
|
26
|
+
const { layout, safeAreaInsets, mode, userSelectMode } = React.useContext(AppRootContext);
|
|
27
|
+
const { hasPointer, sizeX = 'none', sizeY = 'none' } = useAdaptivity();
|
|
28
|
+
const { isWebView } = useConfigProvider();
|
|
29
|
+
const userSelectModeClassName = getUserSelectModeClassName({
|
|
30
|
+
userSelectMode,
|
|
31
|
+
isWebView,
|
|
32
|
+
hasPointer
|
|
33
|
+
});
|
|
34
|
+
const tokensClassName = useTokensClassName();
|
|
35
|
+
return {
|
|
36
|
+
style: safeAreaInsets ? getSafeAreaInsetsAsCssVariables(safeAreaInsets) : undefined,
|
|
37
|
+
className: classNames("vkuiAppRoot__host", mode === 'embedded' && "vkuiAppRoot__embedded", sizeX !== 'compact' && sizeXClassNames[sizeX], sizeY !== 'regular' && sizeYClassNames[sizeY], layout && layoutClassNames[layout], userSelectModeClassName, tokensClassName)
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Специальный контейнер для переиспользования стилей, токенов и safe-area-inset в:
|
|
42
|
+
* - точке монтирования приложения – `AppRoot`;
|
|
43
|
+
* - точке монтирования порталов для модальных окон – `PortalRoot`.
|
|
44
|
+
*
|
|
45
|
+
* @private
|
|
46
|
+
*/ export function AppRootStyleContainer(_param) {
|
|
47
|
+
var { style } = _param, props = _object_without_properties(_param, [
|
|
48
|
+
"style"
|
|
49
|
+
]);
|
|
50
|
+
const { style: appRootStyle, className: appRootClassName } = useAppRootStyles();
|
|
51
|
+
return /*#__PURE__*/ _jsx(RootComponent, _object_spread({
|
|
52
|
+
baseClassName: appRootClassName,
|
|
53
|
+
style: appRootStyle ? _object_spread({}, appRootStyle, style) : style
|
|
54
|
+
}, props));
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
//# sourceMappingURL=AppRootStyleContainer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/AppRoot/AppRootStyleContainer.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { useTokensClassName } from '../../lib/tokens';\nimport { useConfigProvider } from '../ConfigProvider/ConfigProviderContext';\nimport { RootComponent, type RootComponentProps } from '../RootComponent/RootComponent';\nimport { AppRootContext } from './AppRootContext';\nimport { getSafeAreaInsetsAsCssVariables, getUserSelectModeClassName } from './helpers';\nimport styles from './AppRootStyleContainer.module.css';\n\nconst sizeXClassNames = {\n none: styles.sizeXNone,\n regular: styles.sizeXRegular,\n};\n\nconst sizeYClassNames = {\n none: styles.sizeYNone,\n compact: styles.sizeYCompact,\n};\n\nconst layoutClassNames = {\n card: styles.layoutCard,\n plain: styles.layoutPlain,\n};\n\nexport function useAppRootStyles() {\n const { layout, safeAreaInsets, mode, userSelectMode } = React.useContext(AppRootContext);\n const { hasPointer, sizeX = 'none', sizeY = 'none' } = useAdaptivity();\n const { isWebView } = useConfigProvider();\n const userSelectModeClassName = getUserSelectModeClassName({\n userSelectMode,\n isWebView,\n hasPointer,\n });\n const tokensClassName = useTokensClassName();\n\n return {\n style: safeAreaInsets ? getSafeAreaInsetsAsCssVariables(safeAreaInsets) : undefined,\n className: classNames(\n styles.host,\n mode === 'embedded' && styles.embedded,\n sizeX !== 'compact' && sizeXClassNames[sizeX],\n sizeY !== 'regular' && sizeYClassNames[sizeY],\n layout && layoutClassNames[layout],\n userSelectModeClassName,\n tokensClassName,\n ),\n };\n}\n\ntype AppRootStyleContainerProps = RootComponentProps<HTMLDivElement>;\n\n/**\n * Специальный контейнер для переиспользования стилей, токенов и safe-area-inset в:\n * - точке монтирования приложения – `AppRoot`;\n * - точке монтирования порталов для модальных окон – `PortalRoot`.\n *\n * @private\n */\nexport function AppRootStyleContainer({ style, ...props }: AppRootStyleContainerProps) {\n const { style: appRootStyle, className: appRootClassName } = useAppRootStyles();\n\n return (\n <RootComponent\n baseClassName={appRootClassName}\n style={appRootStyle ? { ...appRootStyle, ...style } : style}\n {...props}\n />\n );\n}\n"],"names":["React","classNames","useAdaptivity","useTokensClassName","useConfigProvider","RootComponent","AppRootContext","getSafeAreaInsetsAsCssVariables","getUserSelectModeClassName","sizeXClassNames","none","regular","sizeYClassNames","compact","layoutClassNames","card","plain","useAppRootStyles","layout","safeAreaInsets","mode","userSelectMode","useContext","hasPointer","sizeX","sizeY","isWebView","userSelectModeClassName","tokensClassName","style","undefined","className","AppRootStyleContainer","props","appRootStyle","appRootClassName","baseClassName"],"mappings":"AAAA;;;;AAEA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,aAAa,QAAQ,+BAA4B;AAC1D,SAASC,kBAAkB,QAAQ,4BAAmB;AACtD,SAASC,iBAAiB,QAAQ,6CAA0C;AAC5E,SAASC,aAAa,QAAiC,oCAAiC;AACxF,SAASC,cAAc,QAAQ,sBAAmB;AAClD,SAASC,+BAA+B,EAAEC,0BAA0B,QAAQ,eAAY;AAGxF,MAAMC,kBAAkB;IACtBC,IAAI;IACJC,OAAO;AACT;AAEA,MAAMC,kBAAkB;IACtBF,IAAI;IACJG,OAAO;AACT;AAEA,MAAMC,mBAAmB;IACvBC,IAAI;IACJC,KAAK;AACP;AAEA,OAAO,SAASC;IACd,MAAM,EAAEC,MAAM,EAAEC,cAAc,EAAEC,IAAI,EAAEC,cAAc,EAAE,GAAGrB,MAAMsB,UAAU,CAAChB;IAC1E,MAAM,EAAEiB,UAAU,EAAEC,QAAQ,MAAM,EAAEC,QAAQ,MAAM,EAAE,GAAGvB;IACvD,MAAM,EAAEwB,SAAS,EAAE,GAAGtB;IACtB,MAAMuB,0BAA0BnB,2BAA2B;QACzDa;QACAK;QACAH;IACF;IACA,MAAMK,kBAAkBzB;IAExB,OAAO;QACL0B,OAAOV,iBAAiBZ,gCAAgCY,kBAAkBW;QAC1EC,WAAW9B,gCAETmB,SAAS,uCACTI,UAAU,aAAaf,eAAe,CAACe,MAAM,EAC7CC,UAAU,aAAab,eAAe,CAACa,MAAM,EAC7CP,UAAUJ,gBAAgB,CAACI,OAAO,EAClCS,yBACAC;IAEJ;AACF;AAIA;;;;;;CAMC,GACD,OAAO,SAASI,sBAAsB;QAAA,EAAEH,KAAK,EAAwC,GAA/C,QAAYI,mCAAZ;QAAEJ;;IACtC,MAAM,EAAEA,OAAOK,YAAY,EAAEH,WAAWI,gBAAgB,EAAE,GAAGlB;IAE7D,qBACE,KAACZ;QACC+B,eAAeD;QACfN,OAAOK,eAAe,mBAAKA,cAAiBL,SAAUA;OAClDI;AAGV"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type AppRootPortalProps } from './AppRootPortal';
|
|
2
|
+
/**
|
|
3
|
+
* Специальный компонент для рендеринга ModalRoot и
|
|
4
|
+
* popout компонентов внутри SplitLayout после контента
|
|
5
|
+
* Как было раньше в v6 при передаче модалок и popout компонентов
|
|
6
|
+
* в свойства SplitLayout modal/popout в режиме full
|
|
7
|
+
*
|
|
8
|
+
* @private
|
|
9
|
+
*/
|
|
10
|
+
export declare function ModalPopoutPortal(props: AppRootPortalProps): import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
//# sourceMappingURL=ModalPopoutPortal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ModalPopoutPortal.d.ts","sourceRoot":"","sources":["../../../src/components/AppRoot/ModalPopoutPortal.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAiB,KAAK,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAEzE;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,kBAAkB,2CAY1D"}
|