@skbkontur/react-ui 0.0.0-95a1dbe516 → 0.0.0-9ab4f802f3
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/CHANGELOG.md +120 -0
- package/README.md +41 -13
- package/cjs/components/Autocomplete/Autocomplete.js +12 -6
- package/cjs/components/Autocomplete/Autocomplete.js.map +1 -1
- package/cjs/components/Autocomplete/Autocomplete.md +76 -3
- package/cjs/components/Autocomplete/Autocomplete.styles.d.ts +1 -0
- package/cjs/components/Autocomplete/Autocomplete.styles.js +7 -1
- package/cjs/components/Autocomplete/Autocomplete.styles.js.map +1 -1
- package/cjs/components/Button/Button.js +2 -2
- package/cjs/components/Button/Button.js.map +1 -1
- package/cjs/components/Button/Button.md +38 -11
- package/cjs/components/Calendar/Calendar.d.ts +28 -5
- package/cjs/components/Calendar/Calendar.js +80 -36
- package/cjs/components/Calendar/Calendar.js.map +1 -1
- package/cjs/components/Calendar/Calendar.md +82 -1
- package/cjs/components/Calendar/Calendar.styles.js +1 -1
- package/cjs/components/Calendar/Calendar.styles.js.map +1 -1
- package/cjs/components/Calendar/CalendarContext.d.ts +12 -0
- package/cjs/components/Calendar/CalendarContext.js +16 -0
- package/cjs/components/Calendar/CalendarContext.js.map +1 -0
- package/cjs/components/Calendar/CalendarDateShape.d.ts +4 -2
- package/cjs/components/Calendar/CalendarDateShape.js +13 -3
- package/cjs/components/Calendar/CalendarDateShape.js.map +1 -1
- package/cjs/components/Calendar/CalendarDay.d.ts +12 -0
- package/cjs/components/Calendar/CalendarDay.js +79 -0
- package/cjs/components/Calendar/CalendarDay.js.map +1 -0
- package/cjs/components/Calendar/CalendarDay.md +70 -0
- package/cjs/components/Calendar/CalendarUtils.d.ts +2 -1
- package/cjs/components/Calendar/CalendarUtils.js +4 -6
- package/cjs/components/Calendar/CalendarUtils.js.map +1 -1
- package/cjs/components/Calendar/DayCellView.d.ts +4 -12
- package/cjs/components/Calendar/DayCellView.js +20 -42
- package/cjs/components/Calendar/DayCellView.js.map +1 -1
- package/cjs/components/Calendar/DayCellView.styles.d.ts +2 -5
- package/cjs/components/Calendar/DayCellView.styles.js +37 -43
- package/cjs/components/Calendar/DayCellView.styles.js.map +1 -1
- package/cjs/components/Calendar/Month.d.ts +0 -10
- package/cjs/components/Calendar/Month.js +36 -88
- package/cjs/components/Calendar/Month.js.map +1 -1
- package/cjs/components/Calendar/MonthView.d.ts +3 -2
- package/cjs/components/Calendar/MonthView.js +47 -37
- package/cjs/components/Calendar/MonthView.js.map +1 -1
- package/cjs/components/Calendar/MonthView.styles.d.ts +3 -0
- package/cjs/components/Calendar/MonthView.styles.js +45 -7
- package/cjs/components/Calendar/MonthView.styles.js.map +1 -1
- package/cjs/components/Calendar/MonthViewModel.js +24 -6
- package/cjs/components/Calendar/MonthViewModel.js.map +1 -1
- package/cjs/components/Calendar/config.js +12 -6
- package/cjs/components/Calendar/config.js.map +1 -1
- package/cjs/components/Calendar/index.d.ts +1 -0
- package/cjs/components/Calendar/index.js +2 -1
- package/cjs/components/Calendar/index.js.map +1 -1
- package/cjs/components/Checkbox/Checkbox.js +1 -1
- package/cjs/components/Checkbox/Checkbox.js.map +1 -1
- package/cjs/components/DateInput/DateFragmentsView.js +1 -1
- package/cjs/components/DateInput/DateFragmentsView.js.map +1 -1
- package/cjs/components/DateInput/DateInput.js +1 -1
- package/cjs/components/DateInput/DateInput.js.map +1 -1
- package/cjs/components/DatePicker/DatePicker.d.ts +4 -1
- package/cjs/components/DatePicker/DatePicker.js +72 -45
- package/cjs/components/DatePicker/DatePicker.js.map +1 -1
- package/cjs/components/DatePicker/DatePicker.md +29 -1
- package/cjs/components/DatePicker/DatePickerHelpers.js +2 -1
- package/cjs/components/DatePicker/DatePickerHelpers.js.map +1 -1
- package/cjs/components/DatePicker/MobilePicker.d.ts +10 -0
- package/cjs/components/DatePicker/MobilePicker.js +118 -0
- package/cjs/components/DatePicker/MobilePicker.js.map +1 -0
- package/cjs/components/DatePicker/MobilePicker.styles.d.ts +3 -0
- package/cjs/components/DatePicker/MobilePicker.styles.js +8 -0
- package/cjs/components/DatePicker/MobilePicker.styles.js.map +1 -0
- package/cjs/components/DatePicker/Picker.js +1 -1
- package/cjs/components/DatePicker/Picker.js.map +1 -1
- package/cjs/components/DatePicker/getMobilePickerTheme.d.ts +2 -0
- package/cjs/components/DatePicker/getMobilePickerTheme.js +19 -0
- package/cjs/components/DatePicker/getMobilePickerTheme.js.map +1 -0
- package/cjs/components/Dropdown/Dropdown.js +1 -1
- package/cjs/components/Dropdown/Dropdown.js.map +1 -1
- package/cjs/components/DropdownMenu/DropdownMenu.js +1 -1
- package/cjs/components/DropdownMenu/DropdownMenu.js.map +1 -1
- package/cjs/components/DropdownMenu/DropdownMenu.md +39 -0
- package/cjs/components/FileUploader/FileUploader.d.ts +2 -0
- package/cjs/components/FileUploader/FileUploader.js +32 -9
- package/cjs/components/FileUploader/FileUploader.js.map +1 -1
- package/cjs/components/FileUploader/FileUploader.md +29 -0
- package/cjs/components/FxInput/FxInput.js +1 -1
- package/cjs/components/FxInput/FxInput.js.map +1 -1
- package/cjs/components/Group/Group.js +1 -1
- package/cjs/components/Group/Group.js.map +1 -1
- package/cjs/components/Hint/Hint.d.ts +4 -3
- package/cjs/components/Hint/Hint.js +9 -8
- package/cjs/components/Hint/Hint.js.map +1 -1
- package/cjs/components/Input/Input.js +1 -1
- package/cjs/components/Input/Input.js.map +1 -1
- package/cjs/components/Input/Input.styles.d.ts +1 -1
- package/cjs/components/Input/Input.styles.js +3 -2
- package/cjs/components/Input/Input.styles.js.map +1 -1
- package/cjs/components/Input/InputLayout/InputLayout.styles.d.ts +1 -1
- package/cjs/components/Input/InputLayout/InputLayout.styles.js +3 -2
- package/cjs/components/Input/InputLayout/InputLayout.styles.js.map +1 -1
- package/cjs/components/Input/InputLayout/InputLayoutAsideIcon.js +1 -1
- package/cjs/components/Input/InputLayout/InputLayoutAsideIcon.js.map +1 -1
- package/cjs/components/Kebab/Kebab.js +6 -1
- package/cjs/components/Kebab/Kebab.js.map +1 -1
- package/cjs/components/Link/Link.js +3 -2
- package/cjs/components/Link/Link.js.map +1 -1
- package/cjs/components/Loader/Loader.js +1 -1
- package/cjs/components/Loader/Loader.js.map +1 -1
- package/cjs/components/MenuItem/MenuItem.js +2 -2
- package/cjs/components/MenuItem/MenuItem.js.map +1 -1
- package/cjs/components/MiniModal/MiniModal.js +1 -1
- package/cjs/components/MiniModal/MiniModal.js.map +1 -1
- package/cjs/components/Modal/Modal.js +1 -1
- package/cjs/components/Modal/Modal.js.map +1 -1
- package/cjs/components/Modal/ModalBody.js +1 -1
- package/cjs/components/Modal/ModalBody.js.map +1 -1
- package/cjs/components/Paging/Paging.js +8 -3
- package/cjs/components/Paging/Paging.js.map +1 -1
- package/cjs/components/PasswordInput/PasswordInput.js +1 -1
- package/cjs/components/PasswordInput/PasswordInput.js.map +1 -1
- package/cjs/components/Radio/Radio.js +1 -1
- package/cjs/components/Radio/Radio.js.map +1 -1
- package/cjs/components/RadioGroup/RadioGroup.js +10 -1
- package/cjs/components/RadioGroup/RadioGroup.js.map +1 -1
- package/cjs/components/ScrollContainer/ScrollBar.js +1 -1
- package/cjs/components/ScrollContainer/ScrollBar.js.map +1 -1
- package/cjs/components/ScrollContainer/ScrollContainer.d.ts +1 -0
- package/cjs/components/ScrollContainer/ScrollContainer.js +6 -0
- package/cjs/components/ScrollContainer/ScrollContainer.js.map +1 -1
- package/cjs/components/Select/Select.js +6 -3
- package/cjs/components/Select/Select.js.map +1 -1
- package/cjs/components/SidePage/SidePage.js +1 -1
- package/cjs/components/SidePage/SidePage.js.map +1 -1
- package/cjs/components/SidePage/SidePageBody.js +1 -1
- package/cjs/components/SidePage/SidePageBody.js.map +1 -1
- package/cjs/components/SidePage/SidePageContainer.js +1 -1
- package/cjs/components/SidePage/SidePageContainer.js.map +1 -1
- package/cjs/components/SidePage/SidePageFooter.js +1 -1
- package/cjs/components/SidePage/SidePageFooter.js.map +1 -1
- package/cjs/components/SidePage/SidePageHeader.js +1 -1
- package/cjs/components/SidePage/SidePageHeader.js.map +1 -1
- package/cjs/components/Spinner/Spinner.js +1 -1
- package/cjs/components/Spinner/Spinner.js.map +1 -1
- package/cjs/components/Switcher/Switcher.js +1 -1
- package/cjs/components/Switcher/Switcher.js.map +1 -1
- package/cjs/components/Tabs/Indicator.js +1 -1
- package/cjs/components/Tabs/Indicator.js.map +1 -1
- package/cjs/components/Tabs/Tab.js +2 -2
- package/cjs/components/Tabs/Tab.js.map +1 -1
- package/cjs/components/Tabs/Tabs.js +1 -1
- package/cjs/components/Tabs/Tabs.js.map +1 -1
- package/cjs/components/Textarea/Textarea.js +1 -1
- package/cjs/components/Textarea/Textarea.js.map +1 -1
- package/cjs/components/Toast/Toast.js +1 -1
- package/cjs/components/Toast/Toast.js.map +1 -1
- package/cjs/components/Toast/ToastView.js +1 -1
- package/cjs/components/Toast/ToastView.js.map +1 -1
- package/cjs/components/Toggle/Toggle.js +1 -1
- package/cjs/components/Toggle/Toggle.js.map +1 -1
- package/cjs/components/Token/Token.js +2 -1
- package/cjs/components/Token/Token.js.map +1 -1
- package/cjs/components/TokenInput/TokenInput.js +1 -1
- package/cjs/components/TokenInput/TokenInput.js.map +1 -1
- package/cjs/components/TokenInput/TokenInputMenu.js +2 -2
- package/cjs/components/TokenInput/TokenInputMenu.js.map +1 -1
- package/cjs/components/Tooltip/Tooltip.d.ts +10 -5
- package/cjs/components/Tooltip/Tooltip.js +59 -20
- package/cjs/components/Tooltip/Tooltip.js.map +1 -1
- package/cjs/components/TooltipMenu/TooltipMenu.js +4 -4
- package/cjs/components/TooltipMenu/TooltipMenu.js.map +1 -1
- package/cjs/hooks/useDrop.d.ts +1 -1
- package/cjs/hooks/useDrop.js.map +1 -1
- package/cjs/index.d.ts +2 -0
- package/cjs/index.js +2 -0
- package/cjs/index.js.map +1 -1
- package/cjs/internal/CommonWrapper/CommonWrapper.js +2 -2
- package/cjs/internal/CommonWrapper/CommonWrapper.js.map +1 -1
- package/cjs/internal/CommonWrapper/{extractCommonProps.d.ts → utils/extractCommonProps.d.ts} +2 -2
- package/cjs/internal/CommonWrapper/utils/extractCommonProps.js.map +1 -0
- package/cjs/internal/CommonWrapper/{getCommonVisualStateDataAttributes.js → utils/getCommonVisualStateDataAttributes.js} +3 -4
- package/cjs/internal/CommonWrapper/utils/getCommonVisualStateDataAttributes.js.map +1 -0
- package/cjs/internal/CommonWrapper/{getVisualStateDataAttributes.d.ts → utils/getVisualStateDataAttributes.d.ts} +1 -1
- package/cjs/internal/CommonWrapper/{getVisualStateDataAttributes.js → utils/getVisualStateDataAttributes.js} +3 -3
- package/cjs/internal/CommonWrapper/utils/getVisualStateDataAttributes.js.map +1 -0
- package/cjs/internal/CommonWrapper/utils/tryGetBoolean.d.ts +1 -0
- package/cjs/internal/CommonWrapper/utils/tryGetBoolean.js +1 -0
- package/cjs/internal/CommonWrapper/utils/tryGetBoolean.js.map +1 -0
- package/cjs/internal/CustomComboBox/ComboBoxMenu.js +2 -3
- package/cjs/internal/CustomComboBox/ComboBoxMenu.js.map +1 -1
- package/cjs/internal/CustomComboBox/ComboBoxView.js +3 -1
- package/cjs/internal/CustomComboBox/ComboBoxView.js.map +1 -1
- package/cjs/internal/DateSelect/DateSelect.d.ts +2 -0
- package/cjs/internal/DateSelect/DateSelect.js +51 -4
- package/cjs/internal/DateSelect/DateSelect.js.map +1 -1
- package/cjs/internal/DateSelect/DateSelect.styles.d.ts +1 -0
- package/cjs/internal/DateSelect/DateSelect.styles.js +15 -1
- package/cjs/internal/DateSelect/DateSelect.styles.js.map +1 -1
- package/cjs/internal/DateSelect/locale/locales/en.js +2 -1
- package/cjs/internal/DateSelect/locale/locales/en.js.map +1 -1
- package/cjs/internal/DateSelect/locale/locales/ru.js +2 -1
- package/cjs/internal/DateSelect/locale/locales/ru.js.map +1 -1
- package/cjs/internal/DateSelect/locale/types.d.ts +1 -0
- package/cjs/internal/FileUploaderControl/FileUploaderControlProvider.d.ts +5 -2
- package/cjs/internal/FileUploaderControl/FileUploaderControlProvider.js +16 -3
- package/cjs/internal/FileUploaderControl/FileUploaderControlProvider.js.map +1 -1
- package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.d.ts +1 -0
- package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.js +4 -2
- package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.js.map +1 -1
- package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.d.ts +1 -0
- package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.js +3 -2
- package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.js.map +1 -1
- package/cjs/internal/InputLikeText/InputLikeText.js +2 -2
- package/cjs/internal/InputLikeText/InputLikeText.js.map +1 -1
- package/cjs/internal/InternalMaskedInput/InternalMaskedInput.js +1 -1
- package/cjs/internal/InternalMaskedInput/InternalMaskedInput.js.map +1 -1
- package/cjs/internal/InternalMenu/InternalMenu.js +2 -2
- package/cjs/internal/InternalMenu/InternalMenu.js.map +1 -1
- package/cjs/internal/Menu/Menu.js +2 -2
- package/cjs/internal/Menu/Menu.js.map +1 -1
- package/cjs/internal/MobilePopup/MobilePopup.d.ts +4 -0
- package/cjs/internal/MobilePopup/MobilePopup.js +7 -1
- package/cjs/internal/MobilePopup/MobilePopup.js.map +1 -1
- package/cjs/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.d.ts +7 -0
- package/cjs/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.js +32 -0
- package/cjs/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.js.map +1 -0
- package/cjs/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.d.ts +4 -0
- package/cjs/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.js +15 -0
- package/cjs/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.js.map +1 -0
- package/cjs/internal/MobilePopup/MobilePopupFooter/index.d.ts +1 -0
- package/cjs/internal/MobilePopup/MobilePopupFooter/index.js +1 -0
- package/cjs/internal/MobilePopup/MobilePopupFooter/index.js.map +1 -0
- package/cjs/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.js +1 -1
- package/cjs/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.js.map +1 -1
- package/cjs/internal/NativeDateInput/utils.js +3 -2
- package/cjs/internal/NativeDateInput/utils.js.map +1 -1
- package/cjs/internal/Popup/Popup.d.ts +15 -4
- package/cjs/internal/Popup/Popup.js +67 -4
- package/cjs/internal/Popup/Popup.js.map +1 -1
- package/cjs/internal/PopupMenu/PopupMenu.js +1 -1
- package/cjs/internal/PopupMenu/PopupMenu.js.map +1 -1
- package/cjs/internal/RenderContainer/RenderContainer.d.ts +3 -0
- package/cjs/internal/RenderContainer/RenderContainer.js +34 -24
- package/cjs/internal/RenderContainer/RenderContainer.js.map +1 -1
- package/cjs/internal/RenderContainer/RenderInnerContainer.js +8 -4
- package/cjs/internal/RenderContainer/RenderInnerContainer.js.map +1 -1
- package/cjs/internal/RenderLayer/RenderLayer.js +5 -1
- package/cjs/internal/RenderLayer/RenderLayer.js.map +1 -1
- package/cjs/internal/ThemePlayground/Playground.js +1 -1
- package/cjs/internal/ThemePlayground/Playground.js.map +1 -1
- package/cjs/internal/ThemePlayground/ThemeContextPlayground.js +9 -6
- package/cjs/internal/ThemePlayground/ThemeContextPlayground.js.map +1 -1
- package/cjs/internal/ThemePlayground/constants.js +2 -1
- package/cjs/internal/ThemePlayground/constants.js.map +1 -1
- package/cjs/internal/ThemeShowcase/ThemeShowcase.js +1 -1
- package/cjs/internal/ThemeShowcase/ThemeShowcase.js.map +1 -1
- package/cjs/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
- package/cjs/internal/ZIndex/ZIndex.d.ts +7 -3
- package/cjs/internal/ZIndex/ZIndex.js +41 -3
- package/cjs/internal/ZIndex/ZIndex.js.map +1 -1
- package/cjs/internal/themes/DarkTheme.d.ts +2 -0
- package/cjs/internal/themes/DarkTheme.js +6 -1
- package/cjs/internal/themes/DarkTheme.js.map +1 -1
- package/cjs/internal/themes/DefaultTheme.d.ts +18 -0
- package/cjs/internal/themes/DefaultTheme.js +32 -4
- package/cjs/internal/themes/DefaultTheme.js.map +1 -1
- package/cjs/lib/date/InternalDate.d.ts +2 -0
- package/cjs/lib/date/InternalDate.js +8 -1
- package/cjs/lib/date/InternalDate.js.map +1 -1
- package/cjs/lib/date/InternalDateTransformer.d.ts +3 -0
- package/cjs/lib/date/InternalDateTransformer.js +23 -0
- package/cjs/lib/date/InternalDateTransformer.js.map +1 -1
- package/cjs/lib/date/InternalDateValidator.js +2 -1
- package/cjs/lib/date/InternalDateValidator.js.map +1 -1
- package/cjs/lib/date/comparison.d.ts +6 -0
- package/cjs/lib/date/comparison.js +44 -0
- package/cjs/lib/date/comparison.js.map +1 -0
- package/cjs/lib/featureFlagsContext/FEATUREFLAGSCONTEXT.md +24 -0
- package/cjs/lib/featureFlagsContext/FeatureFlagsHelpers.d.ts +1 -0
- package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.d.ts +1 -0
- package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js +3 -1
- package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js.map +1 -1
- package/cjs/lib/listenFocusOutside.js +4 -2
- package/cjs/lib/listenFocusOutside.js.map +1 -1
- package/cjs/lib/locale/constants.d.ts +3 -0
- package/cjs/lib/locale/constants.js +6 -2
- package/cjs/lib/locale/constants.js.map +1 -1
- package/cjs/lib/taskWithDelayAndMinimalDuration.js +1 -0
- package/cjs/lib/taskWithDelayAndMinimalDuration.js.map +1 -1
- package/cjs/lib/theming/Emotion.d.ts +7 -1
- package/cjs/lib/theming/Emotion.js +6 -3
- package/cjs/lib/theming/Emotion.js.map +1 -1
- package/cjs/lib/theming/ThemeContext.d.ts +0 -2
- package/cjs/lib/theming/ThemeContext.js +1 -3
- package/cjs/lib/theming/ThemeContext.js.map +1 -1
- package/cjs/lib/theming/ThemeContext.md +3 -1
- package/cjs/lib/theming/themes/Theme2022DarkUpdate2024.d.ts +30 -0
- package/cjs/lib/theming/themes/Theme2022DarkUpdate2024.js +50 -0
- package/cjs/lib/theming/themes/Theme2022DarkUpdate2024.js.map +1 -0
- package/cjs/lib/theming/themes/Theme2022Update2024.d.ts +46 -0
- package/cjs/lib/theming/themes/Theme2022Update2024.js +75 -0
- package/cjs/lib/theming/themes/Theme2022Update2024.js.map +1 -0
- package/cjs/lib/widgets/StylesContainer.d.ts +13 -0
- package/cjs/lib/widgets/StylesContainer.js +70 -0
- package/cjs/lib/widgets/StylesContainer.js.map +1 -0
- package/cjs/lib/widgets/index.d.ts +1 -0
- package/cjs/lib/widgets/index.js +1 -0
- package/cjs/lib/widgets/index.js.map +1 -0
- package/components/Autocomplete/Autocomplete/Autocomplete.js +11 -5
- package/components/Autocomplete/Autocomplete/Autocomplete.js.map +1 -1
- package/components/Autocomplete/Autocomplete.md +76 -3
- package/components/Autocomplete/Autocomplete.styles/Autocomplete.styles.js +4 -1
- package/components/Autocomplete/Autocomplete.styles/Autocomplete.styles.js.map +1 -1
- package/components/Autocomplete/Autocomplete.styles.d.ts +1 -0
- package/components/Button/Button/Button.js +3 -3
- package/components/Button/Button/Button.js.map +1 -1
- package/components/Button/Button.md +38 -11
- package/components/Calendar/Calendar/Calendar.js +83 -66
- package/components/Calendar/Calendar/Calendar.js.map +1 -1
- package/components/Calendar/Calendar.d.ts +28 -5
- package/components/Calendar/Calendar.md +82 -1
- package/components/Calendar/Calendar.styles/Calendar.styles.js +1 -1
- package/components/Calendar/Calendar.styles/Calendar.styles.js.map +1 -1
- package/components/Calendar/CalendarContext/CalendarContext.js +2 -0
- package/components/Calendar/CalendarContext/CalendarContext.js.map +1 -0
- package/components/Calendar/CalendarContext/package.json +6 -0
- package/components/Calendar/CalendarContext.d.ts +12 -0
- package/components/Calendar/CalendarDateShape/CalendarDateShape.js +23 -1
- package/components/Calendar/CalendarDateShape/CalendarDateShape.js.map +1 -1
- package/components/Calendar/CalendarDateShape.d.ts +4 -2
- package/components/Calendar/CalendarDay/CalendarDay.js +64 -0
- package/components/Calendar/CalendarDay/CalendarDay.js.map +1 -0
- package/components/Calendar/CalendarDay/package.json +6 -0
- package/components/Calendar/CalendarDay.d.ts +12 -0
- package/components/Calendar/CalendarDay.md +70 -0
- package/components/Calendar/CalendarUtils/CalendarUtils.js +5 -4
- package/components/Calendar/CalendarUtils/CalendarUtils.js.map +1 -1
- package/components/Calendar/CalendarUtils.d.ts +2 -1
- package/components/Calendar/DayCellView/DayCellView.js +33 -46
- package/components/Calendar/DayCellView/DayCellView.js.map +1 -1
- package/components/Calendar/DayCellView.d.ts +4 -12
- package/components/Calendar/DayCellView.styles/DayCellView.styles.js +10 -14
- package/components/Calendar/DayCellView.styles/DayCellView.styles.js.map +1 -1
- package/components/Calendar/DayCellView.styles.d.ts +2 -5
- package/components/Calendar/Month/Month.js +50 -84
- package/components/Calendar/Month/Month.js.map +1 -1
- package/components/Calendar/Month.d.ts +0 -10
- package/components/Calendar/MonthView/MonthView.js +50 -45
- package/components/Calendar/MonthView/MonthView.js.map +1 -1
- package/components/Calendar/MonthView.d.ts +3 -2
- package/components/Calendar/MonthView.styles/MonthView.styles.js +20 -6
- package/components/Calendar/MonthView.styles/MonthView.styles.js.map +1 -1
- package/components/Calendar/MonthView.styles.d.ts +3 -0
- package/components/Calendar/MonthViewModel/MonthViewModel.js +9 -6
- package/components/Calendar/MonthViewModel/MonthViewModel.js.map +1 -1
- package/components/Calendar/config/config.js +6 -4
- package/components/Calendar/config/config.js.map +1 -1
- package/components/Calendar/index/index.js +2 -1
- package/components/Calendar/index/index.js.map +1 -1
- package/components/Calendar/index.d.ts +1 -0
- package/components/Checkbox/Checkbox/Checkbox.js +2 -2
- package/components/Checkbox/Checkbox/Checkbox.js.map +1 -1
- package/components/DateInput/DateFragmentsView/DateFragmentsView.js +2 -2
- package/components/DateInput/DateFragmentsView/DateFragmentsView.js.map +1 -1
- package/components/DateInput/DateInput/DateInput.js +2 -2
- package/components/DateInput/DateInput/DateInput.js.map +1 -1
- package/components/DatePicker/DatePicker/DatePicker.js +62 -41
- package/components/DatePicker/DatePicker/DatePicker.js.map +1 -1
- package/components/DatePicker/DatePicker.d.ts +4 -1
- package/components/DatePicker/DatePicker.md +29 -1
- package/components/DatePicker/DatePickerHelpers/DatePickerHelpers.js +2 -1
- package/components/DatePicker/DatePickerHelpers/DatePickerHelpers.js.map +1 -1
- package/components/DatePicker/MobilePicker/MobilePicker.js +91 -0
- package/components/DatePicker/MobilePicker/MobilePicker.js.map +1 -0
- package/components/DatePicker/MobilePicker/package.json +6 -0
- package/components/DatePicker/MobilePicker.d.ts +10 -0
- package/components/DatePicker/MobilePicker.styles/MobilePicker.styles.js +10 -0
- package/components/DatePicker/MobilePicker.styles/MobilePicker.styles.js.map +1 -0
- package/components/DatePicker/MobilePicker.styles/package.json +6 -0
- package/components/DatePicker/MobilePicker.styles.d.ts +3 -0
- package/components/DatePicker/Picker/Picker.js +3 -3
- package/components/DatePicker/Picker/Picker.js.map +1 -1
- package/components/DatePicker/getMobilePickerTheme/getMobilePickerTheme.js +14 -0
- package/components/DatePicker/getMobilePickerTheme/getMobilePickerTheme.js.map +1 -0
- package/components/DatePicker/getMobilePickerTheme/package.json +6 -0
- package/components/DatePicker/getMobilePickerTheme.d.ts +2 -0
- package/components/Dropdown/Dropdown/Dropdown.js +3 -3
- package/components/Dropdown/Dropdown/Dropdown.js.map +1 -1
- package/components/DropdownMenu/DropdownMenu/DropdownMenu.js +3 -3
- package/components/DropdownMenu/DropdownMenu/DropdownMenu.js.map +1 -1
- package/components/DropdownMenu/DropdownMenu.md +39 -0
- package/components/FileUploader/FileUploader/FileUploader.js +30 -8
- package/components/FileUploader/FileUploader/FileUploader.js.map +1 -1
- package/components/FileUploader/FileUploader.d.ts +2 -0
- package/components/FileUploader/FileUploader.md +29 -0
- package/components/FxInput/FxInput/FxInput.js +2 -2
- package/components/FxInput/FxInput/FxInput.js.map +1 -1
- package/components/Group/Group/Group.js +2 -2
- package/components/Group/Group/Group.js.map +1 -1
- package/components/Hint/Hint/Hint.js +53 -48
- package/components/Hint/Hint/Hint.js.map +1 -1
- package/components/Hint/Hint.d.ts +4 -3
- package/components/Input/Input/Input.js +3 -3
- package/components/Input/Input/Input.js.map +1 -1
- package/components/Input/Input.styles/Input.styles.js +2 -2
- package/components/Input/Input.styles/Input.styles.js.map +1 -1
- package/components/Input/Input.styles.d.ts +1 -1
- package/components/Input/InputLayout/InputLayout.styles/InputLayout.styles.js +2 -2
- package/components/Input/InputLayout/InputLayout.styles/InputLayout.styles.js.map +1 -1
- package/components/Input/InputLayout/InputLayout.styles.d.ts +1 -1
- package/components/Input/InputLayout/InputLayoutAsideIcon/InputLayoutAsideIcon.js +1 -1
- package/components/Input/InputLayout/InputLayoutAsideIcon/InputLayoutAsideIcon.js.map +1 -1
- package/components/Kebab/Kebab/Kebab.js +7 -4
- package/components/Kebab/Kebab/Kebab.js.map +1 -1
- package/components/Link/Link/Link.js +6 -3
- package/components/Link/Link/Link.js.map +1 -1
- package/components/Loader/Loader/Loader.js +2 -2
- package/components/Loader/Loader/Loader.js.map +1 -1
- package/components/MenuItem/MenuItem/MenuItem.js +3 -3
- package/components/MenuItem/MenuItem/MenuItem.js.map +1 -1
- package/components/MiniModal/MiniModal/MiniModal.js +2 -2
- package/components/MiniModal/MiniModal/MiniModal.js.map +1 -1
- package/components/Modal/Modal/Modal.js +3 -3
- package/components/Modal/Modal/Modal.js.map +1 -1
- package/components/Modal/ModalBody/ModalBody.js +3 -3
- package/components/Modal/ModalBody/ModalBody.js.map +1 -1
- package/components/Paging/Paging/Paging.js +10 -6
- package/components/Paging/Paging/Paging.js.map +1 -1
- package/components/PasswordInput/PasswordInput/PasswordInput.js +2 -2
- package/components/PasswordInput/PasswordInput/PasswordInput.js.map +1 -1
- package/components/Radio/Radio/Radio.js +2 -2
- package/components/Radio/Radio/Radio.js.map +1 -1
- package/components/RadioGroup/RadioGroup/RadioGroup.js +8 -4
- package/components/RadioGroup/RadioGroup/RadioGroup.js.map +1 -1
- package/components/ScrollContainer/ScrollBar/ScrollBar.js +2 -2
- package/components/ScrollContainer/ScrollBar/ScrollBar.js.map +1 -1
- package/components/ScrollContainer/ScrollContainer/ScrollContainer.js +5 -0
- package/components/ScrollContainer/ScrollContainer/ScrollContainer.js.map +1 -1
- package/components/ScrollContainer/ScrollContainer.d.ts +1 -0
- package/components/Select/Select/Select.js +6 -5
- package/components/Select/Select/Select.js.map +1 -1
- package/components/SidePage/SidePage/SidePage.js +2 -2
- package/components/SidePage/SidePage/SidePage.js.map +1 -1
- package/components/SidePage/SidePageBody/SidePageBody.js +2 -2
- package/components/SidePage/SidePageBody/SidePageBody.js.map +1 -1
- package/components/SidePage/SidePageContainer/SidePageContainer.js +2 -2
- package/components/SidePage/SidePageContainer/SidePageContainer.js.map +1 -1
- package/components/SidePage/SidePageFooter/SidePageFooter.js +2 -2
- package/components/SidePage/SidePageFooter/SidePageFooter.js.map +1 -1
- package/components/SidePage/SidePageHeader/SidePageHeader.js +2 -2
- package/components/SidePage/SidePageHeader/SidePageHeader.js.map +1 -1
- package/components/Spinner/Spinner/Spinner.js +2 -2
- package/components/Spinner/Spinner/Spinner.js.map +1 -1
- package/components/Switcher/Switcher/Switcher.js +3 -3
- package/components/Switcher/Switcher/Switcher.js.map +1 -1
- package/components/Tabs/Indicator/Indicator.js +2 -2
- package/components/Tabs/Indicator/Indicator.js.map +1 -1
- package/components/Tabs/Tab/Tab.js +3 -3
- package/components/Tabs/Tab/Tab.js.map +1 -1
- package/components/Tabs/Tabs/Tabs.js +2 -2
- package/components/Tabs/Tabs/Tabs.js.map +1 -1
- package/components/Textarea/Textarea/Textarea.js +2 -2
- package/components/Textarea/Textarea/Textarea.js.map +1 -1
- package/components/Toast/Toast/Toast.js +3 -3
- package/components/Toast/Toast/Toast.js.map +1 -1
- package/components/Toast/ToastView/ToastView.js +2 -2
- package/components/Toast/ToastView/ToastView.js.map +1 -1
- package/components/Toggle/Toggle/Toggle.js +2 -2
- package/components/Toggle/Toggle/Toggle.js.map +1 -1
- package/components/Token/Token/Token.js +6 -3
- package/components/Token/Token/Token.js.map +1 -1
- package/components/TokenInput/TokenInput/TokenInput.js +2 -2
- package/components/TokenInput/TokenInput/TokenInput.js.map +1 -1
- package/components/TokenInput/TokenInputMenu/TokenInputMenu.js +3 -3
- package/components/TokenInput/TokenInputMenu/TokenInputMenu.js.map +1 -1
- package/components/Tooltip/Tooltip/Tooltip.js +67 -46
- package/components/Tooltip/Tooltip/Tooltip.js.map +1 -1
- package/components/Tooltip/Tooltip.d.ts +10 -5
- package/components/TooltipMenu/TooltipMenu/TooltipMenu.js +3 -3
- package/components/TooltipMenu/TooltipMenu/TooltipMenu.js.map +1 -1
- package/hooks/useDrop/useDrop.js.map +1 -1
- package/hooks/useDrop.d.ts +1 -1
- package/index.d.ts +2 -0
- package/index.js +2 -0
- package/index.js.map +1 -1
- package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js +2 -2
- package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js.map +1 -1
- package/internal/CommonWrapper/utils/extractCommonProps/extractCommonProps.js.map +1 -0
- package/internal/CommonWrapper/{extractCommonProps → utils/extractCommonProps}/package.json +1 -1
- package/internal/CommonWrapper/{extractCommonProps.d.ts → utils/extractCommonProps.d.ts} +2 -2
- package/internal/CommonWrapper/{getCommonVisualStateDataAttributes → utils/getCommonVisualStateDataAttributes}/getCommonVisualStateDataAttributes.js +1 -5
- package/internal/CommonWrapper/utils/getCommonVisualStateDataAttributes/getCommonVisualStateDataAttributes.js.map +1 -0
- package/internal/CommonWrapper/{getCommonVisualStateDataAttributes → utils/getCommonVisualStateDataAttributes}/package.json +1 -1
- package/internal/CommonWrapper/{getVisualStateDataAttributes → utils/getVisualStateDataAttributes}/getVisualStateDataAttributes.js +3 -3
- package/internal/CommonWrapper/utils/getVisualStateDataAttributes/getVisualStateDataAttributes.js.map +1 -0
- package/internal/CommonWrapper/{getVisualStateDataAttributes → utils/getVisualStateDataAttributes}/package.json +1 -1
- package/internal/CommonWrapper/{getVisualStateDataAttributes.d.ts → utils/getVisualStateDataAttributes.d.ts} +1 -1
- package/internal/CommonWrapper/utils/tryGetBoolean/package.json +6 -0
- package/internal/CommonWrapper/utils/tryGetBoolean/tryGetBoolean.js +3 -0
- package/internal/CommonWrapper/utils/tryGetBoolean/tryGetBoolean.js.map +1 -0
- package/internal/CommonWrapper/utils/tryGetBoolean.d.ts +1 -0
- package/internal/CustomComboBox/ComboBoxMenu/ComboBoxMenu.js +3 -3
- package/internal/CustomComboBox/ComboBoxMenu/ComboBoxMenu.js.map +1 -1
- package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js +5 -3
- package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js.map +1 -1
- package/internal/DateSelect/DateSelect/DateSelect.js +59 -6
- package/internal/DateSelect/DateSelect/DateSelect.js.map +1 -1
- package/internal/DateSelect/DateSelect.d.ts +2 -0
- package/internal/DateSelect/DateSelect.styles/DateSelect.styles.js +4 -1
- package/internal/DateSelect/DateSelect.styles/DateSelect.styles.js.map +1 -1
- package/internal/DateSelect/DateSelect.styles.d.ts +1 -0
- package/internal/DateSelect/locale/locales/en/en.js +2 -1
- package/internal/DateSelect/locale/locales/en/en.js.map +1 -1
- package/internal/DateSelect/locale/locales/ru/ru.js +2 -1
- package/internal/DateSelect/locale/locales/ru/ru.js.map +1 -1
- package/internal/DateSelect/locale/types.d.ts +1 -0
- package/internal/FileUploaderControl/FileUploaderControlProvider/FileUploaderControlProvider.js +12 -3
- package/internal/FileUploaderControl/FileUploaderControlProvider/FileUploaderControlProvider.js.map +1 -1
- package/internal/FileUploaderControl/FileUploaderControlProvider.d.ts +5 -2
- package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile/FileUploaderFile.js +4 -2
- package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile/FileUploaderFile.js.map +1 -1
- package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.d.ts +1 -0
- package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList/FileUploaderFileList.js +4 -2
- package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList/FileUploaderFileList.js.map +1 -1
- package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.d.ts +1 -0
- package/internal/InputLikeText/InputLikeText/InputLikeText.js +3 -3
- package/internal/InputLikeText/InputLikeText/InputLikeText.js.map +1 -1
- package/internal/InternalMaskedInput/InternalMaskedInput/InternalMaskedInput.js +2 -2
- package/internal/InternalMaskedInput/InternalMaskedInput/InternalMaskedInput.js.map +1 -1
- package/internal/InternalMenu/InternalMenu/InternalMenu.js +3 -3
- package/internal/InternalMenu/InternalMenu/InternalMenu.js.map +1 -1
- package/internal/Menu/Menu/Menu.js +3 -3
- package/internal/Menu/Menu/Menu.js.map +1 -1
- package/internal/MobilePopup/MobilePopup/MobilePopup.js +4 -3
- package/internal/MobilePopup/MobilePopup/MobilePopup.js.map +1 -1
- package/internal/MobilePopup/MobilePopup.d.ts +4 -0
- package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter/MobilePopupFooter.js +37 -0
- package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter/MobilePopupFooter.js.map +1 -0
- package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter/package.json +6 -0
- package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.d.ts +7 -0
- package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles/MobilePopupFooter.styles.js +11 -0
- package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles/MobilePopupFooter.styles.js.map +1 -0
- package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles/package.json +6 -0
- package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.d.ts +4 -0
- package/internal/MobilePopup/MobilePopupFooter/index/index.js +1 -0
- package/internal/MobilePopup/MobilePopupFooter/index/index.js.map +1 -0
- package/internal/MobilePopup/MobilePopupFooter/index/package.json +6 -0
- package/internal/MobilePopup/MobilePopupFooter/index.d.ts +1 -0
- package/internal/MobilePopup/MobilePopupFooter/package.json +6 -0
- package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader/MobilePopupHeader.js +2 -2
- package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader/MobilePopupHeader.js.map +1 -1
- package/internal/NativeDateInput/utils/utils.js +2 -1
- package/internal/NativeDateInput/utils/utils.js.map +1 -1
- package/internal/Popup/Popup/Popup.js +53 -10
- package/internal/Popup/Popup/Popup.js.map +1 -1
- package/internal/Popup/Popup.d.ts +15 -4
- package/internal/PopupMenu/PopupMenu/PopupMenu.js +3 -3
- package/internal/PopupMenu/PopupMenu/PopupMenu.js.map +1 -1
- package/internal/RenderContainer/RenderContainer/RenderContainer.js +19 -12
- package/internal/RenderContainer/RenderContainer/RenderContainer.js.map +1 -1
- package/internal/RenderContainer/RenderContainer.d.ts +3 -0
- package/internal/RenderContainer/RenderInnerContainer/RenderInnerContainer.js +11 -5
- package/internal/RenderContainer/RenderInnerContainer/RenderInnerContainer.js.map +1 -1
- package/internal/RenderLayer/RenderLayer/RenderLayer.js +2 -2
- package/internal/RenderLayer/RenderLayer/RenderLayer.js.map +1 -1
- package/internal/ThemePlayground/Playground/Playground.js +2 -2
- package/internal/ThemePlayground/Playground/Playground.js.map +1 -1
- package/internal/ThemePlayground/ThemeContextPlayground/ThemeContextPlayground.js +10 -7
- package/internal/ThemePlayground/ThemeContextPlayground/ThemeContextPlayground.js.map +1 -1
- package/internal/ThemePlayground/constants/constants.js +3 -0
- package/internal/ThemePlayground/constants/constants.js.map +1 -1
- package/internal/ThemeShowcase/ThemeShowcase/ThemeShowcase.js +2 -2
- package/internal/ThemeShowcase/ThemeShowcase/ThemeShowcase.js.map +1 -1
- package/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
- package/internal/ZIndex/ZIndex/ZIndex.js +55 -7
- package/internal/ZIndex/ZIndex/ZIndex.js.map +1 -1
- package/internal/ZIndex/ZIndex.d.ts +7 -3
- package/internal/themes/DarkTheme/DarkTheme.js +2 -0
- package/internal/themes/DarkTheme/DarkTheme.js.map +1 -1
- package/internal/themes/DarkTheme.d.ts +2 -0
- package/internal/themes/DefaultTheme/DefaultTheme.js +32 -1
- package/internal/themes/DefaultTheme/DefaultTheme.js.map +1 -1
- package/internal/themes/DefaultTheme.d.ts +18 -0
- package/lib/date/InternalDate/InternalDate.js +7 -1
- package/lib/date/InternalDate/InternalDate.js.map +1 -1
- package/lib/date/InternalDate.d.ts +2 -0
- package/lib/date/InternalDateTransformer/InternalDateTransformer.js +30 -0
- package/lib/date/InternalDateTransformer/InternalDateTransformer.js.map +1 -1
- package/lib/date/InternalDateTransformer.d.ts +3 -0
- package/lib/date/InternalDateValidator/InternalDateValidator.js +6 -1
- package/lib/date/InternalDateValidator/InternalDateValidator.js.map +1 -1
- package/lib/date/comparison/comparison.js +45 -0
- package/lib/date/comparison/comparison.js.map +1 -0
- package/lib/date/comparison/package.json +6 -0
- package/lib/date/comparison.d.ts +6 -0
- package/lib/featureFlagsContext/FEATUREFLAGSCONTEXT.md +24 -0
- package/lib/featureFlagsContext/FeatureFlagsHelpers.d.ts +1 -0
- package/lib/featureFlagsContext/ReactUIFeatureFlagsContext/ReactUIFeatureFlagsContext.js +2 -1
- package/lib/featureFlagsContext/ReactUIFeatureFlagsContext/ReactUIFeatureFlagsContext.js.map +1 -1
- package/lib/featureFlagsContext/ReactUIFeatureFlagsContext.d.ts +1 -0
- package/lib/listenFocusOutside/listenFocusOutside.js +3 -2
- package/lib/listenFocusOutside/listenFocusOutside.js.map +1 -1
- package/lib/locale/constants/constants.js +4 -1
- package/lib/locale/constants/constants.js.map +1 -1
- package/lib/locale/constants.d.ts +3 -0
- package/lib/taskWithDelayAndMinimalDuration/taskWithDelayAndMinimalDuration.js +2 -0
- package/lib/taskWithDelayAndMinimalDuration/taskWithDelayAndMinimalDuration.js.map +1 -1
- package/lib/theming/Emotion/Emotion.js +12 -3
- package/lib/theming/Emotion/Emotion.js.map +1 -1
- package/lib/theming/Emotion.d.ts +7 -1
- package/lib/theming/ThemeContext/ThemeContext.js +0 -2
- package/lib/theming/ThemeContext/ThemeContext.js.map +1 -1
- package/lib/theming/ThemeContext.d.ts +0 -2
- package/lib/theming/ThemeContext.md +3 -1
- package/lib/theming/themes/Theme2022DarkUpdate2024/Theme2022DarkUpdate2024.js +33 -0
- package/lib/theming/themes/Theme2022DarkUpdate2024/Theme2022DarkUpdate2024.js.map +1 -0
- package/lib/theming/themes/Theme2022DarkUpdate2024/package.json +6 -0
- package/lib/theming/themes/Theme2022DarkUpdate2024.d.ts +30 -0
- package/lib/theming/themes/Theme2022Update2024/Theme2022Update2024.js +50 -0
- package/lib/theming/themes/Theme2022Update2024/Theme2022Update2024.js.map +1 -0
- package/lib/theming/themes/Theme2022Update2024/package.json +6 -0
- package/lib/theming/themes/Theme2022Update2024.d.ts +46 -0
- package/lib/widgets/StylesContainer/StylesContainer.js +65 -0
- package/lib/widgets/StylesContainer/StylesContainer.js.map +1 -0
- package/lib/widgets/StylesContainer/package.json +6 -0
- package/lib/widgets/StylesContainer.d.ts +13 -0
- package/lib/widgets/index/index.js +1 -0
- package/lib/widgets/index/index.js.map +1 -0
- package/lib/widgets/index/package.json +6 -0
- package/lib/widgets/index.d.ts +1 -0
- package/lib/widgets/package.json +6 -0
- package/package.json +3 -2
- package/cjs/internal/CommonWrapper/extractCommonProps.js.map +0 -1
- package/cjs/internal/CommonWrapper/getCommonVisualStateDataAttributes.js.map +0 -1
- package/cjs/internal/CommonWrapper/getVisualStateDataAttributes.js.map +0 -1
- package/cjs/lib/theming/StyleContainer.d.ts +0 -4
- package/cjs/lib/theming/StyleContainer.js +0 -21
- package/cjs/lib/theming/StyleContainer.js.map +0 -1
- package/internal/CommonWrapper/extractCommonProps/extractCommonProps.js.map +0 -1
- package/internal/CommonWrapper/getCommonVisualStateDataAttributes/getCommonVisualStateDataAttributes.js.map +0 -1
- package/internal/CommonWrapper/getVisualStateDataAttributes/getVisualStateDataAttributes.js.map +0 -1
- package/lib/theming/StyleContainer/StyleContainer.js +0 -21
- package/lib/theming/StyleContainer/StyleContainer.js.map +0 -1
- package/lib/theming/StyleContainer/package.json +0 -6
- package/lib/theming/StyleContainer.d.ts +0 -4
- /package/cjs/internal/CommonWrapper/{extractCommonProps.js → utils/extractCommonProps.js} +0 -0
- /package/cjs/internal/CommonWrapper/{getCommonVisualStateDataAttributes.d.ts → utils/getCommonVisualStateDataAttributes.d.ts} +0 -0
- /package/internal/CommonWrapper/{extractCommonProps → utils/extractCommonProps}/extractCommonProps.js +0 -0
- /package/internal/CommonWrapper/{getCommonVisualStateDataAttributes.d.ts → utils/getCommonVisualStateDataAttributes.d.ts} +0 -0
|
@@ -13,7 +13,6 @@ import shallowEqual from 'shallowequal';
|
|
|
13
13
|
import { globalObject } from '@skbkontur/global-object';
|
|
14
14
|
import { isInstanceOf } from "../../../lib/isInstanceOf";
|
|
15
15
|
import { InternalDate } from "../../../lib/date/InternalDate";
|
|
16
|
-
import { InternalDateTransformer } from "../../../lib/date/InternalDateTransformer";
|
|
17
16
|
import { rootNode } from "../../../lib/rootNode";
|
|
18
17
|
import { EmotionConsumer } from "../../../lib/theming/Emotion";
|
|
19
18
|
import { CommonWrapper } from "../../../internal/CommonWrapper";
|
|
@@ -21,20 +20,25 @@ import { MAX_DATE, MAX_MONTH, MAX_YEAR, MIN_DATE, MIN_MONTH, MIN_YEAR } from "..
|
|
|
21
20
|
import { animation } from "../../../lib/animation";
|
|
22
21
|
import { isMobile } from "../../../lib/client";
|
|
23
22
|
import { createPropsGetter } from "../../../lib/createPropsGetter";
|
|
24
|
-
import {
|
|
23
|
+
import { InternalDateTransformer } from "../../../lib/date/InternalDateTransformer";
|
|
24
|
+
import { ThemeContext } from "../../../lib/theming/ThemeContext";
|
|
25
25
|
import { themeConfig } from "../config";
|
|
26
26
|
import { MonthViewModel } from "../MonthViewModel";
|
|
27
27
|
import * as CalendarScrollEvents from "../CalendarScrollEvents";
|
|
28
28
|
import { Month } from "../Month";
|
|
29
29
|
import { create, isGreater, isLess } from "../CalendarDateShape";
|
|
30
30
|
import * as CalendarUtils from "../CalendarUtils";
|
|
31
|
+
import { CalendarContext } from "../CalendarContext";
|
|
31
32
|
import { getStyles } from "../Calendar.styles";
|
|
33
|
+
import { CalendarDay } from "../CalendarDay";
|
|
32
34
|
export var CalendarDataTids = {
|
|
33
35
|
root: 'Calendar__root',
|
|
34
36
|
month: 'MonthView__month',
|
|
35
37
|
dayCell: 'DayCellView__root',
|
|
36
38
|
headerMonth: 'MonthView__headerMonth',
|
|
37
|
-
|
|
39
|
+
monthSelectMobile: 'MonthView__monthSelectMobile',
|
|
40
|
+
headerYear: 'MonthView__headerYear',
|
|
41
|
+
yearSelectMobile: 'MonthView__yearSelectMobile'
|
|
38
42
|
};
|
|
39
43
|
export
|
|
40
44
|
/**
|
|
@@ -54,7 +58,7 @@ var Calendar = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_Reac
|
|
|
54
58
|
};
|
|
55
59
|
|
|
56
60
|
function Calendar(_props) {
|
|
57
|
-
var
|
|
61
|
+
var _this$props$initialYe;
|
|
58
62
|
|
|
59
63
|
var _this;
|
|
60
64
|
|
|
@@ -215,8 +219,21 @@ var Calendar = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_Reac
|
|
|
215
219
|
};
|
|
216
220
|
}();
|
|
217
221
|
|
|
222
|
+
_this.handleMonthChange = function (visibleMonths) {
|
|
223
|
+
var currentMonth = visibleMonths[0];
|
|
224
|
+
var changeInfo = {
|
|
225
|
+
month: CalendarUtils.getMonthInHumanFormat(currentMonth.month),
|
|
226
|
+
year: currentMonth.year
|
|
227
|
+
};
|
|
228
|
+
_this.props.onMonthChange == null ? void 0 : _this.props.onMonthChange(changeInfo);
|
|
229
|
+
};
|
|
230
|
+
|
|
231
|
+
_this.getViewModel = function (item) {
|
|
232
|
+
return item[1];
|
|
233
|
+
};
|
|
234
|
+
|
|
218
235
|
_this.renderMain = function () {
|
|
219
|
-
var
|
|
236
|
+
var monthsForRender = _this.getVisibleMonths(_this.state);
|
|
220
237
|
|
|
221
238
|
var wrapperStyle = {
|
|
222
239
|
height: themeConfig(_this.theme).WRAPPER_HEIGHT
|
|
@@ -225,6 +242,15 @@ var Calendar = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_Reac
|
|
|
225
242
|
var props = _this.getProps();
|
|
226
243
|
|
|
227
244
|
var styles = getStyles(_this.emotion);
|
|
245
|
+
var context = {
|
|
246
|
+
value: _this.getDateInNativeFormat(props.value),
|
|
247
|
+
minDate: _this.getDateInNativeFormat(props.minDate),
|
|
248
|
+
maxDate: _this.getDateInNativeFormat(props.maxDate),
|
|
249
|
+
isHoliday: props.isHoliday,
|
|
250
|
+
renderDay: props.renderDay,
|
|
251
|
+
today: CalendarUtils.getTodayDate(),
|
|
252
|
+
onDateClick: _this.handleDateClick
|
|
253
|
+
};
|
|
228
254
|
return /*#__PURE__*/React.createElement(CommonWrapper, _extends({
|
|
229
255
|
rootNodeRef: _this.setRootNode
|
|
230
256
|
}, props), /*#__PURE__*/React.createElement("div", {
|
|
@@ -234,13 +260,9 @@ var Calendar = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_Reac
|
|
|
234
260
|
}, /*#__PURE__*/React.createElement("div", {
|
|
235
261
|
style: wrapperStyle,
|
|
236
262
|
className: styles.wrapper()
|
|
237
|
-
},
|
|
238
|
-
|
|
239
|
-
}
|
|
240
|
-
var top = _ref2[0],
|
|
241
|
-
month = _ref2[1];
|
|
242
|
-
return CalendarUtils.isMonthVisible(top, month, _this.theme);
|
|
243
|
-
}).map(_this.renderMonth, _assertThisInitialized(_this))), /*#__PURE__*/React.createElement("div", {
|
|
263
|
+
}, /*#__PURE__*/React.createElement(CalendarContext.Provider, {
|
|
264
|
+
value: context
|
|
265
|
+
}, monthsForRender.map(_this.renderMonth, _assertThisInitialized(_this)))), /*#__PURE__*/React.createElement("div", {
|
|
244
266
|
className: styles.separator(_this.theme)
|
|
245
267
|
})));
|
|
246
268
|
};
|
|
@@ -270,29 +292,9 @@ var Calendar = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_Reac
|
|
|
270
292
|
_this.root = element;
|
|
271
293
|
};
|
|
272
294
|
|
|
273
|
-
_this.
|
|
274
|
-
var
|
|
275
|
-
|
|
276
|
-
year = _ref3.year,
|
|
277
|
-
isWeekend = _ref3.isWeekend;
|
|
278
|
-
var dateString = InternalDateTransformer.dateToInternalString({
|
|
279
|
-
date: date,
|
|
280
|
-
month: month + 1,
|
|
281
|
-
year: year
|
|
282
|
-
});
|
|
283
|
-
return _this.getProps().isHoliday(dateString, isWeekend);
|
|
284
|
-
};
|
|
285
|
-
|
|
286
|
-
_this.handleDateChange = function (dateShape) {
|
|
287
|
-
var value = InternalDateTransformer.dateToInternalString({
|
|
288
|
-
date: dateShape.date,
|
|
289
|
-
month: dateShape.month + 1,
|
|
290
|
-
year: dateShape.year
|
|
291
|
-
});
|
|
292
|
-
|
|
293
|
-
if (_this.props.onValueChange) {
|
|
294
|
-
_this.props.onValueChange(value);
|
|
295
|
-
}
|
|
295
|
+
_this.handleDateClick = function (dateShape) {
|
|
296
|
+
var value = InternalDateTransformer.dateToHumanString(dateShape);
|
|
297
|
+
_this.props.onValueChange == null ? void 0 : _this.props.onValueChange(value);
|
|
296
298
|
};
|
|
297
299
|
|
|
298
300
|
_this.handleMonthYearChange = function (month, year) {
|
|
@@ -300,9 +302,9 @@ var Calendar = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_Reac
|
|
|
300
302
|
};
|
|
301
303
|
|
|
302
304
|
_this.executeAnimations = function (pixelY) {
|
|
303
|
-
_this.setState(function (
|
|
304
|
-
var months =
|
|
305
|
-
scrollPosition =
|
|
305
|
+
_this.setState(function (_ref2) {
|
|
306
|
+
var months = _ref2.months,
|
|
307
|
+
scrollPosition = _ref2.scrollPosition;
|
|
306
308
|
var targetPosition = CalendarUtils.calculateScrollPosition(months, scrollPosition, pixelY, _this.theme).scrollPosition;
|
|
307
309
|
return {
|
|
308
310
|
scrollTarget: targetPosition
|
|
@@ -365,13 +367,13 @@ var Calendar = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_Reac
|
|
|
365
367
|
var _this$state = _this.state,
|
|
366
368
|
scrollTarget = _this$state.scrollTarget,
|
|
367
369
|
scrollDirection = _this$state.scrollDirection;
|
|
368
|
-
var
|
|
370
|
+
var thresholdHeight = themeConfig(_this.theme).MONTH_TITLE_OFFSET_HEIGHT + themeConfig(_this.theme).DAY_HEIGHT;
|
|
369
371
|
|
|
370
|
-
if (scrollTarget <
|
|
372
|
+
if (scrollTarget < thresholdHeight) {
|
|
371
373
|
var targetPosition = 0;
|
|
372
374
|
|
|
373
375
|
if (scrollDirection < 0) {
|
|
374
|
-
targetPosition =
|
|
376
|
+
targetPosition = thresholdHeight;
|
|
375
377
|
}
|
|
376
378
|
|
|
377
379
|
_this.setState({
|
|
@@ -394,8 +396,8 @@ var Calendar = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_Reac
|
|
|
394
396
|
|
|
395
397
|
_this.scrollAmount = function (scrollAmmount, onEnd) {
|
|
396
398
|
return _this.animation.animate(scrollAmmount, function (deltaY) {
|
|
397
|
-
_this.setState(function (
|
|
398
|
-
var scrollPosition =
|
|
399
|
+
_this.setState(function (_ref3) {
|
|
400
|
+
var scrollPosition = _ref3.scrollPosition;
|
|
399
401
|
return {
|
|
400
402
|
scrollPosition: scrollPosition + deltaY
|
|
401
403
|
};
|
|
@@ -421,12 +423,11 @@ var Calendar = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_Reac
|
|
|
421
423
|
minDate: minDateShape,
|
|
422
424
|
maxDate: maxDateShape
|
|
423
425
|
});
|
|
424
|
-
var initialMonth =
|
|
426
|
+
var initialMonth = _this.props.initialMonth ? CalendarUtils.getMonthInNativeFormat(_this.props.initialMonth) : initialDate.month;
|
|
425
427
|
var initialYear = (_this$props$initialYe = _this.props.initialYear) != null ? _this$props$initialYe : initialDate.year;
|
|
426
428
|
_this.state = {
|
|
427
429
|
scrollPosition: 0,
|
|
428
430
|
months: CalendarUtils.getMonths(initialMonth, initialYear),
|
|
429
|
-
today: today,
|
|
430
431
|
scrollDirection: 1,
|
|
431
432
|
scrollTarget: 0
|
|
432
433
|
};
|
|
@@ -435,14 +436,27 @@ var Calendar = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_Reac
|
|
|
435
436
|
|
|
436
437
|
var _proto = Calendar.prototype;
|
|
437
438
|
|
|
438
|
-
_proto.componentDidUpdate = function componentDidUpdate(prevProps) {
|
|
439
|
-
var
|
|
439
|
+
_proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {
|
|
440
|
+
var _this$props = this.props,
|
|
441
|
+
value = _this$props.value,
|
|
442
|
+
onMonthChange = _this$props.onMonthChange;
|
|
440
443
|
|
|
441
444
|
if (value && !shallowEqual(value, prevProps.value)) {
|
|
442
445
|
var _date = new InternalDate().parseValue(value).getComponentsLikeNumber();
|
|
443
446
|
|
|
444
447
|
this.scrollToMonth(_date.month - 1, _date.year);
|
|
445
448
|
}
|
|
449
|
+
|
|
450
|
+
if (onMonthChange) {
|
|
451
|
+
var visibleMonthsModels = this.getVisibleMonths(this.state).map(this.getViewModel);
|
|
452
|
+
var prevFirstVisibleMonthModels = this.getVisibleMonths(prevState).map(this.getViewModel);
|
|
453
|
+
var currentMonth = visibleMonthsModels[0].month;
|
|
454
|
+
var prevCurrentMonth = prevFirstVisibleMonthModels[0].month;
|
|
455
|
+
|
|
456
|
+
if (currentMonth !== prevCurrentMonth) {
|
|
457
|
+
this.handleMonthChange(visibleMonthsModels);
|
|
458
|
+
}
|
|
459
|
+
}
|
|
446
460
|
};
|
|
447
461
|
|
|
448
462
|
_proto.componentWillUnmount = function componentWillUnmount() {
|
|
@@ -456,7 +470,7 @@ var Calendar = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_Reac
|
|
|
456
470
|
|
|
457
471
|
return /*#__PURE__*/React.createElement(EmotionConsumer, null, function (emotion) {
|
|
458
472
|
_this2.emotion = emotion;
|
|
459
|
-
return /*#__PURE__*/React.createElement(
|
|
473
|
+
return /*#__PURE__*/React.createElement(ThemeContext.Consumer, null, function (theme) {
|
|
460
474
|
_this2.theme = theme;
|
|
461
475
|
return _this2.renderMain();
|
|
462
476
|
});
|
|
@@ -468,23 +482,14 @@ var Calendar = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_Reac
|
|
|
468
482
|
*/
|
|
469
483
|
;
|
|
470
484
|
|
|
471
|
-
_proto.renderMonth = function renderMonth(
|
|
472
|
-
var top =
|
|
473
|
-
month =
|
|
474
|
-
var date = this.getDateInNativeFormat(this.props.value);
|
|
475
|
-
var minDate = this.getDateInNativeFormat(this.props.minDate);
|
|
476
|
-
var maxDate = this.getDateInNativeFormat(this.props.maxDate);
|
|
485
|
+
_proto.renderMonth = function renderMonth(_ref4) {
|
|
486
|
+
var top = _ref4[0],
|
|
487
|
+
month = _ref4[1];
|
|
477
488
|
return /*#__PURE__*/React.createElement(Month, {
|
|
478
489
|
key: month.month + '-' + month.year,
|
|
479
490
|
top: top,
|
|
480
491
|
month: month,
|
|
481
|
-
|
|
482
|
-
minDate: minDate,
|
|
483
|
-
today: this.state.today,
|
|
484
|
-
value: date,
|
|
485
|
-
onDateClick: this.handleDateChange,
|
|
486
|
-
onMonthYearChange: this.handleMonthYearChange,
|
|
487
|
-
isHoliday: this.isHoliday
|
|
492
|
+
onMonthYearChange: this.handleMonthYearChange
|
|
488
493
|
});
|
|
489
494
|
};
|
|
490
495
|
|
|
@@ -492,10 +497,7 @@ var Calendar = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_Reac
|
|
|
492
497
|
return new InternalDate().parseValue(date).toNativeFormat();
|
|
493
498
|
};
|
|
494
499
|
|
|
495
|
-
_proto.getMonthPositions = function getMonthPositions() {
|
|
496
|
-
var _this$state2 = this.state,
|
|
497
|
-
scrollPosition = _this$state2.scrollPosition,
|
|
498
|
-
months = _this$state2.months;
|
|
500
|
+
_proto.getMonthPositions = function getMonthPositions(months, scrollPosition) {
|
|
499
501
|
var positions = [scrollPosition - months[0].getHeight(this.theme)];
|
|
500
502
|
|
|
501
503
|
for (var i = 1; i < months.length; i++) {
|
|
@@ -506,8 +508,23 @@ var Calendar = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_Reac
|
|
|
506
508
|
return positions;
|
|
507
509
|
};
|
|
508
510
|
|
|
511
|
+
_proto.getVisibleMonths = function getVisibleMonths(state) {
|
|
512
|
+
var _this3 = this;
|
|
513
|
+
|
|
514
|
+
var months = state.months,
|
|
515
|
+
scrollPosition = state.scrollPosition;
|
|
516
|
+
var positions = this.getMonthPositions(months, scrollPosition);
|
|
517
|
+
return months.map(function (x, i) {
|
|
518
|
+
return [positions[i], x];
|
|
519
|
+
}).filter(function (_ref5) {
|
|
520
|
+
var top = _ref5[0],
|
|
521
|
+
month = _ref5[1];
|
|
522
|
+
return CalendarUtils.isMonthVisible(top, month, _this3.theme);
|
|
523
|
+
});
|
|
524
|
+
};
|
|
525
|
+
|
|
509
526
|
return Calendar;
|
|
510
|
-
}(React.Component), _class2.__KONTUR_REACT_UI__ = 'Calendar', _class2.displayName = 'Calendar', _class2.defaultProps = {
|
|
527
|
+
}(React.Component), _class2.__KONTUR_REACT_UI__ = 'Calendar', _class2.displayName = 'Calendar', _class2.Day = CalendarDay, _class2.defaultProps = {
|
|
511
528
|
minDate: _class2.formatDate(MIN_DATE, MIN_MONTH, MIN_YEAR),
|
|
512
529
|
maxDate: _class2.formatDate(MAX_DATE, MAX_MONTH, MAX_YEAR),
|
|
513
530
|
isHoliday: function isHoliday(_day, isWeekend) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Calendar.tsx"],"names":["React","normalizeWheel","throttle","shallowEqual","globalObject","isInstanceOf","InternalDate","InternalDateTransformer","rootNode","EmotionConsumer","CommonWrapper","MAX_DATE","MAX_MONTH","MAX_YEAR","MIN_DATE","MIN_MONTH","MIN_YEAR","animation","isMobile","createPropsGetter","ThemeConsumer","themeConfig","MonthViewModel","CalendarScrollEvents","Month","create","isGreater","isLess","CalendarUtils","getStyles","CalendarDataTids","root","month","dayCell","headerMonth","headerYear","Calendar","formatDate","date","year","setComponents","toString","withPad","props","getProps","defaultProps","touchStartY","scrollToMonth","inProgress","finish","Promise","r","setTimeout","minDate","getDateInNativeFormat","maxDate","currentMonth","state","months","diffInMonths","scrollTo","maxMonthsToAdd","theme","MAX_MONTHS_TO_APPEND_ON_SCROLL","onEnd","setState","getMonths","scrollPosition","isYearChanges","Math","abs","monthsToPrependCount","min","monthsToPrepend","Array","from","length","_","index","yearChanges","isFirstInYear","isLastInYear","concat","getMonthsHeight","targetPosition","getHeight","monthsToAppendCount","monthsToAppend","slice","renderMain","positions","getMonthPositions","wrapperStyle","height","WRAPPER_HEIGHT","styles","emotion","setRootNode","refRoot","cx","wrapper","map","x","i","filter","top","isMonthVisible","renderMonth","separator","element","addEventListener","handleTouchStart","throttledHandleTouchMove","handleWheel","passive","removeEventListener","isHoliday","isWeekend","dateString","dateToInternalString","handleDateChange","dateShape","value","onValueChange","handleMonthYearChange","executeAnimations","pixelY","calculateScrollPosition","scrollTarget","handleWheelEnd","animate","deltaY","applyDelta","emit","event","TouchEvent","clientY","targetTouches","handleTouchMove","changedTouches","WheelEvent","preventDefault","wheelEndTimeout","clearTimeout","scrollToNearestWeek","scrollDirection","trasholdHeight","MONTH_TITLE_OFFSET_HEIGHT","DAY_SIZE","amount","pos","scrollAmmount","scrollAmount","minDateShape","maxDateShape","today","getTodayDate","initialDate","getInitialDate","initialMonth","getMonthInNativeFormat","initialYear","componentDidUpdate","prevProps","parseValue","getComponentsLikeNumber","componentWillUnmount","cancel","render","toNativeFormat","position","push","Component","__KONTUR_REACT_UI__","displayName","_day"],"mappings":"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","sourcesContent":["import React from 'react';\nimport normalizeWheel from 'normalize-wheel';\nimport throttle from 'lodash.throttle';\nimport shallowEqual from 'shallowequal';\nimport { globalObject, SafeTimer } from '@skbkontur/global-object';\nimport type { Emotion } from '@emotion/css/create-instance';\n\nimport { isInstanceOf } from '../../lib/isInstanceOf';\nimport { InternalDate } from '../../lib/date/InternalDate';\nimport { InternalDateTransformer } from '../../lib/date/InternalDateTransformer';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { EmotionConsumer } from '../../lib/theming/Emotion';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { MAX_DATE, MAX_MONTH, MAX_YEAR, MIN_DATE, MIN_MONTH, MIN_YEAR } from '../../lib/date/constants';\nimport { Nullable, Range } from '../../typings/utility-types';\nimport { Theme } from '../../lib/theming/Theme';\nimport { animation } from '../../lib/animation';\nimport { isMobile } from '../../lib/client';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { ThemeConsumer } from '../../lib/theming/ThemeContext';\n\nimport { themeConfig } from './config';\nimport { MonthViewModel } from './MonthViewModel';\nimport * as CalendarScrollEvents from './CalendarScrollEvents';\nimport { Month } from './Month';\nimport { CalendarDateShape, create, isGreater, isLess } from './CalendarDateShape';\nimport * as CalendarUtils from './CalendarUtils';\nimport { getStyles } from './Calendar.styles';\n\nexport interface CalendarProps extends CommonProps {\n /**\n * Вызывается при изменении `value`\n *\n * В аргументе хранится дата в формате `dd.mm.yyyy`\n */\n onValueChange?: (date: string) => void;\n /**\n * Задаёт текущую дату\n *\n * Дата задаётся в формате `dd.mm.yyyy`\n */\n value: Nullable<string>;\n /**\n * Задаёт максимальную возможную дату\n *\n * Дата задаётся в формате `dd.mm.yyyy`\n */\n maxDate?: string;\n /**\n * Задаёт минимальную возможную дату\n *\n * Дата задаётся в формате `dd.mm.yyyy`\n */\n minDate?: string;\n /**\n * Функция для определения праздничных дней\n * @default (_day, isWeekend) => isWeekend\n * @param {string} day - строка в формате `dd.mm.yyyy`\n * @param {boolean} isWeekend - флаг выходного (суббота или воскресенье)\n *\n * @returns {boolean} `true` для выходного или `false` для рабочего дня\n */\n isHoliday?: (day: string, isWeekend: boolean) => boolean;\n /**\n * Позволяет задать начальный месяц\n */\n initialMonth?: Range<1, 13>;\n /**\n * Позволяет задать начальный год\n */\n initialYear?: number;\n}\n\nexport interface CalendarState {\n scrollPosition: number;\n months: MonthViewModel[];\n today: CalendarDateShape;\n scrollDirection: number;\n scrollTarget: number;\n}\n\nexport const CalendarDataTids = {\n root: 'Calendar__root',\n month: 'MonthView__month',\n dayCell: 'DayCellView__root',\n headerMonth: 'MonthView__headerMonth',\n headerYear: 'MonthView__headerYear',\n} as const;\n\ntype DefaultProps = Required<Pick<CalendarProps, 'minDate' | 'maxDate' | 'isHoliday'>>;\n\n/**\n * Компонент календаря из [DatePicker](https://tech.skbkontur.ru/react-ui/#/Components/DatePicker)'а\n */\n@rootNode\nexport class Calendar extends React.Component<CalendarProps, CalendarState> {\n public static __KONTUR_REACT_UI__ = 'Calendar';\n public static displayName = 'Calendar';\n\n private static formatDate(date: number, month: number, year: number) {\n return new InternalDate().setComponents({ date, month, year }).toString({ withPad: true });\n }\n\n public static defaultProps: DefaultProps = {\n minDate: Calendar.formatDate(MIN_DATE, MIN_MONTH, MIN_YEAR),\n maxDate: Calendar.formatDate(MAX_DATE, MAX_MONTH, MAX_YEAR),\n isHoliday: (_day: string, isWeekend: boolean) => isWeekend,\n };\n\n private getProps = createPropsGetter(Calendar.defaultProps);\n\n private theme!: Theme;\n private emotion!: Emotion;\n private wheelEndTimeout: SafeTimer;\n private root: Nullable<HTMLElement>;\n private animation = animation();\n private touchStartY: Nullable<number> = null;\n private setRootNode!: TSetRootNode;\n\n constructor(props: CalendarProps) {\n super(props);\n\n const { minDate, maxDate, value } = this.getProps();\n\n const minDateShape = this.getDateInNativeFormat(minDate);\n const maxDateShape = this.getDateInNativeFormat(maxDate);\n const dateShape = this.getDateInNativeFormat(value);\n\n const today = CalendarUtils.getTodayDate();\n const initialDate = CalendarUtils.getInitialDate({\n today,\n date: dateShape,\n minDate: minDateShape,\n maxDate: maxDateShape,\n });\n\n const initialMonth = CalendarUtils.getMonthInNativeFormat(this.props.initialMonth) ?? initialDate.month;\n const initialYear = this.props.initialYear ?? initialDate.year;\n\n this.state = {\n scrollPosition: 0,\n months: CalendarUtils.getMonths(initialMonth, initialYear),\n today,\n scrollDirection: 1,\n scrollTarget: 0,\n };\n }\n\n public componentDidUpdate(prevProps: Readonly<CalendarProps>): void {\n const { value } = this.props;\n if (value && !shallowEqual(value, prevProps.value)) {\n const date = new InternalDate().parseValue(value).getComponentsLikeNumber();\n this.scrollToMonth(date.month - 1, date.year);\n }\n }\n\n public componentWillUnmount() {\n if (this.animation.inProgress()) {\n this.animation.cancel();\n }\n }\n\n public render() {\n return (\n <EmotionConsumer>\n {(emotion) => {\n this.emotion = emotion;\n return (\n <ThemeConsumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeConsumer>\n );\n }}\n </EmotionConsumer>\n );\n }\n\n /**\n * Прокручивает календарь до переданной даты\n * @public\n */\n public scrollToMonth = async (month: number, year: number) => {\n if (this.animation.inProgress()) {\n this.animation.finish();\n // FIXME: Dirty hack to await batched updates\n await new Promise((r) => globalObject.setTimeout(r, 0));\n }\n\n const minDate = this.getDateInNativeFormat(this.getProps().minDate);\n const maxDate = this.getDateInNativeFormat(this.getProps().maxDate);\n\n if (minDate && isGreater(minDate, create(32, month, year))) {\n this.scrollToMonth(minDate.month, minDate.year);\n return;\n }\n\n if (maxDate && isLess(maxDate, create(0, month, year))) {\n this.scrollToMonth(maxDate.month, maxDate.year);\n return;\n }\n\n const currentMonth = this.state.months[1];\n const diffInMonths = currentMonth.month + currentMonth.year * 12 - month - year * 12;\n\n if (diffInMonths === 0) {\n this.scrollTo(0);\n return;\n }\n\n const maxMonthsToAdd = themeConfig(this.theme).MAX_MONTHS_TO_APPEND_ON_SCROLL;\n\n const onEnd = () => {\n this.setState({\n months: CalendarUtils.getMonths(month, year),\n scrollPosition: 0,\n });\n };\n\n const isYearChanges = (state: CalendarState) => {\n return (\n state.months[1].year !== year &&\n // if diff in months is 2 or less,\n // either year is not changing either months already\n // have right isFirstInYear/isLastInYear flags\n Math.abs(diffInMonths) > 2\n );\n };\n\n // If scrolling upwards, prepend maximum maxMonthsToAdd months\n // and scroll to the first month\n if (diffInMonths > 0) {\n const monthsToPrependCount = Math.min(Math.abs(diffInMonths) - 1, maxMonthsToAdd);\n const monthsToPrepend = Array.from({ length: monthsToPrependCount }, (_, index) => {\n return MonthViewModel.create(month + index, year);\n });\n this.setState(\n (state) => {\n const yearChanges = isYearChanges(state);\n if (yearChanges) {\n // Mutating here can lead to some unexpected bugs\n // but we couldn't find any yet\n state.months[0].isFirstInYear = true;\n if (monthsToPrepend.length) {\n // Mutating item here is safe as it was just created\n monthsToPrepend[monthsToPrepend.length - 1].isLastInYear = true;\n }\n }\n return {\n months: monthsToPrepend.concat(state.months),\n scrollPosition: -CalendarUtils.getMonthsHeight(monthsToPrepend, this.theme),\n };\n },\n () => {\n const targetPosition = this.state.months[0].getHeight(this.theme);\n this.scrollTo(targetPosition, onEnd);\n },\n );\n }\n\n // If scrolling downwards, append maximum maxMonthsToAdd months\n // and scroll to the last but one month\n if (diffInMonths < 0) {\n const monthsToAppendCount = Math.min(Math.abs(diffInMonths), maxMonthsToAdd);\n const monthsToAppend = Array.from({ length: monthsToAppendCount }, (_, index) => {\n return MonthViewModel.create(month + index - monthsToAppendCount + 2, year);\n });\n this.setState(\n (state) => {\n if (isYearChanges(state)) {\n // Mutating here can lead to some unexpected bugs\n // but we couldn't find any yet\n state.months[state.months.length - 1].isLastInYear = true;\n // Mutating item here is safe as it was just created\n if (monthsToAppend[0]) {\n monthsToAppend[0].isFirstInYear = true;\n }\n }\n return { months: state.months.concat(monthsToAppend) };\n },\n () => {\n const targetPosition = -1 * CalendarUtils.getMonthsHeight(this.state.months.slice(1, -2), this.theme);\n this.scrollTo(targetPosition, onEnd);\n },\n );\n }\n };\n\n private renderMain = () => {\n const positions = this.getMonthPositions();\n const wrapperStyle = { height: themeConfig(this.theme).WRAPPER_HEIGHT };\n\n const props = this.getProps();\n const styles = getStyles(this.emotion);\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...props}>\n <div ref={this.refRoot} data-tid={CalendarDataTids.root} className={this.emotion.cx(styles.root(this.theme))}>\n <div style={wrapperStyle} className={styles.wrapper()}>\n {this.state.months\n .map<[number, MonthViewModel]>((x, i) => [positions[i], x])\n .filter(([top, month]) => CalendarUtils.isMonthVisible(top, month, this.theme))\n .map(this.renderMonth, this)}\n </div>\n <div className={styles.separator(this.theme)} />\n </div>\n </CommonWrapper>\n );\n };\n\n private refRoot = (element: HTMLElement | null) => {\n if (!this.root && element) {\n if (isMobile) {\n element.addEventListener('touchstart', this.handleTouchStart);\n element.addEventListener('touchmove', this.throttledHandleTouchMove);\n } else {\n element.addEventListener('wheel', this.handleWheel, { passive: false });\n }\n }\n if (this.root && !element) {\n if (isMobile) {\n this.root.removeEventListener('touchstart', this.handleTouchStart);\n this.root.removeEventListener('touchmove', this.throttledHandleTouchMove);\n } else {\n this.root.removeEventListener('wheel', this.handleWheel);\n }\n }\n this.root = element;\n };\n\n private renderMonth([top, month]: [number, MonthViewModel]) {\n const date = this.getDateInNativeFormat(this.props.value);\n const minDate = this.getDateInNativeFormat(this.props.minDate);\n const maxDate = this.getDateInNativeFormat(this.props.maxDate);\n\n return (\n <Month\n key={month.month + '-' + month.year}\n top={top}\n month={month}\n maxDate={maxDate}\n minDate={minDate}\n today={this.state.today}\n value={date}\n onDateClick={this.handleDateChange}\n onMonthYearChange={this.handleMonthYearChange}\n isHoliday={this.isHoliday}\n />\n );\n }\n\n private isHoliday = ({ date, month, year, isWeekend }: CalendarDateShape & { isWeekend: boolean }) => {\n const dateString = InternalDateTransformer.dateToInternalString({ date, month: month + 1, year });\n\n return this.getProps().isHoliday(dateString, isWeekend);\n };\n\n private handleDateChange = (dateShape: CalendarDateShape) => {\n const value = InternalDateTransformer.dateToInternalString({\n date: dateShape.date,\n month: dateShape.month + 1,\n year: dateShape.year,\n });\n\n if (this.props.onValueChange) {\n this.props.onValueChange(value);\n }\n };\n\n private getDateInNativeFormat(date: Nullable<string>) {\n return new InternalDate().parseValue(date).toNativeFormat();\n }\n\n private getMonthPositions() {\n const { scrollPosition, months } = this.state;\n\n const positions = [scrollPosition - months[0].getHeight(this.theme)];\n for (let i = 1; i < months.length; i++) {\n const position = positions[i - 1] + months[i - 1].getHeight(this.theme);\n positions.push(position);\n }\n return positions;\n }\n\n private handleMonthYearChange = (month: number, year: number) => {\n this.scrollToMonth(month, year);\n };\n\n private executeAnimations = (pixelY: number) => {\n this.setState(({ months, scrollPosition }) => {\n const targetPosition = CalendarUtils.calculateScrollPosition(\n months,\n scrollPosition,\n pixelY,\n this.theme,\n ).scrollPosition;\n return { scrollTarget: targetPosition };\n }, this.handleWheelEnd);\n\n this.animation.animate(pixelY, (deltaY) => {\n // FIXME: Typescript not resolving setState cb type\n this.setState(CalendarUtils.applyDelta(deltaY, this.theme) as any);\n });\n\n CalendarScrollEvents.emit();\n };\n\n private handleTouchStart = (event: Event) => {\n if (!isInstanceOf(event, globalObject.TouchEvent)) {\n return;\n }\n\n const clientY = event.targetTouches[0].clientY;\n this.touchStartY = clientY;\n };\n\n private handleTouchMove = (event: Event) => {\n if (!isInstanceOf(event, globalObject.TouchEvent)) {\n return;\n }\n\n const { clientY } = event.changedTouches[0];\n\n const deltaY = (this.touchStartY || 0) - clientY;\n this.touchStartY = clientY;\n\n this.executeAnimations(deltaY);\n };\n\n private throttledHandleTouchMove = throttle(this.handleTouchMove, 10);\n\n private handleWheel = (event: Event) => {\n if (!isInstanceOf(event, globalObject.WheelEvent)) {\n return;\n }\n event.preventDefault();\n const { pixelY } = normalizeWheel(event);\n\n this.executeAnimations(pixelY);\n };\n\n private handleWheelEnd = () => {\n if (this.wheelEndTimeout) {\n globalObject.clearTimeout(this.wheelEndTimeout);\n }\n this.wheelEndTimeout = globalObject.setTimeout(this.scrollToNearestWeek, 300);\n };\n private scrollToNearestWeek = () => {\n const { scrollTarget, scrollDirection } = this.state;\n\n const trasholdHeight = themeConfig(this.theme).MONTH_TITLE_OFFSET_HEIGHT + themeConfig(this.theme).DAY_SIZE;\n\n if (scrollTarget < trasholdHeight) {\n let targetPosition = 0;\n if (scrollDirection < 0) {\n targetPosition = trasholdHeight;\n }\n\n this.setState({ scrollTarget: targetPosition }, () => {\n const amount = scrollTarget - targetPosition;\n this.animation.animate(amount, (deltaY) => {\n // FIXME: Typescript not resolving setState cb type\n this.setState(CalendarUtils.applyDelta(deltaY, this.theme) as any);\n });\n });\n }\n };\n\n private scrollTo = (pos: number, onEnd?: () => void) => {\n const scrollAmmount = pos - this.state.scrollPosition;\n return this.scrollAmount(scrollAmmount, onEnd);\n };\n\n private scrollAmount = (scrollAmmount: number, onEnd?: () => void) => {\n return this.animation.animate(\n scrollAmmount,\n (deltaY) => {\n this.setState(({ scrollPosition }) => ({\n scrollPosition: scrollPosition + deltaY,\n }));\n },\n onEnd,\n );\n };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["Calendar.tsx"],"names":["React","normalizeWheel","throttle","shallowEqual","globalObject","isInstanceOf","InternalDate","rootNode","EmotionConsumer","CommonWrapper","MAX_DATE","MAX_MONTH","MAX_YEAR","MIN_DATE","MIN_MONTH","MIN_YEAR","animation","isMobile","createPropsGetter","InternalDateTransformer","ThemeContext","themeConfig","MonthViewModel","CalendarScrollEvents","Month","create","isGreater","isLess","CalendarUtils","CalendarContext","getStyles","CalendarDay","CalendarDataTids","root","month","dayCell","headerMonth","monthSelectMobile","headerYear","yearSelectMobile","Calendar","formatDate","date","year","setComponents","toString","withPad","props","getProps","defaultProps","touchStartY","scrollToMonth","inProgress","finish","Promise","r","setTimeout","minDate","getDateInNativeFormat","maxDate","currentMonth","state","months","diffInMonths","scrollTo","maxMonthsToAdd","theme","MAX_MONTHS_TO_APPEND_ON_SCROLL","onEnd","setState","getMonths","scrollPosition","isYearChanges","Math","abs","monthsToPrependCount","min","monthsToPrepend","Array","from","length","_","index","yearChanges","isFirstInYear","isLastInYear","concat","getMonthsHeight","targetPosition","getHeight","monthsToAppendCount","monthsToAppend","slice","handleMonthChange","visibleMonths","changeInfo","getMonthInHumanFormat","onMonthChange","getViewModel","item","renderMain","monthsForRender","getVisibleMonths","wrapperStyle","height","WRAPPER_HEIGHT","styles","emotion","context","value","isHoliday","renderDay","today","getTodayDate","onDateClick","handleDateClick","setRootNode","refRoot","cx","wrapper","map","renderMonth","separator","element","addEventListener","handleTouchStart","throttledHandleTouchMove","handleWheel","passive","removeEventListener","dateShape","dateToHumanString","onValueChange","handleMonthYearChange","executeAnimations","pixelY","calculateScrollPosition","scrollTarget","handleWheelEnd","animate","deltaY","applyDelta","emit","event","TouchEvent","clientY","targetTouches","handleTouchMove","changedTouches","WheelEvent","preventDefault","wheelEndTimeout","clearTimeout","scrollToNearestWeek","scrollDirection","thresholdHeight","MONTH_TITLE_OFFSET_HEIGHT","DAY_HEIGHT","amount","pos","scrollAmmount","scrollAmount","minDateShape","maxDateShape","initialDate","getInitialDate","initialMonth","getMonthInNativeFormat","initialYear","componentDidUpdate","prevProps","prevState","parseValue","getComponentsLikeNumber","visibleMonthsModels","prevFirstVisibleMonthModels","prevCurrentMonth","componentWillUnmount","cancel","render","top","toNativeFormat","getMonthPositions","positions","i","position","push","x","filter","isMonthVisible","Component","__KONTUR_REACT_UI__","displayName","Day","_day","isWeekend"],"mappings":"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","sourcesContent":["import React from 'react';\nimport normalizeWheel from 'normalize-wheel';\nimport throttle from 'lodash.throttle';\nimport shallowEqual from 'shallowequal';\nimport { globalObject, SafeTimer } from '@skbkontur/global-object';\nimport type { Emotion } from '@emotion/css/create-instance';\n\nimport { isInstanceOf } from '../../lib/isInstanceOf';\nimport { InternalDate } from '../../lib/date/InternalDate';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { EmotionConsumer } from '../../lib/theming/Emotion';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { MAX_DATE, MAX_MONTH, MAX_YEAR, MIN_DATE, MIN_MONTH, MIN_YEAR } from '../../lib/date/constants';\nimport { Nullable, Range } from '../../typings/utility-types';\nimport { Theme } from '../../lib/theming/Theme';\nimport { animation } from '../../lib/animation';\nimport { isMobile } from '../../lib/client';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { InternalDateTransformer } from '../../lib/date/InternalDateTransformer';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\n\nimport { themeConfig } from './config';\nimport { MonthViewModel } from './MonthViewModel';\nimport * as CalendarScrollEvents from './CalendarScrollEvents';\nimport { Month } from './Month';\nimport { CalendarDateShape, create, isGreater, isLess } from './CalendarDateShape';\nimport * as CalendarUtils from './CalendarUtils';\nimport { CalendarContext, CalendarContextProps } from './CalendarContext';\nimport { getStyles } from './Calendar.styles';\nimport { CalendarDay, CalendarDayProps } from './CalendarDay';\n\nexport interface CalendarProps extends CommonProps {\n /**\n * Вызывается при изменении `value`\n *\n * В аргументе хранится дата в формате `dd.mm.yyyy`\n */\n onValueChange?: (date: string) => void;\n /**\n * Задаёт текущую дату\n *\n * Дата задаётся в формате `dd.mm.yyyy`\n */\n value: Nullable<string>;\n /**\n * Задаёт максимальную возможную дату\n *\n * Дата задаётся в формате `dd.mm.yyyy`\n */\n maxDate?: string;\n /**\n * Задаёт минимальную возможную дату\n *\n * Дата задаётся в формате `dd.mm.yyyy`\n */\n minDate?: string;\n /**\n * Функция для определения праздничных дней\n * @default (_day, isWeekend) => isWeekend\n * @param {string} day - строка в формате `dd.mm.yyyy`\n * @param {boolean} isWeekend - флаг выходного (суббота или воскресенье)\n *\n * @returns {boolean} `true` для выходного или `false` для рабочего дня\n */\n isHoliday?: (day: string, isWeekend: boolean) => boolean;\n /**\n * Позволяет задать начальный месяц\n */\n initialMonth?: Range<1, 13>;\n /**\n * Позволяет задать начальный год\n */\n initialYear?: number;\n /**\n * Метод отрисовки дат в календаре\n * @default (props: CalendarDayProps) => <CalendarDay {...props} />\n * @param {CalendarDayProps} props\n *\n * @returns {ReactElement} Элемент, который отрисовывает контент числа месяца.\n */\n renderDay?: (props: CalendarDayProps) => React.ReactElement;\n\n /**\n * Вызывается при каждом изменении месяца\n * @param {CalendarMonthChangeInfo} changeInfo - информация о изменении отображаемого месяца, где\n * `month: number` - номер текущего отображаемого месяца от 1 до 12,\n * `year: number` - отображаемый год,\n */\n onMonthChange?: (changeInfo: CalendarMonthChangeInfo) => void;\n}\n\nexport interface CalendarState {\n scrollPosition: number;\n months: MonthViewModel[];\n scrollDirection: number;\n scrollTarget: number;\n}\n\nexport interface CalendarMonthChangeInfo {\n month: number;\n year: number;\n}\n\nexport const CalendarDataTids = {\n root: 'Calendar__root',\n month: 'MonthView__month',\n dayCell: 'DayCellView__root',\n headerMonth: 'MonthView__headerMonth',\n monthSelectMobile: 'MonthView__monthSelectMobile',\n headerYear: 'MonthView__headerYear',\n yearSelectMobile: 'MonthView__yearSelectMobile',\n} as const;\n\ntype DefaultProps = Required<Pick<CalendarProps, 'minDate' | 'maxDate' | 'isHoliday'>>;\n\n/**\n * Компонент календаря из [DatePicker](https://tech.skbkontur.ru/react-ui/#/Components/DatePicker)'а\n */\n@rootNode\nexport class Calendar extends React.Component<CalendarProps, CalendarState> {\n public static __KONTUR_REACT_UI__ = 'Calendar';\n public static displayName = 'Calendar';\n\n public static Day = CalendarDay;\n\n private static formatDate(date: number, month: number, year: number) {\n return new InternalDate().setComponents({ date, month, year }).toString({ withPad: true });\n }\n\n public static defaultProps: DefaultProps = {\n minDate: Calendar.formatDate(MIN_DATE, MIN_MONTH, MIN_YEAR),\n maxDate: Calendar.formatDate(MAX_DATE, MAX_MONTH, MAX_YEAR),\n isHoliday: (_day: string, isWeekend: boolean) => isWeekend,\n };\n\n private getProps = createPropsGetter(Calendar.defaultProps);\n\n private theme!: Theme;\n private emotion!: Emotion;\n private wheelEndTimeout: SafeTimer;\n private root: Nullable<HTMLElement>;\n private animation = animation();\n private touchStartY: Nullable<number> = null;\n private setRootNode!: TSetRootNode;\n\n constructor(props: CalendarProps) {\n super(props);\n\n const { minDate, maxDate, value } = this.getProps();\n\n const minDateShape = this.getDateInNativeFormat(minDate);\n const maxDateShape = this.getDateInNativeFormat(maxDate);\n const dateShape = this.getDateInNativeFormat(value);\n\n const today = CalendarUtils.getTodayDate();\n const initialDate = CalendarUtils.getInitialDate({\n today,\n date: dateShape,\n minDate: minDateShape,\n maxDate: maxDateShape,\n });\n\n const initialMonth = this.props.initialMonth\n ? CalendarUtils.getMonthInNativeFormat(this.props.initialMonth)\n : initialDate.month;\n const initialYear = this.props.initialYear ?? initialDate.year;\n\n this.state = {\n scrollPosition: 0,\n months: CalendarUtils.getMonths(initialMonth, initialYear),\n scrollDirection: 1,\n scrollTarget: 0,\n };\n }\n\n public componentDidUpdate(prevProps: Readonly<CalendarProps>, prevState: Readonly<CalendarState>): void {\n const { value, onMonthChange } = this.props;\n if (value && !shallowEqual(value, prevProps.value)) {\n const date = new InternalDate().parseValue(value).getComponentsLikeNumber();\n this.scrollToMonth(date.month - 1, date.year);\n }\n\n if (onMonthChange) {\n const visibleMonthsModels = this.getVisibleMonths(this.state).map(this.getViewModel);\n const prevFirstVisibleMonthModels = this.getVisibleMonths(prevState).map(this.getViewModel);\n const currentMonth = visibleMonthsModels[0].month;\n const prevCurrentMonth = prevFirstVisibleMonthModels[0].month;\n\n if (currentMonth !== prevCurrentMonth) {\n this.handleMonthChange(visibleMonthsModels);\n }\n }\n }\n\n public componentWillUnmount() {\n if (this.animation.inProgress()) {\n this.animation.cancel();\n }\n }\n\n public render() {\n return (\n <EmotionConsumer>\n {(emotion) => {\n this.emotion = emotion;\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }}\n </EmotionConsumer>\n );\n }\n\n /**\n * Прокручивает календарь до переданной даты\n * @public\n */\n public scrollToMonth = async (month: number, year: number) => {\n if (this.animation.inProgress()) {\n this.animation.finish();\n // FIXME: Dirty hack to await batched updates\n await new Promise((r) => globalObject.setTimeout(r, 0));\n }\n\n const minDate = this.getDateInNativeFormat(this.getProps().minDate);\n const maxDate = this.getDateInNativeFormat(this.getProps().maxDate);\n\n if (minDate && isGreater(minDate, create(32, month, year))) {\n this.scrollToMonth(minDate.month, minDate.year);\n return;\n }\n\n if (maxDate && isLess(maxDate, create(0, month, year))) {\n this.scrollToMonth(maxDate.month, maxDate.year);\n return;\n }\n\n const currentMonth = this.state.months[1];\n const diffInMonths = currentMonth.month + currentMonth.year * 12 - month - year * 12;\n\n if (diffInMonths === 0) {\n this.scrollTo(0);\n return;\n }\n\n const maxMonthsToAdd = themeConfig(this.theme).MAX_MONTHS_TO_APPEND_ON_SCROLL;\n\n const onEnd = () => {\n this.setState({\n months: CalendarUtils.getMonths(month, year),\n scrollPosition: 0,\n });\n };\n\n const isYearChanges = (state: CalendarState) => {\n return (\n state.months[1].year !== year &&\n // if diff in months is 2 or less,\n // either year is not changing either months already\n // have right isFirstInYear/isLastInYear flags\n Math.abs(diffInMonths) > 2\n );\n };\n\n // If scrolling upwards, prepend maximum maxMonthsToAdd months\n // and scroll to the first month\n if (diffInMonths > 0) {\n const monthsToPrependCount = Math.min(Math.abs(diffInMonths) - 1, maxMonthsToAdd);\n const monthsToPrepend = Array.from({ length: monthsToPrependCount }, (_, index) => {\n return MonthViewModel.create(month + index, year);\n });\n this.setState(\n (state) => {\n const yearChanges = isYearChanges(state);\n if (yearChanges) {\n // Mutating here can lead to some unexpected bugs\n // but we couldn't find any yet\n state.months[0].isFirstInYear = true;\n if (monthsToPrepend.length) {\n // Mutating item here is safe as it was just created\n monthsToPrepend[monthsToPrepend.length - 1].isLastInYear = true;\n }\n }\n return {\n months: monthsToPrepend.concat(state.months),\n scrollPosition: -CalendarUtils.getMonthsHeight(monthsToPrepend, this.theme),\n };\n },\n () => {\n const targetPosition = this.state.months[0].getHeight(this.theme);\n this.scrollTo(targetPosition, onEnd);\n },\n );\n }\n\n // If scrolling downwards, append maximum maxMonthsToAdd months\n // and scroll to the last but one month\n if (diffInMonths < 0) {\n const monthsToAppendCount = Math.min(Math.abs(diffInMonths), maxMonthsToAdd);\n const monthsToAppend = Array.from({ length: monthsToAppendCount }, (_, index) => {\n return MonthViewModel.create(month + index - monthsToAppendCount + 2, year);\n });\n this.setState(\n (state) => {\n if (isYearChanges(state)) {\n // Mutating here can lead to some unexpected bugs\n // but we couldn't find any yet\n state.months[state.months.length - 1].isLastInYear = true;\n // Mutating item here is safe as it was just created\n if (monthsToAppend[0]) {\n monthsToAppend[0].isFirstInYear = true;\n }\n }\n return { months: state.months.concat(monthsToAppend) };\n },\n () => {\n const targetPosition = -1 * CalendarUtils.getMonthsHeight(this.state.months.slice(1, -2), this.theme);\n this.scrollTo(targetPosition, onEnd);\n },\n );\n }\n };\n\n private handleMonthChange = (visibleMonths: MonthViewModel[]): void => {\n const currentMonth = visibleMonths[0];\n const changeInfo = {\n month: CalendarUtils.getMonthInHumanFormat(currentMonth.month),\n year: currentMonth.year,\n };\n\n this.props.onMonthChange?.(changeInfo);\n };\n\n private getViewModel = (item: [number, MonthViewModel]): MonthViewModel => item[1];\n\n private renderMain = () => {\n const monthsForRender = this.getVisibleMonths(this.state);\n const wrapperStyle = { height: themeConfig(this.theme).WRAPPER_HEIGHT };\n\n const props = this.getProps();\n const styles = getStyles(this.emotion);\n\n const context: CalendarContextProps = {\n value: this.getDateInNativeFormat(props.value),\n minDate: this.getDateInNativeFormat(props.minDate),\n maxDate: this.getDateInNativeFormat(props.maxDate),\n isHoliday: props.isHoliday,\n renderDay: props.renderDay,\n today: CalendarUtils.getTodayDate(),\n onDateClick: this.handleDateClick,\n };\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...props}>\n <div ref={this.refRoot} data-tid={CalendarDataTids.root} className={this.emotion.cx(styles.root(this.theme))}>\n <div style={wrapperStyle} className={styles.wrapper()}>\n <CalendarContext.Provider value={context}>\n {monthsForRender.map(this.renderMonth, this)}\n </CalendarContext.Provider>\n </div>\n <div className={styles.separator(this.theme)} />\n </div>\n </CommonWrapper>\n );\n };\n\n private refRoot = (element: HTMLElement | null) => {\n if (!this.root && element) {\n if (isMobile) {\n element.addEventListener('touchstart', this.handleTouchStart);\n element.addEventListener('touchmove', this.throttledHandleTouchMove);\n } else {\n element.addEventListener('wheel', this.handleWheel, { passive: false });\n }\n }\n if (this.root && !element) {\n if (isMobile) {\n this.root.removeEventListener('touchstart', this.handleTouchStart);\n this.root.removeEventListener('touchmove', this.throttledHandleTouchMove);\n } else {\n this.root.removeEventListener('wheel', this.handleWheel);\n }\n }\n this.root = element;\n };\n\n private renderMonth([top, month]: [number, MonthViewModel]) {\n return (\n <Month\n key={month.month + '-' + month.year}\n top={top}\n month={month}\n onMonthYearChange={this.handleMonthYearChange}\n />\n );\n }\n\n private handleDateClick = (dateShape: CalendarDateShape) => {\n const value = InternalDateTransformer.dateToHumanString(dateShape);\n\n this.props.onValueChange?.(value);\n };\n\n private getDateInNativeFormat(date: Nullable<string>) {\n return new InternalDate().parseValue(date).toNativeFormat();\n }\n\n private getMonthPositions(months: MonthViewModel[], scrollPosition: number) {\n const positions = [scrollPosition - months[0].getHeight(this.theme)];\n for (let i = 1; i < months.length; i++) {\n const position = positions[i - 1] + months[i - 1].getHeight(this.theme);\n positions.push(position);\n }\n return positions;\n }\n\n private getVisibleMonths(state: Readonly<CalendarState>): Array<[number, MonthViewModel]> {\n const { months, scrollPosition } = state;\n const positions = this.getMonthPositions(months, scrollPosition);\n\n return months\n .map<[number, MonthViewModel]>((x, i) => [positions[i], x])\n .filter(([top, month]) => CalendarUtils.isMonthVisible(top, month, this.theme));\n }\n\n private handleMonthYearChange = (month: number, year: number) => {\n this.scrollToMonth(month, year);\n };\n\n private executeAnimations = (pixelY: number) => {\n this.setState(({ months, scrollPosition }) => {\n const targetPosition = CalendarUtils.calculateScrollPosition(\n months,\n scrollPosition,\n pixelY,\n this.theme,\n ).scrollPosition;\n return { scrollTarget: targetPosition };\n }, this.handleWheelEnd);\n\n this.animation.animate(pixelY, (deltaY) => {\n // FIXME: Typescript not resolving setState cb type\n this.setState(CalendarUtils.applyDelta(deltaY, this.theme) as any);\n });\n\n CalendarScrollEvents.emit();\n };\n\n private handleTouchStart = (event: Event) => {\n if (!isInstanceOf(event, globalObject.TouchEvent)) {\n return;\n }\n\n const clientY = event.targetTouches[0].clientY;\n this.touchStartY = clientY;\n };\n\n private handleTouchMove = (event: Event) => {\n if (!isInstanceOf(event, globalObject.TouchEvent)) {\n return;\n }\n\n const { clientY } = event.changedTouches[0];\n\n const deltaY = (this.touchStartY || 0) - clientY;\n this.touchStartY = clientY;\n\n this.executeAnimations(deltaY);\n };\n\n private throttledHandleTouchMove = throttle(this.handleTouchMove, 10);\n\n private handleWheel = (event: Event) => {\n if (!isInstanceOf(event, globalObject.WheelEvent)) {\n return;\n }\n event.preventDefault();\n const { pixelY } = normalizeWheel(event);\n\n this.executeAnimations(pixelY);\n };\n\n private handleWheelEnd = () => {\n if (this.wheelEndTimeout) {\n globalObject.clearTimeout(this.wheelEndTimeout);\n }\n this.wheelEndTimeout = globalObject.setTimeout(this.scrollToNearestWeek, 300);\n };\n private scrollToNearestWeek = () => {\n const { scrollTarget, scrollDirection } = this.state;\n\n const thresholdHeight = themeConfig(this.theme).MONTH_TITLE_OFFSET_HEIGHT + themeConfig(this.theme).DAY_HEIGHT;\n\n if (scrollTarget < thresholdHeight) {\n let targetPosition = 0;\n if (scrollDirection < 0) {\n targetPosition = thresholdHeight;\n }\n\n this.setState({ scrollTarget: targetPosition }, () => {\n const amount = scrollTarget - targetPosition;\n this.animation.animate(amount, (deltaY) => {\n // FIXME: Typescript not resolving setState cb type\n this.setState(CalendarUtils.applyDelta(deltaY, this.theme) as any);\n });\n });\n }\n };\n\n private scrollTo = (pos: number, onEnd?: () => void) => {\n const scrollAmmount = pos - this.state.scrollPosition;\n return this.scrollAmount(scrollAmmount, onEnd);\n };\n\n private scrollAmount = (scrollAmmount: number, onEnd?: () => void) => {\n return this.animation.animate(\n scrollAmmount,\n (deltaY) => {\n this.setState(({ scrollPosition }) => ({\n scrollPosition: scrollPosition + deltaY,\n }));\n },\n onEnd,\n );\n };\n}\n"]}
|
|
@@ -2,7 +2,7 @@ import React from 'react';
|
|
|
2
2
|
import { CommonProps } from '../../internal/CommonWrapper';
|
|
3
3
|
import { Nullable, Range } from '../../typings/utility-types';
|
|
4
4
|
import { MonthViewModel } from './MonthViewModel';
|
|
5
|
-
import {
|
|
5
|
+
import { CalendarDayProps } from './CalendarDay';
|
|
6
6
|
export interface CalendarProps extends CommonProps {
|
|
7
7
|
/**
|
|
8
8
|
* Вызывается при изменении `value`
|
|
@@ -45,20 +45,40 @@ export interface CalendarProps extends CommonProps {
|
|
|
45
45
|
* Позволяет задать начальный год
|
|
46
46
|
*/
|
|
47
47
|
initialYear?: number;
|
|
48
|
+
/**
|
|
49
|
+
* Метод отрисовки дат в календаре
|
|
50
|
+
* @default (props: CalendarDayProps) => <CalendarDay {...props} />
|
|
51
|
+
* @param {CalendarDayProps} props
|
|
52
|
+
*
|
|
53
|
+
* @returns {ReactElement} Элемент, который отрисовывает контент числа месяца.
|
|
54
|
+
*/
|
|
55
|
+
renderDay?: (props: CalendarDayProps) => React.ReactElement;
|
|
56
|
+
/**
|
|
57
|
+
* Вызывается при каждом изменении месяца
|
|
58
|
+
* @param {CalendarMonthChangeInfo} changeInfo - информация о изменении отображаемого месяца, где
|
|
59
|
+
* `month: number` - номер текущего отображаемого месяца от 1 до 12,
|
|
60
|
+
* `year: number` - отображаемый год,
|
|
61
|
+
*/
|
|
62
|
+
onMonthChange?: (changeInfo: CalendarMonthChangeInfo) => void;
|
|
48
63
|
}
|
|
49
64
|
export interface CalendarState {
|
|
50
65
|
scrollPosition: number;
|
|
51
66
|
months: MonthViewModel[];
|
|
52
|
-
today: CalendarDateShape;
|
|
53
67
|
scrollDirection: number;
|
|
54
68
|
scrollTarget: number;
|
|
55
69
|
}
|
|
70
|
+
export interface CalendarMonthChangeInfo {
|
|
71
|
+
month: number;
|
|
72
|
+
year: number;
|
|
73
|
+
}
|
|
56
74
|
export declare const CalendarDataTids: {
|
|
57
75
|
readonly root: "Calendar__root";
|
|
58
76
|
readonly month: "MonthView__month";
|
|
59
77
|
readonly dayCell: "DayCellView__root";
|
|
60
78
|
readonly headerMonth: "MonthView__headerMonth";
|
|
79
|
+
readonly monthSelectMobile: "MonthView__monthSelectMobile";
|
|
61
80
|
readonly headerYear: "MonthView__headerYear";
|
|
81
|
+
readonly yearSelectMobile: "MonthView__yearSelectMobile";
|
|
62
82
|
};
|
|
63
83
|
declare type DefaultProps = Required<Pick<CalendarProps, 'minDate' | 'maxDate' | 'isHoliday'>>;
|
|
64
84
|
/**
|
|
@@ -67,6 +87,7 @@ declare type DefaultProps = Required<Pick<CalendarProps, 'minDate' | 'maxDate' |
|
|
|
67
87
|
export declare class Calendar extends React.Component<CalendarProps, CalendarState> {
|
|
68
88
|
static __KONTUR_REACT_UI__: string;
|
|
69
89
|
static displayName: string;
|
|
90
|
+
static Day: React.MemoExoticComponent<import("../../lib/forwardRefAndName").ReactUIComponentWithRef<HTMLButtonElement, CalendarDayProps> & Record<string, unknown>>;
|
|
70
91
|
private static formatDate;
|
|
71
92
|
static defaultProps: DefaultProps;
|
|
72
93
|
private getProps;
|
|
@@ -78,7 +99,7 @@ export declare class Calendar extends React.Component<CalendarProps, CalendarSta
|
|
|
78
99
|
private touchStartY;
|
|
79
100
|
private setRootNode;
|
|
80
101
|
constructor(props: CalendarProps);
|
|
81
|
-
componentDidUpdate(prevProps: Readonly<CalendarProps>): void;
|
|
102
|
+
componentDidUpdate(prevProps: Readonly<CalendarProps>, prevState: Readonly<CalendarState>): void;
|
|
82
103
|
componentWillUnmount(): void;
|
|
83
104
|
render(): JSX.Element;
|
|
84
105
|
/**
|
|
@@ -86,13 +107,15 @@ export declare class Calendar extends React.Component<CalendarProps, CalendarSta
|
|
|
86
107
|
* @public
|
|
87
108
|
*/
|
|
88
109
|
scrollToMonth: (month: number, year: number) => Promise<void>;
|
|
110
|
+
private handleMonthChange;
|
|
111
|
+
private getViewModel;
|
|
89
112
|
private renderMain;
|
|
90
113
|
private refRoot;
|
|
91
114
|
private renderMonth;
|
|
92
|
-
private
|
|
93
|
-
private handleDateChange;
|
|
115
|
+
private handleDateClick;
|
|
94
116
|
private getDateInNativeFormat;
|
|
95
117
|
private getMonthPositions;
|
|
118
|
+
private getVisibleMonths;
|
|
96
119
|
private handleMonthYearChange;
|
|
97
120
|
private executeAnimations;
|
|
98
121
|
private handleTouchStart;
|
|
@@ -82,10 +82,11 @@ const isHoliday = (day, isWeekend) => {
|
|
|
82
82
|
<Calendar isHoliday={isHoliday} value={date} onValueChange={setDate} />;
|
|
83
83
|
```
|
|
84
84
|
|
|
85
|
-
|
|
86
85
|
Календарю можно задать кастомную высоту с помощью переменной темы `calendarWrapperHeight`
|
|
86
|
+
|
|
87
87
|
- Базовая высота календаря - `330px`
|
|
88
88
|
- Максимальная высота календаря - `450px`
|
|
89
|
+
|
|
89
90
|
```jsx harmony
|
|
90
91
|
import { ThemeContext } from '@skbkontur/react-ui/lib/theming/ThemeContext';
|
|
91
92
|
import { ThemeFactory } from '@skbkontur/react-ui/lib/theming/ThemeFactory';
|
|
@@ -103,6 +104,86 @@ const theme = React.useContext(ThemeContext);
|
|
|
103
104
|
</ThemeContext.Provider>
|
|
104
105
|
```
|
|
105
106
|
|
|
107
|
+
### Кастомный рендер дня
|
|
108
|
+
|
|
109
|
+
Для кастомнизации дней в календаре используется метод `renderDay` и компонент [Calendar.Day](#/Components/Calendar/Calendar.Day)
|
|
110
|
+
|
|
111
|
+
```jsx harmony
|
|
112
|
+
import { Tooltip, Hint, CalendarDay } from '@skbkontur/react-ui';
|
|
113
|
+
|
|
114
|
+
const initialValue = "02.09.2023";
|
|
115
|
+
|
|
116
|
+
const [value, setValue] = React.useState(initialValue);
|
|
117
|
+
|
|
118
|
+
const renderDay = (props) => {
|
|
119
|
+
const [date, month, year] = props.date.split('.').map(Number);
|
|
120
|
+
|
|
121
|
+
if (month == 9 && date > 12 && date < 16) {
|
|
122
|
+
return (
|
|
123
|
+
<Tooltip render={() => "Кастомный день"}>
|
|
124
|
+
<CalendarDay {...props} style={{ background: 'darkgray' }} />
|
|
125
|
+
</Tooltip>
|
|
126
|
+
);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
if (month == 8 && date == 20) {
|
|
130
|
+
return (
|
|
131
|
+
<Hint text={date} pos="right middle">
|
|
132
|
+
<CalendarDay {...props}>
|
|
133
|
+
<b style={{color: 'orange'}}>#</b>
|
|
134
|
+
</CalendarDay>
|
|
135
|
+
</Hint>
|
|
136
|
+
);
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
return <CalendarDay {...props} />
|
|
140
|
+
};
|
|
141
|
+
|
|
142
|
+
<Calendar
|
|
143
|
+
value={value}
|
|
144
|
+
onValueChange={setValue}
|
|
145
|
+
renderDay={renderDay}
|
|
146
|
+
/>;
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
### Календарь с ценами
|
|
150
|
+
|
|
151
|
+
Пример с кастомизацией темы и кастомным рендером дня
|
|
152
|
+
|
|
153
|
+
```jsx harmony
|
|
154
|
+
import { ThemeContext, ThemeFactory, CalendarDay } from '@skbkontur/react-ui';
|
|
155
|
+
|
|
156
|
+
const theme = React.useContext(ThemeContext);
|
|
157
|
+
|
|
158
|
+
function renderDay(props) {
|
|
159
|
+
const [date, month] = props.date.split('.').map(Number);
|
|
160
|
+
const randomDay = date % 6 === 0 || date % 7 === 0 || date % 8 === 0;
|
|
161
|
+
const randomPrice = Math.round((date / month) * 1000);
|
|
162
|
+
|
|
163
|
+
return (
|
|
164
|
+
<CalendarDay {...props}>
|
|
165
|
+
<div style={{ fontSize: theme.calendarCellFontSize }}>{date}</div>
|
|
166
|
+
<div style={{ fontSize: '11px', fontFeatureSettings: 'tnum', fontVariantNumeric: 'tabular-nums' }}>
|
|
167
|
+
{randomDay ? <>{randomPrice} ₽</> : <span style={{ color: theme.tokenTextColorDisabled }}>—</span>}
|
|
168
|
+
</div>
|
|
169
|
+
</CalendarDay>
|
|
170
|
+
);
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
const [value, setValue] = React.useState(null);
|
|
174
|
+
|
|
175
|
+
<ThemeContext.Provider
|
|
176
|
+
value={ThemeFactory.create({
|
|
177
|
+
calendarCellSize: '56px',
|
|
178
|
+
calendarCellLineHeight: '1.5',
|
|
179
|
+
calendarWrapperHeight: '600px',
|
|
180
|
+
calendarCellBorderRadius: '8px'
|
|
181
|
+
}, theme)}
|
|
182
|
+
>
|
|
183
|
+
<Calendar value={value} renderDay={renderDay} onValueChange={setValue} />
|
|
184
|
+
</ThemeContext.Provider>
|
|
185
|
+
```
|
|
186
|
+
|
|
106
187
|
#### Локали по умолчанию
|
|
107
188
|
|
|
108
189
|
```typescript static
|