@vkontakte/vkui 5.5.4 → 5.6.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/README.md +2 -2
- package/dist/cjs/components/Accordion/Accordion.js.map +1 -1
- package/dist/cjs/components/Accordion/AccordionSummary.js.map +1 -1
- package/dist/cjs/components/ActionSheet/ActionSheet.js.map +1 -1
- package/dist/cjs/components/ActionSheet/ActionSheetContext.js.map +1 -1
- package/dist/cjs/components/ActionSheet/ActionSheetDefaultIosCloseItem.js.map +1 -1
- package/dist/cjs/components/ActionSheet/ActionSheetDropdown.js.map +1 -1
- package/dist/cjs/components/ActionSheet/ActionSheetDropdownDesktop.js +4 -2
- package/dist/cjs/components/ActionSheet/ActionSheetDropdownDesktop.js.map +1 -1
- package/dist/cjs/components/ActionSheetItem/ActionSheetItem.js.map +1 -1
- package/dist/cjs/components/AdaptiveIconRenderer/AdaptiveIconRenderer.js.map +1 -1
- package/dist/cjs/components/AdaptivityProvider/AdaptivityContext.js.map +1 -1
- package/dist/cjs/components/AdaptivityProvider/AdaptivityProvider.js.map +1 -1
- package/dist/cjs/components/Alert/Alert.js.map +1 -1
- package/dist/cjs/components/AppRoot/AppRoot.js +6 -5
- package/dist/cjs/components/AppRoot/AppRoot.js.map +1 -1
- package/dist/cjs/components/AppRoot/AppRootContext.js.map +1 -1
- package/dist/cjs/components/AppRoot/AppRootPortal.js.map +1 -1
- package/dist/cjs/components/AppRoot/ScrollContext.js +5 -3
- package/dist/cjs/components/AppRoot/ScrollContext.js.map +1 -1
- package/dist/cjs/components/AppearanceProvider/AppearanceProvider.js.map +1 -1
- package/dist/cjs/components/AspectRatio/AspectRatio.js.map +1 -1
- package/dist/cjs/components/Avatar/Avatar.js.map +1 -1
- package/dist/cjs/components/Avatar/AvatarBadge/AvatarBadge.js.map +1 -1
- package/dist/cjs/components/Avatar/AvatarBadge/AvatarBadgeWithPreset.js.map +1 -1
- package/dist/cjs/components/Avatar/AvatarBadge/icons.js.map +1 -1
- package/dist/cjs/components/Avatar/helpers.js.map +1 -1
- package/dist/cjs/components/Badge/Badge.js.map +1 -1
- package/dist/cjs/components/Banner/Banner.d.ts +5 -1
- package/dist/cjs/components/Banner/Banner.js +4 -3
- package/dist/cjs/components/Banner/Banner.js.map +1 -1
- package/dist/cjs/components/BaseGallery/BaseGallery.js +15 -9
- package/dist/cjs/components/BaseGallery/BaseGallery.js.map +1 -1
- package/dist/cjs/components/BaseGallery/helpers.js.map +1 -1
- package/dist/cjs/components/Button/Button.d.ts +2 -1
- package/dist/cjs/components/Button/Button.js +5 -3
- package/dist/cjs/components/Button/Button.js.map +1 -1
- package/dist/cjs/components/ButtonGroup/ButtonGroup.js.map +1 -1
- package/dist/cjs/components/Calendar/Calendar.js +2 -1
- package/dist/cjs/components/Calendar/Calendar.js.map +1 -1
- package/dist/cjs/components/CalendarDay/CalendarDay.js +4 -2
- package/dist/cjs/components/CalendarDay/CalendarDay.js.map +1 -1
- package/dist/cjs/components/CalendarDays/CalendarDays.js +6 -5
- package/dist/cjs/components/CalendarDays/CalendarDays.js.map +1 -1
- package/dist/cjs/components/CalendarHeader/CalendarHeader.js.map +1 -1
- package/dist/cjs/components/CalendarRange/CalendarRange.js +16 -8
- package/dist/cjs/components/CalendarRange/CalendarRange.js.map +1 -1
- package/dist/cjs/components/CalendarTime/CalendarTime.js +4 -2
- package/dist/cjs/components/CalendarTime/CalendarTime.js.map +1 -1
- package/dist/cjs/components/Card/Card.js.map +1 -1
- package/dist/cjs/components/CardGrid/CardGrid.js.map +1 -1
- package/dist/cjs/components/CardScroll/CardScroll.js.map +1 -1
- package/dist/cjs/components/Cell/Cell.js.map +1 -1
- package/dist/cjs/components/Cell/CellCheckbox/CellCheckbox.js.map +1 -1
- package/dist/cjs/components/Cell/CellDragger/CellDragger.js.map +1 -1
- package/dist/cjs/components/Cell/useDraggable.js.map +1 -1
- package/dist/cjs/components/CellButton/CellButton.js.map +1 -1
- package/dist/cjs/components/Checkbox/Checkbox.js.map +1 -1
- package/dist/cjs/components/Chip/Chip.js.map +1 -1
- package/dist/cjs/components/ChipsInput/ChipsInput.js.map +1 -1
- package/dist/cjs/components/ChipsInputBase/ChipsInputBase.d.ts +4 -0
- package/dist/cjs/components/ChipsInputBase/ChipsInputBase.js +10 -4
- package/dist/cjs/components/ChipsInputBase/ChipsInputBase.js.map +1 -1
- package/dist/cjs/components/ChipsSelect/ChipsSelect.d.ts +4 -0
- package/dist/cjs/components/ChipsSelect/ChipsSelect.js +20 -9
- package/dist/cjs/components/ChipsSelect/ChipsSelect.js.map +1 -1
- package/dist/cjs/components/ConfigProvider/ConfigProvider.js.map +1 -1
- package/dist/cjs/components/ConfigProvider/ConfigProviderContext.js.map +1 -1
- package/dist/cjs/components/ConfigProvider/ConfigProviderOverride.js.map +1 -1
- package/dist/cjs/components/ContentCard/ContentCard.js.map +1 -1
- package/dist/cjs/components/Counter/Counter.js.map +1 -1
- package/dist/cjs/components/CustomScrollView/CustomScrollView.js +2 -1
- package/dist/cjs/components/CustomScrollView/CustomScrollView.js.map +1 -1
- package/dist/cjs/components/CustomScrollView/useTrackerVisibility.js.map +1 -1
- package/dist/cjs/components/CustomSelect/CustomSelect.js +15 -8
- package/dist/cjs/components/CustomSelect/CustomSelect.js.map +1 -1
- package/dist/cjs/components/CustomSelect/CustomSelectClearButton.js.map +1 -1
- package/dist/cjs/components/CustomSelectDropdown/CustomSelectDropdown.js +4 -2
- package/dist/cjs/components/CustomSelectDropdown/CustomSelectDropdown.js.map +1 -1
- package/dist/cjs/components/CustomSelectOption/CustomSelectOption.js.map +1 -1
- package/dist/cjs/components/DateInput/DateInput.js +4 -2
- package/dist/cjs/components/DateInput/DateInput.js.map +1 -1
- package/dist/cjs/components/DatePicker/DatePicker.js +8 -5
- package/dist/cjs/components/DatePicker/DatePicker.js.map +1 -1
- package/dist/cjs/components/DateRangeInput/DateRangeInput.js +11 -7
- package/dist/cjs/components/DateRangeInput/DateRangeInput.js.map +1 -1
- package/dist/cjs/components/Div/Div.js.map +1 -1
- package/dist/cjs/components/DropdownIcon/DropdownIcon.js.map +1 -1
- package/dist/cjs/components/Epic/Epic.d.ts +1 -0
- package/dist/cjs/components/Epic/Epic.js.map +1 -1
- package/dist/cjs/components/Epic/ScrollSaver.js.map +1 -1
- package/dist/cjs/components/File/File.js.map +1 -1
- package/dist/cjs/components/FixedLayout/FixedLayout.js +2 -1
- package/dist/cjs/components/FixedLayout/FixedLayout.js.map +1 -1
- package/dist/cjs/components/FocusTrap/FocusTrap.js +4 -3
- package/dist/cjs/components/FocusTrap/FocusTrap.js.map +1 -1
- package/dist/cjs/components/FocusVisible/FocusVisible.js.map +1 -1
- package/dist/cjs/components/Footer/Footer.js.map +1 -1
- package/dist/cjs/components/FormField/FormField.js.map +1 -1
- package/dist/cjs/components/FormItem/FormItem.js +2 -1
- package/dist/cjs/components/FormItem/FormItem.js.map +1 -1
- package/dist/cjs/components/FormLayout/FormLayout.js.map +1 -1
- package/dist/cjs/components/FormLayoutGroup/FormLayoutGroup.js +2 -1
- package/dist/cjs/components/FormLayoutGroup/FormLayoutGroup.js.map +1 -1
- package/dist/cjs/components/FormStatus/FormStatus.js.map +1 -1
- package/dist/cjs/components/Gallery/Gallery.js.map +1 -1
- package/dist/cjs/components/Gradient/Gradient.js.map +1 -1
- package/dist/cjs/components/GridAvatar/GridAvatar.js.map +1 -1
- package/dist/cjs/components/GridAvatar/GridAvatarBadge/GridAvatarBadge.js.map +1 -1
- package/dist/cjs/components/Group/Group.d.ts +8 -8
- package/dist/cjs/components/Group/Group.js +1 -1
- package/dist/cjs/components/Group/Group.js.map +1 -1
- package/dist/cjs/components/Header/Header.js.map +1 -1
- package/dist/cjs/components/HorizontalCell/HorizontalCell.js.map +1 -1
- package/dist/cjs/components/HorizontalCellShowMore/HorizontalCellShowMore.d.ts +35 -0
- package/dist/cjs/components/HorizontalCellShowMore/HorizontalCellShowMore.js +56 -0
- package/dist/cjs/components/HorizontalCellShowMore/HorizontalCellShowMore.js.map +1 -0
- package/dist/cjs/components/HorizontalScroll/HorizontalScroll.js +2 -2
- package/dist/cjs/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
- package/dist/cjs/components/HoverPopper/HoverPopper.js.map +1 -1
- package/dist/cjs/components/IconButton/IconButton.js.map +1 -1
- package/dist/cjs/components/Image/Image.js.map +1 -1
- package/dist/cjs/components/Image/ImageBadge/ImageBadge.js.map +1 -1
- package/dist/cjs/components/ImageBase/ImageBase.js +4 -2
- package/dist/cjs/components/ImageBase/ImageBase.js.map +1 -1
- package/dist/cjs/components/ImageBase/ImageBaseBadge/ImageBaseBadge.js.map +1 -1
- package/dist/cjs/components/ImageBase/ImageBaseOverlay/ImageBaseOverlay.js.map +1 -1
- package/dist/cjs/components/ImageBase/context.js.map +1 -1
- package/dist/cjs/components/ImageBase/helpers.js.map +1 -1
- package/dist/cjs/components/ImageBase/validators.js +3 -4
- package/dist/cjs/components/ImageBase/validators.js.map +1 -1
- package/dist/cjs/components/InfoRow/InfoRow.js.map +1 -1
- package/dist/cjs/components/Input/Input.js.map +1 -1
- package/dist/cjs/components/InputLike/InputLike.js +6 -4
- package/dist/cjs/components/InputLike/InputLike.js.map +1 -1
- package/dist/cjs/components/InputLike/InputLikeDivider.js.map +1 -1
- package/dist/cjs/components/Link/Link.js.map +1 -1
- package/dist/cjs/components/List/List.js.map +1 -1
- package/dist/cjs/components/List/ListContext.js.map +1 -1
- package/dist/cjs/components/LocaleProvider/LocaleProvider.js.map +1 -1
- package/dist/cjs/components/MiniInfoCell/MiniInfoCell.js.map +1 -1
- package/dist/cjs/components/ModalCard/ModalCard.js.map +1 -1
- package/dist/cjs/components/ModalCardBase/ModalCardBase.js +9 -8
- package/dist/cjs/components/ModalCardBase/ModalCardBase.js.map +1 -1
- package/dist/cjs/components/ModalDismissButton/ModalDismissButton.js.map +1 -1
- package/dist/cjs/components/ModalPage/ModalPage.js.map +1 -1
- package/dist/cjs/components/ModalPage/ModalPageContext.js.map +1 -1
- package/dist/cjs/components/ModalPageHeader/ModalPageHeader.js.map +1 -1
- package/dist/cjs/components/ModalRoot/ModalRoot.js +21 -15
- package/dist/cjs/components/ModalRoot/ModalRoot.js.map +1 -1
- package/dist/cjs/components/ModalRoot/ModalRootAdaptive.js.map +1 -1
- package/dist/cjs/components/ModalRoot/ModalRootContext.js.map +1 -1
- package/dist/cjs/components/ModalRoot/ModalRootDesktop.js +12 -6
- package/dist/cjs/components/ModalRoot/ModalRootDesktop.js.map +1 -1
- package/dist/cjs/components/ModalRoot/types.d.ts +4 -2
- package/dist/cjs/components/ModalRoot/types.js.map +1 -1
- package/dist/cjs/components/ModalRoot/useModalManager.js.map +1 -1
- package/dist/cjs/components/ModalRoot/useModalRootContext.js.map +1 -1
- package/dist/cjs/components/ModalRoot/withModalRootContext.js.map +1 -1
- package/dist/cjs/components/NativeSelect/NativeSelect.js.map +1 -1
- package/dist/cjs/components/NavTransitionContext/NavTransitionContext.js.map +1 -1
- package/dist/cjs/components/Pagination/Pagination.js +2 -1
- package/dist/cjs/components/Pagination/Pagination.js.map +1 -1
- package/dist/cjs/components/Panel/Panel.js.map +1 -1
- package/dist/cjs/components/PanelHeader/LegacyPanelHeaderContent.js.map +1 -1
- package/dist/cjs/components/PanelHeader/PanelHeader.js.map +1 -1
- package/dist/cjs/components/PanelHeaderBack/PanelHeaderBack.js.map +1 -1
- package/dist/cjs/components/PanelHeaderButton/PanelHeaderButton.js.map +1 -1
- package/dist/cjs/components/PanelHeaderClose/PanelHeaderClose.js.map +1 -1
- package/dist/cjs/components/PanelHeaderContent/PanelHeaderContent.js.map +1 -1
- package/dist/cjs/components/PanelHeaderContext/PanelHeaderContext.js.map +1 -1
- package/dist/cjs/components/PanelHeaderEdit/PanelHeaderEdit.js.map +1 -1
- package/dist/cjs/components/PanelHeaderSubmit/PanelHeaderSubmit.js.map +1 -1
- package/dist/cjs/components/PanelSpinner/PanelSpinner.js.map +1 -1
- package/dist/cjs/components/Placeholder/Placeholder.js.map +1 -1
- package/dist/cjs/components/PlatformProvider/PlatformProvider.js.map +1 -1
- package/dist/cjs/components/PopoutRoot/PopoutRoot.js.map +1 -1
- package/dist/cjs/components/PopoutWrapper/PopoutWrapper.js.map +1 -1
- package/dist/cjs/components/Popover/Popover.js.map +1 -1
- package/dist/cjs/components/Popper/Popper.js.map +1 -1
- package/dist/cjs/components/PopperArrow/PopperArrow.js.map +1 -1
- package/dist/cjs/components/Progress/Progress.js.map +1 -1
- package/dist/cjs/components/PromoBanner/PromoBanner.js.map +1 -1
- package/dist/cjs/components/PullToRefresh/PullToRefresh.js +2 -1
- package/dist/cjs/components/PullToRefresh/PullToRefresh.js.map +1 -1
- package/dist/cjs/components/PullToRefresh/PullToRefreshSpinner.js.map +1 -1
- package/dist/cjs/components/Radio/Radio.js.map +1 -1
- package/dist/cjs/components/RadioGroup/RadioGroup.js.map +1 -1
- package/dist/cjs/components/RangeSlider/RangeSlider.js.map +1 -1
- package/dist/cjs/components/Removable/Removable.js +2 -2
- package/dist/cjs/components/Removable/Removable.js.map +1 -1
- package/dist/cjs/components/RichCell/RichCell.js.map +1 -1
- package/dist/cjs/components/RichCell/RichCellIcon/RichCellIcon.js.map +1 -1
- package/dist/cjs/components/RichTooltip/RichTooltip.js.map +1 -1
- package/dist/cjs/components/Root/Root.d.ts +1 -0
- package/dist/cjs/components/Root/Root.js.map +1 -1
- package/dist/cjs/components/ScreenSpinner/ScreenSpinner.js.map +1 -1
- package/dist/cjs/components/ScrollArrow/ScrollArrow.js.map +1 -1
- package/dist/cjs/components/Search/Search.js +2 -2
- package/dist/cjs/components/Search/Search.js.map +1 -1
- package/dist/cjs/components/SegmentedControl/SegmentedControl.js.map +1 -1
- package/dist/cjs/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.js.map +1 -1
- package/dist/cjs/components/Select/Select.js.map +1 -1
- package/dist/cjs/components/SelectMimicry/SelectMimicry.js.map +1 -1
- package/dist/cjs/components/SelectTypography/SelectTypography.js.map +1 -1
- package/dist/cjs/components/Separator/Separator.js.map +1 -1
- package/dist/cjs/components/SimpleCell/Chevron/Chevron.d.ts +5 -0
- package/dist/cjs/components/SimpleCell/Chevron/Chevron.js +27 -0
- package/dist/cjs/components/SimpleCell/Chevron/Chevron.js.map +1 -0
- package/dist/cjs/components/SimpleCell/SimpleCell.d.ts +6 -2
- package/dist/cjs/components/SimpleCell/SimpleCell.js +16 -5
- package/dist/cjs/components/SimpleCell/SimpleCell.js.map +1 -1
- package/dist/cjs/components/Slider/Slider.js.map +1 -1
- package/dist/cjs/components/Slider/SliderThumb/SliderThumb.js.map +1 -1
- package/dist/cjs/components/Slider/helpers.js.map +1 -1
- package/dist/cjs/components/Snackbar/Snackbar.js.map +1 -1
- package/dist/cjs/components/Spacing/Spacing.js.map +1 -1
- package/dist/cjs/components/Spinner/Spinner.d.ts +2 -1
- package/dist/cjs/components/Spinner/Spinner.js +19 -4
- package/dist/cjs/components/Spinner/Spinner.js.map +1 -1
- package/dist/cjs/components/SplitCol/SplitCol.js.map +1 -1
- package/dist/cjs/components/SplitCol/SplitColContext.js.map +1 -1
- package/dist/cjs/components/SplitLayout/SplitLayout.js.map +1 -1
- package/dist/cjs/components/SubnavigationBar/SubnavigationBar.js.map +1 -1
- package/dist/cjs/components/SubnavigationButton/SubnavigationButton.js.map +1 -1
- package/dist/cjs/components/Switch/Switch.js.map +1 -1
- package/dist/cjs/components/Tabbar/Tabbar.js.map +1 -1
- package/dist/cjs/components/TabbarItem/TabbarItem.js +1 -1
- package/dist/cjs/components/TabbarItem/TabbarItem.js.map +1 -1
- package/dist/cjs/components/Tabs/Tabs.js.map +1 -1
- package/dist/cjs/components/TabsItem/TabsItem.js.map +1 -1
- package/dist/cjs/components/Tappable/Tappable.js.map +1 -1
- package/dist/cjs/components/TextTooltip/TextTooltip.js.map +1 -1
- package/dist/cjs/components/Textarea/Textarea.js +2 -1
- package/dist/cjs/components/Textarea/Textarea.js.map +1 -1
- package/dist/cjs/components/Tooltip/Tooltip.js +4 -2
- package/dist/cjs/components/Tooltip/Tooltip.js.map +1 -1
- package/dist/cjs/components/Tooltip/TooltipContainer.js.map +1 -1
- package/dist/cjs/components/Touch/Touch.js +1 -1
- package/dist/cjs/components/Touch/Touch.js.map +1 -1
- package/dist/cjs/components/Touch/TouchContext.js.map +1 -1
- package/dist/cjs/components/Typography/Caption/Caption.js.map +1 -1
- package/dist/cjs/components/Typography/Footnote/Footnote.js.map +1 -1
- package/dist/cjs/components/Typography/Headline/Headline.js.map +1 -1
- package/dist/cjs/components/Typography/Paragraph/Paragraph.js.map +1 -1
- package/dist/cjs/components/Typography/Subhead/Subhead.js.map +1 -1
- package/dist/cjs/components/Typography/Text/Text.js.map +1 -1
- package/dist/cjs/components/Typography/Title/Title.js.map +1 -1
- package/dist/cjs/components/Typography/Typography.js.map +1 -1
- package/dist/cjs/components/UsersStack/UsersStack.js.map +1 -1
- package/dist/cjs/components/View/View.d.ts +1 -0
- package/dist/cjs/components/View/View.js +16 -8
- package/dist/cjs/components/View/View.js.map +1 -1
- package/dist/cjs/components/View/ViewInfinite.js.map +1 -1
- package/dist/cjs/components/View/utils.js +2 -2
- package/dist/cjs/components/View/utils.js.map +1 -1
- package/dist/cjs/components/VisuallyHidden/VisuallyHidden.js.map +1 -1
- package/dist/cjs/components/VisuallyHiddenInput/VisuallyHiddenInput.js.map +1 -1
- package/dist/cjs/components/WriteBar/WriteBar.js.map +1 -1
- package/dist/cjs/components/WriteBarIcon/WriteBarIcon.js.map +1 -1
- package/dist/cjs/helpers/appearance.js.map +1 -1
- package/dist/cjs/helpers/generateVKUITokensClassName.js.map +1 -1
- package/dist/cjs/helpers/getPlatformClassName.js.map +1 -1
- package/dist/cjs/helpers/math.js.map +1 -1
- package/dist/cjs/helpers/range.js.map +1 -1
- package/dist/cjs/hoc/withContext.js.map +1 -1
- package/dist/cjs/hoc/withInsets.js.map +1 -1
- package/dist/cjs/hoc/withPlatform.js.map +1 -1
- package/dist/cjs/hooks/useAdaptivity.js.map +1 -1
- package/dist/cjs/hooks/useAdaptivityConditionalRender/constants.js.map +1 -1
- package/dist/cjs/hooks/useAdaptivityConditionalRender/helpers.js.map +1 -1
- package/dist/cjs/hooks/useAdaptivityConditionalRender/index.js.map +1 -1
- package/dist/cjs/hooks/useAdaptivityConditionalRender/useAdaptivityConditionalRender.js.map +1 -1
- package/dist/cjs/hooks/useAdaptivityHasHover.js.map +1 -1
- package/dist/cjs/hooks/useAdaptivityHasPointer.js.map +1 -1
- package/dist/cjs/hooks/useAdaptivityWithJSMediaQueries.js.map +1 -1
- package/dist/cjs/hooks/useAppearance.js.map +1 -1
- package/dist/cjs/hooks/useAutoDetectAppearance.js +2 -1
- package/dist/cjs/hooks/useAutoDetectAppearance.js.map +1 -1
- package/dist/cjs/hooks/useBooleanState.js.map +1 -1
- package/dist/cjs/hooks/useBridgeAdaptivity.js.map +1 -1
- package/dist/cjs/hooks/useCalendar.js +6 -3
- package/dist/cjs/hooks/useCalendar.js.map +1 -1
- package/dist/cjs/hooks/useChipsInput.js +2 -1
- package/dist/cjs/hooks/useChipsInput.js.map +1 -1
- package/dist/cjs/hooks/useChipsSelect.js.map +1 -1
- package/dist/cjs/hooks/useDateInput.js +5 -3
- package/dist/cjs/hooks/useDateInput.js.map +1 -1
- package/dist/cjs/hooks/useEffectDev.js.map +1 -1
- package/dist/cjs/hooks/useEnsuredControl.js.map +1 -1
- package/dist/cjs/hooks/useEventListener.js.map +1 -1
- package/dist/cjs/hooks/useExternRef.js.map +1 -1
- package/dist/cjs/hooks/useFocusVisible.js.map +1 -1
- package/dist/cjs/hooks/useFocusWithin.js.map +1 -1
- package/dist/cjs/hooks/useGlobalEventListener.js.map +1 -1
- package/dist/cjs/hooks/useId.js.map +1 -1
- package/dist/cjs/hooks/useInsets.js.map +1 -1
- package/dist/cjs/hooks/useIsClient.js.map +1 -1
- package/dist/cjs/hooks/useKeyboard.js +4 -4
- package/dist/cjs/hooks/useKeyboard.js.map +1 -1
- package/dist/cjs/hooks/useKeyboardInputTracker.js.map +1 -1
- package/dist/cjs/hooks/useMediaQueries.js.map +1 -1
- package/dist/cjs/hooks/useObjectMemo.js.map +1 -1
- package/dist/cjs/hooks/useOrientationChange.js +1 -1
- package/dist/cjs/hooks/useOrientationChange.js.map +1 -1
- package/dist/cjs/hooks/usePagination.js.map +1 -1
- package/dist/cjs/hooks/usePatchChildrenRef.js +2 -1
- package/dist/cjs/hooks/usePatchChildrenRef.js.map +1 -1
- package/dist/cjs/hooks/usePlatform.js.map +1 -1
- package/dist/cjs/hooks/usePrevious.js.map +1 -1
- package/dist/cjs/hooks/useTimeout.js +2 -1
- package/dist/cjs/hooks/useTimeout.js.map +1 -1
- package/dist/cjs/hooks/useTodayDate.js.map +1 -1
- package/dist/cjs/hooks/useWaitTransitionFinish.js +4 -2
- package/dist/cjs/hooks/useWaitTransitionFinish.js.map +1 -1
- package/dist/cjs/index.d.ts +3 -1
- package/dist/cjs/index.js +4 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/lib/SSR.js.map +1 -1
- package/dist/cjs/lib/accessibility.js.map +1 -1
- package/dist/cjs/lib/adaptivity/constants.js.map +1 -1
- package/dist/cjs/lib/adaptivity/functions.js.map +1 -1
- package/dist/cjs/lib/animate.js.map +1 -1
- package/dist/cjs/lib/browser.js.map +1 -1
- package/dist/cjs/lib/calendar.js.map +1 -1
- package/dist/cjs/lib/callMultiple.js.map +1 -1
- package/dist/cjs/lib/date.js.map +1 -1
- package/dist/cjs/lib/dom.js.map +1 -1
- package/dist/cjs/lib/floating/adapters.js.map +1 -1
- package/dist/cjs/lib/floating/functions.js.map +1 -1
- package/dist/cjs/lib/floating/index.js.map +1 -1
- package/dist/cjs/lib/fx.js.map +1 -1
- package/dist/cjs/lib/getNavId.js.map +1 -1
- package/dist/cjs/lib/isRefObject.js.map +1 -1
- package/dist/cjs/lib/matchMedia.js.map +1 -1
- package/dist/cjs/lib/offset.js +6 -5
- package/dist/cjs/lib/offset.js.map +1 -1
- package/dist/cjs/lib/platform.js.map +1 -1
- package/dist/cjs/lib/polyfills.js.map +1 -1
- package/dist/cjs/lib/removeObjectKeys.js.map +1 -1
- package/dist/cjs/lib/select.js +2 -2
- package/dist/cjs/lib/select.js.map +1 -1
- package/dist/cjs/lib/styles.js.map +1 -1
- package/dist/cjs/lib/supportEvents.js.map +1 -1
- package/dist/cjs/lib/taptic.js.map +1 -1
- package/dist/cjs/lib/testing.js.map +1 -1
- package/dist/cjs/lib/tokensClassProvider.js.map +1 -1
- package/dist/cjs/lib/touch.js.map +1 -1
- package/dist/cjs/lib/useIsomorphicLayoutEffect.js.map +1 -1
- package/dist/cjs/lib/utils.js.map +1 -1
- package/dist/cjs/lib/warnOnce.js.map +1 -1
- package/dist/cjs/shared/breakpoints.js.map +1 -1
- package/dist/components/Accordion/Accordion.js.map +1 -1
- package/dist/components/ActionSheet/ActionSheet.js.map +1 -1
- package/dist/components/ActionSheet/ActionSheetContext.js.map +1 -1
- package/dist/components/ActionSheet/ActionSheetDropdown.js.map +1 -1
- package/dist/components/ActionSheet/ActionSheetDropdownDesktop.js +4 -2
- package/dist/components/ActionSheet/ActionSheetDropdownDesktop.js.map +1 -1
- package/dist/components/ActionSheetItem/ActionSheetItem.js.map +1 -1
- package/dist/components/AdaptiveIconRenderer/AdaptiveIconRenderer.js.map +1 -1
- package/dist/components/AdaptivityProvider/AdaptivityContext.js.map +1 -1
- package/dist/components/AdaptivityProvider/AdaptivityProvider.js.map +1 -1
- package/dist/components/Alert/Alert.js.map +1 -1
- package/dist/components/AppRoot/AppRoot.js +6 -5
- package/dist/components/AppRoot/AppRoot.js.map +1 -1
- package/dist/components/AppRoot/AppRootContext.js.map +1 -1
- package/dist/components/AppRoot/AppRootPortal.js.map +1 -1
- package/dist/components/AppRoot/ScrollContext.js +5 -3
- package/dist/components/AppRoot/ScrollContext.js.map +1 -1
- package/dist/components/Avatar/Avatar.js.map +1 -1
- package/dist/components/Avatar/AvatarBadge/AvatarBadge.js.map +1 -1
- package/dist/components/Avatar/AvatarBadge/AvatarBadgeWithPreset.js.map +1 -1
- package/dist/components/Avatar/helpers.js.map +1 -1
- package/dist/components/Banner/Banner.d.ts +5 -1
- package/dist/components/Banner/Banner.js +4 -3
- package/dist/components/Banner/Banner.js.map +1 -1
- package/dist/components/BaseGallery/BaseGallery.js +15 -9
- package/dist/components/BaseGallery/BaseGallery.js.map +1 -1
- package/dist/components/BaseGallery/helpers.js.map +1 -1
- package/dist/components/Button/Button.d.ts +2 -1
- package/dist/components/Button/Button.js +5 -3
- package/dist/components/Button/Button.js.map +1 -1
- package/dist/components/Calendar/Calendar.js +2 -1
- package/dist/components/Calendar/Calendar.js.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.js +6 -5
- package/dist/components/CalendarDays/CalendarDays.js.map +1 -1
- package/dist/components/CalendarHeader/CalendarHeader.js.map +1 -1
- package/dist/components/CalendarRange/CalendarRange.js +16 -8
- package/dist/components/CalendarRange/CalendarRange.js.map +1 -1
- package/dist/components/CalendarTime/CalendarTime.js +4 -2
- package/dist/components/CalendarTime/CalendarTime.js.map +1 -1
- package/dist/components/CardGrid/CardGrid.js.map +1 -1
- package/dist/components/CardScroll/CardScroll.js.map +1 -1
- package/dist/components/Cell/Cell.js.map +1 -1
- package/dist/components/Cell/CellCheckbox/CellCheckbox.js.map +1 -1
- package/dist/components/Cell/CellDragger/CellDragger.js.map +1 -1
- package/dist/components/Cell/useDraggable.js.map +1 -1
- package/dist/components/Checkbox/Checkbox.js.map +1 -1
- package/dist/components/Chip/Chip.js.map +1 -1
- package/dist/components/ChipsInput/ChipsInput.js.map +1 -1
- package/dist/components/ChipsInputBase/ChipsInputBase.d.ts +4 -0
- package/dist/components/ChipsInputBase/ChipsInputBase.js +10 -4
- package/dist/components/ChipsInputBase/ChipsInputBase.js.map +1 -1
- package/dist/components/ChipsSelect/ChipsSelect.d.ts +4 -0
- package/dist/components/ChipsSelect/ChipsSelect.js +20 -9
- package/dist/components/ChipsSelect/ChipsSelect.js.map +1 -1
- package/dist/components/ConfigProvider/ConfigProvider.js.map +1 -1
- package/dist/components/ConfigProvider/ConfigProviderContext.js.map +1 -1
- package/dist/components/ConfigProvider/ConfigProviderOverride.js.map +1 -1
- package/dist/components/ContentCard/ContentCard.js.map +1 -1
- package/dist/components/Counter/Counter.js.map +1 -1
- package/dist/components/CustomScrollView/CustomScrollView.js +2 -1
- package/dist/components/CustomScrollView/CustomScrollView.js.map +1 -1
- package/dist/components/CustomScrollView/useTrackerVisibility.js.map +1 -1
- package/dist/components/CustomSelect/CustomSelect.js +15 -8
- package/dist/components/CustomSelect/CustomSelect.js.map +1 -1
- package/dist/components/CustomSelectDropdown/CustomSelectDropdown.js +4 -2
- package/dist/components/CustomSelectDropdown/CustomSelectDropdown.js.map +1 -1
- package/dist/components/CustomSelectOption/CustomSelectOption.js.map +1 -1
- package/dist/components/DateInput/DateInput.js +4 -2
- package/dist/components/DateInput/DateInput.js.map +1 -1
- package/dist/components/DatePicker/DatePicker.js +8 -5
- package/dist/components/DatePicker/DatePicker.js.map +1 -1
- package/dist/components/DateRangeInput/DateRangeInput.js +11 -7
- package/dist/components/DateRangeInput/DateRangeInput.js.map +1 -1
- package/dist/components/DropdownIcon/DropdownIcon.js.map +1 -1
- package/dist/components/Epic/Epic.d.ts +1 -0
- package/dist/components/Epic/Epic.js.map +1 -1
- package/dist/components/Epic/ScrollSaver.js.map +1 -1
- package/dist/components/File/File.js.map +1 -1
- package/dist/components/FixedLayout/FixedLayout.js +2 -1
- package/dist/components/FixedLayout/FixedLayout.js.map +1 -1
- package/dist/components/FocusTrap/FocusTrap.js +4 -3
- package/dist/components/FocusTrap/FocusTrap.js.map +1 -1
- package/dist/components/FormField/FormField.js.map +1 -1
- package/dist/components/FormItem/FormItem.js +2 -1
- package/dist/components/FormItem/FormItem.js.map +1 -1
- package/dist/components/FormLayout/FormLayout.js.map +1 -1
- package/dist/components/FormLayoutGroup/FormLayoutGroup.js +2 -1
- package/dist/components/FormLayoutGroup/FormLayoutGroup.js.map +1 -1
- package/dist/components/Gallery/Gallery.js.map +1 -1
- package/dist/components/GridAvatar/GridAvatar.js.map +1 -1
- package/dist/components/GridAvatar/GridAvatarBadge/GridAvatarBadge.js.map +1 -1
- package/dist/components/Group/Group.d.ts +8 -8
- package/dist/components/Group/Group.js +1 -1
- package/dist/components/Group/Group.js.map +1 -1
- package/dist/components/Header/Header.js.map +1 -1
- package/dist/components/HorizontalCellShowMore/HorizontalCellShowMore.d.ts +35 -0
- package/dist/components/HorizontalCellShowMore/HorizontalCellShowMore.js +45 -0
- package/dist/components/HorizontalCellShowMore/HorizontalCellShowMore.js.map +1 -0
- package/dist/components/HorizontalScroll/HorizontalScroll.js +2 -2
- package/dist/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
- package/dist/components/HoverPopper/HoverPopper.js.map +1 -1
- package/dist/components/IconButton/IconButton.js.map +1 -1
- package/dist/components/Image/Image.js.map +1 -1
- package/dist/components/Image/ImageBadge/ImageBadge.js.map +1 -1
- package/dist/components/ImageBase/ImageBase.js +4 -2
- package/dist/components/ImageBase/ImageBase.js.map +1 -1
- package/dist/components/ImageBase/ImageBaseBadge/ImageBaseBadge.js.map +1 -1
- package/dist/components/ImageBase/ImageBaseOverlay/ImageBaseOverlay.js.map +1 -1
- package/dist/components/ImageBase/context.js.map +1 -1
- package/dist/components/ImageBase/helpers.js.map +1 -1
- package/dist/components/ImageBase/validators.js +3 -4
- package/dist/components/ImageBase/validators.js.map +1 -1
- package/dist/components/Input/Input.js.map +1 -1
- package/dist/components/InputLike/InputLike.js +6 -4
- package/dist/components/InputLike/InputLike.js.map +1 -1
- package/dist/components/Link/Link.js.map +1 -1
- package/dist/components/List/List.js.map +1 -1
- package/dist/components/List/ListContext.js.map +1 -1
- package/dist/components/MiniInfoCell/MiniInfoCell.js.map +1 -1
- package/dist/components/ModalCard/ModalCard.js.map +1 -1
- package/dist/components/ModalCardBase/ModalCardBase.js +9 -8
- package/dist/components/ModalCardBase/ModalCardBase.js.map +1 -1
- package/dist/components/ModalPage/ModalPage.js.map +1 -1
- package/dist/components/ModalPage/ModalPageContext.js.map +1 -1
- package/dist/components/ModalPageHeader/ModalPageHeader.js.map +1 -1
- package/dist/components/ModalRoot/ModalRoot.js +21 -15
- package/dist/components/ModalRoot/ModalRoot.js.map +1 -1
- package/dist/components/ModalRoot/ModalRootAdaptive.js.map +1 -1
- package/dist/components/ModalRoot/ModalRootContext.js.map +1 -1
- package/dist/components/ModalRoot/ModalRootDesktop.js +12 -6
- package/dist/components/ModalRoot/ModalRootDesktop.js.map +1 -1
- package/dist/components/ModalRoot/types.d.ts +4 -2
- package/dist/components/ModalRoot/types.js.map +1 -1
- package/dist/components/ModalRoot/useModalManager.js.map +1 -1
- package/dist/components/ModalRoot/useModalRootContext.js.map +1 -1
- package/dist/components/ModalRoot/withModalRootContext.js.map +1 -1
- package/dist/components/NativeSelect/NativeSelect.js.map +1 -1
- package/dist/components/NavTransitionContext/NavTransitionContext.js.map +1 -1
- package/dist/components/Pagination/Pagination.js +2 -1
- package/dist/components/Pagination/Pagination.js.map +1 -1
- package/dist/components/Panel/Panel.js.map +1 -1
- package/dist/components/PanelHeader/LegacyPanelHeaderContent.js.map +1 -1
- package/dist/components/PanelHeader/PanelHeader.js.map +1 -1
- package/dist/components/PanelHeaderBack/PanelHeaderBack.js.map +1 -1
- package/dist/components/PanelHeaderButton/PanelHeaderButton.js.map +1 -1
- package/dist/components/PanelHeaderClose/PanelHeaderClose.js.map +1 -1
- package/dist/components/PanelHeaderContent/PanelHeaderContent.js.map +1 -1
- package/dist/components/PanelHeaderContext/PanelHeaderContext.js.map +1 -1
- package/dist/components/PanelHeaderEdit/PanelHeaderEdit.js.map +1 -1
- package/dist/components/PanelHeaderSubmit/PanelHeaderSubmit.js.map +1 -1
- package/dist/components/PanelSpinner/PanelSpinner.js.map +1 -1
- package/dist/components/PopoutRoot/PopoutRoot.js.map +1 -1
- package/dist/components/PopoutWrapper/PopoutWrapper.js.map +1 -1
- package/dist/components/Popover/Popover.js.map +1 -1
- package/dist/components/Popper/Popper.js.map +1 -1
- package/dist/components/PopperArrow/PopperArrow.js.map +1 -1
- package/dist/components/PromoBanner/PromoBanner.js.map +1 -1
- package/dist/components/PullToRefresh/PullToRefresh.js +2 -1
- package/dist/components/PullToRefresh/PullToRefresh.js.map +1 -1
- package/dist/components/PullToRefresh/PullToRefreshSpinner.js.map +1 -1
- package/dist/components/Radio/Radio.js.map +1 -1
- package/dist/components/Removable/Removable.js +2 -2
- package/dist/components/Removable/Removable.js.map +1 -1
- package/dist/components/RichCell/RichCell.js.map +1 -1
- package/dist/components/Root/Root.d.ts +1 -0
- package/dist/components/Root/Root.js.map +1 -1
- package/dist/components/Search/Search.js +2 -2
- package/dist/components/Search/Search.js.map +1 -1
- package/dist/components/SegmentedControl/SegmentedControl.js.map +1 -1
- package/dist/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.js.map +1 -1
- package/dist/components/Select/Select.js.map +1 -1
- package/dist/components/SelectMimicry/SelectMimicry.js.map +1 -1
- package/dist/components/SelectTypography/SelectTypography.js.map +1 -1
- package/dist/components/SimpleCell/Chevron/Chevron.d.ts +5 -0
- package/dist/components/SimpleCell/Chevron/Chevron.js +16 -0
- package/dist/components/SimpleCell/Chevron/Chevron.js.map +1 -0
- package/dist/components/SimpleCell/SimpleCell.d.ts +6 -2
- package/dist/components/SimpleCell/SimpleCell.js +16 -5
- package/dist/components/SimpleCell/SimpleCell.js.map +1 -1
- package/dist/components/Slider/Slider.js.map +1 -1
- package/dist/components/Slider/helpers.js.map +1 -1
- package/dist/components/Snackbar/Snackbar.js.map +1 -1
- package/dist/components/Spinner/Spinner.d.ts +2 -1
- package/dist/components/Spinner/Spinner.js +19 -4
- package/dist/components/Spinner/Spinner.js.map +1 -1
- package/dist/components/SplitCol/SplitCol.js.map +1 -1
- package/dist/components/SplitCol/SplitColContext.js.map +1 -1
- package/dist/components/SplitLayout/SplitLayout.js.map +1 -1
- package/dist/components/SubnavigationButton/SubnavigationButton.js.map +1 -1
- package/dist/components/Switch/Switch.js.map +1 -1
- package/dist/components/Tabbar/Tabbar.js.map +1 -1
- package/dist/components/TabbarItem/TabbarItem.js +1 -1
- package/dist/components/TabbarItem/TabbarItem.js.map +1 -1
- package/dist/components/Tabs/Tabs.js.map +1 -1
- package/dist/components/TabsItem/TabsItem.js.map +1 -1
- package/dist/components/Tappable/Tappable.js.map +1 -1
- package/dist/components/TextTooltip/TextTooltip.js.map +1 -1
- package/dist/components/Textarea/Textarea.js +2 -1
- package/dist/components/Textarea/Textarea.js.map +1 -1
- package/dist/components/Tooltip/Tooltip.js +4 -2
- package/dist/components/Tooltip/Tooltip.js.map +1 -1
- package/dist/components/Tooltip/TooltipContainer.js.map +1 -1
- package/dist/components/Touch/Touch.js +1 -1
- package/dist/components/Touch/Touch.js.map +1 -1
- package/dist/components/Touch/TouchContext.js.map +1 -1
- package/dist/components/Typography/Headline/Headline.js.map +1 -1
- package/dist/components/Typography/Subhead/Subhead.js.map +1 -1
- package/dist/components/Typography/Text/Text.js.map +1 -1
- package/dist/components/UsersStack/UsersStack.js.map +1 -1
- package/dist/components/View/View.d.ts +1 -0
- package/dist/components/View/View.js +16 -8
- package/dist/components/View/View.js.map +1 -1
- package/dist/components/View/ViewInfinite.js.map +1 -1
- package/dist/components/View/utils.js +2 -2
- package/dist/components/View/utils.js.map +1 -1
- package/dist/components/VisuallyHiddenInput/VisuallyHiddenInput.js.map +1 -1
- package/dist/components/WriteBar/WriteBar.js.map +1 -1
- package/dist/components/WriteBarIcon/WriteBarIcon.js.map +1 -1
- package/dist/components.css +10 -9
- package/dist/components.css.map +1 -1
- package/dist/components.js.tmp +3108 -2238
- package/dist/cssm/components/Accordion/Accordion.js +1 -1
- package/dist/cssm/components/Accordion/Accordion.js.map +1 -1
- package/dist/cssm/components/Accordion/AccordionSummary.js +1 -1
- package/dist/cssm/components/Accordion/AccordionSummary.js.map +1 -1
- package/dist/cssm/components/ActionSheet/ActionSheet.js +2 -2
- package/dist/cssm/components/ActionSheet/ActionSheet.js.map +1 -1
- package/dist/cssm/components/ActionSheet/ActionSheetContext.js.map +1 -1
- package/dist/cssm/components/ActionSheet/ActionSheetDropdown.js +3 -3
- package/dist/cssm/components/ActionSheet/ActionSheetDropdown.js.map +1 -1
- package/dist/cssm/components/ActionSheet/ActionSheetDropdownDesktop.js +3 -3
- package/dist/cssm/components/ActionSheet/ActionSheetDropdownDesktop.js.map +1 -1
- package/dist/cssm/components/ActionSheetItem/ActionSheetItem.js +3 -3
- package/dist/cssm/components/ActionSheetItem/ActionSheetItem.js.map +1 -1
- package/dist/cssm/components/AdaptiveIconRenderer/AdaptiveIconRenderer.js +2 -2
- package/dist/cssm/components/AdaptiveIconRenderer/AdaptiveIconRenderer.js.map +1 -1
- package/dist/cssm/components/AdaptivityProvider/AdaptivityContext.js.map +1 -1
- package/dist/cssm/components/AdaptivityProvider/AdaptivityProvider.js +3 -3
- package/dist/cssm/components/AdaptivityProvider/AdaptivityProvider.js.map +1 -1
- package/dist/cssm/components/Alert/Alert.js +6 -6
- package/dist/cssm/components/Alert/Alert.js.map +1 -1
- package/dist/cssm/components/AppRoot/AppRoot.js +3 -3
- package/dist/cssm/components/AppRoot/AppRoot.js.map +1 -1
- package/dist/cssm/components/AppRoot/AppRootContext.js.map +1 -1
- package/dist/cssm/components/AppRoot/AppRootPortal.js +2 -2
- package/dist/cssm/components/AppRoot/AppRootPortal.js.map +1 -1
- package/dist/cssm/components/AppRoot/ScrollContext.js +5 -5
- package/dist/cssm/components/AppRoot/ScrollContext.js.map +1 -1
- package/dist/cssm/components/AppearanceProvider/AppearanceProvider.js +1 -1
- package/dist/cssm/components/AppearanceProvider/AppearanceProvider.js.map +1 -1
- package/dist/cssm/components/AspectRatio/AspectRatio.js +1 -1
- package/dist/cssm/components/AspectRatio/AspectRatio.js.map +1 -1
- package/dist/cssm/components/Avatar/Avatar.js +1 -1
- package/dist/cssm/components/Avatar/Avatar.js.map +1 -1
- package/dist/cssm/components/Avatar/AvatarBadge/AvatarBadge.js +2 -2
- package/dist/cssm/components/Avatar/AvatarBadge/AvatarBadge.js.map +1 -1
- package/dist/cssm/components/Avatar/AvatarBadge/AvatarBadgeWithPreset.js +2 -2
- package/dist/cssm/components/Avatar/AvatarBadge/AvatarBadgeWithPreset.js.map +1 -1
- package/dist/cssm/components/Avatar/AvatarBadge/icons.js +2 -2
- package/dist/cssm/components/Avatar/AvatarBadge/icons.js.map +1 -1
- package/dist/cssm/components/Avatar/helpers.js.map +1 -1
- package/dist/cssm/components/Badge/Badge.js +1 -1
- package/dist/cssm/components/Badge/Badge.js.map +1 -1
- package/dist/cssm/components/Banner/Banner.d.ts +5 -1
- package/dist/cssm/components/Banner/Banner.js +2 -2
- package/dist/cssm/components/Banner/Banner.js.map +1 -1
- package/dist/cssm/components/Banner/Banner.module.css +6 -1
- package/dist/cssm/components/BaseGallery/BaseGallery.js +3 -3
- package/dist/cssm/components/BaseGallery/BaseGallery.js.map +1 -1
- package/dist/cssm/components/BaseGallery/helpers.js +4 -4
- package/dist/cssm/components/BaseGallery/helpers.js.map +1 -1
- package/dist/cssm/components/Button/Button.d.ts +2 -1
- package/dist/cssm/components/Button/Button.js +4 -3
- package/dist/cssm/components/Button/Button.js.map +1 -1
- package/dist/cssm/components/ButtonGroup/ButtonGroup.js +1 -1
- package/dist/cssm/components/ButtonGroup/ButtonGroup.js.map +1 -1
- package/dist/cssm/components/Calendar/Calendar.js +2 -2
- package/dist/cssm/components/Calendar/Calendar.js.map +1 -1
- package/dist/cssm/components/CalendarDay/CalendarDay.js +2 -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 +7 -7
- package/dist/cssm/components/CalendarHeader/CalendarHeader.js.map +1 -1
- package/dist/cssm/components/CalendarRange/CalendarRange.js +2 -2
- package/dist/cssm/components/CalendarRange/CalendarRange.js.map +1 -1
- package/dist/cssm/components/CalendarTime/CalendarTime.js +1 -1
- package/dist/cssm/components/CalendarTime/CalendarTime.js.map +1 -1
- package/dist/cssm/components/Card/Card.js +1 -1
- package/dist/cssm/components/Card/Card.js.map +1 -1
- package/dist/cssm/components/CardGrid/CardGrid.js +2 -2
- package/dist/cssm/components/CardGrid/CardGrid.js.map +1 -1
- package/dist/cssm/components/CardScroll/CardScroll.js +2 -2
- package/dist/cssm/components/CardScroll/CardScroll.js.map +1 -1
- package/dist/cssm/components/Cell/Cell.js +3 -3
- package/dist/cssm/components/Cell/Cell.js.map +1 -1
- package/dist/cssm/components/Cell/CellCheckbox/CellCheckbox.js +1 -1
- package/dist/cssm/components/Cell/CellCheckbox/CellCheckbox.js.map +1 -1
- package/dist/cssm/components/Cell/CellDragger/CellDragger.js +1 -1
- package/dist/cssm/components/Cell/CellDragger/CellDragger.js.map +1 -1
- package/dist/cssm/components/Cell/useDraggable.js +1 -1
- package/dist/cssm/components/Cell/useDraggable.js.map +1 -1
- package/dist/cssm/components/CellButton/CellButton.js +1 -1
- package/dist/cssm/components/CellButton/CellButton.js.map +1 -1
- package/dist/cssm/components/Checkbox/Checkbox.js +3 -3
- package/dist/cssm/components/Checkbox/Checkbox.js.map +1 -1
- package/dist/cssm/components/Chip/Chip.js +2 -2
- package/dist/cssm/components/Chip/Chip.js.map +1 -1
- package/dist/cssm/components/ChipsInput/ChipsInput.js +1 -1
- package/dist/cssm/components/ChipsInput/ChipsInput.js.map +1 -1
- package/dist/cssm/components/ChipsInputBase/ChipsInputBase.d.ts +4 -0
- package/dist/cssm/components/ChipsInputBase/ChipsInputBase.js +9 -5
- package/dist/cssm/components/ChipsInputBase/ChipsInputBase.js.map +1 -1
- package/dist/cssm/components/ChipsSelect/ChipsSelect.d.ts +4 -0
- package/dist/cssm/components/ChipsSelect/ChipsSelect.js +13 -5
- package/dist/cssm/components/ChipsSelect/ChipsSelect.js.map +1 -1
- package/dist/cssm/components/ConfigProvider/ConfigProvider.js +2 -2
- package/dist/cssm/components/ConfigProvider/ConfigProvider.js.map +1 -1
- package/dist/cssm/components/ConfigProvider/ConfigProviderContext.js.map +1 -1
- package/dist/cssm/components/ConfigProvider/ConfigProviderOverride.js +1 -1
- package/dist/cssm/components/ConfigProvider/ConfigProviderOverride.js.map +1 -1
- package/dist/cssm/components/ContentCard/ContentCard.js +3 -3
- package/dist/cssm/components/ContentCard/ContentCard.js.map +1 -1
- package/dist/cssm/components/Counter/Counter.js +1 -1
- package/dist/cssm/components/Counter/Counter.js.map +1 -1
- package/dist/cssm/components/CustomScrollView/CustomScrollView.js +3 -3
- package/dist/cssm/components/CustomScrollView/CustomScrollView.js.map +1 -1
- package/dist/cssm/components/CustomScrollView/useTrackerVisibility.js +1 -1
- package/dist/cssm/components/CustomScrollView/useTrackerVisibility.js.map +1 -1
- package/dist/cssm/components/CustomSelect/CustomSelect.js +4 -4
- package/dist/cssm/components/CustomSelect/CustomSelect.js.map +1 -1
- package/dist/cssm/components/CustomSelect/CustomSelectClearButton.js +1 -1
- package/dist/cssm/components/CustomSelect/CustomSelectClearButton.js.map +1 -1
- package/dist/cssm/components/CustomSelectDropdown/CustomSelectDropdown.js +2 -2
- package/dist/cssm/components/CustomSelectDropdown/CustomSelectDropdown.js.map +1 -1
- package/dist/cssm/components/CustomSelectOption/CustomSelectOption.js +2 -2
- package/dist/cssm/components/CustomSelectOption/CustomSelectOption.js.map +1 -1
- package/dist/cssm/components/DateInput/DateInput.js +3 -3
- package/dist/cssm/components/DateInput/DateInput.js.map +1 -1
- package/dist/cssm/components/DatePicker/DatePicker.js +8 -8
- package/dist/cssm/components/DatePicker/DatePicker.js.map +1 -1
- package/dist/cssm/components/DateRangeInput/DateRangeInput.js +3 -3
- package/dist/cssm/components/DateRangeInput/DateRangeInput.js.map +1 -1
- package/dist/cssm/components/Div/Div.js +1 -1
- package/dist/cssm/components/Div/Div.js.map +1 -1
- package/dist/cssm/components/DropdownIcon/DropdownIcon.js +2 -2
- package/dist/cssm/components/DropdownIcon/DropdownIcon.js.map +1 -1
- package/dist/cssm/components/Epic/Epic.d.ts +1 -0
- package/dist/cssm/components/Epic/Epic.js +1 -1
- package/dist/cssm/components/Epic/Epic.js.map +1 -1
- package/dist/cssm/components/Epic/ScrollSaver.js +2 -2
- package/dist/cssm/components/Epic/ScrollSaver.js.map +1 -1
- package/dist/cssm/components/File/File.js +1 -1
- package/dist/cssm/components/File/File.js.map +1 -1
- package/dist/cssm/components/FixedLayout/FixedLayout.js +3 -3
- package/dist/cssm/components/FixedLayout/FixedLayout.js.map +1 -1
- package/dist/cssm/components/FocusTrap/FocusTrap.js +4 -4
- package/dist/cssm/components/FocusTrap/FocusTrap.js.map +1 -1
- package/dist/cssm/components/FocusVisible/FocusVisible.js +1 -1
- package/dist/cssm/components/FocusVisible/FocusVisible.js.map +1 -1
- package/dist/cssm/components/Footer/Footer.js +1 -1
- package/dist/cssm/components/Footer/Footer.js.map +1 -1
- package/dist/cssm/components/FormField/FormField.js +2 -2
- package/dist/cssm/components/FormField/FormField.js.map +1 -1
- package/dist/cssm/components/FormItem/FormItem.js +2 -2
- package/dist/cssm/components/FormItem/FormItem.js.map +1 -1
- package/dist/cssm/components/FormLayout/FormLayout.js +1 -1
- package/dist/cssm/components/FormLayout/FormLayout.js.map +1 -1
- package/dist/cssm/components/FormLayoutGroup/FormLayoutGroup.js +2 -2
- package/dist/cssm/components/FormLayoutGroup/FormLayoutGroup.js.map +1 -1
- package/dist/cssm/components/FormStatus/FormStatus.js +1 -1
- package/dist/cssm/components/FormStatus/FormStatus.js.map +1 -1
- package/dist/cssm/components/Gallery/Gallery.js +1 -1
- package/dist/cssm/components/Gallery/Gallery.js.map +1 -1
- package/dist/cssm/components/Gradient/Gradient.js +1 -1
- package/dist/cssm/components/Gradient/Gradient.js.map +1 -1
- package/dist/cssm/components/GridAvatar/GridAvatar.js +1 -1
- package/dist/cssm/components/GridAvatar/GridAvatar.js.map +1 -1
- package/dist/cssm/components/GridAvatar/GridAvatarBadge/GridAvatarBadge.js +2 -2
- package/dist/cssm/components/GridAvatar/GridAvatarBadge/GridAvatarBadge.js.map +1 -1
- package/dist/cssm/components/Group/Group.d.ts +8 -8
- package/dist/cssm/components/Group/Group.js +4 -4
- package/dist/cssm/components/Group/Group.js.map +1 -1
- package/dist/cssm/components/Group/Group.module.css +2 -0
- package/dist/cssm/components/Header/Header.js +2 -2
- package/dist/cssm/components/Header/Header.js.map +1 -1
- package/dist/cssm/components/HorizontalCell/HorizontalCell.js +3 -3
- package/dist/cssm/components/HorizontalCell/HorizontalCell.js.map +1 -1
- package/dist/cssm/components/HorizontalCell/HorizontalCell.module.css +0 -5
- package/dist/cssm/components/HorizontalCellShowMore/HorizontalCellShowMore.d.ts +35 -0
- package/dist/cssm/components/HorizontalCellShowMore/HorizontalCellShowMore.js +35 -0
- package/dist/cssm/components/HorizontalCellShowMore/HorizontalCellShowMore.js.map +1 -0
- package/dist/cssm/components/HorizontalCellShowMore/HorizontalCellShowMore.module.css +47 -0
- package/dist/cssm/components/HorizontalScroll/HorizontalScroll.js +2 -2
- package/dist/cssm/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
- package/dist/cssm/components/HoverPopper/HoverPopper.js +1 -1
- package/dist/cssm/components/HoverPopper/HoverPopper.js.map +1 -1
- package/dist/cssm/components/IconButton/IconButton.js +2 -2
- package/dist/cssm/components/IconButton/IconButton.js.map +1 -1
- package/dist/cssm/components/Image/Image.js +1 -1
- package/dist/cssm/components/Image/Image.js.map +1 -1
- package/dist/cssm/components/Image/ImageBadge/ImageBadge.js +2 -2
- package/dist/cssm/components/Image/ImageBadge/ImageBadge.js.map +1 -1
- package/dist/cssm/components/ImageBase/ImageBase.js +1 -1
- package/dist/cssm/components/ImageBase/ImageBase.js.map +1 -1
- package/dist/cssm/components/ImageBase/ImageBaseBadge/ImageBaseBadge.js +2 -2
- package/dist/cssm/components/ImageBase/ImageBaseBadge/ImageBaseBadge.js.map +1 -1
- package/dist/cssm/components/ImageBase/ImageBaseOverlay/ImageBaseOverlay.js +2 -2
- package/dist/cssm/components/ImageBase/ImageBaseOverlay/ImageBaseOverlay.js.map +1 -1
- package/dist/cssm/components/ImageBase/context.js.map +1 -1
- package/dist/cssm/components/ImageBase/helpers.js.map +1 -1
- package/dist/cssm/components/ImageBase/validators.js +3 -4
- package/dist/cssm/components/ImageBase/validators.js.map +1 -1
- package/dist/cssm/components/InfoRow/InfoRow.js +1 -1
- package/dist/cssm/components/InfoRow/InfoRow.js.map +1 -1
- package/dist/cssm/components/Input/Input.js +2 -2
- package/dist/cssm/components/Input/Input.js.map +1 -1
- package/dist/cssm/components/InputLike/InputLike.js +1 -1
- package/dist/cssm/components/InputLike/InputLike.js.map +1 -1
- package/dist/cssm/components/InputLike/InputLikeDivider.js +1 -1
- package/dist/cssm/components/InputLike/InputLikeDivider.js.map +1 -1
- package/dist/cssm/components/Link/Link.js +1 -1
- package/dist/cssm/components/Link/Link.js.map +1 -1
- package/dist/cssm/components/List/List.js +1 -1
- package/dist/cssm/components/List/List.js.map +1 -1
- package/dist/cssm/components/List/ListContext.js.map +1 -1
- package/dist/cssm/components/LocaleProvider/LocaleProvider.js +1 -1
- package/dist/cssm/components/LocaleProvider/LocaleProvider.js.map +1 -1
- package/dist/cssm/components/MiniInfoCell/MiniInfoCell.js +1 -1
- package/dist/cssm/components/MiniInfoCell/MiniInfoCell.js.map +1 -1
- package/dist/cssm/components/ModalCard/ModalCard.js +3 -3
- package/dist/cssm/components/ModalCard/ModalCard.js.map +1 -1
- package/dist/cssm/components/ModalCardBase/ModalCardBase.js +11 -10
- package/dist/cssm/components/ModalCardBase/ModalCardBase.js.map +1 -1
- package/dist/cssm/components/ModalCardBase/ModalCardBase.module.css +4 -5
- package/dist/cssm/components/ModalDismissButton/ModalDismissButton.js +1 -1
- package/dist/cssm/components/ModalDismissButton/ModalDismissButton.js.map +1 -1
- package/dist/cssm/components/ModalPage/ModalPage.js +4 -4
- package/dist/cssm/components/ModalPage/ModalPage.js.map +1 -1
- package/dist/cssm/components/ModalPage/ModalPage.module.css +5 -1
- package/dist/cssm/components/ModalPage/ModalPageContext.js.map +1 -1
- package/dist/cssm/components/ModalPageHeader/ModalPageHeader.js +3 -3
- package/dist/cssm/components/ModalPageHeader/ModalPageHeader.js.map +1 -1
- package/dist/cssm/components/ModalRoot/ModalRoot.js +12 -12
- package/dist/cssm/components/ModalRoot/ModalRoot.js.map +1 -1
- package/dist/cssm/components/ModalRoot/ModalRootAdaptive.js +1 -1
- package/dist/cssm/components/ModalRoot/ModalRootAdaptive.js.map +1 -1
- package/dist/cssm/components/ModalRoot/ModalRootContext.js.map +1 -1
- package/dist/cssm/components/ModalRoot/ModalRootDesktop.js +7 -7
- package/dist/cssm/components/ModalRoot/ModalRootDesktop.js.map +1 -1
- package/dist/cssm/components/ModalRoot/types.d.ts +4 -2
- package/dist/cssm/components/ModalRoot/types.js.map +1 -1
- package/dist/cssm/components/ModalRoot/useModalManager.js.map +1 -1
- package/dist/cssm/components/ModalRoot/useModalRootContext.js.map +1 -1
- package/dist/cssm/components/ModalRoot/withModalRootContext.js +1 -1
- package/dist/cssm/components/ModalRoot/withModalRootContext.js.map +1 -1
- package/dist/cssm/components/NativeSelect/NativeSelect.js +2 -2
- package/dist/cssm/components/NativeSelect/NativeSelect.js.map +1 -1
- package/dist/cssm/components/NavTransitionContext/NavTransitionContext.js +1 -1
- package/dist/cssm/components/NavTransitionContext/NavTransitionContext.js.map +1 -1
- package/dist/cssm/components/Pagination/Pagination.js +2 -2
- package/dist/cssm/components/Pagination/Pagination.js.map +1 -1
- package/dist/cssm/components/Panel/Panel.js +2 -2
- package/dist/cssm/components/Panel/Panel.js.map +1 -1
- package/dist/cssm/components/PanelHeader/LegacyPanelHeaderContent.js +1 -1
- package/dist/cssm/components/PanelHeader/LegacyPanelHeaderContent.js.map +1 -1
- package/dist/cssm/components/PanelHeader/PanelHeader.js +9 -9
- package/dist/cssm/components/PanelHeader/PanelHeader.js.map +1 -1
- package/dist/cssm/components/PanelHeaderBack/PanelHeaderBack.js +2 -2
- package/dist/cssm/components/PanelHeaderBack/PanelHeaderBack.js.map +1 -1
- package/dist/cssm/components/PanelHeaderButton/PanelHeaderButton.js +2 -2
- package/dist/cssm/components/PanelHeaderButton/PanelHeaderButton.js.map +1 -1
- package/dist/cssm/components/PanelHeaderClose/PanelHeaderClose.js +1 -1
- package/dist/cssm/components/PanelHeaderClose/PanelHeaderClose.js.map +1 -1
- package/dist/cssm/components/PanelHeaderContent/PanelHeaderContent.js +2 -2
- package/dist/cssm/components/PanelHeaderContent/PanelHeaderContent.js.map +1 -1
- package/dist/cssm/components/PanelHeaderContext/PanelHeaderContext.js +3 -3
- package/dist/cssm/components/PanelHeaderContext/PanelHeaderContext.js.map +1 -1
- package/dist/cssm/components/PanelHeaderEdit/PanelHeaderEdit.js +1 -1
- package/dist/cssm/components/PanelHeaderEdit/PanelHeaderEdit.js.map +1 -1
- package/dist/cssm/components/PanelHeaderSubmit/PanelHeaderSubmit.js +1 -1
- package/dist/cssm/components/PanelHeaderSubmit/PanelHeaderSubmit.js.map +1 -1
- package/dist/cssm/components/PanelSpinner/PanelSpinner.js +1 -1
- package/dist/cssm/components/PanelSpinner/PanelSpinner.js.map +1 -1
- package/dist/cssm/components/Placeholder/Placeholder.js +1 -1
- package/dist/cssm/components/Placeholder/Placeholder.js.map +1 -1
- package/dist/cssm/components/PlatformProvider/PlatformProvider.js +1 -1
- package/dist/cssm/components/PlatformProvider/PlatformProvider.js.map +1 -1
- package/dist/cssm/components/PopoutRoot/PopoutRoot.js +5 -5
- package/dist/cssm/components/PopoutRoot/PopoutRoot.js.map +1 -1
- package/dist/cssm/components/PopoutWrapper/PopoutWrapper.js +2 -2
- package/dist/cssm/components/PopoutWrapper/PopoutWrapper.js.map +1 -1
- package/dist/cssm/components/Popover/Popover.js +3 -3
- package/dist/cssm/components/Popover/Popover.js.map +1 -1
- package/dist/cssm/components/Popper/Popper.js +3 -3
- package/dist/cssm/components/Popper/Popper.js.map +1 -1
- package/dist/cssm/components/PopperArrow/PopperArrow.js +1 -1
- package/dist/cssm/components/PopperArrow/PopperArrow.js.map +1 -1
- package/dist/cssm/components/Progress/Progress.js +1 -1
- package/dist/cssm/components/Progress/Progress.js.map +1 -1
- package/dist/cssm/components/PromoBanner/PromoBanner.js +1 -1
- package/dist/cssm/components/PromoBanner/PromoBanner.js.map +1 -1
- package/dist/cssm/components/PullToRefresh/PullToRefresh.js +6 -6
- package/dist/cssm/components/PullToRefresh/PullToRefresh.js.map +1 -1
- package/dist/cssm/components/PullToRefresh/PullToRefreshSpinner.js +1 -1
- package/dist/cssm/components/PullToRefresh/PullToRefreshSpinner.js.map +1 -1
- package/dist/cssm/components/Radio/Radio.js +2 -2
- package/dist/cssm/components/Radio/Radio.js.map +1 -1
- package/dist/cssm/components/RadioGroup/RadioGroup.js +1 -1
- package/dist/cssm/components/RadioGroup/RadioGroup.js.map +1 -1
- package/dist/cssm/components/RangeSlider/RangeSlider.js +2 -2
- package/dist/cssm/components/RangeSlider/RangeSlider.js.map +1 -1
- package/dist/cssm/components/Removable/Removable.js +4 -4
- package/dist/cssm/components/Removable/Removable.js.map +1 -1
- package/dist/cssm/components/RichCell/RichCell.js +2 -2
- package/dist/cssm/components/RichCell/RichCell.js.map +1 -1
- package/dist/cssm/components/RichCell/RichCellIcon/RichCellIcon.js +1 -1
- package/dist/cssm/components/RichCell/RichCellIcon/RichCellIcon.js.map +1 -1
- package/dist/cssm/components/RichTooltip/RichTooltip.js +1 -1
- package/dist/cssm/components/RichTooltip/RichTooltip.js.map +1 -1
- package/dist/cssm/components/Root/Root.d.ts +1 -0
- package/dist/cssm/components/Root/Root.js +5 -5
- package/dist/cssm/components/Root/Root.js.map +1 -1
- package/dist/cssm/components/ScreenSpinner/ScreenSpinner.js +1 -1
- package/dist/cssm/components/ScreenSpinner/ScreenSpinner.js.map +1 -1
- package/dist/cssm/components/ScrollArrow/ScrollArrow.js +3 -3
- package/dist/cssm/components/ScrollArrow/ScrollArrow.js.map +1 -1
- package/dist/cssm/components/Search/Search.js +3 -3
- package/dist/cssm/components/Search/Search.js.map +1 -1
- package/dist/cssm/components/SegmentedControl/SegmentedControl.js +3 -3
- package/dist/cssm/components/SegmentedControl/SegmentedControl.js.map +1 -1
- package/dist/cssm/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.js +3 -3
- package/dist/cssm/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.js.map +1 -1
- package/dist/cssm/components/Select/Select.js +3 -3
- package/dist/cssm/components/Select/Select.js.map +1 -1
- package/dist/cssm/components/SelectMimicry/SelectMimicry.js +2 -2
- package/dist/cssm/components/SelectMimicry/SelectMimicry.js.map +1 -1
- package/dist/cssm/components/SelectTypography/SelectTypography.js +2 -2
- package/dist/cssm/components/SelectTypography/SelectTypography.js.map +1 -1
- package/dist/cssm/components/Separator/Separator.js +1 -1
- package/dist/cssm/components/Separator/Separator.js.map +1 -1
- package/dist/cssm/components/SimpleCell/Chevron/Chevron.d.ts +5 -0
- package/dist/cssm/components/SimpleCell/Chevron/Chevron.js +12 -0
- package/dist/cssm/components/SimpleCell/Chevron/Chevron.js.map +1 -0
- package/dist/cssm/components/SimpleCell/SimpleCell.d.ts +6 -2
- package/dist/cssm/components/SimpleCell/SimpleCell.js +15 -5
- package/dist/cssm/components/SimpleCell/SimpleCell.js.map +1 -1
- package/dist/cssm/components/SimpleCell/SimpleCell.module.css +5 -6
- package/dist/cssm/components/Slider/Slider.js +7 -7
- package/dist/cssm/components/Slider/Slider.js.map +1 -1
- package/dist/cssm/components/Slider/SliderThumb/SliderThumb.js +2 -2
- package/dist/cssm/components/Slider/SliderThumb/SliderThumb.js.map +1 -1
- package/dist/cssm/components/Slider/helpers.js.map +1 -1
- package/dist/cssm/components/Snackbar/Snackbar.js +4 -4
- package/dist/cssm/components/Snackbar/Snackbar.js.map +1 -1
- package/dist/cssm/components/Spacing/Spacing.js +1 -1
- package/dist/cssm/components/Spacing/Spacing.js.map +1 -1
- package/dist/cssm/components/Spinner/Spinner.d.ts +2 -1
- package/dist/cssm/components/Spinner/Spinner.js +19 -5
- package/dist/cssm/components/Spinner/Spinner.js.map +1 -1
- package/dist/cssm/components/Spinner/Spinner.module.css +0 -19
- package/dist/cssm/components/SplitCol/SplitCol.js +3 -3
- package/dist/cssm/components/SplitCol/SplitCol.js.map +1 -1
- package/dist/cssm/components/SplitCol/SplitColContext.js.map +1 -1
- package/dist/cssm/components/SplitLayout/SplitLayout.js +1 -1
- package/dist/cssm/components/SplitLayout/SplitLayout.js.map +1 -1
- package/dist/cssm/components/SubnavigationBar/SubnavigationBar.js +1 -1
- package/dist/cssm/components/SubnavigationBar/SubnavigationBar.js.map +1 -1
- package/dist/cssm/components/SubnavigationButton/SubnavigationButton.js +3 -3
- package/dist/cssm/components/SubnavigationButton/SubnavigationButton.js.map +1 -1
- package/dist/cssm/components/Switch/Switch.js +3 -3
- package/dist/cssm/components/Switch/Switch.js.map +1 -1
- package/dist/cssm/components/Tabbar/Tabbar.js +1 -1
- package/dist/cssm/components/Tabbar/Tabbar.js.map +1 -1
- package/dist/cssm/components/TabbarItem/TabbarItem.js +2 -2
- package/dist/cssm/components/TabbarItem/TabbarItem.js.map +1 -1
- package/dist/cssm/components/Tabs/Tabs.js +2 -2
- package/dist/cssm/components/Tabs/Tabs.js.map +1 -1
- package/dist/cssm/components/TabsItem/TabsItem.js +3 -3
- package/dist/cssm/components/TabsItem/TabsItem.js.map +1 -1
- package/dist/cssm/components/Tappable/Tappable.js +10 -10
- package/dist/cssm/components/Tappable/Tappable.js.map +1 -1
- package/dist/cssm/components/Tappable/Tappable.module.css +2 -0
- package/dist/cssm/components/TextTooltip/TextTooltip.js +1 -1
- package/dist/cssm/components/TextTooltip/TextTooltip.js.map +1 -1
- package/dist/cssm/components/Textarea/Textarea.js +2 -2
- package/dist/cssm/components/Textarea/Textarea.js.map +1 -1
- package/dist/cssm/components/Tooltip/Tooltip.js +5 -5
- package/dist/cssm/components/Tooltip/Tooltip.js.map +1 -1
- package/dist/cssm/components/Tooltip/TooltipContainer.js +1 -1
- package/dist/cssm/components/Tooltip/TooltipContainer.js.map +1 -1
- package/dist/cssm/components/Touch/Touch.js +4 -4
- package/dist/cssm/components/Touch/Touch.js.map +1 -1
- package/dist/cssm/components/Touch/TouchContext.js.map +1 -1
- package/dist/cssm/components/Typography/Caption/Caption.js +1 -1
- package/dist/cssm/components/Typography/Caption/Caption.js.map +1 -1
- package/dist/cssm/components/Typography/Footnote/Footnote.js +1 -1
- package/dist/cssm/components/Typography/Footnote/Footnote.js.map +1 -1
- package/dist/cssm/components/Typography/Headline/Headline.js +2 -2
- package/dist/cssm/components/Typography/Headline/Headline.js.map +1 -1
- package/dist/cssm/components/Typography/Paragraph/Paragraph.js +1 -1
- package/dist/cssm/components/Typography/Paragraph/Paragraph.js.map +1 -1
- package/dist/cssm/components/Typography/Subhead/Subhead.js +2 -2
- package/dist/cssm/components/Typography/Subhead/Subhead.js.map +1 -1
- package/dist/cssm/components/Typography/Text/Text.js +2 -2
- package/dist/cssm/components/Typography/Text/Text.js.map +1 -1
- package/dist/cssm/components/Typography/Title/Title.js +1 -1
- package/dist/cssm/components/Typography/Title/Title.js.map +1 -1
- package/dist/cssm/components/Typography/Typography.js +1 -1
- package/dist/cssm/components/Typography/Typography.js.map +1 -1
- package/dist/cssm/components/UsersStack/UsersStack.js +2 -2
- package/dist/cssm/components/UsersStack/UsersStack.js.map +1 -1
- package/dist/cssm/components/View/View.d.ts +1 -0
- package/dist/cssm/components/View/View.js +3 -3
- package/dist/cssm/components/View/View.js.map +1 -1
- package/dist/cssm/components/View/ViewInfinite.js +2 -2
- package/dist/cssm/components/View/ViewInfinite.js.map +1 -1
- package/dist/cssm/components/View/utils.js.map +1 -1
- package/dist/cssm/components/VisuallyHidden/VisuallyHidden.js +1 -1
- package/dist/cssm/components/VisuallyHidden/VisuallyHidden.js.map +1 -1
- package/dist/cssm/components/VisuallyHiddenInput/VisuallyHiddenInput.js +1 -1
- package/dist/cssm/components/VisuallyHiddenInput/VisuallyHiddenInput.js.map +1 -1
- package/dist/cssm/components/WriteBar/WriteBar.js +1 -1
- package/dist/cssm/components/WriteBar/WriteBar.js.map +1 -1
- package/dist/cssm/components/WriteBarIcon/WriteBarIcon.js +1 -1
- package/dist/cssm/components/WriteBarIcon/WriteBarIcon.js.map +1 -1
- package/dist/cssm/helpers/appearance.js +1 -1
- package/dist/cssm/helpers/appearance.js.map +1 -1
- package/dist/cssm/helpers/generateVKUITokensClassName.js.map +1 -1
- package/dist/cssm/helpers/math.js.map +1 -1
- package/dist/cssm/helpers/range.js.map +1 -1
- package/dist/cssm/hoc/withContext.js.map +1 -1
- package/dist/cssm/hoc/withPlatform.js +1 -1
- package/dist/cssm/hoc/withPlatform.js.map +1 -1
- package/dist/cssm/hooks/useAdaptivity.js.map +1 -1
- package/dist/cssm/hooks/useAdaptivityConditionalRender/constants.js.map +1 -1
- package/dist/cssm/hooks/useAdaptivityConditionalRender/helpers.js.map +1 -1
- package/dist/cssm/hooks/useAdaptivityConditionalRender/useAdaptivityConditionalRender.js +1 -1
- package/dist/cssm/hooks/useAdaptivityConditionalRender/useAdaptivityConditionalRender.js.map +1 -1
- package/dist/cssm/hooks/useAdaptivityHasHover.js +1 -1
- package/dist/cssm/hooks/useAdaptivityHasHover.js.map +1 -1
- package/dist/cssm/hooks/useAdaptivityHasPointer.js +1 -1
- package/dist/cssm/hooks/useAdaptivityHasPointer.js.map +1 -1
- package/dist/cssm/hooks/useAdaptivityWithJSMediaQueries.js +1 -1
- package/dist/cssm/hooks/useAdaptivityWithJSMediaQueries.js.map +1 -1
- package/dist/cssm/hooks/useAppearance.js +1 -1
- package/dist/cssm/hooks/useAppearance.js.map +1 -1
- package/dist/cssm/hooks/useAutoDetectAppearance.js +2 -2
- package/dist/cssm/hooks/useAutoDetectAppearance.js.map +1 -1
- package/dist/cssm/hooks/useBooleanState.js.map +1 -1
- package/dist/cssm/hooks/useBridgeAdaptivity.js +2 -2
- package/dist/cssm/hooks/useBridgeAdaptivity.js.map +1 -1
- package/dist/cssm/hooks/useCalendar.js +1 -1
- package/dist/cssm/hooks/useCalendar.js.map +1 -1
- package/dist/cssm/hooks/useChipsInput.js +1 -1
- package/dist/cssm/hooks/useChipsInput.js.map +1 -1
- package/dist/cssm/hooks/useChipsSelect.js +2 -2
- package/dist/cssm/hooks/useChipsSelect.js.map +1 -1
- package/dist/cssm/hooks/useDateInput.js +4 -4
- package/dist/cssm/hooks/useDateInput.js.map +1 -1
- package/dist/cssm/hooks/useEffectDev.js.map +1 -1
- package/dist/cssm/hooks/useEnsuredControl.js +2 -2
- package/dist/cssm/hooks/useEnsuredControl.js.map +1 -1
- package/dist/cssm/hooks/useEventListener.js.map +1 -1
- package/dist/cssm/hooks/useExternRef.js.map +1 -1
- package/dist/cssm/hooks/useFocusVisible.js +1 -1
- package/dist/cssm/hooks/useFocusVisible.js.map +1 -1
- package/dist/cssm/hooks/useFocusWithin.js +1 -1
- package/dist/cssm/hooks/useFocusWithin.js.map +1 -1
- package/dist/cssm/hooks/useGlobalEventListener.js.map +1 -1
- package/dist/cssm/hooks/useId.js.map +1 -1
- package/dist/cssm/hooks/useInsets.js +2 -2
- package/dist/cssm/hooks/useInsets.js.map +1 -1
- package/dist/cssm/hooks/useIsClient.js.map +1 -1
- package/dist/cssm/hooks/useKeyboard.js +2 -2
- package/dist/cssm/hooks/useKeyboard.js.map +1 -1
- package/dist/cssm/hooks/useKeyboardInputTracker.js +1 -1
- package/dist/cssm/hooks/useKeyboardInputTracker.js.map +1 -1
- package/dist/cssm/hooks/useMediaQueries.js +1 -1
- package/dist/cssm/hooks/useMediaQueries.js.map +1 -1
- package/dist/cssm/hooks/useObjectMemo.js.map +1 -1
- package/dist/cssm/hooks/useOrientationChange.js +1 -1
- package/dist/cssm/hooks/useOrientationChange.js.map +1 -1
- package/dist/cssm/hooks/usePagination.js +1 -1
- package/dist/cssm/hooks/usePagination.js.map +1 -1
- package/dist/cssm/hooks/usePatchChildrenRef.js.map +1 -1
- package/dist/cssm/hooks/usePlatform.js +1 -1
- package/dist/cssm/hooks/usePlatform.js.map +1 -1
- package/dist/cssm/hooks/usePrevious.js.map +1 -1
- package/dist/cssm/hooks/useTimeout.js +1 -1
- package/dist/cssm/hooks/useTimeout.js.map +1 -1
- package/dist/cssm/hooks/useTodayDate.js +1 -1
- package/dist/cssm/hooks/useTodayDate.js.map +1 -1
- package/dist/cssm/hooks/useWaitTransitionFinish.js +1 -1
- package/dist/cssm/hooks/useWaitTransitionFinish.js.map +1 -1
- package/dist/cssm/index.d.ts +3 -1
- package/dist/cssm/index.js +1 -0
- package/dist/cssm/index.js.map +1 -1
- package/dist/cssm/lib/SSR.js +1 -1
- package/dist/cssm/lib/SSR.js.map +1 -1
- package/dist/cssm/lib/accessibility.js +2 -2
- package/dist/cssm/lib/accessibility.js.map +1 -1
- package/dist/cssm/lib/adaptivity/constants.js.map +1 -1
- package/dist/cssm/lib/adaptivity/functions.js.map +1 -1
- package/dist/cssm/lib/animate.js +1 -1
- package/dist/cssm/lib/animate.js.map +1 -1
- package/dist/cssm/lib/browser.js +1 -1
- package/dist/cssm/lib/browser.js.map +1 -1
- package/dist/cssm/lib/calendar.js.map +1 -1
- package/dist/cssm/lib/callMultiple.js.map +1 -1
- package/dist/cssm/lib/date.js.map +1 -1
- package/dist/cssm/lib/dom.js.map +1 -1
- package/dist/cssm/lib/floating/adapters.js +1 -1
- package/dist/cssm/lib/floating/adapters.js.map +1 -1
- package/dist/cssm/lib/floating/functions.js.map +1 -1
- package/dist/cssm/lib/fx.js.map +1 -1
- package/dist/cssm/lib/getNavId.js.map +1 -1
- package/dist/cssm/lib/isRefObject.js.map +1 -1
- package/dist/cssm/lib/matchMedia.js.map +1 -1
- package/dist/cssm/lib/platform.js.map +1 -1
- package/dist/cssm/lib/removeObjectKeys.js.map +1 -1
- package/dist/cssm/lib/select.js.map +1 -1
- package/dist/cssm/lib/styles.js.map +1 -1
- package/dist/cssm/lib/supportEvents.js.map +1 -1
- package/dist/cssm/lib/taptic.js.map +1 -1
- package/dist/cssm/lib/testing.js.map +1 -1
- package/dist/cssm/lib/tokensClassProvider.js +1 -1
- package/dist/cssm/lib/tokensClassProvider.js.map +1 -1
- package/dist/cssm/lib/touch.js.map +1 -1
- package/dist/cssm/lib/useIsomorphicLayoutEffect.js.map +1 -1
- package/dist/cssm/lib/utils.js.map +1 -1
- package/dist/cssm/lib/warnOnce.js.map +1 -1
- package/dist/cssm/shared/breakpoints.js.map +1 -1
- package/dist/cssm/styles/constants.css +3 -0
- package/dist/cssm/styles/customMedias.generated.css +23 -0
- package/dist/cssm/styles/themes.css +3 -3
- package/dist/helpers/appearance.js.map +1 -1
- package/dist/helpers/generateVKUITokensClassName.js.map +1 -1
- package/dist/helpers/math.js.map +1 -1
- package/dist/helpers/range.js.map +1 -1
- package/dist/hoc/withContext.js.map +1 -1
- package/dist/hooks/useAdaptivity.js.map +1 -1
- package/dist/hooks/useAdaptivityConditionalRender/constants.js.map +1 -1
- package/dist/hooks/useAdaptivityConditionalRender/helpers.js.map +1 -1
- package/dist/hooks/useAdaptivityConditionalRender/useAdaptivityConditionalRender.js.map +1 -1
- package/dist/hooks/useAdaptivityHasHover.js.map +1 -1
- package/dist/hooks/useAdaptivityHasPointer.js.map +1 -1
- package/dist/hooks/useAdaptivityWithJSMediaQueries.js.map +1 -1
- package/dist/hooks/useAutoDetectAppearance.js +2 -1
- package/dist/hooks/useAutoDetectAppearance.js.map +1 -1
- package/dist/hooks/useBooleanState.js.map +1 -1
- package/dist/hooks/useBridgeAdaptivity.js.map +1 -1
- package/dist/hooks/useCalendar.js +6 -3
- package/dist/hooks/useCalendar.js.map +1 -1
- package/dist/hooks/useChipsInput.js +2 -1
- package/dist/hooks/useChipsInput.js.map +1 -1
- package/dist/hooks/useChipsSelect.js.map +1 -1
- package/dist/hooks/useDateInput.js +5 -3
- package/dist/hooks/useDateInput.js.map +1 -1
- package/dist/hooks/useEffectDev.js.map +1 -1
- package/dist/hooks/useEnsuredControl.js.map +1 -1
- package/dist/hooks/useEventListener.js.map +1 -1
- package/dist/hooks/useExternRef.js.map +1 -1
- package/dist/hooks/useFocusVisible.js.map +1 -1
- package/dist/hooks/useFocusWithin.js.map +1 -1
- package/dist/hooks/useGlobalEventListener.js.map +1 -1
- package/dist/hooks/useId.js.map +1 -1
- package/dist/hooks/useInsets.js.map +1 -1
- package/dist/hooks/useIsClient.js.map +1 -1
- package/dist/hooks/useKeyboard.js +4 -4
- package/dist/hooks/useKeyboard.js.map +1 -1
- package/dist/hooks/useKeyboardInputTracker.js.map +1 -1
- package/dist/hooks/useMediaQueries.js.map +1 -1
- package/dist/hooks/useObjectMemo.js.map +1 -1
- package/dist/hooks/useOrientationChange.js +1 -1
- package/dist/hooks/useOrientationChange.js.map +1 -1
- package/dist/hooks/usePagination.js.map +1 -1
- package/dist/hooks/usePatchChildrenRef.js +2 -1
- package/dist/hooks/usePatchChildrenRef.js.map +1 -1
- package/dist/hooks/usePrevious.js.map +1 -1
- package/dist/hooks/useTimeout.js +2 -1
- package/dist/hooks/useTimeout.js.map +1 -1
- package/dist/hooks/useTodayDate.js.map +1 -1
- package/dist/hooks/useWaitTransitionFinish.js +4 -2
- package/dist/hooks/useWaitTransitionFinish.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/SSR.js.map +1 -1
- package/dist/lib/accessibility.js.map +1 -1
- package/dist/lib/adaptivity/constants.js.map +1 -1
- package/dist/lib/adaptivity/functions.js.map +1 -1
- package/dist/lib/animate.js.map +1 -1
- package/dist/lib/browser.js.map +1 -1
- package/dist/lib/calendar.js.map +1 -1
- package/dist/lib/callMultiple.js.map +1 -1
- package/dist/lib/date.js.map +1 -1
- package/dist/lib/dom.js.map +1 -1
- package/dist/lib/floating/adapters.js.map +1 -1
- package/dist/lib/floating/functions.js.map +1 -1
- package/dist/lib/fx.js.map +1 -1
- package/dist/lib/getNavId.js.map +1 -1
- package/dist/lib/isRefObject.js.map +1 -1
- package/dist/lib/matchMedia.js.map +1 -1
- package/dist/lib/offset.js +6 -5
- package/dist/lib/offset.js.map +1 -1
- package/dist/lib/platform.js.map +1 -1
- package/dist/lib/polyfills.js.map +1 -1
- package/dist/lib/removeObjectKeys.js.map +1 -1
- package/dist/lib/select.js +2 -2
- package/dist/lib/select.js.map +1 -1
- package/dist/lib/styles.js.map +1 -1
- package/dist/lib/supportEvents.js.map +1 -1
- package/dist/lib/taptic.js.map +1 -1
- package/dist/lib/testing.js.map +1 -1
- package/dist/lib/tokensClassProvider.js.map +1 -1
- package/dist/lib/touch.js.map +1 -1
- package/dist/lib/useIsomorphicLayoutEffect.js.map +1 -1
- package/dist/lib/utils.js.map +1 -1
- package/dist/lib/warnOnce.js.map +1 -1
- package/dist/shared/breakpoints.js.map +1 -1
- package/dist/vkui.css +11 -10
- package/dist/vkui.css.map +1 -1
- package/dist/vkui.js.tmp +3108 -2238
- package/package.json +8 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/ModalRoot/ModalRoot.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { clamp } from '../../helpers/math';\nimport { withContext } from '../../hoc/withContext';\nimport { withPlatform } from '../../hoc/withPlatform';\nimport { DOMProps, withDOM } from '../../lib/dom';\nimport { getNavId } from '../../lib/getNavId';\nimport { Platform } from '../../lib/platform';\nimport { setTransformStyle } from '../../lib/styles';\nimport { transitionEvent } from '../../lib/supportEvents';\nimport { rubber } from '../../lib/touch';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { ConfigProviderContext, WebviewType } from '../ConfigProvider/ConfigProviderContext';\nimport { FocusTrap } from '../FocusTrap/FocusTrap';\nimport { Touch, TouchEvent } from '../Touch/Touch';\nimport TouchRootContext from '../Touch/TouchContext';\nimport { ModalRootContext, ModalRootContextInterface } from './ModalRootContext';\nimport { MODAL_PAGE_DEFAULT_PERCENT_HEIGHT } from './constants';\nimport { ModalRootWithDOMProps, ModalsStateEntry, ModalType, TranslateRange } from './types';\nimport { ModalTransitionProps, withModalManager } from './useModalManager';\nimport styles from './ModalRoot.module.css';\n\nconst warn = warnOnce('ModalRoot');\n\nfunction numberInRange(number: number, range: TranslateRange | undefined) {\n if (!range) {\n return false;\n }\n return number >= range[0] && number <= range[1];\n}\n\nfunction rangeTranslate(number: number) {\n return clamp(number, 0, 98);\n}\n\ninterface ModalRootState {\n touchDown?: boolean;\n dragging?: boolean;\n modalOpenedLog: string[];\n}\n\nclass ModalRootTouchComponent extends React.Component<\n ModalRootWithDOMProps & DOMProps & ModalTransitionProps,\n ModalRootState\n> {\n constructor(props: ModalRootWithDOMProps & ModalTransitionProps) {\n super(props);\n this.state = {\n touchDown: false,\n dragging: false,\n modalOpenedLog: [],\n };\n\n this.maskElementRef = React.createRef();\n\n this.modalRootContext = {\n updateModalHeight: this.updateModalHeight,\n registerModal: ({ id, ...data }) => Object.assign(this.props.getModalState(id) ?? {}, data),\n onClose: () => this.props.onExit(),\n isInsideModal: true,\n };\n\n this.frameIds = {};\n }\n\n private documentScrolling = false;\n private readonly maskElementRef: React.RefObject<HTMLDivElement>;\n private readonly viewportRef = React.createRef<HTMLDivElement>();\n private maskAnimationFrame: number | undefined = undefined;\n private readonly modalRootContext: ModalRootContextInterface;\n private readonly frameIds: {\n [index: string]: number;\n };\n private restoreFocusTo: HTMLElement | undefined | null = undefined;\n\n get timeout(): number {\n return this.props.platform === Platform.IOS ? 400 : 320;\n }\n\n get document(): Document {\n return this.props.document as Document;\n }\n\n get window(): Window {\n return this.props.window as Window;\n }\n\n getModals() {\n return React.Children.toArray(this.props.children) as React.ReactElement[];\n }\n\n componentDidMount() {\n // Отслеживаем изменение размеров viewport\n this.window?.addEventListener('resize', this.updateModalHeight, false);\n }\n\n componentWillUnmount() {\n this.toggleDocumentScrolling(true);\n this.window.removeEventListener('resize', this.updateModalHeight, false);\n }\n\n componentDidUpdate(prevProps: ModalRootWithDOMProps & ModalTransitionProps) {\n // transition phase 2: animate exiting modal\n if (this.props.exitingModal && this.props.exitingModal !== prevProps.exitingModal) {\n this.closeModal(this.props.exitingModal);\n }\n\n // transition phase 3: animate entering modal\n if (this.props.enteringModal && this.props.enteringModal !== prevProps.enteringModal) {\n const { enteringModal } = this.props;\n const enteringState = this.props.getModalState(enteringModal);\n this.props.onEnter();\n this.waitTransitionFinish(enteringState, () => {\n if (enteringState?.innerElement) {\n enteringState.innerElement.style.transitionDelay = '';\n }\n this.props.onEntered(enteringModal);\n });\n\n if (enteringState?.innerElement) {\n enteringState.innerElement.style.transitionDelay = this.props.delayEnter\n ? `${this.timeout}ms`\n : '';\n this.animateTranslate(enteringState, enteringState.translateY);\n }\n }\n\n // focus restoration\n if (this.props.activeModal && !prevProps.activeModal) {\n this.restoreFocusTo = this.document.activeElement as HTMLElement;\n }\n if (!this.props.activeModal && !this.props.exitingModal && this.restoreFocusTo) {\n this.restoreFocusTo.focus();\n this.restoreFocusTo = null;\n }\n\n this.toggleDocumentScrolling(!this.props.activeModal && !this.props.exitingModal);\n }\n\n /* Отключает скролл документа */\n toggleDocumentScrolling(enabled: boolean) {\n if (this.documentScrolling === enabled) {\n return;\n }\n this.documentScrolling = enabled;\n\n if (enabled) {\n // Здесь нужен последний аргумент с такими же параметрами, потому что\n // некоторые браузеры на странных вендорах типа Meizu не удаляют обработчик.\n // https://github.com/VKCOM/VKUI/issues/444\n this.window.removeEventListener('touchmove', this.preventTouch, {\n // @ts-expect-error: TS2769 В интерфейсе EventListenerOptions нет поля passive\n passive: false,\n });\n } else {\n this.window.addEventListener('touchmove', this.preventTouch, {\n passive: false,\n });\n }\n }\n\n preventTouch = (event: any) => {\n if (!event) {\n return false;\n }\n while (event.originalEvent) {\n event = event.originalEvent;\n }\n if (event.preventDefault) {\n event.preventDefault();\n }\n return false;\n };\n\n checkPageContentHeight() {\n const modalState = this.props.getModalState(this.props.activeModal);\n\n if (modalState?.type === ModalType.PAGE && modalState?.modalElement) {\n const prevModalState = { ...modalState };\n initPageModal(modalState);\n const currentModalState = { ...modalState };\n\n let needAnimate = false;\n\n if (prevModalState.expandable === currentModalState.expandable) {\n if (prevModalState.translateYFrom !== currentModalState.translateYFrom) {\n needAnimate = true;\n }\n } else {\n needAnimate = true;\n }\n\n if (needAnimate) {\n this.animateTranslate(modalState, modalState.translateY);\n }\n }\n }\n\n updateModalHeight = () => {\n const modalState = this.props.getModalState(this.props.activeModal);\n\n if (modalState && modalState.type === ModalType.PAGE) {\n if (this.props.enteringModal) {\n this.waitTransitionFinish(modalState, () => {\n requestAnimationFrame(() => this.checkPageContentHeight());\n });\n } else {\n requestAnimationFrame(() => this.checkPageContentHeight());\n }\n }\n };\n\n closeModal(id: string) {\n // Сбрасываем состояния, которые могут помешать закрытию модального окна\n this.setState({ touchDown: false });\n\n const prevModalState = this.props.getModalState(id);\n\n if (!prevModalState) {\n id && warn(`closeActiveModal: модальное окно (страница) ${id} не существует`, 'error');\n return;\n }\n if (!this.state.modalOpenedLog.length) {\n this.setState((prevState) => ({\n modalOpenedLog: [...prevState.modalOpenedLog, id],\n }));\n }\n const nextModalState = this.props.getModalState(this.props.activeModal);\n const nextIsPage = !!nextModalState && nextModalState.type === ModalType.PAGE;\n\n const prevIsPage = !!prevModalState && prevModalState.type === ModalType.PAGE;\n this.waitTransitionFinish(prevModalState, () => this.props.onExited(id));\n const exitTranslate =\n prevIsPage &&\n nextIsPage &&\n (prevModalState.translateY ?? 0) <= (nextModalState?.translateYFrom ?? 0) &&\n !this.props.isBack\n ? (nextModalState?.translateYFrom ?? 0) + 10\n : 100;\n this.animateTranslate(prevModalState, exitTranslate);\n\n if (!nextModalState) {\n // NOTE: was only for clean exit\n this.setMaskOpacity(prevModalState, 0);\n this.setState({ modalOpenedLog: [] });\n prevModalState.translateY = undefined;\n } else if (nextModalState.id && !this.state.modalOpenedLog.includes(nextModalState.id)) {\n nextModalState.translateY = undefined;\n this.setState((prevState) => ({\n modalOpenedLog: [...prevState.modalOpenedLog, nextModalState.id!],\n }));\n }\n }\n\n onTouchMove = (e: TouchEvent) => {\n if (this.props.exitingModal) {\n return;\n }\n const modalState = this.props.getModalState(this.props.activeModal);\n if (!modalState) {\n return;\n }\n\n if (modalState.type === ModalType.PAGE) {\n return this.onPageTouchMove(e, modalState);\n }\n\n if (modalState.type === ModalType.CARD) {\n return this.onCardTouchMove(e, modalState);\n }\n };\n\n onPageTouchMove(event: TouchEvent, modalState: ModalsStateEntry) {\n const { shiftY, originalEvent } = event;\n const target = originalEvent.target as HTMLElement;\n\n if (!event.isY) {\n if (this.viewportRef.current?.contains(target)) {\n originalEvent.preventDefault();\n }\n return;\n }\n\n if (!modalState.innerElement?.contains(target)) {\n return originalEvent.preventDefault();\n }\n\n originalEvent.stopPropagation();\n\n const { expandable, contentScrolled, collapsed, expanded } = modalState;\n\n if (!this.state.touchDown) {\n modalState.touchStartContentScrollTop = modalState.contentElement?.scrollTop ?? 0;\n this.setState({ touchDown: true });\n }\n\n if (contentScrolled) {\n return;\n }\n\n if (modalState.touchMovePositive === null) {\n modalState.touchMovePositive = shiftY > 0;\n }\n\n if (\n !modalState.expandable ||\n collapsed ||\n (expanded && modalState.touchMovePositive && modalState.touchStartContentScrollTop === 0) ||\n modalState.headerElement?.contains(target)\n ) {\n originalEvent.preventDefault();\n\n if ((!expandable && shiftY < 0) || !this.window) {\n return;\n }\n\n !this.state.dragging && this.setState({ dragging: true });\n\n const shiftYPercent = (shiftY / this.window.innerHeight) * 100;\n const shiftYCurrent = rubber(shiftYPercent, 72, 0.8, this.props.platform !== Platform.IOS);\n\n modalState.touchShiftYPercent = shiftYPercent;\n modalState.translateYCurrent = rangeTranslate((modalState.translateY ?? 0) + shiftYCurrent);\n\n this.animateTranslate(modalState, modalState.translateYCurrent);\n this.setMaskOpacity(modalState);\n }\n }\n\n onCardTouchMove(event: TouchEvent, modalState: ModalsStateEntry) {\n const { originalEvent, shiftY } = event;\n const target = originalEvent.target as HTMLElement;\n if (modalState.innerElement?.contains(target)) {\n if (!this.state.touchDown) {\n this.setState({ touchDown: true, dragging: true });\n }\n\n const shiftYPercent = (shiftY / modalState.innerElement.offsetHeight) * 100;\n const shiftYCurrent = rubber(shiftYPercent, 72, 1.2, this.props.platform !== Platform.IOS);\n\n modalState.touchShiftYPercent = shiftYPercent;\n modalState.translateYCurrent = Math.max(0, (modalState.translateY ?? 0) + shiftYCurrent);\n\n this.animateTranslate(modalState, modalState.translateYCurrent);\n this.setMaskOpacity(modalState);\n }\n }\n\n onTouchEnd = (e: TouchEvent) => {\n const modalState = this.props.getModalState(this.props.activeModal);\n\n if (modalState?.type === ModalType.PAGE) {\n return this.onPageTouchEnd(e, modalState);\n }\n\n if (modalState?.type === ModalType.CARD) {\n return this.onCardTouchEnd(e, modalState);\n }\n };\n\n onPageTouchEnd(event: TouchEvent, modalState: ModalsStateEntry) {\n const { startY, shiftY } = event;\n\n modalState.contentScrolled = false;\n modalState.touchMovePositive = null;\n\n let setStateCallback;\n\n if (this.state.dragging && this.window) {\n const shiftYEndPercent = ((startY + shiftY) / this.window.innerHeight) * 100;\n\n let translateY = modalState.translateYCurrent ?? 0;\n const expectTranslateY =\n (translateY / event.duration) *\n 240 *\n 0.6 *\n ((modalState.touchShiftYPercent ?? 0) < 0 ? -1 : 1);\n translateY = rangeTranslate(translateY + expectTranslateY);\n\n if (modalState.settlingHeight !== 100) {\n if (numberInRange(translateY, modalState.expandedRange)) {\n translateY = modalState.expandedRange?.[0] ?? 0;\n } else if (numberInRange(translateY, modalState.collapsedRange)) {\n translateY = modalState.translateYFrom ?? 0;\n } else if (numberInRange(translateY, modalState.hiddenRange)) {\n translateY = 100;\n } else {\n translateY = modalState.translateYFrom ?? 0;\n }\n } else {\n if (numberInRange(translateY, [0, 25])) {\n translateY = 0;\n } else {\n translateY = 100;\n }\n }\n\n if (translateY !== 100 && shiftYEndPercent >= 75) {\n translateY = 100;\n }\n\n modalState.translateY = translateY;\n modalState.translateYCurrent = translateY;\n modalState.collapsed = translateY > 0 && translateY < shiftYEndPercent;\n modalState.expanded = translateY === 0;\n modalState.hidden = translateY === 100;\n\n if (modalState.hidden) {\n this.props.onExit();\n }\n\n setStateCallback = () => {\n if (!modalState.hidden) {\n this.animateTranslate(modalState, modalState.translateY);\n }\n\n this.setMaskOpacity(modalState);\n };\n }\n\n this.setState(\n {\n touchDown: false,\n dragging: false,\n },\n setStateCallback,\n );\n }\n\n onCardTouchEnd({ duration }: TouchEvent, modalState: ModalsStateEntry) {\n let setStateCallback;\n\n if (this.state.dragging) {\n let translateY = modalState.translateYCurrent ?? 0;\n\n const expectTranslateY =\n (translateY / duration) * 240 * 0.6 * ((modalState.touchShiftYPercent ?? 0) < 0 ? -1 : 1);\n translateY = Math.max(0, translateY + expectTranslateY);\n\n if (translateY >= 30) {\n translateY = 100;\n } else {\n translateY = 0;\n }\n\n modalState.translateY = translateY;\n modalState.hidden = translateY === 100;\n\n if (modalState.hidden) {\n this.props.onExit();\n }\n\n setStateCallback = () => {\n if (!modalState.hidden) {\n this.animateTranslate(modalState, modalState.translateY);\n }\n\n this.setMaskOpacity(modalState);\n };\n }\n\n this.setState(\n {\n touchDown: false,\n dragging: false,\n },\n setStateCallback,\n );\n }\n\n onScroll = (e: React.SyntheticEvent) => {\n const activeModal = this.props.activeModal;\n\n const target = e.target as HTMLElement;\n\n if (!activeModal) {\n return;\n }\n const modalState = this.props.getModalState(activeModal);\n if (modalState?.type === ModalType.PAGE && modalState?.contentElement?.contains(target)) {\n modalState.contentScrolled = true;\n\n if (modalState.contentScrollStopTimeout) {\n clearTimeout(modalState.contentScrollStopTimeout);\n }\n\n modalState.contentScrollStopTimeout = setTimeout(() => {\n if (modalState.contentScrolled) {\n modalState.contentScrolled = false;\n }\n }, 250);\n }\n };\n\n waitTransitionFinish(modalState: ModalsStateEntry | undefined, eventHandler: () => void) {\n if (transitionEvent.supported) {\n const onceHandler = () => {\n modalState?.innerElement?.removeEventListener(transitionEvent.name as string, onceHandler);\n eventHandler();\n };\n\n modalState?.innerElement?.addEventListener(transitionEvent.name as string, onceHandler);\n } else {\n setTimeout(eventHandler, this.timeout);\n }\n }\n\n /**\n * Анимирует сдвиг модалки\n *\n * @param {ModalsStateEntry} modalState\n * @param {number} percent Процент сдвига: 0 – полностью открыта, 100 – полностью закрыта\n */\n animateTranslate(modalState: ModalsStateEntry, percent: number | undefined) {\n const frameId = `animateTranslateFrame${modalState.id}`;\n\n cancelAnimationFrame(this.frameIds[frameId]);\n\n this.frameIds[frameId] = requestAnimationFrame(() => {\n setTransformStyle(modalState.innerElement, `translate3d(0, ${percent}%, 0)`);\n });\n }\n\n /* Устанавливает прозрачность для полупрозрачной подложки */\n setMaskOpacity(modalState: ModalsStateEntry, forceOpacity: number | null = null) {\n if (forceOpacity === null && this.props.history?.[0] !== modalState.id) {\n return;\n }\n if (this.maskAnimationFrame) {\n cancelAnimationFrame(this.maskAnimationFrame);\n }\n this.maskAnimationFrame = requestAnimationFrame(() => {\n if (this.maskElementRef.current) {\n const { translateY = 0, translateYCurrent = 0 } = modalState;\n\n const opacity =\n forceOpacity === null\n ? 1 - (translateYCurrent - translateY) / (100 - translateY) || 0\n : forceOpacity;\n this.maskElementRef.current.style.opacity = clamp(opacity, 0, 100).toString();\n }\n });\n }\n\n render() {\n const { activeModal, exitingModal, enteringModal } = this.props;\n const { touchDown, dragging } = this.state;\n\n if (!activeModal && !exitingModal) {\n return null;\n }\n\n return (\n <TouchRootContext.Provider value={true}>\n <ModalRootContext.Provider value={this.modalRootContext}>\n <Touch\n className={classNames(\n styles['ModalRoot'],\n this.props.configProvider?.webviewType === WebviewType.VKAPPS &&\n styles['ModalRoot--vkapps'],\n touchDown &&\n classNames(styles['ModalRoot--touched'], 'vkuiInternalModalRoot--touched'),\n !!(enteringModal || exitingModal) &&\n classNames(styles['ModalRoot--switching'], 'vkuiInternalModalRoot--switching'),\n )}\n onMove={this.onTouchMove}\n onEnd={this.onTouchEnd}\n onScroll={this.onScroll}\n >\n <div\n className={styles['ModalRoot__mask']}\n onClick={this.props.onExit}\n ref={this.maskElementRef}\n />\n <div className={styles['ModalRoot__viewport']} ref={this.viewportRef}>\n {this.getModals().map((Modal) => {\n const modalId = getNavId(Modal.props, warn);\n const _modalState = this.props.getModalState(modalId);\n if ((modalId !== activeModal && modalId !== exitingModal) || !_modalState) {\n return null;\n }\n const modalState = { ..._modalState };\n\n const isPage = modalState.type === ModalType.PAGE;\n const key = `modal-${modalId}`;\n\n return (\n <FocusTrap\n key={key}\n getRootRef={(e) => {\n const modalState = this.props.getModalState(modalId);\n if (modalState) {\n modalState.modalElement = e;\n }\n }}\n onClose={this.props.onExit}\n timeout={this.timeout}\n className={classNames(\n styles['ModalRoot__modal'],\n\n dragging && 'vkuiInternalModalRoot__modal--dragging',\n\n isPage && modalState.expandable && 'vkuiInternalModalRoot__modal--expandable',\n isPage && modalState.collapsed && 'vkuiInternalModalRoot__modal--collapsed',\n )}\n restoreFocus={false}\n >\n {Modal}\n </FocusTrap>\n );\n })}\n </div>\n </Touch>\n </ModalRootContext.Provider>\n </TouchRootContext.Provider>\n );\n }\n}\n\nexport const ModalRootTouch = withContext(\n withPlatform(\n withDOM<ModalRootWithDOMProps>(withModalManager(initModal)(ModalRootTouchComponent)),\n ),\n ConfigProviderContext,\n 'configProvider',\n);\n\n/**\n * Инициализирует модалку перед анимацией открытия\n */\nfunction initModal(modalState: ModalsStateEntry) {\n switch (modalState.type) {\n case ModalType.PAGE:\n modalState.settlingHeight = modalState.settlingHeight || MODAL_PAGE_DEFAULT_PERCENT_HEIGHT;\n return initPageModal(modalState);\n case ModalType.CARD:\n return initCardModal(modalState);\n default:\n process.env.NODE_ENV === 'development' &&\n warn(`initActiveModal: modalState.type=\"${modalState.type}\" не поддерживается`, 'error');\n }\n}\n\nfunction initPageModal(modalState: ModalsStateEntry) {\n const { contentElement } = modalState;\n const contentHeight = (contentElement?.firstElementChild as HTMLElement).offsetHeight;\n\n let prevTranslateY = modalState.translateY;\n\n modalState.expandable =\n contentHeight > (contentElement?.clientHeight ?? 0) || modalState.settlingHeight === 100;\n\n let collapsed = false;\n let expanded = false;\n let translateYFrom;\n let translateY;\n let expandedRange: TranslateRange;\n let collapsedRange: TranslateRange;\n let hiddenRange: TranslateRange;\n\n if (modalState.expandable) {\n translateYFrom = 100 - (modalState.settlingHeight ?? 0);\n\n const shiftHalf = translateYFrom / 2;\n const visiblePart = 100 - translateYFrom;\n\n expandedRange = [0, shiftHalf];\n collapsedRange = [shiftHalf, translateYFrom + visiblePart / 4];\n hiddenRange = [translateYFrom + visiblePart / 4, 100];\n\n collapsed = translateYFrom > 0;\n expanded = translateYFrom <= 0;\n translateY = translateYFrom;\n } else {\n const headerHeight = modalState.headerElement?.offsetHeight ?? 0;\n const height = contentHeight + headerHeight;\n\n translateYFrom =\n 100 - (height / (modalState.innerElement?.parentElement?.offsetHeight ?? 0)) * 100;\n translateY = translateYFrom;\n\n expandedRange = [translateY, translateY + 25];\n collapsedRange = [translateY + 25, translateY + 25];\n hiddenRange = [translateY + 25, translateY + 100];\n }\n\n // Если модалка может открываться на весь экран, и новый сдвиг больше предыдущего, то откроем её на весь экран\n if (\n (modalState.expandable && translateY > (prevTranslateY ?? 100)) ||\n modalState.settlingHeight === 100\n ) {\n translateY = 0;\n }\n\n // Если модалка уже раскрыта обновляем состояния\n if (translateY === 0) {\n expanded = true;\n collapsed = false;\n }\n\n modalState.expandedRange = expandedRange;\n modalState.collapsedRange = collapsedRange;\n modalState.hiddenRange = hiddenRange;\n modalState.translateY = translateY;\n modalState.translateYFrom = translateYFrom;\n modalState.collapsed = collapsed;\n modalState.expanded = expanded;\n}\n\nfunction initCardModal(modalState: ModalsStateEntry) {\n modalState.translateY = 0;\n}\n"],"names":["React","classNames","clamp","withContext","withPlatform","withDOM","getNavId","Platform","setTransformStyle","transitionEvent","rubber","warnOnce","ConfigProviderContext","WebviewType","FocusTrap","Touch","TouchRootContext","ModalRootContext","MODAL_PAGE_DEFAULT_PERCENT_HEIGHT","ModalType","withModalManager","styles","warn","numberInRange","number","range","rangeTranslate","ModalRootTouchComponent","Component","constructor","props","state","touchDown","dragging","modalOpenedLog","maskElementRef","createRef","modalRootContext","updateModalHeight","registerModal","id","data","Object","assign","getModalState","onClose","onExit","isInsideModal","frameIds","documentScrolling","viewportRef","maskAnimationFrame","undefined","restoreFocusTo","timeout","platform","IOS","document","window","getModals","Children","toArray","children","componentDidMount","addEventListener","componentWillUnmount","toggleDocumentScrolling","removeEventListener","componentDidUpdate","prevProps","exitingModal","closeModal","enteringModal","enteringState","onEnter","waitTransitionFinish","innerElement","style","transitionDelay","onEntered","delayEnter","animateTranslate","translateY","activeModal","activeElement","focus","enabled","preventTouch","passive","event","originalEvent","preventDefault","checkPageContentHeight","modalState","type","PAGE","modalElement","prevModalState","initPageModal","currentModalState","needAnimate","expandable","translateYFrom","requestAnimationFrame","setState","length","prevState","nextModalState","nextIsPage","prevIsPage","onExited","exitTranslate","isBack","setMaskOpacity","includes","onTouchMove","e","onPageTouchMove","CARD","onCardTouchMove","shiftY","target","isY","current","contains","stopPropagation","contentScrolled","collapsed","expanded","touchStartContentScrollTop","contentElement","scrollTop","touchMovePositive","headerElement","shiftYPercent","innerHeight","shiftYCurrent","touchShiftYPercent","translateYCurrent","offsetHeight","Math","max","onTouchEnd","onPageTouchEnd","onCardTouchEnd","startY","setStateCallback","shiftYEndPercent","expectTranslateY","duration","settlingHeight","expandedRange","collapsedRange","hiddenRange","hidden","onScroll","contentScrollStopTimeout","clearTimeout","setTimeout","eventHandler","supported","onceHandler","name","percent","frameId","cancelAnimationFrame","forceOpacity","history","opacity","toString","render","Provider","value","className","configProvider","webviewType","VKAPPS","onMove","onEnd","div","onClick","ref","map","Modal","modalId","_modalState","isPage","key","getRootRef","restoreFocus","ModalRootTouch","initModal","initCardModal","process","env","NODE_ENV","contentHeight","firstElementChild","prevTranslateY","clientHeight","shiftHalf","visiblePart","headerHeight","height","parentElement"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/ModalRoot/ModalRoot.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { clamp } from '../../helpers/math';\nimport { withContext } from '../../hoc/withContext';\nimport { withPlatform } from '../../hoc/withPlatform';\nimport { DOMProps, withDOM } from '../../lib/dom';\nimport { getNavId } from '../../lib/getNavId';\nimport { Platform } from '../../lib/platform';\nimport { setTransformStyle } from '../../lib/styles';\nimport { transitionEvent } from '../../lib/supportEvents';\nimport { rubber } from '../../lib/touch';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { ConfigProviderContext, WebviewType } from '../ConfigProvider/ConfigProviderContext';\nimport { FocusTrap } from '../FocusTrap/FocusTrap';\nimport { Touch, TouchEvent } from '../Touch/Touch';\nimport TouchRootContext from '../Touch/TouchContext';\nimport { ModalRootContext, ModalRootContextInterface } from './ModalRootContext';\nimport { MODAL_PAGE_DEFAULT_PERCENT_HEIGHT } from './constants';\nimport { ModalRootWithDOMProps, ModalsStateEntry, ModalType, TranslateRange } from './types';\nimport { ModalTransitionProps, withModalManager } from './useModalManager';\nimport styles from './ModalRoot.module.css';\n\nconst warn = warnOnce('ModalRoot');\n\nfunction numberInRange(number: number, range: TranslateRange | undefined) {\n if (!range) {\n return false;\n }\n return number >= range[0] && number <= range[1];\n}\n\nfunction rangeTranslate(number: number) {\n return clamp(number, 0, 98);\n}\n\ninterface ModalRootState {\n touchDown?: boolean;\n dragging?: boolean;\n modalOpenedLog: string[];\n}\n\nclass ModalRootTouchComponent extends React.Component<\n ModalRootWithDOMProps & DOMProps & ModalTransitionProps,\n ModalRootState\n> {\n constructor(props: ModalRootWithDOMProps & ModalTransitionProps) {\n super(props);\n this.state = {\n touchDown: false,\n dragging: false,\n modalOpenedLog: [],\n };\n\n this.maskElementRef = React.createRef();\n\n this.modalRootContext = {\n updateModalHeight: this.updateModalHeight,\n registerModal: ({ id, ...data }) => Object.assign(this.props.getModalState(id) ?? {}, data),\n onClose: () => this.props.onExit(),\n isInsideModal: true,\n };\n\n this.frameIds = {};\n }\n\n private documentScrolling = false;\n private readonly maskElementRef: React.RefObject<HTMLDivElement>;\n private readonly viewportRef = React.createRef<HTMLDivElement>();\n private maskAnimationFrame: number | undefined = undefined;\n private readonly modalRootContext: ModalRootContextInterface;\n private readonly frameIds: {\n [index: string]: number;\n };\n private restoreFocusTo: HTMLElement | undefined | null = undefined;\n\n get timeout(): number {\n return this.props.platform === Platform.IOS ? 400 : 320;\n }\n\n get document(): Document {\n return this.props.document as Document;\n }\n\n get window(): Window {\n return this.props.window as Window;\n }\n\n getModals() {\n return React.Children.toArray(this.props.children) as React.ReactElement[];\n }\n\n componentDidMount() {\n // Отслеживаем изменение размеров viewport\n this.window?.addEventListener('resize', this.updateModalHeight, false);\n }\n\n componentWillUnmount() {\n this.toggleDocumentScrolling(true);\n this.window.removeEventListener('resize', this.updateModalHeight, false);\n }\n\n componentDidUpdate(prevProps: ModalRootWithDOMProps & ModalTransitionProps) {\n // transition phase 2: animate exiting modal\n if (this.props.exitingModal && this.props.exitingModal !== prevProps.exitingModal) {\n this.closeModal(this.props.exitingModal);\n }\n\n // transition phase 3: animate entering modal\n if (this.props.enteringModal && this.props.enteringModal !== prevProps.enteringModal) {\n const { enteringModal } = this.props;\n const enteringState = this.props.getModalState(enteringModal);\n this.props.onEnter();\n this.waitTransitionFinish(enteringState, () => {\n if (enteringState?.innerElement) {\n enteringState.innerElement.style.transitionDelay = '';\n }\n this.props.onEntered(enteringModal);\n });\n\n if (enteringState?.innerElement) {\n enteringState.innerElement.style.transitionDelay = this.props.delayEnter\n ? `${this.timeout}ms`\n : '';\n this.animateTranslate(enteringState, enteringState.translateY);\n }\n }\n\n // focus restoration\n if (this.props.activeModal && !prevProps.activeModal) {\n this.restoreFocusTo = this.document.activeElement as HTMLElement;\n }\n if (!this.props.activeModal && !this.props.exitingModal && this.restoreFocusTo) {\n this.restoreFocusTo.focus();\n this.restoreFocusTo = null;\n }\n\n this.toggleDocumentScrolling(!this.props.activeModal && !this.props.exitingModal);\n }\n\n /* Отключает скролл документа */\n toggleDocumentScrolling(enabled: boolean) {\n if (this.documentScrolling === enabled) {\n return;\n }\n this.documentScrolling = enabled;\n\n if (enabled) {\n // Здесь нужен последний аргумент с такими же параметрами, потому что\n // некоторые браузеры на странных вендорах типа Meizu не удаляют обработчик.\n // https://github.com/VKCOM/VKUI/issues/444\n this.window.removeEventListener('touchmove', this.preventTouch, {\n // @ts-expect-error: TS2769 В интерфейсе EventListenerOptions нет поля passive\n passive: false,\n });\n } else {\n this.window.addEventListener('touchmove', this.preventTouch, {\n passive: false,\n });\n }\n }\n\n preventTouch = (event: any) => {\n if (!event) {\n return false;\n }\n while (event.originalEvent) {\n event = event.originalEvent;\n }\n if (event.preventDefault) {\n event.preventDefault();\n }\n return false;\n };\n\n checkPageContentHeight() {\n const modalState = this.props.getModalState(this.props.activeModal);\n\n if (modalState?.type === ModalType.PAGE && modalState?.modalElement) {\n const prevModalState = { ...modalState };\n initPageModal(modalState);\n const currentModalState = { ...modalState };\n\n let needAnimate = false;\n\n if (prevModalState.expandable === currentModalState.expandable) {\n if (prevModalState.translateYFrom !== currentModalState.translateYFrom) {\n needAnimate = true;\n }\n } else {\n needAnimate = true;\n }\n\n if (needAnimate) {\n this.animateTranslate(modalState, modalState.translateY);\n }\n }\n }\n\n updateModalHeight = () => {\n const modalState = this.props.getModalState(this.props.activeModal);\n\n if (modalState && modalState.type === ModalType.PAGE) {\n if (this.props.enteringModal) {\n this.waitTransitionFinish(modalState, () => {\n requestAnimationFrame(() => this.checkPageContentHeight());\n });\n } else {\n requestAnimationFrame(() => this.checkPageContentHeight());\n }\n }\n };\n\n closeModal(id: string) {\n // Сбрасываем состояния, которые могут помешать закрытию модального окна\n this.setState({ touchDown: false });\n\n const prevModalState = this.props.getModalState(id);\n\n if (!prevModalState) {\n id && warn(`closeActiveModal: модальное окно (страница) ${id} не существует`, 'error');\n return;\n }\n if (!this.state.modalOpenedLog.length) {\n this.setState((prevState) => ({\n modalOpenedLog: [...prevState.modalOpenedLog, id],\n }));\n }\n const nextModalState = this.props.getModalState(this.props.activeModal);\n const nextIsPage = !!nextModalState && nextModalState.type === ModalType.PAGE;\n\n const prevIsPage = !!prevModalState && prevModalState.type === ModalType.PAGE;\n this.waitTransitionFinish(prevModalState, () => this.props.onExited(id));\n const exitTranslate =\n prevIsPage &&\n nextIsPage &&\n (prevModalState.translateY ?? 0) <= (nextModalState?.translateYFrom ?? 0) &&\n !this.props.isBack\n ? (nextModalState?.translateYFrom ?? 0) + 10\n : 100;\n this.animateTranslate(prevModalState, exitTranslate);\n\n if (!nextModalState) {\n // NOTE: was only for clean exit\n this.setMaskOpacity(prevModalState, 0);\n this.setState({ modalOpenedLog: [] });\n prevModalState.translateY = undefined;\n } else if (nextModalState.id && !this.state.modalOpenedLog.includes(nextModalState.id)) {\n nextModalState.translateY = undefined;\n this.setState((prevState) => ({\n modalOpenedLog: [...prevState.modalOpenedLog, nextModalState.id!],\n }));\n }\n }\n\n onTouchMove = (e: TouchEvent) => {\n if (this.props.exitingModal) {\n return;\n }\n const modalState = this.props.getModalState(this.props.activeModal);\n if (!modalState) {\n return;\n }\n\n if (modalState.type === ModalType.PAGE) {\n return this.onPageTouchMove(e, modalState);\n }\n\n if (modalState.type === ModalType.CARD) {\n return this.onCardTouchMove(e, modalState);\n }\n };\n\n onPageTouchMove(event: TouchEvent, modalState: ModalsStateEntry) {\n const { shiftY, originalEvent } = event;\n const target = originalEvent.target as HTMLElement;\n\n if (!event.isY) {\n if (this.viewportRef.current?.contains(target)) {\n originalEvent.preventDefault();\n }\n return;\n }\n\n if (!modalState.innerElement?.contains(target)) {\n return originalEvent.preventDefault();\n }\n\n originalEvent.stopPropagation();\n\n const { expandable, contentScrolled, collapsed, expanded } = modalState;\n\n if (!this.state.touchDown) {\n modalState.touchStartContentScrollTop = modalState.contentElement?.scrollTop ?? 0;\n this.setState({ touchDown: true });\n }\n\n if (contentScrolled) {\n return;\n }\n\n if (modalState.touchMovePositive === null) {\n modalState.touchMovePositive = shiftY > 0;\n }\n\n if (\n !modalState.expandable ||\n collapsed ||\n (expanded && modalState.touchMovePositive && modalState.touchStartContentScrollTop === 0) ||\n modalState.headerElement?.contains(target)\n ) {\n originalEvent.preventDefault();\n\n if ((!expandable && shiftY < 0) || !this.window) {\n return;\n }\n\n !this.state.dragging && this.setState({ dragging: true });\n\n const shiftYPercent = (shiftY / this.window.innerHeight) * 100;\n const shiftYCurrent = rubber(shiftYPercent, 72, 0.8, this.props.platform !== Platform.IOS);\n\n modalState.touchShiftYPercent = shiftYPercent;\n modalState.translateYCurrent = rangeTranslate((modalState.translateY ?? 0) + shiftYCurrent);\n\n this.animateTranslate(modalState, modalState.translateYCurrent);\n this.setMaskOpacity(modalState);\n }\n }\n\n onCardTouchMove(event: TouchEvent, modalState: ModalsStateEntry) {\n const { originalEvent, shiftY } = event;\n const target = originalEvent.target as HTMLElement;\n if (modalState.innerElement?.contains(target)) {\n if (!this.state.touchDown) {\n this.setState({ touchDown: true, dragging: true });\n }\n\n const shiftYPercent = (shiftY / modalState.innerElement.offsetHeight) * 100;\n const shiftYCurrent = rubber(shiftYPercent, 72, 1.2, this.props.platform !== Platform.IOS);\n\n modalState.touchShiftYPercent = shiftYPercent;\n modalState.translateYCurrent = Math.max(0, (modalState.translateY ?? 0) + shiftYCurrent);\n\n this.animateTranslate(modalState, modalState.translateYCurrent);\n this.setMaskOpacity(modalState);\n }\n }\n\n onTouchEnd = (e: TouchEvent) => {\n const modalState = this.props.getModalState(this.props.activeModal);\n\n if (modalState?.type === ModalType.PAGE) {\n return this.onPageTouchEnd(e, modalState);\n }\n\n if (modalState?.type === ModalType.CARD) {\n return this.onCardTouchEnd(e, modalState);\n }\n };\n\n onPageTouchEnd(event: TouchEvent, modalState: ModalsStateEntry) {\n const { startY, shiftY } = event;\n\n modalState.contentScrolled = false;\n modalState.touchMovePositive = null;\n\n let setStateCallback;\n\n if (this.state.dragging && this.window) {\n const shiftYEndPercent = ((startY + shiftY) / this.window.innerHeight) * 100;\n\n let translateY = modalState.translateYCurrent ?? 0;\n const expectTranslateY =\n (translateY / event.duration) *\n 240 *\n 0.6 *\n ((modalState.touchShiftYPercent ?? 0) < 0 ? -1 : 1);\n translateY = rangeTranslate(translateY + expectTranslateY);\n\n if (modalState.settlingHeight !== 100) {\n if (numberInRange(translateY, modalState.expandedRange)) {\n translateY = modalState.expandedRange?.[0] ?? 0;\n } else if (numberInRange(translateY, modalState.collapsedRange)) {\n translateY = modalState.translateYFrom ?? 0;\n } else if (numberInRange(translateY, modalState.hiddenRange)) {\n translateY = 100;\n } else {\n translateY = modalState.translateYFrom ?? 0;\n }\n } else {\n if (numberInRange(translateY, [0, 25])) {\n translateY = 0;\n } else {\n translateY = 100;\n }\n }\n\n if (translateY !== 100 && shiftYEndPercent >= 75) {\n translateY = 100;\n }\n\n modalState.translateY = translateY;\n modalState.translateYCurrent = translateY;\n modalState.collapsed = translateY > 0 && translateY < shiftYEndPercent;\n modalState.expanded = translateY === 0;\n modalState.hidden = translateY === 100;\n\n if (modalState.hidden) {\n this.props.onExit();\n }\n\n setStateCallback = () => {\n if (!modalState.hidden) {\n this.animateTranslate(modalState, modalState.translateY);\n }\n\n this.setMaskOpacity(modalState);\n };\n }\n\n this.setState(\n {\n touchDown: false,\n dragging: false,\n },\n setStateCallback,\n );\n }\n\n onCardTouchEnd({ duration }: TouchEvent, modalState: ModalsStateEntry) {\n let setStateCallback;\n\n if (this.state.dragging) {\n let translateY = modalState.translateYCurrent ?? 0;\n\n const expectTranslateY =\n (translateY / duration) * 240 * 0.6 * ((modalState.touchShiftYPercent ?? 0) < 0 ? -1 : 1);\n translateY = Math.max(0, translateY + expectTranslateY);\n\n if (translateY >= 30) {\n translateY = 100;\n } else {\n translateY = 0;\n }\n\n modalState.translateY = translateY;\n modalState.hidden = translateY === 100;\n\n if (modalState.hidden) {\n this.props.onExit();\n }\n\n setStateCallback = () => {\n if (!modalState.hidden) {\n this.animateTranslate(modalState, modalState.translateY);\n }\n\n this.setMaskOpacity(modalState);\n };\n }\n\n this.setState(\n {\n touchDown: false,\n dragging: false,\n },\n setStateCallback,\n );\n }\n\n onScroll = (e: React.SyntheticEvent) => {\n const activeModal = this.props.activeModal;\n\n const target = e.target as HTMLElement;\n\n if (!activeModal) {\n return;\n }\n const modalState = this.props.getModalState(activeModal);\n if (modalState?.type === ModalType.PAGE && modalState?.contentElement?.contains(target)) {\n modalState.contentScrolled = true;\n\n if (modalState.contentScrollStopTimeout) {\n clearTimeout(modalState.contentScrollStopTimeout);\n }\n\n modalState.contentScrollStopTimeout = setTimeout(() => {\n if (modalState.contentScrolled) {\n modalState.contentScrolled = false;\n }\n }, 250);\n }\n };\n\n waitTransitionFinish(modalState: ModalsStateEntry | undefined, eventHandler: () => void) {\n if (transitionEvent.supported) {\n const onceHandler = () => {\n modalState?.innerElement?.removeEventListener(transitionEvent.name as string, onceHandler);\n eventHandler();\n };\n\n modalState?.innerElement?.addEventListener(transitionEvent.name as string, onceHandler);\n } else {\n setTimeout(eventHandler, this.timeout);\n }\n }\n\n /**\n * Анимирует сдвиг модалки\n *\n * @param {ModalsStateEntry} modalState\n * @param {number} percent Процент сдвига: 0 – полностью открыта, 100 – полностью закрыта\n */\n animateTranslate(modalState: ModalsStateEntry, percent: number | undefined) {\n const frameId = `animateTranslateFrame${modalState.id}`;\n\n cancelAnimationFrame(this.frameIds[frameId]);\n\n this.frameIds[frameId] = requestAnimationFrame(() => {\n setTransformStyle(modalState.innerElement, `translate3d(0, ${percent}%, 0)`);\n });\n }\n\n /* Устанавливает прозрачность для полупрозрачной подложки */\n setMaskOpacity(modalState: ModalsStateEntry, forceOpacity: number | null = null) {\n if (forceOpacity === null && this.props.history?.[0] !== modalState.id) {\n return;\n }\n if (this.maskAnimationFrame) {\n cancelAnimationFrame(this.maskAnimationFrame);\n }\n this.maskAnimationFrame = requestAnimationFrame(() => {\n if (this.maskElementRef.current) {\n const { translateY = 0, translateYCurrent = 0 } = modalState;\n\n const opacity =\n forceOpacity === null\n ? 1 - (translateYCurrent - translateY) / (100 - translateY) || 0\n : forceOpacity;\n this.maskElementRef.current.style.opacity = clamp(opacity, 0, 100).toString();\n }\n });\n }\n\n render() {\n const { activeModal, exitingModal, enteringModal } = this.props;\n const { touchDown, dragging } = this.state;\n\n if (!activeModal && !exitingModal) {\n return null;\n }\n\n return (\n <TouchRootContext.Provider value={true}>\n <ModalRootContext.Provider value={this.modalRootContext}>\n <Touch\n className={classNames(\n styles['ModalRoot'],\n this.props.configProvider?.webviewType === WebviewType.VKAPPS &&\n styles['ModalRoot--vkapps'],\n touchDown &&\n classNames(styles['ModalRoot--touched'], 'vkuiInternalModalRoot--touched'),\n !!(enteringModal || exitingModal) &&\n classNames(styles['ModalRoot--switching'], 'vkuiInternalModalRoot--switching'),\n )}\n onMove={this.onTouchMove}\n onEnd={this.onTouchEnd}\n onScroll={this.onScroll}\n >\n <div\n className={styles['ModalRoot__mask']}\n onClick={this.props.onExit}\n ref={this.maskElementRef}\n />\n <div className={styles['ModalRoot__viewport']} ref={this.viewportRef}>\n {this.getModals().map((Modal) => {\n const modalId = getNavId(Modal.props, warn);\n const _modalState = this.props.getModalState(modalId);\n if ((modalId !== activeModal && modalId !== exitingModal) || !_modalState) {\n return null;\n }\n const modalState = { ..._modalState };\n\n const isPage = modalState.type === ModalType.PAGE;\n const key = `modal-${modalId}`;\n\n return (\n <FocusTrap\n key={key}\n getRootRef={(e) => {\n const modalState = this.props.getModalState(modalId);\n if (modalState) {\n modalState.modalElement = e;\n }\n }}\n onClose={this.props.onExit}\n timeout={this.timeout}\n className={classNames(\n styles['ModalRoot__modal'],\n\n dragging && 'vkuiInternalModalRoot__modal--dragging',\n\n isPage && modalState.expandable && 'vkuiInternalModalRoot__modal--expandable',\n isPage && modalState.collapsed && 'vkuiInternalModalRoot__modal--collapsed',\n )}\n restoreFocus={false}\n >\n {Modal}\n </FocusTrap>\n );\n })}\n </div>\n </Touch>\n </ModalRootContext.Provider>\n </TouchRootContext.Provider>\n );\n }\n}\n\nexport const ModalRootTouch = withContext(\n withPlatform(\n withDOM<ModalRootWithDOMProps>(withModalManager(initModal)(ModalRootTouchComponent)),\n ),\n ConfigProviderContext,\n 'configProvider',\n);\n\n/**\n * Инициализирует модалку перед анимацией открытия\n */\nfunction initModal(modalState: ModalsStateEntry) {\n switch (modalState.type) {\n case ModalType.PAGE:\n modalState.settlingHeight = modalState.settlingHeight || MODAL_PAGE_DEFAULT_PERCENT_HEIGHT;\n return initPageModal(modalState);\n case ModalType.CARD:\n return initCardModal(modalState);\n default:\n process.env.NODE_ENV === 'development' &&\n warn(`initActiveModal: modalState.type=\"${modalState.type}\" не поддерживается`, 'error');\n }\n}\n\nfunction initPageModal(modalState: ModalsStateEntry) {\n const { contentElement } = modalState;\n const contentHeight = (contentElement?.firstElementChild as HTMLElement).offsetHeight;\n\n let prevTranslateY = modalState.translateY;\n\n modalState.expandable =\n contentHeight > (contentElement?.clientHeight ?? 0) ||\n modalState.settlingHeight === 100 ||\n modalState.expanded;\n\n let collapsed = false;\n let expanded = false;\n let translateYFrom;\n let translateY;\n let expandedRange: TranslateRange;\n let collapsedRange: TranslateRange;\n let hiddenRange: TranslateRange;\n\n if (modalState.expandable) {\n translateYFrom = 100 - (modalState.settlingHeight ?? 0);\n\n const shiftHalf = translateYFrom / 2;\n const visiblePart = 100 - translateYFrom;\n\n expandedRange = [0, shiftHalf];\n collapsedRange = [shiftHalf, translateYFrom + visiblePart / 4];\n hiddenRange = [translateYFrom + visiblePart / 4, 100];\n\n collapsed = translateYFrom > 0;\n expanded = translateYFrom <= 0;\n translateY = translateYFrom;\n } else {\n const headerHeight = modalState.headerElement?.offsetHeight ?? 0;\n const height = contentHeight + headerHeight;\n\n translateYFrom =\n 100 - (height / (modalState.innerElement?.parentElement?.offsetHeight ?? 0)) * 100;\n translateY = translateYFrom;\n\n expandedRange = [translateY, translateY + 25];\n collapsedRange = [translateY + 25, translateY + 25];\n hiddenRange = [translateY + 25, translateY + 100];\n }\n\n // Если модалка может открываться на весь экран, и новый сдвиг больше предыдущего, то откроем её на весь экран\n if (\n (modalState.expandable && translateY > (prevTranslateY ?? 100)) ||\n modalState.settlingHeight === 100\n ) {\n translateY = 0;\n }\n\n // Если модалка уже раскрыта обновляем состояния\n if (translateY === 0) {\n expanded = true;\n collapsed = false;\n }\n\n modalState.expandedRange = expandedRange;\n modalState.collapsedRange = collapsedRange;\n modalState.hiddenRange = hiddenRange;\n modalState.translateY = translateY;\n modalState.translateYFrom = translateYFrom;\n modalState.collapsed = collapsed;\n modalState.expanded = expanded;\n}\n\nfunction initCardModal(modalState: ModalsStateEntry) {\n modalState.translateY = 0;\n}\n"],"names":["React","classNames","clamp","withContext","withPlatform","withDOM","getNavId","Platform","setTransformStyle","transitionEvent","rubber","warnOnce","ConfigProviderContext","WebviewType","FocusTrap","Touch","TouchRootContext","ModalRootContext","MODAL_PAGE_DEFAULT_PERCENT_HEIGHT","ModalType","withModalManager","styles","warn","numberInRange","number","range","rangeTranslate","ModalRootTouchComponent","Component","constructor","props","state","touchDown","dragging","modalOpenedLog","maskElementRef","createRef","modalRootContext","updateModalHeight","registerModal","id","data","Object","assign","getModalState","onClose","onExit","isInsideModal","frameIds","documentScrolling","viewportRef","maskAnimationFrame","undefined","restoreFocusTo","timeout","platform","IOS","document","window","getModals","Children","toArray","children","componentDidMount","addEventListener","componentWillUnmount","toggleDocumentScrolling","removeEventListener","componentDidUpdate","prevProps","exitingModal","closeModal","enteringModal","enteringState","onEnter","waitTransitionFinish","innerElement","style","transitionDelay","onEntered","delayEnter","animateTranslate","translateY","activeModal","activeElement","focus","enabled","preventTouch","passive","event","originalEvent","preventDefault","checkPageContentHeight","modalState","type","PAGE","modalElement","prevModalState","initPageModal","currentModalState","needAnimate","expandable","translateYFrom","requestAnimationFrame","setState","length","prevState","nextModalState","nextIsPage","prevIsPage","onExited","exitTranslate","isBack","setMaskOpacity","includes","onTouchMove","e","onPageTouchMove","CARD","onCardTouchMove","shiftY","target","isY","current","contains","stopPropagation","contentScrolled","collapsed","expanded","touchStartContentScrollTop","contentElement","scrollTop","touchMovePositive","headerElement","shiftYPercent","innerHeight","shiftYCurrent","touchShiftYPercent","translateYCurrent","offsetHeight","Math","max","onTouchEnd","onPageTouchEnd","onCardTouchEnd","startY","setStateCallback","shiftYEndPercent","expectTranslateY","duration","settlingHeight","expandedRange","collapsedRange","hiddenRange","hidden","onScroll","contentScrollStopTimeout","clearTimeout","setTimeout","eventHandler","supported","onceHandler","name","percent","frameId","cancelAnimationFrame","forceOpacity","history","opacity","toString","render","Provider","value","className","configProvider","webviewType","VKAPPS","onMove","onEnd","div","onClick","ref","map","Modal","modalId","_modalState","isPage","key","getRootRef","restoreFocus","ModalRootTouch","initModal","initCardModal","process","env","NODE_ENV","contentHeight","firstElementChild","prevTranslateY","clientHeight","shiftHalf","visiblePart","headerHeight","height","parentElement"],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@ import { ModalRootDesktop } from './ModalRootDesktop';
|
|
|
6
6
|
/**
|
|
7
7
|
* @see https://vkcom.github.io/VKUI/#/ModalRoot
|
|
8
8
|
*/ export const ModalRoot = (props)=>{
|
|
9
|
-
const { isDesktop
|
|
9
|
+
const { isDesktop } = useAdaptivityWithJSMediaQueries();
|
|
10
10
|
useScrollLock(!!props.activeModal);
|
|
11
11
|
const RootComponent = isDesktop ? ModalRootDesktop : ModalRootTouch;
|
|
12
12
|
return /*#__PURE__*/ React.createElement(RootComponent, props);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/ModalRoot/ModalRootAdaptive.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useAdaptivityWithJSMediaQueries } from '../../hooks/useAdaptivityWithJSMediaQueries';\nimport { useScrollLock } from '../AppRoot/ScrollContext';\nimport { ModalRootTouch } from './ModalRoot';\nimport { ModalRootDesktop } from './ModalRootDesktop';\nimport { ModalRootProps } from './types';\n\n/**\n * @see https://vkcom.github.io/VKUI/#/ModalRoot\n */\nexport const ModalRoot = (props: ModalRootProps) => {\n const { isDesktop } = useAdaptivityWithJSMediaQueries();\n\n useScrollLock(!!props.activeModal);\n\n const RootComponent = isDesktop ? ModalRootDesktop : ModalRootTouch;\n\n return <RootComponent {...props} />;\n};\n"],"names":["React","useAdaptivityWithJSMediaQueries","useScrollLock","ModalRootTouch","ModalRootDesktop","ModalRoot","props","isDesktop","activeModal","RootComponent"],"mappings":"AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,+BAA+B,QAAQ,8CAA8C;AAC9F,SAASC,aAAa,QAAQ,2BAA2B;AACzD,SAASC,cAAc,QAAQ,cAAc;AAC7C,SAASC,gBAAgB,QAAQ,qBAAqB;AAGtD;;CAEC,GACD,OAAO,MAAMC,YAAY,CAACC;IACxB,MAAM,EAAEC,
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/ModalRoot/ModalRootAdaptive.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useAdaptivityWithJSMediaQueries } from '../../hooks/useAdaptivityWithJSMediaQueries';\nimport { useScrollLock } from '../AppRoot/ScrollContext';\nimport { ModalRootTouch } from './ModalRoot';\nimport { ModalRootDesktop } from './ModalRootDesktop';\nimport { ModalRootProps } from './types';\n\n/**\n * @see https://vkcom.github.io/VKUI/#/ModalRoot\n */\nexport const ModalRoot = (props: ModalRootProps) => {\n const { isDesktop } = useAdaptivityWithJSMediaQueries();\n\n useScrollLock(!!props.activeModal);\n\n const RootComponent = isDesktop ? ModalRootDesktop : ModalRootTouch;\n\n return <RootComponent {...props} />;\n};\n"],"names":["React","useAdaptivityWithJSMediaQueries","useScrollLock","ModalRootTouch","ModalRootDesktop","ModalRoot","props","isDesktop","activeModal","RootComponent"],"mappings":"AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,+BAA+B,QAAQ,8CAA8C;AAC9F,SAASC,aAAa,QAAQ,2BAA2B;AACzD,SAASC,cAAc,QAAQ,cAAc;AAC7C,SAASC,gBAAgB,QAAQ,qBAAqB;AAGtD;;CAEC,GACD,OAAO,MAAMC,YAAY,CAACC;IACxB,MAAM,EAAEC,SAAS,EAAE,GAAGN;IAEtBC,cAAc,CAAC,CAACI,MAAME,WAAW;IAEjC,MAAMC,gBAAgBF,YAAYH,mBAAmBD;IAErD,qBAAO,oBAACM,eAAkBH;AAC5B,EAAE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/ModalRoot/ModalRootContext.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport { ModalElements, ModalsStateEntry, ModalType } from './types';\n\nexport type ModalRegistryEntry = ModalElements & Required<Pick<ModalsStateEntry, 'type' | 'id'>>;\ntype ModalRefs = { [k in keyof ModalElements]: (e: ModalElements[k]) => void };\n\nexport interface ModalRootContextInterface {\n updateModalHeight: VoidFunction;\n registerModal(data: ModalRegistryEntry): void;\n onClose?: VoidFunction;\n isInsideModal: boolean;\n}\n\nexport const ModalRootContext = React.createContext<ModalRootContextInterface>({\n updateModalHeight: () => undefined,\n registerModal: () => undefined,\n isInsideModal: false,\n});\n\n/**\n * All referenced elements must be static\n */\nexport function useModalRegistry(id: string | undefined, type: ModalType) {\n const modalContext = React.useContext(ModalRootContext);\n const elements = React.useRef<ModalElements>({}).current;\n useIsomorphicLayoutEffect(() => {\n if (id !== undefined) {\n modalContext.registerModal({ ...elements, type, id });\n // unset refs on unmount to prevent leak\n const reset = Object.keys(elements).reduce<ModalRegistryEntry>(\n (acc, k) => ({ ...acc, [k]: null }),\n { type, id },\n );\n return () => modalContext.registerModal(reset);\n }\n return undefined;\n }, []);\n\n const refs = React.useRef<Required<ModalRefs>>({\n modalElement: (e) => (elements.modalElement = e),\n innerElement: (e) => (elements.innerElement = e),\n headerElement: (e) => (elements.headerElement = e),\n contentElement: (e) => (elements.contentElement = e),\n }).current;\n return { refs };\n}\n"],"names":["React","useIsomorphicLayoutEffect","ModalRootContext","createContext","updateModalHeight","undefined","registerModal","isInsideModal","useModalRegistry","id","type","modalContext","useContext","elements","useRef","current","reset","Object","keys","reduce","acc","k","refs","modalElement","e","innerElement","headerElement","contentElement"],"mappings":"AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,yBAAyB,QAAQ,sCAAsC;AAahF,OAAO,MAAMC,iCAAmBF,MAAMG,
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/ModalRoot/ModalRootContext.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport { ModalElements, ModalsStateEntry, ModalType } from './types';\n\nexport type ModalRegistryEntry = ModalElements & Required<Pick<ModalsStateEntry, 'type' | 'id'>>;\ntype ModalRefs = { [k in keyof ModalElements]: (e: ModalElements[k]) => void };\n\nexport interface ModalRootContextInterface {\n updateModalHeight: VoidFunction;\n registerModal(data: ModalRegistryEntry): void;\n onClose?: VoidFunction;\n isInsideModal: boolean;\n}\n\nexport const ModalRootContext = React.createContext<ModalRootContextInterface>({\n updateModalHeight: () => undefined,\n registerModal: () => undefined,\n isInsideModal: false,\n});\n\n/**\n * All referenced elements must be static\n */\nexport function useModalRegistry(id: string | undefined, type: ModalType) {\n const modalContext = React.useContext(ModalRootContext);\n const elements = React.useRef<ModalElements>({}).current;\n useIsomorphicLayoutEffect(() => {\n if (id !== undefined) {\n modalContext.registerModal({ ...elements, type, id });\n // unset refs on unmount to prevent leak\n const reset = Object.keys(elements).reduce<ModalRegistryEntry>(\n (acc, k) => ({ ...acc, [k]: null }),\n { type, id },\n );\n return () => modalContext.registerModal(reset);\n }\n return undefined;\n }, []);\n\n const refs = React.useRef<Required<ModalRefs>>({\n modalElement: (e) => (elements.modalElement = e),\n innerElement: (e) => (elements.innerElement = e),\n headerElement: (e) => (elements.headerElement = e),\n contentElement: (e) => (elements.contentElement = e),\n }).current;\n return { refs };\n}\n"],"names":["React","useIsomorphicLayoutEffect","ModalRootContext","createContext","updateModalHeight","undefined","registerModal","isInsideModal","useModalRegistry","id","type","modalContext","useContext","elements","useRef","current","reset","Object","keys","reduce","acc","k","refs","modalElement","e","innerElement","headerElement","contentElement"],"mappings":"AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,yBAAyB,QAAQ,sCAAsC;AAahF,OAAO,MAAMC,iCAAmBF,MAAMG,aAAa,CAA4B;IAC7EC,mBAAmB,IAAMC;IACzBC,eAAe,IAAMD;IACrBE,eAAe;AACjB,GAAG;AAEH;;CAEC,GACD,OAAO,SAASC,iBAAiBC,EAAsB,EAAEC,IAAe;IACtE,MAAMC,eAAeX,MAAMY,UAAU,CAACV;IACtC,MAAMW,WAAWb,MAAMc,MAAM,CAAgB,CAAC,GAAGC,OAAO;IACxDd,0BAA0B;QACxB,IAAIQ,OAAOJ,WAAW;YACpBM,aAAaL,aAAa,CAAC;gBAAE,GAAGO,QAAQ;gBAAEH;gBAAMD;YAAG;YACnD,yCAAyC;YACzC,MAAMO,QAAQC,OAAOC,IAAI,CAACL,UAAUM,MAAM,CACxC,CAACC,KAAKC,IAAO,CAAA;oBAAE,GAAGD,GAAG;oBAAE,CAACC,EAAE,EAAE;gBAAK,CAAA,GACjC;gBAAEX;gBAAMD;YAAG;YAEb,OAAO,IAAME,aAAaL,aAAa,CAACU;QAC1C;QACA,OAAOX;IACT,GAAG,EAAE;IAEL,MAAMiB,OAAOtB,MAAMc,MAAM,CAAsB;QAC7CS,cAAc,CAACC,IAAOX,SAASU,YAAY,GAAGC;QAC9CC,cAAc,CAACD,IAAOX,SAASY,YAAY,GAAGD;QAC9CE,eAAe,CAACF,IAAOX,SAASa,aAAa,GAAGF;QAChDG,gBAAgB,CAACH,IAAOX,SAASc,cAAc,GAAGH;IACpD,GAAGT,OAAO;IACV,OAAO;QAAEO;IAAK;AAChB"}
|
|
@@ -14,14 +14,14 @@ import { ModalRootContext } from './ModalRootContext';
|
|
|
14
14
|
import { useModalManager } from './useModalManager';
|
|
15
15
|
import styles from './ModalRoot.module.css';
|
|
16
16
|
const warn = warnOnce('ModalRoot');
|
|
17
|
-
export const ModalRootDesktop = ({ activeModal: activeModalProp
|
|
17
|
+
export const ModalRootDesktop = ({ activeModal: activeModalProp, children, onOpen, onOpened, onClose, onClosed })=>{
|
|
18
18
|
const maskElementRef = React.useRef(null);
|
|
19
19
|
const maskAnimationFrame = React.useRef(undefined);
|
|
20
20
|
const restoreFocusTo = React.useRef(undefined);
|
|
21
|
-
const { document
|
|
22
|
-
const { webviewType
|
|
23
|
-
const { activeModal
|
|
24
|
-
const { waitTransitionFinish
|
|
21
|
+
const { document } = useDOM();
|
|
22
|
+
const { webviewType, platform } = useConfigProvider();
|
|
23
|
+
const { activeModal, exitingModal, onExit, getModalState, enteringModal, onEnter, onEntered, onExited, history, delayEnter } = useModalManager(activeModalProp, children, onOpen, onOpened, onClose, onClosed, noop);
|
|
24
|
+
const { waitTransitionFinish } = useWaitTransitionFinish();
|
|
25
25
|
const prevProps = usePrevious({
|
|
26
26
|
exitingModal,
|
|
27
27
|
enteringModal,
|
|
@@ -29,7 +29,7 @@ export const ModalRootDesktop = ({ activeModal: activeModalProp , children , onO
|
|
|
29
29
|
});
|
|
30
30
|
const modalRootContext = useObjectMemo({
|
|
31
31
|
updateModalHeight: ()=>undefined,
|
|
32
|
-
registerModal: ({ id
|
|
32
|
+
registerModal: ({ id, ...data })=>Object.assign(getModalState(id) ?? {}, data),
|
|
33
33
|
onClose: onExit,
|
|
34
34
|
isInsideModal: true
|
|
35
35
|
});
|
|
@@ -51,7 +51,7 @@ export const ModalRootDesktop = ({ activeModal: activeModalProp , children , onO
|
|
|
51
51
|
}
|
|
52
52
|
maskAnimationFrame.current = requestAnimationFrame(()=>{
|
|
53
53
|
if (maskElementRef.current) {
|
|
54
|
-
const { translateY =0
|
|
54
|
+
const { translateY = 0, translateYCurrent = 0 } = modalState;
|
|
55
55
|
const opacity = forceOpacity === null ? 1 - (translateYCurrent - translateY) / (100 - translateY) || 0 : forceOpacity;
|
|
56
56
|
maskElementRef.current.style.opacity = clamp(opacity, 0, 100).toString();
|
|
57
57
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/ModalRoot/ModalRootDesktop.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames, noop } from '@vkontakte/vkjs';\nimport { clamp } from '../../helpers/math';\nimport { useObjectMemo } from '../../hooks/useObjectMemo';\nimport { usePrevious } from '../../hooks/usePrevious';\nimport { useWaitTransitionFinish } from '../../hooks/useWaitTransitionFinish';\nimport { useDOM } from '../../lib/dom';\nimport { getNavId } from '../../lib/getNavId';\nimport { Platform } from '../../lib/platform';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { useConfigProvider, WebviewType } from '../ConfigProvider/ConfigProviderContext';\nimport { FocusTrap } from '../FocusTrap/FocusTrap';\nimport { ModalRootContext, ModalRootContextInterface } from './ModalRootContext';\nimport { ModalRootWithDOMProps, ModalsStateEntry } from './types';\nimport { useModalManager } from './useModalManager';\nimport styles from './ModalRoot.module.css';\n\nconst warn = warnOnce('ModalRoot');\n\nexport const ModalRootDesktop = ({\n activeModal: activeModalProp,\n children,\n onOpen,\n onOpened,\n onClose,\n onClosed,\n}: ModalRootWithDOMProps) => {\n const maskElementRef = React.useRef<HTMLDivElement>(null);\n const maskAnimationFrame = React.useRef<number | undefined>(undefined);\n const restoreFocusTo = React.useRef<HTMLElement | undefined>(undefined);\n\n const { document } = useDOM();\n const { webviewType, platform } = useConfigProvider();\n const {\n activeModal,\n exitingModal,\n onExit,\n getModalState,\n enteringModal,\n onEnter,\n onEntered,\n onExited,\n history,\n delayEnter,\n } = useModalManager(activeModalProp, children, onOpen, onOpened, onClose, onClosed, noop);\n\n const { waitTransitionFinish } = useWaitTransitionFinish();\n const prevProps = usePrevious({\n exitingModal,\n enteringModal,\n activeModal,\n });\n const modalRootContext: ModalRootContextInterface = useObjectMemo({\n updateModalHeight: () => undefined,\n registerModal: ({ id, ...data }) => Object.assign(getModalState(id) ?? {}, data),\n onClose: onExit,\n isInsideModal: true,\n });\n\n const timeout = platform === Platform.IOS ? 400 : 320;\n const modals = React.Children.toArray(children) as React.ReactElement[];\n\n /* Анимирует сдвиг модального окна */\n const animateModalOpacity = (modalState: ModalsStateEntry | undefined, display: boolean) => {\n if (modalState?.innerElement) {\n modalState.innerElement.style.transition = '';\n modalState.innerElement.style.transitionDelay = display && delayEnter ? `${timeout}ms` : '';\n modalState.innerElement.style.opacity = display ? '1' : '0';\n }\n };\n\n /* Устанавливает прозрачность для полупрозрачной подложки */\n const setMaskOpacity = (modalState: ModalsStateEntry, forceOpacity: number | null = null) => {\n if (forceOpacity === null && history?.[0] !== modalState.id) {\n return;\n }\n\n if (maskAnimationFrame.current) {\n cancelAnimationFrame(maskAnimationFrame.current);\n }\n maskAnimationFrame.current = requestAnimationFrame(() => {\n if (maskElementRef.current) {\n const { translateY = 0, translateYCurrent = 0 } = modalState;\n\n const opacity =\n forceOpacity === null\n ? 1 - (translateYCurrent - translateY) / (100 - translateY) || 0\n : forceOpacity;\n maskElementRef.current.style.opacity = clamp(opacity, 0, 100).toString();\n }\n });\n };\n\n const openModal = () => {\n if (!enteringModal || !prevProps) {\n return;\n }\n\n const enteringState = getModalState(enteringModal);\n onEnter();\n\n // Анимация открытия модального окна\n if (!prevProps.exitingModal) {\n requestAnimationFrame(() => {\n if (enteringModal === enteringModal) {\n waitTransitionFinish(\n enteringState?.innerElement,\n () => onEntered(enteringModal),\n timeout,\n );\n animateModalOpacity(enteringState, true);\n }\n });\n\n return;\n }\n\n // Переход между модальными окнами без анимации\n if (enteringState?.innerElement) {\n enteringState.innerElement.style.transition = 'none';\n enteringState.innerElement.style.opacity = '1';\n }\n\n onEntered(enteringModal);\n };\n\n const closeModal = (id: string) => {\n const prevModalState = getModalState(id);\n if (!prevModalState) {\n return;\n }\n\n // Анимация закрытия модального окна\n if (!activeModal) {\n requestAnimationFrame(() => {\n waitTransitionFinish(prevModalState?.innerElement, () => onExited(id), timeout);\n animateModalOpacity(prevModalState, false);\n setMaskOpacity(prevModalState, 0);\n });\n\n return;\n }\n\n // Переход между модальными окнами без анимации\n onExited(id);\n };\n\n React.useEffect(() => {\n if (!prevProps) {\n return;\n }\n\n // transition phase 2: animate exiting modal\n if (exitingModal && exitingModal !== prevProps.exitingModal) {\n closeModal(exitingModal);\n }\n\n // transition phase 3: animate entering modal\n if (enteringModal && enteringModal !== prevProps.enteringModal) {\n openModal();\n }\n\n // focus restoration\n if (activeModal && !prevProps.activeModal) {\n restoreFocusTo.current = (document?.activeElement ?? undefined) as HTMLElement | undefined;\n }\n if (!activeModal && !exitingModal && restoreFocusTo.current) {\n restoreFocusTo.current.focus();\n restoreFocusTo.current = undefined;\n }\n });\n\n if (!activeModal && !exitingModal) {\n return null;\n }\n\n return (\n <ModalRootContext.Provider value={modalRootContext}>\n <div\n className={classNames(\n styles['ModalRoot'],\n webviewType === WebviewType.VKAPPS && styles['ModalRoot--vkapps'],\n styles['ModalRoot--desktop'],\n )}\n >\n <div className={styles['ModalRoot__mask']} ref={maskElementRef} onClick={onExit} />\n <div className={styles['ModalRoot__viewport']}>\n {modals.map((Modal: React.ReactElement) => {\n const modalId = getNavId(Modal.props, warn);\n if (modalId !== activeModal && modalId !== exitingModal) {\n return null;\n }\n\n const key = `modal-${modalId}`;\n\n return (\n <FocusTrap\n restoreFocus={false}\n onClose={onExit}\n timeout={timeout}\n key={key}\n className={styles['ModalRoot__modal']}\n >\n {Modal}\n </FocusTrap>\n );\n })}\n </div>\n </div>\n </ModalRootContext.Provider>\n );\n};\n"],"names":["React","classNames","noop","clamp","useObjectMemo","usePrevious","useWaitTransitionFinish","useDOM","getNavId","Platform","warnOnce","useConfigProvider","WebviewType","FocusTrap","ModalRootContext","useModalManager","styles","warn","ModalRootDesktop","activeModal","activeModalProp","children","onOpen","onOpened","onClose","onClosed","maskElementRef","useRef","maskAnimationFrame","undefined","restoreFocusTo","document","webviewType","platform","exitingModal","onExit","getModalState","enteringModal","onEnter","onEntered","onExited","history","delayEnter","waitTransitionFinish","prevProps","modalRootContext","updateModalHeight","registerModal","id","data","Object","assign","isInsideModal","timeout","IOS","modals","Children","toArray","animateModalOpacity","modalState","display","innerElement","style","transition","transitionDelay","opacity","setMaskOpacity","forceOpacity","current","cancelAnimationFrame","requestAnimationFrame","translateY","translateYCurrent","toString","openModal","enteringState","closeModal","prevModalState","useEffect","activeElement","focus","Provider","value","div","className","VKAPPS","ref","onClick","map","Modal","modalId","props","key","restoreFocus"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/ModalRoot/ModalRootDesktop.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames, noop } from '@vkontakte/vkjs';\nimport { clamp } from '../../helpers/math';\nimport { useObjectMemo } from '../../hooks/useObjectMemo';\nimport { usePrevious } from '../../hooks/usePrevious';\nimport { useWaitTransitionFinish } from '../../hooks/useWaitTransitionFinish';\nimport { useDOM } from '../../lib/dom';\nimport { getNavId } from '../../lib/getNavId';\nimport { Platform } from '../../lib/platform';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { useConfigProvider, WebviewType } from '../ConfigProvider/ConfigProviderContext';\nimport { FocusTrap } from '../FocusTrap/FocusTrap';\nimport { ModalRootContext, ModalRootContextInterface } from './ModalRootContext';\nimport { ModalRootWithDOMProps, ModalsStateEntry } from './types';\nimport { useModalManager } from './useModalManager';\nimport styles from './ModalRoot.module.css';\n\nconst warn = warnOnce('ModalRoot');\n\nexport const ModalRootDesktop = ({\n activeModal: activeModalProp,\n children,\n onOpen,\n onOpened,\n onClose,\n onClosed,\n}: ModalRootWithDOMProps) => {\n const maskElementRef = React.useRef<HTMLDivElement>(null);\n const maskAnimationFrame = React.useRef<number | undefined>(undefined);\n const restoreFocusTo = React.useRef<HTMLElement | undefined>(undefined);\n\n const { document } = useDOM();\n const { webviewType, platform } = useConfigProvider();\n const {\n activeModal,\n exitingModal,\n onExit,\n getModalState,\n enteringModal,\n onEnter,\n onEntered,\n onExited,\n history,\n delayEnter,\n } = useModalManager(activeModalProp, children, onOpen, onOpened, onClose, onClosed, noop);\n\n const { waitTransitionFinish } = useWaitTransitionFinish();\n const prevProps = usePrevious({\n exitingModal,\n enteringModal,\n activeModal,\n });\n const modalRootContext: ModalRootContextInterface = useObjectMemo({\n updateModalHeight: () => undefined,\n registerModal: ({ id, ...data }) => Object.assign(getModalState(id) ?? {}, data),\n onClose: onExit,\n isInsideModal: true,\n });\n\n const timeout = platform === Platform.IOS ? 400 : 320;\n const modals = React.Children.toArray(children) as React.ReactElement[];\n\n /* Анимирует сдвиг модального окна */\n const animateModalOpacity = (modalState: ModalsStateEntry | undefined, display: boolean) => {\n if (modalState?.innerElement) {\n modalState.innerElement.style.transition = '';\n modalState.innerElement.style.transitionDelay = display && delayEnter ? `${timeout}ms` : '';\n modalState.innerElement.style.opacity = display ? '1' : '0';\n }\n };\n\n /* Устанавливает прозрачность для полупрозрачной подложки */\n const setMaskOpacity = (modalState: ModalsStateEntry, forceOpacity: number | null = null) => {\n if (forceOpacity === null && history?.[0] !== modalState.id) {\n return;\n }\n\n if (maskAnimationFrame.current) {\n cancelAnimationFrame(maskAnimationFrame.current);\n }\n maskAnimationFrame.current = requestAnimationFrame(() => {\n if (maskElementRef.current) {\n const { translateY = 0, translateYCurrent = 0 } = modalState;\n\n const opacity =\n forceOpacity === null\n ? 1 - (translateYCurrent - translateY) / (100 - translateY) || 0\n : forceOpacity;\n maskElementRef.current.style.opacity = clamp(opacity, 0, 100).toString();\n }\n });\n };\n\n const openModal = () => {\n if (!enteringModal || !prevProps) {\n return;\n }\n\n const enteringState = getModalState(enteringModal);\n onEnter();\n\n // Анимация открытия модального окна\n if (!prevProps.exitingModal) {\n requestAnimationFrame(() => {\n if (enteringModal === enteringModal) {\n waitTransitionFinish(\n enteringState?.innerElement,\n () => onEntered(enteringModal),\n timeout,\n );\n animateModalOpacity(enteringState, true);\n }\n });\n\n return;\n }\n\n // Переход между модальными окнами без анимации\n if (enteringState?.innerElement) {\n enteringState.innerElement.style.transition = 'none';\n enteringState.innerElement.style.opacity = '1';\n }\n\n onEntered(enteringModal);\n };\n\n const closeModal = (id: string) => {\n const prevModalState = getModalState(id);\n if (!prevModalState) {\n return;\n }\n\n // Анимация закрытия модального окна\n if (!activeModal) {\n requestAnimationFrame(() => {\n waitTransitionFinish(prevModalState?.innerElement, () => onExited(id), timeout);\n animateModalOpacity(prevModalState, false);\n setMaskOpacity(prevModalState, 0);\n });\n\n return;\n }\n\n // Переход между модальными окнами без анимации\n onExited(id);\n };\n\n React.useEffect(() => {\n if (!prevProps) {\n return;\n }\n\n // transition phase 2: animate exiting modal\n if (exitingModal && exitingModal !== prevProps.exitingModal) {\n closeModal(exitingModal);\n }\n\n // transition phase 3: animate entering modal\n if (enteringModal && enteringModal !== prevProps.enteringModal) {\n openModal();\n }\n\n // focus restoration\n if (activeModal && !prevProps.activeModal) {\n restoreFocusTo.current = (document?.activeElement ?? undefined) as HTMLElement | undefined;\n }\n if (!activeModal && !exitingModal && restoreFocusTo.current) {\n restoreFocusTo.current.focus();\n restoreFocusTo.current = undefined;\n }\n });\n\n if (!activeModal && !exitingModal) {\n return null;\n }\n\n return (\n <ModalRootContext.Provider value={modalRootContext}>\n <div\n className={classNames(\n styles['ModalRoot'],\n webviewType === WebviewType.VKAPPS && styles['ModalRoot--vkapps'],\n styles['ModalRoot--desktop'],\n )}\n >\n <div className={styles['ModalRoot__mask']} ref={maskElementRef} onClick={onExit} />\n <div className={styles['ModalRoot__viewport']}>\n {modals.map((Modal: React.ReactElement) => {\n const modalId = getNavId(Modal.props, warn);\n if (modalId !== activeModal && modalId !== exitingModal) {\n return null;\n }\n\n const key = `modal-${modalId}`;\n\n return (\n <FocusTrap\n restoreFocus={false}\n onClose={onExit}\n timeout={timeout}\n key={key}\n className={styles['ModalRoot__modal']}\n >\n {Modal}\n </FocusTrap>\n );\n })}\n </div>\n </div>\n </ModalRootContext.Provider>\n );\n};\n"],"names":["React","classNames","noop","clamp","useObjectMemo","usePrevious","useWaitTransitionFinish","useDOM","getNavId","Platform","warnOnce","useConfigProvider","WebviewType","FocusTrap","ModalRootContext","useModalManager","styles","warn","ModalRootDesktop","activeModal","activeModalProp","children","onOpen","onOpened","onClose","onClosed","maskElementRef","useRef","maskAnimationFrame","undefined","restoreFocusTo","document","webviewType","platform","exitingModal","onExit","getModalState","enteringModal","onEnter","onEntered","onExited","history","delayEnter","waitTransitionFinish","prevProps","modalRootContext","updateModalHeight","registerModal","id","data","Object","assign","isInsideModal","timeout","IOS","modals","Children","toArray","animateModalOpacity","modalState","display","innerElement","style","transition","transitionDelay","opacity","setMaskOpacity","forceOpacity","current","cancelAnimationFrame","requestAnimationFrame","translateY","translateYCurrent","toString","openModal","enteringState","closeModal","prevModalState","useEffect","activeElement","focus","Provider","value","div","className","VKAPPS","ref","onClick","map","Modal","modalId","props","key","restoreFocus"],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
1
2
|
import { DOMContextInterface } from '../../lib/dom';
|
|
2
|
-
import {
|
|
3
|
+
import { HasPlatform } from '../../types';
|
|
3
4
|
import { ConfigProviderContextInterface } from '../ConfigProvider/ConfigProviderContext';
|
|
4
5
|
export declare enum ModalType {
|
|
5
6
|
PAGE = "page",
|
|
@@ -60,8 +61,9 @@ export interface ModalsStateEntry extends ModalElements {
|
|
|
60
61
|
collapsedRange?: TranslateRange;
|
|
61
62
|
hiddenRange?: TranslateRange;
|
|
62
63
|
}
|
|
63
|
-
export interface ModalRootProps
|
|
64
|
+
export interface ModalRootProps {
|
|
64
65
|
activeModal?: string | null;
|
|
66
|
+
children: React.ReactElement | Iterable<React.ReactElement>;
|
|
65
67
|
/**
|
|
66
68
|
* Будет вызвано при начале открытия активной модалки с её id
|
|
67
69
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/ModalRoot/types.ts"],"sourcesContent":["import { DOMContextInterface } from '../../lib/dom';\nimport {
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/ModalRoot/types.ts"],"sourcesContent":["import { DOMContextInterface } from '../../lib/dom';\nimport { HasPlatform } from '../../types';\nimport { ConfigProviderContextInterface } from '../ConfigProvider/ConfigProviderContext';\n\nexport enum ModalType {\n PAGE = 'page',\n CARD = 'card',\n}\n\nexport type TranslateRange = [number, number];\n\nexport type ModalsState = { [index: string]: ModalsStateEntry };\n\nexport interface ModalElements {\n modalElement?: HTMLElement | null;\n innerElement?: HTMLElement | null;\n headerElement?: HTMLElement | null;\n contentElement?: HTMLElement | null;\n}\n\nexport interface ModalsStateEntry extends ModalElements {\n id: string | null;\n /**\n * Событие начала открытия модалки.\n */\n onOpen?: VoidFunction;\n /**\n * Событие открытия модалки.\n */\n onOpened?: VoidFunction;\n /**\n * Событие начала закрытия модалки.\n */\n onClose?: VoidFunction;\n /**\n * Событие закрытия модалки.\n */\n onClosed?: VoidFunction;\n type?: ModalType;\n\n settlingHeight?: number;\n expandable?: boolean;\n\n /**\n * Процент текущего сдвига модалки\n */\n translateY?: number;\n /**\n * Процент сдвига модалки в изначальном состоянии\n */\n translateYFrom?: number;\n /**\n * Процент сдвига модалки во время взаимодействия с ней (потянуть, чтобы открыть или закрыть)\n */\n translateYCurrent?: number;\n\n touchStartContentScrollTop?: number;\n touchMovePositive?: boolean | null;\n touchShiftYPercent?: number;\n\n expanded?: boolean;\n collapsed?: boolean;\n hidden?: boolean;\n\n contentScrolled?: boolean;\n contentScrollStopTimeout?: ReturnType<typeof setTimeout>;\n\n expandedRange?: TranslateRange;\n collapsedRange?: TranslateRange;\n hiddenRange?: TranslateRange;\n}\n\nexport interface ModalRootProps {\n activeModal?: string | null;\n children: React.ReactElement | Iterable<React.ReactElement>;\n\n /**\n * Будет вызвано при начале открытия активной модалки с её id\n */\n onOpen?(modalId: string): void;\n\n /**\n * Будет вызвано при окончательном открытии активной модалки с её id\n */\n onOpened?(modalId: string): void;\n\n /**\n * Будет вызвано при начале закрытия активной модалки с её id\n */\n onClose?(modalId: string): void;\n\n /**\n * Будет вызвано при окончательном закрытии активной модалки с её id\n */\n onClosed?(modalId: string): void;\n}\n\nexport interface ModalRootWithDOMProps extends HasPlatform, ModalRootProps, DOMContextInterface {\n /**\n * @ignore\n */\n configProvider?: ConfigProviderContextInterface;\n}\n"],"names":["ModalType","PAGE","CARD"],"mappings":"WAIO;UAAKA,SAAS;IAATA,UACVC,UAAO;IADGD,UAEVE,UAAO;GAFGF,cAAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/ModalRoot/useModalManager.tsx"],"sourcesContent":["import * as React from 'react';\nimport { isFunction, noop } from '@vkontakte/vkjs';\nimport { getNavId } from '../../lib/getNavId';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { HasChildren } from '../../types';\nimport { ModalsState, ModalsStateEntry, ModalType } from './types';\n\ninterface ModalTransitionState {\n activeModal?: string | null;\n enteringModal?: string | null;\n exitingModal?: string | null;\n history?: string[];\n isBack?: boolean | null;\n}\n\nexport interface ModalTransitionProps extends ModalTransitionState {\n onEnter: VoidFunction;\n onEntered: (id: string | null) => void;\n onExit: VoidFunction;\n onExited: (id: string | null) => void;\n getModalState: (id: string | undefined | null) => ModalsStateEntry | undefined;\n delayEnter: boolean;\n}\n\nfunction getModals(children: React.ReactNode | React.ReactNode[]) {\n return React.Children.toArray(children) as React.ReactElement[];\n}\n\nconst warn = warnOnce('ModalRoot');\n\nexport function modalTransitionReducer(\n state: ModalTransitionState,\n action: {\n type: 'setActive' | 'entered' | 'exited' | 'inited';\n id: string | null;\n },\n): ModalTransitionState {\n if (action.type === 'setActive' && action.id !== state.activeModal) {\n const nextModal = action.id;\n // preserve exiting modal if switching mid-transition\n const prevModal = state.exitingModal || state.activeModal;\n let history = state.history ? [...state.history] : [];\n const isBack = Boolean(nextModal && history.includes(nextModal));\n\n if (nextModal === null) {\n history = [];\n } else if (isBack) {\n history = history.splice(0, history.indexOf(nextModal) + 1);\n } else {\n history.push(nextModal);\n }\n\n return {\n activeModal: nextModal,\n // not entering yet\n enteringModal: null,\n exitingModal: prevModal,\n history,\n isBack,\n };\n }\n if (action.type === 'entered' && action.id === state.enteringModal) {\n return { ...state, enteringModal: null };\n }\n if (action.type === 'exited' && action.id === state.exitingModal) {\n return { ...state, exitingModal: null };\n }\n if (action.type === 'inited' && action.id === state.activeModal) {\n return { ...state, enteringModal: action.id };\n }\n return state;\n}\n\n/**\n * Реализует переход модалок. При смене activeModal m1 -> m2:\n * 1. activeModal: m1, exitingModal: null, enteringModal: null, триггер перехода\n * 2. activeModal: m2, exitingModal: m1, enteringModal: null, рендерим m2 чтобы прошел init, начинаем анимацию выхода\n * одновременный переход между ModalPage:\n * 3a. activeModal: m2, exitingModal: m1, enteringModal: m2\n * 4a. exitingModal и enteringModal переходят в null в порядке завершения анимации\n * ИЛИ дожидаемся скрытия ModalCard\n * 3b. activeModal: m2, exitingModal: null, enteringModal: m2\n * 4b. enteringModal переходит в null после завершения анимации\n * 5. activeModal: m2, exitingModal: null, enteringModal: null, переход закончен\n */\nexport function useModalManager(\n activeModal: string | null | undefined,\n children: React.ReactNode | React.ReactNode[],\n onOpen: (id: string) => void = noop,\n onOpened: (id: string) => void = noop,\n onClose: (id: string) => void = noop,\n onClosed: (id: string) => void = noop,\n initModal: (state: ModalsStateEntry) => void = noop,\n): ModalTransitionProps {\n const modalsState = React.useRef<ModalsState>({}).current;\n getModals(children).forEach((Modal) => {\n const modalProps = Modal.props;\n const id = getNavId(modalProps, warn);\n const state: ModalsStateEntry = (id !== undefined && modalsState[id]) || {\n id: id ?? null,\n };\n\n state.onOpen = Modal.props.onOpen;\n state.onOpened = Modal.props.onOpened;\n state.onClose = Modal.props.onClose;\n state.onClosed = Modal.props.onClosed;\n // ModalPage props\n if (typeof modalProps.settlingHeight === 'number') {\n state.settlingHeight = modalProps.settlingHeight;\n }\n\n if (state.id !== null) {\n modalsState[state.id] = state;\n }\n });\n\n const isMissing = activeModal && !modalsState[activeModal];\n const safeActiveModal = isMissing ? null : activeModal;\n const [transitionState, dispatchTransition] = React.useReducer(modalTransitionReducer, {\n activeModal: safeActiveModal,\n enteringModal: null,\n exitingModal: null,\n history: safeActiveModal ? [safeActiveModal] : [],\n isBack: false,\n });\n\n // Map props to state, render activeModal for init\n useIsomorphicLayoutEffect(() => {\n // ignore non-existent activeModal\n if (process.env.NODE_ENV === 'development' && isMissing) {\n warn(`Переход невозможен - модальное окно (страница) ${activeModal} не существует`, 'error');\n }\n dispatchTransition({ type: 'setActive', id: safeActiveModal ?? null });\n }, [activeModal]);\n\n // Init activeModal & set enteringModal\n useIsomorphicLayoutEffect(() => {\n if (transitionState.activeModal) {\n initModal(modalsState[transitionState.activeModal]);\n dispatchTransition({ type: 'inited', id: transitionState.activeModal });\n }\n }, [transitionState.activeModal]);\n\n const isCard = (id: string | null | undefined) =>\n id != null && modalsState[id]?.type === ModalType.CARD;\n const onEntered = React.useCallback(\n (id: string | null) => {\n if (id) {\n const modalState = modalsState[id];\n\n if (isFunction(modalState.onOpened)) {\n modalState.onOpened();\n } else if (isFunction(onOpened)) {\n onOpened(id);\n }\n }\n\n dispatchTransition({ type: 'entered', id });\n },\n [modalsState, onOpened],\n );\n const onExited = React.useCallback(\n (id: string | null) => {\n if (id) {\n const modalState = modalsState[id];\n\n if (isFunction(modalState.onClosed)) {\n modalState.onClosed();\n } else if (isFunction(onClosed)) {\n onClosed(id);\n }\n }\n\n dispatchTransition({ type: 'exited', id });\n },\n [modalsState, onClosed],\n );\n const delayEnter = Boolean(\n transitionState.exitingModal && (isCard(activeModal) || isCard(transitionState.exitingModal)),\n );\n const getModalState = React.useCallback(\n (id: string | undefined | null) => (id ? modalsState[id] : undefined),\n [modalsState],\n );\n\n function onEnter() {\n const modalState = transitionState.activeModal && modalsState[transitionState.activeModal];\n if (modalState) {\n if (isFunction(modalState.onOpen)) {\n modalState.onOpen();\n } else if (isFunction(onOpen) && modalState.id) {\n onOpen(modalState.id);\n }\n }\n }\n\n function onExit() {\n const modalState = transitionState.activeModal && modalsState[transitionState.activeModal];\n if (modalState) {\n if (isFunction(modalState.onClose)) {\n modalState.onClose();\n } else if (isFunction(onClose) && modalState.id) {\n onClose(modalState.id);\n }\n }\n }\n\n return {\n onEnter,\n onEntered,\n onExit,\n onExited,\n ...transitionState,\n delayEnter,\n getModalState,\n };\n}\n\ntype WithModalManager<Props extends ModalTransitionProps> = HasChildren &\n Omit<Props, keyof ModalTransitionProps> & {\n activeModal?: string | null;\n };\n\nexport function withModalManager(initModal: (a: ModalsStateEntry) => void = noop) {\n return function <Props extends ModalTransitionProps>(\n Wrapped: React.ComponentType<Props>,\n ): React.ComponentType<WithModalManager<Props>> {\n return function WithModalManager(props) {\n const transitionManager = useModalManager(\n props.activeModal,\n props.children,\n (props as any).onOpen,\n (props as any).onOpened,\n (props as any).onClose,\n (props as any).onClosed,\n initModal,\n );\n return <Wrapped {...(props as any)} {...transitionManager} />;\n };\n };\n}\n"],"names":["React","isFunction","noop","getNavId","useIsomorphicLayoutEffect","warnOnce","ModalType","getModals","children","Children","toArray","warn","modalTransitionReducer","state","action","type","id","activeModal","nextModal","prevModal","exitingModal","history","isBack","Boolean","includes","splice","indexOf","push","enteringModal","useModalManager","onOpen","onOpened","onClose","onClosed","initModal","modalsState","useRef","current","forEach","Modal","modalProps","props","undefined","settlingHeight","isMissing","safeActiveModal","transitionState","dispatchTransition","useReducer","process","env","NODE_ENV","isCard","CARD","onEntered","useCallback","modalState","onExited","delayEnter","getModalState","onEnter","onExit","withModalManager","Wrapped","WithModalManager","transitionManager"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/ModalRoot/useModalManager.tsx"],"sourcesContent":["import * as React from 'react';\nimport { isFunction, noop } from '@vkontakte/vkjs';\nimport { getNavId } from '../../lib/getNavId';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { HasChildren } from '../../types';\nimport { ModalsState, ModalsStateEntry, ModalType } from './types';\n\ninterface ModalTransitionState {\n activeModal?: string | null;\n enteringModal?: string | null;\n exitingModal?: string | null;\n history?: string[];\n isBack?: boolean | null;\n}\n\nexport interface ModalTransitionProps extends ModalTransitionState {\n onEnter: VoidFunction;\n onEntered: (id: string | null) => void;\n onExit: VoidFunction;\n onExited: (id: string | null) => void;\n getModalState: (id: string | undefined | null) => ModalsStateEntry | undefined;\n delayEnter: boolean;\n}\n\nfunction getModals(children: React.ReactNode | React.ReactNode[]) {\n return React.Children.toArray(children) as React.ReactElement[];\n}\n\nconst warn = warnOnce('ModalRoot');\n\nexport function modalTransitionReducer(\n state: ModalTransitionState,\n action: {\n type: 'setActive' | 'entered' | 'exited' | 'inited';\n id: string | null;\n },\n): ModalTransitionState {\n if (action.type === 'setActive' && action.id !== state.activeModal) {\n const nextModal = action.id;\n // preserve exiting modal if switching mid-transition\n const prevModal = state.exitingModal || state.activeModal;\n let history = state.history ? [...state.history] : [];\n const isBack = Boolean(nextModal && history.includes(nextModal));\n\n if (nextModal === null) {\n history = [];\n } else if (isBack) {\n history = history.splice(0, history.indexOf(nextModal) + 1);\n } else {\n history.push(nextModal);\n }\n\n return {\n activeModal: nextModal,\n // not entering yet\n enteringModal: null,\n exitingModal: prevModal,\n history,\n isBack,\n };\n }\n if (action.type === 'entered' && action.id === state.enteringModal) {\n return { ...state, enteringModal: null };\n }\n if (action.type === 'exited' && action.id === state.exitingModal) {\n return { ...state, exitingModal: null };\n }\n if (action.type === 'inited' && action.id === state.activeModal) {\n return { ...state, enteringModal: action.id };\n }\n return state;\n}\n\n/**\n * Реализует переход модалок. При смене activeModal m1 -> m2:\n * 1. activeModal: m1, exitingModal: null, enteringModal: null, триггер перехода\n * 2. activeModal: m2, exitingModal: m1, enteringModal: null, рендерим m2 чтобы прошел init, начинаем анимацию выхода\n * одновременный переход между ModalPage:\n * 3a. activeModal: m2, exitingModal: m1, enteringModal: m2\n * 4a. exitingModal и enteringModal переходят в null в порядке завершения анимации\n * ИЛИ дожидаемся скрытия ModalCard\n * 3b. activeModal: m2, exitingModal: null, enteringModal: m2\n * 4b. enteringModal переходит в null после завершения анимации\n * 5. activeModal: m2, exitingModal: null, enteringModal: null, переход закончен\n */\nexport function useModalManager(\n activeModal: string | null | undefined,\n children: React.ReactNode | React.ReactNode[],\n onOpen: (id: string) => void = noop,\n onOpened: (id: string) => void = noop,\n onClose: (id: string) => void = noop,\n onClosed: (id: string) => void = noop,\n initModal: (state: ModalsStateEntry) => void = noop,\n): ModalTransitionProps {\n const modalsState = React.useRef<ModalsState>({}).current;\n getModals(children).forEach((Modal) => {\n const modalProps = Modal.props;\n const id = getNavId(modalProps, warn);\n const state: ModalsStateEntry = (id !== undefined && modalsState[id]) || {\n id: id ?? null,\n };\n\n state.onOpen = Modal.props.onOpen;\n state.onOpened = Modal.props.onOpened;\n state.onClose = Modal.props.onClose;\n state.onClosed = Modal.props.onClosed;\n // ModalPage props\n if (typeof modalProps.settlingHeight === 'number') {\n state.settlingHeight = modalProps.settlingHeight;\n }\n\n if (state.id !== null) {\n modalsState[state.id] = state;\n }\n });\n\n const isMissing = activeModal && !modalsState[activeModal];\n const safeActiveModal = isMissing ? null : activeModal;\n const [transitionState, dispatchTransition] = React.useReducer(modalTransitionReducer, {\n activeModal: safeActiveModal,\n enteringModal: null,\n exitingModal: null,\n history: safeActiveModal ? [safeActiveModal] : [],\n isBack: false,\n });\n\n // Map props to state, render activeModal for init\n useIsomorphicLayoutEffect(() => {\n // ignore non-existent activeModal\n if (process.env.NODE_ENV === 'development' && isMissing) {\n warn(`Переход невозможен - модальное окно (страница) ${activeModal} не существует`, 'error');\n }\n dispatchTransition({ type: 'setActive', id: safeActiveModal ?? null });\n }, [activeModal]);\n\n // Init activeModal & set enteringModal\n useIsomorphicLayoutEffect(() => {\n if (transitionState.activeModal) {\n initModal(modalsState[transitionState.activeModal]);\n dispatchTransition({ type: 'inited', id: transitionState.activeModal });\n }\n }, [transitionState.activeModal]);\n\n const isCard = (id: string | null | undefined) =>\n id != null && modalsState[id]?.type === ModalType.CARD;\n const onEntered = React.useCallback(\n (id: string | null) => {\n if (id) {\n const modalState = modalsState[id];\n\n if (isFunction(modalState.onOpened)) {\n modalState.onOpened();\n } else if (isFunction(onOpened)) {\n onOpened(id);\n }\n }\n\n dispatchTransition({ type: 'entered', id });\n },\n [modalsState, onOpened],\n );\n const onExited = React.useCallback(\n (id: string | null) => {\n if (id) {\n const modalState = modalsState[id];\n\n if (isFunction(modalState.onClosed)) {\n modalState.onClosed();\n } else if (isFunction(onClosed)) {\n onClosed(id);\n }\n }\n\n dispatchTransition({ type: 'exited', id });\n },\n [modalsState, onClosed],\n );\n const delayEnter = Boolean(\n transitionState.exitingModal && (isCard(activeModal) || isCard(transitionState.exitingModal)),\n );\n const getModalState = React.useCallback(\n (id: string | undefined | null) => (id ? modalsState[id] : undefined),\n [modalsState],\n );\n\n function onEnter() {\n const modalState = transitionState.activeModal && modalsState[transitionState.activeModal];\n if (modalState) {\n if (isFunction(modalState.onOpen)) {\n modalState.onOpen();\n } else if (isFunction(onOpen) && modalState.id) {\n onOpen(modalState.id);\n }\n }\n }\n\n function onExit() {\n const modalState = transitionState.activeModal && modalsState[transitionState.activeModal];\n if (modalState) {\n if (isFunction(modalState.onClose)) {\n modalState.onClose();\n } else if (isFunction(onClose) && modalState.id) {\n onClose(modalState.id);\n }\n }\n }\n\n return {\n onEnter,\n onEntered,\n onExit,\n onExited,\n ...transitionState,\n delayEnter,\n getModalState,\n };\n}\n\ntype WithModalManager<Props extends ModalTransitionProps> = HasChildren &\n Omit<Props, keyof ModalTransitionProps> & {\n activeModal?: string | null;\n };\n\nexport function withModalManager(initModal: (a: ModalsStateEntry) => void = noop) {\n return function <Props extends ModalTransitionProps>(\n Wrapped: React.ComponentType<Props>,\n ): React.ComponentType<WithModalManager<Props>> {\n return function WithModalManager(props) {\n const transitionManager = useModalManager(\n props.activeModal,\n props.children,\n (props as any).onOpen,\n (props as any).onOpened,\n (props as any).onClose,\n (props as any).onClosed,\n initModal,\n );\n return <Wrapped {...(props as any)} {...transitionManager} />;\n };\n };\n}\n"],"names":["React","isFunction","noop","getNavId","useIsomorphicLayoutEffect","warnOnce","ModalType","getModals","children","Children","toArray","warn","modalTransitionReducer","state","action","type","id","activeModal","nextModal","prevModal","exitingModal","history","isBack","Boolean","includes","splice","indexOf","push","enteringModal","useModalManager","onOpen","onOpened","onClose","onClosed","initModal","modalsState","useRef","current","forEach","Modal","modalProps","props","undefined","settlingHeight","isMissing","safeActiveModal","transitionState","dispatchTransition","useReducer","process","env","NODE_ENV","isCard","CARD","onEntered","useCallback","modalState","onExited","delayEnter","getModalState","onEnter","onExit","withModalManager","Wrapped","WithModalManager","transitionManager"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/ModalRoot/useModalRootContext.tsx"],"sourcesContent":["import React from 'react';\nimport { ModalRootContext } from './ModalRootContext';\n\nexport const useModalRootContext = () => React.useContext(ModalRootContext);\n"],"names":["React","ModalRootContext","useModalRootContext","useContext"],"mappings":"AAAA,OAAOA,WAAW,QAAQ;AAC1B,SAASC,gBAAgB,QAAQ,qBAAqB;AAEtD,OAAO,MAAMC,sBAAsB,IAAMF,MAAMG,
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/ModalRoot/useModalRootContext.tsx"],"sourcesContent":["import React from 'react';\nimport { ModalRootContext } from './ModalRootContext';\n\nexport const useModalRootContext = () => React.useContext(ModalRootContext);\n"],"names":["React","ModalRootContext","useModalRootContext","useContext"],"mappings":"AAAA,OAAOA,WAAW,QAAQ;AAC1B,SAASC,gBAAgB,QAAQ,qBAAqB;AAEtD,OAAO,MAAMC,sBAAsB,IAAMF,MAAMG,UAAU,CAACF,kBAAkB"}
|
|
@@ -2,7 +2,7 @@ import * as React from 'react';
|
|
|
2
2
|
import { ModalRootContext } from './ModalRootContext';
|
|
3
3
|
export function withModalRootContext(Component) {
|
|
4
4
|
function WithModalRootContext(props) {
|
|
5
|
-
const { updateModalHeight
|
|
5
|
+
const { updateModalHeight } = React.useContext(ModalRootContext);
|
|
6
6
|
return /*#__PURE__*/ React.createElement(Component, {
|
|
7
7
|
...props,
|
|
8
8
|
updateModalHeight: updateModalHeight
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/ModalRoot/withModalRootContext.tsx"],"sourcesContent":["import * as React from 'react';\nimport { ModalRootContext, ModalRootContextInterface } from './ModalRootContext';\n\ntype PickedProps = Pick<ModalRootContextInterface, 'updateModalHeight'>;\n\nexport function withModalRootContext<P extends PickedProps>(\n Component: React.ComponentType<P>,\n): React.ComponentType<Omit<P, keyof PickedProps>> {\n function WithModalRootContext(props: Omit<P, keyof PickedProps>) {\n const { updateModalHeight } = React.useContext(ModalRootContext);\n\n return <Component {...(props as P)} updateModalHeight={updateModalHeight} />;\n }\n return WithModalRootContext;\n}\n"],"names":["React","ModalRootContext","withModalRootContext","Component","WithModalRootContext","props","updateModalHeight","useContext"],"mappings":"AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,gBAAgB,QAAmC,qBAAqB;AAIjF,OAAO,SAASC,qBACdC,SAAiC;IAEjC,SAASC,qBAAqBC,KAAiC;QAC7D,MAAM,EAAEC,
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/ModalRoot/withModalRootContext.tsx"],"sourcesContent":["import * as React from 'react';\nimport { ModalRootContext, ModalRootContextInterface } from './ModalRootContext';\n\ntype PickedProps = Pick<ModalRootContextInterface, 'updateModalHeight'>;\n\nexport function withModalRootContext<P extends PickedProps>(\n Component: React.ComponentType<P>,\n): React.ComponentType<Omit<P, keyof PickedProps>> {\n function WithModalRootContext(props: Omit<P, keyof PickedProps>) {\n const { updateModalHeight } = React.useContext(ModalRootContext);\n\n return <Component {...(props as P)} updateModalHeight={updateModalHeight} />;\n }\n return WithModalRootContext;\n}\n"],"names":["React","ModalRootContext","withModalRootContext","Component","WithModalRootContext","props","updateModalHeight","useContext"],"mappings":"AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,gBAAgB,QAAmC,qBAAqB;AAIjF,OAAO,SAASC,qBACdC,SAAiC;IAEjC,SAASC,qBAAqBC,KAAiC;QAC7D,MAAM,EAAEC,iBAAiB,EAAE,GAAGN,MAAMO,UAAU,CAACN;QAE/C,qBAAO,oBAACE;YAAW,GAAIE,KAAK;YAAQC,mBAAmBA;;IACzD;IACA,OAAOF;AACT"}
|
|
@@ -15,7 +15,7 @@ const sizeYClassNames = {
|
|
|
15
15
|
};
|
|
16
16
|
/**
|
|
17
17
|
* @see https://vkcom.github.io/VKUI/#/NativeSelect
|
|
18
|
-
*/ const NativeSelect = ({ style
|
|
18
|
+
*/ const NativeSelect = ({ style, defaultValue = '', align, placeholder, children, className, getRef, getRootRef, disabled, multiline, selectType = 'default', status, icon = /*#__PURE__*/ React.createElement(DropdownIcon, null), before, onChange: onChangeProp, value: valueProp, ...restProps })=>{
|
|
19
19
|
const [title, setTitle] = React.useState('');
|
|
20
20
|
const [empty, setEmpty] = React.useState(false);
|
|
21
21
|
const [value, onChange] = useEnsuredControl({
|
|
@@ -25,7 +25,7 @@ const sizeYClassNames = {
|
|
|
25
25
|
value: valueProp
|
|
26
26
|
});
|
|
27
27
|
const selectRef = useExternRef(getRef);
|
|
28
|
-
const { sizeY ='none'
|
|
28
|
+
const { sizeY = 'none' } = useAdaptivity();
|
|
29
29
|
useIsomorphicLayoutEffect(()=>{
|
|
30
30
|
const selectedOption = selectRef.current?.options[selectRef.current.selectedIndex];
|
|
31
31
|
if (selectedOption) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/NativeSelect/NativeSelect.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { useEnsuredControl } from '../../hooks/useEnsuredControl';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { SizeType } from '../../lib/adaptivity';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport { HasAlign, HasRef, HasRootRef } from '../../types';\nimport { DropdownIcon } from '../DropdownIcon/DropdownIcon';\nimport { FormField, FormFieldProps } from '../FormField/FormField';\nimport type { SelectType } from '../Select/Select';\nimport { SelectTypography } from '../SelectTypography/SelectTypography';\nimport styles from '../Select/Select.module.css';\n\nconst sizeYClassNames = {\n none: styles['Select--sizeY-none'],\n [SizeType.COMPACT]: styles['Select--sizeY-compact'],\n};\n\nexport interface NativeSelectProps\n extends Omit<React.SelectHTMLAttributes<HTMLSelectElement>, 'multiple'>,\n HasRef<HTMLSelectElement>,\n HasRootRef<HTMLLabelElement>,\n HasAlign,\n Pick<FormFieldProps, 'before' | 'status'> {\n placeholder?: string;\n multiline?: boolean;\n selectType?: SelectType;\n /**\n * Иконка раскрывающегося списка\n */\n icon?: React.ReactNode;\n}\n\nexport interface SelectState {\n value?: React.SelectHTMLAttributes<HTMLSelectElement>['value'];\n title?: string;\n notSelected?: boolean;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/NativeSelect\n */\nconst NativeSelect = ({\n style,\n defaultValue = '',\n align,\n placeholder,\n children,\n className,\n getRef,\n getRootRef,\n disabled,\n multiline,\n selectType = 'default',\n status,\n icon = <DropdownIcon />,\n before,\n onChange: onChangeProp,\n value: valueProp,\n ...restProps\n}: NativeSelectProps) => {\n const [title, setTitle] = React.useState('');\n const [empty, setEmpty] = React.useState(false);\n const [value, onChange] = useEnsuredControl({\n defaultValue,\n disabled,\n onChange: onChangeProp,\n value: valueProp,\n });\n const selectRef = useExternRef(getRef);\n const { sizeY = 'none' } = useAdaptivity();\n\n useIsomorphicLayoutEffect(() => {\n const selectedOption = selectRef.current?.options[selectRef.current.selectedIndex];\n if (selectedOption) {\n setTitle(selectedOption.text);\n setEmpty(selectedOption.value === '' && placeholder != null);\n }\n }, [value, children]);\n\n return (\n <FormField\n Component=\"label\"\n className={classNames(\n styles['Select'],\n 'vkuiInternalNativeSelect',\n before && styles['Select--hasBefore'],\n empty && styles['Select--empty'],\n multiline && styles['Select--multiline'],\n align === 'center' && styles['Select--align-center'],\n align === 'right' && styles['Select--align-right'],\n sizeY !== SizeType.REGULAR && sizeYClassNames[sizeY],\n className,\n )}\n style={style}\n getRootRef={getRootRef}\n disabled={disabled}\n before={before}\n after={icon}\n status={status}\n >\n <select\n {...restProps}\n disabled={disabled}\n className={styles['Select__el']}\n onChange={onChange}\n value={value}\n ref={selectRef}\n >\n {placeholder && <option value=\"\">{placeholder}</option>}\n {children}\n </select>\n <div className={styles['Select__container']} aria-hidden>\n <SelectTypography className={styles['Select__title']} selectType={selectType}>\n {title}\n </SelectTypography>\n </div>\n </FormField>\n );\n};\n\nexport { NativeSelect };\n"],"names":["React","classNames","useAdaptivity","useEnsuredControl","useExternRef","SizeType","useIsomorphicLayoutEffect","DropdownIcon","FormField","SelectTypography","styles","sizeYClassNames","none","COMPACT","NativeSelect","style","defaultValue","align","placeholder","children","className","getRef","getRootRef","disabled","multiline","selectType","status","icon","before","onChange","onChangeProp","value","valueProp","restProps","title","setTitle","useState","empty","setEmpty","selectRef","sizeY","selectedOption","current","options","selectedIndex","text","Component","REGULAR","after","select","ref","option","div","aria-hidden"],"mappings":"AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,aAAa,QAAQ,4BAA4B;AAC1D,SAASC,iBAAiB,QAAQ,gCAAgC;AAClE,SAASC,YAAY,QAAQ,2BAA2B;AACxD,SAASC,QAAQ,QAAQ,uBAAuB;AAChD,SAASC,yBAAyB,QAAQ,sCAAsC;AAEhF,SAASC,YAAY,QAAQ,+BAA+B;AAC5D,SAASC,SAAS,QAAwB,yBAAyB;AAEnE,SAASC,gBAAgB,QAAQ,uCAAuC;AACxE,OAAOC,YAAY,8BAA8B;AAEjD,MAAMC,kBAAkB;IACtBC,MAAMF,MAAM,CAAC,qBAAqB;IAClC,CAACL,SAASQ,
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/NativeSelect/NativeSelect.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { useEnsuredControl } from '../../hooks/useEnsuredControl';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { SizeType } from '../../lib/adaptivity';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport { HasAlign, HasRef, HasRootRef } from '../../types';\nimport { DropdownIcon } from '../DropdownIcon/DropdownIcon';\nimport { FormField, FormFieldProps } from '../FormField/FormField';\nimport type { SelectType } from '../Select/Select';\nimport { SelectTypography } from '../SelectTypography/SelectTypography';\nimport styles from '../Select/Select.module.css';\n\nconst sizeYClassNames = {\n none: styles['Select--sizeY-none'],\n [SizeType.COMPACT]: styles['Select--sizeY-compact'],\n};\n\nexport interface NativeSelectProps\n extends Omit<React.SelectHTMLAttributes<HTMLSelectElement>, 'multiple'>,\n HasRef<HTMLSelectElement>,\n HasRootRef<HTMLLabelElement>,\n HasAlign,\n Pick<FormFieldProps, 'before' | 'status'> {\n placeholder?: string;\n multiline?: boolean;\n selectType?: SelectType;\n /**\n * Иконка раскрывающегося списка\n */\n icon?: React.ReactNode;\n}\n\nexport interface SelectState {\n value?: React.SelectHTMLAttributes<HTMLSelectElement>['value'];\n title?: string;\n notSelected?: boolean;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/NativeSelect\n */\nconst NativeSelect = ({\n style,\n defaultValue = '',\n align,\n placeholder,\n children,\n className,\n getRef,\n getRootRef,\n disabled,\n multiline,\n selectType = 'default',\n status,\n icon = <DropdownIcon />,\n before,\n onChange: onChangeProp,\n value: valueProp,\n ...restProps\n}: NativeSelectProps) => {\n const [title, setTitle] = React.useState('');\n const [empty, setEmpty] = React.useState(false);\n const [value, onChange] = useEnsuredControl({\n defaultValue,\n disabled,\n onChange: onChangeProp,\n value: valueProp,\n });\n const selectRef = useExternRef(getRef);\n const { sizeY = 'none' } = useAdaptivity();\n\n useIsomorphicLayoutEffect(() => {\n const selectedOption = selectRef.current?.options[selectRef.current.selectedIndex];\n if (selectedOption) {\n setTitle(selectedOption.text);\n setEmpty(selectedOption.value === '' && placeholder != null);\n }\n }, [value, children]);\n\n return (\n <FormField\n Component=\"label\"\n className={classNames(\n styles['Select'],\n 'vkuiInternalNativeSelect',\n before && styles['Select--hasBefore'],\n empty && styles['Select--empty'],\n multiline && styles['Select--multiline'],\n align === 'center' && styles['Select--align-center'],\n align === 'right' && styles['Select--align-right'],\n sizeY !== SizeType.REGULAR && sizeYClassNames[sizeY],\n className,\n )}\n style={style}\n getRootRef={getRootRef}\n disabled={disabled}\n before={before}\n after={icon}\n status={status}\n >\n <select\n {...restProps}\n disabled={disabled}\n className={styles['Select__el']}\n onChange={onChange}\n value={value}\n ref={selectRef}\n >\n {placeholder && <option value=\"\">{placeholder}</option>}\n {children}\n </select>\n <div className={styles['Select__container']} aria-hidden>\n <SelectTypography className={styles['Select__title']} selectType={selectType}>\n {title}\n </SelectTypography>\n </div>\n </FormField>\n );\n};\n\nexport { NativeSelect };\n"],"names":["React","classNames","useAdaptivity","useEnsuredControl","useExternRef","SizeType","useIsomorphicLayoutEffect","DropdownIcon","FormField","SelectTypography","styles","sizeYClassNames","none","COMPACT","NativeSelect","style","defaultValue","align","placeholder","children","className","getRef","getRootRef","disabled","multiline","selectType","status","icon","before","onChange","onChangeProp","value","valueProp","restProps","title","setTitle","useState","empty","setEmpty","selectRef","sizeY","selectedOption","current","options","selectedIndex","text","Component","REGULAR","after","select","ref","option","div","aria-hidden"],"mappings":"AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,aAAa,QAAQ,4BAA4B;AAC1D,SAASC,iBAAiB,QAAQ,gCAAgC;AAClE,SAASC,YAAY,QAAQ,2BAA2B;AACxD,SAASC,QAAQ,QAAQ,uBAAuB;AAChD,SAASC,yBAAyB,QAAQ,sCAAsC;AAEhF,SAASC,YAAY,QAAQ,+BAA+B;AAC5D,SAASC,SAAS,QAAwB,yBAAyB;AAEnE,SAASC,gBAAgB,QAAQ,uCAAuC;AACxE,OAAOC,YAAY,8BAA8B;AAEjD,MAAMC,kBAAkB;IACtBC,MAAMF,MAAM,CAAC,qBAAqB;IAClC,CAACL,SAASQ,OAAO,CAAC,EAAEH,MAAM,CAAC,wBAAwB;AACrD;AAuBA;;CAEC,GACD,MAAMI,eAAe,CAAC,EACpBC,KAAK,EACLC,eAAe,EAAE,EACjBC,KAAK,EACLC,WAAW,EACXC,QAAQ,EACRC,SAAS,EACTC,MAAM,EACNC,UAAU,EACVC,QAAQ,EACRC,SAAS,EACTC,aAAa,SAAS,EACtBC,MAAM,EACNC,qBAAO,oBAACpB,mBAAe,EACvBqB,MAAM,EACNC,UAAUC,YAAY,EACtBC,OAAOC,SAAS,EAChB,GAAGC,WACe;IAClB,MAAM,CAACC,OAAOC,SAAS,GAAGnC,MAAMoC,QAAQ,CAAC;IACzC,MAAM,CAACC,OAAOC,SAAS,GAAGtC,MAAMoC,QAAQ,CAAC;IACzC,MAAM,CAACL,OAAOF,SAAS,GAAG1B,kBAAkB;QAC1Ca;QACAO;QACAM,UAAUC;QACVC,OAAOC;IACT;IACA,MAAMO,YAAYnC,aAAaiB;IAC/B,MAAM,EAAEmB,QAAQ,MAAM,EAAE,GAAGtC;IAE3BI,0BAA0B;QACxB,MAAMmC,iBAAiBF,UAAUG,OAAO,EAAEC,OAAO,CAACJ,UAAUG,OAAO,CAACE,aAAa,CAAC;QAClF,IAAIH,gBAAgB;YAClBN,SAASM,eAAeI,IAAI;YAC5BP,SAASG,eAAeV,KAAK,KAAK,MAAMb,eAAe;QACzD;IACF,GAAG;QAACa;QAAOZ;KAAS;IAEpB,qBACE,oBAACX;QACCsC,WAAU;QACV1B,WAAWnB,WACTS,MAAM,CAAC,SAAS,EAChB,4BACAkB,UAAUlB,MAAM,CAAC,oBAAoB,EACrC2B,SAAS3B,MAAM,CAAC,gBAAgB,EAChCc,aAAad,MAAM,CAAC,oBAAoB,EACxCO,UAAU,YAAYP,MAAM,CAAC,uBAAuB,EACpDO,UAAU,WAAWP,MAAM,CAAC,sBAAsB,EAClD8B,UAAUnC,SAAS0C,OAAO,IAAIpC,eAAe,CAAC6B,MAAM,EACpDpB;QAEFL,OAAOA;QACPO,YAAYA;QACZC,UAAUA;QACVK,QAAQA;QACRoB,OAAOrB;QACPD,QAAQA;qBAER,oBAACuB;QACE,GAAGhB,SAAS;QACbV,UAAUA;QACVH,WAAWV,MAAM,CAAC,aAAa;QAC/BmB,UAAUA;QACVE,OAAOA;QACPmB,KAAKX;OAEJrB,6BAAe,oBAACiC;QAAOpB,OAAM;OAAIb,cACjCC,yBAEH,oBAACiC;QAAIhC,WAAWV,MAAM,CAAC,oBAAoB;QAAE2C,eAAAA;qBAC3C,oBAAC5C;QAAiBW,WAAWV,MAAM,CAAC,gBAAgB;QAAEe,YAAYA;OAC/DS;AAKX;AAEA,SAASpB,YAAY,GAAG"}
|
|
@@ -4,7 +4,7 @@ const TransitionContext = /*#__PURE__*/ React.createContext({
|
|
|
4
4
|
entering: false
|
|
5
5
|
});
|
|
6
6
|
export const useNavTransition = ()=>React.useContext(TransitionContext);
|
|
7
|
-
export const NavTransitionProvider = ({ children
|
|
7
|
+
export const NavTransitionProvider = ({ children, entering })=>{
|
|
8
8
|
const parentContext = useNavTransition();
|
|
9
9
|
const contextValue = useObjectMemo({
|
|
10
10
|
entering: parentContext.entering || entering
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/NavTransitionContext/NavTransitionContext.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useObjectMemo } from '../../hooks/useObjectMemo';\n\nexport interface TransitionContextProps {\n entering: boolean;\n}\nconst TransitionContext = React.createContext<TransitionContextProps>({\n entering: false,\n});\nexport const useNavTransition = () => React.useContext(TransitionContext);\n\nexport const NavTransitionProvider = ({\n children,\n entering,\n}: React.PropsWithChildren<TransitionContextProps>) => {\n const parentContext = useNavTransition();\n const contextValue = useObjectMemo({\n entering: parentContext.entering || entering,\n });\n return <TransitionContext.Provider value={contextValue}>{children}</TransitionContext.Provider>;\n};\n"],"names":["React","useObjectMemo","TransitionContext","createContext","entering","useNavTransition","useContext","NavTransitionProvider","children","parentContext","contextValue","Provider","value"],"mappings":"AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,aAAa,QAAQ,4BAA4B;AAK1D,MAAMC,kCAAoBF,MAAMG,
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/NavTransitionContext/NavTransitionContext.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useObjectMemo } from '../../hooks/useObjectMemo';\n\nexport interface TransitionContextProps {\n entering: boolean;\n}\nconst TransitionContext = React.createContext<TransitionContextProps>({\n entering: false,\n});\nexport const useNavTransition = () => React.useContext(TransitionContext);\n\nexport const NavTransitionProvider = ({\n children,\n entering,\n}: React.PropsWithChildren<TransitionContextProps>) => {\n const parentContext = useNavTransition();\n const contextValue = useObjectMemo({\n entering: parentContext.entering || entering,\n });\n return <TransitionContext.Provider value={contextValue}>{children}</TransitionContext.Provider>;\n};\n"],"names":["React","useObjectMemo","TransitionContext","createContext","entering","useNavTransition","useContext","NavTransitionProvider","children","parentContext","contextValue","Provider","value"],"mappings":"AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,aAAa,QAAQ,4BAA4B;AAK1D,MAAMC,kCAAoBF,MAAMG,aAAa,CAAyB;IACpEC,UAAU;AACZ;AACA,OAAO,MAAMC,mBAAmB,IAAML,MAAMM,UAAU,CAACJ,mBAAmB;AAE1E,OAAO,MAAMK,wBAAwB,CAAC,EACpCC,QAAQ,EACRJ,QAAQ,EACwC;IAChD,MAAMK,gBAAgBJ;IACtB,MAAMK,eAAeT,cAAc;QACjCG,UAAUK,cAAcL,QAAQ,IAAIA;IACtC;IACA,qBAAO,oBAACF,kBAAkBS,QAAQ;QAACC,OAAOF;OAAeF;AAC3D,EAAE"}
|
|
@@ -13,8 +13,8 @@ function getPageAriaLabelDefault(page, isCurrent) {
|
|
|
13
13
|
}
|
|
14
14
|
/**
|
|
15
15
|
* @see https://vkcom.github.io/VKUI/#/Pagination
|
|
16
|
-
*/ export const Pagination = ({ currentPage =1
|
|
17
|
-
const { sizeY ='none'
|
|
16
|
+
*/ export const Pagination = ({ currentPage = 1, siblingCount = 1, boundaryCount = 1, totalPages = 1, disabled, getPageAriaLabel = getPageAriaLabelDefault, prevButtonAriaLabel = 'Перейти на предыдущую страницу', nextButtonAriaLabel = 'Перейти на следующую страницу', getRootRef, onChange, ...resetProps })=>{
|
|
17
|
+
const { sizeY = 'none' } = useAdaptivity();
|
|
18
18
|
const pages = usePagination({
|
|
19
19
|
currentPage,
|
|
20
20
|
totalPages,
|