@vkontakte/vkui 6.4.0 → 6.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/components/ActionSheet/ActionSheet.js +2 -1
- package/dist/cjs/components/ActionSheet/ActionSheet.js.map +1 -1
- package/dist/cjs/components/ActionSheet/ActionSheetContext.d.ts +1 -0
- package/dist/cjs/components/ActionSheet/ActionSheetContext.d.ts.map +1 -1
- package/dist/cjs/components/ActionSheet/ActionSheetContext.js.map +1 -1
- package/dist/cjs/components/ActionSheetItem/ActionSheetItem.d.ts.map +1 -1
- package/dist/cjs/components/ActionSheetItem/ActionSheetItem.js +38 -12
- package/dist/cjs/components/ActionSheetItem/ActionSheetItem.js.map +1 -1
- package/dist/cjs/components/ActionSheetItem/helpers.d.ts +10 -0
- package/dist/cjs/components/ActionSheetItem/helpers.d.ts.map +1 -0
- package/dist/cjs/components/ActionSheetItem/helpers.js +22 -0
- package/dist/cjs/components/ActionSheetItem/helpers.js.map +1 -0
- package/dist/cjs/components/Alert/Alert.js +1 -1
- package/dist/cjs/components/Alert/Alert.js.map +1 -1
- package/dist/cjs/components/Avatar/Avatar.d.ts +0 -1
- package/dist/cjs/components/Avatar/Avatar.d.ts.map +1 -1
- package/dist/cjs/components/Avatar/Avatar.js +3 -11
- package/dist/cjs/components/Avatar/Avatar.js.map +1 -1
- package/dist/cjs/components/Avatar/AvatarBadge/icons.d.ts +8 -3
- package/dist/cjs/components/Avatar/AvatarBadge/icons.d.ts.map +1 -1
- package/dist/cjs/components/Avatar/AvatarBadge/icons.js +2 -2
- package/dist/cjs/components/Avatar/AvatarBadge/icons.js.map +1 -1
- package/dist/cjs/components/BaseGallery/BaseGallery.d.ts.map +1 -1
- package/dist/cjs/components/BaseGallery/BaseGallery.js +0 -2
- package/dist/cjs/components/BaseGallery/BaseGallery.js.map +1 -1
- package/dist/cjs/components/Calendar/Calendar.js +3 -3
- package/dist/cjs/components/Calendar/Calendar.js.map +1 -1
- package/dist/cjs/components/CalendarDays/CalendarDays.js +3 -3
- package/dist/cjs/components/CalendarDays/CalendarDays.js.map +1 -1
- package/dist/cjs/components/CalendarHeader/CalendarHeader.js +5 -5
- package/dist/cjs/components/CalendarHeader/CalendarHeader.js.map +1 -1
- package/dist/cjs/components/CalendarRange/CalendarRange.d.ts.map +1 -1
- package/dist/cjs/components/CalendarRange/CalendarRange.js +17 -15
- package/dist/cjs/components/CalendarRange/CalendarRange.js.map +1 -1
- package/dist/cjs/components/CalendarTime/CalendarTime.js +5 -5
- package/dist/cjs/components/CalendarTime/CalendarTime.js.map +1 -1
- package/dist/cjs/components/Cell/Cell.d.ts.map +1 -1
- package/dist/cjs/components/Cell/Cell.js +2 -2
- package/dist/cjs/components/Cell/Cell.js.map +1 -1
- package/dist/cjs/components/Checkbox/Checkbox.d.ts +7 -5
- package/dist/cjs/components/Checkbox/Checkbox.d.ts.map +1 -1
- package/dist/cjs/components/Checkbox/Checkbox.js +21 -143
- package/dist/cjs/components/Checkbox/Checkbox.js.map +1 -1
- package/dist/cjs/components/Checkbox/CheckboxInput/CheckboxInput.d.ts +8 -0
- package/dist/cjs/components/Checkbox/CheckboxInput/CheckboxInput.d.ts.map +1 -0
- package/dist/cjs/components/Checkbox/CheckboxInput/CheckboxInput.js +134 -0
- package/dist/cjs/components/Checkbox/CheckboxInput/CheckboxInput.js.map +1 -0
- package/dist/cjs/components/Checkbox/CheckboxSimple/CheckboxSimple.d.ts +3 -0
- package/dist/cjs/components/Checkbox/CheckboxSimple/CheckboxSimple.d.ts.map +1 -0
- package/dist/cjs/components/Checkbox/CheckboxSimple/CheckboxSimple.js +52 -0
- package/dist/cjs/components/Checkbox/CheckboxSimple/CheckboxSimple.js.map +1 -0
- package/dist/cjs/components/ChipsInput/ChipsInput.d.ts.map +1 -1
- package/dist/cjs/components/ChipsInput/ChipsInput.js +1 -2
- package/dist/cjs/components/ChipsInput/ChipsInput.js.map +1 -1
- package/dist/cjs/components/ChipsInputBase/ChipsInputBase.js +1 -1
- package/dist/cjs/components/ChipsInputBase/ChipsInputBase.js.map +1 -1
- package/dist/cjs/components/ChipsInputBase/helpers.d.ts.map +1 -1
- package/dist/cjs/components/ChipsInputBase/helpers.js +0 -3
- package/dist/cjs/components/ChipsInputBase/helpers.js.map +1 -1
- package/dist/cjs/components/ChipsInputBase/types.d.ts +1 -1
- package/dist/cjs/components/ChipsInputBase/types.d.ts.map +1 -1
- package/dist/cjs/components/ChipsInputBase/types.js.map +1 -1
- package/dist/cjs/components/ChipsSelect/ChipsSelect.d.ts.map +1 -1
- package/dist/cjs/components/ChipsSelect/ChipsSelect.js +1 -7
- package/dist/cjs/components/ChipsSelect/ChipsSelect.js.map +1 -1
- package/dist/cjs/components/Clickable/useState.d.ts +0 -5
- package/dist/cjs/components/Clickable/useState.d.ts.map +1 -1
- package/dist/cjs/components/Clickable/useState.js +3 -7
- package/dist/cjs/components/Clickable/useState.js.map +1 -1
- package/dist/cjs/components/CustomScrollView/CustomScrollView.d.ts +10 -1
- package/dist/cjs/components/CustomScrollView/CustomScrollView.d.ts.map +1 -1
- package/dist/cjs/components/CustomScrollView/CustomScrollView.js +41 -132
- package/dist/cjs/components/CustomScrollView/CustomScrollView.js.map +1 -1
- package/dist/cjs/components/CustomScrollView/ScrollX.d.ts +3 -0
- package/dist/cjs/components/CustomScrollView/ScrollX.d.ts.map +1 -0
- package/dist/cjs/components/CustomScrollView/ScrollX.js +42 -0
- package/dist/cjs/components/CustomScrollView/ScrollX.js.map +1 -0
- package/dist/cjs/components/CustomScrollView/ScrollY.d.ts +3 -0
- package/dist/cjs/components/CustomScrollView/ScrollY.d.ts.map +1 -0
- package/dist/cjs/components/CustomScrollView/ScrollY.js +42 -0
- package/dist/cjs/components/CustomScrollView/ScrollY.js.map +1 -0
- package/dist/cjs/components/CustomScrollView/types.d.ts +21 -0
- package/dist/cjs/components/CustomScrollView/types.d.ts.map +1 -0
- package/dist/cjs/components/CustomScrollView/types.js +8 -0
- package/dist/cjs/components/CustomScrollView/types.js.map +1 -0
- package/dist/cjs/components/CustomScrollView/useCustomScrollViewResize.d.ts +8 -0
- package/dist/cjs/components/CustomScrollView/useCustomScrollViewResize.d.ts.map +1 -0
- package/dist/cjs/components/CustomScrollView/useCustomScrollViewResize.js +32 -0
- package/dist/cjs/components/CustomScrollView/useCustomScrollViewResize.js.map +1 -0
- package/dist/cjs/components/CustomScrollView/useDetectScrollDirection.d.ts +6 -0
- package/dist/cjs/components/CustomScrollView/useDetectScrollDirection.d.ts.map +1 -0
- package/dist/cjs/components/CustomScrollView/useDetectScrollDirection.js +29 -0
- package/dist/cjs/components/CustomScrollView/useDetectScrollDirection.js.map +1 -0
- package/dist/cjs/components/CustomScrollView/useDragAndDrop.d.ts +5 -0
- package/dist/cjs/components/CustomScrollView/useDragAndDrop.d.ts.map +1 -0
- package/dist/cjs/components/CustomScrollView/useDragAndDrop.js +57 -0
- package/dist/cjs/components/CustomScrollView/useDragAndDrop.js.map +1 -0
- package/dist/cjs/components/CustomScrollView/useHorizontalScrollController.d.ts +4 -0
- package/dist/cjs/components/CustomScrollView/useHorizontalScrollController.d.ts.map +1 -0
- package/dist/cjs/components/CustomScrollView/useHorizontalScrollController.js +102 -0
- package/dist/cjs/components/CustomScrollView/useHorizontalScrollController.js.map +1 -0
- package/dist/cjs/components/CustomScrollView/useTrackerVisibility.d.ts.map +1 -1
- package/dist/cjs/components/CustomScrollView/useTrackerVisibility.js +5 -0
- package/dist/cjs/components/CustomScrollView/useTrackerVisibility.js.map +1 -1
- package/dist/cjs/components/CustomScrollView/useVerticalScrollController.d.ts +4 -0
- package/dist/cjs/components/CustomScrollView/useVerticalScrollController.d.ts.map +1 -0
- package/dist/cjs/components/CustomScrollView/useVerticalScrollController.js +102 -0
- package/dist/cjs/components/CustomScrollView/useVerticalScrollController.js.map +1 -0
- package/dist/cjs/components/CustomSelect/CustomSelect.d.ts.map +1 -1
- package/dist/cjs/components/CustomSelect/CustomSelect.js +3 -4
- package/dist/cjs/components/CustomSelect/CustomSelect.js.map +1 -1
- package/dist/cjs/components/DateInput/DateInput.js +2 -2
- package/dist/cjs/components/DateInput/DateInput.js.map +1 -1
- package/dist/cjs/components/DateRangeInput/DateRangeInput.d.ts.map +1 -1
- package/dist/cjs/components/DateRangeInput/DateRangeInput.js +4 -3
- package/dist/cjs/components/DateRangeInput/DateRangeInput.js.map +1 -1
- package/dist/cjs/components/FixedLayout/FixedLayout.d.ts +2 -2
- package/dist/cjs/components/FixedLayout/FixedLayout.d.ts.map +1 -1
- package/dist/cjs/components/FixedLayout/FixedLayout.js +1 -1
- package/dist/cjs/components/FixedLayout/FixedLayout.js.map +1 -1
- package/dist/cjs/components/Flex/FlexItem/FlexItem.d.ts +3 -3
- package/dist/cjs/components/Flex/FlexItem/FlexItem.d.ts.map +1 -1
- package/dist/cjs/components/Flex/FlexItem/FlexItem.js.map +1 -1
- package/dist/cjs/components/FocusTrap/FocusTrap.js +1 -1
- package/dist/cjs/components/FocusTrap/FocusTrap.js.map +1 -1
- package/dist/cjs/components/GridAvatar/GridAvatar.d.ts +0 -1
- package/dist/cjs/components/GridAvatar/GridAvatar.d.ts.map +1 -1
- package/dist/cjs/components/GridAvatar/GridAvatar.js +0 -3
- package/dist/cjs/components/GridAvatar/GridAvatar.js.map +1 -1
- package/dist/cjs/components/Group/Group.d.ts +1 -1
- package/dist/cjs/components/Group/Group.d.ts.map +1 -1
- package/dist/cjs/components/Group/Group.js +17 -12
- package/dist/cjs/components/Group/Group.js.map +1 -1
- package/dist/cjs/components/HorizontalScroll/HorizontalScroll.d.ts.map +1 -1
- package/dist/cjs/components/HorizontalScroll/HorizontalScroll.js +7 -10
- package/dist/cjs/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
- package/dist/cjs/components/Image/Image.d.ts +0 -1
- package/dist/cjs/components/Image/Image.d.ts.map +1 -1
- package/dist/cjs/components/Image/Image.js +3 -11
- package/dist/cjs/components/Image/Image.js.map +1 -1
- package/dist/cjs/components/ImageBase/validators.js +1 -1
- package/dist/cjs/components/ImageBase/validators.js.map +1 -1
- package/dist/cjs/components/ModalPageHeader/ModalPageHeader.d.ts.map +1 -1
- package/dist/cjs/components/ModalPageHeader/ModalPageHeader.js +17 -15
- package/dist/cjs/components/ModalPageHeader/ModalPageHeader.js.map +1 -1
- package/dist/cjs/components/ModalRoot/ModalRoot.d.ts.map +1 -1
- package/dist/cjs/components/ModalRoot/ModalRoot.js +4 -28
- package/dist/cjs/components/ModalRoot/ModalRoot.js.map +1 -1
- package/dist/cjs/components/OnboardingTooltip/OnboardingTooltipContainer.d.ts +2 -2
- package/dist/cjs/components/OnboardingTooltip/OnboardingTooltipContainer.d.ts.map +1 -1
- package/dist/cjs/components/OnboardingTooltip/OnboardingTooltipContainer.js +4 -3
- package/dist/cjs/components/OnboardingTooltip/OnboardingTooltipContainer.js.map +1 -1
- package/dist/cjs/components/PullToRefresh/PullToRefresh.d.ts.map +1 -1
- package/dist/cjs/components/PullToRefresh/PullToRefresh.js +1 -3
- package/dist/cjs/components/PullToRefresh/PullToRefresh.js.map +1 -1
- package/dist/cjs/components/Radio/Radio.d.ts +5 -1
- package/dist/cjs/components/Radio/Radio.d.ts.map +1 -1
- package/dist/cjs/components/Radio/Radio.js +12 -75
- package/dist/cjs/components/Radio/Radio.js.map +1 -1
- package/dist/cjs/components/Radio/RadioInput/RadioInput.d.ts +6 -0
- package/dist/cjs/components/Radio/RadioInput/RadioInput.d.ts.map +1 -0
- package/dist/cjs/components/Radio/RadioInput/RadioInput.js +104 -0
- package/dist/cjs/components/Radio/RadioInput/RadioInput.js.map +1 -0
- package/dist/cjs/components/SegmentedControl/SegmentedControl.d.ts.map +1 -1
- package/dist/cjs/components/SegmentedControl/SegmentedControl.js +1 -2
- package/dist/cjs/components/SegmentedControl/SegmentedControl.js.map +1 -1
- package/dist/cjs/components/SelectionControl/SelectionControl.d.ts +14 -0
- package/dist/cjs/components/SelectionControl/SelectionControl.d.ts.map +1 -0
- package/dist/cjs/components/SelectionControl/SelectionControl.js +36 -0
- package/dist/cjs/components/SelectionControl/SelectionControl.js.map +1 -0
- package/dist/cjs/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.d.ts +7 -0
- package/dist/cjs/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.d.ts.map +1 -0
- package/dist/cjs/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.js +56 -0
- package/dist/cjs/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.js.map +1 -0
- package/dist/cjs/components/Textarea/Textarea.d.ts +1 -1
- package/dist/cjs/components/Textarea/Textarea.d.ts.map +1 -1
- package/dist/cjs/components/Textarea/Textarea.js +13 -3
- package/dist/cjs/components/Textarea/Textarea.js.map +1 -1
- package/dist/cjs/components/Textarea/useResizeTextarea.d.ts +1 -1
- package/dist/cjs/components/Textarea/useResizeTextarea.d.ts.map +1 -1
- package/dist/cjs/components/Textarea/useResizeTextarea.js +2 -2
- package/dist/cjs/components/Textarea/useResizeTextarea.js.map +1 -1
- package/dist/cjs/components/View/View.d.ts.map +1 -1
- package/dist/cjs/components/View/View.js +2 -4
- package/dist/cjs/components/View/View.js.map +1 -1
- package/dist/cjs/components/View/ViewInfinite.d.ts.map +1 -1
- package/dist/cjs/components/View/ViewInfinite.js +1 -3
- package/dist/cjs/components/View/ViewInfinite.js.map +1 -1
- package/dist/cjs/components/VisuallyHidden/VisuallyHidden.d.ts +1 -1
- package/dist/cjs/components/VisuallyHidden/VisuallyHidden.d.ts.map +1 -1
- package/dist/cjs/components/VisuallyHidden/VisuallyHidden.js +4 -3
- package/dist/cjs/components/VisuallyHidden/VisuallyHidden.js.map +1 -1
- package/dist/cjs/hooks/useCalendar.d.ts.map +1 -1
- package/dist/cjs/hooks/useCalendar.js +6 -6
- package/dist/cjs/hooks/useCalendar.js.map +1 -1
- package/dist/cjs/hooks/useTodayDate.js +3 -3
- package/dist/cjs/hooks/useTodayDate.js.map +1 -1
- package/dist/cjs/index.d.ts +3 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +8 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/lib/calendar.d.ts.map +1 -1
- package/dist/cjs/lib/calendar.js +27 -16
- package/dist/cjs/lib/calendar.js.map +1 -1
- package/dist/cjs/lib/date.d.ts +1 -28
- package/dist/cjs/lib/date.d.ts.map +1 -1
- package/dist/cjs/lib/date.js +8 -180
- package/dist/cjs/lib/date.js.map +1 -1
- package/dist/components/ActionSheet/ActionSheet.js +2 -1
- package/dist/components/ActionSheet/ActionSheet.js.map +1 -1
- package/dist/components/ActionSheet/ActionSheetContext.d.ts +1 -0
- package/dist/components/ActionSheet/ActionSheetContext.d.ts.map +1 -1
- package/dist/components/ActionSheet/ActionSheetContext.js.map +1 -1
- package/dist/components/ActionSheetItem/ActionSheetItem.d.ts.map +1 -1
- package/dist/components/ActionSheetItem/ActionSheetItem.js +38 -12
- package/dist/components/ActionSheetItem/ActionSheetItem.js.map +1 -1
- package/dist/components/ActionSheetItem/helpers.d.ts +10 -0
- package/dist/components/ActionSheetItem/helpers.d.ts.map +1 -0
- package/dist/components/ActionSheetItem/helpers.js +12 -0
- package/dist/components/ActionSheetItem/helpers.js.map +1 -0
- package/dist/components/Alert/Alert.js +1 -1
- package/dist/components/Alert/Alert.js.map +1 -1
- package/dist/components/Avatar/Avatar.d.ts +0 -1
- package/dist/components/Avatar/Avatar.d.ts.map +1 -1
- package/dist/components/Avatar/Avatar.js +1 -1
- package/dist/components/Avatar/Avatar.js.map +1 -1
- package/dist/components/Avatar/AvatarBadge/icons.d.ts +8 -3
- package/dist/components/Avatar/AvatarBadge/icons.d.ts.map +1 -1
- package/dist/components/Avatar/AvatarBadge/icons.js +2 -2
- package/dist/components/Avatar/AvatarBadge/icons.js.map +1 -1
- package/dist/components/BaseGallery/BaseGallery.d.ts.map +1 -1
- package/dist/components/BaseGallery/BaseGallery.js +0 -2
- package/dist/components/BaseGallery/BaseGallery.js.map +1 -1
- package/dist/components/Calendar/Calendar.js +1 -1
- package/dist/components/Calendar/Calendar.js.map +1 -1
- package/dist/components/CalendarDays/CalendarDays.js +1 -1
- package/dist/components/CalendarDays/CalendarDays.js.map +1 -1
- package/dist/components/CalendarHeader/CalendarHeader.js +1 -1
- package/dist/components/CalendarHeader/CalendarHeader.js.map +1 -1
- package/dist/components/CalendarRange/CalendarRange.d.ts.map +1 -1
- package/dist/components/CalendarRange/CalendarRange.js +6 -4
- package/dist/components/CalendarRange/CalendarRange.js.map +1 -1
- package/dist/components/CalendarTime/CalendarTime.js +1 -1
- package/dist/components/CalendarTime/CalendarTime.js.map +1 -1
- package/dist/components/Cell/Cell.d.ts.map +1 -1
- package/dist/components/Cell/Cell.js +2 -2
- package/dist/components/Cell/Cell.js.map +1 -1
- package/dist/components/Checkbox/Checkbox.d.ts +7 -5
- package/dist/components/Checkbox/Checkbox.d.ts.map +1 -1
- package/dist/components/Checkbox/Checkbox.js +24 -146
- package/dist/components/Checkbox/Checkbox.js.map +1 -1
- package/dist/components/Checkbox/CheckboxInput/CheckboxInput.d.ts +8 -0
- package/dist/components/Checkbox/CheckboxInput/CheckboxInput.d.ts.map +1 -0
- package/dist/components/Checkbox/CheckboxInput/CheckboxInput.js +123 -0
- package/dist/components/Checkbox/CheckboxInput/CheckboxInput.js.map +1 -0
- package/dist/components/Checkbox/CheckboxSimple/CheckboxSimple.d.ts +3 -0
- package/dist/components/Checkbox/CheckboxSimple/CheckboxSimple.d.ts.map +1 -0
- package/dist/components/Checkbox/CheckboxSimple/CheckboxSimple.js +42 -0
- package/dist/components/Checkbox/CheckboxSimple/CheckboxSimple.js.map +1 -0
- package/dist/components/ChipsInput/ChipsInput.d.ts.map +1 -1
- package/dist/components/ChipsInput/ChipsInput.js +1 -2
- package/dist/components/ChipsInput/ChipsInput.js.map +1 -1
- package/dist/components/ChipsInputBase/ChipsInputBase.js +1 -1
- package/dist/components/ChipsInputBase/ChipsInputBase.js.map +1 -1
- package/dist/components/ChipsInputBase/helpers.d.ts.map +1 -1
- package/dist/components/ChipsInputBase/helpers.js +0 -3
- package/dist/components/ChipsInputBase/helpers.js.map +1 -1
- package/dist/components/ChipsInputBase/types.d.ts +1 -1
- package/dist/components/ChipsInputBase/types.d.ts.map +1 -1
- package/dist/components/ChipsInputBase/types.js.map +1 -1
- package/dist/components/ChipsSelect/ChipsSelect.d.ts.map +1 -1
- package/dist/components/ChipsSelect/ChipsSelect.js +1 -7
- package/dist/components/ChipsSelect/ChipsSelect.js.map +1 -1
- package/dist/components/Clickable/useState.d.ts +0 -5
- package/dist/components/Clickable/useState.d.ts.map +1 -1
- package/dist/components/Clickable/useState.js +2 -2
- package/dist/components/Clickable/useState.js.map +1 -1
- package/dist/components/CustomScrollView/CustomScrollView.d.ts +10 -1
- package/dist/components/CustomScrollView/CustomScrollView.d.ts.map +1 -1
- package/dist/components/CustomScrollView/CustomScrollView.js +44 -133
- package/dist/components/CustomScrollView/CustomScrollView.js.map +1 -1
- package/dist/components/CustomScrollView/ScrollX.d.ts +3 -0
- package/dist/components/CustomScrollView/ScrollX.d.ts.map +1 -0
- package/dist/components/CustomScrollView/ScrollX.js +31 -0
- package/dist/components/CustomScrollView/ScrollX.js.map +1 -0
- package/dist/components/CustomScrollView/ScrollY.d.ts +3 -0
- package/dist/components/CustomScrollView/ScrollY.d.ts.map +1 -0
- package/dist/components/CustomScrollView/ScrollY.js +31 -0
- package/dist/components/CustomScrollView/ScrollY.js.map +1 -0
- package/dist/components/CustomScrollView/types.d.ts +21 -0
- package/dist/components/CustomScrollView/types.d.ts.map +1 -0
- package/dist/components/CustomScrollView/types.js +3 -0
- package/dist/components/CustomScrollView/types.js.map +1 -0
- package/dist/components/CustomScrollView/useCustomScrollViewResize.d.ts +8 -0
- package/dist/components/CustomScrollView/useCustomScrollViewResize.d.ts.map +1 -0
- package/dist/components/CustomScrollView/useCustomScrollViewResize.js +22 -0
- package/dist/components/CustomScrollView/useCustomScrollViewResize.js.map +1 -0
- package/dist/components/CustomScrollView/useDetectScrollDirection.d.ts +6 -0
- package/dist/components/CustomScrollView/useDetectScrollDirection.d.ts.map +1 -0
- package/dist/components/CustomScrollView/useDetectScrollDirection.js +20 -0
- package/dist/components/CustomScrollView/useDetectScrollDirection.js.map +1 -0
- package/dist/components/CustomScrollView/useDragAndDrop.d.ts +5 -0
- package/dist/components/CustomScrollView/useDragAndDrop.d.ts.map +1 -0
- package/dist/components/CustomScrollView/useDragAndDrop.js +46 -0
- package/dist/components/CustomScrollView/useDragAndDrop.js.map +1 -0
- package/dist/components/CustomScrollView/useHorizontalScrollController.d.ts +4 -0
- package/dist/components/CustomScrollView/useHorizontalScrollController.d.ts.map +1 -0
- package/dist/components/CustomScrollView/useHorizontalScrollController.js +91 -0
- package/dist/components/CustomScrollView/useHorizontalScrollController.js.map +1 -0
- package/dist/components/CustomScrollView/useTrackerVisibility.d.ts.map +1 -1
- package/dist/components/CustomScrollView/useTrackerVisibility.js +5 -0
- package/dist/components/CustomScrollView/useTrackerVisibility.js.map +1 -1
- package/dist/components/CustomScrollView/useVerticalScrollController.d.ts +4 -0
- package/dist/components/CustomScrollView/useVerticalScrollController.d.ts.map +1 -0
- package/dist/components/CustomScrollView/useVerticalScrollController.js +91 -0
- package/dist/components/CustomScrollView/useVerticalScrollController.js.map +1 -0
- package/dist/components/CustomSelect/CustomSelect.d.ts.map +1 -1
- package/dist/components/CustomSelect/CustomSelect.js +3 -4
- package/dist/components/CustomSelect/CustomSelect.js.map +1 -1
- package/dist/components/DateInput/DateInput.js +2 -2
- package/dist/components/DateInput/DateInput.js.map +1 -1
- package/dist/components/DateRangeInput/DateRangeInput.d.ts.map +1 -1
- package/dist/components/DateRangeInput/DateRangeInput.js +4 -3
- package/dist/components/DateRangeInput/DateRangeInput.js.map +1 -1
- package/dist/components/FixedLayout/FixedLayout.d.ts +2 -2
- package/dist/components/FixedLayout/FixedLayout.d.ts.map +1 -1
- package/dist/components/FixedLayout/FixedLayout.js +1 -1
- package/dist/components/FixedLayout/FixedLayout.js.map +1 -1
- package/dist/components/Flex/FlexItem/FlexItem.d.ts +3 -3
- package/dist/components/Flex/FlexItem/FlexItem.d.ts.map +1 -1
- package/dist/components/Flex/FlexItem/FlexItem.js.map +1 -1
- package/dist/components/FocusTrap/FocusTrap.js +1 -1
- package/dist/components/FocusTrap/FocusTrap.js.map +1 -1
- package/dist/components/GridAvatar/GridAvatar.d.ts +0 -1
- package/dist/components/GridAvatar/GridAvatar.d.ts.map +1 -1
- package/dist/components/GridAvatar/GridAvatar.js +1 -1
- package/dist/components/GridAvatar/GridAvatar.js.map +1 -1
- package/dist/components/Group/Group.d.ts +1 -1
- package/dist/components/Group/Group.d.ts.map +1 -1
- package/dist/components/Group/Group.js +17 -12
- package/dist/components/Group/Group.js.map +1 -1
- package/dist/components/HorizontalScroll/HorizontalScroll.d.ts.map +1 -1
- package/dist/components/HorizontalScroll/HorizontalScroll.js +7 -10
- package/dist/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
- package/dist/components/Image/Image.d.ts +0 -1
- package/dist/components/Image/Image.d.ts.map +1 -1
- package/dist/components/Image/Image.js +1 -1
- package/dist/components/Image/Image.js.map +1 -1
- package/dist/components/ImageBase/validators.js +1 -1
- package/dist/components/ImageBase/validators.js.map +1 -1
- package/dist/components/ModalPageHeader/ModalPageHeader.d.ts.map +1 -1
- package/dist/components/ModalPageHeader/ModalPageHeader.js +18 -16
- package/dist/components/ModalPageHeader/ModalPageHeader.js.map +1 -1
- package/dist/components/ModalRoot/ModalRoot.d.ts.map +1 -1
- package/dist/components/ModalRoot/ModalRoot.js +4 -28
- package/dist/components/ModalRoot/ModalRoot.js.map +1 -1
- package/dist/components/OnboardingTooltip/OnboardingTooltipContainer.d.ts +2 -2
- package/dist/components/OnboardingTooltip/OnboardingTooltipContainer.d.ts.map +1 -1
- package/dist/components/OnboardingTooltip/OnboardingTooltipContainer.js +4 -3
- package/dist/components/OnboardingTooltip/OnboardingTooltipContainer.js.map +1 -1
- package/dist/components/PullToRefresh/PullToRefresh.d.ts.map +1 -1
- package/dist/components/PullToRefresh/PullToRefresh.js +1 -3
- package/dist/components/PullToRefresh/PullToRefresh.js.map +1 -1
- package/dist/components/Radio/Radio.d.ts +5 -1
- package/dist/components/Radio/Radio.d.ts.map +1 -1
- package/dist/components/Radio/Radio.js +13 -76
- package/dist/components/Radio/Radio.js.map +1 -1
- package/dist/components/Radio/RadioInput/RadioInput.d.ts +6 -0
- package/dist/components/Radio/RadioInput/RadioInput.d.ts.map +1 -0
- package/dist/components/Radio/RadioInput/RadioInput.js +93 -0
- package/dist/components/Radio/RadioInput/RadioInput.js.map +1 -0
- package/dist/components/SegmentedControl/SegmentedControl.d.ts.map +1 -1
- package/dist/components/SegmentedControl/SegmentedControl.js +1 -2
- package/dist/components/SegmentedControl/SegmentedControl.js.map +1 -1
- package/dist/components/SelectionControl/SelectionControl.d.ts +14 -0
- package/dist/components/SelectionControl/SelectionControl.d.ts.map +1 -0
- package/dist/components/SelectionControl/SelectionControl.js +27 -0
- package/dist/components/SelectionControl/SelectionControl.js.map +1 -0
- package/dist/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.d.ts +7 -0
- package/dist/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.d.ts.map +1 -0
- package/dist/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.js +46 -0
- package/dist/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.js.map +1 -0
- package/dist/components/Textarea/Textarea.d.ts +1 -1
- package/dist/components/Textarea/Textarea.d.ts.map +1 -1
- package/dist/components/Textarea/Textarea.js +13 -3
- package/dist/components/Textarea/Textarea.js.map +1 -1
- package/dist/components/Textarea/useResizeTextarea.d.ts +1 -1
- package/dist/components/Textarea/useResizeTextarea.d.ts.map +1 -1
- package/dist/components/Textarea/useResizeTextarea.js +2 -2
- package/dist/components/Textarea/useResizeTextarea.js.map +1 -1
- package/dist/components/View/View.d.ts.map +1 -1
- package/dist/components/View/View.js +2 -4
- package/dist/components/View/View.js.map +1 -1
- package/dist/components/View/ViewInfinite.d.ts.map +1 -1
- package/dist/components/View/ViewInfinite.js +1 -3
- package/dist/components/View/ViewInfinite.js.map +1 -1
- package/dist/components/VisuallyHidden/VisuallyHidden.d.ts +1 -1
- package/dist/components/VisuallyHidden/VisuallyHidden.d.ts.map +1 -1
- package/dist/components/VisuallyHidden/VisuallyHidden.js +4 -3
- package/dist/components/VisuallyHidden/VisuallyHidden.js.map +1 -1
- package/dist/components.css +2 -2
- package/dist/components.css.map +1 -1
- package/dist/components.js.tmp +1584 -1013
- package/dist/cssm/components/ActionSheet/ActionSheet.js +2 -1
- package/dist/cssm/components/ActionSheet/ActionSheet.js.map +1 -1
- package/dist/cssm/components/ActionSheet/ActionSheetContext.d.ts +1 -0
- package/dist/cssm/components/ActionSheet/ActionSheetContext.d.ts.map +1 -1
- package/dist/cssm/components/ActionSheet/ActionSheetContext.js.map +1 -1
- package/dist/cssm/components/ActionSheetItem/ActionSheetItem.d.ts.map +1 -1
- package/dist/cssm/components/ActionSheetItem/ActionSheetItem.js +38 -13
- package/dist/cssm/components/ActionSheetItem/ActionSheetItem.js.map +1 -1
- package/dist/cssm/components/ActionSheetItem/helpers.d.ts +10 -0
- package/dist/cssm/components/ActionSheetItem/helpers.d.ts.map +1 -0
- package/dist/cssm/components/ActionSheetItem/helpers.js +12 -0
- package/dist/cssm/components/ActionSheetItem/helpers.js.map +1 -0
- package/dist/cssm/components/Alert/Alert.js +1 -1
- package/dist/cssm/components/Alert/Alert.js.map +1 -1
- package/dist/cssm/components/Avatar/Avatar.d.ts +0 -1
- package/dist/cssm/components/Avatar/Avatar.d.ts.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/icons.d.ts +8 -3
- package/dist/cssm/components/Avatar/AvatarBadge/icons.d.ts.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/BaseGallery/BaseGallery.d.ts.map +1 -1
- package/dist/cssm/components/BaseGallery/BaseGallery.js +0 -2
- package/dist/cssm/components/BaseGallery/BaseGallery.js.map +1 -1
- package/dist/cssm/components/Calendar/Calendar.js +1 -1
- package/dist/cssm/components/Calendar/Calendar.js.map +1 -1
- package/dist/cssm/components/CalendarDays/CalendarDays.js +1 -1
- package/dist/cssm/components/CalendarDays/CalendarDays.js.map +1 -1
- package/dist/cssm/components/CalendarHeader/CalendarHeader.js +1 -1
- package/dist/cssm/components/CalendarHeader/CalendarHeader.js.map +1 -1
- package/dist/cssm/components/CalendarRange/CalendarRange.d.ts.map +1 -1
- package/dist/cssm/components/CalendarRange/CalendarRange.js +6 -4
- 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/Cell/Cell.d.ts.map +1 -1
- package/dist/cssm/components/Cell/Cell.js +2 -2
- package/dist/cssm/components/Cell/Cell.js.map +1 -1
- package/dist/cssm/components/Cell/Cell.module.css +12 -0
- package/dist/cssm/components/CellButton/CellButton.module.css +2 -2
- package/dist/cssm/components/Checkbox/Checkbox.d.ts +7 -5
- package/dist/cssm/components/Checkbox/Checkbox.d.ts.map +1 -1
- package/dist/cssm/components/Checkbox/Checkbox.js +28 -141
- package/dist/cssm/components/Checkbox/Checkbox.js.map +1 -1
- package/dist/cssm/components/Checkbox/CheckboxInput/CheckboxInput.d.ts +8 -0
- package/dist/cssm/components/Checkbox/CheckboxInput/CheckboxInput.d.ts.map +1 -0
- package/dist/cssm/components/Checkbox/CheckboxInput/CheckboxInput.js +113 -0
- package/dist/cssm/components/Checkbox/CheckboxInput/CheckboxInput.js.map +1 -0
- package/dist/cssm/components/Checkbox/CheckboxInput/CheckboxInput.module.css +30 -0
- package/dist/cssm/components/Checkbox/CheckboxSimple/CheckboxSimple.d.ts +3 -0
- package/dist/cssm/components/Checkbox/CheckboxSimple/CheckboxSimple.d.ts.map +1 -0
- package/dist/cssm/components/Checkbox/CheckboxSimple/CheckboxSimple.js +30 -0
- package/dist/cssm/components/Checkbox/CheckboxSimple/CheckboxSimple.js.map +1 -0
- package/dist/cssm/components/Checkbox/CheckboxSimple/CheckboxSimple.module.css +28 -0
- package/dist/cssm/components/ChipsInput/ChipsInput.d.ts.map +1 -1
- package/dist/cssm/components/ChipsInput/ChipsInput.js +1 -2
- package/dist/cssm/components/ChipsInput/ChipsInput.js.map +1 -1
- package/dist/cssm/components/ChipsInputBase/ChipsInputBase.js +1 -1
- package/dist/cssm/components/ChipsInputBase/ChipsInputBase.js.map +1 -1
- package/dist/cssm/components/ChipsInputBase/helpers.d.ts.map +1 -1
- package/dist/cssm/components/ChipsInputBase/helpers.js +0 -3
- package/dist/cssm/components/ChipsInputBase/helpers.js.map +1 -1
- package/dist/cssm/components/ChipsInputBase/types.d.ts +1 -1
- package/dist/cssm/components/ChipsInputBase/types.d.ts.map +1 -1
- package/dist/cssm/components/ChipsInputBase/types.js.map +1 -1
- package/dist/cssm/components/ChipsSelect/ChipsSelect.d.ts.map +1 -1
- package/dist/cssm/components/ChipsSelect/ChipsSelect.js +1 -7
- package/dist/cssm/components/ChipsSelect/ChipsSelect.js.map +1 -1
- package/dist/cssm/components/Clickable/useState.d.ts +0 -5
- package/dist/cssm/components/Clickable/useState.d.ts.map +1 -1
- package/dist/cssm/components/Clickable/useState.js +2 -2
- package/dist/cssm/components/Clickable/useState.js.map +1 -1
- package/dist/cssm/components/CustomScrollView/CustomScrollView.d.ts +10 -1
- package/dist/cssm/components/CustomScrollView/CustomScrollView.d.ts.map +1 -1
- package/dist/cssm/components/CustomScrollView/CustomScrollView.js +39 -131
- package/dist/cssm/components/CustomScrollView/CustomScrollView.js.map +1 -1
- package/dist/cssm/components/CustomScrollView/CustomScrollView.module.css +52 -13
- package/dist/cssm/components/CustomScrollView/ScrollX.d.ts +3 -0
- package/dist/cssm/components/CustomScrollView/ScrollX.d.ts.map +1 -0
- package/dist/cssm/components/CustomScrollView/ScrollX.js +32 -0
- package/dist/cssm/components/CustomScrollView/ScrollX.js.map +1 -0
- package/dist/cssm/components/CustomScrollView/ScrollY.d.ts +3 -0
- package/dist/cssm/components/CustomScrollView/ScrollY.d.ts.map +1 -0
- package/dist/cssm/components/CustomScrollView/ScrollY.js +32 -0
- package/dist/cssm/components/CustomScrollView/ScrollY.js.map +1 -0
- package/dist/cssm/components/CustomScrollView/types.d.ts +21 -0
- package/dist/cssm/components/CustomScrollView/types.d.ts.map +1 -0
- package/dist/cssm/components/CustomScrollView/types.js +3 -0
- package/dist/cssm/components/CustomScrollView/types.js.map +1 -0
- package/dist/cssm/components/CustomScrollView/useCustomScrollViewResize.d.ts +8 -0
- package/dist/cssm/components/CustomScrollView/useCustomScrollViewResize.d.ts.map +1 -0
- package/dist/cssm/components/CustomScrollView/useCustomScrollViewResize.js +22 -0
- package/dist/cssm/components/CustomScrollView/useCustomScrollViewResize.js.map +1 -0
- package/dist/cssm/components/CustomScrollView/useDetectScrollDirection.d.ts +6 -0
- package/dist/cssm/components/CustomScrollView/useDetectScrollDirection.d.ts.map +1 -0
- package/dist/cssm/components/CustomScrollView/useDetectScrollDirection.js +20 -0
- package/dist/cssm/components/CustomScrollView/useDetectScrollDirection.js.map +1 -0
- package/dist/cssm/components/CustomScrollView/useDragAndDrop.d.ts +5 -0
- package/dist/cssm/components/CustomScrollView/useDragAndDrop.d.ts.map +1 -0
- package/dist/cssm/components/CustomScrollView/useDragAndDrop.js +46 -0
- package/dist/cssm/components/CustomScrollView/useDragAndDrop.js.map +1 -0
- package/dist/cssm/components/CustomScrollView/useHorizontalScrollController.d.ts +4 -0
- package/dist/cssm/components/CustomScrollView/useHorizontalScrollController.d.ts.map +1 -0
- package/dist/cssm/components/CustomScrollView/useHorizontalScrollController.js +91 -0
- package/dist/cssm/components/CustomScrollView/useHorizontalScrollController.js.map +1 -0
- package/dist/cssm/components/CustomScrollView/useTrackerVisibility.d.ts.map +1 -1
- package/dist/cssm/components/CustomScrollView/useTrackerVisibility.js +5 -0
- package/dist/cssm/components/CustomScrollView/useTrackerVisibility.js.map +1 -1
- package/dist/cssm/components/CustomScrollView/useVerticalScrollController.d.ts +4 -0
- package/dist/cssm/components/CustomScrollView/useVerticalScrollController.d.ts.map +1 -0
- package/dist/cssm/components/CustomScrollView/useVerticalScrollController.js +91 -0
- package/dist/cssm/components/CustomScrollView/useVerticalScrollController.js.map +1 -0
- package/dist/cssm/components/CustomSelect/CustomSelect.d.ts.map +1 -1
- package/dist/cssm/components/CustomSelect/CustomSelect.js +3 -4
- package/dist/cssm/components/CustomSelect/CustomSelect.js.map +1 -1
- package/dist/cssm/components/DateInput/DateInput.js +2 -2
- package/dist/cssm/components/DateInput/DateInput.js.map +1 -1
- package/dist/cssm/components/DateRangeInput/DateRangeInput.d.ts.map +1 -1
- package/dist/cssm/components/DateRangeInput/DateRangeInput.js +4 -3
- package/dist/cssm/components/DateRangeInput/DateRangeInput.js.map +1 -1
- package/dist/cssm/components/FixedLayout/FixedLayout.d.ts +2 -2
- package/dist/cssm/components/FixedLayout/FixedLayout.d.ts.map +1 -1
- package/dist/cssm/components/FixedLayout/FixedLayout.js +1 -1
- package/dist/cssm/components/FixedLayout/FixedLayout.js.map +1 -1
- package/dist/cssm/components/Flex/FlexItem/FlexItem.d.ts +3 -3
- package/dist/cssm/components/Flex/FlexItem/FlexItem.d.ts.map +1 -1
- package/dist/cssm/components/Flex/FlexItem/FlexItem.js.map +1 -1
- package/dist/cssm/components/FocusTrap/FocusTrap.js +1 -1
- package/dist/cssm/components/FocusTrap/FocusTrap.js.map +1 -1
- package/dist/cssm/components/FormField/FormField.module.css +0 -3
- package/dist/cssm/components/GridAvatar/GridAvatar.d.ts +0 -1
- package/dist/cssm/components/GridAvatar/GridAvatar.d.ts.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/Group/Group.d.ts +1 -1
- package/dist/cssm/components/Group/Group.d.ts.map +1 -1
- package/dist/cssm/components/Group/Group.js +17 -12
- package/dist/cssm/components/Group/Group.js.map +1 -1
- package/dist/cssm/components/Group/Group.module.css +166 -139
- package/dist/cssm/components/HorizontalScroll/HorizontalScroll.d.ts.map +1 -1
- package/dist/cssm/components/HorizontalScroll/HorizontalScroll.js +7 -10
- package/dist/cssm/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
- package/dist/cssm/components/Image/Image.d.ts +0 -1
- package/dist/cssm/components/Image/Image.d.ts.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/ImageBase/validators.js +1 -1
- package/dist/cssm/components/ImageBase/validators.js.map +1 -1
- package/dist/cssm/components/List/List.module.css +1 -0
- package/dist/cssm/components/ModalPageHeader/ModalPageHeader.d.ts.map +1 -1
- package/dist/cssm/components/ModalPageHeader/ModalPageHeader.js +18 -16
- package/dist/cssm/components/ModalPageHeader/ModalPageHeader.js.map +1 -1
- package/dist/cssm/components/ModalRoot/ModalRoot.d.ts.map +1 -1
- package/dist/cssm/components/ModalRoot/ModalRoot.js +4 -28
- package/dist/cssm/components/ModalRoot/ModalRoot.js.map +1 -1
- package/dist/cssm/components/OnboardingTooltip/OnboardingTooltipContainer.d.ts +2 -2
- package/dist/cssm/components/OnboardingTooltip/OnboardingTooltipContainer.d.ts.map +1 -1
- package/dist/cssm/components/OnboardingTooltip/OnboardingTooltipContainer.js +2 -2
- package/dist/cssm/components/OnboardingTooltip/OnboardingTooltipContainer.js.map +1 -1
- package/dist/cssm/components/PullToRefresh/PullToRefresh.d.ts.map +1 -1
- package/dist/cssm/components/PullToRefresh/PullToRefresh.js +1 -3
- package/dist/cssm/components/PullToRefresh/PullToRefresh.js.map +1 -1
- package/dist/cssm/components/Radio/Radio.d.ts +5 -1
- package/dist/cssm/components/Radio/Radio.d.ts.map +1 -1
- package/dist/cssm/components/Radio/Radio.js +13 -76
- package/dist/cssm/components/Radio/Radio.js.map +1 -1
- package/dist/cssm/components/Radio/Radio.module.css +0 -145
- package/dist/cssm/components/Radio/RadioInput/RadioInput.d.ts +6 -0
- package/dist/cssm/components/Radio/RadioInput/RadioInput.d.ts.map +1 -0
- package/dist/cssm/components/Radio/RadioInput/RadioInput.js +86 -0
- package/dist/cssm/components/Radio/RadioInput/RadioInput.js.map +1 -0
- package/dist/cssm/components/Radio/RadioInput/RadioInput.module.css +20 -0
- package/dist/cssm/components/Search/Search.module.css +3 -1
- package/dist/cssm/components/SegmentedControl/SegmentedControl.d.ts.map +1 -1
- package/dist/cssm/components/SegmentedControl/SegmentedControl.js +1 -2
- package/dist/cssm/components/SegmentedControl/SegmentedControl.js.map +1 -1
- package/dist/cssm/components/SelectionControl/SelectionControl.d.ts +14 -0
- package/dist/cssm/components/SelectionControl/SelectionControl.d.ts.map +1 -0
- package/dist/cssm/components/SelectionControl/SelectionControl.js +28 -0
- package/dist/cssm/components/SelectionControl/SelectionControl.js.map +1 -0
- package/dist/cssm/components/SelectionControl/SelectionControl.module.css +35 -0
- package/dist/cssm/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.d.ts +7 -0
- package/dist/cssm/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.d.ts.map +1 -0
- package/dist/cssm/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.js +39 -0
- package/dist/cssm/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.js.map +1 -0
- package/dist/cssm/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.module.css +48 -0
- package/dist/cssm/components/Textarea/Textarea.d.ts +1 -1
- package/dist/cssm/components/Textarea/Textarea.d.ts.map +1 -1
- package/dist/cssm/components/Textarea/Textarea.js +11 -2
- package/dist/cssm/components/Textarea/Textarea.js.map +1 -1
- package/dist/cssm/components/Textarea/Textarea.module.css +3 -3
- package/dist/cssm/components/Textarea/useResizeTextarea.d.ts +1 -1
- package/dist/cssm/components/Textarea/useResizeTextarea.d.ts.map +1 -1
- package/dist/cssm/components/Textarea/useResizeTextarea.js +2 -2
- package/dist/cssm/components/Textarea/useResizeTextarea.js.map +1 -1
- package/dist/cssm/components/View/View.d.ts.map +1 -1
- package/dist/cssm/components/View/View.js +2 -4
- package/dist/cssm/components/View/View.js.map +1 -1
- package/dist/cssm/components/View/ViewInfinite.d.ts.map +1 -1
- package/dist/cssm/components/View/ViewInfinite.js +1 -3
- package/dist/cssm/components/View/ViewInfinite.js.map +1 -1
- package/dist/cssm/components/VisuallyHidden/VisuallyHidden.d.ts +1 -1
- package/dist/cssm/components/VisuallyHidden/VisuallyHidden.d.ts.map +1 -1
- package/dist/cssm/components/VisuallyHidden/VisuallyHidden.js +2 -2
- package/dist/cssm/components/VisuallyHidden/VisuallyHidden.js.map +1 -1
- package/dist/cssm/components/WriteBar/WriteBar.module.css +2 -0
- package/dist/cssm/hooks/useCalendar.d.ts.map +1 -1
- package/dist/cssm/hooks/useCalendar.js +1 -1
- package/dist/cssm/hooks/useCalendar.js.map +1 -1
- package/dist/cssm/hooks/useTodayDate.js +2 -2
- package/dist/cssm/hooks/useTodayDate.js.map +1 -1
- package/dist/cssm/index.d.ts +3 -0
- package/dist/cssm/index.d.ts.map +1 -1
- package/dist/cssm/index.js +2 -0
- package/dist/cssm/index.js.map +1 -1
- package/dist/cssm/lib/calendar.d.ts.map +1 -1
- package/dist/cssm/lib/calendar.js +15 -4
- package/dist/cssm/lib/calendar.js.map +1 -1
- package/dist/cssm/lib/date.d.ts +1 -28
- package/dist/cssm/lib/date.d.ts.map +1 -1
- package/dist/cssm/lib/date.js +8 -105
- package/dist/cssm/lib/date.js.map +1 -1
- package/dist/cssm/styles/themes.css +63 -19
- package/dist/hooks/useCalendar.d.ts.map +1 -1
- package/dist/hooks/useCalendar.js +1 -1
- package/dist/hooks/useCalendar.js.map +1 -1
- package/dist/hooks/useTodayDate.js +2 -2
- package/dist/hooks/useTodayDate.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/calendar.d.ts.map +1 -1
- package/dist/lib/calendar.js +15 -4
- package/dist/lib/calendar.js.map +1 -1
- package/dist/lib/date.d.ts +1 -28
- package/dist/lib/date.d.ts.map +1 -1
- package/dist/lib/date.js +8 -105
- package/dist/lib/date.js.map +1 -1
- package/dist/vkui.css +3 -3
- package/dist/vkui.css.map +1 -1
- package/dist/vkui.js.tmp +1586 -1012
- package/package.json +3 -4
- package/src/components/ActionSheet/ActionSheet.tsx +1 -1
- package/src/components/ActionSheet/ActionSheetContext.ts +1 -0
- package/src/components/ActionSheetItem/ActionSheetItem.tsx +43 -18
- package/src/components/ActionSheetItem/helpers.ts +11 -0
- package/src/components/Alert/Alert.tsx +1 -1
- package/src/components/Avatar/Avatar.tsx +1 -1
- package/src/components/Avatar/AvatarBadge/icons.tsx +9 -8
- package/src/components/BaseGallery/BaseGallery.tsx +0 -4
- package/src/components/Calendar/Calendar.tsx +1 -1
- package/src/components/CalendarDays/CalendarDays.tsx +1 -1
- package/src/components/CalendarHeader/CalendarHeader.tsx +1 -1
- package/src/components/CalendarRange/CalendarRange.tsx +5 -6
- package/src/components/CalendarTime/CalendarTime.tsx +1 -1
- package/src/components/Cell/Cell.module.css +10 -0
- package/src/components/Cell/Cell.tsx +13 -2
- package/src/components/CellButton/CellButton.module.css +2 -2
- package/src/components/Checkbox/Checkbox.tsx +30 -166
- package/src/components/Checkbox/CheckboxInput/CheckboxInput.module.css +30 -0
- package/src/components/Checkbox/CheckboxInput/CheckboxInput.tsx +174 -0
- package/src/components/Checkbox/CheckboxSimple/CheckboxSimple.module.css +28 -0
- package/src/components/Checkbox/CheckboxSimple/CheckboxSimple.tsx +49 -0
- package/src/components/ChipsInput/ChipsInput.tsx +3 -8
- package/src/components/ChipsInputBase/ChipsInputBase.tsx +1 -1
- package/src/components/ChipsInputBase/helpers.ts +0 -3
- package/src/components/ChipsInputBase/types.ts +1 -1
- package/src/components/ChipsSelect/ChipsSelect.tsx +1 -9
- package/src/components/Clickable/useState.tsx +2 -2
- package/src/components/CustomScrollView/CustomScrollView.module.css +49 -11
- package/src/components/CustomScrollView/CustomScrollView.tsx +56 -164
- package/src/components/CustomScrollView/ScrollX.tsx +57 -0
- package/src/components/CustomScrollView/ScrollY.tsx +57 -0
- package/src/components/CustomScrollView/types.ts +23 -0
- package/src/components/CustomScrollView/useCustomScrollViewResize.ts +32 -0
- package/src/components/CustomScrollView/useDetectScrollDirection.ts +21 -0
- package/src/components/CustomScrollView/useDragAndDrop.tsx +55 -0
- package/src/components/CustomScrollView/useHorizontalScrollController.tsx +120 -0
- package/src/components/CustomScrollView/useTrackerVisibility.ts +4 -0
- package/src/components/CustomScrollView/useVerticalScrollController.tsx +122 -0
- package/src/components/CustomSelect/CustomSelect.tsx +3 -5
- package/src/components/DateInput/DateInput.tsx +2 -2
- package/src/components/DateRangeInput/DateRangeInput.tsx +5 -4
- package/src/components/FixedLayout/FixedLayout.tsx +4 -4
- package/src/components/Flex/FlexItem/FlexItem.tsx +3 -3
- package/src/components/FocusTrap/FocusTrap.tsx +1 -1
- package/src/components/FormField/FormField.module.css +0 -3
- package/src/components/GridAvatar/GridAvatar.tsx +1 -1
- package/src/components/Group/Group.module.css +155 -132
- package/src/components/Group/Group.tsx +25 -19
- package/src/components/HorizontalScroll/HorizontalScroll.tsx +7 -12
- package/src/components/Image/Image.tsx +1 -1
- package/src/components/ImageBase/validators.ts +1 -1
- package/src/components/List/List.module.css +1 -0
- package/src/components/ModalPageHeader/ModalPageHeader.tsx +24 -22
- package/src/components/ModalRoot/ModalRoot.tsx +4 -32
- package/src/components/OnboardingTooltip/OnboardingTooltipContainer.tsx +4 -3
- package/src/components/PullToRefresh/PullToRefresh.tsx +0 -2
- package/src/components/Radio/Radio.module.css +0 -131
- package/src/components/Radio/Radio.tsx +14 -53
- package/src/components/Radio/RadioInput/RadioInput.module.css +20 -0
- package/src/components/Radio/RadioInput/RadioInput.tsx +58 -0
- package/src/components/Search/Search.module.css +1 -1
- package/src/components/SegmentedControl/SegmentedControl.tsx +0 -1
- package/src/components/SelectionControl/SelectionControl.module.css +33 -0
- package/src/components/SelectionControl/SelectionControl.tsx +44 -0
- package/src/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.module.css +44 -0
- package/src/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.tsx +43 -0
- package/src/components/Textarea/Textarea.module.css +3 -3
- package/src/components/Textarea/Textarea.tsx +9 -1
- package/src/components/Textarea/useResizeTextarea.ts +2 -1
- package/src/components/View/View.tsx +0 -2
- package/src/components/View/ViewInfinite.tsx +0 -2
- package/src/components/VisuallyHidden/VisuallyHidden.tsx +2 -0
- package/src/components/WriteBar/WriteBar.module.css +1 -1
- package/src/hooks/useCalendar.ts +1 -9
- package/src/hooks/useTodayDate.ts +2 -2
- package/src/index.ts +3 -0
- package/src/lib/calendar.ts +8 -7
- package/src/lib/date.ts +9 -140
- package/dist/cjs/lib/styles.d.ts +0 -2
- package/dist/cjs/lib/styles.d.ts.map +0 -1
- package/dist/cjs/lib/styles.js +0 -20
- package/dist/cjs/lib/styles.js.map +0 -1
- package/dist/cssm/components/Checkbox/Checkbox.module.css +0 -183
- package/dist/cssm/lib/styles.d.ts +0 -2
- package/dist/cssm/lib/styles.d.ts.map +0 -1
- package/dist/cssm/lib/styles.js +0 -10
- package/dist/cssm/lib/styles.js.map +0 -1
- package/dist/lib/styles.d.ts +0 -2
- package/dist/lib/styles.d.ts.map +0 -1
- package/dist/lib/styles.js +0 -10
- package/dist/lib/styles.js.map +0 -1
- package/src/components/Checkbox/Checkbox.module.css +0 -170
- package/src/lib/styles.ts +0 -12
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/DateInput/DateInput.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Icon16Clear, Icon20CalendarOutline } from '@vkontakte/icons';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { useDateInput } from '../../hooks/useDateInput';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { callMultiple } from '../../lib/callMultiple';\nimport { format, isMatch, parse } from '../../lib/date';\nimport type { PlacementWithAuto } from '../../lib/floating';\nimport { HasRootRef } from '../../types';\nimport { Calendar, CalendarProps } from '../Calendar/Calendar';\nimport { FormField, FormFieldProps } from '../FormField/FormField';\nimport { IconButton } from '../IconButton/IconButton';\nimport { InputLike } from '../InputLike/InputLike';\nimport { InputLikeDivider } from '../InputLike/InputLikeDivider';\nimport { Popper } from '../Popper/Popper';\nimport { Text } from '../Typography/Text/Text';\nimport '../InputLike/InputLike.module.css'; // Reorder css\nimport styles from './DateInput.module.css';\n\nconst sizeYClassNames = {\n none: styles['DateInput--sizeY-none'],\n ['compact']: styles['DateInput--sizeY-compact'],\n};\n\nexport interface DateInputProps\n extends Omit<React.InputHTMLAttributes<HTMLDivElement>, 'value' | 'onChange' | 'size'>,\n Pick<\n CalendarProps,\n | 'disablePast'\n | 'disableFuture'\n | 'enableTime'\n | 'shouldDisableDate'\n | 'onChange'\n | 'value'\n | 'doneButtonText'\n | 'weekStartsOn'\n | 'disablePickers'\n | 'changeHoursLabel'\n | 'changeMinutesLabel'\n | 'prevMonthLabel'\n | 'nextMonthLabel'\n | 'changeMonthLabel'\n | 'changeYearLabel'\n | 'changeDayLabel'\n | 'showNeighboringMonth'\n | 'size'\n | 'viewDate'\n | 'onHeaderChange'\n | 'onNextMonth'\n | 'onPrevMonth'\n | 'prevMonthIcon'\n | 'nextMonthIcon'\n | 'minDateTime'\n | 'maxDateTime'\n >,\n HasRootRef<HTMLDivElement>,\n FormFieldProps {\n calendarPlacement?: PlacementWithAuto;\n closeOnChange?: boolean;\n clearFieldLabel?: string;\n showCalendarLabel?: string;\n disableCalendar?: boolean;\n}\n\nconst elementsConfig = (index: number) => {\n let length = 2;\n let min = 1;\n let max = 0;\n\n switch (index) {\n case 0:\n max = 31;\n break;\n case 1:\n max = 12;\n break;\n case 2:\n max = 2100;\n min = 1900;\n length = 4;\n break;\n case 3:\n max = 23;\n break;\n case 4:\n max = 59;\n break;\n }\n\n return { length, min, max };\n};\n\nconst getInternalValue = (value: CalendarProps['value']) => {\n const newValue = ['', '', '', '', ''];\n if (value) {\n newValue[0] = String(value.getDate()).padStart(2, '0');\n newValue[1] = String(value.getMonth() + 1).padStart(2, '0');\n newValue[2] = String(value.getFullYear()).padStart(4, '0');\n newValue[3] = String(value.getHours()).padStart(2, '0');\n newValue[4] = String(value.getMinutes()).padStart(2, '0');\n }\n return newValue;\n};\n\n/**\n * @see https://vkcom.github.io/VKUI/#/DateInput\n */\nexport const DateInput = ({\n enableTime,\n shouldDisableDate,\n disableFuture,\n disablePast,\n minDateTime,\n maxDateTime,\n value,\n onChange,\n calendarPlacement = 'bottom-start',\n style,\n className,\n doneButtonText,\n closeOnChange = true,\n disablePickers,\n getRootRef,\n name,\n autoFocus,\n disabled,\n onClick,\n onFocus,\n prevMonthLabel = 'Предыдущий месяц',\n nextMonthLabel = 'Следующий месяц',\n showNeighboringMonth,\n size,\n changeMonthLabel = 'Изменить месяц',\n changeYearLabel = 'Изменить год',\n changeDayLabel = 'Изменить день',\n changeHoursLabel = 'Изменить час',\n changeMinutesLabel = 'Изменить минуту',\n clearFieldLabel = 'Очистить поле',\n showCalendarLabel = 'Показать календарь',\n viewDate,\n onHeaderChange,\n onNextMonth,\n onPrevMonth,\n prevMonthIcon,\n nextMonthIcon,\n disableCalendar = false,\n ...props\n}: DateInputProps): React.ReactNode => {\n const daysRef = React.useRef<HTMLSpanElement>(null);\n const monthsRef = React.useRef<HTMLSpanElement>(null);\n const yearsRef = React.useRef<HTMLSpanElement>(null);\n const hoursRef = React.useRef<HTMLSpanElement>(null);\n const minutesRef = React.useRef<HTMLSpanElement>(null);\n\n const maxElement = enableTime ? 4 : 2;\n\n const onInternalValueChange = React.useCallback(\n (internalValue: string[]) => {\n for (let i = 0; i <= maxElement; i += 1) {\n if (internalValue[i].length < elementsConfig(i).length) {\n return;\n }\n }\n\n let formattedValue = `${internalValue[0]}.${internalValue[1]}.${internalValue[2]}`;\n let mask = 'DD.MM.YYYY';\n if (enableTime) {\n formattedValue += ` ${internalValue[3]}:${internalValue[4]}`;\n mask += ' HH:mm';\n }\n\n if (isMatch(formattedValue, mask)) {\n onChange?.(parse(formattedValue, mask, value ?? new Date()));\n }\n },\n [enableTime, maxElement, onChange, value],\n );\n\n const refs = React.useMemo(\n () => [daysRef, monthsRef, yearsRef, hoursRef, minutesRef],\n [daysRef, monthsRef, yearsRef, hoursRef, minutesRef],\n );\n\n const {\n rootRef,\n calendarRef,\n open,\n openCalendar,\n internalValue,\n handleKeyDown,\n setFocusedElement,\n handleFieldEnter,\n clear,\n removeFocusFromField,\n } = useDateInput({\n maxElement,\n refs,\n autoFocus,\n disabled,\n elementsConfig,\n onChange,\n onInternalValueChange,\n getInternalValue,\n value,\n });\n\n const { sizeY = 'none' } = useAdaptivity();\n\n const handleRootRef = useExternRef(rootRef, getRootRef);\n\n const onCalendarChange = React.useCallback(\n (value?: Date | undefined) => {\n onChange?.(value);\n if (closeOnChange && !enableTime) {\n removeFocusFromField();\n }\n },\n [onChange, removeFocusFromField, closeOnChange, enableTime],\n );\n\n return (\n <FormField\n style={style}\n className={classNames(sizeY !== 'regular' && sizeYClassNames[sizeY], className)}\n getRootRef={handleRootRef}\n after={\n value ? (\n <IconButton hoverMode=\"opacity\" label={clearFieldLabel} onClick={clear}>\n <Icon16Clear />\n </IconButton>\n ) : (\n <IconButton hoverMode=\"opacity\" label={showCalendarLabel} onClick={openCalendar}>\n <Icon20CalendarOutline />\n </IconButton>\n )\n }\n disabled={disabled}\n onClick={callMultiple(handleFieldEnter, onClick)}\n onFocus={callMultiple(handleFieldEnter, onFocus)}\n {...props}\n >\n <input\n type=\"hidden\"\n name={name}\n value={value ? format(value, enableTime ? 'DD.MM.YYYYTHH:mm' : 'DD.MM.YYYY') : ''}\n />\n <Text\n className={styles['DateInput__input']}\n onKeyDown={handleKeyDown}\n // Инцидент: в PR https://github.com/VKCOM/VKUI/pull/6649 стабильно ломается порядок стилей\n // из-за чего `.Typography--normalize` перебивает стили.\n normalize={false}\n Component=\"span\" // для <span> нормализация не нужна\n >\n <InputLike\n length={2}\n getRootRef={daysRef}\n index={0}\n onElementSelect={setFocusedElement}\n value={internalValue[0]}\n label={changeDayLabel}\n />\n <InputLikeDivider>.</InputLikeDivider>\n <InputLike\n length={2}\n getRootRef={monthsRef}\n index={1}\n onElementSelect={setFocusedElement}\n value={internalValue[1]}\n label={changeMonthLabel}\n />\n <InputLikeDivider>.</InputLikeDivider>\n <InputLike\n length={4}\n getRootRef={yearsRef}\n index={2}\n onElementSelect={setFocusedElement}\n value={internalValue[2]}\n label={changeYearLabel}\n />\n {enableTime && (\n <React.Fragment>\n <InputLikeDivider className={styles['DateInput__input--time-divider']}>\n {' '}\n </InputLikeDivider>\n <InputLike\n length={2}\n getRootRef={hoursRef}\n index={3}\n onElementSelect={setFocusedElement}\n value={internalValue[3]}\n label={changeHoursLabel}\n />\n <InputLikeDivider>:</InputLikeDivider>\n <InputLike\n length={2}\n getRootRef={minutesRef}\n index={4}\n onElementSelect={setFocusedElement}\n value={internalValue[4]}\n label={changeMinutesLabel}\n />\n </React.Fragment>\n )}\n </Text>\n {open && !disableCalendar && (\n <Popper\n targetRef={rootRef}\n offsetByMainAxis={8}\n placement={calendarPlacement}\n autoUpdateOnTargetResize\n >\n <Calendar\n value={value}\n onChange={onCalendarChange}\n enableTime={enableTime}\n disablePast={disablePast}\n disableFuture={disableFuture}\n shouldDisableDate={shouldDisableDate}\n onClose={removeFocusFromField}\n getRootRef={calendarRef}\n doneButtonText={doneButtonText}\n disablePickers={disablePickers}\n changeHoursLabel={changeHoursLabel}\n changeMinutesLabel={changeMinutesLabel}\n prevMonthLabel={prevMonthLabel}\n nextMonthLabel={nextMonthLabel}\n changeMonthLabel={changeMonthLabel}\n changeYearLabel={changeYearLabel}\n changeDayLabel={changeDayLabel}\n showNeighboringMonth={showNeighboringMonth}\n size={size}\n viewDate={viewDate}\n onHeaderChange={onHeaderChange}\n onNextMonth={onNextMonth}\n onPrevMonth={onPrevMonth}\n prevMonthIcon={prevMonthIcon}\n nextMonthIcon={nextMonthIcon}\n minDateTime={minDateTime}\n maxDateTime={maxDateTime}\n />\n </Popper>\n )}\n </FormField>\n );\n};\n"],"names":["React","Icon16Clear","Icon20CalendarOutline","classNames","useAdaptivity","useDateInput","useExternRef","callMultiple","format","isMatch","parse","Calendar","FormField","IconButton","InputLike","InputLikeDivider","Popper","Text","sizeYClassNames","none","elementsConfig","index","length","min","max","getInternalValue","value","newValue","String","getDate","padStart","getMonth","getFullYear","getHours","getMinutes","DateInput","enableTime","shouldDisableDate","disableFuture","disablePast","minDateTime","maxDateTime","onChange","calendarPlacement","style","className","doneButtonText","closeOnChange","disablePickers","getRootRef","name","autoFocus","disabled","onClick","onFocus","prevMonthLabel","nextMonthLabel","showNeighboringMonth","size","changeMonthLabel","changeYearLabel","changeDayLabel","changeHoursLabel","changeMinutesLabel","clearFieldLabel","showCalendarLabel","viewDate","onHeaderChange","onNextMonth","onPrevMonth","prevMonthIcon","nextMonthIcon","disableCalendar","props","daysRef","useRef","monthsRef","yearsRef","hoursRef","minutesRef","maxElement","onInternalValueChange","useCallback","internalValue","i","formattedValue","mask","Date","refs","useMemo","rootRef","calendarRef","open","openCalendar","handleKeyDown","setFocusedElement","handleFieldEnter","clear","removeFocusFromField","sizeY","handleRootRef","onCalendarChange","after","hoverMode","label","input","type","onKeyDown","normalize","Component","onElementSelect","Fragment","targetRef","offsetByMainAxis","placement","autoUpdateOnTargetResize","onClose"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/DateInput/DateInput.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Icon16Clear, Icon20CalendarOutline } from '@vkontakte/icons';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { useDateInput } from '../../hooks/useDateInput';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { callMultiple } from '../../lib/callMultiple';\nimport { format, isMatch, parse } from '../../lib/date';\nimport type { PlacementWithAuto } from '../../lib/floating';\nimport { HasRootRef } from '../../types';\nimport { Calendar, CalendarProps } from '../Calendar/Calendar';\nimport { FormField, FormFieldProps } from '../FormField/FormField';\nimport { IconButton } from '../IconButton/IconButton';\nimport { InputLike } from '../InputLike/InputLike';\nimport { InputLikeDivider } from '../InputLike/InputLikeDivider';\nimport { Popper } from '../Popper/Popper';\nimport { Text } from '../Typography/Text/Text';\nimport '../InputLike/InputLike.module.css'; // Reorder css\nimport styles from './DateInput.module.css';\n\nconst sizeYClassNames = {\n none: styles['DateInput--sizeY-none'],\n ['compact']: styles['DateInput--sizeY-compact'],\n};\n\nexport interface DateInputProps\n extends Omit<React.InputHTMLAttributes<HTMLDivElement>, 'value' | 'onChange' | 'size'>,\n Pick<\n CalendarProps,\n | 'disablePast'\n | 'disableFuture'\n | 'enableTime'\n | 'shouldDisableDate'\n | 'onChange'\n | 'value'\n | 'doneButtonText'\n | 'weekStartsOn'\n | 'disablePickers'\n | 'changeHoursLabel'\n | 'changeMinutesLabel'\n | 'prevMonthLabel'\n | 'nextMonthLabel'\n | 'changeMonthLabel'\n | 'changeYearLabel'\n | 'changeDayLabel'\n | 'showNeighboringMonth'\n | 'size'\n | 'viewDate'\n | 'onHeaderChange'\n | 'onNextMonth'\n | 'onPrevMonth'\n | 'prevMonthIcon'\n | 'nextMonthIcon'\n | 'minDateTime'\n | 'maxDateTime'\n >,\n HasRootRef<HTMLDivElement>,\n FormFieldProps {\n calendarPlacement?: PlacementWithAuto;\n closeOnChange?: boolean;\n clearFieldLabel?: string;\n showCalendarLabel?: string;\n disableCalendar?: boolean;\n}\n\nconst elementsConfig = (index: number) => {\n let length = 2;\n let min = 1;\n let max = 0;\n\n switch (index) {\n case 0:\n max = 31;\n break;\n case 1:\n max = 12;\n break;\n case 2:\n max = 2100;\n min = 1900;\n length = 4;\n break;\n case 3:\n max = 23;\n break;\n case 4:\n max = 59;\n break;\n }\n\n return { length, min, max };\n};\n\nconst getInternalValue = (value: CalendarProps['value']) => {\n const newValue = ['', '', '', '', ''];\n if (value) {\n newValue[0] = String(value.getDate()).padStart(2, '0');\n newValue[1] = String(value.getMonth() + 1).padStart(2, '0');\n newValue[2] = String(value.getFullYear()).padStart(4, '0');\n newValue[3] = String(value.getHours()).padStart(2, '0');\n newValue[4] = String(value.getMinutes()).padStart(2, '0');\n }\n return newValue;\n};\n\n/**\n * @see https://vkcom.github.io/VKUI/#/DateInput\n */\nexport const DateInput = ({\n enableTime,\n shouldDisableDate,\n disableFuture,\n disablePast,\n minDateTime,\n maxDateTime,\n value,\n onChange,\n calendarPlacement = 'bottom-start',\n style,\n className,\n doneButtonText,\n closeOnChange = true,\n disablePickers,\n getRootRef,\n name,\n autoFocus,\n disabled,\n onClick,\n onFocus,\n prevMonthLabel = 'Предыдущий месяц',\n nextMonthLabel = 'Следующий месяц',\n showNeighboringMonth,\n size,\n changeMonthLabel = 'Изменить месяц',\n changeYearLabel = 'Изменить год',\n changeDayLabel = 'Изменить день',\n changeHoursLabel = 'Изменить час',\n changeMinutesLabel = 'Изменить минуту',\n clearFieldLabel = 'Очистить поле',\n showCalendarLabel = 'Показать календарь',\n viewDate,\n onHeaderChange,\n onNextMonth,\n onPrevMonth,\n prevMonthIcon,\n nextMonthIcon,\n disableCalendar = false,\n ...props\n}: DateInputProps): React.ReactNode => {\n const daysRef = React.useRef<HTMLSpanElement>(null);\n const monthsRef = React.useRef<HTMLSpanElement>(null);\n const yearsRef = React.useRef<HTMLSpanElement>(null);\n const hoursRef = React.useRef<HTMLSpanElement>(null);\n const minutesRef = React.useRef<HTMLSpanElement>(null);\n\n const maxElement = enableTime ? 4 : 2;\n\n const onInternalValueChange = React.useCallback(\n (internalValue: string[]) => {\n for (let i = 0; i <= maxElement; i += 1) {\n if (internalValue[i].length < elementsConfig(i).length) {\n return;\n }\n }\n\n let formattedValue = `${internalValue[0]}.${internalValue[1]}.${internalValue[2]}`;\n let mask = 'dd.MM.yyyy';\n if (enableTime) {\n formattedValue += ` ${internalValue[3]}:${internalValue[4]}`;\n mask += ' HH:mm';\n }\n\n if (isMatch(formattedValue, mask)) {\n onChange?.(parse(formattedValue, mask, value ?? new Date()));\n }\n },\n [enableTime, maxElement, onChange, value],\n );\n\n const refs = React.useMemo(\n () => [daysRef, monthsRef, yearsRef, hoursRef, minutesRef],\n [daysRef, monthsRef, yearsRef, hoursRef, minutesRef],\n );\n\n const {\n rootRef,\n calendarRef,\n open,\n openCalendar,\n internalValue,\n handleKeyDown,\n setFocusedElement,\n handleFieldEnter,\n clear,\n removeFocusFromField,\n } = useDateInput({\n maxElement,\n refs,\n autoFocus,\n disabled,\n elementsConfig,\n onChange,\n onInternalValueChange,\n getInternalValue,\n value,\n });\n\n const { sizeY = 'none' } = useAdaptivity();\n\n const handleRootRef = useExternRef(rootRef, getRootRef);\n\n const onCalendarChange = React.useCallback(\n (value?: Date | undefined) => {\n onChange?.(value);\n if (closeOnChange && !enableTime) {\n removeFocusFromField();\n }\n },\n [onChange, removeFocusFromField, closeOnChange, enableTime],\n );\n\n return (\n <FormField\n style={style}\n className={classNames(sizeY !== 'regular' && sizeYClassNames[sizeY], className)}\n getRootRef={handleRootRef}\n after={\n value ? (\n <IconButton hoverMode=\"opacity\" label={clearFieldLabel} onClick={clear}>\n <Icon16Clear />\n </IconButton>\n ) : (\n <IconButton hoverMode=\"opacity\" label={showCalendarLabel} onClick={openCalendar}>\n <Icon20CalendarOutline />\n </IconButton>\n )\n }\n disabled={disabled}\n onClick={callMultiple(handleFieldEnter, onClick)}\n onFocus={callMultiple(handleFieldEnter, onFocus)}\n {...props}\n >\n <input\n type=\"hidden\"\n name={name}\n value={value ? format(value, enableTime ? \"dd.MM.yyyy'T'HH:mm\" : 'dd.MM.yyyy') : ''}\n />\n <Text\n className={styles['DateInput__input']}\n onKeyDown={handleKeyDown}\n // Инцидент: в PR https://github.com/VKCOM/VKUI/pull/6649 стабильно ломается порядок стилей\n // из-за чего `.Typography--normalize` перебивает стили.\n normalize={false}\n Component=\"span\" // для <span> нормализация не нужна\n >\n <InputLike\n length={2}\n getRootRef={daysRef}\n index={0}\n onElementSelect={setFocusedElement}\n value={internalValue[0]}\n label={changeDayLabel}\n />\n <InputLikeDivider>.</InputLikeDivider>\n <InputLike\n length={2}\n getRootRef={monthsRef}\n index={1}\n onElementSelect={setFocusedElement}\n value={internalValue[1]}\n label={changeMonthLabel}\n />\n <InputLikeDivider>.</InputLikeDivider>\n <InputLike\n length={4}\n getRootRef={yearsRef}\n index={2}\n onElementSelect={setFocusedElement}\n value={internalValue[2]}\n label={changeYearLabel}\n />\n {enableTime && (\n <React.Fragment>\n <InputLikeDivider className={styles['DateInput__input--time-divider']}>\n {' '}\n </InputLikeDivider>\n <InputLike\n length={2}\n getRootRef={hoursRef}\n index={3}\n onElementSelect={setFocusedElement}\n value={internalValue[3]}\n label={changeHoursLabel}\n />\n <InputLikeDivider>:</InputLikeDivider>\n <InputLike\n length={2}\n getRootRef={minutesRef}\n index={4}\n onElementSelect={setFocusedElement}\n value={internalValue[4]}\n label={changeMinutesLabel}\n />\n </React.Fragment>\n )}\n </Text>\n {open && !disableCalendar && (\n <Popper\n targetRef={rootRef}\n offsetByMainAxis={8}\n placement={calendarPlacement}\n autoUpdateOnTargetResize\n >\n <Calendar\n value={value}\n onChange={onCalendarChange}\n enableTime={enableTime}\n disablePast={disablePast}\n disableFuture={disableFuture}\n shouldDisableDate={shouldDisableDate}\n onClose={removeFocusFromField}\n getRootRef={calendarRef}\n doneButtonText={doneButtonText}\n disablePickers={disablePickers}\n changeHoursLabel={changeHoursLabel}\n changeMinutesLabel={changeMinutesLabel}\n prevMonthLabel={prevMonthLabel}\n nextMonthLabel={nextMonthLabel}\n changeMonthLabel={changeMonthLabel}\n changeYearLabel={changeYearLabel}\n changeDayLabel={changeDayLabel}\n showNeighboringMonth={showNeighboringMonth}\n size={size}\n viewDate={viewDate}\n onHeaderChange={onHeaderChange}\n onNextMonth={onNextMonth}\n onPrevMonth={onPrevMonth}\n prevMonthIcon={prevMonthIcon}\n nextMonthIcon={nextMonthIcon}\n minDateTime={minDateTime}\n maxDateTime={maxDateTime}\n />\n </Popper>\n )}\n </FormField>\n );\n};\n"],"names":["React","Icon16Clear","Icon20CalendarOutline","classNames","useAdaptivity","useDateInput","useExternRef","callMultiple","format","isMatch","parse","Calendar","FormField","IconButton","InputLike","InputLikeDivider","Popper","Text","sizeYClassNames","none","elementsConfig","index","length","min","max","getInternalValue","value","newValue","String","getDate","padStart","getMonth","getFullYear","getHours","getMinutes","DateInput","enableTime","shouldDisableDate","disableFuture","disablePast","minDateTime","maxDateTime","onChange","calendarPlacement","style","className","doneButtonText","closeOnChange","disablePickers","getRootRef","name","autoFocus","disabled","onClick","onFocus","prevMonthLabel","nextMonthLabel","showNeighboringMonth","size","changeMonthLabel","changeYearLabel","changeDayLabel","changeHoursLabel","changeMinutesLabel","clearFieldLabel","showCalendarLabel","viewDate","onHeaderChange","onNextMonth","onPrevMonth","prevMonthIcon","nextMonthIcon","disableCalendar","props","daysRef","useRef","monthsRef","yearsRef","hoursRef","minutesRef","maxElement","onInternalValueChange","useCallback","internalValue","i","formattedValue","mask","Date","refs","useMemo","rootRef","calendarRef","open","openCalendar","handleKeyDown","setFocusedElement","handleFieldEnter","clear","removeFocusFromField","sizeY","handleRootRef","onCalendarChange","after","hoverMode","label","input","type","onKeyDown","normalize","Component","onElementSelect","Fragment","targetRef","offsetByMainAxis","placement","autoUpdateOnTargetResize","onClose"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateRangeInput.d.ts","sourceRoot":"","sources":["../../../src/components/DateRangeInput/DateRangeInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"DateRangeInput.d.ts","sourceRoot":"","sources":["../../../src/components/DateRangeInput/DateRangeInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAS/B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAiB,kBAAkB,EAAiB,MAAM,gCAAgC,CAAC;AAClG,OAAO,EAAa,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAenE,MAAM,WAAW,mBACf,SAAQ,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,cAAc,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC,EAC3E,IAAI,CACF,kBAAkB,EAChB,aAAa,GACb,eAAe,GACf,mBAAmB,GACnB,UAAU,GACV,OAAO,GACP,cAAc,GACd,gBAAgB,GAChB,gBAAgB,GAChB,gBAAgB,GAChB,kBAAkB,GAClB,iBAAiB,GACjB,gBAAgB,GAChB,eAAe,GACf,eAAe,CAClB,EACD,UAAU,CAAC,cAAc,CAAC,EAC1B,cAAc;IAChB,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AA0CD;;GAEG;AACH,eAAO,MAAM,cAAc,kfAkCxB,mBAAmB,KAAG,KAAK,CAAC,SA+M9B,CAAC"}
|
|
@@ -5,11 +5,12 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
5
5
|
import * as React from 'react';
|
|
6
6
|
import { Icon16Clear, Icon20CalendarOutline } from '@vkontakte/icons';
|
|
7
7
|
import { classNames } from '@vkontakte/vkjs';
|
|
8
|
+
import { isAfter } from 'date-fns';
|
|
8
9
|
import { useAdaptivity } from '../../hooks/useAdaptivity';
|
|
9
10
|
import { useDateInput } from '../../hooks/useDateInput';
|
|
10
11
|
import { useExternRef } from '../../hooks/useExternRef';
|
|
11
12
|
import { callMultiple } from '../../lib/callMultiple';
|
|
12
|
-
import { format,
|
|
13
|
+
import { format, isMatch, parse } from '../../lib/date';
|
|
13
14
|
import { CalendarRange } from '../CalendarRange/CalendarRange';
|
|
14
15
|
import { FormField } from '../FormField/FormField';
|
|
15
16
|
import { IconButton } from '../IconButton/IconButton';
|
|
@@ -127,7 +128,7 @@ const getInternalValue = (value)=>{
|
|
|
127
128
|
}
|
|
128
129
|
const formattedStartValue = `${internalValue[0]}.${internalValue[1]}.${internalValue[2]}`;
|
|
129
130
|
const formattedEndValue = `${internalValue[3]}.${internalValue[4]}.${internalValue[5]}`;
|
|
130
|
-
const mask = '
|
|
131
|
+
const mask = 'dd.MM.yyyy';
|
|
131
132
|
if (!isMatch(formattedStartValue, mask)) {
|
|
132
133
|
isStartValid = false;
|
|
133
134
|
}
|
|
@@ -221,7 +222,7 @@ const getInternalValue = (value)=>{
|
|
|
221
222
|
/*#__PURE__*/ _jsx("input", {
|
|
222
223
|
type: "hidden",
|
|
223
224
|
name: name,
|
|
224
|
-
value: value ? `${value[0] ? format(value[0], '
|
|
225
|
+
value: value ? `${value[0] ? format(value[0], 'dd.MM.yyyy') : ''} - ${value[1] ? format(value[1], 'dd.MM.yyyy') : ''}` : ''
|
|
225
226
|
}),
|
|
226
227
|
/*#__PURE__*/ _jsxs(Text, {
|
|
227
228
|
className: "vkuiDateInput__input",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/DateRangeInput/DateRangeInput.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Icon16Clear, Icon20CalendarOutline } from '@vkontakte/icons';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { useDateInput } from '../../hooks/useDateInput';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { callMultiple } from '../../lib/callMultiple';\nimport { format, isAfter, isMatch, parse } from '../../lib/date';\nimport type { PlacementWithAuto } from '../../lib/floating';\nimport { HasRootRef } from '../../types';\nimport { CalendarRange, CalendarRangeProps, DateRangeType } from '../CalendarRange/CalendarRange';\nimport { FormField, FormFieldProps } from '../FormField/FormField';\nimport { IconButton } from '../IconButton/IconButton';\nimport { InputLike } from '../InputLike/InputLike';\nimport { InputLikeDivider } from '../InputLike/InputLikeDivider';\nimport { Popper } from '../Popper/Popper';\nimport { Text } from '../Typography/Text/Text';\nimport { VisuallyHidden } from '../VisuallyHidden/VisuallyHidden';\nimport styles from './DateRangeInput.module.css';\nimport dateInputStyles from '../DateInput/DateInput.module.css';\n\nconst sizeYClassNames = {\n none: styles['DateRangeInput--sizeY-none'],\n ['compact']: styles['DateRangeInput--sizeY-compact'],\n};\n\nexport interface DateRangeInputProps\n extends Omit<React.InputHTMLAttributes<HTMLDivElement>, 'value' | 'onChange'>,\n Pick<\n CalendarRangeProps,\n | 'disablePast'\n | 'disableFuture'\n | 'shouldDisableDate'\n | 'onChange'\n | 'value'\n | 'weekStartsOn'\n | 'disablePickers'\n | 'prevMonthLabel'\n | 'nextMonthLabel'\n | 'changeMonthLabel'\n | 'changeYearLabel'\n | 'changeDayLabel'\n | 'prevMonthIcon'\n | 'nextMonthIcon'\n >,\n HasRootRef<HTMLDivElement>,\n FormFieldProps {\n calendarPlacement?: PlacementWithAuto;\n closeOnChange?: boolean;\n clearFieldLabel?: string;\n showCalendarLabel?: string;\n changeStartDayLabel?: string;\n changeStartMonthLabel?: string;\n changeStartYearLabel?: string;\n changeEndDayLabel?: string;\n changeEndMonthLabel?: string;\n changeEndYearLabel?: string;\n disableCalendar?: boolean;\n}\n\nconst elementsConfig = (index: number) => {\n let length = 2;\n let min = 1;\n let max = 0;\n\n switch (index) {\n case 0:\n case 3:\n max = 31;\n break;\n case 1:\n case 4:\n max = 12;\n break;\n case 2:\n case 5:\n max = 2100;\n min = 1900;\n length = 4;\n break;\n }\n\n return { length, min, max };\n};\n\nconst getInternalValue = (value: CalendarRangeProps['value']) => {\n const newValue = ['', '', '', '', '', ''];\n if (value?.[0]) {\n newValue[0] = String(value[0].getDate()).padStart(2, '0');\n newValue[1] = String(value[0].getMonth() + 1).padStart(2, '0');\n newValue[2] = String(value[0].getFullYear()).padStart(4, '0');\n }\n if (value?.[1]) {\n newValue[3] = String(value[1].getDate()).padStart(2, '0');\n newValue[4] = String(value[1].getMonth() + 1).padStart(2, '0');\n newValue[5] = String(value[1].getFullYear()).padStart(4, '0');\n }\n return newValue;\n};\n\n/**\n * @see https://vkcom.github.io/VKUI/#/DateRangeInput\n */\nexport const DateRangeInput = ({\n shouldDisableDate,\n disableFuture,\n disablePast,\n value,\n onChange,\n calendarPlacement = 'bottom-start',\n style,\n className,\n closeOnChange = true,\n disablePickers,\n getRootRef,\n name,\n autoFocus,\n disabled,\n onClick,\n onFocus,\n prevMonthLabel = 'Предыдущий месяц',\n nextMonthLabel = 'Следующий месяц',\n changeDayLabel = 'Изменить день',\n changeMonthLabel = 'Изменить месяц',\n changeYearLabel = 'Изменить год',\n changeStartDayLabel = 'Изменить день начала',\n changeStartMonthLabel = 'Изменить месяц начала',\n changeStartYearLabel = 'Изменить год начала',\n changeEndDayLabel = 'Изменить день окончания',\n changeEndMonthLabel = 'Изменить месяц окончания',\n changeEndYearLabel = 'Изменить год окончания',\n clearFieldLabel = 'Очистить поле',\n showCalendarLabel = 'Показать календарь',\n prevMonthIcon,\n nextMonthIcon,\n disableCalendar = false,\n ...props\n}: DateRangeInputProps): React.ReactNode => {\n const daysStartRef = React.useRef<HTMLSpanElement>(null);\n const monthsStartRef = React.useRef<HTMLSpanElement>(null);\n const yearsStartRef = React.useRef<HTMLSpanElement>(null);\n const daysEndRef = React.useRef<HTMLSpanElement>(null);\n const monthsEndRef = React.useRef<HTMLSpanElement>(null);\n const yearsEndRef = React.useRef<HTMLSpanElement>(null);\n\n const onInternalValueChange = React.useCallback(\n (internalValue: string[]) => {\n let isStartValid = true;\n let isEndValid = true;\n for (let i = 0; i <= 2; i += 1) {\n if (internalValue[i].length < elementsConfig(i).length) {\n isStartValid = false;\n }\n }\n for (let i = 3; i <= 5; i += 1) {\n if (internalValue[i].length < elementsConfig(i).length) {\n isEndValid = false;\n }\n }\n const formattedStartValue = `${internalValue[0]}.${internalValue[1]}.${internalValue[2]}`;\n const formattedEndValue = `${internalValue[3]}.${internalValue[4]}.${internalValue[5]}`;\n const mask = 'DD.MM.YYYY';\n\n if (!isMatch(formattedStartValue, mask)) {\n isStartValid = false;\n }\n if (!isMatch(formattedEndValue, mask)) {\n isEndValid = false;\n }\n\n if (!isStartValid && !isEndValid) {\n return;\n }\n\n const valueExists = Array.isArray(value);\n const now = new Date();\n const start = isStartValid\n ? parse(formattedStartValue, mask, (valueExists && value?.[0]) || now)\n : null;\n const end = isEndValid\n ? parse(formattedEndValue, mask, (valueExists && value?.[1]) || now)\n : null;\n if (start && end && isAfter(end, start)) {\n onChange?.([start, end]);\n }\n },\n [onChange, value],\n );\n\n const refs = React.useMemo(\n () => [daysStartRef, monthsStartRef, yearsStartRef, daysEndRef, monthsEndRef, yearsEndRef],\n [daysStartRef, monthsStartRef, yearsStartRef, daysEndRef, monthsEndRef, yearsEndRef],\n );\n\n const {\n rootRef,\n calendarRef,\n open,\n openCalendar,\n closeCalendar,\n internalValue,\n handleKeyDown,\n setFocusedElement,\n handleFieldEnter,\n clear,\n removeFocusFromField,\n } = useDateInput({\n maxElement: 5,\n refs,\n autoFocus,\n disabled,\n elementsConfig,\n onChange,\n onInternalValueChange,\n getInternalValue,\n value,\n });\n\n const { sizeY = 'none' } = useAdaptivity();\n\n const handleRootRef = useExternRef(rootRef, getRootRef);\n\n const onCalendarChange = React.useCallback(\n (newValue: DateRangeType | undefined) => {\n onChange?.(newValue);\n if (closeOnChange && newValue?.[1] && newValue[1] !== value?.[1]) {\n removeFocusFromField();\n }\n },\n [onChange, closeOnChange, value, removeFocusFromField],\n );\n\n return (\n <FormField\n style={style}\n className={classNames(sizeY !== 'regular' && sizeYClassNames[sizeY], className)}\n getRootRef={handleRootRef}\n after={\n value ? (\n <IconButton hoverMode=\"opacity\" onClick={clear}>\n <VisuallyHidden>{clearFieldLabel}</VisuallyHidden>\n <Icon16Clear />\n </IconButton>\n ) : (\n <IconButton hoverMode=\"opacity\" onClick={openCalendar}>\n <VisuallyHidden>{showCalendarLabel}</VisuallyHidden>\n <Icon20CalendarOutline />\n </IconButton>\n )\n }\n disabled={disabled}\n onClick={callMultiple(handleFieldEnter, onClick)}\n onFocus={callMultiple(handleFieldEnter, onFocus)}\n {...props}\n >\n <input\n type=\"hidden\"\n name={name}\n value={\n value\n ? `${value[0] ? format(value[0], 'DD.MM.YYYY') : ''} - ${\n value[1] ? format(value[1], 'DD.MM.YYYY') : ''\n }`\n : ''\n }\n />\n <Text className={dateInputStyles['DateInput__input']} onKeyDown={handleKeyDown}>\n <InputLike\n length={2}\n getRootRef={daysStartRef}\n index={0}\n onElementSelect={setFocusedElement}\n value={internalValue[0]}\n label={changeStartDayLabel}\n />\n <InputLikeDivider>.</InputLikeDivider>\n <InputLike\n length={2}\n getRootRef={monthsStartRef}\n index={1}\n onElementSelect={setFocusedElement}\n value={internalValue[1]}\n label={changeStartMonthLabel}\n />\n <InputLikeDivider>.</InputLikeDivider>\n <InputLike\n length={4}\n getRootRef={yearsStartRef}\n index={2}\n onElementSelect={setFocusedElement}\n value={internalValue[2]}\n label={changeStartYearLabel}\n />\n <InputLikeDivider>{' — '}</InputLikeDivider>\n <InputLike\n length={2}\n getRootRef={daysEndRef}\n index={3}\n onElementSelect={setFocusedElement}\n value={internalValue[3]}\n label={changeEndDayLabel}\n />\n <InputLikeDivider>.</InputLikeDivider>\n <InputLike\n length={2}\n getRootRef={monthsEndRef}\n index={4}\n onElementSelect={setFocusedElement}\n value={internalValue[4]}\n label={changeEndMonthLabel}\n />\n <InputLikeDivider>.</InputLikeDivider>\n <InputLike\n length={4}\n getRootRef={yearsEndRef}\n index={5}\n onElementSelect={setFocusedElement}\n value={internalValue[5]}\n label={changeEndYearLabel}\n />\n </Text>\n {open && !disableCalendar && (\n <Popper targetRef={rootRef} offsetByMainAxis={8} placement={calendarPlacement}>\n <CalendarRange\n value={value}\n onChange={onCalendarChange}\n disablePast={disablePast}\n disableFuture={disableFuture}\n shouldDisableDate={shouldDisableDate}\n onClose={closeCalendar}\n getRootRef={calendarRef}\n disablePickers={disablePickers}\n prevMonthLabel={prevMonthLabel}\n nextMonthLabel={nextMonthLabel}\n changeMonthLabel={changeMonthLabel}\n changeYearLabel={changeYearLabel}\n changeDayLabel={changeDayLabel}\n prevMonthIcon={prevMonthIcon}\n nextMonthIcon={nextMonthIcon}\n />\n </Popper>\n )}\n </FormField>\n );\n};\n"],"names":["React","Icon16Clear","Icon20CalendarOutline","classNames","useAdaptivity","useDateInput","useExternRef","callMultiple","format","isAfter","isMatch","parse","CalendarRange","FormField","IconButton","InputLike","InputLikeDivider","Popper","Text","VisuallyHidden","sizeYClassNames","none","elementsConfig","index","length","min","max","getInternalValue","value","newValue","String","getDate","padStart","getMonth","getFullYear","DateRangeInput","shouldDisableDate","disableFuture","disablePast","onChange","calendarPlacement","style","className","closeOnChange","disablePickers","getRootRef","name","autoFocus","disabled","onClick","onFocus","prevMonthLabel","nextMonthLabel","changeDayLabel","changeMonthLabel","changeYearLabel","changeStartDayLabel","changeStartMonthLabel","changeStartYearLabel","changeEndDayLabel","changeEndMonthLabel","changeEndYearLabel","clearFieldLabel","showCalendarLabel","prevMonthIcon","nextMonthIcon","disableCalendar","props","daysStartRef","useRef","monthsStartRef","yearsStartRef","daysEndRef","monthsEndRef","yearsEndRef","onInternalValueChange","useCallback","internalValue","isStartValid","isEndValid","i","formattedStartValue","formattedEndValue","mask","valueExists","Array","isArray","now","Date","start","end","refs","useMemo","rootRef","calendarRef","open","openCalendar","closeCalendar","handleKeyDown","setFocusedElement","handleFieldEnter","clear","removeFocusFromField","maxElement","sizeY","handleRootRef","onCalendarChange","after","hoverMode","input","type","onKeyDown","onElementSelect","label","targetRef","offsetByMainAxis","placement","onClose"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/DateRangeInput/DateRangeInput.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Icon16Clear, Icon20CalendarOutline } from '@vkontakte/icons';\nimport { classNames } from '@vkontakte/vkjs';\nimport { isAfter } from 'date-fns';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { useDateInput } from '../../hooks/useDateInput';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { callMultiple } from '../../lib/callMultiple';\nimport { format, isMatch, parse } from '../../lib/date';\nimport type { PlacementWithAuto } from '../../lib/floating';\nimport { HasRootRef } from '../../types';\nimport { CalendarRange, CalendarRangeProps, DateRangeType } from '../CalendarRange/CalendarRange';\nimport { FormField, FormFieldProps } from '../FormField/FormField';\nimport { IconButton } from '../IconButton/IconButton';\nimport { InputLike } from '../InputLike/InputLike';\nimport { InputLikeDivider } from '../InputLike/InputLikeDivider';\nimport { Popper } from '../Popper/Popper';\nimport { Text } from '../Typography/Text/Text';\nimport { VisuallyHidden } from '../VisuallyHidden/VisuallyHidden';\nimport styles from './DateRangeInput.module.css';\nimport dateInputStyles from '../DateInput/DateInput.module.css';\n\nconst sizeYClassNames = {\n none: styles['DateRangeInput--sizeY-none'],\n ['compact']: styles['DateRangeInput--sizeY-compact'],\n};\n\nexport interface DateRangeInputProps\n extends Omit<React.InputHTMLAttributes<HTMLDivElement>, 'value' | 'onChange'>,\n Pick<\n CalendarRangeProps,\n | 'disablePast'\n | 'disableFuture'\n | 'shouldDisableDate'\n | 'onChange'\n | 'value'\n | 'weekStartsOn'\n | 'disablePickers'\n | 'prevMonthLabel'\n | 'nextMonthLabel'\n | 'changeMonthLabel'\n | 'changeYearLabel'\n | 'changeDayLabel'\n | 'prevMonthIcon'\n | 'nextMonthIcon'\n >,\n HasRootRef<HTMLDivElement>,\n FormFieldProps {\n calendarPlacement?: PlacementWithAuto;\n closeOnChange?: boolean;\n clearFieldLabel?: string;\n showCalendarLabel?: string;\n changeStartDayLabel?: string;\n changeStartMonthLabel?: string;\n changeStartYearLabel?: string;\n changeEndDayLabel?: string;\n changeEndMonthLabel?: string;\n changeEndYearLabel?: string;\n disableCalendar?: boolean;\n}\n\nconst elementsConfig = (index: number) => {\n let length = 2;\n let min = 1;\n let max = 0;\n\n switch (index) {\n case 0:\n case 3:\n max = 31;\n break;\n case 1:\n case 4:\n max = 12;\n break;\n case 2:\n case 5:\n max = 2100;\n min = 1900;\n length = 4;\n break;\n }\n\n return { length, min, max };\n};\n\nconst getInternalValue = (value: CalendarRangeProps['value']) => {\n const newValue = ['', '', '', '', '', ''];\n if (value?.[0]) {\n newValue[0] = String(value[0].getDate()).padStart(2, '0');\n newValue[1] = String(value[0].getMonth() + 1).padStart(2, '0');\n newValue[2] = String(value[0].getFullYear()).padStart(4, '0');\n }\n if (value?.[1]) {\n newValue[3] = String(value[1].getDate()).padStart(2, '0');\n newValue[4] = String(value[1].getMonth() + 1).padStart(2, '0');\n newValue[5] = String(value[1].getFullYear()).padStart(4, '0');\n }\n return newValue;\n};\n\n/**\n * @see https://vkcom.github.io/VKUI/#/DateRangeInput\n */\nexport const DateRangeInput = ({\n shouldDisableDate,\n disableFuture,\n disablePast,\n value,\n onChange,\n calendarPlacement = 'bottom-start',\n style,\n className,\n closeOnChange = true,\n disablePickers,\n getRootRef,\n name,\n autoFocus,\n disabled,\n onClick,\n onFocus,\n prevMonthLabel = 'Предыдущий месяц',\n nextMonthLabel = 'Следующий месяц',\n changeDayLabel = 'Изменить день',\n changeMonthLabel = 'Изменить месяц',\n changeYearLabel = 'Изменить год',\n changeStartDayLabel = 'Изменить день начала',\n changeStartMonthLabel = 'Изменить месяц начала',\n changeStartYearLabel = 'Изменить год начала',\n changeEndDayLabel = 'Изменить день окончания',\n changeEndMonthLabel = 'Изменить месяц окончания',\n changeEndYearLabel = 'Изменить год окончания',\n clearFieldLabel = 'Очистить поле',\n showCalendarLabel = 'Показать календарь',\n prevMonthIcon,\n nextMonthIcon,\n disableCalendar = false,\n ...props\n}: DateRangeInputProps): React.ReactNode => {\n const daysStartRef = React.useRef<HTMLSpanElement>(null);\n const monthsStartRef = React.useRef<HTMLSpanElement>(null);\n const yearsStartRef = React.useRef<HTMLSpanElement>(null);\n const daysEndRef = React.useRef<HTMLSpanElement>(null);\n const monthsEndRef = React.useRef<HTMLSpanElement>(null);\n const yearsEndRef = React.useRef<HTMLSpanElement>(null);\n\n const onInternalValueChange = React.useCallback(\n (internalValue: string[]) => {\n let isStartValid = true;\n let isEndValid = true;\n for (let i = 0; i <= 2; i += 1) {\n if (internalValue[i].length < elementsConfig(i).length) {\n isStartValid = false;\n }\n }\n for (let i = 3; i <= 5; i += 1) {\n if (internalValue[i].length < elementsConfig(i).length) {\n isEndValid = false;\n }\n }\n const formattedStartValue = `${internalValue[0]}.${internalValue[1]}.${internalValue[2]}`;\n const formattedEndValue = `${internalValue[3]}.${internalValue[4]}.${internalValue[5]}`;\n const mask = 'dd.MM.yyyy';\n\n if (!isMatch(formattedStartValue, mask)) {\n isStartValid = false;\n }\n if (!isMatch(formattedEndValue, mask)) {\n isEndValid = false;\n }\n\n if (!isStartValid && !isEndValid) {\n return;\n }\n\n const valueExists = Array.isArray(value);\n const now = new Date();\n const start = isStartValid\n ? parse(formattedStartValue, mask, (valueExists && value?.[0]) || now)\n : null;\n const end = isEndValid\n ? parse(formattedEndValue, mask, (valueExists && value?.[1]) || now)\n : null;\n if (start && end && isAfter(end, start)) {\n onChange?.([start, end]);\n }\n },\n [onChange, value],\n );\n\n const refs = React.useMemo(\n () => [daysStartRef, monthsStartRef, yearsStartRef, daysEndRef, monthsEndRef, yearsEndRef],\n [daysStartRef, monthsStartRef, yearsStartRef, daysEndRef, monthsEndRef, yearsEndRef],\n );\n\n const {\n rootRef,\n calendarRef,\n open,\n openCalendar,\n closeCalendar,\n internalValue,\n handleKeyDown,\n setFocusedElement,\n handleFieldEnter,\n clear,\n removeFocusFromField,\n } = useDateInput({\n maxElement: 5,\n refs,\n autoFocus,\n disabled,\n elementsConfig,\n onChange,\n onInternalValueChange,\n getInternalValue,\n value,\n });\n\n const { sizeY = 'none' } = useAdaptivity();\n\n const handleRootRef = useExternRef(rootRef, getRootRef);\n\n const onCalendarChange = React.useCallback(\n (newValue: DateRangeType | undefined) => {\n onChange?.(newValue);\n if (closeOnChange && newValue?.[1] && newValue[1] !== value?.[1]) {\n removeFocusFromField();\n }\n },\n [onChange, closeOnChange, value, removeFocusFromField],\n );\n\n return (\n <FormField\n style={style}\n className={classNames(sizeY !== 'regular' && sizeYClassNames[sizeY], className)}\n getRootRef={handleRootRef}\n after={\n value ? (\n <IconButton hoverMode=\"opacity\" onClick={clear}>\n <VisuallyHidden>{clearFieldLabel}</VisuallyHidden>\n <Icon16Clear />\n </IconButton>\n ) : (\n <IconButton hoverMode=\"opacity\" onClick={openCalendar}>\n <VisuallyHidden>{showCalendarLabel}</VisuallyHidden>\n <Icon20CalendarOutline />\n </IconButton>\n )\n }\n disabled={disabled}\n onClick={callMultiple(handleFieldEnter, onClick)}\n onFocus={callMultiple(handleFieldEnter, onFocus)}\n {...props}\n >\n <input\n type=\"hidden\"\n name={name}\n value={\n value\n ? `${value[0] ? format(value[0], 'dd.MM.yyyy') : ''} - ${\n value[1] ? format(value[1], 'dd.MM.yyyy') : ''\n }`\n : ''\n }\n />\n <Text className={dateInputStyles['DateInput__input']} onKeyDown={handleKeyDown}>\n <InputLike\n length={2}\n getRootRef={daysStartRef}\n index={0}\n onElementSelect={setFocusedElement}\n value={internalValue[0]}\n label={changeStartDayLabel}\n />\n <InputLikeDivider>.</InputLikeDivider>\n <InputLike\n length={2}\n getRootRef={monthsStartRef}\n index={1}\n onElementSelect={setFocusedElement}\n value={internalValue[1]}\n label={changeStartMonthLabel}\n />\n <InputLikeDivider>.</InputLikeDivider>\n <InputLike\n length={4}\n getRootRef={yearsStartRef}\n index={2}\n onElementSelect={setFocusedElement}\n value={internalValue[2]}\n label={changeStartYearLabel}\n />\n <InputLikeDivider>{' — '}</InputLikeDivider>\n <InputLike\n length={2}\n getRootRef={daysEndRef}\n index={3}\n onElementSelect={setFocusedElement}\n value={internalValue[3]}\n label={changeEndDayLabel}\n />\n <InputLikeDivider>.</InputLikeDivider>\n <InputLike\n length={2}\n getRootRef={monthsEndRef}\n index={4}\n onElementSelect={setFocusedElement}\n value={internalValue[4]}\n label={changeEndMonthLabel}\n />\n <InputLikeDivider>.</InputLikeDivider>\n <InputLike\n length={4}\n getRootRef={yearsEndRef}\n index={5}\n onElementSelect={setFocusedElement}\n value={internalValue[5]}\n label={changeEndYearLabel}\n />\n </Text>\n {open && !disableCalendar && (\n <Popper targetRef={rootRef} offsetByMainAxis={8} placement={calendarPlacement}>\n <CalendarRange\n value={value}\n onChange={onCalendarChange}\n disablePast={disablePast}\n disableFuture={disableFuture}\n shouldDisableDate={shouldDisableDate}\n onClose={closeCalendar}\n getRootRef={calendarRef}\n disablePickers={disablePickers}\n prevMonthLabel={prevMonthLabel}\n nextMonthLabel={nextMonthLabel}\n changeMonthLabel={changeMonthLabel}\n changeYearLabel={changeYearLabel}\n changeDayLabel={changeDayLabel}\n prevMonthIcon={prevMonthIcon}\n nextMonthIcon={nextMonthIcon}\n />\n </Popper>\n )}\n </FormField>\n );\n};\n"],"names":["React","Icon16Clear","Icon20CalendarOutline","classNames","isAfter","useAdaptivity","useDateInput","useExternRef","callMultiple","format","isMatch","parse","CalendarRange","FormField","IconButton","InputLike","InputLikeDivider","Popper","Text","VisuallyHidden","sizeYClassNames","none","elementsConfig","index","length","min","max","getInternalValue","value","newValue","String","getDate","padStart","getMonth","getFullYear","DateRangeInput","shouldDisableDate","disableFuture","disablePast","onChange","calendarPlacement","style","className","closeOnChange","disablePickers","getRootRef","name","autoFocus","disabled","onClick","onFocus","prevMonthLabel","nextMonthLabel","changeDayLabel","changeMonthLabel","changeYearLabel","changeStartDayLabel","changeStartMonthLabel","changeStartYearLabel","changeEndDayLabel","changeEndMonthLabel","changeEndYearLabel","clearFieldLabel","showCalendarLabel","prevMonthIcon","nextMonthIcon","disableCalendar","props","daysStartRef","useRef","monthsStartRef","yearsStartRef","daysEndRef","monthsEndRef","yearsEndRef","onInternalValueChange","useCallback","internalValue","isStartValid","isEndValid","i","formattedStartValue","formattedEndValue","mask","valueExists","Array","isArray","now","Date","start","end","refs","useMemo","rootRef","calendarRef","open","openCalendar","closeCalendar","handleKeyDown","setFocusedElement","handleFieldEnter","clear","removeFocusFromField","maxElement","sizeY","handleRootRef","onCalendarChange","after","hoverMode","input","type","onKeyDown","onElementSelect","label","targetRef","offsetByMainAxis","placement","onClose"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import { HTMLAttributesWithRootRef } from '../../types';
|
|
3
|
-
export interface FixedLayoutProps extends HTMLAttributesWithRootRef<HTMLDivElement
|
|
2
|
+
import { HasComponent, HTMLAttributesWithRootRef } from '../../types';
|
|
3
|
+
export interface FixedLayoutProps extends HTMLAttributesWithRootRef<HTMLDivElement>, HasComponent {
|
|
4
4
|
vertical?: 'top' | 'bottom';
|
|
5
5
|
/**
|
|
6
6
|
* Это свойство определяет, будет ли фон компонента окрашен в цвет фона контента.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FixedLayout.d.ts","sourceRoot":"","sources":["../../../src/components/FixedLayout/FixedLayout.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"FixedLayout.d.ts","sourceRoot":"","sources":["../../../src/components/FixedLayout/FixedLayout.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,OAAO,EAAE,YAAY,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAatE,MAAM,WAAW,gBAAiB,SAAQ,yBAAyB,CAAC,cAAc,CAAC,EAAE,YAAY;IAC/F,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC;IAC5B;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,UAAU,GAAG,IAAI,CAAC;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,eAAO,MAAM,WAAW,+FASrB,gBAAgB,KAAG,KAAK,CAAC,SA6D3B,CAAC"}
|
|
@@ -50,7 +50,7 @@ const stylesVertical = {
|
|
|
50
50
|
setWidth(parentWidth ? `${parentWidth}px` : undefined);
|
|
51
51
|
} else if (colRef === null || colRef === void 0 ? void 0 : colRef.current) {
|
|
52
52
|
const computedStyle = getComputedStyle(colRef.current);
|
|
53
|
-
setWidth(`${colRef.current.clientWidth - parseFloat(computedStyle.paddingLeft) - parseFloat(computedStyle.paddingRight)}px`);
|
|
53
|
+
setWidth(`${colRef.current.clientWidth - parseFloat(computedStyle.paddingLeft || '0') - parseFloat(computedStyle.paddingRight || '0')}px`);
|
|
54
54
|
} else {
|
|
55
55
|
setWidth(undefined);
|
|
56
56
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/FixedLayout/FixedLayout.tsx"],"sourcesContent":["import { useCallback } from 'react';\nimport * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useGlobalEventListener } from '../../hooks/useGlobalEventListener';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { useResizeObserver } from '../../hooks/useResizeObserver';\nimport { useDOM } from '../../lib/dom';\nimport { setRef } from '../../lib/utils';\nimport { HTMLAttributesWithRootRef } from '../../types';\nimport { OnboardingTooltipContainer } from '../OnboardingTooltip/OnboardingTooltipContainer';\nimport { SplitColContext } from '../SplitCol/SplitColContext';\nimport styles from './FixedLayout.module.css';\n\nconst stylesVertical = {\n top: styles['FixedLayout--vertical-top'],\n bottom: classNames(\n styles['FixedLayout--vertical-bottom'],\n 'vkuiInternalFixedLayout--vertical-bottom',\n ),\n};\n\nexport interface FixedLayoutProps extends HTMLAttributesWithRootRef<HTMLDivElement
|
|
1
|
+
{"version":3,"sources":["../../../src/components/FixedLayout/FixedLayout.tsx"],"sourcesContent":["import { useCallback } from 'react';\nimport * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useGlobalEventListener } from '../../hooks/useGlobalEventListener';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { useResizeObserver } from '../../hooks/useResizeObserver';\nimport { useDOM } from '../../lib/dom';\nimport { setRef } from '../../lib/utils';\nimport { HasComponent, HTMLAttributesWithRootRef } from '../../types';\nimport { OnboardingTooltipContainer } from '../OnboardingTooltip/OnboardingTooltipContainer';\nimport { SplitColContext } from '../SplitCol/SplitColContext';\nimport styles from './FixedLayout.module.css';\n\nconst stylesVertical = {\n top: styles['FixedLayout--vertical-top'],\n bottom: classNames(\n styles['FixedLayout--vertical-bottom'],\n 'vkuiInternalFixedLayout--vertical-bottom',\n ),\n};\n\nexport interface FixedLayoutProps extends HTMLAttributesWithRootRef<HTMLDivElement>, HasComponent {\n vertical?: 'top' | 'bottom';\n /**\n * Это свойство определяет, будет ли фон компонента окрашен в цвет фона контента.\n * Это часто необходимо для фиксированных кнопок в нижней части экрана.\n */\n filled?: boolean;\n /**\n * Всегда соответствовать ширине родителя.\n * Ширина пересчитывается по событию `window` `resize`.\n */\n useParentWidth?: boolean;\n}\n\nexport interface FixedLayoutState {\n position: 'absolute' | null;\n top: number;\n bottom: number;\n width: string;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/FixedLayout\n */\nexport const FixedLayout = ({\n children,\n style,\n vertical,\n getRootRef,\n filled,\n className,\n useParentWidth,\n ...restProps\n}: FixedLayoutProps): React.ReactNode => {\n const platform = usePlatform();\n const ref = React.useRef<HTMLElement | null>(null);\n const [width, setWidth] = React.useState<string | undefined>(undefined);\n const { window } = useDOM();\n const { colRef } = React.useContext(SplitColContext);\n const parentRef = React.useRef<HTMLElement | null>(null);\n\n const handleRootRef = useCallback(\n (node: HTMLElement | null) => {\n if (!node) {\n return;\n }\n\n setRef(node, getRootRef);\n setRef(node, ref);\n setRef(node.parentElement, parentRef);\n },\n [getRootRef],\n );\n\n const doResize = () => {\n if (useParentWidth && parentRef.current) {\n const parentWidth = parentRef.current.getBoundingClientRect().width;\n setWidth(parentWidth ? `${parentWidth}px` : undefined);\n } else if (colRef?.current) {\n const computedStyle = getComputedStyle(colRef.current);\n\n setWidth(\n `${\n colRef.current.clientWidth -\n parseFloat(computedStyle.paddingLeft || '0') -\n parseFloat(computedStyle.paddingRight || '0')\n }px`,\n );\n } else {\n setWidth(undefined);\n }\n };\n React.useEffect(doResize, [colRef, platform, ref, useParentWidth]);\n\n useGlobalEventListener(window, 'resize', doResize);\n useResizeObserver(useParentWidth ? parentRef : colRef, doResize);\n\n return (\n <OnboardingTooltipContainer\n {...restProps}\n fixed\n ref={handleRootRef}\n className={classNames(\n styles['FixedLayout'],\n platform === 'ios' && 'vkuiInternalFixedLayout--ios',\n filled && styles['FixedLayout--filled'],\n vertical && stylesVertical[vertical],\n className,\n )}\n style={{ ...style, width }}\n >\n {children}\n </OnboardingTooltipContainer>\n );\n};\n"],"names":["useCallback","React","classNames","useGlobalEventListener","usePlatform","useResizeObserver","useDOM","setRef","OnboardingTooltipContainer","SplitColContext","stylesVertical","top","bottom","FixedLayout","children","style","vertical","getRootRef","filled","className","useParentWidth","restProps","platform","ref","useRef","width","setWidth","useState","undefined","window","colRef","useContext","parentRef","handleRootRef","node","parentElement","doResize","current","parentWidth","getBoundingClientRect","computedStyle","getComputedStyle","clientWidth","parseFloat","paddingLeft","paddingRight","useEffect","fixed"],"mappings":";;;;AAAA,SAASA,WAAW,QAAQ,QAAQ;AACpC,YAAYC,WAAW,QAAQ;AAC/B,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,sBAAsB,QAAQ,qCAAqC;AAC5E,SAASC,WAAW,QAAQ,0BAA0B;AACtD,SAASC,iBAAiB,QAAQ,gCAAgC;AAClE,SAASC,MAAM,QAAQ,gBAAgB;AACvC,SAASC,MAAM,QAAQ,kBAAkB;AAEzC,SAASC,0BAA0B,QAAQ,kDAAkD;AAC7F,SAASC,eAAe,QAAQ,8BAA8B;AAG9D,MAAMC,iBAAiB;IACrBC,GAAG;IACHC,QAAQV,+CAEN;AAEJ;AAuBA;;CAEC,GACD,OAAO,MAAMW,cAAc;QAAC,EAC1BC,QAAQ,EACRC,KAAK,EACLC,QAAQ,EACRC,UAAU,EACVC,MAAM,EACNC,SAAS,EACTC,cAAc,EAEG,WADdC;QAPHP;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;;IAGA,MAAME,WAAWlB;IACjB,MAAMmB,MAAMtB,MAAMuB,MAAM,CAAqB;IAC7C,MAAM,CAACC,OAAOC,SAAS,GAAGzB,MAAM0B,QAAQ,CAAqBC;IAC7D,MAAM,EAAEC,MAAM,EAAE,GAAGvB;IACnB,MAAM,EAAEwB,MAAM,EAAE,GAAG7B,MAAM8B,UAAU,CAACtB;IACpC,MAAMuB,YAAY/B,MAAMuB,MAAM,CAAqB;IAEnD,MAAMS,gBAAgBjC,YACpB,CAACkC;QACC,IAAI,CAACA,MAAM;YACT;QACF;QAEA3B,OAAO2B,MAAMjB;QACbV,OAAO2B,MAAMX;QACbhB,OAAO2B,KAAKC,aAAa,EAAEH;IAC7B,GACA;QAACf;KAAW;IAGd,MAAMmB,WAAW;QACf,IAAIhB,kBAAkBY,UAAUK,OAAO,EAAE;YACvC,MAAMC,cAAcN,UAAUK,OAAO,CAACE,qBAAqB,GAAGd,KAAK;YACnEC,SAASY,cAAc,CAAC,EAAEA,YAAY,EAAE,CAAC,GAAGV;QAC9C,OAAO,IAAIE,mBAAAA,6BAAAA,OAAQO,OAAO,EAAE;YAC1B,MAAMG,gBAAgBC,iBAAiBX,OAAOO,OAAO;YAErDX,SACE,CAAC,EACCI,OAAOO,OAAO,CAACK,WAAW,GAC1BC,WAAWH,cAAcI,WAAW,IAAI,OACxCD,WAAWH,cAAcK,YAAY,IAAI,KAC1C,EAAE,CAAC;QAER,OAAO;YACLnB,SAASE;QACX;IACF;IACA3B,MAAM6C,SAAS,CAACV,UAAU;QAACN;QAAQR;QAAUC;QAAKH;KAAe;IAEjEjB,uBAAuB0B,QAAQ,UAAUO;IACzC/B,kBAAkBe,iBAAiBY,YAAYF,QAAQM;IAEvD,qBACE,KAAC5B,oEACKa;QACJ0B,KAAK;QACLxB,KAAKU;QACLd,WAAWjB,8BAEToB,aAAa,SAAS,gCACtBJ,qCACAF,YAAYN,cAAc,CAACM,SAAS,EACpCG;QAEFJ,OAAO,wCAAKA;YAAOU;;kBAElBX;;AAGP,EAAE"}
|
|
@@ -3,18 +3,18 @@ export interface FlexItemProps extends HTMLAttributesWithRootRef<HTMLDivElement>
|
|
|
3
3
|
/**
|
|
4
4
|
* Для задания выравнивания, отлично от родительского, эквивалентно `align-self`
|
|
5
5
|
*/
|
|
6
|
-
alignSelf
|
|
6
|
+
alignSelf?: 'start' | 'end' | 'center' | 'baseline' | 'stretch';
|
|
7
7
|
/**
|
|
8
8
|
* Позволяет задать предопределенные значения шортката `flex`
|
|
9
9
|
* `grow` соответствует значению `1 0 auto`
|
|
10
10
|
* `shrink` соответствует значению `0 1 auto`
|
|
11
11
|
* `content` соответствует значению `0 0 auto`
|
|
12
12
|
*/
|
|
13
|
-
flex
|
|
13
|
+
flex?: 'grow' | 'shrink' | 'content' | 'fixed';
|
|
14
14
|
/**
|
|
15
15
|
* Изначальный размер элемента, эквивалентно `flex-basis`
|
|
16
16
|
*/
|
|
17
|
-
flexBasis
|
|
17
|
+
flexBasis?: number | string;
|
|
18
18
|
}
|
|
19
19
|
export declare const FlexItem: ({ children, alignSelf, flex, flexBasis, style, ...rest }: FlexItemProps) => React.ReactNode;
|
|
20
20
|
//# sourceMappingURL=FlexItem.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FlexItem.d.ts","sourceRoot":"","sources":["../../../../src/components/Flex/FlexItem/FlexItem.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAmBxE,MAAM,WAAW,aAAc,SAAQ,yBAAyB,CAAC,cAAc,CAAC,EAAE,WAAW;IAC3F;;OAEG;IACH,SAAS,EAAE,OAAO,GAAG,KAAK,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"FlexItem.d.ts","sourceRoot":"","sources":["../../../../src/components/Flex/FlexItem/FlexItem.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAmBxE,MAAM,WAAW,aAAc,SAAQ,yBAAyB,CAAC,cAAc,CAAC,EAAE,WAAW;IAC3F;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;IAChE;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC;IAC/C;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC7B;AAED,eAAO,MAAM,QAAQ,6DAOlB,aAAa,KAAG,KAAK,CAAC,SAcxB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/Flex/FlexItem/FlexItem.tsx"],"sourcesContent":["import { classNames } from '@vkontakte/vkjs';\nimport { HasChildren, HTMLAttributesWithRootRef } from '../../../types';\nimport { RootComponent } from '../../RootComponent/RootComponent';\nimport styles from './FlexItem.module.css';\n\nconst flexClassNames = {\n grow: styles['FlexItem--flex-grow'],\n shrink: styles['FlexItem--flex-shrink'],\n content: styles['FlexItem--flex-content'],\n fixed: styles['FlexItem--flex-fixed'],\n};\n\nconst alignSelfClassNames = {\n start: styles['FlexItem--align-self-start'],\n end: styles['FlexItem--align-self-end'],\n center: styles['FlexItem--align-self-center'],\n baseline: styles['FlexItem--align-self-baseline'],\n stretch: styles['FlexItem--align-self-stretch'],\n};\n\nexport interface FlexItemProps extends HTMLAttributesWithRootRef<HTMLDivElement>, HasChildren {\n /**\n * Для задания выравнивания, отлично от родительского, эквивалентно `align-self`\n */\n alignSelf
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/Flex/FlexItem/FlexItem.tsx"],"sourcesContent":["import { classNames } from '@vkontakte/vkjs';\nimport { HasChildren, HTMLAttributesWithRootRef } from '../../../types';\nimport { RootComponent } from '../../RootComponent/RootComponent';\nimport styles from './FlexItem.module.css';\n\nconst flexClassNames = {\n grow: styles['FlexItem--flex-grow'],\n shrink: styles['FlexItem--flex-shrink'],\n content: styles['FlexItem--flex-content'],\n fixed: styles['FlexItem--flex-fixed'],\n};\n\nconst alignSelfClassNames = {\n start: styles['FlexItem--align-self-start'],\n end: styles['FlexItem--align-self-end'],\n center: styles['FlexItem--align-self-center'],\n baseline: styles['FlexItem--align-self-baseline'],\n stretch: styles['FlexItem--align-self-stretch'],\n};\n\nexport interface FlexItemProps extends HTMLAttributesWithRootRef<HTMLDivElement>, HasChildren {\n /**\n * Для задания выравнивания, отлично от родительского, эквивалентно `align-self`\n */\n alignSelf?: 'start' | 'end' | 'center' | 'baseline' | 'stretch';\n /**\n * Позволяет задать предопределенные значения шортката `flex`\n * `grow` соответствует значению `1 0 auto`\n * `shrink` соответствует значению `0 1 auto`\n * `content` соответствует значению `0 0 auto`\n */\n flex?: 'grow' | 'shrink' | 'content' | 'fixed';\n /**\n * Изначальный размер элемента, эквивалентно `flex-basis`\n */\n flexBasis?: number | string;\n}\n\nexport const FlexItem = ({\n children,\n alignSelf,\n flex,\n flexBasis,\n style,\n ...rest\n}: FlexItemProps): React.ReactNode => {\n return (\n <RootComponent\n {...rest}\n style={{ flexBasis, ...style }}\n baseClassName={classNames(\n styles.FlexItem,\n alignSelf && alignSelfClassNames[alignSelf],\n flex && flexClassNames[flex],\n )}\n >\n {children}\n </RootComponent>\n );\n};\n"],"names":["classNames","RootComponent","flexClassNames","grow","shrink","content","fixed","alignSelfClassNames","start","end","center","baseline","stretch","FlexItem","children","alignSelf","flex","flexBasis","style","rest","baseClassName"],"mappings":";;;;AAAA,SAASA,UAAU,QAAQ,kBAAkB;AAE7C,SAASC,aAAa,QAAQ,oCAAoC;AAGlE,MAAMC,iBAAiB;IACrBC,IAAI;IACJC,MAAM;IACNC,OAAO;IACPC,KAAK;AACP;AAEA,MAAMC,sBAAsB;IAC1BC,KAAK;IACLC,GAAG;IACHC,MAAM;IACNC,QAAQ;IACRC,OAAO;AACT;AAoBA,OAAO,MAAMC,WAAW;QAAC,EACvBC,QAAQ,EACRC,SAAS,EACTC,IAAI,EACJC,SAAS,EACTC,KAAK,EAES,WADXC;QALHL;QACAC;QACAC;QACAC;QACAC;;IAGA,qBACE,KAACjB,uDACKkB;QACJD,OAAO;YAAED;WAAcC;QACvBE,eAAepB,2BAEbe,aAAaR,mBAAmB,CAACQ,UAAU,EAC3CC,QAAQd,cAAc,CAACc,KAAK;kBAG7BF;;AAGP,EAAE"}
|
|
@@ -56,7 +56,7 @@ const FOCUSABLE_ELEMENTS = FOCUSABLE_ELEMENTS_LIST.join();
|
|
|
56
56
|
...focusableNodesRef.current
|
|
57
57
|
];
|
|
58
58
|
recalculateFocusableNodesRef(parentNode);
|
|
59
|
-
if (arraysEquals(oldFocusableNodes, focusableNodesRef.current)) {
|
|
59
|
+
if (!autoFocus || arraysEquals(oldFocusableNodes, focusableNodesRef.current)) {
|
|
60
60
|
return;
|
|
61
61
|
}
|
|
62
62
|
if (document) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/FocusTrap/FocusTrap.tsx"],"sourcesContent":["import { AllHTMLAttributes, useCallback, useRef, useState } from 'react';\nimport { arraysEquals } from '../../helpers/array';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { FOCUSABLE_ELEMENTS_LIST, Keys, pressedKey } from '../../lib/accessibility';\nimport {\n contains,\n getActiveElementByAnotherElement,\n getWindow,\n isHTMLElement,\n useDOM,\n} from '../../lib/dom';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport { HasComponent, HasRootRef } from '../../types';\n\nconst FOCUSABLE_ELEMENTS: string = FOCUSABLE_ELEMENTS_LIST.join();\nexport interface FocusTrapProps<T extends HTMLElement = HTMLElement>\n extends AllHTMLAttributes<T>,\n HasRootRef<T>,\n HasComponent {\n autoFocus?: boolean;\n restoreFocus?: boolean | (() => boolean);\n mount?: boolean;\n timeout?: number;\n onClose?: () => void;\n /**\n * Форсированное отключение захвата фокуса\n */\n disabled?: boolean;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/FocusTrap\n */\nexport const FocusTrap = <T extends HTMLElement = HTMLElement>({\n Component = 'div',\n onClose,\n autoFocus = true,\n restoreFocus = true,\n disabled = false,\n mount = true,\n timeout = 0,\n getRootRef,\n children,\n ...restProps\n}: FocusTrapProps<T>): React.ReactNode => {\n const ref = useExternRef<T>(getRootRef);\n const { document } = useDOM();\n\n const focusableNodesRef = useRef<HTMLElement[]>([]);\n\n const [restoreFocusTo, setRestoreFocusTo] = useState<Element | null>(null);\n\n const focusNodeByIndex = (nodeIndex: number) => {\n const element = focusableNodesRef.current[nodeIndex];\n\n if (element) {\n element.focus({\n preventScroll: true,\n });\n }\n };\n\n const recalculateFocusableNodesRef = (parentNode: HTMLElement) => {\n // eslint-disable-next-line no-restricted-properties\n const newFocusableElements = parentNode.querySelectorAll<HTMLElement>(FOCUSABLE_ELEMENTS);\n\n const nodes: HTMLElement[] = [];\n newFocusableElements.forEach((focusableEl) => {\n const { display, visibility } = getComputedStyle(focusableEl);\n if (display !== 'none' && visibility !== 'hidden') {\n nodes.push(focusableEl);\n }\n });\n\n if (nodes.length === 0) {\n // Чтобы фокус был хотя бы на родителе\n nodes.push(parentNode);\n }\n focusableNodesRef.current = nodes;\n };\n\n const onMutateParentHandler = (parentNode: HTMLElement) => {\n const oldFocusableNodes = [...focusableNodesRef.current];\n\n recalculateFocusableNodesRef(parentNode);\n\n if (arraysEquals(oldFocusableNodes, focusableNodesRef.current)) {\n return;\n }\n\n if (document) {\n const activeElement = document.activeElement as HTMLElement;\n const currentElementIndex = Math.max(\n document.activeElement ? focusableNodesRef.current.indexOf(activeElement) : -1,\n 0,\n );\n focusNodeByIndex(currentElementIndex);\n }\n };\n\n useIsomorphicLayoutEffect(\n function collectFocusableNodesRef() {\n if (!ref.current) {\n return;\n }\n const parentNode = ref.current;\n const observer = new MutationObserver(() => onMutateParentHandler(parentNode));\n observer.observe(ref.current, {\n subtree: true,\n childList: true,\n });\n recalculateFocusableNodesRef(parentNode);\n return () => observer.disconnect();\n },\n [ref],\n );\n\n useIsomorphicLayoutEffect(\n function tryToAutoFocusToFirstNode() {\n if (!ref.current || !autoFocus || disabled) {\n return;\n }\n\n const autoFocusToFirstNode = () => {\n if (!ref.current || !focusableNodesRef.current.length) {\n return;\n }\n const activeElement = getActiveElementByAnotherElement(ref.current);\n if (!contains(ref.current, activeElement)) {\n focusableNodesRef.current[0].focus();\n }\n };\n const timeoutId = setTimeout(autoFocusToFirstNode, timeout);\n return () => {\n clearTimeout(timeoutId);\n };\n },\n [autoFocus, timeout, disabled],\n );\n\n const restoreFocusImpl = useCallback(() => {\n const shouldRestoreFocus = typeof restoreFocus === 'function' ? restoreFocus() : restoreFocus;\n\n if (!restoreFocusTo || !isHTMLElement(restoreFocusTo) || !shouldRestoreFocus) {\n return;\n }\n\n setTimeout(() => {\n if (restoreFocusTo) {\n restoreFocusTo.focus();\n setRestoreFocusTo(null);\n }\n }, timeout);\n }, [restoreFocus, restoreFocusTo, timeout]);\n\n useIsomorphicLayoutEffect(\n function calculateRestoreFocusTo() {\n if (!ref.current || !restoreFocus || !mount) {\n setRestoreFocusTo(null);\n return;\n }\n setRestoreFocusTo(getActiveElementByAnotherElement(ref.current));\n },\n [ref, mount, restoreFocus],\n );\n\n useIsomorphicLayoutEffect(\n function tryToRestoreFocusOnUnmount() {\n return () => restoreFocusImpl();\n },\n [restoreFocusImpl],\n );\n\n useIsomorphicLayoutEffect(\n function tryToRestoreFocusWhenFakeUnmount() {\n if (!mount) {\n restoreFocusImpl();\n }\n },\n [mount, restoreFocusImpl],\n );\n\n useIsomorphicLayoutEffect(() => {\n if (!ref.current) {\n return;\n }\n\n const onDocumentKeydown = (event: KeyboardEvent) => {\n if (disabled) {\n return;\n }\n\n const pressedKeyResult = pressedKey(event);\n\n switch (pressedKeyResult) {\n case Keys.TAB: {\n if (!focusableNodesRef.current.length) {\n return false;\n }\n\n const lastIdx = focusableNodesRef.current.length - 1;\n const targetIdx = focusableNodesRef.current.findIndex((node) => node === event.target);\n\n const shouldFocusFirstNode =\n targetIdx === -1 || (targetIdx === lastIdx && !event.shiftKey);\n\n if (shouldFocusFirstNode || (targetIdx === 0 && event.shiftKey)) {\n event.preventDefault();\n\n const node = focusableNodesRef.current[shouldFocusFirstNode ? 0 : lastIdx];\n\n if (node !== getActiveElementByAnotherElement(node)) {\n node.focus();\n }\n\n return false;\n }\n\n break;\n }\n case Keys.ESCAPE: {\n if (onClose) {\n event.preventDefault();\n onClose();\n }\n }\n }\n\n return true;\n };\n\n const doc = getWindow(ref.current).document;\n doc.addEventListener('keydown', onDocumentKeydown, {\n capture: true,\n });\n return () => {\n doc.removeEventListener('keydown', onDocumentKeydown, true);\n };\n }, [onClose, ref, disabled]);\n\n return (\n <Component tabIndex={-1} ref={ref} {...restProps}>\n {children}\n </Component>\n );\n};\n"],"names":["useCallback","useRef","useState","arraysEquals","useExternRef","FOCUSABLE_ELEMENTS_LIST","Keys","pressedKey","contains","getActiveElementByAnotherElement","getWindow","isHTMLElement","useDOM","useIsomorphicLayoutEffect","FOCUSABLE_ELEMENTS","join","FocusTrap","Component","onClose","autoFocus","restoreFocus","disabled","mount","timeout","getRootRef","children","restProps","ref","document","focusableNodesRef","restoreFocusTo","setRestoreFocusTo","focusNodeByIndex","nodeIndex","element","current","focus","preventScroll","recalculateFocusableNodesRef","parentNode","newFocusableElements","querySelectorAll","nodes","forEach","focusableEl","display","visibility","getComputedStyle","push","length","onMutateParentHandler","oldFocusableNodes","activeElement","currentElementIndex","Math","max","indexOf","collectFocusableNodesRef","observer","MutationObserver","observe","subtree","childList","disconnect","tryToAutoFocusToFirstNode","autoFocusToFirstNode","timeoutId","setTimeout","clearTimeout","restoreFocusImpl","shouldRestoreFocus","calculateRestoreFocusTo","tryToRestoreFocusOnUnmount","tryToRestoreFocusWhenFakeUnmount","onDocumentKeydown","event","pressedKeyResult","TAB","lastIdx","targetIdx","findIndex","node","target","shouldFocusFirstNode","shiftKey","preventDefault","ESCAPE","doc","addEventListener","capture","removeEventListener","tabIndex"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/FocusTrap/FocusTrap.tsx"],"sourcesContent":["import { AllHTMLAttributes, useCallback, useRef, useState } from 'react';\nimport { arraysEquals } from '../../helpers/array';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { FOCUSABLE_ELEMENTS_LIST, Keys, pressedKey } from '../../lib/accessibility';\nimport {\n contains,\n getActiveElementByAnotherElement,\n getWindow,\n isHTMLElement,\n useDOM,\n} from '../../lib/dom';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport { HasComponent, HasRootRef } from '../../types';\n\nconst FOCUSABLE_ELEMENTS: string = FOCUSABLE_ELEMENTS_LIST.join();\nexport interface FocusTrapProps<T extends HTMLElement = HTMLElement>\n extends AllHTMLAttributes<T>,\n HasRootRef<T>,\n HasComponent {\n autoFocus?: boolean;\n restoreFocus?: boolean | (() => boolean);\n mount?: boolean;\n timeout?: number;\n onClose?: () => void;\n /**\n * Форсированное отключение захвата фокуса\n */\n disabled?: boolean;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/FocusTrap\n */\nexport const FocusTrap = <T extends HTMLElement = HTMLElement>({\n Component = 'div',\n onClose,\n autoFocus = true,\n restoreFocus = true,\n disabled = false,\n mount = true,\n timeout = 0,\n getRootRef,\n children,\n ...restProps\n}: FocusTrapProps<T>): React.ReactNode => {\n const ref = useExternRef<T>(getRootRef);\n const { document } = useDOM();\n\n const focusableNodesRef = useRef<HTMLElement[]>([]);\n\n const [restoreFocusTo, setRestoreFocusTo] = useState<Element | null>(null);\n\n const focusNodeByIndex = (nodeIndex: number) => {\n const element = focusableNodesRef.current[nodeIndex];\n\n if (element) {\n element.focus({\n preventScroll: true,\n });\n }\n };\n\n const recalculateFocusableNodesRef = (parentNode: HTMLElement) => {\n // eslint-disable-next-line no-restricted-properties\n const newFocusableElements = parentNode.querySelectorAll<HTMLElement>(FOCUSABLE_ELEMENTS);\n\n const nodes: HTMLElement[] = [];\n newFocusableElements.forEach((focusableEl) => {\n const { display, visibility } = getComputedStyle(focusableEl);\n if (display !== 'none' && visibility !== 'hidden') {\n nodes.push(focusableEl);\n }\n });\n\n if (nodes.length === 0) {\n // Чтобы фокус был хотя бы на родителе\n nodes.push(parentNode);\n }\n focusableNodesRef.current = nodes;\n };\n\n const onMutateParentHandler = (parentNode: HTMLElement) => {\n const oldFocusableNodes = [...focusableNodesRef.current];\n\n recalculateFocusableNodesRef(parentNode);\n\n if (!autoFocus || arraysEquals(oldFocusableNodes, focusableNodesRef.current)) {\n return;\n }\n\n if (document) {\n const activeElement = document.activeElement as HTMLElement;\n const currentElementIndex = Math.max(\n document.activeElement ? focusableNodesRef.current.indexOf(activeElement) : -1,\n 0,\n );\n focusNodeByIndex(currentElementIndex);\n }\n };\n\n useIsomorphicLayoutEffect(\n function collectFocusableNodesRef() {\n if (!ref.current) {\n return;\n }\n const parentNode = ref.current;\n const observer = new MutationObserver(() => onMutateParentHandler(parentNode));\n observer.observe(ref.current, {\n subtree: true,\n childList: true,\n });\n recalculateFocusableNodesRef(parentNode);\n return () => observer.disconnect();\n },\n [ref],\n );\n\n useIsomorphicLayoutEffect(\n function tryToAutoFocusToFirstNode() {\n if (!ref.current || !autoFocus || disabled) {\n return;\n }\n\n const autoFocusToFirstNode = () => {\n if (!ref.current || !focusableNodesRef.current.length) {\n return;\n }\n const activeElement = getActiveElementByAnotherElement(ref.current);\n if (!contains(ref.current, activeElement)) {\n focusableNodesRef.current[0].focus();\n }\n };\n const timeoutId = setTimeout(autoFocusToFirstNode, timeout);\n return () => {\n clearTimeout(timeoutId);\n };\n },\n [autoFocus, timeout, disabled],\n );\n\n const restoreFocusImpl = useCallback(() => {\n const shouldRestoreFocus = typeof restoreFocus === 'function' ? restoreFocus() : restoreFocus;\n\n if (!restoreFocusTo || !isHTMLElement(restoreFocusTo) || !shouldRestoreFocus) {\n return;\n }\n\n setTimeout(() => {\n if (restoreFocusTo) {\n restoreFocusTo.focus();\n setRestoreFocusTo(null);\n }\n }, timeout);\n }, [restoreFocus, restoreFocusTo, timeout]);\n\n useIsomorphicLayoutEffect(\n function calculateRestoreFocusTo() {\n if (!ref.current || !restoreFocus || !mount) {\n setRestoreFocusTo(null);\n return;\n }\n setRestoreFocusTo(getActiveElementByAnotherElement(ref.current));\n },\n [ref, mount, restoreFocus],\n );\n\n useIsomorphicLayoutEffect(\n function tryToRestoreFocusOnUnmount() {\n return () => restoreFocusImpl();\n },\n [restoreFocusImpl],\n );\n\n useIsomorphicLayoutEffect(\n function tryToRestoreFocusWhenFakeUnmount() {\n if (!mount) {\n restoreFocusImpl();\n }\n },\n [mount, restoreFocusImpl],\n );\n\n useIsomorphicLayoutEffect(() => {\n if (!ref.current) {\n return;\n }\n\n const onDocumentKeydown = (event: KeyboardEvent) => {\n if (disabled) {\n return;\n }\n\n const pressedKeyResult = pressedKey(event);\n\n switch (pressedKeyResult) {\n case Keys.TAB: {\n if (!focusableNodesRef.current.length) {\n return false;\n }\n\n const lastIdx = focusableNodesRef.current.length - 1;\n const targetIdx = focusableNodesRef.current.findIndex((node) => node === event.target);\n\n const shouldFocusFirstNode =\n targetIdx === -1 || (targetIdx === lastIdx && !event.shiftKey);\n\n if (shouldFocusFirstNode || (targetIdx === 0 && event.shiftKey)) {\n event.preventDefault();\n\n const node = focusableNodesRef.current[shouldFocusFirstNode ? 0 : lastIdx];\n\n if (node !== getActiveElementByAnotherElement(node)) {\n node.focus();\n }\n\n return false;\n }\n\n break;\n }\n case Keys.ESCAPE: {\n if (onClose) {\n event.preventDefault();\n onClose();\n }\n }\n }\n\n return true;\n };\n\n const doc = getWindow(ref.current).document;\n doc.addEventListener('keydown', onDocumentKeydown, {\n capture: true,\n });\n return () => {\n doc.removeEventListener('keydown', onDocumentKeydown, true);\n };\n }, [onClose, ref, disabled]);\n\n return (\n <Component tabIndex={-1} ref={ref} {...restProps}>\n {children}\n </Component>\n );\n};\n"],"names":["useCallback","useRef","useState","arraysEquals","useExternRef","FOCUSABLE_ELEMENTS_LIST","Keys","pressedKey","contains","getActiveElementByAnotherElement","getWindow","isHTMLElement","useDOM","useIsomorphicLayoutEffect","FOCUSABLE_ELEMENTS","join","FocusTrap","Component","onClose","autoFocus","restoreFocus","disabled","mount","timeout","getRootRef","children","restProps","ref","document","focusableNodesRef","restoreFocusTo","setRestoreFocusTo","focusNodeByIndex","nodeIndex","element","current","focus","preventScroll","recalculateFocusableNodesRef","parentNode","newFocusableElements","querySelectorAll","nodes","forEach","focusableEl","display","visibility","getComputedStyle","push","length","onMutateParentHandler","oldFocusableNodes","activeElement","currentElementIndex","Math","max","indexOf","collectFocusableNodesRef","observer","MutationObserver","observe","subtree","childList","disconnect","tryToAutoFocusToFirstNode","autoFocusToFirstNode","timeoutId","setTimeout","clearTimeout","restoreFocusImpl","shouldRestoreFocus","calculateRestoreFocusTo","tryToRestoreFocusOnUnmount","tryToRestoreFocusWhenFakeUnmount","onDocumentKeydown","event","pressedKeyResult","TAB","lastIdx","targetIdx","findIndex","node","target","shouldFocusFirstNode","shiftKey","preventDefault","ESCAPE","doc","addEventListener","capture","removeEventListener","tabIndex"],"mappings":"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"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { type ImageBaseProps } from '../ImageBase/ImageBase';
|
|
2
2
|
import { GridAvatarBadge, type GridAvatarBadgeProps } from './GridAvatarBadge/GridAvatarBadge';
|
|
3
3
|
export { GridAvatarBadgeProps };
|
|
4
|
-
export declare const GRID_AVATAR_DEFAULT_SIZE = 48;
|
|
5
4
|
export declare const MAX_GRID_LENGTH = 4;
|
|
6
5
|
export interface GridAvatarProps extends Omit<ImageBaseProps, 'src' | 'fallbackIcon'> {
|
|
7
6
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GridAvatar.d.ts","sourceRoot":"","sources":["../../../src/components/GridAvatar/GridAvatar.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAa,KAAK,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,KAAK,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAG/F,OAAO,EAAE,oBAAoB,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"GridAvatar.d.ts","sourceRoot":"","sources":["../../../src/components/GridAvatar/GridAvatar.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAa,KAAK,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,KAAK,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAG/F,OAAO,EAAE,oBAAoB,EAAE,CAAC;AAIhC,eAAO,MAAM,eAAe,IAAI,CAAC;AAEjC,MAAM,WAAW,eAAgB,SAAQ,IAAI,CAAC,cAAc,EAAE,KAAK,GAAG,cAAc,CAAC;IACnF;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;CAChB;AAID;;GAEG;AACH,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAAC,GAAG;IAAE,KAAK,EAAE,OAAO,eAAe,CAAA;CA6BnF,CAAC"}
|
|
@@ -6,7 +6,7 @@ import { classNames } from '@vkontakte/vkjs';
|
|
|
6
6
|
import { warnOnce } from '../../lib/warnOnce';
|
|
7
7
|
import { ImageBase } from '../ImageBase/ImageBase';
|
|
8
8
|
import { GridAvatarBadge } from './GridAvatarBadge/GridAvatarBadge';
|
|
9
|
-
|
|
9
|
+
const GRID_AVATAR_DEFAULT_SIZE = 48;
|
|
10
10
|
export const MAX_GRID_LENGTH = 4;
|
|
11
11
|
const warn = warnOnce('GridAvatar');
|
|
12
12
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/GridAvatar/GridAvatar.tsx"],"sourcesContent":["import { classNames } from '@vkontakte/vkjs';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { ImageBase, type ImageBaseProps } from '../ImageBase/ImageBase';\nimport { GridAvatarBadge, type GridAvatarBadgeProps } from './GridAvatarBadge/GridAvatarBadge';\nimport styles from './GridAvatar.module.css';\n\nexport { GridAvatarBadgeProps };\n\
|
|
1
|
+
{"version":3,"sources":["../../../src/components/GridAvatar/GridAvatar.tsx"],"sourcesContent":["import { classNames } from '@vkontakte/vkjs';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { ImageBase, type ImageBaseProps } from '../ImageBase/ImageBase';\nimport { GridAvatarBadge, type GridAvatarBadgeProps } from './GridAvatarBadge/GridAvatarBadge';\nimport styles from './GridAvatar.module.css';\n\nexport { GridAvatarBadgeProps };\n\nconst GRID_AVATAR_DEFAULT_SIZE = 48;\n\nexport const MAX_GRID_LENGTH = 4;\n\nexport interface GridAvatarProps extends Omit<ImageBaseProps, 'src' | 'fallbackIcon'> {\n /**\n * Массив со ссылками. От 1 до 4 элементов.\n */\n src?: string[];\n}\n\nconst warn = warnOnce('GridAvatar');\n\n/**\n * @see https://vkcom.github.io/VKUI/#/GridAvatar\n */\nexport const GridAvatar: React.FC<GridAvatarProps> & { Badge: typeof GridAvatarBadge } = ({\n src = [],\n size = GRID_AVATAR_DEFAULT_SIZE,\n className,\n children,\n ...restProps\n}: GridAvatarProps) => {\n if (process.env.NODE_ENV === 'development') {\n if (src.length > MAX_GRID_LENGTH) {\n warn(`Длина массива src (${src.length}) больше максимальной (${MAX_GRID_LENGTH})`, 'error');\n }\n }\n\n return (\n <ImageBase {...restProps} size={size} className={classNames(styles['GridAvatar'], className)}>\n <div className={styles['GridAvatar__in']} aria-hidden>\n {src.map((url, index) =>\n index < MAX_GRID_LENGTH ? (\n <div\n key={index}\n className={styles['GridAvatar__item']}\n style={{ backgroundImage: `url(${url})` }}\n />\n ) : null,\n )}\n </div>\n {children}\n </ImageBase>\n );\n};\n\nGridAvatar.Badge = GridAvatarBadge;\n"],"names":["classNames","warnOnce","ImageBase","GridAvatarBadge","GRID_AVATAR_DEFAULT_SIZE","MAX_GRID_LENGTH","warn","GridAvatar","src","size","className","children","restProps","process","env","NODE_ENV","length","div","aria-hidden","map","url","index","style","backgroundImage","Badge"],"mappings":";;;;AAAA,SAASA,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,QAAQ,QAAQ,qBAAqB;AAC9C,SAASC,SAAS,QAA6B,yBAAyB;AACxE,SAASC,eAAe,QAAmC,oCAAoC;AAK/F,MAAMC,2BAA2B;AAEjC,OAAO,MAAMC,kBAAkB,EAAE;AASjC,MAAMC,OAAOL,SAAS;AAEtB;;CAEC,GACD,OAAO,MAAMM,aAA4E;QAAC,EACxFC,MAAM,EAAE,EACRC,OAAOL,wBAAwB,EAC/BM,SAAS,EACTC,QAAQ,EAEQ,WADbC;QAJHJ;QACAC;QACAC;QACAC;;IAGA,IAAIE,QAAQC,GAAG,CAACC,QAAQ,KAAK,eAAe;QAC1C,IAAIP,IAAIQ,MAAM,GAAGX,iBAAiB;YAChCC,KAAK,CAAC,mBAAmB,EAAEE,IAAIQ,MAAM,CAAC,uBAAuB,EAAEX,gBAAgB,CAAC,CAAC,EAAE;QACrF;IACF;IAEA,qBACE,MAACH,mDAAcU;QAAWH,MAAMA;QAAMC,WAAWV,6BAAiCU;;0BAChF,KAACO;gBAAIP,SAAS;gBAA4BQ,aAAW;0BAClDV,IAAIW,GAAG,CAAC,CAACC,KAAKC,QACbA,QAAQhB,gCACN,KAACY;wBAECP,SAAS;wBACTY,OAAO;4BAAEC,iBAAiB,CAAC,IAAI,EAAEH,IAAI,CAAC,CAAC;wBAAC;uBAFnCC,SAIL;;YAGPV;;;AAGP,EAAE;AAEFJ,WAAWiB,KAAK,GAAGrB"}
|
|
@@ -4,7 +4,7 @@ export interface GroupProps extends HTMLAttributesWithRootRef<HTMLElement> {
|
|
|
4
4
|
header?: React.ReactNode;
|
|
5
5
|
description?: React.ReactNode;
|
|
6
6
|
/**
|
|
7
|
-
`show` - разделитель всегда
|
|
7
|
+
`show` (только для `mode="plain"`) - разделитель всегда показывается
|
|
8
8
|
`hide` - разделитель всегда спрятан,
|
|
9
9
|
`auto` - разделитель рисуется автоматически между соседними группами.
|
|
10
10
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Group.d.ts","sourceRoot":"","sources":["../../../src/components/Group/Group.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"Group.d.ts","sourceRoot":"","sources":["../../../src/components/Group/Group.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAoDxD,MAAM,WAAW,UAAW,SAAQ,yBAAyB,CAAC,WAAW,CAAC;IACxE,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IACrC;;;;;OAKG;IACH,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACxB;;OAEG;IACH,OAAO,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC;CACrB;AAGD;;GAEG;AACH,eAAO,MAAM,KAAK,iHASf,UAAU,KAAG,KAAK,CAAC,SAiErB,CAAC"}
|
|
@@ -9,7 +9,6 @@ import { warnOnce } from '../../lib/warnOnce';
|
|
|
9
9
|
import { AppRootContext } from '../AppRoot/AppRootContext';
|
|
10
10
|
import { ModalRootContext } from '../ModalRoot/ModalRootContext';
|
|
11
11
|
import { RootComponent } from '../RootComponent/RootComponent';
|
|
12
|
-
import { Separator } from '../Separator/Separator';
|
|
13
12
|
import { Footnote } from '../Typography/Footnote/Footnote';
|
|
14
13
|
const sizeXClassNames = {
|
|
15
14
|
none: classNames("vkuiGroup--sizeX-none", 'vkuiInternalGroup--sizeX-none'),
|
|
@@ -63,13 +62,28 @@ const warn = warnOnce('Group');
|
|
|
63
62
|
warn('При использовании роли "tabpanel" необходимо задать значение свойств "aria-controls" и "id"');
|
|
64
63
|
}
|
|
65
64
|
const tabIndex = isTabPanel && tabIndexProp === undefined ? 0 : tabIndexProp;
|
|
65
|
+
let siblingSeparatorElement = null;
|
|
66
|
+
switch(separator){
|
|
67
|
+
case 'auto':
|
|
68
|
+
siblingSeparatorElement = /*#__PURE__*/ _jsx("div", {
|
|
69
|
+
className: "vkuiGroup__separator-sibling"
|
|
70
|
+
});
|
|
71
|
+
break;
|
|
72
|
+
case 'show':
|
|
73
|
+
siblingSeparatorElement = /*#__PURE__*/ _jsx("div", {
|
|
74
|
+
className: classNames("vkuiGroup__separator-sibling", mode === 'plain' || mode === 'none' ? "vkuiGroup__separator-sibling--forced" : undefined)
|
|
75
|
+
});
|
|
76
|
+
break;
|
|
77
|
+
case 'hide':
|
|
78
|
+
break;
|
|
79
|
+
}
|
|
66
80
|
return /*#__PURE__*/ _jsxs(_Fragment, {
|
|
67
81
|
children: [
|
|
68
82
|
/*#__PURE__*/ _jsxs(RootComponent, _object_spread_props(_object_spread({
|
|
69
83
|
Component: "section"
|
|
70
84
|
}, restProps), {
|
|
71
85
|
tabIndex: tabIndex,
|
|
72
|
-
baseClassName: classNames('vkuiInternalGroup', "vkuiGroup",
|
|
86
|
+
baseClassName: classNames('vkuiInternalGroup', "vkuiGroup", sizeX !== 'regular' && sizeXClassNames[sizeX], mode === 'plain' && isInsideModal && "vkuiGroup--mode-plain-inside-modal", stylesMode[mode], stylesPadding[padding]),
|
|
73
87
|
children: [
|
|
74
88
|
hasReactNode(header) && /*#__PURE__*/ _jsx("div", {
|
|
75
89
|
className: "vkuiGroup__header",
|
|
@@ -82,16 +96,7 @@ const warn = warnOnce('Group');
|
|
|
82
96
|
})
|
|
83
97
|
]
|
|
84
98
|
})),
|
|
85
|
-
|
|
86
|
-
children: [
|
|
87
|
-
/*#__PURE__*/ _jsx("div", {
|
|
88
|
-
className: classNames("vkuiGroup__separator", "vkuiGroup__separator--spacing")
|
|
89
|
-
}),
|
|
90
|
-
/*#__PURE__*/ _jsx(Separator, {
|
|
91
|
-
className: classNames("vkuiGroup__separator", "vkuiGroup__separator--separator", separator === 'show' && "vkuiGroup__separator--force")
|
|
92
|
-
})
|
|
93
|
-
]
|
|
94
|
-
})
|
|
99
|
+
siblingSeparatorElement
|
|
95
100
|
]
|
|
96
101
|
});
|
|
97
102
|
};
|