@vkontakte/vkui 7.5.3 → 7.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/Calendar/Calendar.js +6 -6
- package/dist/components/Calendar/Calendar.js.map +1 -1
- package/dist/components/CalendarDays/CalendarDays.js +3 -3
- package/dist/components/CalendarDays/CalendarDays.js.map +1 -1
- package/dist/components/CalendarRange/CalendarRange.d.ts.map +1 -1
- package/dist/components/CalendarRange/CalendarRange.js +16 -14
- package/dist/components/CalendarRange/CalendarRange.js.map +1 -1
- package/dist/components/CalendarRange/utils.d.ts.map +1 -1
- package/dist/components/CalendarRange/utils.js +6 -5
- package/dist/components/CalendarRange/utils.js.map +1 -1
- package/dist/components/Cell/Cell.d.ts.map +1 -1
- package/dist/components/Cell/Cell.js +6 -3
- package/dist/components/Cell/Cell.js.map +1 -1
- package/dist/components/CellButtonGroup/CellButtonGroup.d.ts +5 -3
- package/dist/components/CellButtonGroup/CellButtonGroup.d.ts.map +1 -1
- package/dist/components/Checkbox/Checkbox.d.ts +4 -0
- package/dist/components/Checkbox/Checkbox.d.ts.map +1 -1
- package/dist/components/Checkbox/Checkbox.js +4 -2
- package/dist/components/Checkbox/Checkbox.js.map +1 -1
- package/dist/components/Checkbox/CheckboxSimple/CheckboxSimple.d.ts +1 -1
- package/dist/components/Checkbox/CheckboxSimple/CheckboxSimple.d.ts.map +1 -1
- package/dist/components/Checkbox/CheckboxSimple/CheckboxSimple.js +6 -3
- package/dist/components/Checkbox/CheckboxSimple/CheckboxSimple.js.map +1 -1
- package/dist/components/ChipsInputBase/Chip/Chip.d.ts +41 -2
- package/dist/components/ChipsInputBase/Chip/Chip.d.ts.map +1 -1
- package/dist/components/ChipsInputBase/Chip/Chip.js +7 -2
- package/dist/components/ChipsInputBase/Chip/Chip.js.map +1 -1
- package/dist/components/ChipsInputBase/ChipsInputBase.d.ts.map +1 -1
- package/dist/components/ChipsInputBase/ChipsInputBase.js +21 -1
- package/dist/components/ChipsInputBase/ChipsInputBase.js.map +1 -1
- package/dist/components/ChipsInputBase/types.d.ts +2 -35
- package/dist/components/ChipsInputBase/types.d.ts.map +1 -1
- package/dist/components/ChipsInputBase/types.js.map +1 -1
- package/dist/components/ChipsSelect/ChipsSelect.d.ts.map +1 -1
- package/dist/components/ChipsSelect/ChipsSelect.js +2 -4
- package/dist/components/ChipsSelect/ChipsSelect.js.map +1 -1
- package/dist/components/ContentBadge/ContentBadge.d.ts +1 -1
- package/dist/components/ContentBadge/ContentBadge.d.ts.map +1 -1
- package/dist/components/ContentBadge/ContentBadge.js +15 -9
- package/dist/components/ContentBadge/ContentBadge.js.map +1 -1
- package/dist/components/ContentCard/ContentCard.d.ts +1 -1
- package/dist/components/ContentCard/ContentCard.d.ts.map +1 -1
- package/dist/components/ContentCard/ContentCard.js.map +1 -1
- package/dist/components/CustomSelect/CustomSelect.d.ts +16 -27
- package/dist/components/CustomSelect/CustomSelect.d.ts.map +1 -1
- package/dist/components/CustomSelect/CustomSelect.js +161 -428
- package/dist/components/CustomSelect/CustomSelect.js.map +1 -1
- package/dist/components/CustomSelect/CustomSelectInput/CustomSelectInput.d.ts +3 -1
- package/dist/components/CustomSelect/CustomSelectInput/CustomSelectInput.d.ts.map +1 -1
- package/dist/components/CustomSelect/CustomSelectInput/CustomSelectInput.js +25 -5
- package/dist/components/CustomSelect/CustomSelectInput/CustomSelectInput.js.map +1 -1
- package/dist/components/CustomSelect/helpers.d.ts +12 -0
- package/dist/components/CustomSelect/helpers.d.ts.map +1 -0
- package/dist/components/CustomSelect/helpers.js +63 -0
- package/dist/components/CustomSelect/helpers.js.map +1 -0
- package/dist/components/CustomSelect/hooks/useAfterItems.d.ts +11 -0
- package/dist/components/CustomSelect/hooks/useAfterItems.d.ts.map +1 -0
- package/dist/components/CustomSelect/hooks/useAfterItems.js +57 -0
- package/dist/components/CustomSelect/hooks/useAfterItems.js.map +1 -0
- package/dist/components/CustomSelect/hooks/useDropdownOpenedController.d.ts +13 -0
- package/dist/components/CustomSelect/hooks/useDropdownOpenedController.d.ts.map +1 -0
- package/dist/components/CustomSelect/hooks/useDropdownOpenedController.js +60 -0
- package/dist/components/CustomSelect/hooks/useDropdownOpenedController.js.map +1 -0
- package/dist/components/CustomSelect/hooks/useFocusedOptionController.d.ts +20 -0
- package/dist/components/CustomSelect/hooks/useFocusedOptionController.d.ts.map +1 -0
- package/dist/components/CustomSelect/hooks/useFocusedOptionController.js +52 -0
- package/dist/components/CustomSelect/hooks/useFocusedOptionController.js.map +1 -0
- package/dist/components/CustomSelect/hooks/useInputKeyboardController.d.ts +13 -0
- package/dist/components/CustomSelect/hooks/useInputKeyboardController.d.ts.map +1 -0
- package/dist/components/CustomSelect/hooks/useInputKeyboardController.js +78 -0
- package/dist/components/CustomSelect/hooks/useInputKeyboardController.js.map +1 -0
- package/dist/components/CustomSelect/hooks/useInputValueController.d.ts +15 -0
- package/dist/components/CustomSelect/hooks/useInputValueController.d.ts.map +1 -0
- package/dist/components/CustomSelect/hooks/useInputValueController.js +43 -0
- package/dist/components/CustomSelect/hooks/useInputValueController.js.map +1 -0
- package/dist/components/CustomSelect/hooks/useScrollListController.d.ts +9 -0
- package/dist/components/CustomSelect/hooks/useScrollListController.d.ts.map +1 -0
- package/dist/components/CustomSelect/hooks/useScrollListController.js +37 -0
- package/dist/components/CustomSelect/hooks/useScrollListController.js.map +1 -0
- package/dist/components/CustomSelect/hooks/useSelectedOptionController.d.ts +18 -0
- package/dist/components/CustomSelect/hooks/useSelectedOptionController.d.ts.map +1 -0
- package/dist/components/CustomSelect/hooks/useSelectedOptionController.js +81 -0
- package/dist/components/CustomSelect/hooks/useSelectedOptionController.js.map +1 -0
- package/dist/components/CustomSelect/types.d.ts +33 -0
- package/dist/components/CustomSelect/types.d.ts.map +1 -0
- package/dist/components/CustomSelect/types.js +3 -0
- package/dist/components/CustomSelect/types.js.map +1 -0
- package/dist/components/CustomSelectDropdown/CustomSelectDropdown.d.ts.map +1 -1
- package/dist/components/CustomSelectDropdown/CustomSelectDropdown.js +1 -0
- package/dist/components/CustomSelectDropdown/CustomSelectDropdown.js.map +1 -1
- package/dist/components/DateInput/DateInput.d.ts.map +1 -1
- package/dist/components/DateInput/DateInput.js +3 -2
- package/dist/components/DateInput/DateInput.js.map +1 -1
- package/dist/components/DateRangeInput/DateRangeInput.d.ts.map +1 -1
- package/dist/components/DateRangeInput/DateRangeInput.js +4 -4
- package/dist/components/DateRangeInput/DateRangeInput.js.map +1 -1
- package/dist/components/ModalCard/ModalCard.d.ts +1 -1
- package/dist/components/ModalCard/ModalCard.d.ts.map +1 -1
- package/dist/components/ModalCard/ModalCard.js +4 -2
- package/dist/components/ModalCard/ModalCard.js.map +1 -1
- package/dist/components/ModalCard/ModalCardInternal.d.ts +1 -1
- package/dist/components/ModalCard/ModalCardInternal.d.ts.map +1 -1
- package/dist/components/ModalCard/ModalCardInternal.js +5 -3
- package/dist/components/ModalCard/ModalCardInternal.js.map +1 -1
- package/dist/components/ModalCard/types.d.ts +6 -0
- package/dist/components/ModalCard/types.d.ts.map +1 -1
- package/dist/components/ModalCard/types.js.map +1 -1
- package/dist/components/ModalOutlet/ModalOutlet.d.ts +2 -1
- package/dist/components/ModalOutlet/ModalOutlet.d.ts.map +1 -1
- package/dist/components/ModalOutlet/ModalOutlet.js +4 -3
- package/dist/components/ModalOutlet/ModalOutlet.js.map +1 -1
- package/dist/components/ModalPage/ModalPage.d.ts +1 -1
- package/dist/components/ModalPage/ModalPage.d.ts.map +1 -1
- package/dist/components/ModalPage/ModalPage.js +3 -1
- package/dist/components/ModalPage/ModalPage.js.map +1 -1
- package/dist/components/ModalPage/ModalPageInternal.d.ts +1 -1
- package/dist/components/ModalPage/ModalPageInternal.d.ts.map +1 -1
- package/dist/components/ModalPage/ModalPageInternal.js +5 -3
- package/dist/components/ModalPage/ModalPageInternal.js.map +1 -1
- package/dist/components/ModalPage/types.d.ts +6 -0
- package/dist/components/ModalPage/types.d.ts.map +1 -1
- package/dist/components/ModalPage/types.js.map +1 -1
- package/dist/components/ModalRoot/ModalRoot.d.ts +1 -1
- package/dist/components/ModalRoot/ModalRoot.d.ts.map +1 -1
- package/dist/components/ModalRoot/ModalRoot.js +4 -2
- package/dist/components/ModalRoot/ModalRoot.js.map +1 -1
- package/dist/components/ModalRoot/types.d.ts +4 -0
- package/dist/components/ModalRoot/types.d.ts.map +1 -1
- package/dist/components/ModalRoot/types.js.map +1 -1
- package/dist/components/ModalRoot/useModalManager.d.ts +3 -1
- package/dist/components/ModalRoot/useModalManager.d.ts.map +1 -1
- package/dist/components/ModalRoot/useModalManager.js +2 -1
- package/dist/components/ModalRoot/useModalManager.js.map +1 -1
- package/dist/components/OnboardingTooltip/OnboardingTooltip.d.ts +2 -2
- package/dist/components/OnboardingTooltip/OnboardingTooltip.d.ts.map +1 -1
- package/dist/components/OnboardingTooltip/OnboardingTooltip.js +4 -2
- package/dist/components/OnboardingTooltip/OnboardingTooltip.js.map +1 -1
- package/dist/components/Popover/Popover.d.ts +1 -1
- package/dist/components/Popover/Popover.d.ts.map +1 -1
- package/dist/components/Popover/Popover.js.map +1 -1
- package/dist/components/Popover/usePopover.d.ts +1 -1
- package/dist/components/Popover/usePopover.d.ts.map +1 -1
- package/dist/components/Popover/usePopover.js +3 -1
- package/dist/components/Popover/usePopover.js.map +1 -1
- package/dist/components/Popper/Popper.d.ts +2 -2
- package/dist/components/Popper/Popper.d.ts.map +1 -1
- package/dist/components/Popper/Popper.js +3 -1
- package/dist/components/Popper/Popper.js.map +1 -1
- package/dist/components/Select/Select.d.ts +2 -1
- package/dist/components/Select/Select.d.ts.map +1 -1
- package/dist/components/Select/Select.js +5 -2
- package/dist/components/Select/Select.js.map +1 -1
- package/dist/components/SelectionControl/SelectionControl.d.ts +5 -1
- package/dist/components/SelectionControl/SelectionControl.d.ts.map +1 -1
- package/dist/components/SelectionControl/SelectionControl.js +22 -6
- package/dist/components/SelectionControl/SelectionControl.js.map +1 -1
- package/dist/components/SelectionControl/SelectionControlContext.d.ts +7 -0
- package/dist/components/SelectionControl/SelectionControlContext.d.ts.map +1 -0
- package/dist/components/SelectionControl/SelectionControlContext.js +7 -0
- package/dist/components/SelectionControl/SelectionControlContext.js.map +1 -0
- package/dist/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.d.ts.map +1 -1
- package/dist/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.js +3 -1
- package/dist/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.js.map +1 -1
- package/dist/components/SimpleCell/SimpleCell.d.ts.map +1 -1
- package/dist/components/SimpleCell/SimpleCell.js +29 -8
- package/dist/components/SimpleCell/SimpleCell.js.map +1 -1
- package/dist/components/Skeleton/Skeleton.js +1 -1
- package/dist/components/Skeleton/Skeleton.js.map +1 -1
- package/dist/components/Tabs/Tabs.d.ts.map +1 -1
- package/dist/components/Tabs/Tabs.js +19 -9
- package/dist/components/Tabs/Tabs.js.map +1 -1
- package/dist/components/Tabs/TabsController.d.ts +2 -2
- package/dist/components/Tabs/TabsController.d.ts.map +1 -1
- package/dist/components/Tabs/TabsController.js.map +1 -1
- package/dist/components/Tabs/TabsControllerContext.d.ts +5 -0
- package/dist/components/Tabs/TabsControllerContext.d.ts.map +1 -0
- package/dist/components/Tabs/TabsControllerContext.js +4 -0
- package/dist/components/Tabs/TabsControllerContext.js.map +1 -0
- package/dist/components/Tabs/TabsModeContext.d.ts +0 -2
- package/dist/components/Tabs/TabsModeContext.d.ts.map +1 -1
- package/dist/components/Tabs/TabsModeContext.js +1 -2
- package/dist/components/Tabs/TabsModeContext.js.map +1 -1
- package/dist/components/TabsItem/TabsItem.d.ts.map +1 -1
- package/dist/components/TabsItem/TabsItem.js +3 -1
- package/dist/components/TabsItem/TabsItem.js.map +1 -1
- package/dist/components/Tooltip/Tooltip.d.ts +1 -1
- package/dist/components/Tooltip/Tooltip.d.ts.map +1 -1
- package/dist/components/Tooltip/Tooltip.js.map +1 -1
- package/dist/components/Tooltip/useTooltip.d.ts +1 -1
- package/dist/components/Tooltip/useTooltip.d.ts.map +1 -1
- package/dist/components/Tooltip/useTooltip.js +3 -1
- package/dist/components/Tooltip/useTooltip.js.map +1 -1
- package/dist/components/Typography/Caption/Caption.d.ts +2 -0
- package/dist/components/Typography/Caption/Caption.d.ts.map +1 -1
- package/dist/components/Typography/Caption/Caption.js +4 -1
- package/dist/components/Typography/Caption/Caption.js.map +1 -1
- package/dist/components/Typography/Footnote/Footnote.d.ts +2 -0
- package/dist/components/Typography/Footnote/Footnote.d.ts.map +1 -1
- package/dist/components/Typography/Footnote/Footnote.js +4 -1
- package/dist/components/Typography/Footnote/Footnote.js.map +1 -1
- package/dist/components/Typography/Typography.d.ts +1 -0
- package/dist/components/Typography/Typography.d.ts.map +1 -1
- package/dist/components/Typography/Typography.js +7 -1
- package/dist/components/Typography/Typography.js.map +1 -1
- package/dist/components/View/View.d.ts.map +1 -1
- package/dist/components/View/View.js +2 -1
- package/dist/components/View/View.js.map +1 -1
- package/dist/components/View/ViewInfinite.d.ts.map +1 -1
- package/dist/components/View/ViewInfinite.js +2 -1
- package/dist/components/View/ViewInfinite.js.map +1 -1
- package/dist/components.css +1 -1
- package/dist/components.css.map +1 -1
- package/dist/cssm/components/Banner/Banner.module.css +1 -6
- package/dist/cssm/components/Calendar/Calendar.js +6 -6
- package/dist/cssm/components/Calendar/Calendar.js.map +1 -1
- package/dist/cssm/components/CalendarDays/CalendarDays.js +3 -3
- package/dist/cssm/components/CalendarDays/CalendarDays.js.map +1 -1
- package/dist/cssm/components/CalendarRange/CalendarRange.js +16 -14
- package/dist/cssm/components/CalendarRange/CalendarRange.js.map +1 -1
- package/dist/cssm/components/CalendarRange/utils.js +6 -5
- package/dist/cssm/components/CalendarRange/utils.js.map +1 -1
- package/dist/cssm/components/Cell/Cell.js +3 -1
- package/dist/cssm/components/Cell/Cell.js.map +1 -1
- package/dist/cssm/components/Checkbox/Checkbox.js +2 -1
- package/dist/cssm/components/Checkbox/Checkbox.js.map +1 -1
- package/dist/cssm/components/Checkbox/CheckboxSimple/CheckboxSimple.js +4 -2
- package/dist/cssm/components/Checkbox/CheckboxSimple/CheckboxSimple.js.map +1 -1
- package/dist/cssm/components/Checkbox/CheckboxSimple/CheckboxSimple.module.css +11 -2
- package/dist/cssm/components/ChipsInputBase/Chip/Chip.js +6 -2
- package/dist/cssm/components/ChipsInputBase/Chip/Chip.js.map +1 -1
- package/dist/cssm/components/ChipsInputBase/Chip/Chip.module.css +8 -1
- package/dist/cssm/components/ChipsInputBase/ChipsInputBase.js +21 -1
- package/dist/cssm/components/ChipsInputBase/ChipsInputBase.js.map +1 -1
- package/dist/cssm/components/ChipsInputBase/types.js.map +1 -1
- package/dist/cssm/components/ChipsSelect/ChipsSelect.js +2 -4
- package/dist/cssm/components/ChipsSelect/ChipsSelect.js.map +1 -1
- package/dist/cssm/components/ContentBadge/ContentBadge.js +14 -8
- package/dist/cssm/components/ContentBadge/ContentBadge.js.map +1 -1
- package/dist/cssm/components/ContentCard/ContentCard.js.map +1 -1
- package/dist/cssm/components/CustomSelect/CustomSelect.js +154 -421
- package/dist/cssm/components/CustomSelect/CustomSelect.js.map +1 -1
- package/dist/cssm/components/CustomSelect/CustomSelectInput/CustomSelectInput.js +22 -4
- package/dist/cssm/components/CustomSelect/CustomSelectInput/CustomSelectInput.js.map +1 -1
- package/dist/cssm/components/CustomSelect/CustomSelectInput/CustomSelectInput.module.css +12 -0
- package/dist/cssm/components/CustomSelect/helpers.js +62 -0
- package/dist/cssm/components/CustomSelect/helpers.js.map +1 -0
- package/dist/cssm/components/CustomSelect/hooks/useAfterItems.js +58 -0
- package/dist/cssm/components/CustomSelect/hooks/useAfterItems.js.map +1 -0
- package/dist/cssm/components/CustomSelect/hooks/useDropdownOpenedController.js +60 -0
- package/dist/cssm/components/CustomSelect/hooks/useDropdownOpenedController.js.map +1 -0
- package/dist/cssm/components/CustomSelect/hooks/useFocusedOptionController.js +52 -0
- package/dist/cssm/components/CustomSelect/hooks/useFocusedOptionController.js.map +1 -0
- package/dist/cssm/components/CustomSelect/hooks/useInputKeyboardController.js +78 -0
- package/dist/cssm/components/CustomSelect/hooks/useInputKeyboardController.js.map +1 -0
- package/dist/cssm/components/CustomSelect/hooks/useInputValueController.js +43 -0
- package/dist/cssm/components/CustomSelect/hooks/useInputValueController.js.map +1 -0
- package/dist/cssm/components/CustomSelect/hooks/useScrollListController.js +37 -0
- package/dist/cssm/components/CustomSelect/hooks/useScrollListController.js.map +1 -0
- package/dist/cssm/components/CustomSelect/hooks/useSelectedOptionController.js +81 -0
- package/dist/cssm/components/CustomSelect/hooks/useSelectedOptionController.js.map +1 -0
- package/dist/cssm/components/CustomSelect/types.js +3 -0
- package/dist/cssm/components/CustomSelect/types.js.map +1 -0
- package/dist/cssm/components/CustomSelectDropdown/CustomSelectDropdown.js +1 -0
- package/dist/cssm/components/CustomSelectDropdown/CustomSelectDropdown.js.map +1 -1
- package/dist/cssm/components/DateInput/DateInput.js +3 -2
- package/dist/cssm/components/DateInput/DateInput.js.map +1 -1
- package/dist/cssm/components/DateRangeInput/DateRangeInput.js +4 -4
- package/dist/cssm/components/DateRangeInput/DateRangeInput.js.map +1 -1
- package/dist/cssm/components/ModalCard/ModalCard.js +2 -1
- package/dist/cssm/components/ModalCard/ModalCard.js.map +1 -1
- package/dist/cssm/components/ModalCard/ModalCardInternal.js +3 -2
- package/dist/cssm/components/ModalCard/ModalCardInternal.js.map +1 -1
- package/dist/cssm/components/ModalCard/types.js.map +1 -1
- package/dist/cssm/components/ModalOutlet/ModalOutlet.js +2 -2
- package/dist/cssm/components/ModalOutlet/ModalOutlet.js.map +1 -1
- package/dist/cssm/components/ModalOutlet/ModalOutlet.module.css +4 -0
- package/dist/cssm/components/ModalOverlay/ModalOverlay.module.css +1 -1
- package/dist/cssm/components/ModalPage/ModalPage.js +2 -1
- package/dist/cssm/components/ModalPage/ModalPage.js.map +1 -1
- package/dist/cssm/components/ModalPage/ModalPage.module.css +1 -0
- package/dist/cssm/components/ModalPage/ModalPageInternal.js +3 -2
- package/dist/cssm/components/ModalPage/ModalPageInternal.js.map +1 -1
- package/dist/cssm/components/ModalPage/types.js.map +1 -1
- package/dist/cssm/components/ModalRoot/ModalRoot.js +4 -2
- package/dist/cssm/components/ModalRoot/ModalRoot.js.map +1 -1
- package/dist/cssm/components/ModalRoot/types.js.map +1 -1
- package/dist/cssm/components/ModalRoot/useModalManager.js +2 -1
- package/dist/cssm/components/ModalRoot/useModalManager.js.map +1 -1
- package/dist/cssm/components/OnboardingTooltip/OnboardingTooltip.js +3 -2
- package/dist/cssm/components/OnboardingTooltip/OnboardingTooltip.js.map +1 -1
- package/dist/cssm/components/Popover/Popover.js.map +1 -1
- package/dist/cssm/components/Popover/usePopover.js +2 -1
- package/dist/cssm/components/Popover/usePopover.js.map +1 -1
- package/dist/cssm/components/Popper/Popper.js +2 -1
- package/dist/cssm/components/Popper/Popper.js.map +1 -1
- package/dist/cssm/components/Select/Select.js +1 -1
- package/dist/cssm/components/Select/Select.js.map +1 -1
- package/dist/cssm/components/SelectionControl/SelectionControl.js +16 -6
- package/dist/cssm/components/SelectionControl/SelectionControl.js.map +1 -1
- package/dist/cssm/components/SelectionControl/SelectionControl.module.css +6 -3
- package/dist/cssm/components/SelectionControl/SelectionControlContext.js +7 -0
- package/dist/cssm/components/SelectionControl/SelectionControlContext.js.map +1 -0
- package/dist/cssm/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.js +3 -1
- package/dist/cssm/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.js.map +1 -1
- package/dist/cssm/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.module.css +6 -3
- package/dist/cssm/components/SimpleCell/SimpleCell.js +29 -8
- package/dist/cssm/components/SimpleCell/SimpleCell.js.map +1 -1
- package/dist/cssm/components/Skeleton/Skeleton.js +1 -1
- package/dist/cssm/components/Skeleton/Skeleton.js.map +1 -1
- package/dist/cssm/components/Slider/SliderThumb/SliderThumb.module.css +2 -1
- package/dist/cssm/components/Tabs/Tabs.js +19 -9
- package/dist/cssm/components/Tabs/Tabs.js.map +1 -1
- package/dist/cssm/components/Tabs/TabsController.js.map +1 -1
- package/dist/cssm/components/Tabs/TabsControllerContext.js +4 -0
- package/dist/cssm/components/Tabs/TabsControllerContext.js.map +1 -0
- package/dist/cssm/components/Tabs/TabsModeContext.js +1 -2
- package/dist/cssm/components/Tabs/TabsModeContext.js.map +1 -1
- package/dist/cssm/components/TabsItem/TabsItem.js +3 -1
- package/dist/cssm/components/TabsItem/TabsItem.js.map +1 -1
- package/dist/cssm/components/Tooltip/Tooltip.js.map +1 -1
- package/dist/cssm/components/Tooltip/useTooltip.js +2 -1
- package/dist/cssm/components/Tooltip/useTooltip.js.map +1 -1
- package/dist/cssm/components/Typography/Caption/Caption.js +4 -1
- package/dist/cssm/components/Typography/Caption/Caption.js.map +1 -1
- package/dist/cssm/components/Typography/Footnote/Footnote.js +4 -1
- package/dist/cssm/components/Typography/Footnote/Footnote.js.map +1 -1
- package/dist/cssm/components/Typography/Typography.js +7 -1
- package/dist/cssm/components/Typography/Typography.js.map +1 -1
- package/dist/cssm/components/View/View.js +2 -1
- package/dist/cssm/components/View/View.js.map +1 -1
- package/dist/cssm/components/View/View.module.css +1 -1
- package/dist/cssm/components/View/ViewInfinite.js +2 -1
- package/dist/cssm/components/View/ViewInfinite.js.map +1 -1
- package/dist/cssm/components/VisuallyHidden/VisuallyHidden.module.css +0 -2
- package/dist/cssm/hooks/useCalendar.js +6 -4
- package/dist/cssm/hooks/useCalendar.js.map +1 -1
- package/dist/cssm/hooks/useFloatingElement.js +3 -2
- package/dist/cssm/hooks/useFloatingElement.js.map +1 -1
- package/dist/cssm/hooks/useTodayDate.js +3 -2
- package/dist/cssm/hooks/useTodayDate.js.map +1 -1
- package/dist/cssm/index.js.map +1 -1
- package/dist/cssm/lib/accessibility.js +8 -0
- package/dist/cssm/lib/accessibility.js.map +1 -1
- package/dist/cssm/lib/calendar.js +9 -7
- package/dist/cssm/lib/calendar.js.map +1 -1
- package/dist/cssm/lib/date.js +66 -3
- package/dist/cssm/lib/date.js.map +1 -1
- package/dist/cssm/lib/floating/useFloatingMiddlewaresBootstrap/index.js +18 -8
- package/dist/cssm/lib/floating/useFloatingMiddlewaresBootstrap/index.js.map +1 -1
- package/dist/cssm/lib/floating/useFloatingWithInteractions/types.js.map +1 -1
- package/dist/cssm/lib/touch/UIPanGestureRecognizer.js +2 -2
- package/dist/cssm/lib/touch/UIPanGestureRecognizer.js.map +1 -1
- package/dist/cssm/lib/utils.js +1 -0
- package/dist/cssm/lib/utils.js.map +1 -1
- package/dist/cssm/styles/themes.css +1 -1
- package/dist/hooks/useCalendar.d.ts.map +1 -1
- package/dist/hooks/useCalendar.js +6 -4
- package/dist/hooks/useCalendar.js.map +1 -1
- package/dist/hooks/useFloatingElement.d.ts +1 -1
- package/dist/hooks/useFloatingElement.d.ts.map +1 -1
- package/dist/hooks/useFloatingElement.js +3 -2
- package/dist/hooks/useFloatingElement.js.map +1 -1
- package/dist/hooks/useTodayDate.d.ts.map +1 -1
- package/dist/hooks/useTodayDate.js +3 -2
- package/dist/hooks/useTodayDate.js.map +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/accessibility.d.ts +1 -1
- package/dist/lib/accessibility.d.ts.map +1 -1
- package/dist/lib/accessibility.js +8 -0
- package/dist/lib/accessibility.js.map +1 -1
- package/dist/lib/calendar.d.ts.map +1 -1
- package/dist/lib/calendar.js +9 -7
- package/dist/lib/calendar.js.map +1 -1
- package/dist/lib/date.d.ts +31 -1
- package/dist/lib/date.d.ts.map +1 -1
- package/dist/lib/date.js +67 -3
- package/dist/lib/date.js.map +1 -1
- package/dist/lib/floating/useFloatingMiddlewaresBootstrap/index.d.ts +6 -1
- package/dist/lib/floating/useFloatingMiddlewaresBootstrap/index.d.ts.map +1 -1
- package/dist/lib/floating/useFloatingMiddlewaresBootstrap/index.js +18 -8
- package/dist/lib/floating/useFloatingMiddlewaresBootstrap/index.js.map +1 -1
- package/dist/lib/floating/useFloatingWithInteractions/types.d.ts +2 -0
- package/dist/lib/floating/useFloatingWithInteractions/types.d.ts.map +1 -1
- package/dist/lib/floating/useFloatingWithInteractions/types.js.map +1 -1
- package/dist/lib/touch/UIPanGestureRecognizer.d.ts.map +1 -1
- package/dist/lib/touch/UIPanGestureRecognizer.js +2 -2
- package/dist/lib/touch/UIPanGestureRecognizer.js.map +1 -1
- package/dist/lib/utils.d.ts +1 -0
- package/dist/lib/utils.d.ts.map +1 -1
- package/dist/lib/utils.js +1 -0
- package/dist/lib/utils.js.map +1 -1
- package/dist/vkui.css +1 -1
- package/dist/vkui.css.map +1 -1
- package/package.json +6 -7
- package/src/components/Banner/Banner.module.css +1 -6
- package/src/components/Banner/Banner.module.css.d.ts.map +1 -1
- package/src/components/Calendar/Calendar.tsx +6 -6
- package/src/components/CalendarDays/CalendarDays.tsx +3 -3
- package/src/components/CalendarRange/CalendarRange.tsx +15 -20
- package/src/components/CalendarRange/utils.ts +7 -6
- package/src/components/Cell/Cell.tsx +3 -0
- package/src/components/Checkbox/Checkbox.tsx +6 -0
- package/src/components/Checkbox/CheckboxSimple/CheckboxSimple.module.css +7 -2
- package/src/components/Checkbox/CheckboxSimple/CheckboxSimple.module.css.d.ts.map +1 -1
- package/src/components/Checkbox/CheckboxSimple/CheckboxSimple.tsx +12 -3
- package/src/components/ChipsInputBase/Chip/Chip.module.css +8 -1
- package/src/components/ChipsInputBase/Chip/Chip.module.css.d.ts.map +1 -1
- package/src/components/ChipsInputBase/Chip/Chip.tsx +55 -1
- package/src/components/ChipsInputBase/ChipsInputBase.tsx +26 -4
- package/src/components/ChipsInputBase/types.ts +2 -45
- package/src/components/ChipsSelect/ChipsSelect.tsx +2 -4
- package/src/components/ContentBadge/ContentBadge.tsx +18 -12
- package/src/components/ContentCard/ContentCard.tsx +1 -1
- package/src/components/CustomSelect/CustomSelect.tsx +216 -562
- package/src/components/CustomSelect/CustomSelectInput/CustomSelectInput.module.css +12 -0
- package/src/components/CustomSelect/CustomSelectInput/CustomSelectInput.module.css.d.ts.map +1 -1
- package/src/components/CustomSelect/CustomSelectInput/CustomSelectInput.tsx +25 -2
- package/src/components/CustomSelect/helpers.ts +103 -0
- package/src/components/CustomSelect/hooks/useAfterItems.tsx +89 -0
- package/src/components/CustomSelect/hooks/useDropdownOpenedController.ts +61 -0
- package/src/components/CustomSelect/hooks/useFocusedOptionController.ts +86 -0
- package/src/components/CustomSelect/hooks/useInputKeyboardController.ts +96 -0
- package/src/components/CustomSelect/hooks/useInputValueController.ts +58 -0
- package/src/components/CustomSelect/hooks/useScrollListController.ts +46 -0
- package/src/components/CustomSelect/hooks/useSelectedOptionController.ts +132 -0
- package/src/components/CustomSelect/types.ts +38 -0
- package/src/components/CustomSelectDropdown/CustomSelectDropdown.tsx +1 -0
- package/src/components/DateInput/DateInput.tsx +9 -3
- package/src/components/DateRangeInput/DateRangeInput.tsx +9 -6
- package/src/components/ModalCard/ModalCard.tsx +2 -0
- package/src/components/ModalCard/ModalCardInternal.tsx +8 -2
- package/src/components/ModalCard/types.ts +6 -0
- package/src/components/ModalOutlet/ModalOutlet.module.css +4 -0
- package/src/components/ModalOutlet/ModalOutlet.module.css.d.ts.map +1 -1
- package/src/components/ModalOutlet/ModalOutlet.tsx +8 -1
- package/src/components/ModalOverlay/ModalOverlay.module.css +1 -1
- package/src/components/ModalPage/ModalPage.module.css +1 -0
- package/src/components/ModalPage/ModalPage.module.css.d.ts.map +1 -1
- package/src/components/ModalPage/ModalPage.tsx +2 -0
- package/src/components/ModalPage/ModalPageInternal.tsx +8 -2
- package/src/components/ModalPage/types.ts +6 -0
- package/src/components/ModalRoot/ModalRoot.tsx +19 -6
- package/src/components/ModalRoot/types.ts +5 -0
- package/src/components/ModalRoot/useModalManager.tsx +4 -0
- package/src/components/OnboardingTooltip/OnboardingTooltip.tsx +3 -0
- package/src/components/Popover/Popover.tsx +1 -0
- package/src/components/Popover/usePopover.tsx +2 -0
- package/src/components/Popper/Popper.tsx +3 -0
- package/src/components/Select/Select.tsx +5 -5
- package/src/components/SelectionControl/SelectionControl.module.css +6 -3
- package/src/components/SelectionControl/SelectionControl.module.css.d.ts.map +1 -1
- package/src/components/SelectionControl/SelectionControl.tsx +30 -8
- package/src/components/SelectionControl/SelectionControlContext.ts +7 -0
- package/src/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.module.css +6 -3
- package/src/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.module.css.d.ts.map +1 -1
- package/src/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.tsx +7 -1
- package/src/components/SimpleCell/SimpleCell.tsx +5 -0
- package/src/components/Skeleton/Skeleton.tsx +1 -1
- package/src/components/Slider/SliderThumb/SliderThumb.module.css +1 -1
- package/src/components/Tabs/Tabs.tsx +16 -12
- package/src/components/Tabs/TabsController.ts +2 -2
- package/src/components/Tabs/TabsControllerContext.ts +7 -0
- package/src/components/Tabs/TabsModeContext.ts +0 -3
- package/src/components/TabsItem/TabsItem.tsx +5 -9
- package/src/components/Tooltip/Tooltip.tsx +1 -0
- package/src/components/Tooltip/useTooltip.tsx +2 -0
- package/src/components/Typography/Caption/Caption.tsx +14 -6
- package/src/components/Typography/Footnote/Footnote.tsx +10 -6
- package/src/components/Typography/Typography.tsx +9 -2
- package/src/components/View/View.module.css +1 -1
- package/src/components/View/View.tsx +2 -1
- package/src/components/View/ViewInfinite.tsx +2 -1
- package/src/components/VisuallyHidden/VisuallyHidden.module.css +0 -2
- package/src/components/VisuallyHidden/VisuallyHidden.module.css.d.ts.map +1 -1
- package/src/hooks/useCalendar.ts +6 -4
- package/src/hooks/useFloatingElement.tsx +2 -0
- package/src/hooks/useTodayDate.ts +3 -2
- package/src/index.ts +5 -3
- package/src/lib/accessibility.ts +4 -0
- package/src/lib/calendar.ts +8 -12
- package/src/lib/date.ts +82 -3
- package/src/lib/floating/useFloatingMiddlewaresBootstrap/index.ts +23 -10
- package/src/lib/floating/useFloatingWithInteractions/types.ts +2 -0
- package/src/lib/touch/UIPanGestureRecognizer.ts +2 -2
- package/src/lib/utils.ts +3 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/lib/date.ts"],"sourcesContent":["import { TZDateMini } from '@vkontakte/vkui-date-fns-tz';\nimport { lightFormat } from 'date-fns';\n\nexport function parse(input: string, format: string, referenceDate: Date = new Date()): Date {\n const match2 = /^\\d\\d/; // 00 - 99\n const match4 = /^\\d{4}/; // 0000 - 9999\n\n const entries: Array<[string, RegExp, (val: string) => [string, number, boolean]]> = [\n ['yyyy', match4, (val) => ['Y', +val, true]],\n [\n 'MM',\n match2,\n (val) => {\n const numVal = +val;\n const okay = numVal > 0 && numVal <= 12;\n\n return ['M', numVal - 1, okay];\n },\n ],\n ['dd', match2, (val) => ['D', +val, true]],\n [\n 'HH',\n match2,\n (val) => {\n const numVal = parseInt(val, 10);\n const okay = numVal >= 0 && numVal < 24;\n\n return ['h', numVal, okay];\n },\n ],\n [\n 'mm',\n match2,\n (val) => {\n const numVal = parseInt(val, 10);\n const okay = numVal >= 0 && numVal < 60;\n\n return ['m', numVal, okay];\n },\n ],\n ];\n\n const superRegExp = new RegExp(entries.map((item) => item[0]).join('|'), 'g');\n\n const store: {\n [key: string]: number;\n } = {\n y: referenceDate.getFullYear(),\n M: referenceDate.getMonth(),\n d: referenceDate.getDate(),\n h: referenceDate.getHours(),\n m: referenceDate.getMinutes(),\n s: referenceDate.getSeconds(),\n ms: referenceDate.getMilliseconds(),\n };\n\n let prevInputIndex = 0;\n let lastNonFormatting = '';\n let lastFormatIndex = 0;\n let found = false;\n\n while (true) {\n const match = superRegExp.exec(format);\n\n if (!match) {\n break;\n }\n\n const length = match[0].length;\n const atIndex = superRegExp.lastIndex - length;\n\n const item = entries.find((item) => item[0] === match[0])!;\n\n lastNonFormatting = format.slice(lastFormatIndex, atIndex);\n lastFormatIndex = superRegExp.lastIndex;\n\n if (\n input.slice(prevInputIndex, prevInputIndex + lastNonFormatting.length) !== lastNonFormatting\n ) {\n return new Date('');\n }\n\n const value = input.slice(prevInputIndex + lastNonFormatting.length).match(item[1]);\n\n if (!value) {\n return new Date('');\n }\n\n prevInputIndex = prevInputIndex + lastNonFormatting.length + value[0].length;\n\n const [key, newValue, okay] = item[2](value[0]);\n\n if (!okay) {\n return new Date('');\n }\n\n store[key] = newValue;\n found = true;\n }\n\n if (!found) {\n return new Date('');\n }\n\n const date = new Date(store.Y, store.M, store.D, store.h, store.m, store.s, store.ms);\n\n // Since days of months are dynamic, they can't be validated in entries,\n // so we check it here, in the finalized date\n if (date.getMonth() !== store.M || date.getDate() !== store.D) {\n return new Date('');\n }\n\n return date;\n}\n\nexport const convertDateToTimeZone = (\n date?: Date | null,\n timezone?: string,\n): Date | undefined | null => {\n if (!timezone) {\n return date;\n }\n if (date === null) {\n return null;\n }\n return date ? TZDateMini.tz(timezone, date) : undefined;\n};\n\nexport const convertDateFromTimeZone = (\n date?: Date | null,\n timezone?: string,\n): Date | undefined | null => {\n if (!timezone) {\n return date;\n }\n if (date === null) {\n return null;\n }\n // eslint-disable-next-line new-cap\n const systemTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone;\n return date ? TZDateMini.tz(systemTimezone, date) : undefined;\n};\n\nexport function format(date: Date | number, format: string): string {\n return lightFormat(date, format);\n}\n\nexport function isMatch(input: string, format: string): boolean {\n return !isNaN(+parse(input, format));\n}\n"],"names":["TZDateMini","lightFormat","parse","input","format","referenceDate","Date","match2","match4","entries","val","numVal","okay","parseInt","superRegExp","RegExp","map","item","join","store","y","getFullYear","M","getMonth","d","getDate","h","getHours","m","getMinutes","s","getSeconds","ms","getMilliseconds","prevInputIndex","lastNonFormatting","lastFormatIndex","found","match","exec","length","atIndex","lastIndex","find","slice","value","key","newValue","date","Y","D","convertDateToTimeZone","timezone","tz","undefined","convertDateFromTimeZone","systemTimezone","Intl","DateTimeFormat","resolvedOptions","timeZone","isMatch","isNaN"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/date.ts"],"sourcesContent":["import { isSameDate } from '@vkontakte/vkjs';\nimport { TZDateMini } from '@vkontakte/vkui-date-fns-tz';\n\nexport function parse(input: string, format: string, referenceDate: Date = new Date()): Date {\n const match2 = /^\\d\\d/; // 00 - 99\n const match4 = /^\\d{4}/; // 0000 - 9999\n\n const entries: Array<[string, RegExp, (val: string) => [string, number, boolean]]> = [\n ['yyyy', match4, (val) => ['Y', +val, true]],\n [\n 'MM',\n match2,\n (val) => {\n const numVal = +val;\n const okay = numVal > 0 && numVal <= 12;\n\n return ['M', numVal - 1, okay];\n },\n ],\n ['dd', match2, (val) => ['D', +val, true]],\n [\n 'HH',\n match2,\n (val) => {\n const numVal = parseInt(val, 10);\n const okay = numVal >= 0 && numVal < 24;\n\n return ['h', numVal, okay];\n },\n ],\n [\n 'mm',\n match2,\n (val) => {\n const numVal = parseInt(val, 10);\n const okay = numVal >= 0 && numVal < 60;\n\n return ['m', numVal, okay];\n },\n ],\n ];\n\n const superRegExp = new RegExp(entries.map((item) => item[0]).join('|'), 'g');\n\n const store: {\n [key: string]: number;\n } = {\n y: referenceDate.getFullYear(),\n M: referenceDate.getMonth(),\n d: referenceDate.getDate(),\n h: referenceDate.getHours(),\n m: referenceDate.getMinutes(),\n s: referenceDate.getSeconds(),\n ms: referenceDate.getMilliseconds(),\n };\n\n let prevInputIndex = 0;\n let lastNonFormatting = '';\n let lastFormatIndex = 0;\n let found = false;\n\n while (true) {\n const match = superRegExp.exec(format);\n\n if (!match) {\n break;\n }\n\n const length = match[0].length;\n const atIndex = superRegExp.lastIndex - length;\n\n const item = entries.find((item) => item[0] === match[0])!;\n\n lastNonFormatting = format.slice(lastFormatIndex, atIndex);\n lastFormatIndex = superRegExp.lastIndex;\n\n if (\n input.slice(prevInputIndex, prevInputIndex + lastNonFormatting.length) !== lastNonFormatting\n ) {\n return new Date('');\n }\n\n const value = input.slice(prevInputIndex + lastNonFormatting.length).match(item[1]);\n\n if (!value) {\n return new Date('');\n }\n\n prevInputIndex = prevInputIndex + lastNonFormatting.length + value[0].length;\n\n const [key, newValue, okay] = item[2](value[0]);\n\n if (!okay) {\n return new Date('');\n }\n\n store[key] = newValue;\n found = true;\n }\n\n if (!found) {\n return new Date('');\n }\n\n const date = new Date(store.Y, store.M, store.D, store.h, store.m, store.s, store.ms);\n\n // Since days of months are dynamic, they can't be validated in entries,\n // so we check it here, in the finalized date\n if (date.getMonth() !== store.M || date.getDate() !== store.D) {\n return new Date('');\n }\n\n return date;\n}\n\nexport const convertDateToTimeZone = (\n date?: Date | null,\n timezone?: string,\n): Date | undefined | null => {\n if (!timezone) {\n return date;\n }\n if (date === null) {\n return null;\n }\n return date ? TZDateMini.tz(timezone, date) : undefined;\n};\n\nexport const convertDateFromTimeZone = (\n date?: Date | null,\n timezone?: string,\n): Date | undefined | null => {\n if (!timezone) {\n return date;\n }\n if (date === null) {\n return null;\n }\n // eslint-disable-next-line new-cap\n const systemTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone;\n return date ? TZDateMini.tz(systemTimezone, date) : undefined;\n};\n\nconst dateOptions: Intl.DateTimeFormatOptions = {\n day: '2-digit',\n month: '2-digit',\n year: 'numeric',\n};\n\n// dd.MM.yyyy\nexport const dateFormatter = /*#__PURE__*/ new Intl.DateTimeFormat('ru-RU', dateOptions);\n\nclass DateTimeFormat extends Intl.DateTimeFormat {\n constructor() {\n super('ru-RU', {\n ...dateOptions,\n hour: '2-digit',\n minute: '2-digit',\n });\n }\n\n format(date?: Date | number): string {\n return super.format(date).replace(',', '');\n }\n}\n\n// dd.MM.yyyy HH:mm\nexport const dateTimeFormatter = /*#__PURE__*/ new DateTimeFormat();\n\n/**\n * Возвращает дату конца месяца\n */\nexport function endOfMonth(date: Date): Date {\n const result = new Date(date);\n const month = result.getMonth();\n result.setFullYear(result.getFullYear(), month + 1, 0);\n result.setHours(23, 59, 59, 999);\n return result;\n}\n\nexport function endOfDay(date: Date): Date {\n const result = new Date(date);\n result.setHours(23, 59, 59, 999);\n return result;\n}\n\n/**\n * Проверяет, что переданные даты относятся к одному и тому же месяцу\n *\n * @example\n * ```ts\n * import assert from 'node:assert';\n * import { isSameMonth } from './date.ts';\n *\n * const d1 = new Date();\n * const d2 = new Date();\n * assert.ok(isSameMonth(d1, d2));\n * ```\n */\nexport function isSameMonth(d1: Date, d2: Date): boolean {\n return d1.getMonth() === d2.getMonth() && d1.getFullYear() === d2.getFullYear();\n}\n\nexport function isLastDayOfMonth(date: Date) {\n return +endOfDay(date) === +endOfMonth(date);\n}\n\nexport function isWithinInterval(date: Date, interval: [Date, Date]) {\n const [startTime, endTime] = interval.sort((a, b) => +a - +b);\n\n return date >= startTime && date <= endTime;\n}\n\nexport function isToday(date: Date) {\n return isSameDate(date, new Date());\n}\n\nexport function isYesterday(date: Date) {\n const yesterday = new Date();\n yesterday.setDate(yesterday.getDate() - 1);\n\n return isSameDate(date, yesterday);\n}\n\nexport function isMatch(input: string, format: string): boolean {\n return !isNaN(+parse(input, format));\n}\n\nexport const millisecondsInSecond = 1000;\n"],"names":["isSameDate","TZDateMini","parse","input","format","referenceDate","Date","match2","match4","entries","val","numVal","okay","parseInt","superRegExp","RegExp","map","item","join","store","y","getFullYear","M","getMonth","d","getDate","h","getHours","m","getMinutes","s","getSeconds","ms","getMilliseconds","prevInputIndex","lastNonFormatting","lastFormatIndex","found","match","exec","length","atIndex","lastIndex","find","slice","value","key","newValue","date","Y","D","convertDateToTimeZone","timezone","tz","undefined","convertDateFromTimeZone","systemTimezone","Intl","DateTimeFormat","resolvedOptions","timeZone","dateOptions","day","month","year","dateFormatter","hour","minute","replace","dateTimeFormatter","endOfMonth","result","setFullYear","setHours","endOfDay","isSameMonth","d1","d2","isLastDayOfMonth","isWithinInterval","interval","startTime","endTime","sort","a","b","isToday","isYesterday","yesterday","setDate","isMatch","isNaN","millisecondsInSecond"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
import { arrowMiddleware, autoPlacementMiddleware, flipMiddleware, hideMiddleware, offsetMiddleware, shiftMiddleware, sizeMiddleware } from "../adapters.js";
|
|
3
3
|
import { checkIsNotAutoPlacement, getAutoPlacementAlign } from "../functions.js";
|
|
4
|
-
export const useFloatingMiddlewaresBootstrap = ({ placement = 'bottom-start', arrowRef = null, arrow, arrowHeight, arrowPadding, sameWidth, offsetByMainAxis = 0, offsetByCrossAxis = 0, customMiddlewares, hideWhenReferenceHidden, disableFlipMiddleware = false, flipMiddlewareFallbackAxisSideDirection = 'end' })=>{
|
|
4
|
+
export const useFloatingMiddlewaresBootstrap = ({ placement = 'bottom-start', arrowRef = null, arrow, arrowHeight, arrowPadding, sameWidth, offsetByMainAxis = 0, offsetByCrossAxis = 0, customMiddlewares, hideWhenReferenceHidden, disableFlipMiddleware = false, disableShiftMiddleware = false, flipMiddlewareFallbackAxisSideDirection = 'end' })=>{
|
|
5
5
|
return React.useMemo(()=>{
|
|
6
6
|
const isAutoPlacement = !checkIsNotAutoPlacement(placement);
|
|
7
7
|
const middlewares = [
|
|
@@ -10,25 +10,34 @@ export const useFloatingMiddlewaresBootstrap = ({ placement = 'bottom-start', ar
|
|
|
10
10
|
mainAxis: arrow && arrowHeight ? offsetByMainAxis + arrowHeight : offsetByMainAxis
|
|
11
11
|
})
|
|
12
12
|
];
|
|
13
|
-
const
|
|
13
|
+
const shift = disableShiftMiddleware ? null : shiftMiddleware();
|
|
14
14
|
// см. https://github.com/floating-ui/floating-ui/blob/%40floating-ui/core%401.7.1/website/pages/docs/flip.mdx#conflict-with-autoplacementjs
|
|
15
15
|
if (isAutoPlacement) {
|
|
16
16
|
middlewares.push(autoPlacementMiddleware({
|
|
17
17
|
alignment: getAutoPlacementAlign(placement)
|
|
18
|
-
})
|
|
18
|
+
}));
|
|
19
|
+
if (shift) {
|
|
20
|
+
middlewares.push(shift);
|
|
21
|
+
}
|
|
19
22
|
} else if (!disableFlipMiddleware) {
|
|
20
|
-
const
|
|
23
|
+
const flip = flipMiddleware({
|
|
21
24
|
crossAxis: 'alignment',
|
|
22
25
|
fallbackAxisSideDirection: flipMiddlewareFallbackAxisSideDirection
|
|
23
26
|
});
|
|
24
27
|
// см. https://github.com/floating-ui/floating-ui/blob/%40floating-ui/core%401.7.1/website/pages/docs/flip.mdx#combining-with-shiftjs
|
|
25
28
|
if (placement.includes('-')) {
|
|
26
|
-
middlewares.push(
|
|
29
|
+
middlewares.push(flip);
|
|
30
|
+
if (shift) {
|
|
31
|
+
middlewares.push(shift);
|
|
32
|
+
}
|
|
27
33
|
} else {
|
|
28
|
-
|
|
34
|
+
if (shift) {
|
|
35
|
+
middlewares.push(shift);
|
|
36
|
+
}
|
|
37
|
+
middlewares.push(flip);
|
|
29
38
|
}
|
|
30
|
-
} else {
|
|
31
|
-
middlewares.push(
|
|
39
|
+
} else if (shift) {
|
|
40
|
+
middlewares.push(shift);
|
|
32
41
|
}
|
|
33
42
|
if (sameWidth) {
|
|
34
43
|
middlewares.push(sizeMiddleware({
|
|
@@ -63,6 +72,7 @@ export const useFloatingMiddlewaresBootstrap = ({ placement = 'bottom-start', ar
|
|
|
63
72
|
arrowHeight,
|
|
64
73
|
offsetByMainAxis,
|
|
65
74
|
disableFlipMiddleware,
|
|
75
|
+
disableShiftMiddleware,
|
|
66
76
|
flipMiddlewareFallbackAxisSideDirection,
|
|
67
77
|
sameWidth,
|
|
68
78
|
customMiddlewares,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/lib/floating/useFloatingMiddlewaresBootstrap/index.ts"],"sourcesContent":["import * as React from 'react';\nimport {\n arrowMiddleware,\n autoPlacementMiddleware,\n flipMiddleware,\n type FlipMiddlewareOptions,\n hideMiddleware,\n offsetMiddleware,\n shiftMiddleware,\n sizeMiddleware,\n} from '../adapters';\nimport { checkIsNotAutoPlacement, getAutoPlacementAlign } from '../functions';\nimport {\n type ArrowOptions,\n type Placement,\n type PlacementWithAuto,\n type UseFloatingMiddleware,\n} from '../types/common';\n\nexport interface UseFloatingMiddlewaresBootstrapOptions {\n /**\n * По умолчанию компонент выберет наилучшее расположение сам, но приоритетное можно задать с помощью этого свойства.\n */\n placement?: PlacementWithAuto;\n /**\n * Указанное значение `placement` форсируется, даже если для выпадающего элемента недостаточно места.\n * Не оказывает влияния при `placement` значениях - `'auto' | 'auto-start' | 'auto-end'`\n */\n disableFlipMiddleware?: boolean;\n /**\n * Задаёт резервный вариант размещения по перпендикулярной оси.\n */\n flipMiddlewareFallbackAxisSideDirection?: FlipMiddlewareOptions['fallbackAxisSideDirection'];\n /**\n * Отступ по главной оси.\n */\n offsetByMainAxis?: number;\n /**\n * Отступ по вспомогательной оси.\n */\n offsetByCrossAxis?: number;\n arrowRef?: ArrowOptions['element'];\n /**\n * Отображать ли стрелку, указывающую на якорный элемент.\n */\n arrow?: boolean;\n /**\n * Высота стрелки. Складывается с `mainAxis`, чтобы стрелка не залезала на якорный элемент.\n */\n arrowHeight?: number;\n /**\n * Безопасная зона вокруг стрелки, чтобы та не выходила за края контента.\n */\n arrowPadding?: number;\n /**\n * Выставлять ширину равной target элементу.\n */\n sameWidth?: boolean;\n /**\n * Массив кастомных модификаторов для Popper (необходимо мемоизировать).\n */\n customMiddlewares?: UseFloatingMiddleware[];\n /**\n * Принудительно скрывает компонент если целевой элемент вышел за область видимости.\n */\n hideWhenReferenceHidden?: boolean;\n}\n\nexport const useFloatingMiddlewaresBootstrap = ({\n placement = 'bottom-start',\n arrowRef = null,\n arrow,\n arrowHeight,\n arrowPadding,\n sameWidth,\n offsetByMainAxis = 0,\n offsetByCrossAxis = 0,\n customMiddlewares,\n hideWhenReferenceHidden,\n disableFlipMiddleware = false,\n flipMiddlewareFallbackAxisSideDirection = 'end',\n}: UseFloatingMiddlewaresBootstrapOptions): {\n middlewares: UseFloatingMiddleware[];\n strictPlacement: Placement | undefined;\n} => {\n return React.useMemo(() => {\n const isAutoPlacement = !checkIsNotAutoPlacement(placement);\n const middlewares: UseFloatingMiddleware[] = [\n offsetMiddleware({\n crossAxis: offsetByCrossAxis,\n mainAxis: arrow && arrowHeight ? offsetByMainAxis + arrowHeight : offsetByMainAxis,\n }),\n ];\n\n const
|
|
1
|
+
{"version":3,"sources":["../../../../../src/lib/floating/useFloatingMiddlewaresBootstrap/index.ts"],"sourcesContent":["import * as React from 'react';\nimport {\n arrowMiddleware,\n autoPlacementMiddleware,\n flipMiddleware,\n type FlipMiddlewareOptions,\n hideMiddleware,\n offsetMiddleware,\n shiftMiddleware,\n sizeMiddleware,\n} from '../adapters';\nimport { checkIsNotAutoPlacement, getAutoPlacementAlign } from '../functions';\nimport {\n type ArrowOptions,\n type Placement,\n type PlacementWithAuto,\n type UseFloatingMiddleware,\n} from '../types/common';\n\nexport interface UseFloatingMiddlewaresBootstrapOptions {\n /**\n * По умолчанию компонент выберет наилучшее расположение сам, но приоритетное можно задать с помощью этого свойства.\n */\n placement?: PlacementWithAuto;\n /**\n * Указанное значение `placement` форсируется, даже если для выпадающего элемента недостаточно места.\n * Не оказывает влияния при `placement` значениях - `'auto' | 'auto-start' | 'auto-end'`\n */\n disableFlipMiddleware?: boolean;\n /**\n * Позволяет отключить смещение по главной оси,\n * которое не даёт всплывающему элементу выходить за границы видимой области.\n */\n disableShiftMiddleware?: boolean;\n /**\n * Задаёт резервный вариант размещения по перпендикулярной оси.\n */\n flipMiddlewareFallbackAxisSideDirection?: FlipMiddlewareOptions['fallbackAxisSideDirection'];\n /**\n * Отступ по главной оси.\n */\n offsetByMainAxis?: number;\n /**\n * Отступ по вспомогательной оси.\n */\n offsetByCrossAxis?: number;\n arrowRef?: ArrowOptions['element'];\n /**\n * Отображать ли стрелку, указывающую на якорный элемент.\n */\n arrow?: boolean;\n /**\n * Высота стрелки. Складывается с `mainAxis`, чтобы стрелка не залезала на якорный элемент.\n */\n arrowHeight?: number;\n /**\n * Безопасная зона вокруг стрелки, чтобы та не выходила за края контента.\n */\n arrowPadding?: number;\n /**\n * Выставлять ширину равной target элементу.\n */\n sameWidth?: boolean;\n /**\n * Массив кастомных модификаторов для Popper (необходимо мемоизировать).\n */\n customMiddlewares?: UseFloatingMiddleware[];\n /**\n * Принудительно скрывает компонент если целевой элемент вышел за область видимости.\n */\n hideWhenReferenceHidden?: boolean;\n}\n\nexport const useFloatingMiddlewaresBootstrap = ({\n placement = 'bottom-start',\n arrowRef = null,\n arrow,\n arrowHeight,\n arrowPadding,\n sameWidth,\n offsetByMainAxis = 0,\n offsetByCrossAxis = 0,\n customMiddlewares,\n hideWhenReferenceHidden,\n disableFlipMiddleware = false,\n disableShiftMiddleware = false,\n flipMiddlewareFallbackAxisSideDirection = 'end',\n}: UseFloatingMiddlewaresBootstrapOptions): {\n middlewares: UseFloatingMiddleware[];\n strictPlacement: Placement | undefined;\n} => {\n return React.useMemo(() => {\n const isAutoPlacement = !checkIsNotAutoPlacement(placement);\n const middlewares: UseFloatingMiddleware[] = [\n offsetMiddleware({\n crossAxis: offsetByCrossAxis,\n mainAxis: arrow && arrowHeight ? offsetByMainAxis + arrowHeight : offsetByMainAxis,\n }),\n ];\n\n const shift = disableShiftMiddleware ? null : shiftMiddleware();\n\n // см. https://github.com/floating-ui/floating-ui/blob/%40floating-ui/core%401.7.1/website/pages/docs/flip.mdx#conflict-with-autoplacementjs\n if (isAutoPlacement) {\n middlewares.push(autoPlacementMiddleware({ alignment: getAutoPlacementAlign(placement) }));\n if (shift) {\n middlewares.push(shift);\n }\n } else if (!disableFlipMiddleware) {\n const flip = flipMiddleware({\n crossAxis: 'alignment',\n fallbackAxisSideDirection: flipMiddlewareFallbackAxisSideDirection,\n });\n\n // см. https://github.com/floating-ui/floating-ui/blob/%40floating-ui/core%401.7.1/website/pages/docs/flip.mdx#combining-with-shiftjs\n if (placement.includes('-')) {\n middlewares.push(flip);\n if (shift) {\n middlewares.push(shift);\n }\n } else {\n if (shift) {\n middlewares.push(shift);\n }\n middlewares.push(flip);\n }\n } else if (shift) {\n middlewares.push(shift);\n }\n\n if (sameWidth) {\n middlewares.push(\n sizeMiddleware({\n apply({ rects, elements }) {\n Object.assign(elements.floating.style, {\n width: `${rects.reference.width}px`,\n });\n },\n }),\n );\n }\n\n if (customMiddlewares) {\n middlewares.push(...customMiddlewares);\n }\n\n // см. https://github.com/floating-ui/floating-ui/blob/%40floating-ui/core%401.7.1/website/pages/docs/arrow.mdx#order\n if (arrow) {\n middlewares.push(\n arrowMiddleware({\n element: arrowRef,\n padding: arrowPadding,\n }),\n );\n }\n\n if (hideWhenReferenceHidden) {\n middlewares.push(hideMiddleware());\n }\n\n return { middlewares, strictPlacement: isAutoPlacement ? undefined : placement };\n }, [\n placement,\n offsetByCrossAxis,\n arrow,\n arrowHeight,\n offsetByMainAxis,\n disableFlipMiddleware,\n disableShiftMiddleware,\n flipMiddlewareFallbackAxisSideDirection,\n sameWidth,\n customMiddlewares,\n hideWhenReferenceHidden,\n arrowRef,\n arrowPadding,\n ]);\n};\n"],"names":["React","arrowMiddleware","autoPlacementMiddleware","flipMiddleware","hideMiddleware","offsetMiddleware","shiftMiddleware","sizeMiddleware","checkIsNotAutoPlacement","getAutoPlacementAlign","useFloatingMiddlewaresBootstrap","placement","arrowRef","arrow","arrowHeight","arrowPadding","sameWidth","offsetByMainAxis","offsetByCrossAxis","customMiddlewares","hideWhenReferenceHidden","disableFlipMiddleware","disableShiftMiddleware","flipMiddlewareFallbackAxisSideDirection","useMemo","isAutoPlacement","middlewares","crossAxis","mainAxis","shift","push","alignment","flip","fallbackAxisSideDirection","includes","apply","rects","elements","Object","assign","floating","style","width","reference","element","padding","strictPlacement","undefined"],"mappings":"AAAA,YAAYA,WAAW,QAAQ;AAC/B,SACEC,eAAe,EACfC,uBAAuB,EACvBC,cAAc,EAEdC,cAAc,EACdC,gBAAgB,EAChBC,eAAe,EACfC,cAAc,QACT,iBAAc;AACrB,SAASC,uBAAuB,EAAEC,qBAAqB,QAAQ,kBAAe;AA8D9E,OAAO,MAAMC,kCAAkC,CAAC,EAC9CC,YAAY,cAAc,EAC1BC,WAAW,IAAI,EACfC,KAAK,EACLC,WAAW,EACXC,YAAY,EACZC,SAAS,EACTC,mBAAmB,CAAC,EACpBC,oBAAoB,CAAC,EACrBC,iBAAiB,EACjBC,uBAAuB,EACvBC,wBAAwB,KAAK,EAC7BC,yBAAyB,KAAK,EAC9BC,0CAA0C,KAAK,EACR;IAIvC,OAAOvB,MAAMwB,OAAO,CAAC;QACnB,MAAMC,kBAAkB,CAACjB,wBAAwBG;QACjD,MAAMe,cAAuC;YAC3CrB,iBAAiB;gBACfsB,WAAWT;gBACXU,UAAUf,SAASC,cAAcG,mBAAmBH,cAAcG;YACpE;SACD;QAED,MAAMY,QAAQP,yBAAyB,OAAOhB;QAE9C,4IAA4I;QAC5I,IAAImB,iBAAiB;YACnBC,YAAYI,IAAI,CAAC5B,wBAAwB;gBAAE6B,WAAWtB,sBAAsBE;YAAW;YACvF,IAAIkB,OAAO;gBACTH,YAAYI,IAAI,CAACD;YACnB;QACF,OAAO,IAAI,CAACR,uBAAuB;YACjC,MAAMW,OAAO7B,eAAe;gBAC1BwB,WAAW;gBACXM,2BAA2BV;YAC7B;YAEA,qIAAqI;YACrI,IAAIZ,UAAUuB,QAAQ,CAAC,MAAM;gBAC3BR,YAAYI,IAAI,CAACE;gBACjB,IAAIH,OAAO;oBACTH,YAAYI,IAAI,CAACD;gBACnB;YACF,OAAO;gBACL,IAAIA,OAAO;oBACTH,YAAYI,IAAI,CAACD;gBACnB;gBACAH,YAAYI,IAAI,CAACE;YACnB;QACF,OAAO,IAAIH,OAAO;YAChBH,YAAYI,IAAI,CAACD;QACnB;QAEA,IAAIb,WAAW;YACbU,YAAYI,IAAI,CACdvB,eAAe;gBACb4B,OAAM,EAAEC,KAAK,EAAEC,QAAQ,EAAE;oBACvBC,OAAOC,MAAM,CAACF,SAASG,QAAQ,CAACC,KAAK,EAAE;wBACrCC,OAAO,GAAGN,MAAMO,SAAS,CAACD,KAAK,CAAC,EAAE,CAAC;oBACrC;gBACF;YACF;QAEJ;QAEA,IAAIvB,mBAAmB;YACrBO,YAAYI,IAAI,IAAIX;QACtB;QAEA,qHAAqH;QACrH,IAAIN,OAAO;YACTa,YAAYI,IAAI,CACd7B,gBAAgB;gBACd2C,SAAShC;gBACTiC,SAAS9B;YACX;QAEJ;QAEA,IAAIK,yBAAyB;YAC3BM,YAAYI,IAAI,CAAC1B;QACnB;QAEA,OAAO;YAAEsB;YAAaoB,iBAAiBrB,kBAAkBsB,YAAYpC;QAAU;IACjF,GAAG;QACDA;QACAO;QACAL;QACAC;QACAG;QACAI;QACAC;QACAC;QACAP;QACAG;QACAC;QACAR;QACAG;KACD;AACH,EAAE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/lib/floating/useFloatingWithInteractions/types.ts"],"sourcesContent":["import {\n type FloatingPositionStrategy,\n type Placement,\n type UseFloatingData,\n type UseFloatingMiddleware,\n type UseFloatingRefs,\n} from '../types/common';\n\nexport type InteractiveTriggerType = 'click' | 'hover' | 'focus';\n\nexport type ManualTriggerType = 'manual';\n\nexport type TriggerType = ManualTriggerType | InteractiveTriggerType | InteractiveTriggerType[];\n\nexport type RestoreFocusType = boolean | 'anchor-element' | HTMLElement;\n\nexport type ShownChangeReason =\n | 'click-outside'\n | 'escape-key'\n | 'click'\n | 'hover'\n | 'focus'\n | 'callback';\n\nexport type OnShownChange = (shown: boolean, reason?: ShownChangeReason) => void;\n\nexport interface UseFloatingWithInteractionsProps {\n placement?: Placement;\n /**\n * Стратегия позиционирования всплывающего элемента.\n *\n * - `\"fixed\"` - позиционируется, используя `position: fixed`. Является значением по умолчанию\n * - `\"absolute\"` - позиционируется, используя `position: absolute`, относительно ближайшего элемента с `position: relative`\n *\n * > `strategy=\"absolute\"` Рекомендуется использовать с `usePortal={false}`. И нужно не забыть обернуть в элемент с `position: relative`\n */\n strategy?: FloatingPositionStrategy;\n middlewares?: UseFloatingMiddleware[];\n /**\n * Механика вызова всплывающего элемента.\n *\n * - `\"click\"` – показывается/скрывается только при нажатии.\n * - `\"hover\"` – будет показываться/скрывается при наведении/отведении мыши.\n * - `\"focus\"` – будет показываться/скрывается при фокусе/потере фокуса мыши.\n * - `\"manual\"` – будет показываться/скрывается только через свойство `shown`. `onShownChange`\n * будет вызываться при нажатии за пределы целевого и всплывающего элементов, а также по кнопке\n * ESC.\n *\n * > ⚠️`\"hover\"` на тач-устройствах будет работать как `\"click\"`, с одним лишь нюансом, что\n * > не будет закрываться при повторном нажатии на целевой элемент. Для закрытия необходимо нажать\n * > на область вне целевого элемента и выпадающего окна.\n */\n trigger?: TriggerType;\n /**\n * Количество миллисекунд, после которых произойдёт показ/скрытие всплывающего элемента\n * при наведении.\n *\n * > Чтобы задать разное время на показ и скрытие, передайте массив типа `[<показ>, <скрытие>]`.\n *\n * > Используется только для `trigger=\"hover\"`.\n */\n hoverDelay?: number | [number, number];\n /**\n * При `trigger=\"hover\"` закрывает всплывающий элемент при нажатии на целевой элемент.\n */\n closeAfterClick?: boolean;\n /**\n * Блокирует изменение состояния.\n */\n disabled?: boolean;\n /**\n * Отключает взаимодействие со всплывающим элементом.\n */\n disableInteractive?: boolean;\n /**\n * Отключает закрытие нажатием на область вне целевого и всплывающего элемента.\n */\n disableCloseOnClickOutside?: boolean;\n /**\n * Отключает закрытие нажатием на кнопку ESC.\n */\n disableCloseOnEscKey?: boolean;\n /**\n * Начальное состояние всплывающего элемента.\n */\n defaultShown?: boolean;\n /**\n * Если передан, то всплывающий элемент будет показано/скрыто в зависимости от значения свойства.\n */\n shown?: boolean;\n /**\n * Вызывается при каждом изменении видимости всплывающего элемента.\n */\n onShownChange?: OnShownChange;\n /**\n * Вызывается при каждом изменении видимости всплывающего элемента, но после завершении анимации.\n */\n onShownChanged?: OnShownChange;\n}\n\nexport type ReferenceProps<T = HTMLElement> = Omit<\n React.HTMLAttributes<T>,\n keyof React.DOMAttributes<T>\n> &\n Pick<React.DOMAttributes<T>, 'onMouseOver' | 'onMouseLeave' | 'onClick' | 'onFocus' | 'onBlur'>;\n\nexport type FloatingProps<T = HTMLElement> = Omit<\n React.HTMLAttributes<T>,\n keyof React.DOMAttributes<T> | 'style'\n> & { style: React.CSSProperties } & Pick<\n React.DOMAttributes<T>,\n 'onMouseOver' | 'onMouseLeave' | 'onClick' | 'onAnimationStart' | 'onAnimationEnd'\n >;\n\nexport interface UseFloatingWithInteractionsReturn<T extends HTMLElement = HTMLElement> {\n placement: Placement;\n shown: boolean;\n willBeHide: boolean;\n refs: UseFloatingRefs<T>;\n referenceProps: ReferenceProps<T>;\n floatingProps: FloatingProps<T>;\n middlewareData: UseFloatingData['middlewareData'];\n onClose: (this: void) => void;\n onEscapeKeyDown?: (this: void) => void;\n onRestoreFocus: (restoreFocus?: RestoreFocusType) => boolean | HTMLElement;\n}\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../../../../src/lib/floating/useFloatingWithInteractions/types.ts"],"sourcesContent":["import {\n type FloatingPositionStrategy,\n type Placement,\n type UseFloatingData,\n type UseFloatingMiddleware,\n type UseFloatingRefs,\n} from '../types/common';\n\nexport type InteractiveTriggerType = 'click' | 'hover' | 'focus';\n\nexport type ManualTriggerType = 'manual';\n\nexport type TriggerType = ManualTriggerType | InteractiveTriggerType | InteractiveTriggerType[];\n\nexport type RestoreFocusType = boolean | 'anchor-element' | HTMLElement;\n\nexport type ShownChangeReason =\n | 'click-outside'\n | 'escape-key'\n | 'click'\n | 'hover'\n | 'focus'\n | 'callback';\n\nexport type OnShownChange = (shown: boolean, reason?: ShownChangeReason) => void;\n\nexport interface UseFloatingWithInteractionsProps {\n placement?: Placement;\n /**\n * Стратегия позиционирования всплывающего элемента.\n *\n * - `\"fixed\"` - позиционируется, используя `position: fixed`. Является значением по умолчанию\n * - `\"absolute\"` - позиционируется, используя `position: absolute`, относительно ближайшего элемента с `position: relative`\n *\n * > `strategy=\"absolute\"` Рекомендуется использовать с `usePortal={false}`. И нужно не забыть обернуть в элемент с `position: relative`\n */\n strategy?: FloatingPositionStrategy;\n middlewares?: UseFloatingMiddleware[];\n /**\n * Механика вызова всплывающего элемента.\n *\n * - `\"click\"` – показывается/скрывается только при нажатии.\n * - `\"hover\"` – будет показываться/скрывается при наведении/отведении мыши.\n * - `\"focus\"` – будет показываться/скрывается при фокусе/потере фокуса мыши.\n * - `\"manual\"` – будет показываться/скрывается только через свойство `shown`. `onShownChange`\n * будет вызываться при нажатии за пределы целевого и всплывающего элементов, а также по кнопке\n * ESC.\n *\n * > ⚠️`\"hover\"` на тач-устройствах будет работать как `\"click\"`, с одним лишь нюансом, что\n * > не будет закрываться при повторном нажатии на целевой элемент. Для закрытия необходимо нажать\n * > на область вне целевого элемента и выпадающего окна.\n *\n * **Избегайте использования `trigger=\"hover\"` как единственного механизма активации, так как пользователи клавиатуры или скринридеров не смогут использовать компонент**\n */\n trigger?: TriggerType;\n /**\n * Количество миллисекунд, после которых произойдёт показ/скрытие всплывающего элемента\n * при наведении.\n *\n * > Чтобы задать разное время на показ и скрытие, передайте массив типа `[<показ>, <скрытие>]`.\n *\n * > Используется только для `trigger=\"hover\"`.\n */\n hoverDelay?: number | [number, number];\n /**\n * При `trigger=\"hover\"` закрывает всплывающий элемент при нажатии на целевой элемент.\n */\n closeAfterClick?: boolean;\n /**\n * Блокирует изменение состояния.\n */\n disabled?: boolean;\n /**\n * Отключает взаимодействие со всплывающим элементом.\n */\n disableInteractive?: boolean;\n /**\n * Отключает закрытие нажатием на область вне целевого и всплывающего элемента.\n */\n disableCloseOnClickOutside?: boolean;\n /**\n * Отключает закрытие нажатием на кнопку ESC.\n */\n disableCloseOnEscKey?: boolean;\n /**\n * Начальное состояние всплывающего элемента.\n */\n defaultShown?: boolean;\n /**\n * Если передан, то всплывающий элемент будет показано/скрыто в зависимости от значения свойства.\n */\n shown?: boolean;\n /**\n * Вызывается при каждом изменении видимости всплывающего элемента.\n */\n onShownChange?: OnShownChange;\n /**\n * Вызывается при каждом изменении видимости всплывающего элемента, но после завершении анимации.\n */\n onShownChanged?: OnShownChange;\n}\n\nexport type ReferenceProps<T = HTMLElement> = Omit<\n React.HTMLAttributes<T>,\n keyof React.DOMAttributes<T>\n> &\n Pick<React.DOMAttributes<T>, 'onMouseOver' | 'onMouseLeave' | 'onClick' | 'onFocus' | 'onBlur'>;\n\nexport type FloatingProps<T = HTMLElement> = Omit<\n React.HTMLAttributes<T>,\n keyof React.DOMAttributes<T> | 'style'\n> & { style: React.CSSProperties } & Pick<\n React.DOMAttributes<T>,\n 'onMouseOver' | 'onMouseLeave' | 'onClick' | 'onAnimationStart' | 'onAnimationEnd'\n >;\n\nexport interface UseFloatingWithInteractionsReturn<T extends HTMLElement = HTMLElement> {\n placement: Placement;\n shown: boolean;\n willBeHide: boolean;\n refs: UseFloatingRefs<T>;\n referenceProps: ReferenceProps<T>;\n floatingProps: FloatingProps<T>;\n middlewareData: UseFloatingData['middlewareData'];\n onClose: (this: void) => void;\n onEscapeKeyDown?: (this: void) => void;\n onRestoreFocus: (restoreFocus?: RestoreFocusType) => boolean | HTMLElement;\n}\n"],"names":[],"mappings":"AAoHA,WAWC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import { millisecondsInSecond } from "../date.js";
|
|
1
2
|
import { getFirstTouchEventData } from "../dom.js";
|
|
2
3
|
const DEFAULT_INITIAL_TIME = 0;
|
|
3
|
-
const MILLISECONDS = 1000;
|
|
4
4
|
/**
|
|
5
5
|
* JS имплементация класса из UIKIt iOS.
|
|
6
6
|
*
|
|
@@ -37,7 +37,7 @@ const MILLISECONDS = 1000;
|
|
|
37
37
|
return Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));
|
|
38
38
|
}
|
|
39
39
|
velocity() {
|
|
40
|
-
const deltaTime = (Date.now() - this.initialTime) /
|
|
40
|
+
const deltaTime = (Date.now() - this.initialTime) / millisecondsInSecond;
|
|
41
41
|
if (deltaTime <= 0) {
|
|
42
42
|
return {
|
|
43
43
|
x: 0,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/lib/touch/UIPanGestureRecognizer.ts"],"sourcesContent":["import { getFirstTouchEventData } from '../dom';\n\nexport type Direction = { axis: 'x' | 'y'; direction: -1 | 1 | null };\n\nexport type Coords = { x: number; y: number };\n\nconst DEFAULT_INITIAL_TIME = 0;\
|
|
1
|
+
{"version":3,"sources":["../../../../src/lib/touch/UIPanGestureRecognizer.ts"],"sourcesContent":["import { millisecondsInSecond } from '../date';\nimport { getFirstTouchEventData } from '../dom';\n\nexport type Direction = { axis: 'x' | 'y'; direction: -1 | 1 | null };\n\nexport type Coords = { x: number; y: number };\n\nconst DEFAULT_INITIAL_TIME = 0;\n\n/**\n * JS имплементация класса из UIKIt iOS.\n *\n * https://developer.apple.com/documentation/uikit/uipangesturerecognizer\n */\nexport class UIPanGestureRecognizer {\n private initialTime = DEFAULT_INITIAL_TIME;\n x1 = 0;\n y1 = 0;\n x2 = 0;\n y2 = 0;\n\n setInitialTimeOnce(): void {\n if (this.initialTime === DEFAULT_INITIAL_TIME) {\n this.initialTime = Date.now();\n }\n }\n\n setStartCoords(event: UIEvent): void {\n const { clientX, clientY } = getFirstTouchEventData(event);\n this.x1 = clientX;\n this.y1 = clientY;\n }\n\n setEndCoords(event: UIEvent): void {\n const { clientX, clientY } = getFirstTouchEventData(event);\n this.x2 = clientX;\n this.y2 = clientY;\n }\n\n delta(): Coords {\n return {\n x: this.x2 - this.x1,\n y: this.y2 - this.y1,\n };\n }\n\n distance(): number {\n const { x, y } = this.delta();\n return Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\n }\n\n velocity(): Coords {\n const deltaTime = (Date.now() - this.initialTime) / millisecondsInSecond;\n\n if (deltaTime <= 0) {\n return { x: 0, y: 0 };\n }\n\n const { x, y } = this.delta();\n return { x: x / deltaTime, y: y / deltaTime };\n }\n\n angle(): number {\n const deltaX = this.x2 - this.x1;\n const deltaY = this.y2 - this.y1;\n const radians = Math.atan2(deltaY, deltaX);\n const degrees = (radians * 180) / Math.PI;\n return degrees < 0 ? 360 + degrees : degrees;\n }\n\n direction(): Direction {\n const { x, y } = this.delta();\n return Math.abs(x) > Math.abs(y)\n ? { axis: 'x', direction: x > 0 ? 1 : x < 0 ? -1 : null }\n : { axis: 'y', direction: y > 0 ? 1 : y < 0 ? -1 : null };\n }\n\n reset(): void {\n this.initialTime = DEFAULT_INITIAL_TIME;\n this.x1 = this.y1 = 0;\n this.x2 = this.y2 = 0;\n }\n}\n"],"names":["millisecondsInSecond","getFirstTouchEventData","DEFAULT_INITIAL_TIME","UIPanGestureRecognizer","initialTime","x1","y1","x2","y2","setInitialTimeOnce","Date","now","setStartCoords","event","clientX","clientY","setEndCoords","delta","x","y","distance","Math","sqrt","pow","velocity","deltaTime","angle","deltaX","deltaY","radians","atan2","degrees","PI","direction","abs","axis","reset"],"mappings":"AAAA,SAASA,oBAAoB,QAAQ,aAAU;AAC/C,SAASC,sBAAsB,QAAQ,YAAS;AAMhD,MAAMC,uBAAuB;AAE7B;;;;CAIC,GACD,OAAO,MAAMC;IACHC,cAAcF,qBAAqB;IAC3CG,KAAK,EAAE;IACPC,KAAK,EAAE;IACPC,KAAK,EAAE;IACPC,KAAK,EAAE;IAEPC,qBAA2B;QACzB,IAAI,IAAI,CAACL,WAAW,KAAKF,sBAAsB;YAC7C,IAAI,CAACE,WAAW,GAAGM,KAAKC,GAAG;QAC7B;IACF;IAEAC,eAAeC,KAAc,EAAQ;QACnC,MAAM,EAAEC,OAAO,EAAEC,OAAO,EAAE,GAAGd,uBAAuBY;QACpD,IAAI,CAACR,EAAE,GAAGS;QACV,IAAI,CAACR,EAAE,GAAGS;IACZ;IAEAC,aAAaH,KAAc,EAAQ;QACjC,MAAM,EAAEC,OAAO,EAAEC,OAAO,EAAE,GAAGd,uBAAuBY;QACpD,IAAI,CAACN,EAAE,GAAGO;QACV,IAAI,CAACN,EAAE,GAAGO;IACZ;IAEAE,QAAgB;QACd,OAAO;YACLC,GAAG,IAAI,CAACX,EAAE,GAAG,IAAI,CAACF,EAAE;YACpBc,GAAG,IAAI,CAACX,EAAE,GAAG,IAAI,CAACF,EAAE;QACtB;IACF;IAEAc,WAAmB;QACjB,MAAM,EAAEF,CAAC,EAAEC,CAAC,EAAE,GAAG,IAAI,CAACF,KAAK;QAC3B,OAAOI,KAAKC,IAAI,CAACD,KAAKE,GAAG,CAACL,GAAG,KAAKG,KAAKE,GAAG,CAACJ,GAAG;IAChD;IAEAK,WAAmB;QACjB,MAAMC,YAAY,AAACf,CAAAA,KAAKC,GAAG,KAAK,IAAI,CAACP,WAAW,AAAD,IAAKJ;QAEpD,IAAIyB,aAAa,GAAG;YAClB,OAAO;gBAAEP,GAAG;gBAAGC,GAAG;YAAE;QACtB;QAEA,MAAM,EAAED,CAAC,EAAEC,CAAC,EAAE,GAAG,IAAI,CAACF,KAAK;QAC3B,OAAO;YAAEC,GAAGA,IAAIO;YAAWN,GAAGA,IAAIM;QAAU;IAC9C;IAEAC,QAAgB;QACd,MAAMC,SAAS,IAAI,CAACpB,EAAE,GAAG,IAAI,CAACF,EAAE;QAChC,MAAMuB,SAAS,IAAI,CAACpB,EAAE,GAAG,IAAI,CAACF,EAAE;QAChC,MAAMuB,UAAUR,KAAKS,KAAK,CAACF,QAAQD;QACnC,MAAMI,UAAU,AAACF,UAAU,MAAOR,KAAKW,EAAE;QACzC,OAAOD,UAAU,IAAI,MAAMA,UAAUA;IACvC;IAEAE,YAAuB;QACrB,MAAM,EAAEf,CAAC,EAAEC,CAAC,EAAE,GAAG,IAAI,CAACF,KAAK;QAC3B,OAAOI,KAAKa,GAAG,CAAChB,KAAKG,KAAKa,GAAG,CAACf,KAC1B;YAAEgB,MAAM;YAAKF,WAAWf,IAAI,IAAI,IAAIA,IAAI,IAAI,CAAC,IAAI;QAAK,IACtD;YAAEiB,MAAM;YAAKF,WAAWd,IAAI,IAAI,IAAIA,IAAI,IAAI,CAAC,IAAI;QAAK;IAC5D;IAEAiB,QAAc;QACZ,IAAI,CAAChC,WAAW,GAAGF;QACnB,IAAI,CAACG,EAAE,GAAG,IAAI,CAACC,EAAE,GAAG;QACpB,IAAI,CAACC,EAAE,GAAG,IAAI,CAACC,EAAE,GAAG;IACtB;AACF"}
|
package/dist/cssm/lib/utils.js
CHANGED
|
@@ -23,6 +23,7 @@ export function multiRef(...refs) {
|
|
|
23
23
|
};
|
|
24
24
|
}
|
|
25
25
|
export const stopPropagation = (event)=>event.stopPropagation();
|
|
26
|
+
export const preventDefault = (event)=>event.preventDefault();
|
|
26
27
|
export function addClassNameToElement(element1, className) {
|
|
27
28
|
const elementClassName = element1.getAttribute('class') || '';
|
|
28
29
|
const updatedClassName = `${elementClassName}${elementClassName ? ' ' : ''}${className}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/lib/utils.ts"],"sourcesContent":["import * as React from 'react';\nimport { shouldTriggerClickOnEnterOrSpace } from './accessibility';\nimport { isHTMLElement } from './dom';\n\nexport type ImgOnlyAttributes = {\n [index in Exclude<\n keyof React.ImgHTMLAttributes<HTMLImageElement>,\n keyof React.HTMLAttributes<HTMLImageElement>\n >]: React.ImgHTMLAttributes<HTMLImageElement>[index];\n};\n\nexport function setRef<T>(element: T, ref?: React.Ref<T>): void {\n if (ref) {\n if (typeof ref === 'function') {\n ref(element);\n } else {\n (ref as React.RefObject<T>).current = element;\n }\n }\n}\n\nexport function multiRef<T>(...refs: Array<React.Ref<T> | undefined>): React.RefObject<T | null> {\n let current: T | null = null;\n return {\n get current() {\n return current;\n },\n set current(element) {\n current = element;\n refs.forEach((ref) => ref && setRef(element, ref));\n },\n };\n}\n\nexport const stopPropagation = <T extends React.SyntheticEvent>(event: T): void =>\n event.stopPropagation();\n\nexport function addClassNameToElement(element: HTMLElement, className: string): void {\n const elementClassName = element.getAttribute('class') || '';\n const updatedClassName = `${elementClassName}${elementClassName ? ' ' : ''}${className}`;\n\n element.setAttribute('class', updatedClassName);\n}\n\nexport function removeClassNameFromElement(element: HTMLElement, classNameToRemove: string): void {\n const classNamesArray = (element.getAttribute('class') || '').split(/\\s+/);\n const elementIndexToRemove = classNamesArray.findIndex(\n (className) => className === classNameToRemove,\n );\n if (elementIndexToRemove === -1) {\n return;\n }\n classNamesArray.splice(elementIndexToRemove, 1);\n\n element.setAttribute('class', classNamesArray.join(' '));\n}\n\ntype ExcludeKeysWithUndefined<T> = {\n [P in keyof T]?: Exclude<T[P], undefined>;\n};\n\nexport const excludeKeysWithUndefined = <T extends Record<string | number | symbol, any>>(\n obj: T,\n): ExcludeKeysWithUndefined<T> => {\n const filteredObj: ExcludeKeysWithUndefined<T> = {};\n for (const key in obj) {\n if (obj.hasOwnProperty(key) && obj[key] !== undefined) {\n filteredObj[key] = obj[key];\n }\n }\n return filteredObj;\n};\n\nexport const isDOMTypeElement = <\n P extends React.HTMLAttributes<T> | React.SVGAttributes<T>,\n T extends Element,\n>(\n element: React.ReactElement,\n): element is Omit<React.DOMElement<P, T>, 'ref'> & { ref?: React.Ref<T> | undefined } =>\n typeof element.type === 'string';\n\nexport function isValidNotReactFragmentElement(\n children: Parameters<typeof React.isValidElement>[0],\n): children is React.ReactElement<Record<PropertyKey, any>> {\n return (\n React.isValidElement(children) &&\n // @ts-expect-error: TS2339 $$typeof всегда symbol, в отличии от type, благодаря этому пропускаем лишние проверки на тип.\n children.$$typeof !== Symbol.for('react.fragment')\n );\n}\n\nexport function isForwardRefElement<\n P extends React.HTMLAttributes<T> | React.SVGAttributes<T>,\n T extends Element,\n>(\n children: Parameters<typeof React.isValidElement>[0],\n): children is Omit<React.DOMElement<P, T>, 'ref'> & { ref?: React.Ref<T> | undefined } {\n if (!React.isValidElement(children)) {\n return false;\n }\n\n // @ts-expect-error: TS2339 $$typeof всегда symbol, в отличии от type, благодаря этому пропускаем лишние проверки на тип.\n // черпаем вдохновение из react-is https://github.com/facebook/react/blob/d48dbb824985166ecb7b2959db03090a8593dce0/packages/react-is/src/ReactIs.js#L119-L121\n const typeOfOfType = children.type && children.type.$$typeof;\n return typeOfOfType === Symbol.for('react.forward_ref');\n}\n\n/**\n * При использовании пропа fetchPriority генерируется warning \"Invalid DOM property\" (версия React 18.*)\n * Ворнинга нет в React версии 19.*, поэтому пока поддерживаем 2 версии наименования\n */\nexport function getFetchPriorityProp(value: React.ImgHTMLAttributes<HTMLElement>['fetchPriority']):\n | {\n fetchPriority: 'high' | 'low' | 'auto' | undefined;\n }\n | {\n fetchpriority: 'high' | 'low' | 'auto' | undefined;\n } {\n if (React.version.startsWith('19')) {\n return { fetchPriority: value };\n }\n return { fetchpriority: value };\n}\n\n/*\n * [a11y]\n * Обрабатывает событие onkeydown\n * для кастомных доступных элементов:\n * - role=\"link\" (активация по Enter)\n * - role=\"button\" (активация по Space и Enter)\n */\nexport function clickByKeyboardHandler(event: React.KeyboardEvent<HTMLDivElement>): void {\n if (!isHTMLElement(event.target) || !shouldTriggerClickOnEnterOrSpace(event)) {\n return;\n }\n\n event.preventDefault();\n event.target.click?.();\n}\n"],"names":["React","shouldTriggerClickOnEnterOrSpace","isHTMLElement","setRef","element","ref","current","multiRef","refs","forEach","stopPropagation","event","addClassNameToElement","className","elementClassName","getAttribute","updatedClassName","setAttribute","removeClassNameFromElement","classNameToRemove","classNamesArray","split","elementIndexToRemove","findIndex","splice","join","excludeKeysWithUndefined","obj","filteredObj","key","hasOwnProperty","undefined","isDOMTypeElement","type","isValidNotReactFragmentElement","children","isValidElement","$$typeof","Symbol","for","isForwardRefElement","typeOfOfType","getFetchPriorityProp","value","version","startsWith","fetchPriority","fetchpriority","clickByKeyboardHandler","target","
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/utils.ts"],"sourcesContent":["import * as React from 'react';\nimport { shouldTriggerClickOnEnterOrSpace } from './accessibility';\nimport { isHTMLElement } from './dom';\n\nexport type ImgOnlyAttributes = {\n [index in Exclude<\n keyof React.ImgHTMLAttributes<HTMLImageElement>,\n keyof React.HTMLAttributes<HTMLImageElement>\n >]: React.ImgHTMLAttributes<HTMLImageElement>[index];\n};\n\nexport function setRef<T>(element: T, ref?: React.Ref<T>): void {\n if (ref) {\n if (typeof ref === 'function') {\n ref(element);\n } else {\n (ref as React.RefObject<T>).current = element;\n }\n }\n}\n\nexport function multiRef<T>(...refs: Array<React.Ref<T> | undefined>): React.RefObject<T | null> {\n let current: T | null = null;\n return {\n get current() {\n return current;\n },\n set current(element) {\n current = element;\n refs.forEach((ref) => ref && setRef(element, ref));\n },\n };\n}\n\nexport const stopPropagation = <T extends React.SyntheticEvent>(event: T): void =>\n event.stopPropagation();\n\nexport const preventDefault = <T extends React.SyntheticEvent>(event: T): void =>\n event.preventDefault();\n\nexport function addClassNameToElement(element: HTMLElement, className: string): void {\n const elementClassName = element.getAttribute('class') || '';\n const updatedClassName = `${elementClassName}${elementClassName ? ' ' : ''}${className}`;\n\n element.setAttribute('class', updatedClassName);\n}\n\nexport function removeClassNameFromElement(element: HTMLElement, classNameToRemove: string): void {\n const classNamesArray = (element.getAttribute('class') || '').split(/\\s+/);\n const elementIndexToRemove = classNamesArray.findIndex(\n (className) => className === classNameToRemove,\n );\n if (elementIndexToRemove === -1) {\n return;\n }\n classNamesArray.splice(elementIndexToRemove, 1);\n\n element.setAttribute('class', classNamesArray.join(' '));\n}\n\ntype ExcludeKeysWithUndefined<T> = {\n [P in keyof T]?: Exclude<T[P], undefined>;\n};\n\nexport const excludeKeysWithUndefined = <T extends Record<string | number | symbol, any>>(\n obj: T,\n): ExcludeKeysWithUndefined<T> => {\n const filteredObj: ExcludeKeysWithUndefined<T> = {};\n for (const key in obj) {\n if (obj.hasOwnProperty(key) && obj[key] !== undefined) {\n filteredObj[key] = obj[key];\n }\n }\n return filteredObj;\n};\n\nexport const isDOMTypeElement = <\n P extends React.HTMLAttributes<T> | React.SVGAttributes<T>,\n T extends Element,\n>(\n element: React.ReactElement,\n): element is Omit<React.DOMElement<P, T>, 'ref'> & { ref?: React.Ref<T> | undefined } =>\n typeof element.type === 'string';\n\nexport function isValidNotReactFragmentElement(\n children: Parameters<typeof React.isValidElement>[0],\n): children is React.ReactElement<Record<PropertyKey, any>> {\n return (\n React.isValidElement(children) &&\n // @ts-expect-error: TS2339 $$typeof всегда symbol, в отличии от type, благодаря этому пропускаем лишние проверки на тип.\n children.$$typeof !== Symbol.for('react.fragment')\n );\n}\n\nexport function isForwardRefElement<\n P extends React.HTMLAttributes<T> | React.SVGAttributes<T>,\n T extends Element,\n>(\n children: Parameters<typeof React.isValidElement>[0],\n): children is Omit<React.DOMElement<P, T>, 'ref'> & { ref?: React.Ref<T> | undefined } {\n if (!React.isValidElement(children)) {\n return false;\n }\n\n // @ts-expect-error: TS2339 $$typeof всегда symbol, в отличии от type, благодаря этому пропускаем лишние проверки на тип.\n // черпаем вдохновение из react-is https://github.com/facebook/react/blob/d48dbb824985166ecb7b2959db03090a8593dce0/packages/react-is/src/ReactIs.js#L119-L121\n const typeOfOfType = children.type && children.type.$$typeof;\n return typeOfOfType === Symbol.for('react.forward_ref');\n}\n\n/**\n * При использовании пропа fetchPriority генерируется warning \"Invalid DOM property\" (версия React 18.*)\n * Ворнинга нет в React версии 19.*, поэтому пока поддерживаем 2 версии наименования\n */\nexport function getFetchPriorityProp(value: React.ImgHTMLAttributes<HTMLElement>['fetchPriority']):\n | {\n fetchPriority: 'high' | 'low' | 'auto' | undefined;\n }\n | {\n fetchpriority: 'high' | 'low' | 'auto' | undefined;\n } {\n if (React.version.startsWith('19')) {\n return { fetchPriority: value };\n }\n return { fetchpriority: value };\n}\n\n/*\n * [a11y]\n * Обрабатывает событие onkeydown\n * для кастомных доступных элементов:\n * - role=\"link\" (активация по Enter)\n * - role=\"button\" (активация по Space и Enter)\n */\nexport function clickByKeyboardHandler(event: React.KeyboardEvent<HTMLDivElement>): void {\n if (!isHTMLElement(event.target) || !shouldTriggerClickOnEnterOrSpace(event)) {\n return;\n }\n\n event.preventDefault();\n event.target.click?.();\n}\n"],"names":["React","shouldTriggerClickOnEnterOrSpace","isHTMLElement","setRef","element","ref","current","multiRef","refs","forEach","stopPropagation","event","preventDefault","addClassNameToElement","className","elementClassName","getAttribute","updatedClassName","setAttribute","removeClassNameFromElement","classNameToRemove","classNamesArray","split","elementIndexToRemove","findIndex","splice","join","excludeKeysWithUndefined","obj","filteredObj","key","hasOwnProperty","undefined","isDOMTypeElement","type","isValidNotReactFragmentElement","children","isValidElement","$$typeof","Symbol","for","isForwardRefElement","typeOfOfType","getFetchPriorityProp","value","version","startsWith","fetchPriority","fetchpriority","clickByKeyboardHandler","target","click"],"mappings":"AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,gCAAgC,QAAQ,qBAAkB;AACnE,SAASC,aAAa,QAAQ,WAAQ;AAStC,OAAO,SAASC,OAAUC,QAAU,EAAEC,GAAkB;IACtD,IAAIA,KAAK;QACP,IAAI,OAAOA,QAAQ,YAAY;YAC7BA,IAAID;QACN,OAAO;YACJC,IAA2BC,OAAO,GAAGF;QACxC;IACF;AACF;AAEA,OAAO,SAASG,SAAY,GAAGC,IAAqC;IAClE,IAAIF,UAAoB;IACxB,OAAO;QACL,IAAIA,WAAU;YACZ,OAAOA;QACT;QACA,IAAIA,SAAQF,QAAS;YACnBE,UAAUF;YACVI,KAAKC,OAAO,CAAC,CAACJ,MAAQA,OAAOF,OAAOC,SAASC;QAC/C;IACF;AACF;AAEA,OAAO,MAAMK,kBAAkB,CAAiCC,QAC9DA,MAAMD,eAAe,GAAG;AAE1B,OAAO,MAAME,iBAAiB,CAAiCD,QAC7DA,MAAMC,cAAc,GAAG;AAEzB,OAAO,SAASC,sBAAsBT,QAAoB,EAAEU,SAAiB;IAC3E,MAAMC,mBAAmBX,SAAQY,YAAY,CAAC,YAAY;IAC1D,MAAMC,mBAAmB,GAAGF,mBAAmBA,mBAAmB,MAAM,KAAKD,WAAW;IAExFV,SAAQc,YAAY,CAAC,SAASD;AAChC;AAEA,OAAO,SAASE,2BAA2Bf,QAAoB,EAAEgB,iBAAyB;IACxF,MAAMC,kBAAkB,AAACjB,CAAAA,SAAQY,YAAY,CAAC,YAAY,EAAC,EAAGM,KAAK,CAAC;IACpE,MAAMC,uBAAuBF,gBAAgBG,SAAS,CACpD,CAACV,YAAcA,cAAcM;IAE/B,IAAIG,yBAAyB,CAAC,GAAG;QAC/B;IACF;IACAF,gBAAgBI,MAAM,CAACF,sBAAsB;IAE7CnB,SAAQc,YAAY,CAAC,SAASG,gBAAgBK,IAAI,CAAC;AACrD;AAMA,OAAO,MAAMC,2BAA2B,CACtCC;IAEA,MAAMC,cAA2C,CAAC;IAClD,IAAK,MAAMC,OAAOF,IAAK;QACrB,IAAIA,IAAIG,cAAc,CAACD,QAAQF,GAAG,CAACE,IAAI,KAAKE,WAAW;YACrDH,WAAW,CAACC,IAAI,GAAGF,GAAG,CAACE,IAAI;QAC7B;IACF;IACA,OAAOD;AACT,EAAE;AAEF,OAAO,MAAMI,mBAAmB,CAI9B7B,WAEA,OAAOA,SAAQ8B,IAAI,KAAK,SAAS;AAEnC,OAAO,SAASC,+BACdC,QAAoD;IAEpD,OACEpC,MAAMqC,cAAc,CAACD,aACrB,yHAAyH;IACzHA,SAASE,QAAQ,KAAKC,OAAOC,GAAG,CAAC;AAErC;AAEA,OAAO,SAASC,oBAIdL,QAAoD;IAEpD,IAAI,CAACpC,MAAMqC,cAAc,CAACD,WAAW;QACnC,OAAO;IACT;IAEA,yHAAyH;IACzH,6JAA6J;IAC7J,MAAMM,eAAeN,SAASF,IAAI,IAAIE,SAASF,IAAI,CAACI,QAAQ;IAC5D,OAAOI,iBAAiBH,OAAOC,GAAG,CAAC;AACrC;AAEA;;;CAGC,GACD,OAAO,SAASG,qBAAqBC,KAA4D;IAO/F,IAAI5C,MAAM6C,OAAO,CAACC,UAAU,CAAC,OAAO;QAClC,OAAO;YAAEC,eAAeH;QAAM;IAChC;IACA,OAAO;QAAEI,eAAeJ;IAAM;AAChC;AAEA;;;;;;CAMC,GACD,OAAO,SAASK,uBAAuBtC,KAA0C;IAC/E,IAAI,CAACT,cAAcS,MAAMuC,MAAM,KAAK,CAACjD,iCAAiCU,QAAQ;QAC5E;IACF;IAEAA,MAAMC,cAAc;IACpBD,MAAMuC,MAAM,CAACC,KAAK;AACpB"}
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
--vkui--font_title1--font_weight--regular: 600;
|
|
43
43
|
--vkui--font_title2--font_size--regular: 20px;
|
|
44
44
|
--vkui--font_title2--line_height--regular: 24px;
|
|
45
|
-
--vkui--font_title2--font_weight--regular:
|
|
45
|
+
--vkui--font_title2--font_weight--regular: 500;
|
|
46
46
|
--vkui--font_title3--font_size--regular: 17px;
|
|
47
47
|
--vkui--font_title3--line_height--regular: 22px;
|
|
48
48
|
--vkui--font_title3--font_weight--regular: 600;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCalendar.d.ts","sourceRoot":"","sources":["../../src/hooks/useCalendar.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"useCalendar.d.ts","sourceRoot":"","sources":["../../src/hooks/useCalendar.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAIrE,MAAM,WAAW,uBACf,SAAQ,IAAI,CACV,aAAa,EACX,gBAAgB,GAChB,aAAa,GACb,aAAa,GACb,aAAa,GACb,aAAa,GACb,mBAAmB,GACnB,eAAe,GACf,aAAa,CAChB;IACD,KAAK,CAAC,EAAE,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;CAC1C;AAED,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,cAAc,EACd,WAAW,EACX,WAAW,EACX,WAAW,EACX,WAAW,GACZ,EAAE,uBAAuB,GAAG;IAC3B,QAAQ,EAAE,IAAI,CAAC;IACf,WAAW,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK,IAAI,CAAC;IACnC,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,UAAU,EAAE,IAAI,GAAG,SAAS,CAAC;IAC7B,aAAa,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC;IACtE,YAAY,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,OAAO,CAAC;IACrC,aAAa,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC;IAC1D,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;IAC3D,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;CAC3C,CAgHA"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
import {
|
|
2
|
+
import { isSameDate } from "@vkontakte/vkjs";
|
|
3
|
+
import { addMonths, startOfDay, subMonths } from "date-fns";
|
|
3
4
|
import { DEFAULT_MAX_YEAR, DEFAULT_MIN_YEAR, isDayMinMaxRestricted } from "../lib/calendar.js";
|
|
5
|
+
import { endOfDay } from "../lib/date.js";
|
|
4
6
|
export function useCalendar({ value, disablePast, disableFuture, shouldDisableDate, onHeaderChange, onNextMonth, onPrevMonth, minDateTime, maxDateTime }) {
|
|
5
7
|
var _ref;
|
|
6
8
|
const [viewDate, setViewDate] = React.useState((_ref = Array.isArray(value) ? value[0] : value) !== null && _ref !== void 0 ? _ref : new Date());
|
|
@@ -27,7 +29,7 @@ export function useCalendar({ value, disablePast, disableFuture, shouldDisableDa
|
|
|
27
29
|
}, [
|
|
28
30
|
onHeaderChange
|
|
29
31
|
]);
|
|
30
|
-
const isDayFocused = React.useCallback((day)=>Boolean(focusedDay &&
|
|
32
|
+
const isDayFocused = React.useCallback((day)=>Boolean(focusedDay && isSameDate(day, focusedDay)), [
|
|
31
33
|
focusedDay
|
|
32
34
|
]);
|
|
33
35
|
const isDayDisabled = React.useCallback((day, withTime)=>{
|
|
@@ -36,10 +38,10 @@ export function useCalendar({ value, disablePast, disableFuture, shouldDisableDa
|
|
|
36
38
|
return shouldDisableDate(day);
|
|
37
39
|
}
|
|
38
40
|
if (disableFuture) {
|
|
39
|
-
return
|
|
41
|
+
return startOfDay(day) > now;
|
|
40
42
|
}
|
|
41
43
|
if (disablePast) {
|
|
42
|
-
return
|
|
44
|
+
return endOfDay(day) < now;
|
|
43
45
|
}
|
|
44
46
|
if (minDateTime || maxDateTime) {
|
|
45
47
|
return isDayMinMaxRestricted(day, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/hooks/useCalendar.ts"],"sourcesContent":["import * as React from 'react';\nimport {
|
|
1
|
+
{"version":3,"sources":["../../src/hooks/useCalendar.ts"],"sourcesContent":["import * as React from 'react';\nimport { isSameDate } from '@vkontakte/vkjs';\nimport { addMonths, startOfDay, subMonths } from 'date-fns';\nimport type { CalendarProps } from '../components/Calendar/Calendar';\nimport { DEFAULT_MAX_YEAR, DEFAULT_MIN_YEAR, isDayMinMaxRestricted } from '../lib/calendar';\nimport { endOfDay } from '../lib/date';\n\nexport interface UseCalendarDependencies\n extends Pick<\n CalendarProps,\n | 'onHeaderChange'\n | 'onNextMonth'\n | 'onPrevMonth'\n | 'minDateTime'\n | 'maxDateTime'\n | 'shouldDisableDate'\n | 'disableFuture'\n | 'disablePast'\n > {\n value?: Array<Date | null> | Date | null;\n}\n\nexport function useCalendar({\n value,\n disablePast,\n disableFuture,\n shouldDisableDate,\n onHeaderChange,\n onNextMonth,\n onPrevMonth,\n minDateTime,\n maxDateTime,\n}: UseCalendarDependencies): {\n viewDate: Date;\n setViewDate: (value: Date) => void;\n setPrevMonth: () => void;\n setNextMonth: () => void;\n focusedDay: Date | undefined;\n setFocusedDay: React.Dispatch<React.SetStateAction<Date | undefined>>;\n isDayFocused: (day: Date) => boolean;\n isDayDisabled: (day: Date, withTime?: boolean) => boolean;\n isMonthDisabled: (month: number, year?: number) => boolean;\n isYearDisabled: (year: number) => boolean;\n} {\n const [viewDate, setViewDate] = React.useState(\n (Array.isArray(value) ? value[0] : value) ?? new Date(),\n );\n // соответствует дню, на котором сейчас есть фокус\n // меняется при переключении дней с помощью стрелок\n const [focusedDay, setFocusedDay] = React.useState<Date>();\n\n const setPrevMonth = React.useCallback(() => {\n onPrevMonth?.();\n setViewDate(subMonths(viewDate, 1));\n }, [viewDate, onPrevMonth]);\n const setNextMonth = React.useCallback(() => {\n onNextMonth?.();\n setViewDate(addMonths(viewDate, 1));\n }, [viewDate, onNextMonth]);\n\n const handleSetViewDate = React.useCallback(\n (value: Date) => {\n onHeaderChange?.(value);\n setViewDate(value);\n },\n [onHeaderChange],\n );\n\n const isDayFocused = React.useCallback(\n (day: Date) => Boolean(focusedDay && isSameDate(day, focusedDay)),\n [focusedDay],\n );\n\n const isDayDisabled = React.useCallback(\n (day: Date, withTime?: boolean) => {\n const now = new Date();\n if (shouldDisableDate) {\n return shouldDisableDate(day);\n }\n if (disableFuture) {\n return startOfDay(day) > now;\n }\n if (disablePast) {\n return endOfDay(day) < now;\n }\n if (minDateTime || maxDateTime) {\n return isDayMinMaxRestricted(day, { min: minDateTime, max: maxDateTime, withTime });\n }\n\n return false;\n },\n [disableFuture, disablePast, shouldDisableDate, minDateTime, maxDateTime],\n );\n\n const isMonthDisabled = React.useCallback(\n (month: number, year?: number): boolean => {\n const now = new Date();\n year = year || viewDate.getFullYear();\n const minMonth = minDateTime ? minDateTime.getMonth() : 0;\n const maxMonth = maxDateTime ? maxDateTime.getMonth() : 11;\n const minYear = minDateTime?.getFullYear() || DEFAULT_MIN_YEAR;\n const maxYear = maxDateTime?.getFullYear() || DEFAULT_MAX_YEAR;\n\n let isDisabled =\n year >= minYear && year <= maxYear\n ? (year === minYear && minMonth > month) || (year === maxYear && month > maxMonth)\n : true;\n\n if (disableFuture) {\n isDisabled =\n isDisabled ||\n (year === now.getFullYear() ? month > now.getMonth() : year > now.getFullYear());\n }\n if (disablePast) {\n isDisabled =\n isDisabled ||\n (year === now.getFullYear() ? month < now.getMonth() : year < now.getFullYear());\n }\n\n return isDisabled;\n },\n [disableFuture, disablePast, viewDate, minDateTime, maxDateTime],\n );\n\n const isYearDisabled = React.useCallback(\n (year: number): boolean => {\n const now = new Date();\n const minYear = minDateTime?.getFullYear() || DEFAULT_MIN_YEAR;\n const maxYear = maxDateTime?.getFullYear() || DEFAULT_MAX_YEAR;\n\n let isDisabled = minYear > year || year > maxYear;\n if (disableFuture) {\n isDisabled = isDisabled || year > now.getFullYear();\n }\n if (disablePast) {\n isDisabled = isDisabled || year < now.getFullYear();\n }\n\n return isDisabled;\n },\n [disableFuture, disablePast, minDateTime, maxDateTime],\n );\n\n return {\n viewDate,\n setViewDate: handleSetViewDate,\n setPrevMonth,\n setNextMonth,\n focusedDay,\n setFocusedDay,\n isDayFocused,\n isDayDisabled,\n isMonthDisabled,\n isYearDisabled,\n };\n}\n"],"names":["React","isSameDate","addMonths","startOfDay","subMonths","DEFAULT_MAX_YEAR","DEFAULT_MIN_YEAR","isDayMinMaxRestricted","endOfDay","useCalendar","value","disablePast","disableFuture","shouldDisableDate","onHeaderChange","onNextMonth","onPrevMonth","minDateTime","maxDateTime","Array","viewDate","setViewDate","useState","isArray","Date","focusedDay","setFocusedDay","setPrevMonth","useCallback","setNextMonth","handleSetViewDate","isDayFocused","day","Boolean","isDayDisabled","withTime","now","min","max","isMonthDisabled","month","year","getFullYear","minMonth","getMonth","maxMonth","minYear","maxYear","isDisabled","isYearDisabled"],"mappings":"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"}
|
|
@@ -22,5 +22,5 @@ export type UseFloatingResult<ReferenceElement extends HTMLElement = HTMLElement
|
|
|
22
22
|
anchorProps: ReferenceProps<ReferenceElement>;
|
|
23
23
|
component: React.ReactNode | null;
|
|
24
24
|
};
|
|
25
|
-
export declare const useFloatingElement: <ReferenceElement extends HTMLElement = HTMLElement, FloatingElement extends HTMLElement = HTMLElement>({ placement, arrow, arrowHeight, arrowPadding, sameWidth, offsetByMainAxis, offsetByCrossAxis, customMiddlewares, hideWhenReferenceHidden, disableFlipMiddleware, trigger, hoverDelay, closeAfterClick, disabled, disableInteractive, disableCloseOnClickOutside, disableCloseOnEscKey, defaultShown, shown: shownProp, onShownChange, onShownChanged, strategy, onReferenceHiddenChange, onPlacementChange, renderFloatingComponent, externalFloatingElementRef, remapReferenceProps, }: UseFloatingElementProps<FloatingElement, ReferenceElement>) => UseFloatingResult<ReferenceElement>;
|
|
25
|
+
export declare const useFloatingElement: <ReferenceElement extends HTMLElement = HTMLElement, FloatingElement extends HTMLElement = HTMLElement>({ placement, arrow, arrowHeight, arrowPadding, sameWidth, offsetByMainAxis, offsetByCrossAxis, customMiddlewares, hideWhenReferenceHidden, disableFlipMiddleware, disableShiftMiddleware, trigger, hoverDelay, closeAfterClick, disabled, disableInteractive, disableCloseOnClickOutside, disableCloseOnEscKey, defaultShown, shown: shownProp, onShownChange, onShownChanged, strategy, onReferenceHiddenChange, onPlacementChange, renderFloatingComponent, externalFloatingElementRef, remapReferenceProps, }: UseFloatingElementProps<FloatingElement, ReferenceElement>) => UseFloatingResult<ReferenceElement>;
|
|
26
26
|
//# sourceMappingURL=useFloatingElement.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFloatingElement.d.ts","sourceRoot":"","sources":["../../src/hooks/useFloatingElement.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,KAAK,GAAG,EAAW,MAAM,OAAO,CAAC;AAC1C,OAAO,EACL,KAAK,iBAAiB,EAEtB,KAAK,sCAAsC,EAE3C,KAAK,gCAAgC,EACrC,KAAK,iCAAiC,EAEvC,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,mDAAmD,CAAC;AAKxF,MAAM,MAAM,sBAAsB,CAAC,eAAe,SAAS,WAAW,GAAG,WAAW,IAAI,IAAI,CAC1F,iCAAiC,EAC/B,OAAO,GACP,YAAY,GACZ,eAAe,GACf,gBAAgB,GAChB,SAAS,GACT,gBAAgB,GAChB,WAAW,CACd,GAAG;IACF,WAAW,EAAE,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IACxC,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC,CAAC;CAC1E,CAAC;AAEF,MAAM,MAAM,yBAAyB,CAAC,eAAe,SAAS,WAAW,GAAG,WAAW,IAAI,CACzF,KAAK,EAAE,sBAAsB,CAAC,eAAe,CAAC,KAC3C,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;AAE5B,MAAM,MAAM,qBAAqB,CAAC,gBAAgB,SAAS,WAAW,GAAG,WAAW,IAAI,CACtF,KAAK,EAAE,cAAc,CAAC,gBAAgB,CAAC,GAAG;IAAE,KAAK,EAAE,OAAO,CAAA;CAAE,KACzD,cAAc,CAAC,gBAAgB,CAAC,CAAC;AAEtC,MAAM,MAAM,uBAAuB,CACjC,eAAe,SAAS,WAAW,GAAG,WAAW,EACjD,gBAAgB,SAAS,WAAW,GAAG,WAAW,IAChD,IAAI,CAAC,sCAAsC,EAAE,UAAU,CAAC,GAC1D,IAAI,CAAC,gCAAgC,EAAE,WAAW,CAAC,GAAG;IACpD,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,uBAAuB,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACpD,uBAAuB,EAAE,yBAAyB,CAAC,eAAe,CAAC,CAAC;IACpE,mBAAmB,CAAC,EAAE,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;IAC9D,0BAA0B,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;CACzD,CAAC;AAEJ,MAAM,MAAM,iBAAiB,CAAC,gBAAgB,SAAS,WAAW,GAAG,WAAW,IAAI;IAClF,SAAS,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC;IACjC,WAAW,EAAE,cAAc,CAAC,gBAAgB,CAAC,CAAC;IAC9C,SAAS,EAAE,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;CACnC,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAC7B,gBAAgB,SAAS,WAAW,GAAG,WAAW,EAClD,eAAe,SAAS,WAAW,GAAG,WAAW,EACjD,
|
|
1
|
+
{"version":3,"file":"useFloatingElement.d.ts","sourceRoot":"","sources":["../../src/hooks/useFloatingElement.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,KAAK,GAAG,EAAW,MAAM,OAAO,CAAC;AAC1C,OAAO,EACL,KAAK,iBAAiB,EAEtB,KAAK,sCAAsC,EAE3C,KAAK,gCAAgC,EACrC,KAAK,iCAAiC,EAEvC,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,mDAAmD,CAAC;AAKxF,MAAM,MAAM,sBAAsB,CAAC,eAAe,SAAS,WAAW,GAAG,WAAW,IAAI,IAAI,CAC1F,iCAAiC,EAC/B,OAAO,GACP,YAAY,GACZ,eAAe,GACf,gBAAgB,GAChB,SAAS,GACT,gBAAgB,GAChB,WAAW,CACd,GAAG;IACF,WAAW,EAAE,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IACxC,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC,CAAC;CAC1E,CAAC;AAEF,MAAM,MAAM,yBAAyB,CAAC,eAAe,SAAS,WAAW,GAAG,WAAW,IAAI,CACzF,KAAK,EAAE,sBAAsB,CAAC,eAAe,CAAC,KAC3C,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;AAE5B,MAAM,MAAM,qBAAqB,CAAC,gBAAgB,SAAS,WAAW,GAAG,WAAW,IAAI,CACtF,KAAK,EAAE,cAAc,CAAC,gBAAgB,CAAC,GAAG;IAAE,KAAK,EAAE,OAAO,CAAA;CAAE,KACzD,cAAc,CAAC,gBAAgB,CAAC,CAAC;AAEtC,MAAM,MAAM,uBAAuB,CACjC,eAAe,SAAS,WAAW,GAAG,WAAW,EACjD,gBAAgB,SAAS,WAAW,GAAG,WAAW,IAChD,IAAI,CAAC,sCAAsC,EAAE,UAAU,CAAC,GAC1D,IAAI,CAAC,gCAAgC,EAAE,WAAW,CAAC,GAAG;IACpD,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,uBAAuB,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACpD,uBAAuB,EAAE,yBAAyB,CAAC,eAAe,CAAC,CAAC;IACpE,mBAAmB,CAAC,EAAE,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;IAC9D,0BAA0B,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;CACzD,CAAC;AAEJ,MAAM,MAAM,iBAAiB,CAAC,gBAAgB,SAAS,WAAW,GAAG,WAAW,IAAI;IAClF,SAAS,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC;IACjC,WAAW,EAAE,cAAc,CAAC,gBAAgB,CAAC,CAAC;IAC9C,SAAS,EAAE,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;CACnC,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAC7B,gBAAgB,SAAS,WAAW,GAAG,WAAW,EAClD,eAAe,SAAS,WAAW,GAAG,WAAW,EACjD,kfAkCC,uBAAuB,CACxB,eAAe,EACf,gBAAgB,CACjB,KAAG,iBAAiB,CAAC,gBAAgB,CA6ErC,CAAC"}
|
|
@@ -7,7 +7,7 @@ import { useReferenceHiddenChangeCallback } from "../lib/floating/useReferenceHi
|
|
|
7
7
|
import { useExternRef } from "./useExternRef.js";
|
|
8
8
|
import { useGlobalEscKeyDown } from "./useGlobalEscKeyDown.js";
|
|
9
9
|
export const useFloatingElement = ({ // useFloatingMiddlewaresBootstrap
|
|
10
|
-
placement = 'bottom-start', arrow, arrowHeight, arrowPadding, sameWidth, offsetByMainAxis = 0, offsetByCrossAxis = 0, customMiddlewares, hideWhenReferenceHidden, disableFlipMiddleware = false, // useFloatingWithInteractions
|
|
10
|
+
placement = 'bottom-start', arrow, arrowHeight, arrowPadding, sameWidth, offsetByMainAxis = 0, offsetByCrossAxis = 0, customMiddlewares, hideWhenReferenceHidden, disableFlipMiddleware = false, disableShiftMiddleware = false, // useFloatingWithInteractions
|
|
11
11
|
trigger, hoverDelay, closeAfterClick, disabled, disableInteractive, disableCloseOnClickOutside, disableCloseOnEscKey, defaultShown, shown: shownProp, onShownChange, onShownChanged, strategy, onReferenceHiddenChange, onPlacementChange, renderFloatingComponent, externalFloatingElementRef, remapReferenceProps })=>{
|
|
12
12
|
const [arrowRef, setArrowRef] = React.useState(null);
|
|
13
13
|
const { middlewares, strictPlacement } = useFloatingMiddlewaresBootstrap({
|
|
@@ -21,7 +21,8 @@ trigger, hoverDelay, closeAfterClick, disabled, disableInteractive, disableClose
|
|
|
21
21
|
arrowRef,
|
|
22
22
|
arrowPadding,
|
|
23
23
|
arrowHeight,
|
|
24
|
-
disableFlipMiddleware
|
|
24
|
+
disableFlipMiddleware,
|
|
25
|
+
disableShiftMiddleware
|
|
25
26
|
});
|
|
26
27
|
const { placement: resolvedPlacement, shown, willBeHide, refs, referenceProps, floatingProps, middlewareData, onClose, onRestoreFocus, onEscapeKeyDown } = useFloatingWithInteractions({
|
|
27
28
|
middlewares,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/hooks/useFloatingElement.tsx"],"sourcesContent":["import * as React from 'react';\nimport { type Ref, useMemo } from 'react';\nimport {\n type OnPlacementChange,\n useFloatingMiddlewaresBootstrap,\n type UseFloatingMiddlewaresBootstrapOptions,\n useFloatingWithInteractions,\n type UseFloatingWithInteractionsProps,\n type UseFloatingWithInteractionsReturn,\n usePlacementChangeCallback,\n} from '../lib/floating';\nimport { type ReferenceProps } from '../lib/floating/useFloatingWithInteractions/types';\nimport { useReferenceHiddenChangeCallback } from '../lib/floating/useReferenceHiddenChangeCallback';\nimport { useExternRef } from './useExternRef';\nimport { useGlobalEscKeyDown } from './useGlobalEscKeyDown';\n\nexport type FloatingComponentProps<FloatingElement extends HTMLElement = HTMLElement> = Pick<\n UseFloatingWithInteractionsReturn,\n | 'shown'\n | 'willBeHide'\n | 'floatingProps'\n | 'middlewareData'\n | 'onClose'\n | 'onRestoreFocus'\n | 'placement'\n> & {\n floatingRef: React.Ref<FloatingElement>;\n setArrowRef: React.Dispatch<React.SetStateAction<HTMLDivElement | null>>;\n};\n\nexport type RenderFloatingComponentFn<FloatingElement extends HTMLElement = HTMLElement> = (\n props: FloatingComponentProps<FloatingElement>,\n) => React.ReactNode | null;\n\nexport type RemapReferencePropsFn<ReferenceElement extends HTMLElement = HTMLElement> = (\n props: ReferenceProps<ReferenceElement> & { shown: boolean },\n) => ReferenceProps<ReferenceElement>;\n\nexport type UseFloatingElementProps<\n FloatingElement extends HTMLElement = HTMLElement,\n ReferenceElement extends HTMLElement = HTMLElement,\n> = Omit<UseFloatingMiddlewaresBootstrapOptions, 'arrowRef'> &\n Omit<UseFloatingWithInteractionsProps, 'placement'> & {\n onPlacementChange?: OnPlacementChange;\n onReferenceHiddenChange?: (hidden: boolean) => void;\n renderFloatingComponent: RenderFloatingComponentFn<FloatingElement>;\n remapReferenceProps?: RemapReferencePropsFn<ReferenceElement>;\n externalFloatingElementRef?: React.Ref<FloatingElement>;\n };\n\nexport type UseFloatingResult<ReferenceElement extends HTMLElement = HTMLElement> = {\n anchorRef: Ref<ReferenceElement>;\n anchorProps: ReferenceProps<ReferenceElement>;\n component: React.ReactNode | null;\n};\n\nexport const useFloatingElement = <\n ReferenceElement extends HTMLElement = HTMLElement,\n FloatingElement extends HTMLElement = HTMLElement,\n>({\n // useFloatingMiddlewaresBootstrap\n placement = 'bottom-start',\n arrow,\n arrowHeight,\n arrowPadding,\n sameWidth,\n offsetByMainAxis = 0,\n offsetByCrossAxis = 0,\n customMiddlewares,\n hideWhenReferenceHidden,\n disableFlipMiddleware = false,\n\n // useFloatingWithInteractions\n trigger,\n hoverDelay,\n closeAfterClick,\n disabled,\n disableInteractive,\n disableCloseOnClickOutside,\n disableCloseOnEscKey,\n defaultShown,\n shown: shownProp,\n onShownChange,\n onShownChanged,\n strategy,\n onReferenceHiddenChange,\n\n onPlacementChange,\n\n renderFloatingComponent,\n externalFloatingElementRef,\n remapReferenceProps,\n}: UseFloatingElementProps<\n FloatingElement,\n ReferenceElement\n>): UseFloatingResult<ReferenceElement> => {\n const [arrowRef, setArrowRef] = React.useState<HTMLDivElement | null>(null);\n\n const { middlewares, strictPlacement } = useFloatingMiddlewaresBootstrap({\n placement,\n offsetByMainAxis,\n offsetByCrossAxis,\n customMiddlewares,\n hideWhenReferenceHidden,\n sameWidth,\n arrow,\n arrowRef,\n arrowPadding,\n arrowHeight,\n disableFlipMiddleware,\n });\n\n const {\n placement: resolvedPlacement,\n shown,\n willBeHide,\n refs,\n referenceProps,\n floatingProps,\n middlewareData,\n onClose,\n onRestoreFocus,\n onEscapeKeyDown,\n } = useFloatingWithInteractions({\n middlewares,\n strategy,\n placement: strictPlacement,\n trigger,\n hoverDelay,\n closeAfterClick,\n disabled,\n disableInteractive,\n disableCloseOnClickOutside,\n disableCloseOnEscKey,\n defaultShown,\n shown: shownProp,\n onShownChange,\n onShownChanged,\n });\n\n const resultRef = useExternRef<FloatingElement>(externalFloatingElementRef, refs.setFloating);\n\n usePlacementChangeCallback(placement, resolvedPlacement, onPlacementChange);\n\n useReferenceHiddenChangeCallback(middlewareData.hide, onReferenceHiddenChange);\n\n const component = renderFloatingComponent({\n shown,\n willBeHide,\n floatingProps,\n floatingRef: resultRef,\n middlewareData,\n placement: resolvedPlacement,\n onClose,\n onRestoreFocus,\n setArrowRef,\n });\n\n useGlobalEscKeyDown(shown, onEscapeKeyDown);\n\n const remappedReferenceProps = useMemo(\n () =>\n remapReferenceProps ? remapReferenceProps({ ...referenceProps, shown }) : referenceProps,\n [remapReferenceProps, shown, referenceProps],\n );\n\n return {\n anchorRef: refs.setReference,\n anchorProps: remappedReferenceProps,\n component,\n };\n};\n"],"names":["React","useMemo","useFloatingMiddlewaresBootstrap","useFloatingWithInteractions","usePlacementChangeCallback","useReferenceHiddenChangeCallback","useExternRef","useGlobalEscKeyDown","useFloatingElement","placement","arrow","arrowHeight","arrowPadding","sameWidth","offsetByMainAxis","offsetByCrossAxis","customMiddlewares","hideWhenReferenceHidden","disableFlipMiddleware","trigger","hoverDelay","closeAfterClick","disabled","disableInteractive","disableCloseOnClickOutside","disableCloseOnEscKey","defaultShown","shown","shownProp","onShownChange","onShownChanged","strategy","onReferenceHiddenChange","onPlacementChange","renderFloatingComponent","externalFloatingElementRef","remapReferenceProps","arrowRef","setArrowRef","useState","middlewares","strictPlacement","resolvedPlacement","willBeHide","refs","referenceProps","floatingProps","middlewareData","onClose","onRestoreFocus","onEscapeKeyDown","resultRef","setFloating","hide","component","floatingRef","remappedReferenceProps","anchorRef","setReference","anchorProps"],"mappings":";;AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAAmBC,OAAO,QAAQ,QAAQ;AAC1C,SAEEC,+BAA+B,EAE/BC,2BAA2B,EAG3BC,0BAA0B,QACrB,2BAAkB;AAEzB,SAASC,gCAAgC,QAAQ,sDAAmD;AACpG,SAASC,YAAY,QAAQ,oBAAiB;AAC9C,SAASC,mBAAmB,QAAQ,2BAAwB;AA0C5D,OAAO,MAAMC,qBAAqB,CAGhC,EACA,kCAAkC;AAClCC,YAAY,cAAc,EAC1BC,KAAK,EACLC,WAAW,EACXC,YAAY,EACZC,SAAS,EACTC,mBAAmB,CAAC,EACpBC,oBAAoB,CAAC,EACrBC,iBAAiB,EACjBC,uBAAuB,EACvBC,wBAAwB,KAAK,
|
|
1
|
+
{"version":3,"sources":["../../src/hooks/useFloatingElement.tsx"],"sourcesContent":["import * as React from 'react';\nimport { type Ref, useMemo } from 'react';\nimport {\n type OnPlacementChange,\n useFloatingMiddlewaresBootstrap,\n type UseFloatingMiddlewaresBootstrapOptions,\n useFloatingWithInteractions,\n type UseFloatingWithInteractionsProps,\n type UseFloatingWithInteractionsReturn,\n usePlacementChangeCallback,\n} from '../lib/floating';\nimport { type ReferenceProps } from '../lib/floating/useFloatingWithInteractions/types';\nimport { useReferenceHiddenChangeCallback } from '../lib/floating/useReferenceHiddenChangeCallback';\nimport { useExternRef } from './useExternRef';\nimport { useGlobalEscKeyDown } from './useGlobalEscKeyDown';\n\nexport type FloatingComponentProps<FloatingElement extends HTMLElement = HTMLElement> = Pick<\n UseFloatingWithInteractionsReturn,\n | 'shown'\n | 'willBeHide'\n | 'floatingProps'\n | 'middlewareData'\n | 'onClose'\n | 'onRestoreFocus'\n | 'placement'\n> & {\n floatingRef: React.Ref<FloatingElement>;\n setArrowRef: React.Dispatch<React.SetStateAction<HTMLDivElement | null>>;\n};\n\nexport type RenderFloatingComponentFn<FloatingElement extends HTMLElement = HTMLElement> = (\n props: FloatingComponentProps<FloatingElement>,\n) => React.ReactNode | null;\n\nexport type RemapReferencePropsFn<ReferenceElement extends HTMLElement = HTMLElement> = (\n props: ReferenceProps<ReferenceElement> & { shown: boolean },\n) => ReferenceProps<ReferenceElement>;\n\nexport type UseFloatingElementProps<\n FloatingElement extends HTMLElement = HTMLElement,\n ReferenceElement extends HTMLElement = HTMLElement,\n> = Omit<UseFloatingMiddlewaresBootstrapOptions, 'arrowRef'> &\n Omit<UseFloatingWithInteractionsProps, 'placement'> & {\n onPlacementChange?: OnPlacementChange;\n onReferenceHiddenChange?: (hidden: boolean) => void;\n renderFloatingComponent: RenderFloatingComponentFn<FloatingElement>;\n remapReferenceProps?: RemapReferencePropsFn<ReferenceElement>;\n externalFloatingElementRef?: React.Ref<FloatingElement>;\n };\n\nexport type UseFloatingResult<ReferenceElement extends HTMLElement = HTMLElement> = {\n anchorRef: Ref<ReferenceElement>;\n anchorProps: ReferenceProps<ReferenceElement>;\n component: React.ReactNode | null;\n};\n\nexport const useFloatingElement = <\n ReferenceElement extends HTMLElement = HTMLElement,\n FloatingElement extends HTMLElement = HTMLElement,\n>({\n // useFloatingMiddlewaresBootstrap\n placement = 'bottom-start',\n arrow,\n arrowHeight,\n arrowPadding,\n sameWidth,\n offsetByMainAxis = 0,\n offsetByCrossAxis = 0,\n customMiddlewares,\n hideWhenReferenceHidden,\n disableFlipMiddleware = false,\n disableShiftMiddleware = false,\n\n // useFloatingWithInteractions\n trigger,\n hoverDelay,\n closeAfterClick,\n disabled,\n disableInteractive,\n disableCloseOnClickOutside,\n disableCloseOnEscKey,\n defaultShown,\n shown: shownProp,\n onShownChange,\n onShownChanged,\n strategy,\n onReferenceHiddenChange,\n\n onPlacementChange,\n\n renderFloatingComponent,\n externalFloatingElementRef,\n remapReferenceProps,\n}: UseFloatingElementProps<\n FloatingElement,\n ReferenceElement\n>): UseFloatingResult<ReferenceElement> => {\n const [arrowRef, setArrowRef] = React.useState<HTMLDivElement | null>(null);\n\n const { middlewares, strictPlacement } = useFloatingMiddlewaresBootstrap({\n placement,\n offsetByMainAxis,\n offsetByCrossAxis,\n customMiddlewares,\n hideWhenReferenceHidden,\n sameWidth,\n arrow,\n arrowRef,\n arrowPadding,\n arrowHeight,\n disableFlipMiddleware,\n disableShiftMiddleware,\n });\n\n const {\n placement: resolvedPlacement,\n shown,\n willBeHide,\n refs,\n referenceProps,\n floatingProps,\n middlewareData,\n onClose,\n onRestoreFocus,\n onEscapeKeyDown,\n } = useFloatingWithInteractions({\n middlewares,\n strategy,\n placement: strictPlacement,\n trigger,\n hoverDelay,\n closeAfterClick,\n disabled,\n disableInteractive,\n disableCloseOnClickOutside,\n disableCloseOnEscKey,\n defaultShown,\n shown: shownProp,\n onShownChange,\n onShownChanged,\n });\n\n const resultRef = useExternRef<FloatingElement>(externalFloatingElementRef, refs.setFloating);\n\n usePlacementChangeCallback(placement, resolvedPlacement, onPlacementChange);\n\n useReferenceHiddenChangeCallback(middlewareData.hide, onReferenceHiddenChange);\n\n const component = renderFloatingComponent({\n shown,\n willBeHide,\n floatingProps,\n floatingRef: resultRef,\n middlewareData,\n placement: resolvedPlacement,\n onClose,\n onRestoreFocus,\n setArrowRef,\n });\n\n useGlobalEscKeyDown(shown, onEscapeKeyDown);\n\n const remappedReferenceProps = useMemo(\n () =>\n remapReferenceProps ? remapReferenceProps({ ...referenceProps, shown }) : referenceProps,\n [remapReferenceProps, shown, referenceProps],\n );\n\n return {\n anchorRef: refs.setReference,\n anchorProps: remappedReferenceProps,\n component,\n };\n};\n"],"names":["React","useMemo","useFloatingMiddlewaresBootstrap","useFloatingWithInteractions","usePlacementChangeCallback","useReferenceHiddenChangeCallback","useExternRef","useGlobalEscKeyDown","useFloatingElement","placement","arrow","arrowHeight","arrowPadding","sameWidth","offsetByMainAxis","offsetByCrossAxis","customMiddlewares","hideWhenReferenceHidden","disableFlipMiddleware","disableShiftMiddleware","trigger","hoverDelay","closeAfterClick","disabled","disableInteractive","disableCloseOnClickOutside","disableCloseOnEscKey","defaultShown","shown","shownProp","onShownChange","onShownChanged","strategy","onReferenceHiddenChange","onPlacementChange","renderFloatingComponent","externalFloatingElementRef","remapReferenceProps","arrowRef","setArrowRef","useState","middlewares","strictPlacement","resolvedPlacement","willBeHide","refs","referenceProps","floatingProps","middlewareData","onClose","onRestoreFocus","onEscapeKeyDown","resultRef","setFloating","hide","component","floatingRef","remappedReferenceProps","anchorRef","setReference","anchorProps"],"mappings":";;AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAAmBC,OAAO,QAAQ,QAAQ;AAC1C,SAEEC,+BAA+B,EAE/BC,2BAA2B,EAG3BC,0BAA0B,QACrB,2BAAkB;AAEzB,SAASC,gCAAgC,QAAQ,sDAAmD;AACpG,SAASC,YAAY,QAAQ,oBAAiB;AAC9C,SAASC,mBAAmB,QAAQ,2BAAwB;AA0C5D,OAAO,MAAMC,qBAAqB,CAGhC,EACA,kCAAkC;AAClCC,YAAY,cAAc,EAC1BC,KAAK,EACLC,WAAW,EACXC,YAAY,EACZC,SAAS,EACTC,mBAAmB,CAAC,EACpBC,oBAAoB,CAAC,EACrBC,iBAAiB,EACjBC,uBAAuB,EACvBC,wBAAwB,KAAK,EAC7BC,yBAAyB,KAAK,EAE9B,8BAA8B;AAC9BC,OAAO,EACPC,UAAU,EACVC,eAAe,EACfC,QAAQ,EACRC,kBAAkB,EAClBC,0BAA0B,EAC1BC,oBAAoB,EACpBC,YAAY,EACZC,OAAOC,SAAS,EAChBC,aAAa,EACbC,cAAc,EACdC,QAAQ,EACRC,uBAAuB,EAEvBC,iBAAiB,EAEjBC,uBAAuB,EACvBC,0BAA0B,EAC1BC,mBAAmB,EAIpB;IACC,MAAM,CAACC,UAAUC,YAAY,GAAGvC,MAAMwC,QAAQ,CAAwB;IAEtE,MAAM,EAAEC,WAAW,EAAEC,eAAe,EAAE,GAAGxC,gCAAgC;QACvEO;QACAK;QACAC;QACAC;QACAC;QACAJ;QACAH;QACA4B;QACA1B;QACAD;QACAO;QACAC;IACF;IAEA,MAAM,EACJV,WAAWkC,iBAAiB,EAC5Bf,KAAK,EACLgB,UAAU,EACVC,IAAI,EACJC,cAAc,EACdC,aAAa,EACbC,cAAc,EACdC,OAAO,EACPC,cAAc,EACdC,eAAe,EAChB,GAAGhD,4BAA4B;QAC9BsC;QACAT;QACAvB,WAAWiC;QACXtB;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC,OAAOC;QACPC;QACAC;IACF;IAEA,MAAMqB,YAAY9C,aAA8B8B,4BAA4BS,KAAKQ,WAAW;IAE5FjD,2BAA2BK,WAAWkC,mBAAmBT;IAEzD7B,iCAAiC2C,eAAeM,IAAI,EAAErB;IAEtD,MAAMsB,YAAYpB,wBAAwB;QACxCP;QACAgB;QACAG;QACAS,aAAaJ;QACbJ;QACAvC,WAAWkC;QACXM;QACAC;QACAX;IACF;IAEAhC,oBAAoBqB,OAAOuB;IAE3B,MAAMM,yBAAyBxD,QAC7B,IACEoC,sBAAsBA,oBAAoB,wCAAKS;YAAgBlB;cAAWkB,gBAC5E;QAACT;QAAqBT;QAAOkB;KAAe;IAG9C,OAAO;QACLY,WAAWb,KAAKc,YAAY;QAC5BC,aAAaH;QACbF;IACF;AACF,EAAE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTodayDate.d.ts","sourceRoot":"","sources":["../../src/hooks/useTodayDate.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useTodayDate.d.ts","sourceRoot":"","sources":["../../src/hooks/useTodayDate.ts"],"names":[],"mappings":"AAKA;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,yBAAyB,UAAQ,GAAG,IAAI,CAiDpE"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
import {
|
|
2
|
+
import { isSameDate } from "@vkontakte/vkjs";
|
|
3
|
+
import { differenceInMilliseconds, startOfTomorrow } from "date-fns";
|
|
3
4
|
import { useDOM } from "../lib/dom.js";
|
|
4
5
|
/**
|
|
5
6
|
* Опционально обновляемая дата сегодняшнего дня
|
|
@@ -28,7 +29,7 @@ import { useDOM } from "../lib/dom.js";
|
|
|
28
29
|
setTodayDate(new Date());
|
|
29
30
|
}, timeToDayChange);
|
|
30
31
|
// Если todayDate не обновился в таймаут - обновить при заходе на вкладку
|
|
31
|
-
if (!
|
|
32
|
+
if (!isSameDate(todayDate, now)) {
|
|
32
33
|
setTodayDate(now);
|
|
33
34
|
}
|
|
34
35
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/hooks/useTodayDate.ts"],"sourcesContent":["import * as React from 'react';\nimport { differenceInMilliseconds,
|
|
1
|
+
{"version":3,"sources":["../../src/hooks/useTodayDate.ts"],"sourcesContent":["import * as React from 'react';\nimport { isSameDate } from '@vkontakte/vkjs';\nimport { differenceInMilliseconds, startOfTomorrow } from 'date-fns';\nimport { useDOM } from '../lib/dom';\n\n/**\n * Опционально обновляемая дата сегодняшнего дня\n *\n * Дата - сегодня (в соответствии с системным временем)\n *\n * Часы, минуты, секунды, миллисекунды - произвольные\n *\n * @param listenDayChangesForUpdate - флаг по которому определяется, будет ли создаваться подписка на смену календарного дня\n */\nexport function useTodayDate(listenDayChangesForUpdate = false): Date {\n const { document, window } = useDOM();\n const [todayDate, setTodayDate] = React.useState(() => new Date());\n\n React.useEffect(\n function setupTodaysDateRecalculationListener() {\n if (!listenDayChangesForUpdate || !document || !window) {\n return;\n }\n\n let timeout: number | undefined = undefined;\n\n const recalcTimeout = () => {\n if (document.visibilityState === 'visible') {\n const now = new Date();\n\n const timeToDayChange = differenceInMilliseconds(startOfTomorrow(), now);\n\n // Удаляем старый таймаут\n window.clearTimeout(timeout);\n\n // Создаем новый таймаут\n timeout = window.setTimeout(() => {\n setTodayDate(new Date());\n }, timeToDayChange);\n\n // Если todayDate не обновился в таймаут - обновить при заходе на вкладку\n if (!isSameDate(todayDate, now)) {\n setTodayDate(now);\n }\n }\n };\n\n recalcTimeout();\n\n // Создаем слушатель visibilitychange, чтобы предотвратить пропуск обновления стейта после заморозки вкладки\n // Если человек ее долго не трогал или закрывал крышку ноута и тп\n // https://developer.chrome.com/blog/page-lifecycle-api/\n document.addEventListener('visibilitychange', recalcTimeout);\n\n return () => {\n window.clearTimeout(timeout);\n document.removeEventListener('visibilitychange', recalcTimeout);\n };\n },\n [document, listenDayChangesForUpdate, todayDate, window],\n );\n\n return todayDate;\n}\n"],"names":["React","isSameDate","differenceInMilliseconds","startOfTomorrow","useDOM","useTodayDate","listenDayChangesForUpdate","document","window","todayDate","setTodayDate","useState","Date","useEffect","setupTodaysDateRecalculationListener","timeout","undefined","recalcTimeout","visibilityState","now","timeToDayChange","clearTimeout","setTimeout","addEventListener","removeEventListener"],"mappings":"AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,wBAAwB,EAAEC,eAAe,QAAQ,WAAW;AACrE,SAASC,MAAM,QAAQ,gBAAa;AAEpC;;;;;;;;CAQC,GACD,OAAO,SAASC,aAAaC,4BAA4B,KAAK;IAC5D,MAAM,EAAEC,QAAQ,EAAEC,MAAM,EAAE,GAAGJ;IAC7B,MAAM,CAACK,WAAWC,aAAa,GAAGV,MAAMW,QAAQ,CAAC,IAAM,IAAIC;IAE3DZ,MAAMa,SAAS,CACb,SAASC;QACP,IAAI,CAACR,6BAA6B,CAACC,YAAY,CAACC,QAAQ;YACtD;QACF;QAEA,IAAIO,UAA8BC;QAElC,MAAMC,gBAAgB;YACpB,IAAIV,SAASW,eAAe,KAAK,WAAW;gBAC1C,MAAMC,MAAM,IAAIP;gBAEhB,MAAMQ,kBAAkBlB,yBAAyBC,mBAAmBgB;gBAEpE,yBAAyB;gBACzBX,OAAOa,YAAY,CAACN;gBAEpB,wBAAwB;gBACxBA,UAAUP,OAAOc,UAAU,CAAC;oBAC1BZ,aAAa,IAAIE;gBACnB,GAAGQ;gBAEH,yEAAyE;gBACzE,IAAI,CAACnB,WAAWQ,WAAWU,MAAM;oBAC/BT,aAAaS;gBACf;YACF;QACF;QAEAF;QAEA,4GAA4G;QAC5G,iEAAiE;QACjE,wDAAwD;QACxDV,SAASgB,gBAAgB,CAAC,oBAAoBN;QAE9C,OAAO;YACLT,OAAOa,YAAY,CAACN;YACpBR,SAASiB,mBAAmB,CAAC,oBAAoBP;QACnD;IACF,GACA;QAACV;QAAUD;QAA2BG;QAAWD;KAAO;IAG1D,OAAOC;AACT"}
|
package/dist/index.d.ts
CHANGED
|
@@ -254,8 +254,9 @@ export { DropZone } from './components/DropZone/DropZone';
|
|
|
254
254
|
export type { DropZoneProps } from './components/DropZone/DropZone';
|
|
255
255
|
export { Input } from './components/Input/Input';
|
|
256
256
|
export type { InputProps } from './components/Input/Input';
|
|
257
|
+
export type { ChipProps } from './components/ChipsInputBase/Chip/Chip';
|
|
257
258
|
export { Chip } from './components/ChipsInputBase/Chip/Chip';
|
|
258
|
-
export type {
|
|
259
|
+
export type { ChipOption, RenderChipProps, ChipOptionValue, ChipOptionLabel, } from './components/ChipsInputBase/types';
|
|
259
260
|
export { ChipsInput } from './components/ChipsInput/ChipsInput';
|
|
260
261
|
export type { ChipsInputProps } from './components/ChipsInput/ChipsInput';
|
|
261
262
|
export { ChipsSelect } from './components/ChipsSelect/ChipsSelect';
|
|
@@ -280,7 +281,8 @@ export type { SelectMimicryProps } from './components/SelectMimicry/SelectMimicr
|
|
|
280
281
|
export { NativeSelect } from './components/NativeSelect/NativeSelect';
|
|
281
282
|
export type { NativeSelectProps } from './components/NativeSelect/NativeSelect';
|
|
282
283
|
export { CustomSelect } from './components/CustomSelect/CustomSelect';
|
|
283
|
-
export type { SelectProps,
|
|
284
|
+
export type { SelectProps, CustomSelectClearButtonProps, } from './components/CustomSelect/CustomSelect';
|
|
285
|
+
export type { CustomSelectOptionInterface, CustomSelectRenderOption, } from './components/CustomSelect/types';
|
|
284
286
|
export { CustomSelectOption } from './components/CustomSelectOption/CustomSelectOption';
|
|
285
287
|
export type { CustomSelectOptionProps } from './components/CustomSelectOption/CustomSelectOption';
|
|
286
288
|
export { SegmentedControl } from './components/SegmentedControl/SegmentedControl';
|