@vkontakte/vkui 4.29.0 → 4.31.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/.cache/.eslintcache +1 -1
- package/.cache/.stylelintcache +1 -1
- package/.cache/.tsbuildinfo +111 -84
- package/.cache/ts/src/components/Alert/Alert.d.ts +4 -1
- package/.cache/ts/src/components/AppRoot/ScrollContext.d.ts +6 -14
- package/.cache/ts/src/components/Calendar/Calendar.d.ts +10 -1
- package/.cache/ts/src/components/CalendarHeader/CalendarHeader.d.ts +8 -0
- package/.cache/ts/src/components/CalendarRange/CalendarRange.d.ts +1 -1
- package/.cache/ts/src/components/ChipsSelect/ChipsSelect.d.ts +1 -1
- package/.cache/ts/src/components/CustomSelect/CustomSelect.d.ts +1 -1
- package/.cache/ts/src/components/DateInput/DateInput.d.ts +1 -1
- package/.cache/ts/src/components/DateRangeInput/DateRangeInput.d.ts +1 -1
- package/.cache/ts/src/components/FormField/FormField.d.ts +15 -1
- package/.cache/ts/src/components/Input/Input.d.ts +1 -1
- package/.cache/ts/src/components/NativeSelect/NativeSelect.d.ts +1 -2
- package/.cache/ts/src/components/Select/Select.d.ts +1 -1
- package/.cache/ts/src/components/SelectMimicry/SelectMimicry.d.ts +3 -3
- package/.cache/ts/src/components/TabbarItem/TabbarItem.d.ts +1 -1
- package/.cache/ts/src/hooks/useAdaptivity.d.ts +1 -0
- package/.cache/ts/src/hooks/useCalendar.d.ts +4 -3
- package/.cache/ts/src/index.d.ts +2 -1
- package/dist/cjs/components/ActionSheet/ActionSheet.js +6 -10
- package/dist/cjs/components/ActionSheet/ActionSheet.js.map +1 -1
- package/dist/cjs/components/ActionSheet/ActionSheetDropdownDesktop.js +1 -1
- package/dist/cjs/components/ActionSheet/ActionSheetDropdownDesktop.js.map +1 -1
- package/dist/cjs/components/Alert/Alert.d.ts +4 -1
- package/dist/cjs/components/Alert/Alert.js +20 -2
- package/dist/cjs/components/Alert/Alert.js.map +1 -1
- package/dist/cjs/components/AppRoot/AppRoot.js +18 -2
- package/dist/cjs/components/AppRoot/AppRoot.js.map +1 -1
- package/dist/cjs/components/AppRoot/ScrollContext.d.ts +6 -14
- package/dist/cjs/components/AppRoot/ScrollContext.js +94 -2
- package/dist/cjs/components/AppRoot/ScrollContext.js.map +1 -1
- package/dist/cjs/components/Calendar/Calendar.d.ts +10 -1
- package/dist/cjs/components/Calendar/Calendar.js +16 -5
- package/dist/cjs/components/Calendar/Calendar.js.map +1 -1
- package/dist/cjs/components/CalendarHeader/CalendarHeader.d.ts +8 -0
- package/dist/cjs/components/CalendarHeader/CalendarHeader.js +15 -9
- package/dist/cjs/components/CalendarHeader/CalendarHeader.js.map +1 -1
- package/dist/cjs/components/CalendarRange/CalendarRange.d.ts +1 -1
- package/dist/cjs/components/CalendarRange/CalendarRange.js +7 -3
- package/dist/cjs/components/CalendarRange/CalendarRange.js.map +1 -1
- package/dist/cjs/components/ChipsInput/ChipsInput.js +3 -1
- package/dist/cjs/components/ChipsInput/ChipsInput.js.map +1 -1
- package/dist/cjs/components/ChipsSelect/ChipsSelect.d.ts +1 -1
- package/dist/cjs/components/ConfigProvider/ConfigProvider.js +1 -1
- package/dist/cjs/components/ConfigProvider/ConfigProvider.js.map +1 -1
- package/dist/cjs/components/CustomSelect/CustomSelect.d.ts +1 -1
- package/dist/cjs/components/CustomSelect/CustomSelect.js +6 -3
- package/dist/cjs/components/CustomSelect/CustomSelect.js.map +1 -1
- package/dist/cjs/components/DateInput/DateInput.d.ts +1 -1
- package/dist/cjs/components/DateInput/DateInput.js +14 -2
- package/dist/cjs/components/DateInput/DateInput.js.map +1 -1
- package/dist/cjs/components/DateRangeInput/DateRangeInput.d.ts +1 -1
- package/dist/cjs/components/DateRangeInput/DateRangeInput.js +6 -2
- package/dist/cjs/components/DateRangeInput/DateRangeInput.js.map +1 -1
- package/dist/cjs/components/Epic/Epic.js +1 -1
- package/dist/cjs/components/Epic/Epic.js.map +1 -1
- package/dist/cjs/components/FormField/FormField.d.ts +15 -1
- package/dist/cjs/components/FormField/FormField.js +6 -2
- package/dist/cjs/components/FormField/FormField.js.map +1 -1
- package/dist/cjs/components/HorizontalScroll/HorizontalScroll.js +12 -3
- package/dist/cjs/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
- package/dist/cjs/components/Input/Input.d.ts +1 -1
- package/dist/cjs/components/Input/Input.js +3 -1
- package/dist/cjs/components/Input/Input.js.map +1 -1
- package/dist/cjs/components/ModalCard/ModalCard.js +3 -1
- package/dist/cjs/components/ModalCard/ModalCard.js.map +1 -1
- package/dist/cjs/components/ModalCardBase/ModalCardBase.js +4 -2
- package/dist/cjs/components/ModalCardBase/ModalCardBase.js.map +1 -1
- package/dist/cjs/components/ModalPage/ModalPage.js +6 -2
- package/dist/cjs/components/ModalPage/ModalPage.js.map +1 -1
- package/dist/cjs/components/ModalPageHeader/ModalPageHeader.js +2 -10
- package/dist/cjs/components/ModalPageHeader/ModalPageHeader.js.map +1 -1
- package/dist/cjs/components/ModalRoot/ModalRoot.js +2 -2
- package/dist/cjs/components/ModalRoot/ModalRoot.js.map +1 -1
- package/dist/cjs/components/ModalRoot/ModalRootAdaptive.js +6 -4
- package/dist/cjs/components/ModalRoot/ModalRootAdaptive.js.map +1 -1
- package/dist/cjs/components/ModalRoot/useModalManager.js +1 -1
- package/dist/cjs/components/ModalRoot/useModalManager.js.map +1 -1
- package/dist/cjs/components/NativeSelect/NativeSelect.d.ts +1 -2
- package/dist/cjs/components/NativeSelect/NativeSelect.js +5 -7
- package/dist/cjs/components/NativeSelect/NativeSelect.js.map +1 -1
- package/dist/cjs/components/PanelHeader/PanelHeader.js +6 -4
- package/dist/cjs/components/PanelHeader/PanelHeader.js.map +1 -1
- package/dist/cjs/components/PanelHeaderContext/PanelHeaderContext.js +4 -1
- package/dist/cjs/components/PanelHeaderContext/PanelHeaderContext.js.map +1 -1
- package/dist/cjs/components/PopoutRoot/PopoutRoot.js +3 -1
- package/dist/cjs/components/PopoutRoot/PopoutRoot.js.map +1 -1
- package/dist/cjs/components/ScreenSpinner/ScreenSpinner.js +3 -0
- package/dist/cjs/components/ScreenSpinner/ScreenSpinner.js.map +1 -1
- package/dist/cjs/components/Select/Select.d.ts +1 -1
- package/dist/cjs/components/Select/Select.js +2 -2
- package/dist/cjs/components/Select/Select.js.map +1 -1
- package/dist/cjs/components/SelectMimicry/SelectMimicry.d.ts +3 -3
- package/dist/cjs/components/SelectMimicry/SelectMimicry.js +3 -1
- package/dist/cjs/components/SelectMimicry/SelectMimicry.js.map +1 -1
- package/dist/cjs/components/TabbarItem/TabbarItem.d.ts +1 -1
- package/dist/cjs/components/TabbarItem/TabbarItem.js.map +1 -1
- package/dist/cjs/components/Tooltip/Tooltip.js +1 -1
- package/dist/cjs/components/Tooltip/Tooltip.js.map +1 -1
- package/dist/cjs/components/Typography/Text/Text.js +1 -1
- package/dist/cjs/components/Typography/Text/Text.js.map +1 -1
- package/dist/cjs/hooks/useAdaptivity.d.ts +1 -0
- package/dist/cjs/hooks/useAdaptivity.js +18 -1
- package/dist/cjs/hooks/useAdaptivity.js.map +1 -1
- package/dist/cjs/hooks/useCalendar.d.ts +4 -3
- package/dist/cjs/hooks/useCalendar.js +15 -6
- package/dist/cjs/hooks/useCalendar.js.map +1 -1
- package/dist/cjs/index.d.ts +2 -1
- package/dist/cjs/index.js +10 -2
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/lib/getNavId.js +1 -1
- package/dist/cjs/lib/getNavId.js.map +1 -1
- package/dist/cjs/lib/platform.js +29 -0
- package/dist/cjs/lib/platform.js.map +1 -1
- package/dist/components/ActionSheet/ActionSheet.js +5 -9
- package/dist/components/ActionSheet/ActionSheet.js.map +1 -1
- package/dist/components/ActionSheet/ActionSheetDropdownDesktop.js +1 -1
- package/dist/components/ActionSheet/ActionSheetDropdownDesktop.js.map +1 -1
- package/dist/components/Alert/Alert.d.ts +4 -1
- package/dist/components/Alert/Alert.js +18 -2
- package/dist/components/Alert/Alert.js.map +1 -1
- package/dist/components/AppRoot/AppRoot.js +17 -2
- package/dist/components/AppRoot/AppRoot.js.map +1 -1
- package/dist/components/AppRoot/ScrollContext.d.ts +6 -14
- package/dist/components/AppRoot/ScrollContext.js +87 -1
- package/dist/components/AppRoot/ScrollContext.js.map +1 -1
- package/dist/components/Calendar/Calendar.d.ts +10 -1
- package/dist/components/Calendar/Calendar.js +16 -5
- package/dist/components/Calendar/Calendar.js.map +1 -1
- package/dist/components/CalendarHeader/CalendarHeader.d.ts +8 -0
- package/dist/components/CalendarHeader/CalendarHeader.js +15 -9
- package/dist/components/CalendarHeader/CalendarHeader.js.map +1 -1
- package/dist/components/CalendarRange/CalendarRange.d.ts +1 -1
- package/dist/components/CalendarRange/CalendarRange.js +7 -3
- package/dist/components/CalendarRange/CalendarRange.js.map +1 -1
- package/dist/components/ChipsInput/ChipsInput.js +3 -1
- package/dist/components/ChipsInput/ChipsInput.js.map +1 -1
- package/dist/components/ChipsSelect/ChipsSelect.d.ts +1 -1
- package/dist/components/ConfigProvider/ConfigProvider.js +1 -1
- package/dist/components/ConfigProvider/ConfigProvider.js.map +1 -1
- package/dist/components/CustomSelect/CustomSelect.d.ts +1 -1
- package/dist/components/CustomSelect/CustomSelect.js +6 -3
- package/dist/components/CustomSelect/CustomSelect.js.map +1 -1
- package/dist/components/DateInput/DateInput.d.ts +1 -1
- package/dist/components/DateInput/DateInput.js +14 -2
- package/dist/components/DateInput/DateInput.js.map +1 -1
- package/dist/components/DateRangeInput/DateRangeInput.d.ts +1 -1
- package/dist/components/DateRangeInput/DateRangeInput.js +6 -2
- package/dist/components/DateRangeInput/DateRangeInput.js.map +1 -1
- package/dist/components/Epic/Epic.js +1 -1
- package/dist/components/Epic/Epic.js.map +1 -1
- package/dist/components/FormField/FormField.d.ts +15 -1
- package/dist/components/FormField/FormField.js +6 -2
- package/dist/components/FormField/FormField.js.map +1 -1
- package/dist/components/HorizontalScroll/HorizontalScroll.js +12 -3
- package/dist/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
- package/dist/components/Input/Input.d.ts +1 -1
- package/dist/components/Input/Input.js +3 -1
- package/dist/components/Input/Input.js.map +1 -1
- package/dist/components/ModalCard/ModalCard.js +3 -2
- package/dist/components/ModalCard/ModalCard.js.map +1 -1
- package/dist/components/ModalCardBase/ModalCardBase.js +5 -4
- package/dist/components/ModalCardBase/ModalCardBase.js.map +1 -1
- package/dist/components/ModalPage/ModalPage.js +5 -3
- package/dist/components/ModalPage/ModalPage.js.map +1 -1
- package/dist/components/ModalPageHeader/ModalPageHeader.js +2 -9
- package/dist/components/ModalPageHeader/ModalPageHeader.js.map +1 -1
- package/dist/components/ModalRoot/ModalRoot.js +2 -2
- package/dist/components/ModalRoot/ModalRoot.js.map +1 -1
- package/dist/components/ModalRoot/ModalRootAdaptive.js +5 -5
- package/dist/components/ModalRoot/ModalRootAdaptive.js.map +1 -1
- package/dist/components/ModalRoot/useModalManager.js +1 -1
- package/dist/components/ModalRoot/useModalManager.js.map +1 -1
- package/dist/components/NativeSelect/NativeSelect.d.ts +1 -2
- package/dist/components/NativeSelect/NativeSelect.js +3 -4
- package/dist/components/NativeSelect/NativeSelect.js.map +1 -1
- package/dist/components/PanelHeader/PanelHeader.js +6 -4
- package/dist/components/PanelHeader/PanelHeader.js.map +1 -1
- package/dist/components/PanelHeaderContext/PanelHeaderContext.js +3 -1
- package/dist/components/PanelHeaderContext/PanelHeaderContext.js.map +1 -1
- package/dist/components/PopoutRoot/PopoutRoot.js +3 -2
- package/dist/components/PopoutRoot/PopoutRoot.js.map +1 -1
- package/dist/components/ScreenSpinner/ScreenSpinner.js +2 -0
- package/dist/components/ScreenSpinner/ScreenSpinner.js.map +1 -1
- package/dist/components/Select/Select.d.ts +1 -1
- package/dist/components/Select/Select.js +1 -1
- package/dist/components/Select/Select.js.map +1 -1
- package/dist/components/SelectMimicry/SelectMimicry.d.ts +3 -3
- package/dist/components/SelectMimicry/SelectMimicry.js +3 -1
- package/dist/components/SelectMimicry/SelectMimicry.js.map +1 -1
- package/dist/components/TabbarItem/TabbarItem.d.ts +1 -1
- package/dist/components/TabbarItem/TabbarItem.js.map +1 -1
- package/dist/components/Tooltip/Tooltip.js +1 -1
- package/dist/components/Tooltip/Tooltip.js.map +1 -1
- package/dist/components/Typography/Text/Text.js +1 -1
- package/dist/components/Typography/Text/Text.js.map +1 -1
- package/dist/components.css +18 -18
- package/dist/components.css.map +1 -1
- package/dist/cssm/components/ActionSheet/ActionSheet.js +5 -9
- package/dist/cssm/components/ActionSheet/ActionSheet.js.map +1 -1
- package/dist/cssm/components/ActionSheet/ActionSheetDropdownDesktop.js +1 -1
- package/dist/cssm/components/ActionSheet/ActionSheetDropdownDesktop.js.map +1 -1
- package/dist/cssm/components/Alert/Alert.d.ts +4 -1
- package/dist/cssm/components/Alert/Alert.js +18 -2
- package/dist/cssm/components/Alert/Alert.js.map +1 -1
- package/dist/cssm/components/AppRoot/AppRoot.js +17 -2
- package/dist/cssm/components/AppRoot/AppRoot.js.map +1 -1
- package/dist/cssm/components/AppRoot/ScrollContext.d.ts +6 -14
- package/dist/cssm/components/AppRoot/ScrollContext.js +87 -1
- package/dist/cssm/components/AppRoot/ScrollContext.js.map +1 -1
- package/dist/cssm/components/Button/Button.css +9 -9
- package/dist/cssm/components/ButtonGroup/ButtonGroup.css +1 -1
- package/dist/cssm/components/Calendar/Calendar.css +1 -1
- package/dist/cssm/components/Calendar/Calendar.d.ts +10 -1
- package/dist/cssm/components/Calendar/Calendar.js +16 -5
- package/dist/cssm/components/Calendar/Calendar.js.map +1 -1
- package/dist/cssm/components/CalendarDay/CalendarDay.css +1 -1
- package/dist/cssm/components/CalendarDays/CalendarDays.css +1 -1
- package/dist/cssm/components/CalendarHeader/CalendarHeader.css +1 -1
- package/dist/cssm/components/CalendarHeader/CalendarHeader.d.ts +8 -0
- package/dist/cssm/components/CalendarHeader/CalendarHeader.js +15 -9
- package/dist/cssm/components/CalendarHeader/CalendarHeader.js.map +1 -1
- package/dist/cssm/components/CalendarRange/CalendarRange.css +1 -1
- package/dist/cssm/components/CalendarRange/CalendarRange.d.ts +1 -1
- package/dist/cssm/components/CalendarRange/CalendarRange.js +7 -3
- package/dist/cssm/components/CalendarRange/CalendarRange.js.map +1 -1
- package/dist/cssm/components/CalendarTime/CalendarTime.css +1 -1
- package/dist/cssm/components/Card/Card.css +2 -2
- package/dist/cssm/components/CardScroll/CardScroll.css +1 -1
- package/dist/cssm/components/Cell/Cell.css +1 -1
- package/dist/cssm/components/CellButton/CellButton.css +1 -1
- package/dist/cssm/components/Checkbox/Checkbox.css +1 -1
- package/dist/cssm/components/ChipsInput/ChipsInput.css +1 -1
- package/dist/cssm/components/ChipsInput/ChipsInput.js +3 -1
- package/dist/cssm/components/ChipsInput/ChipsInput.js.map +1 -1
- package/dist/cssm/components/ChipsSelect/ChipsSelect.d.ts +1 -1
- package/dist/cssm/components/ConfigProvider/ConfigProvider.js +1 -1
- package/dist/cssm/components/ConfigProvider/ConfigProvider.js.map +1 -1
- package/dist/cssm/components/CustomSelect/CustomSelect.d.ts +1 -1
- package/dist/cssm/components/CustomSelect/CustomSelect.js +6 -3
- package/dist/cssm/components/CustomSelect/CustomSelect.js.map +1 -1
- package/dist/cssm/components/CustomSelectDropdown/CustomSelectDropdown.css +1 -1
- package/dist/cssm/components/CustomSelectOption/CustomSelectOption.css +1 -1
- package/dist/cssm/components/DateInput/DateInput.d.ts +1 -1
- package/dist/cssm/components/DateInput/DateInput.js +14 -2
- package/dist/cssm/components/DateInput/DateInput.js.map +1 -1
- package/dist/cssm/components/DateRangeInput/DateRangeInput.d.ts +1 -1
- package/dist/cssm/components/DateRangeInput/DateRangeInput.js +6 -2
- package/dist/cssm/components/DateRangeInput/DateRangeInput.js.map +1 -1
- package/dist/cssm/components/Epic/Epic.js +1 -1
- package/dist/cssm/components/Epic/Epic.js.map +1 -1
- package/dist/cssm/components/FormField/FormField.css +3 -3
- package/dist/cssm/components/FormField/FormField.d.ts +15 -1
- package/dist/cssm/components/FormField/FormField.js +6 -2
- package/dist/cssm/components/FormField/FormField.js.map +1 -1
- package/dist/cssm/components/FormLayoutGroup/FormLayoutGroup.css +1 -1
- package/dist/cssm/components/Gradient/Gradient.css +1 -1
- package/dist/cssm/components/HorizontalScroll/HorizontalScroll.js +12 -3
- package/dist/cssm/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
- package/dist/cssm/components/HorizontalScroll/HorizontalScrollArrow.css +1 -1
- package/dist/cssm/components/Input/Input.css +1 -1
- package/dist/cssm/components/Input/Input.d.ts +1 -1
- package/dist/cssm/components/Input/Input.js +3 -1
- package/dist/cssm/components/Input/Input.js.map +1 -1
- package/dist/cssm/components/InputLike/InputLike.css +1 -1
- package/dist/cssm/components/InputLike/InputLikeDivider.css +1 -1
- package/dist/cssm/components/ModalCard/ModalCard.css +1 -1
- package/dist/cssm/components/ModalCard/ModalCard.js +3 -2
- package/dist/cssm/components/ModalCard/ModalCard.js.map +1 -1
- package/dist/cssm/components/ModalCardBase/ModalCardBase.js +5 -4
- package/dist/cssm/components/ModalCardBase/ModalCardBase.js.map +1 -1
- package/dist/cssm/components/ModalPage/ModalPage.js +5 -3
- package/dist/cssm/components/ModalPage/ModalPage.js.map +1 -1
- package/dist/cssm/components/ModalPageHeader/ModalPageHeader.js +2 -9
- package/dist/cssm/components/ModalPageHeader/ModalPageHeader.js.map +1 -1
- package/dist/cssm/components/ModalRoot/ModalRoot.css +1 -1
- package/dist/cssm/components/ModalRoot/ModalRoot.js +2 -2
- package/dist/cssm/components/ModalRoot/ModalRoot.js.map +1 -1
- package/dist/cssm/components/ModalRoot/ModalRootAdaptive.js +5 -5
- package/dist/cssm/components/ModalRoot/ModalRootAdaptive.js.map +1 -1
- package/dist/cssm/components/ModalRoot/useModalManager.js +1 -1
- package/dist/cssm/components/ModalRoot/useModalManager.js.map +1 -1
- package/dist/cssm/components/NativeSelect/NativeSelect.d.ts +1 -2
- package/dist/cssm/components/NativeSelect/NativeSelect.js +3 -4
- package/dist/cssm/components/NativeSelect/NativeSelect.js.map +1 -1
- package/dist/cssm/components/Pagination/Pagination.css +1 -1
- package/dist/cssm/components/PanelHeader/PanelHeader.css +1 -1
- package/dist/cssm/components/PanelHeader/PanelHeader.js +6 -4
- package/dist/cssm/components/PanelHeader/PanelHeader.js.map +1 -1
- package/dist/cssm/components/PanelHeaderContext/PanelHeaderContext.js +3 -1
- package/dist/cssm/components/PanelHeaderContext/PanelHeaderContext.js.map +1 -1
- package/dist/cssm/components/PopoutRoot/PopoutRoot.js +3 -2
- package/dist/cssm/components/PopoutRoot/PopoutRoot.js.map +1 -1
- package/dist/cssm/components/Popper/Popper.css +1 -1
- package/dist/cssm/components/Radio/Radio.css +1 -1
- package/dist/cssm/components/RadioGroup/RadioGroup.css +1 -1
- package/dist/cssm/components/Removable/Removable.css +1 -1
- package/dist/cssm/components/RichCell/RichCell.css +1 -1
- package/dist/cssm/components/ScreenSpinner/ScreenSpinner.js +2 -0
- package/dist/cssm/components/ScreenSpinner/ScreenSpinner.js.map +1 -1
- package/dist/cssm/components/SegmentedControl/SegmentedControl.css +1 -1
- package/dist/cssm/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.css +1 -1
- package/dist/cssm/components/Select/Select.d.ts +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/SelectMimicry/SelectMimicry.d.ts +3 -3
- package/dist/cssm/components/SelectMimicry/SelectMimicry.js +3 -1
- package/dist/cssm/components/SelectMimicry/SelectMimicry.js.map +1 -1
- package/dist/cssm/components/SimpleCell/SimpleCell.css +1 -1
- package/dist/cssm/components/Snackbar/Snackbar.css +1 -1
- package/dist/cssm/components/SplitLayout/SplitLayout.css +1 -1
- package/dist/cssm/components/TabbarItem/TabbarItem.d.ts +1 -1
- package/dist/cssm/components/TabbarItem/TabbarItem.js.map +1 -1
- package/dist/cssm/components/Tooltip/Tooltip.js +1 -1
- 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/Paragraph/Paragraph.css +1 -1
- package/dist/cssm/components/Typography/Subhead/Subhead.css +1 -1
- package/dist/cssm/components/Typography/Text/Text.js +1 -1
- package/dist/cssm/components/Typography/Text/Text.js.map +1 -1
- package/dist/cssm/components/Typography/Title/Title.css +1 -1
- package/dist/cssm/hooks/useAdaptivity.d.ts +1 -0
- package/dist/cssm/hooks/useAdaptivity.js +13 -1
- package/dist/cssm/hooks/useAdaptivity.js.map +1 -1
- package/dist/cssm/hooks/useCalendar.d.ts +4 -3
- package/dist/cssm/hooks/useCalendar.js +15 -6
- package/dist/cssm/hooks/useCalendar.js.map +1 -1
- package/dist/cssm/index.d.ts +2 -1
- package/dist/cssm/index.js +2 -1
- package/dist/cssm/index.js.map +1 -1
- package/dist/cssm/lib/getNavId.js +1 -1
- package/dist/cssm/lib/getNavId.js.map +1 -1
- package/dist/cssm/lib/platform.js +26 -0
- package/dist/cssm/lib/platform.js.map +1 -1
- package/dist/cssm/styles/bright_light.css +1 -1
- package/dist/cssm/styles/components.css +18 -18
- package/dist/cssm/styles/constants.css +1 -1
- package/dist/cssm/styles/space_gray.css +1 -1
- package/dist/cssm/styles/themes.css +3 -3
- package/dist/cssm/styles/vkcom_dark.css +2 -2
- package/dist/cssm/styles/vkcom_light.css +1 -1
- package/dist/default_scheme.css +1 -1
- package/dist/default_scheme.css.map +1 -1
- package/dist/hooks/useAdaptivity.d.ts +1 -0
- package/dist/hooks/useAdaptivity.js +13 -1
- package/dist/hooks/useAdaptivity.js.map +1 -1
- package/dist/hooks/useCalendar.d.ts +4 -3
- package/dist/hooks/useCalendar.js +15 -6
- package/dist/hooks/useCalendar.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/getNavId.js +1 -1
- package/dist/lib/getNavId.js.map +1 -1
- package/dist/lib/platform.js +26 -0
- package/dist/lib/platform.js.map +1 -1
- package/dist/vkui.css +21 -21
- package/dist/vkui.css.map +1 -1
- package/jest.unit.config.js +1 -0
- package/package.json +5 -3
- package/postcss-custom-properties-fallback/__tests__/custom_properties.css +5 -0
- package/postcss-custom-properties-fallback/index.js +83 -0
- package/postcss-plugin-vk-sans/index.js +34 -27
- package/src/components/ActionSheet/ActionSheet.tsx +9 -7
- package/src/components/ActionSheet/ActionSheetDropdownDesktop.tsx +1 -1
- package/src/components/ActionSheet/Readme.md +1 -0
- package/src/components/Alert/Alert.tsx +23 -4
- package/src/components/AppRoot/AppRoot.tsx +17 -2
- package/src/components/AppRoot/ScrollContext.ts +90 -2
- package/src/components/Button/Button.css +2 -0
- package/src/components/Calendar/Calendar.tsx +32 -3
- package/src/components/CalendarHeader/CalendarHeader.css +3 -0
- package/src/components/CalendarHeader/CalendarHeader.tsx +24 -2
- package/src/components/CalendarRange/CalendarRange.tsx +6 -0
- package/src/components/Card/Card.css +2 -1
- package/src/components/Cell/Cell.css +1 -1
- package/src/components/CellButton/CellButton.css +1 -1
- package/src/components/Checkbox/Checkbox.css +1 -1
- package/src/components/ChipsInput/ChipsInput.tsx +2 -0
- package/src/components/ConfigProvider/ConfigProvider.tsx +1 -1
- package/src/components/CustomSelect/CustomSelect.tsx +6 -3
- package/src/components/DateInput/DateInput.tsx +18 -0
- package/src/components/DateRangeInput/DateRangeInput.tsx +6 -0
- package/src/components/Epic/Epic.tsx +3 -1
- package/src/components/FixedLayout/FixedLayout.css +10 -0
- package/src/components/FormField/FormField.css +10 -0
- package/src/components/FormField/FormField.tsx +21 -1
- package/src/components/FormField/Readme.md +85 -19
- package/src/components/FormItem/FormItem.css +1 -0
- package/src/components/FormLayoutGroup/FormLayoutGroup.css +2 -1
- package/src/components/Gradient/Gradient.css +4 -2
- package/src/components/HorizontalScroll/HorizontalScroll.tsx +9 -3
- package/src/components/Input/Input.tsx +2 -0
- package/src/components/ModalCard/ModalCard.css +1 -1
- package/src/components/ModalCard/ModalCard.tsx +3 -8
- package/src/components/ModalCardBase/ModalCardBase.tsx +6 -10
- package/src/components/ModalPage/ModalPage.tsx +6 -9
- package/src/components/ModalPageHeader/ModalPageHeader.tsx +2 -6
- package/src/components/ModalRoot/ModalRoot.css +3 -2
- package/src/components/ModalRoot/ModalRoot.tsx +6 -2
- package/src/components/ModalRoot/ModalRootAdaptive.tsx +6 -9
- package/src/components/ModalRoot/Readme.md +1 -1
- package/src/components/ModalRoot/useModalManager.tsx +4 -1
- package/src/components/NativeSelect/NativeSelect.tsx +2 -3
- package/src/components/PanelHeader/PanelHeader.css +13 -13
- package/src/components/PanelHeader/PanelHeader.tsx +18 -17
- package/src/components/PanelHeader/Readme.md +2 -2
- package/src/components/PanelHeaderContext/PanelHeaderContext.tsx +3 -0
- package/src/components/PopoutRoot/PopoutRoot.tsx +3 -8
- package/src/components/Popper/Popper.css +14 -2
- package/src/components/Radio/Radio.css +1 -1
- package/src/components/RadioGroup/RadioGroup.css +1 -1
- package/src/components/Removable/Removable.css +2 -2
- package/src/components/RichCell/RichCell.css +1 -1
- package/src/components/ScreenSpinner/ScreenSpinner.tsx +3 -0
- package/src/components/Select/Select.tsx +1 -1
- package/src/components/SelectMimicry/SelectMimicry.tsx +5 -3
- package/src/components/SimpleCell/SimpleCell.css +1 -1
- package/src/components/Snackbar/Snackbar.css +6 -3
- package/src/components/SplitLayout/SplitLayout.css +3 -1
- package/src/components/Switch/Readme.md +12 -36
- package/src/components/TabbarItem/TabbarItem.tsx +1 -1
- package/src/components/Tooltip/Readme.md +35 -47
- package/src/components/Tooltip/Tooltip.tsx +2 -2
- package/src/components/Typography/Text/Text.tsx +4 -1
- package/src/hooks/useAdaptivity.ts +15 -0
- package/src/hooks/useCalendar.ts +25 -9
- package/src/index.ts +2 -1
- package/src/lib/getNavId.ts +1 -1
- package/src/lib/platform.ts +34 -0
- package/src/styles/bright_light.css +2 -0
- package/src/styles/constants.css +3 -2
- package/src/styles/space_gray.css +10 -8
- package/src/styles/vkcom_dark.css +6 -4
- package/src/styles/vkcom_light.css +4 -2
- package/src/testing/utils.tsx +5 -1
- package/tsconfig.json +1 -0
package/jest.unit.config.js
CHANGED
|
@@ -4,6 +4,7 @@ module.exports = {
|
|
|
4
4
|
roots: [
|
|
5
5
|
path.join(__dirname, "src"),
|
|
6
6
|
path.join(__dirname, "postcss-plugin-vk-sans"),
|
|
7
|
+
path.join(__dirname, "postcss-custom-properties-fallback"),
|
|
7
8
|
],
|
|
8
9
|
setupFilesAfterEnv: [path.join(__dirname, "src/testing/setup.ts")],
|
|
9
10
|
collectCoverage: true,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vkontakte/vkui",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.31.0",
|
|
4
4
|
"main": "dist/cjs/index.js",
|
|
5
5
|
"module": "dist/index.js",
|
|
6
6
|
"typings": "dist/index.d.ts",
|
|
@@ -43,11 +43,11 @@
|
|
|
43
43
|
"@types/webpack-dev-server": "^3.11.2",
|
|
44
44
|
"@typescript-eslint/eslint-plugin": "^2.28.0",
|
|
45
45
|
"@typescript-eslint/parser": "^2.0.0",
|
|
46
|
-
"@vkontakte/appearance": "https://github.com/VKCOM/Appearance#v9.
|
|
46
|
+
"@vkontakte/appearance": "https://github.com/VKCOM/Appearance#v9.40.4",
|
|
47
47
|
"@vkontakte/eslint-config": "2.5.0",
|
|
48
48
|
"@vkontakte/icons": "^1.145.1",
|
|
49
49
|
"@vkontakte/vk-bridge": "^2.1.3",
|
|
50
|
-
"@vkontakte/vkui-tokens": "4.
|
|
50
|
+
"@vkontakte/vkui-tokens": "4.10.0",
|
|
51
51
|
"autoprefixer": "^10.4.2",
|
|
52
52
|
"babel-jest": "^26.6.3",
|
|
53
53
|
"babel-loader": "^8.2.3",
|
|
@@ -86,6 +86,8 @@
|
|
|
86
86
|
"postcss-import": "^14.0.2",
|
|
87
87
|
"postcss-loader": "^6.2.1",
|
|
88
88
|
"postcss-modules": "^4.3.0",
|
|
89
|
+
"postcss-value-parser": "^4.2.0",
|
|
90
|
+
"postcss-values-parser": "^6.0.2",
|
|
89
91
|
"prettier": "^2.5.1",
|
|
90
92
|
"process": "^0.11.10",
|
|
91
93
|
"prop-types": "^15.6.2",
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/* stylelint-disable */
|
|
2
|
+
const fs = require("fs");
|
|
3
|
+
const valueParser = require("postcss-value-parser");
|
|
4
|
+
const { nodeToString, parse: parseValues } = require("postcss-values-parser");
|
|
5
|
+
const { parse } = require("postcss");
|
|
6
|
+
|
|
7
|
+
const isTransformableDecl = (decl) =>
|
|
8
|
+
/(^|[^\w-])var\([\W\w]+\)/.test(decl.value);
|
|
9
|
+
|
|
10
|
+
function parseCustomProperties(importFrom) {
|
|
11
|
+
const customProperties = new Map();
|
|
12
|
+
|
|
13
|
+
parse(fs.readFileSync(importFrom, "utf8")).walkRules((rule) => {
|
|
14
|
+
if (rule.selector === ":root") {
|
|
15
|
+
rule.walkDecls((decl) => {
|
|
16
|
+
if (decl.prop.startsWith("--")) {
|
|
17
|
+
customProperties.set(
|
|
18
|
+
decl.prop,
|
|
19
|
+
parseValues(String(decl.value)).nodes
|
|
20
|
+
);
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
return customProperties;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
module.exports = (opts) => {
|
|
30
|
+
return {
|
|
31
|
+
postcssPlugin: "custom-properties-fallback",
|
|
32
|
+
prepare() {
|
|
33
|
+
const customProperties = parseCustomProperties(opts.importFrom);
|
|
34
|
+
const shouldTransformableDecl =
|
|
35
|
+
opts.shouldTransformableDecl || isTransformableDecl;
|
|
36
|
+
|
|
37
|
+
return {
|
|
38
|
+
Declaration(node) {
|
|
39
|
+
if (shouldTransformableDecl(node)) {
|
|
40
|
+
const parsed = valueParser(node.value);
|
|
41
|
+
|
|
42
|
+
parsed.walk((node) => {
|
|
43
|
+
if (node.type !== "function" || node.nodes.length !== 1) {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
const firstValue = node.nodes[0].value;
|
|
48
|
+
|
|
49
|
+
if (
|
|
50
|
+
!customProperties.has(firstValue) ||
|
|
51
|
+
customProperties.get(firstValue).length === 0
|
|
52
|
+
) {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
const fallback = customProperties.get(firstValue);
|
|
57
|
+
|
|
58
|
+
node.nodes.push(
|
|
59
|
+
{
|
|
60
|
+
type: "divider",
|
|
61
|
+
value: ",",
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
type: "word",
|
|
65
|
+
value:
|
|
66
|
+
fallback.length > 1
|
|
67
|
+
? fallback
|
|
68
|
+
.map((fallbackNode) => nodeToString(fallbackNode))
|
|
69
|
+
.join(" ")
|
|
70
|
+
: fallback,
|
|
71
|
+
}
|
|
72
|
+
);
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
node.value = parsed.toString();
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
};
|
|
79
|
+
},
|
|
80
|
+
};
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
module.exports.postcss = true;
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
/* stylelint-disable */
|
|
2
|
-
const postcss = require("postcss");
|
|
3
2
|
const fs = require("fs");
|
|
4
3
|
const path = require("path");
|
|
5
4
|
|
|
@@ -88,14 +87,18 @@ const updateFontSizeStats = (value = "", platform) => {
|
|
|
88
87
|
return ++cache.fontSizeUsages[value];
|
|
89
88
|
};
|
|
90
89
|
|
|
91
|
-
const extendConfigWithCustomProperties = (
|
|
90
|
+
const extendConfigWithCustomProperties = (
|
|
91
|
+
customPropertiesFile,
|
|
92
|
+
platform,
|
|
93
|
+
parse
|
|
94
|
+
) => {
|
|
92
95
|
const customProperties = fs.readFileSync(
|
|
93
96
|
path.resolve(customPropertiesFile),
|
|
94
97
|
"utf8"
|
|
95
98
|
);
|
|
96
99
|
const customPropertiesValues = {};
|
|
97
100
|
|
|
98
|
-
|
|
101
|
+
parse(customProperties).walkRules((rule) => {
|
|
99
102
|
if (
|
|
100
103
|
rule.parent.type === "root" &&
|
|
101
104
|
rule.type === "rule" &&
|
|
@@ -153,38 +156,42 @@ const initializeConfig = (platform, overrides) => {
|
|
|
153
156
|
}
|
|
154
157
|
};
|
|
155
158
|
|
|
156
|
-
const initializeCustomPropertiesFiles = (
|
|
159
|
+
const initializeCustomPropertiesFiles = (
|
|
160
|
+
customPropertiesFiles,
|
|
161
|
+
platform,
|
|
162
|
+
parse
|
|
163
|
+
) => {
|
|
157
164
|
customPropertiesFiles.forEach((i) => {
|
|
158
165
|
if (!initializedCustomPropertiesFiles.has(i)) {
|
|
159
|
-
extendConfigWithCustomProperties(i, platform);
|
|
166
|
+
extendConfigWithCustomProperties(i, platform, parse);
|
|
160
167
|
initializedCustomPropertiesFiles.add(i);
|
|
161
168
|
}
|
|
162
169
|
});
|
|
163
170
|
};
|
|
164
171
|
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
172
|
+
module.exports = (opts) => {
|
|
173
|
+
const {
|
|
174
|
+
debug,
|
|
175
|
+
overrides,
|
|
176
|
+
platform = "test",
|
|
177
|
+
features = defaultFeatures,
|
|
178
|
+
customPropertiesFiles,
|
|
179
|
+
ignoreFiles,
|
|
180
|
+
ignoreSelectors,
|
|
181
|
+
explicitNormalLetterSpacing,
|
|
182
|
+
respectImportant,
|
|
183
|
+
varName = "--palette-vk-font",
|
|
184
|
+
} = opts;
|
|
185
|
+
|
|
186
|
+
return {
|
|
187
|
+
postcssPlugin: "vk-sans-mandatory-declarations",
|
|
188
|
+
Once(css, { parse }) {
|
|
182
189
|
if (!cache.config[platform]) {
|
|
183
190
|
initializeConfig(platform, overrides);
|
|
184
191
|
}
|
|
185
192
|
|
|
186
193
|
if (customPropertiesFiles) {
|
|
187
|
-
initializeCustomPropertiesFiles(customPropertiesFiles, platform);
|
|
194
|
+
initializeCustomPropertiesFiles(customPropertiesFiles, platform, parse);
|
|
188
195
|
}
|
|
189
196
|
|
|
190
197
|
if (
|
|
@@ -336,8 +343,8 @@ const VkSansMandatoryDeclarations = postcss.plugin(
|
|
|
336
343
|
}
|
|
337
344
|
});
|
|
338
345
|
}
|
|
339
|
-
}
|
|
340
|
-
}
|
|
341
|
-
|
|
346
|
+
},
|
|
347
|
+
};
|
|
348
|
+
};
|
|
342
349
|
|
|
343
|
-
module.exports =
|
|
350
|
+
module.exports.postcss = true;
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
import { PopoutWrapper } from "../PopoutWrapper/PopoutWrapper";
|
|
3
|
-
import { ViewWidth, ViewHeight } from "../../hoc/withAdaptivity";
|
|
4
3
|
import { IOS } from "../../lib/platform";
|
|
5
4
|
import { ActionSheetDropdownDesktop } from "./ActionSheetDropdownDesktop";
|
|
6
5
|
import { ActionSheetDropdown } from "./ActionSheetDropdown";
|
|
@@ -9,10 +8,11 @@ import { ActionSheetContext, ItemClickHandler } from "./ActionSheetContext";
|
|
|
9
8
|
import { Caption } from "../Typography/Caption/Caption";
|
|
10
9
|
import { usePlatform } from "../../hooks/usePlatform";
|
|
11
10
|
import { useTimeout } from "../../hooks/useTimeout";
|
|
12
|
-
import {
|
|
11
|
+
import { useAdaptivityIsDesktop } from "../../hooks/useAdaptivity";
|
|
13
12
|
import { useObjectMemo } from "../../hooks/useObjectMemo";
|
|
14
13
|
import { warnOnce } from "../../lib/warnOnce";
|
|
15
14
|
import { SharedDropdownProps, PopupDirection, ToggleRef } from "./types";
|
|
15
|
+
import { useScrollLock } from "../AppRoot/ScrollContext";
|
|
16
16
|
import "./ActionSheet.css";
|
|
17
17
|
|
|
18
18
|
export interface ActionSheetProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
@@ -61,13 +61,15 @@ export const ActionSheet: React.FC<ActionSheetProps> = ({
|
|
|
61
61
|
};
|
|
62
62
|
|
|
63
63
|
if (process.env.NODE_ENV === "development" && !restProps.onClose) {
|
|
64
|
-
warn(
|
|
64
|
+
warn(
|
|
65
|
+
`Без свойства "onClose" нельзя закрыть ActionSheet по клику вне компонента`,
|
|
66
|
+
"error"
|
|
67
|
+
);
|
|
65
68
|
}
|
|
66
69
|
|
|
67
|
-
const
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
(hasMouse || viewHeight >= ViewHeight.MEDIUM);
|
|
70
|
+
const isDesktop = useAdaptivityIsDesktop();
|
|
71
|
+
|
|
72
|
+
useScrollLock(!isDesktop);
|
|
71
73
|
|
|
72
74
|
let timeout = platform === IOS ? 300 : 200;
|
|
73
75
|
|
|
@@ -38,7 +38,7 @@ export const ActionSheetDropdownDesktop: React.FC<SharedDropdownProps> = ({
|
|
|
38
38
|
useEffectDev(() => {
|
|
39
39
|
const toggleEl = getEl(toggleRef);
|
|
40
40
|
if (!toggleEl) {
|
|
41
|
-
warn("toggleRef
|
|
41
|
+
warn(`Свойство "toggleRef" не передано`, "error");
|
|
42
42
|
}
|
|
43
43
|
}, [toggleRef]);
|
|
44
44
|
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
ActionSheet – имитация [нативного компонента](https://developer.apple.com/ios/human-interface-guidelines/views/action-sheets/).
|
|
2
2
|
Удобно использовать, когда нужно дать пользователю выбрать одно из множества действий. В качестве `children` принимает
|
|
3
3
|
коллекцию `ActionSheetItem`.
|
|
4
|
+
На больших экранах прокрутка не отключается.
|
|
4
5
|
|
|
5
6
|
Передаётся в качестве значения свойства `popout` компонента [`SplitLayout`](#/SplitLayout).
|
|
6
7
|
|
|
@@ -19,6 +19,11 @@ import {
|
|
|
19
19
|
AdaptivityContextInterface,
|
|
20
20
|
AdaptivityProps,
|
|
21
21
|
} from "../AdaptivityProvider/AdaptivityContext";
|
|
22
|
+
import { withContext } from "../../hoc/withContext";
|
|
23
|
+
import {
|
|
24
|
+
ScrollContext,
|
|
25
|
+
ScrollContextInterface,
|
|
26
|
+
} from "../AppRoot/ScrollContext";
|
|
22
27
|
import "./Alert.css";
|
|
23
28
|
|
|
24
29
|
export type AlertActionInterface = AlertAction &
|
|
@@ -40,6 +45,8 @@ export interface AlertProps
|
|
|
40
45
|
header?: React.ReactNode;
|
|
41
46
|
text?: React.ReactNode;
|
|
42
47
|
onClose?: VoidFunction;
|
|
48
|
+
/** @ignore */
|
|
49
|
+
scroll?: ScrollContextInterface;
|
|
43
50
|
}
|
|
44
51
|
|
|
45
52
|
export type TAlertProps = AlertProps & AdaptivityContextInterface;
|
|
@@ -61,6 +68,14 @@ class AlertComponent extends React.Component<TAlertProps, AlertState> {
|
|
|
61
68
|
};
|
|
62
69
|
}
|
|
63
70
|
|
|
71
|
+
componentDidMount() {
|
|
72
|
+
this.props.scroll?.enableScrollLock();
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
componentWillUnmount() {
|
|
76
|
+
this.props.scroll?.disableScrollLock();
|
|
77
|
+
}
|
|
78
|
+
|
|
64
79
|
element: React.RefObject<HTMLDivElement>;
|
|
65
80
|
|
|
66
81
|
private transitionFinishTimeout: number | undefined = undefined;
|
|
@@ -282,8 +297,12 @@ class AlertComponent extends React.Component<TAlertProps, AlertState> {
|
|
|
282
297
|
}
|
|
283
298
|
}
|
|
284
299
|
|
|
285
|
-
export const Alert =
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
300
|
+
export const Alert = withContext(
|
|
301
|
+
withPlatform(
|
|
302
|
+
withAdaptivity(AlertComponent, {
|
|
303
|
+
viewWidth: true,
|
|
304
|
+
})
|
|
305
|
+
),
|
|
306
|
+
ScrollContext,
|
|
307
|
+
"scroll"
|
|
289
308
|
);
|
|
@@ -21,6 +21,7 @@ import { warnOnce } from "../../lib/warnOnce";
|
|
|
21
21
|
import { useKeyboardInputTracker } from "../../hooks/useKeyboardInputTracker";
|
|
22
22
|
import { useInsets } from "../../hooks/useInsets";
|
|
23
23
|
import { Insets } from "@vkontakte/vk-bridge";
|
|
24
|
+
import { ConfigProviderContext } from "../ConfigProvider/ConfigProviderContext";
|
|
24
25
|
import "./AppRoot.css";
|
|
25
26
|
|
|
26
27
|
// Используйте classList, но будьте осторожны
|
|
@@ -60,6 +61,7 @@ export const AppRoot = withAdaptivity<AppRootProps>(
|
|
|
60
61
|
);
|
|
61
62
|
const { window, document } = useDOM();
|
|
62
63
|
const insets = useInsets();
|
|
64
|
+
const { appearance } = React.useContext(ConfigProviderContext);
|
|
63
65
|
|
|
64
66
|
const initialized = React.useRef(false);
|
|
65
67
|
if (!initialized.current) {
|
|
@@ -72,10 +74,13 @@ export const AppRoot = withAdaptivity<AppRootProps>(
|
|
|
72
74
|
|
|
73
75
|
if (process.env.NODE_ENV === "development") {
|
|
74
76
|
if (scroll !== "global" && mode !== "embedded") {
|
|
75
|
-
warn(
|
|
77
|
+
warn(
|
|
78
|
+
`Свойство scroll="${scroll}" поддерживается только в режиме embedded`,
|
|
79
|
+
"error"
|
|
80
|
+
);
|
|
76
81
|
}
|
|
77
82
|
if (_mode && _embedded) {
|
|
78
|
-
warn(
|
|
83
|
+
warn(`Свойство mode="${mode}" приоритетнее, чем "embedded"`);
|
|
79
84
|
}
|
|
80
85
|
}
|
|
81
86
|
|
|
@@ -155,6 +160,16 @@ export const AppRoot = withAdaptivity<AppRootProps>(
|
|
|
155
160
|
return () => container?.classList.remove("vkui--sizeX-regular");
|
|
156
161
|
}, [sizeX]);
|
|
157
162
|
|
|
163
|
+
useIsomorphicLayoutEffect(() => {
|
|
164
|
+
if (mode !== "full" || appearance === undefined) {
|
|
165
|
+
return noop;
|
|
166
|
+
}
|
|
167
|
+
document!.documentElement.style.setProperty("color-scheme", appearance);
|
|
168
|
+
|
|
169
|
+
return () =>
|
|
170
|
+
document!.documentElement.style.removeProperty("color-scheme");
|
|
171
|
+
}, [appearance]);
|
|
172
|
+
|
|
158
173
|
const scrollController = React.useMemo<ScrollContextInterface>(
|
|
159
174
|
() =>
|
|
160
175
|
scroll === "contain"
|
|
@@ -1,21 +1,39 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
import { noop } from "../../lib/utils";
|
|
3
|
+
import { useIsomorphicLayoutEffect } from "../../lib/useIsomorphicLayoutEffect";
|
|
3
4
|
import { clamp } from "../../helpers/math";
|
|
4
5
|
|
|
6
|
+
const clearDisableScrollStyle = (node: HTMLElement) => {
|
|
7
|
+
Object.assign(node.style, {
|
|
8
|
+
position: "",
|
|
9
|
+
top: "",
|
|
10
|
+
left: "",
|
|
11
|
+
right: "",
|
|
12
|
+
overflowY: "",
|
|
13
|
+
overflowX: "",
|
|
14
|
+
});
|
|
15
|
+
};
|
|
16
|
+
|
|
5
17
|
export interface ScrollContextInterface {
|
|
6
18
|
getScroll(): { x: number; y: number };
|
|
7
19
|
scrollTo(x?: number, y?: number): void;
|
|
20
|
+
enableScrollLock(): void;
|
|
21
|
+
disableScrollLock(): void;
|
|
8
22
|
}
|
|
9
23
|
|
|
10
24
|
export const ScrollContext = React.createContext<ScrollContextInterface>({
|
|
11
25
|
getScroll: () => ({ x: 0, y: 0 }),
|
|
12
26
|
scrollTo: noop,
|
|
27
|
+
enableScrollLock: noop,
|
|
28
|
+
disableScrollLock: noop,
|
|
13
29
|
});
|
|
14
30
|
|
|
31
|
+
export const useScroll = () => React.useContext(ScrollContext);
|
|
32
|
+
|
|
15
33
|
export const globalScrollController = (
|
|
16
34
|
window: Window | undefined,
|
|
17
35
|
document: HTMLDocument | undefined
|
|
18
|
-
) => ({
|
|
36
|
+
): ScrollContextInterface => ({
|
|
19
37
|
getScroll: () => ({ x: window!.pageXOffset, y: window!.pageYOffset }),
|
|
20
38
|
scrollTo: (x = 0, y = 0) => {
|
|
21
39
|
// Some iOS versions do not normalize scroll — do it manually.
|
|
@@ -24,11 +42,39 @@ export const globalScrollController = (
|
|
|
24
42
|
y ? clamp(y, 0, document!.body.scrollHeight - window!.innerHeight) : 0
|
|
25
43
|
);
|
|
26
44
|
},
|
|
45
|
+
enableScrollLock: () => {
|
|
46
|
+
const scrollY = window!.pageYOffset;
|
|
47
|
+
const scrollX = window!.pageXOffset;
|
|
48
|
+
const overflowY =
|
|
49
|
+
window!.innerWidth > document!.documentElement.clientWidth
|
|
50
|
+
? "scroll"
|
|
51
|
+
: "";
|
|
52
|
+
const overflowX =
|
|
53
|
+
window!.innerHeight > document!.documentElement.clientHeight
|
|
54
|
+
? "scroll"
|
|
55
|
+
: "";
|
|
56
|
+
|
|
57
|
+
Object.assign(document!.body.style, {
|
|
58
|
+
position: "fixed",
|
|
59
|
+
top: `-${scrollY}px`,
|
|
60
|
+
left: `-${scrollX}px`,
|
|
61
|
+
right: "0",
|
|
62
|
+
overflowY,
|
|
63
|
+
overflowX,
|
|
64
|
+
});
|
|
65
|
+
},
|
|
66
|
+
disableScrollLock: () => {
|
|
67
|
+
const scrollY = document!.body.style.top;
|
|
68
|
+
const scrollX = document!.body.style.left;
|
|
69
|
+
|
|
70
|
+
clearDisableScrollStyle(document!.body);
|
|
71
|
+
window!.scrollTo(-parseInt(scrollX || "0"), -parseInt(scrollY || "0"));
|
|
72
|
+
},
|
|
27
73
|
});
|
|
28
74
|
|
|
29
75
|
export const elementScrollController = (
|
|
30
76
|
elRef: React.RefObject<HTMLElement>
|
|
31
|
-
) => ({
|
|
77
|
+
): ScrollContextInterface => ({
|
|
32
78
|
getScroll: () => ({
|
|
33
79
|
x: elRef.current?.scrollLeft ?? 0,
|
|
34
80
|
y: elRef.current?.scrollTop ?? 0,
|
|
@@ -41,4 +87,46 @@ export const elementScrollController = (
|
|
|
41
87
|
y ? clamp(y, 0, el.scrollHeight - el.clientHeight) : 0
|
|
42
88
|
);
|
|
43
89
|
},
|
|
90
|
+
enableScrollLock: () => {
|
|
91
|
+
const el = elRef.current;
|
|
92
|
+
if (!el) {
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
const scrollY = el.scrollTop;
|
|
96
|
+
const scrollX = el.scrollLeft;
|
|
97
|
+
const overflowY = el.scrollWidth > el.clientWidth ? "scroll" : "";
|
|
98
|
+
const overflowX = el.scrollHeight > el.clientHeight ? "scroll" : "";
|
|
99
|
+
|
|
100
|
+
Object.assign(el.style, {
|
|
101
|
+
position: "absolute",
|
|
102
|
+
top: `-${scrollY}px`,
|
|
103
|
+
left: `-${scrollX}px`,
|
|
104
|
+
right: "0",
|
|
105
|
+
overflowY,
|
|
106
|
+
overflowX,
|
|
107
|
+
});
|
|
108
|
+
},
|
|
109
|
+
disableScrollLock: () => {
|
|
110
|
+
const el = elRef.current;
|
|
111
|
+
if (!el) {
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
const scrollY = el.style.top;
|
|
116
|
+
const scrollX = el.style.left;
|
|
117
|
+
|
|
118
|
+
clearDisableScrollStyle(el);
|
|
119
|
+
el.scrollTo(-parseInt(scrollX || "0"), -parseInt(scrollY || "0"));
|
|
120
|
+
},
|
|
44
121
|
});
|
|
122
|
+
|
|
123
|
+
export const useScrollLock = (enabled = true) => {
|
|
124
|
+
const { enableScrollLock, disableScrollLock } = useScroll();
|
|
125
|
+
useIsomorphicLayoutEffect(() => {
|
|
126
|
+
if (enabled) {
|
|
127
|
+
enableScrollLock();
|
|
128
|
+
return disableScrollLock;
|
|
129
|
+
}
|
|
130
|
+
return noop;
|
|
131
|
+
}, [enableScrollLock, disableScrollLock, enabled]);
|
|
132
|
+
};
|
|
@@ -568,11 +568,13 @@
|
|
|
568
568
|
flex: 1;
|
|
569
569
|
margin-left: 6px;
|
|
570
570
|
margin-right: 6px;
|
|
571
|
+
width: 0;
|
|
571
572
|
}
|
|
572
573
|
|
|
573
574
|
.ModalCardBase__actions--v .Button {
|
|
574
575
|
margin-left: 0;
|
|
575
576
|
margin-right: 0;
|
|
577
|
+
width: 100%;
|
|
576
578
|
}
|
|
577
579
|
|
|
578
580
|
.ModalCardBase__actions--v .Button + .Button {
|
|
@@ -28,6 +28,10 @@ export interface CalendarProps
|
|
|
28
28
|
| "nextMonthAriaLabel"
|
|
29
29
|
| "changeMonthAriaLabel"
|
|
30
30
|
| "changeYearAriaLabel"
|
|
31
|
+
| "onNextMonth"
|
|
32
|
+
| "onPrevMonth"
|
|
33
|
+
| "prevMonthIcon"
|
|
34
|
+
| "nextMonthIcon"
|
|
31
35
|
>,
|
|
32
36
|
HasRootRef<HTMLDivElement> {
|
|
33
37
|
value?: Date;
|
|
@@ -43,6 +47,15 @@ export interface CalendarProps
|
|
|
43
47
|
onChange?(value?: Date): void;
|
|
44
48
|
shouldDisableDate?(value: Date): boolean;
|
|
45
49
|
onClose?(): void;
|
|
50
|
+
/**
|
|
51
|
+
* Дата отображаемого месяца.
|
|
52
|
+
* При использовании обновление даты должно происходить вне компонента.
|
|
53
|
+
*/
|
|
54
|
+
viewDate?: Date;
|
|
55
|
+
/**
|
|
56
|
+
* Изменение даты в шапке календаря.
|
|
57
|
+
*/
|
|
58
|
+
onHeaderChange?(value: Date): void;
|
|
46
59
|
}
|
|
47
60
|
|
|
48
61
|
const warn = warnOnce("Calendar");
|
|
@@ -68,6 +81,12 @@ export const Calendar: React.FC<CalendarProps> = ({
|
|
|
68
81
|
showNeighboringMonth,
|
|
69
82
|
changeDayAriaLabel = "Изменить день",
|
|
70
83
|
size = "m",
|
|
84
|
+
viewDate: externalViewDate,
|
|
85
|
+
onHeaderChange,
|
|
86
|
+
onNextMonth,
|
|
87
|
+
onPrevMonth,
|
|
88
|
+
prevMonthIcon,
|
|
89
|
+
nextMonthIcon,
|
|
71
90
|
...props
|
|
72
91
|
}) => {
|
|
73
92
|
const {
|
|
@@ -80,7 +99,15 @@ export const Calendar: React.FC<CalendarProps> = ({
|
|
|
80
99
|
isDayFocused,
|
|
81
100
|
isDayDisabled,
|
|
82
101
|
resetSelectedDay,
|
|
83
|
-
} = useCalendar({
|
|
102
|
+
} = useCalendar({
|
|
103
|
+
value,
|
|
104
|
+
disableFuture,
|
|
105
|
+
disablePast,
|
|
106
|
+
shouldDisableDate,
|
|
107
|
+
onHeaderChange,
|
|
108
|
+
onNextMonth,
|
|
109
|
+
onPrevMonth,
|
|
110
|
+
});
|
|
84
111
|
|
|
85
112
|
useIsomorphicLayoutEffect(() => {
|
|
86
113
|
if (value) {
|
|
@@ -140,7 +167,7 @@ export const Calendar: React.FC<CalendarProps> = ({
|
|
|
140
167
|
vkuiClass={classNames("Calendar", `Calendar--size-${size}`)}
|
|
141
168
|
>
|
|
142
169
|
<CalendarHeader
|
|
143
|
-
viewDate={viewDate}
|
|
170
|
+
viewDate={externalViewDate || viewDate}
|
|
144
171
|
onChange={setViewDate}
|
|
145
172
|
onNextMonth={setNextMonth}
|
|
146
173
|
onPrevMonth={setPrevMonth}
|
|
@@ -150,9 +177,11 @@ export const Calendar: React.FC<CalendarProps> = ({
|
|
|
150
177
|
nextMonthAriaLabel={nextMonthAriaLabel}
|
|
151
178
|
changeMonthAriaLabel={changeMonthAriaLabel}
|
|
152
179
|
changeYearAriaLabel={changeYearAriaLabel}
|
|
180
|
+
prevMonthIcon={prevMonthIcon}
|
|
181
|
+
nextMonthIcon={nextMonthIcon}
|
|
153
182
|
/>
|
|
154
183
|
<CalendarDays
|
|
155
|
-
viewDate={viewDate}
|
|
184
|
+
viewDate={externalViewDate || viewDate}
|
|
156
185
|
value={value}
|
|
157
186
|
weekStartsOn={weekStartsOn}
|
|
158
187
|
isDayFocused={isDayFocused}
|
|
@@ -29,8 +29,16 @@ export interface CalendarHeaderProps
|
|
|
29
29
|
nextMonthAriaLabel?: string;
|
|
30
30
|
changeMonthAriaLabel?: string;
|
|
31
31
|
changeYearAriaLabel?: string;
|
|
32
|
+
prevMonthIcon?: React.ReactNode;
|
|
33
|
+
nextMonthIcon?: React.ReactNode;
|
|
32
34
|
onChange(viewDate: Date): void;
|
|
35
|
+
/**
|
|
36
|
+
* Нажатие на кнопку переключения на следующий месяц.
|
|
37
|
+
*/
|
|
33
38
|
onNextMonth?(): void;
|
|
39
|
+
/**
|
|
40
|
+
* Нажатие на кнопку переключения на предыдущий месяц.
|
|
41
|
+
*/
|
|
34
42
|
onPrevMonth?(): void;
|
|
35
43
|
}
|
|
36
44
|
|
|
@@ -59,6 +67,20 @@ export const CalendarHeader: React.FC<CalendarHeaderProps> = ({
|
|
|
59
67
|
nextMonthAriaLabel = "Следующий месяц",
|
|
60
68
|
changeMonthAriaLabel = "Изменить месяц",
|
|
61
69
|
changeYearAriaLabel = "Изменить год",
|
|
70
|
+
prevMonthIcon = (
|
|
71
|
+
<Icon20ChevronLeftOutline
|
|
72
|
+
vkuiClass="CalendarHeader__nav-icon--accent"
|
|
73
|
+
width={30}
|
|
74
|
+
height={30}
|
|
75
|
+
/>
|
|
76
|
+
),
|
|
77
|
+
nextMonthIcon = (
|
|
78
|
+
<Icon20ChevronRightOutline
|
|
79
|
+
vkuiClass="CalendarHeader__nav-icon--accent"
|
|
80
|
+
width={30}
|
|
81
|
+
height={30}
|
|
82
|
+
/>
|
|
83
|
+
),
|
|
62
84
|
}) => {
|
|
63
85
|
const locale = React.useContext(LocaleProviderContext);
|
|
64
86
|
const onMonthsChange = React.useCallback(
|
|
@@ -96,7 +118,7 @@ export const CalendarHeader: React.FC<CalendarHeaderProps> = ({
|
|
|
96
118
|
subMonths(viewDate, 1)
|
|
97
119
|
)}`}
|
|
98
120
|
>
|
|
99
|
-
|
|
121
|
+
{prevMonthIcon}
|
|
100
122
|
</Tappable>
|
|
101
123
|
)}
|
|
102
124
|
<div vkuiClass="CalendarHeader__pickers">
|
|
@@ -160,7 +182,7 @@ export const CalendarHeader: React.FC<CalendarHeaderProps> = ({
|
|
|
160
182
|
addMonths(viewDate, 1)
|
|
161
183
|
)}`}
|
|
162
184
|
>
|
|
163
|
-
|
|
185
|
+
{nextMonthIcon}
|
|
164
186
|
</Tappable>
|
|
165
187
|
)}
|
|
166
188
|
</div>
|