@vkontakte/vkui 4.27.1 → 4.28.1
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/.cache/.eslintcache +1 -1
- package/.cache/.stylelintcache +1 -1
- package/.cache/.tsbuildinfo +11910 -4711
- package/.cache/ts/src/components/Button/Button.d.ts +1 -1
- package/.cache/ts/src/components/ButtonGroup/ButtonGroup.d.ts +20 -0
- package/.cache/ts/src/components/Calendar/Calendar.d.ts +21 -0
- package/.cache/ts/src/components/CalendarDay/CalendarDay.d.ts +22 -0
- package/.cache/ts/src/components/CalendarDays/CalendarDays.d.ts +22 -0
- package/.cache/ts/src/components/CalendarHeader/CalendarHeader.d.ts +16 -0
- package/.cache/ts/src/components/CalendarRange/CalendarRange.d.ts +16 -0
- package/.cache/ts/src/components/CalendarTime/CalendarTime.d.ts +11 -0
- package/.cache/ts/src/components/ChipsSelect/ChipsSelect.d.ts +1 -2
- package/.cache/ts/src/components/ConfigProvider/ConfigProvider.d.ts +4 -0
- package/.cache/ts/src/components/ConfigProvider/ConfigProviderContext.d.ts +0 -7
- package/.cache/ts/src/components/CustomScrollView/CustomScrollView.d.ts +1 -1
- package/.cache/ts/src/components/CustomSelect/CustomSelect.d.ts +10 -1
- package/.cache/ts/src/components/CustomSelectDropdown/CustomSelectDropdown.d.ts +4 -1
- package/.cache/ts/src/components/DateInput/DateInput.d.ts +12 -0
- package/.cache/ts/src/components/DateRangeInput/DateRangeInput.d.ts +18 -0
- package/.cache/ts/src/components/Div/Div.d.ts +1 -2
- package/.cache/ts/src/components/IconButton/IconButton.d.ts +1 -1
- package/.cache/ts/src/components/InputLike/InputLike.d.ts +10 -0
- package/.cache/ts/src/components/InputLike/InputLikeDivider.d.ts +3 -0
- package/.cache/ts/src/components/LocaleProviderContext/LocaleProviderContext.d.ts +2 -0
- package/.cache/ts/src/components/Pagination/Pagination.d.ts +42 -0
- package/.cache/ts/src/components/PanelHeaderBack/PanelHeaderBack.d.ts +1 -1
- package/.cache/ts/src/components/RichCell/RichCell.d.ts +3 -2
- package/.cache/ts/src/components/Select/Select.d.ts +1 -1
- package/.cache/ts/src/components/SelectMimicry/SelectMimicry.d.ts +5 -1
- package/.cache/ts/src/components/SimpleCell/SimpleCell.d.ts +1 -1
- package/.cache/ts/src/components/SimpleCheckbox/SimpleCheckbox.d.ts +0 -1
- package/.cache/ts/src/components/Tappable/Tappable.d.ts +3 -1
- package/.cache/ts/src/components/Typography/Caption/Caption.d.ts +8 -4
- package/.cache/ts/src/components/Typography/Subhead/Subhead.d.ts +6 -1
- package/.cache/ts/src/components/Typography/Title/Title.d.ts +3 -1
- package/.cache/ts/src/components/View/ViewInfinite.d.ts +2 -2
- package/.cache/ts/src/helpers/typography.d.ts +1 -0
- package/.cache/ts/src/hooks/useBooleanState.d.ts +6 -0
- package/.cache/ts/src/hooks/useCalendar.d.ts +18 -0
- package/.cache/ts/src/hooks/useDateInput.d.ts +30 -0
- package/.cache/ts/src/hooks/useKeyboardInputTracker.d.ts +2 -0
- package/.cache/ts/src/hooks/useOrientationChange.d.ts +7 -0
- package/.cache/ts/src/hooks/usePagination.d.ts +34 -0
- package/.cache/ts/src/index.d.ts +12 -2
- package/.cache/ts/src/lib/calendar.d.ts +14 -0
- package/.cache/ts/src/lib/utils.d.ts +2 -1
- package/.cache/ts/src/tokenized/index.d.ts +14 -0
- package/.cache/ts/src/unstable/index.d.ts +6 -6
- package/CONTRIBUTING.md +3 -2
- package/CSS_GUIDE.md +145 -0
- package/dist/cjs/components/ActionSheet/ActionSheet.js +4 -7
- package/dist/cjs/components/ActionSheet/ActionSheet.js.map +1 -1
- package/dist/cjs/components/ActionSheetItem/ActionSheetItem.js +3 -6
- package/dist/cjs/components/ActionSheetItem/ActionSheetItem.js.map +1 -1
- package/dist/cjs/components/Alert/Alert.js +5 -8
- package/dist/cjs/components/Alert/Alert.js.map +1 -1
- package/dist/cjs/components/Banner/Banner.js +1 -3
- package/dist/cjs/components/Banner/Banner.js.map +1 -1
- package/dist/cjs/components/Button/Button.d.ts +1 -1
- package/dist/cjs/components/Button/Button.js +7 -11
- package/dist/cjs/components/Button/Button.js.map +1 -1
- package/dist/cjs/components/ButtonGroup/ButtonGroup.d.ts +20 -0
- package/dist/cjs/components/ButtonGroup/ButtonGroup.js +38 -0
- package/dist/cjs/components/ButtonGroup/ButtonGroup.js.map +1 -0
- package/dist/cjs/components/Calendar/Calendar.d.ts +21 -0
- package/dist/cjs/components/Calendar/Calendar.js +160 -0
- package/dist/cjs/components/Calendar/Calendar.js.map +1 -0
- package/dist/cjs/components/CalendarDay/CalendarDay.d.ts +22 -0
- package/dist/cjs/components/CalendarDay/CalendarDay.js +109 -0
- package/dist/cjs/components/CalendarDay/CalendarDay.js.map +1 -0
- package/dist/cjs/components/CalendarDays/CalendarDays.d.ts +22 -0
- package/dist/cjs/components/CalendarDays/CalendarDays.js +118 -0
- package/dist/cjs/components/CalendarDays/CalendarDays.js.map +1 -0
- package/dist/cjs/components/CalendarHeader/CalendarHeader.d.ts +16 -0
- package/dist/cjs/components/CalendarHeader/CalendarHeader.js +143 -0
- package/dist/cjs/components/CalendarHeader/CalendarHeader.js.map +1 -0
- package/dist/cjs/components/CalendarRange/CalendarRange.d.ts +16 -0
- package/dist/cjs/components/CalendarRange/CalendarRange.js +219 -0
- package/dist/cjs/components/CalendarRange/CalendarRange.js.map +1 -0
- package/dist/cjs/components/CalendarTime/CalendarTime.d.ts +11 -0
- package/dist/cjs/components/CalendarTime/CalendarTime.js +92 -0
- package/dist/cjs/components/CalendarTime/CalendarTime.js.map +1 -0
- package/dist/cjs/components/Checkbox/Checkbox.js +2 -5
- package/dist/cjs/components/Checkbox/Checkbox.js.map +1 -1
- package/dist/cjs/components/Chip/Chip.js +2 -4
- package/dist/cjs/components/Chip/Chip.js.map +1 -1
- package/dist/cjs/components/ChipsSelect/ChipsSelect.d.ts +1 -2
- package/dist/cjs/components/ChipsSelect/ChipsSelect.js +7 -11
- package/dist/cjs/components/ChipsSelect/ChipsSelect.js.map +1 -1
- package/dist/cjs/components/ConfigProvider/ConfigProvider.d.ts +4 -0
- package/dist/cjs/components/ConfigProvider/ConfigProvider.js +40 -21
- package/dist/cjs/components/ConfigProvider/ConfigProvider.js.map +1 -1
- package/dist/cjs/components/ConfigProvider/ConfigProviderContext.d.ts +0 -7
- package/dist/cjs/components/ConfigProvider/ConfigProviderContext.js +3 -5
- package/dist/cjs/components/ConfigProvider/ConfigProviderContext.js.map +1 -1
- package/dist/cjs/components/ContentCard/ContentCard.js +5 -7
- package/dist/cjs/components/ContentCard/ContentCard.js.map +1 -1
- package/dist/cjs/components/Counter/Counter.js +3 -3
- package/dist/cjs/components/Counter/Counter.js.map +1 -1
- package/dist/cjs/components/CustomScrollView/CustomScrollView.d.ts +1 -1
- package/dist/cjs/components/CustomScrollView/CustomScrollView.js.map +1 -1
- package/dist/cjs/components/CustomSelect/CustomSelect.d.ts +10 -1
- package/dist/cjs/components/CustomSelect/CustomSelect.js +47 -17
- package/dist/cjs/components/CustomSelect/CustomSelect.js.map +1 -1
- package/dist/cjs/components/CustomSelectDropdown/CustomSelectDropdown.d.ts +4 -1
- package/dist/cjs/components/CustomSelectDropdown/CustomSelectDropdown.js +14 -5
- package/dist/cjs/components/CustomSelectDropdown/CustomSelectDropdown.js.map +1 -1
- package/dist/cjs/components/CustomSelectOption/CustomSelectOption.js +3 -5
- package/dist/cjs/components/CustomSelectOption/CustomSelectOption.js.map +1 -1
- package/dist/cjs/components/DateInput/DateInput.d.ts +12 -0
- package/dist/cjs/components/DateInput/DateInput.js +290 -0
- package/dist/cjs/components/DateInput/DateInput.js.map +1 -0
- package/dist/cjs/components/DateRangeInput/DateRangeInput.d.ts +18 -0
- package/dist/cjs/components/DateRangeInput/DateRangeInput.js +310 -0
- package/dist/cjs/components/DateRangeInput/DateRangeInput.js.map +1 -0
- package/dist/cjs/components/Div/Div.d.ts +1 -2
- package/dist/cjs/components/Div/Div.js +2 -5
- package/dist/cjs/components/Div/Div.js.map +1 -1
- package/dist/cjs/components/Footer/Footer.js +2 -4
- package/dist/cjs/components/Footer/Footer.js.map +1 -1
- package/dist/cjs/components/FormItem/FormItem.js +2 -5
- package/dist/cjs/components/FormItem/FormItem.js.map +1 -1
- package/dist/cjs/components/FormStatus/FormStatus.js +3 -8
- package/dist/cjs/components/FormStatus/FormStatus.js.map +1 -1
- package/dist/cjs/components/Group/Group.js +3 -5
- package/dist/cjs/components/Group/Group.js.map +1 -1
- package/dist/cjs/components/Header/Header.js +10 -23
- package/dist/cjs/components/Header/Header.js.map +1 -1
- package/dist/cjs/components/HorizontalCell/HorizontalCell.js +5 -10
- package/dist/cjs/components/HorizontalCell/HorizontalCell.js.map +1 -1
- package/dist/cjs/components/IconButton/IconButton.d.ts +1 -1
- package/dist/cjs/components/InfoRow/InfoRow.js +1 -2
- package/dist/cjs/components/InfoRow/InfoRow.js.map +1 -1
- package/dist/cjs/components/InputLike/InputLike.d.ts +10 -0
- package/dist/cjs/components/InputLike/InputLike.js +71 -0
- package/dist/cjs/components/InputLike/InputLike.js.map +1 -0
- package/dist/cjs/components/InputLike/InputLikeDivider.d.ts +3 -0
- package/dist/cjs/components/InputLike/InputLikeDivider.js +27 -0
- package/dist/cjs/components/InputLike/InputLikeDivider.js.map +1 -0
- package/dist/cjs/components/LocaleProviderContext/LocaleProviderContext.d.ts +2 -0
- package/dist/cjs/components/LocaleProviderContext/LocaleProviderContext.js +14 -0
- package/dist/cjs/components/LocaleProviderContext/LocaleProviderContext.js.map +1 -0
- package/dist/cjs/components/ModalPage/ModalPage.js +5 -5
- package/dist/cjs/components/ModalPage/ModalPage.js.map +1 -1
- package/dist/cjs/components/Pagination/Pagination.d.ts +42 -0
- package/dist/cjs/components/Pagination/Pagination.js +152 -0
- package/dist/cjs/components/Pagination/Pagination.js.map +1 -0
- package/dist/cjs/components/PanelHeaderBack/PanelHeaderBack.d.ts +1 -1
- package/dist/cjs/components/PanelHeaderContent/PanelHeaderContent.js +2 -4
- package/dist/cjs/components/PanelHeaderContent/PanelHeaderContent.js.map +1 -1
- package/dist/cjs/components/PromoBanner/PromoBanner.js +3 -7
- package/dist/cjs/components/PromoBanner/PromoBanner.js.map +1 -1
- package/dist/cjs/components/Radio/Radio.js +2 -5
- package/dist/cjs/components/Radio/Radio.js.map +1 -1
- package/dist/cjs/components/Removable/Removable.js +8 -4
- package/dist/cjs/components/Removable/Removable.js.map +1 -1
- package/dist/cjs/components/RichCell/RichCell.d.ts +3 -2
- package/dist/cjs/components/RichCell/RichCell.js +0 -1
- package/dist/cjs/components/RichCell/RichCell.js.map +1 -1
- package/dist/cjs/components/Select/Select.d.ts +1 -1
- package/dist/cjs/components/SelectMimicry/SelectMimicry.d.ts +5 -1
- package/dist/cjs/components/SelectMimicry/SelectMimicry.js +11 -5
- package/dist/cjs/components/SelectMimicry/SelectMimicry.js.map +1 -1
- package/dist/cjs/components/SimpleCell/SimpleCell.d.ts +1 -1
- package/dist/cjs/components/SimpleCell/SimpleCell.js +0 -1
- package/dist/cjs/components/SimpleCell/SimpleCell.js.map +1 -1
- package/dist/cjs/components/SimpleCheckbox/SimpleCheckbox.d.ts +0 -1
- package/dist/cjs/components/SimpleCheckbox/SimpleCheckbox.js +2 -5
- package/dist/cjs/components/SimpleCheckbox/SimpleCheckbox.js.map +1 -1
- package/dist/cjs/components/Spacing/Spacing.js +2 -2
- package/dist/cjs/components/Spacing/Spacing.js.map +1 -1
- package/dist/cjs/components/SubnavigationButton/SubnavigationButton.js +4 -7
- package/dist/cjs/components/SubnavigationButton/SubnavigationButton.js.map +1 -1
- package/dist/cjs/components/Tappable/Tappable.d.ts +3 -1
- package/dist/cjs/components/Tappable/Tappable.js +11 -11
- package/dist/cjs/components/Tappable/Tappable.js.map +1 -1
- package/dist/cjs/components/TextTooltip/TextTooltip.js +1 -2
- package/dist/cjs/components/TextTooltip/TextTooltip.js.map +1 -1
- package/dist/cjs/components/Tooltip/Tooltip.js +1 -2
- package/dist/cjs/components/Tooltip/Tooltip.js.map +1 -1
- package/dist/cjs/components/Typography/Caption/Caption.d.ts +8 -4
- package/dist/cjs/components/Typography/Caption/Caption.js +12 -14
- package/dist/cjs/components/Typography/Caption/Caption.js.map +1 -1
- package/dist/cjs/components/Typography/Subhead/Subhead.d.ts +6 -1
- package/dist/cjs/components/Typography/Subhead/Subhead.js +15 -8
- package/dist/cjs/components/Typography/Subhead/Subhead.js.map +1 -1
- package/dist/cjs/components/Typography/Title/Title.d.ts +3 -1
- package/dist/cjs/components/Typography/Title/Title.js +4 -2
- package/dist/cjs/components/Typography/Title/Title.js.map +1 -1
- package/dist/cjs/components/UsersStack/UsersStack.js +3 -5
- package/dist/cjs/components/UsersStack/UsersStack.js.map +1 -1
- package/dist/cjs/components/View/ViewInfinite.d.ts +2 -2
- package/dist/cjs/components/View/ViewInfinite.js +12 -15
- package/dist/cjs/components/View/ViewInfinite.js.map +1 -1
- package/dist/cjs/helpers/typography.d.ts +1 -0
- package/dist/cjs/helpers/typography.js +25 -0
- package/dist/cjs/helpers/typography.js.map +1 -0
- package/dist/cjs/hooks/useBooleanState.d.ts +6 -0
- package/dist/cjs/hooks/useBooleanState.js +42 -0
- package/dist/cjs/hooks/useBooleanState.js.map +1 -0
- package/dist/cjs/hooks/useCalendar.d.ts +18 -0
- package/dist/cjs/hooks/useCalendar.js +78 -0
- package/dist/cjs/hooks/useCalendar.js.map +1 -0
- package/dist/cjs/hooks/useDateInput.d.ts +30 -0
- package/dist/cjs/hooks/useDateInput.js +180 -0
- package/dist/cjs/hooks/useDateInput.js.map +1 -0
- package/dist/cjs/hooks/useKeyboardInputTracker.d.ts +2 -0
- package/dist/cjs/hooks/useKeyboardInputTracker.js +15 -4
- package/dist/cjs/hooks/useKeyboardInputTracker.js.map +1 -1
- package/dist/cjs/hooks/useOrientationChange.d.ts +7 -0
- package/dist/cjs/hooks/useOrientationChange.js +56 -0
- package/dist/cjs/hooks/useOrientationChange.js.map +1 -0
- package/dist/cjs/hooks/usePagination.d.ts +34 -0
- package/dist/cjs/hooks/usePagination.js +81 -0
- package/dist/cjs/hooks/usePagination.js.map +1 -0
- package/dist/cjs/index.d.ts +12 -2
- package/dist/cjs/index.js +68 -4
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/lib/calendar.d.ts +14 -0
- package/dist/cjs/lib/calendar.js +142 -0
- package/dist/cjs/lib/calendar.js.map +1 -0
- package/dist/cjs/lib/utils.d.ts +2 -1
- package/dist/cjs/lib/utils.js +7 -0
- package/dist/cjs/lib/utils.js.map +1 -1
- package/dist/cjs/tokenized/index.d.ts +14 -0
- package/dist/cjs/tokenized/index.js +56 -0
- package/dist/cjs/tokenized/index.js.map +1 -1
- package/dist/cjs/unstable/index.d.ts +6 -6
- package/dist/cjs/unstable/index.js +6 -8
- package/dist/cjs/unstable/index.js.map +1 -1
- package/dist/components/ActionSheet/ActionSheet.js +2 -5
- package/dist/components/ActionSheet/ActionSheet.js.map +1 -1
- package/dist/components/ActionSheetItem/ActionSheetItem.js +2 -5
- package/dist/components/ActionSheetItem/ActionSheetItem.js.map +1 -1
- package/dist/components/Alert/Alert.js +3 -6
- package/dist/components/Alert/Alert.js.map +1 -1
- package/dist/components/Banner/Banner.js +1 -3
- package/dist/components/Banner/Banner.js.map +1 -1
- package/dist/components/Button/Button.d.ts +1 -1
- package/dist/components/Button/Button.js +6 -10
- package/dist/components/Button/Button.js.map +1 -1
- package/dist/components/ButtonGroup/ButtonGroup.d.ts +20 -0
- package/dist/components/ButtonGroup/ButtonGroup.js +23 -0
- package/dist/components/ButtonGroup/ButtonGroup.js.map +1 -0
- package/dist/components/Calendar/Calendar.d.ts +21 -0
- package/dist/components/Calendar/Calendar.js +133 -0
- package/dist/components/Calendar/Calendar.js.map +1 -0
- package/dist/components/CalendarDay/CalendarDay.d.ts +22 -0
- package/dist/components/CalendarDay/CalendarDay.js +91 -0
- package/dist/components/CalendarDay/CalendarDay.js.map +1 -0
- package/dist/components/CalendarDays/CalendarDays.d.ts +22 -0
- package/dist/components/CalendarDays/CalendarDays.js +94 -0
- package/dist/components/CalendarDays/CalendarDays.js.map +1 -0
- package/dist/components/CalendarHeader/CalendarHeader.d.ts +16 -0
- package/dist/components/CalendarHeader/CalendarHeader.js +118 -0
- package/dist/components/CalendarHeader/CalendarHeader.js.map +1 -0
- package/dist/components/CalendarRange/CalendarRange.d.ts +16 -0
- package/dist/components/CalendarRange/CalendarRange.js +196 -0
- package/dist/components/CalendarRange/CalendarRange.js.map +1 -0
- package/dist/components/CalendarTime/CalendarTime.d.ts +11 -0
- package/dist/components/CalendarTime/CalendarTime.js +73 -0
- package/dist/components/CalendarTime/CalendarTime.js.map +1 -0
- package/dist/components/Checkbox/Checkbox.js +1 -4
- package/dist/components/Checkbox/Checkbox.js.map +1 -1
- package/dist/components/Chip/Chip.js +1 -3
- package/dist/components/Chip/Chip.js.map +1 -1
- package/dist/components/ChipsSelect/ChipsSelect.d.ts +1 -2
- package/dist/components/ChipsSelect/ChipsSelect.js +4 -7
- package/dist/components/ChipsSelect/ChipsSelect.js.map +1 -1
- package/dist/components/ConfigProvider/ConfigProvider.d.ts +4 -0
- package/dist/components/ConfigProvider/ConfigProvider.js +36 -20
- package/dist/components/ConfigProvider/ConfigProvider.js.map +1 -1
- package/dist/components/ConfigProvider/ConfigProviderContext.d.ts +0 -7
- package/dist/components/ConfigProvider/ConfigProviderContext.js +2 -3
- package/dist/components/ConfigProvider/ConfigProviderContext.js.map +1 -1
- package/dist/components/ContentCard/ContentCard.js +3 -5
- package/dist/components/ContentCard/ContentCard.js.map +1 -1
- package/dist/components/Counter/Counter.js +2 -2
- package/dist/components/Counter/Counter.js.map +1 -1
- package/dist/components/CustomScrollView/CustomScrollView.d.ts +1 -1
- package/dist/components/CustomScrollView/CustomScrollView.js.map +1 -1
- package/dist/components/CustomSelect/CustomSelect.d.ts +10 -1
- package/dist/components/CustomSelect/CustomSelect.js +44 -15
- package/dist/components/CustomSelect/CustomSelect.js.map +1 -1
- package/dist/components/CustomSelectDropdown/CustomSelectDropdown.d.ts +4 -1
- package/dist/components/CustomSelectDropdown/CustomSelectDropdown.js +14 -5
- package/dist/components/CustomSelectDropdown/CustomSelectDropdown.js.map +1 -1
- package/dist/components/CustomSelectOption/CustomSelectOption.js +2 -4
- package/dist/components/CustomSelectOption/CustomSelectOption.js.map +1 -1
- package/dist/components/DateInput/DateInput.d.ts +12 -0
- package/dist/components/DateInput/DateInput.js +261 -0
- package/dist/components/DateInput/DateInput.js.map +1 -0
- package/dist/components/DateRangeInput/DateRangeInput.d.ts +18 -0
- package/dist/components/DateRangeInput/DateRangeInput.js +281 -0
- package/dist/components/DateRangeInput/DateRangeInput.js.map +1 -0
- package/dist/components/Div/Div.d.ts +1 -2
- package/dist/components/Div/Div.js +1 -3
- package/dist/components/Div/Div.js.map +1 -1
- package/dist/components/Footer/Footer.js +1 -3
- package/dist/components/Footer/Footer.js.map +1 -1
- package/dist/components/FormItem/FormItem.js +1 -4
- package/dist/components/FormItem/FormItem.js.map +1 -1
- package/dist/components/FormStatus/FormStatus.js +2 -7
- package/dist/components/FormStatus/FormStatus.js.map +1 -1
- package/dist/components/Group/Group.js +2 -4
- package/dist/components/Group/Group.js.map +1 -1
- package/dist/components/Header/Header.js +7 -20
- package/dist/components/Header/Header.js.map +1 -1
- package/dist/components/HorizontalCell/HorizontalCell.js +3 -8
- package/dist/components/HorizontalCell/HorizontalCell.js.map +1 -1
- package/dist/components/IconButton/IconButton.d.ts +1 -1
- package/dist/components/InfoRow/InfoRow.js +1 -2
- package/dist/components/InfoRow/InfoRow.js.map +1 -1
- package/dist/components/InputLike/InputLike.d.ts +10 -0
- package/dist/components/InputLike/InputLike.js +52 -0
- package/dist/components/InputLike/InputLike.js.map +1 -0
- package/dist/components/InputLike/InputLikeDivider.d.ts +3 -0
- package/dist/components/InputLike/InputLikeDivider.js +13 -0
- package/dist/components/InputLike/InputLikeDivider.js.map +1 -0
- package/dist/components/LocaleProviderContext/LocaleProviderContext.d.ts +2 -0
- package/dist/components/LocaleProviderContext/LocaleProviderContext.js +3 -0
- package/dist/components/LocaleProviderContext/LocaleProviderContext.js.map +1 -0
- package/dist/components/ModalPage/ModalPage.js +4 -5
- package/dist/components/ModalPage/ModalPage.js.map +1 -1
- package/dist/components/Pagination/Pagination.d.ts +42 -0
- package/dist/components/Pagination/Pagination.js +129 -0
- package/dist/components/Pagination/Pagination.js.map +1 -0
- package/dist/components/PanelHeaderBack/PanelHeaderBack.d.ts +1 -1
- package/dist/components/PanelHeaderContent/PanelHeaderContent.js +1 -3
- package/dist/components/PanelHeaderContent/PanelHeaderContent.js.map +1 -1
- package/dist/components/PromoBanner/PromoBanner.js +1 -5
- package/dist/components/PromoBanner/PromoBanner.js.map +1 -1
- package/dist/components/Radio/Radio.js +1 -4
- package/dist/components/Radio/Radio.js.map +1 -1
- package/dist/components/Removable/Removable.js +8 -4
- package/dist/components/Removable/Removable.js.map +1 -1
- package/dist/components/RichCell/RichCell.d.ts +3 -2
- package/dist/components/RichCell/RichCell.js +0 -1
- package/dist/components/RichCell/RichCell.js.map +1 -1
- package/dist/components/Select/Select.d.ts +1 -1
- package/dist/components/SelectMimicry/SelectMimicry.d.ts +5 -1
- package/dist/components/SelectMimicry/SelectMimicry.js +10 -5
- package/dist/components/SelectMimicry/SelectMimicry.js.map +1 -1
- package/dist/components/SimpleCell/SimpleCell.d.ts +1 -1
- package/dist/components/SimpleCell/SimpleCell.js +0 -1
- package/dist/components/SimpleCell/SimpleCell.js.map +1 -1
- package/dist/components/SimpleCheckbox/SimpleCheckbox.d.ts +0 -1
- package/dist/components/SimpleCheckbox/SimpleCheckbox.js +1 -3
- package/dist/components/SimpleCheckbox/SimpleCheckbox.js.map +1 -1
- package/dist/components/Spacing/Spacing.js +2 -2
- package/dist/components/Spacing/Spacing.js.map +1 -1
- package/dist/components/SubnavigationButton/SubnavigationButton.js +3 -6
- package/dist/components/SubnavigationButton/SubnavigationButton.js.map +1 -1
- package/dist/components/Tappable/Tappable.d.ts +3 -1
- package/dist/components/Tappable/Tappable.js +10 -11
- package/dist/components/Tappable/Tappable.js.map +1 -1
- package/dist/components/TextTooltip/TextTooltip.js +1 -2
- package/dist/components/TextTooltip/TextTooltip.js.map +1 -1
- package/dist/components/Tooltip/Tooltip.js +1 -2
- package/dist/components/Tooltip/Tooltip.js.map +1 -1
- package/dist/components/Typography/Caption/Caption.d.ts +8 -4
- package/dist/components/Typography/Caption/Caption.js +10 -14
- package/dist/components/Typography/Caption/Caption.js.map +1 -1
- package/dist/components/Typography/Subhead/Subhead.d.ts +6 -1
- package/dist/components/Typography/Subhead/Subhead.js +13 -7
- package/dist/components/Typography/Subhead/Subhead.js.map +1 -1
- package/dist/components/Typography/Title/Title.d.ts +3 -1
- package/dist/components/Typography/Title/Title.js +3 -2
- package/dist/components/Typography/Title/Title.js.map +1 -1
- package/dist/components/UsersStack/UsersStack.js +2 -4
- package/dist/components/UsersStack/UsersStack.js.map +1 -1
- package/dist/components/View/ViewInfinite.d.ts +2 -2
- package/dist/components/View/ViewInfinite.js +10 -11
- package/dist/components/View/ViewInfinite.js.map +1 -1
- package/dist/components.css +5 -5
- package/dist/components.css.map +1 -1
- package/dist/cssm/components/ActionSheet/ActionSheet.js +2 -5
- package/dist/cssm/components/ActionSheet/ActionSheet.js.map +1 -1
- package/dist/cssm/components/ActionSheetItem/ActionSheetItem.js +2 -5
- package/dist/cssm/components/ActionSheetItem/ActionSheetItem.js.map +1 -1
- package/dist/cssm/components/Alert/Alert.js +3 -6
- package/dist/cssm/components/Alert/Alert.js.map +1 -1
- package/dist/cssm/components/Banner/Banner.js +1 -3
- package/dist/cssm/components/Banner/Banner.js.map +1 -1
- package/dist/cssm/components/Button/Button.css +1 -1
- package/dist/cssm/components/Button/Button.d.ts +1 -1
- package/dist/cssm/components/Button/Button.js +6 -10
- package/dist/cssm/components/Button/Button.js.map +1 -1
- package/dist/cssm/components/ButtonGroup/ButtonGroup.css +1 -0
- package/dist/cssm/components/ButtonGroup/ButtonGroup.d.ts +20 -0
- package/dist/cssm/components/ButtonGroup/ButtonGroup.js +24 -0
- package/dist/cssm/components/ButtonGroup/ButtonGroup.js.map +1 -0
- package/dist/cssm/components/Calendar/Calendar.css +1 -0
- package/dist/cssm/components/Calendar/Calendar.d.ts +21 -0
- package/dist/cssm/components/Calendar/Calendar.js +134 -0
- package/dist/cssm/components/Calendar/Calendar.js.map +1 -0
- package/dist/cssm/components/CalendarDay/CalendarDay.css +1 -0
- package/dist/cssm/components/CalendarDay/CalendarDay.d.ts +22 -0
- package/dist/cssm/components/CalendarDay/CalendarDay.js +92 -0
- package/dist/cssm/components/CalendarDay/CalendarDay.js.map +1 -0
- package/dist/cssm/components/CalendarDays/CalendarDays.css +1 -0
- package/dist/cssm/components/CalendarDays/CalendarDays.d.ts +22 -0
- package/dist/cssm/components/CalendarDays/CalendarDays.js +95 -0
- package/dist/cssm/components/CalendarDays/CalendarDays.js.map +1 -0
- package/dist/cssm/components/CalendarHeader/CalendarHeader.css +1 -0
- package/dist/cssm/components/CalendarHeader/CalendarHeader.d.ts +16 -0
- package/dist/cssm/components/CalendarHeader/CalendarHeader.js +119 -0
- package/dist/cssm/components/CalendarHeader/CalendarHeader.js.map +1 -0
- package/dist/cssm/components/CalendarRange/CalendarRange.css +1 -0
- package/dist/cssm/components/CalendarRange/CalendarRange.d.ts +16 -0
- package/dist/cssm/components/CalendarRange/CalendarRange.js +197 -0
- package/dist/cssm/components/CalendarRange/CalendarRange.js.map +1 -0
- package/dist/cssm/components/CalendarTime/CalendarTime.css +1 -0
- package/dist/cssm/components/CalendarTime/CalendarTime.d.ts +11 -0
- package/dist/cssm/components/CalendarTime/CalendarTime.js +74 -0
- package/dist/cssm/components/CalendarTime/CalendarTime.js.map +1 -0
- package/dist/cssm/components/Checkbox/Checkbox.js +1 -4
- package/dist/cssm/components/Checkbox/Checkbox.js.map +1 -1
- package/dist/cssm/components/Chip/Chip.js +1 -3
- package/dist/cssm/components/Chip/Chip.js.map +1 -1
- package/dist/cssm/components/ChipsSelect/ChipsSelect.d.ts +1 -2
- package/dist/cssm/components/ChipsSelect/ChipsSelect.js +4 -7
- package/dist/cssm/components/ChipsSelect/ChipsSelect.js.map +1 -1
- package/dist/cssm/components/ConfigProvider/ConfigProvider.d.ts +4 -0
- package/dist/cssm/components/ConfigProvider/ConfigProvider.js +36 -20
- package/dist/cssm/components/ConfigProvider/ConfigProvider.js.map +1 -1
- package/dist/cssm/components/ConfigProvider/ConfigProviderContext.d.ts +0 -7
- package/dist/cssm/components/ConfigProvider/ConfigProviderContext.js +2 -3
- package/dist/cssm/components/ConfigProvider/ConfigProviderContext.js.map +1 -1
- package/dist/cssm/components/ContentCard/ContentCard.js +3 -5
- package/dist/cssm/components/ContentCard/ContentCard.js.map +1 -1
- package/dist/cssm/components/Counter/Counter.js +2 -2
- package/dist/cssm/components/Counter/Counter.js.map +1 -1
- package/dist/cssm/components/CustomScrollView/CustomScrollView.d.ts +1 -1
- package/dist/cssm/components/CustomScrollView/CustomScrollView.js.map +1 -1
- package/dist/cssm/components/CustomSelect/CustomSelect.css +1 -1
- package/dist/cssm/components/CustomSelect/CustomSelect.d.ts +10 -1
- package/dist/cssm/components/CustomSelect/CustomSelect.js +44 -15
- package/dist/cssm/components/CustomSelect/CustomSelect.js.map +1 -1
- package/dist/cssm/components/CustomSelectDropdown/CustomSelectDropdown.css +1 -1
- package/dist/cssm/components/CustomSelectDropdown/CustomSelectDropdown.d.ts +4 -1
- package/dist/cssm/components/CustomSelectDropdown/CustomSelectDropdown.js +14 -5
- package/dist/cssm/components/CustomSelectDropdown/CustomSelectDropdown.js.map +1 -1
- package/dist/cssm/components/CustomSelectOption/CustomSelectOption.js +2 -4
- package/dist/cssm/components/CustomSelectOption/CustomSelectOption.js.map +1 -1
- package/dist/cssm/components/DateInput/DateInput.css +1 -0
- package/dist/cssm/components/DateInput/DateInput.d.ts +12 -0
- package/dist/cssm/components/DateInput/DateInput.js +262 -0
- package/dist/cssm/components/DateInput/DateInput.js.map +1 -0
- package/dist/cssm/components/DateRangeInput/DateRangeInput.css +1 -0
- package/dist/cssm/components/DateRangeInput/DateRangeInput.d.ts +18 -0
- package/dist/cssm/components/DateRangeInput/DateRangeInput.js +282 -0
- package/dist/cssm/components/DateRangeInput/DateRangeInput.js.map +1 -0
- package/dist/cssm/components/Div/Div.css +1 -1
- package/dist/cssm/components/Div/Div.d.ts +1 -2
- package/dist/cssm/components/Div/Div.js +1 -3
- package/dist/cssm/components/Div/Div.js.map +1 -1
- package/dist/cssm/components/Footer/Footer.js +1 -3
- package/dist/cssm/components/Footer/Footer.js.map +1 -1
- package/dist/cssm/components/FormField/FormField.css +1 -1
- package/dist/cssm/components/FormItem/FormItem.js +1 -4
- package/dist/cssm/components/FormItem/FormItem.js.map +1 -1
- package/dist/cssm/components/FormStatus/FormStatus.js +2 -7
- package/dist/cssm/components/FormStatus/FormStatus.js.map +1 -1
- package/dist/cssm/components/Group/Group.js +2 -4
- package/dist/cssm/components/Group/Group.js.map +1 -1
- package/dist/cssm/components/Header/Header.js +7 -20
- package/dist/cssm/components/Header/Header.js.map +1 -1
- package/dist/cssm/components/HorizontalCell/HorizontalCell.js +3 -8
- package/dist/cssm/components/HorizontalCell/HorizontalCell.js.map +1 -1
- package/dist/cssm/components/IconButton/IconButton.d.ts +1 -1
- package/dist/cssm/components/InfoRow/InfoRow.js +1 -2
- package/dist/cssm/components/InfoRow/InfoRow.js.map +1 -1
- package/dist/cssm/components/InputLike/InputLike.css +1 -0
- package/dist/cssm/components/InputLike/InputLike.d.ts +10 -0
- package/dist/cssm/components/InputLike/InputLike.js +53 -0
- package/dist/cssm/components/InputLike/InputLike.js.map +1 -0
- package/dist/cssm/components/InputLike/InputLikeDivider.css +1 -0
- package/dist/cssm/components/InputLike/InputLikeDivider.d.ts +3 -0
- package/dist/cssm/components/InputLike/InputLikeDivider.js +14 -0
- package/dist/cssm/components/InputLike/InputLikeDivider.js.map +1 -0
- package/dist/cssm/components/LocaleProviderContext/LocaleProviderContext.d.ts +2 -0
- package/dist/cssm/components/LocaleProviderContext/LocaleProviderContext.js +3 -0
- package/dist/cssm/components/LocaleProviderContext/LocaleProviderContext.js.map +1 -0
- package/dist/cssm/components/ModalPage/ModalPage.js +4 -5
- package/dist/cssm/components/ModalPage/ModalPage.js.map +1 -1
- package/dist/cssm/components/Pagination/Pagination.css +1 -0
- package/dist/cssm/components/Pagination/Pagination.d.ts +42 -0
- package/dist/cssm/components/Pagination/Pagination.js +130 -0
- package/dist/cssm/components/Pagination/Pagination.js.map +1 -0
- package/dist/cssm/components/PanelHeaderBack/PanelHeaderBack.d.ts +1 -1
- package/dist/cssm/components/PanelHeaderContent/PanelHeaderContent.js +1 -3
- package/dist/cssm/components/PanelHeaderContent/PanelHeaderContent.js.map +1 -1
- package/dist/cssm/components/PromoBanner/PromoBanner.js +1 -5
- package/dist/cssm/components/PromoBanner/PromoBanner.js.map +1 -1
- package/dist/cssm/components/Radio/Radio.js +1 -4
- package/dist/cssm/components/Radio/Radio.js.map +1 -1
- package/dist/cssm/components/Removable/Removable.js +8 -4
- package/dist/cssm/components/Removable/Removable.js.map +1 -1
- package/dist/cssm/components/RichCell/RichCell.d.ts +3 -2
- package/dist/cssm/components/RichCell/RichCell.js +0 -1
- package/dist/cssm/components/RichCell/RichCell.js.map +1 -1
- package/dist/cssm/components/Select/Select.css +1 -1
- package/dist/cssm/components/Select/Select.d.ts +1 -1
- package/dist/cssm/components/SelectMimicry/SelectMimicry.css +1 -0
- package/dist/cssm/components/SelectMimicry/SelectMimicry.d.ts +5 -1
- package/dist/cssm/components/SelectMimicry/SelectMimicry.js +11 -5
- package/dist/cssm/components/SelectMimicry/SelectMimicry.js.map +1 -1
- package/dist/cssm/components/SimpleCell/SimpleCell.d.ts +1 -1
- package/dist/cssm/components/SimpleCell/SimpleCell.js +0 -1
- package/dist/cssm/components/SimpleCell/SimpleCell.js.map +1 -1
- package/dist/cssm/components/SimpleCheckbox/SimpleCheckbox.d.ts +0 -1
- package/dist/cssm/components/SimpleCheckbox/SimpleCheckbox.js +1 -3
- package/dist/cssm/components/SimpleCheckbox/SimpleCheckbox.js.map +1 -1
- package/dist/cssm/components/Spacing/Spacing.js +2 -2
- package/dist/cssm/components/Spacing/Spacing.js.map +1 -1
- package/dist/cssm/components/SubnavigationButton/SubnavigationButton.js +3 -6
- package/dist/cssm/components/SubnavigationButton/SubnavigationButton.js.map +1 -1
- package/dist/cssm/components/Tappable/Tappable.d.ts +3 -1
- package/dist/cssm/components/Tappable/Tappable.js +10 -11
- package/dist/cssm/components/Tappable/Tappable.js.map +1 -1
- package/dist/cssm/components/TextTooltip/TextTooltip.js +1 -2
- package/dist/cssm/components/TextTooltip/TextTooltip.js.map +1 -1
- package/dist/cssm/components/Tooltip/Tooltip.js +1 -2
- package/dist/cssm/components/Tooltip/Tooltip.js.map +1 -1
- package/dist/cssm/components/Typography/Caption/Caption.css +1 -1
- package/dist/cssm/components/Typography/Caption/Caption.d.ts +8 -4
- package/dist/cssm/components/Typography/Caption/Caption.js +10 -14
- package/dist/cssm/components/Typography/Caption/Caption.js.map +1 -1
- package/dist/cssm/components/Typography/Subhead/Subhead.css +1 -1
- package/dist/cssm/components/Typography/Subhead/Subhead.d.ts +6 -1
- package/dist/cssm/components/Typography/Subhead/Subhead.js +13 -7
- package/dist/cssm/components/Typography/Subhead/Subhead.js.map +1 -1
- package/dist/cssm/components/Typography/Title/Title.d.ts +3 -1
- package/dist/cssm/components/Typography/Title/Title.js +3 -2
- package/dist/cssm/components/Typography/Title/Title.js.map +1 -1
- package/dist/cssm/components/UsersStack/UsersStack.js +2 -4
- package/dist/cssm/components/UsersStack/UsersStack.js.map +1 -1
- package/dist/cssm/components/View/ViewInfinite.d.ts +2 -2
- package/dist/cssm/components/View/ViewInfinite.js +10 -11
- package/dist/cssm/components/View/ViewInfinite.js.map +1 -1
- package/dist/cssm/helpers/typography.d.ts +1 -0
- package/dist/cssm/helpers/typography.js +18 -0
- package/dist/cssm/helpers/typography.js.map +1 -0
- package/dist/cssm/hooks/useBooleanState.d.ts +6 -0
- package/dist/cssm/hooks/useBooleanState.js +27 -0
- package/dist/cssm/hooks/useBooleanState.js.map +1 -0
- package/dist/cssm/hooks/useCalendar.d.ts +18 -0
- package/dist/cssm/hooks/useCalendar.js +64 -0
- package/dist/cssm/hooks/useCalendar.js.map +1 -0
- package/dist/cssm/hooks/useDateInput.d.ts +30 -0
- package/dist/cssm/hooks/useDateInput.js +163 -0
- package/dist/cssm/hooks/useDateInput.js.map +1 -0
- package/dist/cssm/hooks/useKeyboardInputTracker.d.ts +2 -0
- package/dist/cssm/hooks/useKeyboardInputTracker.js +11 -4
- package/dist/cssm/hooks/useKeyboardInputTracker.js.map +1 -1
- package/dist/cssm/hooks/useOrientationChange.d.ts +7 -0
- package/dist/cssm/hooks/useOrientationChange.js +42 -0
- package/dist/cssm/hooks/useOrientationChange.js.map +1 -0
- package/dist/cssm/hooks/usePagination.d.ts +34 -0
- package/dist/cssm/hooks/usePagination.js +67 -0
- package/dist/cssm/hooks/usePagination.js.map +1 -0
- package/dist/cssm/index.d.ts +12 -2
- package/dist/cssm/index.js +11 -3
- package/dist/cssm/index.js.map +1 -1
- package/dist/cssm/lib/calendar.d.ts +14 -0
- package/dist/cssm/lib/calendar.js +111 -0
- package/dist/cssm/lib/calendar.js.map +1 -0
- package/dist/cssm/lib/utils.d.ts +2 -1
- package/dist/cssm/lib/utils.js +3 -0
- package/dist/cssm/lib/utils.js.map +1 -1
- package/dist/cssm/styles/components.css +5 -5
- package/dist/cssm/styles/themes.css +1 -1
- package/dist/cssm/tokenized/index.d.ts +14 -0
- package/dist/cssm/tokenized/index.js +7 -0
- package/dist/cssm/tokenized/index.js.map +1 -1
- package/dist/cssm/unstable/index.d.ts +6 -6
- package/dist/cssm/unstable/index.js +3 -3
- package/dist/cssm/unstable/index.js.map +1 -1
- package/dist/helpers/typography.d.ts +1 -0
- package/dist/helpers/typography.js +18 -0
- package/dist/helpers/typography.js.map +1 -0
- package/dist/hooks/useBooleanState.d.ts +6 -0
- package/dist/hooks/useBooleanState.js +27 -0
- package/dist/hooks/useBooleanState.js.map +1 -0
- package/dist/hooks/useCalendar.d.ts +18 -0
- package/dist/hooks/useCalendar.js +64 -0
- package/dist/hooks/useCalendar.js.map +1 -0
- package/dist/hooks/useDateInput.d.ts +30 -0
- package/dist/hooks/useDateInput.js +163 -0
- package/dist/hooks/useDateInput.js.map +1 -0
- package/dist/hooks/useKeyboardInputTracker.d.ts +2 -0
- package/dist/hooks/useKeyboardInputTracker.js +11 -4
- package/dist/hooks/useKeyboardInputTracker.js.map +1 -1
- package/dist/hooks/useOrientationChange.d.ts +7 -0
- package/dist/hooks/useOrientationChange.js +42 -0
- package/dist/hooks/useOrientationChange.js.map +1 -0
- package/dist/hooks/usePagination.d.ts +34 -0
- package/dist/hooks/usePagination.js +67 -0
- package/dist/hooks/usePagination.js.map +1 -0
- package/dist/index.d.ts +12 -2
- package/dist/index.js +11 -3
- package/dist/index.js.map +1 -1
- package/dist/lib/calendar.d.ts +14 -0
- package/dist/lib/calendar.js +111 -0
- package/dist/lib/calendar.js.map +1 -0
- package/dist/lib/utils.d.ts +2 -1
- package/dist/lib/utils.js +3 -0
- package/dist/lib/utils.js.map +1 -1
- package/dist/tokenized/index.d.ts +14 -0
- package/dist/tokenized/index.js +7 -0
- package/dist/tokenized/index.js.map +1 -1
- package/dist/unstable/index.d.ts +6 -6
- package/dist/unstable/index.js +3 -3
- package/dist/unstable/index.js.map +1 -1
- package/dist/vkui.css +6 -6
- package/dist/vkui.css.map +1 -1
- package/package.json +14 -11
- package/src/components/ActionSheet/ActionSheet.tsx +3 -6
- package/src/components/ActionSheetItem/ActionSheetItem.tsx +3 -11
- package/src/components/Alert/Alert.tsx +3 -7
- package/src/components/Alert/Readme.md +4 -4
- package/src/components/AppRoot/Readme.md +2 -2
- package/src/components/Banner/Banner.tsx +1 -1
- package/src/components/Button/Button.css +26 -1
- package/src/components/Button/Button.tsx +6 -9
- package/src/components/ButtonGroup/ButtonGroup.css +52 -0
- package/src/components/ButtonGroup/ButtonGroup.tsx +48 -0
- package/src/components/ButtonGroup/Readme.md +311 -0
- package/src/components/Calendar/Calendar.css +31 -0
- package/src/components/Calendar/Calendar.tsx +184 -0
- package/src/components/Calendar/Readme.md +124 -0
- package/src/components/CalendarDay/CalendarDay.css +85 -0
- package/src/components/CalendarDay/CalendarDay.tsx +114 -0
- package/src/components/CalendarDays/CalendarDays.css +31 -0
- package/src/components/CalendarDays/CalendarDays.tsx +131 -0
- package/src/components/CalendarHeader/CalendarHeader.css +50 -0
- package/src/components/CalendarHeader/CalendarHeader.tsx +167 -0
- package/src/components/CalendarRange/CalendarRange.css +27 -0
- package/src/components/CalendarRange/CalendarRange.tsx +278 -0
- package/src/components/CalendarRange/Readme.md +85 -0
- package/src/components/CalendarTime/CalendarTime.css +18 -0
- package/src/components/CalendarTime/CalendarTime.tsx +88 -0
- package/src/components/Checkbox/Checkbox.tsx +2 -9
- package/src/components/Chip/Chip.tsx +2 -8
- package/src/components/ChipsSelect/ChipsSelect.tsx +6 -7
- package/src/components/ConfigProvider/ConfigProvider.tsx +36 -18
- package/src/components/ConfigProvider/ConfigProviderContext.tsx +9 -13
- package/src/components/ContentCard/ContentCard.tsx +3 -10
- package/src/components/Counter/Counter.tsx +2 -2
- package/src/components/CustomScrollView/CustomScrollView.tsx +1 -1
- package/src/components/CustomSelect/CustomSelect.css +0 -15
- package/src/components/CustomSelect/CustomSelect.tsx +46 -7
- package/src/components/CustomSelectDropdown/CustomSelectDropdown.css +13 -1
- package/src/components/CustomSelectDropdown/CustomSelectDropdown.tsx +12 -3
- package/src/components/CustomSelectOption/CustomSelectOption.tsx +3 -7
- package/src/components/CustomSelectOption/Readme.md +1 -1
- package/src/components/DateInput/DateInput.css +20 -0
- package/src/components/DateInput/DateInput.tsx +317 -0
- package/src/components/DateInput/Readme.md +116 -0
- package/src/components/DateRangeInput/DateRangeInput.css +16 -0
- package/src/components/DateRangeInput/DateRangeInput.tsx +350 -0
- package/src/components/DateRangeInput/Readme.md +96 -0
- package/src/components/Div/Div.css +1 -8
- package/src/components/Div/Div.tsx +2 -5
- package/src/components/Footer/Footer.tsx +2 -8
- package/src/components/Footer/Readme.md +1 -1
- package/src/components/FormField/FormField.css +33 -0
- package/src/components/FormItem/FormItem.tsx +3 -9
- package/src/components/FormStatus/FormStatus.tsx +3 -9
- package/src/components/Gallery/Readme.md +1 -1
- package/src/components/Group/Group.tsx +2 -4
- package/src/components/Header/Header.tsx +8 -11
- package/src/components/HorizontalCell/HorizontalCell.tsx +4 -12
- package/src/components/InfoRow/InfoRow.tsx +1 -1
- package/src/components/InputLike/InputLike.css +25 -0
- package/src/components/InputLike/InputLike.tsx +72 -0
- package/src/components/InputLike/InputLikeDivider.css +4 -0
- package/src/components/InputLike/InputLikeDivider.tsx +12 -0
- package/src/components/LocaleProviderContext/LocaleProviderContext.tsx +5 -0
- package/src/components/ModalPage/ModalPage.tsx +10 -4
- package/src/components/Pagination/Pagination.css +62 -0
- package/src/components/Pagination/Pagination.tsx +196 -0
- package/src/components/Pagination/Readme.md +110 -0
- package/src/components/PanelHeaderContent/PanelHeaderContent.tsx +2 -8
- package/src/components/PopoutWrapper/Readme.md +1 -1
- package/src/components/Popper/Readme.md +1 -1
- package/src/components/PromoBanner/PromoBanner.tsx +3 -5
- package/src/components/Radio/Radio.tsx +2 -9
- package/src/components/Removable/Removable.tsx +9 -7
- package/src/components/RichCell/Readme.md +4 -4
- package/src/components/RichCell/RichCell.tsx +3 -6
- package/src/components/RichTooltip/Readme.md +1 -1
- package/src/components/Select/Select.css +5 -0
- package/src/components/SelectMimicry/SelectMimicry.css +10 -0
- package/src/components/SelectMimicry/SelectMimicry.tsx +13 -3
- package/src/components/SimpleCell/SimpleCell.tsx +1 -5
- package/src/components/SimpleCheckbox/SimpleCheckbox.tsx +0 -3
- package/src/components/Spacing/Spacing.tsx +2 -2
- package/src/components/SubnavigationButton/SubnavigationButton.tsx +3 -9
- package/src/components/Tabbar/Readme.md +1 -1
- package/src/components/Tappable/Tappable.tsx +12 -3
- package/src/components/TextTooltip/Readme.md +1 -1
- package/src/components/TextTooltip/TextTooltip.tsx +2 -6
- package/src/components/Tooltip/Tooltip.tsx +2 -6
- package/src/components/Typography/Caption/Caption.css +61 -19
- package/src/components/Typography/Caption/Caption.tsx +24 -15
- package/src/components/Typography/Caption/Readme.md +26 -48
- package/src/components/Typography/Subhead/Readme.md +18 -24
- package/src/components/Typography/Subhead/Subhead.css +22 -7
- package/src/components/Typography/Subhead/Subhead.tsx +25 -7
- package/src/components/Typography/Title/Title.tsx +6 -3
- package/src/components/UsersStack/Readme.md +1 -1
- package/src/components/UsersStack/UsersStack.tsx +3 -4
- package/src/components/View/Readme.md +1 -1
- package/src/components/View/ViewInfinite.tsx +3 -4
- package/src/helpers/typography.ts +24 -0
- package/src/hooks/useBooleanState.ts +19 -0
- package/src/hooks/useCalendar.ts +78 -0
- package/src/hooks/useDateInput.ts +213 -0
- package/src/hooks/useKeyboardInputTracker.ts +25 -8
- package/src/hooks/useOrientationChange.ts +39 -0
- package/src/hooks/usePagination.ts +96 -0
- package/src/index.ts +12 -2
- package/src/lib/calendar.ts +123 -0
- package/src/lib/utils.ts +4 -1
- package/src/styles/components.css +14 -0
- package/src/tokenized/index.ts +21 -0
- package/src/unstable/index.ts +6 -6
- package/postcss.config.js +0 -54
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/extends";
|
|
2
|
+
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
3
|
+
var _excluded = ["enableTime", "shouldDisableDate", "disableFuture", "disablePast", "value", "onChange", "calendarPlacement", "style", "className", "doneButtonText", "closeOnChange", "disablePickers", "getRootRef", "name", "autoFocus", "disabled", "onClick", "onFocus", "prevMonthAriaLabel", "nextMonthAriaLabel", "showNeighboringMonth", "size", "changeMonthAriaLabel", "changeYearAriaLabel", "changeDayAriaLabel", "changeHoursAriaLabel", "changeMinutesAriaLabel", "clearFieldAriaLabel", "showCalendarAriaLabel"];
|
|
4
|
+
import { createScopedElement } from "../../lib/jsxRuntime";
|
|
5
|
+
import * as React from "react";
|
|
6
|
+
import { format, isMatch, parse } from "date-fns";
|
|
7
|
+
import { Icon16Clear, Icon20CalendarOutline } from "@vkontakte/icons";
|
|
8
|
+
import { Calendar } from "../Calendar/Calendar";
|
|
9
|
+
import { Popper } from "../Popper/Popper";
|
|
10
|
+
import { multiRef } from "../../lib/utils";
|
|
11
|
+
import IconButton from "../IconButton/IconButton";
|
|
12
|
+
import { classNames } from "../../lib/classNames";
|
|
13
|
+
import { FormField } from "../FormField/FormField";
|
|
14
|
+
import { useDateInput } from "../../hooks/useDateInput";
|
|
15
|
+
import { InputLike } from "../InputLike/InputLike";
|
|
16
|
+
import { InputLikeDivider } from "../InputLike/InputLikeDivider";
|
|
17
|
+
import { useAdaptivity } from "../../hooks/useAdaptivity";
|
|
18
|
+
import { callMultiple } from "../../lib/callMultiple";
|
|
19
|
+
|
|
20
|
+
var elementsConfig = function elementsConfig(index) {
|
|
21
|
+
var length = 2;
|
|
22
|
+
var min = 1;
|
|
23
|
+
var max = 0;
|
|
24
|
+
|
|
25
|
+
switch (index) {
|
|
26
|
+
case 0:
|
|
27
|
+
max = 31;
|
|
28
|
+
break;
|
|
29
|
+
|
|
30
|
+
case 1:
|
|
31
|
+
max = 12;
|
|
32
|
+
break;
|
|
33
|
+
|
|
34
|
+
case 2:
|
|
35
|
+
max = 2100;
|
|
36
|
+
min = 1900;
|
|
37
|
+
length = 4;
|
|
38
|
+
break;
|
|
39
|
+
|
|
40
|
+
case 3:
|
|
41
|
+
max = 23;
|
|
42
|
+
break;
|
|
43
|
+
|
|
44
|
+
case 4:
|
|
45
|
+
max = 59;
|
|
46
|
+
break;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
return {
|
|
50
|
+
length: length,
|
|
51
|
+
min: min,
|
|
52
|
+
max: max
|
|
53
|
+
};
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
var getInternalValue = function getInternalValue(value) {
|
|
57
|
+
var newValue = ["", "", "", "", ""];
|
|
58
|
+
|
|
59
|
+
if (value) {
|
|
60
|
+
newValue[0] = String(value.getDate()).padStart(2, "0");
|
|
61
|
+
newValue[1] = String(value.getMonth() + 1).padStart(2, "0");
|
|
62
|
+
newValue[2] = String(value.getFullYear()).padStart(4, "0");
|
|
63
|
+
newValue[3] = String(value.getHours()).padStart(2, "0");
|
|
64
|
+
newValue[4] = String(value.getMinutes()).padStart(2, "0");
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
return newValue;
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
export var DateInput = function DateInput(_ref) {
|
|
71
|
+
var enableTime = _ref.enableTime,
|
|
72
|
+
shouldDisableDate = _ref.shouldDisableDate,
|
|
73
|
+
disableFuture = _ref.disableFuture,
|
|
74
|
+
disablePast = _ref.disablePast,
|
|
75
|
+
value = _ref.value,
|
|
76
|
+
onChange = _ref.onChange,
|
|
77
|
+
_ref$calendarPlacemen = _ref.calendarPlacement,
|
|
78
|
+
calendarPlacement = _ref$calendarPlacemen === void 0 ? "bottom-start" : _ref$calendarPlacemen,
|
|
79
|
+
style = _ref.style,
|
|
80
|
+
className = _ref.className,
|
|
81
|
+
doneButtonText = _ref.doneButtonText,
|
|
82
|
+
_ref$closeOnChange = _ref.closeOnChange,
|
|
83
|
+
closeOnChange = _ref$closeOnChange === void 0 ? true : _ref$closeOnChange,
|
|
84
|
+
disablePickers = _ref.disablePickers,
|
|
85
|
+
getRootRef = _ref.getRootRef,
|
|
86
|
+
name = _ref.name,
|
|
87
|
+
autoFocus = _ref.autoFocus,
|
|
88
|
+
disabled = _ref.disabled,
|
|
89
|
+
onClick = _ref.onClick,
|
|
90
|
+
onFocus = _ref.onFocus,
|
|
91
|
+
prevMonthAriaLabel = _ref.prevMonthAriaLabel,
|
|
92
|
+
nextMonthAriaLabel = _ref.nextMonthAriaLabel,
|
|
93
|
+
showNeighboringMonth = _ref.showNeighboringMonth,
|
|
94
|
+
size = _ref.size,
|
|
95
|
+
_ref$changeMonthAriaL = _ref.changeMonthAriaLabel,
|
|
96
|
+
changeMonthAriaLabel = _ref$changeMonthAriaL === void 0 ? "Изменить месяц" : _ref$changeMonthAriaL,
|
|
97
|
+
_ref$changeYearAriaLa = _ref.changeYearAriaLabel,
|
|
98
|
+
changeYearAriaLabel = _ref$changeYearAriaLa === void 0 ? "Изменить год" : _ref$changeYearAriaLa,
|
|
99
|
+
_ref$changeDayAriaLab = _ref.changeDayAriaLabel,
|
|
100
|
+
changeDayAriaLabel = _ref$changeDayAriaLab === void 0 ? "Изменить день" : _ref$changeDayAriaLab,
|
|
101
|
+
_ref$changeHoursAriaL = _ref.changeHoursAriaLabel,
|
|
102
|
+
changeHoursAriaLabel = _ref$changeHoursAriaL === void 0 ? "Изменить час" : _ref$changeHoursAriaL,
|
|
103
|
+
_ref$changeMinutesAri = _ref.changeMinutesAriaLabel,
|
|
104
|
+
changeMinutesAriaLabel = _ref$changeMinutesAri === void 0 ? "Изменить минуту" : _ref$changeMinutesAri,
|
|
105
|
+
_ref$clearFieldAriaLa = _ref.clearFieldAriaLabel,
|
|
106
|
+
clearFieldAriaLabel = _ref$clearFieldAriaLa === void 0 ? "Очистить поле" : _ref$clearFieldAriaLa,
|
|
107
|
+
_ref$showCalendarAria = _ref.showCalendarAriaLabel,
|
|
108
|
+
showCalendarAriaLabel = _ref$showCalendarAria === void 0 ? "Показать календарь" : _ref$showCalendarAria,
|
|
109
|
+
props = _objectWithoutProperties(_ref, _excluded);
|
|
110
|
+
|
|
111
|
+
var daysRef = React.useRef(null);
|
|
112
|
+
var monthsRef = React.useRef(null);
|
|
113
|
+
var yearsRef = React.useRef(null);
|
|
114
|
+
var hoursRef = React.useRef(null);
|
|
115
|
+
var minutesRef = React.useRef(null);
|
|
116
|
+
var maxElement = enableTime ? 4 : 2;
|
|
117
|
+
var onInternalValueChange = React.useCallback(function (internalValue) {
|
|
118
|
+
for (var i = 0; i <= maxElement; i += 1) {
|
|
119
|
+
if (internalValue[i].length < elementsConfig(i).length) {
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
var formattedValue = "".concat(internalValue[0], ".").concat(internalValue[1], ".").concat(internalValue[2]);
|
|
125
|
+
var mask = "dd.MM.yyyy";
|
|
126
|
+
|
|
127
|
+
if (enableTime) {
|
|
128
|
+
formattedValue += " ".concat(internalValue[3], ":").concat(internalValue[4]);
|
|
129
|
+
mask += " HH:mm";
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
if (isMatch(formattedValue, mask)) {
|
|
133
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(parse(formattedValue, mask, value !== null && value !== void 0 ? value : new Date()));
|
|
134
|
+
}
|
|
135
|
+
}, [enableTime, maxElement, onChange, value]);
|
|
136
|
+
var refs = React.useMemo(function () {
|
|
137
|
+
return [daysRef, monthsRef, yearsRef, hoursRef, minutesRef];
|
|
138
|
+
}, [daysRef, monthsRef, yearsRef, hoursRef, minutesRef]);
|
|
139
|
+
|
|
140
|
+
var _useDateInput = useDateInput({
|
|
141
|
+
maxElement: maxElement,
|
|
142
|
+
refs: refs,
|
|
143
|
+
autoFocus: autoFocus,
|
|
144
|
+
disabled: disabled,
|
|
145
|
+
elementsConfig: elementsConfig,
|
|
146
|
+
onChange: onChange,
|
|
147
|
+
onInternalValueChange: onInternalValueChange,
|
|
148
|
+
getInternalValue: getInternalValue,
|
|
149
|
+
value: value
|
|
150
|
+
}),
|
|
151
|
+
rootRef = _useDateInput.rootRef,
|
|
152
|
+
calendarRef = _useDateInput.calendarRef,
|
|
153
|
+
open = _useDateInput.open,
|
|
154
|
+
openCalendar = _useDateInput.openCalendar,
|
|
155
|
+
closeCalendar = _useDateInput.closeCalendar,
|
|
156
|
+
internalValue = _useDateInput.internalValue,
|
|
157
|
+
handleKeyDown = _useDateInput.handleKeyDown,
|
|
158
|
+
setFocusedElement = _useDateInput.setFocusedElement,
|
|
159
|
+
handleFieldEnter = _useDateInput.handleFieldEnter,
|
|
160
|
+
clear = _useDateInput.clear,
|
|
161
|
+
removeFocusFromField = _useDateInput.removeFocusFromField;
|
|
162
|
+
|
|
163
|
+
var _useAdaptivity = useAdaptivity(),
|
|
164
|
+
sizeY = _useAdaptivity.sizeY;
|
|
165
|
+
|
|
166
|
+
var onCalendarChange = React.useCallback(function (value) {
|
|
167
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(value);
|
|
168
|
+
|
|
169
|
+
if (closeOnChange && !enableTime) {
|
|
170
|
+
removeFocusFromField();
|
|
171
|
+
}
|
|
172
|
+
}, [onChange, removeFocusFromField, closeOnChange, enableTime]);
|
|
173
|
+
return createScopedElement(FormField, _extends({
|
|
174
|
+
vkuiClass: classNames("DateInput", "DateInput--sizeY-".concat(sizeY)),
|
|
175
|
+
style: style,
|
|
176
|
+
className: className,
|
|
177
|
+
getRootRef: multiRef(rootRef, getRootRef),
|
|
178
|
+
after: value ? createScopedElement(IconButton, {
|
|
179
|
+
hoverMode: "opacity",
|
|
180
|
+
"aria-label": clearFieldAriaLabel,
|
|
181
|
+
onClick: clear
|
|
182
|
+
}, createScopedElement(Icon16Clear, null)) : createScopedElement(IconButton, {
|
|
183
|
+
hoverMode: "opacity",
|
|
184
|
+
"aria-label": showCalendarAriaLabel,
|
|
185
|
+
onClick: openCalendar
|
|
186
|
+
}, createScopedElement(Icon20CalendarOutline, null)),
|
|
187
|
+
disabled: disabled,
|
|
188
|
+
onClick: callMultiple(handleFieldEnter, onClick),
|
|
189
|
+
onFocus: callMultiple(handleFieldEnter, onFocus)
|
|
190
|
+
}, props), createScopedElement("input", {
|
|
191
|
+
type: "hidden",
|
|
192
|
+
name: name,
|
|
193
|
+
value: value ? format(value, enableTime ? "dd.MM.yyyy'T'HH:mm" : "dd.MM.yyyy") : ""
|
|
194
|
+
}), createScopedElement("span", {
|
|
195
|
+
vkuiClass: "DateInput__input",
|
|
196
|
+
onKeyDown: handleKeyDown
|
|
197
|
+
}, createScopedElement(InputLike, {
|
|
198
|
+
tabIndex: 1,
|
|
199
|
+
length: 2,
|
|
200
|
+
getRootRef: daysRef,
|
|
201
|
+
index: 0,
|
|
202
|
+
onElementSelect: setFocusedElement,
|
|
203
|
+
value: internalValue[0],
|
|
204
|
+
"aria-label": changeDayAriaLabel
|
|
205
|
+
}), createScopedElement(InputLikeDivider, null, "."), createScopedElement(InputLike, {
|
|
206
|
+
length: 2,
|
|
207
|
+
getRootRef: monthsRef,
|
|
208
|
+
index: 1,
|
|
209
|
+
onElementSelect: setFocusedElement,
|
|
210
|
+
value: internalValue[1],
|
|
211
|
+
"aria-label": changeMonthAriaLabel
|
|
212
|
+
}), createScopedElement(InputLikeDivider, null, "."), createScopedElement(InputLike, {
|
|
213
|
+
length: 4,
|
|
214
|
+
getRootRef: yearsRef,
|
|
215
|
+
index: 2,
|
|
216
|
+
onElementSelect: setFocusedElement,
|
|
217
|
+
value: internalValue[2],
|
|
218
|
+
"aria-label": changeYearAriaLabel
|
|
219
|
+
}), enableTime && createScopedElement(React.Fragment, null, createScopedElement(InputLikeDivider, {
|
|
220
|
+
vkuiClass: "DateInput__input-time-divider"
|
|
221
|
+
}, " "), createScopedElement(InputLike, {
|
|
222
|
+
length: 2,
|
|
223
|
+
getRootRef: hoursRef,
|
|
224
|
+
index: 3,
|
|
225
|
+
onElementSelect: setFocusedElement,
|
|
226
|
+
value: internalValue[3],
|
|
227
|
+
"aria-label": changeHoursAriaLabel
|
|
228
|
+
}), createScopedElement(InputLikeDivider, null, ":"), createScopedElement(InputLike, {
|
|
229
|
+
length: 2,
|
|
230
|
+
getRootRef: minutesRef,
|
|
231
|
+
index: 4,
|
|
232
|
+
onElementSelect: setFocusedElement,
|
|
233
|
+
value: internalValue[4],
|
|
234
|
+
"aria-label": changeMinutesAriaLabel
|
|
235
|
+
}))), open && createScopedElement(Popper, {
|
|
236
|
+
targetRef: rootRef,
|
|
237
|
+
offsetDistance: 8,
|
|
238
|
+
placement: calendarPlacement
|
|
239
|
+
}, createScopedElement(Calendar, {
|
|
240
|
+
value: value,
|
|
241
|
+
onChange: onCalendarChange,
|
|
242
|
+
enableTime: enableTime,
|
|
243
|
+
disablePast: disablePast,
|
|
244
|
+
disableFuture: disableFuture,
|
|
245
|
+
shouldDisableDate: shouldDisableDate,
|
|
246
|
+
onClose: closeCalendar,
|
|
247
|
+
getRootRef: calendarRef,
|
|
248
|
+
doneButtonText: doneButtonText,
|
|
249
|
+
disablePickers: disablePickers,
|
|
250
|
+
changeHoursAriaLabel: changeHoursAriaLabel,
|
|
251
|
+
changeMinutesAriaLabel: changeMinutesAriaLabel,
|
|
252
|
+
prevMonthAriaLabel: prevMonthAriaLabel,
|
|
253
|
+
nextMonthAriaLabel: nextMonthAriaLabel,
|
|
254
|
+
changeMonthAriaLabel: changeMonthAriaLabel,
|
|
255
|
+
changeYearAriaLabel: changeYearAriaLabel,
|
|
256
|
+
changeDayAriaLabel: changeDayAriaLabel,
|
|
257
|
+
showNeighboringMonth: showNeighboringMonth,
|
|
258
|
+
size: size
|
|
259
|
+
})));
|
|
260
|
+
};
|
|
261
|
+
//# sourceMappingURL=DateInput.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/DateInput/DateInput.tsx"],"names":["React","format","isMatch","parse","Icon16Clear","Icon20CalendarOutline","Calendar","Popper","multiRef","IconButton","classNames","FormField","useDateInput","InputLike","InputLikeDivider","useAdaptivity","callMultiple","elementsConfig","index","length","min","max","getInternalValue","value","newValue","String","getDate","padStart","getMonth","getFullYear","getHours","getMinutes","DateInput","enableTime","shouldDisableDate","disableFuture","disablePast","onChange","calendarPlacement","style","className","doneButtonText","closeOnChange","disablePickers","getRootRef","name","autoFocus","disabled","onClick","onFocus","prevMonthAriaLabel","nextMonthAriaLabel","showNeighboringMonth","size","changeMonthAriaLabel","changeYearAriaLabel","changeDayAriaLabel","changeHoursAriaLabel","changeMinutesAriaLabel","clearFieldAriaLabel","showCalendarAriaLabel","props","daysRef","useRef","monthsRef","yearsRef","hoursRef","minutesRef","maxElement","onInternalValueChange","useCallback","internalValue","i","formattedValue","mask","Date","refs","useMemo","rootRef","calendarRef","open","openCalendar","closeCalendar","handleKeyDown","setFocusedElement","handleFieldEnter","clear","removeFocusFromField","sizeY","onCalendarChange"],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport { format, isMatch, parse } from \"date-fns\";\nimport { Icon16Clear, Icon20CalendarOutline } from \"@vkontakte/icons\";\nimport { Calendar, CalendarProps } from \"../Calendar/Calendar\";\nimport { Popper, Placement } from \"../Popper/Popper\";\nimport { multiRef } from \"../../lib/utils\";\nimport IconButton from \"../IconButton/IconButton\";\nimport { classNames } from \"../../lib/classNames\";\nimport { FormField } from \"../FormField/FormField\";\nimport { HasRootRef } from \"../../types\";\nimport { useDateInput } from \"../../hooks/useDateInput\";\nimport { InputLike } from \"../InputLike/InputLike\";\nimport { InputLikeDivider } from \"../InputLike/InputLikeDivider\";\nimport { useAdaptivity } from \"../../hooks/useAdaptivity\";\nimport { callMultiple } from \"../../lib/callMultiple\";\nimport \"./DateInput.css\";\n\nexport interface DateInputProps\n extends Omit<\n React.InputHTMLAttributes<HTMLDivElement>,\n \"value\" | \"onChange\" | \"size\"\n >,\n Pick<\n CalendarProps,\n | \"disablePast\"\n | \"disableFuture\"\n | \"enableTime\"\n | \"shouldDisableDate\"\n | \"onChange\"\n | \"value\"\n | \"doneButtonText\"\n | \"weekStartsOn\"\n | \"disablePickers\"\n | \"changeHoursAriaLabel\"\n | \"changeMinutesAriaLabel\"\n | \"prevMonthAriaLabel\"\n | \"nextMonthAriaLabel\"\n | \"changeMonthAriaLabel\"\n | \"changeYearAriaLabel\"\n | \"changeDayAriaLabel\"\n | \"showNeighboringMonth\"\n | \"size\"\n >,\n HasRootRef<HTMLDivElement> {\n calendarPlacement?: Placement;\n closeOnChange?: boolean;\n clearFieldAriaLabel?: string;\n showCalendarAriaLabel?: string;\n}\n\nconst elementsConfig = (index: number) => {\n let length = 2;\n let min = 1;\n let max = 0;\n\n switch (index) {\n case 0:\n max = 31;\n break;\n case 1:\n max = 12;\n break;\n case 2:\n max = 2100;\n min = 1900;\n length = 4;\n break;\n case 3:\n max = 23;\n break;\n case 4:\n max = 59;\n break;\n }\n\n return { length, min, max };\n};\n\nconst getInternalValue = (value: CalendarProps[\"value\"]) => {\n const newValue = [\"\", \"\", \"\", \"\", \"\"];\n if (value) {\n newValue[0] = String(value.getDate()).padStart(2, \"0\");\n newValue[1] = String(value.getMonth() + 1).padStart(2, \"0\");\n newValue[2] = String(value.getFullYear()).padStart(4, \"0\");\n newValue[3] = String(value.getHours()).padStart(2, \"0\");\n newValue[4] = String(value.getMinutes()).padStart(2, \"0\");\n }\n return newValue;\n};\n\nexport const DateInput: React.FC<DateInputProps> = ({\n enableTime,\n shouldDisableDate,\n disableFuture,\n disablePast,\n value,\n onChange,\n calendarPlacement = \"bottom-start\",\n style,\n className,\n doneButtonText,\n closeOnChange = true,\n disablePickers,\n getRootRef,\n name,\n autoFocus,\n disabled,\n onClick,\n onFocus,\n prevMonthAriaLabel,\n nextMonthAriaLabel,\n showNeighboringMonth,\n size,\n changeMonthAriaLabel = \"Изменить месяц\",\n changeYearAriaLabel = \"Изменить год\",\n changeDayAriaLabel = \"Изменить день\",\n changeHoursAriaLabel = \"Изменить час\",\n changeMinutesAriaLabel = \"Изменить минуту\",\n clearFieldAriaLabel = \"Очистить поле\",\n showCalendarAriaLabel = \"Показать календарь\",\n ...props\n}) => {\n const daysRef = React.useRef<HTMLSpanElement>(null);\n const monthsRef = React.useRef<HTMLSpanElement>(null);\n const yearsRef = React.useRef<HTMLSpanElement>(null);\n const hoursRef = React.useRef<HTMLSpanElement>(null);\n const minutesRef = React.useRef<HTMLSpanElement>(null);\n\n const maxElement = enableTime ? 4 : 2;\n\n const onInternalValueChange = React.useCallback(\n (internalValue: string[]) => {\n for (let i = 0; i <= maxElement; i += 1) {\n if (internalValue[i].length < elementsConfig(i).length) {\n return;\n }\n }\n\n let formattedValue = `${internalValue[0]}.${internalValue[1]}.${internalValue[2]}`;\n let mask = \"dd.MM.yyyy\";\n if (enableTime) {\n formattedValue += ` ${internalValue[3]}:${internalValue[4]}`;\n mask += \" HH:mm\";\n }\n\n if (isMatch(formattedValue, mask)) {\n onChange?.(parse(formattedValue, mask, value ?? new Date()));\n }\n },\n [enableTime, maxElement, onChange, value]\n );\n\n const refs = React.useMemo(\n () => [daysRef, monthsRef, yearsRef, hoursRef, minutesRef],\n [daysRef, monthsRef, yearsRef, hoursRef, minutesRef]\n );\n\n const {\n rootRef,\n calendarRef,\n open,\n openCalendar,\n closeCalendar,\n internalValue,\n handleKeyDown,\n setFocusedElement,\n handleFieldEnter,\n clear,\n removeFocusFromField,\n } = useDateInput({\n maxElement,\n refs,\n autoFocus,\n disabled,\n elementsConfig,\n onChange,\n onInternalValueChange,\n getInternalValue,\n value,\n });\n\n const { sizeY } = useAdaptivity();\n\n const onCalendarChange = React.useCallback(\n (value?: Date | undefined) => {\n onChange?.(value);\n if (closeOnChange && !enableTime) {\n removeFocusFromField();\n }\n },\n [onChange, removeFocusFromField, closeOnChange, enableTime]\n );\n\n return (\n <FormField\n vkuiClass={classNames(\"DateInput\", `DateInput--sizeY-${sizeY}`)}\n style={style}\n className={className}\n getRootRef={multiRef(rootRef, getRootRef)}\n after={\n value ? (\n <IconButton\n hoverMode=\"opacity\"\n aria-label={clearFieldAriaLabel}\n onClick={clear}\n >\n <Icon16Clear />\n </IconButton>\n ) : (\n <IconButton\n hoverMode=\"opacity\"\n aria-label={showCalendarAriaLabel}\n onClick={openCalendar}\n >\n <Icon20CalendarOutline />\n </IconButton>\n )\n }\n disabled={disabled}\n onClick={callMultiple(handleFieldEnter, onClick)}\n onFocus={callMultiple(handleFieldEnter, onFocus)}\n {...props}\n >\n <input\n type=\"hidden\"\n name={name}\n value={\n value\n ? format(value, enableTime ? \"dd.MM.yyyy'T'HH:mm\" : \"dd.MM.yyyy\")\n : \"\"\n }\n />\n <span vkuiClass=\"DateInput__input\" onKeyDown={handleKeyDown}>\n <InputLike\n tabIndex={1}\n length={2}\n getRootRef={daysRef}\n index={0}\n onElementSelect={setFocusedElement}\n value={internalValue[0]}\n aria-label={changeDayAriaLabel}\n />\n <InputLikeDivider>.</InputLikeDivider>\n <InputLike\n length={2}\n getRootRef={monthsRef}\n index={1}\n onElementSelect={setFocusedElement}\n value={internalValue[1]}\n aria-label={changeMonthAriaLabel}\n />\n <InputLikeDivider>.</InputLikeDivider>\n <InputLike\n length={4}\n getRootRef={yearsRef}\n index={2}\n onElementSelect={setFocusedElement}\n value={internalValue[2]}\n aria-label={changeYearAriaLabel}\n />\n {enableTime && (\n <React.Fragment>\n <InputLikeDivider vkuiClass=\"DateInput__input-time-divider\">\n {\" \"}\n </InputLikeDivider>\n <InputLike\n length={2}\n getRootRef={hoursRef}\n index={3}\n onElementSelect={setFocusedElement}\n value={internalValue[3]}\n aria-label={changeHoursAriaLabel}\n />\n <InputLikeDivider>:</InputLikeDivider>\n <InputLike\n length={2}\n getRootRef={minutesRef}\n index={4}\n onElementSelect={setFocusedElement}\n value={internalValue[4]}\n aria-label={changeMinutesAriaLabel}\n />\n </React.Fragment>\n )}\n </span>\n {open && (\n <Popper\n targetRef={rootRef}\n offsetDistance={8}\n placement={calendarPlacement}\n >\n <Calendar\n value={value}\n onChange={onCalendarChange}\n enableTime={enableTime}\n disablePast={disablePast}\n disableFuture={disableFuture}\n shouldDisableDate={shouldDisableDate}\n onClose={closeCalendar}\n getRootRef={calendarRef}\n doneButtonText={doneButtonText}\n disablePickers={disablePickers}\n changeHoursAriaLabel={changeHoursAriaLabel}\n changeMinutesAriaLabel={changeMinutesAriaLabel}\n prevMonthAriaLabel={prevMonthAriaLabel}\n nextMonthAriaLabel={nextMonthAriaLabel}\n changeMonthAriaLabel={changeMonthAriaLabel}\n changeYearAriaLabel={changeYearAriaLabel}\n changeDayAriaLabel={changeDayAriaLabel}\n showNeighboringMonth={showNeighboringMonth}\n size={size}\n />\n </Popper>\n )}\n </FormField>\n );\n};\n"],"file":"DateInput.js"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { CalendarRangeProps } from "../CalendarRange/CalendarRange";
|
|
3
|
+
import { Placement } from "../Popper/Popper";
|
|
4
|
+
import { HasRootRef } from "../../types";
|
|
5
|
+
import "./DateRangeInput.css";
|
|
6
|
+
export interface DateRangeInputProps extends Omit<React.InputHTMLAttributes<HTMLDivElement>, "value" | "onChange">, Pick<CalendarRangeProps, "disablePast" | "disableFuture" | "shouldDisableDate" | "onChange" | "value" | "weekStartsOn" | "disablePickers" | "prevMonthAriaLabel" | "nextMonthAriaLabel" | "changeMonthAriaLabel" | "changeYearAriaLabel" | "changeDayAriaLabel">, HasRootRef<HTMLDivElement> {
|
|
7
|
+
calendarPlacement?: Placement;
|
|
8
|
+
closeOnChange?: boolean;
|
|
9
|
+
clearFieldAriaLabel?: string;
|
|
10
|
+
showCalendarAriaLabel?: string;
|
|
11
|
+
changeStartDayAriaLabel?: string;
|
|
12
|
+
changeStartMonthAriaLabel?: string;
|
|
13
|
+
changeStartYearAriaLabel?: string;
|
|
14
|
+
changeEndDayAriaLabel?: string;
|
|
15
|
+
changeEndMonthAriaLabel?: string;
|
|
16
|
+
changeEndYearAriaLabel?: string;
|
|
17
|
+
}
|
|
18
|
+
export declare const DateRangeInput: React.FC<DateRangeInputProps>;
|
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/extends";
|
|
2
|
+
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
3
|
+
var _excluded = ["shouldDisableDate", "disableFuture", "disablePast", "value", "onChange", "calendarPlacement", "style", "className", "closeOnChange", "disablePickers", "getRootRef", "name", "autoFocus", "disabled", "onClick", "onFocus", "prevMonthAriaLabel", "nextMonthAriaLabel", "changeDayAriaLabel", "changeMonthAriaLabel", "changeYearAriaLabel", "changeStartDayAriaLabel", "changeStartMonthAriaLabel", "changeStartYearAriaLabel", "changeEndDayAriaLabel", "changeEndMonthAriaLabel", "changeEndYearAriaLabel", "clearFieldAriaLabel", "showCalendarAriaLabel"];
|
|
4
|
+
import { createScopedElement } from "../../lib/jsxRuntime";
|
|
5
|
+
import * as React from "react";
|
|
6
|
+
import { format, isMatch, parse, isAfter } from "date-fns";
|
|
7
|
+
import { Icon16Clear, Icon20CalendarOutline } from "@vkontakte/icons";
|
|
8
|
+
import { CalendarRange } from "../CalendarRange/CalendarRange";
|
|
9
|
+
import { Popper } from "../Popper/Popper";
|
|
10
|
+
import IconButton from "../IconButton/IconButton";
|
|
11
|
+
import { useDateInput } from "../../hooks/useDateInput";
|
|
12
|
+
import { useAdaptivity } from "../../hooks/useAdaptivity";
|
|
13
|
+
import { classNames } from "../../lib/classNames";
|
|
14
|
+
import { multiRef } from "../../lib/utils";
|
|
15
|
+
import { FormField } from "../FormField/FormField";
|
|
16
|
+
import { InputLike } from "../InputLike/InputLike";
|
|
17
|
+
import { InputLikeDivider } from "../InputLike/InputLikeDivider";
|
|
18
|
+
import { callMultiple } from "../../lib/callMultiple";
|
|
19
|
+
|
|
20
|
+
var elementsConfig = function elementsConfig(index) {
|
|
21
|
+
var length = 2;
|
|
22
|
+
var min = 1;
|
|
23
|
+
var max = 0;
|
|
24
|
+
|
|
25
|
+
switch (index) {
|
|
26
|
+
case 0:
|
|
27
|
+
case 3:
|
|
28
|
+
max = 31;
|
|
29
|
+
break;
|
|
30
|
+
|
|
31
|
+
case 1:
|
|
32
|
+
case 4:
|
|
33
|
+
max = 12;
|
|
34
|
+
break;
|
|
35
|
+
|
|
36
|
+
case 2:
|
|
37
|
+
case 5:
|
|
38
|
+
max = 2100;
|
|
39
|
+
min = 1900;
|
|
40
|
+
length = 4;
|
|
41
|
+
break;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
return {
|
|
45
|
+
length: length,
|
|
46
|
+
min: min,
|
|
47
|
+
max: max
|
|
48
|
+
};
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
var getInternalValue = function getInternalValue(value) {
|
|
52
|
+
var newValue = ["", "", "", "", "", ""];
|
|
53
|
+
|
|
54
|
+
if (value !== null && value !== void 0 && value[0]) {
|
|
55
|
+
newValue[0] = String(value[0].getDate()).padStart(2, "0");
|
|
56
|
+
newValue[1] = String(value[0].getMonth() + 1).padStart(2, "0");
|
|
57
|
+
newValue[2] = String(value[0].getFullYear()).padStart(4, "0");
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
if (value !== null && value !== void 0 && value[1]) {
|
|
61
|
+
newValue[3] = String(value[1].getDate()).padStart(2, "0");
|
|
62
|
+
newValue[4] = String(value[1].getMonth() + 1).padStart(2, "0");
|
|
63
|
+
newValue[5] = String(value[1].getFullYear()).padStart(4, "0");
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
return newValue;
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
export var DateRangeInput = function DateRangeInput(_ref) {
|
|
70
|
+
var shouldDisableDate = _ref.shouldDisableDate,
|
|
71
|
+
disableFuture = _ref.disableFuture,
|
|
72
|
+
disablePast = _ref.disablePast,
|
|
73
|
+
value = _ref.value,
|
|
74
|
+
onChange = _ref.onChange,
|
|
75
|
+
_ref$calendarPlacemen = _ref.calendarPlacement,
|
|
76
|
+
calendarPlacement = _ref$calendarPlacemen === void 0 ? "bottom-start" : _ref$calendarPlacemen,
|
|
77
|
+
style = _ref.style,
|
|
78
|
+
className = _ref.className,
|
|
79
|
+
_ref$closeOnChange = _ref.closeOnChange,
|
|
80
|
+
closeOnChange = _ref$closeOnChange === void 0 ? true : _ref$closeOnChange,
|
|
81
|
+
disablePickers = _ref.disablePickers,
|
|
82
|
+
getRootRef = _ref.getRootRef,
|
|
83
|
+
name = _ref.name,
|
|
84
|
+
autoFocus = _ref.autoFocus,
|
|
85
|
+
disabled = _ref.disabled,
|
|
86
|
+
onClick = _ref.onClick,
|
|
87
|
+
onFocus = _ref.onFocus,
|
|
88
|
+
prevMonthAriaLabel = _ref.prevMonthAriaLabel,
|
|
89
|
+
nextMonthAriaLabel = _ref.nextMonthAriaLabel,
|
|
90
|
+
changeDayAriaLabel = _ref.changeDayAriaLabel,
|
|
91
|
+
changeMonthAriaLabel = _ref.changeMonthAriaLabel,
|
|
92
|
+
changeYearAriaLabel = _ref.changeYearAriaLabel,
|
|
93
|
+
_ref$changeStartDayAr = _ref.changeStartDayAriaLabel,
|
|
94
|
+
changeStartDayAriaLabel = _ref$changeStartDayAr === void 0 ? "Изменить день начала" : _ref$changeStartDayAr,
|
|
95
|
+
_ref$changeStartMonth = _ref.changeStartMonthAriaLabel,
|
|
96
|
+
changeStartMonthAriaLabel = _ref$changeStartMonth === void 0 ? "Изменить месяц начала" : _ref$changeStartMonth,
|
|
97
|
+
_ref$changeStartYearA = _ref.changeStartYearAriaLabel,
|
|
98
|
+
changeStartYearAriaLabel = _ref$changeStartYearA === void 0 ? "Изменить год начала" : _ref$changeStartYearA,
|
|
99
|
+
_ref$changeEndDayAria = _ref.changeEndDayAriaLabel,
|
|
100
|
+
changeEndDayAriaLabel = _ref$changeEndDayAria === void 0 ? "Изменить день окончания" : _ref$changeEndDayAria,
|
|
101
|
+
_ref$changeEndMonthAr = _ref.changeEndMonthAriaLabel,
|
|
102
|
+
changeEndMonthAriaLabel = _ref$changeEndMonthAr === void 0 ? "Изменить месяц окончания" : _ref$changeEndMonthAr,
|
|
103
|
+
_ref$changeEndYearAri = _ref.changeEndYearAriaLabel,
|
|
104
|
+
changeEndYearAriaLabel = _ref$changeEndYearAri === void 0 ? "Изменить год окончания" : _ref$changeEndYearAri,
|
|
105
|
+
_ref$clearFieldAriaLa = _ref.clearFieldAriaLabel,
|
|
106
|
+
clearFieldAriaLabel = _ref$clearFieldAriaLa === void 0 ? "Очистить поле" : _ref$clearFieldAriaLa,
|
|
107
|
+
_ref$showCalendarAria = _ref.showCalendarAriaLabel,
|
|
108
|
+
showCalendarAriaLabel = _ref$showCalendarAria === void 0 ? "Показать календарь" : _ref$showCalendarAria,
|
|
109
|
+
props = _objectWithoutProperties(_ref, _excluded);
|
|
110
|
+
|
|
111
|
+
var daysStartRef = React.useRef(null);
|
|
112
|
+
var monthsStartRef = React.useRef(null);
|
|
113
|
+
var yearsStartRef = React.useRef(null);
|
|
114
|
+
var daysEndRef = React.useRef(null);
|
|
115
|
+
var monthsEndRef = React.useRef(null);
|
|
116
|
+
var yearsEndRef = React.useRef(null);
|
|
117
|
+
var onInternalValueChange = React.useCallback(function (internalValue) {
|
|
118
|
+
var isStartValid = true;
|
|
119
|
+
var isEndValid = true;
|
|
120
|
+
|
|
121
|
+
for (var i = 0; i <= 2; i += 1) {
|
|
122
|
+
if (internalValue[i].length < elementsConfig(i).length) {
|
|
123
|
+
isStartValid = false;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
for (var _i = 3; _i <= 5; _i += 1) {
|
|
128
|
+
if (internalValue[_i].length < elementsConfig(_i).length) {
|
|
129
|
+
isEndValid = false;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
var formattedStartValue = "".concat(internalValue[0], ".").concat(internalValue[1], ".").concat(internalValue[2]);
|
|
134
|
+
var formattedEndValue = "".concat(internalValue[3], ".").concat(internalValue[4], ".").concat(internalValue[5]);
|
|
135
|
+
var mask = "dd.MM.yyyy";
|
|
136
|
+
|
|
137
|
+
if (!isMatch(formattedStartValue, mask)) {
|
|
138
|
+
isStartValid = false;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
if (!isMatch(formattedEndValue, mask)) {
|
|
142
|
+
isEndValid = false;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
if (!isStartValid && !isEndValid) {
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
var valueExists = Array.isArray(value);
|
|
150
|
+
var now = new Date();
|
|
151
|
+
var start = isStartValid ? parse(formattedStartValue, mask, valueExists && (value === null || value === void 0 ? void 0 : value[0]) || now) : null;
|
|
152
|
+
var end = isEndValid ? parse(formattedEndValue, mask, valueExists && (value === null || value === void 0 ? void 0 : value[1]) || now) : null;
|
|
153
|
+
|
|
154
|
+
if (start && end && isAfter(end, start)) {
|
|
155
|
+
onChange === null || onChange === void 0 ? void 0 : onChange([start, end]);
|
|
156
|
+
}
|
|
157
|
+
}, [onChange, value]);
|
|
158
|
+
var refs = React.useMemo(function () {
|
|
159
|
+
return [daysStartRef, monthsStartRef, yearsStartRef, daysEndRef, monthsEndRef, yearsEndRef];
|
|
160
|
+
}, [daysStartRef, monthsStartRef, yearsStartRef, daysEndRef, monthsEndRef, yearsEndRef]);
|
|
161
|
+
|
|
162
|
+
var _useDateInput = useDateInput({
|
|
163
|
+
maxElement: 5,
|
|
164
|
+
refs: refs,
|
|
165
|
+
autoFocus: autoFocus,
|
|
166
|
+
disabled: disabled,
|
|
167
|
+
elementsConfig: elementsConfig,
|
|
168
|
+
onChange: onChange,
|
|
169
|
+
onInternalValueChange: onInternalValueChange,
|
|
170
|
+
getInternalValue: getInternalValue,
|
|
171
|
+
value: value
|
|
172
|
+
}),
|
|
173
|
+
rootRef = _useDateInput.rootRef,
|
|
174
|
+
calendarRef = _useDateInput.calendarRef,
|
|
175
|
+
open = _useDateInput.open,
|
|
176
|
+
openCalendar = _useDateInput.openCalendar,
|
|
177
|
+
closeCalendar = _useDateInput.closeCalendar,
|
|
178
|
+
internalValue = _useDateInput.internalValue,
|
|
179
|
+
handleKeyDown = _useDateInput.handleKeyDown,
|
|
180
|
+
setFocusedElement = _useDateInput.setFocusedElement,
|
|
181
|
+
handleFieldEnter = _useDateInput.handleFieldEnter,
|
|
182
|
+
clear = _useDateInput.clear,
|
|
183
|
+
removeFocusFromField = _useDateInput.removeFocusFromField;
|
|
184
|
+
|
|
185
|
+
var _useAdaptivity = useAdaptivity(),
|
|
186
|
+
sizeY = _useAdaptivity.sizeY;
|
|
187
|
+
|
|
188
|
+
var onCalendarChange = React.useCallback(function (newValue) {
|
|
189
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(newValue);
|
|
190
|
+
|
|
191
|
+
if (closeOnChange && newValue !== null && newValue !== void 0 && newValue[1] && newValue[1] !== (value === null || value === void 0 ? void 0 : value[1])) {
|
|
192
|
+
removeFocusFromField();
|
|
193
|
+
}
|
|
194
|
+
}, [onChange, closeOnChange, value, removeFocusFromField]);
|
|
195
|
+
return createScopedElement(FormField, _extends({
|
|
196
|
+
vkuiClass: classNames("DateRangeInput", "DateRangeInput--sizeY-".concat(sizeY)),
|
|
197
|
+
style: style,
|
|
198
|
+
className: className,
|
|
199
|
+
getRootRef: multiRef(rootRef, getRootRef),
|
|
200
|
+
after: value ? createScopedElement(IconButton, {
|
|
201
|
+
hoverMode: "opacity",
|
|
202
|
+
"aria-label": clearFieldAriaLabel,
|
|
203
|
+
onClick: clear
|
|
204
|
+
}, createScopedElement(Icon16Clear, null)) : createScopedElement(IconButton, {
|
|
205
|
+
hoverMode: "opacity",
|
|
206
|
+
"aria-label": showCalendarAriaLabel,
|
|
207
|
+
onClick: openCalendar
|
|
208
|
+
}, createScopedElement(Icon20CalendarOutline, null)),
|
|
209
|
+
disabled: disabled,
|
|
210
|
+
onClick: callMultiple(handleFieldEnter, onClick),
|
|
211
|
+
onFocus: callMultiple(handleFieldEnter, onFocus)
|
|
212
|
+
}, props), createScopedElement("input", {
|
|
213
|
+
type: "hidden",
|
|
214
|
+
name: name,
|
|
215
|
+
value: value ? "".concat(value[0] ? format(value[0], "dd.MM.yyyy") : "", " - ").concat(value[1] ? format(value[1], "dd.MM.yyyy") : "") : ""
|
|
216
|
+
}), createScopedElement("span", {
|
|
217
|
+
vkuiClass: "DateInput__input",
|
|
218
|
+
onKeyDown: handleKeyDown
|
|
219
|
+
}, createScopedElement(InputLike, {
|
|
220
|
+
length: 2,
|
|
221
|
+
getRootRef: daysStartRef,
|
|
222
|
+
index: 0,
|
|
223
|
+
onElementSelect: setFocusedElement,
|
|
224
|
+
value: internalValue[0],
|
|
225
|
+
"aria-label": changeStartDayAriaLabel
|
|
226
|
+
}), createScopedElement(InputLikeDivider, null, "."), createScopedElement(InputLike, {
|
|
227
|
+
length: 2,
|
|
228
|
+
getRootRef: monthsStartRef,
|
|
229
|
+
index: 1,
|
|
230
|
+
onElementSelect: setFocusedElement,
|
|
231
|
+
value: internalValue[1],
|
|
232
|
+
"aria-label": changeStartMonthAriaLabel
|
|
233
|
+
}), createScopedElement(InputLikeDivider, null, "."), createScopedElement(InputLike, {
|
|
234
|
+
length: 4,
|
|
235
|
+
getRootRef: yearsStartRef,
|
|
236
|
+
index: 2,
|
|
237
|
+
onElementSelect: setFocusedElement,
|
|
238
|
+
value: internalValue[2],
|
|
239
|
+
"aria-label": changeStartYearAriaLabel
|
|
240
|
+
}), createScopedElement(InputLikeDivider, null, " — "), createScopedElement(InputLike, {
|
|
241
|
+
length: 2,
|
|
242
|
+
getRootRef: daysEndRef,
|
|
243
|
+
index: 3,
|
|
244
|
+
onElementSelect: setFocusedElement,
|
|
245
|
+
value: internalValue[3],
|
|
246
|
+
"aria-label": changeEndDayAriaLabel
|
|
247
|
+
}), createScopedElement(InputLikeDivider, null, "."), createScopedElement(InputLike, {
|
|
248
|
+
length: 2,
|
|
249
|
+
getRootRef: monthsEndRef,
|
|
250
|
+
index: 4,
|
|
251
|
+
onElementSelect: setFocusedElement,
|
|
252
|
+
value: internalValue[4],
|
|
253
|
+
"aria-label": changeEndMonthAriaLabel
|
|
254
|
+
}), createScopedElement(InputLikeDivider, null, "."), createScopedElement(InputLike, {
|
|
255
|
+
length: 4,
|
|
256
|
+
getRootRef: yearsEndRef,
|
|
257
|
+
index: 5,
|
|
258
|
+
onElementSelect: setFocusedElement,
|
|
259
|
+
value: internalValue[5],
|
|
260
|
+
"aria-label": changeEndYearAriaLabel
|
|
261
|
+
})), open && createScopedElement(Popper, {
|
|
262
|
+
targetRef: rootRef,
|
|
263
|
+
offsetDistance: 8,
|
|
264
|
+
placement: calendarPlacement
|
|
265
|
+
}, createScopedElement(CalendarRange, {
|
|
266
|
+
value: value,
|
|
267
|
+
onChange: onCalendarChange,
|
|
268
|
+
disablePast: disablePast,
|
|
269
|
+
disableFuture: disableFuture,
|
|
270
|
+
shouldDisableDate: shouldDisableDate,
|
|
271
|
+
onClose: closeCalendar,
|
|
272
|
+
getRootRef: calendarRef,
|
|
273
|
+
disablePickers: disablePickers,
|
|
274
|
+
prevMonthAriaLabel: prevMonthAriaLabel,
|
|
275
|
+
nextMonthAriaLabel: nextMonthAriaLabel,
|
|
276
|
+
changeMonthAriaLabel: changeMonthAriaLabel,
|
|
277
|
+
changeYearAriaLabel: changeYearAriaLabel,
|
|
278
|
+
changeDayAriaLabel: changeDayAriaLabel
|
|
279
|
+
})));
|
|
280
|
+
};
|
|
281
|
+
//# sourceMappingURL=DateRangeInput.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/DateRangeInput/DateRangeInput.tsx"],"names":["React","format","isMatch","parse","isAfter","Icon16Clear","Icon20CalendarOutline","CalendarRange","Popper","IconButton","useDateInput","useAdaptivity","classNames","multiRef","FormField","InputLike","InputLikeDivider","callMultiple","elementsConfig","index","length","min","max","getInternalValue","value","newValue","String","getDate","padStart","getMonth","getFullYear","DateRangeInput","shouldDisableDate","disableFuture","disablePast","onChange","calendarPlacement","style","className","closeOnChange","disablePickers","getRootRef","name","autoFocus","disabled","onClick","onFocus","prevMonthAriaLabel","nextMonthAriaLabel","changeDayAriaLabel","changeMonthAriaLabel","changeYearAriaLabel","changeStartDayAriaLabel","changeStartMonthAriaLabel","changeStartYearAriaLabel","changeEndDayAriaLabel","changeEndMonthAriaLabel","changeEndYearAriaLabel","clearFieldAriaLabel","showCalendarAriaLabel","props","daysStartRef","useRef","monthsStartRef","yearsStartRef","daysEndRef","monthsEndRef","yearsEndRef","onInternalValueChange","useCallback","internalValue","isStartValid","isEndValid","i","formattedStartValue","formattedEndValue","mask","valueExists","Array","isArray","now","Date","start","end","refs","useMemo","maxElement","rootRef","calendarRef","open","openCalendar","closeCalendar","handleKeyDown","setFocusedElement","handleFieldEnter","clear","removeFocusFromField","sizeY","onCalendarChange"],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport { format, isMatch, parse, isAfter } from \"date-fns\";\nimport { Icon16Clear, Icon20CalendarOutline } from \"@vkontakte/icons\";\nimport {\n CalendarRange,\n CalendarRangeProps,\n} from \"../CalendarRange/CalendarRange\";\nimport { Popper, Placement } from \"../Popper/Popper\";\nimport IconButton from \"../IconButton/IconButton\";\nimport { HasRootRef } from \"../../types\";\nimport { useDateInput } from \"../../hooks/useDateInput\";\nimport { useAdaptivity } from \"../../hooks/useAdaptivity\";\nimport { classNames } from \"../../lib/classNames\";\nimport { multiRef } from \"../../lib/utils\";\nimport { FormField } from \"../FormField/FormField\";\nimport { InputLike } from \"../InputLike/InputLike\";\nimport { InputLikeDivider } from \"../InputLike/InputLikeDivider\";\nimport { callMultiple } from \"../../lib/callMultiple\";\nimport \"./DateRangeInput.css\";\n\nexport interface DateRangeInputProps\n extends Omit<React.InputHTMLAttributes<HTMLDivElement>, \"value\" | \"onChange\">,\n Pick<\n CalendarRangeProps,\n | \"disablePast\"\n | \"disableFuture\"\n | \"shouldDisableDate\"\n | \"onChange\"\n | \"value\"\n | \"weekStartsOn\"\n | \"disablePickers\"\n | \"prevMonthAriaLabel\"\n | \"nextMonthAriaLabel\"\n | \"changeMonthAriaLabel\"\n | \"changeYearAriaLabel\"\n | \"changeDayAriaLabel\"\n >,\n HasRootRef<HTMLDivElement> {\n calendarPlacement?: Placement;\n closeOnChange?: boolean;\n clearFieldAriaLabel?: string;\n showCalendarAriaLabel?: string;\n changeStartDayAriaLabel?: string;\n changeStartMonthAriaLabel?: string;\n changeStartYearAriaLabel?: string;\n changeEndDayAriaLabel?: string;\n changeEndMonthAriaLabel?: string;\n changeEndYearAriaLabel?: string;\n}\n\nconst elementsConfig = (index: number) => {\n let length = 2;\n let min = 1;\n let max = 0;\n\n switch (index) {\n case 0:\n case 3:\n max = 31;\n break;\n case 1:\n case 4:\n max = 12;\n break;\n case 2:\n case 5:\n max = 2100;\n min = 1900;\n length = 4;\n break;\n }\n\n return { length, min, max };\n};\n\nconst getInternalValue = (value: CalendarRangeProps[\"value\"]) => {\n const newValue = [\"\", \"\", \"\", \"\", \"\", \"\"];\n if (value?.[0]) {\n newValue[0] = String(value[0].getDate()).padStart(2, \"0\");\n newValue[1] = String(value[0].getMonth() + 1).padStart(2, \"0\");\n newValue[2] = String(value[0].getFullYear()).padStart(4, \"0\");\n }\n if (value?.[1]) {\n newValue[3] = String(value[1].getDate()).padStart(2, \"0\");\n newValue[4] = String(value[1].getMonth() + 1).padStart(2, \"0\");\n newValue[5] = String(value[1].getFullYear()).padStart(4, \"0\");\n }\n return newValue;\n};\n\nexport const DateRangeInput: React.FC<DateRangeInputProps> = ({\n shouldDisableDate,\n disableFuture,\n disablePast,\n value,\n onChange,\n calendarPlacement = \"bottom-start\",\n style,\n className,\n closeOnChange = true,\n disablePickers,\n getRootRef,\n name,\n autoFocus,\n disabled,\n onClick,\n onFocus,\n prevMonthAriaLabel,\n nextMonthAriaLabel,\n changeDayAriaLabel,\n changeMonthAriaLabel,\n changeYearAriaLabel,\n changeStartDayAriaLabel = \"Изменить день начала\",\n changeStartMonthAriaLabel = \"Изменить месяц начала\",\n changeStartYearAriaLabel = \"Изменить год начала\",\n changeEndDayAriaLabel = \"Изменить день окончания\",\n changeEndMonthAriaLabel = \"Изменить месяц окончания\",\n changeEndYearAriaLabel = \"Изменить год окончания\",\n clearFieldAriaLabel = \"Очистить поле\",\n showCalendarAriaLabel = \"Показать календарь\",\n ...props\n}) => {\n const daysStartRef = React.useRef<HTMLSpanElement>(null);\n const monthsStartRef = React.useRef<HTMLSpanElement>(null);\n const yearsStartRef = React.useRef<HTMLSpanElement>(null);\n const daysEndRef = React.useRef<HTMLSpanElement>(null);\n const monthsEndRef = React.useRef<HTMLSpanElement>(null);\n const yearsEndRef = React.useRef<HTMLSpanElement>(null);\n\n const onInternalValueChange = React.useCallback(\n (internalValue: string[]) => {\n let isStartValid = true;\n let isEndValid = true;\n for (let i = 0; i <= 2; i += 1) {\n if (internalValue[i].length < elementsConfig(i).length) {\n isStartValid = false;\n }\n }\n for (let i = 3; i <= 5; i += 1) {\n if (internalValue[i].length < elementsConfig(i).length) {\n isEndValid = false;\n }\n }\n const formattedStartValue = `${internalValue[0]}.${internalValue[1]}.${internalValue[2]}`;\n const formattedEndValue = `${internalValue[3]}.${internalValue[4]}.${internalValue[5]}`;\n const mask = \"dd.MM.yyyy\";\n\n if (!isMatch(formattedStartValue, mask)) {\n isStartValid = false;\n }\n if (!isMatch(formattedEndValue, mask)) {\n isEndValid = false;\n }\n\n if (!isStartValid && !isEndValid) {\n return;\n }\n\n const valueExists = Array.isArray(value);\n const now = new Date();\n const start = isStartValid\n ? parse(formattedStartValue, mask, (valueExists && value?.[0]) || now)\n : null;\n const end = isEndValid\n ? parse(formattedEndValue, mask, (valueExists && value?.[1]) || now)\n : null;\n if (start && end && isAfter(end, start)) {\n onChange?.([start, end]);\n }\n },\n [onChange, value]\n );\n\n const refs = React.useMemo(\n () => [\n daysStartRef,\n monthsStartRef,\n yearsStartRef,\n daysEndRef,\n monthsEndRef,\n yearsEndRef,\n ],\n [\n daysStartRef,\n monthsStartRef,\n yearsStartRef,\n daysEndRef,\n monthsEndRef,\n yearsEndRef,\n ]\n );\n\n const {\n rootRef,\n calendarRef,\n open,\n openCalendar,\n closeCalendar,\n internalValue,\n handleKeyDown,\n setFocusedElement,\n handleFieldEnter,\n clear,\n removeFocusFromField,\n } = useDateInput({\n maxElement: 5,\n refs,\n autoFocus,\n disabled,\n elementsConfig,\n onChange,\n onInternalValueChange,\n getInternalValue,\n value,\n });\n\n const { sizeY } = useAdaptivity();\n\n const onCalendarChange = React.useCallback(\n (newValue?: Array<Date | null> | undefined) => {\n onChange?.(newValue);\n if (closeOnChange && newValue?.[1] && newValue[1] !== value?.[1]) {\n removeFocusFromField();\n }\n },\n [onChange, closeOnChange, value, removeFocusFromField]\n );\n\n return (\n <FormField\n vkuiClass={classNames(\"DateRangeInput\", `DateRangeInput--sizeY-${sizeY}`)}\n style={style}\n className={className}\n getRootRef={multiRef(rootRef, getRootRef)}\n after={\n value ? (\n <IconButton\n hoverMode=\"opacity\"\n aria-label={clearFieldAriaLabel}\n onClick={clear}\n >\n <Icon16Clear />\n </IconButton>\n ) : (\n <IconButton\n hoverMode=\"opacity\"\n aria-label={showCalendarAriaLabel}\n onClick={openCalendar}\n >\n <Icon20CalendarOutline />\n </IconButton>\n )\n }\n disabled={disabled}\n onClick={callMultiple(handleFieldEnter, onClick)}\n onFocus={callMultiple(handleFieldEnter, onFocus)}\n {...props}\n >\n <input\n type=\"hidden\"\n name={name}\n value={\n value\n ? `${value[0] ? format(value[0], \"dd.MM.yyyy\") : \"\"} - ${\n value[1] ? format(value[1], \"dd.MM.yyyy\") : \"\"\n }`\n : \"\"\n }\n />\n <span vkuiClass=\"DateInput__input\" onKeyDown={handleKeyDown}>\n <InputLike\n length={2}\n getRootRef={daysStartRef}\n index={0}\n onElementSelect={setFocusedElement}\n value={internalValue[0]}\n aria-label={changeStartDayAriaLabel}\n />\n <InputLikeDivider>.</InputLikeDivider>\n <InputLike\n length={2}\n getRootRef={monthsStartRef}\n index={1}\n onElementSelect={setFocusedElement}\n value={internalValue[1]}\n aria-label={changeStartMonthAriaLabel}\n />\n <InputLikeDivider>.</InputLikeDivider>\n <InputLike\n length={4}\n getRootRef={yearsStartRef}\n index={2}\n onElementSelect={setFocusedElement}\n value={internalValue[2]}\n aria-label={changeStartYearAriaLabel}\n />\n <InputLikeDivider>{\" — \"}</InputLikeDivider>\n <InputLike\n length={2}\n getRootRef={daysEndRef}\n index={3}\n onElementSelect={setFocusedElement}\n value={internalValue[3]}\n aria-label={changeEndDayAriaLabel}\n />\n <InputLikeDivider>.</InputLikeDivider>\n <InputLike\n length={2}\n getRootRef={monthsEndRef}\n index={4}\n onElementSelect={setFocusedElement}\n value={internalValue[4]}\n aria-label={changeEndMonthAriaLabel}\n />\n <InputLikeDivider>.</InputLikeDivider>\n <InputLike\n length={4}\n getRootRef={yearsEndRef}\n index={5}\n onElementSelect={setFocusedElement}\n value={internalValue[5]}\n aria-label={changeEndYearAriaLabel}\n />\n </span>\n {open && (\n <Popper\n targetRef={rootRef}\n offsetDistance={8}\n placement={calendarPlacement}\n >\n <CalendarRange\n value={value}\n onChange={onCalendarChange}\n disablePast={disablePast}\n disableFuture={disableFuture}\n shouldDisableDate={shouldDisableDate}\n onClose={closeCalendar}\n getRootRef={calendarRef}\n disablePickers={disablePickers}\n prevMonthAriaLabel={prevMonthAriaLabel}\n nextMonthAriaLabel={nextMonthAriaLabel}\n changeMonthAriaLabel={changeMonthAriaLabel}\n changeYearAriaLabel={changeYearAriaLabel}\n changeDayAriaLabel={changeDayAriaLabel}\n />\n </Popper>\n )}\n </FormField>\n );\n};\n"],"file":"DateRangeInput.js"}
|