@mui/x-date-pickers 8.0.0-beta.1 → 8.0.0-beta.3
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 +235 -0
- package/DateCalendar/DateCalendar.js +4 -8
- package/DateCalendar/DayCalendar.js +2 -2
- package/DateField/DateField.js +4 -4
- package/DatePicker/shared.js +3 -9
- package/DateTimeField/DateTimeField.js +4 -4
- package/DateTimePicker/shared.js +3 -13
- package/DesktopDatePicker/DesktopDatePicker.js +2 -1
- package/DesktopDateTimePicker/DesktopDateTimePicker.js +2 -1
- package/DesktopTimePicker/DesktopTimePicker.js +2 -1
- package/DigitalClock/DigitalClock.js +1 -0
- package/LocalizationProvider/LocalizationProvider.d.ts +1 -1
- package/LocalizationProvider/LocalizationProvider.js +2 -2
- package/MobileDatePicker/MobileDatePicker.js +2 -1
- package/MobileDateTimePicker/MobileDateTimePicker.js +9 -1
- package/MobileTimePicker/MobileTimePicker.js +2 -1
- package/MonthCalendar/MonthCalendar.js +4 -9
- package/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +1 -0
- package/PickersActionBar/PickersActionBar.d.ts +1 -1
- package/PickersActionBar/PickersActionBar.js +21 -3
- package/PickersSectionList/PickersSectionList.d.ts +1 -1
- package/PickersSectionList/PickersSectionList.types.d.ts +2 -6
- package/StaticDatePicker/StaticDatePicker.js +2 -1
- package/StaticDateTimePicker/StaticDateTimePicker.js +9 -1
- package/StaticTimePicker/StaticTimePicker.js +2 -1
- package/TimeField/TimeField.js +4 -4
- package/TimePicker/shared.js +3 -3
- package/YearCalendar/YearCalendar.js +4 -10
- package/esm/DateCalendar/DateCalendar.js +6 -10
- package/esm/DateCalendar/DayCalendar.js +2 -2
- package/esm/DateField/DateField.js +4 -4
- package/esm/DatePicker/shared.js +3 -9
- package/esm/DateTimeField/DateTimeField.js +4 -4
- package/esm/DateTimePicker/shared.js +4 -14
- package/esm/DesktopDatePicker/DesktopDatePicker.js +2 -1
- package/esm/DesktopDateTimePicker/DesktopDateTimePicker.js +2 -1
- package/esm/DesktopTimePicker/DesktopTimePicker.js +2 -1
- package/esm/DigitalClock/DigitalClock.js +1 -0
- package/esm/LocalizationProvider/LocalizationProvider.d.ts +1 -1
- package/esm/LocalizationProvider/LocalizationProvider.js +2 -2
- package/esm/MobileDatePicker/MobileDatePicker.js +2 -1
- package/esm/MobileDateTimePicker/MobileDateTimePicker.js +9 -1
- package/esm/MobileTimePicker/MobileTimePicker.js +2 -1
- package/esm/MonthCalendar/MonthCalendar.js +6 -11
- package/esm/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +1 -0
- package/esm/PickersActionBar/PickersActionBar.d.ts +1 -1
- package/esm/PickersActionBar/PickersActionBar.js +22 -4
- package/esm/PickersSectionList/PickersSectionList.d.ts +1 -1
- package/esm/PickersSectionList/PickersSectionList.types.d.ts +2 -6
- package/esm/StaticDatePicker/StaticDatePicker.js +2 -1
- package/esm/StaticDateTimePicker/StaticDateTimePicker.js +9 -1
- package/esm/StaticTimePicker/StaticTimePicker.js +2 -1
- package/esm/TimeField/TimeField.js +4 -4
- package/esm/TimePicker/shared.js +3 -3
- package/esm/YearCalendar/YearCalendar.js +5 -11
- package/esm/index.js +1 -1
- package/esm/internals/components/PickerProvider.d.ts +9 -0
- package/esm/internals/hooks/useDesktopPicker/useDesktopPicker.d.ts +1 -0
- package/esm/internals/hooks/useDesktopPicker/useDesktopPicker.js +9 -3
- package/esm/internals/hooks/useDesktopPicker/useDesktopPicker.types.d.ts +7 -0
- package/esm/internals/hooks/useField/buildSectionsFromFormat.js +1 -1
- package/esm/internals/hooks/useField/syncSelectionToDOM.d.ts +9 -0
- package/esm/internals/hooks/useField/syncSelectionToDOM.js +50 -0
- package/esm/internals/hooks/useField/useField.types.d.ts +8 -1
- package/esm/internals/hooks/useField/useField.utils.d.ts +1 -3
- package/esm/internals/hooks/useField/useField.utils.js +0 -57
- package/esm/internals/hooks/useField/useFieldHiddenInputProps.d.ts +20 -0
- package/esm/internals/hooks/useField/useFieldHiddenInputProps.js +31 -0
- package/esm/internals/hooks/useField/useFieldInternalPropsWithDefaults.js +8 -10
- package/esm/internals/hooks/useField/useFieldRootHandleKeyDown.js +1 -0
- package/esm/internals/hooks/useField/useFieldRootProps.d.ts +32 -0
- package/esm/internals/hooks/useField/useFieldRootProps.js +150 -0
- package/esm/internals/hooks/useField/useFieldSectionContainerProps.d.ts +15 -0
- package/esm/internals/hooks/useField/useFieldSectionContainerProps.js +29 -0
- package/esm/internals/hooks/useField/useFieldSectionContentProps.d.ts +23 -0
- package/esm/internals/hooks/useField/useFieldSectionContentProps.js +226 -0
- package/esm/internals/hooks/useField/useFieldV7TextField.js +76 -307
- package/esm/internals/hooks/useMobilePicker/useMobilePicker.d.ts +1 -0
- package/esm/internals/hooks/useMobilePicker/useMobilePicker.js +9 -3
- package/esm/internals/hooks/useMobilePicker/useMobilePicker.types.d.ts +7 -0
- package/esm/internals/hooks/usePicker/usePicker.d.ts +2 -1
- package/esm/internals/hooks/usePicker/usePicker.js +14 -4
- package/esm/internals/hooks/usePicker/usePicker.types.d.ts +2 -0
- package/esm/internals/hooks/useStaticPicker/useStaticPicker.d.ts +1 -0
- package/esm/internals/hooks/useStaticPicker/useStaticPicker.js +9 -3
- package/esm/internals/hooks/useStaticPicker/useStaticPicker.types.d.ts +7 -0
- package/esm/internals/index.d.ts +7 -6
- package/esm/internals/index.js +6 -5
- package/esm/internals/utils/createNonRangePickerStepNavigation.d.ts +13 -0
- package/esm/internals/utils/createNonRangePickerStepNavigation.js +24 -0
- package/esm/internals/utils/createStepNavigation.d.ts +32 -0
- package/esm/internals/utils/createStepNavigation.js +34 -0
- package/esm/internals/utils/date-utils.d.ts +1 -0
- package/esm/internals/utils/date-utils.js +2 -2
- package/esm/internals/utils/time-utils.d.ts +2 -0
- package/esm/internals/utils/time-utils.js +4 -3
- package/esm/locales/beBY.d.ts +1 -0
- package/esm/locales/beBY.js +1 -0
- package/esm/locales/bgBG.d.ts +1 -0
- package/esm/locales/bgBG.js +1 -0
- package/esm/locales/bnBD.d.ts +1 -0
- package/esm/locales/bnBD.js +1 -0
- package/esm/locales/caES.d.ts +1 -0
- package/esm/locales/caES.js +1 -0
- package/esm/locales/csCZ.d.ts +1 -0
- package/esm/locales/csCZ.js +1 -0
- package/esm/locales/daDK.d.ts +1 -0
- package/esm/locales/daDK.js +1 -0
- package/esm/locales/deDE.d.ts +1 -0
- package/esm/locales/deDE.js +3 -3
- package/esm/locales/elGR.d.ts +1 -0
- package/esm/locales/elGR.js +1 -0
- package/esm/locales/enUS.d.ts +1 -0
- package/esm/locales/enUS.js +1 -0
- package/esm/locales/esES.d.ts +1 -0
- package/esm/locales/esES.js +1 -0
- package/esm/locales/eu.d.ts +1 -0
- package/esm/locales/eu.js +1 -0
- package/esm/locales/faIR.d.ts +1 -0
- package/esm/locales/faIR.js +1 -0
- package/esm/locales/fiFI.d.ts +1 -0
- package/esm/locales/fiFI.js +1 -0
- package/esm/locales/frFR.d.ts +1 -0
- package/esm/locales/frFR.js +1 -0
- package/esm/locales/heIL.d.ts +1 -0
- package/esm/locales/heIL.js +1 -0
- package/esm/locales/hrHR.d.ts +1 -0
- package/esm/locales/hrHR.js +1 -0
- package/esm/locales/huHU.d.ts +1 -0
- package/esm/locales/huHU.js +1 -0
- package/esm/locales/isIS.d.ts +1 -0
- package/esm/locales/isIS.js +1 -0
- package/esm/locales/itIT.d.ts +1 -0
- package/esm/locales/itIT.js +1 -0
- package/esm/locales/jaJP.d.ts +1 -0
- package/esm/locales/jaJP.js +1 -0
- package/esm/locales/koKR.d.ts +1 -0
- package/esm/locales/koKR.js +1 -0
- package/esm/locales/kzKZ.d.ts +1 -0
- package/esm/locales/kzKZ.js +1 -0
- package/esm/locales/mk.d.ts +1 -0
- package/esm/locales/mk.js +1 -0
- package/esm/locales/nbNO.d.ts +1 -0
- package/esm/locales/nbNO.js +1 -0
- package/esm/locales/nlNL.d.ts +1 -0
- package/esm/locales/nlNL.js +1 -0
- package/esm/locales/nnNO.d.ts +1 -0
- package/esm/locales/nnNO.js +1 -0
- package/esm/locales/plPL.d.ts +1 -0
- package/esm/locales/plPL.js +1 -0
- package/esm/locales/ptBR.d.ts +1 -0
- package/esm/locales/ptBR.js +1 -0
- package/esm/locales/ptPT.d.ts +1 -0
- package/esm/locales/ptPT.js +1 -0
- package/esm/locales/roRO.d.ts +1 -0
- package/esm/locales/roRO.js +1 -0
- package/esm/locales/ruRU.d.ts +1 -0
- package/esm/locales/ruRU.js +1 -0
- package/esm/locales/skSK.d.ts +1 -0
- package/esm/locales/skSK.js +1 -0
- package/esm/locales/svSE.d.ts +1 -0
- package/esm/locales/svSE.js +1 -0
- package/esm/locales/trTR.d.ts +1 -0
- package/esm/locales/trTR.js +1 -0
- package/esm/locales/ukUA.d.ts +1 -0
- package/esm/locales/ukUA.js +1 -0
- package/esm/locales/urPK.d.ts +1 -0
- package/esm/locales/urPK.js +1 -0
- package/esm/locales/utils/getPickersLocalization.d.ts +1 -0
- package/esm/locales/utils/pickersLocaleTextApi.d.ts +1 -0
- package/esm/locales/viVN.d.ts +1 -0
- package/esm/locales/viVN.js +1 -0
- package/esm/locales/zhCN.d.ts +1 -0
- package/esm/locales/zhCN.js +1 -0
- package/esm/locales/zhHK.d.ts +1 -0
- package/esm/locales/zhHK.js +1 -0
- package/esm/locales/zhTW.d.ts +1 -0
- package/esm/locales/zhTW.js +1 -0
- package/esm/managers/useDateManager.d.ts +4 -13
- package/esm/managers/useDateManager.js +18 -28
- package/esm/managers/useDateTimeManager.d.ts +4 -13
- package/esm/managers/useDateTimeManager.js +23 -33
- package/esm/managers/useTimeManager.d.ts +4 -13
- package/esm/managers/useTimeManager.js +14 -24
- package/esm/models/manager.d.ts +3 -8
- package/esm/validation/validateDate.js +3 -4
- package/index.js +1 -1
- package/internals/components/PickerProvider.d.ts +9 -0
- package/internals/hooks/useDesktopPicker/useDesktopPicker.d.ts +1 -0
- package/internals/hooks/useDesktopPicker/useDesktopPicker.js +9 -3
- package/internals/hooks/useDesktopPicker/useDesktopPicker.types.d.ts +7 -0
- package/internals/hooks/useField/buildSectionsFromFormat.js +1 -1
- package/internals/hooks/useField/syncSelectionToDOM.d.ts +9 -0
- package/internals/hooks/useField/syncSelectionToDOM.js +56 -0
- package/internals/hooks/useField/useField.types.d.ts +8 -1
- package/internals/hooks/useField/useField.utils.d.ts +1 -3
- package/internals/hooks/useField/useField.utils.js +2 -61
- package/internals/hooks/useField/useFieldHiddenInputProps.d.ts +20 -0
- package/internals/hooks/useField/useFieldHiddenInputProps.js +39 -0
- package/internals/hooks/useField/useFieldInternalPropsWithDefaults.js +8 -10
- package/internals/hooks/useField/useFieldRootHandleKeyDown.js +1 -0
- package/internals/hooks/useField/useFieldRootProps.d.ts +32 -0
- package/internals/hooks/useField/useFieldRootProps.js +156 -0
- package/internals/hooks/useField/useFieldSectionContainerProps.d.ts +15 -0
- package/internals/hooks/useField/useFieldSectionContainerProps.js +37 -0
- package/internals/hooks/useField/useFieldSectionContentProps.d.ts +23 -0
- package/internals/hooks/useField/useFieldSectionContentProps.js +234 -0
- package/internals/hooks/useField/useFieldV7TextField.js +75 -306
- package/internals/hooks/useMobilePicker/useMobilePicker.d.ts +1 -0
- package/internals/hooks/useMobilePicker/useMobilePicker.js +9 -3
- package/internals/hooks/useMobilePicker/useMobilePicker.types.d.ts +7 -0
- package/internals/hooks/usePicker/usePicker.d.ts +2 -1
- package/internals/hooks/usePicker/usePicker.js +14 -4
- package/internals/hooks/usePicker/usePicker.types.d.ts +2 -0
- package/internals/hooks/useStaticPicker/useStaticPicker.d.ts +1 -0
- package/internals/hooks/useStaticPicker/useStaticPicker.js +9 -3
- package/internals/hooks/useStaticPicker/useStaticPicker.types.d.ts +7 -0
- package/internals/index.d.ts +7 -6
- package/internals/index.js +37 -18
- package/internals/utils/createNonRangePickerStepNavigation.d.ts +13 -0
- package/internals/utils/createNonRangePickerStepNavigation.js +30 -0
- package/internals/utils/createStepNavigation.d.ts +32 -0
- package/internals/utils/createStepNavigation.js +41 -0
- package/internals/utils/date-utils.d.ts +1 -0
- package/internals/utils/date-utils.js +3 -3
- package/internals/utils/time-utils.d.ts +2 -0
- package/internals/utils/time-utils.js +5 -4
- package/locales/beBY.d.ts +1 -0
- package/locales/beBY.js +1 -0
- package/locales/bgBG.d.ts +1 -0
- package/locales/bgBG.js +1 -0
- package/locales/bnBD.d.ts +1 -0
- package/locales/bnBD.js +1 -0
- package/locales/caES.d.ts +1 -0
- package/locales/caES.js +1 -0
- package/locales/csCZ.d.ts +1 -0
- package/locales/csCZ.js +1 -0
- package/locales/daDK.d.ts +1 -0
- package/locales/daDK.js +1 -0
- package/locales/deDE.d.ts +1 -0
- package/locales/deDE.js +3 -3
- package/locales/elGR.d.ts +1 -0
- package/locales/elGR.js +1 -0
- package/locales/enUS.d.ts +1 -0
- package/locales/enUS.js +1 -0
- package/locales/esES.d.ts +1 -0
- package/locales/esES.js +1 -0
- package/locales/eu.d.ts +1 -0
- package/locales/eu.js +1 -0
- package/locales/faIR.d.ts +1 -0
- package/locales/faIR.js +1 -0
- package/locales/fiFI.d.ts +1 -0
- package/locales/fiFI.js +1 -0
- package/locales/frFR.d.ts +1 -0
- package/locales/frFR.js +1 -0
- package/locales/heIL.d.ts +1 -0
- package/locales/heIL.js +1 -0
- package/locales/hrHR.d.ts +1 -0
- package/locales/hrHR.js +1 -0
- package/locales/huHU.d.ts +1 -0
- package/locales/huHU.js +1 -0
- package/locales/isIS.d.ts +1 -0
- package/locales/isIS.js +1 -0
- package/locales/itIT.d.ts +1 -0
- package/locales/itIT.js +1 -0
- package/locales/jaJP.d.ts +1 -0
- package/locales/jaJP.js +1 -0
- package/locales/koKR.d.ts +1 -0
- package/locales/koKR.js +1 -0
- package/locales/kzKZ.d.ts +1 -0
- package/locales/kzKZ.js +1 -0
- package/locales/mk.d.ts +1 -0
- package/locales/mk.js +1 -0
- package/locales/nbNO.d.ts +1 -0
- package/locales/nbNO.js +1 -0
- package/locales/nlNL.d.ts +1 -0
- package/locales/nlNL.js +1 -0
- package/locales/nnNO.d.ts +1 -0
- package/locales/nnNO.js +1 -0
- package/locales/plPL.d.ts +1 -0
- package/locales/plPL.js +1 -0
- package/locales/ptBR.d.ts +1 -0
- package/locales/ptBR.js +1 -0
- package/locales/ptPT.d.ts +1 -0
- package/locales/ptPT.js +1 -0
- package/locales/roRO.d.ts +1 -0
- package/locales/roRO.js +1 -0
- package/locales/ruRU.d.ts +1 -0
- package/locales/ruRU.js +1 -0
- package/locales/skSK.d.ts +1 -0
- package/locales/skSK.js +1 -0
- package/locales/svSE.d.ts +1 -0
- package/locales/svSE.js +1 -0
- package/locales/trTR.d.ts +1 -0
- package/locales/trTR.js +1 -0
- package/locales/ukUA.d.ts +1 -0
- package/locales/ukUA.js +1 -0
- package/locales/urPK.d.ts +1 -0
- package/locales/urPK.js +1 -0
- package/locales/utils/getPickersLocalization.d.ts +1 -0
- package/locales/utils/pickersLocaleTextApi.d.ts +1 -0
- package/locales/viVN.d.ts +1 -0
- package/locales/viVN.js +1 -0
- package/locales/zhCN.d.ts +1 -0
- package/locales/zhCN.js +1 -0
- package/locales/zhHK.d.ts +1 -0
- package/locales/zhHK.js +1 -0
- package/locales/zhTW.d.ts +1 -0
- package/locales/zhTW.js +1 -0
- package/managers/useDateManager.d.ts +4 -13
- package/managers/useDateManager.js +18 -28
- package/managers/useDateTimeManager.d.ts +4 -13
- package/managers/useDateTimeManager.js +23 -33
- package/managers/useTimeManager.d.ts +4 -13
- package/managers/useTimeManager.js +15 -25
- package/models/manager.d.ts +3 -8
- package/modern/DateCalendar/DateCalendar.js +6 -10
- package/modern/DateCalendar/DayCalendar.js +2 -2
- package/modern/DateField/DateField.js +4 -4
- package/modern/DatePicker/shared.js +3 -9
- package/modern/DateTimeField/DateTimeField.js +4 -4
- package/modern/DateTimePicker/shared.js +4 -14
- package/modern/DesktopDatePicker/DesktopDatePicker.js +2 -1
- package/modern/DesktopDateTimePicker/DesktopDateTimePicker.js +2 -1
- package/modern/DesktopTimePicker/DesktopTimePicker.js +2 -1
- package/modern/DigitalClock/DigitalClock.js +1 -0
- package/modern/LocalizationProvider/LocalizationProvider.d.ts +1 -1
- package/modern/LocalizationProvider/LocalizationProvider.js +2 -2
- package/modern/MobileDatePicker/MobileDatePicker.js +2 -1
- package/modern/MobileDateTimePicker/MobileDateTimePicker.js +9 -1
- package/modern/MobileTimePicker/MobileTimePicker.js +2 -1
- package/modern/MonthCalendar/MonthCalendar.js +6 -11
- package/modern/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +1 -0
- package/modern/PickersActionBar/PickersActionBar.d.ts +1 -1
- package/modern/PickersActionBar/PickersActionBar.js +22 -4
- package/modern/PickersSectionList/PickersSectionList.d.ts +1 -1
- package/modern/PickersSectionList/PickersSectionList.types.d.ts +2 -6
- package/modern/StaticDatePicker/StaticDatePicker.js +2 -1
- package/modern/StaticDateTimePicker/StaticDateTimePicker.js +9 -1
- package/modern/StaticTimePicker/StaticTimePicker.js +2 -1
- package/modern/TimeField/TimeField.js +4 -4
- package/modern/TimePicker/shared.js +3 -3
- package/modern/YearCalendar/YearCalendar.js +5 -11
- package/modern/index.js +1 -1
- package/modern/internals/components/PickerProvider.d.ts +9 -0
- package/modern/internals/hooks/useDesktopPicker/useDesktopPicker.d.ts +1 -0
- package/modern/internals/hooks/useDesktopPicker/useDesktopPicker.js +9 -3
- package/modern/internals/hooks/useDesktopPicker/useDesktopPicker.types.d.ts +7 -0
- package/modern/internals/hooks/useField/buildSectionsFromFormat.js +1 -1
- package/modern/internals/hooks/useField/syncSelectionToDOM.d.ts +9 -0
- package/modern/internals/hooks/useField/syncSelectionToDOM.js +50 -0
- package/modern/internals/hooks/useField/useField.types.d.ts +8 -1
- package/modern/internals/hooks/useField/useField.utils.d.ts +1 -3
- package/modern/internals/hooks/useField/useField.utils.js +0 -57
- package/modern/internals/hooks/useField/useFieldHiddenInputProps.d.ts +20 -0
- package/modern/internals/hooks/useField/useFieldHiddenInputProps.js +31 -0
- package/modern/internals/hooks/useField/useFieldInternalPropsWithDefaults.js +8 -10
- package/modern/internals/hooks/useField/useFieldRootHandleKeyDown.js +1 -0
- package/modern/internals/hooks/useField/useFieldRootProps.d.ts +32 -0
- package/modern/internals/hooks/useField/useFieldRootProps.js +150 -0
- package/modern/internals/hooks/useField/useFieldSectionContainerProps.d.ts +15 -0
- package/modern/internals/hooks/useField/useFieldSectionContainerProps.js +29 -0
- package/modern/internals/hooks/useField/useFieldSectionContentProps.d.ts +23 -0
- package/modern/internals/hooks/useField/useFieldSectionContentProps.js +226 -0
- package/modern/internals/hooks/useField/useFieldV7TextField.js +76 -307
- package/modern/internals/hooks/useMobilePicker/useMobilePicker.d.ts +1 -0
- package/modern/internals/hooks/useMobilePicker/useMobilePicker.js +9 -3
- package/modern/internals/hooks/useMobilePicker/useMobilePicker.types.d.ts +7 -0
- package/modern/internals/hooks/usePicker/usePicker.d.ts +2 -1
- package/modern/internals/hooks/usePicker/usePicker.js +14 -4
- package/modern/internals/hooks/usePicker/usePicker.types.d.ts +2 -0
- package/modern/internals/hooks/useStaticPicker/useStaticPicker.d.ts +1 -0
- package/modern/internals/hooks/useStaticPicker/useStaticPicker.js +9 -3
- package/modern/internals/hooks/useStaticPicker/useStaticPicker.types.d.ts +7 -0
- package/modern/internals/index.d.ts +7 -6
- package/modern/internals/index.js +6 -5
- package/modern/internals/utils/createNonRangePickerStepNavigation.d.ts +13 -0
- package/modern/internals/utils/createNonRangePickerStepNavigation.js +24 -0
- package/modern/internals/utils/createStepNavigation.d.ts +32 -0
- package/modern/internals/utils/createStepNavigation.js +34 -0
- package/modern/internals/utils/date-utils.d.ts +1 -0
- package/modern/internals/utils/date-utils.js +2 -2
- package/modern/internals/utils/time-utils.d.ts +2 -0
- package/modern/internals/utils/time-utils.js +4 -3
- package/modern/locales/beBY.d.ts +1 -0
- package/modern/locales/beBY.js +1 -0
- package/modern/locales/bgBG.d.ts +1 -0
- package/modern/locales/bgBG.js +1 -0
- package/modern/locales/bnBD.d.ts +1 -0
- package/modern/locales/bnBD.js +1 -0
- package/modern/locales/caES.d.ts +1 -0
- package/modern/locales/caES.js +1 -0
- package/modern/locales/csCZ.d.ts +1 -0
- package/modern/locales/csCZ.js +1 -0
- package/modern/locales/daDK.d.ts +1 -0
- package/modern/locales/daDK.js +1 -0
- package/modern/locales/deDE.d.ts +1 -0
- package/modern/locales/deDE.js +3 -3
- package/modern/locales/elGR.d.ts +1 -0
- package/modern/locales/elGR.js +1 -0
- package/modern/locales/enUS.d.ts +1 -0
- package/modern/locales/enUS.js +1 -0
- package/modern/locales/esES.d.ts +1 -0
- package/modern/locales/esES.js +1 -0
- package/modern/locales/eu.d.ts +1 -0
- package/modern/locales/eu.js +1 -0
- package/modern/locales/faIR.d.ts +1 -0
- package/modern/locales/faIR.js +1 -0
- package/modern/locales/fiFI.d.ts +1 -0
- package/modern/locales/fiFI.js +1 -0
- package/modern/locales/frFR.d.ts +1 -0
- package/modern/locales/frFR.js +1 -0
- package/modern/locales/heIL.d.ts +1 -0
- package/modern/locales/heIL.js +1 -0
- package/modern/locales/hrHR.d.ts +1 -0
- package/modern/locales/hrHR.js +1 -0
- package/modern/locales/huHU.d.ts +1 -0
- package/modern/locales/huHU.js +1 -0
- package/modern/locales/isIS.d.ts +1 -0
- package/modern/locales/isIS.js +1 -0
- package/modern/locales/itIT.d.ts +1 -0
- package/modern/locales/itIT.js +1 -0
- package/modern/locales/jaJP.d.ts +1 -0
- package/modern/locales/jaJP.js +1 -0
- package/modern/locales/koKR.d.ts +1 -0
- package/modern/locales/koKR.js +1 -0
- package/modern/locales/kzKZ.d.ts +1 -0
- package/modern/locales/kzKZ.js +1 -0
- package/modern/locales/mk.d.ts +1 -0
- package/modern/locales/mk.js +1 -0
- package/modern/locales/nbNO.d.ts +1 -0
- package/modern/locales/nbNO.js +1 -0
- package/modern/locales/nlNL.d.ts +1 -0
- package/modern/locales/nlNL.js +1 -0
- package/modern/locales/nnNO.d.ts +1 -0
- package/modern/locales/nnNO.js +1 -0
- package/modern/locales/plPL.d.ts +1 -0
- package/modern/locales/plPL.js +1 -0
- package/modern/locales/ptBR.d.ts +1 -0
- package/modern/locales/ptBR.js +1 -0
- package/modern/locales/ptPT.d.ts +1 -0
- package/modern/locales/ptPT.js +1 -0
- package/modern/locales/roRO.d.ts +1 -0
- package/modern/locales/roRO.js +1 -0
- package/modern/locales/ruRU.d.ts +1 -0
- package/modern/locales/ruRU.js +1 -0
- package/modern/locales/skSK.d.ts +1 -0
- package/modern/locales/skSK.js +1 -0
- package/modern/locales/svSE.d.ts +1 -0
- package/modern/locales/svSE.js +1 -0
- package/modern/locales/trTR.d.ts +1 -0
- package/modern/locales/trTR.js +1 -0
- package/modern/locales/ukUA.d.ts +1 -0
- package/modern/locales/ukUA.js +1 -0
- package/modern/locales/urPK.d.ts +1 -0
- package/modern/locales/urPK.js +1 -0
- package/modern/locales/utils/getPickersLocalization.d.ts +1 -0
- package/modern/locales/utils/pickersLocaleTextApi.d.ts +1 -0
- package/modern/locales/viVN.d.ts +1 -0
- package/modern/locales/viVN.js +1 -0
- package/modern/locales/zhCN.d.ts +1 -0
- package/modern/locales/zhCN.js +1 -0
- package/modern/locales/zhHK.d.ts +1 -0
- package/modern/locales/zhHK.js +1 -0
- package/modern/locales/zhTW.d.ts +1 -0
- package/modern/locales/zhTW.js +1 -0
- package/modern/managers/useDateManager.d.ts +4 -13
- package/modern/managers/useDateManager.js +18 -28
- package/modern/managers/useDateTimeManager.d.ts +4 -13
- package/modern/managers/useDateTimeManager.js +23 -33
- package/modern/managers/useTimeManager.d.ts +4 -13
- package/modern/managers/useTimeManager.js +14 -24
- package/modern/models/manager.d.ts +3 -8
- package/modern/validation/validateDate.js +3 -4
- package/package.json +6 -6
- package/tsconfig.build.tsbuildinfo +1 -1
- package/validation/validateDate.js +3 -4
|
@@ -11,28 +11,24 @@ var React = _interopRequireWildcard(require("react"));
|
|
|
11
11
|
var _useForkRef = _interopRequireDefault(require("@mui/utils/useForkRef"));
|
|
12
12
|
var _useEventCallback = _interopRequireDefault(require("@mui/utils/useEventCallback"));
|
|
13
13
|
var _useEnhancedEffect = _interopRequireDefault(require("@mui/utils/useEnhancedEffect"));
|
|
14
|
-
var _useTimeout = _interopRequireDefault(require("@mui/utils/useTimeout"));
|
|
15
|
-
var _useId = _interopRequireDefault(require("@mui/utils/useId"));
|
|
16
14
|
var _useField = require("./useField.utils");
|
|
17
15
|
var _utils = require("../../utils/utils");
|
|
18
16
|
var _hooks = require("../../../hooks");
|
|
19
|
-
var _usePickerTranslations = require("../../../hooks/usePickerTranslations");
|
|
20
|
-
var _useUtils = require("../useUtils");
|
|
21
17
|
var _useFieldCharacterEditing = require("./useFieldCharacterEditing");
|
|
22
|
-
var _useFieldRootHandleKeyDown = require("./useFieldRootHandleKeyDown");
|
|
23
18
|
var _useFieldState = require("./useFieldState");
|
|
24
19
|
var _useFieldInternalPropsWithDefaults = require("./useFieldInternalPropsWithDefaults");
|
|
20
|
+
var _syncSelectionToDOM = require("./syncSelectionToDOM");
|
|
21
|
+
var _useFieldRootProps = require("./useFieldRootProps");
|
|
22
|
+
var _useFieldHiddenInputProps = require("./useFieldHiddenInputProps");
|
|
23
|
+
var _useFieldSectionContainerProps = require("./useFieldSectionContainerProps");
|
|
24
|
+
var _useFieldSectionContentProps = require("./useFieldSectionContentProps");
|
|
25
25
|
const useFieldV7TextField = parameters => {
|
|
26
|
-
const translations = (0, _usePickerTranslations.usePickerTranslations)();
|
|
27
|
-
const utils = (0, _useUtils.useUtils)();
|
|
28
|
-
const id = (0, _useId.default)();
|
|
29
26
|
const {
|
|
30
27
|
props,
|
|
31
28
|
manager,
|
|
32
29
|
skipContextFieldRefAssignment,
|
|
33
30
|
manager: {
|
|
34
31
|
valueType,
|
|
35
|
-
internal_fieldValueManager: fieldValueManager,
|
|
36
32
|
internal_useOpenPickerButtonAriaLabel: useOpenPickerButtonAriaLabel
|
|
37
33
|
}
|
|
38
34
|
} = parameters;
|
|
@@ -65,6 +61,13 @@ const useFieldV7TextField = parameters => {
|
|
|
65
61
|
} = internalPropsWithDefaults;
|
|
66
62
|
const sectionListRef = React.useRef(null);
|
|
67
63
|
const handleSectionListRef = (0, _useForkRef.default)(sectionListRefProp, sectionListRef);
|
|
64
|
+
const domGetters = React.useMemo(() => ({
|
|
65
|
+
isReady: () => sectionListRef.current != null,
|
|
66
|
+
getRoot: () => sectionListRef.current.getRoot(),
|
|
67
|
+
getSectionContainer: sectionIndex => sectionListRef.current.getSectionContainer(sectionIndex),
|
|
68
|
+
getSectionContent: sectionIndex => sectionListRef.current.getSectionContent(sectionIndex),
|
|
69
|
+
getSectionIndexFromDOMElement: element => sectionListRef.current.getSectionIndexFromDOMElement(element)
|
|
70
|
+
}), [sectionListRef]);
|
|
68
71
|
const stateResponse = (0, _useFieldState.useFieldState)({
|
|
69
72
|
manager,
|
|
70
73
|
internalPropsWithDefaults,
|
|
@@ -76,62 +79,17 @@ const useFieldV7TextField = parameters => {
|
|
|
76
79
|
error,
|
|
77
80
|
parsedSelectedSections,
|
|
78
81
|
sectionOrder,
|
|
79
|
-
sectionsValueBoundaries,
|
|
80
82
|
state,
|
|
81
83
|
value,
|
|
82
84
|
// Methods to update the states
|
|
83
85
|
clearValue,
|
|
84
|
-
|
|
85
|
-
setCharacterQuery,
|
|
86
|
-
setSelectedSections,
|
|
87
|
-
updateSectionValue,
|
|
88
|
-
updateValueFromValueStr
|
|
86
|
+
setSelectedSections
|
|
89
87
|
} = stateResponse;
|
|
90
88
|
const applyCharacterEditing = (0, _useFieldCharacterEditing.useFieldCharacterEditing)({
|
|
91
89
|
stateResponse
|
|
92
90
|
});
|
|
93
91
|
const openPickerAriaLabel = useOpenPickerButtonAriaLabel(value);
|
|
94
92
|
const [focused, setFocused] = React.useState(false);
|
|
95
|
-
function syncSelectionToDOM() {
|
|
96
|
-
if (!sectionListRef.current) {
|
|
97
|
-
return;
|
|
98
|
-
}
|
|
99
|
-
const selection = document.getSelection();
|
|
100
|
-
if (!selection) {
|
|
101
|
-
return;
|
|
102
|
-
}
|
|
103
|
-
if (parsedSelectedSections == null) {
|
|
104
|
-
// If the selection contains an element inside the field, we reset it.
|
|
105
|
-
if (selection.rangeCount > 0 && sectionListRef.current.getRoot().contains(selection.getRangeAt(0).startContainer)) {
|
|
106
|
-
selection.removeAllRanges();
|
|
107
|
-
}
|
|
108
|
-
if (focused) {
|
|
109
|
-
sectionListRef.current.getRoot().blur();
|
|
110
|
-
}
|
|
111
|
-
return;
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
// On multi input range pickers we want to update selection range only for the active input
|
|
115
|
-
if (!sectionListRef.current.getRoot().contains((0, _utils.getActiveElement)(document))) {
|
|
116
|
-
return;
|
|
117
|
-
}
|
|
118
|
-
const range = new window.Range();
|
|
119
|
-
let target;
|
|
120
|
-
if (parsedSelectedSections === 'all') {
|
|
121
|
-
target = sectionListRef.current.getRoot();
|
|
122
|
-
} else {
|
|
123
|
-
const section = state.sections[parsedSelectedSections];
|
|
124
|
-
if (section.type === 'empty') {
|
|
125
|
-
target = sectionListRef.current.getSectionContainer(parsedSelectedSections);
|
|
126
|
-
} else {
|
|
127
|
-
target = sectionListRef.current.getSectionContent(parsedSelectedSections);
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
range.selectNodeContents(target);
|
|
131
|
-
target.focus();
|
|
132
|
-
selection.removeAllRanges();
|
|
133
|
-
selection.addRange(range);
|
|
134
|
-
}
|
|
135
93
|
function focusField(newSelectedSections = 0) {
|
|
136
94
|
if (!sectionListRef.current ||
|
|
137
95
|
// if the field is already focused, we don't need to focus it again
|
|
@@ -142,193 +100,53 @@ const useFieldV7TextField = parameters => {
|
|
|
142
100
|
setFocused(true);
|
|
143
101
|
sectionListRef.current.getSectionContent(newParsedSelectedSections).focus();
|
|
144
102
|
}
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
}
|
|
154
|
-
const section = state.sections[sectionIndex];
|
|
155
|
-
sectionListRef.current.getSectionContent(sectionIndex).innerHTML = section.value || section.placeholder;
|
|
156
|
-
syncSelectionToDOM();
|
|
103
|
+
const rootProps = (0, _useFieldRootProps.useFieldRootProps)({
|
|
104
|
+
manager,
|
|
105
|
+
internalPropsWithDefaults,
|
|
106
|
+
stateResponse,
|
|
107
|
+
applyCharacterEditing,
|
|
108
|
+
focused,
|
|
109
|
+
setFocused,
|
|
110
|
+
domGetters
|
|
157
111
|
});
|
|
158
|
-
const
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
// We avoid this by checking if the call of `handleContainerClick` is actually intended, or a side effect.
|
|
162
|
-
if (event.isDefaultPrevented() || !sectionListRef.current) {
|
|
163
|
-
return;
|
|
164
|
-
}
|
|
165
|
-
setFocused(true);
|
|
166
|
-
onClick?.(event, ...args);
|
|
167
|
-
if (parsedSelectedSections === 'all') {
|
|
168
|
-
containerClickTimeout.start(0, () => {
|
|
169
|
-
const cursorPosition = document.getSelection().getRangeAt(0).startOffset;
|
|
170
|
-
if (cursorPosition === 0) {
|
|
171
|
-
setSelectedSections(sectionOrder.startIndex);
|
|
172
|
-
return;
|
|
173
|
-
}
|
|
174
|
-
let sectionIndex = 0;
|
|
175
|
-
let cursorOnStartOfSection = 0;
|
|
176
|
-
while (cursorOnStartOfSection < cursorPosition && sectionIndex < state.sections.length) {
|
|
177
|
-
const section = state.sections[sectionIndex];
|
|
178
|
-
sectionIndex += 1;
|
|
179
|
-
cursorOnStartOfSection += `${section.startSeparator}${section.value || section.placeholder}${section.endSeparator}`.length;
|
|
180
|
-
}
|
|
181
|
-
setSelectedSections(sectionIndex - 1);
|
|
182
|
-
});
|
|
183
|
-
} else if (!focused) {
|
|
184
|
-
setFocused(true);
|
|
185
|
-
setSelectedSections(sectionOrder.startIndex);
|
|
186
|
-
} else {
|
|
187
|
-
const hasClickedOnASection = sectionListRef.current.getRoot().contains(event.target);
|
|
188
|
-
if (!hasClickedOnASection) {
|
|
189
|
-
setSelectedSections(sectionOrder.startIndex);
|
|
190
|
-
}
|
|
191
|
-
}
|
|
112
|
+
const hiddenInputProps = (0, _useFieldHiddenInputProps.useFieldHiddenInputProps)({
|
|
113
|
+
manager,
|
|
114
|
+
stateResponse
|
|
192
115
|
});
|
|
193
|
-
const
|
|
194
|
-
|
|
195
|
-
if (!sectionListRef.current || parsedSelectedSections !== 'all') {
|
|
196
|
-
return;
|
|
197
|
-
}
|
|
198
|
-
const target = event.target;
|
|
199
|
-
const keyPressed = target.textContent ?? '';
|
|
200
|
-
sectionListRef.current.getRoot().innerHTML = state.sections.map(section => `${section.startSeparator}${section.value || section.placeholder}${section.endSeparator}`).join('');
|
|
201
|
-
syncSelectionToDOM();
|
|
202
|
-
if (keyPressed.length === 0 || keyPressed.charCodeAt(0) === 10) {
|
|
203
|
-
clearValue();
|
|
204
|
-
setSelectedSections('all');
|
|
205
|
-
} else if (keyPressed.length > 1) {
|
|
206
|
-
updateValueFromValueStr(keyPressed);
|
|
207
|
-
} else {
|
|
208
|
-
if (parsedSelectedSections === 'all') {
|
|
209
|
-
setSelectedSections(0);
|
|
210
|
-
}
|
|
211
|
-
applyCharacterEditing({
|
|
212
|
-
keyPressed,
|
|
213
|
-
sectionIndex: 0
|
|
214
|
-
});
|
|
215
|
-
}
|
|
116
|
+
const createSectionContainerProps = (0, _useFieldSectionContainerProps.useFieldSectionContainerProps)({
|
|
117
|
+
stateResponse
|
|
216
118
|
});
|
|
217
|
-
const
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
event.preventDefault();
|
|
225
|
-
setCharacterQuery(null);
|
|
226
|
-
updateValueFromValueStr(pastedValue);
|
|
119
|
+
const createSectionContentProps = (0, _useFieldSectionContentProps.useFieldSectionContentProps)({
|
|
120
|
+
manager,
|
|
121
|
+
stateResponse,
|
|
122
|
+
applyCharacterEditing,
|
|
123
|
+
internalPropsWithDefaults,
|
|
124
|
+
domGetters,
|
|
125
|
+
focused
|
|
227
126
|
});
|
|
228
|
-
const
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
return;
|
|
232
|
-
}
|
|
233
|
-
const activeElement = (0, _utils.getActiveElement)(document);
|
|
234
|
-
setFocused(true);
|
|
235
|
-
const isFocusInsideASection = sectionListRef.current.getSectionIndexFromDOMElement(activeElement) != null;
|
|
236
|
-
if (!isFocusInsideASection) {
|
|
237
|
-
setSelectedSections(sectionOrder.startIndex);
|
|
238
|
-
}
|
|
127
|
+
const handleRootKeyDown = (0, _useEventCallback.default)(event => {
|
|
128
|
+
onKeyDown?.(event);
|
|
129
|
+
rootProps.onKeyDown(event);
|
|
239
130
|
});
|
|
240
|
-
const
|
|
131
|
+
const handleRootBlur = (0, _useEventCallback.default)(event => {
|
|
241
132
|
onBlur?.(event);
|
|
242
|
-
|
|
243
|
-
if (!sectionListRef.current) {
|
|
244
|
-
return;
|
|
245
|
-
}
|
|
246
|
-
const activeElement = (0, _utils.getActiveElement)(document);
|
|
247
|
-
const shouldBlur = !sectionListRef.current.getRoot().contains(activeElement);
|
|
248
|
-
if (shouldBlur) {
|
|
249
|
-
setFocused(false);
|
|
250
|
-
setSelectedSections(null);
|
|
251
|
-
}
|
|
252
|
-
});
|
|
133
|
+
rootProps.onBlur(event);
|
|
253
134
|
});
|
|
254
|
-
const
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
if (event.isDefaultPrevented()) {
|
|
258
|
-
return;
|
|
259
|
-
}
|
|
260
|
-
setSelectedSections(sectionIndex);
|
|
261
|
-
});
|
|
262
|
-
const handleInputContentMouseUp = (0, _useEventCallback.default)(event => {
|
|
263
|
-
// Without this, the browser will remove the selected when clicking inside an already-selected section.
|
|
264
|
-
event.preventDefault();
|
|
135
|
+
const handleRootFocus = (0, _useEventCallback.default)(event => {
|
|
136
|
+
onFocus?.(event);
|
|
137
|
+
rootProps.onFocus(event);
|
|
265
138
|
});
|
|
266
|
-
const
|
|
267
|
-
|
|
139
|
+
const handleRootClick = (0, _useEventCallback.default)(event => {
|
|
140
|
+
onClick?.(event);
|
|
141
|
+
rootProps.onClick(event);
|
|
268
142
|
});
|
|
269
|
-
const
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
if (readOnly || disabled || typeof parsedSelectedSections !== 'number') {
|
|
273
|
-
return;
|
|
274
|
-
}
|
|
275
|
-
const activeSection = state.sections[parsedSelectedSections];
|
|
276
|
-
const pastedValue = event.clipboardData.getData('text');
|
|
277
|
-
const lettersOnly = /^[a-zA-Z]+$/.test(pastedValue);
|
|
278
|
-
const digitsOnly = /^[0-9]+$/.test(pastedValue);
|
|
279
|
-
const digitsAndLetterOnly = /^(([a-zA-Z]+)|)([0-9]+)(([a-zA-Z]+)|)$/.test(pastedValue);
|
|
280
|
-
const isValidPastedValue = activeSection.contentType === 'letter' && lettersOnly || activeSection.contentType === 'digit' && digitsOnly || activeSection.contentType === 'digit-with-letter' && digitsAndLetterOnly;
|
|
281
|
-
if (isValidPastedValue) {
|
|
282
|
-
setCharacterQuery(null);
|
|
283
|
-
updateSectionValue({
|
|
284
|
-
section: activeSection,
|
|
285
|
-
newSectionValue: pastedValue,
|
|
286
|
-
shouldGoToNextSection: true
|
|
287
|
-
});
|
|
288
|
-
}
|
|
289
|
-
// If the pasted value corresponds to a single section, but not the expected type, we skip the modification
|
|
290
|
-
else if (!lettersOnly && !digitsOnly) {
|
|
291
|
-
setCharacterQuery(null);
|
|
292
|
-
updateValueFromValueStr(pastedValue);
|
|
293
|
-
}
|
|
294
|
-
});
|
|
295
|
-
const handleInputContentDragOver = (0, _useEventCallback.default)(event => {
|
|
296
|
-
event.preventDefault();
|
|
297
|
-
event.dataTransfer.dropEffect = 'none';
|
|
143
|
+
const handleRootPaste = (0, _useEventCallback.default)(event => {
|
|
144
|
+
onPaste?.(event);
|
|
145
|
+
rootProps.onPaste(event);
|
|
298
146
|
});
|
|
299
|
-
const
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
}
|
|
303
|
-
const target = event.target;
|
|
304
|
-
const keyPressed = target.textContent ?? '';
|
|
305
|
-
const sectionIndex = sectionListRef.current.getSectionIndexFromDOMElement(target);
|
|
306
|
-
const section = state.sections[sectionIndex];
|
|
307
|
-
if (readOnly || !sectionListRef.current) {
|
|
308
|
-
revertDOMSectionChange(sectionIndex);
|
|
309
|
-
return;
|
|
310
|
-
}
|
|
311
|
-
if (keyPressed.length === 0) {
|
|
312
|
-
if (section.value === '') {
|
|
313
|
-
revertDOMSectionChange(sectionIndex);
|
|
314
|
-
return;
|
|
315
|
-
}
|
|
316
|
-
const inputType = event.nativeEvent.inputType;
|
|
317
|
-
if (inputType === 'insertParagraph' || inputType === 'insertLineBreak') {
|
|
318
|
-
revertDOMSectionChange(sectionIndex);
|
|
319
|
-
return;
|
|
320
|
-
}
|
|
321
|
-
revertDOMSectionChange(sectionIndex);
|
|
322
|
-
clearActiveSection();
|
|
323
|
-
return;
|
|
324
|
-
}
|
|
325
|
-
applyCharacterEditing({
|
|
326
|
-
keyPressed,
|
|
327
|
-
sectionIndex
|
|
328
|
-
});
|
|
329
|
-
|
|
330
|
-
// The DOM value needs to remain the one React is expecting.
|
|
331
|
-
revertDOMSectionChange(sectionIndex);
|
|
147
|
+
const handleRootInput = (0, _useEventCallback.default)(event => {
|
|
148
|
+
onInput?.(event);
|
|
149
|
+
rootProps.onInput(event);
|
|
332
150
|
});
|
|
333
151
|
const handleClear = (0, _useEventCallback.default)((event, ...args) => {
|
|
334
152
|
event.preventDefault();
|
|
@@ -341,67 +159,18 @@ const useFieldV7TextField = parameters => {
|
|
|
341
159
|
setSelectedSections(sectionOrder.startIndex);
|
|
342
160
|
}
|
|
343
161
|
});
|
|
344
|
-
const handleContainerKeyDown = (0, _useFieldRootHandleKeyDown.useFieldRootHandleKeyDown)({
|
|
345
|
-
manager,
|
|
346
|
-
internalPropsWithDefaults,
|
|
347
|
-
stateResponse
|
|
348
|
-
});
|
|
349
|
-
const wrappedHandleContainerKeyDown = (0, _useEventCallback.default)(event => {
|
|
350
|
-
onKeyDown?.(event);
|
|
351
|
-
handleContainerKeyDown(event);
|
|
352
|
-
});
|
|
353
|
-
const isContainerEditable = parsedSelectedSections === 'all';
|
|
354
162
|
const elements = React.useMemo(() => {
|
|
355
|
-
return state.sections.map((section,
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
},
|
|
367
|
-
content: {
|
|
368
|
-
tabIndex: isContainerEditable || index > 0 ? -1 : 0,
|
|
369
|
-
contentEditable: !isContainerEditable && !disabled && !readOnly,
|
|
370
|
-
role: 'spinbutton',
|
|
371
|
-
id: `${id}-${section.type}`,
|
|
372
|
-
'aria-labelledby': `${id}-${section.type}`,
|
|
373
|
-
'aria-readonly': readOnly,
|
|
374
|
-
'aria-valuenow': (0, _useField.getSectionValueNow)(section, utils),
|
|
375
|
-
'aria-valuemin': sectionBoundaries.minimum,
|
|
376
|
-
'aria-valuemax': sectionBoundaries.maximum,
|
|
377
|
-
'aria-valuetext': section.value ? (0, _useField.getSectionValueText)(section, utils) : translations.empty,
|
|
378
|
-
'aria-label': translations[section.type],
|
|
379
|
-
'aria-disabled': disabled,
|
|
380
|
-
spellCheck: isEditable ? false : undefined,
|
|
381
|
-
autoCapitalize: isEditable ? 'off' : undefined,
|
|
382
|
-
autoCorrect: isEditable ? 'off' : undefined,
|
|
383
|
-
[parseInt(React.version, 10) >= 17 ? 'enterKeyHint' : 'enterkeyhint']: isEditable ? 'next' : undefined,
|
|
384
|
-
children: section.value || section.placeholder,
|
|
385
|
-
onInput: handleInputContentInput,
|
|
386
|
-
onPaste: handleInputContentPaste,
|
|
387
|
-
onFocus: getInputContentFocusHandler(index),
|
|
388
|
-
onDragOver: handleInputContentDragOver,
|
|
389
|
-
onMouseUp: handleInputContentMouseUp,
|
|
390
|
-
inputMode: section.contentType === 'letter' ? 'text' : 'numeric'
|
|
391
|
-
},
|
|
392
|
-
before: {
|
|
393
|
-
children: section.startSeparator
|
|
394
|
-
},
|
|
395
|
-
after: {
|
|
396
|
-
children: section.endSeparator
|
|
397
|
-
}
|
|
398
|
-
};
|
|
399
|
-
});
|
|
400
|
-
}, [disabled, fieldValueManager, getInputContainerClickHandler, getInputContentFocusHandler, handleInputContentDragOver, handleInputContentInput, handleInputContentMouseUp, handleInputContentPaste, id, isContainerEditable, readOnly, sectionsValueBoundaries, state.sections, translations, utils, value]);
|
|
401
|
-
const handleValueStrChange = (0, _useEventCallback.default)(event => {
|
|
402
|
-
updateValueFromValueStr(event.target.value);
|
|
403
|
-
});
|
|
404
|
-
const valueStr = React.useMemo(() => areAllSectionsEmpty ? '' : fieldValueManager.getV7HiddenInputValueFromSections(state.sections), [areAllSectionsEmpty, state.sections, fieldValueManager]);
|
|
163
|
+
return state.sections.map((section, sectionIndex) => ({
|
|
164
|
+
container: createSectionContainerProps(sectionIndex),
|
|
165
|
+
content: createSectionContentProps(section, sectionIndex),
|
|
166
|
+
before: {
|
|
167
|
+
children: section.startSeparator
|
|
168
|
+
},
|
|
169
|
+
after: {
|
|
170
|
+
children: section.endSeparator
|
|
171
|
+
}
|
|
172
|
+
}));
|
|
173
|
+
}, [state.sections, createSectionContainerProps, createSectionContentProps]);
|
|
405
174
|
React.useEffect(() => {
|
|
406
175
|
if (sectionListRef.current == null) {
|
|
407
176
|
throw new Error(['MUI X: The `sectionListRef` prop has not been initialized by `PickersSectionList`', 'You probably tried to pass a component to the `textField` slot that contains an `<input />` element instead of a `PickersSectionList`.', '', 'If you want to keep using an `<input />` HTML element for the editing, please remove the `enableAccessibleFieldDOMStructure` prop from your Picker or Field component:', '', '<DatePicker slots={{ textField: MyCustomTextField }} />', '', 'Learn more about the field accessible DOM structure on the MUI documentation: https://mui.com/x/react-date-pickers/fields/#fields-to-edit-a-single-element'].join('\n'));
|
|
@@ -425,7 +194,11 @@ const useFieldV7TextField = parameters => {
|
|
|
425
194
|
}
|
|
426
195
|
}, [parsedSelectedSections, focused]);
|
|
427
196
|
(0, _useEnhancedEffect.default)(() => {
|
|
428
|
-
syncSelectionToDOM(
|
|
197
|
+
(0, _syncSelectionToDOM.syncSelectionToDOM)({
|
|
198
|
+
focused,
|
|
199
|
+
domGetters,
|
|
200
|
+
stateResponse
|
|
201
|
+
});
|
|
429
202
|
});
|
|
430
203
|
React.useImperativeHandle(unstableFieldRef, () => ({
|
|
431
204
|
getSections: () => state.sections,
|
|
@@ -442,26 +215,22 @@ const useFieldV7TextField = parameters => {
|
|
|
442
215
|
focusField,
|
|
443
216
|
isFieldFocused: () => isFieldFocused(sectionListRef)
|
|
444
217
|
}));
|
|
445
|
-
return (0, _extends2.default)({}, forwardedProps, {
|
|
218
|
+
return (0, _extends2.default)({}, forwardedProps, rootProps, {
|
|
219
|
+
onBlur: handleRootBlur,
|
|
220
|
+
onClick: handleRootClick,
|
|
221
|
+
onFocus: handleRootFocus,
|
|
222
|
+
onInput: handleRootInput,
|
|
223
|
+
onPaste: handleRootPaste,
|
|
224
|
+
onKeyDown: handleRootKeyDown,
|
|
225
|
+
onClear: handleClear
|
|
226
|
+
}, hiddenInputProps, {
|
|
446
227
|
error,
|
|
447
228
|
clearable: Boolean(clearable && !areAllSectionsEmpty && !readOnly && !disabled),
|
|
448
229
|
focused: focusedProp ?? focused,
|
|
449
230
|
sectionListRef: handleSectionListRef,
|
|
450
|
-
onBlur: handleContainerBlur,
|
|
451
|
-
onClick: handleContainerClick,
|
|
452
|
-
onFocus: handleContainerFocus,
|
|
453
|
-
onInput: handleContainerInput,
|
|
454
|
-
onPaste: handleContainerPaste,
|
|
455
|
-
onKeyDown: wrappedHandleContainerKeyDown,
|
|
456
|
-
onClear: handleClear,
|
|
457
231
|
// Additional
|
|
458
232
|
enableAccessibleFieldDOMStructure: true,
|
|
459
233
|
elements,
|
|
460
|
-
// TODO v7: Try to set to undefined when there is a section selected.
|
|
461
|
-
tabIndex: parsedSelectedSections === 0 ? -1 : 0,
|
|
462
|
-
contentEditable: isContainerEditable,
|
|
463
|
-
value: valueStr,
|
|
464
|
-
onChange: handleValueStrChange,
|
|
465
234
|
areAllSectionsEmpty,
|
|
466
235
|
disabled,
|
|
467
236
|
readOnly,
|
|
@@ -9,6 +9,7 @@ import { DateOrTimeViewWithMeridiem } from "../../models/index.js";
|
|
|
9
9
|
*/
|
|
10
10
|
export declare const useMobilePicker: <TView extends DateOrTimeViewWithMeridiem, TEnableAccessibleFieldDOMStructure extends boolean, TExternalProps extends UseMobilePickerProps<TView, TEnableAccessibleFieldDOMStructure, any, TExternalProps>>({
|
|
11
11
|
props,
|
|
12
|
+
steps,
|
|
12
13
|
...pickerParams
|
|
13
14
|
}: UseMobilePickerParams<TView, TEnableAccessibleFieldDOMStructure, TExternalProps>) => {
|
|
14
15
|
renderPicker: () => React.JSX.Element;
|
|
@@ -15,8 +15,9 @@ var _usePicker = require("../usePicker");
|
|
|
15
15
|
var _PickersLayout = require("../../../PickersLayout");
|
|
16
16
|
var _PickerProvider = require("../../components/PickerProvider");
|
|
17
17
|
var _PickerFieldUI = require("../../components/PickerFieldUI");
|
|
18
|
+
var _createNonRangePickerStepNavigation = require("../../utils/createNonRangePickerStepNavigation");
|
|
18
19
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
19
|
-
const _excluded = ["props"],
|
|
20
|
+
const _excluded = ["props", "steps"],
|
|
20
21
|
_excluded2 = ["ownerState"];
|
|
21
22
|
/**
|
|
22
23
|
* Hook managing all the single-date mobile pickers:
|
|
@@ -26,7 +27,8 @@ const _excluded = ["props"],
|
|
|
26
27
|
*/
|
|
27
28
|
const useMobilePicker = _ref => {
|
|
28
29
|
let {
|
|
29
|
-
props
|
|
30
|
+
props,
|
|
31
|
+
steps
|
|
30
32
|
} = _ref,
|
|
31
33
|
pickerParams = (0, _objectWithoutPropertiesLoose2.default)(_ref, _excluded);
|
|
32
34
|
const {
|
|
@@ -36,6 +38,9 @@ const useMobilePicker = _ref => {
|
|
|
36
38
|
inputRef,
|
|
37
39
|
localeText
|
|
38
40
|
} = props;
|
|
41
|
+
const getStepNavigation = (0, _createNonRangePickerStepNavigation.createNonRangePickerStepNavigation)({
|
|
42
|
+
steps
|
|
43
|
+
});
|
|
39
44
|
const {
|
|
40
45
|
providerProps,
|
|
41
46
|
renderCurrentView,
|
|
@@ -45,7 +50,8 @@ const useMobilePicker = _ref => {
|
|
|
45
50
|
localeText,
|
|
46
51
|
autoFocusView: true,
|
|
47
52
|
viewContainerRole: 'dialog',
|
|
48
|
-
variant: 'mobile'
|
|
53
|
+
variant: 'mobile',
|
|
54
|
+
getStepNavigation
|
|
49
55
|
}));
|
|
50
56
|
const labelId = providerProps.privateContextValue.labelId;
|
|
51
57
|
const isToolbarHidden = innerSlotProps?.toolbar?.hidden ?? false;
|
|
@@ -7,6 +7,7 @@ import { PickerFieldSlotProps, PickerOwnerState } from "../../../models/index.js
|
|
|
7
7
|
import { ExportedPickersLayoutSlots, ExportedPickersLayoutSlotProps, PickersLayoutSlotProps } from "../../../PickersLayout/PickersLayout.types.js";
|
|
8
8
|
import { DateOrTimeViewWithMeridiem, PickerValue } from "../../models/index.js";
|
|
9
9
|
import { PickerFieldUISlotsFromContext, PickerFieldUISlotPropsFromContext } from "../../components/PickerFieldUI.js";
|
|
10
|
+
import { PickerStep } from "../../utils/createNonRangePickerStepNavigation.js";
|
|
10
11
|
export interface UseMobilePickerSlots extends PickersModalDialogSlots, ExportedPickersLayoutSlots<PickerValue>, PickerFieldUISlotsFromContext {
|
|
11
12
|
/**
|
|
12
13
|
* Component used to enter the date with the keyboard.
|
|
@@ -32,4 +33,10 @@ export interface UseMobilePickerProps<TView extends DateOrTimeViewWithMeridiem,
|
|
|
32
33
|
}
|
|
33
34
|
export interface UseMobilePickerParams<TView extends DateOrTimeViewWithMeridiem, TEnableAccessibleFieldDOMStructure extends boolean, TExternalProps extends UseMobilePickerProps<TView, TEnableAccessibleFieldDOMStructure, any, TExternalProps>> extends Pick<UsePickerParameters<PickerValue, TView, TExternalProps>, 'valueManager' | 'valueType' | 'validator' | 'ref'> {
|
|
34
35
|
props: TExternalProps;
|
|
36
|
+
/**
|
|
37
|
+
* Steps available for the picker.
|
|
38
|
+
* This will be used to define the behavior of navigation actions.
|
|
39
|
+
* If null, the picker will not have any step navigation.
|
|
40
|
+
*/
|
|
41
|
+
steps: PickerStep[] | null;
|
|
35
42
|
}
|
|
@@ -10,5 +10,6 @@ export declare const usePicker: <TValue extends PickerValidValue, TView extends
|
|
|
10
10
|
autoFocusView,
|
|
11
11
|
rendererInterceptor: RendererInterceptor,
|
|
12
12
|
localeText,
|
|
13
|
-
viewContainerRole
|
|
13
|
+
viewContainerRole,
|
|
14
|
+
getStepNavigation
|
|
14
15
|
}: UsePickerParameters<TValue, TView, TExternalProps>) => UsePickerReturnValue<TValue>;
|
|
@@ -31,7 +31,8 @@ const usePicker = ({
|
|
|
31
31
|
autoFocusView,
|
|
32
32
|
rendererInterceptor: RendererInterceptor,
|
|
33
33
|
localeText,
|
|
34
|
-
viewContainerRole
|
|
34
|
+
viewContainerRole,
|
|
35
|
+
getStepNavigation
|
|
35
36
|
}) => {
|
|
36
37
|
const {
|
|
37
38
|
// View props
|
|
@@ -198,6 +199,13 @@ const usePicker = ({
|
|
|
198
199
|
}
|
|
199
200
|
return 'enabled';
|
|
200
201
|
}, [disableOpenPicker, hasUIView, disabled, readOnly]);
|
|
202
|
+
const stepNavigation = getStepNavigation({
|
|
203
|
+
setView,
|
|
204
|
+
view,
|
|
205
|
+
initialView: initialView ?? views[0],
|
|
206
|
+
views
|
|
207
|
+
});
|
|
208
|
+
const wrappedGoToNextStep = (0, _useEventCallback.default)(stepNavigation.goToNextStep);
|
|
201
209
|
const actionsContextValue = React.useMemo(() => ({
|
|
202
210
|
setValue,
|
|
203
211
|
setOpen,
|
|
@@ -205,8 +213,9 @@ const usePicker = ({
|
|
|
205
213
|
setValueToToday,
|
|
206
214
|
acceptValueChanges,
|
|
207
215
|
cancelValueChanges,
|
|
208
|
-
setView
|
|
209
|
-
|
|
216
|
+
setView,
|
|
217
|
+
goToNextStep: wrappedGoToNextStep
|
|
218
|
+
}), [setValue, setOpen, clearValue, setValueToToday, acceptValueChanges, cancelValueChanges, setView, wrappedGoToNextStep]);
|
|
210
219
|
const contextValue = React.useMemo(() => (0, _extends2.default)({}, actionsContextValue, {
|
|
211
220
|
value,
|
|
212
221
|
timezone,
|
|
@@ -223,13 +232,14 @@ const usePicker = ({
|
|
|
223
232
|
reduceAnimations,
|
|
224
233
|
triggerRef,
|
|
225
234
|
triggerStatus,
|
|
235
|
+
hasNextStep: stepNavigation.hasNextStep,
|
|
226
236
|
fieldFormat: format ?? '',
|
|
227
237
|
name,
|
|
228
238
|
label,
|
|
229
239
|
rootSx: sx,
|
|
230
240
|
rootRef,
|
|
231
241
|
rootClassName: className
|
|
232
|
-
}), [actionsContextValue, value, rootRef, variant, orientation, reduceAnimations, disabled, readOnly, format, className, name, label, sx, triggerStatus, timezone, state.open, popperView, views, initialView, autoFocus]);
|
|
242
|
+
}), [actionsContextValue, value, rootRef, variant, orientation, reduceAnimations, disabled, readOnly, format, className, name, label, sx, triggerStatus, stepNavigation.hasNextStep, timezone, state.open, popperView, views, initialView, autoFocus]);
|
|
233
243
|
const privateContextValue = React.useMemo(() => ({
|
|
234
244
|
dismissViews,
|
|
235
245
|
ownerState,
|
|
@@ -7,6 +7,7 @@ import { UseViewsOptions } from "../useViews.js";
|
|
|
7
7
|
import { PickerProviderProps } from "../../components/PickerProvider.js";
|
|
8
8
|
import { PickersInputLocaleText } from "../../../locales/index.js";
|
|
9
9
|
import { PickerFieldPrivateContextValue } from "../useNullableFieldPrivateContext.js";
|
|
10
|
+
import { CreateStepNavigationReturnValue } from "../../utils/createStepNavigation.js";
|
|
10
11
|
/**
|
|
11
12
|
* Props common to all Picker headless implementations.
|
|
12
13
|
* Those props are exposed on all the Pickers.
|
|
@@ -130,6 +131,7 @@ export interface UsePickerParameters<TValue extends PickerValidValue, TView exte
|
|
|
130
131
|
*/
|
|
131
132
|
rendererInterceptor?: React.JSXElementConstructor<PickerRendererInterceptorProps<TValue, TView, TExternalProps>>;
|
|
132
133
|
props: TExternalProps;
|
|
134
|
+
getStepNavigation: CreateStepNavigationReturnValue;
|
|
133
135
|
}
|
|
134
136
|
export interface UsePickerReturnValue<TValue extends PickerValidValue> {
|
|
135
137
|
ownerState: PickerOwnerState;
|
|
@@ -9,6 +9,7 @@ import { DateOrTimeViewWithMeridiem } from "../../models/index.js";
|
|
|
9
9
|
*/
|
|
10
10
|
export declare const useStaticPicker: <TView extends DateOrTimeViewWithMeridiem, TExternalProps extends UseStaticPickerProps<TView, any, TExternalProps>>({
|
|
11
11
|
props,
|
|
12
|
+
steps,
|
|
12
13
|
...pickerParams
|
|
13
14
|
}: UseStaticPickerParams<TView, TExternalProps>) => {
|
|
14
15
|
renderPicker: () => React.JSX.Element;
|
|
@@ -16,8 +16,9 @@ var _PickerProvider = require("../../components/PickerProvider");
|
|
|
16
16
|
var _PickersLayout = require("../../../PickersLayout");
|
|
17
17
|
var _dimensions = require("../../constants/dimensions");
|
|
18
18
|
var _utils = require("../../utils/utils");
|
|
19
|
+
var _createNonRangePickerStepNavigation = require("../../utils/createNonRangePickerStepNavigation");
|
|
19
20
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
20
|
-
const _excluded = ["props"];
|
|
21
|
+
const _excluded = ["props", "steps"];
|
|
21
22
|
const PickerStaticLayout = (0, _styles.styled)(_PickersLayout.PickersLayout)(({
|
|
22
23
|
theme
|
|
23
24
|
}) => ({
|
|
@@ -34,7 +35,8 @@ const PickerStaticLayout = (0, _styles.styled)(_PickersLayout.PickersLayout)(({
|
|
|
34
35
|
*/
|
|
35
36
|
const useStaticPicker = _ref => {
|
|
36
37
|
let {
|
|
37
|
-
props
|
|
38
|
+
props,
|
|
39
|
+
steps
|
|
38
40
|
} = _ref,
|
|
39
41
|
pickerParams = (0, _objectWithoutPropertiesLoose2.default)(_ref, _excluded);
|
|
40
42
|
const {
|
|
@@ -44,6 +46,9 @@ const useStaticPicker = _ref => {
|
|
|
44
46
|
displayStaticWrapperAs,
|
|
45
47
|
autoFocus
|
|
46
48
|
} = props;
|
|
49
|
+
const getStepNavigation = (0, _createNonRangePickerStepNavigation.createNonRangePickerStepNavigation)({
|
|
50
|
+
steps
|
|
51
|
+
});
|
|
47
52
|
const {
|
|
48
53
|
providerProps,
|
|
49
54
|
renderCurrentView
|
|
@@ -52,7 +57,8 @@ const useStaticPicker = _ref => {
|
|
|
52
57
|
variant: displayStaticWrapperAs,
|
|
53
58
|
autoFocusView: autoFocus ?? false,
|
|
54
59
|
viewContainerRole: null,
|
|
55
|
-
localeText
|
|
60
|
+
localeText,
|
|
61
|
+
getStepNavigation
|
|
56
62
|
}));
|
|
57
63
|
const Layout = slots?.layout ?? PickerStaticLayout;
|
|
58
64
|
const renderPicker = () => /*#__PURE__*/(0, _jsxRuntime.jsx)(_PickerProvider.PickerProvider, (0, _extends2.default)({}, providerProps, {
|