@vkontakte/vkui 7.5.4 → 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/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/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/types.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/types.ts +2 -45
- 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
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import { type ChangeEvent } from 'react';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { useStateWithPrev } from '../../../hooks/useStateWithPrev';
|
|
4
|
+
import {
|
|
5
|
+
type NativeSelectValue,
|
|
6
|
+
NOT_SELECTED,
|
|
7
|
+
remapFromNativeValueToSelectValue,
|
|
8
|
+
remapFromSelectValueToNativeValue,
|
|
9
|
+
type SelectValue,
|
|
10
|
+
} from '../../NativeSelect/NativeSelect';
|
|
11
|
+
import { type SelectProps } from '../CustomSelect';
|
|
12
|
+
|
|
13
|
+
/* eslint-disable jsdoc/require-jsdoc */
|
|
14
|
+
type UseSelectedOptionControllerProps = Pick<SelectProps, 'value' | 'defaultValue'> & {
|
|
15
|
+
isControlledOutside: boolean;
|
|
16
|
+
allowClearButton: boolean;
|
|
17
|
+
onChange?: (e: ChangeEvent<HTMLSelectElement>, newValue: SelectValue) => void;
|
|
18
|
+
};
|
|
19
|
+
/* eslint-enable jsdoc/require-jsdoc */
|
|
20
|
+
|
|
21
|
+
export function useSelectedOptionController({
|
|
22
|
+
value,
|
|
23
|
+
defaultValue,
|
|
24
|
+
isControlledOutside,
|
|
25
|
+
allowClearButton,
|
|
26
|
+
onChange,
|
|
27
|
+
}: UseSelectedOptionControllerProps) {
|
|
28
|
+
const [[nativeSelectValue, prevNativeSelectValue], setNativeSelectValue] =
|
|
29
|
+
useStateWithPrev<NativeSelectValue>(() => {
|
|
30
|
+
if (value !== undefined) {
|
|
31
|
+
return remapFromSelectValueToNativeValue(value);
|
|
32
|
+
}
|
|
33
|
+
if (defaultValue !== undefined) {
|
|
34
|
+
return remapFromSelectValueToNativeValue(defaultValue);
|
|
35
|
+
}
|
|
36
|
+
return NOT_SELECTED.NATIVE;
|
|
37
|
+
});
|
|
38
|
+
const nativeSelectValueRef = React.useRef<NativeSelectValue>(nativeSelectValue);
|
|
39
|
+
|
|
40
|
+
const [selectedOptionValue, setSelectedOptionValue] = React.useState<SelectValue>(() =>
|
|
41
|
+
remapFromNativeValueToSelectValue(nativeSelectValue),
|
|
42
|
+
);
|
|
43
|
+
|
|
44
|
+
const _setNativeSelectValue = React.useCallback(
|
|
45
|
+
(newValue: NativeSelectValue) => {
|
|
46
|
+
setNativeSelectValue(newValue);
|
|
47
|
+
nativeSelectValueRef.current = newValue;
|
|
48
|
+
},
|
|
49
|
+
[setNativeSelectValue],
|
|
50
|
+
);
|
|
51
|
+
|
|
52
|
+
React.useEffect(
|
|
53
|
+
function syncNativeSelectValueWithPropValue() {
|
|
54
|
+
if (value !== undefined) {
|
|
55
|
+
_setNativeSelectValue(remapFromSelectValueToNativeValue(value));
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
[value, _setNativeSelectValue],
|
|
59
|
+
);
|
|
60
|
+
|
|
61
|
+
React.useEffect(
|
|
62
|
+
function syncNativeSelectValueWithSelectedOptionValue() {
|
|
63
|
+
const remappedSelectedValue = remapFromSelectValueToNativeValue(selectedOptionValue);
|
|
64
|
+
if (nativeSelectValueRef.current !== remappedSelectedValue) {
|
|
65
|
+
setNativeSelectValue(remappedSelectedValue);
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
[selectedOptionValue, setNativeSelectValue],
|
|
69
|
+
);
|
|
70
|
+
|
|
71
|
+
const onNativeSelectChange: React.ChangeEventHandler<HTMLSelectElement> = (e) => {
|
|
72
|
+
// для ситуаций, когда в опциях value это string а value/defaultValue это number
|
|
73
|
+
// и наоборот, приводим значение nativeSelectValue из стейта к строке.
|
|
74
|
+
// ведь nativeSelect всегда возвращает string в onChange, а пользователь
|
|
75
|
+
// может использовать number для опций
|
|
76
|
+
//
|
|
77
|
+
// native select всегда возвращает string в качестве value в onChange
|
|
78
|
+
// Когда селект контролируемый, то пользователь, в onChange может сохранить в свой стейт строку (например '3'), хотя
|
|
79
|
+
// в качестве value опции может использовать число (3),
|
|
80
|
+
// тогда строчное значение value ('3') из стейта пользователя
|
|
81
|
+
// будет передано в CustomSelect, и после синхронизации nativeSelectValue (3) и props.value ('3') и после клика на уже выбранную опцию (3),
|
|
82
|
+
// когда nativeSelectValue обновится на значение опции (число 3),
|
|
83
|
+
// сравнение nativeSelectValue (3) и prevNativeSelectValue ('3') может не сработать лишь из-за того, что они в разных типах.
|
|
84
|
+
const convertedNativeSelectValue =
|
|
85
|
+
typeof nativeSelectValue === 'number' &&
|
|
86
|
+
(typeof value === 'string' || typeof prevNativeSelectValue === 'string')
|
|
87
|
+
? String(nativeSelectValue)
|
|
88
|
+
: nativeSelectValue;
|
|
89
|
+
|
|
90
|
+
const isCalledWithSameControlledOptionValue =
|
|
91
|
+
isControlledOutside &&
|
|
92
|
+
value === remapFromNativeValueToSelectValue(convertedNativeSelectValue);
|
|
93
|
+
|
|
94
|
+
const isNativeValueChanged =
|
|
95
|
+
convertedNativeSelectValue !== prevNativeSelectValue && prevNativeSelectValue !== undefined;
|
|
96
|
+
|
|
97
|
+
const isTriggeredByClearButton =
|
|
98
|
+
allowClearButton &&
|
|
99
|
+
// Проверяем, что новое значение NOT_SELECTED.NATIVE
|
|
100
|
+
nativeSelectValue === NOT_SELECTED.NATIVE &&
|
|
101
|
+
// Проверяем, что предыдущее значение не undefined(кейс с первой отрисовкой, когда предыдущего значения не было)
|
|
102
|
+
prevNativeSelectValue !== undefined &&
|
|
103
|
+
// Проверяем, что предыдущее значение не NOT_SELECTED.NATIVE(если до этого было уже сброшенное значение)
|
|
104
|
+
prevNativeSelectValue !== NOT_SELECTED.NATIVE;
|
|
105
|
+
|
|
106
|
+
const shouldCallOnChange =
|
|
107
|
+
!isCalledWithSameControlledOptionValue && (isNativeValueChanged || isTriggeredByClearButton);
|
|
108
|
+
|
|
109
|
+
if (!shouldCallOnChange) {
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
const remappedNativeValue = remapFromNativeValueToSelectValue(e.currentTarget.value);
|
|
114
|
+
|
|
115
|
+
if (e.target.value === NOT_SELECTED.NATIVE) {
|
|
116
|
+
e.target.value = '';
|
|
117
|
+
}
|
|
118
|
+
if (e.currentTarget.value === NOT_SELECTED.NATIVE) {
|
|
119
|
+
e.currentTarget.value = '';
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
onChange?.(e, remappedNativeValue);
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
return {
|
|
126
|
+
selectedOptionValue,
|
|
127
|
+
setSelectedOptionValue,
|
|
128
|
+
nativeSelectValue,
|
|
129
|
+
setNativeSelectValue: _setNativeSelectValue,
|
|
130
|
+
onNativeSelectChange,
|
|
131
|
+
};
|
|
132
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type * as React from 'react';
|
|
2
|
+
import { type Alignment, type Side } from '../../lib/floating';
|
|
3
|
+
import { type CustomSelectOptionProps } from '../CustomSelectOption/CustomSelectOption';
|
|
4
|
+
import { type SelectValue } from '../NativeSelect/NativeSelect';
|
|
5
|
+
|
|
6
|
+
/* eslint-disable jsdoc/require-jsdoc */
|
|
7
|
+
export type MousePosition = {
|
|
8
|
+
x: React.MouseEvent['clientX'];
|
|
9
|
+
y: React.MouseEvent['clientY'];
|
|
10
|
+
};
|
|
11
|
+
/* eslint-enable jsdoc/require-jsdoc */
|
|
12
|
+
|
|
13
|
+
export interface CustomSelectOptionInterface {
|
|
14
|
+
/**
|
|
15
|
+
* Значение.
|
|
16
|
+
*/
|
|
17
|
+
value: Exclude<SelectValue, null>;
|
|
18
|
+
/**
|
|
19
|
+
* Отображаемый текст.
|
|
20
|
+
*/
|
|
21
|
+
label: React.ReactElement | string;
|
|
22
|
+
/**
|
|
23
|
+
* Блокировка взаимодействия с компонентом.
|
|
24
|
+
*/
|
|
25
|
+
disabled?: boolean;
|
|
26
|
+
[index: string]: any;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export interface CustomSelectRenderOption<T extends CustomSelectOptionInterface>
|
|
30
|
+
extends CustomSelectOptionProps {
|
|
31
|
+
/**
|
|
32
|
+
* Данные об опции.
|
|
33
|
+
*/
|
|
34
|
+
option: T;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
type PopupDirectionSide = Extract<Side, 'top' | 'bottom'>;
|
|
38
|
+
export type PopupDirection = PopupDirectionSide | `${PopupDirectionSide}-${Alignment}`;
|
|
@@ -8,7 +8,7 @@ import { useAdaptivity } from '../../hooks/useAdaptivity';
|
|
|
8
8
|
import { useDateInput } from '../../hooks/useDateInput';
|
|
9
9
|
import { useExternRef } from '../../hooks/useExternRef';
|
|
10
10
|
import { type UseFocusTrapProps } from '../../hooks/useFocusTrap';
|
|
11
|
-
import {
|
|
11
|
+
import { dateFormatter, dateTimeFormatter, isMatch, parse } from '../../lib/date';
|
|
12
12
|
import type { PlacementWithAuto } from '../../lib/floating';
|
|
13
13
|
import { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';
|
|
14
14
|
import type { HasRootRef } from '../../types';
|
|
@@ -471,7 +471,13 @@ export const DateInput = ({
|
|
|
471
471
|
aria-hidden
|
|
472
472
|
tabIndex={readOnly ? 0 : -1}
|
|
473
473
|
name={name}
|
|
474
|
-
value={
|
|
474
|
+
value={
|
|
475
|
+
value
|
|
476
|
+
? enableTime
|
|
477
|
+
? dateTimeFormatter.format(value)
|
|
478
|
+
: dateFormatter.format(value)
|
|
479
|
+
: ''
|
|
480
|
+
}
|
|
475
481
|
onFocus={handleFieldEnter}
|
|
476
482
|
/>
|
|
477
483
|
<Text
|
|
@@ -557,7 +563,7 @@ export const DateInput = ({
|
|
|
557
563
|
)}
|
|
558
564
|
</Text>
|
|
559
565
|
{customValue && (
|
|
560
|
-
<Text className={styles.customValue} aria-hidden>
|
|
566
|
+
<Text className={styles.customValue} aria-hidden normalize={false}>
|
|
561
567
|
{customValue}
|
|
562
568
|
</Text>
|
|
563
569
|
)}
|
|
@@ -3,13 +3,12 @@
|
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
import { Icon16Clear, Icon20CalendarOutline } from '@vkontakte/icons';
|
|
5
5
|
import { classNames } from '@vkontakte/vkjs';
|
|
6
|
-
import { isAfter } from 'date-fns';
|
|
7
6
|
import { useAdaptivity } from '../../hooks/useAdaptivity';
|
|
8
7
|
import { useDateInput } from '../../hooks/useDateInput';
|
|
9
8
|
import { useCustomEnsuredControl } from '../../hooks/useEnsuredControl';
|
|
10
9
|
import { useExternRef } from '../../hooks/useExternRef';
|
|
11
10
|
import { type UseFocusTrapProps } from '../../hooks/useFocusTrap';
|
|
12
|
-
import {
|
|
11
|
+
import { dateFormatter, isMatch, parse } from '../../lib/date';
|
|
13
12
|
import type { PlacementWithAuto } from '../../lib/floating';
|
|
14
13
|
import type { HasRootRef } from '../../types';
|
|
15
14
|
import {
|
|
@@ -321,7 +320,7 @@ export const DateRangeInput = ({
|
|
|
321
320
|
const end = isEndValid
|
|
322
321
|
? parse(formattedEndValue, mask, (valueExists && value?.[1]) || now)
|
|
323
322
|
: null;
|
|
324
|
-
if (start && end &&
|
|
323
|
+
if (start && end && end > start) {
|
|
325
324
|
updateValue([start, end]);
|
|
326
325
|
}
|
|
327
326
|
},
|
|
@@ -466,14 +465,18 @@ export const DateRangeInput = ({
|
|
|
466
465
|
tabIndex={readOnly ? 0 : -1}
|
|
467
466
|
value={
|
|
468
467
|
value
|
|
469
|
-
? `${value[0] ? format(value[0]
|
|
470
|
-
value[1] ? format(value[1]
|
|
468
|
+
? `${value[0] ? dateFormatter.format(value[0]) : ''} - ${
|
|
469
|
+
value[1] ? dateFormatter.format(value[1]) : ''
|
|
471
470
|
}`
|
|
472
471
|
: ''
|
|
473
472
|
}
|
|
474
473
|
onFocus={handleFieldEnter}
|
|
475
474
|
/>
|
|
476
|
-
<Text
|
|
475
|
+
<Text
|
|
476
|
+
className={dateInputStyles.input}
|
|
477
|
+
onClick={showCalendarOnInputAreaClick}
|
|
478
|
+
normalize={false}
|
|
479
|
+
>
|
|
477
480
|
<NumberInputLike
|
|
478
481
|
value={internalValue[0]}
|
|
479
482
|
minValue={1}
|
|
@@ -19,6 +19,7 @@ export const ModalCard = ({
|
|
|
19
19
|
onClose,
|
|
20
20
|
onClosed,
|
|
21
21
|
keepMounted = false,
|
|
22
|
+
disableModalOverlay,
|
|
22
23
|
...restProps
|
|
23
24
|
}: ModalCardProps): React.ReactNode => {
|
|
24
25
|
const {
|
|
@@ -32,6 +33,7 @@ export const ModalCard = ({
|
|
|
32
33
|
keepMounted,
|
|
33
34
|
modalOverlayTestId,
|
|
34
35
|
noFocusToDialog,
|
|
36
|
+
disableModalOverlay,
|
|
35
37
|
onOpen,
|
|
36
38
|
onOpened,
|
|
37
39
|
onClose,
|
|
@@ -73,6 +73,7 @@ export const ModalCardInternal = ({
|
|
|
73
73
|
onClose = noop,
|
|
74
74
|
onClosed,
|
|
75
75
|
disableFocusTrap,
|
|
76
|
+
disableModalOverlay,
|
|
76
77
|
...restProps
|
|
77
78
|
}: ModalCardInternalProps): ReactNode => {
|
|
78
79
|
const platform = usePlatform();
|
|
@@ -115,7 +116,7 @@ export const ModalCardInternal = ({
|
|
|
115
116
|
'--vkui_internal_ModalCard--safeAreaInsetBottom': '0px',
|
|
116
117
|
}
|
|
117
118
|
: styleProp;
|
|
118
|
-
const modalOverlay = (
|
|
119
|
+
const modalOverlay = !disableModalOverlay && (
|
|
119
120
|
<ModalOverlay
|
|
120
121
|
getRootRef={setBackdropEl}
|
|
121
122
|
data-testid={modalOverlayTestId}
|
|
@@ -146,7 +147,12 @@ export const ModalCardInternal = ({
|
|
|
146
147
|
});
|
|
147
148
|
|
|
148
149
|
return (
|
|
149
|
-
<ModalOutlet
|
|
150
|
+
<ModalOutlet
|
|
151
|
+
hidden={hidden}
|
|
152
|
+
isDesktop={isDesktop}
|
|
153
|
+
onKeyDown={handleEscKeyDown}
|
|
154
|
+
disableModalOverlay={disableModalOverlay}
|
|
155
|
+
>
|
|
150
156
|
{modalOverlay}
|
|
151
157
|
<ModalCardBase
|
|
152
158
|
{...restProps}
|
|
@@ -56,4 +56,10 @@ export interface ModalCardProps
|
|
|
56
56
|
* Нужно использовать, когда поверх одной модалки открывается другая, чтобы два `FocusTrap` не конфликтовали.
|
|
57
57
|
*/
|
|
58
58
|
disableFocusTrap?: UseFocusTrapProps['disabled'];
|
|
59
|
+
/**
|
|
60
|
+
* Отключает отображение и взаимодействие с фоном модалки.
|
|
61
|
+
* > При использовании `ModalCard` внутри `ModalRoot` есть особенность использования этого свойства.
|
|
62
|
+
* > Об этом можно почитать на странице документации [`ModalRoot`](/components/modal-root#otklyuchenie-zadnego-fona-u-konkretnogo-modalnogo-okna).
|
|
63
|
+
*/
|
|
64
|
+
disableModalOverlay?: boolean;
|
|
59
65
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["./ModalOutlet.module.css"],"names":["host","hostDesktop"],"mappings":"AAAA;AAAA,E,aAAAA,M,WAAA;AAAA,E,
|
|
1
|
+
{"version":3,"sources":["./ModalOutlet.module.css"],"names":["host","disableModalOverlay","hostDesktop"],"mappings":"AAAA;AAAA,E,aAAAA,M,WAAA;AAAA,E,aAQAC,qB,WARA;AAAA,E,aAaAC,a,WAbA;AAAA;AAAA","file":"ModalOutlet.module.css.d.ts","sourceRoot":""}
|
|
@@ -6,6 +6,7 @@ import styles from './ModalOutlet.module.css';
|
|
|
6
6
|
|
|
7
7
|
export interface ModalOutletProps
|
|
8
8
|
extends Omit<HTMLAttributesWithRootRef<HTMLDivElement>, 'hidden' | 'aria-hidden'> {
|
|
9
|
+
disableModalOverlay?: boolean;
|
|
9
10
|
hidden?: boolean;
|
|
10
11
|
isDesktop?: boolean;
|
|
11
12
|
}
|
|
@@ -19,12 +20,18 @@ export const ModalOutlet = ({
|
|
|
19
20
|
isDesktop,
|
|
20
21
|
children,
|
|
21
22
|
getRootRef,
|
|
23
|
+
disableModalOverlay,
|
|
22
24
|
...restProps
|
|
23
25
|
}: ModalOutletProps) => {
|
|
24
26
|
return (
|
|
25
27
|
<div
|
|
26
28
|
ref={getRootRef}
|
|
27
|
-
className={classNames(
|
|
29
|
+
className={classNames(
|
|
30
|
+
className,
|
|
31
|
+
styles.host,
|
|
32
|
+
isDesktop && styles.hostDesktop,
|
|
33
|
+
disableModalOverlay && styles.disableModalOverlay,
|
|
34
|
+
)}
|
|
28
35
|
hidden={hidden}
|
|
29
36
|
aria-hidden={hidden}
|
|
30
37
|
{...restProps}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["./ModalPage.module.css"],"names":["host","hostMobile","hostMobileSafeAreaInsetTop","hostMobileSafeAreaInsetTopWithCustomOffset","hostDesktop","hostDesktopMaxWidthS","hostDesktopMaxWidthM","hostDesktopMaxWidthL","document","documentMobile","documentStateEnter","documentStateEntering","documentStateExiting","documentStateExited","documentDesktop","children","childrenMobile","childrenDesktop"],"mappings":"AAAA;AAAA,E,aAAAA,M,WAAA;AAAA,E,
|
|
1
|
+
{"version":3,"sources":["./ModalPage.module.css"],"names":["host","hostMobile","hostMobileSafeAreaInsetTop","hostMobileSafeAreaInsetTopWithCustomOffset","hostDesktop","hostDesktopMaxWidthS","hostDesktopMaxWidthM","hostDesktopMaxWidthL","document","documentMobile","documentStateEnter","documentStateEntering","documentStateExiting","documentStateExited","documentDesktop","children","childrenMobile","childrenDesktop"],"mappings":"AAAA;AAAA,E,aAAAA,M,WAAA;AAAA,E,aAUAC,Y,WAVA;AAAA,E,aAqBAC,4B,WArBA;AAAA,E,aAyBAC,4C,WAzBA;AAAA,E,aAgCAC,a,WAhCA;AAAA,E,aAmDAC,sB,WAnDA;AAAA,E,aAuDAC,sB,WAvDA;AAAA,E,aA2DAC,sB,WA3DA;AAAA,E,aA+DAC,U,WA/DA;AAAA,E,aA4EAC,gB,WA5EA;AAAA,E,aA6FAA,gB,WA7FA;AAAA,E,aA6FeC,oB,WA7Ff;AAAA,E,aAiGAD,gB,WAjGA;AAAA,E,aAiGeE,uB,WAjGf;AAAA,E,aAsGAF,gB,WAtGA;AAAA,E,aAsGeG,sB,WAtGf;AAAA,E,aA2GAH,gB,WA3GA;AAAA,E,aA2GeI,qB,WA3Gf;AAAA,E,aAgHAC,iB,WAhHA;AAAA,E,aAqHAA,iB,WArHA;AAAA,E,aAqHgBJ,oB,WArHhB;AAAA,E,aAyHAI,iB,WAzHA;AAAA,E,aAyHgBH,uB,WAzHhB;AAAA,E,aA8HAG,iB,WA9HA;AAAA,E,aA8HgBF,sB,WA9HhB;AAAA,E,aAmIAE,iB,WAnIA;AAAA,E,aAmIgBD,qB,WAnIhB;AAAA,E,aAuIAE,U,WAvIA;AAAA,E,aA2JAC,gB,WA3JA;AAAA,E,aAgKAC,iB,WAhKA;AAAA;AAAA","file":"ModalPage.module.css.d.ts","sourceRoot":""}
|
|
@@ -26,6 +26,7 @@ export const ModalPage = ({
|
|
|
26
26
|
size = 's',
|
|
27
27
|
settlingHeight = 50,
|
|
28
28
|
dynamicContentHeight,
|
|
29
|
+
disableModalOverlay,
|
|
29
30
|
keepMounted = false,
|
|
30
31
|
...restProps
|
|
31
32
|
}: ModalPageProps) => {
|
|
@@ -34,6 +35,7 @@ export const ModalPage = ({
|
|
|
34
35
|
open,
|
|
35
36
|
keepMounted,
|
|
36
37
|
modalOverlayTestId,
|
|
38
|
+
disableModalOverlay,
|
|
37
39
|
noFocusToDialog,
|
|
38
40
|
onOpen,
|
|
39
41
|
onOpened,
|
|
@@ -74,6 +74,7 @@ export const ModalPageInternal = ({
|
|
|
74
74
|
onClose = noop,
|
|
75
75
|
onClosed,
|
|
76
76
|
disableFocusTrap,
|
|
77
|
+
disableModalOverlay,
|
|
77
78
|
...restProps
|
|
78
79
|
}: ModalPageInternalProps) => {
|
|
79
80
|
const { hasCustomPanelHeaderAfter } = useConfigProvider();
|
|
@@ -121,7 +122,7 @@ export const ModalPageInternal = ({
|
|
|
121
122
|
isDesktop ? desktopMaxWidth : 's',
|
|
122
123
|
);
|
|
123
124
|
|
|
124
|
-
const modalOverlay = (
|
|
125
|
+
const modalOverlay = !disableModalOverlay && (
|
|
125
126
|
<ModalOverlay
|
|
126
127
|
getRootRef={setBackdropEl}
|
|
127
128
|
data-testid={modalOverlayTestId}
|
|
@@ -147,7 +148,12 @@ export const ModalPageInternal = ({
|
|
|
147
148
|
useScrollLock(!hidden);
|
|
148
149
|
|
|
149
150
|
return (
|
|
150
|
-
<ModalOutlet
|
|
151
|
+
<ModalOutlet
|
|
152
|
+
hidden={hidden}
|
|
153
|
+
isDesktop={isDesktop}
|
|
154
|
+
onKeyDown={handleEscKeyDown}
|
|
155
|
+
disableModalOverlay={disableModalOverlay}
|
|
156
|
+
>
|
|
151
157
|
{modalOverlay}
|
|
152
158
|
<FocusTrap
|
|
153
159
|
{...restProps}
|
|
@@ -131,4 +131,10 @@ export interface ModalPageProps
|
|
|
131
131
|
* Нужно использовать, когда поверх одной модалки открывается другая, чтобы два `FocusTrap` не конфликтовали.
|
|
132
132
|
*/
|
|
133
133
|
disableFocusTrap?: UseFocusTrapProps['disabled'];
|
|
134
|
+
/**
|
|
135
|
+
* Отключает отображение и взаимодействие с фоном модалки.
|
|
136
|
+
* > При использовании `ModalPage` внутри `ModalRoot` есть особенность использования этого свойства.
|
|
137
|
+
* > Об этом можно почитать на странице документации [`ModalRoot`](/components/modal-root#otklyuchenie-zadnego-fona-u-konkretnogo-modalnogo-okna).
|
|
138
|
+
*/
|
|
139
|
+
disableModalOverlay?: boolean;
|
|
134
140
|
}
|
|
@@ -17,6 +17,7 @@ export const ModalRoot = ({
|
|
|
17
17
|
children,
|
|
18
18
|
modalOverlayTestId,
|
|
19
19
|
noFocusToDialog,
|
|
20
|
+
disableModalOverlay,
|
|
20
21
|
usePortal,
|
|
21
22
|
onOpen,
|
|
22
23
|
onOpened,
|
|
@@ -31,6 +32,7 @@ export const ModalRoot = ({
|
|
|
31
32
|
activeModal,
|
|
32
33
|
modalOverlayTestId,
|
|
33
34
|
noFocusToDialog,
|
|
35
|
+
disableModalOverlay,
|
|
34
36
|
|
|
35
37
|
// callbacks
|
|
36
38
|
onOpen,
|
|
@@ -56,18 +58,29 @@ export const ModalRoot = ({
|
|
|
56
58
|
}
|
|
57
59
|
: noop,
|
|
58
60
|
}),
|
|
59
|
-
[
|
|
61
|
+
[
|
|
62
|
+
activeModal,
|
|
63
|
+
disableModalOverlay,
|
|
64
|
+
modalOverlayTestId,
|
|
65
|
+
noFocusToDialog,
|
|
66
|
+
onClose,
|
|
67
|
+
onClosed,
|
|
68
|
+
onOpen,
|
|
69
|
+
onOpened,
|
|
70
|
+
],
|
|
60
71
|
);
|
|
61
72
|
const modalOverlayRef = React.useRef<HTMLDivElement>(null);
|
|
62
73
|
return (
|
|
63
74
|
<AppRootPortal usePortal={usePortal}>
|
|
64
75
|
<ModalRootContext.Provider value={contextValue}>
|
|
65
76
|
<ModalRootOverlayContext.Provider value={modalOverlayRef}>
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
77
|
+
{!disableModalOverlay && (
|
|
78
|
+
<ModalOverlay
|
|
79
|
+
position="fixed"
|
|
80
|
+
visible={typeof activeModal === 'string'}
|
|
81
|
+
getRootRef={modalOverlayRef}
|
|
82
|
+
/>
|
|
83
|
+
)}
|
|
71
84
|
{children}
|
|
72
85
|
</ModalRootOverlayContext.Provider>
|
|
73
86
|
</ModalRootContext.Provider>
|
|
@@ -124,6 +124,11 @@ type ModalRootBaseProps = {
|
|
|
124
124
|
* Будет вызвано при окончательном закрытии активной модалки с её id.
|
|
125
125
|
*/
|
|
126
126
|
onClosed?: ModalRootCallbackFunction;
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* Отключает отображение и взаимодействие с фоном модалки.
|
|
130
|
+
*/
|
|
131
|
+
disableModalOverlay?: boolean;
|
|
127
132
|
};
|
|
128
133
|
|
|
129
134
|
export interface ModalRootProps extends ModalRootBaseProps {
|
|
@@ -17,6 +17,7 @@ export interface UseModalManager {
|
|
|
17
17
|
keepMounted: boolean;
|
|
18
18
|
modalOverlayTestId?: string;
|
|
19
19
|
noFocusToDialog?: boolean;
|
|
20
|
+
disableModalOverlay?: boolean;
|
|
20
21
|
onOpen?: AnyFunction;
|
|
21
22
|
onOpened?: AnyFunction;
|
|
22
23
|
onClose?: AnyFunction;
|
|
@@ -27,6 +28,7 @@ export interface UseModalManagerResolvedProps {
|
|
|
27
28
|
id: string;
|
|
28
29
|
open: boolean;
|
|
29
30
|
noFocusToDialog?: boolean;
|
|
31
|
+
disableModalOverlay?: boolean;
|
|
30
32
|
modalOverlayTestId?: string;
|
|
31
33
|
ModalOverlay: React.ComponentType<ModalOverlayProps>;
|
|
32
34
|
onOpen?: AnyFunction;
|
|
@@ -45,6 +47,7 @@ export const useModalManager = ({
|
|
|
45
47
|
keepMounted,
|
|
46
48
|
modalOverlayTestId,
|
|
47
49
|
noFocusToDialog,
|
|
50
|
+
disableModalOverlay,
|
|
48
51
|
onOpen,
|
|
49
52
|
onOpened,
|
|
50
53
|
onClose,
|
|
@@ -78,6 +81,7 @@ export const useModalManager = ({
|
|
|
78
81
|
shouldPreserveSnapPoint,
|
|
79
82
|
noFocusToDialog: noFocusToDialog || context.noFocusToDialog,
|
|
80
83
|
modalOverlayTestId: modalOverlayTestId || context.modalOverlayTestId,
|
|
84
|
+
disableModalOverlay: disableModalOverlay || context.disableModalOverlay,
|
|
81
85
|
ModalOverlay: context.isInsideModal ? VisuallyHiddenModalOverlay : ModalOverlay,
|
|
82
86
|
onOpen: onOpen || getContextCallback(id, context.onOpen),
|
|
83
87
|
onOpened: onOpened || getContextCallback(id, context.onOpened),
|
|
@@ -39,6 +39,7 @@ type AllowedFloatingComponentProps = Pick<
|
|
|
39
39
|
| 'children'
|
|
40
40
|
| 'onPlacementChange'
|
|
41
41
|
| 'disableFlipMiddleware'
|
|
42
|
+
| 'disableShiftMiddleware'
|
|
42
43
|
| 'disableFocusTrap'
|
|
43
44
|
>;
|
|
44
45
|
|
|
@@ -98,6 +99,7 @@ export const OnboardingTooltip = ({
|
|
|
98
99
|
disableArrow = false,
|
|
99
100
|
onPlacementChange,
|
|
100
101
|
disableFlipMiddleware = false,
|
|
102
|
+
disableShiftMiddleware = false,
|
|
101
103
|
overlayLabel = 'Закрыть',
|
|
102
104
|
title,
|
|
103
105
|
'aria-label': ariaLabel,
|
|
@@ -124,6 +126,7 @@ export const OnboardingTooltip = ({
|
|
|
124
126
|
arrowHeight,
|
|
125
127
|
arrowPadding,
|
|
126
128
|
disableFlipMiddleware,
|
|
129
|
+
disableShiftMiddleware,
|
|
127
130
|
});
|
|
128
131
|
const {
|
|
129
132
|
x: floatingDataX,
|
|
@@ -43,6 +43,7 @@ export const usePopover = <ElementType extends HTMLElement = HTMLElement>({
|
|
|
43
43
|
placement = 'bottom-start',
|
|
44
44
|
onPlacementChange,
|
|
45
45
|
disableFlipMiddleware = false,
|
|
46
|
+
disableShiftMiddleware = false,
|
|
46
47
|
trigger = 'click',
|
|
47
48
|
strategy,
|
|
48
49
|
content,
|
|
@@ -184,6 +185,7 @@ export const usePopover = <ElementType extends HTMLElement = HTMLElement>({
|
|
|
184
185
|
sameWidth,
|
|
185
186
|
hideWhenReferenceHidden,
|
|
186
187
|
disableFlipMiddleware,
|
|
188
|
+
disableShiftMiddleware,
|
|
187
189
|
customMiddlewares,
|
|
188
190
|
|
|
189
191
|
trigger,
|
|
@@ -55,6 +55,7 @@ type AllowedFloatingComponentProps = Pick<
|
|
|
55
55
|
| 'customMiddlewares'
|
|
56
56
|
| 'onPlacementChange'
|
|
57
57
|
| 'disableFlipMiddleware'
|
|
58
|
+
| 'disableShiftMiddleware'
|
|
58
59
|
| 'flipMiddlewareFallbackAxisSideDirection'
|
|
59
60
|
>;
|
|
60
61
|
|
|
@@ -107,6 +108,7 @@ export const Popper = ({
|
|
|
107
108
|
arrowPadding = DEFAULT_ARROW_PADDING,
|
|
108
109
|
customMiddlewares,
|
|
109
110
|
disableFlipMiddleware = false,
|
|
111
|
+
disableShiftMiddleware = false,
|
|
110
112
|
flipMiddlewareFallbackAxisSideDirection,
|
|
111
113
|
|
|
112
114
|
// UseFloatingProps
|
|
@@ -142,6 +144,7 @@ export const Popper = ({
|
|
|
142
144
|
hideWhenReferenceHidden,
|
|
143
145
|
customMiddlewares,
|
|
144
146
|
disableFlipMiddleware,
|
|
147
|
+
disableShiftMiddleware,
|
|
145
148
|
flipMiddlewareFallbackAxisSideDirection,
|
|
146
149
|
});
|
|
147
150
|
|
|
@@ -4,11 +4,8 @@ import * as React from 'react';
|
|
|
4
4
|
import { classNames } from '@vkontakte/vkjs';
|
|
5
5
|
import { useAdaptivityConditionalRender } from '../../hooks/useAdaptivityConditionalRender';
|
|
6
6
|
import type { HasOnlyExpectedProps } from '../../types';
|
|
7
|
-
import {
|
|
8
|
-
|
|
9
|
-
type CustomSelectOptionInterface,
|
|
10
|
-
type SelectProps,
|
|
11
|
-
} from '../CustomSelect/CustomSelect';
|
|
7
|
+
import { CustomSelect, type SelectProps } from '../CustomSelect/CustomSelect';
|
|
8
|
+
import { type CustomSelectOptionInterface } from '../CustomSelect/types';
|
|
12
9
|
import { NativeSelect, type NativeSelectProps } from '../NativeSelect/NativeSelect';
|
|
13
10
|
export type SelectType = 'default' | 'plain' | 'accent';
|
|
14
11
|
|
|
@@ -53,6 +50,9 @@ export const Select = <OptionT extends CustomSelectOptionInterface>({
|
|
|
53
50
|
beforeAlign,
|
|
54
51
|
afterAlign,
|
|
55
52
|
onInputKeyDown,
|
|
53
|
+
accessible,
|
|
54
|
+
fetchingCompletedLabel,
|
|
55
|
+
fetchingInProgressLabel,
|
|
56
56
|
...restProps
|
|
57
57
|
} = props;
|
|
58
58
|
|