@mui/x-date-pickers 8.0.0-alpha.1 → 8.0.0-alpha.10
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/AdapterDateFns/AdapterDateFns.d.ts +2 -4
- package/AdapterDateFns/AdapterDateFns.js +49 -47
- package/AdapterDateFnsBase/AdapterDateFnsBase.d.ts +1 -1
- package/AdapterDateFnsJalali/AdapterDateFnsJalali.d.ts +2 -4
- package/AdapterDateFnsJalali/AdapterDateFnsJalali.js +48 -46
- package/{AdapterDateFnsJalaliV3/AdapterDateFnsJalaliV3.d.ts → AdapterDateFnsJalaliV2/AdapterDateFnsJalaliV2.d.ts} +2 -2
- package/{AdapterDateFnsJalaliV3/AdapterDateFnsJalaliV3.js → AdapterDateFnsJalaliV2/AdapterDateFnsJalaliV2.js} +45 -52
- package/AdapterDateFnsJalaliV2/index.d.ts +1 -0
- package/AdapterDateFnsJalaliV2/index.js +1 -0
- package/{AdapterDateFnsJalaliV3 → AdapterDateFnsJalaliV2}/package.json +1 -1
- package/{AdapterDateFnsV3/AdapterDateFnsV3.d.ts → AdapterDateFnsV2/AdapterDateFnsV2.d.ts} +2 -2
- package/{AdapterDateFnsV3/AdapterDateFnsV3.js → AdapterDateFnsV2/AdapterDateFnsV2.js} +46 -54
- package/AdapterDateFnsV2/index.d.ts +1 -0
- package/AdapterDateFnsV2/index.js +1 -0
- package/{AdapterDateFnsV3 → AdapterDateFnsV2}/package.json +1 -1
- package/AdapterDayjs/AdapterDayjs.d.ts +1 -1
- package/AdapterLuxon/AdapterLuxon.d.ts +1 -1
- package/AdapterMoment/AdapterMoment.d.ts +1 -1
- package/AdapterMoment/AdapterMoment.js +10 -0
- package/CHANGELOG.md +1903 -231
- package/DateCalendar/DateCalendar.js +4 -4
- package/DateCalendar/DateCalendar.types.d.ts +2 -1
- package/DateCalendar/DayCalendar.js +2 -0
- package/DateCalendar/PickersFadeTransitionGroup.d.ts +1 -1
- package/DateCalendar/PickersFadeTransitionGroup.js +4 -6
- package/DateCalendar/PickersSlideTransition.d.ts +1 -1
- package/DateCalendar/PickersSlideTransition.js +12 -5
- package/DateCalendar/useCalendarState.d.ts +6 -4
- package/DateField/DateField.js +29 -33
- package/DateField/DateField.types.d.ts +7 -15
- package/DateField/useDateField.d.ts +1 -1
- package/DateField/useDateField.js +14 -11
- package/DatePicker/DatePicker.js +1 -1
- package/DatePicker/DatePicker.types.d.ts +7 -3
- package/DatePicker/DatePickerToolbar.d.ts +1 -2
- package/DatePicker/DatePickerToolbar.js +17 -33
- package/DatePicker/shared.d.ts +6 -5
- package/DateTimeField/DateTimeField.js +29 -33
- package/DateTimeField/DateTimeField.types.d.ts +7 -16
- package/DateTimeField/useDateTimeField.d.ts +1 -1
- package/DateTimeField/useDateTimeField.js +14 -11
- package/DateTimePicker/DateTimePicker.js +2 -2
- package/DateTimePicker/DateTimePicker.types.d.ts +4 -5
- package/DateTimePicker/DateTimePickerTabs.d.ts +2 -5
- package/DateTimePicker/DateTimePickerTabs.js +15 -20
- package/DateTimePicker/DateTimePickerToolbar.d.ts +16 -5
- package/DateTimePicker/DateTimePickerToolbar.js +88 -80
- package/DateTimePicker/shared.d.ts +8 -8
- package/DayCalendarSkeleton/DayCalendarSkeleton.js +10 -19
- package/DesktopDatePicker/DesktopDatePicker.js +11 -17
- package/DesktopDatePicker/DesktopDatePicker.types.d.ts +7 -3
- package/DesktopDateTimePicker/DesktopDateTimePicker.js +17 -27
- package/DesktopDateTimePicker/DesktopDateTimePicker.types.d.ts +2 -2
- package/DesktopDateTimePicker/DesktopDateTimePickerLayout.d.ts +2 -2
- package/DesktopDateTimePicker/DesktopDateTimePickerLayout.js +9 -34
- package/DesktopTimePicker/DesktopTimePicker.js +6 -22
- package/DesktopTimePicker/DesktopTimePicker.types.d.ts +2 -2
- package/DigitalClock/DigitalClock.js +13 -11
- package/DigitalClock/DigitalClock.types.d.ts +8 -2
- package/MobileDatePicker/MobileDatePicker.js +4 -14
- package/MobileDatePicker/MobileDatePicker.types.d.ts +2 -3
- package/MobileDateTimePicker/MobileDateTimePicker.js +4 -14
- package/MobileDateTimePicker/MobileDateTimePicker.types.d.ts +4 -4
- package/MobileTimePicker/MobileTimePicker.js +4 -14
- package/MobileTimePicker/MobileTimePicker.types.d.ts +4 -4
- package/MonthCalendar/MonthCalendar.d.ts +1 -1
- package/MonthCalendar/MonthCalendar.js +31 -11
- package/MonthCalendar/MonthCalendar.types.d.ts +2 -2
- package/MonthCalendar/MonthCalendarButton.d.ts +24 -0
- package/{modern/MonthCalendar/PickersMonth.js → MonthCalendar/MonthCalendarButton.js} +20 -61
- package/MonthCalendar/index.d.ts +0 -3
- package/MonthCalendar/index.js +1 -2
- package/MonthCalendar/monthCalendarClasses.d.ts +7 -1
- package/MonthCalendar/monthCalendarClasses.js +1 -1
- package/MultiSectionDigitalClock/MultiSectionDigitalClock.js +11 -7
- package/MultiSectionDigitalClock/MultiSectionDigitalClock.types.d.ts +6 -6
- package/MultiSectionDigitalClock/MultiSectionDigitalClockSection.d.ts +4 -4
- package/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +14 -10
- package/PickersActionBar/PickersActionBar.d.ts +6 -7
- package/PickersActionBar/PickersActionBar.js +26 -17
- package/PickersCalendarHeader/PickersCalendarHeader.js +10 -7
- package/PickersCalendarHeader/PickersCalendarHeader.types.d.ts +3 -4
- package/PickersLayout/PickersLayout.d.ts +7 -5
- package/PickersLayout/PickersLayout.js +23 -42
- package/PickersLayout/PickersLayout.types.d.ts +20 -22
- package/PickersLayout/usePickerLayout.d.ts +5 -4
- package/PickersLayout/usePickerLayout.js +26 -53
- package/PickersSectionList/PickersSectionList.js +21 -16
- package/PickersSectionList/PickersSectionList.types.d.ts +13 -6
- package/PickersShortcuts/PickersShortcuts.d.ts +9 -11
- package/PickersShortcuts/PickersShortcuts.js +21 -11
- package/PickersShortcuts/index.d.ts +1 -1
- package/PickersTextField/PickersFilledInput/PickersFilledInput.d.ts +7 -0
- package/PickersTextField/PickersFilledInput/PickersFilledInput.js +34 -28
- package/PickersTextField/PickersFilledInput/pickersFilledInputClasses.d.ts +1 -1
- package/PickersTextField/PickersInput/PickersInput.js +20 -14
- package/PickersTextField/PickersInput/pickersInputClasses.d.ts +3 -2
- package/PickersTextField/PickersInput/pickersInputClasses.js +1 -1
- package/PickersTextField/PickersInputBase/PickersInputBase.d.ts +3 -6
- package/PickersTextField/PickersInputBase/PickersInputBase.js +43 -37
- package/PickersTextField/PickersInputBase/PickersInputBase.types.d.ts +1 -0
- package/PickersTextField/PickersOutlinedInput/Outline.d.ts +0 -1
- package/PickersTextField/PickersOutlinedInput/Outline.js +13 -10
- package/PickersTextField/PickersOutlinedInput/PickersOutlinedInput.js +8 -14
- package/PickersTextField/PickersTextField.js +75 -62
- package/PickersTextField/PickersTextField.types.d.ts +43 -4
- package/PickersTextField/usePickerTextFieldOwnerState.d.ts +4 -0
- package/PickersTextField/usePickerTextFieldOwnerState.js +11 -0
- package/README.md +8 -5
- package/StaticDatePicker/StaticDatePicker.js +2 -2
- package/StaticDatePicker/StaticDatePicker.types.d.ts +2 -3
- package/StaticDateTimePicker/StaticDateTimePicker.js +2 -2
- package/StaticDateTimePicker/StaticDateTimePicker.types.d.ts +2 -2
- package/StaticTimePicker/StaticTimePicker.js +2 -2
- package/StaticTimePicker/StaticTimePicker.types.d.ts +2 -2
- package/TimeClock/Clock.d.ts +4 -0
- package/TimeClock/Clock.js +27 -27
- package/TimeClock/ClockNumber.js +15 -11
- package/TimeClock/ClockPointer.d.ts +6 -1
- package/TimeClock/ClockPointer.js +16 -10
- package/TimeClock/TimeClock.js +30 -12
- package/TimeField/TimeField.js +28 -32
- package/TimeField/TimeField.types.d.ts +7 -16
- package/TimeField/useTimeField.d.ts +1 -1
- package/TimeField/useTimeField.js +14 -11
- package/TimePicker/TimePicker.js +2 -2
- package/TimePicker/TimePicker.types.d.ts +4 -5
- package/TimePicker/TimePickerToolbar.d.ts +1 -3
- package/TimePicker/TimePickerToolbar.js +36 -51
- package/TimePicker/shared.d.ts +6 -6
- package/YearCalendar/YearCalendar.js +46 -13
- package/YearCalendar/YearCalendar.types.d.ts +2 -2
- package/YearCalendar/YearCalendarButton.d.ts +23 -0
- package/{modern/YearCalendar/PickersYear.js → YearCalendar/YearCalendarButton.js} +20 -59
- package/YearCalendar/index.d.ts +0 -3
- package/YearCalendar/index.js +1 -2
- package/YearCalendar/yearCalendarClasses.d.ts +7 -1
- package/YearCalendar/yearCalendarClasses.js +1 -1
- package/hooks/index.d.ts +2 -0
- package/hooks/index.js +3 -1
- package/hooks/useClearableField.d.ts +5 -3
- package/hooks/useClearableField.js +4 -2
- package/hooks/useIsValidValue.d.ts +7 -0
- package/hooks/useIsValidValue.js +11 -0
- package/hooks/useParsedFormat.d.ts +9 -7
- package/hooks/useParsedFormat.js +11 -13
- package/hooks/usePickerActionsContext.d.ts +7 -0
- package/hooks/usePickerActionsContext.js +15 -0
- package/hooks/usePickerContext.d.ts +5 -1
- package/hooks/usePickerContext.js +2 -2
- package/hooks/useSplitFieldProps.d.ts +12 -3
- package/hooks/useSplitFieldProps.js +8 -3
- package/index.d.ts +1 -0
- package/index.js +3 -2
- package/internals/components/PickerFieldUI.d.ts +133 -0
- package/internals/components/PickerFieldUI.js +317 -0
- package/internals/components/{PickersPopper.d.ts → PickerPopper/PickerPopper.d.ts} +26 -25
- package/{modern/internals/components/PickersPopper.js → internals/components/PickerPopper/PickerPopper.js} +47 -47
- package/internals/components/PickerPopper/index.d.ts +4 -0
- package/internals/components/PickerPopper/index.js +2 -0
- package/internals/components/PickerPopper/pickerPopperClasses.d.ts +9 -0
- package/internals/components/PickerPopper/pickerPopperClasses.js +6 -0
- package/internals/components/PickerProvider.d.ts +86 -32
- package/internals/components/PickerProvider.js +25 -7
- package/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +12 -11
- package/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.types.d.ts +11 -8
- package/internals/components/PickersModalDialog.d.ts +1 -3
- package/internals/components/PickersModalDialog.js +9 -3
- package/internals/components/PickersToolbar.d.ts +2 -3
- package/internals/components/PickersToolbar.js +15 -12
- package/internals/components/PickersToolbarButton.js +4 -6
- package/internals/components/PickersToolbarText.js +11 -13
- package/internals/hooks/date-helpers-hooks.js +4 -3
- package/internals/hooks/useClockReferenceDate.d.ts +2 -1
- package/internals/hooks/useDesktopPicker/useDesktopPicker.d.ts +1 -1
- package/internals/hooks/useDesktopPicker/useDesktopPicker.js +35 -120
- package/internals/hooks/useDesktopPicker/useDesktopPicker.types.d.ts +16 -38
- package/internals/hooks/useField/buildSectionsFromFormat.js +1 -1
- package/internals/hooks/useField/index.d.ts +2 -0
- package/internals/hooks/useField/index.js +2 -1
- package/internals/hooks/useField/useField.d.ts +3 -3
- package/internals/hooks/useField/useField.js +17 -4
- package/internals/hooks/useField/useField.types.d.ts +55 -48
- package/internals/hooks/useField/useField.utils.d.ts +4 -3
- package/internals/hooks/useField/useField.utils.js +2 -2
- package/internals/hooks/useField/useFieldCharacterEditing.d.ts +6 -5
- package/internals/hooks/useField/useFieldInternalPropsWithDefaults.d.ts +15 -0
- package/internals/hooks/useField/useFieldInternalPropsWithDefaults.js +47 -0
- package/internals/hooks/useField/useFieldState.d.ts +9 -8
- package/internals/hooks/useField/useFieldState.js +2 -3
- package/internals/hooks/useField/useFieldV6TextField.d.ts +4 -3
- package/internals/hooks/useField/useFieldV6TextField.js +5 -2
- package/internals/hooks/useField/useFieldV7TextField.js +6 -3
- package/internals/hooks/useFieldOwnerState.d.ts +6 -0
- package/internals/hooks/useFieldOwnerState.js +16 -0
- package/internals/hooks/useMobilePicker/useMobilePicker.d.ts +1 -1
- package/internals/hooks/useMobilePicker/useMobilePicker.js +34 -68
- package/internals/hooks/useMobilePicker/useMobilePicker.types.d.ts +15 -22
- package/internals/hooks/useNullablePickerContext.d.ts +5 -0
- package/internals/hooks/useNullablePickerContext.js +10 -0
- package/internals/hooks/useOpenState.d.ts +3 -2
- package/internals/hooks/useOpenState.js +11 -9
- package/internals/hooks/usePicker/index.d.ts +1 -1
- package/internals/hooks/usePicker/usePicker.d.ts +3 -4
- package/internals/hooks/usePicker/usePicker.js +4 -20
- package/internals/hooks/usePicker/usePicker.types.d.ts +10 -10
- package/internals/hooks/usePicker/usePickerProvider.d.ts +45 -10
- package/internals/hooks/usePicker/usePickerProvider.js +50 -16
- package/internals/hooks/usePicker/usePickerValue.d.ts +3 -2
- package/internals/hooks/usePicker/usePickerValue.js +84 -214
- package/internals/hooks/usePicker/usePickerValue.types.d.ts +130 -75
- package/internals/hooks/usePicker/usePickerViews.d.ts +59 -41
- package/internals/hooks/usePicker/usePickerViews.js +31 -20
- package/internals/hooks/useReduceAnimations.d.ts +2 -0
- package/internals/hooks/{useDefaultReduceAnimations.js → useReduceAnimations.js} +5 -2
- package/internals/hooks/useStaticPicker/useStaticPicker.d.ts +1 -1
- package/internals/hooks/useStaticPicker/useStaticPicker.js +7 -12
- package/internals/hooks/useStaticPicker/useStaticPicker.types.d.ts +7 -13
- package/internals/hooks/useToolbarOwnerState.d.ts +10 -0
- package/internals/hooks/useToolbarOwnerState.js +13 -0
- package/internals/hooks/useUtils.d.ts +4 -3
- package/internals/hooks/useUtils.js +1 -1
- package/internals/hooks/useValueWithTimezone.d.ts +5 -4
- package/internals/hooks/useViews.d.ts +5 -5
- package/internals/index.d.ts +27 -18
- package/internals/index.js +13 -8
- package/internals/models/common.d.ts +1 -1
- package/internals/models/fields.d.ts +8 -24
- package/internals/models/index.d.ts +1 -0
- package/internals/models/index.js +2 -1
- package/internals/models/manager.d.ts +15 -0
- package/internals/models/manager.js +1 -0
- package/internals/models/pickers.d.ts +1 -0
- package/internals/models/pickers.js +1 -0
- package/internals/models/props/basePickerProps.d.ts +3 -33
- package/internals/models/props/tabs.d.ts +0 -13
- package/internals/models/props/time.d.ts +2 -1
- package/internals/models/props/toolbar.d.ts +1 -19
- package/internals/models/value.d.ts +9 -0
- package/internals/utils/date-utils.d.ts +1 -1
- package/internals/utils/date-utils.js +1 -1
- package/internals/utils/utils.d.ts +3 -0
- package/internals/utils/utils.js +11 -1
- package/internals/utils/valueManagers.d.ts +4 -3
- package/internals/utils/valueManagers.js +4 -4
- package/locales/index.d.ts +1 -0
- package/locales/index.js +1 -0
- package/locales/nbNO.js +15 -19
- package/locales/nlNL.js +7 -7
- package/locales/roRO.js +15 -18
- package/locales/utils/getPickersLocalization.d.ts +0 -7
- package/locales/utils/getPickersLocalization.js +0 -13
- package/locales/zhTW.d.ts +80 -0
- package/locales/zhTW.js +73 -0
- package/managers/index.d.ts +6 -0
- package/managers/index.js +3 -0
- package/managers/package.json +6 -0
- package/managers/useDateManager.d.ts +27 -0
- package/managers/useDateManager.js +55 -0
- package/managers/useDateTimeManager.d.ts +28 -0
- package/managers/useDateTimeManager.js +60 -0
- package/managers/useTimeManager.d.ts +28 -0
- package/managers/useTimeManager.js +51 -0
- package/models/adapters.d.ts +5 -5
- package/models/fields.d.ts +33 -9
- package/models/index.d.ts +1 -0
- package/models/index.js +1 -0
- package/models/manager.d.ts +87 -0
- package/models/manager.js +1 -0
- package/models/pickers.d.ts +7 -0
- package/models/validation.d.ts +2 -1
- package/modern/AdapterDateFns/AdapterDateFns.js +49 -47
- package/modern/AdapterDateFnsJalali/AdapterDateFnsJalali.js +48 -46
- package/modern/{AdapterDateFnsJalaliV3/AdapterDateFnsJalaliV3.js → AdapterDateFnsJalaliV2/AdapterDateFnsJalaliV2.js} +45 -52
- package/modern/AdapterDateFnsJalaliV2/index.js +1 -0
- package/modern/{AdapterDateFnsV3/AdapterDateFnsV3.js → AdapterDateFnsV2/AdapterDateFnsV2.js} +46 -54
- package/modern/AdapterDateFnsV2/index.js +1 -0
- package/modern/AdapterMoment/AdapterMoment.js +10 -0
- package/modern/DateCalendar/DateCalendar.js +4 -4
- package/modern/DateCalendar/DayCalendar.js +2 -0
- package/modern/DateCalendar/PickersFadeTransitionGroup.js +4 -6
- package/modern/DateCalendar/PickersSlideTransition.js +12 -5
- package/modern/DateField/DateField.js +29 -33
- package/modern/DateField/useDateField.js +14 -11
- package/modern/DatePicker/DatePicker.js +1 -1
- package/modern/DatePicker/DatePickerToolbar.js +17 -33
- package/modern/DateTimeField/DateTimeField.js +29 -33
- package/modern/DateTimeField/useDateTimeField.js +14 -11
- package/modern/DateTimePicker/DateTimePicker.js +2 -2
- package/modern/DateTimePicker/DateTimePickerTabs.js +15 -20
- package/modern/DateTimePicker/DateTimePickerToolbar.js +88 -80
- package/modern/DayCalendarSkeleton/DayCalendarSkeleton.js +10 -19
- package/modern/DesktopDatePicker/DesktopDatePicker.js +11 -17
- package/modern/DesktopDateTimePicker/DesktopDateTimePicker.js +17 -27
- package/modern/DesktopDateTimePicker/DesktopDateTimePickerLayout.js +9 -34
- package/modern/DesktopTimePicker/DesktopTimePicker.js +6 -22
- package/modern/DigitalClock/DigitalClock.js +13 -11
- package/modern/MobileDatePicker/MobileDatePicker.js +4 -14
- package/modern/MobileDateTimePicker/MobileDateTimePicker.js +4 -14
- package/modern/MobileTimePicker/MobileTimePicker.js +4 -14
- package/modern/MonthCalendar/MonthCalendar.js +31 -11
- package/{MonthCalendar/PickersMonth.js → modern/MonthCalendar/MonthCalendarButton.js} +20 -61
- package/modern/MonthCalendar/index.js +1 -2
- package/modern/MonthCalendar/monthCalendarClasses.js +1 -1
- package/modern/MultiSectionDigitalClock/MultiSectionDigitalClock.js +11 -7
- package/modern/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +14 -10
- package/modern/PickersActionBar/PickersActionBar.js +26 -17
- package/modern/PickersCalendarHeader/PickersCalendarHeader.js +10 -7
- package/modern/PickersLayout/PickersLayout.js +23 -42
- package/modern/PickersLayout/usePickerLayout.js +26 -53
- package/modern/PickersSectionList/PickersSectionList.js +21 -16
- package/modern/PickersShortcuts/PickersShortcuts.js +21 -11
- package/modern/PickersTextField/PickersFilledInput/PickersFilledInput.js +34 -28
- package/modern/PickersTextField/PickersInput/PickersInput.js +20 -14
- package/modern/PickersTextField/PickersInput/pickersInputClasses.js +1 -1
- package/modern/PickersTextField/PickersInputBase/PickersInputBase.js +43 -37
- package/modern/PickersTextField/PickersOutlinedInput/Outline.js +13 -10
- package/modern/PickersTextField/PickersOutlinedInput/PickersOutlinedInput.js +8 -14
- package/modern/PickersTextField/PickersTextField.js +75 -62
- package/modern/PickersTextField/usePickerTextFieldOwnerState.js +11 -0
- package/modern/StaticDatePicker/StaticDatePicker.js +2 -2
- package/modern/StaticDateTimePicker/StaticDateTimePicker.js +2 -2
- package/modern/StaticTimePicker/StaticTimePicker.js +2 -2
- package/modern/TimeClock/Clock.js +27 -27
- package/modern/TimeClock/ClockNumber.js +15 -11
- package/modern/TimeClock/ClockPointer.js +16 -10
- package/modern/TimeClock/TimeClock.js +30 -12
- package/modern/TimeField/TimeField.js +28 -32
- package/modern/TimeField/useTimeField.js +14 -11
- package/modern/TimePicker/TimePicker.js +2 -2
- package/modern/TimePicker/TimePickerToolbar.js +36 -51
- package/modern/YearCalendar/YearCalendar.js +46 -13
- package/{YearCalendar/PickersYear.js → modern/YearCalendar/YearCalendarButton.js} +20 -59
- package/modern/YearCalendar/index.js +1 -2
- package/modern/YearCalendar/yearCalendarClasses.js +1 -1
- package/modern/hooks/index.js +3 -1
- package/modern/hooks/useClearableField.js +4 -2
- package/modern/hooks/useIsValidValue.js +11 -0
- package/modern/hooks/useParsedFormat.js +11 -13
- package/modern/hooks/usePickerActionsContext.js +15 -0
- package/modern/hooks/usePickerContext.js +2 -2
- package/modern/hooks/useSplitFieldProps.js +8 -3
- package/modern/index.js +3 -2
- package/modern/internals/components/PickerFieldUI.js +317 -0
- package/{internals/components/PickersPopper.js → modern/internals/components/PickerPopper/PickerPopper.js} +47 -47
- package/modern/internals/components/PickerPopper/index.js +2 -0
- package/modern/internals/components/PickerPopper/pickerPopperClasses.js +6 -0
- package/modern/internals/components/PickerProvider.js +25 -7
- package/modern/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +12 -11
- package/modern/internals/components/PickersModalDialog.js +9 -3
- package/modern/internals/components/PickersToolbar.js +15 -12
- package/modern/internals/components/PickersToolbarButton.js +4 -6
- package/modern/internals/components/PickersToolbarText.js +11 -13
- package/modern/internals/hooks/date-helpers-hooks.js +4 -3
- package/modern/internals/hooks/useDesktopPicker/useDesktopPicker.js +35 -120
- package/modern/internals/hooks/useField/buildSectionsFromFormat.js +1 -1
- package/modern/internals/hooks/useField/index.js +2 -1
- package/modern/internals/hooks/useField/useField.js +17 -4
- package/modern/internals/hooks/useField/useField.utils.js +2 -2
- package/modern/internals/hooks/useField/useFieldInternalPropsWithDefaults.js +47 -0
- package/modern/internals/hooks/useField/useFieldState.js +2 -3
- package/modern/internals/hooks/useField/useFieldV6TextField.js +5 -2
- package/modern/internals/hooks/useField/useFieldV7TextField.js +6 -3
- package/modern/internals/hooks/useFieldOwnerState.js +16 -0
- package/modern/internals/hooks/useMobilePicker/useMobilePicker.js +34 -68
- package/modern/internals/hooks/useNullablePickerContext.js +10 -0
- package/modern/internals/hooks/useOpenState.js +11 -9
- package/modern/internals/hooks/usePicker/usePicker.js +4 -20
- package/modern/internals/hooks/usePicker/usePickerProvider.js +50 -16
- package/modern/internals/hooks/usePicker/usePickerValue.js +84 -214
- package/modern/internals/hooks/usePicker/usePickerViews.js +31 -20
- package/modern/internals/hooks/{useDefaultReduceAnimations.js → useReduceAnimations.js} +5 -2
- package/modern/internals/hooks/useStaticPicker/useStaticPicker.js +7 -12
- package/modern/internals/hooks/useToolbarOwnerState.js +13 -0
- package/modern/internals/hooks/useUtils.js +1 -1
- package/modern/internals/index.js +13 -8
- package/modern/internals/models/index.js +2 -1
- package/modern/internals/models/manager.js +1 -0
- package/modern/internals/models/pickers.js +1 -0
- package/modern/internals/utils/date-utils.js +1 -1
- package/modern/internals/utils/utils.js +11 -1
- package/modern/internals/utils/valueManagers.js +4 -4
- package/modern/locales/index.js +1 -0
- package/modern/locales/nbNO.js +15 -19
- package/modern/locales/nlNL.js +7 -7
- package/modern/locales/roRO.js +15 -18
- package/modern/locales/utils/getPickersLocalization.js +0 -13
- package/modern/locales/zhTW.js +73 -0
- package/modern/managers/index.js +3 -0
- package/modern/managers/useDateManager.js +55 -0
- package/modern/managers/useDateTimeManager.js +60 -0
- package/modern/managers/useTimeManager.js +51 -0
- package/modern/models/index.js +1 -0
- package/modern/models/manager.js +1 -0
- package/modern/validation/useValidation.js +1 -1
- package/modern/validation/validateDate.js +8 -0
- package/modern/validation/validateDateTime.js +8 -0
- package/modern/validation/validateTime.js +8 -0
- package/node/AdapterDateFns/AdapterDateFns.js +97 -97
- package/node/AdapterDateFnsJalali/AdapterDateFnsJalali.js +97 -96
- package/node/{AdapterDateFnsJalaliV3/AdapterDateFnsJalaliV3.js → AdapterDateFnsJalaliV2/AdapterDateFnsJalaliV2.js} +94 -101
- package/node/{AdapterDateFnsJalaliV3 → AdapterDateFnsJalaliV2}/index.js +1 -1
- package/node/AdapterDateFnsV2/AdapterDateFnsV2.js +291 -0
- package/node/{AdapterDateFnsV3 → AdapterDateFnsV2}/index.js +1 -1
- package/node/AdapterMoment/AdapterMoment.js +10 -0
- package/node/DateCalendar/DateCalendar.js +4 -4
- package/node/DateCalendar/DayCalendar.js +1 -0
- package/node/DateCalendar/PickersFadeTransitionGroup.js +4 -6
- package/node/DateCalendar/PickersSlideTransition.js +12 -5
- package/node/DateField/DateField.js +29 -33
- package/node/DateField/useDateField.js +13 -10
- package/node/DatePicker/DatePicker.js +1 -1
- package/node/DatePicker/DatePickerToolbar.js +17 -33
- package/node/DateTimeField/DateTimeField.js +29 -33
- package/node/DateTimeField/useDateTimeField.js +13 -10
- package/node/DateTimePicker/DateTimePicker.js +2 -2
- package/node/DateTimePicker/DateTimePickerTabs.js +15 -20
- package/node/DateTimePicker/DateTimePickerToolbar.js +89 -80
- package/node/DayCalendarSkeleton/DayCalendarSkeleton.js +10 -19
- package/node/DesktopDatePicker/DesktopDatePicker.js +11 -17
- package/node/DesktopDateTimePicker/DesktopDateTimePicker.js +17 -27
- package/node/DesktopDateTimePicker/DesktopDateTimePickerLayout.js +10 -35
- package/node/DesktopTimePicker/DesktopTimePicker.js +6 -22
- package/node/DigitalClock/DigitalClock.js +13 -11
- package/node/MobileDatePicker/MobileDatePicker.js +4 -14
- package/node/MobileDateTimePicker/MobileDateTimePicker.js +4 -14
- package/node/MobileTimePicker/MobileTimePicker.js +4 -14
- package/node/MonthCalendar/MonthCalendar.js +31 -11
- package/node/MonthCalendar/{PickersMonth.js → MonthCalendarButton.js} +20 -61
- package/node/MonthCalendar/index.js +1 -8
- package/node/MonthCalendar/monthCalendarClasses.js +1 -1
- package/node/MultiSectionDigitalClock/MultiSectionDigitalClock.js +11 -7
- package/node/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +13 -10
- package/node/PickersActionBar/PickersActionBar.js +28 -19
- package/node/PickersCalendarHeader/PickersCalendarHeader.js +10 -7
- package/node/PickersLayout/PickersLayout.js +23 -42
- package/node/PickersLayout/usePickerLayout.js +30 -57
- package/node/PickersSectionList/PickersSectionList.js +21 -16
- package/node/PickersShortcuts/PickersShortcuts.js +21 -11
- package/node/PickersTextField/PickersFilledInput/PickersFilledInput.js +34 -28
- package/node/PickersTextField/PickersInput/PickersInput.js +20 -14
- package/node/PickersTextField/PickersInput/pickersInputClasses.js +1 -1
- package/node/PickersTextField/PickersInputBase/PickersInputBase.js +43 -37
- package/node/PickersTextField/PickersOutlinedInput/Outline.js +13 -10
- package/node/PickersTextField/PickersOutlinedInput/PickersOutlinedInput.js +8 -14
- package/node/PickersTextField/PickersTextField.js +75 -62
- package/node/PickersTextField/usePickerTextFieldOwnerState.js +18 -0
- package/node/StaticDatePicker/StaticDatePicker.js +2 -2
- package/node/StaticDateTimePicker/StaticDateTimePicker.js +2 -2
- package/node/StaticTimePicker/StaticTimePicker.js +2 -2
- package/node/TimeClock/Clock.js +27 -27
- package/node/TimeClock/ClockNumber.js +15 -11
- package/node/TimeClock/ClockPointer.js +15 -10
- package/node/TimeClock/TimeClock.js +30 -12
- package/node/TimeField/TimeField.js +28 -32
- package/node/TimeField/useTimeField.js +13 -10
- package/node/TimePicker/TimePicker.js +2 -2
- package/node/TimePicker/TimePickerToolbar.js +36 -51
- package/node/YearCalendar/YearCalendar.js +45 -12
- package/node/YearCalendar/{PickersYear.js → YearCalendarButton.js} +20 -59
- package/node/YearCalendar/index.js +1 -8
- package/node/YearCalendar/yearCalendarClasses.js +1 -1
- package/node/hooks/index.js +15 -1
- package/node/hooks/useClearableField.js +4 -2
- package/node/hooks/useIsValidValue.js +18 -0
- package/node/hooks/useParsedFormat.js +11 -13
- package/node/hooks/usePickerActionsContext.js +22 -0
- package/node/hooks/usePickerContext.js +5 -4
- package/node/hooks/useSplitFieldProps.js +7 -2
- package/node/index.js +13 -1
- package/node/internals/components/PickerFieldUI.js +329 -0
- package/node/internals/components/{PickersPopper.js → PickerPopper/PickerPopper.js} +48 -48
- package/node/internals/components/PickerPopper/index.js +25 -0
- package/node/internals/components/PickerPopper/pickerPopperClasses.js +14 -0
- package/node/internals/components/PickerProvider.js +27 -9
- package/node/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +12 -11
- package/node/internals/components/PickersModalDialog.js +9 -3
- package/node/internals/components/PickersToolbar.js +15 -12
- package/node/internals/components/PickersToolbarButton.js +4 -6
- package/node/internals/components/PickersToolbarText.js +10 -12
- package/node/internals/hooks/date-helpers-hooks.js +4 -3
- package/node/internals/hooks/useDesktopPicker/useDesktopPicker.js +37 -122
- package/node/internals/hooks/useField/buildSectionsFromFormat.js +1 -1
- package/node/internals/hooks/useField/index.js +8 -1
- package/node/internals/hooks/useField/useField.js +16 -3
- package/node/internals/hooks/useField/useField.utils.js +2 -2
- package/node/internals/hooks/useField/useFieldInternalPropsWithDefaults.js +56 -0
- package/node/internals/hooks/useField/useFieldState.js +2 -3
- package/node/internals/hooks/useField/useFieldV6TextField.js +5 -2
- package/node/internals/hooks/useField/useFieldV7TextField.js +6 -3
- package/node/internals/hooks/useFieldOwnerState.js +24 -0
- package/node/internals/hooks/useMobilePicker/useMobilePicker.js +35 -69
- package/node/internals/hooks/useNullablePickerContext.js +16 -0
- package/node/internals/hooks/useOpenState.js +12 -9
- package/node/internals/hooks/usePicker/usePicker.js +4 -20
- package/node/internals/hooks/usePicker/usePickerProvider.js +51 -17
- package/node/internals/hooks/usePicker/usePickerValue.js +84 -213
- package/node/internals/hooks/usePicker/usePickerViews.js +31 -21
- package/node/internals/hooks/{useDefaultReduceAnimations.js → useReduceAnimations.js} +7 -4
- package/node/internals/hooks/useStaticPicker/useStaticPicker.js +7 -12
- package/node/internals/hooks/useToolbarOwnerState.js +21 -0
- package/node/internals/hooks/useUtils.js +1 -1
- package/node/internals/index.js +87 -34
- package/node/internals/models/index.js +11 -0
- package/node/internals/models/manager.js +5 -0
- package/node/internals/models/pickers.js +5 -0
- package/node/internals/utils/date-utils.js +1 -1
- package/node/internals/utils/utils.js +14 -2
- package/node/internals/utils/valueManagers.js +4 -4
- package/node/locales/index.js +11 -0
- package/node/locales/nbNO.js +15 -19
- package/node/locales/nlNL.js +7 -7
- package/node/locales/roRO.js +15 -18
- package/node/locales/utils/getPickersLocalization.js +2 -16
- package/node/locales/zhTW.js +79 -0
- package/node/managers/index.js +26 -0
- package/node/managers/useDateManager.js +63 -0
- package/node/managers/useDateTimeManager.js +68 -0
- package/node/managers/useTimeManager.js +59 -0
- package/node/models/index.js +11 -0
- package/node/models/manager.js +5 -0
- package/node/validation/useValidation.js +1 -1
- package/node/validation/validateDate.js +8 -0
- package/node/validation/validateDateTime.js +8 -0
- package/node/validation/validateTime.js +8 -0
- package/package.json +5 -5
- package/themeAugmentation/components.d.ts +3 -11
- package/themeAugmentation/overrides.d.ts +5 -7
- package/themeAugmentation/props.d.ts +7 -9
- package/validation/extractValidationProps.d.ts +1 -1
- package/validation/useValidation.d.ts +7 -6
- package/validation/useValidation.js +1 -1
- package/validation/validateDate.d.ts +12 -3
- package/validation/validateDate.js +8 -0
- package/validation/validateDateTime.d.ts +12 -4
- package/validation/validateDateTime.js +8 -0
- package/validation/validateTime.d.ts +12 -3
- package/validation/validateTime.js +8 -0
- package/AdapterDateFnsJalaliV3/index.d.ts +0 -1
- package/AdapterDateFnsJalaliV3/index.js +0 -1
- package/AdapterDateFnsV3/index.d.ts +0 -1
- package/AdapterDateFnsV3/index.js +0 -1
- package/MonthCalendar/PickersMonth.d.ts +0 -28
- package/MonthCalendar/pickersMonthClasses.d.ts +0 -13
- package/MonthCalendar/pickersMonthClasses.js +0 -5
- package/YearCalendar/PickersYear.d.ts +0 -27
- package/YearCalendar/pickersYearClasses.d.ts +0 -13
- package/YearCalendar/pickersYearClasses.js +0 -5
- package/internals/components/pickersPopperClasses.d.ts +0 -9
- package/internals/components/pickersPopperClasses.js +0 -5
- package/internals/hooks/defaultizedFieldProps.d.ts +0 -18
- package/internals/hooks/defaultizedFieldProps.js +0 -40
- package/internals/hooks/useDefaultReduceAnimations.d.ts +0 -2
- package/internals/hooks/useIsLandscape.d.ts +0 -4
- package/internals/hooks/useIsLandscape.js +0 -35
- package/internals/hooks/usePicker/usePickerLayoutProps.d.ts +0 -32
- package/internals/hooks/usePicker/usePickerLayoutProps.js +0 -31
- package/internals/utils/convertFieldResponseIntoMuiTextFieldProps.d.ts +0 -3
- package/internals/utils/convertFieldResponseIntoMuiTextFieldProps.js +0 -44
- package/modern/AdapterDateFnsJalaliV3/index.js +0 -1
- package/modern/AdapterDateFnsV3/index.js +0 -1
- package/modern/MonthCalendar/pickersMonthClasses.js +0 -5
- package/modern/YearCalendar/pickersYearClasses.js +0 -5
- package/modern/internals/components/pickersPopperClasses.js +0 -5
- package/modern/internals/hooks/defaultizedFieldProps.js +0 -40
- package/modern/internals/hooks/useIsLandscape.js +0 -35
- package/modern/internals/hooks/usePicker/usePickerLayoutProps.js +0 -31
- package/modern/internals/utils/convertFieldResponseIntoMuiTextFieldProps.js +0 -44
- package/node/AdapterDateFnsV3/AdapterDateFnsV3.js +0 -299
- package/node/MonthCalendar/pickersMonthClasses.js +0 -12
- package/node/YearCalendar/pickersYearClasses.js +0 -12
- package/node/internals/components/pickersPopperClasses.js +0 -12
- package/node/internals/hooks/defaultizedFieldProps.js +0 -50
- package/node/internals/hooks/useIsLandscape.js +0 -43
- package/node/internals/hooks/usePicker/usePickerLayoutProps.js +0 -38
- package/node/internals/utils/convertFieldResponseIntoMuiTextFieldProps.js +0 -52
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
import { warnOnce } from '@mui/x-internals/warning';
|
|
2
2
|
import { usePickerValue } from "./usePickerValue.js";
|
|
3
3
|
import { usePickerViews } from "./usePickerViews.js";
|
|
4
|
-
import { usePickerLayoutProps } from "./usePickerLayoutProps.js";
|
|
5
4
|
import { usePickerProvider } from "./usePickerProvider.js";
|
|
6
5
|
export const usePicker = ({
|
|
6
|
+
ref,
|
|
7
7
|
props,
|
|
8
8
|
valueManager,
|
|
9
9
|
valueType,
|
|
10
10
|
variant,
|
|
11
|
-
additionalViewProps,
|
|
12
11
|
validator,
|
|
13
12
|
autoFocusView,
|
|
14
13
|
rendererInterceptor,
|
|
@@ -24,42 +23,27 @@ export const usePicker = ({
|
|
|
24
23
|
props,
|
|
25
24
|
valueManager,
|
|
26
25
|
valueType,
|
|
27
|
-
variant,
|
|
28
26
|
validator
|
|
29
27
|
});
|
|
30
28
|
const pickerViewsResponse = usePickerViews({
|
|
31
29
|
props,
|
|
32
|
-
additionalViewProps,
|
|
33
30
|
autoFocusView,
|
|
34
31
|
fieldRef,
|
|
35
32
|
propsFromPickerValue: pickerValueResponse.viewProps,
|
|
36
33
|
rendererInterceptor
|
|
37
34
|
});
|
|
38
|
-
const pickerLayoutResponse = usePickerLayoutProps({
|
|
39
|
-
props,
|
|
40
|
-
variant,
|
|
41
|
-
propsFromPickerValue: pickerValueResponse.layoutProps,
|
|
42
|
-
propsFromPickerViews: pickerViewsResponse.layoutProps
|
|
43
|
-
});
|
|
44
35
|
const providerProps = usePickerProvider({
|
|
36
|
+
ref,
|
|
45
37
|
props,
|
|
46
|
-
pickerValueResponse,
|
|
47
38
|
localeText,
|
|
48
39
|
valueManager,
|
|
49
40
|
variant,
|
|
50
|
-
|
|
41
|
+
paramsFromUsePickerValue: pickerValueResponse.provider,
|
|
42
|
+
paramsFromUsePickerViews: pickerViewsResponse.provider
|
|
51
43
|
});
|
|
52
44
|
return {
|
|
53
|
-
// Picker value
|
|
54
|
-
open: pickerValueResponse.open,
|
|
55
|
-
actions: pickerValueResponse.actions,
|
|
56
|
-
fieldProps: pickerValueResponse.fieldProps,
|
|
57
45
|
// Picker views
|
|
58
46
|
renderCurrentView: pickerViewsResponse.renderCurrentView,
|
|
59
|
-
hasUIView: pickerViewsResponse.hasUIView,
|
|
60
|
-
shouldRestoreFocus: pickerViewsResponse.shouldRestoreFocus,
|
|
61
|
-
// Picker layout
|
|
62
|
-
layoutProps: pickerLayoutResponse.layoutProps,
|
|
63
47
|
// Picker provider
|
|
64
48
|
providerProps,
|
|
65
49
|
// Picker owner state
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
import { UsePickerValueParams, UsePickerValueProps, UsePickerValueBaseProps
|
|
2
|
-
import { UsePickerViewsProps, UsePickerViewParams,
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { DateOrTimeViewWithMeridiem } from '../../models';
|
|
1
|
+
import { UsePickerValueParams, UsePickerValueProps, UsePickerValueBaseProps } from './usePickerValue.types';
|
|
2
|
+
import { UsePickerViewsProps, UsePickerViewParams, UsePickerViewsBaseProps } from './usePickerViews';
|
|
3
|
+
import { InferError, PickerOwnerState } from '../../../models';
|
|
4
|
+
import { DateOrTimeViewWithMeridiem, PickerValidValue } from '../../models';
|
|
6
5
|
import { UsePickerProviderParameters, UsePickerProviderProps, UsePickerProviderReturnValue } from './usePickerProvider';
|
|
7
6
|
/**
|
|
8
7
|
* Props common to all picker headless implementations.
|
|
9
8
|
*/
|
|
10
|
-
export interface UsePickerBaseProps<TValue, TView extends DateOrTimeViewWithMeridiem, TError, TExternalProps extends UsePickerViewsProps<TValue, TView, any
|
|
9
|
+
export interface UsePickerBaseProps<TValue extends PickerValidValue, TView extends DateOrTimeViewWithMeridiem, TError, TExternalProps extends UsePickerViewsProps<TValue, TView, any>> extends UsePickerValueBaseProps<TValue, TError>, UsePickerViewsBaseProps<TValue, TView, TExternalProps>, UsePickerProviderProps {
|
|
11
10
|
}
|
|
12
|
-
export interface UsePickerProps<TValue, TView extends DateOrTimeViewWithMeridiem, TError, TExternalProps extends UsePickerViewsProps<TValue, TView, any
|
|
11
|
+
export interface UsePickerProps<TValue extends PickerValidValue, TView extends DateOrTimeViewWithMeridiem, TError, TExternalProps extends UsePickerViewsProps<TValue, TView, any>> extends UsePickerValueProps<TValue, TError>, UsePickerViewsProps<TValue, TView, TExternalProps>, UsePickerProviderProps {
|
|
13
12
|
}
|
|
14
|
-
export interface UsePickerParams<TValue
|
|
13
|
+
export interface UsePickerParams<TValue extends PickerValidValue, TView extends DateOrTimeViewWithMeridiem, TExternalProps extends UsePickerProps<TValue, TView, any, any>> extends Pick<UsePickerValueParams<TValue, TExternalProps>, 'valueManager' | 'valueType' | 'validator'>, Pick<UsePickerViewParams<TValue, TView, TExternalProps>, 'autoFocusView' | 'rendererInterceptor' | 'fieldRef'>, Pick<UsePickerProviderParameters<TValue, TView, InferError<TExternalProps>>, 'localeText' | 'variant' | 'ref'> {
|
|
15
14
|
props: TExternalProps;
|
|
16
15
|
}
|
|
17
|
-
export interface
|
|
16
|
+
export interface UsePickerReturnValue<TValue extends PickerValidValue> {
|
|
18
17
|
ownerState: PickerOwnerState;
|
|
19
|
-
|
|
18
|
+
renderCurrentView: () => React.ReactNode;
|
|
19
|
+
providerProps: UsePickerProviderReturnValue<TValue>;
|
|
20
20
|
}
|
|
@@ -1,21 +1,24 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { PickerValueManager,
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { PickerValueManager, UsePickerValueProviderParams } from './usePickerValue.types';
|
|
3
3
|
import { PickerProviderProps } from '../../components/PickerProvider';
|
|
4
4
|
import type { UsePickerProps } from './usePicker.types';
|
|
5
|
-
import { DateOrTimeViewWithMeridiem, FormProps, PickerOrientation, PickerVariant } from '../../models';
|
|
5
|
+
import { DateOrTimeViewWithMeridiem, FormProps, PickerOrientation, PickerValidValue, PickerVariant } from '../../models';
|
|
6
|
+
import { UsePickerViewsProviderParams } from './usePickerViews';
|
|
7
|
+
import { PickerFieldPrivateContextValue } from '../useField/useFieldInternalPropsWithDefaults';
|
|
6
8
|
export declare const usePickerOrientation: (views: readonly DateOrTimeViewWithMeridiem[], customOrientation: PickerOrientation | undefined) => PickerOrientation;
|
|
7
|
-
export declare function usePickerProvider<TValue>(parameters: UsePickerProviderParameters<TValue>): UsePickerProviderReturnValue
|
|
8
|
-
export interface UsePickerProviderParameters<TValue> extends Pick<PickerProviderProps
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
export declare function usePickerProvider<TValue extends PickerValidValue, TView extends DateOrTimeViewWithMeridiem, TError>(parameters: UsePickerProviderParameters<TValue, TView, TError>): UsePickerProviderReturnValue<TValue>;
|
|
10
|
+
export interface UsePickerProviderParameters<TValue extends PickerValidValue, TView extends DateOrTimeViewWithMeridiem, TError> extends Pick<PickerProviderProps<TValue>, 'localeText'> {
|
|
11
|
+
ref: React.ForwardedRef<HTMLDivElement> | undefined;
|
|
12
|
+
props: UsePickerProps<TValue, any, any, any> & UsePickerProviderNonStaticProps;
|
|
11
13
|
valueManager: PickerValueManager<TValue, any>;
|
|
12
14
|
variant: PickerVariant;
|
|
13
|
-
|
|
15
|
+
paramsFromUsePickerValue: UsePickerValueProviderParams<TValue, TError>;
|
|
16
|
+
paramsFromUsePickerViews: UsePickerViewsProviderParams<TView>;
|
|
14
17
|
}
|
|
15
|
-
export interface UsePickerProviderReturnValue extends Omit<PickerProviderProps
|
|
18
|
+
export interface UsePickerProviderReturnValue<TValue extends PickerValidValue> extends Omit<PickerProviderProps<TValue>, 'children'> {
|
|
16
19
|
}
|
|
17
20
|
/**
|
|
18
|
-
* Props used to create the
|
|
21
|
+
* Props used to create the picker's contexts.
|
|
19
22
|
* Those props are exposed on all the pickers.
|
|
20
23
|
*/
|
|
21
24
|
export interface UsePickerProviderProps extends FormProps {
|
|
@@ -23,4 +26,36 @@ export interface UsePickerProviderProps extends FormProps {
|
|
|
23
26
|
* Force rendering in particular orientation.
|
|
24
27
|
*/
|
|
25
28
|
orientation?: PickerOrientation;
|
|
29
|
+
/**
|
|
30
|
+
* If `true`, disable heavy animations.
|
|
31
|
+
* @default `@media(prefers-reduced-motion: reduce)` || `navigator.userAgent` matches Android <10 or iOS <13
|
|
32
|
+
*/
|
|
33
|
+
reduceAnimations?: boolean;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Props used to create the picker's contexts and that are not available on static pickers.
|
|
37
|
+
*/
|
|
38
|
+
export interface UsePickerProviderNonStaticProps extends PickerFieldPrivateContextValue {
|
|
39
|
+
/**
|
|
40
|
+
* Format of the date when rendered in the input(s).
|
|
41
|
+
* Defaults to localized format based on the used `views`.
|
|
42
|
+
*/
|
|
43
|
+
format?: string;
|
|
44
|
+
/**
|
|
45
|
+
* If `true`, the open picker button will not be rendered (renders only the field).
|
|
46
|
+
* @default false
|
|
47
|
+
*/
|
|
48
|
+
disableOpenPicker?: boolean;
|
|
49
|
+
/**
|
|
50
|
+
* The label content.
|
|
51
|
+
*/
|
|
52
|
+
label?: React.ReactNode;
|
|
53
|
+
/**
|
|
54
|
+
* Pass a ref to the `input` element.
|
|
55
|
+
*/
|
|
56
|
+
inputRef?: React.Ref<HTMLInputElement>;
|
|
57
|
+
/**
|
|
58
|
+
* Name attribute used by the `input` element in the Field.
|
|
59
|
+
*/
|
|
60
|
+
name?: string;
|
|
26
61
|
}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
1
2
|
import * as React from 'react';
|
|
2
3
|
import useEnhancedEffect from '@mui/utils/useEnhancedEffect';
|
|
3
4
|
import { useUtils } from "../useUtils.js";
|
|
4
5
|
import { arrayIncludes } from "../../utils/utils.js";
|
|
6
|
+
import { useReduceAnimations } from "../useReduceAnimations.js";
|
|
5
7
|
function getOrientation() {
|
|
6
8
|
if (typeof window === 'undefined') {
|
|
7
9
|
return 'portrait';
|
|
@@ -35,43 +37,75 @@ export const usePickerOrientation = (views, customOrientation) => {
|
|
|
35
37
|
};
|
|
36
38
|
export function usePickerProvider(parameters) {
|
|
37
39
|
const {
|
|
40
|
+
ref,
|
|
38
41
|
props,
|
|
39
|
-
pickerValueResponse,
|
|
40
42
|
valueManager,
|
|
41
43
|
localeText,
|
|
42
44
|
variant,
|
|
43
|
-
|
|
45
|
+
paramsFromUsePickerValue,
|
|
46
|
+
paramsFromUsePickerViews
|
|
44
47
|
} = parameters;
|
|
45
48
|
const utils = useUtils();
|
|
46
|
-
const orientation = usePickerOrientation(views, props.orientation);
|
|
49
|
+
const orientation = usePickerOrientation(paramsFromUsePickerViews.views, props.orientation);
|
|
50
|
+
const reduceAnimations = useReduceAnimations(props.reduceAnimations);
|
|
51
|
+
const triggerRef = React.useRef(null);
|
|
47
52
|
const ownerState = React.useMemo(() => ({
|
|
48
|
-
isPickerValueEmpty: valueManager.areValuesEqual(utils,
|
|
49
|
-
isPickerOpen:
|
|
53
|
+
isPickerValueEmpty: valueManager.areValuesEqual(utils, paramsFromUsePickerValue.value, valueManager.emptyValue),
|
|
54
|
+
isPickerOpen: paramsFromUsePickerValue.contextValue.open,
|
|
50
55
|
isPickerDisabled: props.disabled ?? false,
|
|
51
56
|
isPickerReadOnly: props.readOnly ?? false,
|
|
52
57
|
pickerOrientation: orientation,
|
|
53
58
|
pickerVariant: variant
|
|
54
|
-
}), [utils, valueManager,
|
|
55
|
-
const
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
+
}), [utils, valueManager, paramsFromUsePickerValue.value, paramsFromUsePickerValue.contextValue.open, orientation, variant, props.disabled, props.readOnly]);
|
|
60
|
+
const triggerStatus = React.useMemo(() => {
|
|
61
|
+
if (props.disableOpenPicker || !paramsFromUsePickerViews.hasUIView) {
|
|
62
|
+
return 'hidden';
|
|
63
|
+
}
|
|
64
|
+
if (props.disabled || props.readOnly) {
|
|
65
|
+
return 'disabled';
|
|
66
|
+
}
|
|
67
|
+
return 'enabled';
|
|
68
|
+
}, [props.disableOpenPicker, paramsFromUsePickerViews.hasUIView, props.disabled, props.readOnly]);
|
|
69
|
+
const contextValue = React.useMemo(() => _extends({}, paramsFromUsePickerValue.contextValue, paramsFromUsePickerViews.contextValue, {
|
|
59
70
|
disabled: props.disabled ?? false,
|
|
60
71
|
readOnly: props.readOnly ?? false,
|
|
61
72
|
variant,
|
|
62
|
-
orientation
|
|
63
|
-
|
|
64
|
-
|
|
73
|
+
orientation,
|
|
74
|
+
reduceAnimations,
|
|
75
|
+
triggerRef,
|
|
76
|
+
triggerStatus,
|
|
77
|
+
fieldFormat: props.format ?? '',
|
|
78
|
+
name: props.name,
|
|
79
|
+
label: props.label,
|
|
80
|
+
rootSx: props.sx,
|
|
81
|
+
rootRef: ref,
|
|
82
|
+
rootClassName: props.className
|
|
83
|
+
}), [paramsFromUsePickerValue.contextValue, paramsFromUsePickerViews.contextValue, ref, variant, orientation, reduceAnimations, props.disabled, props.readOnly, props.format, props.className, props.name, props.label, props.sx, triggerRef, triggerStatus]);
|
|
84
|
+
const privateContextValue = React.useMemo(() => _extends({}, paramsFromUsePickerValue.privateContextValue, paramsFromUsePickerViews.privateContextValue, {
|
|
65
85
|
ownerState
|
|
66
|
-
}), [ownerState]);
|
|
86
|
+
}), [paramsFromUsePickerValue.privateContextValue, paramsFromUsePickerViews.privateContextValue, ownerState]);
|
|
87
|
+
const actionsContextValue = React.useMemo(() => _extends({}, paramsFromUsePickerValue.actionsContextValue, paramsFromUsePickerViews.actionsContextValue), [paramsFromUsePickerValue.actionsContextValue, paramsFromUsePickerViews.actionsContextValue]);
|
|
88
|
+
const fieldPrivateContextValue = React.useMemo(() => ({
|
|
89
|
+
formatDensity: props.formatDensity,
|
|
90
|
+
enableAccessibleFieldDOMStructure: props.enableAccessibleFieldDOMStructure,
|
|
91
|
+
selectedSections: props.selectedSections,
|
|
92
|
+
onSelectedSectionsChange: props.onSelectedSectionsChange
|
|
93
|
+
}), [props.formatDensity, props.enableAccessibleFieldDOMStructure, props.selectedSections, props.onSelectedSectionsChange]);
|
|
67
94
|
return {
|
|
68
95
|
localeText,
|
|
69
96
|
contextValue,
|
|
70
|
-
privateContextValue
|
|
97
|
+
privateContextValue,
|
|
98
|
+
actionsContextValue,
|
|
99
|
+
fieldPrivateContextValue,
|
|
100
|
+
isValidContextValue: paramsFromUsePickerValue.isValidContextValue
|
|
71
101
|
};
|
|
72
102
|
}
|
|
73
103
|
|
|
74
104
|
/**
|
|
75
|
-
* Props used to create the
|
|
105
|
+
* Props used to create the picker's contexts.
|
|
76
106
|
* Those props are exposed on all the pickers.
|
|
107
|
+
*/
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Props used to create the picker's contexts and that are not available on static pickers.
|
|
77
111
|
*/
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { InferError } from '../../../models';
|
|
2
2
|
import { UsePickerValueProps, UsePickerValueParams, UsePickerValueResponse } from './usePickerValue.types';
|
|
3
|
+
import { PickerValidValue } from '../../models';
|
|
3
4
|
/**
|
|
4
5
|
* Manage the value lifecycle of all the pickers.
|
|
5
6
|
*/
|
|
6
|
-
export declare const usePickerValue: <TValue
|
|
7
|
+
export declare const usePickerValue: <TValue extends PickerValidValue, TExternalProps extends UsePickerValueProps<TValue, any>>({ props, valueManager, valueType, validator, }: UsePickerValueParams<TValue, TExternalProps>) => UsePickerValueResponse<TValue, InferError<TExternalProps>>;
|
|
@@ -5,107 +5,6 @@ import { useOpenState } from "../useOpenState.js";
|
|
|
5
5
|
import { useLocalizationContext, useUtils } from "../useUtils.js";
|
|
6
6
|
import { useValidation } from "../../../validation/index.js";
|
|
7
7
|
import { useValueWithTimezone } from "../useValueWithTimezone.js";
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* Decide if the new value should be published
|
|
11
|
-
* The published value will be passed to `onChange` if defined.
|
|
12
|
-
*/
|
|
13
|
-
const shouldPublishValue = params => {
|
|
14
|
-
const {
|
|
15
|
-
action,
|
|
16
|
-
hasChanged,
|
|
17
|
-
dateState,
|
|
18
|
-
isControlled
|
|
19
|
-
} = params;
|
|
20
|
-
const isCurrentValueTheDefaultValue = !isControlled && !dateState.hasBeenModifiedSinceMount;
|
|
21
|
-
|
|
22
|
-
// The field is responsible for only calling `onChange` when needed.
|
|
23
|
-
if (action.name === 'setValueFromField') {
|
|
24
|
-
return true;
|
|
25
|
-
}
|
|
26
|
-
if (action.name === 'setValueFromAction') {
|
|
27
|
-
// If the component is not controlled, and the value has not been modified since the mount,
|
|
28
|
-
// Then we want to publish the default value whenever the user pressed the "Accept", "Today" or "Clear" button.
|
|
29
|
-
if (isCurrentValueTheDefaultValue && ['accept', 'today', 'clear'].includes(action.pickerAction)) {
|
|
30
|
-
return true;
|
|
31
|
-
}
|
|
32
|
-
return hasChanged(dateState.lastPublishedValue);
|
|
33
|
-
}
|
|
34
|
-
if (action.name === 'setValueFromView' && action.selectionState !== 'shallow') {
|
|
35
|
-
// On the first view,
|
|
36
|
-
// If the value is not controlled, then clicking on any value (including the one equal to `defaultValue`) should call `onChange`
|
|
37
|
-
if (isCurrentValueTheDefaultValue) {
|
|
38
|
-
return true;
|
|
39
|
-
}
|
|
40
|
-
return hasChanged(dateState.lastPublishedValue);
|
|
41
|
-
}
|
|
42
|
-
if (action.name === 'setValueFromShortcut') {
|
|
43
|
-
// On the first view,
|
|
44
|
-
// If the value is not controlled, then clicking on any value (including the one equal to `defaultValue`) should call `onChange`
|
|
45
|
-
if (isCurrentValueTheDefaultValue) {
|
|
46
|
-
return true;
|
|
47
|
-
}
|
|
48
|
-
return hasChanged(dateState.lastPublishedValue);
|
|
49
|
-
}
|
|
50
|
-
return false;
|
|
51
|
-
};
|
|
52
|
-
|
|
53
|
-
/**
|
|
54
|
-
* Decide if the new value should be committed.
|
|
55
|
-
* The committed value will be passed to `onAccept` if defined.
|
|
56
|
-
* It will also be used as a reset target when calling the `cancel` picker action (when clicking on the "Cancel" button).
|
|
57
|
-
*/
|
|
58
|
-
const shouldCommitValue = params => {
|
|
59
|
-
const {
|
|
60
|
-
action,
|
|
61
|
-
hasChanged,
|
|
62
|
-
dateState,
|
|
63
|
-
isControlled,
|
|
64
|
-
closeOnSelect
|
|
65
|
-
} = params;
|
|
66
|
-
const isCurrentValueTheDefaultValue = !isControlled && !dateState.hasBeenModifiedSinceMount;
|
|
67
|
-
if (action.name === 'setValueFromAction') {
|
|
68
|
-
// If the component is not controlled, and the value has not been modified since the mount,
|
|
69
|
-
// Then we want to commit the default value whenever the user pressed the "Accept", "Today" or "Clear" button.
|
|
70
|
-
if (isCurrentValueTheDefaultValue && ['accept', 'today', 'clear'].includes(action.pickerAction)) {
|
|
71
|
-
return true;
|
|
72
|
-
}
|
|
73
|
-
return hasChanged(dateState.lastCommittedValue);
|
|
74
|
-
}
|
|
75
|
-
if (action.name === 'setValueFromView' && action.selectionState === 'finish' && closeOnSelect) {
|
|
76
|
-
// On picker where the 1st view is also the last view,
|
|
77
|
-
// If the value is not controlled, then clicking on any value (including the one equal to `defaultValue`) should call `onAccept`
|
|
78
|
-
if (isCurrentValueTheDefaultValue) {
|
|
79
|
-
return true;
|
|
80
|
-
}
|
|
81
|
-
return hasChanged(dateState.lastCommittedValue);
|
|
82
|
-
}
|
|
83
|
-
if (action.name === 'setValueFromShortcut') {
|
|
84
|
-
return action.changeImportance === 'accept' && hasChanged(dateState.lastCommittedValue);
|
|
85
|
-
}
|
|
86
|
-
return false;
|
|
87
|
-
};
|
|
88
|
-
|
|
89
|
-
/**
|
|
90
|
-
* Decide if the picker should be closed after the value is updated.
|
|
91
|
-
*/
|
|
92
|
-
const shouldClosePicker = params => {
|
|
93
|
-
const {
|
|
94
|
-
action,
|
|
95
|
-
closeOnSelect
|
|
96
|
-
} = params;
|
|
97
|
-
if (action.name === 'setValueFromAction') {
|
|
98
|
-
return true;
|
|
99
|
-
}
|
|
100
|
-
if (action.name === 'setValueFromView') {
|
|
101
|
-
return action.selectionState === 'finish' && closeOnSelect;
|
|
102
|
-
}
|
|
103
|
-
if (action.name === 'setValueFromShortcut') {
|
|
104
|
-
return action.changeImportance === 'accept';
|
|
105
|
-
}
|
|
106
|
-
return false;
|
|
107
|
-
};
|
|
108
|
-
|
|
109
8
|
/**
|
|
110
9
|
* Manage the value lifecycle of all the pickers.
|
|
111
10
|
*/
|
|
@@ -113,7 +12,6 @@ export const usePickerValue = ({
|
|
|
113
12
|
props,
|
|
114
13
|
valueManager,
|
|
115
14
|
valueType,
|
|
116
|
-
variant,
|
|
117
15
|
validator
|
|
118
16
|
}) => {
|
|
119
17
|
const {
|
|
@@ -121,7 +19,7 @@ export const usePickerValue = ({
|
|
|
121
19
|
onChange,
|
|
122
20
|
value: inValueWithoutRenderTimezone,
|
|
123
21
|
defaultValue: inDefaultValue,
|
|
124
|
-
closeOnSelect =
|
|
22
|
+
closeOnSelect = false,
|
|
125
23
|
timezone: timezoneProp,
|
|
126
24
|
referenceDate
|
|
127
25
|
} = props;
|
|
@@ -151,8 +49,8 @@ export const usePickerValue = ({
|
|
|
151
49
|
const utils = useUtils();
|
|
152
50
|
const adapter = useLocalizationContext();
|
|
153
51
|
const {
|
|
154
|
-
|
|
155
|
-
|
|
52
|
+
open,
|
|
53
|
+
setOpen
|
|
156
54
|
} = useOpenState(props);
|
|
157
55
|
const {
|
|
158
56
|
timezone,
|
|
@@ -201,44 +99,51 @@ export const usePickerValue = ({
|
|
|
201
99
|
value: dateState.draft,
|
|
202
100
|
onError: props.onError
|
|
203
101
|
});
|
|
204
|
-
const
|
|
205
|
-
const
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
};
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
102
|
+
const setValue = useEventCallback((newValue, options) => {
|
|
103
|
+
const {
|
|
104
|
+
changeImportance = 'accept',
|
|
105
|
+
skipPublicationIfPristine = false,
|
|
106
|
+
validationError,
|
|
107
|
+
shortcut,
|
|
108
|
+
shouldClose = changeImportance === 'accept'
|
|
109
|
+
} = options ?? {};
|
|
110
|
+
let shouldPublish;
|
|
111
|
+
let shouldCommit;
|
|
112
|
+
if (!skipPublicationIfPristine && !isControlled && !dateState.hasBeenModifiedSinceMount) {
|
|
113
|
+
// If the value is not controlled and the value has never been modified before,
|
|
114
|
+
// Then clicking on any value (including the one equal to `defaultValue`) should call `onChange` and `onAccept`
|
|
115
|
+
shouldPublish = true;
|
|
116
|
+
shouldCommit = changeImportance === 'accept';
|
|
117
|
+
} else {
|
|
118
|
+
shouldPublish = !valueManager.areValuesEqual(utils, newValue, dateState.lastPublishedValue);
|
|
119
|
+
shouldCommit = changeImportance === 'accept' && !valueManager.areValuesEqual(utils, newValue, dateState.lastCommittedValue);
|
|
120
|
+
}
|
|
215
121
|
setDateState(prev => _extends({}, prev, {
|
|
216
|
-
draft:
|
|
217
|
-
lastPublishedValue: shouldPublish ?
|
|
218
|
-
lastCommittedValue: shouldCommit ?
|
|
122
|
+
draft: newValue,
|
|
123
|
+
lastPublishedValue: shouldPublish ? newValue : prev.lastPublishedValue,
|
|
124
|
+
lastCommittedValue: shouldCommit ? newValue : prev.lastCommittedValue,
|
|
219
125
|
hasBeenModifiedSinceMount: true
|
|
220
126
|
}));
|
|
221
127
|
let cachedContext = null;
|
|
222
128
|
const getContext = () => {
|
|
223
129
|
if (!cachedContext) {
|
|
224
|
-
const validationError = action.name === 'setValueFromField' ? action.context.validationError : getValidationErrorForNewValue(action.value);
|
|
225
130
|
cachedContext = {
|
|
226
|
-
validationError
|
|
131
|
+
validationError: validationError == null ? getValidationErrorForNewValue(newValue) : validationError
|
|
227
132
|
};
|
|
228
|
-
if (
|
|
229
|
-
cachedContext.shortcut =
|
|
133
|
+
if (shortcut) {
|
|
134
|
+
cachedContext.shortcut = shortcut;
|
|
230
135
|
}
|
|
231
136
|
}
|
|
232
137
|
return cachedContext;
|
|
233
138
|
};
|
|
234
139
|
if (shouldPublish) {
|
|
235
|
-
handleValueChange(
|
|
140
|
+
handleValueChange(newValue, getContext());
|
|
236
141
|
}
|
|
237
142
|
if (shouldCommit && onAccept) {
|
|
238
|
-
onAccept(
|
|
143
|
+
onAccept(newValue, getContext());
|
|
239
144
|
}
|
|
240
145
|
if (shouldClose) {
|
|
241
|
-
|
|
146
|
+
setOpen(false);
|
|
242
147
|
}
|
|
243
148
|
});
|
|
244
149
|
if (dateState.lastControlledValue !== inValueWithoutRenderTimezone) {
|
|
@@ -252,85 +157,6 @@ export const usePickerValue = ({
|
|
|
252
157
|
hasBeenModifiedSinceMount: true
|
|
253
158
|
}));
|
|
254
159
|
}
|
|
255
|
-
const handleClear = useEventCallback(() => {
|
|
256
|
-
updateDate({
|
|
257
|
-
value: valueManager.emptyValue,
|
|
258
|
-
name: 'setValueFromAction',
|
|
259
|
-
pickerAction: 'clear'
|
|
260
|
-
});
|
|
261
|
-
});
|
|
262
|
-
const handleAccept = useEventCallback(() => {
|
|
263
|
-
updateDate({
|
|
264
|
-
value: dateState.lastPublishedValue,
|
|
265
|
-
name: 'setValueFromAction',
|
|
266
|
-
pickerAction: 'accept'
|
|
267
|
-
});
|
|
268
|
-
});
|
|
269
|
-
const handleDismiss = useEventCallback(() => {
|
|
270
|
-
updateDate({
|
|
271
|
-
value: dateState.lastPublishedValue,
|
|
272
|
-
name: 'setValueFromAction',
|
|
273
|
-
pickerAction: 'dismiss'
|
|
274
|
-
});
|
|
275
|
-
});
|
|
276
|
-
const handleCancel = useEventCallback(() => {
|
|
277
|
-
updateDate({
|
|
278
|
-
value: dateState.lastCommittedValue,
|
|
279
|
-
name: 'setValueFromAction',
|
|
280
|
-
pickerAction: 'cancel'
|
|
281
|
-
});
|
|
282
|
-
});
|
|
283
|
-
const handleSetToday = useEventCallback(() => {
|
|
284
|
-
updateDate({
|
|
285
|
-
value: valueManager.getTodayValue(utils, timezone, valueType),
|
|
286
|
-
name: 'setValueFromAction',
|
|
287
|
-
pickerAction: 'today'
|
|
288
|
-
});
|
|
289
|
-
});
|
|
290
|
-
const handleOpen = useEventCallback(event => {
|
|
291
|
-
event.preventDefault();
|
|
292
|
-
setIsOpen(true);
|
|
293
|
-
});
|
|
294
|
-
const handleClose = useEventCallback(event => {
|
|
295
|
-
event?.preventDefault();
|
|
296
|
-
setIsOpen(false);
|
|
297
|
-
});
|
|
298
|
-
const handleChange = useEventCallback((newValue, selectionState = 'partial') => updateDate({
|
|
299
|
-
name: 'setValueFromView',
|
|
300
|
-
value: newValue,
|
|
301
|
-
selectionState
|
|
302
|
-
}));
|
|
303
|
-
const handleSelectShortcut = useEventCallback((newValue, changeImportance, shortcut) => updateDate({
|
|
304
|
-
name: 'setValueFromShortcut',
|
|
305
|
-
value: newValue,
|
|
306
|
-
changeImportance,
|
|
307
|
-
shortcut
|
|
308
|
-
}));
|
|
309
|
-
const handleChangeFromField = useEventCallback((newValue, context) => updateDate({
|
|
310
|
-
name: 'setValueFromField',
|
|
311
|
-
value: newValue,
|
|
312
|
-
context
|
|
313
|
-
}));
|
|
314
|
-
const actions = {
|
|
315
|
-
onClear: handleClear,
|
|
316
|
-
onAccept: handleAccept,
|
|
317
|
-
onDismiss: handleDismiss,
|
|
318
|
-
onCancel: handleCancel,
|
|
319
|
-
onSetToday: handleSetToday,
|
|
320
|
-
onOpen: handleOpen,
|
|
321
|
-
onClose: handleClose
|
|
322
|
-
};
|
|
323
|
-
const fieldResponse = {
|
|
324
|
-
value: dateState.draft,
|
|
325
|
-
onChange: handleChangeFromField
|
|
326
|
-
};
|
|
327
|
-
const viewValue = React.useMemo(() => valueManager.cleanValue(utils, dateState.draft), [utils, valueManager, dateState.draft]);
|
|
328
|
-
const viewResponse = {
|
|
329
|
-
value: viewValue,
|
|
330
|
-
onChange: handleChange,
|
|
331
|
-
onClose: handleClose,
|
|
332
|
-
open: isOpen
|
|
333
|
-
};
|
|
334
160
|
const isValid = testedValue => {
|
|
335
161
|
const error = validator({
|
|
336
162
|
adapter,
|
|
@@ -340,17 +166,61 @@ export const usePickerValue = ({
|
|
|
340
166
|
});
|
|
341
167
|
return !valueManager.hasError(error);
|
|
342
168
|
};
|
|
343
|
-
const
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
169
|
+
const clearValue = useEventCallback(() => setValue(valueManager.emptyValue));
|
|
170
|
+
const setValueToToday = useEventCallback(() => setValue(valueManager.getTodayValue(utils, timezone, valueType)));
|
|
171
|
+
const acceptValueChanges = useEventCallback(() => setValue(dateState.lastPublishedValue));
|
|
172
|
+
const cancelValueChanges = useEventCallback(() => setValue(dateState.lastCommittedValue, {
|
|
173
|
+
skipPublicationIfPristine: true
|
|
174
|
+
}));
|
|
175
|
+
const dismissViews = useEventCallback(() => {
|
|
176
|
+
setValue(dateState.lastPublishedValue, {
|
|
177
|
+
skipPublicationIfPristine: true
|
|
178
|
+
});
|
|
179
|
+
});
|
|
180
|
+
const setValueFromView = useEventCallback((newValue, selectionState = 'partial') => {
|
|
181
|
+
// TODO: Expose a new method (private?) like `setView` that only updates the draft value.
|
|
182
|
+
if (selectionState === 'shallow') {
|
|
183
|
+
setDateState(prev => _extends({}, prev, {
|
|
184
|
+
draft: newValue,
|
|
185
|
+
hasBeenModifiedSinceMount: true
|
|
186
|
+
}));
|
|
187
|
+
}
|
|
188
|
+
setValue(newValue, {
|
|
189
|
+
changeImportance: selectionState === 'finish' && closeOnSelect ? 'accept' : 'set'
|
|
190
|
+
});
|
|
348
191
|
});
|
|
192
|
+
const valueWithoutError = React.useMemo(() => valueManager.cleanValue(utils, dateState.draft), [utils, valueManager, dateState.draft]);
|
|
193
|
+
const viewResponse = {
|
|
194
|
+
value: valueWithoutError,
|
|
195
|
+
onChange: setValueFromView,
|
|
196
|
+
open,
|
|
197
|
+
setOpen
|
|
198
|
+
};
|
|
199
|
+
const actionsContextValue = React.useMemo(() => ({
|
|
200
|
+
setValue,
|
|
201
|
+
setOpen,
|
|
202
|
+
clearValue,
|
|
203
|
+
setValueToToday,
|
|
204
|
+
acceptValueChanges,
|
|
205
|
+
cancelValueChanges
|
|
206
|
+
}), [setValue, setOpen, clearValue, setValueToToday, acceptValueChanges, cancelValueChanges]);
|
|
207
|
+
const contextValue = React.useMemo(() => _extends({}, actionsContextValue, {
|
|
208
|
+
value: dateState.draft,
|
|
209
|
+
timezone,
|
|
210
|
+
open
|
|
211
|
+
}), [actionsContextValue, timezone, open, dateState.draft]);
|
|
212
|
+
const privateContextValue = React.useMemo(() => ({
|
|
213
|
+
dismissViews
|
|
214
|
+
}), [dismissViews]);
|
|
215
|
+
const providerParams = {
|
|
216
|
+
value: dateState.draft,
|
|
217
|
+
contextValue,
|
|
218
|
+
actionsContextValue,
|
|
219
|
+
privateContextValue,
|
|
220
|
+
isValidContextValue: isValid
|
|
221
|
+
};
|
|
349
222
|
return {
|
|
350
|
-
open: isOpen,
|
|
351
|
-
fieldProps: fieldResponse,
|
|
352
223
|
viewProps: viewResponse,
|
|
353
|
-
|
|
354
|
-
actions
|
|
224
|
+
provider: providerParams
|
|
355
225
|
};
|
|
356
226
|
};
|