@vkontakte/vkui 6.0.0-beta.1 → 6.0.0-beta.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/README.md +6 -14
- package/dist/cjs/components/AppRoot/AppRoot.d.ts +18 -11
- package/dist/cjs/components/AppRoot/AppRoot.d.ts.map +1 -1
- package/dist/cjs/components/AppRoot/AppRoot.js +85 -148
- package/dist/cjs/components/AppRoot/AppRoot.js.map +1 -1
- package/dist/cjs/components/AppRoot/AppRootContext.d.ts +12 -6
- package/dist/cjs/components/AppRoot/AppRootContext.d.ts.map +1 -1
- package/dist/cjs/components/AppRoot/AppRootContext.js +20 -6
- package/dist/cjs/components/AppRoot/AppRootContext.js.map +1 -1
- package/dist/cjs/components/AppRoot/AppRootPortal.js +1 -1
- package/dist/cjs/components/AppRoot/AppRootPortal.js.map +1 -1
- package/dist/cjs/components/AppRoot/helpers.d.ts +18 -0
- package/dist/cjs/components/AppRoot/helpers.d.ts.map +1 -0
- package/dist/cjs/components/AppRoot/helpers.js +98 -0
- package/dist/cjs/components/AppRoot/helpers.js.map +1 -0
- package/dist/cjs/components/AppRoot/types.d.ts +10 -0
- package/dist/cjs/components/AppRoot/types.d.ts.map +1 -0
- package/dist/cjs/components/AppRoot/types.js +6 -0
- package/dist/cjs/components/AppRoot/types.js.map +1 -0
- package/dist/cjs/components/ConfigProvider/ConfigProvider.d.ts.map +1 -1
- package/dist/cjs/components/ConfigProvider/ConfigProvider.js +0 -18
- package/dist/cjs/components/ConfigProvider/ConfigProvider.js.map +1 -1
- package/dist/cjs/components/CustomSelect/CustomSelect.d.ts.map +1 -1
- package/dist/cjs/components/CustomSelect/CustomSelect.js +4 -1
- package/dist/cjs/components/CustomSelect/CustomSelect.js.map +1 -1
- package/dist/cjs/components/CustomSelect/CustomSelectClearButton.js +2 -2
- package/dist/cjs/components/CustomSelect/CustomSelectClearButton.js.map +1 -1
- package/dist/cjs/components/CustomSelect/CustomSelectInput.d.ts.map +1 -1
- package/dist/cjs/components/CustomSelect/CustomSelectInput.js +15 -10
- package/dist/cjs/components/CustomSelect/CustomSelectInput.js.map +1 -1
- package/dist/cjs/components/MiniInfoCell/MiniInfoCell.d.ts +1 -1
- package/dist/cjs/components/MiniInfoCell/MiniInfoCell.d.ts.map +1 -1
- package/dist/cjs/components/MiniInfoCell/MiniInfoCell.js.map +1 -1
- package/dist/cjs/components/ModalCardBase/ModalCardBase.d.ts.map +1 -1
- package/dist/cjs/components/ModalCardBase/ModalCardBase.js +8 -3
- package/dist/cjs/components/ModalCardBase/ModalCardBase.js.map +1 -1
- package/dist/cjs/components/ModalRoot/ModalRoot.d.ts.map +1 -1
- package/dist/cjs/components/ModalRoot/ModalRoot.js +1 -0
- package/dist/cjs/components/ModalRoot/ModalRoot.js.map +1 -1
- package/dist/cjs/components/PopoutRoot/PopoutRoot.d.ts +11 -0
- package/dist/cjs/components/PopoutRoot/PopoutRoot.d.ts.map +1 -1
- package/dist/cjs/components/PopoutRoot/PopoutRoot.js +31 -9
- package/dist/cjs/components/PopoutRoot/PopoutRoot.js.map +1 -1
- package/dist/cjs/components/PopoutWrapper/PopoutWrapper.d.ts +18 -1
- package/dist/cjs/components/PopoutWrapper/PopoutWrapper.d.ts.map +1 -1
- package/dist/cjs/components/PopoutWrapper/PopoutWrapper.js +0 -6
- package/dist/cjs/components/PopoutWrapper/PopoutWrapper.js.map +1 -1
- package/dist/cjs/components/RootComponent/RootComponent.d.ts +1 -1
- package/dist/cjs/components/RootComponent/RootComponent.d.ts.map +1 -1
- package/dist/cjs/components/RootComponent/RootComponent.js.map +1 -1
- package/dist/cjs/components/SelectMimicry/SelectMimicry.d.ts +2 -2
- package/dist/cjs/components/SelectMimicry/SelectMimicry.d.ts.map +1 -1
- package/dist/cjs/components/SelectMimicry/SelectMimicry.js.map +1 -1
- package/dist/cjs/components/SubnavigationBar/SubnavigationBar.d.ts.map +1 -1
- package/dist/cjs/components/SubnavigationBar/SubnavigationBar.js +1 -6
- package/dist/cjs/components/SubnavigationBar/SubnavigationBar.js.map +1 -1
- package/dist/cjs/components/Tappable/Tappable.d.ts +1 -0
- package/dist/cjs/components/Tappable/Tappable.d.ts.map +1 -1
- package/dist/cjs/components/Tappable/Tappable.js +1 -1
- package/dist/cjs/components/Tappable/Tappable.js.map +1 -1
- package/dist/cjs/components/UsersStack/UsersStack.d.ts.map +1 -1
- package/dist/cjs/components/UsersStack/UsersStack.js +1 -1
- package/dist/cjs/components/UsersStack/UsersStack.js.map +1 -1
- package/dist/cjs/hooks/useAutoDetectAppearance.d.ts +1 -1
- package/dist/cjs/hooks/useAutoDetectAppearance.d.ts.map +1 -1
- package/dist/cjs/hooks/useAutoDetectAppearance.js +4 -10
- package/dist/cjs/hooks/useAutoDetectAppearance.js.map +1 -1
- package/dist/cjs/hooks/useFocusVisible.d.ts +1 -1
- package/dist/cjs/hooks/useObjectMemo.d.ts +0 -1
- package/dist/cjs/hooks/useObjectMemo.d.ts.map +1 -1
- package/dist/cjs/hooks/useObjectMemo.js +5 -15
- package/dist/cjs/hooks/useObjectMemo.js.map +1 -1
- package/dist/cjs/index.d.ts +2 -3
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +0 -4
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/lib/createPortal.d.ts +1 -2
- package/dist/cjs/lib/createPortal.d.ts.map +1 -1
- package/dist/cjs/lib/createPortal.js.map +1 -1
- package/dist/components/AppRoot/AppRoot.d.ts +18 -11
- package/dist/components/AppRoot/AppRoot.d.ts.map +1 -1
- package/dist/components/AppRoot/AppRoot.js +87 -150
- package/dist/components/AppRoot/AppRoot.js.map +1 -1
- package/dist/components/AppRoot/AppRootContext.d.ts +12 -6
- package/dist/components/AppRoot/AppRootContext.d.ts.map +1 -1
- package/dist/components/AppRoot/AppRootContext.js +13 -3
- package/dist/components/AppRoot/AppRootContext.js.map +1 -1
- package/dist/components/AppRoot/AppRootPortal.js +1 -1
- package/dist/components/AppRoot/AppRootPortal.js.map +1 -1
- package/dist/components/AppRoot/helpers.d.ts +18 -0
- package/dist/components/AppRoot/helpers.d.ts.map +1 -0
- package/dist/components/AppRoot/helpers.js +71 -0
- package/dist/components/AppRoot/helpers.js.map +1 -0
- package/dist/components/AppRoot/types.d.ts +10 -0
- package/dist/components/AppRoot/types.d.ts.map +1 -0
- package/dist/components/AppRoot/types.js +3 -0
- package/dist/components/AppRoot/types.js.map +1 -0
- package/dist/components/ConfigProvider/ConfigProvider.d.ts.map +1 -1
- package/dist/components/ConfigProvider/ConfigProvider.js +1 -19
- package/dist/components/ConfigProvider/ConfigProvider.js.map +1 -1
- package/dist/components/CustomSelect/CustomSelect.d.ts.map +1 -1
- package/dist/components/CustomSelect/CustomSelect.js +4 -1
- package/dist/components/CustomSelect/CustomSelect.js.map +1 -1
- package/dist/components/CustomSelect/CustomSelectClearButton.js +2 -2
- package/dist/components/CustomSelect/CustomSelectClearButton.js.map +1 -1
- package/dist/components/CustomSelect/CustomSelectInput.d.ts.map +1 -1
- package/dist/components/CustomSelect/CustomSelectInput.js +15 -10
- package/dist/components/CustomSelect/CustomSelectInput.js.map +1 -1
- package/dist/components/MiniInfoCell/MiniInfoCell.d.ts +1 -1
- package/dist/components/MiniInfoCell/MiniInfoCell.d.ts.map +1 -1
- package/dist/components/MiniInfoCell/MiniInfoCell.js.map +1 -1
- package/dist/components/ModalCardBase/ModalCardBase.d.ts.map +1 -1
- package/dist/components/ModalCardBase/ModalCardBase.js +8 -3
- package/dist/components/ModalCardBase/ModalCardBase.js.map +1 -1
- package/dist/components/ModalRoot/ModalRoot.d.ts.map +1 -1
- package/dist/components/ModalRoot/ModalRoot.js +1 -0
- package/dist/components/ModalRoot/ModalRoot.js.map +1 -1
- package/dist/components/PopoutRoot/PopoutRoot.d.ts +11 -0
- package/dist/components/PopoutRoot/PopoutRoot.d.ts.map +1 -1
- package/dist/components/PopoutRoot/PopoutRoot.js +24 -7
- package/dist/components/PopoutRoot/PopoutRoot.js.map +1 -1
- package/dist/components/PopoutWrapper/PopoutWrapper.d.ts +18 -1
- package/dist/components/PopoutWrapper/PopoutWrapper.d.ts.map +1 -1
- package/dist/components/PopoutWrapper/PopoutWrapper.js +0 -6
- package/dist/components/PopoutWrapper/PopoutWrapper.js.map +1 -1
- package/dist/components/RootComponent/RootComponent.d.ts +1 -1
- package/dist/components/RootComponent/RootComponent.d.ts.map +1 -1
- package/dist/components/RootComponent/RootComponent.js.map +1 -1
- package/dist/components/SelectMimicry/SelectMimicry.d.ts +2 -2
- package/dist/components/SelectMimicry/SelectMimicry.d.ts.map +1 -1
- package/dist/components/SelectMimicry/SelectMimicry.js.map +1 -1
- package/dist/components/SubnavigationBar/SubnavigationBar.d.ts.map +1 -1
- package/dist/components/SubnavigationBar/SubnavigationBar.js +1 -6
- package/dist/components/SubnavigationBar/SubnavigationBar.js.map +1 -1
- package/dist/components/Tappable/Tappable.d.ts +1 -0
- 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/UsersStack/UsersStack.d.ts.map +1 -1
- package/dist/components/UsersStack/UsersStack.js +1 -1
- package/dist/components/UsersStack/UsersStack.js.map +1 -1
- package/dist/components.css +16 -17
- package/dist/components.css.map +1 -1
- package/dist/components.js.tmp +2856 -2953
- package/dist/cssm/components/AppRoot/AppRoot.d.ts +18 -11
- package/dist/cssm/components/AppRoot/AppRoot.d.ts.map +1 -1
- package/dist/cssm/components/AppRoot/AppRoot.js +87 -146
- package/dist/cssm/components/AppRoot/AppRoot.js.map +1 -1
- package/dist/cssm/components/AppRoot/AppRootContext.d.ts +12 -6
- package/dist/cssm/components/AppRoot/AppRootContext.d.ts.map +1 -1
- package/dist/cssm/components/AppRoot/AppRootContext.js +13 -3
- package/dist/cssm/components/AppRoot/AppRootContext.js.map +1 -1
- package/dist/cssm/components/AppRoot/AppRootPortal.js +1 -1
- package/dist/cssm/components/AppRoot/AppRootPortal.js.map +1 -1
- package/dist/cssm/components/AppRoot/helpers.d.ts +18 -0
- package/dist/cssm/components/AppRoot/helpers.d.ts.map +1 -0
- package/dist/cssm/components/AppRoot/helpers.js +71 -0
- package/dist/cssm/components/AppRoot/helpers.js.map +1 -0
- package/dist/cssm/components/AppRoot/types.d.ts +10 -0
- package/dist/cssm/components/AppRoot/types.d.ts.map +1 -0
- package/dist/cssm/components/AppRoot/types.js +3 -0
- package/dist/cssm/components/AppRoot/types.js.map +1 -0
- package/dist/cssm/components/ConfigProvider/ConfigProvider.d.ts.map +1 -1
- package/dist/cssm/components/ConfigProvider/ConfigProvider.js +1 -19
- package/dist/cssm/components/ConfigProvider/ConfigProvider.js.map +1 -1
- package/dist/cssm/components/CustomSelect/CustomSelect.d.ts.map +1 -1
- package/dist/cssm/components/CustomSelect/CustomSelect.js +3 -0
- package/dist/cssm/components/CustomSelect/CustomSelect.js.map +1 -1
- package/dist/cssm/components/CustomSelect/CustomSelectClearButton.js +2 -2
- package/dist/cssm/components/CustomSelect/CustomSelectClearButton.js.map +1 -1
- package/dist/cssm/components/CustomSelect/CustomSelectInput.d.ts.map +1 -1
- package/dist/cssm/components/CustomSelect/CustomSelectInput.js +15 -11
- package/dist/cssm/components/CustomSelect/CustomSelectInput.js.map +1 -1
- package/dist/cssm/components/FormField/FormField.module.css +0 -11
- package/dist/cssm/components/MiniInfoCell/MiniInfoCell.d.ts +1 -1
- package/dist/cssm/components/MiniInfoCell/MiniInfoCell.d.ts.map +1 -1
- package/dist/cssm/components/MiniInfoCell/MiniInfoCell.js.map +1 -1
- package/dist/cssm/components/ModalCardBase/ModalCardBase.d.ts.map +1 -1
- package/dist/cssm/components/ModalCardBase/ModalCardBase.js +8 -3
- package/dist/cssm/components/ModalCardBase/ModalCardBase.js.map +1 -1
- package/dist/cssm/components/ModalCardBase/ModalCardBase.module.css +0 -17
- package/dist/cssm/components/ModalRoot/ModalRoot.d.ts.map +1 -1
- package/dist/cssm/components/ModalRoot/ModalRoot.js +1 -0
- package/dist/cssm/components/ModalRoot/ModalRoot.js.map +1 -1
- package/dist/cssm/components/PopoutRoot/PopoutRoot.d.ts +11 -0
- package/dist/cssm/components/PopoutRoot/PopoutRoot.d.ts.map +1 -1
- package/dist/cssm/components/PopoutRoot/PopoutRoot.js +14 -7
- package/dist/cssm/components/PopoutRoot/PopoutRoot.js.map +1 -1
- package/dist/cssm/components/PopoutWrapper/PopoutWrapper.d.ts +18 -1
- package/dist/cssm/components/PopoutWrapper/PopoutWrapper.d.ts.map +1 -1
- package/dist/cssm/components/PopoutWrapper/PopoutWrapper.js +0 -6
- package/dist/cssm/components/PopoutWrapper/PopoutWrapper.js.map +1 -1
- package/dist/cssm/components/RootComponent/RootComponent.d.ts +1 -1
- package/dist/cssm/components/RootComponent/RootComponent.d.ts.map +1 -1
- package/dist/cssm/components/RootComponent/RootComponent.js.map +1 -1
- package/dist/cssm/components/SelectMimicry/SelectMimicry.d.ts +2 -2
- package/dist/cssm/components/SelectMimicry/SelectMimicry.d.ts.map +1 -1
- package/dist/cssm/components/SelectMimicry/SelectMimicry.js.map +1 -1
- package/dist/cssm/components/SubnavigationBar/SubnavigationBar.d.ts.map +1 -1
- package/dist/cssm/components/SubnavigationBar/SubnavigationBar.js +1 -6
- package/dist/cssm/components/SubnavigationBar/SubnavigationBar.js.map +1 -1
- package/dist/cssm/components/SubnavigationBar/SubnavigationBar.module.css +1 -6
- package/dist/cssm/components/SubnavigationButton/SubnavigationButton.module.css +1 -6
- package/dist/cssm/components/Tappable/Tappable.d.ts +1 -0
- package/dist/cssm/components/Tappable/Tappable.d.ts.map +1 -1
- package/dist/cssm/components/Tappable/Tappable.js +1 -0
- package/dist/cssm/components/Tappable/Tappable.js.map +1 -1
- package/dist/cssm/components/UsersStack/UsersStack.d.ts.map +1 -1
- package/dist/cssm/components/UsersStack/UsersStack.js +1 -1
- package/dist/cssm/components/UsersStack/UsersStack.js.map +1 -1
- package/dist/cssm/components/UsersStack/UsersStack.module.css +0 -10
- package/dist/cssm/hooks/useAutoDetectAppearance.d.ts +1 -1
- package/dist/cssm/hooks/useAutoDetectAppearance.d.ts.map +1 -1
- package/dist/cssm/hooks/useAutoDetectAppearance.js +4 -9
- package/dist/cssm/hooks/useAutoDetectAppearance.js.map +1 -1
- package/dist/cssm/hooks/useFocusVisible.d.ts +1 -1
- package/dist/cssm/hooks/useObjectMemo.d.ts +0 -1
- package/dist/cssm/hooks/useObjectMemo.d.ts.map +1 -1
- package/dist/cssm/hooks/useObjectMemo.js +2 -4
- package/dist/cssm/hooks/useObjectMemo.js.map +1 -1
- package/dist/cssm/index.d.ts +2 -3
- package/dist/cssm/index.d.ts.map +1 -1
- package/dist/cssm/index.js +1 -2
- package/dist/cssm/index.js.map +1 -1
- package/dist/cssm/lib/createPortal.d.ts +1 -2
- package/dist/cssm/lib/createPortal.d.ts.map +1 -1
- package/dist/cssm/lib/createPortal.js.map +1 -1
- package/dist/cssm/styles/common.css +9 -6
- package/dist/cssm/styles/themes.css +12 -6
- package/dist/hooks/useAutoDetectAppearance.d.ts +1 -1
- package/dist/hooks/useAutoDetectAppearance.d.ts.map +1 -1
- package/dist/hooks/useAutoDetectAppearance.js +4 -10
- package/dist/hooks/useAutoDetectAppearance.js.map +1 -1
- package/dist/hooks/useFocusVisible.d.ts +1 -1
- package/dist/hooks/useObjectMemo.d.ts +0 -1
- package/dist/hooks/useObjectMemo.d.ts.map +1 -1
- package/dist/hooks/useObjectMemo.js +2 -4
- package/dist/hooks/useObjectMemo.js.map +1 -1
- package/dist/index.d.ts +2 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -2
- package/dist/index.js.map +1 -1
- package/dist/lib/createPortal.d.ts +1 -2
- package/dist/lib/createPortal.d.ts.map +1 -1
- package/dist/lib/createPortal.js.map +1 -1
- package/dist/vkui.css +17 -18
- package/dist/vkui.css.map +1 -1
- package/dist/vkui.js.tmp +2856 -2953
- package/package.json +2 -2
- package/src/components/AppRoot/AppRoot.test.tsx +283 -89
- package/src/components/AppRoot/AppRoot.tsx +129 -180
- package/src/components/AppRoot/AppRootContext.ts +23 -9
- package/src/components/AppRoot/AppRootPortal.tsx +1 -1
- package/src/components/AppRoot/Readme.md +0 -8
- package/src/components/AppRoot/helpers.ts +90 -0
- package/src/components/AppRoot/types.ts +12 -0
- package/src/components/Calendar/Readme.md +95 -97
- package/src/components/CalendarRange/Readme.md +55 -57
- package/src/components/ConfigProvider/ConfigProvider.tsx +1 -27
- package/src/components/CustomSelect/CustomSelect.e2e.tsx +7 -1
- package/src/components/CustomSelect/CustomSelect.tsx +3 -0
- package/src/components/CustomSelect/CustomSelectClearButton.tsx +2 -2
- package/src/components/CustomSelect/CustomSelectInput.tsx +35 -15
- package/src/components/CustomSelect/Readme.md +3 -1
- package/src/components/DateInput/Readme.md +82 -87
- package/src/components/DateRangeInput/Readme.md +67 -72
- package/src/components/FormField/FormField.module.css +0 -9
- package/src/components/FormItem/Readme.md +4 -2
- package/src/components/FormLayoutGroup/Readme.md +2 -2
- package/src/components/Input/Readme.md +4 -4
- package/src/components/MiniInfoCell/MiniInfoCell.tsx +1 -1
- package/src/components/ModalCard/ModalCard.e2e-playground.tsx +48 -33
- package/src/components/ModalCard/ModalCard.stories.tsx +1 -1
- package/src/components/ModalCardBase/ModalCardBase.module.css +0 -14
- package/src/components/ModalCardBase/ModalCardBase.tsx +7 -12
- package/src/components/ModalCardBase/Readme.md +71 -12
- package/src/components/ModalRoot/ModalRoot.tsx +1 -0
- package/src/components/ModalRoot/Readme.md +78 -64
- package/src/components/PopoutRoot/PopoutRoot.test.tsx +10 -2
- package/src/components/PopoutRoot/PopoutRoot.tsx +20 -12
- package/src/components/PopoutWrapper/PopoutWrapper.test.tsx +14 -31
- package/src/components/PopoutWrapper/PopoutWrapper.tsx +18 -8
- package/src/components/PopoutWrapper/Readme.md +27 -8
- package/src/components/Popover/Popover.stories.tsx +3 -3
- package/src/components/Popover/Readme.md +2 -2
- package/src/components/Radio/Readme.md +2 -2
- package/src/components/RadioGroup/RadioGroup.e2e-playground.tsx +3 -3
- package/src/components/RadioGroup/Readme.md +4 -4
- package/src/components/RootComponent/RootComponent.tsx +1 -1
- package/src/components/SelectMimicry/SelectMimicry.tsx +3 -2
- package/src/components/Slider/Readme.md +2 -2
- package/src/components/Slider/__image_snapshots__/slider-with-tooltip-slider-with-tooltip-vkcom-chromium-dark-1-snap.png +2 -2
- package/src/components/Slider/__image_snapshots__/slider-with-tooltip-slider-with-tooltip-vkcom-firefox-dark-1-snap.png +2 -2
- package/src/components/Slider/__image_snapshots__/slider-with-tooltip-slider-with-tooltip-vkcom-webkit-dark-1-snap.png +2 -2
- package/src/components/SubnavigationBar/Readme.md +2 -2
- package/src/components/SubnavigationBar/SubnavigationBar.module.css +1 -6
- package/src/components/SubnavigationBar/SubnavigationBar.tsx +1 -6
- package/src/components/SubnavigationButton/SubnavigationButton.module.css +1 -6
- package/src/components/Tabs/Readme.md +1 -1
- package/src/components/Tappable/Tappable.tsx +2 -0
- package/src/components/UsersStack/UsersStack.module.css +0 -8
- package/src/components/UsersStack/UsersStack.tsx +1 -6
- package/src/components/View/Readme.md +10 -10
- package/src/hooks/useAutoDetectAppearance.test.ts +89 -0
- package/src/hooks/{useAutoDetectAppearance.tsx → useAutoDetectAppearance.ts} +6 -10
- package/src/hooks/useFocusVisible.test.tsx +5 -1
- package/src/hooks/useObjectMemo.ts +2 -8
- package/src/index.ts +2 -3
- package/src/lib/createPortal.ts +1 -1
- package/src/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.test.tsx +6 -3
- package/src/styles/common.css +11 -7
- package/dist/cjs/components/FormLayout/FormLayout.d.ts +0 -8
- package/dist/cjs/components/FormLayout/FormLayout.d.ts.map +0 -1
- package/dist/cjs/components/FormLayout/FormLayout.js +0 -40
- package/dist/cjs/components/FormLayout/FormLayout.js.map +0 -1
- package/dist/components/FormLayout/FormLayout.d.ts +0 -8
- package/dist/components/FormLayout/FormLayout.d.ts.map +0 -1
- package/dist/components/FormLayout/FormLayout.js +0 -31
- package/dist/components/FormLayout/FormLayout.js.map +0 -1
- package/dist/cssm/components/FormLayout/FormLayout.d.ts +0 -8
- package/dist/cssm/components/FormLayout/FormLayout.d.ts.map +0 -1
- package/dist/cssm/components/FormLayout/FormLayout.js +0 -22
- package/dist/cssm/components/FormLayout/FormLayout.js.map +0 -1
- package/dist/cssm/components/FormLayout/FormLayout.module.css +0 -18
- package/src/components/FormLayout/FormLayout.module.css +0 -16
- package/src/components/FormLayout/FormLayout.test.tsx +0 -10
- package/src/components/FormLayout/FormLayout.tsx +0 -41
- package/src/components/FormLayout/Readme.md +0 -2
package/README.md
CHANGED
|
@@ -37,13 +37,13 @@ yarn add @vkontakte/vkui
|
|
|
37
37
|
pnpm add @vkontakte/vkui
|
|
38
38
|
```
|
|
39
39
|
|
|
40
|
-
> _Обратите внимание_: мы поддерживаем [react](https://www.npmjs.com/package/react) и [react-dom](https://www.npmjs.com/package/react-dom)
|
|
40
|
+
> _Обратите внимание_: мы поддерживаем [react](https://www.npmjs.com/package/react) и [react-dom](https://www.npmjs.com/package/react-dom) версии `^18.2.0`
|
|
41
41
|
|
|
42
42
|
## Hello World
|
|
43
43
|
|
|
44
44
|
```jsx static
|
|
45
45
|
import * as React from 'react';
|
|
46
|
-
import
|
|
46
|
+
import { createRoot } from 'react-dom/client';
|
|
47
47
|
import {
|
|
48
48
|
AdaptivityProvider,
|
|
49
49
|
ConfigProvider,
|
|
@@ -79,28 +79,20 @@ const Example = () => {
|
|
|
79
79
|
);
|
|
80
80
|
};
|
|
81
81
|
|
|
82
|
-
|
|
82
|
+
const container = document.getElementById('root');
|
|
83
|
+
const root = createRoot(container); // createRoot(container!) if you use TypeScript
|
|
84
|
+
root.render(
|
|
83
85
|
<ConfigProvider>
|
|
84
86
|
<AdaptivityProvider>
|
|
85
87
|
<Example />
|
|
86
88
|
</AdaptivityProvider>
|
|
87
89
|
</ConfigProvider>,
|
|
88
|
-
document.getElementById('root'),
|
|
89
90
|
);
|
|
90
91
|
```
|
|
91
92
|
|
|
92
93
|
## Браузеры
|
|
93
94
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
- Android >= 5
|
|
97
|
-
- iOS >= 9
|
|
98
|
-
|
|
99
|
-
Иными словами, мы поддерживаем браузеры следующих версий:
|
|
100
|
-
|
|
101
|
-
- Safari для iOS >= 9
|
|
102
|
-
- Android Browser >= 5 (Chrome 36)
|
|
103
|
-
- Chrome для Android, начиная с Android 5.0 (Chrome 36)
|
|
95
|
+
С подробным списком можно ознакомиться в файле [.browserslistrc](https://github.com/VKCOM/VKUI/blob/master/.browserslistrc)
|
|
104
96
|
|
|
105
97
|
## Тестирование
|
|
106
98
|
|
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
|
|
3
|
-
top?: number;
|
|
4
|
-
right?: number;
|
|
5
|
-
bottom?: number;
|
|
6
|
-
left?: number;
|
|
7
|
-
};
|
|
2
|
+
import type { AppRootLayout, AppRootMode, AppRootScroll, SafeAreaInsets } from './types';
|
|
8
3
|
export interface AppRootProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
9
4
|
/** Режим встраивания */
|
|
10
|
-
mode?:
|
|
11
|
-
|
|
12
|
-
|
|
5
|
+
mode?: AppRootMode;
|
|
6
|
+
/**
|
|
7
|
+
* - `global` (по умолчанию) — VKUI-приложение скроллится вместе со страницей.
|
|
8
|
+
* - `contain` — VKUI-приложение живет в отдельной зоне и скроллится независимо внутри `AppRoot` (например, в модалке).
|
|
9
|
+
*
|
|
10
|
+
* Полезно при использовании `mode="embedded"`.
|
|
11
|
+
*/
|
|
12
|
+
scroll?: AppRootScroll;
|
|
13
|
+
/**
|
|
14
|
+
* см. документацию [mdn web docs | env#values](https://developer.mozilla.org/en-US/docs/Web/CSS/env#values).
|
|
15
|
+
*/
|
|
13
16
|
safeAreaInsets?: SafeAreaInsets;
|
|
14
17
|
/**
|
|
15
18
|
* Кастомный root-элемент портала
|
|
@@ -26,10 +29,14 @@ export interface AppRootProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
|
26
29
|
* Это поведение можно отключить с помощью этого параметра.
|
|
27
30
|
*/
|
|
28
31
|
disableParentTransformForPositionFixedElements?: boolean;
|
|
29
|
-
|
|
32
|
+
/**
|
|
33
|
+
* Глобально задаёт тип оформления макета для компонентов
|
|
34
|
+
* [Panel](https://vkcom.github.io/VKUI/#/Panel) и [Group](https://vkcom.github.io/VKUI/#/Group).
|
|
35
|
+
*/
|
|
36
|
+
layout?: AppRootLayout;
|
|
30
37
|
}
|
|
31
38
|
/**
|
|
32
39
|
* @see https://vkcom.github.io/VKUI/#/AppRoot
|
|
33
40
|
*/
|
|
34
|
-
export declare const AppRoot: ({ children, mode, scroll, portalRoot: portalRootProp, disablePortal, disableParentTransformForPositionFixedElements, className, safeAreaInsets, layout, ...props }: AppRootProps) => React.JSX.Element;
|
|
41
|
+
export declare const AppRoot: ({ children, mode, scroll, portalRoot: portalRootProp, disablePortal, disableParentTransformForPositionFixedElements, className, safeAreaInsets: safeAreaInsetsProp, layout, ...props }: AppRootProps) => React.JSX.Element;
|
|
35
42
|
//# sourceMappingURL=AppRoot.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AppRoot.d.ts","sourceRoot":"","sources":["../../../../src/components/AppRoot/AppRoot.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"AppRoot.d.ts","sourceRoot":"","sources":["../../../../src/components/AppRoot/AppRoot.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAiB/B,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAGzF,MAAM,WAAW,YAAa,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IACxE,wBAAwB;IACxB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB;;OAEG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC;;OAEG;IACH,UAAU,CAAC,EAAE,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC;IAC/D;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;;OAKG;IACH,8CAA8C,CAAC,EAAE,OAAO,CAAC;IACzD;;;OAGG;IACH,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB;AAED;;GAEG;AACH,eAAO,MAAM,OAAO,2LAWjB,YAAY,sBAoJd,CAAC"}
|
|
@@ -16,39 +16,15 @@ const _vkjs = require("@vkontakte/vkjs");
|
|
|
16
16
|
const _useAdaptivity = require("../../hooks/useAdaptivity");
|
|
17
17
|
const _useAppearance = require("../../hooks/useAppearance");
|
|
18
18
|
const _useKeyboardInputTracker = require("../../hooks/useKeyboardInputTracker");
|
|
19
|
+
const _useObjectMemo = require("../../hooks/useObjectMemo");
|
|
20
|
+
const _usePlatform = require("../../hooks/usePlatform");
|
|
19
21
|
const _dom = require("../../lib/dom");
|
|
20
|
-
const _isRefObject = require("../../lib/isRefObject");
|
|
21
22
|
const _useIsomorphicLayoutEffect = require("../../lib/useIsomorphicLayoutEffect");
|
|
22
23
|
const _AppRootContext = require("./AppRootContext");
|
|
23
24
|
const _ScrollContext = require("./ScrollContext");
|
|
24
|
-
const
|
|
25
|
-
none: 'vkui--sizeX-none',
|
|
26
|
-
['regular']: 'vkui--sizeX-regular'
|
|
27
|
-
};
|
|
28
|
-
const vkuiSizeYClassNames = {
|
|
29
|
-
none: 'vkui--sizeY-none',
|
|
30
|
-
['compact']: 'vkui--sizeY-compact'
|
|
31
|
-
};
|
|
32
|
-
const vkuiLayoutClassNames = {
|
|
33
|
-
card: 'vkui--layout-card',
|
|
34
|
-
plain: 'vkui--layout-plain'
|
|
35
|
-
};
|
|
36
|
-
function containerClassNames(layout, sizeX, sizeY) {
|
|
37
|
-
const classNames = [];
|
|
38
|
-
if (layout) {
|
|
39
|
-
classNames.push(vkuiLayoutClassNames[layout]);
|
|
40
|
-
}
|
|
41
|
-
if (sizeX !== 'compact') {
|
|
42
|
-
classNames.push(vkuiSizeXClassNames[sizeX]);
|
|
43
|
-
}
|
|
44
|
-
if (sizeY !== 'regular') {
|
|
45
|
-
classNames.push(vkuiSizeYClassNames[sizeY]);
|
|
46
|
-
}
|
|
47
|
-
return classNames;
|
|
48
|
-
}
|
|
49
|
-
const INSET_CUSTOM_PROPERTY_PREFIX = `--vkui_internal--safe_area_inset_`;
|
|
25
|
+
const _helpers = require("./helpers");
|
|
50
26
|
const AppRoot = (_param)=>{
|
|
51
|
-
var { children, mode = 'full', scroll = 'global', portalRoot: portalRootProp = null, disablePortal, disableParentTransformForPositionFixedElements, className, safeAreaInsets, layout } = _param, props = _object_without_properties._(_param, [
|
|
27
|
+
var { children, mode = 'full', scroll = 'global', portalRoot: portalRootProp = null, disablePortal = false, disableParentTransformForPositionFixedElements, className, safeAreaInsets: safeAreaInsetsProp, layout } = _param, props = _object_without_properties._(_param, [
|
|
52
28
|
"children",
|
|
53
29
|
"mode",
|
|
54
30
|
"scroll",
|
|
@@ -59,142 +35,103 @@ const AppRoot = (_param)=>{
|
|
|
59
35
|
"safeAreaInsets",
|
|
60
36
|
"layout"
|
|
61
37
|
]);
|
|
62
|
-
const isKeyboardInputActiveRef = (0, _useKeyboardInputTracker.useKeyboardInputTracker)();
|
|
63
|
-
const rootRef = _react.useRef(null);
|
|
64
|
-
const [portalRoot, setPortalRoot] = _react.useState(null);
|
|
65
|
-
const { document } = (0, _dom.useDOM)();
|
|
66
|
-
const appearance = (0, _useAppearance.useAppearance)();
|
|
67
38
|
const { hasPointer, sizeX = 'none', sizeY = 'none' } = (0, _useAdaptivity.useAdaptivity)();
|
|
68
|
-
|
|
69
|
-
(0,
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
39
|
+
const platform = (0, _usePlatform.usePlatform)();
|
|
40
|
+
const appearance = (0, _useAppearance.useAppearance)();
|
|
41
|
+
const safeAreaInsets = (0, _useObjectMemo.useObjectMemo)(safeAreaInsetsProp);
|
|
42
|
+
const isKeyboardInputActiveRef = (0, _useKeyboardInputTracker.useKeyboardInputTracker)();
|
|
43
|
+
const appRootRef = _react.useRef(null);
|
|
44
|
+
const portalRootRef = _react.useRef(null);
|
|
45
|
+
(0, _useIsomorphicLayoutEffect.useIsomorphicLayoutEffect)(function setupPortalRoot() {
|
|
46
|
+
const portalByProp = portalRootProp ? (0, _helpers.extractPortalRootByProp)(portalRootProp) : null;
|
|
47
|
+
if (portalByProp) {
|
|
48
|
+
portalRootRef.current = portalByProp;
|
|
49
|
+
return function cleanup() {
|
|
50
|
+
portalRootRef.current = null;
|
|
51
|
+
};
|
|
81
52
|
}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
53
|
+
const documentBody = (0, _dom.getDocumentBody)(appRootRef.current);
|
|
54
|
+
const portal = documentBody.ownerDocument.createElement('div');
|
|
55
|
+
documentBody.appendChild(portal);
|
|
56
|
+
portalRootRef.current = portal;
|
|
57
|
+
return function cleanup() {
|
|
58
|
+
documentBody.removeChild(portal);
|
|
59
|
+
portalRootRef.current = null;
|
|
88
60
|
};
|
|
89
61
|
}, [
|
|
90
62
|
portalRootProp
|
|
91
63
|
]);
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
var _rootRef_current;
|
|
95
|
-
if (mode === 'partial') {
|
|
96
|
-
return _vkjs.noop;
|
|
97
|
-
}
|
|
98
|
-
const parent = (_rootRef_current = rootRef.current) === null || _rootRef_current === void 0 ? void 0 : _rootRef_current.parentElement;
|
|
99
|
-
const classes = [
|
|
100
|
-
'vkui__root'
|
|
101
|
-
].concat(mode === 'embedded' ? 'vkui__root--embedded' : []);
|
|
102
|
-
if (parent) {
|
|
103
|
-
if (mode === 'embedded' && !disableParentTransformForPositionFixedElements) {
|
|
104
|
-
parent.style.transform = 'translate3d(0, 0, 0)';
|
|
105
|
-
}
|
|
106
|
-
parent.classList.add(...classes);
|
|
107
|
-
}
|
|
108
|
-
return ()=>{
|
|
109
|
-
if (parent) {
|
|
110
|
-
if (mode === 'embedded' && !disableParentTransformForPositionFixedElements) {
|
|
111
|
-
parent.style.transform = '';
|
|
112
|
-
}
|
|
113
|
-
parent.classList.remove(...classes);
|
|
114
|
-
}
|
|
115
|
-
};
|
|
116
|
-
}, [
|
|
117
|
-
disableParentTransformForPositionFixedElements
|
|
118
|
-
]);
|
|
119
|
-
(0, _useIsomorphicLayoutEffect.useIsomorphicLayoutEffect)(()=>{
|
|
120
|
-
if (mode === 'full') {
|
|
121
|
-
document.documentElement.classList.add('vkui');
|
|
122
|
-
return ()=>{
|
|
123
|
-
document.documentElement.classList.remove('vkui');
|
|
124
|
-
};
|
|
125
|
-
}
|
|
126
|
-
return undefined;
|
|
127
|
-
}, [
|
|
128
|
-
document,
|
|
129
|
-
mode
|
|
130
|
-
]);
|
|
131
|
-
// setup insets
|
|
132
|
-
(0, _useIsomorphicLayoutEffect.useIsomorphicLayoutEffect)(()=>{
|
|
133
|
-
var _rootRef_current;
|
|
134
|
-
if (mode === 'partial' || !((_rootRef_current = rootRef.current) === null || _rootRef_current === void 0 ? void 0 : _rootRef_current.parentElement) || !safeAreaInsets) {
|
|
64
|
+
(0, _useIsomorphicLayoutEffect.useIsomorphicLayoutEffect)(function setupContainers() {
|
|
65
|
+
if (!appRootRef.current || !portalRootRef.current) {
|
|
135
66
|
return;
|
|
136
67
|
}
|
|
137
|
-
const
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
68
|
+
const parentElement = (0, _helpers.getParentElement)(appRootRef.current);
|
|
69
|
+
const documentBody = (0, _dom.getDocumentBody)(appRootRef.current);
|
|
70
|
+
const documentElement = documentBody.ownerDocument.documentElement;
|
|
71
|
+
const [baseClassNames, stylesClassNames] = (0, _helpers.getClassNamesByMode)({
|
|
72
|
+
mode,
|
|
73
|
+
layout,
|
|
74
|
+
platform,
|
|
75
|
+
appearance,
|
|
76
|
+
sizeX,
|
|
77
|
+
sizeY
|
|
78
|
+
});
|
|
79
|
+
/* eslint-disable no-restricted-properties */ switch(mode){
|
|
80
|
+
case 'full':
|
|
81
|
+
{
|
|
82
|
+
if (parentElement) {
|
|
83
|
+
parentElement.classList.add(...baseClassNames);
|
|
84
|
+
}
|
|
85
|
+
documentElement.classList.add(...stylesClassNames, 'vkui');
|
|
86
|
+
const unsetSafeAreaInsets = (0, _helpers.setSafeAreaInsets)(safeAreaInsets, documentElement);
|
|
87
|
+
return function cleanup() {
|
|
88
|
+
if (parentElement) {
|
|
89
|
+
parentElement.classList.remove(...baseClassNames);
|
|
90
|
+
}
|
|
91
|
+
documentElement.classList.remove(...stylesClassNames, 'vkui');
|
|
92
|
+
unsetSafeAreaInsets();
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
case 'embedded':
|
|
96
|
+
{
|
|
97
|
+
if (parentElement) {
|
|
98
|
+
parentElement.classList.add(...baseClassNames, ...stylesClassNames);
|
|
99
|
+
if (!disableParentTransformForPositionFixedElements) {
|
|
100
|
+
parentElement.style.setProperty('transform', 'translate3d(0, 0, 0)');
|
|
101
|
+
}
|
|
102
|
+
const unsetSafeAreaInsets = (0, _helpers.setSafeAreaInsets)(safeAreaInsets, parentElement, portalRootRef.current); // prettier-ignore
|
|
103
|
+
return function cleanup() {
|
|
104
|
+
parentElement.classList.remove(...baseClassNames, ...stylesClassNames);
|
|
105
|
+
if (!disableParentTransformForPositionFixedElements) {
|
|
106
|
+
parentElement.style.removeProperty('transform');
|
|
107
|
+
}
|
|
108
|
+
unsetSafeAreaInsets();
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
/* istanbul ignore next: node.parentElement может быть null, но такой кейс в теории невозможен */ return;
|
|
112
|
+
}
|
|
113
|
+
/* istanbul ignore next: не покрывается за счёт теста на <AppRoot mode="partial" /> */ case 'partial':
|
|
114
|
+
{
|
|
115
|
+
return;
|
|
155
116
|
}
|
|
156
|
-
}
|
|
157
|
-
};
|
|
158
|
-
}, [
|
|
159
|
-
safeAreaInsets,
|
|
160
|
-
portalRoot
|
|
161
|
-
]);
|
|
162
|
-
// adaptivity handler
|
|
163
|
-
(0, _useIsomorphicLayoutEffect.useIsomorphicLayoutEffect)(()=>{
|
|
164
|
-
var _rootRef_current;
|
|
165
|
-
if (mode === 'partial') {
|
|
166
|
-
return _vkjs.noop;
|
|
167
|
-
}
|
|
168
|
-
const classNames = containerClassNames(layout, sizeX, sizeY);
|
|
169
|
-
const container = mode === 'embedded' ? (_rootRef_current = rootRef.current) === null || _rootRef_current === void 0 ? void 0 : _rootRef_current.parentElement : document.body;
|
|
170
|
-
if (!classNames.length || !container) {
|
|
171
|
-
return _vkjs.noop;
|
|
172
117
|
}
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
118
|
+
/* eslint-enable no-restricted-properties */ }, [
|
|
119
|
+
mode,
|
|
120
|
+
layout,
|
|
121
|
+
disableParentTransformForPositionFixedElements,
|
|
122
|
+
platform,
|
|
123
|
+
appearance,
|
|
178
124
|
sizeX,
|
|
179
125
|
sizeY,
|
|
180
|
-
|
|
181
|
-
]);
|
|
182
|
-
(0, _useIsomorphicLayoutEffect.useIsomorphicLayoutEffect)(()=>{
|
|
183
|
-
if (mode !== 'full' || appearance === undefined) {
|
|
184
|
-
return _vkjs.noop;
|
|
185
|
-
}
|
|
186
|
-
document.documentElement.style.setProperty('color-scheme', appearance);
|
|
187
|
-
return ()=>document.documentElement.style.removeProperty('color-scheme');
|
|
188
|
-
}, [
|
|
189
|
-
appearance
|
|
126
|
+
safeAreaInsets
|
|
190
127
|
]);
|
|
191
128
|
const ScrollController = _react.useMemo(()=>scroll === 'contain' ? _ScrollContext.ElementScrollController : _ScrollContext.GlobalScrollController, [
|
|
192
129
|
scroll
|
|
193
130
|
]);
|
|
194
131
|
const content = /*#__PURE__*/ _react.createElement(_AppRootContext.AppRootContext.Provider, {
|
|
195
132
|
value: {
|
|
196
|
-
appRoot:
|
|
197
|
-
portalRoot,
|
|
133
|
+
appRoot: appRootRef,
|
|
134
|
+
portalRoot: portalRootRef,
|
|
198
135
|
embedded: mode === 'embedded',
|
|
199
136
|
mode,
|
|
200
137
|
disablePortal,
|
|
@@ -204,10 +141,10 @@ const AppRoot = (_param)=>{
|
|
|
204
141
|
}
|
|
205
142
|
}
|
|
206
143
|
}, /*#__PURE__*/ _react.createElement(ScrollController, {
|
|
207
|
-
elRef:
|
|
144
|
+
elRef: appRootRef
|
|
208
145
|
}, children));
|
|
209
146
|
return mode === 'partial' ? content : /*#__PURE__*/ _react.createElement("div", _object_spread._({
|
|
210
|
-
ref:
|
|
147
|
+
ref: appRootRef,
|
|
211
148
|
className: (0, _vkjs.classNames)("vkuiAppRoot", hasPointer === undefined ? "vkuiAppRoot--pointer-none" : !hasPointer && "vkuiAppRoot--pointer-has-not", className)
|
|
212
149
|
}, props), content);
|
|
213
150
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/AppRoot/AppRoot.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames, noop } from '@vkontakte/vkjs';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { useAppearance } from '../../hooks/useAppearance';\nimport { useKeyboardInputTracker } from '../../hooks/useKeyboardInputTracker';\nimport { SizeTypeValues } from '../../lib/adaptivity';\nimport { useDOM } from '../../lib/dom';\nimport { isRefObject } from '../../lib/isRefObject';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport { AppRootContext } from './AppRootContext';\nimport { ElementScrollController, GlobalScrollController } from './ScrollContext';\nimport styles from './AppRoot.module.css';\n\nexport type SafeAreaInsets = {\n top?: number;\n right?: number;\n bottom?: number;\n left?: number;\n};\n\nconst vkuiSizeXClassNames = {\n none: 'vkui--sizeX-none',\n ['regular']: 'vkui--sizeX-regular',\n};\n\nconst vkuiSizeYClassNames = {\n none: 'vkui--sizeY-none',\n ['compact']: 'vkui--sizeY-compact',\n};\n\nconst vkuiLayoutClassNames = {\n card: 'vkui--layout-card',\n plain: 'vkui--layout-plain',\n};\n\nfunction containerClassNames(\n layout: AppRootProps['layout'],\n sizeX: SizeTypeValues | 'none',\n sizeY: SizeTypeValues | 'none',\n): string[] {\n const classNames: string[] = [];\n\n if (layout) {\n classNames.push(vkuiLayoutClassNames[layout]);\n }\n\n if (sizeX !== 'compact') {\n classNames.push(vkuiSizeXClassNames[sizeX]);\n }\n\n if (sizeY !== 'regular') {\n classNames.push(vkuiSizeYClassNames[sizeY]);\n }\n\n return classNames;\n}\n\nconst INSET_CUSTOM_PROPERTY_PREFIX = `--vkui_internal--safe_area_inset_`;\n\n// Используйте classList, но будьте осторожны\n/* eslint-disable no-restricted-properties */\n\nexport interface AppRootProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Режим встраивания */\n mode?: 'partial' | 'embedded' | 'full';\n window?: Window;\n scroll?: 'global' | 'contain';\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 layout?: 'card' | 'plain';\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,\n disableParentTransformForPositionFixedElements,\n className,\n safeAreaInsets,\n layout,\n ...props\n}: AppRootProps) => {\n const isKeyboardInputActiveRef = useKeyboardInputTracker();\n const rootRef = React.useRef<HTMLDivElement | null>(null);\n const [portalRoot, setPortalRoot] = React.useState<HTMLElement | null>(null);\n const { document } = useDOM();\n const appearance = useAppearance();\n\n const { hasPointer, sizeX = 'none', sizeY = 'none' } = useAdaptivity();\n\n // setup portal\n useIsomorphicLayoutEffect(() => {\n let portal: HTMLElement | null = null;\n if (portalRootProp) {\n if (isRefObject(portalRootProp)) {\n portal = portalRootProp.current;\n } else {\n portal = portalRootProp;\n }\n }\n if (!portal) {\n portal = document!.createElement('div');\n document!.body.appendChild(portal);\n }\n setPortalRoot(portal);\n return () => {\n if (!portalRootProp) {\n portal?.parentElement?.removeChild(portal);\n }\n };\n }, [portalRootProp]);\n\n // setup root classes\n useIsomorphicLayoutEffect(() => {\n if (mode === 'partial') {\n return noop;\n }\n\n const parent = rootRef.current?.parentElement;\n const classes = ['vkui__root'].concat(mode === 'embedded' ? 'vkui__root--embedded' : []);\n if (parent) {\n if (mode === 'embedded' && !disableParentTransformForPositionFixedElements) {\n parent.style.transform = 'translate3d(0, 0, 0)';\n }\n parent.classList.add(...classes);\n }\n\n return () => {\n if (parent) {\n if (mode === 'embedded' && !disableParentTransformForPositionFixedElements) {\n parent.style.transform = '';\n }\n parent.classList.remove(...classes);\n }\n };\n }, [disableParentTransformForPositionFixedElements]);\n\n useIsomorphicLayoutEffect(() => {\n if (mode === 'full') {\n document!.documentElement.classList.add('vkui');\n\n return () => {\n document!.documentElement.classList.remove('vkui');\n };\n }\n\n return undefined;\n }, [document, mode]);\n\n // setup insets\n useIsomorphicLayoutEffect(() => {\n if (mode === 'partial' || !rootRef.current?.parentElement || !safeAreaInsets) {\n return;\n }\n\n const parent = rootRef.current.parentElement;\n\n let key: keyof SafeAreaInsets;\n for (key in safeAreaInsets) {\n if (safeAreaInsets.hasOwnProperty(key) && typeof safeAreaInsets[key] === 'number') {\n const inset = safeAreaInsets[key];\n parent.style.setProperty(INSET_CUSTOM_PROPERTY_PREFIX + key, `${inset}px`);\n portalRoot &&\n portalRoot.style.setProperty(INSET_CUSTOM_PROPERTY_PREFIX + key, `${inset}px`);\n }\n }\n\n return () => {\n if (!safeAreaInsets) {\n return;\n }\n let key: keyof SafeAreaInsets;\n for (key in safeAreaInsets) {\n if (safeAreaInsets.hasOwnProperty(key)) {\n parent.style.removeProperty(INSET_CUSTOM_PROPERTY_PREFIX + key);\n portalRoot && portalRoot.style.removeProperty(INSET_CUSTOM_PROPERTY_PREFIX + key);\n }\n }\n };\n }, [safeAreaInsets, portalRoot]);\n\n // adaptivity handler\n useIsomorphicLayoutEffect(() => {\n if (mode === 'partial') {\n return noop;\n }\n\n const classNames = containerClassNames(layout, sizeX, sizeY);\n\n const container = mode === 'embedded' ? rootRef.current?.parentElement : document!.body;\n\n if (!classNames.length || !container) {\n return noop;\n }\n\n container.classList.add(...classNames);\n return () => {\n container.classList.remove(...classNames);\n };\n }, [sizeX, sizeY, layout]);\n\n useIsomorphicLayoutEffect(() => {\n if (mode !== 'full' || appearance === undefined) {\n return noop;\n }\n document!.documentElement.style.setProperty('color-scheme', appearance);\n\n return () => document!.documentElement.style.removeProperty('color-scheme');\n }, [appearance]);\n\n const ScrollController = React.useMemo(\n () => (scroll === 'contain' ? ElementScrollController : GlobalScrollController),\n [scroll],\n );\n\n const content = (\n <AppRootContext.Provider\n value={{\n appRoot: rootRef,\n portalRoot,\n embedded: mode === 'embedded',\n mode,\n disablePortal,\n layout,\n get keyboardInput() {\n return isKeyboardInputActiveRef.current;\n },\n }}\n >\n <ScrollController elRef={rootRef}>{children}</ScrollController>\n </AppRootContext.Provider>\n );\n\n return mode === 'partial' ? (\n content\n ) : (\n <div\n ref={rootRef}\n className={classNames(\n styles['AppRoot'],\n hasPointer === undefined\n ? styles['AppRoot--pointer-none']\n : !hasPointer && styles['AppRoot--pointer-has-not'],\n className,\n )}\n {...props}\n >\n {content}\n </div>\n );\n};\n"],"names":["AppRoot","vkuiSizeXClassNames","none","vkuiSizeYClassNames","vkuiLayoutClassNames","card","plain","containerClassNames","layout","sizeX","sizeY","classNames","push","INSET_CUSTOM_PROPERTY_PREFIX","children","mode","scroll","portalRoot","portalRootProp","disablePortal","disableParentTransformForPositionFixedElements","className","safeAreaInsets","props","isKeyboardInputActiveRef","useKeyboardInputTracker","rootRef","React","useRef","setPortalRoot","useState","document","useDOM","appearance","useAppearance","hasPointer","useAdaptivity","useIsomorphicLayoutEffect","portal","isRefObject","current","createElement","body","appendChild","parentElement","removeChild","noop","parent","classes","concat","style","transform","classList","add","remove","documentElement","undefined","key","hasOwnProperty","inset","setProperty","removeProperty","container","length","ScrollController","useMemo","ElementScrollController","GlobalScrollController","content","AppRootContext","Provider","value","appRoot","embedded","keyboardInput","elRef","div","ref"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/AppRoot/AppRoot.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { useAppearance } from '../../hooks/useAppearance';\nimport { useKeyboardInputTracker } from '../../hooks/useKeyboardInputTracker';\nimport { useObjectMemo } from '../../hooks/useObjectMemo';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { getDocumentBody } from '../../lib/dom';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport { AppRootContext } from './AppRootContext';\nimport { ElementScrollController, GlobalScrollController } from './ScrollContext';\nimport {\n extractPortalRootByProp,\n getClassNamesByMode,\n getParentElement,\n setSafeAreaInsets,\n} from './helpers';\nimport type { AppRootLayout, AppRootMode, AppRootScroll, SafeAreaInsets } 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 * @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 ...props\n}: AppRootProps) => {\n const { hasPointer, sizeX = 'none', sizeY = 'none' } = useAdaptivity();\n const platform = usePlatform();\n const appearance = useAppearance();\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 platform,\n appearance,\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 platform,\n appearance,\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 content = (\n <AppRootContext.Provider\n value={{\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 >\n <ScrollController elRef={appRootRef}>{children}</ScrollController>\n </AppRootContext.Provider>\n );\n\n return mode === 'partial' ? (\n content\n ) : (\n <div\n ref={appRootRef}\n className={classNames(\n styles['AppRoot'],\n hasPointer === undefined\n ? styles['AppRoot--pointer-none']\n : !hasPointer && styles['AppRoot--pointer-has-not'],\n className,\n )}\n {...props}\n >\n {content}\n </div>\n );\n};\n"],"names":["AppRoot","children","mode","scroll","portalRoot","portalRootProp","disablePortal","disableParentTransformForPositionFixedElements","className","safeAreaInsets","safeAreaInsetsProp","layout","props","hasPointer","sizeX","sizeY","useAdaptivity","platform","usePlatform","appearance","useAppearance","useObjectMemo","isKeyboardInputActiveRef","useKeyboardInputTracker","appRootRef","React","useRef","portalRootRef","useIsomorphicLayoutEffect","setupPortalRoot","portalByProp","extractPortalRootByProp","current","cleanup","documentBody","getDocumentBody","portal","ownerDocument","createElement","appendChild","removeChild","setupContainers","parentElement","getParentElement","documentElement","baseClassNames","stylesClassNames","getClassNamesByMode","classList","add","unsetSafeAreaInsets","setSafeAreaInsets","remove","style","setProperty","removeProperty","ScrollController","useMemo","ElementScrollController","GlobalScrollController","content","AppRootContext","Provider","value","appRoot","embedded","keyboardInput","elRef","div","ref","classNames","undefined"],"mappings":"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"}
|
|
@@ -1,12 +1,18 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
export interface AppRootContextInterface {
|
|
3
|
-
appRoot
|
|
4
|
-
portalRoot
|
|
5
|
-
embedded
|
|
6
|
-
mode
|
|
7
|
-
keyboardInput
|
|
8
|
-
disablePortal
|
|
3
|
+
appRoot: React.RefObject<HTMLElement>;
|
|
4
|
+
portalRoot: React.RefObject<HTMLElement>;
|
|
5
|
+
embedded: boolean;
|
|
6
|
+
mode: 'partial' | 'embedded' | 'full';
|
|
7
|
+
keyboardInput: boolean;
|
|
8
|
+
disablePortal: boolean;
|
|
9
9
|
layout?: 'card' | 'plain';
|
|
10
10
|
}
|
|
11
|
+
/**
|
|
12
|
+
* Вынесен в константу, чтобы можно было в тестах создавать свой контекст и сливать перед этим значения по-умолчанию
|
|
13
|
+
*
|
|
14
|
+
* > Note: не смог убрать из покрытия через 'istanbul ignore next'.
|
|
15
|
+
*/
|
|
16
|
+
export declare const DEFAULT_APP_ROOT_CONTEXT_VALUE: AppRootContextInterface;
|
|
11
17
|
export declare const AppRootContext: React.Context<AppRootContextInterface>;
|
|
12
18
|
//# sourceMappingURL=AppRootContext.d.ts.map
|
|
@@ -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,
|
|
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,SAAS,CAAC,WAAW,CAAC,CAAC;IACzC,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;CAC3B;AAED;;;;GAIG;AACH,eAAO,MAAM,8BAA8B,EAAE,uBAO5C,CAAC;AAEF,eAAO,MAAM,cAAc,wCAE1B,CAAC"}
|
|
@@ -2,16 +2,30 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: all[name]
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
AppRootContext: function() {
|
|
8
13
|
return AppRootContext;
|
|
14
|
+
},
|
|
15
|
+
DEFAULT_APP_ROOT_CONTEXT_VALUE: function() {
|
|
16
|
+
return DEFAULT_APP_ROOT_CONTEXT_VALUE;
|
|
9
17
|
}
|
|
10
18
|
});
|
|
11
19
|
const _interop_require_wildcard = require("@swc/helpers/_/_interop_require_wildcard");
|
|
12
20
|
const _react = /*#__PURE__*/ _interop_require_wildcard._(require("react"));
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
|
|
21
|
+
const DEFAULT_APP_ROOT_CONTEXT_VALUE = {
|
|
22
|
+
appRoot: _react.createRef(),
|
|
23
|
+
mode: 'full',
|
|
24
|
+
portalRoot: _react.createRef(),
|
|
25
|
+
embedded: false,
|
|
26
|
+
keyboardInput: false,
|
|
27
|
+
disablePortal: false
|
|
28
|
+
};
|
|
29
|
+
const AppRootContext = _react.createContext(DEFAULT_APP_ROOT_CONTEXT_VALUE);
|
|
16
30
|
|
|
17
31
|
//# sourceMappingURL=AppRootContext.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/AppRoot/AppRootContext.ts"],"sourcesContent":["import * as React from 'react';\n\nexport interface AppRootContextInterface {\n appRoot
|
|
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.RefObject<HTMLElement>;\n embedded: boolean;\n mode: 'partial' | 'embedded' | 'full';\n keyboardInput: boolean;\n disablePortal: boolean;\n layout?: 'card' | 'plain';\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: React.createRef(),\n embedded: false,\n keyboardInput: false,\n disablePortal: false,\n};\n\nexport const AppRootContext = React.createContext<AppRootContextInterface>(\n DEFAULT_APP_ROOT_CONTEXT_VALUE,\n);\n"],"names":["AppRootContext","DEFAULT_APP_ROOT_CONTEXT_VALUE","appRoot","React","createRef","mode","portalRoot","embedded","keyboardInput","disablePortal","createContext"],"mappings":";;;;;;;;;;;IA0BaA,cAAc;eAAdA;;IATAC,8BAA8B;eAA9BA;;;;iEAjBU;AAiBhB,MAAMA,iCAA0D;IACrEC,SAASC,OAAMC,SAAS;IACxBC,MAAM;IACNC,YAAYH,OAAMC,SAAS;IAC3BG,UAAU;IACVC,eAAe;IACfC,eAAe;AACjB;AAEO,MAAMT,iBAAiBG,OAAMO,aAAa,CAC/CT"}
|
|
@@ -23,7 +23,7 @@ const AppRootPortal = ({ children, usePortal })=>{
|
|
|
23
23
|
if (!isClient) {
|
|
24
24
|
return null;
|
|
25
25
|
}
|
|
26
|
-
const portalContainer = resolvePortalContainer(usePortal, portalRoot);
|
|
26
|
+
const portalContainer = resolvePortalContainer(usePortal, portalRoot.current);
|
|
27
27
|
if (!portalContainer || shouldDisablePortal(usePortal, mode, Boolean(disablePortal))) {
|
|
28
28
|
return children;
|
|
29
29
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/AppRoot/AppRootPortal.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useAppearance } from '../../hooks/useAppearance';\nimport { useIsClient } from '../../hooks/useIsClient';\nimport { createPortal } from '../../lib/createPortal';\nimport { isRefObject } from '../../lib/isRefObject';\nimport { HasChildren } from '../../types';\nimport { AppearanceProvider } from '../AppearanceProvider/AppearanceProvider';\nimport { AppRootContext, type AppRootContextInterface } from './AppRootContext';\n\nexport interface AppRootPortalProps extends HasChildren {\n /**\n * - При передаче `true` будет использовать `portalRoot` из контекста `AppRoot`.\n * - При передаче элемента будут игнорироваться `portalRoot` и `disablePortal` из контекста `AppRoot`.\n */\n usePortal?: boolean | HTMLElement | React.RefObject<HTMLElement> | null;\n}\n\nexport const AppRootPortal = ({ children, usePortal }: AppRootPortalProps) => {\n const { portalRoot, mode, disablePortal } = React.useContext(AppRootContext);\n const appearance = useAppearance();\n\n const isClient = useIsClient();\n if (!isClient) {\n return null;\n }\n\n const portalContainer = resolvePortalContainer(usePortal, portalRoot);\n if (!portalContainer || shouldDisablePortal(usePortal, mode, Boolean(disablePortal))) {\n return children;\n }\n\n return createPortal(\n <AppearanceProvider value={appearance}>{children}</AppearanceProvider>,\n portalContainer,\n );\n};\n\nfunction shouldDisablePortal(\n usePortal: AppRootPortalProps['usePortal'],\n mode: AppRootContextInterface['mode'],\n disablePortal: boolean,\n) {\n if (usePortal !== undefined) {\n if (typeof usePortal !== 'boolean') {\n return false;\n }\n return disablePortal || usePortal !== true;\n }\n // fallback\n return disablePortal || mode !== 'full';\n}\n\nfunction resolvePortalContainer<PortalRootFromContext extends HTMLElement | null | undefined>(\n usePortal: AppRootPortalProps['usePortal'],\n portalRootFromContext: PortalRootFromContext,\n) {\n if (usePortal === true || !usePortal) {\n return portalRootFromContext ? portalRootFromContext : null;\n }\n\n return isRefObject(usePortal) ? usePortal.current : usePortal;\n}\n"],"names":["AppRootPortal","children","usePortal","portalRoot","mode","disablePortal","React","useContext","AppRootContext","appearance","useAppearance","isClient","useIsClient","portalContainer","resolvePortalContainer","shouldDisablePortal","Boolean","createPortal","AppearanceProvider","value","undefined","portalRootFromContext","isRefObject"
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/AppRoot/AppRootPortal.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useAppearance } from '../../hooks/useAppearance';\nimport { useIsClient } from '../../hooks/useIsClient';\nimport { createPortal } from '../../lib/createPortal';\nimport { isRefObject } from '../../lib/isRefObject';\nimport { HasChildren } from '../../types';\nimport { AppearanceProvider } from '../AppearanceProvider/AppearanceProvider';\nimport { AppRootContext, type AppRootContextInterface } from './AppRootContext';\n\nexport interface AppRootPortalProps extends HasChildren {\n /**\n * - При передаче `true` будет использовать `portalRoot` из контекста `AppRoot`.\n * - При передаче элемента будут игнорироваться `portalRoot` и `disablePortal` из контекста `AppRoot`.\n */\n usePortal?: boolean | HTMLElement | React.RefObject<HTMLElement> | null;\n}\n\nexport const AppRootPortal = ({ children, usePortal }: AppRootPortalProps) => {\n const { portalRoot, mode, disablePortal } = React.useContext(AppRootContext);\n const appearance = useAppearance();\n\n const isClient = useIsClient();\n if (!isClient) {\n return null;\n }\n\n const portalContainer = resolvePortalContainer(usePortal, portalRoot.current);\n if (!portalContainer || shouldDisablePortal(usePortal, mode, Boolean(disablePortal))) {\n return children;\n }\n\n return createPortal(\n <AppearanceProvider value={appearance}>{children}</AppearanceProvider>,\n portalContainer,\n );\n};\n\nfunction shouldDisablePortal(\n usePortal: AppRootPortalProps['usePortal'],\n mode: AppRootContextInterface['mode'],\n disablePortal: boolean,\n) {\n if (usePortal !== undefined) {\n if (typeof usePortal !== 'boolean') {\n return false;\n }\n return disablePortal || usePortal !== true;\n }\n // fallback\n return disablePortal || mode !== 'full';\n}\n\nfunction resolvePortalContainer<PortalRootFromContext extends HTMLElement | null | undefined>(\n usePortal: AppRootPortalProps['usePortal'],\n portalRootFromContext: PortalRootFromContext,\n) {\n if (usePortal === true || !usePortal) {\n return portalRootFromContext ? portalRootFromContext : null;\n }\n\n return isRefObject(usePortal) ? usePortal.current : usePortal;\n}\n"],"names":["AppRootPortal","children","usePortal","portalRoot","mode","disablePortal","React","useContext","AppRootContext","appearance","useAppearance","isClient","useIsClient","portalContainer","resolvePortalContainer","current","shouldDisablePortal","Boolean","createPortal","AppearanceProvider","value","undefined","portalRootFromContext","isRefObject"],"mappings":";;;;+BAiBaA;;;eAAAA;;;;iEAjBU;+BACO;6BACF;8BACC;6BACD;oCAEO;gCAC0B;AAUtD,MAAMA,gBAAgB,CAAC,EAAEC,QAAQ,EAAEC,SAAS,EAAsB;IACvE,MAAM,EAAEC,UAAU,EAAEC,IAAI,EAAEC,aAAa,EAAE,GAAGC,OAAMC,UAAU,CAACC,8BAAc;IAC3E,MAAMC,aAAaC,IAAAA,4BAAa;IAEhC,MAAMC,WAAWC,IAAAA,wBAAW;IAC5B,IAAI,CAACD,UAAU;QACb,OAAO;IACT;IAEA,MAAME,kBAAkBC,uBAAuBZ,WAAWC,WAAWY,OAAO;IAC5E,IAAI,CAACF,mBAAmBG,oBAAoBd,WAAWE,MAAMa,QAAQZ,iBAAiB;QACpF,OAAOJ;IACT;IAEA,OAAOiB,IAAAA,0BAAY,gBACjB,qBAACC,sCAAkB;QAACC,OAAOX;OAAaR,WACxCY;AAEJ;AAEA,SAASG,oBACPd,SAA0C,EAC1CE,IAAqC,EACrCC,aAAsB;IAEtB,IAAIH,cAAcmB,WAAW;QAC3B,IAAI,OAAOnB,cAAc,WAAW;YAClC,OAAO;QACT;QACA,OAAOG,iBAAiBH,cAAc;IACxC;IACA,WAAW;IACX,OAAOG,iBAAiBD,SAAS;AACnC;AAEA,SAASU,uBACPZ,SAA0C,EAC1CoB,qBAA4C;IAE5C,IAAIpB,cAAc,QAAQ,CAACA,WAAW;QACpC,OAAOoB,wBAAwBA,wBAAwB;IACzD;IAEA,OAAOC,IAAAA,wBAAW,EAACrB,aAAaA,UAAUa,OAAO,GAAGb;AACtD"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { SizeTypeValues } from '../../lib/adaptivity';
|
|
2
|
+
import type { AppearanceType } from '../../lib/appearance';
|
|
3
|
+
import type { AppRootLayout, AppRootMode, SafeAreaInsets } from './types';
|
|
4
|
+
type ContainerClassNamesProps = {
|
|
5
|
+
mode: AppRootMode;
|
|
6
|
+
layout?: AppRootLayout;
|
|
7
|
+
platform: string;
|
|
8
|
+
appearance: AppearanceType;
|
|
9
|
+
sizeX: SizeTypeValues | 'none';
|
|
10
|
+
sizeY: SizeTypeValues | 'none';
|
|
11
|
+
};
|
|
12
|
+
export declare function getClassNamesByMode({ mode, layout, platform, appearance, sizeX, sizeY, }: ContainerClassNamesProps): [string[], string[]];
|
|
13
|
+
export declare const getParentElement: (el: HTMLElement | null) => HTMLElement | null;
|
|
14
|
+
export declare const extractPortalRootByProp: (portalRootProp: HTMLElement | React.RefObject<HTMLElement>) => HTMLElement | null;
|
|
15
|
+
export declare const CUSTOM_PROPERTY_INSET_PREFIX = "--vkui_internal--safe_area_inset_";
|
|
16
|
+
export declare const setSafeAreaInsets: (safeAreaInsets: SafeAreaInsets | undefined, rootContainer: HTMLElement, portalContainer?: HTMLElement) => () => void;
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../../src/components/AppRoot/helpers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE1E,KAAK,wBAAwB,GAAG;IAC9B,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,cAAc,CAAC;IAC3B,KAAK,EAAE,cAAc,GAAG,MAAM,CAAC;IAC/B,KAAK,EAAE,cAAc,GAAG,MAAM,CAAC;CAChC,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,EAClC,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,UAAU,EACV,KAAK,EACL,KAAK,GACN,EAAE,wBAAwB,GAAG,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,CA0BjD;AAED,eAAO,MAAM,gBAAgB,OAAQ,WAAW,GAAG,IAAI,uBAAmC,CAAC;AAE3F,eAAO,MAAM,uBAAuB,mBAClB,WAAW,GAAG,MAAM,SAAS,CAAC,WAAW,CAAC,uBACgB,CAAC;AAE7E,eAAO,MAAM,4BAA4B,sCAAsC,CAAC;AAEhF,eAAO,MAAM,iBAAiB,mBACZ,cAAc,GAAG,SAAS,iBAC3B,WAAW,oBACR,WAAW,eA4B9B,CAAC"}
|