@vkontakte/vkui 6.0.2 → 6.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/components/Accordion/Accordion.d.ts +1 -1
- package/dist/cjs/components/Accordion/Accordion.d.ts.map +1 -1
- package/dist/cjs/components/Accordion/Accordion.js.map +1 -1
- package/dist/cjs/components/ActionSheet/ActionSheet.d.ts +1 -1
- package/dist/cjs/components/ActionSheet/ActionSheet.d.ts.map +1 -1
- package/dist/cjs/components/ActionSheet/ActionSheet.js.map +1 -1
- package/dist/cjs/components/AppRoot/ScrollContext.d.ts +4 -4
- package/dist/cjs/components/AppRoot/ScrollContext.d.ts.map +1 -1
- package/dist/cjs/components/AppRoot/ScrollContext.js.map +1 -1
- package/dist/cjs/components/BaseGallery/CarouselBase/types.d.ts +1 -1
- package/dist/cjs/components/BaseGallery/CarouselBase/types.d.ts.map +1 -1
- package/dist/cjs/components/BaseGallery/types.d.ts +4 -4
- package/dist/cjs/components/BaseGallery/types.d.ts.map +1 -1
- package/dist/cjs/components/BaseGallery/types.js.map +1 -1
- package/dist/cjs/components/Calendar/Calendar.d.ts +4 -4
- package/dist/cjs/components/Calendar/Calendar.d.ts.map +1 -1
- package/dist/cjs/components/Calendar/Calendar.js.map +1 -1
- package/dist/cjs/components/CalendarDay/CalendarDay.d.ts +3 -3
- package/dist/cjs/components/CalendarDay/CalendarDay.d.ts.map +1 -1
- package/dist/cjs/components/CalendarDay/CalendarDay.js.map +1 -1
- package/dist/cjs/components/CalendarDays/CalendarDays.d.ts +12 -12
- package/dist/cjs/components/CalendarDays/CalendarDays.d.ts.map +1 -1
- package/dist/cjs/components/CalendarDays/CalendarDays.js.map +1 -1
- package/dist/cjs/components/CalendarHeader/CalendarHeader.d.ts +3 -3
- package/dist/cjs/components/CalendarHeader/CalendarHeader.d.ts.map +1 -1
- package/dist/cjs/components/CalendarHeader/CalendarHeader.js.map +1 -1
- package/dist/cjs/components/CalendarRange/CalendarRange.d.ts +2 -2
- package/dist/cjs/components/CalendarRange/CalendarRange.d.ts.map +1 -1
- package/dist/cjs/components/CalendarRange/CalendarRange.js.map +1 -1
- package/dist/cjs/components/CalendarTime/CalendarTime.d.ts +3 -3
- package/dist/cjs/components/CalendarTime/CalendarTime.d.ts.map +1 -1
- package/dist/cjs/components/CalendarTime/CalendarTime.js.map +1 -1
- package/dist/cjs/components/Cell/Cell.d.ts +1 -1
- package/dist/cjs/components/Cell/Cell.d.ts.map +1 -1
- package/dist/cjs/components/Cell/Cell.js.map +1 -1
- package/dist/cjs/components/Cell/CellDragger/CellDragger.d.ts +1 -1
- package/dist/cjs/components/Cell/CellDragger/CellDragger.d.ts.map +1 -1
- package/dist/cjs/components/Cell/CellDragger/CellDragger.js.map +1 -1
- package/dist/cjs/components/ChipsInput/useChipsInput.d.ts +4 -1
- package/dist/cjs/components/ChipsInput/useChipsInput.d.ts.map +1 -1
- package/dist/cjs/components/ChipsInputBase/types.d.ts +3 -3
- package/dist/cjs/components/ChipsInputBase/types.d.ts.map +1 -1
- package/dist/cjs/components/ChipsInputBase/types.js.map +1 -1
- package/dist/cjs/components/ChipsSelect/ChipsSelect.d.ts +2 -2
- package/dist/cjs/components/ChipsSelect/ChipsSelect.d.ts.map +1 -1
- package/dist/cjs/components/ChipsSelect/ChipsSelect.js.map +1 -1
- package/dist/cjs/components/ChipsSelect/useChipsSelect.d.ts +4 -1
- package/dist/cjs/components/ChipsSelect/useChipsSelect.d.ts.map +1 -1
- package/dist/cjs/components/Clickable/Clickable.d.ts.map +1 -1
- package/dist/cjs/components/Clickable/Clickable.js +10 -1
- package/dist/cjs/components/Clickable/Clickable.js.map +1 -1
- package/dist/cjs/components/CustomScrollView/CustomScrollView.d.ts +1 -1
- package/dist/cjs/components/CustomScrollView/CustomScrollView.d.ts.map +1 -1
- package/dist/cjs/components/CustomScrollView/CustomScrollView.js.map +1 -1
- package/dist/cjs/components/CustomScrollView/useTrackerVisibility.d.ts +5 -5
- package/dist/cjs/components/CustomScrollView/useTrackerVisibility.d.ts.map +1 -1
- package/dist/cjs/components/CustomScrollView/useTrackerVisibility.js.map +1 -1
- package/dist/cjs/components/CustomSelect/CustomSelectClearButton.d.ts +1 -1
- package/dist/cjs/components/CustomSelect/CustomSelectClearButton.d.ts.map +1 -1
- package/dist/cjs/components/CustomSelect/CustomSelectClearButton.js.map +1 -1
- package/dist/cjs/components/CustomSelectDropdown/CustomSelectDropdown.d.ts +1 -1
- package/dist/cjs/components/CustomSelectDropdown/CustomSelectDropdown.d.ts.map +1 -1
- package/dist/cjs/components/CustomSelectDropdown/CustomSelectDropdown.js.map +1 -1
- package/dist/cjs/components/FocusTrap/FocusTrap.d.ts +1 -1
- package/dist/cjs/components/FocusTrap/FocusTrap.d.ts.map +1 -1
- package/dist/cjs/components/FocusTrap/FocusTrap.js.map +1 -1
- package/dist/cjs/components/InputLike/InputLike.d.ts +1 -1
- package/dist/cjs/components/InputLike/InputLike.d.ts.map +1 -1
- package/dist/cjs/components/InputLike/InputLike.js.map +1 -1
- package/dist/cjs/components/ModalRoot/ModalRootContext.d.ts +1 -1
- package/dist/cjs/components/ModalRoot/ModalRootContext.d.ts.map +1 -1
- package/dist/cjs/components/ModalRoot/ModalRootContext.js.map +1 -1
- package/dist/cjs/components/ModalRoot/types.d.ts +4 -4
- package/dist/cjs/components/ModalRoot/types.d.ts.map +1 -1
- package/dist/cjs/components/OnboardingTooltip/OnboardingTooltip.d.ts +1 -1
- package/dist/cjs/components/OnboardingTooltip/OnboardingTooltip.d.ts.map +1 -1
- package/dist/cjs/components/OnboardingTooltip/OnboardingTooltip.js.map +1 -1
- package/dist/cjs/components/Pagination/Pagination.d.ts +2 -2
- package/dist/cjs/components/Pagination/Pagination.d.ts.map +1 -1
- package/dist/cjs/components/Pagination/Pagination.js.map +1 -1
- package/dist/cjs/components/Root/Root.d.ts +2 -2
- package/dist/cjs/components/Root/Root.d.ts.map +1 -1
- package/dist/cjs/components/Root/Root.js.map +1 -1
- package/dist/cjs/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.d.ts.map +1 -1
- package/dist/cjs/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.js +9 -13
- package/dist/cjs/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.js.map +1 -1
- package/dist/cjs/components/SimpleCell/SimpleCell.d.ts.map +1 -1
- package/dist/cjs/components/SimpleCell/SimpleCell.js +1 -1
- package/dist/cjs/components/SimpleCell/SimpleCell.js.map +1 -1
- package/dist/cjs/components/Slider/Slider.d.ts +4 -4
- package/dist/cjs/components/Slider/Slider.d.ts.map +1 -1
- package/dist/cjs/components/Slider/Slider.js.map +1 -1
- package/dist/cjs/components/Textarea/Textarea.d.ts +1 -1
- package/dist/cjs/components/Textarea/Textarea.d.ts.map +1 -1
- package/dist/cjs/components/Textarea/Textarea.js.map +1 -1
- package/dist/cjs/components/View/View.d.ts +5 -5
- package/dist/cjs/components/View/View.d.ts.map +1 -1
- package/dist/cjs/components/View/View.js.map +1 -1
- package/dist/cjs/components/View/ViewInfinite.d.ts +6 -6
- package/dist/cjs/components/View/ViewInfinite.d.ts.map +1 -1
- package/dist/cjs/components/View/ViewInfinite.js.map +1 -1
- package/dist/cjs/hooks/useDateInput.d.ts +3 -3
- package/dist/cjs/hooks/useDateInput.d.ts.map +1 -1
- package/dist/cjs/hooks/useDateInput.js.map +1 -1
- package/dist/cjs/hooks/useDraggableWithDomApi/types.d.ts +4 -4
- package/dist/cjs/hooks/useDraggableWithDomApi/types.d.ts.map +1 -1
- package/dist/cjs/hooks/useDraggableWithDomApi/types.js.map +1 -1
- package/dist/cjs/hooks/useEnsuredControl.d.ts +2 -2
- package/dist/cjs/hooks/useEnsuredControl.d.ts.map +1 -1
- package/dist/cjs/hooks/useEnsuredControl.js.map +1 -1
- package/dist/cjs/lib/floating/useFloatingWithInteractions/types.d.ts +3 -3
- package/dist/cjs/lib/floating/useFloatingWithInteractions/types.d.ts.map +1 -1
- package/dist/cjs/lib/rafSchd.d.ts +1 -1
- package/dist/cjs/lib/rafSchd.d.ts.map +1 -1
- package/dist/cjs/lib/rafSchd.js.map +1 -1
- package/dist/cjs/lib/react/simulateReactInput.d.ts +3 -3
- package/dist/cjs/lib/react/simulateReactInput.d.ts.map +1 -1
- package/dist/cjs/lib/react/simulateReactInput.js.map +1 -1
- package/dist/components/Accordion/Accordion.d.ts +1 -1
- package/dist/components/Accordion/Accordion.d.ts.map +1 -1
- package/dist/components/Accordion/Accordion.js.map +1 -1
- package/dist/components/ActionSheet/ActionSheet.d.ts +1 -1
- package/dist/components/ActionSheet/ActionSheet.d.ts.map +1 -1
- package/dist/components/ActionSheet/ActionSheet.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/BaseGallery/CarouselBase/types.d.ts +1 -1
- package/dist/components/BaseGallery/CarouselBase/types.d.ts.map +1 -1
- package/dist/components/BaseGallery/CarouselBase/types.js.map +1 -1
- package/dist/components/BaseGallery/types.d.ts +4 -4
- package/dist/components/BaseGallery/types.d.ts.map +1 -1
- package/dist/components/BaseGallery/types.js.map +1 -1
- package/dist/components/Calendar/Calendar.d.ts +4 -4
- 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 +3 -3
- 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 +12 -12
- 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 +3 -3
- 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 +2 -2
- 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 +3 -3
- package/dist/components/CalendarTime/CalendarTime.d.ts.map +1 -1
- package/dist/components/CalendarTime/CalendarTime.js.map +1 -1
- package/dist/components/Cell/Cell.d.ts +1 -1
- package/dist/components/Cell/Cell.d.ts.map +1 -1
- package/dist/components/Cell/Cell.js.map +1 -1
- package/dist/components/Cell/CellDragger/CellDragger.d.ts +1 -1
- package/dist/components/Cell/CellDragger/CellDragger.d.ts.map +1 -1
- package/dist/components/Cell/CellDragger/CellDragger.js.map +1 -1
- package/dist/components/ChipsInput/useChipsInput.d.ts +4 -1
- package/dist/components/ChipsInput/useChipsInput.d.ts.map +1 -1
- package/dist/components/ChipsInputBase/types.d.ts +3 -3
- 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 +2 -2
- 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 +4 -1
- package/dist/components/ChipsSelect/useChipsSelect.d.ts.map +1 -1
- package/dist/components/Clickable/Clickable.d.ts.map +1 -1
- package/dist/components/Clickable/Clickable.js +10 -1
- package/dist/components/Clickable/Clickable.js.map +1 -1
- package/dist/components/CustomScrollView/CustomScrollView.d.ts +1 -1
- package/dist/components/CustomScrollView/CustomScrollView.d.ts.map +1 -1
- package/dist/components/CustomScrollView/CustomScrollView.js.map +1 -1
- package/dist/components/CustomScrollView/useTrackerVisibility.d.ts +5 -5
- package/dist/components/CustomScrollView/useTrackerVisibility.d.ts.map +1 -1
- package/dist/components/CustomScrollView/useTrackerVisibility.js.map +1 -1
- package/dist/components/CustomSelect/CustomSelectClearButton.d.ts +1 -1
- package/dist/components/CustomSelect/CustomSelectClearButton.d.ts.map +1 -1
- package/dist/components/CustomSelect/CustomSelectClearButton.js.map +1 -1
- package/dist/components/CustomSelectDropdown/CustomSelectDropdown.d.ts +1 -1
- package/dist/components/CustomSelectDropdown/CustomSelectDropdown.d.ts.map +1 -1
- package/dist/components/CustomSelectDropdown/CustomSelectDropdown.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.map +1 -1
- package/dist/components/InputLike/InputLike.d.ts +1 -1
- package/dist/components/InputLike/InputLike.d.ts.map +1 -1
- package/dist/components/InputLike/InputLike.js.map +1 -1
- package/dist/components/ModalRoot/ModalRootContext.d.ts +1 -1
- package/dist/components/ModalRoot/ModalRootContext.d.ts.map +1 -1
- package/dist/components/ModalRoot/ModalRootContext.js.map +1 -1
- package/dist/components/ModalRoot/types.d.ts +4 -4
- package/dist/components/ModalRoot/types.d.ts.map +1 -1
- package/dist/components/ModalRoot/types.js.map +1 -1
- package/dist/components/OnboardingTooltip/OnboardingTooltip.d.ts +1 -1
- package/dist/components/OnboardingTooltip/OnboardingTooltip.d.ts.map +1 -1
- package/dist/components/OnboardingTooltip/OnboardingTooltip.js.map +1 -1
- package/dist/components/Pagination/Pagination.d.ts +2 -2
- package/dist/components/Pagination/Pagination.d.ts.map +1 -1
- package/dist/components/Pagination/Pagination.js.map +1 -1
- package/dist/components/Root/Root.d.ts +2 -2
- package/dist/components/Root/Root.d.ts.map +1 -1
- package/dist/components/Root/Root.js.map +1 -1
- package/dist/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.d.ts.map +1 -1
- package/dist/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.js +10 -14
- package/dist/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.js.map +1 -1
- package/dist/components/SimpleCell/SimpleCell.d.ts.map +1 -1
- package/dist/components/SimpleCell/SimpleCell.js +1 -1
- package/dist/components/SimpleCell/SimpleCell.js.map +1 -1
- package/dist/components/Slider/Slider.d.ts +4 -4
- package/dist/components/Slider/Slider.d.ts.map +1 -1
- package/dist/components/Slider/Slider.js.map +1 -1
- package/dist/components/Textarea/Textarea.d.ts +1 -1
- package/dist/components/Textarea/Textarea.d.ts.map +1 -1
- package/dist/components/Textarea/Textarea.js.map +1 -1
- package/dist/components/View/View.d.ts +5 -5
- 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 +6 -6
- package/dist/components/View/ViewInfinite.d.ts.map +1 -1
- package/dist/components/View/ViewInfinite.js.map +1 -1
- package/dist/components.css +8 -8
- package/dist/components.css.map +1 -1
- package/dist/components.js.tmp +24 -21
- package/dist/cssm/components/Accordion/Accordion.d.ts +1 -1
- package/dist/cssm/components/Accordion/Accordion.d.ts.map +1 -1
- package/dist/cssm/components/Accordion/Accordion.js.map +1 -1
- package/dist/cssm/components/ActionSheet/ActionSheet.d.ts +1 -1
- package/dist/cssm/components/ActionSheet/ActionSheet.d.ts.map +1 -1
- package/dist/cssm/components/ActionSheet/ActionSheet.js.map +1 -1
- package/dist/cssm/components/ActionSheet/ActionSheet.module.css +1 -2
- package/dist/cssm/components/ActionSheetItem/ActionSheetItem.module.css +1 -1
- package/dist/cssm/components/AppRoot/ScrollContext.d.ts +4 -4
- package/dist/cssm/components/AppRoot/ScrollContext.d.ts.map +1 -1
- package/dist/cssm/components/AppRoot/ScrollContext.js.map +1 -1
- package/dist/cssm/components/BaseGallery/CarouselBase/types.d.ts +1 -1
- package/dist/cssm/components/BaseGallery/CarouselBase/types.d.ts.map +1 -1
- package/dist/cssm/components/BaseGallery/CarouselBase/types.js.map +1 -1
- package/dist/cssm/components/BaseGallery/types.d.ts +4 -4
- package/dist/cssm/components/BaseGallery/types.d.ts.map +1 -1
- package/dist/cssm/components/BaseGallery/types.js.map +1 -1
- package/dist/cssm/components/Button/Button.module.css +6 -5
- package/dist/cssm/components/Calendar/Calendar.d.ts +4 -4
- package/dist/cssm/components/Calendar/Calendar.d.ts.map +1 -1
- package/dist/cssm/components/Calendar/Calendar.js.map +1 -1
- package/dist/cssm/components/CalendarDay/CalendarDay.d.ts +3 -3
- package/dist/cssm/components/CalendarDay/CalendarDay.d.ts.map +1 -1
- package/dist/cssm/components/CalendarDay/CalendarDay.js.map +1 -1
- package/dist/cssm/components/CalendarDays/CalendarDays.d.ts +12 -12
- package/dist/cssm/components/CalendarDays/CalendarDays.d.ts.map +1 -1
- package/dist/cssm/components/CalendarDays/CalendarDays.js.map +1 -1
- package/dist/cssm/components/CalendarHeader/CalendarHeader.d.ts +3 -3
- package/dist/cssm/components/CalendarHeader/CalendarHeader.d.ts.map +1 -1
- package/dist/cssm/components/CalendarHeader/CalendarHeader.js.map +1 -1
- package/dist/cssm/components/CalendarRange/CalendarRange.d.ts +2 -2
- package/dist/cssm/components/CalendarRange/CalendarRange.d.ts.map +1 -1
- package/dist/cssm/components/CalendarRange/CalendarRange.js.map +1 -1
- package/dist/cssm/components/CalendarTime/CalendarTime.d.ts +3 -3
- package/dist/cssm/components/CalendarTime/CalendarTime.d.ts.map +1 -1
- package/dist/cssm/components/CalendarTime/CalendarTime.js.map +1 -1
- package/dist/cssm/components/Cell/Cell.d.ts +1 -1
- package/dist/cssm/components/Cell/Cell.d.ts.map +1 -1
- package/dist/cssm/components/Cell/Cell.js.map +1 -1
- package/dist/cssm/components/Cell/CellDragger/CellDragger.d.ts +1 -1
- package/dist/cssm/components/Cell/CellDragger/CellDragger.d.ts.map +1 -1
- package/dist/cssm/components/Cell/CellDragger/CellDragger.js.map +1 -1
- package/dist/cssm/components/ChipsInput/useChipsInput.d.ts +4 -1
- package/dist/cssm/components/ChipsInput/useChipsInput.d.ts.map +1 -1
- package/dist/cssm/components/ChipsInputBase/types.d.ts +3 -3
- package/dist/cssm/components/ChipsInputBase/types.d.ts.map +1 -1
- package/dist/cssm/components/ChipsInputBase/types.js.map +1 -1
- package/dist/cssm/components/ChipsSelect/ChipsSelect.d.ts +2 -2
- package/dist/cssm/components/ChipsSelect/ChipsSelect.d.ts.map +1 -1
- package/dist/cssm/components/ChipsSelect/ChipsSelect.js.map +1 -1
- package/dist/cssm/components/ChipsSelect/useChipsSelect.d.ts +4 -1
- package/dist/cssm/components/ChipsSelect/useChipsSelect.d.ts.map +1 -1
- package/dist/cssm/components/Clickable/Clickable.d.ts.map +1 -1
- package/dist/cssm/components/Clickable/Clickable.js +10 -1
- package/dist/cssm/components/Clickable/Clickable.js.map +1 -1
- package/dist/cssm/components/Clickable/Clickable.module.css +21 -0
- package/dist/cssm/components/CustomScrollView/CustomScrollView.d.ts +1 -1
- package/dist/cssm/components/CustomScrollView/CustomScrollView.d.ts.map +1 -1
- package/dist/cssm/components/CustomScrollView/CustomScrollView.js.map +1 -1
- package/dist/cssm/components/CustomScrollView/useTrackerVisibility.d.ts +5 -5
- package/dist/cssm/components/CustomScrollView/useTrackerVisibility.d.ts.map +1 -1
- package/dist/cssm/components/CustomScrollView/useTrackerVisibility.js.map +1 -1
- package/dist/cssm/components/CustomSelect/CustomSelectClearButton.d.ts +1 -1
- package/dist/cssm/components/CustomSelect/CustomSelectClearButton.d.ts.map +1 -1
- package/dist/cssm/components/CustomSelect/CustomSelectClearButton.js.map +1 -1
- package/dist/cssm/components/CustomSelectDropdown/CustomSelectDropdown.d.ts +1 -1
- package/dist/cssm/components/CustomSelectDropdown/CustomSelectDropdown.d.ts.map +1 -1
- package/dist/cssm/components/CustomSelectDropdown/CustomSelectDropdown.js.map +1 -1
- package/dist/cssm/components/FocusTrap/FocusTrap.d.ts +1 -1
- package/dist/cssm/components/FocusTrap/FocusTrap.d.ts.map +1 -1
- package/dist/cssm/components/FocusTrap/FocusTrap.js.map +1 -1
- package/dist/cssm/components/InputLike/InputLike.d.ts +1 -1
- package/dist/cssm/components/InputLike/InputLike.d.ts.map +1 -1
- package/dist/cssm/components/InputLike/InputLike.js.map +1 -1
- package/dist/cssm/components/Link/Link.module.css +1 -2
- package/dist/cssm/components/ModalRoot/ModalRootContext.d.ts +1 -1
- package/dist/cssm/components/ModalRoot/ModalRootContext.d.ts.map +1 -1
- package/dist/cssm/components/ModalRoot/ModalRootContext.js.map +1 -1
- package/dist/cssm/components/ModalRoot/types.d.ts +4 -4
- package/dist/cssm/components/ModalRoot/types.d.ts.map +1 -1
- package/dist/cssm/components/ModalRoot/types.js.map +1 -1
- package/dist/cssm/components/OnboardingTooltip/OnboardingTooltip.d.ts +1 -1
- package/dist/cssm/components/OnboardingTooltip/OnboardingTooltip.d.ts.map +1 -1
- package/dist/cssm/components/OnboardingTooltip/OnboardingTooltip.js.map +1 -1
- package/dist/cssm/components/Pagination/Pagination.d.ts +2 -2
- package/dist/cssm/components/Pagination/Pagination.d.ts.map +1 -1
- package/dist/cssm/components/Pagination/Pagination.js.map +1 -1
- package/dist/cssm/components/Root/Root.d.ts +2 -2
- package/dist/cssm/components/Root/Root.d.ts.map +1 -1
- package/dist/cssm/components/Root/Root.js.map +1 -1
- package/dist/cssm/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.d.ts.map +1 -1
- package/dist/cssm/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.js +10 -16
- package/dist/cssm/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.js.map +1 -1
- package/dist/cssm/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.module.css +1 -1
- package/dist/cssm/components/SimpleCell/SimpleCell.d.ts.map +1 -1
- package/dist/cssm/components/SimpleCell/SimpleCell.js +1 -1
- package/dist/cssm/components/SimpleCell/SimpleCell.js.map +1 -1
- package/dist/cssm/components/SimpleCell/SimpleCell.module.css +7 -0
- package/dist/cssm/components/Slider/Slider.d.ts +4 -4
- package/dist/cssm/components/Slider/Slider.d.ts.map +1 -1
- package/dist/cssm/components/Slider/Slider.js.map +1 -1
- package/dist/cssm/components/TabsItem/TabsItem.module.css +0 -8
- package/dist/cssm/components/Textarea/Textarea.d.ts +1 -1
- package/dist/cssm/components/Textarea/Textarea.d.ts.map +1 -1
- package/dist/cssm/components/Textarea/Textarea.js.map +1 -1
- package/dist/cssm/components/View/View.d.ts +5 -5
- package/dist/cssm/components/View/View.d.ts.map +1 -1
- package/dist/cssm/components/View/View.js.map +1 -1
- package/dist/cssm/components/View/ViewInfinite.d.ts +6 -6
- package/dist/cssm/components/View/ViewInfinite.d.ts.map +1 -1
- package/dist/cssm/components/View/ViewInfinite.js.map +1 -1
- package/dist/cssm/hooks/useDateInput.d.ts +3 -3
- package/dist/cssm/hooks/useDateInput.d.ts.map +1 -1
- package/dist/cssm/hooks/useDateInput.js.map +1 -1
- package/dist/cssm/hooks/useDraggableWithDomApi/types.d.ts +4 -4
- package/dist/cssm/hooks/useDraggableWithDomApi/types.d.ts.map +1 -1
- package/dist/cssm/hooks/useDraggableWithDomApi/types.js.map +1 -1
- package/dist/cssm/hooks/useEnsuredControl.d.ts +2 -2
- package/dist/cssm/hooks/useEnsuredControl.d.ts.map +1 -1
- package/dist/cssm/hooks/useEnsuredControl.js.map +1 -1
- package/dist/cssm/lib/floating/useFloatingWithInteractions/types.d.ts +3 -3
- package/dist/cssm/lib/floating/useFloatingWithInteractions/types.d.ts.map +1 -1
- package/dist/cssm/lib/floating/useFloatingWithInteractions/types.js.map +1 -1
- package/dist/cssm/lib/rafSchd.d.ts +1 -1
- package/dist/cssm/lib/rafSchd.d.ts.map +1 -1
- package/dist/cssm/lib/rafSchd.js.map +1 -1
- package/dist/cssm/lib/react/simulateReactInput.d.ts +3 -3
- package/dist/cssm/lib/react/simulateReactInput.d.ts.map +1 -1
- package/dist/cssm/lib/react/simulateReactInput.js.map +1 -1
- package/dist/hooks/useDateInput.d.ts +3 -3
- package/dist/hooks/useDateInput.d.ts.map +1 -1
- package/dist/hooks/useDateInput.js.map +1 -1
- package/dist/hooks/useDraggableWithDomApi/types.d.ts +4 -4
- 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 +2 -2
- package/dist/hooks/useEnsuredControl.d.ts.map +1 -1
- package/dist/hooks/useEnsuredControl.js.map +1 -1
- package/dist/lib/floating/useFloatingWithInteractions/types.d.ts +3 -3
- package/dist/lib/floating/useFloatingWithInteractions/types.d.ts.map +1 -1
- package/dist/lib/floating/useFloatingWithInteractions/types.js.map +1 -1
- package/dist/lib/rafSchd.d.ts +1 -1
- package/dist/lib/rafSchd.d.ts.map +1 -1
- package/dist/lib/rafSchd.js.map +1 -1
- package/dist/lib/react/simulateReactInput.d.ts +3 -3
- package/dist/lib/react/simulateReactInput.d.ts.map +1 -1
- package/dist/lib/react/simulateReactInput.js.map +1 -1
- package/dist/vkui.css +8 -8
- package/dist/vkui.css.map +1 -1
- package/dist/vkui.js.tmp +24 -21
- package/package.json +1 -1
- package/src/components/Accordion/Accordion.tsx +1 -1
- package/src/components/Accordion/__image_snapshots__/accordion-ios-webkit-dark-1-snap.png +2 -2
- package/src/components/Accordion/__image_snapshots__/accordion-ios-webkit-light-1-snap.png +2 -2
- package/src/components/ActionSheet/ActionSheet.module.css +1 -2
- package/src/components/ActionSheet/ActionSheet.tsx +1 -1
- package/src/components/ActionSheet/Readme.md +6 -6
- package/src/components/ActionSheet/__image_snapshots__/actionsheet-viewwidth-desktop-sizey-regular-vkcom-chromium-dark-1-snap.png +2 -2
- package/src/components/ActionSheet/__image_snapshots__/actionsheet-viewwidth-desktop-sizey-regular-vkcom-chromium-light-1-snap.png +2 -2
- package/src/components/ActionSheet/__image_snapshots__/actionsheet-viewwidth-desktop-sizey-regular-vkcom-firefox-dark-1-snap.png +2 -2
- package/src/components/ActionSheet/__image_snapshots__/actionsheet-viewwidth-desktop-sizey-regular-vkcom-firefox-light-1-snap.png +2 -2
- package/src/components/ActionSheet/__image_snapshots__/actionsheet-viewwidth-desktop-sizey-regular-vkcom-webkit-dark-1-snap.png +2 -2
- package/src/components/ActionSheet/__image_snapshots__/actionsheet-viewwidth-desktop-sizey-regular-vkcom-webkit-light-1-snap.png +2 -2
- package/src/components/ActionSheet/__image_snapshots__/actionsheet-viewwidth-mobile-sizey-regular-android-chromium-dark-1-snap.png +2 -2
- package/src/components/ActionSheet/__image_snapshots__/actionsheet-viewwidth-mobile-sizey-regular-android-chromium-light-1-snap.png +2 -2
- package/src/components/ActionSheetItem/ActionSheetItem.module.css +1 -1
- package/src/components/AppRoot/ScrollContext.tsx +4 -4
- package/src/components/BaseGallery/CarouselBase/types.ts +1 -1
- package/src/components/BaseGallery/types.ts +4 -4
- package/src/components/Button/Button.module.css +6 -2
- package/src/components/Calendar/Calendar.stories.tsx +2 -2
- package/src/components/Calendar/Calendar.tsx +4 -4
- package/src/components/CalendarDay/CalendarDay.tsx +3 -3
- package/src/components/CalendarDays/CalendarDays.tsx +12 -12
- package/src/components/CalendarHeader/CalendarHeader.tsx +3 -3
- package/src/components/CalendarRange/CalendarRange.tsx +2 -2
- package/src/components/CalendarTime/CalendarTime.tsx +3 -3
- package/src/components/Cell/Cell.tsx +1 -1
- package/src/components/Cell/CellDragger/CellDragger.tsx +1 -1
- package/src/components/CellButton/__image_snapshots__/cellbutton-ios-webkit-dark-1-snap.png +2 -2
- package/src/components/CellButton/__image_snapshots__/cellbutton-ios-webkit-light-1-snap.png +2 -2
- package/src/components/ChipsInputBase/types.ts +3 -3
- package/src/components/ChipsSelect/ChipsSelect.tsx +2 -2
- package/src/components/Clickable/Clickable.module.css +14 -0
- package/src/components/Clickable/Clickable.tsx +15 -1
- package/src/components/CustomScrollView/CustomScrollView.tsx +1 -1
- package/src/components/CustomScrollView/useTrackerVisibility.ts +5 -5
- package/src/components/CustomSelect/CustomSelect.test.tsx +1 -1
- package/src/components/CustomSelect/CustomSelectClearButton.tsx +1 -1
- package/src/components/CustomSelectDropdown/CustomSelectDropdown.tsx +1 -1
- package/src/components/FocusTrap/FocusTrap.tsx +1 -1
- package/src/components/Input/Readme.md +1 -1
- package/src/components/InputLike/InputLike.tsx +1 -1
- package/src/components/Link/Link.module.css +1 -2
- package/src/components/ModalRoot/ModalRootContext.tsx +1 -1
- package/src/components/ModalRoot/types.ts +4 -4
- package/src/components/OnboardingTooltip/OnboardingTooltip.tsx +1 -1
- package/src/components/Pagination/Pagination.tsx +2 -2
- package/src/components/Popper/Readme.md +1 -1
- package/src/components/PullToRefresh/PullToRefresh.e2e.tsx +2 -0
- package/src/components/Root/Root.tsx +1 -1
- package/src/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.module.css +1 -1
- package/src/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.tsx +21 -36
- package/src/components/SimpleCell/SimpleCell.e2e-playground.tsx +4 -0
- package/src/components/SimpleCell/SimpleCell.module.css +5 -0
- package/src/components/SimpleCell/SimpleCell.tsx +8 -1
- package/src/components/SimpleCell/__image_snapshots__/simplecell-android-chromium-dark-1-snap.png +2 -2
- package/src/components/SimpleCell/__image_snapshots__/simplecell-android-chromium-light-1-snap.png +2 -2
- package/src/components/SimpleCell/__image_snapshots__/simplecell-ios-webkit-dark-1-snap.png +2 -2
- package/src/components/SimpleCell/__image_snapshots__/simplecell-ios-webkit-light-1-snap.png +2 -2
- package/src/components/SimpleCell/__image_snapshots__/simplecell-vkcom-chromium-dark-1-snap.png +2 -2
- package/src/components/SimpleCell/__image_snapshots__/simplecell-vkcom-chromium-light-1-snap.png +2 -2
- package/src/components/SimpleCell/__image_snapshots__/simplecell-vkcom-firefox-dark-1-snap.png +2 -2
- package/src/components/SimpleCell/__image_snapshots__/simplecell-vkcom-firefox-light-1-snap.png +2 -2
- package/src/components/SimpleCell/__image_snapshots__/simplecell-vkcom-webkit-dark-1-snap.png +2 -2
- package/src/components/SimpleCell/__image_snapshots__/simplecell-vkcom-webkit-light-1-snap.png +2 -2
- package/src/components/Slider/Slider.test.tsx +11 -5
- package/src/components/Slider/Slider.tsx +4 -4
- package/src/components/Tabs/__image_snapshots__/tabs-android-chromium-dark-1-snap.png +2 -2
- package/src/components/Tabs/__image_snapshots__/tabs-android-chromium-light-1-snap.png +2 -2
- package/src/components/Tabs/__image_snapshots__/tabs-ios-webkit-dark-1-snap.png +2 -2
- package/src/components/Tabs/__image_snapshots__/tabs-ios-webkit-light-1-snap.png +2 -2
- package/src/components/Tabs/__image_snapshots__/tabs-layout-fill-mode-android-chromium-light-1-snap.png +2 -2
- package/src/components/Tabs/__image_snapshots__/tabs-layout-fill-mode-ios-webkit-light-1-snap.png +2 -2
- package/src/components/Tabs/__image_snapshots__/tabs-layout-fill-mode-vkcom-chromium-light-1-snap.png +2 -2
- package/src/components/Tabs/__image_snapshots__/tabs-layout-fill-mode-vkcom-firefox-light-1-snap.png +2 -2
- package/src/components/Tabs/__image_snapshots__/tabs-layout-fill-mode-vkcom-webkit-light-1-snap.png +2 -2
- package/src/components/Tabs/__image_snapshots__/tabs-vkcom-chromium-dark-1-snap.png +2 -2
- package/src/components/Tabs/__image_snapshots__/tabs-vkcom-chromium-light-1-snap.png +2 -2
- package/src/components/Tabs/__image_snapshots__/tabs-vkcom-firefox-dark-1-snap.png +2 -2
- package/src/components/Tabs/__image_snapshots__/tabs-vkcom-firefox-light-1-snap.png +2 -2
- package/src/components/Tabs/__image_snapshots__/tabs-vkcom-webkit-dark-1-snap.png +2 -2
- package/src/components/Tabs/__image_snapshots__/tabs-vkcom-webkit-light-1-snap.png +2 -2
- package/src/components/TabsItem/TabsItem.module.css +0 -9
- package/src/components/Textarea/Textarea.tsx +1 -1
- package/src/components/Touch/Readme.md +1 -1
- package/src/components/View/View.stories.tsx +1 -1
- package/src/components/View/View.tsx +4 -4
- package/src/components/View/ViewInfinite.tsx +5 -5
- package/src/components/WriteBar/Readme.md +1 -1
- package/src/hooks/useDateInput.ts +3 -3
- package/src/hooks/useDraggableWithDomApi/types.ts +4 -4
- package/src/hooks/useEnsuredControl.ts +2 -2
- package/src/hooks/useGlobalOnClickOutside.test.tsx +1 -1
- package/src/lib/floating/useFloatingWithInteractions/types.ts +3 -3
- package/src/lib/rafSchd.ts +1 -1
- package/src/lib/react/simulateReactInput.ts +3 -3
- package/src/storybook/VKUIDecorators.tsx +0 -16
- package/src/testing/e2e/ComponentPlayground.tsx +1 -1
- package/src/testing/e2e/types.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Clickable.d.ts","sourceRoot":"","sources":["../../../../src/components/Clickable/Clickable.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EACL,qBAAqB,EAEtB,MAAM,sCAAsC,CAAC;AAE9C,OAAO,EAAiB,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEnF,OAAO,EAGL,UAAU,EAEX,MAAM,YAAY,CAAC;AAGpB,MAAM,WAAW,cAAc,CAAC,CAAC,GAAG,WAAW,CAC7C,SAAQ,kBAAkB,CAAC,CAAC,CAAC,EAC3B,qBAAqB,EACrB,UAAU;CAAG;AAuFjB;;GAEG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,OAAO,CAQnE;
|
|
1
|
+
{"version":3,"file":"Clickable.d.ts","sourceRoot":"","sources":["../../../../src/components/Clickable/Clickable.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EACL,qBAAqB,EAEtB,MAAM,sCAAsC,CAAC;AAE9C,OAAO,EAAiB,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEnF,OAAO,EAGL,UAAU,EAEX,MAAM,YAAY,CAAC;AAGpB,MAAM,WAAW,cAAc,CAAC,CAAC,GAAG,WAAW,CAC7C,SAAQ,kBAAkB,CAAC,CAAC,CAAC,EAC3B,qBAAqB,EACrB,UAAU;CAAG;AAuFjB;;GAEG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,OAAO,CAQnE;AA2CD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,SAAS,mHAyBrB,CAAC"}
|
|
@@ -133,6 +133,15 @@ function checkClickable(props) {
|
|
|
133
133
|
}
|
|
134
134
|
return {};
|
|
135
135
|
}
|
|
136
|
+
const getUserAgentResetClassName = (Component)=>{
|
|
137
|
+
if (Component === 'a') {
|
|
138
|
+
return "vkuiClickable__resetLinkStyle";
|
|
139
|
+
}
|
|
140
|
+
if (Component === 'button') {
|
|
141
|
+
return "vkuiClickable__resetButtonStyle";
|
|
142
|
+
}
|
|
143
|
+
return;
|
|
144
|
+
};
|
|
136
145
|
const Clickable = (_param)=>{
|
|
137
146
|
var { focusVisibleMode = 'inside', baseClassName: baseClassNameProp } = _param, restProps = _object_without_properties._(_param, [
|
|
138
147
|
"focusVisibleMode",
|
|
@@ -140,7 +149,7 @@ const Clickable = (_param)=>{
|
|
|
140
149
|
]);
|
|
141
150
|
const commonProps = component(restProps);
|
|
142
151
|
const isClickable = checkClickable(restProps);
|
|
143
|
-
const baseClassName = (0, _vkjs.classNames)(baseClassNameProp, "vkuiClickable__host");
|
|
152
|
+
const baseClassName = (0, _vkjs.classNames)(baseClassNameProp, getUserAgentResetClassName(commonProps.Component), "vkuiClickable__host");
|
|
144
153
|
if (isClickable) {
|
|
145
154
|
return /*#__PURE__*/ _react.createElement(RealClickable, _object_spread._({
|
|
146
155
|
baseClassName: baseClassName,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/Clickable/Clickable.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useFocusVisible } from '../../hooks/useFocusVisible';\nimport {\n FocusVisibleModeProps,\n useFocusVisibleClassName,\n} from '../../hooks/useFocusVisibleClassName';\nimport { mergeCalls } from '../../lib/mergeCalls';\nimport { RootComponent, RootComponentProps } from '../RootComponent/RootComponent';\nimport { useKeyboard } from './useKeyboard';\nimport {\n ClickableLockStateContext,\n DEFAULT_ACTIVE_EFFECT_DELAY,\n StateProps,\n useState,\n} from './useState';\nimport styles from './Clickable.module.css';\n\nexport interface ClickableProps<T = HTMLElement>\n extends RootComponentProps<T>,\n FocusVisibleModeProps,\n StateProps {}\n\n/**\n * Некликабельный компонент. Отключаем возможность нажимать на компонент.\n */\nconst NonClickable = <T,>({\n href,\n onClick,\n onClickCapture,\n activeClassName,\n hoverClassName,\n hasActive,\n hasHover,\n hovered,\n activated,\n activeEffectDelay,\n ...restProps\n}: ClickableProps<T>) => <RootComponent {...restProps} />;\n\n/**\n * Кликабельный компонент. Добавляем кучу обвесов\n */\nconst RealClickable = <T,>({\n baseClassName,\n children,\n focusVisibleMode = 'inside',\n activeClassName,\n hoverClassName,\n activeEffectDelay = DEFAULT_ACTIVE_EFFECT_DELAY,\n hasHover = true,\n hasActive = true,\n hovered,\n activated,\n onPointerEnter,\n onPointerLeave,\n onPointerDown,\n onPointerCancel,\n onPointerUp,\n onBlur,\n onFocus,\n onKeyDown,\n ...restProps\n}: ClickableProps<T>) => {\n const { focusVisible, ...focusEvents } = useFocusVisible();\n const focusVisibleClassNames = useFocusVisibleClassName({ focusVisible, mode: focusVisibleMode });\n\n const { stateClassName, setLockBubblingImmediate, ...stateEvents } = useState({\n activeClassName,\n hoverClassName,\n activeEffectDelay,\n hasHover,\n hasActive,\n hovered,\n activated,\n });\n\n const keyboardHandlers = useKeyboard();\n\n const handlers = mergeCalls(focusEvents, stateEvents, keyboardHandlers, {\n onPointerEnter,\n onPointerLeave,\n onPointerDown,\n onPointerCancel,\n onPointerUp,\n onBlur,\n onFocus,\n onKeyDown,\n });\n\n return (\n <RootComponent\n baseClassName={classNames(\n baseClassName,\n styles['Clickable__realClickable'],\n focusVisibleClassNames,\n stateClassName,\n )}\n {...handlers}\n {...restProps}\n >\n <ClickableLockStateContext.Provider value={setLockBubblingImmediate}>\n {children}\n </ClickableLockStateContext.Provider>\n </RootComponent>\n );\n};\n\n/**\n * Проверяем, является ли компонент кликабельным\n */\nexport function checkClickable<T>(props: ClickableProps<T>): boolean {\n return (\n (props.href !== undefined ||\n props.onClick !== undefined ||\n props.onClickCapture !== undefined ||\n props.Component === 'label') &&\n !props.disabled\n );\n}\n\n/**\n * Определяет правильный компонент и его свойства\n *\n * - если передан Component, используем его\n * - при передаче `href` превратится в `a`,\n * - при передаче `onClick` превратится в `div` c `role=\"button\"` и `tabIndex=\"0\"`.\n * - иначе используется `div`.\n */\nfunction component<T>({\n Component,\n onClick,\n onClickCapture,\n href,\n disabled,\n}: RootComponentProps<T>): RootComponentProps<T> {\n if (Component !== undefined) {\n return { Component };\n } else if (href !== undefined) {\n return { 'Component': 'a', 'aria-disabled': disabled };\n } else if (onClick !== undefined || onClickCapture !== undefined) {\n return {\n 'Component': 'div',\n 'role': 'button',\n 'tabIndex': disabled ? undefined : 0,\n 'aria-disabled': disabled,\n };\n }\n\n return {};\n}\n\n/**\n * Базовый кликабельный корневой компонент.\n *\n * - при передаче `href` превратится в `a`,\n * - при передаче `onClick` превратится в `div` c `role=\"button\"` и `tabIndex=\"0\"`.\n * - иначе используется `div`.\n *\n * Отвечает за:\n *\n * - стейты наведения и нажатия\n * - a11y компонентов\n */\nexport const Clickable = <T,>({\n focusVisibleMode = 'inside',\n baseClassName: baseClassNameProp,\n ...restProps\n}: ClickableProps<T>) => {\n const commonProps = component(restProps);\n const isClickable = checkClickable(restProps);\n const baseClassName = classNames(baseClassNameProp
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/Clickable/Clickable.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useFocusVisible } from '../../hooks/useFocusVisible';\nimport {\n FocusVisibleModeProps,\n useFocusVisibleClassName,\n} from '../../hooks/useFocusVisibleClassName';\nimport { mergeCalls } from '../../lib/mergeCalls';\nimport { RootComponent, RootComponentProps } from '../RootComponent/RootComponent';\nimport { useKeyboard } from './useKeyboard';\nimport {\n ClickableLockStateContext,\n DEFAULT_ACTIVE_EFFECT_DELAY,\n StateProps,\n useState,\n} from './useState';\nimport styles from './Clickable.module.css';\n\nexport interface ClickableProps<T = HTMLElement>\n extends RootComponentProps<T>,\n FocusVisibleModeProps,\n StateProps {}\n\n/**\n * Некликабельный компонент. Отключаем возможность нажимать на компонент.\n */\nconst NonClickable = <T,>({\n href,\n onClick,\n onClickCapture,\n activeClassName,\n hoverClassName,\n hasActive,\n hasHover,\n hovered,\n activated,\n activeEffectDelay,\n ...restProps\n}: ClickableProps<T>) => <RootComponent {...restProps} />;\n\n/**\n * Кликабельный компонент. Добавляем кучу обвесов\n */\nconst RealClickable = <T,>({\n baseClassName,\n children,\n focusVisibleMode = 'inside',\n activeClassName,\n hoverClassName,\n activeEffectDelay = DEFAULT_ACTIVE_EFFECT_DELAY,\n hasHover = true,\n hasActive = true,\n hovered,\n activated,\n onPointerEnter,\n onPointerLeave,\n onPointerDown,\n onPointerCancel,\n onPointerUp,\n onBlur,\n onFocus,\n onKeyDown,\n ...restProps\n}: ClickableProps<T>) => {\n const { focusVisible, ...focusEvents } = useFocusVisible();\n const focusVisibleClassNames = useFocusVisibleClassName({ focusVisible, mode: focusVisibleMode });\n\n const { stateClassName, setLockBubblingImmediate, ...stateEvents } = useState({\n activeClassName,\n hoverClassName,\n activeEffectDelay,\n hasHover,\n hasActive,\n hovered,\n activated,\n });\n\n const keyboardHandlers = useKeyboard();\n\n const handlers = mergeCalls(focusEvents, stateEvents, keyboardHandlers, {\n onPointerEnter,\n onPointerLeave,\n onPointerDown,\n onPointerCancel,\n onPointerUp,\n onBlur,\n onFocus,\n onKeyDown,\n });\n\n return (\n <RootComponent\n baseClassName={classNames(\n baseClassName,\n styles['Clickable__realClickable'],\n focusVisibleClassNames,\n stateClassName,\n )}\n {...handlers}\n {...restProps}\n >\n <ClickableLockStateContext.Provider value={setLockBubblingImmediate}>\n {children}\n </ClickableLockStateContext.Provider>\n </RootComponent>\n );\n};\n\n/**\n * Проверяем, является ли компонент кликабельным\n */\nexport function checkClickable<T>(props: ClickableProps<T>): boolean {\n return (\n (props.href !== undefined ||\n props.onClick !== undefined ||\n props.onClickCapture !== undefined ||\n props.Component === 'label') &&\n !props.disabled\n );\n}\n\n/**\n * Определяет правильный компонент и его свойства\n *\n * - если передан Component, используем его\n * - при передаче `href` превратится в `a`,\n * - при передаче `onClick` превратится в `div` c `role=\"button\"` и `tabIndex=\"0\"`.\n * - иначе используется `div`.\n */\nfunction component<T>({\n Component,\n onClick,\n onClickCapture,\n href,\n disabled,\n}: RootComponentProps<T>): RootComponentProps<T> {\n if (Component !== undefined) {\n return { Component };\n } else if (href !== undefined) {\n return { 'Component': 'a', 'aria-disabled': disabled };\n } else if (onClick !== undefined || onClickCapture !== undefined) {\n return {\n 'Component': 'div',\n 'role': 'button',\n 'tabIndex': disabled ? undefined : 0,\n 'aria-disabled': disabled,\n };\n }\n\n return {};\n}\n\nconst getUserAgentResetClassName = (Component?: React.ElementType) => {\n if (Component === 'a') {\n return styles.Clickable__resetLinkStyle;\n }\n if (Component === 'button') {\n return styles.Clickable__resetButtonStyle;\n }\n return;\n};\n\n/**\n * Базовый кликабельный корневой компонент.\n *\n * - при передаче `href` превратится в `a`,\n * - при передаче `onClick` превратится в `div` c `role=\"button\"` и `tabIndex=\"0\"`.\n * - иначе используется `div`.\n *\n * Отвечает за:\n *\n * - стейты наведения и нажатия\n * - a11y компонентов\n */\nexport const Clickable = <T,>({\n focusVisibleMode = 'inside',\n baseClassName: baseClassNameProp,\n ...restProps\n}: ClickableProps<T>) => {\n const commonProps = component(restProps);\n const isClickable = checkClickable(restProps);\n const baseClassName = classNames(\n baseClassNameProp,\n getUserAgentResetClassName(commonProps.Component),\n styles['Clickable__host'],\n );\n\n if (isClickable) {\n return (\n <RealClickable\n baseClassName={baseClassName}\n focusVisibleMode={focusVisibleMode}\n {...commonProps}\n {...restProps}\n />\n );\n }\n\n return <NonClickable baseClassName={baseClassName} {...commonProps} {...restProps} />;\n};\n"],"names":["Clickable","checkClickable","NonClickable","href","onClick","onClickCapture","activeClassName","hoverClassName","hasActive","hasHover","hovered","activated","activeEffectDelay","restProps","RootComponent","RealClickable","baseClassName","children","focusVisibleMode","DEFAULT_ACTIVE_EFFECT_DELAY","onPointerEnter","onPointerLeave","onPointerDown","onPointerCancel","onPointerUp","onBlur","onFocus","onKeyDown","useFocusVisible","focusVisible","focusEvents","focusVisibleClassNames","useFocusVisibleClassName","mode","useState","stateClassName","setLockBubblingImmediate","stateEvents","keyboardHandlers","useKeyboard","handlers","mergeCalls","classNames","ClickableLockStateContext","Provider","value","props","undefined","Component","disabled","component","getUserAgentResetClassName","baseClassNameProp","commonProps","isClickable"],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@ export interface CustomScrollViewProps extends React.AllHTMLAttributes<HTMLDivEl
|
|
|
5
5
|
windowResize?: boolean;
|
|
6
6
|
boxRef?: React.Ref<HTMLDivElement>;
|
|
7
7
|
className?: HTMLDivElement['className'];
|
|
8
|
-
onScroll
|
|
8
|
+
onScroll?: (event: React.UIEvent<HTMLDivElement>) => void;
|
|
9
9
|
children: React.ReactNode;
|
|
10
10
|
}
|
|
11
11
|
export declare const CustomScrollView: ({ className, children, boxRef: externalBoxRef, windowResize, autoHideScrollbar, autoHideScrollbarDelay, onScroll, getRootRef, ...restProps }: CustomScrollViewProps) => React.JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CustomScrollView.d.ts","sourceRoot":"","sources":["../../../../src/components/CustomScrollView/CustomScrollView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAQ/B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAwB,MAAM,wBAAwB,CAAC;AAenF,MAAM,WAAW,qBACf,SAAQ,KAAK,CAAC,iBAAiB,CAAC,cAAc,CAAC,EAC7C,UAAU,CAAC,cAAc,CAAC,EAC1B,mBAAmB;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACnC,SAAS,CAAC,EAAE,cAAc,CAAC,WAAW,CAAC,CAAC;IACxC,QAAQ,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,
|
|
1
|
+
{"version":3,"file":"CustomScrollView.d.ts","sourceRoot":"","sources":["../../../../src/components/CustomScrollView/CustomScrollView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAQ/B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAwB,MAAM,wBAAwB,CAAC;AAenF,MAAM,WAAW,qBACf,SAAQ,KAAK,CAAC,iBAAiB,CAAC,cAAc,CAAC,EAC7C,UAAU,CAAC,cAAc,CAAC,EAC1B,mBAAmB;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACnC,SAAS,CAAC,EAAE,cAAc,CAAC,WAAW,CAAC,CAAC;IACxC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC;IAC1D,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,eAAO,MAAM,gBAAgB,iJAU1B,qBAAqB,sBA8KvB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/CustomScrollView/CustomScrollView.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { useEventListener } from '../../hooks/useEventListener';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { useDOM } from '../../lib/dom';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport { stopPropagation } from '../../lib/utils';\nimport type { HasRootRef } from '../../types';\nimport { TrackerOptionsProps, useTrackerVisibility } from './useTrackerVisibility';\nimport styles from './CustomScrollView.module.css';\n\nfunction hasPointerClassName(hasPointer: boolean | undefined) {\n switch (hasPointer) {\n case true:\n return styles['CustomScrollView--hasPointer-true'];\n case false:\n return styles['CustomScrollView--hasPointer-false'];\n case undefined:\n default:\n return styles['CustomScrollView--hasPointer-none'];\n }\n}\n\nexport interface CustomScrollViewProps\n extends React.AllHTMLAttributes<HTMLDivElement>,\n HasRootRef<HTMLDivElement>,\n TrackerOptionsProps {\n windowResize?: boolean;\n boxRef?: React.Ref<HTMLDivElement>;\n className?: HTMLDivElement['className'];\n onScroll?(event: React.UIEvent<HTMLDivElement>): void;\n children: React.ReactNode;\n}\n\nexport const CustomScrollView = ({\n className,\n children,\n boxRef: externalBoxRef,\n windowResize,\n autoHideScrollbar = false,\n autoHideScrollbarDelay,\n onScroll,\n getRootRef,\n ...restProps\n}: CustomScrollViewProps) => {\n const { document, window } = useDOM();\n const { hasPointer } = useAdaptivity();\n\n const ratio = React.useRef(NaN);\n const lastTrackerTop = React.useRef(0);\n const clientHeight = React.useRef(0);\n const trackerHeight = React.useRef(0);\n const scrollHeight = React.useRef(0);\n const transformProp = React.useRef('');\n const startY = React.useRef(0);\n const trackerTop = React.useRef(0);\n\n const boxRef = useExternRef(externalBoxRef);\n\n const barY = React.useRef<HTMLDivElement>(null);\n const trackerY = React.useRef<HTMLDivElement>(null);\n\n const setTrackerPosition = (scrollTop: number) => {\n lastTrackerTop.current = scrollTop;\n if (trackerY.current !== null) {\n (trackerY.current.style as any)[transformProp.current] = `translate(0, ${scrollTop}px)`;\n }\n };\n\n const setTrackerPositionFromScroll = (scrollTop: number) => {\n const progress = scrollTop / (scrollHeight.current - clientHeight.current);\n setTrackerPosition((clientHeight.current - trackerHeight.current) * progress);\n };\n\n const resize = () => {\n if (!boxRef.current || !barY.current || !trackerY.current) {\n return;\n }\n const localClientHeight = boxRef.current.clientHeight;\n const localScrollHeight = boxRef.current.scrollHeight;\n const localRatio = localClientHeight / localScrollHeight;\n const localTrackerHeight = Math.max(localClientHeight * localRatio, 40);\n\n ratio.current = localRatio;\n clientHeight.current = localClientHeight;\n scrollHeight.current = localScrollHeight;\n trackerHeight.current = localTrackerHeight;\n\n if (localRatio >= 1) {\n barY.current.style.display = 'none';\n } else {\n barY.current.style.display = '';\n trackerY.current.style.height = `${localTrackerHeight}px`;\n setTrackerPositionFromScroll(boxRef.current.scrollTop);\n }\n };\n\n const resizeHandler = useEventListener('resize', resize);\n\n useIsomorphicLayoutEffect(() => {\n if (windowResize && window) {\n resizeHandler.add(window);\n }\n }, [windowResize, window]);\n\n useIsomorphicLayoutEffect(() => {\n let style = trackerY.current?.style;\n let prop = '';\n if (style !== undefined) {\n if ('transform' in style) {\n prop = 'transform';\n } else if ('webkitTransform' in style) {\n prop = 'webkitTransform';\n }\n }\n transformProp.current = prop;\n }, []);\n\n useIsomorphicLayoutEffect(resize);\n\n const setScrollPositionFromTracker = (trackerTop: number) => {\n const progress = trackerTop / (clientHeight.current - trackerHeight.current);\n if (boxRef.current !== null) {\n boxRef.current.scrollTop = (scrollHeight.current - clientHeight.current) * progress;\n }\n };\n\n const onMove = (e: MouseEvent) => {\n e.preventDefault();\n const diff = e.clientY - startY.current;\n const position = Math.min(\n Math.max(trackerTop.current + diff, 0),\n clientHeight.current - trackerHeight.current,\n );\n\n setScrollPositionFromTracker(position);\n };\n\n const {\n trackerVisible,\n onTargetScroll,\n onTrackerDragStart,\n onTrackerDragStop,\n onTrackerMouseEnter,\n onTrackerMouseLeave,\n } = useTrackerVisibility(autoHideScrollbar, autoHideScrollbarDelay);\n\n const onUp = (e: MouseEvent) => {\n e.preventDefault();\n\n if (autoHideScrollbar) {\n onTrackerDragStop();\n }\n\n unsubscribe();\n };\n\n const scroll = (event: React.UIEvent<HTMLDivElement>) => {\n if (ratio.current >= 1 || !boxRef.current) {\n return;\n }\n\n if (autoHideScrollbar) {\n onTargetScroll();\n }\n\n setTrackerPositionFromScroll(boxRef.current.scrollTop);\n onScroll?.(event);\n };\n\n const listeners = [useEventListener('mousemove', onMove), useEventListener('mouseup', onUp)];\n\n function subscribe(el: Document | undefined) {\n if (el) {\n listeners.forEach((l) => l.add(el));\n }\n }\n\n function unsubscribe() {\n listeners.forEach((l) => l.remove());\n }\n\n const onDragStart = (e: React.MouseEvent) => {\n e.preventDefault();\n startY.current = e.clientY;\n trackerTop.current = lastTrackerTop.current;\n\n if (autoHideScrollbar) {\n onTrackerDragStart();\n }\n\n subscribe(document);\n };\n\n return (\n <div\n className={classNames(className, styles['CustomScrollView'], hasPointerClassName(hasPointer))}\n ref={getRootRef}\n {...restProps}\n >\n <div className={styles['CustomScrollView__box']} tabIndex={-1} ref={boxRef} onScroll={scroll}>\n {children}\n </div>\n\n <div className={styles['CustomScrollView__barY']} ref={barY} onClick={stopPropagation}>\n <div\n className={classNames(\n styles['CustomScrollView__trackerY'],\n !trackerVisible && styles['CustomScrollView__trackerY--hidden'],\n )}\n onMouseEnter={autoHideScrollbar ? onTrackerMouseEnter : undefined}\n onMouseLeave={autoHideScrollbar ? onTrackerMouseLeave : undefined}\n ref={trackerY}\n onMouseDown={onDragStart}\n />\n </div>\n </div>\n );\n};\n"],"names":["CustomScrollView","hasPointerClassName","hasPointer","undefined","className","children","boxRef","externalBoxRef","windowResize","autoHideScrollbar","autoHideScrollbarDelay","onScroll","getRootRef","restProps","document","window","useDOM","useAdaptivity","ratio","React","useRef","NaN","lastTrackerTop","clientHeight","trackerHeight","scrollHeight","transformProp","startY","trackerTop","useExternRef","barY","trackerY","setTrackerPosition","scrollTop","current","style","setTrackerPositionFromScroll","progress","resize","localClientHeight","localScrollHeight","localRatio","localTrackerHeight","Math","max","display","height","resizeHandler","useEventListener","useIsomorphicLayoutEffect","add","prop","setScrollPositionFromTracker","onMove","e","preventDefault","diff","clientY","position","min","trackerVisible","onTargetScroll","onTrackerDragStart","onTrackerDragStop","onTrackerMouseEnter","onTrackerMouseLeave","useTrackerVisibility","onUp","unsubscribe","scroll","event","listeners","subscribe","el","forEach","l","remove","onDragStart","div","classNames","ref","tabIndex","onClick","stopPropagation","onMouseEnter","onMouseLeave","onMouseDown"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/CustomScrollView/CustomScrollView.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { useEventListener } from '../../hooks/useEventListener';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { useDOM } from '../../lib/dom';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport { stopPropagation } from '../../lib/utils';\nimport type { HasRootRef } from '../../types';\nimport { TrackerOptionsProps, useTrackerVisibility } from './useTrackerVisibility';\nimport styles from './CustomScrollView.module.css';\n\nfunction hasPointerClassName(hasPointer: boolean | undefined) {\n switch (hasPointer) {\n case true:\n return styles['CustomScrollView--hasPointer-true'];\n case false:\n return styles['CustomScrollView--hasPointer-false'];\n case undefined:\n default:\n return styles['CustomScrollView--hasPointer-none'];\n }\n}\n\nexport interface CustomScrollViewProps\n extends React.AllHTMLAttributes<HTMLDivElement>,\n HasRootRef<HTMLDivElement>,\n TrackerOptionsProps {\n windowResize?: boolean;\n boxRef?: React.Ref<HTMLDivElement>;\n className?: HTMLDivElement['className'];\n onScroll?: (event: React.UIEvent<HTMLDivElement>) => void;\n children: React.ReactNode;\n}\n\nexport const CustomScrollView = ({\n className,\n children,\n boxRef: externalBoxRef,\n windowResize,\n autoHideScrollbar = false,\n autoHideScrollbarDelay,\n onScroll,\n getRootRef,\n ...restProps\n}: CustomScrollViewProps) => {\n const { document, window } = useDOM();\n const { hasPointer } = useAdaptivity();\n\n const ratio = React.useRef(NaN);\n const lastTrackerTop = React.useRef(0);\n const clientHeight = React.useRef(0);\n const trackerHeight = React.useRef(0);\n const scrollHeight = React.useRef(0);\n const transformProp = React.useRef('');\n const startY = React.useRef(0);\n const trackerTop = React.useRef(0);\n\n const boxRef = useExternRef(externalBoxRef);\n\n const barY = React.useRef<HTMLDivElement>(null);\n const trackerY = React.useRef<HTMLDivElement>(null);\n\n const setTrackerPosition = (scrollTop: number) => {\n lastTrackerTop.current = scrollTop;\n if (trackerY.current !== null) {\n (trackerY.current.style as any)[transformProp.current] = `translate(0, ${scrollTop}px)`;\n }\n };\n\n const setTrackerPositionFromScroll = (scrollTop: number) => {\n const progress = scrollTop / (scrollHeight.current - clientHeight.current);\n setTrackerPosition((clientHeight.current - trackerHeight.current) * progress);\n };\n\n const resize = () => {\n if (!boxRef.current || !barY.current || !trackerY.current) {\n return;\n }\n const localClientHeight = boxRef.current.clientHeight;\n const localScrollHeight = boxRef.current.scrollHeight;\n const localRatio = localClientHeight / localScrollHeight;\n const localTrackerHeight = Math.max(localClientHeight * localRatio, 40);\n\n ratio.current = localRatio;\n clientHeight.current = localClientHeight;\n scrollHeight.current = localScrollHeight;\n trackerHeight.current = localTrackerHeight;\n\n if (localRatio >= 1) {\n barY.current.style.display = 'none';\n } else {\n barY.current.style.display = '';\n trackerY.current.style.height = `${localTrackerHeight}px`;\n setTrackerPositionFromScroll(boxRef.current.scrollTop);\n }\n };\n\n const resizeHandler = useEventListener('resize', resize);\n\n useIsomorphicLayoutEffect(() => {\n if (windowResize && window) {\n resizeHandler.add(window);\n }\n }, [windowResize, window]);\n\n useIsomorphicLayoutEffect(() => {\n let style = trackerY.current?.style;\n let prop = '';\n if (style !== undefined) {\n if ('transform' in style) {\n prop = 'transform';\n } else if ('webkitTransform' in style) {\n prop = 'webkitTransform';\n }\n }\n transformProp.current = prop;\n }, []);\n\n useIsomorphicLayoutEffect(resize);\n\n const setScrollPositionFromTracker = (trackerTop: number) => {\n const progress = trackerTop / (clientHeight.current - trackerHeight.current);\n if (boxRef.current !== null) {\n boxRef.current.scrollTop = (scrollHeight.current - clientHeight.current) * progress;\n }\n };\n\n const onMove = (e: MouseEvent) => {\n e.preventDefault();\n const diff = e.clientY - startY.current;\n const position = Math.min(\n Math.max(trackerTop.current + diff, 0),\n clientHeight.current - trackerHeight.current,\n );\n\n setScrollPositionFromTracker(position);\n };\n\n const {\n trackerVisible,\n onTargetScroll,\n onTrackerDragStart,\n onTrackerDragStop,\n onTrackerMouseEnter,\n onTrackerMouseLeave,\n } = useTrackerVisibility(autoHideScrollbar, autoHideScrollbarDelay);\n\n const onUp = (e: MouseEvent) => {\n e.preventDefault();\n\n if (autoHideScrollbar) {\n onTrackerDragStop();\n }\n\n unsubscribe();\n };\n\n const scroll = (event: React.UIEvent<HTMLDivElement>) => {\n if (ratio.current >= 1 || !boxRef.current) {\n return;\n }\n\n if (autoHideScrollbar) {\n onTargetScroll();\n }\n\n setTrackerPositionFromScroll(boxRef.current.scrollTop);\n onScroll?.(event);\n };\n\n const listeners = [useEventListener('mousemove', onMove), useEventListener('mouseup', onUp)];\n\n function subscribe(el: Document | undefined) {\n if (el) {\n listeners.forEach((l) => l.add(el));\n }\n }\n\n function unsubscribe() {\n listeners.forEach((l) => l.remove());\n }\n\n const onDragStart = (e: React.MouseEvent) => {\n e.preventDefault();\n startY.current = e.clientY;\n trackerTop.current = lastTrackerTop.current;\n\n if (autoHideScrollbar) {\n onTrackerDragStart();\n }\n\n subscribe(document);\n };\n\n return (\n <div\n className={classNames(className, styles['CustomScrollView'], hasPointerClassName(hasPointer))}\n ref={getRootRef}\n {...restProps}\n >\n <div className={styles['CustomScrollView__box']} tabIndex={-1} ref={boxRef} onScroll={scroll}>\n {children}\n </div>\n\n <div className={styles['CustomScrollView__barY']} ref={barY} onClick={stopPropagation}>\n <div\n className={classNames(\n styles['CustomScrollView__trackerY'],\n !trackerVisible && styles['CustomScrollView__trackerY--hidden'],\n )}\n onMouseEnter={autoHideScrollbar ? onTrackerMouseEnter : undefined}\n onMouseLeave={autoHideScrollbar ? onTrackerMouseLeave : undefined}\n ref={trackerY}\n onMouseDown={onDragStart}\n />\n </div>\n </div>\n );\n};\n"],"names":["CustomScrollView","hasPointerClassName","hasPointer","undefined","className","children","boxRef","externalBoxRef","windowResize","autoHideScrollbar","autoHideScrollbarDelay","onScroll","getRootRef","restProps","document","window","useDOM","useAdaptivity","ratio","React","useRef","NaN","lastTrackerTop","clientHeight","trackerHeight","scrollHeight","transformProp","startY","trackerTop","useExternRef","barY","trackerY","setTrackerPosition","scrollTop","current","style","setTrackerPositionFromScroll","progress","resize","localClientHeight","localScrollHeight","localRatio","localTrackerHeight","Math","max","display","height","resizeHandler","useEventListener","useIsomorphicLayoutEffect","add","prop","setScrollPositionFromTracker","onMove","e","preventDefault","diff","clientY","position","min","trackerVisible","onTargetScroll","onTrackerDragStart","onTrackerDragStop","onTrackerMouseEnter","onTrackerMouseLeave","useTrackerVisibility","onUp","unsubscribe","scroll","event","listeners","subscribe","el","forEach","l","remove","onDragStart","div","classNames","ref","tabIndex","onClick","stopPropagation","onMouseEnter","onMouseLeave","onMouseDown"],"mappings":"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"}
|
|
@@ -23,22 +23,22 @@ export interface TrackerVisibilityProps {
|
|
|
23
23
|
/**
|
|
24
24
|
* Функция для обработки события у блока со скроллом
|
|
25
25
|
*/
|
|
26
|
-
onTargetScroll(this: void)
|
|
26
|
+
onTargetScroll: (this: void) => void;
|
|
27
27
|
/**
|
|
28
28
|
* Функция для обработки начала drag event ползунка
|
|
29
29
|
*/
|
|
30
|
-
onTrackerDragStart(this: void)
|
|
30
|
+
onTrackerDragStart: (this: void) => void;
|
|
31
31
|
/**
|
|
32
32
|
* Функция для обработки окончания drag event ползунка
|
|
33
33
|
*/
|
|
34
|
-
onTrackerDragStop(this: void)
|
|
34
|
+
onTrackerDragStop: (this: void) => void;
|
|
35
35
|
/**
|
|
36
36
|
* Функция для обработки mouseLeave event ползунка
|
|
37
37
|
*/
|
|
38
|
-
onTrackerMouseEnter(this: void)
|
|
38
|
+
onTrackerMouseEnter: (this: void) => void;
|
|
39
39
|
/**
|
|
40
40
|
* Функция для обработки mouseEnter event ползунка
|
|
41
41
|
*/
|
|
42
|
-
onTrackerMouseLeave(this: void)
|
|
42
|
+
onTrackerMouseLeave: (this: void) => void;
|
|
43
43
|
}
|
|
44
44
|
//# sourceMappingURL=useTrackerVisibility.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTrackerVisibility.d.ts","sourceRoot":"","sources":["../../../../src/components/CustomScrollView/useTrackerVisibility.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,oEAG9B,sBA0DF,CAAC;AAEF,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;OAEG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,MAAM,WAAW,sBAAsB;IACrC;;OAEG;IACH,cAAc,EAAE,OAAO,CAAC;IACxB;;OAEG;IACH,cAAc,CAAC,IAAI,EAAE,IAAI,
|
|
1
|
+
{"version":3,"file":"useTrackerVisibility.d.ts","sourceRoot":"","sources":["../../../../src/components/CustomScrollView/useTrackerVisibility.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,oEAG9B,sBA0DF,CAAC;AAEF,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;OAEG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,MAAM,WAAW,sBAAsB;IACrC;;OAEG;IACH,cAAc,EAAE,OAAO,CAAC;IACxB;;OAEG;IACH,cAAc,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACrC;;OAEG;IACH,kBAAkB,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACzC;;OAEG;IACH,iBAAiB,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACxC;;OAEG;IACH,mBAAmB,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IAC1C;;OAEG;IACH,mBAAmB,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;CAC3C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/CustomScrollView/useTrackerVisibility.ts"],"sourcesContent":["import * as React from 'react';\nimport { useTimeout } from '../../hooks/useTimeout';\n\n/**\n * Хук, который позволяет управлять видимостью ползунка скроллбара.\n * @param autoHideScrollbar - скрывать ли ползунок скроллбара\n * @param autoHideScrollbarDelay - через какое кол-во миллисекунд ползунок скроллбара скрывается\n * @returns Объект, содержащий параметры, которые позволяют управлять видимостью ползунка\n */\nexport const useTrackerVisibility = (\n autoHideScrollbar = false,\n autoHideScrollbarDelay = 500,\n): TrackerVisibilityProps => {\n const [trackerVisible, setTrackerVisible] = React.useState(!autoHideScrollbar);\n const isMouseOver = React.useRef(false);\n const isTrackerDragging = React.useRef(false);\n\n const { set: setVisibilityTimeout, clear: clearVisibilityTimeout } = useTimeout(\n () => setTrackerVisible(false),\n autoHideScrollbarDelay,\n );\n\n const onTrackerDragStart = React.useCallback(() => {\n clearVisibilityTimeout();\n setTrackerVisible(true);\n isTrackerDragging.current = true;\n }, [clearVisibilityTimeout]);\n\n const onTrackerDragStop = React.useCallback(() => {\n isTrackerDragging.current = false;\n if (!isMouseOver.current) {\n setVisibilityTimeout();\n }\n }, [setVisibilityTimeout, isMouseOver]);\n\n /**\n * Позволяет \"запланировать\" скрытие ползунка через delay миллисекунд. Если тайм-аут не успевает сработать, то каждый\n * последующий вызов функции откладывает скрытие ползунка на delay миллисекунд\n */\n const queueTrackerVisibility = React.useCallback(() => {\n if (isTrackerDragging.current) {\n return;\n }\n setTrackerVisible(true);\n setVisibilityTimeout();\n }, [setVisibilityTimeout]);\n\n const onTrackerMouseEnter = React.useCallback(() => {\n clearVisibilityTimeout();\n isMouseOver.current = true;\n setTrackerVisible(true);\n }, [clearVisibilityTimeout]);\n\n const onTrackerMouseLeave = React.useCallback(() => {\n queueTrackerVisibility();\n isMouseOver.current = false;\n }, [queueTrackerVisibility]);\n\n const onTargetScroll = React.useCallback(() => {\n queueTrackerVisibility();\n }, [queueTrackerVisibility]);\n\n return {\n trackerVisible,\n onTrackerDragStart,\n onTrackerDragStop,\n onTrackerMouseEnter,\n onTrackerMouseLeave,\n onTargetScroll,\n };\n};\n\nexport interface TrackerOptionsProps {\n /**\n * Скрывать ли ползунок скроллбара\n */\n autoHideScrollbar?: boolean;\n /**\n * Через какое кол-во миллисекунд ползунок скроллбара скрывается\n */\n autoHideScrollbarDelay?: number;\n}\n\nexport interface TrackerVisibilityProps {\n /**\n * Отвечает за видимость ползунка\n */\n trackerVisible: boolean;\n /**\n * Функция для обработки события у блока со скроллом\n */\n onTargetScroll(this: void)
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/CustomScrollView/useTrackerVisibility.ts"],"sourcesContent":["import * as React from 'react';\nimport { useTimeout } from '../../hooks/useTimeout';\n\n/**\n * Хук, который позволяет управлять видимостью ползунка скроллбара.\n * @param autoHideScrollbar - скрывать ли ползунок скроллбара\n * @param autoHideScrollbarDelay - через какое кол-во миллисекунд ползунок скроллбара скрывается\n * @returns Объект, содержащий параметры, которые позволяют управлять видимостью ползунка\n */\nexport const useTrackerVisibility = (\n autoHideScrollbar = false,\n autoHideScrollbarDelay = 500,\n): TrackerVisibilityProps => {\n const [trackerVisible, setTrackerVisible] = React.useState(!autoHideScrollbar);\n const isMouseOver = React.useRef(false);\n const isTrackerDragging = React.useRef(false);\n\n const { set: setVisibilityTimeout, clear: clearVisibilityTimeout } = useTimeout(\n () => setTrackerVisible(false),\n autoHideScrollbarDelay,\n );\n\n const onTrackerDragStart = React.useCallback(() => {\n clearVisibilityTimeout();\n setTrackerVisible(true);\n isTrackerDragging.current = true;\n }, [clearVisibilityTimeout]);\n\n const onTrackerDragStop = React.useCallback(() => {\n isTrackerDragging.current = false;\n if (!isMouseOver.current) {\n setVisibilityTimeout();\n }\n }, [setVisibilityTimeout, isMouseOver]);\n\n /**\n * Позволяет \"запланировать\" скрытие ползунка через delay миллисекунд. Если тайм-аут не успевает сработать, то каждый\n * последующий вызов функции откладывает скрытие ползунка на delay миллисекунд\n */\n const queueTrackerVisibility = React.useCallback(() => {\n if (isTrackerDragging.current) {\n return;\n }\n setTrackerVisible(true);\n setVisibilityTimeout();\n }, [setVisibilityTimeout]);\n\n const onTrackerMouseEnter = React.useCallback(() => {\n clearVisibilityTimeout();\n isMouseOver.current = true;\n setTrackerVisible(true);\n }, [clearVisibilityTimeout]);\n\n const onTrackerMouseLeave = React.useCallback(() => {\n queueTrackerVisibility();\n isMouseOver.current = false;\n }, [queueTrackerVisibility]);\n\n const onTargetScroll = React.useCallback(() => {\n queueTrackerVisibility();\n }, [queueTrackerVisibility]);\n\n return {\n trackerVisible,\n onTrackerDragStart,\n onTrackerDragStop,\n onTrackerMouseEnter,\n onTrackerMouseLeave,\n onTargetScroll,\n };\n};\n\nexport interface TrackerOptionsProps {\n /**\n * Скрывать ли ползунок скроллбара\n */\n autoHideScrollbar?: boolean;\n /**\n * Через какое кол-во миллисекунд ползунок скроллбара скрывается\n */\n autoHideScrollbarDelay?: number;\n}\n\nexport interface TrackerVisibilityProps {\n /**\n * Отвечает за видимость ползунка\n */\n trackerVisible: boolean;\n /**\n * Функция для обработки события у блока со скроллом\n */\n onTargetScroll: (this: void) => void;\n /**\n * Функция для обработки начала drag event ползунка\n */\n onTrackerDragStart: (this: void) => void;\n /**\n * Функция для обработки окончания drag event ползунка\n */\n onTrackerDragStop: (this: void) => void;\n /**\n * Функция для обработки mouseLeave event ползунка\n */\n onTrackerMouseEnter: (this: void) => void;\n /**\n * Функция для обработки mouseEnter event ползунка\n */\n onTrackerMouseLeave: (this: void) => void;\n}\n"],"names":["useTrackerVisibility","autoHideScrollbar","autoHideScrollbarDelay","trackerVisible","setTrackerVisible","React","useState","isMouseOver","useRef","isTrackerDragging","set","setVisibilityTimeout","clear","clearVisibilityTimeout","useTimeout","onTrackerDragStart","useCallback","current","onTrackerDragStop","queueTrackerVisibility","onTrackerMouseEnter","onTrackerMouseLeave","onTargetScroll"],"mappings":";;;;+BASaA;;;eAAAA;;;;iEATU;4BACI;AAQpB,MAAMA,uBAAuB,CAClCC,oBAAoB,KAAK,EACzBC,yBAAyB,GAAG;IAE5B,MAAM,CAACC,gBAAgBC,kBAAkB,GAAGC,OAAMC,QAAQ,CAAC,CAACL;IAC5D,MAAMM,cAAcF,OAAMG,MAAM,CAAC;IACjC,MAAMC,oBAAoBJ,OAAMG,MAAM,CAAC;IAEvC,MAAM,EAAEE,KAAKC,oBAAoB,EAAEC,OAAOC,sBAAsB,EAAE,GAAGC,IAAAA,sBAAU,EAC7E,IAAMV,kBAAkB,QACxBF;IAGF,MAAMa,qBAAqBV,OAAMW,WAAW,CAAC;QAC3CH;QACAT,kBAAkB;QAClBK,kBAAkBQ,OAAO,GAAG;IAC9B,GAAG;QAACJ;KAAuB;IAE3B,MAAMK,oBAAoBb,OAAMW,WAAW,CAAC;QAC1CP,kBAAkBQ,OAAO,GAAG;QAC5B,IAAI,CAACV,YAAYU,OAAO,EAAE;YACxBN;QACF;IACF,GAAG;QAACA;QAAsBJ;KAAY;IAEtC;;;GAGC,GACD,MAAMY,yBAAyBd,OAAMW,WAAW,CAAC;QAC/C,IAAIP,kBAAkBQ,OAAO,EAAE;YAC7B;QACF;QACAb,kBAAkB;QAClBO;IACF,GAAG;QAACA;KAAqB;IAEzB,MAAMS,sBAAsBf,OAAMW,WAAW,CAAC;QAC5CH;QACAN,YAAYU,OAAO,GAAG;QACtBb,kBAAkB;IACpB,GAAG;QAACS;KAAuB;IAE3B,MAAMQ,sBAAsBhB,OAAMW,WAAW,CAAC;QAC5CG;QACAZ,YAAYU,OAAO,GAAG;IACxB,GAAG;QAACE;KAAuB;IAE3B,MAAMG,iBAAiBjB,OAAMW,WAAW,CAAC;QACvCG;IACF,GAAG;QAACA;KAAuB;IAE3B,OAAO;QACLhB;QACAY;QACAG;QACAE;QACAC;QACAC;IACF;AACF"}
|
|
@@ -2,7 +2,7 @@ import * as React from 'react';
|
|
|
2
2
|
import { HasDataAttribute } from '../../types';
|
|
3
3
|
export interface CustomSelectClearButtonProps extends HasDataAttribute {
|
|
4
4
|
className?: string;
|
|
5
|
-
onClick()
|
|
5
|
+
onClick: () => void;
|
|
6
6
|
disabled?: boolean;
|
|
7
7
|
}
|
|
8
8
|
export declare const CustomSelectClearButton: ({ className, onClick, ...restProps }: CustomSelectClearButtonProps) => React.JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CustomSelectClearButton.d.ts","sourceRoot":"","sources":["../../../../src/components/CustomSelect/CustomSelectClearButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAG/C,MAAM,WAAW,4BAA6B,SAAQ,gBAAgB;IACpE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,
|
|
1
|
+
{"version":3,"file":"CustomSelectClearButton.d.ts","sourceRoot":"","sources":["../../../../src/components/CustomSelect/CustomSelectClearButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAG/C,MAAM,WAAW,4BAA6B,SAAQ,gBAAgB;IACpE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,eAAO,MAAM,uBAAuB,yCAIjC,4BAA4B,sBAoB9B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/CustomSelect/CustomSelectClearButton.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Icon16Cancel } from '@vkontakte/icons';\nimport { stopPropagation } from '../../lib/utils';\nimport { HasDataAttribute } from '../../types';\nimport { IconButton } from '../IconButton/IconButton';\n\nexport interface CustomSelectClearButtonProps extends HasDataAttribute {\n className?: string;\n onClick()
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/CustomSelect/CustomSelectClearButton.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Icon16Cancel } from '@vkontakte/icons';\nimport { stopPropagation } from '../../lib/utils';\nimport { HasDataAttribute } from '../../types';\nimport { IconButton } from '../IconButton/IconButton';\n\nexport interface CustomSelectClearButtonProps extends HasDataAttribute {\n className?: string;\n onClick: () => void;\n disabled?: boolean;\n}\n\nexport const CustomSelectClearButton = ({\n className,\n onClick,\n ...restProps\n}: CustomSelectClearButtonProps) => {\n return (\n <IconButton\n Component=\"button\"\n label=\"Очистить поле\"\n onKeyDown={stopPropagation}\n type=\"button\"\n activeMode=\"opacity\"\n hoverMode=\"opacity\"\n {...restProps}\n className={className}\n onClick={(e) => {\n stopPropagation(e);\n e.preventDefault();\n onClick();\n }}\n >\n <Icon16Cancel />\n </IconButton>\n );\n};\n"],"names":["CustomSelectClearButton","className","onClick","restProps","IconButton","Component","label","onKeyDown","stopPropagation","type","activeMode","hoverMode","e","preventDefault","Icon16Cancel"],"mappings":";;;;+BAYaA;;;eAAAA;;;;;;;iEAZU;uBACM;uBACG;4BAEL;AAQpB,MAAMA,0BAA0B;QAAC,EACtCC,SAAS,EACTC,OAAO,EAEsB,WAD1BC;QAFHF;QACAC;;IAGA,qBACE,qBAACE,sBAAU;QACTC,WAAU;QACVC,OAAM;QACNC,WAAWC,sBAAe;QAC1BC,MAAK;QACLC,YAAW;QACXC,WAAU;OACNR;QACJF,WAAWA;QACXC,SAAS,CAACU;YACRJ,IAAAA,sBAAe,EAACI;YAChBA,EAAEC,cAAc;YAChBX;QACF;sBAEA,qBAACY,mBAAY;AAGnB"}
|
|
@@ -13,7 +13,7 @@ export interface CustomSelectDropdownProps extends HTMLAttributesWithRootRef<HTM
|
|
|
13
13
|
*/
|
|
14
14
|
autoWidth?: boolean;
|
|
15
15
|
forcePortal?: boolean;
|
|
16
|
-
onPlacementChange
|
|
16
|
+
onPlacementChange?: (placement: Placement) => void;
|
|
17
17
|
/**
|
|
18
18
|
* Отключает максимальную высоту по умолчанию
|
|
19
19
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CustomSelectDropdown.d.ts","sourceRoot":"","sources":["../../../../src/components/CustomSelectDropdown/CustomSelectDropdown.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAExD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAK/E,MAAM,WAAW,yBACf,SAAQ,yBAAyB,CAAC,cAAc,CAAC,EAC/C,mBAAmB;IACrB,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACxC,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,YAAY,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACzC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,iBAAiB,CAAC,CAAC,SAAS,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"CustomSelectDropdown.d.ts","sourceRoot":"","sources":["../../../../src/components/CustomSelectDropdown/CustomSelectDropdown.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAExD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAK/E,MAAM,WAAW,yBACf,SAAQ,yBAAyB,CAAC,cAAc,CAAC,EAC/C,mBAAmB;IACrB,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACxC,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,YAAY,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACzC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,KAAK,IAAI,CAAC;IACnD;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAID,eAAO,MAAM,oBAAoB,oOAe9B,yBAAyB,sBAoD3B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/CustomSelectDropdown/CustomSelectDropdown.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport type { Placement } from '../../lib/floating';\nimport { HTMLAttributesWithRootRef } from '../../types';\nimport { CustomScrollView } from '../CustomScrollView/CustomScrollView';\nimport { TrackerOptionsProps } from '../CustomScrollView/useTrackerVisibility';\nimport { Popper } from '../Popper/Popper';\nimport { Spinner } from '../Spinner/Spinner';\nimport styles from './CustomSelectDropdown.module.css';\n\nexport interface CustomSelectDropdownProps\n extends HTMLAttributesWithRootRef<HTMLDivElement>,\n TrackerOptionsProps {\n targetRef: React.RefObject<HTMLElement>;\n placement?: Placement;\n scrollBoxRef?: React.Ref<HTMLDivElement>;\n fetching?: boolean;\n offsetDistance?: number;\n /**\n * Ширина раскрывающегося списка зависит от контента\n */\n autoWidth?: boolean;\n forcePortal?: boolean;\n onPlacementChange
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/CustomSelectDropdown/CustomSelectDropdown.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport type { Placement } from '../../lib/floating';\nimport { HTMLAttributesWithRootRef } from '../../types';\nimport { CustomScrollView } from '../CustomScrollView/CustomScrollView';\nimport { TrackerOptionsProps } from '../CustomScrollView/useTrackerVisibility';\nimport { Popper } from '../Popper/Popper';\nimport { Spinner } from '../Spinner/Spinner';\nimport styles from './CustomSelectDropdown.module.css';\n\nexport interface CustomSelectDropdownProps\n extends HTMLAttributesWithRootRef<HTMLDivElement>,\n TrackerOptionsProps {\n targetRef: React.RefObject<HTMLElement>;\n placement?: Placement;\n scrollBoxRef?: React.Ref<HTMLDivElement>;\n fetching?: boolean;\n offsetDistance?: number;\n /**\n * Ширина раскрывающегося списка зависит от контента\n */\n autoWidth?: boolean;\n forcePortal?: boolean;\n onPlacementChange?: (placement: Placement) => void;\n /**\n * Отключает максимальную высоту по умолчанию\n */\n noMaxHeight?: boolean;\n}\n\nconst calcIsTop = (placement: Placement) => placement.startsWith('top');\n\nexport const CustomSelectDropdown = ({\n children,\n targetRef,\n scrollBoxRef,\n placement = 'bottom',\n fetching,\n onPlacementChange: parentOnPlacementChange,\n offsetDistance = 0,\n autoWidth = false,\n forcePortal = true,\n autoHideScrollbar,\n autoHideScrollbarDelay,\n className,\n noMaxHeight = false,\n ...restProps\n}: CustomSelectDropdownProps) => {\n const [isTop, setIsTop] = React.useState(() => calcIsTop(placement));\n\n const onPlacementChange = React.useCallback(\n (placement: Placement) => {\n setIsTop(calcIsTop(placement));\n if (parentOnPlacementChange) {\n parentOnPlacementChange(placement);\n }\n },\n [parentOnPlacementChange],\n );\n\n return (\n <Popper\n targetRef={targetRef}\n offsetByMainAxis={offsetDistance}\n sameWidth={!autoWidth}\n onPlacementChange={onPlacementChange}\n placement={placement}\n className={classNames(\n styles['CustomSelectDropdown'],\n 'vkuiInternalCustomSelectDropdown',\n offsetDistance === 0 &&\n (isTop ? styles['CustomSelectDropdown--top'] : styles['CustomSelectDropdown--bottom']),\n autoWidth &&\n classNames(\n styles['CustomSelectDropdown--wide'],\n 'vkuiInternalCustomSelectDropdown--wide',\n ),\n className,\n )}\n usePortal={forcePortal}\n autoUpdateOnTargetResize\n {...restProps}\n >\n <CustomScrollView\n boxRef={scrollBoxRef}\n className={noMaxHeight ? undefined : styles['CustomSelectDropdown__in--withMaxHeight']}\n autoHideScrollbar={autoHideScrollbar}\n autoHideScrollbarDelay={autoHideScrollbarDelay}\n >\n {fetching ? (\n <div className={styles['CustomSelectDropdown__fetching']}>\n <Spinner size=\"small\" />\n </div>\n ) : (\n children\n )}\n </CustomScrollView>\n </Popper>\n );\n};\n"],"names":["CustomSelectDropdown","calcIsTop","placement","startsWith","children","targetRef","scrollBoxRef","fetching","onPlacementChange","parentOnPlacementChange","offsetDistance","autoWidth","forcePortal","autoHideScrollbar","autoHideScrollbarDelay","className","noMaxHeight","restProps","isTop","setIsTop","React","useState","useCallback","Popper","offsetByMainAxis","sameWidth","classNames","usePortal","autoUpdateOnTargetResize","CustomScrollView","boxRef","undefined","div","Spinner","size"],"mappings":";;;;+BAgCaA;;;eAAAA;;;;;;iEAhCU;sBACI;kCAGM;wBAEV;yBACC;AAuBxB,MAAMC,YAAY,CAACC,YAAyBA,UAAUC,UAAU,CAAC;AAE1D,MAAMH,uBAAuB;QAAC,EACnCI,QAAQ,EACRC,SAAS,EACTC,YAAY,EACZJ,YAAY,QAAQ,EACpBK,QAAQ,EACRC,mBAAmBC,uBAAuB,EAC1CC,iBAAiB,CAAC,EAClBC,YAAY,KAAK,EACjBC,cAAc,IAAI,EAClBC,iBAAiB,EACjBC,sBAAsB,EACtBC,SAAS,EACTC,cAAc,KAAK,EAEO,WADvBC;QAbHb;QACAC;QACAC;QACAJ;QACAK;QACAC;QACAE;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;;IAGA,MAAM,CAACE,OAAOC,SAAS,GAAGC,OAAMC,QAAQ,CAAC,IAAMpB,UAAUC;IAEzD,MAAMM,oBAAoBY,OAAME,WAAW,CACzC,CAACpB;QACCiB,SAASlB,UAAUC;QACnB,IAAIO,yBAAyB;YAC3BA,wBAAwBP;QAC1B;IACF,GACA;QAACO;KAAwB;IAG3B,qBACE,qBAACc,cAAM;QACLlB,WAAWA;QACXmB,kBAAkBd;QAClBe,WAAW,CAACd;QACZH,mBAAmBA;QACnBN,WAAWA;QACXa,WAAWW,IAAAA,gBAAU,8BAEnB,oCACAhB,mBAAmB,KAChBQ,CAAAA,4EAAmF,GACtFP,aACEe,IAAAA,gBAAU,oCAER,2CAEJX;QAEFY,WAAWf;QACXgB,0BAAAA;OACIX,0BAEJ,qBAACY,kCAAgB;QACfC,QAAQxB;QACRS,WAAWC,cAAce;QACzBlB,mBAAmBA;QACnBC,wBAAwBA;OAEvBP,yBACC,qBAACyB;QAAIjB,SAAS;qBACZ,qBAACkB,gBAAO;QAACC,MAAK;UAGhB9B;AAKV"}
|
|
@@ -4,7 +4,7 @@ export interface FocusTrapProps<T extends HTMLElement = HTMLElement> extends Rea
|
|
|
4
4
|
autoFocus?: boolean;
|
|
5
5
|
restoreFocus?: boolean | (() => boolean);
|
|
6
6
|
timeout?: number;
|
|
7
|
-
onClose
|
|
7
|
+
onClose?: () => void;
|
|
8
8
|
}
|
|
9
9
|
/**
|
|
10
10
|
* @see https://vkcom.github.io/VKUI/#/FocusTrap
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FocusTrap.d.ts","sourceRoot":"","sources":["../../../../src/components/FocusTrap/FocusTrap.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAU/B,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAIvD,MAAM,WAAW,cAAc,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW,CACjE,SAAQ,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAChC,UAAU,CAAC,CAAC,CAAC,EACb,YAAY;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,GAAG,CAAC,MAAM,OAAO,CAAC,CAAC;IACzC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"FocusTrap.d.ts","sourceRoot":"","sources":["../../../../src/components/FocusTrap/FocusTrap.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAU/B,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAIvD,MAAM,WAAW,cAAc,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW,CACjE,SAAQ,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAChC,UAAU,CAAC,CAAC,CAAC,EACb,YAAY;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,GAAG,CAAC,MAAM,OAAO,CAAC,CAAC;IACzC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED;;GAEG;AACH,eAAO,MAAM,SAAS,6KAmJrB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/FocusTrap/FocusTrap.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { FOCUSABLE_ELEMENTS_LIST, Keys, pressedKey } from '../../lib/accessibility';\nimport {\n contains,\n getActiveElementByAnotherElement,\n getWindow,\n isHTMLElement,\n} from '../../lib/dom';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport { HasComponent, HasRootRef } from '../../types';\nimport { AppRootContext } from '../AppRoot/AppRootContext';\n\nconst FOCUSABLE_ELEMENTS: string = FOCUSABLE_ELEMENTS_LIST.join();\nexport interface FocusTrapProps<T extends HTMLElement = HTMLElement>\n extends React.AllHTMLAttributes<T>,\n HasRootRef<T>,\n HasComponent {\n autoFocus?: boolean;\n restoreFocus?: boolean | (() => boolean);\n timeout?: number;\n onClose
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/FocusTrap/FocusTrap.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { FOCUSABLE_ELEMENTS_LIST, Keys, pressedKey } from '../../lib/accessibility';\nimport {\n contains,\n getActiveElementByAnotherElement,\n getWindow,\n isHTMLElement,\n} from '../../lib/dom';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport { HasComponent, HasRootRef } from '../../types';\nimport { AppRootContext } from '../AppRoot/AppRootContext';\n\nconst FOCUSABLE_ELEMENTS: string = FOCUSABLE_ELEMENTS_LIST.join();\nexport interface FocusTrapProps<T extends HTMLElement = HTMLElement>\n extends React.AllHTMLAttributes<T>,\n HasRootRef<T>,\n HasComponent {\n autoFocus?: boolean;\n restoreFocus?: boolean | (() => boolean);\n timeout?: number;\n onClose?: () => void;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/FocusTrap\n */\nexport const FocusTrap = <T extends HTMLElement = HTMLElement>({\n Component = 'div',\n onClose,\n autoFocus = true,\n restoreFocus = true,\n timeout = 0,\n getRootRef,\n children,\n ...restProps\n}: FocusTrapProps<T>) => {\n const ref = useExternRef<T>(getRootRef);\n\n const { keyboardInput } = React.useContext(AppRootContext);\n const focusableNodesRef = React.useRef<HTMLElement[]>([]);\n\n useIsomorphicLayoutEffect(\n function collectFocusableNodesRef() {\n if (!ref.current) {\n return;\n }\n\n const nodes: HTMLElement[] = [];\n // eslint-disable-next-line no-restricted-properties\n ref.current.querySelectorAll<HTMLElement>(FOCUSABLE_ELEMENTS).forEach((focusableEl) => {\n const { display, visibility } = getComputedStyle(focusableEl);\n if (display !== 'none' && visibility !== 'hidden') {\n nodes.push(focusableEl);\n }\n });\n\n if (nodes.length === 0) {\n // Чтобы фокус был хотя бы на родителе\n nodes.push(ref.current);\n }\n\n focusableNodesRef.current = nodes;\n },\n [children],\n );\n\n useIsomorphicLayoutEffect(\n function tryToAutoFocusToFirstNode() {\n if (!ref.current || !autoFocus || !keyboardInput) {\n return;\n }\n const autoFocusToFirstNode = () => {\n if (!ref.current || !focusableNodesRef.current.length) {\n return;\n }\n const activeElement = getActiveElementByAnotherElement(ref.current);\n if (!contains(ref.current, activeElement)) {\n focusableNodesRef.current[0].focus();\n }\n };\n const timeoutId = setTimeout(autoFocusToFirstNode, timeout);\n return () => {\n clearTimeout(timeoutId);\n };\n },\n [autoFocus, timeout, keyboardInput],\n );\n\n useIsomorphicLayoutEffect(\n function tryToRestoreFocusOnUnmount() {\n if (!ref.current || !restoreFocus) {\n return;\n }\n\n const restoreFocusTo = getActiveElementByAnotherElement(ref.current);\n\n return () => {\n const shouldRestoreFocus =\n typeof restoreFocus === 'function' ? restoreFocus() : restoreFocus;\n\n if (!shouldRestoreFocus || !isHTMLElement(restoreFocusTo)) {\n return;\n }\n\n setTimeout(() => {\n if (restoreFocusTo) {\n restoreFocusTo.focus();\n }\n }, timeout);\n };\n },\n [restoreFocus, timeout],\n );\n\n useIsomorphicLayoutEffect(() => {\n if (!ref.current) {\n return;\n }\n\n const onDocumentKeydown = (event: KeyboardEvent) => {\n const pressedKeyResult = pressedKey(event);\n\n switch (pressedKeyResult) {\n case Keys.TAB: {\n if (!focusableNodesRef.current.length) {\n return false;\n }\n\n const lastIdx = focusableNodesRef.current.length - 1;\n const targetIdx = focusableNodesRef.current.findIndex((node) => node === event.target);\n\n const shouldFocusFirstNode =\n targetIdx === -1 || (targetIdx === lastIdx && !event.shiftKey);\n\n if (shouldFocusFirstNode || (targetIdx === 0 && event.shiftKey)) {\n event.preventDefault();\n\n const node = focusableNodesRef.current[shouldFocusFirstNode ? 0 : lastIdx];\n\n if (node !== getActiveElementByAnotherElement(node)) {\n node.focus();\n }\n\n return false;\n }\n\n break;\n }\n case Keys.ESCAPE: {\n if (onClose) {\n event.preventDefault();\n onClose();\n }\n }\n }\n\n return true;\n };\n\n const doc = getWindow(ref.current).document;\n doc.addEventListener('keydown', onDocumentKeydown, {\n capture: true,\n });\n return () => {\n doc.removeEventListener('keydown', onDocumentKeydown, true);\n };\n }, [onClose, ref]);\n\n return (\n <Component tabIndex={-1} ref={ref} {...restProps}>\n {children}\n </Component>\n );\n};\n"],"names":["FocusTrap","FOCUSABLE_ELEMENTS","FOCUSABLE_ELEMENTS_LIST","join","Component","onClose","autoFocus","restoreFocus","timeout","getRootRef","children","restProps","ref","useExternRef","keyboardInput","React","useContext","AppRootContext","focusableNodesRef","useRef","useIsomorphicLayoutEffect","collectFocusableNodesRef","current","nodes","querySelectorAll","forEach","focusableEl","display","visibility","getComputedStyle","push","length","tryToAutoFocusToFirstNode","autoFocusToFirstNode","activeElement","getActiveElementByAnotherElement","contains","focus","timeoutId","setTimeout","clearTimeout","tryToRestoreFocusOnUnmount","restoreFocusTo","shouldRestoreFocus","isHTMLElement","onDocumentKeydown","event","pressedKeyResult","pressedKey","Keys","TAB","lastIdx","targetIdx","findIndex","node","target","shouldFocusFirstNode","shiftKey","preventDefault","ESCAPE","doc","getWindow","document","addEventListener","capture","removeEventListener","tabIndex"],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@ export interface InputLikeProps extends RootComponentProps<HTMLSpanElement> {
|
|
|
5
5
|
index: number;
|
|
6
6
|
value?: string;
|
|
7
7
|
label?: string;
|
|
8
|
-
onElementSelect
|
|
8
|
+
onElementSelect?: (index: number) => void;
|
|
9
9
|
}
|
|
10
10
|
export declare const InputLike: {
|
|
11
11
|
({ value, length, index, onElementSelect, onClick, onFocus, label, ...restProps }: InputLikeProps): React.JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InputLike.d.ts","sourceRoot":"","sources":["../../../../src/components/InputLike/InputLike.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAiB,KAAK,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAIxF,MAAM,WAAW,cAAe,SAAQ,kBAAkB,CAAC,eAAe,CAAC;IACzE,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,CAAC,KAAK,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"InputLike.d.ts","sourceRoot":"","sources":["../../../../src/components/InputLike/InputLike.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAiB,KAAK,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAIxF,MAAM,WAAW,cAAe,SAAQ,kBAAkB,CAAC,eAAe,CAAC;IACzE,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAC3C;AAgBD,eAAO,MAAM,SAAS;uFASnB,cAAc;;CA4BhB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/InputLike/InputLike.tsx"],"sourcesContent":["import * as React from 'react';\nimport { callMultiple } from '../../lib/callMultiple';\nimport { stopPropagation } from '../../lib/utils';\nimport { RootComponent, type RootComponentProps } from '../RootComponent/RootComponent';\nimport { VisuallyHidden } from '../VisuallyHidden/VisuallyHidden';\nimport styles from './InputLike.module.css';\n\nexport interface InputLikeProps extends RootComponentProps<HTMLSpanElement> {\n length: number;\n index: number;\n value?: string;\n label?: string;\n onElementSelect
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/InputLike/InputLike.tsx"],"sourcesContent":["import * as React from 'react';\nimport { callMultiple } from '../../lib/callMultiple';\nimport { stopPropagation } from '../../lib/utils';\nimport { RootComponent, type RootComponentProps } from '../RootComponent/RootComponent';\nimport { VisuallyHidden } from '../VisuallyHidden/VisuallyHidden';\nimport styles from './InputLike.module.css';\n\nexport interface InputLikeProps extends RootComponentProps<HTMLSpanElement> {\n length: number;\n index: number;\n value?: string;\n label?: string;\n onElementSelect?: (index: number) => void;\n}\n\nconst MASK_SYMBOL = String.fromCharCode(0x2007);\n\nfunction getMaskElements(length: number) {\n const result = [];\n for (let index = 0; index < length; index += 1) {\n result.push(\n <span key={index} className={styles['InputLike__mask']}>\n {MASK_SYMBOL}\n </span>,\n );\n }\n return result;\n}\n\nexport const InputLike = ({\n value,\n length,\n index,\n onElementSelect,\n onClick,\n onFocus,\n label,\n ...restProps\n}: InputLikeProps) => {\n const handleElementSelect = React.useCallback(\n (event: React.MouseEvent<HTMLSpanElement>) => {\n stopPropagation(event);\n onElementSelect?.(index);\n },\n [index, onElementSelect],\n );\n\n return (\n <RootComponent\n Component=\"span\"\n baseClassName={value?.length === length ? styles['InputLike--full'] : undefined}\n tabIndex={0}\n onClick={callMultiple(onClick, handleElementSelect)}\n onFocus={callMultiple(stopPropagation, onFocus)}\n {...restProps}\n >\n {label && <VisuallyHidden>{label}</VisuallyHidden>}\n {value?.slice(0, length - 1)}\n {value?.slice(length - 1) && (\n <span key={index} className={styles['InputLike__last_character']}>\n {value.slice(length - 1)}\n </span>\n )}\n {getMaskElements(length - (value?.length ?? 0))}\n </RootComponent>\n );\n};\n\nInputLike.displayName = 'InputLike';\n"],"names":["InputLike","MASK_SYMBOL","String","fromCharCode","getMaskElements","length","result","index","push","span","key","className","value","onElementSelect","onClick","onFocus","label","restProps","handleElementSelect","React","useCallback","event","stopPropagation","RootComponent","Component","baseClassName","undefined","tabIndex","callMultiple","VisuallyHidden","slice","displayName"],"mappings":";;;;+BA6BaA;;;eAAAA;;;;;;iEA7BU;8BACM;uBACG;+BACuB;gCACxB;AAW/B,MAAMC,cAAcC,OAAOC,YAAY,CAAC;AAExC,SAASC,gBAAgBC,MAAc;IACrC,MAAMC,SAAS,EAAE;IACjB,IAAK,IAAIC,QAAQ,GAAGA,QAAQF,QAAQE,SAAS,EAAG;QAC9CD,OAAOE,IAAI,eACT,qBAACC;YAAKC,KAAKH;YAAOI,SAAS;WACxBV;IAGP;IACA,OAAOK;AACT;AAEO,MAAMN,YAAY;QAAC,EACxBY,KAAK,EACLP,MAAM,EACNE,KAAK,EACLM,eAAe,EACfC,OAAO,EACPC,OAAO,EACPC,KAAK,EAEU,WADZC;QAPHL;QACAP;QACAE;QACAM;QACAC;QACAC;QACAC;;IAGA,MAAME,sBAAsBC,OAAMC,WAAW,CAC3C,CAACC;QACCC,IAAAA,sBAAe,EAACD;QAChBR,4BAAAA,sCAAAA,gBAAkBN;IACpB,GACA;QAACA;QAAOM;KAAgB;QAmBKD;IAhB/B,qBACE,qBAACW,4BAAa;QACZC,WAAU;QACVC,eAAeb,CAAAA,kBAAAA,4BAAAA,MAAOP,MAAM,MAAKA,iCAAqCqB;QACtEC,UAAU;QACVb,SAASc,IAAAA,0BAAY,EAACd,SAASI;QAC/BH,SAASa,IAAAA,0BAAY,EAACN,sBAAe,EAAEP;OACnCE,YAEHD,uBAAS,qBAACa,8BAAc,QAAEb,QAC1BJ,kBAAAA,4BAAAA,MAAOkB,KAAK,CAAC,GAAGzB,SAAS,IACzBO,CAAAA,kBAAAA,4BAAAA,MAAOkB,KAAK,CAACzB,SAAS,qBACrB,qBAACI;QAAKC,KAAKH;QAAOI,SAAS;OACxBC,MAAMkB,KAAK,CAACzB,SAAS,KAGzBD,gBAAgBC,SAAUO,CAAAA,CAAAA,gBAAAA,kBAAAA,4BAAAA,MAAOP,MAAM,cAAbO,2BAAAA,gBAAiB,CAAA;AAGlD;AAEAZ,UAAU+B,WAAW,GAAG"}
|
|
@@ -6,7 +6,7 @@ type ModalRefs = {
|
|
|
6
6
|
};
|
|
7
7
|
export interface ModalRootContextInterface {
|
|
8
8
|
updateModalHeight: VoidFunction;
|
|
9
|
-
registerModal(data: ModalRegistryEntry)
|
|
9
|
+
registerModal: (data: ModalRegistryEntry) => void;
|
|
10
10
|
onClose?: VoidFunction;
|
|
11
11
|
isInsideModal: boolean;
|
|
12
12
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModalRootContext.d.ts","sourceRoot":"","sources":["../../../../src/components/ModalRoot/ModalRootContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAErE,MAAM,MAAM,kBAAkB,GAAG,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;AACjG,KAAK,SAAS,GAAG;KAAG,CAAC,IAAI,MAAM,aAAa,GAAG,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,IAAI;CAAE,CAAC;AAE/E,MAAM,WAAW,yBAAyB;IACxC,iBAAiB,EAAE,YAAY,CAAC;IAChC,aAAa,CAAC,IAAI,EAAE,kBAAkB,
|
|
1
|
+
{"version":3,"file":"ModalRootContext.d.ts","sourceRoot":"","sources":["../../../../src/components/ModalRoot/ModalRootContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAErE,MAAM,MAAM,kBAAkB,GAAG,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;AACjG,KAAK,SAAS,GAAG;KAAG,CAAC,IAAI,MAAM,aAAa,GAAG,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,IAAI;CAAE,CAAC;AAE/E,MAAM,WAAW,yBAAyB;IACxC,iBAAiB,EAAE,YAAY,CAAC;IAChC,aAAa,EAAE,CAAC,IAAI,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAClD,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,eAAO,MAAM,gBAAgB,0CAI3B,CAAC;AAEH;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,SAAS;;EAwBvE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/ModalRoot/ModalRootContext.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport { ModalElements, ModalsStateEntry, ModalType } from './types';\n\nexport type ModalRegistryEntry = ModalElements & Required<Pick<ModalsStateEntry, 'type' | 'id'>>;\ntype ModalRefs = { [k in keyof ModalElements]: (e: ModalElements[k]) => void };\n\nexport interface ModalRootContextInterface {\n updateModalHeight: VoidFunction;\n registerModal(data: ModalRegistryEntry)
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/ModalRoot/ModalRootContext.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport { ModalElements, ModalsStateEntry, ModalType } from './types';\n\nexport type ModalRegistryEntry = ModalElements & Required<Pick<ModalsStateEntry, 'type' | 'id'>>;\ntype ModalRefs = { [k in keyof ModalElements]: (e: ModalElements[k]) => void };\n\nexport interface ModalRootContextInterface {\n updateModalHeight: VoidFunction;\n registerModal: (data: ModalRegistryEntry) => void;\n onClose?: VoidFunction;\n isInsideModal: boolean;\n}\n\nexport const ModalRootContext = React.createContext<ModalRootContextInterface>({\n updateModalHeight: () => undefined,\n registerModal: () => undefined,\n isInsideModal: false,\n});\n\n/**\n * All referenced elements must be static\n */\nexport function useModalRegistry(id: string | undefined, type: ModalType) {\n const modalContext = React.useContext(ModalRootContext);\n const elements = React.useRef<ModalElements>({}).current;\n useIsomorphicLayoutEffect(() => {\n if (id !== undefined) {\n modalContext.registerModal({ ...elements, type, id });\n // unset refs on unmount to prevent leak\n const reset = Object.keys(elements).reduce<ModalRegistryEntry>(\n (acc, k) => ({ ...acc, [k]: null }),\n { type, id },\n );\n return () => modalContext.registerModal(reset);\n }\n return undefined;\n }, []);\n\n const refs = React.useRef<Required<ModalRefs>>({\n modalElement: (e) => (elements.modalElement = e),\n innerElement: (e) => (elements.innerElement = e),\n headerElement: (e) => (elements.headerElement = e),\n contentElement: (e) => (elements.contentElement = e),\n bottomInset: (e) => (elements.bottomInset = e),\n }).current;\n return { refs };\n}\n"],"names":["ModalRootContext","useModalRegistry","React","createContext","updateModalHeight","undefined","registerModal","isInsideModal","id","type","modalContext","useContext","elements","useRef","current","useIsomorphicLayoutEffect","reset","Object","keys","reduce","acc","k","refs","modalElement","e","innerElement","headerElement","contentElement","bottomInset"],"mappings":";;;;;;;;;;;IAcaA,gBAAgB;eAAhBA;;IASGC,gBAAgB;eAAhBA;;;;;;iEAvBO;2CACmB;AAanC,MAAMD,iCAAmBE,OAAMC,aAAa,CAA4B;IAC7EC,mBAAmB,IAAMC;IACzBC,eAAe,IAAMD;IACrBE,eAAe;AACjB;AAKO,SAASN,iBAAiBO,EAAsB,EAAEC,IAAe;IACtE,MAAMC,eAAeR,OAAMS,UAAU,CAACX;IACtC,MAAMY,WAAWV,OAAMW,MAAM,CAAgB,CAAC,GAAGC,OAAO;IACxDC,IAAAA,oDAAyB,EAAC;QACxB,IAAIP,OAAOH,WAAW;YACpBK,aAAaJ,aAAa,CAAC,4CAAKM;gBAAUH;gBAAMD;;YAChD,yCAAyC;YACzC,MAAMQ,QAAQC,OAAOC,IAAI,CAACN,UAAUO,MAAM,CACxC,CAACC,KAAKC,IAAO,4CAAKD;oBAAK,CAACC,EAAE,EAAE;oBAC5B;gBAAEZ;gBAAMD;YAAG;YAEb,OAAO,IAAME,aAAaJ,aAAa,CAACU;QAC1C;QACA,OAAOX;IACT,GAAG,EAAE;IAEL,MAAMiB,OAAOpB,OAAMW,MAAM,CAAsB;QAC7CU,cAAc,CAACC,IAAOZ,SAASW,YAAY,GAAGC;QAC9CC,cAAc,CAACD,IAAOZ,SAASa,YAAY,GAAGD;QAC9CE,eAAe,CAACF,IAAOZ,SAASc,aAAa,GAAGF;QAChDG,gBAAgB,CAACH,IAAOZ,SAASe,cAAc,GAAGH;QAClDI,aAAa,CAACJ,IAAOZ,SAASgB,WAAW,GAAGJ;IAC9C,GAAGV,OAAO;IACV,OAAO;QAAEQ;IAAK;AAChB"}
|
|
@@ -65,19 +65,19 @@ export interface ModalRootProps {
|
|
|
65
65
|
/**
|
|
66
66
|
* Будет вызвано при начале открытия активной модалки с её id
|
|
67
67
|
*/
|
|
68
|
-
onOpen
|
|
68
|
+
onOpen?: (modalId: string) => void;
|
|
69
69
|
/**
|
|
70
70
|
* Будет вызвано при окончательном открытии активной модалки с её id
|
|
71
71
|
*/
|
|
72
|
-
onOpened
|
|
72
|
+
onOpened?: (modalId: string) => void;
|
|
73
73
|
/**
|
|
74
74
|
* Будет вызвано при начале закрытия активной модалки с её id
|
|
75
75
|
*/
|
|
76
|
-
onClose
|
|
76
|
+
onClose?: (modalId: string) => void;
|
|
77
77
|
/**
|
|
78
78
|
* Будет вызвано при окончательном закрытии активной модалки с её id
|
|
79
79
|
*/
|
|
80
|
-
onClosed
|
|
80
|
+
onClosed?: (modalId: string) => void;
|
|
81
81
|
/**
|
|
82
82
|
* `data-testid` для маски
|
|
83
83
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/components/ModalRoot/types.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,8BAA8B,EAAE,MAAM,yCAAyC,CAAC;AAEzF,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AAExC,MAAM,MAAM,cAAc,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAE9C,MAAM,MAAM,WAAW,GAAG;IAAE,CAAC,KAAK,EAAE,MAAM,GAAG,gBAAgB,CAAA;CAAE,CAAC;AAEhE,MAAM,WAAW,aAAa;IAC5B,YAAY,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAClC,YAAY,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAClC,aAAa,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IACnC,cAAc,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IACpC,WAAW,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;CAClC;AAED,MAAM,WAAW,gBAAiB,SAAQ,aAAa;IACrD,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB;;OAEG;IACH,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB;;OAEG;IACH,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB;;OAEG;IACH,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB;;OAEG;IACH,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,IAAI,CAAC,EAAE,SAAS,CAAC;IAEjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,iBAAiB,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACnC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,wBAAwB,CAAC,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;IAEzD,aAAa,CAAC,EAAE,cAAc,CAAC;IAC/B,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,WAAW,CAAC,EAAE,cAAc,CAAC;CAC9B;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,EAAE,KAAK,CAAC,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAE5D;;OAEG;IACH,MAAM,CAAC,CAAC,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/components/ModalRoot/types.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,8BAA8B,EAAE,MAAM,yCAAyC,CAAC;AAEzF,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AAExC,MAAM,MAAM,cAAc,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAE9C,MAAM,MAAM,WAAW,GAAG;IAAE,CAAC,KAAK,EAAE,MAAM,GAAG,gBAAgB,CAAA;CAAE,CAAC;AAEhE,MAAM,WAAW,aAAa;IAC5B,YAAY,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAClC,YAAY,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAClC,aAAa,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IACnC,cAAc,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IACpC,WAAW,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;CAClC;AAED,MAAM,WAAW,gBAAiB,SAAQ,aAAa;IACrD,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB;;OAEG;IACH,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB;;OAEG;IACH,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB;;OAEG;IACH,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB;;OAEG;IACH,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,IAAI,CAAC,EAAE,SAAS,CAAC;IAEjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,iBAAiB,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACnC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,wBAAwB,CAAC,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;IAEzD,aAAa,CAAC,EAAE,cAAc,CAAC;IAC/B,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,WAAW,CAAC,EAAE,cAAc,CAAC;CAC9B;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,EAAE,KAAK,CAAC,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAE5D;;OAEG;IACH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAEnC;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAErC;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAEpC;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAErC;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,qBAAsB,SAAQ,WAAW,EAAE,cAAc,EAAE,mBAAmB;IAC7F;;OAEG;IACH,cAAc,CAAC,EAAE,8BAA8B,CAAC;CACjD"}
|
|
@@ -22,7 +22,7 @@ export interface OnboardingTooltipProps extends AllowedFloatingComponentProps, A
|
|
|
22
22
|
/**
|
|
23
23
|
* Callback, который вызывается при клике по любому месту в пределах экрана.
|
|
24
24
|
*/
|
|
25
|
-
onClose
|
|
25
|
+
onClose?: (this: void) => void;
|
|
26
26
|
}
|
|
27
27
|
/**
|
|
28
28
|
* @see https://vkcom.github.io/VKUI/#/Tooltip
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OnboardingTooltip.d.ts","sourceRoot":"","sources":["../../../../src/components/OnboardingTooltip/OnboardingTooltip.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,OAAO,EAGL,KAAK,sBAAsB,EAI5B,MAAM,oBAAoB,CAAC;AAI5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEpE,OAAO,EAAkC,KAAK,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAMnG,KAAK,6BAA6B,GAAG,IAAI,CACvC,sBAAsB,EACpB,aAAa,GACb,cAAc,GACd,UAAU,GACV,WAAW,GACX,kBAAkB,GAClB,mBAAmB,GACnB,OAAO,GACP,UAAU,GACV,mBAAmB,CACtB,CAAC;AAEF,KAAK,uBAAuB,GAAG,IAAI,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC;AAEpE,KAAK,yBAAyB,GAAG;IAC/B;;OAEG;IACH,WAAW,CAAC,EAAE,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAC3C;;OAEG;IACH,mBAAmB,CAAC,EAAE,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;CAC5D,CAAC;AAEF,MAAM,WAAW,sBACf,SAAQ,6BAA6B,EACnC,uBAAuB,EACvB,yBAAyB;IAC3B;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;OAEG;IACH,OAAO,CAAC,CAAC,IAAI,EAAE,IAAI,
|
|
1
|
+
{"version":3,"file":"OnboardingTooltip.d.ts","sourceRoot":"","sources":["../../../../src/components/OnboardingTooltip/OnboardingTooltip.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,OAAO,EAGL,KAAK,sBAAsB,EAI5B,MAAM,oBAAoB,CAAC;AAI5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEpE,OAAO,EAAkC,KAAK,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAMnG,KAAK,6BAA6B,GAAG,IAAI,CACvC,sBAAsB,EACpB,aAAa,GACb,cAAc,GACd,UAAU,GACV,WAAW,GACX,kBAAkB,GAClB,mBAAmB,GACnB,OAAO,GACP,UAAU,GACV,mBAAmB,CACtB,CAAC;AAEF,KAAK,uBAAuB,GAAG,IAAI,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC;AAEpE,KAAK,yBAAyB,GAAG;IAC/B;;OAEG;IACH,WAAW,CAAC,EAAE,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAC3C;;OAEG;IACH,mBAAmB,CAAC,EAAE,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;CAC5D,CAAC;AAEF,MAAM,WAAW,sBACf,SAAQ,6BAA6B,EACnC,uBAAuB,EACvB,yBAAyB;IAC3B;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;CAChC;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB,2QAkB3B,sBAAsB,sBAqHxB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/OnboardingTooltip/OnboardingTooltip.tsx"],"sourcesContent":["import * as React from 'react';\nimport { hasReactNode } from '@vkontakte/vkjs';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { usePatchChildren } from '../../hooks/usePatchChildren';\nimport { createPortal } from '../../lib/createPortal';\nimport {\n autoUpdateFloatingElement,\n convertFloatingDataToReactCSSProperties,\n type FloatingComponentProps,\n useFloating,\n useFloatingMiddlewaresBootstrap,\n usePlacementChangeCallback,\n} from '../../lib/floating';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { DEFAULT_ARROW_HEIGHT, DEFAULT_ARROW_PADDING } from '../FloatingArrow/DefaultIcon';\nimport { FloatingArrowProps } from '../FloatingArrow/FloatingArrow';\nimport { useNavTransition } from '../NavTransitionContext/NavTransitionContext';\nimport { TOOLTIP_MAX_WIDTH, TooltipBase, type TooltipBaseProps } from '../TooltipBase/TooltipBase';\nimport { onboardingTooltipContainerAttr } from './OnboardingTooltipContainer';\nimport styles from './OnboardingTooltip.module.css';\n\nconst warn = warnOnce('OnboardingTooltip');\n\ntype AllowedFloatingComponentProps = Pick<\n FloatingComponentProps,\n | 'arrowHeight'\n | 'arrowPadding'\n | 'arrowRef'\n | 'placement'\n | 'offsetByMainAxis'\n | 'offsetByCrossAxis'\n | 'shown'\n | 'children'\n | 'onPlacementChange'\n>;\n\ntype AllowedTooltipBaseProps = Omit<TooltipBaseProps, 'arrowProps'>;\n\ntype AllowedFloatingArrowProps = {\n /**\n * Сдвиг стрелки относительно текущих координат.\n */\n arrowOffset?: FloatingArrowProps['offset'];\n /**\n * Включает абсолютное смещение по `arrowOffset`.\n */\n isStaticArrowOffset?: FloatingArrowProps['isStaticOffset'];\n};\n\nexport interface OnboardingTooltipProps\n extends AllowedFloatingComponentProps,\n AllowedTooltipBaseProps,\n AllowedFloatingArrowProps {\n /**\n * Скрывает стрелку, указывающую на якорный элемент.\n */\n disableArrow?: boolean;\n /**\n * Callback, который вызывается при клике по любому месту в пределах экрана.\n */\n onClose?(this: void): void;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/Tooltip\n */\nexport const OnboardingTooltip = ({\n id: idProp,\n children,\n shown: shownProp = true,\n arrowPadding = DEFAULT_ARROW_PADDING,\n arrowHeight = DEFAULT_ARROW_HEIGHT,\n offsetByMainAxis = 0,\n offsetByCrossAxis = 0,\n arrowOffset = 0,\n isStaticArrowOffset = false,\n onClose,\n placement: placementProp = 'bottom-start',\n maxWidth = TOOLTIP_MAX_WIDTH,\n style: styleProp,\n getRootRef,\n disableArrow = false,\n onPlacementChange,\n ...restProps\n}: OnboardingTooltipProps) => {\n const generatedId = React.useId();\n const tooltipId = idProp || generatedId;\n const { entering } = useNavTransition();\n\n const [arrowRef, setArrowRef] = React.useState<HTMLDivElement | null>(null);\n const [tooltipContainer, setTooltipContainer] = React.useState<HTMLElement | null>(null);\n const [positionStrategy, setPositionStrategy] = React.useState<'fixed' | 'absolute'>('absolute');\n const shown = shownProp && tooltipContainer && !entering;\n\n const { middlewares, strictPlacement } = useFloatingMiddlewaresBootstrap({\n placement: placementProp,\n offsetByMainAxis,\n offsetByCrossAxis,\n arrowRef,\n arrow: !disableArrow,\n arrowHeight,\n arrowPadding,\n });\n const {\n x: floatingDataX,\n y: floatingDataY,\n refs,\n placement: resolvedPlacement,\n middlewareData: { arrow: arrowCoords },\n } = useFloating({\n strategy: positionStrategy,\n placement: strictPlacement,\n middleware: middlewares,\n whileElementsMounted: autoUpdateFloatingElement,\n });\n const tooltipRef = useExternRef<HTMLDivElement>(getRootRef, refs.setFloating);\n const [childRef, child] = usePatchChildren(children, {\n 'aria-describedby': shown ? tooltipId : undefined,\n });\n\n usePlacementChangeCallback(resolvedPlacement, onPlacementChange);\n\n let tooltip: React.ReactPortal | null = null;\n if (shown) {\n const floatingStyle = convertFloatingDataToReactCSSProperties(\n positionStrategy,\n floatingDataX,\n floatingDataY,\n );\n\n if (styleProp) {\n Object.assign(floatingStyle, styleProp);\n }\n\n tooltip = createPortal(\n <>\n <TooltipBase\n {...restProps}\n id={tooltipId}\n getRootRef={tooltipRef}\n style={floatingStyle}\n maxWidth={maxWidth}\n arrowProps={\n disableArrow\n ? undefined\n : {\n offset: arrowOffset,\n isStaticOffset: isStaticArrowOffset,\n coords: arrowCoords,\n placement: resolvedPlacement,\n getRootRef: setArrowRef,\n }\n }\n />\n <div className={styles['OnboardingTooltip__overlay']} onClickCapture={onClose} />\n </>,\n tooltipContainer,\n );\n }\n\n useIsomorphicLayoutEffect(\n function initialize() {\n const referenceEl = childRef.current;\n if (referenceEl) {\n setTooltipContainer(\n referenceEl.closest<HTMLDivElement>(`[${onboardingTooltipContainerAttr}]`), // eslint-disable-line no-restricted-properties\n );\n setPositionStrategy(referenceEl.style.position === 'fixed' ? 'fixed' : 'absolute');\n refs.setReference(referenceEl);\n }\n },\n [childRef],\n );\n\n if (process.env.NODE_ENV === 'development') {\n const multiChildren = React.Children.count(children) > 1;\n // Empty children is a noop\n const primitiveChild = hasReactNode(children) && typeof children !== 'object';\n (multiChildren || primitiveChild) &&\n warn(\n [\n 'children должен быть одним React элементом, получено',\n multiChildren && 'несколько',\n primitiveChild && JSON.stringify(children),\n ]\n .filter(Boolean)\n .join(' '),\n 'error',\n );\n\n if (refs.reference.current && !tooltipContainer) {\n throw new Error('Use TooltipContainer for Tooltip outside Panel (see docs)');\n }\n }\n\n return (\n <React.Fragment>\n {child}\n {tooltip}\n </React.Fragment>\n );\n};\n"],"names":["OnboardingTooltip","warn","warnOnce","id","idProp","children","shown","shownProp","arrowPadding","DEFAULT_ARROW_PADDING","arrowHeight","DEFAULT_ARROW_HEIGHT","offsetByMainAxis","offsetByCrossAxis","arrowOffset","isStaticArrowOffset","onClose","placement","placementProp","maxWidth","TOOLTIP_MAX_WIDTH","style","styleProp","getRootRef","disableArrow","onPlacementChange","restProps","generatedId","React","useId","tooltipId","entering","useNavTransition","arrowRef","setArrowRef","useState","tooltipContainer","setTooltipContainer","positionStrategy","setPositionStrategy","middlewares","strictPlacement","useFloatingMiddlewaresBootstrap","arrow","x","floatingDataX","y","floatingDataY","refs","resolvedPlacement","middlewareData","arrowCoords","useFloating","strategy","middleware","whileElementsMounted","autoUpdateFloatingElement","tooltipRef","useExternRef","setFloating","childRef","child","usePatchChildren","undefined","usePlacementChangeCallback","tooltip","floatingStyle","convertFloatingDataToReactCSSProperties","Object","assign","createPortal","TooltipBase","arrowProps","offset","isStaticOffset","coords","div","className","onClickCapture","useIsomorphicLayoutEffect","initialize","referenceEl","current","closest","onboardingTooltipContainerAttr","position","setReference","process","env","NODE_ENV","multiChildren","Children","count","primitiveChild","hasReactNode","JSON","stringify","filter","Boolean","join","reference","Error","Fragment"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/OnboardingTooltip/OnboardingTooltip.tsx"],"sourcesContent":["import * as React from 'react';\nimport { hasReactNode } from '@vkontakte/vkjs';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { usePatchChildren } from '../../hooks/usePatchChildren';\nimport { createPortal } from '../../lib/createPortal';\nimport {\n autoUpdateFloatingElement,\n convertFloatingDataToReactCSSProperties,\n type FloatingComponentProps,\n useFloating,\n useFloatingMiddlewaresBootstrap,\n usePlacementChangeCallback,\n} from '../../lib/floating';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { DEFAULT_ARROW_HEIGHT, DEFAULT_ARROW_PADDING } from '../FloatingArrow/DefaultIcon';\nimport { FloatingArrowProps } from '../FloatingArrow/FloatingArrow';\nimport { useNavTransition } from '../NavTransitionContext/NavTransitionContext';\nimport { TOOLTIP_MAX_WIDTH, TooltipBase, type TooltipBaseProps } from '../TooltipBase/TooltipBase';\nimport { onboardingTooltipContainerAttr } from './OnboardingTooltipContainer';\nimport styles from './OnboardingTooltip.module.css';\n\nconst warn = warnOnce('OnboardingTooltip');\n\ntype AllowedFloatingComponentProps = Pick<\n FloatingComponentProps,\n | 'arrowHeight'\n | 'arrowPadding'\n | 'arrowRef'\n | 'placement'\n | 'offsetByMainAxis'\n | 'offsetByCrossAxis'\n | 'shown'\n | 'children'\n | 'onPlacementChange'\n>;\n\ntype AllowedTooltipBaseProps = Omit<TooltipBaseProps, 'arrowProps'>;\n\ntype AllowedFloatingArrowProps = {\n /**\n * Сдвиг стрелки относительно текущих координат.\n */\n arrowOffset?: FloatingArrowProps['offset'];\n /**\n * Включает абсолютное смещение по `arrowOffset`.\n */\n isStaticArrowOffset?: FloatingArrowProps['isStaticOffset'];\n};\n\nexport interface OnboardingTooltipProps\n extends AllowedFloatingComponentProps,\n AllowedTooltipBaseProps,\n AllowedFloatingArrowProps {\n /**\n * Скрывает стрелку, указывающую на якорный элемент.\n */\n disableArrow?: boolean;\n /**\n * Callback, который вызывается при клике по любому месту в пределах экрана.\n */\n onClose?: (this: void) => void;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/Tooltip\n */\nexport const OnboardingTooltip = ({\n id: idProp,\n children,\n shown: shownProp = true,\n arrowPadding = DEFAULT_ARROW_PADDING,\n arrowHeight = DEFAULT_ARROW_HEIGHT,\n offsetByMainAxis = 0,\n offsetByCrossAxis = 0,\n arrowOffset = 0,\n isStaticArrowOffset = false,\n onClose,\n placement: placementProp = 'bottom-start',\n maxWidth = TOOLTIP_MAX_WIDTH,\n style: styleProp,\n getRootRef,\n disableArrow = false,\n onPlacementChange,\n ...restProps\n}: OnboardingTooltipProps) => {\n const generatedId = React.useId();\n const tooltipId = idProp || generatedId;\n const { entering } = useNavTransition();\n\n const [arrowRef, setArrowRef] = React.useState<HTMLDivElement | null>(null);\n const [tooltipContainer, setTooltipContainer] = React.useState<HTMLElement | null>(null);\n const [positionStrategy, setPositionStrategy] = React.useState<'fixed' | 'absolute'>('absolute');\n const shown = shownProp && tooltipContainer && !entering;\n\n const { middlewares, strictPlacement } = useFloatingMiddlewaresBootstrap({\n placement: placementProp,\n offsetByMainAxis,\n offsetByCrossAxis,\n arrowRef,\n arrow: !disableArrow,\n arrowHeight,\n arrowPadding,\n });\n const {\n x: floatingDataX,\n y: floatingDataY,\n refs,\n placement: resolvedPlacement,\n middlewareData: { arrow: arrowCoords },\n } = useFloating({\n strategy: positionStrategy,\n placement: strictPlacement,\n middleware: middlewares,\n whileElementsMounted: autoUpdateFloatingElement,\n });\n const tooltipRef = useExternRef<HTMLDivElement>(getRootRef, refs.setFloating);\n const [childRef, child] = usePatchChildren(children, {\n 'aria-describedby': shown ? tooltipId : undefined,\n });\n\n usePlacementChangeCallback(resolvedPlacement, onPlacementChange);\n\n let tooltip: React.ReactPortal | null = null;\n if (shown) {\n const floatingStyle = convertFloatingDataToReactCSSProperties(\n positionStrategy,\n floatingDataX,\n floatingDataY,\n );\n\n if (styleProp) {\n Object.assign(floatingStyle, styleProp);\n }\n\n tooltip = createPortal(\n <>\n <TooltipBase\n {...restProps}\n id={tooltipId}\n getRootRef={tooltipRef}\n style={floatingStyle}\n maxWidth={maxWidth}\n arrowProps={\n disableArrow\n ? undefined\n : {\n offset: arrowOffset,\n isStaticOffset: isStaticArrowOffset,\n coords: arrowCoords,\n placement: resolvedPlacement,\n getRootRef: setArrowRef,\n }\n }\n />\n <div className={styles['OnboardingTooltip__overlay']} onClickCapture={onClose} />\n </>,\n tooltipContainer,\n );\n }\n\n useIsomorphicLayoutEffect(\n function initialize() {\n const referenceEl = childRef.current;\n if (referenceEl) {\n setTooltipContainer(\n referenceEl.closest<HTMLDivElement>(`[${onboardingTooltipContainerAttr}]`), // eslint-disable-line no-restricted-properties\n );\n setPositionStrategy(referenceEl.style.position === 'fixed' ? 'fixed' : 'absolute');\n refs.setReference(referenceEl);\n }\n },\n [childRef],\n );\n\n if (process.env.NODE_ENV === 'development') {\n const multiChildren = React.Children.count(children) > 1;\n // Empty children is a noop\n const primitiveChild = hasReactNode(children) && typeof children !== 'object';\n (multiChildren || primitiveChild) &&\n warn(\n [\n 'children должен быть одним React элементом, получено',\n multiChildren && 'несколько',\n primitiveChild && JSON.stringify(children),\n ]\n .filter(Boolean)\n .join(' '),\n 'error',\n );\n\n if (refs.reference.current && !tooltipContainer) {\n throw new Error('Use TooltipContainer for Tooltip outside Panel (see docs)');\n }\n }\n\n return (\n <React.Fragment>\n {child}\n {tooltip}\n </React.Fragment>\n );\n};\n"],"names":["OnboardingTooltip","warn","warnOnce","id","idProp","children","shown","shownProp","arrowPadding","DEFAULT_ARROW_PADDING","arrowHeight","DEFAULT_ARROW_HEIGHT","offsetByMainAxis","offsetByCrossAxis","arrowOffset","isStaticArrowOffset","onClose","placement","placementProp","maxWidth","TOOLTIP_MAX_WIDTH","style","styleProp","getRootRef","disableArrow","onPlacementChange","restProps","generatedId","React","useId","tooltipId","entering","useNavTransition","arrowRef","setArrowRef","useState","tooltipContainer","setTooltipContainer","positionStrategy","setPositionStrategy","middlewares","strictPlacement","useFloatingMiddlewaresBootstrap","arrow","x","floatingDataX","y","floatingDataY","refs","resolvedPlacement","middlewareData","arrowCoords","useFloating","strategy","middleware","whileElementsMounted","autoUpdateFloatingElement","tooltipRef","useExternRef","setFloating","childRef","child","usePatchChildren","undefined","usePlacementChangeCallback","tooltip","floatingStyle","convertFloatingDataToReactCSSProperties","Object","assign","createPortal","TooltipBase","arrowProps","offset","isStaticOffset","coords","div","className","onClickCapture","useIsomorphicLayoutEffect","initialize","referenceEl","current","closest","onboardingTooltipContainerAttr","position","setReference","process","env","NODE_ENV","multiChildren","Children","count","primitiveChild","hasReactNode","JSON","stringify","filter","Boolean","join","reference","Error","Fragment"],"mappings":"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"}
|
|
@@ -41,8 +41,8 @@ export interface PaginationProps extends Omit<HTMLAttributesWithRootRef<HTMLElem
|
|
|
41
41
|
* Функция для переопределения и/или локализации текста кнопки страницы.
|
|
42
42
|
* По умолчанию используется текст на "ru_RU".
|
|
43
43
|
*/
|
|
44
|
-
getPageLabel
|
|
45
|
-
onChange
|
|
44
|
+
getPageLabel?: (isCurrent: boolean) => string;
|
|
45
|
+
onChange?: (page: number) => void;
|
|
46
46
|
}
|
|
47
47
|
/**
|
|
48
48
|
* @see https://vkcom.github.io/VKUI/#/Pagination
|