@vkontakte/vkui 8.1.2 → 8.2.0
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/ActionSheet/ActionSheet.d.ts +5 -4
- package/dist/components/ActionSheet/ActionSheet.d.ts.map +1 -1
- package/dist/components/ActionSheet/ActionSheet.js +2 -1
- package/dist/components/ActionSheet/ActionSheet.js.map +1 -1
- package/dist/components/AdaptivityProvider/AdaptivityContext.d.ts +3 -3
- package/dist/components/AdaptivityProvider/AdaptivityContext.js.map +1 -1
- package/dist/components/AdaptivityProvider/AdaptivityProvider.js +2 -2
- package/dist/components/AdaptivityProvider/AdaptivityProvider.js.map +1 -1
- package/dist/components/AppRoot/AppRoot.d.ts.map +1 -1
- package/dist/components/AppRoot/AppRoot.js +0 -6
- package/dist/components/AppRoot/AppRoot.js.map +1 -1
- package/dist/components/AppRoot/AppRootContext.d.ts +0 -1
- package/dist/components/AppRoot/AppRootContext.d.ts.map +1 -1
- package/dist/components/AppRoot/AppRootContext.js +0 -1
- package/dist/components/AppRoot/AppRootContext.js.map +1 -1
- package/dist/components/Calendar/Calendar.d.ts +1 -1
- package/dist/components/Calendar/Calendar.js +2 -1
- package/dist/components/Calendar/Calendar.js.map +1 -1
- package/dist/components/CalendarDay/CalendarDay.d.ts.map +1 -1
- package/dist/components/CalendarDay/CalendarDay.js +4 -2
- package/dist/components/CalendarDay/CalendarDay.js.map +1 -1
- package/dist/components/CalendarDays/CalendarDays.d.ts.map +1 -1
- package/dist/components/CalendarDays/CalendarDays.js +2 -2
- package/dist/components/CalendarDays/CalendarDays.js.map +1 -1
- package/dist/components/CalendarHeader/CalendarHeader.d.ts.map +1 -1
- package/dist/components/CalendarHeader/CalendarHeader.js +4 -2
- package/dist/components/CalendarHeader/CalendarHeader.js.map +1 -1
- package/dist/components/CalendarRange/CalendarRange.d.ts +2 -2
- package/dist/components/CalendarRange/CalendarRange.js.map +1 -1
- package/dist/components/CalendarTime/CalendarTime.d.ts +1 -1
- package/dist/components/CalendarTime/CalendarTime.d.ts.map +1 -1
- package/dist/components/CalendarTime/CalendarTime.js +61 -50
- package/dist/components/CalendarTime/CalendarTime.js.map +1 -1
- package/dist/components/CalendarTime/CalendarTimePicker.d.ts +11 -7
- package/dist/components/CalendarTime/CalendarTimePicker.d.ts.map +1 -1
- package/dist/components/CalendarTime/CalendarTimePicker.js +108 -48
- package/dist/components/CalendarTime/CalendarTimePicker.js.map +1 -1
- package/dist/components/CalendarTime/ComboBox.d.ts +25 -0
- package/dist/components/CalendarTime/ComboBox.d.ts.map +1 -0
- package/dist/components/CalendarTime/ComboBox.js +112 -0
- package/dist/components/CalendarTime/ComboBox.js.map +1 -0
- package/dist/components/CardScroll/CardScroll.d.ts.map +1 -1
- package/dist/components/CardScroll/CardScroll.js +2 -2
- package/dist/components/CardScroll/CardScroll.js.map +1 -1
- package/dist/components/CarouselBase/CarouselBase.d.ts.map +1 -1
- package/dist/components/CarouselBase/CarouselBase.js +3 -1
- package/dist/components/CarouselBase/CarouselBase.js.map +1 -1
- package/dist/components/ChipsSelect/useChipsSelect.d.ts.map +1 -1
- package/dist/components/ChipsSelect/useChipsSelect.js +2 -1
- package/dist/components/ChipsSelect/useChipsSelect.js.map +1 -1
- package/dist/components/ConfigProvider/ConfigProvider.d.ts.map +1 -1
- package/dist/components/ConfigProvider/ConfigProvider.js +8 -4
- package/dist/components/ConfigProvider/ConfigProvider.js.map +1 -1
- package/dist/components/ConfigProvider/ConfigProviderOverride.d.ts.map +1 -1
- package/dist/components/ConfigProvider/ConfigProviderOverride.js +5 -1
- package/dist/components/ConfigProvider/ConfigProviderOverride.js.map +1 -1
- package/dist/components/ConfigProvider/ConfigProviderSubContexts.d.ts +15 -0
- package/dist/components/ConfigProvider/ConfigProviderSubContexts.d.ts.map +1 -0
- package/dist/components/ConfigProvider/ConfigProviderSubContexts.js +25 -0
- package/dist/components/ConfigProvider/ConfigProviderSubContexts.js.map +1 -0
- package/dist/components/ContentBadge/ContentBadge.d.ts +14 -1
- package/dist/components/ContentBadge/ContentBadge.d.ts.map +1 -1
- package/dist/components/ContentBadge/ContentBadge.js +39 -1
- package/dist/components/ContentBadge/ContentBadge.js.map +1 -1
- package/dist/components/CustomSelect/CustomSelect.d.ts.map +1 -1
- package/dist/components/CustomSelect/CustomSelect.js +16 -10
- package/dist/components/CustomSelect/CustomSelect.js.map +1 -1
- package/dist/components/DateInput/DateInput.d.ts.map +1 -1
- package/dist/components/DateInput/DateInput.js +4 -3
- package/dist/components/DateInput/DateInput.js.map +1 -1
- package/dist/components/DateRangeInput/DateRangeInput.d.ts.map +1 -1
- package/dist/components/DateRangeInput/DateRangeInput.js +2 -2
- package/dist/components/DateRangeInput/DateRangeInput.js.map +1 -1
- package/dist/components/Epic/ScrollSaver.d.ts.map +1 -1
- package/dist/components/Epic/ScrollSaver.js +1 -0
- package/dist/components/Epic/ScrollSaver.js.map +1 -1
- package/dist/components/FixedLayout/ParentWidthWrapper.d.ts +6 -0
- package/dist/components/FixedLayout/ParentWidthWrapper.d.ts.map +1 -0
- package/dist/components/FixedLayout/ParentWidthWrapper.js +43 -0
- package/dist/components/FixedLayout/ParentWidthWrapper.js.map +1 -0
- package/dist/components/Flex/Flex.d.ts +7 -4
- package/dist/components/Flex/Flex.d.ts.map +1 -1
- package/dist/components/Flex/Flex.js +5 -2
- package/dist/components/Flex/Flex.js.map +1 -1
- package/dist/components/ImageBase/ImageBaseFloatElement/ImageBaseFloatElement.js +3 -1
- package/dist/components/ImageBase/ImageBaseFloatElement/ImageBaseFloatElement.js.map +1 -1
- package/dist/components/NativeSelect/NativeSelect.d.ts.map +1 -1
- package/dist/components/NativeSelect/NativeSelect.js +6 -2
- package/dist/components/NativeSelect/NativeSelect.js.map +1 -1
- package/dist/components/NavTransitionContext/NavTransitionContext.d.ts +2 -1
- package/dist/components/NavTransitionContext/NavTransitionContext.d.ts.map +1 -1
- package/dist/components/NavTransitionContext/NavTransitionContext.js +8 -4
- package/dist/components/NavTransitionContext/NavTransitionContext.js.map +1 -1
- package/dist/components/OnboardingTooltip/OnboardingTooltip.d.ts.map +1 -1
- package/dist/components/OnboardingTooltip/OnboardingTooltip.js +4 -5
- package/dist/components/OnboardingTooltip/OnboardingTooltip.js.map +1 -1
- package/dist/components/PanelHeader/PanelHeader.d.ts +1 -1
- package/dist/components/PanelHeader/PanelHeader.js.map +1 -1
- package/dist/components/Popper/Popper.d.ts.map +1 -1
- package/dist/components/Popper/Popper.js +7 -4
- package/dist/components/Popper/Popper.js.map +1 -1
- package/dist/components/PullToRefresh/PullToRefresh.d.ts.map +1 -1
- package/dist/components/PullToRefresh/PullToRefresh.js +8 -4
- package/dist/components/PullToRefresh/PullToRefresh.js.map +1 -1
- package/dist/components/Root/Root.d.ts +1 -1
- package/dist/components/Root/Root.d.ts.map +1 -1
- package/dist/components/Root/Root.js +43 -37
- package/dist/components/Root/Root.js.map +1 -1
- package/dist/components/SimpleGrid/SimpleGrid.d.ts +9 -8
- package/dist/components/SimpleGrid/SimpleGrid.d.ts.map +1 -1
- package/dist/components/SimpleGrid/SimpleGrid.js +9 -2
- package/dist/components/SimpleGrid/SimpleGrid.js.map +1 -1
- package/dist/components/Skeleton/Skeleton.d.ts.map +1 -1
- package/dist/components/Skeleton/Skeleton.js +3 -4
- package/dist/components/Skeleton/Skeleton.js.map +1 -1
- package/dist/components/Snackbar/Snackbar.d.ts.map +1 -1
- package/dist/components/Snackbar/Snackbar.js +6 -3
- package/dist/components/Snackbar/Snackbar.js.map +1 -1
- package/dist/components/Spacing/Spacing.d.ts +1 -1
- package/dist/components/Spacing/Spacing.js.map +1 -1
- package/dist/components/Spinner/ExpressiveSpinner/ExpressiveSpinner.d.ts +10 -0
- package/dist/components/Spinner/ExpressiveSpinner/ExpressiveSpinner.d.ts.map +1 -0
- package/dist/components/Spinner/ExpressiveSpinner/ExpressiveSpinner.js +54 -0
- package/dist/components/Spinner/ExpressiveSpinner/ExpressiveSpinner.js.map +1 -0
- package/dist/components/Spinner/ExpressiveSpinner/icons.d.ts +18 -0
- package/dist/components/Spinner/ExpressiveSpinner/icons.d.ts.map +1 -0
- package/dist/components/Spinner/ExpressiveSpinner/icons.js +79 -0
- package/dist/components/Spinner/ExpressiveSpinner/icons.js.map +1 -0
- package/dist/components/Spinner/SvgIcon.d.ts +14 -0
- package/dist/components/Spinner/SvgIcon.d.ts.map +1 -0
- package/dist/components/Spinner/SvgIcon.js +20 -0
- package/dist/components/Spinner/SvgIcon.js.map +1 -0
- package/dist/components/Spinner/icons.d.ts +1 -1
- package/dist/components/Spinner/icons.d.ts.map +1 -1
- package/dist/components/Spinner/icons.js +10 -23
- package/dist/components/Spinner/icons.js.map +1 -1
- package/dist/components/SplitLayout/SplitLayout.d.ts +3 -3
- package/dist/components/SplitLayout/SplitLayout.js.map +1 -1
- package/dist/components/TabsItem/TabsItem.d.ts.map +1 -1
- package/dist/components/TabsItem/TabsItem.js +2 -5
- package/dist/components/TabsItem/TabsItem.js.map +1 -1
- package/dist/components/Tappable/Tappable.d.ts +2 -2
- package/dist/components/Tappable/Tappable.js.map +1 -1
- package/dist/components/View/View.d.ts.map +1 -1
- package/dist/components/View/View.js +50 -53
- package/dist/components/View/View.js.map +1 -1
- package/dist/components/View/ViewInfinite.d.ts.map +1 -1
- package/dist/components/View/ViewInfinite.js +34 -37
- package/dist/components/View/ViewInfinite.js.map +1 -1
- package/dist/components/WriteBar/WriteBar.d.ts +15 -1
- package/dist/components/WriteBar/WriteBar.d.ts.map +1 -1
- package/dist/components/WriteBar/WriteBar.js +35 -63
- package/dist/components/WriteBar/WriteBar.js.map +1 -1
- package/dist/components/WriteBar/WriteBarBeforeOrAfter/WriteBarBeforeOrAfter.d.ts +5 -0
- package/dist/components/WriteBar/WriteBarBeforeOrAfter/WriteBarBeforeOrAfter.d.ts.map +1 -0
- package/dist/components/WriteBar/WriteBarBeforeOrAfter/WriteBarBeforeOrAfter.js +15 -0
- package/dist/components/WriteBar/WriteBarBeforeOrAfter/WriteBarBeforeOrAfter.js.map +1 -0
- package/dist/components/WriteBar/WriteBarFormField/WriteBarFormField.d.ts +8 -0
- package/dist/components/WriteBar/WriteBarFormField/WriteBarFormField.d.ts.map +1 -0
- package/dist/components/WriteBar/WriteBarFormField/WriteBarFormField.js +16 -0
- package/dist/components/WriteBar/WriteBarFormField/WriteBarFormField.js.map +1 -0
- package/dist/components/WriteBar/WriteBarFormField/WriteBarFormFieldInlineAfter/WriteBarFormFieldInlineAfter.d.ts +5 -0
- package/dist/components/WriteBar/WriteBarFormField/WriteBarFormFieldInlineAfter/WriteBarFormFieldInlineAfter.d.ts.map +1 -0
- package/dist/components/WriteBar/WriteBarFormField/WriteBarFormFieldInlineAfter/WriteBarFormFieldInlineAfter.js +15 -0
- package/dist/components/WriteBar/WriteBarFormField/WriteBarFormFieldInlineAfter/WriteBarFormFieldInlineAfter.js.map +1 -0
- package/dist/components/WriteBar/WriteBarRoot/WriteBarRoot.d.ts +10 -0
- package/dist/components/WriteBar/WriteBarRoot/WriteBarRoot.d.ts.map +1 -0
- package/dist/components/WriteBar/WriteBarRoot/WriteBarRoot.js +16 -0
- package/dist/components/WriteBar/WriteBarRoot/WriteBarRoot.js.map +1 -0
- package/dist/components/WriteBar/WriteBarTextarea/WriteBarTextarea.d.ts +10 -0
- package/dist/components/WriteBar/WriteBarTextarea/WriteBarTextarea.d.ts.map +1 -0
- package/dist/components/WriteBar/WriteBarTextarea/WriteBarTextarea.js +39 -0
- package/dist/components/WriteBar/WriteBarTextarea/WriteBarTextarea.js.map +1 -0
- package/dist/components.css +1 -1
- package/dist/components.css.map +1 -1
- package/dist/cssm/components/ActionSheet/ActionSheet.js +2 -1
- package/dist/cssm/components/ActionSheet/ActionSheet.js.map +1 -1
- package/dist/cssm/components/AdaptivityProvider/AdaptivityContext.js.map +1 -1
- package/dist/cssm/components/AdaptivityProvider/AdaptivityProvider.js +2 -2
- package/dist/cssm/components/AdaptivityProvider/AdaptivityProvider.js.map +1 -1
- package/dist/cssm/components/AppRoot/AppRoot.js +0 -6
- package/dist/cssm/components/AppRoot/AppRoot.js.map +1 -1
- package/dist/cssm/components/AppRoot/AppRootContext.js +0 -1
- package/dist/cssm/components/AppRoot/AppRootContext.js.map +1 -1
- package/dist/cssm/components/Calendar/Calendar.js +2 -1
- package/dist/cssm/components/Calendar/Calendar.js.map +1 -1
- package/dist/cssm/components/CalendarDay/CalendarDay.js +4 -2
- package/dist/cssm/components/CalendarDay/CalendarDay.js.map +1 -1
- package/dist/cssm/components/CalendarDays/CalendarDays.js +2 -2
- package/dist/cssm/components/CalendarDays/CalendarDays.js.map +1 -1
- package/dist/cssm/components/CalendarHeader/CalendarHeader.js +4 -2
- package/dist/cssm/components/CalendarHeader/CalendarHeader.js.map +1 -1
- package/dist/cssm/components/CalendarRange/CalendarRange.js.map +1 -1
- package/dist/cssm/components/CalendarTime/CalendarTime.js +61 -50
- package/dist/cssm/components/CalendarTime/CalendarTime.js.map +1 -1
- package/dist/cssm/components/CalendarTime/CalendarTime.module.css +38 -0
- package/dist/cssm/components/CalendarTime/CalendarTimePicker.js +108 -48
- package/dist/cssm/components/CalendarTime/CalendarTimePicker.js.map +1 -1
- package/dist/cssm/components/CalendarTime/ComboBox.js +113 -0
- package/dist/cssm/components/CalendarTime/ComboBox.js.map +1 -0
- package/dist/cssm/components/CardScroll/CardScroll.js +2 -2
- package/dist/cssm/components/CardScroll/CardScroll.js.map +1 -1
- package/dist/cssm/components/CarouselBase/CarouselBase.js +3 -1
- package/dist/cssm/components/CarouselBase/CarouselBase.js.map +1 -1
- package/dist/cssm/components/ChipsSelect/useChipsSelect.js +2 -1
- package/dist/cssm/components/ChipsSelect/useChipsSelect.js.map +1 -1
- package/dist/cssm/components/ConfigProvider/ConfigProvider.js +8 -4
- package/dist/cssm/components/ConfigProvider/ConfigProvider.js.map +1 -1
- package/dist/cssm/components/ConfigProvider/ConfigProviderOverride.js +5 -1
- package/dist/cssm/components/ConfigProvider/ConfigProviderOverride.js.map +1 -1
- package/dist/cssm/components/ConfigProvider/ConfigProviderSubContexts.js +25 -0
- package/dist/cssm/components/ConfigProvider/ConfigProviderSubContexts.js.map +1 -0
- package/dist/cssm/components/ContentBadge/ContentBadge.js +39 -1
- package/dist/cssm/components/ContentBadge/ContentBadge.js.map +1 -1
- package/dist/cssm/components/ContentBadge/ContentBadge.module.css +88 -90
- package/dist/cssm/components/CustomSelect/CustomSelect.js +16 -10
- package/dist/cssm/components/CustomSelect/CustomSelect.js.map +1 -1
- package/dist/cssm/components/DateInput/DateInput.js +4 -3
- package/dist/cssm/components/DateInput/DateInput.js.map +1 -1
- package/dist/cssm/components/DateRangeInput/DateRangeInput.js +2 -2
- package/dist/cssm/components/DateRangeInput/DateRangeInput.js.map +1 -1
- package/dist/cssm/components/Epic/ScrollSaver.js +1 -0
- package/dist/cssm/components/Epic/ScrollSaver.js.map +1 -1
- package/dist/cssm/components/FixedLayout/ParentWidthWrapper.js +43 -0
- package/dist/cssm/components/FixedLayout/ParentWidthWrapper.js.map +1 -0
- package/dist/cssm/components/Flex/Flex.js +5 -2
- package/dist/cssm/components/Flex/Flex.js.map +1 -1
- package/dist/cssm/components/GridAvatar/GridAvatar.module.css +1 -1
- package/dist/cssm/components/ImageBase/ImageBaseFloatElement/ImageBaseFloatElement.js +3 -1
- package/dist/cssm/components/ImageBase/ImageBaseFloatElement/ImageBaseFloatElement.js.map +1 -1
- package/dist/cssm/components/NativeSelect/NativeSelect.js +6 -2
- package/dist/cssm/components/NativeSelect/NativeSelect.js.map +1 -1
- package/dist/cssm/components/NavTransitionContext/NavTransitionContext.js +8 -4
- package/dist/cssm/components/NavTransitionContext/NavTransitionContext.js.map +1 -1
- package/dist/cssm/components/OnboardingTooltip/OnboardingTooltip.js +4 -5
- package/dist/cssm/components/OnboardingTooltip/OnboardingTooltip.js.map +1 -1
- package/dist/cssm/components/PanelHeader/PanelHeader.js.map +1 -1
- package/dist/cssm/components/Popper/Popper.js +7 -4
- package/dist/cssm/components/Popper/Popper.js.map +1 -1
- package/dist/cssm/components/PullToRefresh/PullToRefresh.js +8 -4
- package/dist/cssm/components/PullToRefresh/PullToRefresh.js.map +1 -1
- package/dist/cssm/components/PullToRefresh/PullToRefresh.module.css +1 -1
- package/dist/cssm/components/Root/Root.js +43 -37
- package/dist/cssm/components/Root/Root.js.map +1 -1
- package/dist/cssm/components/SimpleGrid/SimpleGrid.js +9 -2
- package/dist/cssm/components/SimpleGrid/SimpleGrid.js.map +1 -1
- package/dist/cssm/components/Skeleton/Skeleton.js +3 -4
- package/dist/cssm/components/Skeleton/Skeleton.js.map +1 -1
- package/dist/cssm/components/Snackbar/Snackbar.js +6 -3
- package/dist/cssm/components/Snackbar/Snackbar.js.map +1 -1
- package/dist/cssm/components/Spacing/Spacing.js.map +1 -1
- package/dist/cssm/components/Spinner/ExpressiveSpinner/ExpressiveSpinner.js +56 -0
- package/dist/cssm/components/Spinner/ExpressiveSpinner/ExpressiveSpinner.js.map +1 -0
- package/dist/cssm/components/Spinner/ExpressiveSpinner/ExpressiveSpinner.module.css +13 -0
- package/dist/cssm/components/Spinner/ExpressiveSpinner/icons.js +79 -0
- package/dist/cssm/components/Spinner/ExpressiveSpinner/icons.js.map +1 -0
- package/dist/cssm/components/Spinner/SvgIcon.js +20 -0
- package/dist/cssm/components/Spinner/SvgIcon.js.map +1 -0
- package/dist/cssm/components/Spinner/icons.js +10 -23
- package/dist/cssm/components/Spinner/icons.js.map +1 -1
- package/dist/cssm/components/SplitLayout/SplitLayout.js.map +1 -1
- package/dist/cssm/components/TabsItem/TabsItem.js +2 -5
- package/dist/cssm/components/TabsItem/TabsItem.js.map +1 -1
- package/dist/cssm/components/Tappable/Tappable.js.map +1 -1
- package/dist/cssm/components/View/View.js +50 -53
- package/dist/cssm/components/View/View.js.map +1 -1
- package/dist/cssm/components/View/ViewInfinite.js +34 -37
- package/dist/cssm/components/View/ViewInfinite.js.map +1 -1
- package/dist/cssm/components/WriteBar/WriteBar.js +35 -64
- package/dist/cssm/components/WriteBar/WriteBar.js.map +1 -1
- package/dist/cssm/components/WriteBar/WriteBarBeforeOrAfter/WriteBarBeforeOrAfter.js +16 -0
- package/dist/cssm/components/WriteBar/WriteBarBeforeOrAfter/WriteBarBeforeOrAfter.js.map +1 -0
- package/dist/cssm/components/WriteBar/WriteBarBeforeOrAfter/WriteBarBeforeOrAfter.module.css +12 -0
- package/dist/cssm/components/WriteBar/WriteBarFormField/WriteBarFormField.js +17 -0
- package/dist/cssm/components/WriteBar/WriteBarFormField/WriteBarFormField.js.map +1 -0
- package/dist/cssm/components/WriteBar/WriteBarFormField/WriteBarFormField.module.css +18 -0
- package/dist/cssm/components/WriteBar/WriteBarFormField/WriteBarFormFieldInlineAfter/WriteBarFormFieldInlineAfter.js +16 -0
- package/dist/cssm/components/WriteBar/WriteBarFormField/WriteBarFormFieldInlineAfter/WriteBarFormFieldInlineAfter.js.map +1 -0
- package/dist/cssm/components/WriteBar/WriteBarFormField/WriteBarFormFieldInlineAfter/WriteBarFormFieldInlineAfter.module.css +3 -0
- package/dist/cssm/components/WriteBar/WriteBarRoot/WriteBarRoot.js +17 -0
- package/dist/cssm/components/WriteBar/WriteBarRoot/WriteBarRoot.js.map +1 -0
- package/dist/cssm/components/WriteBar/WriteBarRoot/WriteBarRoot.module.css +15 -0
- package/dist/cssm/components/WriteBar/WriteBarTextarea/WriteBarTextarea.js +40 -0
- package/dist/cssm/components/WriteBar/WriteBarTextarea/WriteBarTextarea.js.map +1 -0
- package/dist/cssm/components/WriteBar/WriteBarTextarea/WriteBarTextarea.module.css +43 -0
- package/dist/cssm/helpers/math.js +6 -0
- package/dist/cssm/helpers/math.js.map +1 -1
- package/dist/cssm/hoc/withPlatform.js +3 -2
- package/dist/cssm/hoc/withPlatform.js.map +1 -1
- package/dist/cssm/hooks/useAdaptivityConditionalRender/types.js.map +1 -1
- package/dist/cssm/hooks/useAnimationFrame.js +40 -0
- package/dist/cssm/hooks/useAnimationFrame.js.map +1 -0
- package/dist/cssm/hooks/useAutoFocus.js +4 -1
- package/dist/cssm/hooks/useAutoFocus.js.map +1 -1
- package/dist/cssm/hooks/useColorScheme.js +3 -3
- package/dist/cssm/hooks/useColorScheme.js.map +1 -1
- package/dist/cssm/hooks/useConfigDirection.js +3 -3
- package/dist/cssm/hooks/useConfigDirection.js.map +1 -1
- package/dist/cssm/hooks/useDateInput.js +1 -2
- package/dist/cssm/hooks/useDateInput.js.map +1 -1
- package/dist/cssm/hooks/useFocusTrap/useAutoFocus.js +1 -0
- package/dist/cssm/hooks/useFocusTrap/useAutoFocus.js.map +1 -1
- package/dist/cssm/hooks/useFocusTrap/useFocusTrap.js +2 -0
- package/dist/cssm/hooks/useFocusTrap/useFocusTrap.js.map +1 -1
- package/dist/cssm/hooks/useFocusVisible.js +8 -13
- package/dist/cssm/hooks/useFocusVisible.js.map +1 -1
- package/dist/cssm/hooks/useFocusWithin.js +5 -4
- package/dist/cssm/hooks/useFocusWithin.js.map +1 -1
- package/dist/cssm/hooks/useGlobalEscKeyDown.js +17 -15
- package/dist/cssm/hooks/useGlobalEscKeyDown.js.map +1 -1
- package/dist/cssm/hooks/useGlobalOnClickOutside.js +6 -2
- package/dist/cssm/hooks/useGlobalOnClickOutside.js.map +1 -1
- package/dist/cssm/hooks/useKeyboardInputTracker.js +48 -41
- package/dist/cssm/hooks/useKeyboardInputTracker.js.map +1 -1
- package/dist/cssm/hooks/useLatestRef.js +13 -0
- package/dist/cssm/hooks/useLatestRef.js.map +1 -0
- package/dist/cssm/hooks/useLocale.js +3 -3
- package/dist/cssm/hooks/useLocale.js.map +1 -1
- package/dist/cssm/hooks/useMediaQueryMatch.js +1 -0
- package/dist/cssm/hooks/useMediaQueryMatch.js.map +1 -1
- package/dist/cssm/hooks/useMutationObserver.js +3 -3
- package/dist/cssm/hooks/useMutationObserver.js.map +1 -1
- package/dist/cssm/hooks/usePlatform.js +3 -3
- package/dist/cssm/hooks/usePlatform.js.map +1 -1
- package/dist/cssm/hooks/useResizeObserver.js +4 -6
- package/dist/cssm/hooks/useResizeObserver.js.map +1 -1
- package/dist/cssm/hooks/useSyncHTMLWithBaseVKUIClasses.js +2 -1
- package/dist/cssm/hooks/useSyncHTMLWithBaseVKUIClasses.js.map +1 -1
- package/dist/cssm/hooks/useSyncHTMLWithTokens.js +3 -1
- package/dist/cssm/hooks/useSyncHTMLWithTokens.js.map +1 -1
- package/dist/cssm/hooks/useWaitTransitionFinish.js +13 -15
- package/dist/cssm/hooks/useWaitTransitionFinish.js.map +1 -1
- package/dist/cssm/index.js +1 -0
- package/dist/cssm/index.js.map +1 -1
- package/dist/cssm/lib/array.js +18 -0
- package/dist/cssm/lib/array.js.map +1 -0
- package/dist/cssm/lib/curve.js +21 -0
- package/dist/cssm/lib/curve.js.map +1 -0
- package/dist/cssm/lib/dom.js +5 -2
- package/dist/cssm/lib/dom.js.map +1 -1
- package/dist/cssm/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.js +4 -4
- package/dist/cssm/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.js.map +1 -1
- package/dist/cssm/lib/fx.js +4 -55
- package/dist/cssm/lib/fx.js.map +1 -1
- package/dist/cssm/lib/layouts/index.js.map +1 -1
- package/dist/cssm/lib/layouts/layoutProps.js +11 -0
- package/dist/cssm/lib/layouts/layoutProps.js.map +1 -1
- package/dist/cssm/lib/layouts/resolveLayoutProps.js +13 -11
- package/dist/cssm/lib/layouts/resolveLayoutProps.js.map +1 -1
- package/dist/cssm/lib/layouts/types.js.map +1 -1
- package/dist/cssm/lib/material/shapes/Shape.js +18 -0
- package/dist/cssm/lib/material/shapes/Shape.js.map +1 -0
- package/dist/cssm/lib/material/shapes/shapes.js +2250 -0
- package/dist/cssm/lib/material/shapes/shapes.js.map +1 -0
- package/dist/cssm/lib/math.js +31 -0
- package/dist/cssm/lib/math.js.map +1 -0
- package/dist/cssm/lib/svg/path/approximate.js +57 -0
- package/dist/cssm/lib/svg/path/approximate.js.map +1 -0
- package/dist/cssm/lib/svg/path/interpolate.js +121 -0
- package/dist/cssm/lib/svg/path/interpolate.js.map +1 -0
- package/dist/cssm/lib/svg/path/path.js +50 -0
- package/dist/cssm/lib/svg/path/path.js.map +1 -0
- package/dist/cssm/lib/svg/path/point.js +3 -0
- package/dist/cssm/lib/svg/path/point.js.map +1 -0
- package/dist/cssm/lib/svg/path/transform.js +110 -0
- package/dist/cssm/lib/svg/path/transform.js.map +1 -0
- package/dist/cssm/lib/tokens/useTokenClassName.js +4 -1
- package/dist/cssm/lib/tokens/useTokenClassName.js.map +1 -1
- package/dist/cssm/lib/touch/UIPanGestureRecognizer.js +2 -2
- package/dist/cssm/lib/touch/UIPanGestureRecognizer.js.map +1 -1
- package/dist/cssm/styles/layout.css +273 -0
- package/dist/cssm/types.js +1 -4
- package/dist/cssm/types.js.map +1 -1
- package/dist/helpers/math.d.ts +4 -0
- package/dist/helpers/math.d.ts.map +1 -1
- package/dist/helpers/math.js +6 -0
- package/dist/helpers/math.js.map +1 -1
- package/dist/hoc/withPlatform.d.ts +1 -1
- package/dist/hoc/withPlatform.d.ts.map +1 -1
- package/dist/hoc/withPlatform.js +3 -2
- package/dist/hoc/withPlatform.js.map +1 -1
- package/dist/hooks/useAdaptivityConditionalRender/types.d.ts +2 -2
- package/dist/hooks/useAdaptivityConditionalRender/types.js.map +1 -1
- package/dist/hooks/useAnimationFrame.d.ts +16 -0
- package/dist/hooks/useAnimationFrame.d.ts.map +1 -0
- package/dist/hooks/useAnimationFrame.js +40 -0
- package/dist/hooks/useAnimationFrame.js.map +1 -0
- package/dist/hooks/useAutoFocus.js +4 -1
- package/dist/hooks/useAutoFocus.js.map +1 -1
- package/dist/hooks/useColorScheme.d.ts.map +1 -1
- package/dist/hooks/useColorScheme.js +3 -3
- package/dist/hooks/useColorScheme.js.map +1 -1
- package/dist/hooks/useConfigDirection.d.ts.map +1 -1
- package/dist/hooks/useConfigDirection.js +3 -3
- package/dist/hooks/useConfigDirection.js.map +1 -1
- package/dist/hooks/useDateInput.d.ts.map +1 -1
- package/dist/hooks/useDateInput.js +1 -2
- package/dist/hooks/useDateInput.js.map +1 -1
- package/dist/hooks/useFocusTrap/useAutoFocus.js +1 -0
- package/dist/hooks/useFocusTrap/useAutoFocus.js.map +1 -1
- package/dist/hooks/useFocusTrap/useFocusTrap.d.ts.map +1 -1
- package/dist/hooks/useFocusTrap/useFocusTrap.js +2 -0
- package/dist/hooks/useFocusTrap/useFocusTrap.js.map +1 -1
- package/dist/hooks/useFocusVisible.d.ts.map +1 -1
- package/dist/hooks/useFocusVisible.js +8 -13
- package/dist/hooks/useFocusVisible.js.map +1 -1
- package/dist/hooks/useFocusWithin.d.ts.map +1 -1
- package/dist/hooks/useFocusWithin.js +5 -4
- package/dist/hooks/useFocusWithin.js.map +1 -1
- package/dist/hooks/useGlobalEscKeyDown.d.ts.map +1 -1
- package/dist/hooks/useGlobalEscKeyDown.js +17 -15
- package/dist/hooks/useGlobalEscKeyDown.js.map +1 -1
- package/dist/hooks/useGlobalOnClickOutside.d.ts.map +1 -1
- package/dist/hooks/useGlobalOnClickOutside.js +6 -2
- package/dist/hooks/useGlobalOnClickOutside.js.map +1 -1
- package/dist/hooks/useKeyboardInputTracker.d.ts +1 -19
- package/dist/hooks/useKeyboardInputTracker.d.ts.map +1 -1
- package/dist/hooks/useKeyboardInputTracker.js +48 -41
- package/dist/hooks/useKeyboardInputTracker.js.map +1 -1
- package/dist/hooks/useLatestRef.d.ts +3 -0
- package/dist/hooks/useLatestRef.d.ts.map +1 -0
- package/dist/hooks/useLatestRef.js +13 -0
- package/dist/hooks/useLatestRef.js.map +1 -0
- package/dist/hooks/useLocale.d.ts.map +1 -1
- package/dist/hooks/useLocale.js +3 -3
- package/dist/hooks/useLocale.js.map +1 -1
- package/dist/hooks/useMediaQueryMatch.js +1 -0
- package/dist/hooks/useMediaQueryMatch.js.map +1 -1
- package/dist/hooks/useMutationObserver.d.ts +1 -2
- package/dist/hooks/useMutationObserver.d.ts.map +1 -1
- package/dist/hooks/useMutationObserver.js +3 -3
- package/dist/hooks/useMutationObserver.js.map +1 -1
- package/dist/hooks/usePlatform.d.ts.map +1 -1
- package/dist/hooks/usePlatform.js +3 -3
- package/dist/hooks/usePlatform.js.map +1 -1
- package/dist/hooks/useResizeObserver.d.ts.map +1 -1
- package/dist/hooks/useResizeObserver.js +4 -6
- package/dist/hooks/useResizeObserver.js.map +1 -1
- package/dist/hooks/useSyncHTMLWithBaseVKUIClasses.js +2 -1
- package/dist/hooks/useSyncHTMLWithBaseVKUIClasses.js.map +1 -1
- package/dist/hooks/useSyncHTMLWithTokens.js +3 -1
- package/dist/hooks/useSyncHTMLWithTokens.js.map +1 -1
- package/dist/hooks/useWaitTransitionFinish.d.ts.map +1 -1
- package/dist/hooks/useWaitTransitionFinish.js +13 -15
- package/dist/hooks/useWaitTransitionFinish.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/array.d.ts +17 -0
- package/dist/lib/array.d.ts.map +1 -0
- package/dist/lib/array.js +18 -0
- package/dist/lib/array.js.map +1 -0
- package/dist/lib/curve.d.ts +9 -0
- package/dist/lib/curve.d.ts.map +1 -0
- package/dist/lib/curve.js +21 -0
- package/dist/lib/curve.js.map +1 -0
- package/dist/lib/dom.d.ts +2 -1
- package/dist/lib/dom.d.ts.map +1 -1
- package/dist/lib/dom.js +5 -2
- package/dist/lib/dom.js.map +1 -1
- package/dist/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.d.ts.map +1 -1
- package/dist/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.js +4 -4
- package/dist/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.js.map +1 -1
- package/dist/lib/fx.d.ts +1 -8
- package/dist/lib/fx.d.ts.map +1 -1
- package/dist/lib/fx.js +4 -55
- package/dist/lib/fx.js.map +1 -1
- package/dist/lib/layouts/index.d.ts +1 -1
- package/dist/lib/layouts/index.d.ts.map +1 -1
- package/dist/lib/layouts/index.js.map +1 -1
- package/dist/lib/layouts/layoutProps.d.ts +7 -0
- package/dist/lib/layouts/layoutProps.d.ts.map +1 -1
- package/dist/lib/layouts/layoutProps.js +11 -0
- package/dist/lib/layouts/layoutProps.js.map +1 -1
- package/dist/lib/layouts/resolveLayoutProps.d.ts.map +1 -1
- package/dist/lib/layouts/resolveLayoutProps.js +13 -11
- package/dist/lib/layouts/resolveLayoutProps.js.map +1 -1
- package/dist/lib/layouts/types.d.ts +29 -0
- package/dist/lib/layouts/types.d.ts.map +1 -1
- package/dist/lib/layouts/types.js.map +1 -1
- package/dist/lib/material/shapes/Shape.d.ts +8 -0
- package/dist/lib/material/shapes/Shape.d.ts.map +1 -0
- package/dist/lib/material/shapes/Shape.js +18 -0
- package/dist/lib/material/shapes/Shape.js.map +1 -0
- package/dist/lib/material/shapes/shapes.d.ts +43 -0
- package/dist/lib/material/shapes/shapes.d.ts.map +1 -0
- package/dist/lib/material/shapes/shapes.js +2250 -0
- package/dist/lib/material/shapes/shapes.js.map +1 -0
- package/dist/lib/math.d.ts +23 -0
- package/dist/lib/math.d.ts.map +1 -0
- package/dist/lib/math.js +31 -0
- package/dist/lib/math.js.map +1 -0
- package/dist/lib/svg/path/approximate.d.ts +21 -0
- package/dist/lib/svg/path/approximate.d.ts.map +1 -0
- package/dist/lib/svg/path/approximate.js +57 -0
- package/dist/lib/svg/path/approximate.js.map +1 -0
- package/dist/lib/svg/path/interpolate.d.ts +5 -0
- package/dist/lib/svg/path/interpolate.d.ts.map +1 -0
- package/dist/lib/svg/path/interpolate.js +121 -0
- package/dist/lib/svg/path/interpolate.js.map +1 -0
- package/dist/lib/svg/path/path.d.ts +48 -0
- package/dist/lib/svg/path/path.d.ts.map +1 -0
- package/dist/lib/svg/path/path.js +50 -0
- package/dist/lib/svg/path/path.js.map +1 -0
- package/dist/lib/svg/path/point.d.ts +3 -0
- package/dist/lib/svg/path/point.d.ts.map +1 -0
- package/dist/lib/svg/path/point.js +3 -0
- package/dist/lib/svg/path/point.js.map +1 -0
- package/dist/lib/svg/path/transform.d.ts +64 -0
- package/dist/lib/svg/path/transform.d.ts.map +1 -0
- package/dist/lib/svg/path/transform.js +110 -0
- package/dist/lib/svg/path/transform.js.map +1 -0
- package/dist/lib/tokens/useTokenClassName.d.ts.map +1 -1
- package/dist/lib/tokens/useTokenClassName.js +4 -1
- package/dist/lib/tokens/useTokenClassName.js.map +1 -1
- package/dist/lib/touch/UIPanGestureRecognizer.d.ts.map +1 -1
- package/dist/lib/touch/UIPanGestureRecognizer.js +2 -2
- package/dist/lib/touch/UIPanGestureRecognizer.js.map +1 -1
- package/dist/types.d.ts +9 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -4
- package/dist/types.js.map +1 -1
- package/dist/vkui.css +1 -1
- package/dist/vkui.css.map +1 -1
- package/package.json +7 -6
- package/src/components/ActionSheet/ActionSheet.tsx +6 -3
- package/src/components/AdaptivityProvider/AdaptivityContext.tsx +3 -3
- package/src/components/AdaptivityProvider/AdaptivityProvider.tsx +2 -2
- package/src/components/AppRoot/AppRoot.tsx +1 -14
- package/src/components/AppRoot/AppRootContext.ts +0 -2
- package/src/components/Calendar/Calendar.tsx +2 -2
- package/src/components/CalendarDay/CalendarDay.tsx +4 -2
- package/src/components/CalendarDays/CalendarDays.tsx +2 -2
- package/src/components/CalendarHeader/CalendarHeader.tsx +4 -2
- package/src/components/CalendarRange/CalendarRange.tsx +2 -2
- package/src/components/CalendarTime/CalendarTime.module.css +38 -0
- package/src/components/CalendarTime/CalendarTime.module.css.d.ts.map +1 -1
- package/src/components/CalendarTime/CalendarTime.tsx +68 -55
- package/src/components/CalendarTime/CalendarTimePicker.tsx +148 -62
- package/src/components/CalendarTime/ComboBox.tsx +189 -0
- package/src/components/CardScroll/CardScroll.tsx +6 -5
- package/src/components/CarouselBase/CarouselBase.tsx +2 -1
- package/src/components/ChipsSelect/useChipsSelect.ts +1 -0
- package/src/components/ConfigProvider/ConfigProvider.tsx +6 -3
- package/src/components/ConfigProvider/ConfigProviderOverride.tsx +2 -1
- package/src/components/ConfigProvider/ConfigProviderSubContexts.tsx +43 -0
- package/src/components/ContentBadge/ContentBadge.module.css +84 -91
- package/src/components/ContentBadge/ContentBadge.module.css.d.ts.map +1 -1
- package/src/components/ContentBadge/ContentBadge.tsx +73 -5
- package/src/components/CustomSelect/CustomSelect.tsx +19 -10
- package/src/components/DateInput/DateInput.tsx +3 -3
- package/src/components/DateRangeInput/DateRangeInput.tsx +2 -2
- package/src/components/Epic/ScrollSaver.tsx +1 -0
- package/src/components/FixedLayout/ParentWidthWrapper.tsx +48 -0
- package/src/components/Flex/Flex.tsx +11 -6
- package/src/components/GridAvatar/GridAvatar.module.css +1 -1
- package/src/components/GridAvatar/GridAvatar.module.css.d.ts.map +1 -1
- package/src/components/ImageBase/ImageBaseFloatElement/ImageBaseFloatElement.tsx +1 -1
- package/src/components/NativeSelect/NativeSelect.tsx +4 -2
- package/src/components/NavTransitionContext/NavTransitionContext.tsx +5 -1
- package/src/components/OnboardingTooltip/OnboardingTooltip.tsx +3 -6
- package/src/components/PanelHeader/PanelHeader.tsx +1 -1
- package/src/components/Popper/Popper.tsx +8 -5
- package/src/components/PullToRefresh/PullToRefresh.module.css +1 -1
- package/src/components/PullToRefresh/PullToRefresh.tsx +10 -3
- package/src/components/Root/Root.tsx +60 -59
- package/src/components/SimpleGrid/SimpleGrid.tsx +25 -11
- package/src/components/Skeleton/Skeleton.tsx +6 -4
- package/src/components/Snackbar/Snackbar.tsx +6 -3
- package/src/components/Spacing/Spacing.tsx +1 -1
- package/src/components/Spinner/ExpressiveSpinner/ExpressiveSpinner.module.css +13 -0
- package/src/components/Spinner/ExpressiveSpinner/ExpressiveSpinner.module.css.d.ts.map +1 -0
- package/src/components/Spinner/ExpressiveSpinner/ExpressiveSpinner.tsx +73 -0
- package/src/components/Spinner/ExpressiveSpinner/icons.tsx +104 -0
- package/src/components/Spinner/SvgIcon.tsx +31 -0
- package/src/components/Spinner/icons.tsx +10 -13
- package/src/components/SplitLayout/SplitLayout.tsx +3 -3
- package/src/components/TabsItem/TabsItem.tsx +4 -5
- package/src/components/Tappable/Tappable.tsx +2 -2
- package/src/components/View/View.tsx +83 -89
- package/src/components/View/ViewInfinite.tsx +65 -69
- package/src/components/WriteBar/WriteBar.tsx +25 -59
- package/src/components/WriteBar/WriteBarBeforeOrAfter/WriteBarBeforeOrAfter.module.css +12 -0
- package/src/components/WriteBar/WriteBarBeforeOrAfter/WriteBarBeforeOrAfter.module.css.d.ts.map +1 -0
- package/src/components/WriteBar/WriteBarBeforeOrAfter/WriteBarBeforeOrAfter.tsx +20 -0
- package/src/components/WriteBar/WriteBarFormField/WriteBarFormField.module.css +18 -0
- package/src/components/WriteBar/WriteBarFormField/WriteBarFormField.module.css.d.ts.map +1 -0
- package/src/components/WriteBar/WriteBarFormField/WriteBarFormField.tsx +22 -0
- package/src/components/WriteBar/WriteBarFormField/WriteBarFormFieldInlineAfter/WriteBarFormFieldInlineAfter.module.css +3 -0
- package/src/components/WriteBar/WriteBarFormField/WriteBarFormFieldInlineAfter/WriteBarFormFieldInlineAfter.module.css.d.ts.map +1 -0
- package/src/components/WriteBar/WriteBarFormField/WriteBarFormFieldInlineAfter/WriteBarFormFieldInlineAfter.tsx +23 -0
- package/src/components/WriteBar/WriteBarRoot/WriteBarRoot.module.css +14 -0
- package/src/components/WriteBar/WriteBarRoot/WriteBarRoot.module.css.d.ts.map +1 -0
- package/src/components/WriteBar/WriteBarRoot/WriteBarRoot.tsx +31 -0
- package/src/components/WriteBar/WriteBarTextarea/WriteBarTextarea.module.css +42 -0
- package/src/components/WriteBar/WriteBarTextarea/WriteBarTextarea.module.css.d.ts.map +1 -0
- package/src/components/WriteBar/WriteBarTextarea/WriteBarTextarea.tsx +48 -0
- package/src/helpers/math.ts +8 -0
- package/src/hoc/withPlatform.tsx +3 -3
- package/src/hooks/useAdaptivityConditionalRender/types.ts +2 -2
- package/src/hooks/useAnimationFrame.tsx +42 -0
- package/src/hooks/useAutoFocus.ts +1 -1
- package/src/hooks/useColorScheme.ts +3 -4
- package/src/hooks/useConfigDirection.ts +3 -4
- package/src/hooks/useDateInput.ts +1 -2
- package/src/hooks/useFocusTrap/useAutoFocus.ts +1 -1
- package/src/hooks/useFocusTrap/useFocusTrap.tsx +2 -0
- package/src/hooks/useFocusVisible.ts +10 -18
- package/src/hooks/useFocusWithin.ts +26 -23
- package/src/hooks/useGlobalEscKeyDown.ts +12 -15
- package/src/hooks/useGlobalOnClickOutside.ts +5 -2
- package/src/hooks/useKeyboardInputTracker.ts +68 -55
- package/src/hooks/useLatestRef.ts +12 -0
- package/src/hooks/useLocale.ts +3 -4
- package/src/hooks/useMediaQueryMatch.ts +1 -1
- package/src/hooks/useMutationObserver.ts +2 -3
- package/src/hooks/usePlatform.ts +3 -4
- package/src/hooks/useResizeObserver.ts +4 -5
- package/src/hooks/useSyncHTMLWithBaseVKUIClasses.ts +1 -1
- package/src/hooks/useSyncHTMLWithTokens.ts +1 -1
- package/src/hooks/useWaitTransitionFinish.ts +15 -15
- package/src/index.ts +1 -0
- package/src/lib/array.ts +19 -0
- package/src/lib/curve.ts +36 -0
- package/src/lib/dom.tsx +10 -4
- package/src/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.ts +4 -5
- package/src/lib/fx.ts +5 -63
- package/src/lib/layouts/index.ts +1 -0
- package/src/lib/layouts/layoutProps.ts +8 -0
- package/src/lib/layouts/resolveLayoutProps.ts +19 -17
- package/src/lib/layouts/types.ts +29 -0
- package/src/lib/material/shapes/Shape.tsx +17 -0
- package/src/lib/material/shapes/shapes.ts +329 -0
- package/src/lib/math.ts +37 -0
- package/src/lib/svg/path/approximate.ts +81 -0
- package/src/lib/svg/path/interpolate.ts +151 -0
- package/src/lib/svg/path/path.ts +102 -0
- package/src/lib/svg/path/point.ts +2 -0
- package/src/lib/svg/path/transform.ts +147 -0
- package/src/lib/tokens/useTokenClassName.ts +7 -5
- package/src/lib/touch/UIPanGestureRecognizer.ts +2 -2
- package/src/types.ts +16 -0
- package/dist/cssm/components/WriteBar/WriteBar.module.css +0 -118
- package/dist/cssm/lib/floating/LockFloatingPosition/LockFloatingPosition.js +0 -6
- package/dist/cssm/lib/floating/LockFloatingPosition/LockFloatingPosition.js.map +0 -1
- package/dist/lib/floating/LockFloatingPosition/LockFloatingPosition.d.ts +0 -6
- package/dist/lib/floating/LockFloatingPosition/LockFloatingPosition.d.ts.map +0 -1
- package/dist/lib/floating/LockFloatingPosition/LockFloatingPosition.js +0 -6
- package/dist/lib/floating/LockFloatingPosition/LockFloatingPosition.js.map +0 -1
- package/src/components/WriteBar/WriteBar.module.css +0 -116
- package/src/components/WriteBar/WriteBar.module.css.d.ts.map +0 -1
- package/src/lib/floating/LockFloatingPosition/LockFloatingPosition.tsx +0 -6
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import type { HasRootRef } from '../../types';
|
|
3
3
|
import type { ActionSheetItemProps } from '../ActionSheetItem/ActionSheetItem';
|
|
4
|
+
import type { AppRootPortalProps } from '../AppRoot/AppRootPortal';
|
|
4
5
|
import type { SharedDropdownProps } from './types';
|
|
5
6
|
export type ActionSheetOnCloseReason = 'click-action-item' | 'click-cancel-item' | 'click-overlay' | 'keydown-item' | 'escape-key';
|
|
6
7
|
export type ActionSheetOnClosedReason = 'action-item' | 'cancel-item' | 'other';
|
|
@@ -17,7 +18,7 @@ export interface ActionSheetOnCloseOptions {
|
|
|
17
18
|
*/
|
|
18
19
|
closedBy: ActionSheetOnClosedReason;
|
|
19
20
|
}
|
|
20
|
-
export interface ActionSheetProps extends Pick<SharedDropdownProps, 'toggleRef' | 'popupOffsetDistance' | 'placement' | 'allowClickPropagation' | 'timeout' | 'restoreFocus' | 'autoFocus'>, Omit<React.HTMLAttributes<HTMLDivElement>, 'autoFocus' | 'title'> {
|
|
21
|
+
export interface ActionSheetProps extends Pick<SharedDropdownProps, 'toggleRef' | 'popupOffsetDistance' | 'placement' | 'allowClickPropagation' | 'timeout' | 'restoreFocus' | 'autoFocus'>, Pick<AppRootPortalProps, 'usePortal'>, Omit<React.HTMLAttributes<HTMLDivElement>, 'autoFocus' | 'title'> {
|
|
21
22
|
/**
|
|
22
23
|
* Заголовок всплывающего окна.
|
|
23
24
|
*/
|
|
@@ -56,16 +57,16 @@ export interface ActionSheetProps extends Pick<SharedDropdownProps, 'toggleRef'
|
|
|
56
57
|
*/
|
|
57
58
|
mode?: 'sheet' | 'menu' | undefined;
|
|
58
59
|
/**
|
|
59
|
-
* @deprecated Since 7.3.0. Будет
|
|
60
|
+
* @deprecated Since 7.3.0. Будет удалено в **VKUI v9**.
|
|
60
61
|
*/
|
|
61
62
|
mount?: boolean | undefined;
|
|
62
63
|
/**
|
|
63
|
-
* @deprecated Since 7.3.0. Будет
|
|
64
|
+
* @deprecated Since 7.3.0. Будет удалено в **VKUI v9**.
|
|
64
65
|
*/
|
|
65
66
|
disabled?: boolean | undefined;
|
|
66
67
|
}
|
|
67
68
|
/**
|
|
68
69
|
* @see https://vkui.io/components/action-sheet
|
|
69
70
|
*/
|
|
70
|
-
export declare const ActionSheet: ({ children, className, title, description, style, iosCloseItem, slotProps, popupOffsetDistance, placement, mode: modeProp, onClose: onCloseProp, onClosed, ...restProps }: ActionSheetProps) => React.ReactNode;
|
|
71
|
+
export declare const ActionSheet: ({ children, className, title, description, style, iosCloseItem, slotProps, popupOffsetDistance, placement, mode: modeProp, onClose: onCloseProp, onClosed, usePortal, ...restProps }: ActionSheetProps) => React.ReactNode;
|
|
71
72
|
//# sourceMappingURL=ActionSheet.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActionSheet.d.ts","sourceRoot":"","sources":["../../../src/components/ActionSheet/ActionSheet.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"ActionSheet.d.ts","sourceRoot":"","sources":["../../../src/components/ActionSheet/ActionSheet.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAanE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAGnD,MAAM,MAAM,wBAAwB,GAChC,mBAAmB,GACnB,mBAAmB,GACnB,eAAe,GACf,cAAc,GACd,YAAY,CAAC;AAEjB,MAAM,MAAM,yBAAyB,GAAG,aAAa,GAAG,aAAa,GAAG,OAAO,CAAC;AAEhF;;;GAGG;AACH,MAAM,WAAW,yBAAyB;IACxC;;;;;OAKG;IACH,QAAQ,EAAE,yBAAyB,CAAC;CACrC;AAED,MAAM,WAAW,gBACf,SAAQ,IAAI,CACR,mBAAmB,EACjB,WAAW,GACX,qBAAqB,GACrB,WAAW,GACX,uBAAuB,GACvB,SAAS,GACT,cAAc,GACd,WAAW,CACd,EACD,IAAI,CAAC,kBAAkB,EAAE,WAAW,CAAC,EACrC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC;IACnE;;OAEG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;IACpC;;OAEG;IACH,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;IAC1C;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,wBAAwB,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IACnE;;;;;OAKG;IACH,QAAQ,EAAE,CAAC,OAAO,EAAE,yBAAyB,KAAK,IAAI,CAAC;IACvD;;OAEG;IACH,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;IAC3C;;;OAGG;IACH,SAAS,CAAC,EACN;QACE,YAAY,CAAC,EACT,CAAC,IAAI,CAAC,oBAAoB,EAAE,MAAM,GAAG,cAAc,CAAC,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC,GAC/E,SAAS,CAAC;KACf,GACD,SAAS,CAAC;IACd;;;;;OAKG;IACH,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;IACpC;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC5B;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAChC;AAED;;GAEG;AACH,eAAO,MAAM,WAAW,GAAI,sLAezB,gBAAgB,KAAG,KAAK,CAAC,SAgH3B,CAAC"}
|
|
@@ -16,7 +16,7 @@ import { ActionSheetDropdownMenu } from "./ActionSheetDropdownMenu.js";
|
|
|
16
16
|
import { ActionSheetDropdownSheet } from "./ActionSheetDropdownSheet.js";
|
|
17
17
|
/**
|
|
18
18
|
* @see https://vkui.io/components/action-sheet
|
|
19
|
-
*/ export const ActionSheet = ({ children, className, title, description, style, iosCloseItem, slotProps, popupOffsetDistance, placement, mode: modeProp, onClose: onCloseProp, onClosed, ...restProps })=>{
|
|
19
|
+
*/ export const ActionSheet = ({ children, className, title, description, style, iosCloseItem, slotProps, popupOffsetDistance, placement, mode: modeProp, onClose: onCloseProp, onClosed, usePortal, ...restProps })=>{
|
|
20
20
|
const platform = usePlatform();
|
|
21
21
|
const [closedReason, setClosedReason] = React.useState(undefined);
|
|
22
22
|
const onCloseStable = useStableCallback(onCloseProp || noop);
|
|
@@ -112,6 +112,7 @@ import { ActionSheetDropdownSheet } from "./ActionSheetDropdownSheet.js";
|
|
|
112
112
|
})
|
|
113
113
|
});
|
|
114
114
|
return /*#__PURE__*/ _jsx(AppRootPortal, {
|
|
115
|
+
usePortal: usePortal,
|
|
115
116
|
children: /*#__PURE__*/ _jsx(PopoutWrapper, {
|
|
116
117
|
noBackground: mode === 'menu',
|
|
117
118
|
closing: Boolean(closedReason),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/ActionSheet/ActionSheet.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { noop } from '@vkontakte/vkjs';\nimport { useAdaptivityWithJSMediaQueries } from '../../hooks/useAdaptivityWithJSMediaQueries';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { useStableCallback } from '../../hooks/useStableCallback';\nimport { useCSSKeyframesAnimationController } from '../../lib/animation';\nimport type { HasRootRef } from '../../types';\nimport type { ActionSheetItemProps } from '../ActionSheetItem/ActionSheetItem';\nimport { AppRootPortal } from '../AppRoot/AppRootPortal';\nimport { useScrollLock } from '../AppRoot/ScrollContext';\nimport { PopoutWrapper } from '../PopoutWrapper/PopoutWrapper';\nimport { Footnote } from '../Typography/Footnote/Footnote';\nimport {\n ActionSheetContext,\n type ActionSheetContextType,\n type ItemClickHandler,\n} from './ActionSheetContext';\nimport { ActionSheetDefaultIosCloseItem } from './ActionSheetDefaultIosCloseItem';\nimport { ActionSheetDropdownMenu } from './ActionSheetDropdownMenu';\nimport { ActionSheetDropdownSheet } from './ActionSheetDropdownSheet';\nimport type { SharedDropdownProps } from './types';\nimport styles from './ActionSheet.module.css';\n\nexport type ActionSheetOnCloseReason =\n | 'click-action-item'\n | 'click-cancel-item'\n | 'click-overlay'\n | 'keydown-item'\n | 'escape-key';\n\nexport type ActionSheetOnClosedReason = 'action-item' | 'cancel-item' | 'other';\n\n/**\n * @deprecated Since 8.0.0 аргумент, переданный в функцию `onClosed`, устарел и будет удален в **VKUI v10**.\n * Для получения причины закрытия всплывающего окна используйте свойство `onClose`.\n */\nexport interface ActionSheetOnCloseOptions {\n /**\n * Причина закрытия всплывающего элемента.\n *\n * @deprecated Since 8.0.0 аргумент, переданный в функцию `onClosed`, устарел и будет удален в **VKUI v10**.\n * Для получения причины закрытия всплывающего окна используйте свойство `onClose`.\n */\n closedBy: ActionSheetOnClosedReason;\n}\n\nexport interface ActionSheetProps\n extends Pick<\n SharedDropdownProps,\n | 'toggleRef'\n | 'popupOffsetDistance'\n | 'placement'\n | 'allowClickPropagation'\n | 'timeout'\n | 'restoreFocus'\n | 'autoFocus'\n >,\n Omit<React.HTMLAttributes<HTMLDivElement>, 'autoFocus' | 'title'> {\n /**\n * Заголовок всплывающего окна.\n */\n title?: React.ReactNode | undefined;\n /**\n * Описание всплывающего окна, под заголовком.\n */\n description?: React.ReactNode | undefined;\n /**\n * Обработчик закрытия всплывающего окна.\n */\n onClose?: ((reason: ActionSheetOnCloseReason) => void) | undefined;\n /**\n * Обработчик закрытия всплывающего окна срабатывающий после завершения анимации закрытия.\n *\n * > Since 8.0.0 аргумент, переданный в данную функцию, устарел и будет удален в **VKUI v10**.\n * > Для получения причины закрытия всплывающего окна используйте свойство `onClose`.\n */\n onClosed: (options: ActionSheetOnCloseOptions) => void;\n /**\n * Только мобильный iOS.\n */\n iosCloseItem?: React.ReactNode | undefined;\n /**\n * Свойства, которые можно прокинуть внутрь компонента:\n * - `iosCloseItem`: свойства для прокидывания в кнопку отмены на iOS.\n */\n slotProps?:\n | {\n iosCloseItem?:\n | (Omit<ActionSheetItemProps, 'mode' | 'isCancelItem'> & HasRootRef<HTMLElement>)\n | undefined;\n }\n | undefined;\n /**\n * Режим отображения компонента:\n *\n * - `sheet` – отображение снизу экрана в виде всплывающего окна, подходит для мобильных устройств\n * - `menu` – отображение в виде всплывающего элемента, относительно якорного элемента.\n */\n mode?: 'sheet' | 'menu' | undefined;\n /**\n * @deprecated Since 7.3.0. Будет удалeно в **VKUI v9**.\n */\n mount?: boolean | undefined; // TODO [>=9]: удалить неиспользуемое свойство\n /**\n * @deprecated Since 7.3.0. Будет удалeно в **VKUI v9**.\n */\n disabled?: boolean | undefined; // TODO [>=9]: удалить неиспользуемое свойство\n}\n\n/**\n * @see https://vkui.io/components/action-sheet\n */\nexport const ActionSheet = ({\n children,\n className,\n title,\n description,\n style,\n iosCloseItem,\n slotProps,\n popupOffsetDistance,\n placement,\n mode: modeProp,\n onClose: onCloseProp,\n onClosed,\n ...restProps\n}: ActionSheetProps): React.ReactNode => {\n const platform = usePlatform();\n const [closedReason, setClosedReason] = React.useState<undefined | ActionSheetOnClosedReason>(\n undefined,\n );\n const onCloseStable = useStableCallback(onCloseProp || noop);\n\n const onClose = React.useCallback(\n (onCloseReason: ActionSheetOnCloseReason, onClosedReason: ActionSheetOnClosedReason) => {\n onCloseStable(onCloseReason);\n setClosedReason(onClosedReason);\n },\n [onCloseStable],\n );\n\n const onOverlayClick = React.useCallback(() => onClose('click-overlay', 'other'), [onClose]);\n\n const actionCallbackRef = React.useRef(noop);\n\n const [animationState, animationHandlers] = useCSSKeyframesAnimationController(\n closedReason !== undefined ? 'exit' : 'enter',\n {\n onExited() {\n onClosed({ closedBy: closedReason || 'other' });\n actionCallbackRef.current();\n actionCallbackRef.current = noop;\n },\n },\n );\n\n const { isDesktop } = useAdaptivityWithJSMediaQueries();\n const mode = modeProp ?? (isDesktop ? 'menu' : 'sheet');\n\n useScrollLock(mode === 'sheet');\n\n const onItemClick = React.useCallback<ItemClickHandler>(\n ({ action, immediateAction, autoClose, isCancelItem }) =>\n (event) => {\n event.persist();\n immediateAction && immediateAction(event);\n if (autoClose) {\n if (action) {\n actionCallbackRef.current = () => action(event);\n }\n onClose(\n isCancelItem ? 'click-cancel-item' : 'click-action-item',\n isCancelItem ? 'cancel-item' : 'action-item',\n );\n } else {\n action && action(event);\n }\n },\n [onClose],\n );\n const contextValue = React.useMemo<ActionSheetContextType>(\n () => ({ onItemClick, mode, onClose: (reason) => onClose(reason, 'other') }),\n [mode, onClose, onItemClick],\n );\n\n const DropdownComponent = mode === 'menu' ? ActionSheetDropdownMenu : ActionSheetDropdownSheet;\n\n const dropdownProps =\n mode === 'menu' ? Object.assign(restProps, { popupOffsetDistance, placement }) : restProps;\n\n const actionSheet = (\n <ActionSheetContext.Provider value={contextValue}>\n <DropdownComponent\n closing={Boolean(closedReason)}\n role=\"dialog\"\n aria-modal=\"true\"\n autoFocus={animationState === 'entered'}\n {...dropdownProps}\n {...animationHandlers}\n className={mode === 'menu' ? className : undefined}\n style={mode === 'menu' ? style : undefined}\n >\n <div className={styles.contentWrapper}>\n {(title || description) && (\n <div className={styles.header}>\n {title && (\n <Footnote weight=\"2\" className={styles.title}>\n {title}\n </Footnote>\n )}\n {description && <Footnote className={styles.description}>{description}</Footnote>}\n </div>\n )}\n {children}\n </div>\n {platform === 'ios' && mode === 'sheet' && (\n <div className={styles.closeItemWrapperIos}>\n {iosCloseItem ?? <ActionSheetDefaultIosCloseItem {...slotProps?.iosCloseItem} />}\n </div>\n )}\n </DropdownComponent>\n </ActionSheetContext.Provider>\n );\n\n return (\n <AppRootPortal>\n <PopoutWrapper\n noBackground={mode === 'menu'}\n closing={Boolean(closedReason)}\n alignY=\"bottom\"\n className={className}\n style={style}\n onClick={onOverlayClick}\n >\n {actionSheet}\n </PopoutWrapper>\n </AppRootPortal>\n );\n};\n"],"names":["React","noop","useAdaptivityWithJSMediaQueries","usePlatform","useStableCallback","useCSSKeyframesAnimationController","AppRootPortal","useScrollLock","PopoutWrapper","Footnote","ActionSheetContext","ActionSheetDefaultIosCloseItem","ActionSheetDropdownMenu","ActionSheetDropdownSheet","ActionSheet","children","className","title","description","style","iosCloseItem","slotProps","popupOffsetDistance","placement","mode","modeProp","onClose","onCloseProp","onClosed","restProps","platform","closedReason","setClosedReason","useState","undefined","onCloseStable","useCallback","onCloseReason","onClosedReason","onOverlayClick","actionCallbackRef","useRef","animationState","animationHandlers","onExited","closedBy","current","isDesktop","onItemClick","action","immediateAction","autoClose","isCancelItem","event","persist","contextValue","useMemo","reason","DropdownComponent","dropdownProps","Object","assign","actionSheet","Provider","value","closing","Boolean","role","aria-modal","autoFocus","div","weight","noBackground","alignY","onClick"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/ActionSheet/ActionSheet.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { noop } from '@vkontakte/vkjs';\nimport { useAdaptivityWithJSMediaQueries } from '../../hooks/useAdaptivityWithJSMediaQueries';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { useStableCallback } from '../../hooks/useStableCallback';\nimport { useCSSKeyframesAnimationController } from '../../lib/animation';\nimport type { HasRootRef } from '../../types';\nimport type { ActionSheetItemProps } from '../ActionSheetItem/ActionSheetItem';\nimport type { AppRootPortalProps } from '../AppRoot/AppRootPortal';\nimport { AppRootPortal } from '../AppRoot/AppRootPortal';\nimport { useScrollLock } from '../AppRoot/ScrollContext';\nimport { PopoutWrapper } from '../PopoutWrapper/PopoutWrapper';\nimport { Footnote } from '../Typography/Footnote/Footnote';\nimport {\n ActionSheetContext,\n type ActionSheetContextType,\n type ItemClickHandler,\n} from './ActionSheetContext';\nimport { ActionSheetDefaultIosCloseItem } from './ActionSheetDefaultIosCloseItem';\nimport { ActionSheetDropdownMenu } from './ActionSheetDropdownMenu';\nimport { ActionSheetDropdownSheet } from './ActionSheetDropdownSheet';\nimport type { SharedDropdownProps } from './types';\nimport styles from './ActionSheet.module.css';\n\nexport type ActionSheetOnCloseReason =\n | 'click-action-item'\n | 'click-cancel-item'\n | 'click-overlay'\n | 'keydown-item'\n | 'escape-key';\n\nexport type ActionSheetOnClosedReason = 'action-item' | 'cancel-item' | 'other';\n\n/**\n * @deprecated Since 8.0.0 аргумент, переданный в функцию `onClosed`, устарел и будет удален в **VKUI v10**.\n * Для получения причины закрытия всплывающего окна используйте свойство `onClose`.\n */\nexport interface ActionSheetOnCloseOptions {\n /**\n * Причина закрытия всплывающего элемента.\n *\n * @deprecated Since 8.0.0 аргумент, переданный в функцию `onClosed`, устарел и будет удален в **VKUI v10**.\n * Для получения причины закрытия всплывающего окна используйте свойство `onClose`.\n */\n closedBy: ActionSheetOnClosedReason;\n}\n\nexport interface ActionSheetProps\n extends Pick<\n SharedDropdownProps,\n | 'toggleRef'\n | 'popupOffsetDistance'\n | 'placement'\n | 'allowClickPropagation'\n | 'timeout'\n | 'restoreFocus'\n | 'autoFocus'\n >,\n Pick<AppRootPortalProps, 'usePortal'>,\n Omit<React.HTMLAttributes<HTMLDivElement>, 'autoFocus' | 'title'> {\n /**\n * Заголовок всплывающего окна.\n */\n title?: React.ReactNode | undefined;\n /**\n * Описание всплывающего окна, под заголовком.\n */\n description?: React.ReactNode | undefined;\n /**\n * Обработчик закрытия всплывающего окна.\n */\n onClose?: ((reason: ActionSheetOnCloseReason) => void) | undefined;\n /**\n * Обработчик закрытия всплывающего окна срабатывающий после завершения анимации закрытия.\n *\n * > Since 8.0.0 аргумент, переданный в данную функцию, устарел и будет удален в **VKUI v10**.\n * > Для получения причины закрытия всплывающего окна используйте свойство `onClose`.\n */\n onClosed: (options: ActionSheetOnCloseOptions) => void;\n /**\n * Только мобильный iOS.\n */\n iosCloseItem?: React.ReactNode | undefined;\n /**\n * Свойства, которые можно прокинуть внутрь компонента:\n * - `iosCloseItem`: свойства для прокидывания в кнопку отмены на iOS.\n */\n slotProps?:\n | {\n iosCloseItem?:\n | (Omit<ActionSheetItemProps, 'mode' | 'isCancelItem'> & HasRootRef<HTMLElement>)\n | undefined;\n }\n | undefined;\n /**\n * Режим отображения компонента:\n *\n * - `sheet` – отображение снизу экрана в виде всплывающего окна, подходит для мобильных устройств\n * - `menu` – отображение в виде всплывающего элемента, относительно якорного элемента.\n */\n mode?: 'sheet' | 'menu' | undefined;\n /**\n * @deprecated Since 7.3.0. Будет удалено в **VKUI v9**.\n */\n mount?: boolean | undefined; // TODO [>=9]: удалить неиспользуемое свойство\n /**\n * @deprecated Since 7.3.0. Будет удалено в **VKUI v9**.\n */\n disabled?: boolean | undefined; // TODO [>=9]: удалить неиспользуемое свойство\n}\n\n/**\n * @see https://vkui.io/components/action-sheet\n */\nexport const ActionSheet = ({\n children,\n className,\n title,\n description,\n style,\n iosCloseItem,\n slotProps,\n popupOffsetDistance,\n placement,\n mode: modeProp,\n onClose: onCloseProp,\n onClosed,\n usePortal,\n ...restProps\n}: ActionSheetProps): React.ReactNode => {\n const platform = usePlatform();\n const [closedReason, setClosedReason] = React.useState<undefined | ActionSheetOnClosedReason>(\n undefined,\n );\n const onCloseStable = useStableCallback(onCloseProp || noop);\n\n const onClose = React.useCallback(\n (onCloseReason: ActionSheetOnCloseReason, onClosedReason: ActionSheetOnClosedReason) => {\n onCloseStable(onCloseReason);\n setClosedReason(onClosedReason);\n },\n [onCloseStable],\n );\n\n const onOverlayClick = React.useCallback(() => onClose('click-overlay', 'other'), [onClose]);\n\n const actionCallbackRef = React.useRef(noop);\n\n const [animationState, animationHandlers] = useCSSKeyframesAnimationController(\n closedReason !== undefined ? 'exit' : 'enter',\n {\n onExited() {\n onClosed({ closedBy: closedReason || 'other' });\n actionCallbackRef.current();\n actionCallbackRef.current = noop;\n },\n },\n );\n\n const { isDesktop } = useAdaptivityWithJSMediaQueries();\n const mode = modeProp ?? (isDesktop ? 'menu' : 'sheet');\n\n useScrollLock(mode === 'sheet');\n\n const onItemClick = React.useCallback<ItemClickHandler>(\n ({ action, immediateAction, autoClose, isCancelItem }) =>\n (event) => {\n event.persist();\n immediateAction && immediateAction(event);\n if (autoClose) {\n if (action) {\n actionCallbackRef.current = () => action(event);\n }\n onClose(\n isCancelItem ? 'click-cancel-item' : 'click-action-item',\n isCancelItem ? 'cancel-item' : 'action-item',\n );\n } else {\n action && action(event);\n }\n },\n [onClose],\n );\n const contextValue = React.useMemo<ActionSheetContextType>(\n () => ({ onItemClick, mode, onClose: (reason) => onClose(reason, 'other') }),\n [mode, onClose, onItemClick],\n );\n\n const DropdownComponent = mode === 'menu' ? ActionSheetDropdownMenu : ActionSheetDropdownSheet;\n\n const dropdownProps =\n mode === 'menu' ? Object.assign(restProps, { popupOffsetDistance, placement }) : restProps;\n\n const actionSheet = (\n <ActionSheetContext.Provider value={contextValue}>\n <DropdownComponent\n closing={Boolean(closedReason)}\n role=\"dialog\"\n aria-modal=\"true\"\n autoFocus={animationState === 'entered'}\n {...dropdownProps}\n {...animationHandlers}\n className={mode === 'menu' ? className : undefined}\n style={mode === 'menu' ? style : undefined}\n >\n <div className={styles.contentWrapper}>\n {(title || description) && (\n <div className={styles.header}>\n {title && (\n <Footnote weight=\"2\" className={styles.title}>\n {title}\n </Footnote>\n )}\n {description && <Footnote className={styles.description}>{description}</Footnote>}\n </div>\n )}\n {children}\n </div>\n {platform === 'ios' && mode === 'sheet' && (\n <div className={styles.closeItemWrapperIos}>\n {iosCloseItem ?? <ActionSheetDefaultIosCloseItem {...slotProps?.iosCloseItem} />}\n </div>\n )}\n </DropdownComponent>\n </ActionSheetContext.Provider>\n );\n\n return (\n <AppRootPortal usePortal={usePortal}>\n <PopoutWrapper\n noBackground={mode === 'menu'}\n closing={Boolean(closedReason)}\n alignY=\"bottom\"\n className={className}\n style={style}\n onClick={onOverlayClick}\n >\n {actionSheet}\n </PopoutWrapper>\n </AppRootPortal>\n );\n};\n"],"names":["React","noop","useAdaptivityWithJSMediaQueries","usePlatform","useStableCallback","useCSSKeyframesAnimationController","AppRootPortal","useScrollLock","PopoutWrapper","Footnote","ActionSheetContext","ActionSheetDefaultIosCloseItem","ActionSheetDropdownMenu","ActionSheetDropdownSheet","ActionSheet","children","className","title","description","style","iosCloseItem","slotProps","popupOffsetDistance","placement","mode","modeProp","onClose","onCloseProp","onClosed","usePortal","restProps","platform","closedReason","setClosedReason","useState","undefined","onCloseStable","useCallback","onCloseReason","onClosedReason","onOverlayClick","actionCallbackRef","useRef","animationState","animationHandlers","onExited","closedBy","current","isDesktop","onItemClick","action","immediateAction","autoClose","isCancelItem","event","persist","contextValue","useMemo","reason","DropdownComponent","dropdownProps","Object","assign","actionSheet","Provider","value","closing","Boolean","role","aria-modal","autoFocus","div","weight","noBackground","alignY","onClick"],"mappings":"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"}
|
|
@@ -3,12 +3,12 @@ import type { DensityTypeValues, SizeTypeValues, ViewHeightType, ViewWidthType }
|
|
|
3
3
|
export interface DensityProps {
|
|
4
4
|
/**
|
|
5
5
|
* Тип размера экрана по горизонтали.
|
|
6
|
-
* @deprecated Since 8.0.0. Будет удалено в **VKUI v10** – используйте `sizeX="compact"` → `viewWidth={ViewWidth.MOBILE}` или `sizeX="compact"` → `viewWidth={ViewWidth.SMALL_TABLET}` (
|
|
6
|
+
* @deprecated Since 8.0.0. Будет удалено в **VKUI v10** – используйте `sizeX="compact"` → `viewWidth={ViewWidth.MOBILE}` или `sizeX="compact"` → `viewWidth={ViewWidth.SMALL_TABLET}` (https://github.com/VKCOM/VKUI/issues/9015).
|
|
7
7
|
*/
|
|
8
8
|
sizeX?: SizeTypeValues | undefined;
|
|
9
9
|
/**
|
|
10
10
|
* Тип размера экрана по вертикали.
|
|
11
|
-
* @deprecated Since 8.0.0. Будет удалено в **VKUI v10** – используйте `density` (
|
|
11
|
+
* @deprecated Since 8.0.0. Будет удалено в **VKUI v10** – используйте `density` (https://github.com/VKCOM/VKUI/issues/9015).
|
|
12
12
|
*/
|
|
13
13
|
sizeY?: SizeTypeValues | undefined;
|
|
14
14
|
/**
|
|
@@ -30,7 +30,7 @@ export interface AdaptivityProps extends DensityProps {
|
|
|
30
30
|
*/
|
|
31
31
|
hasPointer?: boolean | undefined;
|
|
32
32
|
/**
|
|
33
|
-
* @deprecated Since 7.3.0. Будет удалено в **VKUI v9** (
|
|
33
|
+
* @deprecated Since 7.3.0. Будет удалено в **VKUI v9** (https://github.com/VKCOM/VKUI/pull/8490).
|
|
34
34
|
*/
|
|
35
35
|
hasHover?: boolean | undefined;
|
|
36
36
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/AdaptivityProvider/AdaptivityContext.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport type {\n DensityTypeValues,\n SizeTypeValues,\n ViewHeightType,\n ViewWidthType,\n} from '../../lib/adaptivity';\n\nexport interface DensityProps {\n /**\n * Тип размера экрана по горизонтали.\n * @deprecated Since 8.0.0. Будет удалено в **VKUI v10** – используйте `sizeX=\"compact\"` → `viewWidth={ViewWidth.MOBILE}` или `sizeX=\"compact\"` → `viewWidth={ViewWidth.SMALL_TABLET}` (
|
|
1
|
+
{"version":3,"sources":["../../../src/components/AdaptivityProvider/AdaptivityContext.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport type {\n DensityTypeValues,\n SizeTypeValues,\n ViewHeightType,\n ViewWidthType,\n} from '../../lib/adaptivity';\n\nexport interface DensityProps {\n /**\n * Тип размера экрана по горизонтали.\n * @deprecated Since 8.0.0. Будет удалено в **VKUI v10** – используйте `sizeX=\"compact\"` → `viewWidth={ViewWidth.MOBILE}` или `sizeX=\"compact\"` → `viewWidth={ViewWidth.SMALL_TABLET}` (https://github.com/VKCOM/VKUI/issues/9015).\n */\n sizeX?: SizeTypeValues | undefined; // TODO [>=10]: #9015 удалить свойство\n /**\n * Тип размера экрана по вертикали.\n * @deprecated Since 8.0.0. Будет удалено в **VKUI v10** – используйте `density` (https://github.com/VKCOM/VKUI/issues/9015).\n */\n sizeY?: SizeTypeValues | undefined; // TODO [>=10]: #9015 удалить свойство\n /**\n * Тип размера экрана.\n */\n density?: DensityTypeValues | undefined;\n}\n\nexport interface AdaptivityProps extends DensityProps {\n /**\n * Тип ширины экрана для адаптивного отображения.\n */\n viewWidth?: ViewWidthType | undefined;\n /**\n * Тип высоты экрана для адаптивного отображения.\n */\n viewHeight?: ViewHeightType | undefined;\n /**\n * Флаг наличия указателя (например, мыши) на устройстве.\n */\n hasPointer?: boolean | undefined;\n /**\n * @deprecated Since 7.3.0. Будет удалено в **VKUI v9** (https://github.com/VKCOM/VKUI/pull/8490).\n */\n hasHover?: boolean | undefined; // TODO [>=9]: удалить неиспользуемое свойство\n}\n\nexport const AdaptivityContext: React.Context<AdaptivityProps> =\n React.createContext<AdaptivityProps>({});\n"],"names":["React","AdaptivityContext","createContext"],"mappings":"AAAA;AAEA,YAAYA,WAAW,QAAQ;AA4C/B,OAAO,MAAMC,kCACXD,MAAME,aAAa,CAAkB,CAAC,GAAG"}
|
|
@@ -20,10 +20,10 @@ const warn = warnOnce('AdaptivityProvider');
|
|
|
20
20
|
};
|
|
21
21
|
if (process.env.NODE_ENV === 'development') {
|
|
22
22
|
if (sizeXProp !== undefined) {
|
|
23
|
-
warn('Свойство устарело начиная с 8.0.0 и будет удалено в **VKUI v10**. Для обратной совместимости, используйте `viewWidth={ViewWidth.MOBILE}` вместо `sizeX="compact"` и `viewWidth={ViewWidth.SMALL_TABLET}` вместо `sizeX="
|
|
23
|
+
warn('Свойство устарело начиная с 8.0.0 и будет удалено в **VKUI v10**. Для обратной совместимости, используйте `viewWidth={ViewWidth.MOBILE}` вместо `sizeX="compact"` и `viewWidth={ViewWidth.SMALL_TABLET}` вместо `sizeX="regular"` (см. https://github.com/VKCOM/VKUI/issues/9015).');
|
|
24
24
|
}
|
|
25
25
|
if (sizeYProp !== undefined) {
|
|
26
|
-
warn('Свойство устарело начиная с 8.0.0 и будет удалено в **VKUI v10**. Используйте `density` (см.
|
|
26
|
+
warn('Свойство устарело начиная с 8.0.0 и будет удалено в **VKUI v10**. Используйте `density` (см. https://github.com/VKCOM/VKUI/issues/9015).');
|
|
27
27
|
}
|
|
28
28
|
if (hasHover !== undefined) {
|
|
29
29
|
warn('Свойство устарело начиная с 7.3.0 и будет удалено в **VKUI v9**. Используйте `hasPointer` (см. https://github.com/VKCOM/VKUI/pull/8490).');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/AdaptivityProvider/AdaptivityProvider.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { getSizeX, isCompactByViewHeight, isCompactByViewWidth } from '../../lib/adaptivity';\nimport { warnOnce } from '../../lib/warnOnce';\nimport type { HasChildren } from '../../types';\nimport { AdaptivityContext, type AdaptivityProps } from './AdaptivityContext';\n\nconst warn = warnOnce('AdaptivityProvider');\n\nexport interface AdaptivityProviderProps extends AdaptivityProps, HasChildren {}\n\n/**\n * @see https://vkui.io/components/adaptivity-provider\n */\nexport const AdaptivityProvider = ({\n viewWidth,\n viewHeight,\n sizeX: sizeXProp,\n sizeY: sizeYProp,\n density: densityProp,\n hasPointer,\n hasHover,\n children,\n}: AdaptivityProviderProps): React.ReactNode => {\n const adaptivity = React.useMemo(() => {\n const nextProps: AdaptivityProps = {\n viewWidth,\n viewHeight,\n sizeX: sizeXProp,\n sizeY: sizeYProp || densityProp,\n density: densityProp || sizeYProp,\n hasPointer,\n hasHover,\n };\n\n if (process.env.NODE_ENV === 'development') {\n if (sizeXProp !== undefined) {\n warn(\n 'Свойство устарело начиная с 8.0.0 и будет удалено в **VKUI v10**. Для обратной совместимости, используйте `viewWidth={ViewWidth.MOBILE}` вместо `sizeX=\"compact\"` и `viewWidth={ViewWidth.SMALL_TABLET}` вместо `sizeX=\"
|
|
1
|
+
{"version":3,"sources":["../../../src/components/AdaptivityProvider/AdaptivityProvider.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { getSizeX, isCompactByViewHeight, isCompactByViewWidth } from '../../lib/adaptivity';\nimport { warnOnce } from '../../lib/warnOnce';\nimport type { HasChildren } from '../../types';\nimport { AdaptivityContext, type AdaptivityProps } from './AdaptivityContext';\n\nconst warn = warnOnce('AdaptivityProvider');\n\nexport interface AdaptivityProviderProps extends AdaptivityProps, HasChildren {}\n\n/**\n * @see https://vkui.io/components/adaptivity-provider\n */\nexport const AdaptivityProvider = ({\n viewWidth,\n viewHeight,\n sizeX: sizeXProp,\n sizeY: sizeYProp,\n density: densityProp,\n hasPointer,\n hasHover,\n children,\n}: AdaptivityProviderProps): React.ReactNode => {\n const adaptivity = React.useMemo(() => {\n const nextProps: AdaptivityProps = {\n viewWidth,\n viewHeight,\n sizeX: sizeXProp,\n sizeY: sizeYProp || densityProp,\n density: densityProp || sizeYProp,\n hasPointer,\n hasHover,\n };\n\n if (process.env.NODE_ENV === 'development') {\n if (sizeXProp !== undefined) {\n warn(\n 'Свойство устарело начиная с 8.0.0 и будет удалено в **VKUI v10**. Для обратной совместимости, используйте `viewWidth={ViewWidth.MOBILE}` вместо `sizeX=\"compact\"` и `viewWidth={ViewWidth.SMALL_TABLET}` вместо `sizeX=\"regular\"` (см. https://github.com/VKCOM/VKUI/issues/9015).',\n );\n }\n if (sizeYProp !== undefined) {\n warn(\n 'Свойство устарело начиная с 8.0.0 и будет удалено в **VKUI v10**. Используйте `density` (см. https://github.com/VKCOM/VKUI/issues/9015).',\n );\n }\n if (hasHover !== undefined) {\n warn(\n 'Свойство устарело начиная с 7.3.0 и будет удалено в **VKUI v9**. Используйте `hasPointer` (см. https://github.com/VKCOM/VKUI/pull/8490).',\n );\n }\n }\n\n // TODO [>=10]: #9015 удалить этот блок\n if (sizeXProp === undefined && viewWidth !== undefined) {\n nextProps.sizeX = getSizeX(viewWidth);\n }\n\n // TODO [>=10]: #9015 удалить sizeY\n if (sizeYProp === undefined && densityProp === undefined) {\n if (isCompactByViewWidth(viewWidth, hasPointer) || isCompactByViewHeight(viewHeight)) {\n nextProps.sizeY = 'compact';\n nextProps.density = 'compact';\n } else if (viewWidth !== undefined || viewHeight !== undefined) {\n nextProps.sizeY = 'regular';\n nextProps.density = 'regular';\n }\n }\n\n return nextProps;\n }, [viewWidth, viewHeight, sizeXProp, sizeYProp, densityProp, hasPointer, hasHover]);\n\n return <AdaptivityContext.Provider value={adaptivity}>{children}</AdaptivityContext.Provider>;\n};\n"],"names":["React","getSizeX","isCompactByViewHeight","isCompactByViewWidth","warnOnce","AdaptivityContext","warn","AdaptivityProvider","viewWidth","viewHeight","sizeX","sizeXProp","sizeY","sizeYProp","density","densityProp","hasPointer","hasHover","children","adaptivity","useMemo","nextProps","process","env","NODE_ENV","undefined","Provider","value"],"mappings":"AAAA;;AAEA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,QAAQ,EAAEC,qBAAqB,EAAEC,oBAAoB,QAAQ,gCAAuB;AAC7F,SAASC,QAAQ,QAAQ,wBAAqB;AAE9C,SAASC,iBAAiB,QAA8B,yBAAsB;AAE9E,MAAMC,OAAOF,SAAS;AAItB;;CAEC,GACD,OAAO,MAAMG,qBAAqB,CAAC,EACjCC,SAAS,EACTC,UAAU,EACVC,OAAOC,SAAS,EAChBC,OAAOC,SAAS,EAChBC,SAASC,WAAW,EACpBC,UAAU,EACVC,QAAQ,EACRC,QAAQ,EACgB;IACxB,MAAMC,aAAanB,MAAMoB,OAAO,CAAC;QAC/B,MAAMC,YAA6B;YACjCb;YACAC;YACAC,OAAOC;YACPC,OAAOC,aAAaE;YACpBD,SAASC,eAAeF;YACxBG;YACAC;QACF;QAEA,IAAIK,QAAQC,GAAG,CAACC,QAAQ,KAAK,eAAe;YAC1C,IAAIb,cAAcc,WAAW;gBAC3BnB,KACE;YAEJ;YACA,IAAIO,cAAcY,WAAW;gBAC3BnB,KACE;YAEJ;YACA,IAAIW,aAAaQ,WAAW;gBAC1BnB,KACE;YAEJ;QACF;QAEA,uCAAuC;QACvC,IAAIK,cAAcc,aAAajB,cAAciB,WAAW;YACtDJ,UAAUX,KAAK,GAAGT,SAASO;QAC7B;QAEA,mCAAmC;QACnC,IAAIK,cAAcY,aAAaV,gBAAgBU,WAAW;YACxD,IAAItB,qBAAqBK,WAAWQ,eAAed,sBAAsBO,aAAa;gBACpFY,UAAUT,KAAK,GAAG;gBAClBS,UAAUP,OAAO,GAAG;YACtB,OAAO,IAAIN,cAAciB,aAAahB,eAAegB,WAAW;gBAC9DJ,UAAUT,KAAK,GAAG;gBAClBS,UAAUP,OAAO,GAAG;YACtB;QACF;QAEA,OAAOO;IACT,GAAG;QAACb;QAAWC;QAAYE;QAAWE;QAAWE;QAAaC;QAAYC;KAAS;IAEnF,qBAAO,KAACZ,kBAAkBqB,QAAQ;QAACC,OAAOR;kBAAaD;;AACzD,EAAE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AppRoot.d.ts","sourceRoot":"","sources":["../../../src/components/AppRoot/AppRoot.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"AppRoot.d.ts","sourceRoot":"","sources":["../../../src/components/AppRoot/AppRoot.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAQ/B,OAAO,KAAK,EACV,aAAa,EACb,WAAW,EACX,aAAa,EACb,qBAAqB,EACrB,cAAc,EACf,MAAM,SAAS,CAAC;AAQjB,MAAM,WAAW,YAAa,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IACxE;;OAEG;IACH,IAAI,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IAC/B;;;;;OAKG;IACH,MAAM,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;IACnC;;OAEG;IACH,cAAc,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;IAC5C;;OAEG;IACH,UAAU,CAAC,EAAE,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;IAClF;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACpC;;;;;OAKG;IACH,8CAA8C,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACrE;;;OAGG;IACH,MAAM,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;IACnC;;;;;;;;;;OAUG;IACH,cAAc,CAAC,EAAE,qBAAqB,GAAG,SAAS,CAAC;IACnD;;;;;;;;OAQG;IACH,kCAAkC,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC1D;AAED;;GAEG;AACH,eAAO,MAAM,OAAO,GAAI,4NAarB,YAAY,KAAG,KAAK,CAAC,SAkEvB,CAAC"}
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
3
|
import * as React from "react";
|
|
4
4
|
import { classNames } from "@vkontakte/vkjs";
|
|
5
|
-
import { useKeyboardInputTracker } from "../../hooks/useKeyboardInputTracker.js";
|
|
6
5
|
import { useSyncHTMLWithBaseVKUIClasses } from "../../hooks/useSyncHTMLWithBaseVKUIClasses.js";
|
|
7
6
|
import { useSyncHTMLWithTokens } from "../../hooks/useSyncHTMLWithTokens.js";
|
|
8
7
|
import { AppRootContext } from "./AppRootContext.js";
|
|
@@ -17,7 +16,6 @@ const layoutClassNames = {
|
|
|
17
16
|
* @see https://vkui.io/components/app-root
|
|
18
17
|
*/ export const AppRoot = ({ children, mode = 'full', scroll = 'global', portalRoot, disablePortal = false, disableParentTransformForPositionFixedElements, safeAreaInsets: safeAreaInsetsProp, layout, userSelectMode, disableSettingVKUIClassesInRuntime, className, ...props })=>{
|
|
19
18
|
const appRootRef = React.useRef(null);
|
|
20
|
-
const isKeyboardInputActiveRef = useKeyboardInputTracker();
|
|
21
19
|
const safeAreaInsets = useSafeAreaInsetsMemo(safeAreaInsetsProp);
|
|
22
20
|
const contextValue = React.useMemo(()=>({
|
|
23
21
|
appRoot: appRootRef,
|
|
@@ -27,14 +25,10 @@ const layoutClassNames = {
|
|
|
27
25
|
mode,
|
|
28
26
|
disablePortal,
|
|
29
27
|
layout,
|
|
30
|
-
get keyboardInput () {
|
|
31
|
-
return isKeyboardInputActiveRef.current;
|
|
32
|
-
},
|
|
33
28
|
userSelectMode
|
|
34
29
|
}), [
|
|
35
30
|
portalRoot,
|
|
36
31
|
disablePortal,
|
|
37
|
-
isKeyboardInputActiveRef,
|
|
38
32
|
layout,
|
|
39
33
|
mode,
|
|
40
34
|
safeAreaInsets,
|
|
@@ -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 {
|
|
1
|
+
{"version":3,"sources":["../../../src/components/AppRoot/AppRoot.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useSyncHTMLWithBaseVKUIClasses } from '../../hooks/useSyncHTMLWithBaseVKUIClasses';\nimport { useSyncHTMLWithTokens } from '../../hooks/useSyncHTMLWithTokens';\nimport { AppRootContext } from './AppRootContext';\nimport { AppRootStyleContainer } from './AppRootStyleContainer/AppRootStyleContainer';\nimport { ElementScrollController, GlobalScrollController } from './ScrollContext';\nimport { useSafeAreaInsetsMemo } from './helpers';\nimport type {\n AppRootLayout,\n AppRootMode,\n AppRootScroll,\n AppRootUserSelectMode,\n SafeAreaInsets,\n} from './types';\nimport styles from './AppRoot.module.css';\n\nconst layoutClassNames = {\n card: styles.layoutCard,\n plain: styles.layoutPlain,\n};\n\nexport interface AppRootProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Режим встраивания.\n */\n mode?: AppRootMode | undefined;\n /**\n * - `global` (по умолчанию) — VKUI-приложение скроллится вместе со страницей.\n * - `contain` — VKUI-приложение живет в отдельной зоне и скроллится независимо внутри `AppRoot` (например, в модалке).\n *\n * Полезно при использовании `mode=\"embedded\"`.\n */\n scroll?: AppRootScroll | undefined;\n /**\n * См. Документацию [mdn web docs | env#values](https://developer.mozilla.org/en-US/docs/Web/CSS/env#values).\n */\n safeAreaInsets?: SafeAreaInsets | undefined;\n /**\n * Кастомный root-элемент портала.\n */\n portalRoot?: HTMLElement | React.RefObject<HTMLElement | null> | null | undefined;\n /**\n * Отключает рендер всплывающих компонентов в отдельном контейнере.\n */\n disablePortal?: boolean | undefined;\n /**\n * По умолчанию, mode=\"embedded\" переносит систему координат элементов с `position: fixed` на\n * свой контейнер через `transform: translate3d(0, 0, 0)`.\n *\n * Это поведение можно отключить с помощью этого параметра.\n */\n disableParentTransformForPositionFixedElements?: boolean | undefined;\n /**\n * Глобально задаёт тип оформления макета для компонентов\n * [Panel](https://vkui.io/components/panel) и [Group](https://vkui.io/components/group).\n */\n layout?: AppRootLayout | undefined;\n /**\n * Задаёт режим выбора текста (выделения текста) для всего приложения.\n * По умолчанию, если режим не задан, запрещает выбор текста в приложениях,\n * запущенных в webview (по значению свойства `isWebView` из [ConfigProvider](https://vkui.io/components/config-provider)).\n *\n * - `enabled-with-pointer` – разрешает выбор текста, если устройство ввода типа `pointer` (например, `мышь`), в остальных случаях запрещает;\n * - `disabled` – запрещает выбор текста;\n * - `enabled` – разрешает выбор текста.\n *\n * @since 6.2.0\n */\n userSelectMode?: AppRootUserSelectMode | undefined;\n /**\n * По умолчанию в режиме `mode=\"full\"` VKUI в рантайме выставляет:\n * - класс .vkui на html элемент\n * - класс .vkui__root на элемент-контейнер, в который монтируется VKUI\n * С помощью этой опции такое поведение можно отключить.\n *\n * Для корректной работы SSR рекоммендуется выставлять эти классы самостоятельно\n * и отключить это поведение.\n */\n disableSettingVKUIClassesInRuntime?: boolean | undefined;\n}\n\n/**\n * @see https://vkui.io/components/app-root\n */\nexport const AppRoot = ({\n children,\n mode = 'full',\n scroll = 'global',\n portalRoot,\n disablePortal = false,\n disableParentTransformForPositionFixedElements,\n safeAreaInsets: safeAreaInsetsProp,\n layout,\n userSelectMode,\n disableSettingVKUIClassesInRuntime,\n className,\n ...props\n}: AppRootProps): React.ReactNode => {\n const appRootRef = React.useRef<HTMLDivElement | null>(null);\n\n const safeAreaInsets = useSafeAreaInsetsMemo(safeAreaInsetsProp);\n\n const contextValue = React.useMemo(\n () => ({\n appRoot: appRootRef,\n portalRoot,\n safeAreaInsets,\n embedded: mode === 'embedded',\n mode,\n disablePortal,\n layout,\n userSelectMode,\n }),\n [portalRoot, disablePortal, layout, mode, safeAreaInsets, userSelectMode],\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 и .vkui__root--embedded на контейнере.\n * В режиме partial мы классы не выставляем.\n */\n useSyncHTMLWithBaseVKUIClasses({\n appRootRef,\n mode,\n layout,\n enable: mode !== 'partial' && !disableSettingVKUIClassesInRuntime,\n });\n\n const ScrollController = React.useMemo(\n () => (scroll === 'contain' ? ElementScrollController : GlobalScrollController),\n [scroll],\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={classNames(\n className,\n styles.host,\n layout && layoutClassNames[layout],\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","classNames","useSyncHTMLWithBaseVKUIClasses","useSyncHTMLWithTokens","AppRootContext","AppRootStyleContainer","ElementScrollController","GlobalScrollController","useSafeAreaInsetsMemo","layoutClassNames","card","plain","AppRoot","children","mode","scroll","portalRoot","disablePortal","disableParentTransformForPositionFixedElements","safeAreaInsets","safeAreaInsetsProp","layout","userSelectMode","disableSettingVKUIClassesInRuntime","className","props","appRootRef","useRef","contextValue","useMemo","appRoot","embedded","enable","ScrollController","Provider","value","elRef","getRootRef","undefined"],"mappings":"AAAA;;AAEA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,8BAA8B,QAAQ,gDAA6C;AAC5F,SAASC,qBAAqB,QAAQ,uCAAoC;AAC1E,SAASC,cAAc,QAAQ,sBAAmB;AAClD,SAASC,qBAAqB,QAAQ,mDAAgD;AACtF,SAASC,uBAAuB,EAAEC,sBAAsB,QAAQ,qBAAkB;AAClF,SAASC,qBAAqB,QAAQ,eAAY;AAUlD,MAAMC,mBAAmB;IACvBC,IAAI;IACJC,KAAK;AACP;AA8DA;;CAEC,GACD,OAAO,MAAMC,UAAU,CAAC,EACtBC,QAAQ,EACRC,OAAO,MAAM,EACbC,SAAS,QAAQ,EACjBC,UAAU,EACVC,gBAAgB,KAAK,EACrBC,8CAA8C,EAC9CC,gBAAgBC,kBAAkB,EAClCC,MAAM,EACNC,cAAc,EACdC,kCAAkC,EAClCC,SAAS,EACT,GAAGC,OACU;IACb,MAAMC,aAAa1B,MAAM2B,MAAM,CAAwB;IAEvD,MAAMR,iBAAiBX,sBAAsBY;IAE7C,MAAMQ,eAAe5B,MAAM6B,OAAO,CAChC,IAAO,CAAA;YACLC,SAASJ;YACTV;YACAG;YACAY,UAAUjB,SAAS;YACnBA;YACAG;YACAI;YACAC;QACF,CAAA,GACA;QAACN;QAAYC;QAAeI;QAAQP;QAAMK;QAAgBG;KAAe;IAG3E;;;;;;GAMC,GACDnB,sBAAsB;QAAEuB;QAAYM,QAAQlB,SAAS;IAAO;IAC5D;;;;GAIC,GACDZ,+BAA+B;QAC7BwB;QACAZ;QACAO;QACAW,QAAQlB,SAAS,aAAa,CAACS;IACjC;IAEA,MAAMU,mBAAmBjC,MAAM6B,OAAO,CACpC,IAAOd,WAAW,YAAYT,0BAA0BC,wBACxD;QAACQ;KAAO;IAGV,OAAOD,SAAS,0BACd,KAACV,eAAe8B,QAAQ;QAACC,OAAOP;kBAC9B,cAAA,KAACK;YAAiBG,OAAOV;sBAAab;;uBAGxC,KAACT,eAAe8B,QAAQ;QAACC,OAAOP;kBAC9B,cAAA,KAACvB;YACCgC,YAAYX;YACZF,WAAWvB,WACTuB,gCAEAH,UAAUZ,gBAAgB,CAACY,OAAO,EAClCP,SAAS,cAAc,CAACI,oGAEpBoB;YAEL,GAAGb,KAAK;sBAET,cAAA,KAACQ;gBAAiBG,OAAOV;0BAAab;;;;AAI9C,EAAE"}
|
|
@@ -6,7 +6,6 @@ export interface AppRootContextInterface {
|
|
|
6
6
|
safeAreaInsets?: SafeAreaInsets | undefined;
|
|
7
7
|
embedded: boolean;
|
|
8
8
|
mode: 'partial' | 'embedded' | 'full';
|
|
9
|
-
keyboardInput: boolean;
|
|
10
9
|
disablePortal: boolean;
|
|
11
10
|
layout?: 'card' | 'plain' | undefined;
|
|
12
11
|
userSelectMode?: AppRootUserSelectMode | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AppRootContext.d.ts","sourceRoot":"","sources":["../../../src/components/AppRoot/AppRootContext.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAErE,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAC7C,UAAU,CAAC,EAAE,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;IAClF,cAAc,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;IAC5C,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,SAAS,GAAG,UAAU,GAAG,MAAM,CAAC;IACtC,aAAa,EAAE,OAAO,CAAC;IACvB,
|
|
1
|
+
{"version":3,"file":"AppRootContext.d.ts","sourceRoot":"","sources":["../../../src/components/AppRoot/AppRootContext.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAErE,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAC7C,UAAU,CAAC,EAAE,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;IAClF,cAAc,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;IAC5C,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,SAAS,GAAG,UAAU,GAAG,MAAM,CAAC;IACtC,aAAa,EAAE,OAAO,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;IACtC,cAAc,CAAC,EAAE,qBAAqB,GAAG,SAAS,CAAC;CACpD;AAED;;;;GAIG;AACH,eAAO,MAAM,8BAA8B,EAAE,uBAO5C,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,OAAO,CAAC,uBAAuB,CACY,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/AppRoot/AppRootContext.ts"],"sourcesContent":["/* eslint-disable jsdoc/require-jsdoc */\n\nimport * as React from 'react';\nimport type { AppRootUserSelectMode, SafeAreaInsets } from './types';\n\nexport interface AppRootContextInterface {\n appRoot: React.RefObject<HTMLElement | null>;\n portalRoot?: HTMLElement | React.RefObject<HTMLElement | null> | null | undefined;\n safeAreaInsets?: SafeAreaInsets | undefined;\n embedded: boolean;\n mode: 'partial' | 'embedded' | 'full';\n
|
|
1
|
+
{"version":3,"sources":["../../../src/components/AppRoot/AppRootContext.ts"],"sourcesContent":["/* eslint-disable jsdoc/require-jsdoc */\n\nimport * as React from 'react';\nimport type { AppRootUserSelectMode, SafeAreaInsets } from './types';\n\nexport interface AppRootContextInterface {\n appRoot: React.RefObject<HTMLElement | null>;\n portalRoot?: HTMLElement | React.RefObject<HTMLElement | null> | null | undefined;\n safeAreaInsets?: SafeAreaInsets | undefined;\n embedded: boolean;\n mode: 'partial' | 'embedded' | 'full';\n disablePortal: boolean;\n layout?: 'card' | 'plain' | undefined;\n userSelectMode?: AppRootUserSelectMode | undefined;\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 safeAreaInsets: undefined,\n embedded: false,\n disablePortal: false,\n};\n\nexport const AppRootContext: React.Context<AppRootContextInterface> =\n React.createContext<AppRootContextInterface>(DEFAULT_APP_ROOT_CONTEXT_VALUE);\n"],"names":["React","DEFAULT_APP_ROOT_CONTEXT_VALUE","appRoot","createRef","mode","portalRoot","safeAreaInsets","undefined","embedded","disablePortal","AppRootContext","createContext"],"mappings":"AAAA,sCAAsC,GAEtC,YAAYA,WAAW,QAAQ;AAc/B;;;;CAIC,GACD,OAAO,MAAMC,iCAA0D;IACrEC,SAASF,MAAMG,SAAS;IACxBC,MAAM;IACNC,YAAY;IACZC,gBAAgBC;IAChBC,UAAU;IACVC,eAAe;AACjB,EAAE;AAEF,OAAO,MAAMC,iBACXV,MAAMW,aAAa,CAA0BV,gCAAgC"}
|
|
@@ -34,7 +34,7 @@ export interface CalendarProps extends Omit<HTMLAttributesWithRootRef<HTMLDivEle
|
|
|
34
34
|
/**
|
|
35
35
|
* `aria-label` для изменения дня.
|
|
36
36
|
*
|
|
37
|
-
* @deprecated Будет
|
|
37
|
+
* @deprecated Будет удалено в **VKUI v9**.
|
|
38
38
|
* Использовалось для задания aria-label для контейнера дней в календаре.
|
|
39
39
|
* Теперь этот контейнер является таблицей (с помощью role="grid") и
|
|
40
40
|
* в aria-label рендерится текущий открытый в календаре месяц и год.
|
|
@@ -54,7 +54,8 @@ const warn = warnOnce('Calendar');
|
|
|
54
54
|
setViewDate(timeZonedValue);
|
|
55
55
|
}
|
|
56
56
|
}, [
|
|
57
|
-
timeZonedValue
|
|
57
|
+
timeZonedValue,
|
|
58
|
+
setViewDate
|
|
58
59
|
]);
|
|
59
60
|
if (process.env.NODE_ENV === 'development' && !disablePickers && size === 's') {
|
|
60
61
|
warn("Нельзя включить селекты выбора месяца/года, если размер календаря 's'", 'error');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/Calendar/Calendar.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { classNames, isSameDate } from '@vkontakte/vkjs';\nimport { useCalendar } from '../../hooks/useCalendar';\nimport { useCustomEnsuredControl } from '../../hooks/useEnsuredControl';\nimport { Keys, pressedKey } from '../../lib/accessibility';\nimport { clamp, isFirstDay, isLastDay, navigateDate, NAVIGATION_KEYS } from '../../lib/calendar';\nimport {\n convertDateFromTimeZone,\n convertDateToTimeZone,\n createDateInTimeZone,\n isSameMonth,\n startOfMonth,\n} from '../../lib/date';\nimport { isHTMLElement } from '../../lib/dom';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport { warnOnce } from '../../lib/warnOnce';\nimport type { HTMLAttributesWithRootRef } from '../../types';\nimport {\n CalendarDays,\n type CalendarDaysProps,\n type CalendarDaysTestsProps,\n} from '../CalendarDays/CalendarDays';\nimport {\n CalendarHeader,\n type CalendarHeaderProps,\n type CalendarHeaderTestsProps,\n} from '../CalendarHeader/CalendarHeader';\nimport {\n type CalendarDoneButtonProps,\n CalendarTime,\n type CalendarTimeProps,\n type CalendarTimeTestsProps,\n} from '../CalendarTime/CalendarTime';\nimport { RootComponent } from '../RootComponent/RootComponent';\nimport styles from './Calendar.module.css';\n\nexport type CalendarTestsProps = CalendarDaysTestsProps &\n CalendarHeaderTestsProps &\n CalendarTimeTestsProps;\n\nexport interface CalendarProps\n extends Omit<HTMLAttributesWithRootRef<HTMLDivElement>, 'onChange' | 'defaultValue'>,\n Pick<CalendarTimeProps, 'changeHoursLabel' | 'changeMinutesLabel'>,\n Pick<\n CalendarHeaderProps,\n | 'prevMonthLabel'\n | 'nextMonthLabel'\n | 'changeMonthLabel'\n | 'changeYearLabel'\n | 'onNextMonth'\n | 'onPrevMonth'\n | 'prevMonthIcon'\n | 'nextMonthIcon'\n | 'prevMonthProps'\n | 'nextMonthProps'\n >,\n Pick<CalendarDaysProps, 'dayProps' | 'listenDayChangesForUpdate' | 'renderDayContent'>,\n CalendarDoneButtonProps,\n CalendarTestsProps {\n /**\n * Текущая выбранная дата.\n */\n value?: Date | null | undefined;\n /**\n * Начальная дата при монтировании.\n */\n defaultValue?: Date | null | undefined;\n /**\n * Запрещает выбор даты в прошлом.\n * Применяется, если не заданы `shouldDisableDate` и `disableFuture`.\n */\n disablePast?: boolean | undefined;\n /**\n * Запрещает выбор даты в будущем.\n * Применяется, если не задано `shouldDisableDate`.\n */\n disableFuture?: boolean | undefined;\n /**\n * Включает выбор времени.\n */\n enableTime?: boolean | undefined;\n /**\n * Отключает селекторы выбора месяца/года.\n */\n disablePickers?: boolean | undefined;\n /**\n * `aria-label` для изменения дня.\n *\n * @deprecated Будет удалeно в **VKUI v9**.\n * Использовалось для задания aria-label для контейнера дней в календаре.\n * Теперь этот контейнер является таблицей (с помощью role=\"grid\") и\n * в aria-label рендерится текущий открытый в календаре месяц и год.\n */\n changeDayLabel?: string | undefined; // TODO [>=9]: удалить неиспользуемое свойство\n /**\n * День недели, с которого начинается неделя.\n */\n weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | undefined;\n /**\n * Показывать дни соседних месяцев.\n */\n showNeighboringMonth?: boolean | undefined;\n /**\n * Размер календаря.\n */\n size?: 's' | 'm' | undefined;\n /**\n * Обработчик изменения выбранной даты.\n */\n onChange?: ((value: Date) => void) | undefined;\n /**\n * Функция для проверки запрета выбора даты.\n */\n shouldDisableDate?: ((value: Date) => boolean) | undefined;\n /**\n * Дата отображаемого месяца.\n * При использовании обновление даты должно происходить вне компонента.\n */\n viewDate?: Date | undefined;\n /**\n * Обработчик изменения даты в шапке календаря.\n */\n onHeaderChange?: ((value: Date) => void) | undefined;\n /**\n * Минимальные дата и время, которые можно выбрать.\n * Применяется, если не заданы `shouldDisableDate` и `disablePast`/`disableFuture`.\n */\n minDateTime?: Date | undefined;\n /**\n * Максимальные дата и время, которые можно выбрать.\n * Применяется, если не заданы `shouldDisableDate` и `disablePast`/`disableFuture`.\n */\n maxDateTime?: Date | undefined;\n /**\n * Часовой пояс для отображения даты.\n */\n timezone?: string | undefined;\n}\n\nconst warn = warnOnce('Calendar');\n\n/**\n * @see https://vkui.io/components/calendar\n */\nexport const Calendar = ({\n getRootRef,\n 'value': valueProp,\n defaultValue,\n onChange,\n disablePast,\n disableFuture,\n shouldDisableDate,\n onDoneButtonClick,\n enableTime = false,\n doneButtonText,\n doneButtonDisabled,\n doneButtonShow,\n DoneButton,\n weekStartsOn = 1,\n disablePickers,\n 'aria-label': ariaLabel = 'Календарь',\n changeHoursLabel = 'Изменить час',\n changeMinutesLabel = 'Изменить минуту',\n prevMonthLabel = 'Предыдущий месяц',\n nextMonthLabel = 'Следующий месяц',\n changeMonthLabel = 'Изменить месяц',\n changeYearLabel = 'Изменить год',\n showNeighboringMonth,\n size = 'm',\n 'viewDate': externalViewDate,\n onHeaderChange,\n onNextMonth,\n onPrevMonth,\n prevMonthIcon,\n nextMonthIcon,\n prevMonthProps,\n nextMonthProps,\n dayProps,\n listenDayChangesForUpdate,\n renderDayContent,\n minDateTime,\n maxDateTime,\n timezone,\n minutesTestId,\n hoursTestId,\n doneButtonTestId,\n prevMonthButtonTestId,\n nextMonthButtonTestId,\n monthDropdownTestId,\n yearDropdownTestId,\n dayTestId,\n ...props\n}: CalendarProps): React.ReactNode => {\n const _onChange = React.useCallback(\n (date: Date | null) => {\n const newDate = convertDateFromTimeZone(date, timezone);\n if (newDate && onChange) {\n onChange(newDate);\n }\n },\n [onChange, timezone],\n );\n\n const [value, updateValue] = useCustomEnsuredControl<Date | null>({\n value: valueProp,\n defaultValue: defaultValue as Date | null,\n onChange: _onChange,\n });\n\n const timeZonedValue: Date | null | undefined = React.useMemo(\n () => convertDateToTimeZone(value, timezone),\n [timezone, value],\n );\n\n const {\n viewDate,\n setViewDate,\n setPrevMonth,\n setNextMonth,\n focusedDay,\n setFocusedDay,\n isDayFocused,\n isDayDisabled,\n isMonthDisabled,\n isYearDisabled,\n } = useCalendar({\n value: timeZonedValue,\n disableFuture,\n disablePast,\n shouldDisableDate,\n onHeaderChange,\n onNextMonth,\n onPrevMonth,\n minDateTime,\n maxDateTime,\n });\n // соотвествует дню, на котором можно сфокусироваться с помощью Tab\n const [focusableDay, setFocusableDay] = React.useState<Date>();\n\n useIsomorphicLayoutEffect(() => {\n if (timeZonedValue) {\n setViewDate(timeZonedValue);\n }\n }, [timeZonedValue]);\n\n if (process.env.NODE_ENV === 'development' && !disablePickers && size === 's') {\n warn(\"Нельзя включить селекты выбора месяца/года, если размер календаря 's'\", 'error');\n }\n\n if (process.env.NODE_ENV === 'development' && enableTime && size === 's') {\n warn(\"Нельзя включить выбор времени, если размер календаря 's'\", 'error');\n }\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent) => {\n const key = pressedKey(event);\n if (key && NAVIGATION_KEYS.includes(key)) {\n event.preventDefault();\n\n const newFocusedDay = navigateDate(focusedDay ?? timeZonedValue, key);\n\n if (newFocusedDay && !isSameMonth(newFocusedDay, viewDate)) {\n setViewDate(newFocusedDay);\n }\n setFocusedDay(newFocusedDay);\n setFocusableDay(newFocusedDay);\n\n return;\n }\n\n if (key === Keys.TAB) {\n setFocusedDay(undefined);\n setFocusableDay(focusedDay);\n\n return;\n }\n\n if ((key === Keys.ENTER || key === Keys.SPACE) && isHTMLElement(event.target)) {\n event.preventDefault();\n event.target.click?.();\n }\n },\n [focusedDay, setFocusedDay, setFocusableDay, setViewDate, timeZonedValue, viewDate],\n );\n\n const onDayChange = React.useCallback(\n (date: Date) => {\n let actualDate = createDateInTimeZone(timeZonedValue ?? date, timezone, {\n year: date.getFullYear(),\n month: date.getMonth(),\n date: date.getDate(),\n });\n\n if (minDateTime || maxDateTime) {\n actualDate = clamp(actualDate, { min: minDateTime, max: maxDateTime });\n }\n updateValue(actualDate);\n },\n [timezone, timeZonedValue, updateValue, maxDateTime, minDateTime],\n );\n\n const onDayFocus = React.useCallback(\n (date: Date) => {\n if (focusedDay && isSameDate(focusedDay, date)) {\n return;\n }\n\n setFocusedDay(date);\n if (!focusableDay || !isSameDate(date, focusableDay)) {\n setFocusableDay(date);\n }\n },\n [focusableDay, focusedDay, setFocusedDay],\n );\n\n // activeDay это день в календаре соответствующий значению в инпуте\n const isDayActive = React.useCallback(\n (day: Date) => Boolean(timeZonedValue && isSameDate(day, timeZonedValue)),\n [timeZonedValue],\n );\n\n const timeZoneSetHours = React.useCallback(\n (date: Date, hours: number) => createDateInTimeZone(date, timezone, { hours }),\n [timezone],\n );\n\n const timeZoneSetMinutes = React.useCallback(\n (date: Date, minutes: number) => createDateInTimeZone(date, timezone, { minutes }),\n [timezone],\n );\n\n const isFocusableDayInViewDateMonth = focusableDay && isSameMonth(focusableDay, viewDate);\n const isInputValueDateInViewDateMonth = timeZonedValue && isSameMonth(timeZonedValue, viewDate);\n /**\n * Функция позволяет проверить является ли день в календаре днём на который\n * можно попасть с помощью Tab.\n * Единственный день в таблице календаря у которого есть tabIndex=\"0\"\n * Чтобы на него можно было попасть из заголовка календаря.\n */\n const isDayFocusable = React.useCallback(\n (day: Date) => {\n // если focusableDay день находится среди дней открытого сейчас месяца, то такой день получит tabIndex=\"0\",\n if (isFocusableDayInViewDateMonth) {\n return isSameDate(focusableDay, day);\n }\n\n // при открытии календаря focusableDay не определён,\n // поэтому tabIndex=\"0\" будет у дня, соответствующего дню в инпуте\n if (isInputValueDateInViewDateMonth) {\n return isDayActive(day);\n }\n\n // при переключении месяца любая навигация с помощью Tab начинается\n // с первого дня месяца.\n return isSameDate(startOfMonth(viewDate), day);\n },\n [\n focusableDay,\n viewDate,\n isDayActive,\n isFocusableDayInViewDateMonth,\n isInputValueDateInViewDateMonth,\n ],\n );\n\n return (\n <RootComponent\n aria-label={ariaLabel}\n {...props}\n baseClassName={classNames(styles.host, size === 's' && styles.sizeS)}\n getRootRef={getRootRef}\n >\n <CalendarHeader\n viewDate={externalViewDate || viewDate}\n onChange={setViewDate}\n onNextMonth={setNextMonth}\n onPrevMonth={setPrevMonth}\n disablePickers={disablePickers || size === 's'}\n className={styles.header}\n prevMonthLabel={prevMonthLabel}\n nextMonthLabel={nextMonthLabel}\n changeMonthLabel={changeMonthLabel}\n changeYearLabel={changeYearLabel}\n prevMonthIcon={prevMonthIcon}\n nextMonthIcon={nextMonthIcon}\n prevMonthProps={prevMonthProps}\n nextMonthProps={nextMonthProps}\n isMonthDisabled={isMonthDisabled}\n isYearDisabled={isYearDisabled}\n nextMonthButtonTestId={nextMonthButtonTestId}\n prevMonthButtonTestId={prevMonthButtonTestId}\n monthDropdownTestId={monthDropdownTestId}\n yearDropdownTestId={yearDropdownTestId}\n />\n <CalendarDays\n viewDate={externalViewDate || viewDate}\n value={timeZonedValue}\n weekStartsOn={weekStartsOn}\n onKeyDown={handleKeyDown}\n onDayChange={onDayChange}\n isDayActive={isDayActive}\n onDayFocus={onDayFocus}\n isDayFocused={isDayFocused}\n isDayFocusable={isDayFocusable}\n isDaySelectionStart={isFirstDay}\n isDaySelectionEnd={isLastDay}\n isDayDisabled={isDayDisabled}\n showNeighboringMonth={showNeighboringMonth}\n size={size}\n dayProps={dayProps}\n listenDayChangesForUpdate={listenDayChangesForUpdate}\n renderDayContent={renderDayContent}\n dayTestId={dayTestId}\n />\n {enableTime && timeZonedValue && size !== 's' && (\n <div className={styles.time}>\n <CalendarTime\n value={timeZonedValue}\n onChange={updateValue}\n setHours={timeZoneSetHours}\n setMinutes={timeZoneSetMinutes}\n onDoneButtonClick={onDoneButtonClick}\n doneButtonText={doneButtonText}\n doneButtonDisabled={doneButtonDisabled}\n doneButtonShow={doneButtonShow}\n DoneButton={DoneButton}\n changeHoursLabel={changeHoursLabel}\n changeMinutesLabel={changeMinutesLabel}\n isDayDisabled={minDateTime || maxDateTime ? isDayDisabled : undefined}\n minutesTestId={minutesTestId}\n hoursTestId={hoursTestId}\n doneButtonTestId={doneButtonTestId}\n />\n </div>\n )}\n </RootComponent>\n );\n};\n"],"names":["React","classNames","isSameDate","useCalendar","useCustomEnsuredControl","Keys","pressedKey","clamp","isFirstDay","isLastDay","navigateDate","NAVIGATION_KEYS","convertDateFromTimeZone","convertDateToTimeZone","createDateInTimeZone","isSameMonth","startOfMonth","isHTMLElement","useIsomorphicLayoutEffect","warnOnce","CalendarDays","CalendarHeader","CalendarTime","RootComponent","warn","Calendar","getRootRef","valueProp","defaultValue","onChange","disablePast","disableFuture","shouldDisableDate","onDoneButtonClick","enableTime","doneButtonText","doneButtonDisabled","doneButtonShow","DoneButton","weekStartsOn","disablePickers","ariaLabel","changeHoursLabel","changeMinutesLabel","prevMonthLabel","nextMonthLabel","changeMonthLabel","changeYearLabel","showNeighboringMonth","size","externalViewDate","onHeaderChange","onNextMonth","onPrevMonth","prevMonthIcon","nextMonthIcon","prevMonthProps","nextMonthProps","dayProps","listenDayChangesForUpdate","renderDayContent","minDateTime","maxDateTime","timezone","minutesTestId","hoursTestId","doneButtonTestId","prevMonthButtonTestId","nextMonthButtonTestId","monthDropdownTestId","yearDropdownTestId","dayTestId","props","_onChange","useCallback","date","newDate","value","updateValue","timeZonedValue","useMemo","viewDate","setViewDate","setPrevMonth","setNextMonth","focusedDay","setFocusedDay","isDayFocused","isDayDisabled","isMonthDisabled","isYearDisabled","focusableDay","setFocusableDay","useState","process","env","NODE_ENV","handleKeyDown","event","key","includes","preventDefault","newFocusedDay","TAB","undefined","ENTER","SPACE","target","click","onDayChange","actualDate","year","getFullYear","month","getMonth","getDate","min","max","onDayFocus","isDayActive","day","Boolean","timeZoneSetHours","hours","timeZoneSetMinutes","minutes","isFocusableDayInViewDateMonth","isInputValueDateInViewDateMonth","isDayFocusable","aria-label","baseClassName","className","onKeyDown","isDaySelectionStart","isDaySelectionEnd","div","setHours","setMinutes"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/Calendar/Calendar.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { classNames, isSameDate } from '@vkontakte/vkjs';\nimport { useCalendar } from '../../hooks/useCalendar';\nimport { useCustomEnsuredControl } from '../../hooks/useEnsuredControl';\nimport { Keys, pressedKey } from '../../lib/accessibility';\nimport { clamp, isFirstDay, isLastDay, navigateDate, NAVIGATION_KEYS } from '../../lib/calendar';\nimport {\n convertDateFromTimeZone,\n convertDateToTimeZone,\n createDateInTimeZone,\n isSameMonth,\n startOfMonth,\n} from '../../lib/date';\nimport { isHTMLElement } from '../../lib/dom';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport { warnOnce } from '../../lib/warnOnce';\nimport type { HTMLAttributesWithRootRef } from '../../types';\nimport {\n CalendarDays,\n type CalendarDaysProps,\n type CalendarDaysTestsProps,\n} from '../CalendarDays/CalendarDays';\nimport {\n CalendarHeader,\n type CalendarHeaderProps,\n type CalendarHeaderTestsProps,\n} from '../CalendarHeader/CalendarHeader';\nimport {\n type CalendarDoneButtonProps,\n CalendarTime,\n type CalendarTimeProps,\n type CalendarTimeTestsProps,\n} from '../CalendarTime/CalendarTime';\nimport { RootComponent } from '../RootComponent/RootComponent';\nimport styles from './Calendar.module.css';\n\nexport type CalendarTestsProps = CalendarDaysTestsProps &\n CalendarHeaderTestsProps &\n CalendarTimeTestsProps;\n\nexport interface CalendarProps\n extends Omit<HTMLAttributesWithRootRef<HTMLDivElement>, 'onChange' | 'defaultValue'>,\n Pick<CalendarTimeProps, 'changeHoursLabel' | 'changeMinutesLabel'>,\n Pick<\n CalendarHeaderProps,\n | 'prevMonthLabel'\n | 'nextMonthLabel'\n | 'changeMonthLabel'\n | 'changeYearLabel'\n | 'onNextMonth'\n | 'onPrevMonth'\n | 'prevMonthIcon'\n | 'nextMonthIcon'\n | 'prevMonthProps'\n | 'nextMonthProps'\n >,\n Pick<CalendarDaysProps, 'dayProps' | 'listenDayChangesForUpdate' | 'renderDayContent'>,\n CalendarDoneButtonProps,\n CalendarTestsProps {\n /**\n * Текущая выбранная дата.\n */\n value?: Date | null | undefined;\n /**\n * Начальная дата при монтировании.\n */\n defaultValue?: Date | null | undefined;\n /**\n * Запрещает выбор даты в прошлом.\n * Применяется, если не заданы `shouldDisableDate` и `disableFuture`.\n */\n disablePast?: boolean | undefined;\n /**\n * Запрещает выбор даты в будущем.\n * Применяется, если не задано `shouldDisableDate`.\n */\n disableFuture?: boolean | undefined;\n /**\n * Включает выбор времени.\n */\n enableTime?: boolean | undefined;\n /**\n * Отключает селекторы выбора месяца/года.\n */\n disablePickers?: boolean | undefined;\n /**\n * `aria-label` для изменения дня.\n *\n * @deprecated Будет удалено в **VKUI v9**.\n * Использовалось для задания aria-label для контейнера дней в календаре.\n * Теперь этот контейнер является таблицей (с помощью role=\"grid\") и\n * в aria-label рендерится текущий открытый в календаре месяц и год.\n */\n changeDayLabel?: string | undefined; // TODO [>=9]: удалить неиспользуемое свойство\n /**\n * День недели, с которого начинается неделя.\n */\n weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | undefined;\n /**\n * Показывать дни соседних месяцев.\n */\n showNeighboringMonth?: boolean | undefined;\n /**\n * Размер календаря.\n */\n size?: 's' | 'm' | undefined;\n /**\n * Обработчик изменения выбранной даты.\n */\n onChange?: ((value: Date) => void) | undefined;\n /**\n * Функция для проверки запрета выбора даты.\n */\n shouldDisableDate?: ((value: Date) => boolean) | undefined;\n /**\n * Дата отображаемого месяца.\n * При использовании обновление даты должно происходить вне компонента.\n */\n viewDate?: Date | undefined;\n /**\n * Обработчик изменения даты в шапке календаря.\n */\n onHeaderChange?: ((value: Date) => void) | undefined;\n /**\n * Минимальные дата и время, которые можно выбрать.\n * Применяется, если не заданы `shouldDisableDate` и `disablePast`/`disableFuture`.\n */\n minDateTime?: Date | undefined;\n /**\n * Максимальные дата и время, которые можно выбрать.\n * Применяется, если не заданы `shouldDisableDate` и `disablePast`/`disableFuture`.\n */\n maxDateTime?: Date | undefined;\n /**\n * Часовой пояс для отображения даты.\n */\n timezone?: string | undefined;\n}\n\nconst warn = warnOnce('Calendar');\n\n/**\n * @see https://vkui.io/components/calendar\n */\nexport const Calendar = ({\n getRootRef,\n 'value': valueProp,\n defaultValue,\n onChange,\n disablePast,\n disableFuture,\n shouldDisableDate,\n onDoneButtonClick,\n enableTime = false,\n doneButtonText,\n doneButtonDisabled,\n doneButtonShow,\n DoneButton,\n weekStartsOn = 1,\n disablePickers,\n 'aria-label': ariaLabel = 'Календарь',\n changeHoursLabel = 'Изменить час',\n changeMinutesLabel = 'Изменить минуту',\n prevMonthLabel = 'Предыдущий месяц',\n nextMonthLabel = 'Следующий месяц',\n changeMonthLabel = 'Изменить месяц',\n changeYearLabel = 'Изменить год',\n showNeighboringMonth,\n size = 'm',\n 'viewDate': externalViewDate,\n onHeaderChange,\n onNextMonth,\n onPrevMonth,\n prevMonthIcon,\n nextMonthIcon,\n prevMonthProps,\n nextMonthProps,\n dayProps,\n listenDayChangesForUpdate,\n renderDayContent,\n minDateTime,\n maxDateTime,\n timezone,\n minutesTestId,\n hoursTestId,\n doneButtonTestId,\n prevMonthButtonTestId,\n nextMonthButtonTestId,\n monthDropdownTestId,\n yearDropdownTestId,\n dayTestId,\n ...props\n}: CalendarProps): React.ReactNode => {\n const _onChange = React.useCallback(\n (date: Date | null) => {\n const newDate = convertDateFromTimeZone(date, timezone);\n if (newDate && onChange) {\n onChange(newDate);\n }\n },\n [onChange, timezone],\n );\n\n const [value, updateValue] = useCustomEnsuredControl<Date | null>({\n value: valueProp,\n defaultValue: defaultValue as Date | null,\n onChange: _onChange,\n });\n\n const timeZonedValue: Date | null | undefined = React.useMemo(\n () => convertDateToTimeZone(value, timezone),\n [timezone, value],\n );\n\n const {\n viewDate,\n setViewDate,\n setPrevMonth,\n setNextMonth,\n focusedDay,\n setFocusedDay,\n isDayFocused,\n isDayDisabled,\n isMonthDisabled,\n isYearDisabled,\n } = useCalendar({\n value: timeZonedValue,\n disableFuture,\n disablePast,\n shouldDisableDate,\n onHeaderChange,\n onNextMonth,\n onPrevMonth,\n minDateTime,\n maxDateTime,\n });\n // соотвествует дню, на котором можно сфокусироваться с помощью Tab\n const [focusableDay, setFocusableDay] = React.useState<Date>();\n\n useIsomorphicLayoutEffect(() => {\n if (timeZonedValue) {\n setViewDate(timeZonedValue);\n }\n }, [timeZonedValue, setViewDate]);\n\n if (process.env.NODE_ENV === 'development' && !disablePickers && size === 's') {\n warn(\"Нельзя включить селекты выбора месяца/года, если размер календаря 's'\", 'error');\n }\n\n if (process.env.NODE_ENV === 'development' && enableTime && size === 's') {\n warn(\"Нельзя включить выбор времени, если размер календаря 's'\", 'error');\n }\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent) => {\n const key = pressedKey(event);\n if (key && NAVIGATION_KEYS.includes(key)) {\n event.preventDefault();\n\n const newFocusedDay = navigateDate(focusedDay ?? timeZonedValue, key);\n\n if (newFocusedDay && !isSameMonth(newFocusedDay, viewDate)) {\n setViewDate(newFocusedDay);\n }\n setFocusedDay(newFocusedDay);\n setFocusableDay(newFocusedDay);\n\n return;\n }\n\n if (key === Keys.TAB) {\n setFocusedDay(undefined);\n setFocusableDay(focusedDay);\n\n return;\n }\n\n if ((key === Keys.ENTER || key === Keys.SPACE) && isHTMLElement(event.target)) {\n event.preventDefault();\n event.target.click?.();\n }\n },\n [focusedDay, setFocusedDay, setFocusableDay, setViewDate, timeZonedValue, viewDate],\n );\n\n const onDayChange = React.useCallback(\n (date: Date) => {\n let actualDate = createDateInTimeZone(timeZonedValue ?? date, timezone, {\n year: date.getFullYear(),\n month: date.getMonth(),\n date: date.getDate(),\n });\n\n if (minDateTime || maxDateTime) {\n actualDate = clamp(actualDate, { min: minDateTime, max: maxDateTime });\n }\n updateValue(actualDate);\n },\n [timezone, timeZonedValue, updateValue, maxDateTime, minDateTime],\n );\n\n const onDayFocus = React.useCallback(\n (date: Date) => {\n if (focusedDay && isSameDate(focusedDay, date)) {\n return;\n }\n\n setFocusedDay(date);\n if (!focusableDay || !isSameDate(date, focusableDay)) {\n setFocusableDay(date);\n }\n },\n [focusableDay, focusedDay, setFocusedDay],\n );\n\n // activeDay это день в календаре соответствующий значению в инпуте\n const isDayActive = React.useCallback(\n (day: Date) => Boolean(timeZonedValue && isSameDate(day, timeZonedValue)),\n [timeZonedValue],\n );\n\n const timeZoneSetHours = React.useCallback(\n (date: Date, hours: number) => createDateInTimeZone(date, timezone, { hours }),\n [timezone],\n );\n\n const timeZoneSetMinutes = React.useCallback(\n (date: Date, minutes: number) => createDateInTimeZone(date, timezone, { minutes }),\n [timezone],\n );\n\n const isFocusableDayInViewDateMonth = focusableDay && isSameMonth(focusableDay, viewDate);\n const isInputValueDateInViewDateMonth = timeZonedValue && isSameMonth(timeZonedValue, viewDate);\n /**\n * Функция позволяет проверить является ли день в календаре днём на который\n * можно попасть с помощью Tab.\n * Единственный день в таблице календаря у которого есть tabIndex=\"0\"\n * Чтобы на него можно было попасть из заголовка календаря.\n */\n const isDayFocusable = React.useCallback(\n (day: Date) => {\n // если focusableDay день находится среди дней открытого сейчас месяца, то такой день получит tabIndex=\"0\",\n if (isFocusableDayInViewDateMonth) {\n return isSameDate(focusableDay, day);\n }\n\n // при открытии календаря focusableDay не определён,\n // поэтому tabIndex=\"0\" будет у дня, соответствующего дню в инпуте\n if (isInputValueDateInViewDateMonth) {\n return isDayActive(day);\n }\n\n // при переключении месяца любая навигация с помощью Tab начинается\n // с первого дня месяца.\n return isSameDate(startOfMonth(viewDate), day);\n },\n [\n focusableDay,\n viewDate,\n isDayActive,\n isFocusableDayInViewDateMonth,\n isInputValueDateInViewDateMonth,\n ],\n );\n\n return (\n <RootComponent\n aria-label={ariaLabel}\n {...props}\n baseClassName={classNames(styles.host, size === 's' && styles.sizeS)}\n getRootRef={getRootRef}\n >\n <CalendarHeader\n viewDate={externalViewDate || viewDate}\n onChange={setViewDate}\n onNextMonth={setNextMonth}\n onPrevMonth={setPrevMonth}\n disablePickers={disablePickers || size === 's'}\n className={styles.header}\n prevMonthLabel={prevMonthLabel}\n nextMonthLabel={nextMonthLabel}\n changeMonthLabel={changeMonthLabel}\n changeYearLabel={changeYearLabel}\n prevMonthIcon={prevMonthIcon}\n nextMonthIcon={nextMonthIcon}\n prevMonthProps={prevMonthProps}\n nextMonthProps={nextMonthProps}\n isMonthDisabled={isMonthDisabled}\n isYearDisabled={isYearDisabled}\n nextMonthButtonTestId={nextMonthButtonTestId}\n prevMonthButtonTestId={prevMonthButtonTestId}\n monthDropdownTestId={monthDropdownTestId}\n yearDropdownTestId={yearDropdownTestId}\n />\n <CalendarDays\n viewDate={externalViewDate || viewDate}\n value={timeZonedValue}\n weekStartsOn={weekStartsOn}\n onKeyDown={handleKeyDown}\n onDayChange={onDayChange}\n isDayActive={isDayActive}\n onDayFocus={onDayFocus}\n isDayFocused={isDayFocused}\n isDayFocusable={isDayFocusable}\n isDaySelectionStart={isFirstDay}\n isDaySelectionEnd={isLastDay}\n isDayDisabled={isDayDisabled}\n showNeighboringMonth={showNeighboringMonth}\n size={size}\n dayProps={dayProps}\n listenDayChangesForUpdate={listenDayChangesForUpdate}\n renderDayContent={renderDayContent}\n dayTestId={dayTestId}\n />\n {enableTime && timeZonedValue && size !== 's' && (\n <div className={styles.time}>\n <CalendarTime\n value={timeZonedValue}\n onChange={updateValue}\n setHours={timeZoneSetHours}\n setMinutes={timeZoneSetMinutes}\n onDoneButtonClick={onDoneButtonClick}\n doneButtonText={doneButtonText}\n doneButtonDisabled={doneButtonDisabled}\n doneButtonShow={doneButtonShow}\n DoneButton={DoneButton}\n changeHoursLabel={changeHoursLabel}\n changeMinutesLabel={changeMinutesLabel}\n isDayDisabled={minDateTime || maxDateTime ? isDayDisabled : undefined}\n minutesTestId={minutesTestId}\n hoursTestId={hoursTestId}\n doneButtonTestId={doneButtonTestId}\n />\n </div>\n )}\n </RootComponent>\n );\n};\n"],"names":["React","classNames","isSameDate","useCalendar","useCustomEnsuredControl","Keys","pressedKey","clamp","isFirstDay","isLastDay","navigateDate","NAVIGATION_KEYS","convertDateFromTimeZone","convertDateToTimeZone","createDateInTimeZone","isSameMonth","startOfMonth","isHTMLElement","useIsomorphicLayoutEffect","warnOnce","CalendarDays","CalendarHeader","CalendarTime","RootComponent","warn","Calendar","getRootRef","valueProp","defaultValue","onChange","disablePast","disableFuture","shouldDisableDate","onDoneButtonClick","enableTime","doneButtonText","doneButtonDisabled","doneButtonShow","DoneButton","weekStartsOn","disablePickers","ariaLabel","changeHoursLabel","changeMinutesLabel","prevMonthLabel","nextMonthLabel","changeMonthLabel","changeYearLabel","showNeighboringMonth","size","externalViewDate","onHeaderChange","onNextMonth","onPrevMonth","prevMonthIcon","nextMonthIcon","prevMonthProps","nextMonthProps","dayProps","listenDayChangesForUpdate","renderDayContent","minDateTime","maxDateTime","timezone","minutesTestId","hoursTestId","doneButtonTestId","prevMonthButtonTestId","nextMonthButtonTestId","monthDropdownTestId","yearDropdownTestId","dayTestId","props","_onChange","useCallback","date","newDate","value","updateValue","timeZonedValue","useMemo","viewDate","setViewDate","setPrevMonth","setNextMonth","focusedDay","setFocusedDay","isDayFocused","isDayDisabled","isMonthDisabled","isYearDisabled","focusableDay","setFocusableDay","useState","process","env","NODE_ENV","handleKeyDown","event","key","includes","preventDefault","newFocusedDay","TAB","undefined","ENTER","SPACE","target","click","onDayChange","actualDate","year","getFullYear","month","getMonth","getDate","min","max","onDayFocus","isDayActive","day","Boolean","timeZoneSetHours","hours","timeZoneSetMinutes","minutes","isFocusableDayInViewDateMonth","isInputValueDateInViewDateMonth","isDayFocusable","aria-label","baseClassName","className","onKeyDown","isDaySelectionStart","isDaySelectionEnd","div","setHours","setMinutes"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CalendarDay.d.ts","sourceRoot":"","sources":["../../../src/components/CalendarDay/CalendarDay.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"CalendarDay.d.ts","sourceRoot":"","sources":["../../../src/components/CalendarDay/CalendarDay.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAqB/B,MAAM,MAAM,uBAAuB,GAAG,IAAI,CACxC,KAAK,CAAC,iBAAiB,CAAC,WAAW,CAAC,EACpC,UAAU,GAAG,MAAM,GAAG,UAAU,GAAG,UAAU,GAAG,SAAS,CAC1D,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,MAAM,CAAC,GAAG,SAAS,CAAC;CACvD,CAAC;AAEF,MAAM,WAAW,gBAAiB,SAAQ,uBAAuB,EAAE,qBAAqB;IACtF;;OAEG;IACH,GAAG,EAAE,IAAI,CAAC;IACV;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC5B;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC/B;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACrC;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACnC;;OAEG;IACH,oBAAoB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC3C;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACzC;;OAEG;IACH,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B;;OAEG;IACH,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC/B;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B;;OAEG;IACH,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAChC;;OAEG;IACH,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,SAAS,CAAC;IAC7B;;OAEG;IACH,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK,IAAI,CAAC;IAChC;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC9C;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC9C;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC9C;;OAEG;IACH,gBAAgB,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;CACjE;AAGD,eAAO,MAAM,WAAW,2TA2BnB,gBAAgB,6CAiGpB,CAAC"}
|
|
@@ -2,12 +2,13 @@
|
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import * as React from "react";
|
|
4
4
|
import { classNames } from "@vkontakte/vkjs";
|
|
5
|
+
import { useConfigDirection } from "../../hooks/useConfigDirection.js";
|
|
5
6
|
import { useFocusVisible } from "../../hooks/useFocusVisible.js";
|
|
6
7
|
import { useFocusVisibleClassName } from "../../hooks/useFocusVisibleClassName.js";
|
|
8
|
+
import { useLocale } from "../../hooks/useLocale.js";
|
|
7
9
|
import { cacheDateTimeFormat } from "../../lib/intlCache.js";
|
|
8
10
|
import { mergeCalls } from "../../lib/mergeCalls.js";
|
|
9
11
|
import { defineComponentDisplayNames } from "../../lib/react/defineComponentDisplayNames.js";
|
|
10
|
-
import { useConfigProvider } from "../ConfigProvider/ConfigProviderContext.js";
|
|
11
12
|
import { Tappable } from "../Tappable/Tappable.js";
|
|
12
13
|
import { VisuallyHidden } from "../VisuallyHidden/VisuallyHidden.js";
|
|
13
14
|
const labelDateTimeFormatOptions = {
|
|
@@ -18,7 +19,8 @@ const labelDateTimeFormatOptions = {
|
|
|
18
19
|
const labelDateTimeFormat = /*#__PURE__*/ cacheDateTimeFormat();
|
|
19
20
|
// eslint-disable-next-line react/display-name -- используется defineComponentDisplayNames
|
|
20
21
|
export const CalendarDay = /*#__PURE__*/ React.memo(({ day, today, selected, onChange, hidden, disabled, active, selectionStart, selectionEnd, focused, onEnter, onLeave, onFocus, onBlur, hinted, hintedSelectionStart, hintedSelectionEnd, sameMonth, size, children, renderDayContent, testId, role, 'aria-colindex': colIndex, ...restProps })=>{
|
|
21
|
-
const
|
|
22
|
+
const locale = useLocale();
|
|
23
|
+
const direction = useConfigDirection();
|
|
22
24
|
const ref = React.useRef(null);
|
|
23
25
|
const onClick = React.useCallback(()=>onChange(day), [
|
|
24
26
|
day,
|