@vkontakte/vkui 8.0.1 → 8.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/Accordion/Accordion.d.ts +8 -6
- package/dist/components/Accordion/Accordion.d.ts.map +1 -1
- package/dist/components/Accordion/Accordion.js +3 -0
- package/dist/components/Accordion/Accordion.js.map +1 -1
- package/dist/components/Accordion/AccordionIcon.d.ts +14 -0
- package/dist/components/Accordion/AccordionIcon.d.ts.map +1 -0
- package/dist/components/Accordion/AccordionIcon.js +16 -0
- package/dist/components/Accordion/AccordionIcon.js.map +1 -0
- package/dist/components/Accordion/AccordionSummary.d.ts +3 -3
- package/dist/components/Accordion/AccordionSummary.d.ts.map +1 -1
- package/dist/components/Accordion/AccordionSummary.js +4 -6
- package/dist/components/Accordion/AccordionSummary.js.map +1 -1
- package/dist/components/ActionSheet/ActionSheet.d.ts +9 -9
- package/dist/components/ActionSheet/ActionSheet.d.ts.map +1 -1
- package/dist/components/ActionSheet/ActionSheet.js.map +1 -1
- package/dist/components/ActionSheet/ActionSheetContext.d.ts +3 -3
- package/dist/components/ActionSheet/ActionSheetContext.d.ts.map +1 -1
- package/dist/components/ActionSheet/ActionSheetContext.js.map +1 -1
- package/dist/components/ActionSheet/types.d.ts +8 -8
- package/dist/components/ActionSheet/types.d.ts.map +1 -1
- package/dist/components/ActionSheet/types.js.map +1 -1
- package/dist/components/ActionSheetItem/ActionSheetItem.d.ts +15 -15
- package/dist/components/ActionSheetItem/ActionSheetItem.d.ts.map +1 -1
- package/dist/components/ActionSheetItem/ActionSheetItem.js.map +1 -1
- package/dist/components/ActionSheetItem/subcomponents/Radio/Radio.d.ts +1 -1
- package/dist/components/ActionSheetItem/subcomponents/Radio/Radio.d.ts.map +1 -1
- package/dist/components/ActionSheetItem/subcomponents/Radio/Radio.js.map +1 -1
- package/dist/components/AdaptivityProvider/AdaptivityContext.d.ts +7 -7
- package/dist/components/AdaptivityProvider/AdaptivityContext.d.ts.map +1 -1
- package/dist/components/AdaptivityProvider/AdaptivityContext.js.map +1 -1
- package/dist/components/Alert/Alert.d.ts +18 -18
- package/dist/components/Alert/Alert.d.ts.map +1 -1
- package/dist/components/Alert/Alert.js.map +1 -1
- package/dist/components/Alert/AlertBase.d.ts +2 -2
- package/dist/components/Alert/AlertBase.d.ts.map +1 -1
- package/dist/components/Alert/AlertBase.js.map +1 -1
- package/dist/components/Alert/AlertTypography.d.ts +1 -1
- package/dist/components/Alert/AlertTypography.d.ts.map +1 -1
- package/dist/components/Alert/AlertTypography.js.map +1 -1
- package/dist/components/AppRoot/AppRoot.d.ts +9 -9
- package/dist/components/AppRoot/AppRoot.d.ts.map +1 -1
- package/dist/components/AppRoot/AppRoot.js.map +1 -1
- package/dist/components/AppRoot/AppRootContext.d.ts +4 -4
- package/dist/components/AppRoot/AppRootContext.d.ts.map +1 -1
- package/dist/components/AppRoot/AppRootContext.js.map +1 -1
- package/dist/components/AppRoot/AppRootPortal.d.ts +2 -2
- package/dist/components/AppRoot/AppRootPortal.d.ts.map +1 -1
- package/dist/components/AppRoot/AppRootPortal.js.map +1 -1
- package/dist/components/AppRoot/ScrollContext.d.ts +4 -4
- package/dist/components/AppRoot/ScrollContext.d.ts.map +1 -1
- package/dist/components/AppRoot/ScrollContext.js.map +1 -1
- package/dist/components/AppRoot/types.d.ts +4 -4
- package/dist/components/AppRoot/types.d.ts.map +1 -1
- package/dist/components/AppRoot/types.js.map +1 -1
- package/dist/components/AspectRatio/AspectRatio.d.ts +2 -2
- package/dist/components/AspectRatio/AspectRatio.d.ts.map +1 -1
- package/dist/components/AspectRatio/AspectRatio.js.map +1 -1
- package/dist/components/Avatar/Avatar.d.ts +2 -2
- package/dist/components/Avatar/Avatar.d.ts.map +1 -1
- package/dist/components/Avatar/Avatar.js.map +1 -1
- package/dist/components/Avatar/AvatarBadge/AvatarBadgeWithPreset.d.ts +1 -1
- package/dist/components/Avatar/AvatarBadge/AvatarBadgeWithPreset.d.ts.map +1 -1
- package/dist/components/Avatar/AvatarBadge/AvatarBadgeWithPreset.js.map +1 -1
- package/dist/components/Badge/Badge.d.ts +1 -1
- package/dist/components/Badge/Badge.d.ts.map +1 -1
- package/dist/components/Badge/Badge.js.map +1 -1
- package/dist/components/Banner/Banner.d.ts +12 -12
- package/dist/components/Banner/Banner.d.ts.map +1 -1
- package/dist/components/Banner/Banner.js.map +1 -1
- package/dist/components/Box/Box.d.ts +1 -1
- package/dist/components/Box/Box.d.ts.map +1 -1
- package/dist/components/Box/Box.js.map +1 -1
- package/dist/components/Button/Button.d.ts +11 -11
- package/dist/components/Button/Button.d.ts.map +1 -1
- package/dist/components/Button/Button.js +1 -1
- package/dist/components/Button/Button.js.map +1 -1
- package/dist/components/ButtonGroup/ButtonGroup.d.ts +4 -4
- package/dist/components/ButtonGroup/ButtonGroup.d.ts.map +1 -1
- package/dist/components/ButtonGroup/ButtonGroup.js.map +1 -1
- package/dist/components/Calendar/Calendar.d.ts +17 -17
- package/dist/components/Calendar/Calendar.d.ts.map +1 -1
- package/dist/components/Calendar/Calendar.js.map +1 -1
- package/dist/components/CalendarDay/CalendarDay.d.ts +18 -18
- package/dist/components/CalendarDay/CalendarDay.d.ts.map +1 -1
- package/dist/components/CalendarDay/CalendarDay.js.map +1 -1
- package/dist/components/CalendarDays/CalendarDays.d.ts +14 -14
- package/dist/components/CalendarDays/CalendarDays.d.ts.map +1 -1
- package/dist/components/CalendarDays/CalendarDays.js.map +1 -1
- package/dist/components/CalendarHeader/CalendarHeader.d.ts +19 -19
- package/dist/components/CalendarHeader/CalendarHeader.d.ts.map +1 -1
- package/dist/components/CalendarHeader/CalendarHeader.js.map +1 -1
- package/dist/components/CalendarRange/CalendarRange.d.ts +12 -12
- package/dist/components/CalendarRange/CalendarRange.d.ts.map +1 -1
- package/dist/components/CalendarRange/CalendarRange.js.map +1 -1
- package/dist/components/CalendarTime/CalendarTime.d.ts +14 -14
- package/dist/components/CalendarTime/CalendarTime.d.ts.map +1 -1
- package/dist/components/CalendarTime/CalendarTime.js.map +1 -1
- package/dist/components/CalendarTime/CalendarTimePicker.d.ts +3 -3
- package/dist/components/CalendarTime/CalendarTimePicker.d.ts.map +1 -1
- package/dist/components/CalendarTime/CalendarTimePicker.js.map +1 -1
- package/dist/components/Card/Card.d.ts +1 -1
- package/dist/components/Card/Card.d.ts.map +1 -1
- package/dist/components/Card/Card.js.map +1 -1
- package/dist/components/CardGrid/CardGrid.d.ts +2 -2
- package/dist/components/CardGrid/CardGrid.d.ts.map +1 -1
- package/dist/components/CardGrid/CardGrid.js.map +1 -1
- package/dist/components/CardScroll/CardScroll.d.ts +3 -3
- package/dist/components/CardScroll/CardScroll.d.ts.map +1 -1
- package/dist/components/CardScroll/CardScroll.js.map +1 -1
- package/dist/components/CarouselBase/Bullets.d.ts +1 -1
- package/dist/components/CarouselBase/Bullets.d.ts.map +1 -1
- package/dist/components/CarouselBase/Bullets.js.map +1 -1
- package/dist/components/CarouselBase/CarouselViewPort.d.ts +1 -1
- package/dist/components/CarouselBase/CarouselViewPort.d.ts.map +1 -1
- package/dist/components/CarouselBase/CarouselViewPort.js.map +1 -1
- package/dist/components/CarouselBase/ScrollArrows.d.ts +2 -2
- package/dist/components/CarouselBase/ScrollArrows.d.ts.map +1 -1
- package/dist/components/CarouselBase/ScrollArrows.js.map +1 -1
- package/dist/components/CarouselBase/helpers.d.ts +4 -4
- package/dist/components/CarouselBase/helpers.d.ts.map +1 -1
- package/dist/components/CarouselBase/helpers.js.map +1 -1
- package/dist/components/CarouselBase/types.d.ts +23 -23
- package/dist/components/CarouselBase/types.d.ts.map +1 -1
- package/dist/components/CarouselBase/types.js.map +1 -1
- package/dist/components/Cell/Cell.d.ts +8 -8
- package/dist/components/Cell/Cell.d.ts.map +1 -1
- package/dist/components/Cell/Cell.js.map +1 -1
- package/dist/components/Cell/CellCheckbox/CellCheckbox.d.ts +1 -1
- package/dist/components/Cell/CellCheckbox/CellCheckbox.d.ts.map +1 -1
- package/dist/components/Cell/CellCheckbox/CellCheckbox.js.map +1 -1
- package/dist/components/Cell/CellDragger/CellDragger.d.ts +2 -2
- package/dist/components/Cell/CellDragger/CellDragger.d.ts.map +1 -1
- package/dist/components/Cell/CellDragger/CellDragger.js.map +1 -1
- package/dist/components/CellButton/CellButton.d.ts +16 -16
- package/dist/components/CellButton/CellButton.d.ts.map +1 -1
- package/dist/components/CellButton/CellButton.js.map +1 -1
- package/dist/components/CellButtonGroup/CellButtonGroup.d.ts +2 -2
- package/dist/components/Checkbox/Checkbox.d.ts +6 -6
- package/dist/components/Checkbox/Checkbox.d.ts.map +1 -1
- package/dist/components/Checkbox/Checkbox.js.map +1 -1
- package/dist/components/Checkbox/CheckboxInput/CheckboxInput.d.ts +11 -11
- package/dist/components/Checkbox/CheckboxInput/CheckboxInput.d.ts.map +1 -1
- package/dist/components/Checkbox/CheckboxInput/CheckboxInput.js.map +1 -1
- package/dist/components/ChipsInput/ChipsInput.d.ts +1 -1
- package/dist/components/ChipsInput/ChipsInput.d.ts.map +1 -1
- package/dist/components/ChipsInput/ChipsInput.js.map +1 -1
- package/dist/components/ChipsInput/useChipsInput.d.ts +3 -3
- package/dist/components/ChipsInput/useChipsInput.d.ts.map +1 -1
- package/dist/components/ChipsInput/useChipsInput.js.map +1 -1
- package/dist/components/ChipsInputBase/Chip/Chip.d.ts +9 -9
- package/dist/components/ChipsInputBase/Chip/Chip.d.ts.map +1 -1
- package/dist/components/ChipsInputBase/Chip/Chip.js.map +1 -1
- package/dist/components/ChipsInputBase/types.d.ts +19 -19
- 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 +13 -13
- package/dist/components/ChipsSelect/ChipsSelect.d.ts.map +1 -1
- package/dist/components/ChipsSelect/ChipsSelect.js.map +1 -1
- package/dist/components/ChipsSelect/useChipsSelect.d.ts +8 -8
- package/dist/components/ChipsSelect/useChipsSelect.d.ts.map +1 -1
- package/dist/components/ChipsSelect/useChipsSelect.js.map +1 -1
- package/dist/components/Clickable/Clickable.d.ts +1 -1
- package/dist/components/Clickable/Clickable.d.ts.map +1 -1
- package/dist/components/Clickable/Clickable.js.map +1 -1
- package/dist/components/Clickable/useState.d.ts +13 -13
- package/dist/components/Clickable/useState.d.ts.map +1 -1
- package/dist/components/Clickable/useState.js.map +1 -1
- package/dist/components/ConfigProvider/ConfigProvider.d.ts +2 -1
- package/dist/components/ConfigProvider/ConfigProvider.d.ts.map +1 -1
- package/dist/components/ConfigProvider/ConfigProvider.js.map +1 -1
- package/dist/components/ContentBadge/ContentBadge.d.ts +4 -4
- package/dist/components/ContentBadge/ContentBadge.d.ts.map +1 -1
- package/dist/components/ContentBadge/ContentBadge.js.map +1 -1
- package/dist/components/ContentCard/ContentCard.d.ts +8 -8
- package/dist/components/ContentCard/ContentCard.d.ts.map +1 -1
- package/dist/components/ContentCard/ContentCard.js.map +1 -1
- package/dist/components/Counter/Counter.d.ts +4 -4
- package/dist/components/Counter/Counter.d.ts.map +1 -1
- package/dist/components/Counter/Counter.js.map +1 -1
- package/dist/components/CustomScrollView/CustomScrollView.d.ts +6 -6
- package/dist/components/CustomScrollView/CustomScrollView.d.ts.map +1 -1
- package/dist/components/CustomScrollView/CustomScrollView.js.map +1 -1
- package/dist/components/CustomSelect/CustomSelect.d.ts +36 -27
- package/dist/components/CustomSelect/CustomSelect.d.ts.map +1 -1
- package/dist/components/CustomSelect/CustomSelect.js +2 -2
- package/dist/components/CustomSelect/CustomSelect.js.map +1 -1
- package/dist/components/CustomSelect/CustomSelectClearButton.d.ts +2 -2
- package/dist/components/CustomSelect/CustomSelectClearButton.d.ts.map +1 -1
- package/dist/components/CustomSelect/CustomSelectClearButton.js.map +1 -1
- package/dist/components/CustomSelect/CustomSelectInput/CustomSelectInput.d.ts +9 -9
- package/dist/components/CustomSelect/CustomSelectInput/CustomSelectInput.d.ts.map +1 -1
- package/dist/components/CustomSelect/CustomSelectInput/CustomSelectInput.js.map +1 -1
- package/dist/components/CustomSelect/hooks/useDropdownOpenedController.d.ts +2 -2
- package/dist/components/CustomSelect/hooks/useDropdownOpenedController.d.ts.map +1 -1
- package/dist/components/CustomSelect/hooks/useDropdownOpenedController.js.map +1 -1
- package/dist/components/CustomSelect/hooks/useSelectedOptionController.d.ts +1 -1
- package/dist/components/CustomSelect/hooks/useSelectedOptionController.d.ts.map +1 -1
- package/dist/components/CustomSelect/hooks/useSelectedOptionController.js.map +1 -1
- package/dist/components/CustomSelect/types.d.ts +1 -1
- package/dist/components/CustomSelect/types.d.ts.map +1 -1
- package/dist/components/CustomSelect/types.js.map +1 -1
- package/dist/components/CustomSelectDropdown/CustomSelectDropdown.d.ts +8 -8
- package/dist/components/CustomSelectDropdown/CustomSelectDropdown.d.ts.map +1 -1
- package/dist/components/CustomSelectDropdown/CustomSelectDropdown.js.map +1 -1
- package/dist/components/CustomSelectOption/CustomSelectOption.d.ts +9 -9
- package/dist/components/CustomSelectOption/CustomSelectOption.d.ts.map +1 -1
- package/dist/components/CustomSelectOption/CustomSelectOption.js.map +1 -1
- package/dist/components/DateInput/DateInput.d.ts +23 -23
- package/dist/components/DateInput/DateInput.d.ts.map +1 -1
- package/dist/components/DateInput/DateInput.js +3 -12
- package/dist/components/DateInput/DateInput.js.map +1 -1
- package/dist/components/DateInput/hooks.d.ts +4 -4
- package/dist/components/DateInput/hooks.d.ts.map +1 -1
- package/dist/components/DateInput/hooks.js.map +1 -1
- package/dist/components/DateRangeInput/DateRangeInput.d.ts +25 -25
- package/dist/components/DateRangeInput/DateRangeInput.d.ts.map +1 -1
- package/dist/components/DateRangeInput/DateRangeInput.js +2 -11
- package/dist/components/DateRangeInput/DateRangeInput.js.map +1 -1
- package/dist/components/DropZone/DropZone.d.ts +2 -2
- package/dist/components/DropZone/DropZone.d.ts.map +1 -1
- package/dist/components/DropZone/DropZone.js +1 -1
- package/dist/components/DropZone/DropZone.js.map +1 -1
- package/dist/components/DropZone/{components → DropZoneGrid}/DropZoneGrid.d.ts +1 -1
- package/dist/components/DropZone/DropZoneGrid/DropZoneGrid.d.ts.map +1 -0
- package/dist/components/DropZone/{components → DropZoneGrid}/DropZoneGrid.js +3 -3
- package/dist/components/DropZone/DropZoneGrid/DropZoneGrid.js.map +1 -0
- package/dist/components/DropdownIcon/DropdownIcon.d.ts +1 -1
- package/dist/components/DropdownIcon/DropdownIcon.d.ts.map +1 -1
- package/dist/components/DropdownIcon/DropdownIcon.js.map +1 -1
- package/dist/components/Epic/Epic.d.ts +1 -1
- package/dist/components/Epic/Epic.d.ts.map +1 -1
- package/dist/components/Epic/Epic.js.map +1 -1
- package/dist/components/Epic/ScrollSaver.d.ts +1 -1
- package/dist/components/Epic/ScrollSaver.d.ts.map +1 -1
- package/dist/components/Epic/ScrollSaver.js.map +1 -1
- package/dist/components/File/File.d.ts +4 -4
- package/dist/components/File/File.d.ts.map +1 -1
- package/dist/components/File/File.js.map +1 -1
- package/dist/components/FixedLayout/FixedLayout.d.ts +3 -3
- package/dist/components/FixedLayout/FixedLayout.d.ts.map +1 -1
- package/dist/components/FixedLayout/FixedLayout.js.map +1 -1
- package/dist/components/Flex/Flex.d.ts +8 -8
- package/dist/components/Flex/Flex.d.ts.map +1 -1
- package/dist/components/Flex/Flex.js.map +1 -1
- package/dist/components/Flex/FlexItem/FlexItem.d.ts +1 -1
- package/dist/components/Flex/FlexItem/FlexItem.d.ts.map +1 -1
- package/dist/components/Flex/FlexItem/FlexItem.js.map +1 -1
- package/dist/components/FloatingArrow/FloatingArrow.d.ts +9 -9
- package/dist/components/FloatingArrow/FloatingArrow.d.ts.map +1 -1
- package/dist/components/FloatingArrow/FloatingArrow.js.map +1 -1
- package/dist/components/FocusTrap/FocusTrap.d.ts +1 -1
- package/dist/components/FocusTrap/FocusTrap.d.ts.map +1 -1
- package/dist/components/FocusTrap/FocusTrap.js +2 -4
- package/dist/components/FocusTrap/FocusTrap.js.map +1 -1
- package/dist/components/FormField/FormField.d.ts +8 -8
- package/dist/components/FormField/FormField.d.ts.map +1 -1
- package/dist/components/FormField/FormField.js.map +1 -1
- package/dist/components/FormFieldClearButton/FormFieldClearButton.d.ts +2 -2
- package/dist/components/FormFieldClearButton/FormFieldClearButton.d.ts.map +1 -1
- package/dist/components/FormFieldClearButton/FormFieldClearButton.js.map +1 -1
- package/dist/components/FormItem/FormItem.d.ts +10 -10
- package/dist/components/FormItem/FormItem.d.ts.map +1 -1
- package/dist/components/FormItem/FormItem.js.map +1 -1
- package/dist/components/FormItem/context.d.ts +2 -2
- package/dist/components/FormItem/context.d.ts.map +1 -1
- package/dist/components/FormItem/context.js.map +1 -1
- package/dist/components/FormLayoutGroup/FormLayoutGroup.d.ts +4 -4
- package/dist/components/FormLayoutGroup/FormLayoutGroup.d.ts.map +1 -1
- package/dist/components/FormLayoutGroup/FormLayoutGroup.js.map +1 -1
- package/dist/components/FormStatus/FormStatus.d.ts +2 -2
- package/dist/components/FormStatus/FormStatus.d.ts.map +1 -1
- package/dist/components/FormStatus/FormStatus.js.map +1 -1
- package/dist/components/Gallery/Gallery.d.ts +2 -2
- package/dist/components/Gallery/Gallery.d.ts.map +1 -1
- package/dist/components/Gallery/Gallery.js.map +1 -1
- package/dist/components/Gradient/Gradient.d.ts +2 -2
- package/dist/components/Gradient/Gradient.d.ts.map +1 -1
- package/dist/components/Gradient/Gradient.js.map +1 -1
- package/dist/components/GridAvatar/GridAvatar.d.ts +1 -1
- package/dist/components/GridAvatar/GridAvatar.d.ts.map +1 -1
- package/dist/components/GridAvatar/GridAvatar.js.map +1 -1
- package/dist/components/Group/Group.d.ts +2 -2
- package/dist/components/Group/Group.d.ts.map +1 -1
- package/dist/components/Group/Group.js.map +1 -1
- package/dist/components/Group/GroupContainer.d.ts +3 -3
- package/dist/components/Group/GroupContainer.d.ts.map +1 -1
- package/dist/components/Group/GroupContainer.js.map +1 -1
- package/dist/components/Group/GroupExpandedContent.d.ts +1 -1
- package/dist/components/Group/GroupExpandedContent.d.ts.map +1 -1
- package/dist/components/Group/GroupExpandedContent.js.map +1 -1
- package/dist/components/Header/Header.d.ts +11 -11
- package/dist/components/Header/Header.d.ts.map +1 -1
- package/dist/components/Header/Header.js.map +1 -1
- package/dist/components/HorizontalCell/HorizontalCell.d.ts +7 -7
- package/dist/components/HorizontalCell/HorizontalCell.d.ts.map +1 -1
- package/dist/components/HorizontalCell/HorizontalCell.js.map +1 -1
- package/dist/components/HorizontalScroll/HorizontalCellShowMore/HorizontalCellShowMore.d.ts +4 -4
- package/dist/components/HorizontalScroll/HorizontalCellShowMore/HorizontalCellShowMore.d.ts.map +1 -1
- package/dist/components/HorizontalScroll/HorizontalCellShowMore/HorizontalCellShowMore.js.map +1 -1
- package/dist/components/HorizontalScroll/HorizontalScroll.d.ts +30 -15
- package/dist/components/HorizontalScroll/HorizontalScroll.d.ts.map +1 -1
- package/dist/components/HorizontalScroll/HorizontalScroll.js +20 -6
- package/dist/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
- package/dist/components/IconButton/IconButton.d.ts +1 -1
- package/dist/components/IconButton/IconButton.d.ts.map +1 -1
- package/dist/components/IconButton/IconButton.js.map +1 -1
- package/dist/components/Image/Image.d.ts +5 -5
- package/dist/components/Image/Image.d.ts.map +1 -1
- package/dist/components/Image/Image.js.map +1 -1
- package/dist/components/ImageBase/ImageBase.d.ts +17 -15
- package/dist/components/ImageBase/ImageBase.d.ts.map +1 -1
- package/dist/components/ImageBase/ImageBase.js +9 -5
- package/dist/components/ImageBase/ImageBase.js.map +1 -1
- package/dist/components/ImageBase/ImageBaseBadge/ImageBaseBadge.d.ts +1 -1
- package/dist/components/ImageBase/ImageBaseBadge/ImageBaseBadge.d.ts.map +1 -1
- package/dist/components/ImageBase/ImageBaseBadge/ImageBaseBadge.js.map +1 -1
- package/dist/components/ImageBase/ImageBaseFloatElement/ImageBaseFloatElement.d.ts +3 -3
- package/dist/components/ImageBase/ImageBaseFloatElement/ImageBaseFloatElement.d.ts.map +1 -1
- package/dist/components/ImageBase/ImageBaseFloatElement/ImageBaseFloatElement.js.map +1 -1
- package/dist/components/ImageBase/ImageBaseOverlay/types.d.ts +3 -3
- package/dist/components/ImageBase/ImageBaseOverlay/types.d.ts.map +1 -1
- package/dist/components/ImageBase/ImageBaseOverlay/types.js.map +1 -1
- package/dist/components/ImageBase/types.d.ts +3 -3
- package/dist/components/ImageBase/types.d.ts.map +1 -1
- package/dist/components/ImageBase/types.js.map +1 -1
- package/dist/components/Input/Input.d.ts +4 -4
- package/dist/components/Input/Input.d.ts.map +1 -1
- package/dist/components/Input/Input.js.map +1 -1
- package/dist/components/InputLike/InputLike.d.ts +3 -3
- package/dist/components/InputLike/InputLike.d.ts.map +1 -1
- package/dist/components/InputLike/InputLike.js.map +1 -1
- package/dist/components/Link/Link.d.ts +4 -4
- package/dist/components/Link/Link.d.ts.map +1 -1
- package/dist/components/Link/Link.js.map +1 -1
- package/dist/components/List/List.d.ts +1 -1
- package/dist/components/List/List.d.ts.map +1 -1
- package/dist/components/List/List.js.map +1 -1
- package/dist/components/MiniInfoCell/MiniInfoCell.d.ts +5 -5
- package/dist/components/MiniInfoCell/MiniInfoCell.d.ts.map +1 -1
- package/dist/components/MiniInfoCell/MiniInfoCell.js.map +1 -1
- package/dist/components/ModalCard/ModalCardInternal.d.ts +1 -1
- package/dist/components/ModalCard/ModalCardInternal.d.ts.map +1 -1
- package/dist/components/ModalCard/ModalCardInternal.js.map +1 -1
- package/dist/components/ModalCard/types.d.ts +13 -13
- package/dist/components/ModalCard/types.d.ts.map +1 -1
- package/dist/components/ModalCard/types.js.map +1 -1
- package/dist/components/ModalCardBase/ModalCardBase.d.ts +14 -14
- package/dist/components/ModalCardBase/ModalCardBase.d.ts.map +1 -1
- package/dist/components/ModalCardBase/ModalCardBase.js.map +1 -1
- package/dist/components/ModalDismissButton/ModalDismissButton.d.ts +1 -1
- package/dist/components/ModalDismissButton/ModalDismissButton.d.ts.map +1 -1
- package/dist/components/ModalDismissButton/ModalDismissButton.js.map +1 -1
- package/dist/components/ModalOutlet/ModalOutlet.d.ts +3 -3
- package/dist/components/ModalOutlet/ModalOutlet.d.ts.map +1 -1
- package/dist/components/ModalOutlet/ModalOutlet.js.map +1 -1
- package/dist/components/ModalOutsideButton/ModalOutsideButton.d.ts +1 -1
- package/dist/components/ModalOutsideButton/ModalOutsideButton.d.ts.map +1 -1
- package/dist/components/ModalOutsideButton/ModalOutsideButton.js.map +1 -1
- package/dist/components/ModalOverlay/ModalOverlay.d.ts +7 -7
- package/dist/components/ModalOverlay/ModalOverlay.d.ts.map +1 -1
- package/dist/components/ModalOverlay/ModalOverlay.js.map +1 -1
- package/dist/components/ModalPage/ModalPageBase.d.ts +2 -2
- package/dist/components/ModalPage/ModalPageBase.d.ts.map +1 -1
- package/dist/components/ModalPage/ModalPageBase.js.map +1 -1
- package/dist/components/ModalPage/ModalPageInternal.d.ts +2 -2
- package/dist/components/ModalPage/ModalPageInternal.d.ts.map +1 -1
- package/dist/components/ModalPage/ModalPageInternal.js.map +1 -1
- package/dist/components/ModalPage/types.d.ts +27 -27
- package/dist/components/ModalPage/types.d.ts.map +1 -1
- package/dist/components/ModalPage/types.js.map +1 -1
- package/dist/components/ModalPageFooter/ModalPageFooter.d.ts +2 -2
- package/dist/components/ModalPageFooter/ModalPageFooter.d.ts.map +1 -1
- package/dist/components/ModalPageFooter/ModalPageFooter.js.map +1 -1
- package/dist/components/ModalPageHeader/ModalPageHeader.d.ts +1 -1
- package/dist/components/ModalPageHeader/ModalPageHeader.d.ts.map +1 -1
- package/dist/components/ModalPageHeader/ModalPageHeader.js.map +1 -1
- package/dist/components/ModalRoot/types.d.ts +15 -15
- package/dist/components/ModalRoot/types.d.ts.map +1 -1
- package/dist/components/ModalRoot/types.js.map +1 -1
- package/dist/components/ModalRoot/useModalRootManager.d.ts +19 -19
- package/dist/components/ModalRoot/useModalRootManager.d.ts.map +1 -1
- package/dist/components/ModalRoot/useModalRootManager.js.map +1 -1
- package/dist/components/NativeSelect/NativeSelect.d.ts +11 -11
- package/dist/components/NativeSelect/NativeSelect.d.ts.map +1 -1
- package/dist/components/NativeSelect/NativeSelect.js.map +1 -1
- package/dist/components/NumberInputLike/NumberInputLike.d.ts +3 -3
- package/dist/components/NumberInputLike/NumberInputLike.d.ts.map +1 -1
- package/dist/components/NumberInputLike/NumberInputLike.js.map +1 -1
- package/dist/components/OnboardingTooltip/OnboardingTooltip.d.ts +6 -6
- package/dist/components/OnboardingTooltip/OnboardingTooltip.d.ts.map +1 -1
- package/dist/components/OnboardingTooltip/OnboardingTooltip.js +12 -3
- package/dist/components/OnboardingTooltip/OnboardingTooltip.js.map +1 -1
- package/dist/components/OnboardingTooltip/OnboardingTooltipContainer.d.ts +1 -1
- package/dist/components/OnboardingTooltip/OnboardingTooltipContainer.d.ts.map +1 -1
- package/dist/components/OnboardingTooltip/OnboardingTooltipContainer.js.map +1 -1
- package/dist/components/Pagination/Pagination.d.ts +19 -19
- package/dist/components/Pagination/Pagination.d.ts.map +1 -1
- package/dist/components/Pagination/Pagination.js +14 -6
- package/dist/components/Pagination/Pagination.js.map +1 -1
- package/dist/components/Pagination/PaginationNavigationButton/PaginationNavigationButton.d.ts +3 -3
- package/dist/components/Pagination/PaginationNavigationButton/PaginationNavigationButton.d.ts.map +1 -1
- package/dist/components/Pagination/PaginationNavigationButton/PaginationNavigationButton.js.map +1 -1
- package/dist/components/Pagination/PaginationPage/PaginationPageButton.d.ts +3 -3
- package/dist/components/Pagination/PaginationPage/PaginationPageButton.d.ts.map +1 -1
- package/dist/components/Pagination/PaginationPage/PaginationPageButton.js.map +1 -1
- package/dist/components/Pagination/PaginationPage/PaginationPageEllipsis.d.ts +1 -1
- package/dist/components/Pagination/PaginationPage/PaginationPageEllipsis.d.ts.map +1 -1
- package/dist/components/Pagination/PaginationPage/PaginationPageEllipsis.js.map +1 -1
- package/dist/components/Pagination/PaginationPage/usePaginationPageClasses.d.ts +3 -3
- package/dist/components/Pagination/PaginationPage/usePaginationPageClasses.d.ts.map +1 -1
- package/dist/components/Pagination/PaginationPage/usePaginationPageClasses.js.map +1 -1
- package/dist/components/Panel/Panel.d.ts +3 -3
- package/dist/components/Panel/Panel.d.ts.map +1 -1
- package/dist/components/Panel/Panel.js.map +1 -1
- package/dist/components/PanelHeader/PanelHeader.d.ts +8 -8
- package/dist/components/PanelHeader/PanelHeader.d.ts.map +1 -1
- package/dist/components/PanelHeader/PanelHeader.js.map +1 -1
- package/dist/components/PanelHeaderBack/PanelHeaderBack.d.ts +2 -2
- package/dist/components/PanelHeaderBack/PanelHeaderBack.d.ts.map +1 -1
- package/dist/components/PanelHeaderBack/PanelHeaderBack.js.map +1 -1
- package/dist/components/PanelHeaderButton/PanelHeaderButton.d.ts +2 -2
- package/dist/components/PanelHeaderButton/PanelHeaderButton.d.ts.map +1 -1
- package/dist/components/PanelHeaderButton/PanelHeaderButton.js.map +1 -1
- package/dist/components/PanelHeaderContent/PanelHeaderContent.d.ts +3 -3
- package/dist/components/PanelHeaderContent/PanelHeaderContent.d.ts.map +1 -1
- package/dist/components/PanelHeaderContent/PanelHeaderContent.js.map +1 -1
- package/dist/components/PanelHeaderEdit/PanelHeaderEdit.d.ts +3 -3
- package/dist/components/PanelHeaderEdit/PanelHeaderEdit.d.ts.map +1 -1
- package/dist/components/PanelHeaderEdit/PanelHeaderEdit.js.map +1 -1
- package/dist/components/PanelSpinner/PanelSpinner.d.ts +1 -1
- package/dist/components/PanelSpinner/PanelSpinner.d.ts.map +1 -1
- package/dist/components/PanelSpinner/PanelSpinner.js.map +1 -1
- package/dist/components/Placeholder/Placeholder.d.ts +5 -5
- package/dist/components/Placeholder/Placeholder.d.ts.map +1 -1
- package/dist/components/Placeholder/Placeholder.js.map +1 -1
- package/dist/components/PopoutWrapper/PopoutWrapper.d.ts +6 -6
- package/dist/components/PopoutWrapper/PopoutWrapper.d.ts.map +1 -1
- package/dist/components/PopoutWrapper/PopoutWrapper.js.map +1 -1
- package/dist/components/Popover/Popover.d.ts +5 -5
- package/dist/components/Popover/Popover.d.ts.map +1 -1
- package/dist/components/Popover/Popover.js.map +1 -1
- package/dist/components/Popper/Popper.d.ts +4 -4
- package/dist/components/Popper/Popper.d.ts.map +1 -1
- package/dist/components/Popper/Popper.js +13 -7
- package/dist/components/Popper/Popper.js.map +1 -1
- package/dist/components/Progress/Progress.d.ts +4 -4
- package/dist/components/Progress/Progress.d.ts.map +1 -1
- package/dist/components/Progress/Progress.js.map +1 -1
- package/dist/components/PullToRefresh/PullToRefresh.d.ts +2 -2
- package/dist/components/PullToRefresh/PullToRefresh.d.ts.map +1 -1
- package/dist/components/PullToRefresh/PullToRefresh.js.map +1 -1
- package/dist/components/PullToRefresh/PullToRefreshSpinner.d.ts +4 -4
- package/dist/components/PullToRefresh/PullToRefreshSpinner.d.ts.map +1 -1
- package/dist/components/PullToRefresh/PullToRefreshSpinner.js.map +1 -1
- package/dist/components/Radio/Radio.d.ts +7 -7
- package/dist/components/Radio/Radio.d.ts.map +1 -1
- package/dist/components/Radio/Radio.js +2 -2
- package/dist/components/Radio/Radio.js.map +1 -1
- package/dist/components/Radio/RadioInput/RadioInput.d.ts +4 -4
- package/dist/components/Radio/RadioInput/RadioInput.d.ts.map +1 -1
- package/dist/components/Radio/RadioInput/RadioInput.js.map +1 -1
- package/dist/components/RadioGroup/RadioGroup.d.ts +1 -1
- package/dist/components/RadioGroup/RadioGroup.d.ts.map +1 -1
- package/dist/components/RadioGroup/RadioGroup.js.map +1 -1
- package/dist/components/Removable/Removable.d.ts +9 -9
- package/dist/components/Removable/Removable.d.ts.map +1 -1
- package/dist/components/Removable/Removable.js.map +1 -1
- package/dist/components/Removable/RemovableIos.d.ts +3 -3
- package/dist/components/Removable/RemovableIos.d.ts.map +1 -1
- package/dist/components/Removable/RemovableIos.js.map +1 -1
- package/dist/components/RichCell/RichCell.d.ts +15 -15
- package/dist/components/RichCell/RichCell.d.ts.map +1 -1
- package/dist/components/RichCell/RichCell.js.map +1 -1
- package/dist/components/Root/Root.d.ts +4 -4
- package/dist/components/Root/Root.d.ts.map +1 -1
- package/dist/components/Root/Root.js.map +1 -1
- package/dist/components/RootComponent/RootComponent.d.ts +2 -2
- package/dist/components/RootComponent/RootComponent.d.ts.map +1 -1
- package/dist/components/RootComponent/RootComponent.js.map +1 -1
- package/dist/components/ScreenSpinner/ScreenSpinnerSwapIcon.d.ts +1 -1
- package/dist/components/ScreenSpinner/ScreenSpinnerSwapIcon.d.ts.map +1 -1
- package/dist/components/ScreenSpinner/ScreenSpinnerSwapIcon.js.map +1 -1
- package/dist/components/ScreenSpinner/context.d.ts +2 -2
- package/dist/components/ScreenSpinner/context.d.ts.map +1 -1
- package/dist/components/ScreenSpinner/context.js.map +1 -1
- package/dist/components/ScreenSpinner/types.d.ts +5 -5
- package/dist/components/ScreenSpinner/types.d.ts.map +1 -1
- package/dist/components/ScreenSpinner/types.js.map +1 -1
- package/dist/components/ScrollArrow/ScrollArrow.d.ts +10 -4
- package/dist/components/ScrollArrow/ScrollArrow.d.ts.map +1 -1
- package/dist/components/ScrollArrow/ScrollArrow.js +14 -4
- package/dist/components/ScrollArrow/ScrollArrow.js.map +1 -1
- package/dist/components/Search/Search.d.ts +17 -17
- package/dist/components/Search/Search.d.ts.map +1 -1
- package/dist/components/Search/Search.js.map +1 -1
- package/dist/components/SegmentedControl/SegmentedControl.d.ts +6 -6
- package/dist/components/SegmentedControl/SegmentedControl.d.ts.map +1 -1
- package/dist/components/SegmentedControl/SegmentedControl.js.map +1 -1
- package/dist/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.d.ts +3 -3
- package/dist/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.d.ts.map +1 -1
- package/dist/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.js.map +1 -1
- package/dist/components/SelectMimicry/SelectMimicry.d.ts +3 -3
- package/dist/components/SelectMimicry/SelectMimicry.d.ts.map +1 -1
- package/dist/components/SelectMimicry/SelectMimicry.js.map +1 -1
- package/dist/components/SelectTypography/SelectTypography.d.ts +1 -1
- package/dist/components/SelectTypography/SelectTypography.d.ts.map +1 -1
- package/dist/components/SelectTypography/SelectTypography.js.map +1 -1
- package/dist/components/SelectionControl/SelectionControl.d.ts +1 -1
- package/dist/components/SelectionControl/SelectionControl.d.ts.map +1 -1
- package/dist/components/SelectionControl/SelectionControl.js.map +1 -1
- package/dist/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.d.ts +2 -2
- package/dist/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.d.ts.map +1 -1
- package/dist/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.js.map +1 -1
- package/dist/components/Separator/Separator.d.ts +5 -5
- package/dist/components/Separator/Separator.d.ts.map +1 -1
- package/dist/components/Separator/Separator.js.map +1 -1
- package/dist/components/SimpleCell/Chevron/Chevron.d.ts +1 -1
- package/dist/components/SimpleCell/Chevron/Chevron.d.ts.map +1 -1
- package/dist/components/SimpleCell/Chevron/Chevron.js.map +1 -1
- package/dist/components/SimpleCell/SimpleCell.d.ts +14 -14
- package/dist/components/SimpleCell/SimpleCell.d.ts.map +1 -1
- package/dist/components/SimpleCell/SimpleCell.js.map +1 -1
- package/dist/components/SimpleGrid/SimpleGrid.d.ts +6 -6
- package/dist/components/SimpleGrid/SimpleGrid.d.ts.map +1 -1
- package/dist/components/SimpleGrid/SimpleGrid.js.map +1 -1
- package/dist/components/Skeleton/Skeleton.d.ts +5 -5
- package/dist/components/Skeleton/Skeleton.d.ts.map +1 -1
- package/dist/components/Skeleton/Skeleton.js.map +1 -1
- package/dist/components/Slider/Slider.d.ts +17 -17
- package/dist/components/Slider/Slider.d.ts.map +1 -1
- package/dist/components/Slider/Slider.js.map +1 -1
- package/dist/components/Slider/SliderThumb/SliderThumb.d.ts +5 -5
- package/dist/components/Slider/SliderThumb/SliderThumb.d.ts.map +1 -1
- package/dist/components/Slider/SliderThumb/SliderThumb.js.map +1 -1
- package/dist/components/Snackbar/Snackbar.d.ts +10 -10
- package/dist/components/Snackbar/Snackbar.d.ts.map +1 -1
- package/dist/components/Snackbar/Snackbar.js.map +1 -1
- package/dist/components/Snackbar/subcomponents/Basic/Basic.d.ts +6 -6
- package/dist/components/Snackbar/subcomponents/Basic/Basic.d.ts.map +1 -1
- package/dist/components/Snackbar/subcomponents/Basic/Basic.js.map +1 -1
- package/dist/components/Snackbar/utils.d.ts +1 -1
- package/dist/components/Snackbar/utils.d.ts.map +1 -1
- package/dist/components/Snackbar/utils.js.map +1 -1
- package/dist/components/Spacing/Spacing.d.ts +2 -2
- package/dist/components/Spacing/Spacing.d.ts.map +1 -1
- package/dist/components/Spacing/Spacing.js.map +1 -1
- package/dist/components/Spinner/Spinner.d.ts +4 -4
- package/dist/components/Spinner/Spinner.d.ts.map +1 -1
- package/dist/components/Spinner/Spinner.js.map +1 -1
- package/dist/components/SplitCol/SplitCol.d.ts +7 -7
- package/dist/components/SplitCol/SplitCol.d.ts.map +1 -1
- package/dist/components/SplitCol/SplitCol.js.map +1 -1
- package/dist/components/SplitLayout/SplitLayout.d.ts +8 -8
- package/dist/components/SplitLayout/SplitLayout.d.ts.map +1 -1
- package/dist/components/SplitLayout/SplitLayout.js.map +1 -1
- package/dist/components/SubnavigationBar/SubnavigationBar.d.ts +2 -2
- package/dist/components/SubnavigationBar/SubnavigationBar.d.ts.map +1 -1
- package/dist/components/SubnavigationBar/SubnavigationBar.js.map +1 -1
- package/dist/components/SubnavigationButton/SubnavigationButton.d.ts +8 -8
- package/dist/components/SubnavigationButton/SubnavigationButton.d.ts.map +1 -1
- package/dist/components/SubnavigationButton/SubnavigationButton.js.map +1 -1
- package/dist/components/Switch/Switch.d.ts +4 -4
- package/dist/components/Switch/Switch.d.ts.map +1 -1
- package/dist/components/Switch/Switch.js.map +1 -1
- package/dist/components/Tabbar/Tabbar.d.ts +2 -2
- package/dist/components/Tabbar/Tabbar.d.ts.map +1 -1
- package/dist/components/Tabbar/Tabbar.js.map +1 -1
- package/dist/components/TabbarItem/TabbarItem.d.ts +3 -3
- package/dist/components/TabbarItem/TabbarItem.d.ts.map +1 -1
- package/dist/components/TabbarItem/TabbarItem.js.map +1 -1
- package/dist/components/Tabs/Tabs.d.ts +7 -7
- package/dist/components/Tabs/Tabs.d.ts.map +1 -1
- package/dist/components/Tabs/Tabs.js.map +1 -1
- package/dist/components/Tabs/TabsModeContext.d.ts +1 -1
- package/dist/components/Tabs/TabsModeContext.d.ts.map +1 -1
- package/dist/components/Tabs/TabsModeContext.js.map +1 -1
- package/dist/components/TabsItem/TabsItem.d.ts +5 -5
- package/dist/components/TabsItem/TabsItem.d.ts.map +1 -1
- package/dist/components/TabsItem/TabsItem.js.map +1 -1
- package/dist/components/Tappable/Tappable.d.ts +3 -3
- package/dist/components/Tappable/Tappable.d.ts.map +1 -1
- package/dist/components/Tappable/Tappable.js.map +1 -1
- package/dist/components/Tappable/state.d.ts +2 -2
- package/dist/components/Tappable/state.d.ts.map +1 -1
- package/dist/components/Tappable/state.js.map +1 -1
- package/dist/components/Textarea/Textarea.d.ts +6 -6
- package/dist/components/Textarea/Textarea.d.ts.map +1 -1
- package/dist/components/Textarea/Textarea.js.map +1 -1
- package/dist/components/ToolButton/ToolButton.d.ts +4 -4
- package/dist/components/ToolButton/ToolButton.d.ts.map +1 -1
- package/dist/components/ToolButton/ToolButton.js.map +1 -1
- package/dist/components/Tooltip/Tooltip.d.ts +6 -6
- package/dist/components/Tooltip/Tooltip.d.ts.map +1 -1
- package/dist/components/Tooltip/Tooltip.js.map +1 -1
- package/dist/components/TooltipBase/TooltipBase.d.ts +10 -10
- package/dist/components/TooltipBase/TooltipBase.d.ts.map +1 -1
- package/dist/components/TooltipBase/TooltipBase.js.map +1 -1
- package/dist/components/Touch/Touch.d.ts +16 -16
- package/dist/components/Touch/Touch.d.ts.map +1 -1
- package/dist/components/Touch/Touch.js.map +1 -1
- package/dist/components/Typography/Caption/Caption.d.ts +1 -1
- package/dist/components/Typography/Caption/Caption.d.ts.map +1 -1
- package/dist/components/Typography/Caption/Caption.js.map +1 -1
- package/dist/components/Typography/DisplayTitle/DisplayTitle.d.ts +1 -1
- package/dist/components/Typography/DisplayTitle/DisplayTitle.d.ts.map +1 -1
- package/dist/components/Typography/DisplayTitle/DisplayTitle.js.map +1 -1
- package/dist/components/Typography/EllipsisText/EllipsisText.d.ts +3 -3
- package/dist/components/Typography/EllipsisText/EllipsisText.d.ts.map +1 -1
- package/dist/components/Typography/EllipsisText/EllipsisText.js.map +1 -1
- package/dist/components/Typography/Headline/Headline.d.ts +1 -1
- package/dist/components/Typography/Headline/Headline.d.ts.map +1 -1
- package/dist/components/Typography/Headline/Headline.js.map +1 -1
- package/dist/components/Typography/Title/Title.d.ts +1 -1
- package/dist/components/Typography/Title/Title.d.ts.map +1 -1
- package/dist/components/Typography/Title/Title.js.map +1 -1
- package/dist/components/Typography/Typography.d.ts +6 -6
- package/dist/components/Typography/Typography.d.ts.map +1 -1
- package/dist/components/Typography/Typography.js.map +1 -1
- package/dist/components/UnstyledTextField/UnstyledTextField.d.ts +1 -1
- package/dist/components/UnstyledTextField/UnstyledTextField.d.ts.map +1 -1
- package/dist/components/UnstyledTextField/UnstyledTextField.js.map +1 -1
- package/dist/components/UsersStack/UsersStack.d.ts +6 -6
- package/dist/components/UsersStack/UsersStack.d.ts.map +1 -1
- package/dist/components/UsersStack/UsersStack.js.map +1 -1
- package/dist/components/View/View.d.ts +4 -4
- package/dist/components/View/View.d.ts.map +1 -1
- package/dist/components/View/View.js.map +1 -1
- package/dist/components/View/ViewInfinite.d.ts +12 -12
- package/dist/components/View/ViewInfinite.d.ts.map +1 -1
- package/dist/components/View/ViewInfinite.js.map +1 -1
- package/dist/components/WriteBar/WriteBar.d.ts +10 -10
- package/dist/components/WriteBar/WriteBar.d.ts.map +1 -1
- package/dist/components/WriteBar/WriteBar.js.map +1 -1
- package/dist/components/WriteBarIcon/WriteBarIcon.d.ts +3 -3
- package/dist/components/WriteBarIcon/WriteBarIcon.d.ts.map +1 -1
- package/dist/components/WriteBarIcon/WriteBarIcon.js.map +1 -1
- package/dist/components.css +1 -1
- package/dist/components.css.map +1 -1
- package/dist/cssm/components/Accordion/Accordion.js +3 -0
- package/dist/cssm/components/Accordion/Accordion.js.map +1 -1
- package/dist/cssm/components/Accordion/AccordionIcon.js +17 -0
- package/dist/cssm/components/Accordion/AccordionIcon.js.map +1 -0
- package/dist/cssm/components/Accordion/AccordionSummary.js +4 -7
- package/dist/cssm/components/Accordion/AccordionSummary.js.map +1 -1
- package/dist/cssm/components/ActionSheet/ActionSheet.js.map +1 -1
- package/dist/cssm/components/ActionSheet/ActionSheetContext.js.map +1 -1
- package/dist/cssm/components/ActionSheet/types.js.map +1 -1
- package/dist/cssm/components/ActionSheetItem/ActionSheetItem.js.map +1 -1
- package/dist/cssm/components/ActionSheetItem/ActionSheetItem.module.css +0 -1
- package/dist/cssm/components/ActionSheetItem/subcomponents/Radio/Radio.js.map +1 -1
- package/dist/cssm/components/AdaptivityProvider/AdaptivityContext.js.map +1 -1
- package/dist/cssm/components/Alert/Alert.js.map +1 -1
- package/dist/cssm/components/Alert/AlertBase.js.map +1 -1
- package/dist/cssm/components/Alert/AlertTypography.js.map +1 -1
- package/dist/cssm/components/AppRoot/AppRoot.js.map +1 -1
- package/dist/cssm/components/AppRoot/AppRootContext.js.map +1 -1
- package/dist/cssm/components/AppRoot/AppRootPortal.js.map +1 -1
- package/dist/cssm/components/AppRoot/ScrollContext.js.map +1 -1
- package/dist/cssm/components/AppRoot/types.js.map +1 -1
- package/dist/cssm/components/AspectRatio/AspectRatio.js.map +1 -1
- package/dist/cssm/components/Avatar/Avatar.js.map +1 -1
- package/dist/cssm/components/Avatar/Avatar.module.css +0 -5
- package/dist/cssm/components/Avatar/AvatarBadge/AvatarBadgeWithPreset.js.map +1 -1
- package/dist/cssm/components/Badge/Badge.js.map +1 -1
- package/dist/cssm/components/Banner/Banner.js.map +1 -1
- package/dist/cssm/components/Box/Box.js.map +1 -1
- package/dist/cssm/components/Button/Button.js +1 -1
- package/dist/cssm/components/Button/Button.js.map +1 -1
- package/dist/cssm/components/ButtonGroup/ButtonGroup.js.map +1 -1
- package/dist/cssm/components/Calendar/Calendar.js.map +1 -1
- package/dist/cssm/components/CalendarDay/CalendarDay.js.map +1 -1
- package/dist/cssm/components/CalendarDays/CalendarDays.js.map +1 -1
- package/dist/cssm/components/CalendarHeader/CalendarHeader.js.map +1 -1
- package/dist/cssm/components/CalendarRange/CalendarRange.js.map +1 -1
- package/dist/cssm/components/CalendarTime/CalendarTime.js.map +1 -1
- package/dist/cssm/components/CalendarTime/CalendarTimePicker.js.map +1 -1
- package/dist/cssm/components/Card/Card.js.map +1 -1
- package/dist/cssm/components/CardGrid/CardGrid.js.map +1 -1
- package/dist/cssm/components/CardScroll/CardScroll.js.map +1 -1
- package/dist/cssm/components/CarouselBase/Bullets.js.map +1 -1
- package/dist/cssm/components/CarouselBase/CarouselViewPort.js.map +1 -1
- package/dist/cssm/components/CarouselBase/ScrollArrows.js.map +1 -1
- package/dist/cssm/components/CarouselBase/helpers.js.map +1 -1
- package/dist/cssm/components/CarouselBase/types.js.map +1 -1
- package/dist/cssm/components/Cell/Cell.js.map +1 -1
- package/dist/cssm/components/Cell/CellCheckbox/CellCheckbox.js.map +1 -1
- package/dist/cssm/components/Cell/CellDragger/CellDragger.js.map +1 -1
- package/dist/cssm/components/CellButton/CellButton.js.map +1 -1
- package/dist/cssm/components/Checkbox/Checkbox.js.map +1 -1
- package/dist/cssm/components/Checkbox/CheckboxInput/CheckboxInput.js.map +1 -1
- package/dist/cssm/components/ChipsInput/ChipsInput.js.map +1 -1
- package/dist/cssm/components/ChipsInput/useChipsInput.js.map +1 -1
- package/dist/cssm/components/ChipsInputBase/Chip/Chip.js.map +1 -1
- package/dist/cssm/components/ChipsInputBase/types.js.map +1 -1
- package/dist/cssm/components/ChipsSelect/ChipsSelect.js.map +1 -1
- package/dist/cssm/components/ChipsSelect/useChipsSelect.js.map +1 -1
- package/dist/cssm/components/Clickable/Clickable.js.map +1 -1
- package/dist/cssm/components/Clickable/useState.js.map +1 -1
- package/dist/cssm/components/ConfigProvider/ConfigProvider.js.map +1 -1
- package/dist/cssm/components/ContentBadge/ContentBadge.js.map +1 -1
- package/dist/cssm/components/ContentCard/ContentCard.js.map +1 -1
- package/dist/cssm/components/Counter/Counter.js.map +1 -1
- package/dist/cssm/components/CustomScrollView/CustomScrollView.js.map +1 -1
- package/dist/cssm/components/CustomSelect/CustomSelect.js +2 -2
- package/dist/cssm/components/CustomSelect/CustomSelect.js.map +1 -1
- package/dist/cssm/components/CustomSelect/CustomSelect.module.css +0 -6
- package/dist/cssm/components/CustomSelect/CustomSelectClearButton.js.map +1 -1
- package/dist/cssm/components/CustomSelect/CustomSelectInput/CustomSelectInput.js.map +1 -1
- package/dist/cssm/components/CustomSelect/hooks/useDropdownOpenedController.js.map +1 -1
- package/dist/cssm/components/CustomSelect/hooks/useSelectedOptionController.js.map +1 -1
- package/dist/cssm/components/CustomSelect/types.js.map +1 -1
- package/dist/cssm/components/CustomSelectDropdown/CustomSelectDropdown.js.map +1 -1
- package/dist/cssm/components/CustomSelectOption/CustomSelectOption.js.map +1 -1
- package/dist/cssm/components/DateInput/DateInput.js +3 -12
- package/dist/cssm/components/DateInput/DateInput.js.map +1 -1
- package/dist/cssm/components/DateInput/hooks.js.map +1 -1
- package/dist/cssm/components/DateRangeInput/DateRangeInput.js +2 -11
- package/dist/cssm/components/DateRangeInput/DateRangeInput.js.map +1 -1
- package/dist/cssm/components/DropZone/DropZone.js +1 -1
- package/dist/cssm/components/DropZone/DropZone.js.map +1 -1
- package/dist/cssm/components/DropZone/DropZoneGrid/DropZoneGrid.js.map +1 -0
- package/dist/cssm/components/DropdownIcon/DropdownIcon.js.map +1 -1
- package/dist/cssm/components/Epic/Epic.js.map +1 -1
- package/dist/cssm/components/Epic/ScrollSaver.js.map +1 -1
- package/dist/cssm/components/File/File.js.map +1 -1
- package/dist/cssm/components/FixedLayout/FixedLayout.js.map +1 -1
- package/dist/cssm/components/Flex/Flex.js.map +1 -1
- package/dist/cssm/components/Flex/FlexItem/FlexItem.js.map +1 -1
- package/dist/cssm/components/FloatingArrow/FloatingArrow.js.map +1 -1
- package/dist/cssm/components/FocusTrap/FocusTrap.js +2 -4
- package/dist/cssm/components/FocusTrap/FocusTrap.js.map +1 -1
- package/dist/cssm/components/FormField/FormField.js.map +1 -1
- package/dist/cssm/components/FormFieldClearButton/FormFieldClearButton.js.map +1 -1
- package/dist/cssm/components/FormItem/FormItem.js.map +1 -1
- package/dist/cssm/components/FormItem/FormItem.module.css +1 -2
- package/dist/cssm/components/FormItem/context.js.map +1 -1
- package/dist/cssm/components/FormLayoutGroup/FormLayoutGroup.js.map +1 -1
- package/dist/cssm/components/FormStatus/FormStatus.js.map +1 -1
- package/dist/cssm/components/Gallery/Gallery.js.map +1 -1
- package/dist/cssm/components/Gradient/Gradient.js.map +1 -1
- package/dist/cssm/components/GridAvatar/GridAvatar.js.map +1 -1
- package/dist/cssm/components/Group/Group.js.map +1 -1
- package/dist/cssm/components/Group/GroupContainer.js.map +1 -1
- package/dist/cssm/components/Group/GroupExpandedContent.js.map +1 -1
- package/dist/cssm/components/Header/Header.js.map +1 -1
- package/dist/cssm/components/HorizontalCell/HorizontalCell.js.map +1 -1
- package/dist/cssm/components/HorizontalScroll/HorizontalCellShowMore/HorizontalCellShowMore.js.map +1 -1
- package/dist/cssm/components/HorizontalScroll/HorizontalScroll.js +20 -6
- package/dist/cssm/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
- package/dist/cssm/components/IconButton/IconButton.js.map +1 -1
- package/dist/cssm/components/Image/Image.js.map +1 -1
- package/dist/cssm/components/ImageBase/ImageBase.js +9 -5
- package/dist/cssm/components/ImageBase/ImageBase.js.map +1 -1
- package/dist/cssm/components/ImageBase/ImageBase.module.css +11 -3
- package/dist/cssm/components/ImageBase/ImageBaseBadge/ImageBaseBadge.js.map +1 -1
- package/dist/cssm/components/ImageBase/ImageBaseFloatElement/ImageBaseFloatElement.js.map +1 -1
- package/dist/cssm/components/ImageBase/ImageBaseOverlay/types.js.map +1 -1
- package/dist/cssm/components/ImageBase/types.js.map +1 -1
- package/dist/cssm/components/Input/Input.js.map +1 -1
- package/dist/cssm/components/InputLike/InputLike.js.map +1 -1
- package/dist/cssm/components/Link/Link.js.map +1 -1
- package/dist/cssm/components/List/List.js.map +1 -1
- package/dist/cssm/components/MiniInfoCell/MiniInfoCell.js.map +1 -1
- package/dist/cssm/components/ModalCard/ModalCardInternal.js.map +1 -1
- package/dist/cssm/components/ModalCard/types.js.map +1 -1
- package/dist/cssm/components/ModalCardBase/ModalCardBase.js.map +1 -1
- package/dist/cssm/components/ModalCardBase/ModalCardBase.module.css +0 -4
- package/dist/cssm/components/ModalDismissButton/ModalDismissButton.js.map +1 -1
- package/dist/cssm/components/ModalOutlet/ModalOutlet.js.map +1 -1
- package/dist/cssm/components/ModalOutsideButton/ModalOutsideButton.js.map +1 -1
- package/dist/cssm/components/ModalOverlay/ModalOverlay.js.map +1 -1
- package/dist/cssm/components/ModalPage/ModalPageBase.js.map +1 -1
- package/dist/cssm/components/ModalPage/ModalPageInternal.js.map +1 -1
- package/dist/cssm/components/ModalPage/types.js.map +1 -1
- package/dist/cssm/components/ModalPageFooter/ModalPageFooter.js.map +1 -1
- package/dist/cssm/components/ModalPageHeader/ModalPageHeader.js.map +1 -1
- package/dist/cssm/components/ModalRoot/types.js.map +1 -1
- package/dist/cssm/components/ModalRoot/useModalRootManager.js.map +1 -1
- package/dist/cssm/components/NativeSelect/NativeSelect.js.map +1 -1
- package/dist/cssm/components/NumberInputLike/NumberInputLike.js.map +1 -1
- package/dist/cssm/components/OnboardingTooltip/OnboardingTooltip.js +12 -3
- package/dist/cssm/components/OnboardingTooltip/OnboardingTooltip.js.map +1 -1
- package/dist/cssm/components/OnboardingTooltip/OnboardingTooltipContainer.js.map +1 -1
- package/dist/cssm/components/Pagination/Pagination.js +14 -6
- package/dist/cssm/components/Pagination/Pagination.js.map +1 -1
- package/dist/cssm/components/Pagination/PaginationNavigationButton/PaginationNavigationButton.js.map +1 -1
- package/dist/cssm/components/Pagination/PaginationPage/PaginationPageButton.js.map +1 -1
- package/dist/cssm/components/Pagination/PaginationPage/PaginationPageEllipsis.js.map +1 -1
- package/dist/cssm/components/Pagination/PaginationPage/usePaginationPageClasses.js.map +1 -1
- package/dist/cssm/components/Panel/Panel.js.map +1 -1
- package/dist/cssm/components/PanelHeader/PanelHeader.js.map +1 -1
- package/dist/cssm/components/PanelHeader/PanelHeader.module.css +0 -5
- package/dist/cssm/components/PanelHeaderBack/PanelHeaderBack.js.map +1 -1
- package/dist/cssm/components/PanelHeaderButton/PanelHeaderButton.js.map +1 -1
- package/dist/cssm/components/PanelHeaderContent/PanelHeaderContent.js.map +1 -1
- package/dist/cssm/components/PanelHeaderEdit/PanelHeaderEdit.js.map +1 -1
- package/dist/cssm/components/PanelSpinner/PanelSpinner.js.map +1 -1
- package/dist/cssm/components/Placeholder/Placeholder.js.map +1 -1
- package/dist/cssm/components/PopoutWrapper/PopoutWrapper.js.map +1 -1
- package/dist/cssm/components/Popover/Popover.js.map +1 -1
- package/dist/cssm/components/Popper/Popper.js +13 -7
- package/dist/cssm/components/Popper/Popper.js.map +1 -1
- package/dist/cssm/components/Progress/Progress.js.map +1 -1
- package/dist/cssm/components/PullToRefresh/PullToRefresh.js.map +1 -1
- package/dist/cssm/components/PullToRefresh/PullToRefreshSpinner.js.map +1 -1
- package/dist/cssm/components/Radio/Radio.js +2 -2
- package/dist/cssm/components/Radio/Radio.js.map +1 -1
- package/dist/cssm/components/Radio/RadioInput/RadioInput.js.map +1 -1
- package/dist/cssm/components/RadioGroup/RadioGroup.js.map +1 -1
- package/dist/cssm/components/Removable/Removable.js.map +1 -1
- package/dist/cssm/components/Removable/Removable.module.css +0 -4
- package/dist/cssm/components/Removable/RemovableIos.js.map +1 -1
- package/dist/cssm/components/RichCell/RichCell.js.map +1 -1
- package/dist/cssm/components/Root/Root.js.map +1 -1
- package/dist/cssm/components/RootComponent/RootComponent.js.map +1 -1
- package/dist/cssm/components/ScreenSpinner/ScreenSpinnerSwapIcon.js.map +1 -1
- package/dist/cssm/components/ScreenSpinner/context.js.map +1 -1
- package/dist/cssm/components/ScreenSpinner/types.js.map +1 -1
- package/dist/cssm/components/ScrollArrow/ScrollArrow.js +14 -4
- package/dist/cssm/components/ScrollArrow/ScrollArrow.js.map +1 -1
- package/dist/cssm/components/Search/Search.js.map +1 -1
- package/dist/cssm/components/SegmentedControl/SegmentedControl.js.map +1 -1
- package/dist/cssm/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.js.map +1 -1
- package/dist/cssm/components/SelectMimicry/SelectMimicry.js.map +1 -1
- package/dist/cssm/components/SelectTypography/SelectTypography.js.map +1 -1
- package/dist/cssm/components/SelectionControl/SelectionControl.js.map +1 -1
- package/dist/cssm/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.js.map +1 -1
- package/dist/cssm/components/Separator/Separator.js.map +1 -1
- package/dist/cssm/components/SimpleCell/Chevron/Chevron.js.map +1 -1
- package/dist/cssm/components/SimpleCell/SimpleCell.js.map +1 -1
- package/dist/cssm/components/SimpleGrid/SimpleGrid.js.map +1 -1
- package/dist/cssm/components/Skeleton/Skeleton.js.map +1 -1
- package/dist/cssm/components/Slider/Slider.js.map +1 -1
- package/dist/cssm/components/Slider/SliderThumb/SliderThumb.js.map +1 -1
- package/dist/cssm/components/Snackbar/Snackbar.js.map +1 -1
- package/dist/cssm/components/Snackbar/subcomponents/Basic/Basic.js.map +1 -1
- package/dist/cssm/components/Snackbar/subcomponents/Basic/Basic.module.css +2 -4
- package/dist/cssm/components/Snackbar/utils.js.map +1 -1
- package/dist/cssm/components/Spacing/Spacing.js.map +1 -1
- package/dist/cssm/components/Spinner/Spinner.js.map +1 -1
- package/dist/cssm/components/SplitCol/SplitCol.js.map +1 -1
- package/dist/cssm/components/SplitLayout/SplitLayout.js.map +1 -1
- package/dist/cssm/components/SubnavigationBar/SubnavigationBar.js.map +1 -1
- package/dist/cssm/components/SubnavigationButton/SubnavigationButton.js.map +1 -1
- package/dist/cssm/components/Switch/Switch.js.map +1 -1
- package/dist/cssm/components/Tabbar/Tabbar.js.map +1 -1
- package/dist/cssm/components/TabbarItem/TabbarItem.js.map +1 -1
- package/dist/cssm/components/Tabs/Tabs.js.map +1 -1
- package/dist/cssm/components/Tabs/TabsModeContext.js.map +1 -1
- package/dist/cssm/components/TabsItem/TabsItem.js.map +1 -1
- package/dist/cssm/components/Tappable/Tappable.js.map +1 -1
- package/dist/cssm/components/Tappable/state.js.map +1 -1
- package/dist/cssm/components/Textarea/Textarea.js.map +1 -1
- package/dist/cssm/components/ToolButton/ToolButton.js.map +1 -1
- package/dist/cssm/components/Tooltip/Tooltip.js.map +1 -1
- package/dist/cssm/components/TooltipBase/TooltipBase.js.map +1 -1
- package/dist/cssm/components/Touch/Touch.js.map +1 -1
- package/dist/cssm/components/Typography/Caption/Caption.js.map +1 -1
- package/dist/cssm/components/Typography/DisplayTitle/DisplayTitle.js.map +1 -1
- package/dist/cssm/components/Typography/EllipsisText/EllipsisText.js.map +1 -1
- package/dist/cssm/components/Typography/Headline/Headline.js.map +1 -1
- package/dist/cssm/components/Typography/Title/Title.js.map +1 -1
- package/dist/cssm/components/Typography/Typography.js.map +1 -1
- package/dist/cssm/components/UnstyledTextField/UnstyledTextField.js.map +1 -1
- package/dist/cssm/components/UsersStack/UsersStack.js.map +1 -1
- package/dist/cssm/components/View/View.js.map +1 -1
- package/dist/cssm/components/View/View.module.css +1 -3
- package/dist/cssm/components/View/ViewInfinite.js.map +1 -1
- package/dist/cssm/components/WriteBar/WriteBar.js.map +1 -1
- package/dist/cssm/components/WriteBarIcon/WriteBarIcon.js.map +1 -1
- package/dist/cssm/helpers/math.js.map +1 -1
- package/dist/cssm/hooks/useAdaptivityWithJSMediaQueries.js.map +1 -1
- package/dist/cssm/hooks/useAutoDetectColorScheme.js +8 -27
- package/dist/cssm/hooks/useAutoDetectColorScheme.js.map +1 -1
- package/dist/cssm/hooks/useCalendar.js.map +1 -1
- package/dist/cssm/hooks/useDateInput.js.map +1 -1
- package/dist/cssm/hooks/useDraggableWithDomApi/types.js.map +1 -1
- package/dist/cssm/hooks/useEnsuredControl.js.map +1 -1
- package/dist/cssm/hooks/useFloatingElement.js.map +1 -1
- package/dist/cssm/hooks/useFocusTrap/FocusGuard.js.map +1 -1
- package/dist/cssm/hooks/useFocusTrap/useFocusTrap.js +10 -2
- package/dist/cssm/hooks/useFocusTrap/useFocusTrap.js.map +1 -1
- package/dist/cssm/hooks/useFocusVisibleClassName.js.map +1 -1
- package/dist/cssm/hooks/useGlobalEscKeyDown.js.map +1 -1
- package/dist/cssm/hooks/useMediaQueryMatch.js +25 -0
- package/dist/cssm/hooks/useMediaQueryMatch.js.map +1 -0
- package/dist/cssm/hooks/useMergeProps.js.map +1 -1
- package/dist/cssm/hooks/useModalManager/types.js.map +1 -1
- package/dist/cssm/hooks/usePagination.js.map +1 -1
- package/dist/cssm/hooks/usePatchChildren.js.map +1 -1
- package/dist/cssm/hooks/useSnackbarManager/components/{SnackbarAnimatedWrapper.js → SnackbarAnimatedWrapper/SnackbarAnimatedWrapper.js} +2 -2
- package/dist/cssm/hooks/useSnackbarManager/components/SnackbarAnimatedWrapper/SnackbarAnimatedWrapper.js.map +1 -0
- package/dist/cssm/hooks/useSnackbarManager/components/SnackbarHolder.js +5 -2
- package/dist/cssm/hooks/useSnackbarManager/components/SnackbarHolder.js.map +1 -1
- package/dist/cssm/hooks/useSnackbarManager/components/{SnackbarsContainer.js → SnackbarsContainer/SnackbarsContainer.js} +3 -3
- package/dist/cssm/hooks/useSnackbarManager/components/SnackbarsContainer/SnackbarsContainer.js.map +1 -0
- package/dist/cssm/hooks/useSnackbarManager/types.js.map +1 -1
- package/dist/cssm/hooks/useSyncHTMLWithBaseVKUIClasses.js.map +1 -1
- package/dist/cssm/index.js +1 -1
- package/dist/cssm/index.js.map +1 -1
- package/dist/cssm/lib/SSR.js.map +1 -1
- package/dist/cssm/lib/accessibility.js.map +1 -1
- package/dist/cssm/lib/adaptivity/functions.js +6 -0
- package/dist/cssm/lib/adaptivity/functions.js.map +1 -1
- package/dist/cssm/lib/animation/useCSSKeyframesAnimationController.js.map +1 -1
- package/dist/cssm/lib/animation/useCSSTransition.js +4 -2
- package/dist/cssm/lib/animation/useCSSTransition.js.map +1 -1
- package/dist/cssm/lib/animation/useReducedMotion.js +2 -20
- package/dist/cssm/lib/animation/useReducedMotion.js.map +1 -1
- package/dist/cssm/lib/calendar.js.map +1 -1
- package/dist/cssm/lib/date.js.map +1 -1
- package/dist/cssm/lib/dom.js.map +1 -1
- package/dist/cssm/lib/floating/functions.js.map +1 -1
- package/dist/cssm/lib/floating/types/component.js.map +1 -1
- package/dist/cssm/lib/floating/useFloatingMiddlewaresBootstrap/index.js +6 -4
- package/dist/cssm/lib/floating/useFloatingMiddlewaresBootstrap/index.js.map +1 -1
- package/dist/cssm/lib/floating/useFloatingWithInteractions/types.js.map +1 -1
- package/dist/cssm/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.js +6 -2
- package/dist/cssm/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.js.map +1 -1
- package/dist/cssm/lib/getNavId.js.map +1 -1
- package/dist/cssm/lib/layouts/resolveLayoutProps.js.map +1 -1
- package/dist/cssm/lib/layouts/types.js.map +1 -1
- package/dist/cssm/lib/select.js.map +1 -1
- package/dist/cssm/lib/sheet/useBottomSheet.js.map +1 -1
- package/dist/cssm/lib/tokens/TokensClassProvider.js.map +1 -1
- package/dist/cssm/lib/tokens/types.js.map +1 -1
- package/dist/cssm/lib/utils.js +3 -0
- package/dist/cssm/lib/utils.js.map +1 -1
- package/dist/cssm/types.js +4 -1
- package/dist/cssm/types.js.map +1 -1
- package/dist/helpers/math.d.ts +1 -1
- package/dist/helpers/math.d.ts.map +1 -1
- package/dist/helpers/math.js.map +1 -1
- package/dist/hooks/useAdaptivityWithJSMediaQueries.d.ts +5 -1
- package/dist/hooks/useAdaptivityWithJSMediaQueries.d.ts.map +1 -1
- package/dist/hooks/useAdaptivityWithJSMediaQueries.js.map +1 -1
- package/dist/hooks/useAutoDetectColorScheme.d.ts.map +1 -1
- package/dist/hooks/useAutoDetectColorScheme.js +8 -27
- package/dist/hooks/useAutoDetectColorScheme.js.map +1 -1
- package/dist/hooks/useCalendar.d.ts +1 -1
- package/dist/hooks/useCalendar.d.ts.map +1 -1
- package/dist/hooks/useCalendar.js.map +1 -1
- package/dist/hooks/useDateInput.d.ts +5 -5
- package/dist/hooks/useDateInput.d.ts.map +1 -1
- package/dist/hooks/useDateInput.js.map +1 -1
- package/dist/hooks/useDraggableWithDomApi/types.d.ts +1 -1
- package/dist/hooks/useDraggableWithDomApi/types.d.ts.map +1 -1
- package/dist/hooks/useDraggableWithDomApi/types.js.map +1 -1
- package/dist/hooks/useEnsuredControl.d.ts +4 -4
- package/dist/hooks/useEnsuredControl.d.ts.map +1 -1
- package/dist/hooks/useEnsuredControl.js.map +1 -1
- package/dist/hooks/useFloatingElement.d.ts +4 -4
- package/dist/hooks/useFloatingElement.d.ts.map +1 -1
- package/dist/hooks/useFloatingElement.js.map +1 -1
- package/dist/hooks/useFocusTrap/FocusGuard.d.ts +1 -1
- package/dist/hooks/useFocusTrap/FocusGuard.d.ts.map +1 -1
- package/dist/hooks/useFocusTrap/FocusGuard.js.map +1 -1
- package/dist/hooks/useFocusTrap/useFocusTrap.d.ts +6 -10
- package/dist/hooks/useFocusTrap/useFocusTrap.d.ts.map +1 -1
- package/dist/hooks/useFocusTrap/useFocusTrap.js +10 -2
- package/dist/hooks/useFocusTrap/useFocusTrap.js.map +1 -1
- package/dist/hooks/useFocusVisibleClassName.d.ts +3 -3
- package/dist/hooks/useFocusVisibleClassName.d.ts.map +1 -1
- package/dist/hooks/useFocusVisibleClassName.js.map +1 -1
- package/dist/hooks/useGlobalEscKeyDown.d.ts +1 -1
- package/dist/hooks/useGlobalEscKeyDown.d.ts.map +1 -1
- package/dist/hooks/useGlobalEscKeyDown.js.map +1 -1
- package/dist/hooks/useMediaQueryMatch.d.ts +6 -0
- package/dist/hooks/useMediaQueryMatch.d.ts.map +1 -0
- package/dist/hooks/useMediaQueryMatch.js +25 -0
- package/dist/hooks/useMediaQueryMatch.js.map +1 -0
- package/dist/hooks/useMergeProps.d.ts +1 -1
- package/dist/hooks/useMergeProps.d.ts.map +1 -1
- package/dist/hooks/useMergeProps.js.map +1 -1
- package/dist/hooks/useModalManager/types.d.ts +8 -8
- package/dist/hooks/useModalManager/types.d.ts.map +1 -1
- package/dist/hooks/useModalManager/types.js.map +1 -1
- package/dist/hooks/usePagination.d.ts +4 -4
- package/dist/hooks/usePagination.d.ts.map +1 -1
- package/dist/hooks/usePagination.js.map +1 -1
- package/dist/hooks/usePatchChildren.d.ts +1 -1
- package/dist/hooks/usePatchChildren.d.ts.map +1 -1
- package/dist/hooks/usePatchChildren.js.map +1 -1
- package/dist/hooks/useSnackbarManager/components/{SnackbarAnimatedWrapper.d.ts → SnackbarAnimatedWrapper/SnackbarAnimatedWrapper.d.ts} +1 -1
- package/dist/hooks/useSnackbarManager/components/SnackbarAnimatedWrapper/SnackbarAnimatedWrapper.d.ts.map +1 -0
- package/dist/hooks/useSnackbarManager/components/{SnackbarAnimatedWrapper.js → SnackbarAnimatedWrapper/SnackbarAnimatedWrapper.js} +10 -10
- package/dist/hooks/useSnackbarManager/components/SnackbarAnimatedWrapper/SnackbarAnimatedWrapper.js.map +1 -0
- package/dist/hooks/useSnackbarManager/components/SnackbarHolder.d.ts.map +1 -1
- package/dist/hooks/useSnackbarManager/components/SnackbarHolder.js +5 -2
- package/dist/hooks/useSnackbarManager/components/SnackbarHolder.js.map +1 -1
- package/dist/hooks/useSnackbarManager/components/{SnackbarsContainer.d.ts → SnackbarsContainer/SnackbarsContainer.d.ts} +2 -2
- package/dist/hooks/useSnackbarManager/components/SnackbarsContainer/SnackbarsContainer.d.ts.map +1 -0
- package/dist/hooks/useSnackbarManager/components/{SnackbarsContainer.js → SnackbarsContainer/SnackbarsContainer.js} +10 -10
- package/dist/hooks/useSnackbarManager/components/SnackbarsContainer/SnackbarsContainer.js.map +1 -0
- package/dist/hooks/useSnackbarManager/types.d.ts +11 -11
- package/dist/hooks/useSnackbarManager/types.d.ts.map +1 -1
- package/dist/hooks/useSnackbarManager/types.js.map +1 -1
- package/dist/hooks/useSyncHTMLWithBaseVKUIClasses.d.ts +1 -1
- package/dist/hooks/useSyncHTMLWithBaseVKUIClasses.d.ts.map +1 -1
- package/dist/hooks/useSyncHTMLWithBaseVKUIClasses.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/SSR.d.ts +4 -4
- package/dist/lib/SSR.d.ts.map +1 -1
- package/dist/lib/SSR.js.map +1 -1
- package/dist/lib/accessibility.d.ts +1 -1
- package/dist/lib/accessibility.d.ts.map +1 -1
- package/dist/lib/accessibility.js.map +1 -1
- package/dist/lib/adaptivity/functions.d.ts.map +1 -1
- package/dist/lib/adaptivity/functions.js +6 -0
- package/dist/lib/adaptivity/functions.js.map +1 -1
- package/dist/lib/animation/useCSSKeyframesAnimationController.d.ts +6 -6
- package/dist/lib/animation/useCSSKeyframesAnimationController.d.ts.map +1 -1
- package/dist/lib/animation/useCSSKeyframesAnimationController.js.map +1 -1
- package/dist/lib/animation/useCSSTransition.d.ts +11 -11
- package/dist/lib/animation/useCSSTransition.d.ts.map +1 -1
- package/dist/lib/animation/useCSSTransition.js +4 -2
- package/dist/lib/animation/useCSSTransition.js.map +1 -1
- package/dist/lib/animation/useReducedMotion.d.ts.map +1 -1
- package/dist/lib/animation/useReducedMotion.js +2 -20
- package/dist/lib/animation/useReducedMotion.js.map +1 -1
- package/dist/lib/calendar.d.ts +5 -5
- package/dist/lib/calendar.d.ts.map +1 -1
- package/dist/lib/calendar.js.map +1 -1
- package/dist/lib/date.d.ts +10 -10
- package/dist/lib/date.d.ts.map +1 -1
- package/dist/lib/date.js.map +1 -1
- package/dist/lib/dom.d.ts +2 -2
- package/dist/lib/dom.d.ts.map +1 -1
- package/dist/lib/dom.js.map +1 -1
- package/dist/lib/floating/functions.d.ts +2 -2
- package/dist/lib/floating/functions.d.ts.map +1 -1
- package/dist/lib/floating/functions.js.map +1 -1
- package/dist/lib/floating/types/component.d.ts +9 -9
- package/dist/lib/floating/types/component.d.ts.map +1 -1
- package/dist/lib/floating/types/component.js.map +1 -1
- package/dist/lib/floating/useFloatingMiddlewaresBootstrap/index.d.ts +14 -14
- package/dist/lib/floating/useFloatingMiddlewaresBootstrap/index.d.ts.map +1 -1
- package/dist/lib/floating/useFloatingMiddlewaresBootstrap/index.js +6 -4
- package/dist/lib/floating/useFloatingMiddlewaresBootstrap/index.js.map +1 -1
- package/dist/lib/floating/useFloatingWithInteractions/types.d.ts +15 -15
- package/dist/lib/floating/useFloatingWithInteractions/types.d.ts.map +1 -1
- package/dist/lib/floating/useFloatingWithInteractions/types.js.map +1 -1
- package/dist/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.js +6 -2
- package/dist/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.js.map +1 -1
- package/dist/lib/getNavId.d.ts +2 -2
- package/dist/lib/getNavId.d.ts.map +1 -1
- package/dist/lib/getNavId.js.map +1 -1
- package/dist/lib/layouts/resolveLayoutProps.d.ts +6 -6
- package/dist/lib/layouts/resolveLayoutProps.d.ts.map +1 -1
- package/dist/lib/layouts/resolveLayoutProps.js.map +1 -1
- package/dist/lib/layouts/types.d.ts +29 -29
- package/dist/lib/layouts/types.d.ts.map +1 -1
- package/dist/lib/layouts/types.js.map +1 -1
- package/dist/lib/select.d.ts +2 -2
- package/dist/lib/select.d.ts.map +1 -1
- package/dist/lib/select.js.map +1 -1
- package/dist/lib/sheet/useBottomSheet.d.ts +4 -4
- package/dist/lib/sheet/useBottomSheet.d.ts.map +1 -1
- package/dist/lib/sheet/useBottomSheet.js.map +1 -1
- package/dist/lib/tokens/TokensClassProvider.js.map +1 -1
- package/dist/lib/tokens/types.d.ts +2 -2
- package/dist/lib/tokens/types.d.ts.map +1 -1
- package/dist/lib/tokens/types.js.map +1 -1
- package/dist/lib/utils.d.ts +3 -3
- package/dist/lib/utils.d.ts.map +1 -1
- package/dist/lib/utils.js +3 -0
- package/dist/lib/utils.js.map +1 -1
- package/dist/types.d.ts +17 -10
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +4 -1
- package/dist/types.js.map +1 -1
- package/dist/vkui.css +1 -1
- package/dist/vkui.css.map +1 -1
- package/package.json +3 -3
- package/src/components/Accordion/Accordion.tsx +10 -6
- package/src/components/Accordion/AccordionIcon.tsx +31 -0
- package/src/components/Accordion/AccordionSummary.tsx +5 -9
- package/src/components/ActionSheet/ActionSheet.tsx +14 -10
- package/src/components/ActionSheet/ActionSheetContext.ts +3 -3
- package/src/components/ActionSheet/types.ts +8 -8
- package/src/components/ActionSheetItem/ActionSheetItem.module.css +0 -1
- package/src/components/ActionSheetItem/ActionSheetItem.module.css.d.ts.map +1 -1
- package/src/components/ActionSheetItem/ActionSheetItem.tsx +15 -15
- package/src/components/ActionSheetItem/subcomponents/Radio/Radio.tsx +1 -1
- package/src/components/AdaptivityProvider/AdaptivityContext.tsx +7 -7
- package/src/components/Alert/Alert.tsx +17 -17
- package/src/components/Alert/AlertBase.tsx +2 -2
- package/src/components/Alert/AlertTypography.tsx +1 -1
- package/src/components/AppRoot/AppRoot.tsx +9 -9
- package/src/components/AppRoot/AppRootContext.ts +4 -4
- package/src/components/AppRoot/AppRootPortal.tsx +2 -2
- package/src/components/AppRoot/ScrollContext.tsx +5 -5
- package/src/components/AppRoot/types.ts +4 -4
- package/src/components/AspectRatio/AspectRatio.tsx +2 -2
- package/src/components/Avatar/Avatar.module.css +0 -5
- package/src/components/Avatar/Avatar.module.css.d.ts.map +1 -1
- package/src/components/Avatar/Avatar.tsx +6 -2
- package/src/components/Avatar/AvatarBadge/AvatarBadgeWithPreset.tsx +1 -1
- package/src/components/Badge/Badge.tsx +1 -1
- package/src/components/Banner/Banner.tsx +12 -12
- package/src/components/Box/Box.tsx +1 -1
- package/src/components/Button/Button.tsx +19 -12
- package/src/components/ButtonGroup/ButtonGroup.tsx +4 -4
- package/src/components/Calendar/Calendar.tsx +17 -17
- package/src/components/CalendarDay/CalendarDay.tsx +18 -18
- package/src/components/CalendarDays/CalendarDays.tsx +14 -14
- package/src/components/CalendarHeader/CalendarHeader.tsx +19 -19
- package/src/components/CalendarRange/CalendarRange.tsx +12 -12
- package/src/components/CalendarTime/CalendarTime.tsx +14 -14
- package/src/components/CalendarTime/CalendarTimePicker.tsx +3 -3
- package/src/components/Card/Card.tsx +1 -1
- package/src/components/CardGrid/CardGrid.tsx +2 -2
- package/src/components/CardScroll/CardScroll.tsx +3 -3
- package/src/components/CarouselBase/Bullets.tsx +1 -1
- package/src/components/CarouselBase/CarouselViewPort.tsx +1 -1
- package/src/components/CarouselBase/ScrollArrows.tsx +2 -2
- package/src/components/CarouselBase/helpers.ts +4 -4
- package/src/components/CarouselBase/types.ts +23 -23
- package/src/components/Cell/Cell.tsx +8 -8
- package/src/components/Cell/CellCheckbox/CellCheckbox.tsx +1 -1
- package/src/components/Cell/CellDragger/CellDragger.tsx +2 -2
- package/src/components/CellButton/CellButton.tsx +16 -16
- package/src/components/Checkbox/Checkbox.tsx +16 -9
- package/src/components/Checkbox/CheckboxInput/CheckboxInput.tsx +20 -14
- package/src/components/ChipsInput/ChipsInput.tsx +1 -1
- package/src/components/ChipsInput/useChipsInput.ts +3 -3
- package/src/components/ChipsInputBase/Chip/Chip.tsx +9 -9
- package/src/components/ChipsInputBase/types.ts +28 -22
- package/src/components/ChipsSelect/ChipsSelect.tsx +13 -13
- package/src/components/ChipsSelect/useChipsSelect.ts +22 -21
- package/src/components/Clickable/Clickable.tsx +1 -1
- package/src/components/Clickable/useState.tsx +13 -13
- package/src/components/ConfigProvider/ConfigProvider.tsx +2 -1
- package/src/components/ContentBadge/ContentBadge.tsx +4 -4
- package/src/components/ContentCard/ContentCard.tsx +8 -8
- package/src/components/Counter/Counter.tsx +4 -4
- package/src/components/CustomScrollView/CustomScrollView.tsx +6 -6
- package/src/components/CustomSelect/CustomSelect.module.css +0 -6
- package/src/components/CustomSelect/CustomSelect.module.css.d.ts.map +1 -1
- package/src/components/CustomSelect/CustomSelect.tsx +45 -31
- package/src/components/CustomSelect/CustomSelectClearButton.tsx +2 -2
- package/src/components/CustomSelect/CustomSelectInput/CustomSelectInput.tsx +20 -14
- package/src/components/CustomSelect/hooks/useDropdownOpenedController.ts +2 -2
- package/src/components/CustomSelect/hooks/useSelectedOptionController.ts +1 -1
- package/src/components/CustomSelect/types.ts +1 -1
- package/src/components/CustomSelectDropdown/CustomSelectDropdown.tsx +8 -8
- package/src/components/CustomSelectOption/CustomSelectOption.tsx +9 -9
- package/src/components/DateInput/DateInput.tsx +27 -35
- package/src/components/DateInput/hooks.ts +7 -7
- package/src/components/DateRangeInput/DateRangeInput.tsx +28 -36
- package/src/components/DropZone/DropZone.tsx +5 -2
- package/src/components/DropZone/{components → DropZoneGrid}/DropZoneGrid.tsx +1 -1
- package/src/components/DropdownIcon/DropdownIcon.tsx +1 -1
- package/src/components/Epic/Epic.tsx +1 -1
- package/src/components/Epic/ScrollSaver.tsx +1 -1
- package/src/components/File/File.tsx +15 -9
- package/src/components/FixedLayout/FixedLayout.tsx +3 -3
- package/src/components/Flex/Flex.tsx +8 -8
- package/src/components/Flex/FlexItem/FlexItem.tsx +1 -1
- package/src/components/FloatingArrow/FloatingArrow.tsx +9 -9
- package/src/components/FocusTrap/FocusTrap.tsx +0 -3
- package/src/components/FormField/FormField.tsx +8 -8
- package/src/components/FormFieldClearButton/FormFieldClearButton.tsx +2 -2
- package/src/components/FormItem/FormItem.module.css +1 -2
- package/src/components/FormItem/FormItem.module.css.d.ts.map +1 -1
- package/src/components/FormItem/FormItem.tsx +10 -10
- package/src/components/FormItem/context.ts +2 -2
- package/src/components/FormLayoutGroup/FormLayoutGroup.tsx +4 -4
- package/src/components/FormStatus/FormStatus.tsx +2 -2
- package/src/components/Gallery/Gallery.tsx +2 -2
- package/src/components/Gradient/Gradient.tsx +2 -2
- package/src/components/GridAvatar/GridAvatar.tsx +1 -1
- package/src/components/Group/Group.tsx +2 -2
- package/src/components/Group/GroupContainer.tsx +3 -3
- package/src/components/Group/GroupExpandedContent.tsx +1 -1
- package/src/components/Header/Header.tsx +11 -11
- package/src/components/HorizontalCell/HorizontalCell.tsx +7 -7
- package/src/components/HorizontalScroll/HorizontalCellShowMore/HorizontalCellShowMore.tsx +4 -4
- package/src/components/HorizontalScroll/HorizontalScroll.tsx +63 -18
- package/src/components/IconButton/IconButton.tsx +1 -1
- package/src/components/Image/Image.tsx +5 -5
- package/src/components/ImageBase/ImageBase.module.css +11 -3
- package/src/components/ImageBase/ImageBase.module.css.d.ts.map +1 -1
- package/src/components/ImageBase/ImageBase.tsx +27 -17
- package/src/components/ImageBase/ImageBaseBadge/ImageBaseBadge.tsx +1 -1
- package/src/components/ImageBase/ImageBaseFloatElement/ImageBaseFloatElement.tsx +3 -3
- package/src/components/ImageBase/ImageBaseOverlay/types.ts +3 -3
- package/src/components/ImageBase/types.ts +3 -3
- package/src/components/Input/Input.tsx +13 -7
- package/src/components/InputLike/InputLike.tsx +3 -3
- package/src/components/Link/Link.tsx +4 -4
- package/src/components/List/List.tsx +1 -1
- package/src/components/MiniInfoCell/MiniInfoCell.tsx +5 -5
- package/src/components/ModalCard/ModalCardInternal.tsx +1 -1
- package/src/components/ModalCard/types.ts +13 -13
- package/src/components/ModalCardBase/ModalCardBase.module.css +0 -4
- package/src/components/ModalCardBase/ModalCardBase.module.css.d.ts.map +1 -1
- package/src/components/ModalCardBase/ModalCardBase.tsx +14 -14
- package/src/components/ModalDismissButton/ModalDismissButton.tsx +1 -1
- package/src/components/ModalOutlet/ModalOutlet.tsx +3 -3
- package/src/components/ModalOutsideButton/ModalOutsideButton.tsx +1 -1
- package/src/components/ModalOverlay/ModalOverlay.tsx +7 -7
- package/src/components/ModalPage/ModalPageBase.tsx +2 -2
- package/src/components/ModalPage/ModalPageInternal.tsx +2 -2
- package/src/components/ModalPage/types.ts +27 -27
- package/src/components/ModalPageFooter/ModalPageFooter.tsx +2 -2
- package/src/components/ModalPageHeader/ModalPageHeader.tsx +1 -1
- package/src/components/ModalRoot/types.ts +15 -15
- package/src/components/ModalRoot/useModalRootManager.tsx +19 -19
- package/src/components/NativeSelect/NativeSelect.tsx +20 -14
- package/src/components/NumberInputLike/NumberInputLike.tsx +3 -3
- package/src/components/OnboardingTooltip/OnboardingTooltip.tsx +16 -8
- package/src/components/OnboardingTooltip/OnboardingTooltipContainer.tsx +1 -1
- package/src/components/Pagination/Pagination.tsx +27 -25
- package/src/components/Pagination/PaginationNavigationButton/PaginationNavigationButton.tsx +5 -3
- package/src/components/Pagination/PaginationPage/PaginationPageButton.tsx +3 -3
- package/src/components/Pagination/PaginationPage/PaginationPageEllipsis.tsx +1 -1
- package/src/components/Pagination/PaginationPage/usePaginationPageClasses.ts +3 -3
- package/src/components/Panel/Panel.tsx +3 -3
- package/src/components/PanelHeader/PanelHeader.module.css +0 -5
- package/src/components/PanelHeader/PanelHeader.module.css.d.ts.map +1 -1
- package/src/components/PanelHeader/PanelHeader.tsx +14 -12
- package/src/components/PanelHeaderBack/PanelHeaderBack.tsx +2 -2
- package/src/components/PanelHeaderButton/PanelHeaderButton.tsx +3 -3
- package/src/components/PanelHeaderContent/PanelHeaderContent.tsx +3 -3
- package/src/components/PanelHeaderEdit/PanelHeaderEdit.tsx +3 -3
- package/src/components/PanelSpinner/PanelSpinner.tsx +1 -1
- package/src/components/Placeholder/Placeholder.tsx +5 -5
- package/src/components/PopoutWrapper/PopoutWrapper.tsx +6 -6
- package/src/components/Popover/Popover.tsx +5 -5
- package/src/components/Popper/Popper.tsx +17 -15
- package/src/components/Progress/Progress.tsx +4 -4
- package/src/components/PullToRefresh/PullToRefresh.tsx +2 -2
- package/src/components/PullToRefresh/PullToRefreshSpinner.tsx +4 -4
- package/src/components/Radio/Radio.tsx +18 -12
- package/src/components/Radio/RadioInput/RadioInput.tsx +15 -9
- package/src/components/RadioGroup/RadioGroup.tsx +1 -1
- package/src/components/Removable/Removable.module.css +0 -4
- package/src/components/Removable/Removable.module.css.d.ts.map +1 -1
- package/src/components/Removable/Removable.tsx +13 -10
- package/src/components/Removable/RemovableIos.tsx +6 -3
- package/src/components/RichCell/RichCell.tsx +15 -15
- package/src/components/Root/Root.tsx +3 -3
- package/src/components/RootComponent/RootComponent.tsx +2 -2
- package/src/components/ScreenSpinner/ScreenSpinnerSwapIcon.tsx +1 -1
- package/src/components/ScreenSpinner/context.ts +2 -2
- package/src/components/ScreenSpinner/types.tsx +5 -5
- package/src/components/ScrollArrow/ScrollArrow.tsx +27 -4
- package/src/components/Search/Search.tsx +28 -22
- package/src/components/SegmentedControl/SegmentedControl.tsx +6 -6
- package/src/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.tsx +3 -3
- package/src/components/SelectMimicry/SelectMimicry.tsx +3 -3
- package/src/components/SelectTypography/SelectTypography.tsx +1 -1
- package/src/components/SelectionControl/SelectionControl.tsx +1 -1
- package/src/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.tsx +2 -2
- package/src/components/Separator/Separator.tsx +5 -5
- package/src/components/SimpleCell/Chevron/Chevron.tsx +1 -1
- package/src/components/SimpleCell/SimpleCell.tsx +14 -14
- package/src/components/SimpleGrid/SimpleGrid.tsx +6 -6
- package/src/components/Skeleton/Skeleton.tsx +5 -5
- package/src/components/Slider/Slider.tsx +19 -17
- package/src/components/Slider/SliderThumb/SliderThumb.tsx +9 -7
- package/src/components/Snackbar/Snackbar.tsx +19 -13
- package/src/components/Snackbar/subcomponents/Basic/Basic.module.css +2 -4
- package/src/components/Snackbar/subcomponents/Basic/Basic.module.css.d.ts.map +1 -1
- package/src/components/Snackbar/subcomponents/Basic/Basic.tsx +6 -6
- package/src/components/Snackbar/utils.ts +1 -1
- package/src/components/Spacing/Spacing.tsx +2 -2
- package/src/components/Spinner/Spinner.tsx +4 -4
- package/src/components/SplitCol/SplitCol.tsx +7 -7
- package/src/components/SplitLayout/SplitLayout.tsx +15 -9
- package/src/components/SubnavigationBar/SubnavigationBar.tsx +2 -2
- package/src/components/SubnavigationButton/SubnavigationButton.tsx +8 -8
- package/src/components/Switch/Switch.tsx +15 -9
- package/src/components/Tabbar/Tabbar.tsx +2 -2
- package/src/components/TabbarItem/TabbarItem.tsx +3 -3
- package/src/components/Tabs/Tabs.tsx +7 -7
- package/src/components/Tabs/TabsModeContext.ts +1 -1
- package/src/components/TabsItem/TabsItem.tsx +5 -5
- package/src/components/Tappable/Tappable.tsx +3 -3
- package/src/components/Tappable/state.tsx +2 -2
- package/src/components/Textarea/Textarea.tsx +14 -10
- package/src/components/ToolButton/ToolButton.tsx +4 -4
- package/src/components/Tooltip/Tooltip.tsx +6 -6
- package/src/components/TooltipBase/TooltipBase.tsx +10 -10
- package/src/components/Touch/Touch.tsx +16 -16
- package/src/components/Typography/Caption/Caption.tsx +1 -1
- package/src/components/Typography/DisplayTitle/DisplayTitle.tsx +1 -1
- package/src/components/Typography/EllipsisText/EllipsisText.tsx +3 -3
- package/src/components/Typography/Headline/Headline.tsx +1 -1
- package/src/components/Typography/Title/Title.tsx +1 -1
- package/src/components/Typography/Typography.tsx +6 -6
- package/src/components/UnstyledTextField/UnstyledTextField.tsx +1 -1
- package/src/components/UsersStack/UsersStack.tsx +6 -6
- package/src/components/View/View.module.css +1 -3
- package/src/components/View/View.module.css.d.ts.map +1 -1
- package/src/components/View/View.tsx +4 -4
- package/src/components/View/ViewInfinite.tsx +11 -11
- package/src/components/WriteBar/WriteBar.tsx +21 -15
- package/src/components/WriteBarIcon/WriteBarIcon.tsx +3 -3
- package/src/helpers/math.ts +1 -1
- package/src/hooks/useAdaptivityWithJSMediaQueries.ts +3 -1
- package/src/hooks/useAutoDetectColorScheme.ts +8 -30
- package/src/hooks/useCalendar.ts +2 -2
- package/src/hooks/useDateInput.ts +5 -5
- package/src/hooks/useDraggableWithDomApi/types.ts +1 -1
- package/src/hooks/useEnsuredControl.ts +4 -4
- package/src/hooks/useFloatingElement.tsx +4 -4
- package/src/hooks/useFocusTrap/FocusGuard.tsx +1 -1
- package/src/hooks/useFocusTrap/useFocusTrap.tsx +17 -15
- package/src/hooks/useFocusVisibleClassName.ts +3 -3
- package/src/hooks/useGlobalEscKeyDown.ts +2 -2
- package/src/hooks/useMediaQueryMatch.ts +34 -0
- package/src/hooks/useMergeProps.ts +2 -2
- package/src/hooks/useModalManager/types.ts +8 -8
- package/src/hooks/usePagination.ts +4 -4
- package/src/hooks/usePatchChildren.ts +1 -1
- package/src/hooks/useSnackbarManager/components/{SnackbarAnimatedWrapper.tsx → SnackbarAnimatedWrapper/SnackbarAnimatedWrapper.tsx} +3 -3
- package/src/hooks/useSnackbarManager/components/SnackbarHolder.tsx +6 -2
- package/src/hooks/useSnackbarManager/components/{SnackbarsContainer.tsx → SnackbarsContainer/SnackbarsContainer.tsx} +6 -6
- package/src/hooks/useSnackbarManager/types.ts +11 -11
- package/src/hooks/useSyncHTMLWithBaseVKUIClasses.ts +1 -1
- package/src/index.ts +6 -2
- package/src/lib/SSR.tsx +4 -4
- package/src/lib/accessibility.ts +1 -1
- package/src/lib/adaptivity/functions.ts +10 -1
- package/src/lib/animation/useCSSKeyframesAnimationController.ts +6 -6
- package/src/lib/animation/useCSSTransition.ts +15 -13
- package/src/lib/animation/useReducedMotion.ts +2 -25
- package/src/lib/calendar.ts +5 -2
- package/src/lib/date.ts +11 -11
- package/src/lib/dom.tsx +2 -2
- package/src/lib/floating/functions.ts +2 -2
- package/src/lib/floating/types/component.ts +9 -9
- package/src/lib/floating/useFloatingMiddlewaresBootstrap/index.ts +26 -19
- package/src/lib/floating/useFloatingWithInteractions/types.ts +15 -15
- package/src/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.ts +2 -2
- package/src/lib/getNavId.ts +2 -2
- package/src/lib/layouts/resolveLayoutProps.ts +3 -3
- package/src/lib/layouts/types.ts +29 -29
- package/src/lib/select.ts +2 -2
- package/src/lib/sheet/useBottomSheet.ts +4 -4
- package/src/lib/tokens/TokensClassProvider.tsx +1 -1
- package/src/lib/tokens/types.ts +2 -2
- package/src/lib/utils.ts +8 -3
- package/src/types.ts +18 -10
- package/dist/components/DropZone/components/DropZoneGrid.d.ts.map +0 -1
- package/dist/components/DropZone/components/DropZoneGrid.js.map +0 -1
- package/dist/cssm/components/DropZone/components/DropZoneGrid.js.map +0 -1
- package/dist/cssm/hooks/useSnackbarManager/components/SnackbarAnimatedWrapper.js.map +0 -1
- package/dist/cssm/hooks/useSnackbarManager/components/SnackbarsContainer.js.map +0 -1
- package/dist/hooks/useSnackbarManager/components/SnackbarAnimatedWrapper.d.ts.map +0 -1
- package/dist/hooks/useSnackbarManager/components/SnackbarAnimatedWrapper.js.map +0 -1
- package/dist/hooks/useSnackbarManager/components/SnackbarsContainer.d.ts.map +0 -1
- package/dist/hooks/useSnackbarManager/components/SnackbarsContainer.js.map +0 -1
- /package/dist/cssm/components/DropZone/{components → DropZoneGrid}/DropZoneGrid.js +0 -0
- /package/dist/cssm/components/DropZone/{components → DropZoneGrid}/DropZoneGrid.module.css +0 -0
- /package/dist/cssm/hooks/useSnackbarManager/components/{SnackbarAnimatedWrapper.module.css → SnackbarAnimatedWrapper/SnackbarAnimatedWrapper.module.css} +0 -0
- /package/dist/cssm/hooks/useSnackbarManager/components/{SnackbarsContainer.module.css → SnackbarsContainer/SnackbarsContainer.module.css} +0 -0
- /package/src/components/DropZone/{components → DropZoneGrid}/DropZoneGrid.module.css +0 -0
- /package/src/components/DropZone/{components → DropZoneGrid}/DropZoneGrid.module.css.d.ts.map +0 -0
- /package/src/hooks/useSnackbarManager/components/{SnackbarAnimatedWrapper.module.css → SnackbarAnimatedWrapper/SnackbarAnimatedWrapper.module.css} +0 -0
- /package/src/hooks/useSnackbarManager/components/{SnackbarAnimatedWrapper.module.css.d.ts.map → SnackbarAnimatedWrapper/SnackbarAnimatedWrapper.module.css.d.ts.map} +0 -0
- /package/src/hooks/useSnackbarManager/components/{SnackbarsContainer.module.css → SnackbarsContainer/SnackbarsContainer.module.css} +0 -0
- /package/src/hooks/useSnackbarManager/components/{SnackbarsContainer.module.css.d.ts.map → SnackbarsContainer/SnackbarsContainer.module.css.d.ts.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/CalendarDays/CalendarDays.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { classNames, isSameDate } from '@vkontakte/vkjs';\nimport { useTodayDate } from '../../hooks/useTodayDate';\nimport { getDaysNames, getWeeks } from '../../lib/calendar';\nimport { isSameMonth } from '../../lib/date';\nimport { cacheDateTimeFormat } from '../../lib/intlCache';\nimport type { HTMLAttributesWithRootRef } from '../../types';\nimport {\n CalendarDay,\n type CalendarDayElementProps,\n type CalendarDayProps,\n type CalendarDayTestsProps,\n} from '../CalendarDay/CalendarDay';\nimport { useConfigProvider } from '../ConfigProvider/ConfigProviderContext';\nimport { RootComponent } from '../RootComponent/RootComponent';\nimport { Footnote } from '../Typography/Footnote/Footnote';\nimport { VisuallyHidden } from '../VisuallyHidden/VisuallyHidden';\nimport styles from './CalendarDays.module.css';\n\nconst labelDateTimeFormatOptions = {\n year: 'numeric',\n month: 'long',\n} as const;\n\nconst labelDateTimeFormat = /*#__PURE__*/ cacheDateTimeFormat();\n\nexport type CalendarDaysTestsProps = {\n /**\n * Передает атрибут `data-testid` для дня в календаре.\n */\n dayTestId?: CalendarDayTestsProps['testId'];\n};\n\nexport interface CalendarDaysProps\n extends Omit<HTMLAttributesWithRootRef<HTMLDivElement>, 'onChange'>,\n Pick<CalendarDayProps, 'renderDayContent'>,\n CalendarDaysTestsProps {\n /**\n * Выбранная дата или диапазон дат.\n */\n value?: Date | Array<Date | null> | null;\n /**\n * Дата, определяющая отображаемый месяц.\n */\n viewDate: Date;\n /**\n * День недели, с которого начинается неделя (0 - воскресенье, 6 - суббота).\n */\n weekStartsOn: 0 | 1 | 2 | 3 | 4 | 5 | 6;\n /**\n * Показывать дни соседних месяцев.\n */\n showNeighboringMonth?: boolean;\n /**\n * Размер календаря.\n */\n size?: 's' | 'm';\n /**\n * Дополнительные свойства для элементов дней.\n */\n dayProps?: CalendarDayElementProps;\n /**\n * Следить за изменениями дней для обновления UI.\n */\n listenDayChangesForUpdate?: boolean;\n /**\n * Обработчик изменения выбранного дня.\n */\n onDayChange: (value: Date) => void;\n /**\n * Проверяет, заблокирован ли день для выбора.\n */\n isDayDisabled: (value: Date) => boolean;\n /**\n * Определяет, является ли день началом выделенного диапазона.\n */\n isDaySelectionStart: (value: Date, dayOfWeek: number) => boolean;\n /**\n * Определяет, является ли день концом выделенного диапазона.\n */\n isDaySelectionEnd: (value: Date, dayOfWeek: number) => boolean;\n /**\n * Определяет начало диапазона при наведении (подсветка).\n */\n isHintedDaySelectionStart?: (value: Date, dayOfWeek: number) => boolean;\n /**\n * Определяет конец диапазона при наведении (подсветка).\n */\n isHintedDaySelectionEnd?: (value: Date, dayOfWeek: number) => boolean;\n /**\n * Проверяет, является ли день активным (текущая дата).\n */\n isDayActive: (value: Date) => boolean;\n /**\n * Проверяет, подсвечен ли день (при наведении).\n */\n isDayHinted?: (value: Date) => boolean;\n /**\n * Проверяет, возможно ли сфокусироваться на дне с клавиатуры.\n */\n isDayFocusable?: (value: Date) => boolean;\n /**\n * Проверяет, выбран ли день.\n */\n isDaySelected?: (value: Date) => boolean;\n /**\n * Проверяет, находится ли день в фокусе.\n */\n isDayFocused: (value: Date) => boolean;\n /**\n * Обработчик события 'pointerenter' на элементе дня.\n */\n onDayEnter?: (value: Date) => void;\n /**\n * Обработчик события 'pointerleave' на элементе дня.\n */\n onDayLeave?: (value: Date) => void;\n /**\n * Обработчик события `focus` на элементе дня.\n */\n onDayFocus?: (value: Date) => void;\n}\n\nexport const CalendarDays = ({\n viewDate,\n value,\n weekStartsOn,\n onDayChange,\n isDaySelected,\n isDayActive,\n isDaySelectionEnd,\n isDaySelectionStart,\n onDayEnter,\n onDayLeave,\n onDayFocus,\n isDayHinted,\n isHintedDaySelectionStart,\n isHintedDaySelectionEnd,\n isDayFocused,\n isDayFocusable,\n isDayDisabled,\n size,\n showNeighboringMonth = false,\n dayProps,\n listenDayChangesForUpdate = false,\n getRootRef,\n renderDayContent,\n dayTestId,\n ...props\n}: CalendarDaysProps): React.ReactNode => {\n const { locale } = useConfigProvider();\n const now = useTodayDate(listenDayChangesForUpdate);\n\n const weeks = React.useMemo(() => getWeeks(viewDate, weekStartsOn), [weekStartsOn, viewDate]);\n\n const daysNames = React.useMemo(\n () => getDaysNames(now, weekStartsOn, locale),\n [locale, now, weekStartsOn],\n );\n\n const handleDayChange = React.useCallback(\n (date: Date) => {\n onDayChange(date);\n },\n [onDayChange],\n );\n\n const viewDateLabelId = React.useId();\n const currentMonthLabel = value\n ? labelDateTimeFormat(locale, labelDateTimeFormatOptions).format(viewDate)\n : null;\n\n return (\n <React.Fragment>\n {/*\n * Нельзя помещать текст currentMonthLabel внутрь role=\"grid\" или с помощью aria-label,\n * иначе пользователи NVDA не смогут ходить по таблице\n * с помощью горячих клавиш <Ctrl+Alt+стрелочки>.\n * Имеется ввиду связка (применение которой визуально не видно):\n * - из заголовка календаря прыжок в таблицу с помощью клавиши <T>\n * - переход по ячейкам с помощью <Ctrl+Alrt+стрелочки>\n * NVDA будет говорить, что пользователь вне ячейки таблицы.\n * Также важно оставить aria-live=\"polite\". Так NVDA зачитывает текущий\n * месяц и год при переключении месяца и года в заголовке календаря.\n */}\n <VisuallyHidden aria-live=\"polite\" id={viewDateLabelId}>\n {currentMonthLabel}\n </VisuallyHidden>\n <RootComponent\n role=\"grid\"\n {...props}\n baseClassName={styles.host}\n aria-labelledby={viewDateLabelId}\n >\n <div\n role=\"row\"\n aria-rowindex={1}\n className={classNames(styles.row, size === 's' && styles.rowSizeS)}\n >\n {daysNames.map(({ short: shortDayName, long: longDayName }) => (\n <Footnote\n role=\"columnheader\"\n aria-label={longDayName}\n key={shortDayName}\n className={styles.weekday}\n >\n {shortDayName}\n </Footnote>\n ))}\n </div>\n\n {weeks.map((week, i) => (\n <div\n role=\"row\"\n aria-rowindex={i + 2}\n className={classNames(styles.row, size === 's' && styles.rowSizeS)}\n key={i}\n >\n {week.map((day, i) => {\n const sameMonth = isSameMonth(day, viewDate);\n const isHidden = !showNeighboringMonth && !sameMonth;\n const isToday = isSameDate(day, now);\n const isActive = isDayActive(day);\n const isFocused = isDayFocused(day);\n return (\n <CalendarDay\n role=\"gridcell\"\n aria-current={isToday ? 'date' : undefined}\n aria-selected={isActive ? 'true' : 'false'}\n aria-colindex={i + 1}\n tabIndex={isDayFocusable?.(day) ? 0 : -1}\n key={day.toISOString()}\n day={day}\n today={isToday}\n active={isActive}\n onChange={handleDayChange}\n hidden={isHidden}\n disabled={isDayDisabled(day)}\n selectionStart={isDaySelectionStart(day, i)}\n selectionEnd={isDaySelectionEnd(day, i)}\n hintedSelectionStart={isHintedDaySelectionStart?.(day, i)}\n hintedSelectionEnd={isHintedDaySelectionEnd?.(day, i)}\n selected={isDaySelected?.(day)}\n focused={isFocused}\n onEnter={onDayEnter}\n onLeave={onDayLeave}\n onFocus={onDayFocus}\n hinted={isDayHinted?.(day)}\n sameMonth={sameMonth}\n size={size}\n renderDayContent={renderDayContent}\n testId={dayTestId}\n {...dayProps}\n className={classNames(dayProps?.className, styles.rowDay)}\n />\n );\n })}\n </div>\n ))}\n </RootComponent>\n </React.Fragment>\n );\n};\n"],"names":["React","classNames","isSameDate","useTodayDate","getDaysNames","getWeeks","isSameMonth","cacheDateTimeFormat","CalendarDay","useConfigProvider","RootComponent","Footnote","VisuallyHidden","styles","labelDateTimeFormatOptions","year","month","labelDateTimeFormat","CalendarDays","viewDate","value","weekStartsOn","onDayChange","isDaySelected","isDayActive","isDaySelectionEnd","isDaySelectionStart","onDayEnter","onDayLeave","onDayFocus","isDayHinted","isHintedDaySelectionStart","isHintedDaySelectionEnd","isDayFocused","isDayFocusable","isDayDisabled","size","showNeighboringMonth","dayProps","listenDayChangesForUpdate","getRootRef","renderDayContent","dayTestId","props","locale","now","weeks","useMemo","daysNames","handleDayChange","useCallback","date","viewDateLabelId","useId","currentMonthLabel","format","Fragment","aria-live","id","role","baseClassName","host","aria-labelledby","div","aria-rowindex","className","row","rowSizeS","map","short","shortDayName","long","longDayName","aria-label","weekday","week","i","day","sameMonth","isHidden","isToday","isActive","isFocused","aria-current","undefined","aria-selected","aria-colindex","tabIndex","today","active","onChange","hidden","disabled","selectionStart","selectionEnd","hintedSelectionStart","hintedSelectionEnd","selected","focused","onEnter","onLeave","onFocus","hinted","testId","rowDay","toISOString"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/CalendarDays/CalendarDays.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { classNames, isSameDate } from '@vkontakte/vkjs';\nimport { useTodayDate } from '../../hooks/useTodayDate';\nimport { getDaysNames, getWeeks } from '../../lib/calendar';\nimport { isSameMonth } from '../../lib/date';\nimport { cacheDateTimeFormat } from '../../lib/intlCache';\nimport type { HTMLAttributesWithRootRef } from '../../types';\nimport {\n CalendarDay,\n type CalendarDayElementProps,\n type CalendarDayProps,\n type CalendarDayTestsProps,\n} from '../CalendarDay/CalendarDay';\nimport { useConfigProvider } from '../ConfigProvider/ConfigProviderContext';\nimport { RootComponent } from '../RootComponent/RootComponent';\nimport { Footnote } from '../Typography/Footnote/Footnote';\nimport { VisuallyHidden } from '../VisuallyHidden/VisuallyHidden';\nimport styles from './CalendarDays.module.css';\n\nconst labelDateTimeFormatOptions = {\n year: 'numeric',\n month: 'long',\n} as const;\n\nconst labelDateTimeFormat = /*#__PURE__*/ cacheDateTimeFormat();\n\nexport type CalendarDaysTestsProps = {\n /**\n * Передает атрибут `data-testid` для дня в календаре.\n */\n dayTestId?: CalendarDayTestsProps['testId'] | undefined;\n};\n\nexport interface CalendarDaysProps\n extends Omit<HTMLAttributesWithRootRef<HTMLDivElement>, 'onChange'>,\n Pick<CalendarDayProps, 'renderDayContent'>,\n CalendarDaysTestsProps {\n /**\n * Выбранная дата или диапазон дат.\n */\n value?: Date | Array<Date | null> | null | undefined;\n /**\n * Дата, определяющая отображаемый месяц.\n */\n viewDate: Date;\n /**\n * День недели, с которого начинается неделя (0 - воскресенье, 6 - суббота).\n */\n weekStartsOn: 0 | 1 | 2 | 3 | 4 | 5 | 6;\n /**\n * Показывать дни соседних месяцев.\n */\n showNeighboringMonth?: boolean | undefined;\n /**\n * Размер календаря.\n */\n size?: 's' | 'm' | undefined;\n /**\n * Дополнительные свойства для элементов дней.\n */\n dayProps?: CalendarDayElementProps | undefined;\n /**\n * Следить за изменениями дней для обновления UI.\n */\n listenDayChangesForUpdate?: boolean | undefined;\n /**\n * Обработчик изменения выбранного дня.\n */\n onDayChange: (value: Date) => void;\n /**\n * Проверяет, заблокирован ли день для выбора.\n */\n isDayDisabled: (value: Date) => boolean;\n /**\n * Определяет, является ли день началом выделенного диапазона.\n */\n isDaySelectionStart: (value: Date, dayOfWeek: number) => boolean;\n /**\n * Определяет, является ли день концом выделенного диапазона.\n */\n isDaySelectionEnd: (value: Date, dayOfWeek: number) => boolean;\n /**\n * Определяет начало диапазона при наведении (подсветка).\n */\n isHintedDaySelectionStart?: ((value: Date, dayOfWeek: number) => boolean) | undefined;\n /**\n * Определяет конец диапазона при наведении (подсветка).\n */\n isHintedDaySelectionEnd?: ((value: Date, dayOfWeek: number) => boolean) | undefined;\n /**\n * Проверяет, является ли день активным (текущая дата).\n */\n isDayActive: (value: Date) => boolean;\n /**\n * Проверяет, подсвечен ли день (при наведении).\n */\n isDayHinted?: ((value: Date) => boolean) | undefined;\n /**\n * Проверяет, возможно ли сфокусироваться на дне с клавиатуры.\n */\n isDayFocusable?: ((value: Date) => boolean) | undefined;\n /**\n * Проверяет, выбран ли день.\n */\n isDaySelected?: ((value: Date) => boolean) | undefined;\n /**\n * Проверяет, находится ли день в фокусе.\n */\n isDayFocused: (value: Date) => boolean;\n /**\n * Обработчик события 'pointerenter' на элементе дня.\n */\n onDayEnter?: ((value: Date) => void) | undefined;\n /**\n * Обработчик события 'pointerleave' на элементе дня.\n */\n onDayLeave?: ((value: Date) => void) | undefined;\n /**\n * Обработчик события `focus` на элементе дня.\n */\n onDayFocus?: ((value: Date) => void) | undefined;\n}\n\nexport const CalendarDays = ({\n viewDate,\n value,\n weekStartsOn,\n onDayChange,\n isDaySelected,\n isDayActive,\n isDaySelectionEnd,\n isDaySelectionStart,\n onDayEnter,\n onDayLeave,\n onDayFocus,\n isDayHinted,\n isHintedDaySelectionStart,\n isHintedDaySelectionEnd,\n isDayFocused,\n isDayFocusable,\n isDayDisabled,\n size,\n showNeighboringMonth = false,\n dayProps,\n listenDayChangesForUpdate = false,\n getRootRef,\n renderDayContent,\n dayTestId,\n ...props\n}: CalendarDaysProps): React.ReactNode => {\n const { locale } = useConfigProvider();\n const now = useTodayDate(listenDayChangesForUpdate);\n\n const weeks = React.useMemo(() => getWeeks(viewDate, weekStartsOn), [weekStartsOn, viewDate]);\n\n const daysNames = React.useMemo(\n () => getDaysNames(now, weekStartsOn, locale),\n [locale, now, weekStartsOn],\n );\n\n const handleDayChange = React.useCallback(\n (date: Date) => {\n onDayChange(date);\n },\n [onDayChange],\n );\n\n const viewDateLabelId = React.useId();\n const currentMonthLabel = value\n ? labelDateTimeFormat(locale, labelDateTimeFormatOptions).format(viewDate)\n : null;\n\n return (\n <React.Fragment>\n {/*\n * Нельзя помещать текст currentMonthLabel внутрь role=\"grid\" или с помощью aria-label,\n * иначе пользователи NVDA не смогут ходить по таблице\n * с помощью горячих клавиш <Ctrl+Alt+стрелочки>.\n * Имеется ввиду связка (применение которой визуально не видно):\n * - из заголовка календаря прыжок в таблицу с помощью клавиши <T>\n * - переход по ячейкам с помощью <Ctrl+Alrt+стрелочки>\n * NVDA будет говорить, что пользователь вне ячейки таблицы.\n * Также важно оставить aria-live=\"polite\". Так NVDA зачитывает текущий\n * месяц и год при переключении месяца и года в заголовке календаря.\n */}\n <VisuallyHidden aria-live=\"polite\" id={viewDateLabelId}>\n {currentMonthLabel}\n </VisuallyHidden>\n <RootComponent\n role=\"grid\"\n {...props}\n baseClassName={styles.host}\n aria-labelledby={viewDateLabelId}\n >\n <div\n role=\"row\"\n aria-rowindex={1}\n className={classNames(styles.row, size === 's' && styles.rowSizeS)}\n >\n {daysNames.map(({ short: shortDayName, long: longDayName }) => (\n <Footnote\n role=\"columnheader\"\n aria-label={longDayName}\n key={shortDayName}\n className={styles.weekday}\n >\n {shortDayName}\n </Footnote>\n ))}\n </div>\n\n {weeks.map((week, i) => (\n <div\n role=\"row\"\n aria-rowindex={i + 2}\n className={classNames(styles.row, size === 's' && styles.rowSizeS)}\n key={i}\n >\n {week.map((day, i) => {\n const sameMonth = isSameMonth(day, viewDate);\n const isHidden = !showNeighboringMonth && !sameMonth;\n const isToday = isSameDate(day, now);\n const isActive = isDayActive(day);\n const isFocused = isDayFocused(day);\n return (\n <CalendarDay\n role=\"gridcell\"\n aria-current={isToday ? 'date' : undefined}\n aria-selected={isActive ? 'true' : 'false'}\n aria-colindex={i + 1}\n tabIndex={isDayFocusable?.(day) ? 0 : -1}\n key={day.toISOString()}\n day={day}\n today={isToday}\n active={isActive}\n onChange={handleDayChange}\n hidden={isHidden}\n disabled={isDayDisabled(day)}\n selectionStart={isDaySelectionStart(day, i)}\n selectionEnd={isDaySelectionEnd(day, i)}\n hintedSelectionStart={isHintedDaySelectionStart?.(day, i)}\n hintedSelectionEnd={isHintedDaySelectionEnd?.(day, i)}\n selected={isDaySelected?.(day)}\n focused={isFocused}\n onEnter={onDayEnter}\n onLeave={onDayLeave}\n onFocus={onDayFocus}\n hinted={isDayHinted?.(day)}\n sameMonth={sameMonth}\n size={size}\n renderDayContent={renderDayContent}\n testId={dayTestId}\n {...dayProps}\n className={classNames(dayProps?.className, styles.rowDay)}\n />\n );\n })}\n </div>\n ))}\n </RootComponent>\n </React.Fragment>\n );\n};\n"],"names":["React","classNames","isSameDate","useTodayDate","getDaysNames","getWeeks","isSameMonth","cacheDateTimeFormat","CalendarDay","useConfigProvider","RootComponent","Footnote","VisuallyHidden","styles","labelDateTimeFormatOptions","year","month","labelDateTimeFormat","CalendarDays","viewDate","value","weekStartsOn","onDayChange","isDaySelected","isDayActive","isDaySelectionEnd","isDaySelectionStart","onDayEnter","onDayLeave","onDayFocus","isDayHinted","isHintedDaySelectionStart","isHintedDaySelectionEnd","isDayFocused","isDayFocusable","isDayDisabled","size","showNeighboringMonth","dayProps","listenDayChangesForUpdate","getRootRef","renderDayContent","dayTestId","props","locale","now","weeks","useMemo","daysNames","handleDayChange","useCallback","date","viewDateLabelId","useId","currentMonthLabel","format","Fragment","aria-live","id","role","baseClassName","host","aria-labelledby","div","aria-rowindex","className","row","rowSizeS","map","short","shortDayName","long","longDayName","aria-label","weekday","week","i","day","sameMonth","isHidden","isToday","isActive","isFocused","aria-current","undefined","aria-selected","aria-colindex","tabIndex","today","active","onChange","hidden","disabled","selectionStart","selectionEnd","hintedSelectionStart","hintedSelectionEnd","selected","focused","onEnter","onLeave","onFocus","hinted","testId","rowDay","toISOString"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/CalendarHeader/CalendarHeader.tsx"],"sourcesContent":["'use client';\n\nimport type { ChangeEvent } from 'react';\nimport * as React from 'react';\nimport {\n Icon12Dropdown,\n Icon20ChevronLeftOutline,\n Icon20ChevronRightOutline,\n} from '@vkontakte/icons';\nimport { classNames } from '@vkontakte/vkjs';\nimport { ViewWidth } from '../../lib/adaptivity';\nimport { DEFAULT_MAX_YEAR, DEFAULT_MIN_YEAR, getMonths, getYears } from '../../lib/calendar';\nimport { addMonths, setMonth, setYear, subMonths } from '../../lib/date';\nimport { cacheDateTimeFormat } from '../../lib/intlCache';\nimport type { HTMLAttributesWithRootRef } from '../../types';\nimport { AdaptivityProvider } from '../AdaptivityProvider/AdaptivityProvider';\nimport { useConfigProvider } from '../ConfigProvider/ConfigProviderContext';\nimport { CustomSelect, type SelectProps } from '../CustomSelect/CustomSelect';\nimport { RootComponent } from '../RootComponent/RootComponent';\nimport { Tappable } from '../Tappable/Tappable';\nimport { Paragraph } from '../Typography/Paragraph/Paragraph';\nimport { VisuallyHidden } from '../VisuallyHidden/VisuallyHidden';\nimport styles from './CalendarHeader.module.css';\n\nconst formatterDateTimeFormatOptions = {\n year: 'numeric',\n month: 'long',\n} as const;\n\nconst formatterDateTimeFormat = /*#__PURE__*/ cacheDateTimeFormat();\n\nconst monthDateTimeFormatOptions = {\n month: 'long',\n} as const;\n\nconst monthDateTimeFormat = /*#__PURE__*/ cacheDateTimeFormat();\n\nconst yearDateTimeFormatOptions = {\n year: 'numeric',\n} as const;\n\nconst yearDateTimeFormat = /*#__PURE__*/ cacheDateTimeFormat();\n\ntype ArrowMonthProps = Omit<React.AllHTMLAttributes<HTMLElement>, 'onClick' | 'aria-label'>;\n\nexport type CalendarHeaderTestsProps = {\n /**\n * Передает атрибут `data-testid` для дропдауна выбора месяца в заголовке календаря.\n */\n monthDropdownTestId?: string | ((monthIndex: number) => string);\n /**\n * Передает атрибут `data-testid` для дропдауна выбора года в заголовке календаря.\n */\n yearDropdownTestId?: string | ((year: number) => string);\n /**\n * Передает атрибут `data-testid` для кнопки перехода к следующему месяцу в заголовке календаря.\n */\n nextMonthButtonTestId?: string;\n /**\n * Передает атрибут `data-testid` для кнопки перехода к предыдущему месяцу в заголовке календаря.\n */\n prevMonthButtonTestId?: string;\n};\n\nexport interface CalendarHeaderProps\n extends Omit<HTMLAttributesWithRootRef<HTMLDivElement>, 'onChange'>,\n CalendarHeaderTestsProps {\n /**\n * Отображаемая дата.\n */\n viewDate: Date;\n /**\n * Скрывает иконку для переключения на предыдущий месяц.\n */\n prevMonthHidden?: boolean;\n /**\n * Скрывает иконку для переключения на следующий месяц.\n */\n nextMonthHidden?: boolean;\n /**\n * Отключает селекторы выбора месяца/года.\n */\n disablePickers?: boolean;\n /**\n * `aria-label` для кнопки предыдущего месяца.\n */\n prevMonthLabel?: string;\n /**\n * `aria-label` для кнопки следующего месяца.\n */\n nextMonthLabel?: string;\n /**\n * `aria-label` для селектора месяца.\n */\n changeMonthLabel?: string;\n /**\n * `aria-label` для селектора года.\n */\n changeYearLabel?: string;\n /**\n * Кастомная иконка для кнопки предыдущего месяца.\n */\n prevMonthIcon?: React.ReactNode;\n /**\n * Кастомная иконка для кнопки следующего месяца.\n */\n nextMonthIcon?: React.ReactNode;\n /**\n * Дополнительные свойства для кнопки предыдущего месяца.\n */\n prevMonthProps?: ArrowMonthProps;\n /**\n * Дополнительные свойства для кнопки следующего месяца.\n */\n nextMonthProps?: ArrowMonthProps;\n /**\n * Функция для проверки блокировки месяца.\n */\n isMonthDisabled?: (monthNumber: number, year?: number) => boolean;\n /**\n * Функция для проверки блокировки года.\n */\n isYearDisabled?: (yearNumber: number) => boolean;\n /**\n * Обработчик изменения отображаемой даты.\n */\n onChange: (viewDate: Date) => void;\n /**\n * Нажатие на кнопку переключения на следующий месяц.\n */\n onNextMonth?: () => void;\n /**\n * Нажатие на кнопку переключения на предыдущий месяц.\n */\n onPrevMonth?: () => void;\n}\n\nexport const CalendarHeader = ({\n viewDate,\n onChange,\n prevMonthHidden: prevMonthHiddenProp = false,\n nextMonthHidden: nextMonthHiddenProp = false,\n disablePickers = false,\n onNextMonth,\n onPrevMonth,\n prevMonthProps = {},\n nextMonthProps = {},\n prevMonthLabel = 'Предыдущий месяц',\n nextMonthLabel = 'Следующий месяц',\n changeMonthLabel = 'Изменить месяц',\n changeYearLabel = 'Изменить год',\n prevMonthIcon = (\n <Icon20ChevronLeftOutline className={styles.navIconAccent} width={30} height={30} />\n ),\n nextMonthIcon = (\n <Icon20ChevronRightOutline className={styles.navIconAccent} width={30} height={30} />\n ),\n isMonthDisabled,\n isYearDisabled,\n monthDropdownTestId,\n yearDropdownTestId,\n prevMonthButtonTestId,\n nextMonthButtonTestId,\n ...restProps\n}: CalendarHeaderProps): React.ReactNode => {\n const { locale, direction } = useConfigProvider();\n\n const onMonthsChange = React.useCallback(\n (_: ChangeEvent<HTMLSelectElement>, newValue: SelectProps['value']) =>\n onChange(setMonth(viewDate, Number(newValue))),\n [onChange, viewDate],\n );\n const onYearChange = React.useCallback(\n (_: ChangeEvent<HTMLSelectElement>, newValue: SelectProps['value']) =>\n onChange(setYear(viewDate, Number(newValue))),\n [onChange, viewDate],\n );\n\n const currentYear = viewDate.getFullYear();\n const currentMonth = viewDate.getMonth();\n\n const months = React.useMemo(\n () =>\n getMonths(locale).map(({ value, label }) => ({\n value,\n label: <span className={styles.month}>{label}</span>,\n disabled: isMonthDisabled && isMonthDisabled(value),\n })),\n [locale, isMonthDisabled],\n );\n\n const years = React.useMemo(\n () =>\n getYears(currentYear, 100).map((year) => ({\n ...year,\n disabled: isYearDisabled && isYearDisabled(year.value),\n })),\n [currentYear, isYearDisabled],\n );\n\n const formatter = formatterDateTimeFormat(locale, formatterDateTimeFormatOptions);\n\n const { className: prevMonthClassName, ...restPrevMonthProps } = prevMonthProps;\n const { className: nextMonthClassName, ...restNextMonthProps } = nextMonthProps;\n\n let nextMonthHidden =\n nextMonthHiddenProp || (currentMonth === 11 && currentYear === DEFAULT_MAX_YEAR);\n if (isMonthDisabled && !nextMonthHidden) {\n nextMonthHidden = isMonthDisabled(\n currentMonth === 11 ? 0 : currentMonth + 1,\n currentMonth === 11 ? Math.min(currentYear + 1, DEFAULT_MAX_YEAR) : currentYear,\n );\n }\n\n let prevMonthHidden =\n prevMonthHiddenProp || (currentMonth === 0 && currentYear === DEFAULT_MIN_YEAR);\n if (isMonthDisabled && !prevMonthHidden) {\n prevMonthHidden = isMonthDisabled(\n currentMonth === 0 ? 11 : currentMonth - 1,\n currentMonth === 0 ? Math.max(currentYear - 1, DEFAULT_MIN_YEAR) : currentYear,\n );\n }\n\n const stopPropogationOfEscapeKeyboardEventWhenSelectIsOpen = React.useCallback(\n (event: React.KeyboardEvent, isOpen: boolean) => {\n if (isOpen && event.key === 'Escape') {\n event.stopPropagation();\n }\n },\n [],\n );\n\n return (\n <RootComponent baseClassName={styles.host} {...restProps}>\n {!prevMonthHidden && (\n <AdaptivityProvider viewWidth={ViewWidth.SMALL_TABLET}>\n <Tappable\n baseClassName={classNames(styles.navIcon, styles.navIconPrev, prevMonthClassName)}\n onClick={onPrevMonth}\n data-testid={prevMonthButtonTestId}\n {...restPrevMonthProps}\n >\n <VisuallyHidden>\n {prevMonthLabel}, {formatter.format(subMonths(viewDate, 1))}\n </VisuallyHidden>\n {direction === 'ltr' ? prevMonthIcon : nextMonthIcon}\n </Tappable>\n </AdaptivityProvider>\n )}\n {disablePickers ? (\n <Paragraph\n className={classNames(styles.pickers, 'vkuiInternalCalendarHeader__pickers')}\n weight=\"2\"\n >\n <span className={styles.month}>\n {monthDateTimeFormat(locale, monthDateTimeFormatOptions).format(viewDate)}\n </span>\n \n {yearDateTimeFormat(locale, yearDateTimeFormatOptions).format(viewDate)}\n </Paragraph>\n ) : (\n <AdaptivityProvider density=\"compact\">\n <div className={classNames(styles.pickers, 'vkuiInternalCalendarHeader__pickers')}>\n <CustomSelect\n className={classNames(styles.picker, 'vkuiInternalCalendarHeader__picker')}\n value={currentMonth}\n options={months}\n dropdownOffsetDistance={4}\n dropdownAutoWidth\n icon={<Icon12Dropdown />}\n onChange={onMonthsChange}\n forceDropdownPortal={false}\n selectType=\"accent\"\n onInputKeyDown={stopPropogationOfEscapeKeyboardEventWhenSelectIsOpen}\n slotProps={{\n input: {\n 'aria-label': changeMonthLabel,\n 'data-testid':\n typeof monthDropdownTestId === 'string'\n ? monthDropdownTestId\n : monthDropdownTestId?.(currentMonth),\n },\n }}\n />\n <CustomSelect\n className={classNames(styles.picker, 'vkuiInternalCalendarHeader__picker')}\n value={currentYear}\n options={years}\n dropdownOffsetDistance={4}\n dropdownAutoWidth\n icon={<Icon12Dropdown />}\n onChange={onYearChange}\n forceDropdownPortal={false}\n selectType=\"accent\"\n onInputKeyDown={stopPropogationOfEscapeKeyboardEventWhenSelectIsOpen}\n slotProps={{\n input: {\n 'aria-label': changeYearLabel,\n 'data-testid':\n typeof yearDropdownTestId === 'string'\n ? yearDropdownTestId\n : yearDropdownTestId?.(currentYear),\n },\n }}\n />\n </div>\n </AdaptivityProvider>\n )}\n {!nextMonthHidden && (\n <AdaptivityProvider viewWidth={ViewWidth.SMALL_TABLET}>\n <Tappable\n baseClassName={classNames(styles.navIcon, styles.navIconNext, nextMonthClassName)}\n onClick={onNextMonth}\n data-testid={nextMonthButtonTestId}\n {...restNextMonthProps}\n >\n <VisuallyHidden>\n {nextMonthLabel}, {formatter.format(addMonths(viewDate, 1))}\n </VisuallyHidden>\n {direction === 'ltr' ? nextMonthIcon : prevMonthIcon}\n </Tappable>\n </AdaptivityProvider>\n )}\n </RootComponent>\n );\n};\n"],"names":["React","Icon12Dropdown","Icon20ChevronLeftOutline","Icon20ChevronRightOutline","classNames","ViewWidth","DEFAULT_MAX_YEAR","DEFAULT_MIN_YEAR","getMonths","getYears","addMonths","setMonth","setYear","subMonths","cacheDateTimeFormat","AdaptivityProvider","useConfigProvider","CustomSelect","RootComponent","Tappable","Paragraph","VisuallyHidden","styles","formatterDateTimeFormatOptions","year","month","formatterDateTimeFormat","monthDateTimeFormatOptions","monthDateTimeFormat","yearDateTimeFormatOptions","yearDateTimeFormat","CalendarHeader","viewDate","onChange","prevMonthHidden","prevMonthHiddenProp","nextMonthHidden","nextMonthHiddenProp","disablePickers","onNextMonth","onPrevMonth","prevMonthProps","nextMonthProps","prevMonthLabel","nextMonthLabel","changeMonthLabel","changeYearLabel","prevMonthIcon","className","navIconAccent","width","height","nextMonthIcon","isMonthDisabled","isYearDisabled","monthDropdownTestId","yearDropdownTestId","prevMonthButtonTestId","nextMonthButtonTestId","restProps","locale","direction","onMonthsChange","useCallback","_","newValue","Number","onYearChange","currentYear","getFullYear","currentMonth","getMonth","months","useMemo","map","value","label","span","disabled","years","formatter","prevMonthClassName","restPrevMonthProps","nextMonthClassName","restNextMonthProps","Math","min","max","stopPropogationOfEscapeKeyboardEventWhenSelectIsOpen","event","isOpen","key","stopPropagation","baseClassName","host","viewWidth","SMALL_TABLET","navIcon","navIconPrev","onClick","data-testid","format","pickers","weight","density","div","picker","options","dropdownOffsetDistance","dropdownAutoWidth","icon","forceDropdownPortal","selectType","onInputKeyDown","slotProps","input","navIconNext"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/CalendarHeader/CalendarHeader.tsx"],"sourcesContent":["'use client';\n\nimport type { ChangeEvent } from 'react';\nimport * as React from 'react';\nimport {\n Icon12Dropdown,\n Icon20ChevronLeftOutline,\n Icon20ChevronRightOutline,\n} from '@vkontakte/icons';\nimport { classNames } from '@vkontakte/vkjs';\nimport { ViewWidth } from '../../lib/adaptivity';\nimport { DEFAULT_MAX_YEAR, DEFAULT_MIN_YEAR, getMonths, getYears } from '../../lib/calendar';\nimport { addMonths, setMonth, setYear, subMonths } from '../../lib/date';\nimport { cacheDateTimeFormat } from '../../lib/intlCache';\nimport type { HTMLAttributesWithRootRef } from '../../types';\nimport { AdaptivityProvider } from '../AdaptivityProvider/AdaptivityProvider';\nimport { useConfigProvider } from '../ConfigProvider/ConfigProviderContext';\nimport { CustomSelect, type SelectProps } from '../CustomSelect/CustomSelect';\nimport { RootComponent } from '../RootComponent/RootComponent';\nimport { Tappable } from '../Tappable/Tappable';\nimport { Paragraph } from '../Typography/Paragraph/Paragraph';\nimport { VisuallyHidden } from '../VisuallyHidden/VisuallyHidden';\nimport styles from './CalendarHeader.module.css';\n\nconst formatterDateTimeFormatOptions = {\n year: 'numeric',\n month: 'long',\n} as const;\n\nconst formatterDateTimeFormat = /*#__PURE__*/ cacheDateTimeFormat();\n\nconst monthDateTimeFormatOptions = {\n month: 'long',\n} as const;\n\nconst monthDateTimeFormat = /*#__PURE__*/ cacheDateTimeFormat();\n\nconst yearDateTimeFormatOptions = {\n year: 'numeric',\n} as const;\n\nconst yearDateTimeFormat = /*#__PURE__*/ cacheDateTimeFormat();\n\ntype ArrowMonthProps = Omit<React.AllHTMLAttributes<HTMLElement>, 'onClick' | 'aria-label'>;\n\nexport type CalendarHeaderTestsProps = {\n /**\n * Передает атрибут `data-testid` для дропдауна выбора месяца в заголовке календаря.\n */\n monthDropdownTestId?: string | ((monthIndex: number) => string) | undefined;\n /**\n * Передает атрибут `data-testid` для дропдауна выбора года в заголовке календаря.\n */\n yearDropdownTestId?: string | ((year: number) => string) | undefined;\n /**\n * Передает атрибут `data-testid` для кнопки перехода к следующему месяцу в заголовке календаря.\n */\n nextMonthButtonTestId?: string | undefined;\n /**\n * Передает атрибут `data-testid` для кнопки перехода к предыдущему месяцу в заголовке календаря.\n */\n prevMonthButtonTestId?: string | undefined;\n};\n\nexport interface CalendarHeaderProps\n extends Omit<HTMLAttributesWithRootRef<HTMLDivElement>, 'onChange'>,\n CalendarHeaderTestsProps {\n /**\n * Отображаемая дата.\n */\n viewDate: Date;\n /**\n * Скрывает иконку для переключения на предыдущий месяц.\n */\n prevMonthHidden?: boolean | undefined;\n /**\n * Скрывает иконку для переключения на следующий месяц.\n */\n nextMonthHidden?: boolean | undefined;\n /**\n * Отключает селекторы выбора месяца/года.\n */\n disablePickers?: boolean | undefined;\n /**\n * `aria-label` для кнопки предыдущего месяца.\n */\n prevMonthLabel?: string | undefined;\n /**\n * `aria-label` для кнопки следующего месяца.\n */\n nextMonthLabel?: string | undefined;\n /**\n * `aria-label` для селектора месяца.\n */\n changeMonthLabel?: string | undefined;\n /**\n * `aria-label` для селектора года.\n */\n changeYearLabel?: string | undefined;\n /**\n * Кастомная иконка для кнопки предыдущего месяца.\n */\n prevMonthIcon?: React.ReactNode | undefined;\n /**\n * Кастомная иконка для кнопки следующего месяца.\n */\n nextMonthIcon?: React.ReactNode | undefined;\n /**\n * Дополнительные свойства для кнопки предыдущего месяца.\n */\n prevMonthProps?: ArrowMonthProps | undefined;\n /**\n * Дополнительные свойства для кнопки следующего месяца.\n */\n nextMonthProps?: ArrowMonthProps | undefined;\n /**\n * Функция для проверки блокировки месяца.\n */\n isMonthDisabled?: ((monthNumber: number, year?: number) => boolean) | undefined;\n /**\n * Функция для проверки блокировки года.\n */\n isYearDisabled?: ((yearNumber: number) => boolean) | undefined;\n /**\n * Обработчик изменения отображаемой даты.\n */\n onChange: (viewDate: Date) => void;\n /**\n * Нажатие на кнопку переключения на следующий месяц.\n */\n onNextMonth?: (() => void) | undefined;\n /**\n * Нажатие на кнопку переключения на предыдущий месяц.\n */\n onPrevMonth?: (() => void) | undefined;\n}\n\nexport const CalendarHeader = ({\n viewDate,\n onChange,\n prevMonthHidden: prevMonthHiddenProp = false,\n nextMonthHidden: nextMonthHiddenProp = false,\n disablePickers = false,\n onNextMonth,\n onPrevMonth,\n prevMonthProps = {},\n nextMonthProps = {},\n prevMonthLabel = 'Предыдущий месяц',\n nextMonthLabel = 'Следующий месяц',\n changeMonthLabel = 'Изменить месяц',\n changeYearLabel = 'Изменить год',\n prevMonthIcon = (\n <Icon20ChevronLeftOutline className={styles.navIconAccent} width={30} height={30} />\n ),\n nextMonthIcon = (\n <Icon20ChevronRightOutline className={styles.navIconAccent} width={30} height={30} />\n ),\n isMonthDisabled,\n isYearDisabled,\n monthDropdownTestId,\n yearDropdownTestId,\n prevMonthButtonTestId,\n nextMonthButtonTestId,\n ...restProps\n}: CalendarHeaderProps): React.ReactNode => {\n const { locale, direction } = useConfigProvider();\n\n const onMonthsChange = React.useCallback(\n (_: ChangeEvent<HTMLSelectElement>, newValue: SelectProps['value']) =>\n onChange(setMonth(viewDate, Number(newValue))),\n [onChange, viewDate],\n );\n const onYearChange = React.useCallback(\n (_: ChangeEvent<HTMLSelectElement>, newValue: SelectProps['value']) =>\n onChange(setYear(viewDate, Number(newValue))),\n [onChange, viewDate],\n );\n\n const currentYear = viewDate.getFullYear();\n const currentMonth = viewDate.getMonth();\n\n const months = React.useMemo(\n () =>\n getMonths(locale).map(({ value, label }) => ({\n value,\n label: <span className={styles.month}>{label}</span>,\n disabled: isMonthDisabled && isMonthDisabled(value),\n })),\n [locale, isMonthDisabled],\n );\n\n const years = React.useMemo(\n () =>\n getYears(currentYear, 100).map((year) => ({\n ...year,\n disabled: isYearDisabled && isYearDisabled(year.value),\n })),\n [currentYear, isYearDisabled],\n );\n\n const formatter = formatterDateTimeFormat(locale, formatterDateTimeFormatOptions);\n\n const { className: prevMonthClassName, ...restPrevMonthProps } = prevMonthProps;\n const { className: nextMonthClassName, ...restNextMonthProps } = nextMonthProps;\n\n let nextMonthHidden =\n nextMonthHiddenProp || (currentMonth === 11 && currentYear === DEFAULT_MAX_YEAR);\n if (isMonthDisabled && !nextMonthHidden) {\n nextMonthHidden = isMonthDisabled(\n currentMonth === 11 ? 0 : currentMonth + 1,\n currentMonth === 11 ? Math.min(currentYear + 1, DEFAULT_MAX_YEAR) : currentYear,\n );\n }\n\n let prevMonthHidden =\n prevMonthHiddenProp || (currentMonth === 0 && currentYear === DEFAULT_MIN_YEAR);\n if (isMonthDisabled && !prevMonthHidden) {\n prevMonthHidden = isMonthDisabled(\n currentMonth === 0 ? 11 : currentMonth - 1,\n currentMonth === 0 ? Math.max(currentYear - 1, DEFAULT_MIN_YEAR) : currentYear,\n );\n }\n\n const stopPropogationOfEscapeKeyboardEventWhenSelectIsOpen = React.useCallback(\n (event: React.KeyboardEvent, isOpen: boolean) => {\n if (isOpen && event.key === 'Escape') {\n event.stopPropagation();\n }\n },\n [],\n );\n\n return (\n <RootComponent baseClassName={styles.host} {...restProps}>\n {!prevMonthHidden && (\n <AdaptivityProvider viewWidth={ViewWidth.SMALL_TABLET}>\n <Tappable\n baseClassName={classNames(styles.navIcon, styles.navIconPrev, prevMonthClassName)}\n onClick={onPrevMonth}\n data-testid={prevMonthButtonTestId}\n {...restPrevMonthProps}\n >\n <VisuallyHidden>\n {prevMonthLabel}, {formatter.format(subMonths(viewDate, 1))}\n </VisuallyHidden>\n {direction === 'ltr' ? prevMonthIcon : nextMonthIcon}\n </Tappable>\n </AdaptivityProvider>\n )}\n {disablePickers ? (\n <Paragraph\n className={classNames(styles.pickers, 'vkuiInternalCalendarHeader__pickers')}\n weight=\"2\"\n >\n <span className={styles.month}>\n {monthDateTimeFormat(locale, monthDateTimeFormatOptions).format(viewDate)}\n </span>\n \n {yearDateTimeFormat(locale, yearDateTimeFormatOptions).format(viewDate)}\n </Paragraph>\n ) : (\n <AdaptivityProvider density=\"compact\">\n <div className={classNames(styles.pickers, 'vkuiInternalCalendarHeader__pickers')}>\n <CustomSelect\n className={classNames(styles.picker, 'vkuiInternalCalendarHeader__picker')}\n value={currentMonth}\n options={months}\n dropdownOffsetDistance={4}\n dropdownAutoWidth\n icon={<Icon12Dropdown />}\n onChange={onMonthsChange}\n forceDropdownPortal={false}\n selectType=\"accent\"\n onInputKeyDown={stopPropogationOfEscapeKeyboardEventWhenSelectIsOpen}\n slotProps={{\n input: {\n 'aria-label': changeMonthLabel,\n 'data-testid':\n typeof monthDropdownTestId === 'string'\n ? monthDropdownTestId\n : monthDropdownTestId?.(currentMonth),\n },\n }}\n />\n <CustomSelect\n className={classNames(styles.picker, 'vkuiInternalCalendarHeader__picker')}\n value={currentYear}\n options={years}\n dropdownOffsetDistance={4}\n dropdownAutoWidth\n icon={<Icon12Dropdown />}\n onChange={onYearChange}\n forceDropdownPortal={false}\n selectType=\"accent\"\n onInputKeyDown={stopPropogationOfEscapeKeyboardEventWhenSelectIsOpen}\n slotProps={{\n input: {\n 'aria-label': changeYearLabel,\n 'data-testid':\n typeof yearDropdownTestId === 'string'\n ? yearDropdownTestId\n : yearDropdownTestId?.(currentYear),\n },\n }}\n />\n </div>\n </AdaptivityProvider>\n )}\n {!nextMonthHidden && (\n <AdaptivityProvider viewWidth={ViewWidth.SMALL_TABLET}>\n <Tappable\n baseClassName={classNames(styles.navIcon, styles.navIconNext, nextMonthClassName)}\n onClick={onNextMonth}\n data-testid={nextMonthButtonTestId}\n {...restNextMonthProps}\n >\n <VisuallyHidden>\n {nextMonthLabel}, {formatter.format(addMonths(viewDate, 1))}\n </VisuallyHidden>\n {direction === 'ltr' ? nextMonthIcon : prevMonthIcon}\n </Tappable>\n </AdaptivityProvider>\n )}\n </RootComponent>\n );\n};\n"],"names":["React","Icon12Dropdown","Icon20ChevronLeftOutline","Icon20ChevronRightOutline","classNames","ViewWidth","DEFAULT_MAX_YEAR","DEFAULT_MIN_YEAR","getMonths","getYears","addMonths","setMonth","setYear","subMonths","cacheDateTimeFormat","AdaptivityProvider","useConfigProvider","CustomSelect","RootComponent","Tappable","Paragraph","VisuallyHidden","styles","formatterDateTimeFormatOptions","year","month","formatterDateTimeFormat","monthDateTimeFormatOptions","monthDateTimeFormat","yearDateTimeFormatOptions","yearDateTimeFormat","CalendarHeader","viewDate","onChange","prevMonthHidden","prevMonthHiddenProp","nextMonthHidden","nextMonthHiddenProp","disablePickers","onNextMonth","onPrevMonth","prevMonthProps","nextMonthProps","prevMonthLabel","nextMonthLabel","changeMonthLabel","changeYearLabel","prevMonthIcon","className","navIconAccent","width","height","nextMonthIcon","isMonthDisabled","isYearDisabled","monthDropdownTestId","yearDropdownTestId","prevMonthButtonTestId","nextMonthButtonTestId","restProps","locale","direction","onMonthsChange","useCallback","_","newValue","Number","onYearChange","currentYear","getFullYear","currentMonth","getMonth","months","useMemo","map","value","label","span","disabled","years","formatter","prevMonthClassName","restPrevMonthProps","nextMonthClassName","restNextMonthProps","Math","min","max","stopPropogationOfEscapeKeyboardEventWhenSelectIsOpen","event","isOpen","key","stopPropagation","baseClassName","host","viewWidth","SMALL_TABLET","navIcon","navIconPrev","onClick","data-testid","format","pickers","weight","density","div","picker","options","dropdownOffsetDistance","dropdownAutoWidth","icon","forceDropdownPortal","selectType","onInputKeyDown","slotProps","input","navIconNext"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/CalendarRange/CalendarRange.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { isSameDate } from '@vkontakte/vkjs';\nimport { useCalendar } from '../../hooks/useCalendar';\nimport { useCustomEnsuredControl } from '../../hooks/useEnsuredControl';\nimport { isFirstDay, isLastDay } from '../../lib/calendar';\nimport {\n addMonths,\n endOfDay,\n isWithinInterval,\n MONDAY,\n startOfDay,\n subMonths,\n} from '../../lib/date';\nimport type { HTMLAttributesWithRootRef } from '../../types';\nimport {\n CalendarDays,\n type CalendarDaysProps,\n type CalendarDaysTestsProps,\n} from '../CalendarDays/CalendarDays';\nimport {\n CalendarHeader,\n type CalendarHeaderProps,\n type CalendarHeaderTestsProps,\n} from '../CalendarHeader/CalendarHeader';\nimport { RootComponent } from '../RootComponent/RootComponent';\nimport type { DateRangeType } from './types';\nimport { useCalendarKeyboardNavigation, useIsDayFocusable } from './utils';\nimport styles from './CalendarRange.module.css';\n\nexport type { DateRangeType };\n\nexport type CalendarRangeTestsProps = CalendarDaysTestsProps & {\n /**\n * Передает атрибуты `data-testid` для интерактивных элементов в заголовке календаря в левой части.\n */\n leftPartHeaderTestsData?: CalendarHeaderTestsProps;\n /**\n * Передает атрибуты `data-testid` для интерактивных элементов в заголовке календаря в правой части.\n */\n rightPartHeaderTestsData?: CalendarHeaderTestsProps;\n};\n\nexport interface CalendarRangeProps\n extends Omit<HTMLAttributesWithRootRef<HTMLDivElement>, 'onChange' | 'defaultValue'>,\n Pick<\n CalendarHeaderProps,\n | 'prevMonthLabel'\n | 'nextMonthLabel'\n | 'changeMonthLabel'\n | 'changeYearLabel'\n | 'prevMonthIcon'\n | 'nextMonthIcon'\n >,\n Pick<CalendarDaysProps, 'listenDayChangesForUpdate' | 'renderDayContent'>,\n CalendarRangeTestsProps {\n /**\n * Текущий выбранный промежуток.\n */\n value?: DateRangeType | null;\n /**\n * Начальный промежуток при монтировании.\n */\n defaultValue?: DateRangeType | null;\n /**\n * Запрещает выбор даты в прошлом.\n * Применяется, если не заданы `shouldDisableDate` и `disableFuture`.\n */\n disablePast?: boolean;\n /**\n * Запрещает выбор даты в будущем.\n * Применяется, если не задано `shouldDisableDate`.\n */\n disableFuture?: boolean;\n /**\n * Отключает селекторы выбора месяца/года.\n */\n disablePickers?: boolean;\n /**\n * `aria-label` для изменения дня.\n *\n * @deprecated Since 7.4.0. Будет удалeно в **VKUI v9**.\n *\n * Использовалось для задания aria-label для контейнера дней в календаре.\n * Теперь этот контейнер является таблицей (с помощью role=\"grid\") и\n * в aria-label рендерится текущий открытый в календаре месяц и год.\n */\n changeDayLabel?: string; // TODO [>=9]: удалить неиспользуемое свойство\n /**\n * День недели, с которого начинается неделя.\n */\n weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;\n /**\n * Обработчик изменения выбранного промежутка.\n */\n onChange?: (value: DateRangeType) => void;\n /**\n * Функция для проверки запрета выбора даты.\n */\n shouldDisableDate?: (value: Date) => boolean;\n /**\n * @deprecated Since 7.3.0. Будет удалeно в **VKUI v9**.\n */\n onClose?: () => void; // TODO [>=9]: удалить неиспользуемое свойство\n}\n\nconst getIsDaySelected = (day: Date, value?: DateRangeType | null) => {\n if (!value?.[0] || !value[1]) {\n return false;\n }\n\n return isWithinInterval(day, [startOfDay(value[0]), endOfDay(value[1])]);\n};\n\n/**\n * @see https://vkui.io/components/calendar-range\n */\nexport const CalendarRange = ({\n 'value': valueProp,\n defaultValue,\n onChange,\n disablePast,\n disableFuture,\n shouldDisableDate,\n weekStartsOn = MONDAY,\n disablePickers,\n prevMonthLabel = 'Предыдущий месяц',\n nextMonthLabel = 'Следующий месяц',\n changeMonthLabel = 'Изменить месяц',\n changeYearLabel = 'Изменить год',\n 'aria-label': ariaLabel = 'Календарь',\n prevMonthIcon,\n nextMonthIcon,\n listenDayChangesForUpdate,\n renderDayContent,\n dayTestId,\n leftPartHeaderTestsData,\n rightPartHeaderTestsData,\n getRootRef,\n ...props\n}: CalendarRangeProps): React.ReactNode => {\n const _onChange = (newRange: DateRangeType | null) => {\n if (newRange && onChange) {\n onChange(newRange);\n }\n };\n\n const [value, updateValue] = useCustomEnsuredControl<DateRangeType | null>({\n value: valueProp,\n defaultValue: defaultValue as DateRangeType | null,\n onChange: _onChange,\n });\n\n const {\n viewDate,\n setViewDate,\n setPrevMonth,\n setNextMonth,\n focusedDay,\n setFocusedDay,\n isDayFocused,\n isDayDisabled,\n isMonthDisabled,\n isYearDisabled,\n } = useCalendar({ value, disableFuture, disablePast, shouldDisableDate });\n\n const [hintedDate, setHintedDate] = React.useState<DateRangeType>();\n const secondViewDate = addMonths(viewDate, 1);\n\n const {\n focusableDayOnFirstCalendar,\n focusableDayOnSecondCalendar,\n handleFirstCalendarKeyDown,\n handleSecondCalendarKeyDown,\n handleDayFocus,\n } = useCalendarKeyboardNavigation({\n focusedDay,\n setFocusedDay,\n value,\n viewDates: [viewDate, secondViewDate],\n setViewDate,\n });\n\n const getNewValue = React.useCallback(\n (date: Date): DateRangeType => {\n const isValueEmpty = !value || (value[0] === null && value[1] === null);\n const isRangeSelected = value && !!value[0] && !!value[1];\n if (isValueEmpty || isRangeSelected) {\n return [date, null];\n }\n\n const [start] = value;\n if (start && isSameDate(date, start)) {\n return [startOfDay(start), endOfDay(start)];\n } else if (start && date < start) {\n return [startOfDay(date), endOfDay(start)];\n } else if (start && date > start) {\n return [start, endOfDay(date)];\n }\n return value;\n },\n [value],\n );\n\n const onDayChange = React.useCallback(\n (date: Date) => {\n updateValue(getNewValue(date));\n setHintedDate(undefined);\n },\n [updateValue, getNewValue],\n );\n\n const isDaySelected = React.useCallback((day: Date) => getIsDaySelected(day, value), [value]);\n\n const isDayActive = React.useCallback(\n (day: Date) =>\n Boolean(\n (value?.[0] && isSameDate(day, value[0])) || (value?.[1] && isSameDate(day, value[1])),\n ),\n [value],\n );\n\n const isDaySelectionEnd = React.useCallback(\n (day: Date, dayOfWeek: number) =>\n Boolean(isLastDay(day, dayOfWeek) || (value?.[1] && isSameDate(day, value[1]))),\n [value],\n );\n\n const isHintedDaySelectionEnd = React.useCallback(\n (day: Date, dayOfWeek: number) =>\n Boolean(isLastDay(day, dayOfWeek) || (hintedDate?.[1] && isSameDate(day, hintedDate[1]))),\n [hintedDate],\n );\n\n const isDaySelectionStart = React.useCallback(\n (day: Date, dayOfWeek: number) =>\n Boolean(isFirstDay(day, dayOfWeek) || (value?.[0] && isSameDate(day, value[0]))),\n [value],\n );\n\n const isHintedDaySelectionStart = React.useCallback(\n (day: Date, dayOfWeek: number) =>\n Boolean(isFirstDay(day, dayOfWeek) || (hintedDate?.[0] && isSameDate(day, hintedDate[0]))),\n [hintedDate],\n );\n\n const onDayEnter = React.useCallback(\n (date: Date) => setHintedDate(getNewValue(date)),\n [setHintedDate, getNewValue],\n );\n\n const onDayLeave = React.useCallback(() => setHintedDate(undefined), [setHintedDate]);\n\n const isDayHinted = React.useCallback(\n (day: Date) => getIsDaySelected(day, hintedDate),\n [hintedDate],\n );\n\n const onRightPartViewDateChange = React.useCallback(\n (newDate: Date) => setViewDate(subMonths(newDate, 1)),\n [setViewDate],\n );\n\n const isDayFocusableInFirstCalendar = useIsDayFocusable({\n value,\n focusableDayOnFirstCalendar,\n focusableDayOnSecondCalendar,\n viewDate,\n isDayActive,\n });\n\n const isDayFocusableInSecondCalendar = useIsDayFocusable({\n value,\n focusableDayOnFirstCalendar,\n focusableDayOnSecondCalendar,\n viewDate: secondViewDate,\n isDayActive,\n });\n\n const onDayFocus = React.useCallback(\n (date: Date) => {\n if (focusedDay && isSameDate(focusedDay, date)) {\n return;\n }\n\n setFocusedDay(date);\n handleDayFocus(date);\n },\n [focusedDay, handleDayFocus, setFocusedDay],\n );\n\n return (\n <RootComponent\n aria-label={ariaLabel}\n {...props}\n baseClassName={styles.host}\n getRootRef={getRootRef}\n >\n <div className={styles.inner}>\n <CalendarHeader\n viewDate={viewDate}\n onChange={setViewDate}\n nextMonthHidden\n onPrevMonth={setPrevMonth}\n disablePickers={disablePickers}\n className={styles.header}\n prevMonthLabel={prevMonthLabel}\n nextMonthLabel={nextMonthLabel}\n changeMonthLabel={changeMonthLabel}\n changeYearLabel={changeYearLabel}\n prevMonthIcon={prevMonthIcon}\n isMonthDisabled={isMonthDisabled}\n isYearDisabled={isYearDisabled}\n {...leftPartHeaderTestsData}\n />\n <CalendarDays\n viewDate={viewDate}\n value={value}\n weekStartsOn={weekStartsOn}\n onKeyDown={handleFirstCalendarKeyDown}\n onDayFocus={onDayFocus}\n isDayFocused={isDayFocused}\n isDayFocusable={isDayFocusableInFirstCalendar}\n onDayChange={onDayChange}\n isDaySelected={isDaySelected}\n isDayActive={isDayActive}\n isDaySelectionEnd={isDaySelectionEnd}\n isDaySelectionStart={isDaySelectionStart}\n isDayHinted={isDayHinted}\n onDayEnter={onDayEnter}\n onDayLeave={onDayLeave}\n isHintedDaySelectionEnd={isHintedDaySelectionEnd}\n isHintedDaySelectionStart={isHintedDaySelectionStart}\n isDayDisabled={isDayDisabled}\n listenDayChangesForUpdate={listenDayChangesForUpdate}\n renderDayContent={renderDayContent}\n dayTestId={dayTestId}\n />\n </div>\n <div className={styles.inner}>\n <CalendarHeader\n viewDate={secondViewDate}\n onChange={onRightPartViewDateChange}\n prevMonthHidden\n onNextMonth={setNextMonth}\n disablePickers={disablePickers}\n className={styles.header}\n prevMonthLabel={prevMonthLabel}\n nextMonthLabel={nextMonthLabel}\n changeMonthLabel={changeMonthLabel}\n changeYearLabel={changeYearLabel}\n nextMonthIcon={nextMonthIcon}\n isMonthDisabled={isMonthDisabled}\n isYearDisabled={isYearDisabled}\n {...rightPartHeaderTestsData}\n />\n <CalendarDays\n viewDate={secondViewDate}\n value={value}\n weekStartsOn={weekStartsOn}\n onKeyDown={handleSecondCalendarKeyDown}\n onDayFocus={onDayFocus}\n isDayFocused={isDayFocused}\n isDayFocusable={isDayFocusableInSecondCalendar}\n onDayChange={onDayChange}\n isDaySelected={isDaySelected}\n isDayActive={isDayActive}\n isDaySelectionEnd={isDaySelectionEnd}\n isDaySelectionStart={isDaySelectionStart}\n isDayHinted={isDayHinted}\n onDayEnter={onDayEnter}\n onDayLeave={onDayLeave}\n isHintedDaySelectionEnd={isHintedDaySelectionEnd}\n isHintedDaySelectionStart={isHintedDaySelectionStart}\n isDayDisabled={isDayDisabled}\n listenDayChangesForUpdate={listenDayChangesForUpdate}\n renderDayContent={renderDayContent}\n dayTestId={dayTestId}\n />\n </div>\n </RootComponent>\n );\n};\n"],"names":["React","isSameDate","useCalendar","useCustomEnsuredControl","isFirstDay","isLastDay","addMonths","endOfDay","isWithinInterval","MONDAY","startOfDay","subMonths","CalendarDays","CalendarHeader","RootComponent","useCalendarKeyboardNavigation","useIsDayFocusable","styles","getIsDaySelected","day","value","CalendarRange","valueProp","defaultValue","onChange","disablePast","disableFuture","shouldDisableDate","weekStartsOn","disablePickers","prevMonthLabel","nextMonthLabel","changeMonthLabel","changeYearLabel","ariaLabel","prevMonthIcon","nextMonthIcon","listenDayChangesForUpdate","renderDayContent","dayTestId","leftPartHeaderTestsData","rightPartHeaderTestsData","getRootRef","props","_onChange","newRange","updateValue","viewDate","setViewDate","setPrevMonth","setNextMonth","focusedDay","setFocusedDay","isDayFocused","isDayDisabled","isMonthDisabled","isYearDisabled","hintedDate","setHintedDate","useState","secondViewDate","focusableDayOnFirstCalendar","focusableDayOnSecondCalendar","handleFirstCalendarKeyDown","handleSecondCalendarKeyDown","handleDayFocus","viewDates","getNewValue","useCallback","date","isValueEmpty","isRangeSelected","start","onDayChange","undefined","isDaySelected","isDayActive","Boolean","isDaySelectionEnd","dayOfWeek","isHintedDaySelectionEnd","isDaySelectionStart","isHintedDaySelectionStart","onDayEnter","onDayLeave","isDayHinted","onRightPartViewDateChange","newDate","isDayFocusableInFirstCalendar","isDayFocusableInSecondCalendar","onDayFocus","aria-label","baseClassName","host","div","className","inner","nextMonthHidden","onPrevMonth","header","onKeyDown","isDayFocusable","prevMonthHidden","onNextMonth"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/CalendarRange/CalendarRange.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { isSameDate } from '@vkontakte/vkjs';\nimport { useCalendar } from '../../hooks/useCalendar';\nimport { useCustomEnsuredControl } from '../../hooks/useEnsuredControl';\nimport { isFirstDay, isLastDay } from '../../lib/calendar';\nimport {\n addMonths,\n endOfDay,\n isWithinInterval,\n MONDAY,\n startOfDay,\n subMonths,\n} from '../../lib/date';\nimport type { HTMLAttributesWithRootRef } from '../../types';\nimport {\n CalendarDays,\n type CalendarDaysProps,\n type CalendarDaysTestsProps,\n} from '../CalendarDays/CalendarDays';\nimport {\n CalendarHeader,\n type CalendarHeaderProps,\n type CalendarHeaderTestsProps,\n} from '../CalendarHeader/CalendarHeader';\nimport { RootComponent } from '../RootComponent/RootComponent';\nimport type { DateRangeType } from './types';\nimport { useCalendarKeyboardNavigation, useIsDayFocusable } from './utils';\nimport styles from './CalendarRange.module.css';\n\nexport type { DateRangeType };\n\nexport type CalendarRangeTestsProps = CalendarDaysTestsProps & {\n /**\n * Передает атрибуты `data-testid` для интерактивных элементов в заголовке календаря в левой части.\n */\n leftPartHeaderTestsData?: CalendarHeaderTestsProps | undefined;\n /**\n * Передает атрибуты `data-testid` для интерактивных элементов в заголовке календаря в правой части.\n */\n rightPartHeaderTestsData?: CalendarHeaderTestsProps | undefined;\n};\n\nexport interface CalendarRangeProps\n extends Omit<HTMLAttributesWithRootRef<HTMLDivElement>, 'onChange' | 'defaultValue'>,\n Pick<\n CalendarHeaderProps,\n | 'prevMonthLabel'\n | 'nextMonthLabel'\n | 'changeMonthLabel'\n | 'changeYearLabel'\n | 'prevMonthIcon'\n | 'nextMonthIcon'\n >,\n Pick<CalendarDaysProps, 'listenDayChangesForUpdate' | 'renderDayContent'>,\n CalendarRangeTestsProps {\n /**\n * Текущий выбранный промежуток.\n */\n value?: DateRangeType | null | undefined;\n /**\n * Начальный промежуток при монтировании.\n */\n defaultValue?: DateRangeType | null | undefined;\n /**\n * Запрещает выбор даты в прошлом.\n * Применяется, если не заданы `shouldDisableDate` и `disableFuture`.\n */\n disablePast?: boolean | undefined;\n /**\n * Запрещает выбор даты в будущем.\n * Применяется, если не задано `shouldDisableDate`.\n */\n disableFuture?: boolean | undefined;\n /**\n * Отключает селекторы выбора месяца/года.\n */\n disablePickers?: boolean | undefined;\n /**\n * `aria-label` для изменения дня.\n *\n * @deprecated Since 7.4.0. Будет удалeно в **VKUI v9**.\n *\n * Использовалось для задания aria-label для контейнера дней в календаре.\n * Теперь этот контейнер является таблицей (с помощью role=\"grid\") и\n * в aria-label рендерится текущий открытый в календаре месяц и год.\n */\n changeDayLabel?: string | undefined; // TODO [>=9]: удалить неиспользуемое свойство\n /**\n * День недели, с которого начинается неделя.\n */\n weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | undefined;\n /**\n * Обработчик изменения выбранного промежутка.\n */\n onChange?: ((value: DateRangeType) => void) | undefined;\n /**\n * Функция для проверки запрета выбора даты.\n */\n shouldDisableDate?: ((value: Date) => boolean) | undefined;\n /**\n * @deprecated Since 7.3.0. Будет удалeно в **VKUI v9**.\n */\n onClose?: (() => void) | undefined; // TODO [>=9]: удалить неиспользуемое свойство\n}\n\nconst getIsDaySelected = (day: Date, value?: DateRangeType | null) => {\n if (!value?.[0] || !value[1]) {\n return false;\n }\n\n return isWithinInterval(day, [startOfDay(value[0]), endOfDay(value[1])]);\n};\n\n/**\n * @see https://vkui.io/components/calendar-range\n */\nexport const CalendarRange = ({\n 'value': valueProp,\n defaultValue,\n onChange,\n disablePast,\n disableFuture,\n shouldDisableDate,\n weekStartsOn = MONDAY,\n disablePickers,\n prevMonthLabel = 'Предыдущий месяц',\n nextMonthLabel = 'Следующий месяц',\n changeMonthLabel = 'Изменить месяц',\n changeYearLabel = 'Изменить год',\n 'aria-label': ariaLabel = 'Календарь',\n prevMonthIcon,\n nextMonthIcon,\n listenDayChangesForUpdate,\n renderDayContent,\n dayTestId,\n leftPartHeaderTestsData,\n rightPartHeaderTestsData,\n getRootRef,\n ...props\n}: CalendarRangeProps): React.ReactNode => {\n const _onChange = (newRange: DateRangeType | null) => {\n if (newRange && onChange) {\n onChange(newRange);\n }\n };\n\n const [value, updateValue] = useCustomEnsuredControl<DateRangeType | null>({\n value: valueProp,\n defaultValue: defaultValue as DateRangeType | null,\n onChange: _onChange,\n });\n\n const {\n viewDate,\n setViewDate,\n setPrevMonth,\n setNextMonth,\n focusedDay,\n setFocusedDay,\n isDayFocused,\n isDayDisabled,\n isMonthDisabled,\n isYearDisabled,\n } = useCalendar({ value, disableFuture, disablePast, shouldDisableDate });\n\n const [hintedDate, setHintedDate] = React.useState<DateRangeType>();\n const secondViewDate = addMonths(viewDate, 1);\n\n const {\n focusableDayOnFirstCalendar,\n focusableDayOnSecondCalendar,\n handleFirstCalendarKeyDown,\n handleSecondCalendarKeyDown,\n handleDayFocus,\n } = useCalendarKeyboardNavigation({\n focusedDay,\n setFocusedDay,\n value,\n viewDates: [viewDate, secondViewDate],\n setViewDate,\n });\n\n const getNewValue = React.useCallback(\n (date: Date): DateRangeType => {\n const isValueEmpty = !value || (value[0] === null && value[1] === null);\n const isRangeSelected = value && !!value[0] && !!value[1];\n if (isValueEmpty || isRangeSelected) {\n return [date, null];\n }\n\n const [start] = value;\n if (start && isSameDate(date, start)) {\n return [startOfDay(start), endOfDay(start)];\n } else if (start && date < start) {\n return [startOfDay(date), endOfDay(start)];\n } else if (start && date > start) {\n return [start, endOfDay(date)];\n }\n return value;\n },\n [value],\n );\n\n const onDayChange = React.useCallback(\n (date: Date) => {\n updateValue(getNewValue(date));\n setHintedDate(undefined);\n },\n [updateValue, getNewValue],\n );\n\n const isDaySelected = React.useCallback((day: Date) => getIsDaySelected(day, value), [value]);\n\n const isDayActive = React.useCallback(\n (day: Date) =>\n Boolean(\n (value?.[0] && isSameDate(day, value[0])) || (value?.[1] && isSameDate(day, value[1])),\n ),\n [value],\n );\n\n const isDaySelectionEnd = React.useCallback(\n (day: Date, dayOfWeek: number) =>\n Boolean(isLastDay(day, dayOfWeek) || (value?.[1] && isSameDate(day, value[1]))),\n [value],\n );\n\n const isHintedDaySelectionEnd = React.useCallback(\n (day: Date, dayOfWeek: number) =>\n Boolean(isLastDay(day, dayOfWeek) || (hintedDate?.[1] && isSameDate(day, hintedDate[1]))),\n [hintedDate],\n );\n\n const isDaySelectionStart = React.useCallback(\n (day: Date, dayOfWeek: number) =>\n Boolean(isFirstDay(day, dayOfWeek) || (value?.[0] && isSameDate(day, value[0]))),\n [value],\n );\n\n const isHintedDaySelectionStart = React.useCallback(\n (day: Date, dayOfWeek: number) =>\n Boolean(isFirstDay(day, dayOfWeek) || (hintedDate?.[0] && isSameDate(day, hintedDate[0]))),\n [hintedDate],\n );\n\n const onDayEnter = React.useCallback(\n (date: Date) => setHintedDate(getNewValue(date)),\n [setHintedDate, getNewValue],\n );\n\n const onDayLeave = React.useCallback(() => setHintedDate(undefined), [setHintedDate]);\n\n const isDayHinted = React.useCallback(\n (day: Date) => getIsDaySelected(day, hintedDate),\n [hintedDate],\n );\n\n const onRightPartViewDateChange = React.useCallback(\n (newDate: Date) => setViewDate(subMonths(newDate, 1)),\n [setViewDate],\n );\n\n const isDayFocusableInFirstCalendar = useIsDayFocusable({\n value,\n focusableDayOnFirstCalendar,\n focusableDayOnSecondCalendar,\n viewDate,\n isDayActive,\n });\n\n const isDayFocusableInSecondCalendar = useIsDayFocusable({\n value,\n focusableDayOnFirstCalendar,\n focusableDayOnSecondCalendar,\n viewDate: secondViewDate,\n isDayActive,\n });\n\n const onDayFocus = React.useCallback(\n (date: Date) => {\n if (focusedDay && isSameDate(focusedDay, date)) {\n return;\n }\n\n setFocusedDay(date);\n handleDayFocus(date);\n },\n [focusedDay, handleDayFocus, setFocusedDay],\n );\n\n return (\n <RootComponent\n aria-label={ariaLabel}\n {...props}\n baseClassName={styles.host}\n getRootRef={getRootRef}\n >\n <div className={styles.inner}>\n <CalendarHeader\n viewDate={viewDate}\n onChange={setViewDate}\n nextMonthHidden\n onPrevMonth={setPrevMonth}\n disablePickers={disablePickers}\n className={styles.header}\n prevMonthLabel={prevMonthLabel}\n nextMonthLabel={nextMonthLabel}\n changeMonthLabel={changeMonthLabel}\n changeYearLabel={changeYearLabel}\n prevMonthIcon={prevMonthIcon}\n isMonthDisabled={isMonthDisabled}\n isYearDisabled={isYearDisabled}\n {...leftPartHeaderTestsData}\n />\n <CalendarDays\n viewDate={viewDate}\n value={value}\n weekStartsOn={weekStartsOn}\n onKeyDown={handleFirstCalendarKeyDown}\n onDayFocus={onDayFocus}\n isDayFocused={isDayFocused}\n isDayFocusable={isDayFocusableInFirstCalendar}\n onDayChange={onDayChange}\n isDaySelected={isDaySelected}\n isDayActive={isDayActive}\n isDaySelectionEnd={isDaySelectionEnd}\n isDaySelectionStart={isDaySelectionStart}\n isDayHinted={isDayHinted}\n onDayEnter={onDayEnter}\n onDayLeave={onDayLeave}\n isHintedDaySelectionEnd={isHintedDaySelectionEnd}\n isHintedDaySelectionStart={isHintedDaySelectionStart}\n isDayDisabled={isDayDisabled}\n listenDayChangesForUpdate={listenDayChangesForUpdate}\n renderDayContent={renderDayContent}\n dayTestId={dayTestId}\n />\n </div>\n <div className={styles.inner}>\n <CalendarHeader\n viewDate={secondViewDate}\n onChange={onRightPartViewDateChange}\n prevMonthHidden\n onNextMonth={setNextMonth}\n disablePickers={disablePickers}\n className={styles.header}\n prevMonthLabel={prevMonthLabel}\n nextMonthLabel={nextMonthLabel}\n changeMonthLabel={changeMonthLabel}\n changeYearLabel={changeYearLabel}\n nextMonthIcon={nextMonthIcon}\n isMonthDisabled={isMonthDisabled}\n isYearDisabled={isYearDisabled}\n {...rightPartHeaderTestsData}\n />\n <CalendarDays\n viewDate={secondViewDate}\n value={value}\n weekStartsOn={weekStartsOn}\n onKeyDown={handleSecondCalendarKeyDown}\n onDayFocus={onDayFocus}\n isDayFocused={isDayFocused}\n isDayFocusable={isDayFocusableInSecondCalendar}\n onDayChange={onDayChange}\n isDaySelected={isDaySelected}\n isDayActive={isDayActive}\n isDaySelectionEnd={isDaySelectionEnd}\n isDaySelectionStart={isDaySelectionStart}\n isDayHinted={isDayHinted}\n onDayEnter={onDayEnter}\n onDayLeave={onDayLeave}\n isHintedDaySelectionEnd={isHintedDaySelectionEnd}\n isHintedDaySelectionStart={isHintedDaySelectionStart}\n isDayDisabled={isDayDisabled}\n listenDayChangesForUpdate={listenDayChangesForUpdate}\n renderDayContent={renderDayContent}\n dayTestId={dayTestId}\n />\n </div>\n </RootComponent>\n );\n};\n"],"names":["React","isSameDate","useCalendar","useCustomEnsuredControl","isFirstDay","isLastDay","addMonths","endOfDay","isWithinInterval","MONDAY","startOfDay","subMonths","CalendarDays","CalendarHeader","RootComponent","useCalendarKeyboardNavigation","useIsDayFocusable","styles","getIsDaySelected","day","value","CalendarRange","valueProp","defaultValue","onChange","disablePast","disableFuture","shouldDisableDate","weekStartsOn","disablePickers","prevMonthLabel","nextMonthLabel","changeMonthLabel","changeYearLabel","ariaLabel","prevMonthIcon","nextMonthIcon","listenDayChangesForUpdate","renderDayContent","dayTestId","leftPartHeaderTestsData","rightPartHeaderTestsData","getRootRef","props","_onChange","newRange","updateValue","viewDate","setViewDate","setPrevMonth","setNextMonth","focusedDay","setFocusedDay","isDayFocused","isDayDisabled","isMonthDisabled","isYearDisabled","hintedDate","setHintedDate","useState","secondViewDate","focusableDayOnFirstCalendar","focusableDayOnSecondCalendar","handleFirstCalendarKeyDown","handleSecondCalendarKeyDown","handleDayFocus","viewDates","getNewValue","useCallback","date","isValueEmpty","isRangeSelected","start","onDayChange","undefined","isDaySelected","isDayActive","Boolean","isDaySelectionEnd","dayOfWeek","isHintedDaySelectionEnd","isDaySelectionStart","isHintedDaySelectionStart","onDayEnter","onDayLeave","isDayHinted","onRightPartViewDateChange","newDate","isDayFocusableInFirstCalendar","isDayFocusableInSecondCalendar","onDayFocus","aria-label","baseClassName","host","div","className","inner","nextMonthHidden","onPrevMonth","header","onKeyDown","isDayFocusable","prevMonthHidden","onNextMonth"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/CalendarTime/CalendarTime.tsx"],"sourcesContent":["'use client';\n\nimport { useRef } from 'react';\nimport * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { Keys, pressedKey } from '../../lib/accessibility';\nimport { setHours, setMinutes } from '../../lib/date';\nimport { AdaptivityProvider } from '../AdaptivityProvider/AdaptivityProvider';\nimport { Button, type ButtonProps } from '../Button/Button';\nimport { CalendarTimePicker } from './CalendarTimePicker';\nimport styles from './CalendarTime.module.css';\n\nexport type CalendarTimeTestsProps = {\n /**\n * Передает атрибут `data-testid` для дропдауна выбора часа в календаре.\n */\n hoursTestId?: string;\n /**\n * Передает атрибут `data-testid` для дропдауна выбора минут в календаре.\n */\n minutesTestId?: string;\n /**\n * Передает атрибут `data-testid` для кнопки \"Готово\" в календаре.\n */\n doneButtonTestId?: string;\n};\n\nexport type CalendarDoneButtonProps = {\n /**\n * Кастомное отображение кнопки `\"Done\"`.\n */\n DoneButton?: React.ComponentType<ButtonProps>;\n /**\n * Текст отображаемый в кнопке `\"Done\"`.\n */\n doneButtonText?: string;\n /**\n * Управление отображением кнопки `\"Done\"`.\n */\n doneButtonShow?: boolean;\n /**\n * Блокировка взаимодействия с кнопкой \"Done\".\n */\n doneButtonDisabled?: boolean;\n /**\n * Обработки нажатия на кнопку `\"Done\"`.\n */\n onDoneButtonClick?: () => void;\n};\n\nexport interface CalendarTimeProps extends CalendarTimeTestsProps, CalendarDoneButtonProps {\n /**\n * Отображаемая дата.\n */\n value: Date;\n /**\n * Текст выпадающего списка с выбором часов. Делает его доступным для ассистивных технологий.\n */\n changeHoursLabel?: string;\n /**\n * Текст выпадающего списка с выбором минут. Делает его доступным для ассистивных технологий.\n */\n changeMinutesLabel?: string;\n /**\n * Обработчик изменения времени.\n */\n onChange?: (value: Date) => void;\n /**\n * Функция установки часа (для таймзонно-зависимого календаря).\n */\n setHours?: (date: Date, hours: number) => Date;\n /**\n * Функция установки минут (для таймзонно-зависимого календаря).\n */\n setMinutes?: (date: Date, minutes: number) => Date;\n /**\n * Функция для проверки блокировки выбора даты и времени.\n */\n isDayDisabled?: (day: Date, withTime?: boolean) => boolean;\n}\n\nconst hours: Array<{\n value: number;\n label: string;\n}> = [];\nfor (let i = 0; i < 24; i += 1) {\n hours.push({ value: i, label: String(i).padStart(2, '0') });\n}\n\nconst minutes: Array<{\n value: number;\n label: string;\n}> = [];\nfor (let i = 0; i < 60; i += 1) {\n minutes.push({ value: i, label: String(i).padStart(2, '0') });\n}\n\nexport const CalendarTime = ({\n value,\n onChange,\n onDoneButtonClick,\n changeHoursLabel,\n changeMinutesLabel,\n setHours: setHoursFn = setHours,\n setMinutes: setMinutesFn = setMinutes,\n isDayDisabled,\n doneButtonText = 'Готово',\n doneButtonDisabled = false,\n doneButtonShow = true,\n minutesTestId,\n hoursTestId,\n doneButtonTestId,\n DoneButton,\n}: CalendarTimeProps): React.ReactNode => {\n const hoursInputRef = useRef<HTMLInputElement | null>(null);\n const minutesInputRef = useRef<HTMLInputElement | null>(null);\n const doneButtonRef = useRef<HTMLButtonElement | null>(null);\n\n const localHours = isDayDisabled\n ? hours.map((hour) => {\n return { ...hour, disabled: isDayDisabled(setHoursFn(value, hour.value), true) };\n })\n : hours;\n\n const localMinutes = isDayDisabled\n ? minutes.map((minute) => {\n return { ...minute, disabled: isDayDisabled(setMinutesFn(value, minute.value), true) };\n })\n : minutes;\n\n const onPickerKeyDown = (e: React.KeyboardEvent) => {\n const key = pressedKey(e);\n /* Мы хотим иметь возможность быстро, по Enter перемещаться между\n * селектами с часами и минутами, также как мы это делаем по нажатию на Tab */\n if (key !== Keys.ENTER) {\n return;\n }\n\n const steps = [hoursInputRef, minutesInputRef, doneButtonRef].filter((ref) =>\n Boolean(ref.current),\n );\n const currentStepIndex = steps.findIndex((step) => step.current === e.target);\n const nextStepIndex = currentStepIndex + 1;\n if (nextStepIndex >= steps.length) {\n return;\n }\n const nextStep = steps[nextStepIndex];\n\n if (nextStep.current) {\n e.preventDefault();\n nextStep.current?.focus();\n }\n };\n\n const stopPropagationOfEscapeKeyboardEventWhenSelectIsOpen = React.useCallback(\n (event: React.KeyboardEvent, isOpen: boolean) => {\n if (isOpen && event.key === 'Escape') {\n event.stopPropagation();\n }\n },\n [],\n );\n\n const onSelectInputKeyDown = (e: React.KeyboardEvent, isOpen: boolean) => {\n onPickerKeyDown(e);\n stopPropagationOfEscapeKeyboardEventWhenSelectIsOpen(e, isOpen);\n };\n\n const renderDoneButton = () => {\n const ButtonComponent = DoneButton ?? Button;\n return (\n <ButtonComponent\n mode=\"secondary\"\n onClick={onDoneButtonClick}\n size=\"l\"\n getRootRef={doneButtonRef}\n onKeyDown={onPickerKeyDown}\n disabled={doneButtonDisabled}\n data-testid={doneButtonTestId}\n >\n {doneButtonText}\n </ButtonComponent>\n );\n };\n\n return (\n <div className={classNames(styles.host, !doneButtonShow && styles.host__withoutDone)}>\n <CalendarTimePicker\n value={value}\n getNumericValue={(v) => v.getHours()}\n onChange={onChange}\n options={localHours}\n setTime={setHoursFn}\n onInputKeyDown={onSelectInputKeyDown}\n inputRef={hoursInputRef}\n inputLabel={changeHoursLabel}\n inputTestId={hoursTestId}\n />\n <div className={styles.divider}>:</div>\n <CalendarTimePicker\n value={value}\n getNumericValue={(v) => v.getMinutes()}\n onChange={onChange}\n options={localMinutes}\n setTime={setMinutesFn}\n onInputKeyDown={onSelectInputKeyDown}\n inputRef={minutesInputRef}\n inputLabel={changeMinutesLabel}\n inputTestId={minutesTestId}\n />\n {doneButtonShow && (\n <div className={styles.button}>\n <AdaptivityProvider density=\"compact\">{renderDoneButton()}</AdaptivityProvider>\n </div>\n )}\n </div>\n );\n};\n"],"names":["useRef","React","classNames","Keys","pressedKey","setHours","setMinutes","AdaptivityProvider","Button","CalendarTimePicker","styles","hours","i","push","value","label","String","padStart","minutes","CalendarTime","onChange","onDoneButtonClick","changeHoursLabel","changeMinutesLabel","setHoursFn","setMinutesFn","isDayDisabled","doneButtonText","doneButtonDisabled","doneButtonShow","minutesTestId","hoursTestId","doneButtonTestId","DoneButton","hoursInputRef","minutesInputRef","doneButtonRef","localHours","map","hour","disabled","localMinutes","minute","onPickerKeyDown","e","key","ENTER","steps","filter","ref","Boolean","current","currentStepIndex","findIndex","step","target","nextStepIndex","length","nextStep","preventDefault","focus","stopPropagationOfEscapeKeyboardEventWhenSelectIsOpen","useCallback","event","isOpen","stopPropagation","onSelectInputKeyDown","renderDoneButton","ButtonComponent","mode","onClick","size","getRootRef","onKeyDown","data-testid","div","className","host","host__withoutDone","getNumericValue","v","getHours","options","setTime","onInputKeyDown","inputRef","inputLabel","inputTestId","divider","getMinutes","button","density"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/CalendarTime/CalendarTime.tsx"],"sourcesContent":["'use client';\n\nimport { useRef } from 'react';\nimport * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { Keys, pressedKey } from '../../lib/accessibility';\nimport { setHours, setMinutes } from '../../lib/date';\nimport { AdaptivityProvider } from '../AdaptivityProvider/AdaptivityProvider';\nimport { Button, type ButtonProps } from '../Button/Button';\nimport { CalendarTimePicker } from './CalendarTimePicker';\nimport styles from './CalendarTime.module.css';\n\nexport type CalendarTimeTestsProps = {\n /**\n * Передает атрибут `data-testid` для дропдауна выбора часа в календаре.\n */\n hoursTestId?: string | undefined;\n /**\n * Передает атрибут `data-testid` для дропдауна выбора минут в календаре.\n */\n minutesTestId?: string | undefined;\n /**\n * Передает атрибут `data-testid` для кнопки \"Готово\" в календаре.\n */\n doneButtonTestId?: string | undefined;\n};\n\nexport type CalendarDoneButtonProps = {\n /**\n * Кастомное отображение кнопки `\"Done\"`.\n */\n DoneButton?: React.ComponentType<ButtonProps> | undefined;\n /**\n * Текст отображаемый в кнопке `\"Done\"`.\n */\n doneButtonText?: string | undefined;\n /**\n * Управление отображением кнопки `\"Done\"`.\n */\n doneButtonShow?: boolean | undefined;\n /**\n * Блокировка взаимодействия с кнопкой \"Done\".\n */\n doneButtonDisabled?: boolean | undefined;\n /**\n * Обработки нажатия на кнопку `\"Done\"`.\n */\n onDoneButtonClick?: (() => void) | undefined;\n};\n\nexport interface CalendarTimeProps extends CalendarTimeTestsProps, CalendarDoneButtonProps {\n /**\n * Отображаемая дата.\n */\n value: Date;\n /**\n * Текст выпадающего списка с выбором часов. Делает его доступным для ассистивных технологий.\n */\n changeHoursLabel?: string | undefined;\n /**\n * Текст выпадающего списка с выбором минут. Делает его доступным для ассистивных технологий.\n */\n changeMinutesLabel?: string | undefined;\n /**\n * Обработчик изменения времени.\n */\n onChange?: ((value: Date) => void) | undefined;\n /**\n * Функция установки часа (для таймзонно-зависимого календаря).\n */\n setHours?: ((date: Date, hours: number) => Date) | undefined;\n /**\n * Функция установки минут (для таймзонно-зависимого календаря).\n */\n setMinutes?: ((date: Date, minutes: number) => Date) | undefined;\n /**\n * Функция для проверки блокировки выбора даты и времени.\n */\n isDayDisabled?: ((day: Date, withTime?: boolean) => boolean) | undefined;\n}\n\nconst hours: Array<{\n value: number;\n label: string;\n}> = [];\nfor (let i = 0; i < 24; i += 1) {\n hours.push({ value: i, label: String(i).padStart(2, '0') });\n}\n\nconst minutes: Array<{\n value: number;\n label: string;\n}> = [];\nfor (let i = 0; i < 60; i += 1) {\n minutes.push({ value: i, label: String(i).padStart(2, '0') });\n}\n\nexport const CalendarTime = ({\n value,\n onChange,\n onDoneButtonClick,\n changeHoursLabel,\n changeMinutesLabel,\n setHours: setHoursFn = setHours,\n setMinutes: setMinutesFn = setMinutes,\n isDayDisabled,\n doneButtonText = 'Готово',\n doneButtonDisabled = false,\n doneButtonShow = true,\n minutesTestId,\n hoursTestId,\n doneButtonTestId,\n DoneButton,\n}: CalendarTimeProps): React.ReactNode => {\n const hoursInputRef = useRef<HTMLInputElement | null>(null);\n const minutesInputRef = useRef<HTMLInputElement | null>(null);\n const doneButtonRef = useRef<HTMLButtonElement | null>(null);\n\n const localHours = isDayDisabled\n ? hours.map((hour) => {\n return { ...hour, disabled: isDayDisabled(setHoursFn(value, hour.value), true) };\n })\n : hours;\n\n const localMinutes = isDayDisabled\n ? minutes.map((minute) => {\n return { ...minute, disabled: isDayDisabled(setMinutesFn(value, minute.value), true) };\n })\n : minutes;\n\n const onPickerKeyDown = (e: React.KeyboardEvent) => {\n const key = pressedKey(e);\n /* Мы хотим иметь возможность быстро, по Enter перемещаться между\n * селектами с часами и минутами, также как мы это делаем по нажатию на Tab */\n if (key !== Keys.ENTER) {\n return;\n }\n\n const steps = [hoursInputRef, minutesInputRef, doneButtonRef].filter((ref) =>\n Boolean(ref.current),\n );\n const currentStepIndex = steps.findIndex((step) => step.current === e.target);\n const nextStepIndex = currentStepIndex + 1;\n if (nextStepIndex >= steps.length) {\n return;\n }\n const nextStep = steps[nextStepIndex];\n\n if (nextStep.current) {\n e.preventDefault();\n nextStep.current?.focus();\n }\n };\n\n const stopPropagationOfEscapeKeyboardEventWhenSelectIsOpen = React.useCallback(\n (event: React.KeyboardEvent, isOpen: boolean) => {\n if (isOpen && event.key === 'Escape') {\n event.stopPropagation();\n }\n },\n [],\n );\n\n const onSelectInputKeyDown = (e: React.KeyboardEvent, isOpen: boolean) => {\n onPickerKeyDown(e);\n stopPropagationOfEscapeKeyboardEventWhenSelectIsOpen(e, isOpen);\n };\n\n const renderDoneButton = () => {\n const ButtonComponent = DoneButton ?? Button;\n return (\n <ButtonComponent\n mode=\"secondary\"\n onClick={onDoneButtonClick}\n size=\"l\"\n getRootRef={doneButtonRef}\n onKeyDown={onPickerKeyDown}\n disabled={doneButtonDisabled}\n data-testid={doneButtonTestId}\n >\n {doneButtonText}\n </ButtonComponent>\n );\n };\n\n return (\n <div className={classNames(styles.host, !doneButtonShow && styles.host__withoutDone)}>\n <CalendarTimePicker\n value={value}\n getNumericValue={(v) => v.getHours()}\n onChange={onChange}\n options={localHours}\n setTime={setHoursFn}\n onInputKeyDown={onSelectInputKeyDown}\n inputRef={hoursInputRef}\n inputLabel={changeHoursLabel}\n inputTestId={hoursTestId}\n />\n <div className={styles.divider}>:</div>\n <CalendarTimePicker\n value={value}\n getNumericValue={(v) => v.getMinutes()}\n onChange={onChange}\n options={localMinutes}\n setTime={setMinutesFn}\n onInputKeyDown={onSelectInputKeyDown}\n inputRef={minutesInputRef}\n inputLabel={changeMinutesLabel}\n inputTestId={minutesTestId}\n />\n {doneButtonShow && (\n <div className={styles.button}>\n <AdaptivityProvider density=\"compact\">{renderDoneButton()}</AdaptivityProvider>\n </div>\n )}\n </div>\n );\n};\n"],"names":["useRef","React","classNames","Keys","pressedKey","setHours","setMinutes","AdaptivityProvider","Button","CalendarTimePicker","styles","hours","i","push","value","label","String","padStart","minutes","CalendarTime","onChange","onDoneButtonClick","changeHoursLabel","changeMinutesLabel","setHoursFn","setMinutesFn","isDayDisabled","doneButtonText","doneButtonDisabled","doneButtonShow","minutesTestId","hoursTestId","doneButtonTestId","DoneButton","hoursInputRef","minutesInputRef","doneButtonRef","localHours","map","hour","disabled","localMinutes","minute","onPickerKeyDown","e","key","ENTER","steps","filter","ref","Boolean","current","currentStepIndex","findIndex","step","target","nextStepIndex","length","nextStep","preventDefault","focus","stopPropagationOfEscapeKeyboardEventWhenSelectIsOpen","useCallback","event","isOpen","stopPropagation","onSelectInputKeyDown","renderDoneButton","ButtonComponent","mode","onClick","size","getRootRef","onKeyDown","data-testid","div","className","host","host__withoutDone","getNumericValue","v","getHours","options","setTime","onInputKeyDown","inputRef","inputLabel","inputTestId","divider","getMinutes","button","density"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/CalendarTime/CalendarTimePicker.tsx"],"sourcesContent":["'use client';\n\nimport { type ChangeEvent, useState } from 'react';\nimport * as React from 'react';\nimport { AdaptivityProvider } from '../AdaptivityProvider/AdaptivityProvider';\nimport { CustomSelect, type SelectProps } from '../CustomSelect/CustomSelect';\nimport { CustomSelectOption } from '../CustomSelectOption/CustomSelectOption';\nimport styles from './CalendarTime.module.css';\n\nconst selectFilterFn = () => true;\n\nconst validateValue = (\n value: string,\n validValues: Array<{\n value: number;\n label: string;\n }>,\n): boolean => {\n const numValue = Number(value);\n return !isNaN(numValue) && validValues.some((v) => v.value === numValue);\n};\n\n/* eslint-disable jsdoc/require-jsdoc */\ninterface CalendarTimePickerProps extends Pick<SelectProps, 'onInputKeyDown'> {\n value: Date;\n getNumericValue: (date: Date) => number;\n options: Array<{\n value: number;\n label: string;\n }>;\n onChange?: (value: Date) => void;\n setTime: (value: Date, time: number) => Date;\n inputRef: React.Ref<HTMLInputElement>;\n inputLabel?: string;\n inputTestId?: string;\n}\n/* eslint-enable jsdoc/require-jsdoc */\n\nexport const CalendarTimePicker = ({\n value,\n getNumericValue,\n options,\n onChange,\n setTime,\n inputRef,\n inputLabel,\n inputTestId,\n onInputKeyDown,\n}: CalendarTimePickerProps) => {\n const [inputValue, setInputValue] = useState<string | undefined>(undefined);\n\n const onBlur = React.useCallback(() => {\n setInputValue(undefined);\n }, []);\n\n const _onChange = React.useCallback(\n (_: ChangeEvent<HTMLSelectElement>, newValue: SelectProps['value']) =>\n onChange?.(setTime(value, Number(newValue))),\n [onChange, setTime, value],\n );\n\n const onPickerValueChange = (e: ChangeEvent<HTMLInputElement>) => {\n const numericValue = e.target.value.replace(/\\D/g, '');\n setInputValue(numericValue);\n if (validateValue(numericValue, options)) {\n onChange?.(setTime(value, Number(numericValue)));\n }\n };\n\n return (\n <div className={styles.picker}>\n <AdaptivityProvider density=\"compact\">\n <CustomSelect\n value={getNumericValue(value)}\n options={options}\n onChange={_onChange}\n forceDropdownPortal={false}\n searchable\n filterFn={selectFilterFn}\n onInputChange={onPickerValueChange}\n onInputKeyDown={onInputKeyDown}\n renderOption={({ children: optionChildren, ...optionProps }) => (\n <CustomSelectOption {...optionProps} textNoWrap>\n {optionChildren}\n </CustomSelectOption>\n )}\n slotProps={{\n input: {\n 'aria-label': inputLabel,\n 'data-testid': inputTestId,\n 'value': inputValue,\n 'getRootRef': inputRef,\n onBlur,\n },\n }}\n />\n </AdaptivityProvider>\n </div>\n );\n};\n"],"names":["useState","React","AdaptivityProvider","CustomSelect","CustomSelectOption","styles","selectFilterFn","validateValue","value","validValues","numValue","Number","isNaN","some","v","CalendarTimePicker","getNumericValue","options","onChange","setTime","inputRef","inputLabel","inputTestId","onInputKeyDown","inputValue","setInputValue","undefined","onBlur","useCallback","_onChange","_","newValue","onPickerValueChange","e","numericValue","target","replace","div","className","picker","density","forceDropdownPortal","searchable","filterFn","onInputChange","renderOption","children","optionChildren","optionProps","textNoWrap","slotProps","input"],"mappings":"AAAA;;AAEA,SAA2BA,QAAQ,QAAQ,QAAQ;AACnD,YAAYC,WAAW,QAAQ;AAC/B,SAASC,kBAAkB,QAAQ,8CAA2C;AAC9E,SAASC,YAAY,QAA0B,kCAA+B;AAC9E,SAASC,kBAAkB,QAAQ,8CAA2C;AAC9E,OAAOC,YAAY,4BAA4B;AAE/C,MAAMC,iBAAiB,IAAM;AAE7B,MAAMC,gBAAgB,CACpBC,OACAC;IAKA,MAAMC,WAAWC,OAAOH;IACxB,OAAO,CAACI,MAAMF,aAAaD,YAAYI,IAAI,CAAC,CAACC,IAAMA,EAAEN,KAAK,KAAKE;AACjE;AAgBA,qCAAqC,GAErC,OAAO,MAAMK,qBAAqB,CAAC,EACjCP,KAAK,EACLQ,eAAe,EACfC,OAAO,EACPC,QAAQ,EACRC,OAAO,EACPC,QAAQ,EACRC,UAAU,EACVC,WAAW,EACXC,cAAc,EACU;IACxB,MAAM,CAACC,YAAYC,cAAc,GAAGzB,SAA6B0B;IAEjE,MAAMC,SAAS1B,MAAM2B,WAAW,CAAC;QAC/BH,cAAcC;IAChB,GAAG,EAAE;IAEL,MAAMG,YAAY5B,MAAM2B,WAAW,CACjC,CAACE,GAAmCC,WAClCb,WAAWC,QAAQX,OAAOG,OAAOoB,aACnC;QAACb;QAAUC;QAASX;KAAM;IAG5B,MAAMwB,sBAAsB,CAACC;QAC3B,MAAMC,eAAeD,EAAEE,MAAM,CAAC3B,KAAK,CAAC4B,OAAO,CAAC,OAAO;QACnDX,cAAcS;QACd,IAAI3B,cAAc2B,cAAcjB,UAAU;YACxCC,WAAWC,QAAQX,OAAOG,OAAOuB;QACnC;IACF;IAEA,qBACE,KAACG;QAAIC,WAAWjC,OAAOkC,MAAM;kBAC3B,cAAA,KAACrC;YAAmBsC,SAAQ;sBAC1B,cAAA,KAACrC;gBACCK,OAAOQ,gBAAgBR;gBACvBS,SAASA;gBACTC,UAAUW;gBACVY,qBAAqB;gBACrBC,UAAU;gBACVC,UAAUrC;gBACVsC,eAAeZ;gBACfT,gBAAgBA;gBAChBsB,cAAc,CAAC,EAAEC,UAAUC,cAAc,EAAE,GAAGC,aAAa,iBACzD,KAAC5C;wBAAoB,GAAG4C,WAAW;wBAAEC,UAAU;kCAC5CF;;gBAGLG,WAAW;oBACTC,OAAO;wBACL,cAAc9B;wBACd,eAAeC;wBACf,SAASE;wBACT,cAAcJ;wBACdO;oBACF;gBACF;;;;AAKV,EAAE"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/CalendarTime/CalendarTimePicker.tsx"],"sourcesContent":["'use client';\n\nimport { type ChangeEvent, useState } from 'react';\nimport * as React from 'react';\nimport { AdaptivityProvider } from '../AdaptivityProvider/AdaptivityProvider';\nimport { CustomSelect, type SelectProps } from '../CustomSelect/CustomSelect';\nimport { CustomSelectOption } from '../CustomSelectOption/CustomSelectOption';\nimport styles from './CalendarTime.module.css';\n\nconst selectFilterFn = () => true;\n\nconst validateValue = (\n value: string,\n validValues: Array<{\n value: number;\n label: string;\n }>,\n): boolean => {\n const numValue = Number(value);\n return !isNaN(numValue) && validValues.some((v) => v.value === numValue);\n};\n\n/* eslint-disable jsdoc/require-jsdoc */\ninterface CalendarTimePickerProps extends Pick<SelectProps, 'onInputKeyDown'> {\n value: Date;\n getNumericValue: (date: Date) => number;\n options: Array<{\n value: number;\n label: string;\n }>;\n onChange?: ((value: Date) => void) | undefined;\n setTime: (value: Date, time: number) => Date;\n inputRef: React.Ref<HTMLInputElement>;\n inputLabel?: string | undefined;\n inputTestId?: string | undefined;\n}\n/* eslint-enable jsdoc/require-jsdoc */\n\nexport const CalendarTimePicker = ({\n value,\n getNumericValue,\n options,\n onChange,\n setTime,\n inputRef,\n inputLabel,\n inputTestId,\n onInputKeyDown,\n}: CalendarTimePickerProps) => {\n const [inputValue, setInputValue] = useState<string | undefined>(undefined);\n\n const onBlur = React.useCallback(() => {\n setInputValue(undefined);\n }, []);\n\n const _onChange = React.useCallback(\n (_: ChangeEvent<HTMLSelectElement>, newValue: SelectProps['value']) =>\n onChange?.(setTime(value, Number(newValue))),\n [onChange, setTime, value],\n );\n\n const onPickerValueChange = (e: ChangeEvent<HTMLInputElement>) => {\n const numericValue = e.target.value.replace(/\\D/g, '');\n setInputValue(numericValue);\n if (validateValue(numericValue, options)) {\n onChange?.(setTime(value, Number(numericValue)));\n }\n };\n\n return (\n <div className={styles.picker}>\n <AdaptivityProvider density=\"compact\">\n <CustomSelect\n value={getNumericValue(value)}\n options={options}\n onChange={_onChange}\n forceDropdownPortal={false}\n searchable\n filterFn={selectFilterFn}\n onInputChange={onPickerValueChange}\n onInputKeyDown={onInputKeyDown}\n renderOption={({ children: optionChildren, ...optionProps }) => (\n <CustomSelectOption {...optionProps} textNoWrap>\n {optionChildren}\n </CustomSelectOption>\n )}\n slotProps={{\n input: {\n 'aria-label': inputLabel,\n 'data-testid': inputTestId,\n 'value': inputValue,\n 'getRootRef': inputRef,\n onBlur,\n },\n }}\n />\n </AdaptivityProvider>\n </div>\n );\n};\n"],"names":["useState","React","AdaptivityProvider","CustomSelect","CustomSelectOption","styles","selectFilterFn","validateValue","value","validValues","numValue","Number","isNaN","some","v","CalendarTimePicker","getNumericValue","options","onChange","setTime","inputRef","inputLabel","inputTestId","onInputKeyDown","inputValue","setInputValue","undefined","onBlur","useCallback","_onChange","_","newValue","onPickerValueChange","e","numericValue","target","replace","div","className","picker","density","forceDropdownPortal","searchable","filterFn","onInputChange","renderOption","children","optionChildren","optionProps","textNoWrap","slotProps","input"],"mappings":"AAAA;;AAEA,SAA2BA,QAAQ,QAAQ,QAAQ;AACnD,YAAYC,WAAW,QAAQ;AAC/B,SAASC,kBAAkB,QAAQ,8CAA2C;AAC9E,SAASC,YAAY,QAA0B,kCAA+B;AAC9E,SAASC,kBAAkB,QAAQ,8CAA2C;AAC9E,OAAOC,YAAY,4BAA4B;AAE/C,MAAMC,iBAAiB,IAAM;AAE7B,MAAMC,gBAAgB,CACpBC,OACAC;IAKA,MAAMC,WAAWC,OAAOH;IACxB,OAAO,CAACI,MAAMF,aAAaD,YAAYI,IAAI,CAAC,CAACC,IAAMA,EAAEN,KAAK,KAAKE;AACjE;AAgBA,qCAAqC,GAErC,OAAO,MAAMK,qBAAqB,CAAC,EACjCP,KAAK,EACLQ,eAAe,EACfC,OAAO,EACPC,QAAQ,EACRC,OAAO,EACPC,QAAQ,EACRC,UAAU,EACVC,WAAW,EACXC,cAAc,EACU;IACxB,MAAM,CAACC,YAAYC,cAAc,GAAGzB,SAA6B0B;IAEjE,MAAMC,SAAS1B,MAAM2B,WAAW,CAAC;QAC/BH,cAAcC;IAChB,GAAG,EAAE;IAEL,MAAMG,YAAY5B,MAAM2B,WAAW,CACjC,CAACE,GAAmCC,WAClCb,WAAWC,QAAQX,OAAOG,OAAOoB,aACnC;QAACb;QAAUC;QAASX;KAAM;IAG5B,MAAMwB,sBAAsB,CAACC;QAC3B,MAAMC,eAAeD,EAAEE,MAAM,CAAC3B,KAAK,CAAC4B,OAAO,CAAC,OAAO;QACnDX,cAAcS;QACd,IAAI3B,cAAc2B,cAAcjB,UAAU;YACxCC,WAAWC,QAAQX,OAAOG,OAAOuB;QACnC;IACF;IAEA,qBACE,KAACG;QAAIC,WAAWjC,OAAOkC,MAAM;kBAC3B,cAAA,KAACrC;YAAmBsC,SAAQ;sBAC1B,cAAA,KAACrC;gBACCK,OAAOQ,gBAAgBR;gBACvBS,SAASA;gBACTC,UAAUW;gBACVY,qBAAqB;gBACrBC,UAAU;gBACVC,UAAUrC;gBACVsC,eAAeZ;gBACfT,gBAAgBA;gBAChBsB,cAAc,CAAC,EAAEC,UAAUC,cAAc,EAAE,GAAGC,aAAa,iBACzD,KAAC5C;wBAAoB,GAAG4C,WAAW;wBAAEC,UAAU;kCAC5CF;;gBAGLG,WAAW;oBACTC,OAAO;wBACL,cAAc9B;wBACd,eAAeC;wBACf,SAASE;wBACT,cAAcJ;wBACdO;oBACF;gBACF;;;;AAKV,EAAE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/Card/Card.tsx"],"sourcesContent":["import { classNames } from '@vkontakte/vkjs';\nimport type { HasComponent, HTMLAttributesWithRootRef } from '../../types';\nimport { RootComponent } from '../RootComponent/RootComponent';\nimport styles from './Card.module.css';\n\nexport interface CardProps extends HTMLAttributesWithRootRef<HTMLDivElement>, HasComponent {\n /**\n * Внешний вид карточки.\n */\n mode?: 'tint' | 'shadow' | 'outline' | 'outline-tint' | 'plain';\n}\n\n/**\n * @see https://vkui.io/components/card\n */\nexport const Card = ({\n mode = 'tint',\n Component = 'li',\n ...restProps\n}: CardProps): React.ReactNode => {\n const withBorder = mode === 'outline' || mode === 'outline-tint';\n return (\n <RootComponent\n {...restProps}\n Component={Component}\n baseClassName={classNames(\n styles.host,\n mode === 'outline' && styles.modeOutline,\n mode === 'shadow' && styles.modeShadow,\n mode === 'plain' && styles.modePlain,\n withBorder && styles.withBorder,\n )}\n />\n );\n};\n"],"names":["classNames","RootComponent","styles","Card","mode","Component","restProps","withBorder","baseClassName","host","modeOutline","modeShadow","modePlain"],"mappings":";AAAA,SAASA,UAAU,QAAQ,kBAAkB;AAE7C,SAASC,aAAa,QAAQ,oCAAiC;AAC/D,OAAOC,YAAY,oBAAoB;AASvC;;CAEC,GACD,OAAO,MAAMC,OAAO,CAAC,EACnBC,OAAO,MAAM,EACbC,YAAY,IAAI,EAChB,GAAGC,WACO;IACV,MAAMC,aAAaH,SAAS,aAAaA,SAAS;IAClD,qBACE,KAACH;QACE,GAAGK,SAAS;QACbD,WAAWA;QACXG,eAAeR,WACbE,OAAOO,IAAI,EACXL,SAAS,aAAaF,OAAOQ,WAAW,EACxCN,SAAS,YAAYF,OAAOS,UAAU,EACtCP,SAAS,WAAWF,OAAOU,SAAS,EACpCL,cAAcL,OAAOK,UAAU;;AAIvC,EAAE"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/Card/Card.tsx"],"sourcesContent":["import { classNames } from '@vkontakte/vkjs';\nimport type { HasComponent, HTMLAttributesWithRootRef } from '../../types';\nimport { RootComponent } from '../RootComponent/RootComponent';\nimport styles from './Card.module.css';\n\nexport interface CardProps extends HTMLAttributesWithRootRef<HTMLDivElement>, HasComponent {\n /**\n * Внешний вид карточки.\n */\n mode?: 'tint' | 'shadow' | 'outline' | 'outline-tint' | 'plain' | undefined;\n}\n\n/**\n * @see https://vkui.io/components/card\n */\nexport const Card = ({\n mode = 'tint',\n Component = 'li',\n ...restProps\n}: CardProps): React.ReactNode => {\n const withBorder = mode === 'outline' || mode === 'outline-tint';\n return (\n <RootComponent\n {...restProps}\n Component={Component}\n baseClassName={classNames(\n styles.host,\n mode === 'outline' && styles.modeOutline,\n mode === 'shadow' && styles.modeShadow,\n mode === 'plain' && styles.modePlain,\n withBorder && styles.withBorder,\n )}\n />\n );\n};\n"],"names":["classNames","RootComponent","styles","Card","mode","Component","restProps","withBorder","baseClassName","host","modeOutline","modeShadow","modePlain"],"mappings":";AAAA,SAASA,UAAU,QAAQ,kBAAkB;AAE7C,SAASC,aAAa,QAAQ,oCAAiC;AAC/D,OAAOC,YAAY,oBAAoB;AASvC;;CAEC,GACD,OAAO,MAAMC,OAAO,CAAC,EACnBC,OAAO,MAAM,EACbC,YAAY,IAAI,EAChB,GAAGC,WACO;IACV,MAAMC,aAAaH,SAAS,aAAaA,SAAS;IAClD,qBACE,KAACH;QACE,GAAGK,SAAS;QACbD,WAAWA;QACXG,eAAeR,WACbE,OAAOO,IAAI,EACXL,SAAS,aAAaF,OAAOQ,WAAW,EACxCN,SAAS,YAAYF,OAAOS,UAAU,EACtCP,SAAS,WAAWF,OAAOU,SAAS,EACpCL,cAAcL,OAAOK,UAAU;;AAIvC,EAAE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/CardGrid/CardGrid.tsx"],"sourcesContent":["'use client';\n\nimport { classNames } from '@vkontakte/vkjs';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { type SizeTypeValues, ViewWidth, type ViewWidthType } from '../../lib/adaptivity';\nimport type { HasComponent, HTMLAttributesWithRootRef } from '../../types';\nimport { RootComponent } from '../RootComponent/RootComponent';\nimport styles from './CardGrid.module.css';\n\nfunction getViewWidthClassName(\n viewWidth: ViewWidthType | 'none',\n legacySizeX: SizeTypeValues | undefined,\n) {\n // TODO [>=10]: #9015 Удалить это условие\n if (legacySizeX !== undefined && legacySizeX === 'compact') {\n return styles.viewWidthNone;\n }\n if (viewWidth === 'none') {\n return styles.viewWidthSmallTabletMinus;\n }\n if (viewWidth < ViewWidth.SMALL_TABLET) {\n return styles.viewWidthNone;\n }\n return;\n}\n\nconst stylesSize = {\n s: 'vkuiInternalCardGrid--size-s',\n m: 'vkuiInternalCardGrid--size-m',\n l: 'vkuiInternalCardGrid--size-l',\n};\n\nexport interface CardGridProps extends HTMLAttributesWithRootRef<HTMLDivElement>, HasComponent {\n /**\n * Размер карточек.\n */\n size?: 's' | 'm' | 'l';\n /**\n * Если true, то вокруг компонента присутствуют стандартные отсупы сверху/снизу и слева/справа.\n */\n padding?: boolean;\n}\n\n/**\n * @see https://vkui.io/components/card-grid\n */\nexport const CardGrid = ({\n size = 's',\n padding = false,\n Component = 'ul',\n ...restProps\n}: CardGridProps): React.ReactNode => {\n const { sizeX: legacySizeX, viewWidth = 'none' } = useAdaptivity();\n\n return (\n <RootComponent\n {...restProps}\n Component={Component}\n baseClassName={classNames(\n styles.host,\n 'vkuiInternalCardGrid',\n padding && styles.padding,\n stylesSize[size],\n getViewWidthClassName(viewWidth, legacySizeX),\n )}\n />\n );\n};\n"],"names":["classNames","useAdaptivity","ViewWidth","RootComponent","styles","getViewWidthClassName","viewWidth","legacySizeX","undefined","viewWidthNone","viewWidthSmallTabletMinus","SMALL_TABLET","stylesSize","s","m","l","CardGrid","size","padding","Component","restProps","sizeX","baseClassName","host"],"mappings":"AAAA;;AAEA,SAASA,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,aAAa,QAAQ,+BAA4B;AAC1D,SAA8BC,SAAS,QAA4B,gCAAuB;AAE1F,SAASC,aAAa,QAAQ,oCAAiC;AAC/D,OAAOC,YAAY,wBAAwB;AAE3C,SAASC,sBACPC,SAAiC,EACjCC,WAAuC;IAEvC,yCAAyC;IACzC,IAAIA,gBAAgBC,aAAaD,gBAAgB,WAAW;QAC1D,OAAOH,OAAOK,aAAa;IAC7B;IACA,IAAIH,cAAc,QAAQ;QACxB,OAAOF,OAAOM,yBAAyB;IACzC;IACA,IAAIJ,YAAYJ,UAAUS,YAAY,EAAE;QACtC,OAAOP,OAAOK,aAAa;IAC7B;IACA;AACF;AAEA,MAAMG,aAAa;IACjBC,GAAG;IACHC,GAAG;IACHC,GAAG;AACL;AAaA;;CAEC,GACD,OAAO,MAAMC,WAAW,CAAC,EACvBC,OAAO,GAAG,EACVC,UAAU,KAAK,EACfC,YAAY,IAAI,EAChB,GAAGC,WACW;IACd,MAAM,EAAEC,OAAOd,WAAW,EAAED,YAAY,MAAM,EAAE,GAAGL;IAEnD,qBACE,KAACE;QACE,GAAGiB,SAAS;QACbD,WAAWA;QACXG,eAAetB,WACbI,OAAOmB,IAAI,EACX,wBACAL,WAAWd,OAAOc,OAAO,EACzBN,UAAU,CAACK,KAAK,EAChBZ,sBAAsBC,WAAWC;;AAIzC,EAAE"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/CardGrid/CardGrid.tsx"],"sourcesContent":["'use client';\n\nimport { classNames } from '@vkontakte/vkjs';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { type SizeTypeValues, ViewWidth, type ViewWidthType } from '../../lib/adaptivity';\nimport type { HasComponent, HTMLAttributesWithRootRef } from '../../types';\nimport { RootComponent } from '../RootComponent/RootComponent';\nimport styles from './CardGrid.module.css';\n\nfunction getViewWidthClassName(\n viewWidth: ViewWidthType | 'none',\n legacySizeX: SizeTypeValues | undefined,\n) {\n // TODO [>=10]: #9015 Удалить это условие\n if (legacySizeX !== undefined && legacySizeX === 'compact') {\n return styles.viewWidthNone;\n }\n if (viewWidth === 'none') {\n return styles.viewWidthSmallTabletMinus;\n }\n if (viewWidth < ViewWidth.SMALL_TABLET) {\n return styles.viewWidthNone;\n }\n return;\n}\n\nconst stylesSize = {\n s: 'vkuiInternalCardGrid--size-s',\n m: 'vkuiInternalCardGrid--size-m',\n l: 'vkuiInternalCardGrid--size-l',\n};\n\nexport interface CardGridProps extends HTMLAttributesWithRootRef<HTMLDivElement>, HasComponent {\n /**\n * Размер карточек.\n */\n size?: 's' | 'm' | 'l' | undefined;\n /**\n * Если true, то вокруг компонента присутствуют стандартные отсупы сверху/снизу и слева/справа.\n */\n padding?: boolean | undefined;\n}\n\n/**\n * @see https://vkui.io/components/card-grid\n */\nexport const CardGrid = ({\n size = 's',\n padding = false,\n Component = 'ul',\n ...restProps\n}: CardGridProps): React.ReactNode => {\n const { sizeX: legacySizeX, viewWidth = 'none' } = useAdaptivity();\n\n return (\n <RootComponent\n {...restProps}\n Component={Component}\n baseClassName={classNames(\n styles.host,\n 'vkuiInternalCardGrid',\n padding && styles.padding,\n stylesSize[size],\n getViewWidthClassName(viewWidth, legacySizeX),\n )}\n />\n );\n};\n"],"names":["classNames","useAdaptivity","ViewWidth","RootComponent","styles","getViewWidthClassName","viewWidth","legacySizeX","undefined","viewWidthNone","viewWidthSmallTabletMinus","SMALL_TABLET","stylesSize","s","m","l","CardGrid","size","padding","Component","restProps","sizeX","baseClassName","host"],"mappings":"AAAA;;AAEA,SAASA,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,aAAa,QAAQ,+BAA4B;AAC1D,SAA8BC,SAAS,QAA4B,gCAAuB;AAE1F,SAASC,aAAa,QAAQ,oCAAiC;AAC/D,OAAOC,YAAY,wBAAwB;AAE3C,SAASC,sBACPC,SAAiC,EACjCC,WAAuC;IAEvC,yCAAyC;IACzC,IAAIA,gBAAgBC,aAAaD,gBAAgB,WAAW;QAC1D,OAAOH,OAAOK,aAAa;IAC7B;IACA,IAAIH,cAAc,QAAQ;QACxB,OAAOF,OAAOM,yBAAyB;IACzC;IACA,IAAIJ,YAAYJ,UAAUS,YAAY,EAAE;QACtC,OAAOP,OAAOK,aAAa;IAC7B;IACA;AACF;AAEA,MAAMG,aAAa;IACjBC,GAAG;IACHC,GAAG;IACHC,GAAG;AACL;AAaA;;CAEC,GACD,OAAO,MAAMC,WAAW,CAAC,EACvBC,OAAO,GAAG,EACVC,UAAU,KAAK,EACfC,YAAY,IAAI,EAChB,GAAGC,WACW;IACd,MAAM,EAAEC,OAAOd,WAAW,EAAED,YAAY,MAAM,EAAE,GAAGL;IAEnD,qBACE,KAACE;QACE,GAAGiB,SAAS;QACbD,WAAWA;QACXG,eAAetB,WACbI,OAAOmB,IAAI,EACX,wBACAL,WAAWd,OAAOc,OAAO,EACzBN,UAAU,CAACK,KAAK,EAChBZ,sBAAsBC,WAAWC;;AAIzC,EAAE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/CardScroll/CardScroll.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useConfigDirection } from '../../hooks/useConfigDirection';\nimport { useDOM } from '../../lib/dom';\nimport type { HasComponent, HTMLAttributesWithRootRef } from '../../types';\nimport { HorizontalScroll, type HorizontalScrollProps } from '../HorizontalScroll/HorizontalScroll';\nimport { RootComponent } from '../RootComponent/RootComponent';\nimport styles from './CardScroll.module.css';\n\nconst stylesSize = {\n s: 'vkuiInternalCardScroll--size-s',\n m: 'vkuiInternalCardScroll--size-m',\n l: 'vkuiInternalCardScroll--size-l',\n};\n\nexport interface CardScrollProps\n extends HTMLAttributesWithRootRef<HTMLDivElement>,\n HasComponent,\n Pick<HorizontalScrollProps, 'showArrows' | 'prevButtonTestId' | 'nextButtonTestId'> {\n /**\n * При `size=false` ширина `Card` будет регулироваться контентом внутри. В остальных случаях — будет явно задана в процентах.\n */\n size?: 's' | 'm' | 'l' | false;\n /**\n * Добавляет отступы по краям слева и справа.\n */\n padding?: boolean;\n /**\n * Позволяет поменять тег используемый для обертки над карточками.\n */\n CardsListComponent?: React.ElementType;\n}\n\n/**\n * @see https://vkui.io/components/card-scroll\n */\nexport const CardScroll = ({\n children,\n size = 's',\n showArrows = true,\n padding = false,\n CardsListComponent = 'ul',\n prevButtonTestId,\n nextButtonTestId,\n ...restProps\n}: CardScrollProps): React.ReactNode => {\n const refContainer = React.useRef<HTMLDivElement>(null);\n const direction = useConfigDirection();\n\n const { window } = useDOM();\n\n const getPadding = (container: HTMLElement) => {\n return parseFloat(\n window!\n .getComputedStyle(container)\n .getPropertyValue('--vkui_internal--CardScroll_horizontal_padding'),\n );\n };\n\n const slideOffsetFromStart = (slide: HTMLElement) => {\n const containerWidth = refContainer.current?.offsetWidth || 0;\n return direction === 'rtl'\n ? containerWidth - slide.offsetLeft - slide.offsetWidth\n : slide.offsetLeft;\n };\n\n function getScrollToLeft(offset: number): number {\n if (!refContainer.current) {\n return offset;\n }\n const containerWidth = refContainer.current.offsetWidth;\n\n const getMarginEnd = (el: HTMLElement) => {\n const computedStyles = window!.getComputedStyle(el);\n return (\n parseInt(computedStyles.marginInlineEnd) ||\n (direction === 'rtl'\n ? parseInt(computedStyles.marginLeft)\n : parseInt(computedStyles.marginRight)) ||\n 0\n );\n };\n\n const slideIndex = ([...refContainer.current.children] as HTMLElement[]).findIndex(\n (el: HTMLElement) =>\n slideOffsetFromStart(el) + el.offsetWidth + getMarginEnd(el) - offset >= 0,\n );\n\n if (slideIndex === -1) {\n return offset;\n }\n\n const slide = refContainer.current.children[slideIndex] as HTMLElement;\n const padding = getPadding(refContainer.current);\n const scrollTo = slideOffsetFromStart(slide) - (containerWidth - slide.offsetWidth) + padding;\n\n if (scrollTo <= 2 * padding) {\n return 0;\n }\n\n return scrollTo;\n }\n\n function getScrollToRight(offset: number): number {\n if (!refContainer.current) {\n return offset;\n }\n const containerWidth = refContainer.current.offsetWidth;\n const slide = Array.prototype.find.call(refContainer.current.children, (el: HTMLElement) => {\n return slideOffsetFromStart(el) + el.offsetWidth - offset > containerWidth;\n }) as HTMLElement;\n\n if (!slide) {\n return offset;\n }\n\n const padding = getPadding(refContainer.current);\n return slideOffsetFromStart(slide) - padding;\n }\n\n return (\n <RootComponent\n {...restProps}\n baseClassName={classNames(\n styles.host,\n 'vkuiInternalCardScroll',\n size !== false && stylesSize[size],\n padding && styles.withPaddings,\n )}\n >\n <HorizontalScroll\n getScrollToLeft={getScrollToLeft}\n getScrollToRight={getScrollToRight}\n showArrows={showArrows}\n prevButtonTestId={prevButtonTestId}\n nextButtonTestId={nextButtonTestId}\n ContentWrapperComponent={CardsListComponent}\n contentWrapperRef={refContainer}\n contentWrapperClassName={styles.in}\n >\n {children}\n </HorizontalScroll>\n </RootComponent>\n );\n};\n"],"names":["React","classNames","useConfigDirection","useDOM","HorizontalScroll","RootComponent","styles","stylesSize","s","m","l","CardScroll","children","size","showArrows","padding","CardsListComponent","prevButtonTestId","nextButtonTestId","restProps","refContainer","useRef","direction","window","getPadding","container","parseFloat","getComputedStyle","getPropertyValue","slideOffsetFromStart","slide","containerWidth","current","offsetWidth","offsetLeft","getScrollToLeft","offset","getMarginEnd","el","computedStyles","parseInt","marginInlineEnd","marginLeft","marginRight","slideIndex","findIndex","scrollTo","getScrollToRight","Array","prototype","find","call","baseClassName","host","withPaddings","ContentWrapperComponent","contentWrapperRef","contentWrapperClassName","in"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/CardScroll/CardScroll.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useConfigDirection } from '../../hooks/useConfigDirection';\nimport { useDOM } from '../../lib/dom';\nimport type { HasComponent, HTMLAttributesWithRootRef } from '../../types';\nimport { HorizontalScroll, type HorizontalScrollProps } from '../HorizontalScroll/HorizontalScroll';\nimport { RootComponent } from '../RootComponent/RootComponent';\nimport styles from './CardScroll.module.css';\n\nconst stylesSize = {\n s: 'vkuiInternalCardScroll--size-s',\n m: 'vkuiInternalCardScroll--size-m',\n l: 'vkuiInternalCardScroll--size-l',\n};\n\nexport interface CardScrollProps\n extends HTMLAttributesWithRootRef<HTMLDivElement>,\n HasComponent,\n Pick<HorizontalScrollProps, 'showArrows' | 'prevButtonTestId' | 'nextButtonTestId'> {\n /**\n * При `size=false` ширина `Card` будет регулироваться контентом внутри. В остальных случаях — будет явно задана в процентах.\n */\n size?: 's' | 'm' | 'l' | false | undefined;\n /**\n * Добавляет отступы по краям слева и справа.\n */\n padding?: boolean | undefined;\n /**\n * Позволяет поменять тег используемый для обертки над карточками.\n */\n CardsListComponent?: React.ElementType | undefined;\n}\n\n/**\n * @see https://vkui.io/components/card-scroll\n */\nexport const CardScroll = ({\n children,\n size = 's',\n showArrows = true,\n padding = false,\n CardsListComponent = 'ul',\n prevButtonTestId,\n nextButtonTestId,\n ...restProps\n}: CardScrollProps): React.ReactNode => {\n const refContainer = React.useRef<HTMLDivElement>(null);\n const direction = useConfigDirection();\n\n const { window } = useDOM();\n\n const getPadding = (container: HTMLElement) => {\n return parseFloat(\n window!\n .getComputedStyle(container)\n .getPropertyValue('--vkui_internal--CardScroll_horizontal_padding'),\n );\n };\n\n const slideOffsetFromStart = (slide: HTMLElement) => {\n const containerWidth = refContainer.current?.offsetWidth || 0;\n return direction === 'rtl'\n ? containerWidth - slide.offsetLeft - slide.offsetWidth\n : slide.offsetLeft;\n };\n\n function getScrollToLeft(offset: number): number {\n if (!refContainer.current) {\n return offset;\n }\n const containerWidth = refContainer.current.offsetWidth;\n\n const getMarginEnd = (el: HTMLElement) => {\n const computedStyles = window!.getComputedStyle(el);\n return (\n parseInt(computedStyles.marginInlineEnd) ||\n (direction === 'rtl'\n ? parseInt(computedStyles.marginLeft)\n : parseInt(computedStyles.marginRight)) ||\n 0\n );\n };\n\n const slideIndex = ([...refContainer.current.children] as HTMLElement[]).findIndex(\n (el: HTMLElement) =>\n slideOffsetFromStart(el) + el.offsetWidth + getMarginEnd(el) - offset >= 0,\n );\n\n if (slideIndex === -1) {\n return offset;\n }\n\n const slide = refContainer.current.children[slideIndex] as HTMLElement;\n const padding = getPadding(refContainer.current);\n const scrollTo = slideOffsetFromStart(slide) - (containerWidth - slide.offsetWidth) + padding;\n\n if (scrollTo <= 2 * padding) {\n return 0;\n }\n\n return scrollTo;\n }\n\n function getScrollToRight(offset: number): number {\n if (!refContainer.current) {\n return offset;\n }\n const containerWidth = refContainer.current.offsetWidth;\n const slide = Array.prototype.find.call(refContainer.current.children, (el: HTMLElement) => {\n return slideOffsetFromStart(el) + el.offsetWidth - offset > containerWidth;\n }) as HTMLElement;\n\n if (!slide) {\n return offset;\n }\n\n const padding = getPadding(refContainer.current);\n return slideOffsetFromStart(slide) - padding;\n }\n\n return (\n <RootComponent\n {...restProps}\n baseClassName={classNames(\n styles.host,\n 'vkuiInternalCardScroll',\n size !== false && stylesSize[size],\n padding && styles.withPaddings,\n )}\n >\n <HorizontalScroll\n getScrollToLeft={getScrollToLeft}\n getScrollToRight={getScrollToRight}\n showArrows={showArrows}\n prevButtonTestId={prevButtonTestId}\n nextButtonTestId={nextButtonTestId}\n ContentWrapperComponent={CardsListComponent}\n contentWrapperRef={refContainer}\n contentWrapperClassName={styles.in}\n >\n {children}\n </HorizontalScroll>\n </RootComponent>\n );\n};\n"],"names":["React","classNames","useConfigDirection","useDOM","HorizontalScroll","RootComponent","styles","stylesSize","s","m","l","CardScroll","children","size","showArrows","padding","CardsListComponent","prevButtonTestId","nextButtonTestId","restProps","refContainer","useRef","direction","window","getPadding","container","parseFloat","getComputedStyle","getPropertyValue","slideOffsetFromStart","slide","containerWidth","current","offsetWidth","offsetLeft","getScrollToLeft","offset","getMarginEnd","el","computedStyles","parseInt","marginInlineEnd","marginLeft","marginRight","slideIndex","findIndex","scrollTo","getScrollToRight","Array","prototype","find","call","baseClassName","host","withPaddings","ContentWrapperComponent","contentWrapperRef","contentWrapperClassName","in"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/CarouselBase/Bullets.tsx"],"sourcesContent":["/* eslint-disable jsdoc/require-jsdoc */\n\nimport { classNames } from '@vkontakte/vkjs';\nimport type { BaseGalleryProps } from './types';\nimport styles from './CarouselBase.module.css';\n\nexport interface BulletsTestIds {\n /**\n * Передает атрибут `data-testid` для bullets.\n */\n bulletTestId?: (index: number, active: boolean) => string;\n}\n\ninterface BulletsProps extends BulletsTestIds {\n bullets: Exclude<BaseGalleryProps['bullets'], false | undefined>;\n slideIndex: number;\n count: number;\n}\n\nconst stylesBullets = {\n dark: styles.bulletsDark,\n light: styles.bulletsLight,\n};\n\nexport const Bullets = ({ bullets, slideIndex, count, bulletTestId }: BulletsProps) => {\n return (\n <div aria-hidden className={classNames(styles.bullets, stylesBullets[bullets])}>\n {Array.from({ length: count }).map((_, index) => (\n <div\n className={classNames(styles.bullet, index === slideIndex && styles.bulletActive)}\n data-testid={bulletTestId?.(index, index === slideIndex)}\n key={index}\n />\n ))}\n </div>\n );\n};\n"],"names":["classNames","styles","stylesBullets","dark","bulletsDark","light","bulletsLight","Bullets","bullets","slideIndex","count","bulletTestId","div","aria-hidden","className","Array","from","length","map","_","index","bullet","bulletActive","data-testid"],"mappings":";AAAA,sCAAsC,GAEtC,SAASA,UAAU,QAAQ,kBAAkB;AAE7C,OAAOC,YAAY,4BAA4B;AAe/C,MAAMC,gBAAgB;IACpBC,MAAMF,OAAOG,WAAW;IACxBC,OAAOJ,OAAOK,YAAY;AAC5B;AAEA,OAAO,MAAMC,UAAU,CAAC,EAAEC,OAAO,EAAEC,UAAU,EAAEC,KAAK,EAAEC,YAAY,EAAgB;IAChF,qBACE,KAACC;QAAIC,aAAW;QAACC,WAAWd,WAAWC,OAAOO,OAAO,EAAEN,aAAa,CAACM,QAAQ;kBAC1EO,MAAMC,IAAI,CAAC;YAAEC,QAAQP;QAAM,GAAGQ,GAAG,CAAC,CAACC,GAAGC,sBACrC,KAACR;gBACCE,WAAWd,WAAWC,OAAOoB,MAAM,EAAED,UAAUX,cAAcR,OAAOqB,YAAY;gBAChFC,eAAaZ,eAAeS,OAAOA,UAAUX;eACxCW;;AAKf,EAAE"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/CarouselBase/Bullets.tsx"],"sourcesContent":["/* eslint-disable jsdoc/require-jsdoc */\n\nimport { classNames } from '@vkontakte/vkjs';\nimport type { BaseGalleryProps } from './types';\nimport styles from './CarouselBase.module.css';\n\nexport interface BulletsTestIds {\n /**\n * Передает атрибут `data-testid` для bullets.\n */\n bulletTestId?: ((index: number, active: boolean) => string) | undefined;\n}\n\ninterface BulletsProps extends BulletsTestIds {\n bullets: Exclude<BaseGalleryProps['bullets'], false | undefined>;\n slideIndex: number;\n count: number;\n}\n\nconst stylesBullets = {\n dark: styles.bulletsDark,\n light: styles.bulletsLight,\n};\n\nexport const Bullets = ({ bullets, slideIndex, count, bulletTestId }: BulletsProps) => {\n return (\n <div aria-hidden className={classNames(styles.bullets, stylesBullets[bullets])}>\n {Array.from({ length: count }).map((_, index) => (\n <div\n className={classNames(styles.bullet, index === slideIndex && styles.bulletActive)}\n data-testid={bulletTestId?.(index, index === slideIndex)}\n key={index}\n />\n ))}\n </div>\n );\n};\n"],"names":["classNames","styles","stylesBullets","dark","bulletsDark","light","bulletsLight","Bullets","bullets","slideIndex","count","bulletTestId","div","aria-hidden","className","Array","from","length","map","_","index","bullet","bulletActive","data-testid"],"mappings":";AAAA,sCAAsC,GAEtC,SAASA,UAAU,QAAQ,kBAAkB;AAE7C,OAAOC,YAAY,4BAA4B;AAe/C,MAAMC,gBAAgB;IACpBC,MAAMF,OAAOG,WAAW;IACxBC,OAAOJ,OAAOK,YAAY;AAC5B;AAEA,OAAO,MAAMC,UAAU,CAAC,EAAEC,OAAO,EAAEC,UAAU,EAAEC,KAAK,EAAEC,YAAY,EAAgB;IAChF,qBACE,KAACC;QAAIC,aAAW;QAACC,WAAWd,WAAWC,OAAOO,OAAO,EAAEN,aAAa,CAACM,QAAQ;kBAC1EO,MAAMC,IAAI,CAAC;YAAEC,QAAQP;QAAM,GAAGQ,GAAG,CAAC,CAACC,GAAGC,sBACrC,KAACR;gBACCE,WAAWd,WAAWC,OAAOoB,MAAM,EAAED,UAAUX,cAAcR,OAAOqB,YAAY;gBAChFC,eAAaZ,eAAeS,OAAOA,UAAUX;eACxCW;;AAKf,EAAE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/CarouselBase/CarouselViewPort.tsx"],"sourcesContent":["'use client';\n/* eslint-disable jsdoc/require-jsdoc */\n\nimport * as React from 'react';\nimport type { HasChildren, HasRootRef } from '../../types';\nimport { type CustomTouchEvent, Touch } from '../Touch/Touch';\nimport type { BaseGalleryProps } from './types';\nimport styles from './CarouselBase.module.css';\n\ntype GalleryViewPortProps = Pick<\n BaseGalleryProps,\n 'slideWidth' | 'slideTestId' | 'slideRoleDescription' | 'slideLabel' | 'onChange'\n> &\n HasRootRef<HTMLElement> &\n HasChildren & {\n onStart: (e: CustomTouchEvent) => void;\n onMoveX: (e: CustomTouchEvent) => void;\n onEnd: (e: CustomTouchEvent) => void;\n setSlideRef: (slideRef: HTMLDivElement | null, slideIndex: number) => void;\n layerRef?: React.Ref<HTMLDivElement
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/CarouselBase/CarouselViewPort.tsx"],"sourcesContent":["'use client';\n/* eslint-disable jsdoc/require-jsdoc */\n\nimport * as React from 'react';\nimport type { HasChildren, HasRootRef } from '../../types';\nimport { type CustomTouchEvent, Touch } from '../Touch/Touch';\nimport type { BaseGalleryProps } from './types';\nimport styles from './CarouselBase.module.css';\n\ntype GalleryViewPortProps = Pick<\n BaseGalleryProps,\n 'slideWidth' | 'slideTestId' | 'slideRoleDescription' | 'slideLabel' | 'onChange'\n> &\n HasRootRef<HTMLElement> &\n HasChildren & {\n onStart: (e: CustomTouchEvent) => void;\n onMoveX: (e: CustomTouchEvent) => void;\n onEnd: (e: CustomTouchEvent) => void;\n setSlideRef: (slideRef: HTMLDivElement | null, slideIndex: number) => void;\n layerRef?: React.Ref<HTMLDivElement> | undefined;\n slidesContainerId: string;\n };\n\nconst defaultSlideLabel = (index: number, slidesCount: number) => `${index + 1} из ${slidesCount}`;\n\nexport const CarouselViewPort = ({\n slideTestId,\n slideWidth,\n slideLabel = defaultSlideLabel,\n slideRoleDescription = 'Слайд',\n onChange,\n onStart,\n onMoveX,\n onEnd,\n getRootRef,\n layerRef,\n children,\n setSlideRef,\n slidesContainerId,\n}: GalleryViewPortProps) => {\n const slidesCount = React.Children.count(children);\n\n const onSlideFocus = React.useCallback(\n (e: React.FocusEvent<HTMLDivElement>) => onChange?.(Number(e.currentTarget.dataset.index)),\n [onChange],\n );\n\n return (\n <Touch\n className={styles.viewport}\n onStartX={onStart}\n onMoveX={onMoveX}\n onEnd={onEnd}\n style={{ width: slideWidth === 'custom' ? '100%' : slideWidth }}\n noSlideClick\n getRootRef={getRootRef}\n >\n <div className={styles.layer} ref={layerRef} id={slidesContainerId}>\n {React.Children.map(children, (item: React.ReactNode, i: number) => (\n <div\n role=\"group\"\n aria-roledescription={slideRoleDescription}\n aria-label={typeof slideLabel === 'function' ? slideLabel(i, slidesCount) : slideLabel}\n className={styles.slide}\n key={`slide-${i}`}\n data-testid={slideTestId?.(i)}\n ref={(el) => setSlideRef(el, i)}\n data-index={i}\n tabIndex={0}\n onFocus={onSlideFocus}\n >\n {item}\n </div>\n ))}\n </div>\n </Touch>\n );\n};\n"],"names":["React","Touch","styles","defaultSlideLabel","index","slidesCount","CarouselViewPort","slideTestId","slideWidth","slideLabel","slideRoleDescription","onChange","onStart","onMoveX","onEnd","getRootRef","layerRef","children","setSlideRef","slidesContainerId","Children","count","onSlideFocus","useCallback","e","Number","currentTarget","dataset","className","viewport","onStartX","style","width","noSlideClick","div","layer","ref","id","map","item","i","role","aria-roledescription","aria-label","slide","data-testid","el","data-index","tabIndex","onFocus"],"mappings":"AAAA;;AACA,sCAAsC,GAEtC,YAAYA,WAAW,QAAQ;AAE/B,SAAgCC,KAAK,QAAQ,oBAAiB;AAE9D,OAAOC,YAAY,4BAA4B;AAgB/C,MAAMC,oBAAoB,CAACC,OAAeC,cAAwB,GAAGD,QAAQ,EAAE,IAAI,EAAEC,aAAa;AAElG,OAAO,MAAMC,mBAAmB,CAAC,EAC/BC,WAAW,EACXC,UAAU,EACVC,aAAaN,iBAAiB,EAC9BO,uBAAuB,OAAO,EAC9BC,QAAQ,EACRC,OAAO,EACPC,OAAO,EACPC,KAAK,EACLC,UAAU,EACVC,QAAQ,EACRC,QAAQ,EACRC,WAAW,EACXC,iBAAiB,EACI;IACrB,MAAMd,cAAcL,MAAMoB,QAAQ,CAACC,KAAK,CAACJ;IAEzC,MAAMK,eAAetB,MAAMuB,WAAW,CACpC,CAACC,IAAwCb,WAAWc,OAAOD,EAAEE,aAAa,CAACC,OAAO,CAACvB,KAAK,IACxF;QAACO;KAAS;IAGZ,qBACE,KAACV;QACC2B,WAAW1B,OAAO2B,QAAQ;QAC1BC,UAAUlB;QACVC,SAASA;QACTC,OAAOA;QACPiB,OAAO;YAAEC,OAAOxB,eAAe,WAAW,SAASA;QAAW;QAC9DyB,YAAY;QACZlB,YAAYA;kBAEZ,cAAA,KAACmB;YAAIN,WAAW1B,OAAOiC,KAAK;YAAEC,KAAKpB;YAAUqB,IAAIlB;sBAC9CnB,MAAMoB,QAAQ,CAACkB,GAAG,CAACrB,UAAU,CAACsB,MAAuBC,kBACpD,KAACN;oBACCO,MAAK;oBACLC,wBAAsBhC;oBACtBiC,cAAY,OAAOlC,eAAe,aAAaA,WAAW+B,GAAGnC,eAAeI;oBAC5EmB,WAAW1B,OAAO0C,KAAK;oBAEvBC,eAAatC,cAAciC;oBAC3BJ,KAAK,CAACU,KAAO5B,YAAY4B,IAAIN;oBAC7BO,cAAYP;oBACZQ,UAAU;oBACVC,SAAS3B;8BAERiB;mBAPI,CAAC,MAAM,EAAEC,GAAG;;;AAa7B,EAAE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/CarouselBase/ScrollArrows.tsx"],"sourcesContent":["'use client';\n/* eslint-disable jsdoc/require-jsdoc */\n\nimport type * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useFocusVisible } from '../../hooks/useFocusVisible';\nimport { ScrollArrow } from '../ScrollArrow/ScrollArrow';\nimport type { BaseGalleryProps } from './types';\nimport styles from './CarouselBase.module.css';\n\nconst stylesArrowAreaHeight = {\n stretch: styles.arrowAreaStretch,\n fit: styles.arrowAreaFit,\n};\n\nexport const getArrowClassName = (\n side: 'start' | 'end',\n arrowAreaHeight: Exclude<BaseGalleryProps['arrowAreaHeight'], undefined>,\n focusVisible: boolean,\n) => {\n return classNames(\n styles.arrow,\n side === 'start' ? styles.arrowStart : styles.arrowEnd,\n stylesArrowAreaHeight[arrowAreaHeight],\n focusVisible && styles.arrowFocusVisible,\n );\n};\n\nexport interface ScrollArrowsTestIds {\n /**\n * Передает атрибут `data-testid` для кнопки перехода к следующему слайду.\n */\n nextArrowTestId?: string;\n /**\n * Передает атрибут `data-testid` для кнопки перехода к предыдущему слайду.\n */\n prevArrowTestId?: string;\n}\n\ninterface ScrollArrowsProps\n extends Pick<\n BaseGalleryProps,\n 'showArrows' | 'arrowSize' | 'arrowAreaHeight' | 'arrowPrevLabel' | 'arrowNextLabel'\n >,\n ScrollArrowsTestIds {\n canSlideLeft: boolean;\n canSlideRight: boolean;\n onSlideLeft: (e: React.MouseEvent) => void;\n onSlideRight: (e: React.MouseEvent) => void;\n slidesContainerId: string;\n}\n\nexport const ScrollArrows = ({\n canSlideLeft,\n canSlideRight,\n onSlideRight,\n onSlideLeft,\n showArrows = false,\n arrowSize = 'm',\n arrowAreaHeight = 'stretch',\n arrowPrevLabel,\n arrowNextLabel,\n nextArrowTestId,\n prevArrowTestId,\n slidesContainerId,\n}: ScrollArrowsProps) => {\n const { focusVisible: prevArrowFocusVisible, ...prevArrowFocusHandlers } = useFocusVisible();\n const { focusVisible: nextArrowFocusVisible, ...nextArrowFocusHandlers } = useFocusVisible();\n\n return showArrows ? (\n <>\n {canSlideLeft && (\n <ScrollArrow\n className={getArrowClassName('start', arrowAreaHeight, prevArrowFocusVisible)}\n direction=\"left\"\n onClick={onSlideLeft}\n size={arrowSize}\n data-testid={prevArrowTestId}\n label={arrowPrevLabel}\n aria-controls={slidesContainerId}\n {...prevArrowFocusHandlers}\n />\n )}\n {canSlideRight && (\n <ScrollArrow\n className={getArrowClassName('end', arrowAreaHeight, nextArrowFocusVisible)}\n direction=\"right\"\n onClick={onSlideRight}\n size={arrowSize}\n data-testid={nextArrowTestId}\n label={arrowNextLabel}\n aria-controls={slidesContainerId}\n {...nextArrowFocusHandlers}\n />\n )}\n </>\n ) : null;\n};\n"],"names":["classNames","useFocusVisible","ScrollArrow","styles","stylesArrowAreaHeight","stretch","arrowAreaStretch","fit","arrowAreaFit","getArrowClassName","side","arrowAreaHeight","focusVisible","arrow","arrowStart","arrowEnd","arrowFocusVisible","ScrollArrows","canSlideLeft","canSlideRight","onSlideRight","onSlideLeft","showArrows","arrowSize","arrowPrevLabel","arrowNextLabel","nextArrowTestId","prevArrowTestId","slidesContainerId","prevArrowFocusVisible","prevArrowFocusHandlers","nextArrowFocusVisible","nextArrowFocusHandlers","className","direction","onClick","size","data-testid","label","aria-controls"],"mappings":"AAAA;;AAIA,SAASA,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,eAAe,QAAQ,iCAA8B;AAC9D,SAASC,WAAW,QAAQ,gCAA6B;AAEzD,OAAOC,YAAY,4BAA4B;AAE/C,MAAMC,wBAAwB;IAC5BC,SAASF,OAAOG,gBAAgB;IAChCC,KAAKJ,OAAOK,YAAY;AAC1B;AAEA,OAAO,MAAMC,oBAAoB,CAC/BC,MACAC,iBACAC;IAEA,OAAOZ,WACLG,OAAOU,KAAK,EACZH,SAAS,UAAUP,OAAOW,UAAU,GAAGX,OAAOY,QAAQ,EACtDX,qBAAqB,CAACO,gBAAgB,EACtCC,gBAAgBT,OAAOa,iBAAiB;AAE5C,EAAE;AA0BF,OAAO,MAAMC,eAAe,CAAC,EAC3BC,YAAY,EACZC,aAAa,EACbC,YAAY,EACZC,WAAW,EACXC,aAAa,KAAK,EAClBC,YAAY,GAAG,EACfZ,kBAAkB,SAAS,EAC3Ba,cAAc,EACdC,cAAc,EACdC,eAAe,EACfC,eAAe,EACfC,iBAAiB,EACC;IAClB,MAAM,EAAEhB,cAAciB,qBAAqB,EAAE,GAAGC,wBAAwB,GAAG7B;IAC3E,MAAM,EAAEW,cAAcmB,qBAAqB,EAAE,GAAGC,wBAAwB,GAAG/B;IAE3E,OAAOqB,2BACL;;YACGJ,8BACC,KAAChB;gBACC+B,WAAWxB,kBAAkB,SAASE,iBAAiBkB;gBACvDK,WAAU;gBACVC,SAASd;gBACTe,MAAMb;gBACNc,eAAaV;gBACbW,OAAOd;gBACPe,iBAAeX;gBACd,GAAGE,sBAAsB;;YAG7BX,+BACC,KAACjB;gBACC+B,WAAWxB,kBAAkB,OAAOE,iBAAiBoB;gBACrDG,WAAU;gBACVC,SAASf;gBACTgB,MAAMb;gBACNc,eAAaX;gBACbY,OAAOb;gBACPc,iBAAeX;gBACd,GAAGI,sBAAsB;;;SAI9B;AACN,EAAE"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/CarouselBase/ScrollArrows.tsx"],"sourcesContent":["'use client';\n/* eslint-disable jsdoc/require-jsdoc */\n\nimport type * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useFocusVisible } from '../../hooks/useFocusVisible';\nimport { ScrollArrow } from '../ScrollArrow/ScrollArrow';\nimport type { BaseGalleryProps } from './types';\nimport styles from './CarouselBase.module.css';\n\nconst stylesArrowAreaHeight = {\n stretch: styles.arrowAreaStretch,\n fit: styles.arrowAreaFit,\n};\n\nexport const getArrowClassName = (\n side: 'start' | 'end',\n arrowAreaHeight: Exclude<BaseGalleryProps['arrowAreaHeight'], undefined>,\n focusVisible: boolean,\n) => {\n return classNames(\n styles.arrow,\n side === 'start' ? styles.arrowStart : styles.arrowEnd,\n stylesArrowAreaHeight[arrowAreaHeight],\n focusVisible && styles.arrowFocusVisible,\n );\n};\n\nexport interface ScrollArrowsTestIds {\n /**\n * Передает атрибут `data-testid` для кнопки перехода к следующему слайду.\n */\n nextArrowTestId?: string | undefined;\n /**\n * Передает атрибут `data-testid` для кнопки перехода к предыдущему слайду.\n */\n prevArrowTestId?: string | undefined;\n}\n\ninterface ScrollArrowsProps\n extends Pick<\n BaseGalleryProps,\n 'showArrows' | 'arrowSize' | 'arrowAreaHeight' | 'arrowPrevLabel' | 'arrowNextLabel'\n >,\n ScrollArrowsTestIds {\n canSlideLeft: boolean;\n canSlideRight: boolean;\n onSlideLeft: (e: React.MouseEvent) => void;\n onSlideRight: (e: React.MouseEvent) => void;\n slidesContainerId: string;\n}\n\nexport const ScrollArrows = ({\n canSlideLeft,\n canSlideRight,\n onSlideRight,\n onSlideLeft,\n showArrows = false,\n arrowSize = 'm',\n arrowAreaHeight = 'stretch',\n arrowPrevLabel,\n arrowNextLabel,\n nextArrowTestId,\n prevArrowTestId,\n slidesContainerId,\n}: ScrollArrowsProps) => {\n const { focusVisible: prevArrowFocusVisible, ...prevArrowFocusHandlers } = useFocusVisible();\n const { focusVisible: nextArrowFocusVisible, ...nextArrowFocusHandlers } = useFocusVisible();\n\n return showArrows ? (\n <>\n {canSlideLeft && (\n <ScrollArrow\n className={getArrowClassName('start', arrowAreaHeight, prevArrowFocusVisible)}\n direction=\"left\"\n onClick={onSlideLeft}\n size={arrowSize}\n data-testid={prevArrowTestId}\n label={arrowPrevLabel}\n aria-controls={slidesContainerId}\n {...prevArrowFocusHandlers}\n />\n )}\n {canSlideRight && (\n <ScrollArrow\n className={getArrowClassName('end', arrowAreaHeight, nextArrowFocusVisible)}\n direction=\"right\"\n onClick={onSlideRight}\n size={arrowSize}\n data-testid={nextArrowTestId}\n label={arrowNextLabel}\n aria-controls={slidesContainerId}\n {...nextArrowFocusHandlers}\n />\n )}\n </>\n ) : null;\n};\n"],"names":["classNames","useFocusVisible","ScrollArrow","styles","stylesArrowAreaHeight","stretch","arrowAreaStretch","fit","arrowAreaFit","getArrowClassName","side","arrowAreaHeight","focusVisible","arrow","arrowStart","arrowEnd","arrowFocusVisible","ScrollArrows","canSlideLeft","canSlideRight","onSlideRight","onSlideLeft","showArrows","arrowSize","arrowPrevLabel","arrowNextLabel","nextArrowTestId","prevArrowTestId","slidesContainerId","prevArrowFocusVisible","prevArrowFocusHandlers","nextArrowFocusVisible","nextArrowFocusHandlers","className","direction","onClick","size","data-testid","label","aria-controls"],"mappings":"AAAA;;AAIA,SAASA,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,eAAe,QAAQ,iCAA8B;AAC9D,SAASC,WAAW,QAAQ,gCAA6B;AAEzD,OAAOC,YAAY,4BAA4B;AAE/C,MAAMC,wBAAwB;IAC5BC,SAASF,OAAOG,gBAAgB;IAChCC,KAAKJ,OAAOK,YAAY;AAC1B;AAEA,OAAO,MAAMC,oBAAoB,CAC/BC,MACAC,iBACAC;IAEA,OAAOZ,WACLG,OAAOU,KAAK,EACZH,SAAS,UAAUP,OAAOW,UAAU,GAAGX,OAAOY,QAAQ,EACtDX,qBAAqB,CAACO,gBAAgB,EACtCC,gBAAgBT,OAAOa,iBAAiB;AAE5C,EAAE;AA0BF,OAAO,MAAMC,eAAe,CAAC,EAC3BC,YAAY,EACZC,aAAa,EACbC,YAAY,EACZC,WAAW,EACXC,aAAa,KAAK,EAClBC,YAAY,GAAG,EACfZ,kBAAkB,SAAS,EAC3Ba,cAAc,EACdC,cAAc,EACdC,eAAe,EACfC,eAAe,EACfC,iBAAiB,EACC;IAClB,MAAM,EAAEhB,cAAciB,qBAAqB,EAAE,GAAGC,wBAAwB,GAAG7B;IAC3E,MAAM,EAAEW,cAAcmB,qBAAqB,EAAE,GAAGC,wBAAwB,GAAG/B;IAE3E,OAAOqB,2BACL;;YACGJ,8BACC,KAAChB;gBACC+B,WAAWxB,kBAAkB,SAASE,iBAAiBkB;gBACvDK,WAAU;gBACVC,SAASd;gBACTe,MAAMb;gBACNc,eAAaV;gBACbW,OAAOd;gBACPe,iBAAeX;gBACd,GAAGE,sBAAsB;;YAG7BX,+BACC,KAACjB;gBACC+B,WAAWxB,kBAAkB,OAAOE,iBAAiBoB;gBACrDG,WAAU;gBACVC,SAASf;gBACTgB,MAAMb;gBACNc,eAAaX;gBACbY,OAAOb;gBACPc,iBAAeX;gBACd,GAAGI,sBAAsB;;;SAI9B;AACN,EAAE"}
|