@mui/x-date-pickers 7.0.0-beta.2 → 7.0.0-beta.4
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/AdapterDateFnsBase/AdapterDateFnsBase.d.ts +1 -0
- package/AdapterDateFnsBase/AdapterDateFnsBase.js +4 -0
- package/AdapterDateFnsJalali/AdapterDateFnsJalali.d.ts +1 -0
- package/AdapterDateFnsJalali/AdapterDateFnsJalali.js +4 -0
- package/AdapterDayjs/AdapterDayjs.d.ts +1 -0
- package/AdapterDayjs/AdapterDayjs.js +6 -0
- package/AdapterLuxon/AdapterLuxon.d.ts +1 -0
- package/AdapterLuxon/AdapterLuxon.js +6 -0
- package/AdapterMoment/AdapterMoment.d.ts +1 -0
- package/AdapterMoment/AdapterMoment.js +4 -0
- package/AdapterMomentHijri/AdapterMomentHijri.js +3 -0
- package/AdapterMomentJalaali/AdapterMomentJalaali.js +3 -0
- package/CHANGELOG.md +298 -23
- package/DateCalendar/DateCalendar.js +3 -1
- package/DateCalendar/DateCalendar.types.d.ts +3 -0
- package/DateCalendar/DayCalendar.d.ts +3 -1
- package/DateCalendar/DayCalendar.js +1 -1
- package/DateCalendar/PickersFadeTransitionGroup.d.ts +3 -0
- package/DateCalendar/PickersSlideTransition.d.ts +3 -0
- package/DateField/DateField.d.ts +1 -1
- package/DateField/DateField.js +11 -9
- package/DateField/DateField.types.d.ts +12 -15
- package/DateField/index.d.ts +1 -1
- package/DateField/useDateField.d.ts +2 -2
- package/DateField/useDateField.js +1 -15
- package/DatePicker/DatePicker.d.ts +1 -1
- package/DatePicker/DatePicker.js +9 -9
- package/DatePicker/DatePicker.types.d.ts +3 -3
- package/DatePicker/DatePickerToolbar.d.ts +5 -4
- package/DatePicker/DatePickerToolbar.js +11 -3
- package/DateTimeField/DateTimeField.d.ts +1 -1
- package/DateTimeField/DateTimeField.js +11 -9
- package/DateTimeField/DateTimeField.types.d.ts +12 -15
- package/DateTimeField/index.d.ts +1 -1
- package/DateTimeField/useDateTimeField.d.ts +2 -2
- package/DateTimeField/useDateTimeField.js +1 -20
- package/DateTimePicker/DateTimePicker.d.ts +1 -1
- package/DateTimePicker/DateTimePicker.js +9 -9
- package/DateTimePicker/DateTimePicker.types.d.ts +3 -3
- package/DateTimePicker/DateTimePickerTabs.d.ts +2 -2
- package/DateTimePicker/DateTimePickerTabs.js +7 -1
- package/DateTimePicker/DateTimePickerToolbar.d.ts +2 -2
- package/DateTimePicker/DateTimePickerToolbar.js +3 -0
- package/DesktopDatePicker/DesktopDatePicker.d.ts +1 -1
- package/DesktopDatePicker/DesktopDatePicker.js +9 -9
- package/DesktopDatePicker/DesktopDatePicker.types.d.ts +3 -3
- package/DesktopDateTimePicker/DesktopDateTimePicker.d.ts +1 -1
- package/DesktopDateTimePicker/DesktopDateTimePicker.js +9 -9
- package/DesktopDateTimePicker/DesktopDateTimePicker.types.d.ts +3 -3
- package/DesktopTimePicker/DesktopTimePicker.d.ts +1 -1
- package/DesktopTimePicker/DesktopTimePicker.js +9 -8
- package/DesktopTimePicker/DesktopTimePicker.types.d.ts +3 -3
- package/LocalizationProvider/LocalizationProvider.js +1 -0
- package/MobileDatePicker/MobileDatePicker.d.ts +1 -1
- package/MobileDatePicker/MobileDatePicker.js +9 -9
- package/MobileDatePicker/MobileDatePicker.types.d.ts +3 -3
- package/MobileDateTimePicker/MobileDateTimePicker.d.ts +2 -2
- package/MobileDateTimePicker/MobileDateTimePicker.js +9 -9
- package/MobileDateTimePicker/MobileDateTimePicker.types.d.ts +4 -4
- package/MobileTimePicker/MobileTimePicker.d.ts +2 -2
- package/MobileTimePicker/MobileTimePicker.js +9 -8
- package/MobileTimePicker/MobileTimePicker.types.d.ts +4 -4
- package/PickersLayout/PickersLayout.js +6 -0
- package/PickersLayout/PickersLayout.types.d.ts +6 -0
- package/PickersSectionList/PickersSectionList.d.ts +4 -4
- package/PickersSectionList/PickersSectionList.js +1 -2
- package/PickersTextField/PickersFilledInput/PickersFilledInput.js +3 -3
- package/PickersTextField/PickersInput/PickersInput.js +3 -3
- package/PickersTextField/PickersInputBase/PickersInputBase.d.ts +1 -1
- package/PickersTextField/PickersInputBase/PickersInputBase.js +11 -5
- package/PickersTextField/PickersInputBase/PickersInputBase.types.d.ts +1 -0
- package/PickersTextField/PickersOutlinedInput/PickersOutlinedInput.js +3 -3
- package/PickersTextField/PickersTextField.d.ts +1 -1
- package/PickersTextField/PickersTextField.js +9 -5
- package/StaticDatePicker/StaticDatePicker.js +0 -1
- package/StaticDateTimePicker/StaticDateTimePicker.js +0 -1
- package/TimeField/TimeField.d.ts +1 -1
- package/TimeField/TimeField.js +11 -9
- package/TimeField/TimeField.types.d.ts +12 -15
- package/TimeField/index.d.ts +1 -1
- package/TimeField/useTimeField.d.ts +2 -2
- package/TimeField/useTimeField.js +1 -13
- package/TimePicker/TimePicker.d.ts +1 -1
- package/TimePicker/TimePicker.js +9 -8
- package/TimePicker/TimePicker.types.d.ts +3 -3
- package/TimePicker/TimePickerToolbar.d.ts +5 -4
- package/TimePicker/TimePickerToolbar.js +11 -3
- package/hooks/index.d.ts +1 -1
- package/hooks/useClearableField.d.ts +10 -2
- package/index.js +1 -1
- package/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.types.d.ts +3 -0
- package/internals/components/PickersPopper.d.ts +3 -0
- package/internals/components/PickersPopper.js +1 -2
- package/internals/demo/DemoContainer.js +6 -5
- package/internals/hooks/defaultizedFieldProps.d.ts +19 -0
- package/internals/hooks/defaultizedFieldProps.js +43 -0
- package/internals/hooks/useDesktopPicker/useDesktopPicker.d.ts +1 -1
- package/internals/hooks/useDesktopPicker/useDesktopPicker.js +13 -5
- package/internals/hooks/useDesktopPicker/useDesktopPicker.types.d.ts +14 -13
- package/internals/hooks/useField/buildSectionsFromFormat.d.ts +16 -0
- package/internals/hooks/useField/buildSectionsFromFormat.js +251 -0
- package/internals/hooks/useField/index.d.ts +2 -2
- package/internals/hooks/useField/index.js +1 -1
- package/internals/hooks/useField/useField.d.ts +4 -4
- package/internals/hooks/useField/useField.js +82 -309
- package/internals/hooks/useField/useField.types.d.ts +92 -56
- package/internals/hooks/useField/useField.utils.d.ts +10 -10
- package/internals/hooks/useField/useField.utils.js +78 -228
- package/internals/hooks/useField/useFieldCharacterEditing.d.ts +7 -6
- package/internals/hooks/useField/useFieldCharacterEditing.js +6 -6
- package/internals/hooks/useField/useFieldState.d.ts +13 -11
- package/internals/hooks/useField/useFieldState.js +45 -61
- package/internals/hooks/useField/useFieldV6TextField.d.ts +25 -0
- package/internals/hooks/useField/useFieldV6TextField.js +324 -0
- package/internals/hooks/useField/useFieldV7TextField.d.ts +2 -0
- package/internals/hooks/useField/useFieldV7TextField.js +402 -0
- package/internals/hooks/useMobilePicker/useMobilePicker.d.ts +1 -1
- package/internals/hooks/useMobilePicker/useMobilePicker.js +13 -5
- package/internals/hooks/useMobilePicker/useMobilePicker.types.d.ts +12 -12
- package/internals/hooks/usePicker/usePicker.d.ts +1 -1
- package/internals/hooks/usePicker/usePicker.js +3 -3
- package/internals/hooks/usePicker/usePicker.types.d.ts +2 -2
- package/internals/hooks/usePicker/usePickerValue.d.ts +1 -1
- package/internals/hooks/usePicker/usePickerValue.js +2 -18
- package/internals/hooks/usePicker/usePickerValue.types.d.ts +5 -6
- package/internals/hooks/usePicker/usePickerViews.d.ts +4 -4
- package/internals/hooks/usePicker/usePickerViews.js +5 -6
- package/internals/hooks/useStaticPicker/useStaticPicker.js +1 -0
- package/internals/hooks/useStaticPicker/useStaticPicker.types.d.ts +1 -0
- package/internals/index.d.ts +5 -4
- package/internals/index.js +2 -1
- package/internals/models/fields.d.ts +2 -4
- package/internals/models/helpers.d.ts +1 -0
- package/internals/models/props/basePickerProps.d.ts +2 -7
- package/internals/models/props/tabs.d.ts +6 -0
- package/internals/models/props/toolbar.d.ts +3 -0
- package/internals/utils/convertFieldResponseIntoMuiTextFieldProps.d.ts +1 -1
- package/internals/utils/convertFieldResponseIntoMuiTextFieldProps.js +21 -3
- package/internals/utils/fields.js +1 -1
- package/internals/utils/valueManagers.js +5 -4
- package/locales/beBY.d.ts +9 -0
- package/locales/beBY.js +13 -0
- package/locales/caES.d.ts +9 -0
- package/locales/caES.js +13 -0
- package/locales/csCZ.d.ts +9 -0
- package/locales/csCZ.js +13 -0
- package/locales/daDK.d.ts +9 -0
- package/locales/daDK.js +13 -0
- package/locales/deDE.d.ts +9 -0
- package/locales/deDE.js +13 -0
- package/locales/elGR.d.ts +9 -0
- package/locales/elGR.js +13 -0
- package/locales/enUS.d.ts +9 -0
- package/locales/enUS.js +12 -1
- package/locales/esES.d.ts +9 -0
- package/locales/esES.js +13 -0
- package/locales/eu.d.ts +9 -0
- package/locales/eu.js +13 -0
- package/locales/faIR.d.ts +9 -0
- package/locales/faIR.js +13 -0
- package/locales/fiFI.d.ts +9 -0
- package/locales/fiFI.js +13 -0
- package/locales/frFR.d.ts +9 -0
- package/locales/frFR.js +13 -0
- package/locales/heIL.d.ts +9 -0
- package/locales/heIL.js +13 -0
- package/locales/huHU.d.ts +9 -0
- package/locales/huHU.js +13 -0
- package/locales/isIS.d.ts +9 -0
- package/locales/isIS.js +13 -0
- package/locales/itIT.d.ts +9 -0
- package/locales/itIT.js +13 -0
- package/locales/jaJP.d.ts +9 -0
- package/locales/jaJP.js +13 -0
- package/locales/koKR.d.ts +9 -0
- package/locales/koKR.js +13 -0
- package/locales/kzKZ.d.ts +9 -0
- package/locales/kzKZ.js +13 -0
- package/locales/mk.d.ts +9 -0
- package/locales/mk.js +13 -0
- package/locales/nbNO.d.ts +9 -0
- package/locales/nbNO.js +13 -0
- package/locales/nlNL.d.ts +9 -0
- package/locales/nlNL.js +13 -0
- package/locales/plPL.d.ts +9 -0
- package/locales/plPL.js +13 -0
- package/locales/ptBR.d.ts +9 -0
- package/locales/ptBR.js +13 -0
- package/locales/roRO.d.ts +9 -0
- package/locales/roRO.js +13 -0
- package/locales/ruRU.d.ts +9 -0
- package/locales/ruRU.js +13 -0
- package/locales/skSK.d.ts +9 -0
- package/locales/skSK.js +13 -0
- package/locales/svSE.d.ts +9 -0
- package/locales/svSE.js +13 -0
- package/locales/trTR.d.ts +9 -0
- package/locales/trTR.js +13 -0
- package/locales/ukUA.d.ts +9 -0
- package/locales/ukUA.js +13 -0
- package/locales/urPK.d.ts +9 -0
- package/locales/urPK.js +13 -0
- package/locales/utils/getPickersLocalization.d.ts +9 -0
- package/locales/utils/pickersLocaleTextApi.d.ts +9 -0
- package/locales/viVN.d.ts +9 -0
- package/locales/viVN.js +13 -0
- package/locales/zhCN.d.ts +9 -0
- package/locales/zhCN.js +13 -0
- package/locales/zhHK.d.ts +9 -0
- package/locales/zhHK.js +13 -0
- package/models/adapters.d.ts +13 -0
- package/models/fields.d.ts +47 -32
- package/modern/AdapterDateFnsBase/AdapterDateFnsBase.js +4 -0
- package/modern/AdapterDateFnsJalali/AdapterDateFnsJalali.js +4 -0
- package/modern/AdapterDayjs/AdapterDayjs.js +6 -0
- package/modern/AdapterLuxon/AdapterLuxon.js +6 -0
- package/modern/AdapterMoment/AdapterMoment.js +4 -0
- package/modern/AdapterMomentHijri/AdapterMomentHijri.js +3 -0
- package/modern/AdapterMomentJalaali/AdapterMomentJalaali.js +3 -0
- package/modern/DateCalendar/DateCalendar.js +3 -1
- package/modern/DateCalendar/DayCalendar.js +1 -1
- package/modern/DateField/DateField.js +11 -9
- package/modern/DateField/useDateField.js +1 -14
- package/modern/DatePicker/DatePicker.js +9 -9
- package/modern/DatePicker/DatePickerToolbar.js +11 -3
- package/modern/DateTimeField/DateTimeField.js +11 -9
- package/modern/DateTimeField/useDateTimeField.js +1 -19
- package/modern/DateTimePicker/DateTimePicker.js +9 -9
- package/modern/DateTimePicker/DateTimePickerTabs.js +7 -1
- package/modern/DateTimePicker/DateTimePickerToolbar.js +3 -0
- package/modern/DesktopDatePicker/DesktopDatePicker.js +9 -9
- package/modern/DesktopDateTimePicker/DesktopDateTimePicker.js +9 -9
- package/modern/DesktopTimePicker/DesktopTimePicker.js +9 -8
- package/modern/LocalizationProvider/LocalizationProvider.js +1 -0
- package/modern/MobileDatePicker/MobileDatePicker.js +9 -9
- package/modern/MobileDateTimePicker/MobileDateTimePicker.js +9 -9
- package/modern/MobileTimePicker/MobileTimePicker.js +9 -8
- package/modern/PickersLayout/PickersLayout.js +6 -0
- package/modern/PickersSectionList/PickersSectionList.js +1 -2
- package/modern/PickersTextField/PickersFilledInput/PickersFilledInput.js +3 -3
- package/modern/PickersTextField/PickersInput/PickersInput.js +3 -3
- package/modern/PickersTextField/PickersInputBase/PickersInputBase.js +11 -5
- package/modern/PickersTextField/PickersOutlinedInput/PickersOutlinedInput.js +3 -3
- package/modern/PickersTextField/PickersTextField.js +9 -5
- package/modern/StaticDatePicker/StaticDatePicker.js +0 -1
- package/modern/StaticDateTimePicker/StaticDateTimePicker.js +0 -1
- package/modern/TimeField/TimeField.js +11 -9
- package/modern/TimeField/useTimeField.js +1 -12
- package/modern/TimePicker/TimePicker.js +9 -8
- package/modern/TimePicker/TimePickerToolbar.js +11 -3
- package/modern/index.js +1 -1
- package/modern/internals/components/PickersPopper.js +1 -2
- package/modern/internals/demo/DemoContainer.js +6 -5
- package/modern/internals/hooks/defaultizedFieldProps.js +40 -0
- package/modern/internals/hooks/useDesktopPicker/useDesktopPicker.js +13 -5
- package/modern/internals/hooks/useField/buildSectionsFromFormat.js +251 -0
- package/modern/internals/hooks/useField/index.js +1 -1
- package/modern/internals/hooks/useField/useField.js +82 -303
- package/modern/internals/hooks/useField/useField.utils.js +78 -228
- package/modern/internals/hooks/useField/useFieldCharacterEditing.js +6 -6
- package/modern/internals/hooks/useField/useFieldState.js +45 -61
- package/modern/internals/hooks/useField/useFieldV6TextField.js +318 -0
- package/modern/internals/hooks/useField/useFieldV7TextField.js +400 -0
- package/modern/internals/hooks/useMobilePicker/useMobilePicker.js +13 -5
- package/modern/internals/hooks/usePicker/usePicker.js +3 -3
- package/modern/internals/hooks/usePicker/usePickerValue.js +2 -18
- package/modern/internals/hooks/usePicker/usePickerViews.js +4 -6
- package/modern/internals/hooks/useStaticPicker/useStaticPicker.js +1 -0
- package/modern/internals/index.js +2 -1
- package/modern/internals/utils/convertFieldResponseIntoMuiTextFieldProps.js +21 -3
- package/modern/internals/utils/fields.js +1 -1
- package/modern/internals/utils/valueManagers.js +5 -4
- package/modern/locales/beBY.js +13 -0
- package/modern/locales/caES.js +13 -0
- package/modern/locales/csCZ.js +13 -0
- package/modern/locales/daDK.js +13 -0
- package/modern/locales/deDE.js +13 -0
- package/modern/locales/elGR.js +13 -0
- package/modern/locales/enUS.js +12 -1
- package/modern/locales/esES.js +13 -0
- package/modern/locales/eu.js +13 -0
- package/modern/locales/faIR.js +13 -0
- package/modern/locales/fiFI.js +13 -0
- package/modern/locales/frFR.js +13 -0
- package/modern/locales/heIL.js +13 -0
- package/modern/locales/huHU.js +13 -0
- package/modern/locales/isIS.js +13 -0
- package/modern/locales/itIT.js +13 -0
- package/modern/locales/jaJP.js +13 -0
- package/modern/locales/koKR.js +13 -0
- package/modern/locales/kzKZ.js +13 -0
- package/modern/locales/mk.js +13 -0
- package/modern/locales/nbNO.js +13 -0
- package/modern/locales/nlNL.js +13 -0
- package/modern/locales/plPL.js +13 -0
- package/modern/locales/ptBR.js +13 -0
- package/modern/locales/roRO.js +13 -0
- package/modern/locales/ruRU.js +13 -0
- package/modern/locales/skSK.js +13 -0
- package/modern/locales/svSE.js +13 -0
- package/modern/locales/trTR.js +13 -0
- package/modern/locales/ukUA.js +13 -0
- package/modern/locales/urPK.js +13 -0
- package/modern/locales/viVN.js +13 -0
- package/modern/locales/zhCN.js +13 -0
- package/modern/locales/zhHK.js +13 -0
- package/node/AdapterDateFnsBase/AdapterDateFnsBase.js +4 -0
- package/node/AdapterDateFnsJalali/AdapterDateFnsJalali.js +4 -0
- package/node/AdapterDayjs/AdapterDayjs.js +6 -0
- package/node/AdapterLuxon/AdapterLuxon.js +6 -0
- package/node/AdapterMoment/AdapterMoment.js +4 -0
- package/node/AdapterMomentHijri/AdapterMomentHijri.js +3 -0
- package/node/AdapterMomentJalaali/AdapterMomentJalaali.js +3 -0
- package/node/DateCalendar/DateCalendar.js +3 -1
- package/node/DateCalendar/DayCalendar.js +1 -1
- package/node/DateField/DateField.js +11 -9
- package/node/DateField/useDateField.js +2 -16
- package/node/DatePicker/DatePicker.js +9 -9
- package/node/DatePicker/DatePickerToolbar.js +11 -3
- package/node/DateTimeField/DateTimeField.js +11 -9
- package/node/DateTimeField/useDateTimeField.js +2 -21
- package/node/DateTimePicker/DateTimePicker.js +9 -9
- package/node/DateTimePicker/DateTimePickerTabs.js +7 -1
- package/node/DateTimePicker/DateTimePickerToolbar.js +3 -0
- package/node/DesktopDatePicker/DesktopDatePicker.js +9 -9
- package/node/DesktopDateTimePicker/DesktopDateTimePicker.js +9 -9
- package/node/DesktopTimePicker/DesktopTimePicker.js +9 -8
- package/node/LocalizationProvider/LocalizationProvider.js +1 -0
- package/node/MobileDatePicker/MobileDatePicker.js +9 -9
- package/node/MobileDateTimePicker/MobileDateTimePicker.js +9 -9
- package/node/MobileTimePicker/MobileTimePicker.js +9 -8
- package/node/PickersLayout/PickersLayout.js +6 -0
- package/node/PickersSectionList/PickersSectionList.js +4 -5
- package/node/PickersTextField/PickersFilledInput/PickersFilledInput.js +3 -3
- package/node/PickersTextField/PickersInput/PickersInput.js +3 -3
- package/node/PickersTextField/PickersInputBase/PickersInputBase.js +11 -5
- package/node/PickersTextField/PickersOutlinedInput/PickersOutlinedInput.js +3 -3
- package/node/PickersTextField/PickersTextField.js +9 -5
- package/node/StaticDatePicker/StaticDatePicker.js +0 -1
- package/node/StaticDateTimePicker/StaticDateTimePicker.js +0 -1
- package/node/TimeField/TimeField.js +11 -9
- package/node/TimeField/useTimeField.js +2 -14
- package/node/TimePicker/TimePicker.js +9 -8
- package/node/TimePicker/TimePickerToolbar.js +11 -3
- package/node/index.js +1 -1
- package/node/internals/components/PickersPopper.js +1 -2
- package/node/internals/demo/DemoContainer.js +6 -5
- package/node/internals/hooks/defaultizedFieldProps.js +50 -0
- package/node/internals/hooks/useDesktopPicker/useDesktopPicker.js +13 -5
- package/node/internals/hooks/useField/buildSectionsFromFormat.js +259 -0
- package/node/internals/hooks/useField/index.js +4 -10
- package/node/internals/hooks/useField/useField.js +81 -302
- package/node/internals/hooks/useField/useField.utils.js +86 -236
- package/node/internals/hooks/useField/useFieldCharacterEditing.js +6 -6
- package/node/internals/hooks/useField/useFieldState.js +44 -60
- package/node/internals/hooks/useField/useFieldV6TextField.js +329 -0
- package/node/internals/hooks/useField/useFieldV7TextField.js +410 -0
- package/node/internals/hooks/useMobilePicker/useMobilePicker.js +13 -5
- package/node/internals/hooks/usePicker/usePicker.js +3 -3
- package/node/internals/hooks/usePicker/usePickerValue.js +2 -18
- package/node/internals/hooks/usePicker/usePickerViews.js +4 -6
- package/node/internals/hooks/useStaticPicker/useStaticPicker.js +1 -0
- package/node/internals/index.js +27 -8
- package/node/internals/utils/convertFieldResponseIntoMuiTextFieldProps.js +21 -3
- package/node/internals/utils/fields.js +1 -1
- package/node/internals/utils/valueManagers.js +4 -3
- package/node/locales/beBY.js +13 -0
- package/node/locales/caES.js +13 -0
- package/node/locales/csCZ.js +13 -0
- package/node/locales/daDK.js +13 -0
- package/node/locales/deDE.js +13 -0
- package/node/locales/elGR.js +13 -0
- package/node/locales/enUS.js +12 -1
- package/node/locales/esES.js +13 -0
- package/node/locales/eu.js +13 -0
- package/node/locales/faIR.js +13 -0
- package/node/locales/fiFI.js +13 -0
- package/node/locales/frFR.js +13 -0
- package/node/locales/heIL.js +13 -0
- package/node/locales/huHU.js +13 -0
- package/node/locales/isIS.js +13 -0
- package/node/locales/itIT.js +13 -0
- package/node/locales/jaJP.js +13 -0
- package/node/locales/koKR.js +13 -0
- package/node/locales/kzKZ.js +13 -0
- package/node/locales/mk.js +13 -0
- package/node/locales/nbNO.js +13 -0
- package/node/locales/nlNL.js +13 -0
- package/node/locales/plPL.js +13 -0
- package/node/locales/ptBR.js +13 -0
- package/node/locales/roRO.js +13 -0
- package/node/locales/ruRU.js +13 -0
- package/node/locales/skSK.js +13 -0
- package/node/locales/svSE.js +13 -0
- package/node/locales/trTR.js +13 -0
- package/node/locales/ukUA.js +13 -0
- package/node/locales/urPK.js +13 -0
- package/node/locales/viVN.js +13 -0
- package/node/locales/zhCN.js +13 -0
- package/node/locales/zhHK.js +13 -0
- package/package.json +4 -4
- package/themeAugmentation/props.d.ts +3 -3
- package/timeViewRenderers/timeViewRenderers.d.ts +1 -1
- package/legacy/AdapterDateFns/AdapterDateFns.js +0 -298
- package/legacy/AdapterDateFns/index.js +0 -1
- package/legacy/AdapterDateFnsBase/AdapterDateFnsBase.js +0 -293
- package/legacy/AdapterDateFnsBase/index.js +0 -1
- package/legacy/AdapterDateFnsJalali/AdapterDateFnsJalali.js +0 -547
- package/legacy/AdapterDateFnsJalali/index.js +0 -1
- package/legacy/AdapterDateFnsV3/AdapterDateFnsV3.js +0 -306
- package/legacy/AdapterDateFnsV3/index.js +0 -1
- package/legacy/AdapterDayjs/AdapterDayjs.js +0 -568
- package/legacy/AdapterDayjs/index.js +0 -1
- package/legacy/AdapterLuxon/AdapterLuxon.js +0 -508
- package/legacy/AdapterLuxon/index.js +0 -1
- package/legacy/AdapterMoment/AdapterMoment.js +0 -481
- package/legacy/AdapterMoment/index.js +0 -1
- package/legacy/AdapterMomentHijri/AdapterMomentHijri.js +0 -238
- package/legacy/AdapterMomentHijri/index.js +0 -1
- package/legacy/AdapterMomentJalaali/AdapterMomentJalaali.js +0 -235
- package/legacy/AdapterMomentJalaali/index.js +0 -1
- package/legacy/DateCalendar/DateCalendar.js +0 -573
- package/legacy/DateCalendar/DateCalendar.types.js +0 -1
- package/legacy/DateCalendar/DayCalendar.js +0 -515
- package/legacy/DateCalendar/PickersFadeTransitionGroup.js +0 -58
- package/legacy/DateCalendar/PickersSlideTransition.js +0 -118
- package/legacy/DateCalendar/dateCalendarClasses.js +0 -5
- package/legacy/DateCalendar/dayCalendarClasses.js +0 -5
- package/legacy/DateCalendar/index.js +0 -5
- package/legacy/DateCalendar/pickersFadeTransitionGroupClasses.js +0 -5
- package/legacy/DateCalendar/pickersSlideTransitionClasses.js +0 -5
- package/legacy/DateCalendar/useCalendarState.js +0 -124
- package/legacy/DateCalendar/useIsDateDisabled.js +0 -30
- package/legacy/DateField/DateField.js +0 -319
- package/legacy/DateField/DateField.types.js +0 -1
- package/legacy/DateField/index.js +0 -2
- package/legacy/DateField/useDateField.js +0 -33
- package/legacy/DatePicker/DatePicker.js +0 -353
- package/legacy/DatePicker/DatePicker.types.js +0 -1
- package/legacy/DatePicker/DatePickerToolbar.js +0 -132
- package/legacy/DatePicker/datePickerToolbarClasses.js +0 -5
- package/legacy/DatePicker/index.js +0 -3
- package/legacy/DatePicker/shared.js +0 -41
- package/legacy/DateTimeField/DateTimeField.js +0 -360
- package/legacy/DateTimeField/DateTimeField.types.js +0 -1
- package/legacy/DateTimeField/index.js +0 -2
- package/legacy/DateTimeField/useDateTimeField.js +0 -38
- package/legacy/DateTimePicker/DateTimePicker.js +0 -424
- package/legacy/DateTimePicker/DateTimePicker.types.js +0 -1
- package/legacy/DateTimePicker/DateTimePickerTabs.js +0 -142
- package/legacy/DateTimePicker/DateTimePickerToolbar.js +0 -385
- package/legacy/DateTimePicker/dateTimePickerTabsClasses.js +0 -5
- package/legacy/DateTimePicker/dateTimePickerToolbarClasses.js +0 -5
- package/legacy/DateTimePicker/index.js +0 -5
- package/legacy/DateTimePicker/shared.js +0 -56
- package/legacy/DayCalendarSkeleton/DayCalendarSkeleton.js +0 -119
- package/legacy/DayCalendarSkeleton/dayCalendarSkeletonClasses.js +0 -5
- package/legacy/DayCalendarSkeleton/index.js +0 -2
- package/legacy/DesktopDatePicker/DesktopDatePicker.js +0 -372
- package/legacy/DesktopDatePicker/DesktopDatePicker.types.js +0 -1
- package/legacy/DesktopDatePicker/index.js +0 -1
- package/legacy/DesktopDateTimePicker/DesktopDateTimePicker.js +0 -480
- package/legacy/DesktopDateTimePicker/DesktopDateTimePicker.types.js +0 -1
- package/legacy/DesktopDateTimePicker/index.js +0 -1
- package/legacy/DesktopTimePicker/DesktopTimePicker.js +0 -355
- package/legacy/DesktopTimePicker/DesktopTimePicker.types.js +0 -1
- package/legacy/DesktopTimePicker/index.js +0 -1
- package/legacy/DigitalClock/DigitalClock.js +0 -443
- package/legacy/DigitalClock/DigitalClock.types.js +0 -1
- package/legacy/DigitalClock/digitalClockClasses.js +0 -6
- package/legacy/DigitalClock/index.js +0 -2
- package/legacy/LocalizationProvider/LocalizationProvider.js +0 -140
- package/legacy/LocalizationProvider/index.js +0 -1
- package/legacy/MobileDatePicker/MobileDatePicker.js +0 -369
- package/legacy/MobileDatePicker/MobileDatePicker.types.js +0 -1
- package/legacy/MobileDatePicker/index.js +0 -1
- package/legacy/MobileDateTimePicker/MobileDateTimePicker.js +0 -428
- package/legacy/MobileDateTimePicker/MobileDateTimePicker.types.js +0 -1
- package/legacy/MobileDateTimePicker/index.js +0 -1
- package/legacy/MobileTimePicker/MobileTimePicker.js +0 -311
- package/legacy/MobileTimePicker/MobileTimePicker.types.js +0 -1
- package/legacy/MobileTimePicker/index.js +0 -1
- package/legacy/MonthCalendar/MonthCalendar.js +0 -338
- package/legacy/MonthCalendar/MonthCalendar.types.js +0 -1
- package/legacy/MonthCalendar/PickersMonth.js +0 -135
- package/legacy/MonthCalendar/index.js +0 -3
- package/legacy/MonthCalendar/monthCalendarClasses.js +0 -5
- package/legacy/MonthCalendar/pickersMonthClasses.js +0 -5
- package/legacy/MultiSectionDigitalClock/MultiSectionDigitalClock.js +0 -521
- package/legacy/MultiSectionDigitalClock/MultiSectionDigitalClock.types.js +0 -1
- package/legacy/MultiSectionDigitalClock/MultiSectionDigitalClock.utils.js +0 -76
- package/legacy/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +0 -173
- package/legacy/MultiSectionDigitalClock/index.js +0 -3
- package/legacy/MultiSectionDigitalClock/multiSectionDigitalClockClasses.js +0 -6
- package/legacy/MultiSectionDigitalClock/multiSectionDigitalClockSectionClasses.js +0 -6
- package/legacy/PickersActionBar/PickersActionBar.js +0 -86
- package/legacy/PickersActionBar/index.js +0 -1
- package/legacy/PickersCalendarHeader/PickersCalendarHeader.js +0 -284
- package/legacy/PickersCalendarHeader/PickersCalendarHeader.types.js +0 -1
- package/legacy/PickersCalendarHeader/index.js +0 -2
- package/legacy/PickersCalendarHeader/pickersCalendarHeaderClasses.js +0 -5
- package/legacy/PickersDay/PickersDay.js +0 -367
- package/legacy/PickersDay/index.js +0 -2
- package/legacy/PickersDay/pickersDayClasses.js +0 -5
- package/legacy/PickersLayout/PickersLayout.js +0 -159
- package/legacy/PickersLayout/PickersLayout.types.js +0 -1
- package/legacy/PickersLayout/index.js +0 -3
- package/legacy/PickersLayout/pickersLayoutClasses.js +0 -6
- package/legacy/PickersLayout/usePickerLayout.js +0 -134
- package/legacy/PickersSectionList/PickersSectionList.js +0 -235
- package/legacy/PickersSectionList/PickersSectionList.types.js +0 -1
- package/legacy/PickersSectionList/index.js +0 -2
- package/legacy/PickersSectionList/pickersSectionListClasses.js +0 -6
- package/legacy/PickersShortcuts/PickersShortcuts.js +0 -110
- package/legacy/PickersShortcuts/index.js +0 -1
- package/legacy/PickersTextField/PickersFilledInput/PickersFilledInput.js +0 -234
- package/legacy/PickersTextField/PickersFilledInput/index.js +0 -2
- package/legacy/PickersTextField/PickersFilledInput/pickersFilledInputClasses.js +0 -8
- package/legacy/PickersTextField/PickersInput/PickersInput.js +0 -190
- package/legacy/PickersTextField/PickersInput/index.js +0 -2
- package/legacy/PickersTextField/PickersInput/pickersInputClasses.js +0 -8
- package/legacy/PickersTextField/PickersInputBase/PickersInputBase.js +0 -340
- package/legacy/PickersTextField/PickersInputBase/PickersInputBase.types.js +0 -1
- package/legacy/PickersTextField/PickersInputBase/index.js +0 -2
- package/legacy/PickersTextField/PickersInputBase/pickersInputBaseClasses.js +0 -6
- package/legacy/PickersTextField/PickersOutlinedInput/Outline.js +0 -121
- package/legacy/PickersTextField/PickersOutlinedInput/PickersOutlinedInput.js +0 -183
- package/legacy/PickersTextField/PickersOutlinedInput/index.js +0 -2
- package/legacy/PickersTextField/PickersOutlinedInput/pickersOutlinedInputClasses.js +0 -8
- package/legacy/PickersTextField/PickersTextField.js +0 -258
- package/legacy/PickersTextField/PickersTextField.types.js +0 -1
- package/legacy/PickersTextField/index.js +0 -6
- package/legacy/PickersTextField/pickersTextFieldClasses.js +0 -6
- package/legacy/StaticDatePicker/StaticDatePicker.js +0 -297
- package/legacy/StaticDatePicker/StaticDatePicker.types.js +0 -1
- package/legacy/StaticDatePicker/index.js +0 -1
- package/legacy/StaticDateTimePicker/StaticDateTimePicker.js +0 -356
- package/legacy/StaticDateTimePicker/StaticDateTimePicker.types.js +0 -1
- package/legacy/StaticDateTimePicker/index.js +0 -1
- package/legacy/StaticTimePicker/StaticTimePicker.js +0 -238
- package/legacy/StaticTimePicker/StaticTimePicker.types.js +0 -1
- package/legacy/StaticTimePicker/index.js +0 -1
- package/legacy/TimeClock/Clock.js +0 -358
- package/legacy/TimeClock/ClockNumber.js +0 -87
- package/legacy/TimeClock/ClockNumbers.js +0 -73
- package/legacy/TimeClock/ClockPointer.js +0 -106
- package/legacy/TimeClock/TimeClock.js +0 -481
- package/legacy/TimeClock/TimeClock.types.js +0 -1
- package/legacy/TimeClock/clockClasses.js +0 -5
- package/legacy/TimeClock/clockNumberClasses.js +0 -5
- package/legacy/TimeClock/clockPointerClasses.js +0 -5
- package/legacy/TimeClock/index.js +0 -5
- package/legacy/TimeClock/shared.js +0 -53
- package/legacy/TimeClock/timeClockClasses.js +0 -5
- package/legacy/TimeField/TimeField.js +0 -320
- package/legacy/TimeField/TimeField.types.js +0 -1
- package/legacy/TimeField/index.js +0 -2
- package/legacy/TimeField/useTimeField.js +0 -31
- package/legacy/TimePicker/TimePicker.js +0 -314
- package/legacy/TimePicker/TimePicker.types.js +0 -1
- package/legacy/TimePicker/TimePickerToolbar.js +0 -260
- package/legacy/TimePicker/index.js +0 -3
- package/legacy/TimePicker/shared.js +0 -45
- package/legacy/TimePicker/timePickerToolbarClasses.js +0 -5
- package/legacy/YearCalendar/PickersYear.js +0 -137
- package/legacy/YearCalendar/YearCalendar.js +0 -362
- package/legacy/YearCalendar/YearCalendar.types.js +0 -1
- package/legacy/YearCalendar/index.js +0 -3
- package/legacy/YearCalendar/pickersYearClasses.js +0 -5
- package/legacy/YearCalendar/yearCalendarClasses.js +0 -5
- package/legacy/dateTimeViewRenderers/dateTimeViewRenderers.js +0 -162
- package/legacy/dateTimeViewRenderers/index.js +0 -1
- package/legacy/dateViewRenderers/dateViewRenderers.js +0 -82
- package/legacy/dateViewRenderers/index.js +0 -1
- package/legacy/hooks/index.js +0 -1
- package/legacy/hooks/useClearableField.js +0 -76
- package/legacy/icons/index.js +0 -68
- package/legacy/index.js +0 -59
- package/legacy/internals/components/DateTimeViewWrapper/DateTimeViewWrapper.js +0 -5
- package/legacy/internals/components/DateTimeViewWrapper/index.js +0 -1
- package/legacy/internals/components/PickerViewRoot/PickerViewRoot.js +0 -10
- package/legacy/internals/components/PickerViewRoot/index.js +0 -1
- package/legacy/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +0 -170
- package/legacy/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.types.js +0 -1
- package/legacy/internals/components/PickersArrowSwitcher/index.js +0 -2
- package/legacy/internals/components/PickersArrowSwitcher/pickersArrowSwitcherClasses.js +0 -5
- package/legacy/internals/components/PickersModalDialog.js +0 -42
- package/legacy/internals/components/PickersPopper.js +0 -325
- package/legacy/internals/components/PickersToolbar.js +0 -92
- package/legacy/internals/components/PickersToolbarButton.js +0 -61
- package/legacy/internals/components/PickersToolbarText.js +0 -52
- package/legacy/internals/components/pickersPopperClasses.js +0 -5
- package/legacy/internals/components/pickersToolbarButtonClasses.js +0 -5
- package/legacy/internals/components/pickersToolbarClasses.js +0 -5
- package/legacy/internals/components/pickersToolbarTextClasses.js +0 -5
- package/legacy/internals/constants/dimensions.js +0 -7
- package/legacy/internals/demo/DemoContainer.js +0 -163
- package/legacy/internals/demo/index.js +0 -1
- package/legacy/internals/hooks/date-helpers-hooks.js +0 -37
- package/legacy/internals/hooks/useClockReferenceDate.js +0 -28
- package/legacy/internals/hooks/useDefaultReduceAnimations.js +0 -14
- package/legacy/internals/hooks/useDesktopPicker/index.js +0 -1
- package/legacy/internals/hooks/useDesktopPicker/useDesktopPicker.js +0 -174
- package/legacy/internals/hooks/useDesktopPicker/useDesktopPicker.types.js +0 -1
- package/legacy/internals/hooks/useField/index.js +0 -2
- package/legacy/internals/hooks/useField/useField.js +0 -470
- package/legacy/internals/hooks/useField/useField.types.js +0 -1
- package/legacy/internals/hooks/useField/useField.utils.js +0 -828
- package/legacy/internals/hooks/useField/useFieldCharacterEditing.js +0 -277
- package/legacy/internals/hooks/useField/useFieldState.js +0 -321
- package/legacy/internals/hooks/useIsLandscape.js +0 -39
- package/legacy/internals/hooks/useMobilePicker/index.js +0 -1
- package/legacy/internals/hooks/useMobilePicker/useMobilePicker.js +0 -126
- package/legacy/internals/hooks/useMobilePicker/useMobilePicker.types.js +0 -1
- package/legacy/internals/hooks/useOpenState.js +0 -38
- package/legacy/internals/hooks/usePicker/index.js +0 -1
- package/legacy/internals/hooks/usePicker/usePicker.js +0 -54
- package/legacy/internals/hooks/usePicker/usePicker.types.js +0 -1
- package/legacy/internals/hooks/usePicker/usePickerLayoutProps.js +0 -28
- package/legacy/internals/hooks/usePicker/usePickerValue.js +0 -365
- package/legacy/internals/hooks/usePicker/usePickerValue.types.js +0 -1
- package/legacy/internals/hooks/usePicker/usePickerViews.js +0 -172
- package/legacy/internals/hooks/useStaticPicker/index.js +0 -1
- package/legacy/internals/hooks/useStaticPicker/useStaticPicker.js +0 -66
- package/legacy/internals/hooks/useStaticPicker/useStaticPicker.types.js +0 -1
- package/legacy/internals/hooks/useUtils.js +0 -38
- package/legacy/internals/hooks/useValidation.js +0 -20
- package/legacy/internals/hooks/useValueWithTimezone.js +0 -81
- package/legacy/internals/hooks/useViews.js +0 -124
- package/legacy/internals/index.js +0 -35
- package/legacy/internals/models/common.js +0 -1
- package/legacy/internals/models/fields.js +0 -1
- package/legacy/internals/models/helpers.js +0 -1
- package/legacy/internals/models/index.js +0 -2
- package/legacy/internals/models/props/basePickerProps.js +0 -1
- package/legacy/internals/models/props/clock.js +0 -1
- package/legacy/internals/models/props/tabs.js +0 -1
- package/legacy/internals/models/props/toolbar.js +0 -1
- package/legacy/internals/models/validation.js +0 -1
- package/legacy/internals/utils/convertFieldResponseIntoMuiTextFieldProps.js +0 -24
- package/legacy/internals/utils/date-time-utils.js +0 -71
- package/legacy/internals/utils/date-utils.js +0 -129
- package/legacy/internals/utils/fields.js +0 -28
- package/legacy/internals/utils/getDefaultReferenceDate.js +0 -65
- package/legacy/internals/utils/time-utils.js +0 -63
- package/legacy/internals/utils/utils.js +0 -40
- package/legacy/internals/utils/validation/extractValidationProps.js +0 -16
- package/legacy/internals/utils/validation/validateDate.js +0 -38
- package/legacy/internals/utils/validation/validateDateTime.js +0 -20
- package/legacy/internals/utils/validation/validateTime.js +0 -42
- package/legacy/internals/utils/valueManagers.js +0 -67
- package/legacy/internals/utils/views.js +0 -29
- package/legacy/internals/utils/warning.js +0 -39
- package/legacy/locales/beBY.js +0 -99
- package/legacy/locales/caES.js +0 -100
- package/legacy/locales/csCZ.js +0 -100
- package/legacy/locales/daDK.js +0 -102
- package/legacy/locales/deDE.js +0 -101
- package/legacy/locales/elGR.js +0 -100
- package/legacy/locales/enUS.js +0 -96
- package/legacy/locales/esES.js +0 -99
- package/legacy/locales/eu.js +0 -99
- package/legacy/locales/faIR.js +0 -100
- package/legacy/locales/fiFI.js +0 -100
- package/legacy/locales/frFR.js +0 -98
- package/legacy/locales/heIL.js +0 -100
- package/legacy/locales/huHU.js +0 -99
- package/legacy/locales/index.js +0 -35
- package/legacy/locales/isIS.js +0 -100
- package/legacy/locales/itIT.js +0 -98
- package/legacy/locales/jaJP.js +0 -102
- package/legacy/locales/koKR.js +0 -98
- package/legacy/locales/kzKZ.js +0 -99
- package/legacy/locales/mk.js +0 -96
- package/legacy/locales/nbNO.js +0 -100
- package/legacy/locales/nlNL.js +0 -100
- package/legacy/locales/plPL.js +0 -85
- package/legacy/locales/ptBR.js +0 -100
- package/legacy/locales/roRO.js +0 -99
- package/legacy/locales/ruRU.js +0 -98
- package/legacy/locales/skSK.js +0 -100
- package/legacy/locales/svSE.js +0 -85
- package/legacy/locales/trTR.js +0 -100
- package/legacy/locales/ukUA.js +0 -100
- package/legacy/locales/urPK.js +0 -85
- package/legacy/locales/utils/getPickersLocalization.js +0 -12
- package/legacy/locales/utils/pickersLocaleTextApi.js +0 -1
- package/legacy/locales/viVN.js +0 -100
- package/legacy/locales/zhCN.js +0 -100
- package/legacy/locales/zhHK.js +0 -100
- package/legacy/models/adapters.js +0 -1
- package/legacy/models/common.js +0 -1
- package/legacy/models/fields.js +0 -1
- package/legacy/models/index.js +0 -7
- package/legacy/models/pickers.js +0 -1
- package/legacy/models/timezone.js +0 -1
- package/legacy/models/validation.js +0 -1
- package/legacy/models/views.js +0 -1
- package/legacy/themeAugmentation/index.js +0 -3
- package/legacy/timeViewRenderers/index.js +0 -1
- package/legacy/timeViewRenderers/timeViewRenderers.js +0 -186
|
@@ -0,0 +1,402 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import useForkRef from '@mui/utils/useForkRef';
|
|
3
|
+
import useEventCallback from '@mui/utils/useEventCallback';
|
|
4
|
+
import useEnhancedEffect from '@mui/utils/useEnhancedEffect';
|
|
5
|
+
import useId from '@mui/utils/useId';
|
|
6
|
+
import { getSectionValueNow, getSectionValueText, parseSelectedSections } from './useField.utils';
|
|
7
|
+
import { getActiveElement } from '../../utils/utils';
|
|
8
|
+
import { useLocaleText, useUtils } from '../useUtils';
|
|
9
|
+
export const useFieldV7TextField = params => {
|
|
10
|
+
const {
|
|
11
|
+
internalProps: {
|
|
12
|
+
disabled,
|
|
13
|
+
readOnly = false
|
|
14
|
+
},
|
|
15
|
+
forwardedProps: {
|
|
16
|
+
sectionListRef: inSectionListRef,
|
|
17
|
+
onBlur,
|
|
18
|
+
onClick,
|
|
19
|
+
onFocus,
|
|
20
|
+
onInput,
|
|
21
|
+
onPaste,
|
|
22
|
+
focused: focusedProp,
|
|
23
|
+
autoFocus = false
|
|
24
|
+
},
|
|
25
|
+
fieldValueManager,
|
|
26
|
+
applyCharacterEditing,
|
|
27
|
+
resetCharacterQuery,
|
|
28
|
+
setSelectedSections,
|
|
29
|
+
parsedSelectedSections,
|
|
30
|
+
state,
|
|
31
|
+
clearActiveSection,
|
|
32
|
+
clearValue,
|
|
33
|
+
updateSectionValue,
|
|
34
|
+
updateValueFromValueStr,
|
|
35
|
+
sectionOrder,
|
|
36
|
+
areAllSectionsEmpty,
|
|
37
|
+
sectionsValueBoundaries
|
|
38
|
+
} = params;
|
|
39
|
+
const sectionListRef = React.useRef(null);
|
|
40
|
+
const handleSectionListRef = useForkRef(inSectionListRef, sectionListRef);
|
|
41
|
+
const localeText = useLocaleText();
|
|
42
|
+
const utils = useUtils();
|
|
43
|
+
const id = useId();
|
|
44
|
+
const [focused, setFocused] = React.useState(false);
|
|
45
|
+
const interactions = React.useMemo(() => ({
|
|
46
|
+
syncSelectionToDOM: () => {
|
|
47
|
+
if (!sectionListRef.current) {
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
const selection = document.getSelection();
|
|
51
|
+
if (!selection) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
if (parsedSelectedSections == null) {
|
|
55
|
+
// If the selection contains an element inside the field, we reset it.
|
|
56
|
+
if (selection.rangeCount > 0 && sectionListRef.current.getRoot().contains(selection.getRangeAt(0).startContainer)) {
|
|
57
|
+
selection.removeAllRanges();
|
|
58
|
+
}
|
|
59
|
+
if (focused) {
|
|
60
|
+
sectionListRef.current.getRoot().blur();
|
|
61
|
+
}
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// On multi input range pickers we want to update selection range only for the active input
|
|
66
|
+
if (!sectionListRef.current.getRoot().contains(getActiveElement(document))) {
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
const range = new window.Range();
|
|
70
|
+
let target;
|
|
71
|
+
if (parsedSelectedSections === 'all') {
|
|
72
|
+
target = sectionListRef.current.getRoot();
|
|
73
|
+
} else {
|
|
74
|
+
const section = state.sections[parsedSelectedSections];
|
|
75
|
+
if (section.type === 'empty') {
|
|
76
|
+
target = sectionListRef.current.getSectionContainer(parsedSelectedSections);
|
|
77
|
+
} else {
|
|
78
|
+
target = sectionListRef.current.getSectionContent(parsedSelectedSections);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
range.selectNodeContents(target);
|
|
82
|
+
target.focus();
|
|
83
|
+
selection.removeAllRanges();
|
|
84
|
+
selection.addRange(range);
|
|
85
|
+
},
|
|
86
|
+
getActiveSectionIndexFromDOM: () => {
|
|
87
|
+
const activeElement = getActiveElement(document);
|
|
88
|
+
if (!activeElement || !sectionListRef.current || !sectionListRef.current.getRoot().contains(activeElement)) {
|
|
89
|
+
return null;
|
|
90
|
+
}
|
|
91
|
+
return sectionListRef.current.getSectionIndexFromDOMElement(activeElement);
|
|
92
|
+
},
|
|
93
|
+
focusField: (newSelectedSections = 0) => {
|
|
94
|
+
if (!sectionListRef.current) {
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
const newParsedSelectedSections = parseSelectedSections(newSelectedSections, state.sections);
|
|
98
|
+
setFocused(true);
|
|
99
|
+
sectionListRef.current.getSectionContent(newParsedSelectedSections).focus();
|
|
100
|
+
},
|
|
101
|
+
setSelectedSections: newSelectedSections => {
|
|
102
|
+
if (!sectionListRef.current) {
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
const newParsedSelectedSections = parseSelectedSections(newSelectedSections, state.sections);
|
|
106
|
+
const newActiveSectionIndex = newParsedSelectedSections === 'all' ? 0 : newParsedSelectedSections;
|
|
107
|
+
setFocused(newActiveSectionIndex !== null);
|
|
108
|
+
setSelectedSections(newSelectedSections);
|
|
109
|
+
},
|
|
110
|
+
isFieldFocused: () => {
|
|
111
|
+
const activeElement = getActiveElement(document);
|
|
112
|
+
return !!sectionListRef.current && sectionListRef.current.getRoot().contains(activeElement);
|
|
113
|
+
}
|
|
114
|
+
}), [parsedSelectedSections, setSelectedSections, state.sections, focused]);
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* If a section content has been updated with a value we don't want to keep,
|
|
118
|
+
* Then we need to imperatively revert it (we can't let React do it because the value did not change in his internal representation).
|
|
119
|
+
*/
|
|
120
|
+
const revertDOMSectionChange = useEventCallback(sectionIndex => {
|
|
121
|
+
if (!sectionListRef.current) {
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
const section = state.sections[sectionIndex];
|
|
125
|
+
sectionListRef.current.getSectionContent(sectionIndex).innerHTML = section.value || section.placeholder;
|
|
126
|
+
interactions.syncSelectionToDOM();
|
|
127
|
+
});
|
|
128
|
+
const handleContainerClick = useEventCallback((event, ...args) => {
|
|
129
|
+
// The click event on the clear button would propagate to the input, trigger this handler and result in a wrong section selection.
|
|
130
|
+
// We avoid this by checking if the call of `handleContainerClick` is actually intended, or a side effect.
|
|
131
|
+
if (event.isDefaultPrevented() || !sectionListRef.current) {
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
setFocused(true);
|
|
135
|
+
onClick == null || onClick(event, ...args);
|
|
136
|
+
if (parsedSelectedSections === 'all') {
|
|
137
|
+
window.setTimeout(() => {
|
|
138
|
+
const cursorPosition = document.getSelection().getRangeAt(0).startOffset;
|
|
139
|
+
if (cursorPosition === 0) {
|
|
140
|
+
setSelectedSections(sectionOrder.startIndex);
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
let sectionIndex = 0;
|
|
144
|
+
let cursorOnStartOfSection = 0;
|
|
145
|
+
while (cursorOnStartOfSection < cursorPosition && sectionIndex < state.sections.length) {
|
|
146
|
+
const section = state.sections[sectionIndex];
|
|
147
|
+
sectionIndex += 1;
|
|
148
|
+
cursorOnStartOfSection += `${section.startSeparator}${section.value || section.placeholder}${section.endSeparator}`.length;
|
|
149
|
+
}
|
|
150
|
+
setSelectedSections(sectionIndex - 1);
|
|
151
|
+
});
|
|
152
|
+
} else if (!focused) {
|
|
153
|
+
setFocused(true);
|
|
154
|
+
setSelectedSections(sectionOrder.startIndex);
|
|
155
|
+
} else {
|
|
156
|
+
const hasClickedOnASection = sectionListRef.current.getRoot().contains(event.target);
|
|
157
|
+
if (!hasClickedOnASection) {
|
|
158
|
+
setSelectedSections(sectionOrder.startIndex);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
});
|
|
162
|
+
const handleContainerInput = useEventCallback(event => {
|
|
163
|
+
var _target$textContent;
|
|
164
|
+
onInput == null || onInput(event);
|
|
165
|
+
if (!sectionListRef.current || parsedSelectedSections !== 'all') {
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
const target = event.target;
|
|
169
|
+
const keyPressed = (_target$textContent = target.textContent) != null ? _target$textContent : '';
|
|
170
|
+
sectionListRef.current.getRoot().innerHTML = state.sections.map(section => `${section.startSeparator}${section.value || section.placeholder}${section.endSeparator}`).join('');
|
|
171
|
+
interactions.syncSelectionToDOM();
|
|
172
|
+
if (keyPressed.length === 0 || keyPressed.charCodeAt(0) === 10) {
|
|
173
|
+
resetCharacterQuery();
|
|
174
|
+
clearValue();
|
|
175
|
+
setSelectedSections('all');
|
|
176
|
+
} else if (keyPressed.length > 1) {
|
|
177
|
+
updateValueFromValueStr(keyPressed);
|
|
178
|
+
} else {
|
|
179
|
+
applyCharacterEditing({
|
|
180
|
+
keyPressed,
|
|
181
|
+
sectionIndex: 0
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
});
|
|
185
|
+
const handleContainerPaste = useEventCallback(event => {
|
|
186
|
+
onPaste == null || onPaste(event);
|
|
187
|
+
if (readOnly || parsedSelectedSections !== 'all') {
|
|
188
|
+
event.preventDefault();
|
|
189
|
+
return;
|
|
190
|
+
}
|
|
191
|
+
const pastedValue = event.clipboardData.getData('text');
|
|
192
|
+
event.preventDefault();
|
|
193
|
+
resetCharacterQuery();
|
|
194
|
+
updateValueFromValueStr(pastedValue);
|
|
195
|
+
});
|
|
196
|
+
const handleContainerFocus = useEventCallback((...args) => {
|
|
197
|
+
onFocus == null || onFocus(...args);
|
|
198
|
+
if (focused || !sectionListRef.current) {
|
|
199
|
+
return;
|
|
200
|
+
}
|
|
201
|
+
setFocused(true);
|
|
202
|
+
const isFocusInsideASection = sectionListRef.current.getSectionIndexFromDOMElement(getActiveElement(document)) != null;
|
|
203
|
+
if (!isFocusInsideASection) {
|
|
204
|
+
setSelectedSections(sectionOrder.startIndex);
|
|
205
|
+
}
|
|
206
|
+
});
|
|
207
|
+
const handleContainerBlur = useEventCallback((...args) => {
|
|
208
|
+
onBlur == null || onBlur(...args);
|
|
209
|
+
window.setTimeout(() => {
|
|
210
|
+
if (!sectionListRef.current) {
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
213
|
+
const activeElement = getActiveElement(document);
|
|
214
|
+
const shouldBlur = !sectionListRef.current.getRoot().contains(activeElement);
|
|
215
|
+
if (shouldBlur) {
|
|
216
|
+
setFocused(false);
|
|
217
|
+
setSelectedSections(null);
|
|
218
|
+
}
|
|
219
|
+
});
|
|
220
|
+
});
|
|
221
|
+
const getInputContainerClickHandler = useEventCallback(sectionIndex => event => {
|
|
222
|
+
// The click event on the clear button would propagate to the input, trigger this handler and result in a wrong section selection.
|
|
223
|
+
// We avoid this by checking if the call to this function is actually intended, or a side effect.
|
|
224
|
+
if (event.isDefaultPrevented() || readOnly) {
|
|
225
|
+
return;
|
|
226
|
+
}
|
|
227
|
+
setSelectedSections(sectionIndex);
|
|
228
|
+
});
|
|
229
|
+
const handleInputContentMouseUp = useEventCallback(event => {
|
|
230
|
+
// Without this, the browser will remove the selected when clicking inside an already-selected section.
|
|
231
|
+
event.preventDefault();
|
|
232
|
+
});
|
|
233
|
+
const getInputContentFocusHandler = useEventCallback(sectionIndex => () => {
|
|
234
|
+
if (readOnly) {
|
|
235
|
+
return;
|
|
236
|
+
}
|
|
237
|
+
setSelectedSections(sectionIndex);
|
|
238
|
+
});
|
|
239
|
+
const handleInputContentPaste = useEventCallback(event => {
|
|
240
|
+
// prevent default to avoid the input `onInput` handler being called
|
|
241
|
+
event.preventDefault();
|
|
242
|
+
if (readOnly || typeof parsedSelectedSections !== 'number') {
|
|
243
|
+
return;
|
|
244
|
+
}
|
|
245
|
+
const activeSection = state.sections[parsedSelectedSections];
|
|
246
|
+
const pastedValue = event.clipboardData.getData('text');
|
|
247
|
+
const lettersOnly = /^[a-zA-Z]+$/.test(pastedValue);
|
|
248
|
+
const digitsOnly = /^[0-9]+$/.test(pastedValue);
|
|
249
|
+
const digitsAndLetterOnly = /^(([a-zA-Z]+)|)([0-9]+)(([a-zA-Z]+)|)$/.test(pastedValue);
|
|
250
|
+
const isValidPastedValue = activeSection.contentType === 'letter' && lettersOnly || activeSection.contentType === 'digit' && digitsOnly || activeSection.contentType === 'digit-with-letter' && digitsAndLetterOnly;
|
|
251
|
+
if (isValidPastedValue) {
|
|
252
|
+
resetCharacterQuery();
|
|
253
|
+
updateSectionValue({
|
|
254
|
+
activeSection,
|
|
255
|
+
newSectionValue: pastedValue,
|
|
256
|
+
shouldGoToNextSection: true
|
|
257
|
+
});
|
|
258
|
+
}
|
|
259
|
+
// If the pasted value corresponds to a single section, but not the expected type, we skip the modification
|
|
260
|
+
else if (!lettersOnly && !digitsOnly) {
|
|
261
|
+
resetCharacterQuery();
|
|
262
|
+
updateValueFromValueStr(pastedValue);
|
|
263
|
+
}
|
|
264
|
+
});
|
|
265
|
+
const handleInputContentDragOver = useEventCallback(event => {
|
|
266
|
+
event.preventDefault();
|
|
267
|
+
event.dataTransfer.dropEffect = 'none';
|
|
268
|
+
});
|
|
269
|
+
const handleInputContentInput = useEventCallback(event => {
|
|
270
|
+
var _target$textContent2;
|
|
271
|
+
if (!sectionListRef.current) {
|
|
272
|
+
return;
|
|
273
|
+
}
|
|
274
|
+
const target = event.target;
|
|
275
|
+
const keyPressed = (_target$textContent2 = target.textContent) != null ? _target$textContent2 : '';
|
|
276
|
+
const sectionIndex = sectionListRef.current.getSectionIndexFromDOMElement(target);
|
|
277
|
+
const section = state.sections[sectionIndex];
|
|
278
|
+
if (readOnly || !sectionListRef.current) {
|
|
279
|
+
revertDOMSectionChange(sectionIndex);
|
|
280
|
+
return;
|
|
281
|
+
}
|
|
282
|
+
if (keyPressed.length === 0) {
|
|
283
|
+
if (section.value === '') {
|
|
284
|
+
revertDOMSectionChange(sectionIndex);
|
|
285
|
+
return;
|
|
286
|
+
}
|
|
287
|
+
resetCharacterQuery();
|
|
288
|
+
clearActiveSection();
|
|
289
|
+
return;
|
|
290
|
+
}
|
|
291
|
+
applyCharacterEditing({
|
|
292
|
+
keyPressed,
|
|
293
|
+
sectionIndex
|
|
294
|
+
});
|
|
295
|
+
|
|
296
|
+
// The DOM value needs to remain the one React is expecting.
|
|
297
|
+
revertDOMSectionChange(sectionIndex);
|
|
298
|
+
});
|
|
299
|
+
useEnhancedEffect(() => {
|
|
300
|
+
if (!focused || !sectionListRef.current) {
|
|
301
|
+
return;
|
|
302
|
+
}
|
|
303
|
+
if (parsedSelectedSections === 'all') {
|
|
304
|
+
sectionListRef.current.getRoot().focus();
|
|
305
|
+
} else if (typeof parsedSelectedSections === 'number') {
|
|
306
|
+
const domElement = sectionListRef.current.getSectionContent(parsedSelectedSections);
|
|
307
|
+
if (domElement) {
|
|
308
|
+
domElement.focus();
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
}, [parsedSelectedSections, focused]);
|
|
312
|
+
const sectionBoundaries = React.useMemo(() => {
|
|
313
|
+
return state.sections.reduce((acc, next) => {
|
|
314
|
+
acc[next.type] = sectionsValueBoundaries[next.type]({
|
|
315
|
+
currentDate: null,
|
|
316
|
+
contentType: next.contentType,
|
|
317
|
+
format: next.format
|
|
318
|
+
});
|
|
319
|
+
return acc;
|
|
320
|
+
}, {});
|
|
321
|
+
}, [sectionsValueBoundaries, state.sections]);
|
|
322
|
+
const isContainerEditable = parsedSelectedSections === 'all';
|
|
323
|
+
const elements = React.useMemo(() => {
|
|
324
|
+
return state.sections.map((section, index) => {
|
|
325
|
+
const isEditable = !isContainerEditable && !disabled && !readOnly;
|
|
326
|
+
return {
|
|
327
|
+
container: {
|
|
328
|
+
'data-sectionindex': index,
|
|
329
|
+
onClick: getInputContainerClickHandler(index)
|
|
330
|
+
},
|
|
331
|
+
content: {
|
|
332
|
+
tabIndex: isContainerEditable ? undefined : 0,
|
|
333
|
+
contentEditable: !isContainerEditable && !disabled && !readOnly,
|
|
334
|
+
role: 'spinbutton',
|
|
335
|
+
id: `${id}-${section.type}`,
|
|
336
|
+
'aria-labelledby': `${id}-${section.type}`,
|
|
337
|
+
'aria-readonly': readOnly,
|
|
338
|
+
'aria-valuenow': getSectionValueNow(section, utils),
|
|
339
|
+
'aria-valuemin': sectionBoundaries[section.type].minimum,
|
|
340
|
+
'aria-valuemax': sectionBoundaries[section.type].maximum,
|
|
341
|
+
'aria-valuetext': section.value ? getSectionValueText(section, utils) : localeText.empty,
|
|
342
|
+
'aria-label': localeText[section.type],
|
|
343
|
+
'aria-disabled': disabled,
|
|
344
|
+
spellCheck: isEditable ? false : undefined,
|
|
345
|
+
autoCapitalize: isEditable ? 'off' : undefined,
|
|
346
|
+
autoCorrect: isEditable ? 'off' : undefined,
|
|
347
|
+
[parseInt(React.version, 10) >= 17 ? 'enterKeyHint' : 'enterkeyhint']: isEditable ? 'next' : undefined,
|
|
348
|
+
children: section.value || section.placeholder,
|
|
349
|
+
onInput: handleInputContentInput,
|
|
350
|
+
onPaste: handleInputContentPaste,
|
|
351
|
+
onFocus: getInputContentFocusHandler(index),
|
|
352
|
+
onDragOver: handleInputContentDragOver,
|
|
353
|
+
onMouseUp: handleInputContentMouseUp,
|
|
354
|
+
inputMode: section.contentType === 'letter' ? 'text' : 'numeric'
|
|
355
|
+
},
|
|
356
|
+
before: {
|
|
357
|
+
children: section.startSeparator
|
|
358
|
+
},
|
|
359
|
+
after: {
|
|
360
|
+
children: section.endSeparator
|
|
361
|
+
}
|
|
362
|
+
};
|
|
363
|
+
});
|
|
364
|
+
}, [state.sections, getInputContentFocusHandler, handleInputContentPaste, handleInputContentDragOver, handleInputContentInput, getInputContainerClickHandler, handleInputContentMouseUp, disabled, readOnly, isContainerEditable, localeText, utils, sectionBoundaries, id]);
|
|
365
|
+
const handleValueStrChange = useEventCallback(event => {
|
|
366
|
+
updateValueFromValueStr(event.target.value);
|
|
367
|
+
});
|
|
368
|
+
const valueStr = React.useMemo(() => areAllSectionsEmpty ? '' : fieldValueManager.getV7HiddenInputValueFromSections(state.sections), [areAllSectionsEmpty, state.sections, fieldValueManager]);
|
|
369
|
+
React.useEffect(() => {
|
|
370
|
+
if (sectionListRef.current == null) {
|
|
371
|
+
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://next.mui.com/x/react-date-pickers/fields/#fields-to-edit-a-single-element'].join('\n'));
|
|
372
|
+
}
|
|
373
|
+
if (autoFocus && sectionListRef.current) {
|
|
374
|
+
sectionListRef.current.getSectionContent(sectionOrder.startIndex).focus();
|
|
375
|
+
}
|
|
376
|
+
}, []); // eslint-disable-line react-hooks/exhaustive-deps
|
|
377
|
+
|
|
378
|
+
return {
|
|
379
|
+
interactions,
|
|
380
|
+
returnedValue: {
|
|
381
|
+
// Forwarded
|
|
382
|
+
autoFocus,
|
|
383
|
+
readOnly,
|
|
384
|
+
focused: focusedProp != null ? focusedProp : focused,
|
|
385
|
+
sectionListRef: handleSectionListRef,
|
|
386
|
+
onBlur: handleContainerBlur,
|
|
387
|
+
onClick: handleContainerClick,
|
|
388
|
+
onFocus: handleContainerFocus,
|
|
389
|
+
onInput: handleContainerInput,
|
|
390
|
+
onPaste: handleContainerPaste,
|
|
391
|
+
// Additional
|
|
392
|
+
enableAccessibleFieldDOMStructure: true,
|
|
393
|
+
elements,
|
|
394
|
+
// TODO v7: Try to set to undefined when there is a section selected.
|
|
395
|
+
tabIndex: 0,
|
|
396
|
+
contentEditable: isContainerEditable,
|
|
397
|
+
value: valueStr,
|
|
398
|
+
onChange: handleValueStrChange,
|
|
399
|
+
areAllSectionsEmpty
|
|
400
|
+
}
|
|
401
|
+
};
|
|
402
|
+
};
|
|
@@ -8,6 +8,6 @@ import { DateOrTimeViewWithMeridiem } from '../../models';
|
|
|
8
8
|
* - MobileDateTimePicker
|
|
9
9
|
* - MobileTimePicker
|
|
10
10
|
*/
|
|
11
|
-
export declare const useMobilePicker: <TDate extends PickerValidDate, TView extends DateOrTimeViewWithMeridiem, TExternalProps extends UseMobilePickerProps<TDate, TView, any, TExternalProps>>({ props, getOpenDialogAriaText, ...pickerParams }: UseMobilePickerParams<TDate, TView, TExternalProps>) => {
|
|
11
|
+
export declare const useMobilePicker: <TDate extends PickerValidDate, TView extends DateOrTimeViewWithMeridiem, TEnableAccessibleFieldDOMStructure extends boolean, TExternalProps extends UseMobilePickerProps<TDate, TView, TEnableAccessibleFieldDOMStructure, any, TExternalProps>>({ props, getOpenDialogAriaText, ...pickerParams }: UseMobilePickerParams<TDate, TView, TEnableAccessibleFieldDOMStructure, TExternalProps>) => {
|
|
12
12
|
renderPicker: () => React.JSX.Element;
|
|
13
13
|
};
|
|
@@ -33,6 +33,9 @@ export const useMobilePicker = _ref => {
|
|
|
33
33
|
sx,
|
|
34
34
|
format,
|
|
35
35
|
formatDensity,
|
|
36
|
+
enableAccessibleFieldDOMStructure,
|
|
37
|
+
selectedSections,
|
|
38
|
+
onSelectedSectionsChange,
|
|
36
39
|
timezone,
|
|
37
40
|
name,
|
|
38
41
|
label,
|
|
@@ -42,7 +45,7 @@ export const useMobilePicker = _ref => {
|
|
|
42
45
|
localeText
|
|
43
46
|
} = props;
|
|
44
47
|
const utils = useUtils();
|
|
45
|
-
const
|
|
48
|
+
const fieldRef = React.useRef(null);
|
|
46
49
|
const labelId = useId();
|
|
47
50
|
const isToolbarHidden = (_innerSlotProps$toolb = innerSlotProps == null || (_innerSlotProps$toolb2 = innerSlotProps.toolbar) == null ? void 0 : _innerSlotProps$toolb2.hidden) != null ? _innerSlotProps$toolb : false;
|
|
48
51
|
const {
|
|
@@ -53,7 +56,7 @@ export const useMobilePicker = _ref => {
|
|
|
53
56
|
fieldProps: pickerFieldProps
|
|
54
57
|
} = usePicker(_extends({}, pickerParams, {
|
|
55
58
|
props,
|
|
56
|
-
|
|
59
|
+
fieldRef,
|
|
57
60
|
autoFocusView: true,
|
|
58
61
|
additionalViewProps: {},
|
|
59
62
|
wrapperVariant: 'mobile'
|
|
@@ -74,10 +77,15 @@ export const useMobilePicker = _ref => {
|
|
|
74
77
|
sx,
|
|
75
78
|
format,
|
|
76
79
|
formatDensity,
|
|
80
|
+
enableAccessibleFieldDOMStructure,
|
|
81
|
+
selectedSections,
|
|
82
|
+
onSelectedSectionsChange,
|
|
77
83
|
timezone,
|
|
78
84
|
label,
|
|
79
85
|
name
|
|
80
|
-
}
|
|
86
|
+
}, inputRef ? {
|
|
87
|
+
inputRef
|
|
88
|
+
} : {}),
|
|
81
89
|
ownerState: props
|
|
82
90
|
});
|
|
83
91
|
|
|
@@ -89,7 +97,6 @@ export const useMobilePicker = _ref => {
|
|
|
89
97
|
textField: slots.textField
|
|
90
98
|
}, fieldProps.slots);
|
|
91
99
|
const Layout = (_slots$layout = slots.layout) != null ? _slots$layout : PickersLayout;
|
|
92
|
-
const handleInputRef = useForkRef(internalInputRef, fieldProps.inputRef, inputRef);
|
|
93
100
|
let labelledById = labelId;
|
|
94
101
|
if (isToolbarHidden) {
|
|
95
102
|
if (label) {
|
|
@@ -106,12 +113,13 @@ export const useMobilePicker = _ref => {
|
|
|
106
113
|
'aria-labelledby': labelledById
|
|
107
114
|
}, innerSlotProps == null ? void 0 : innerSlotProps.mobilePaper)
|
|
108
115
|
});
|
|
116
|
+
const handleFieldRef = useForkRef(fieldRef, fieldProps.unstableFieldRef);
|
|
109
117
|
const renderPicker = () => /*#__PURE__*/_jsxs(LocalizationProvider, {
|
|
110
118
|
localeText: localeText,
|
|
111
119
|
children: [/*#__PURE__*/_jsx(Field, _extends({}, fieldProps, {
|
|
112
120
|
slots: slotsForField,
|
|
113
121
|
slotProps: slotProps,
|
|
114
|
-
|
|
122
|
+
unstableFieldRef: handleFieldRef
|
|
115
123
|
})), /*#__PURE__*/_jsx(PickersModalDialog, _extends({}, actions, {
|
|
116
124
|
open: open,
|
|
117
125
|
slots: slots,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import TextField
|
|
2
|
+
import TextField from '@mui/material/TextField';
|
|
3
3
|
import { SlotComponentProps } from '@mui/base/utils';
|
|
4
4
|
import { BaseNonStaticPickerProps, BasePickerProps, BaseNonRangeNonStaticPickerProps } from '../../models/props/basePickerProps';
|
|
5
5
|
import { PickersModalDialogSlots, PickersModalDialogSlotProps } from '../../components/PickersModalDialog';
|
|
@@ -9,27 +9,27 @@ import { ExportedPickersLayoutSlots, ExportedPickersLayoutSlotProps, PickersLayo
|
|
|
9
9
|
import { UsePickerValueNonStaticProps } from '../usePicker/usePickerValue.types';
|
|
10
10
|
import { UsePickerViewsNonStaticProps, UsePickerViewsProps } from '../usePicker/usePickerViews';
|
|
11
11
|
import { DateOrTimeViewWithMeridiem } from '../../models';
|
|
12
|
+
import { SlotComponentPropsFromProps } from '../../models/helpers';
|
|
12
13
|
export interface UseMobilePickerSlots<TDate extends PickerValidDate, TView extends DateOrTimeViewWithMeridiem> extends PickersModalDialogSlots, ExportedPickersLayoutSlots<TDate | null, TDate, TView> {
|
|
13
14
|
/**
|
|
14
15
|
* Component used to enter the date with the keyboard.
|
|
15
16
|
*/
|
|
16
|
-
field: React.ElementType
|
|
17
|
+
field: React.ElementType;
|
|
17
18
|
/**
|
|
18
19
|
* Form control with an input to render the value inside the default field.
|
|
19
|
-
*
|
|
20
|
-
* @default TextField from '@mui/material'
|
|
20
|
+
* @default TextField from '@mui/material' or PickersTextField if `enableAccessibleFieldDOMStructure` is `true`.
|
|
21
21
|
*/
|
|
22
|
-
textField?: React.ElementType
|
|
22
|
+
textField?: React.ElementType;
|
|
23
23
|
}
|
|
24
|
-
export interface ExportedUseMobilePickerSlotProps<TDate extends PickerValidDate, TView extends DateOrTimeViewWithMeridiem> extends PickersModalDialogSlotProps, ExportedPickersLayoutSlotProps<TDate | null, TDate, TView> {
|
|
25
|
-
field?:
|
|
24
|
+
export interface ExportedUseMobilePickerSlotProps<TDate extends PickerValidDate, TView extends DateOrTimeViewWithMeridiem, TEnableAccessibleFieldDOMStructure extends boolean> extends PickersModalDialogSlotProps, ExportedPickersLayoutSlotProps<TDate | null, TDate, TView> {
|
|
25
|
+
field?: SlotComponentPropsFromProps<BaseSingleInputFieldProps<TDate | null, TDate, FieldSection, TEnableAccessibleFieldDOMStructure, unknown>, {}, UsePickerProps<TDate | null, TDate, any, any, any, any>>;
|
|
26
26
|
textField?: SlotComponentProps<typeof TextField, {}, Record<string, any>>;
|
|
27
27
|
}
|
|
28
|
-
export interface UseMobilePickerSlotProps<TDate extends PickerValidDate, TView extends DateOrTimeViewWithMeridiem> extends ExportedUseMobilePickerSlotProps<TDate, TView>, Pick<PickersLayoutSlotProps<TDate | null, TDate, TView>, 'toolbar'> {
|
|
28
|
+
export interface UseMobilePickerSlotProps<TDate extends PickerValidDate, TView extends DateOrTimeViewWithMeridiem, TEnableAccessibleFieldDOMStructure extends boolean> extends ExportedUseMobilePickerSlotProps<TDate, TView, TEnableAccessibleFieldDOMStructure>, Pick<PickersLayoutSlotProps<TDate | null, TDate, TView>, 'toolbar'> {
|
|
29
29
|
}
|
|
30
|
-
export interface MobileOnlyPickerProps
|
|
30
|
+
export interface MobileOnlyPickerProps extends BaseNonStaticPickerProps, BaseNonRangeNonStaticPickerProps, UsePickerValueNonStaticProps, UsePickerViewsNonStaticProps {
|
|
31
31
|
}
|
|
32
|
-
export interface UseMobilePickerProps<TDate extends PickerValidDate, TView extends DateOrTimeViewWithMeridiem, TError, TExternalProps extends UsePickerViewsProps<any, any, TView, any, any>> extends BasePickerProps<TDate | null, TDate, TView, TError, TExternalProps, {}>, MobileOnlyPickerProps
|
|
32
|
+
export interface UseMobilePickerProps<TDate extends PickerValidDate, TView extends DateOrTimeViewWithMeridiem, TEnableAccessibleFieldDOMStructure extends boolean, TError, TExternalProps extends UsePickerViewsProps<any, any, TView, any, any>> extends BasePickerProps<TDate | null, TDate, TView, TError, TExternalProps, {}>, MobileOnlyPickerProps {
|
|
33
33
|
/**
|
|
34
34
|
* Overridable component slots.
|
|
35
35
|
* @default {}
|
|
@@ -39,9 +39,9 @@ export interface UseMobilePickerProps<TDate extends PickerValidDate, TView exten
|
|
|
39
39
|
* The props used for each component slot.
|
|
40
40
|
* @default {}
|
|
41
41
|
*/
|
|
42
|
-
slotProps?: UseMobilePickerSlotProps<TDate, TView>;
|
|
42
|
+
slotProps?: UseMobilePickerSlotProps<TDate, TView, TEnableAccessibleFieldDOMStructure>;
|
|
43
43
|
}
|
|
44
|
-
export interface UseMobilePickerParams<TDate extends PickerValidDate, TView extends DateOrTimeViewWithMeridiem, TExternalProps extends UseMobilePickerProps<TDate, TView, any, TExternalProps>> extends Pick<UsePickerParams<TDate | null, TDate, TView, FieldSection, TExternalProps, {}>, 'valueManager' | 'valueType' | 'validator'> {
|
|
44
|
+
export interface UseMobilePickerParams<TDate extends PickerValidDate, TView extends DateOrTimeViewWithMeridiem, TEnableAccessibleFieldDOMStructure extends boolean, TExternalProps extends UseMobilePickerProps<TDate, TView, TEnableAccessibleFieldDOMStructure, any, TExternalProps>> extends Pick<UsePickerParams<TDate | null, TDate, TView, FieldSection, TExternalProps, {}>, 'valueManager' | 'valueType' | 'validator'> {
|
|
45
45
|
props: TExternalProps;
|
|
46
46
|
getOpenDialogAriaText: (date: TDate | null, utils: MuiPickersAdapter<TDate>) => string;
|
|
47
47
|
}
|
|
@@ -2,4 +2,4 @@ import { UsePickerParams, UsePickerProps, UsePickerResponse } from './usePicker.
|
|
|
2
2
|
import { InferError } from '../useValidation';
|
|
3
3
|
import { FieldSection, PickerValidDate } from '../../../models';
|
|
4
4
|
import { DateOrTimeViewWithMeridiem } from '../../models';
|
|
5
|
-
export declare const usePicker: <TValue, TDate extends PickerValidDate, TView extends DateOrTimeViewWithMeridiem, TSection extends FieldSection, TExternalProps extends UsePickerProps<TValue, TDate, TView,
|
|
5
|
+
export declare const usePicker: <TValue, TDate extends PickerValidDate, TView extends DateOrTimeViewWithMeridiem, TSection extends FieldSection, TExternalProps extends UsePickerProps<TValue, TDate, TView, any, any, any>, TAdditionalProps extends {}>({ props, valueManager, valueType, wrapperVariant, additionalViewProps, validator, autoFocusView, rendererInterceptor, fieldRef, }: UsePickerParams<TValue, TDate, TView, TSection, TExternalProps, TAdditionalProps>) => UsePickerResponse<TValue, TView, TSection, InferError<TExternalProps>>;
|
|
@@ -8,11 +8,11 @@ export const usePicker = ({
|
|
|
8
8
|
valueManager,
|
|
9
9
|
valueType,
|
|
10
10
|
wrapperVariant,
|
|
11
|
-
inputRef,
|
|
12
11
|
additionalViewProps,
|
|
13
12
|
validator,
|
|
14
13
|
autoFocusView,
|
|
15
|
-
rendererInterceptor
|
|
14
|
+
rendererInterceptor,
|
|
15
|
+
fieldRef
|
|
16
16
|
}) => {
|
|
17
17
|
if (process.env.NODE_ENV !== 'production') {
|
|
18
18
|
if (props.renderInput != null) {
|
|
@@ -28,9 +28,9 @@ export const usePicker = ({
|
|
|
28
28
|
});
|
|
29
29
|
const pickerViewsResponse = usePickerViews({
|
|
30
30
|
props,
|
|
31
|
-
inputRef,
|
|
32
31
|
additionalViewProps,
|
|
33
32
|
autoFocusView,
|
|
33
|
+
fieldRef,
|
|
34
34
|
propsFromPickerValue: pickerValueResponse.viewProps,
|
|
35
35
|
rendererInterceptor
|
|
36
36
|
});
|
|
@@ -8,9 +8,9 @@ import { DateOrTimeViewWithMeridiem } from '../../models';
|
|
|
8
8
|
*/
|
|
9
9
|
export interface UsePickerBaseProps<TValue, TDate extends PickerValidDate, TView extends DateOrTimeViewWithMeridiem, TError, TExternalProps extends UsePickerViewsProps<TValue, TDate, TView, any, any>, TAdditionalProps extends {}> extends UsePickerValueBaseProps<TValue, TError>, UsePickerViewsBaseProps<TValue, TDate, TView, TExternalProps, TAdditionalProps>, UsePickerLayoutProps {
|
|
10
10
|
}
|
|
11
|
-
export interface UsePickerProps<TValue, TDate extends PickerValidDate, TView extends DateOrTimeViewWithMeridiem,
|
|
11
|
+
export interface UsePickerProps<TValue, TDate extends PickerValidDate, TView extends DateOrTimeViewWithMeridiem, TError, TExternalProps extends UsePickerViewsProps<TValue, TDate, TView, any, any>, TAdditionalProps extends {}> extends UsePickerValueProps<TValue, TError>, UsePickerViewsProps<TValue, TDate, TView, TExternalProps, TAdditionalProps>, UsePickerLayoutProps {
|
|
12
12
|
}
|
|
13
|
-
export interface UsePickerParams<TValue, TDate extends PickerValidDate, TView extends DateOrTimeViewWithMeridiem, TSection extends FieldSection, TExternalProps extends UsePickerProps<TValue, TDate, TView,
|
|
13
|
+
export interface UsePickerParams<TValue, TDate extends PickerValidDate, TView extends DateOrTimeViewWithMeridiem, TSection extends FieldSection, TExternalProps extends UsePickerProps<TValue, TDate, TView, any, any, any>, TAdditionalProps extends {}> extends Pick<UsePickerValueParams<TValue, TDate, TExternalProps>, 'valueManager' | 'valueType' | 'wrapperVariant' | 'validator'>, Pick<UsePickerViewParams<TValue, TDate, TView, TSection, TExternalProps, TAdditionalProps>, 'additionalViewProps' | 'autoFocusView' | 'rendererInterceptor' | 'fieldRef'> {
|
|
14
14
|
props: TExternalProps;
|
|
15
15
|
}
|
|
16
16
|
export interface UsePickerResponse<TValue, TView extends DateOrTimeViewWithMeridiem, TSection extends FieldSection, TError> extends Omit<UsePickerValueResponse<TValue, TSection, TError>, 'viewProps' | 'layoutProps'>, Omit<UsePickerViewsResponse<TView>, 'layoutProps'>, UsePickerLayoutPropsResponse<TValue, TView> {
|
|
@@ -4,4 +4,4 @@ import { UsePickerValueProps, UsePickerValueParams, UsePickerValueResponse } fro
|
|
|
4
4
|
/**
|
|
5
5
|
* Manage the value lifecycle of all the pickers.
|
|
6
6
|
*/
|
|
7
|
-
export declare const usePickerValue: <TValue, TDate extends PickerValidDate, TSection extends FieldSection, TExternalProps extends UsePickerValueProps<TValue,
|
|
7
|
+
export declare const usePickerValue: <TValue, TDate extends PickerValidDate, TSection extends FieldSection, TExternalProps extends UsePickerValueProps<TValue, any>>({ props, valueManager, valueType, wrapperVariant, validator, }: UsePickerValueParams<TValue, TDate, TExternalProps>) => UsePickerValueResponse<TValue, TSection, InferError<TExternalProps>>;
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
import { unstable_useControlled as useControlled } from '@mui/utils';
|
|
4
3
|
import useEventCallback from '@mui/utils/useEventCallback';
|
|
5
4
|
import { useOpenState } from '../useOpenState';
|
|
6
5
|
import { useLocalizationContext, useUtils } from '../useUtils';
|
|
@@ -123,8 +122,6 @@ export const usePickerValue = ({
|
|
|
123
122
|
value: inValue,
|
|
124
123
|
defaultValue: inDefaultValue,
|
|
125
124
|
closeOnSelect = wrapperVariant === 'desktop',
|
|
126
|
-
selectedSections: selectedSectionsProp,
|
|
127
|
-
onSelectedSectionsChange,
|
|
128
125
|
timezone: timezoneProp
|
|
129
126
|
} = props;
|
|
130
127
|
const {
|
|
@@ -151,12 +148,6 @@ export const usePickerValue = ({
|
|
|
151
148
|
|
|
152
149
|
const utils = useUtils();
|
|
153
150
|
const adapter = useLocalizationContext();
|
|
154
|
-
const [selectedSections, setSelectedSections] = useControlled({
|
|
155
|
-
controlled: selectedSectionsProp,
|
|
156
|
-
default: null,
|
|
157
|
-
name: 'usePickerValue',
|
|
158
|
-
state: 'selectedSections'
|
|
159
|
-
});
|
|
160
151
|
const {
|
|
161
152
|
isOpen,
|
|
162
153
|
setIsOpen
|
|
@@ -297,10 +288,6 @@ export const usePickerValue = ({
|
|
|
297
288
|
value: newValue,
|
|
298
289
|
context
|
|
299
290
|
}));
|
|
300
|
-
const handleFieldSelectedSectionsChange = useEventCallback(newSelectedSections => {
|
|
301
|
-
setSelectedSections(newSelectedSections);
|
|
302
|
-
onSelectedSectionsChange == null || onSelectedSectionsChange(newSelectedSections);
|
|
303
|
-
});
|
|
304
291
|
const actions = {
|
|
305
292
|
onClear: handleClear,
|
|
306
293
|
onAccept: handleAccept,
|
|
@@ -312,17 +299,14 @@ export const usePickerValue = ({
|
|
|
312
299
|
};
|
|
313
300
|
const fieldResponse = {
|
|
314
301
|
value: dateState.draft,
|
|
315
|
-
onChange: handleChangeFromField
|
|
316
|
-
selectedSections,
|
|
317
|
-
onSelectedSectionsChange: handleFieldSelectedSectionsChange
|
|
302
|
+
onChange: handleChangeFromField
|
|
318
303
|
};
|
|
319
304
|
const viewValue = React.useMemo(() => valueManager.cleanValue(utils, dateState.draft), [utils, valueManager, dateState.draft]);
|
|
320
305
|
const viewResponse = {
|
|
321
306
|
value: viewValue,
|
|
322
307
|
onChange: handleChange,
|
|
323
308
|
onClose: handleClose,
|
|
324
|
-
open: isOpen
|
|
325
|
-
onSelectedSectionsChange: handleFieldSelectedSectionsChange
|
|
309
|
+
open: isOpen
|
|
326
310
|
};
|
|
327
311
|
const isValid = testedValue => {
|
|
328
312
|
const error = validator({
|