@mui/x-date-pickers 7.16.0 → 7.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AdapterDayjs/AdapterDayjs.js +1 -1
- package/CHANGELOG.md +87 -0
- package/DateCalendar/DateCalendar.js +2 -0
- package/DateCalendar/useCalendarState.js +2 -0
- package/DateCalendar/useIsDateDisabled.d.ts +4 -3
- package/DateCalendar/useIsDateDisabled.js +5 -3
- package/DateField/DateField.js +2 -0
- package/DateField/DateField.types.d.ts +7 -2
- package/DateField/index.d.ts +1 -1
- package/DateField/useDateField.d.ts +1 -1
- package/DateField/useDateField.js +5 -3
- package/DatePicker/DatePicker.js +2 -0
- package/DatePicker/DatePickerToolbar.js +2 -0
- package/DateTimeField/DateTimeField.js +2 -0
- package/DateTimeField/DateTimeField.types.d.ts +7 -2
- package/DateTimeField/index.d.ts +1 -1
- package/DateTimeField/useDateTimeField.d.ts +1 -1
- package/DateTimeField/useDateTimeField.js +5 -3
- package/DateTimePicker/DateTimePicker.js +2 -0
- package/DateTimePicker/DateTimePickerTabs.js +2 -0
- package/DateTimePicker/DateTimePickerToolbar.js +2 -0
- package/DayCalendarSkeleton/DayCalendarSkeleton.js +2 -0
- package/DesktopDatePicker/DesktopDatePicker.js +10 -3
- package/DesktopDateTimePicker/DesktopDateTimePicker.js +10 -3
- package/DesktopTimePicker/DesktopTimePicker.js +10 -3
- package/DigitalClock/DigitalClock.js +2 -0
- package/LocalizationProvider/LocalizationProvider.js +2 -0
- package/MobileDatePicker/MobileDatePicker.js +10 -3
- package/MobileDateTimePicker/MobileDateTimePicker.js +10 -3
- package/MobileTimePicker/MobileTimePicker.js +10 -3
- package/MonthCalendar/MonthCalendar.js +2 -0
- package/MultiSectionDigitalClock/MultiSectionDigitalClock.js +2 -0
- package/PickersActionBar/PickersActionBar.js +2 -0
- package/PickersCalendarHeader/PickersCalendarHeader.js +2 -0
- package/PickersDay/PickersDay.js +2 -0
- package/PickersLayout/PickersLayout.js +2 -0
- package/PickersLayout/usePickerLayout.js +2 -0
- package/PickersSectionList/PickersSectionList.js +2 -0
- package/PickersShortcuts/PickersShortcuts.js +2 -0
- package/PickersTextField/PickersTextField.js +2 -0
- package/StaticDatePicker/StaticDatePicker.js +3 -1
- package/StaticDateTimePicker/StaticDateTimePicker.js +3 -1
- package/StaticTimePicker/StaticTimePicker.js +3 -1
- package/TimeClock/Clock.js +1 -1
- package/TimeClock/TimeClock.js +2 -0
- package/TimeField/TimeField.js +2 -0
- package/TimeField/TimeField.types.d.ts +7 -2
- package/TimeField/index.d.ts +1 -1
- package/TimeField/useTimeField.d.ts +1 -1
- package/TimeField/useTimeField.js +5 -3
- package/TimePicker/TimePicker.js +2 -0
- package/TimePicker/TimePickerToolbar.js +2 -0
- package/YearCalendar/YearCalendar.js +2 -0
- package/hooks/index.d.ts +1 -0
- package/hooks/index.js +2 -1
- package/hooks/useClearableField.js +2 -0
- package/hooks/usePickersTranslations.js +2 -0
- package/hooks/useSplitFieldProps.d.ts +19 -0
- package/hooks/useSplitFieldProps.js +43 -0
- package/index.d.ts +1 -0
- package/index.js +3 -2
- package/internals/hooks/useDesktopPicker/useDesktopPicker.js +1 -3
- package/internals/hooks/useDesktopPicker/useDesktopPicker.types.d.ts +2 -2
- package/internals/hooks/useField/useField.js +11 -6
- package/internals/hooks/useField/useField.types.d.ts +4 -22
- package/internals/hooks/useField/useFieldState.js +2 -4
- package/internals/hooks/useMobilePicker/useMobilePicker.js +1 -3
- package/internals/hooks/useMobilePicker/useMobilePicker.types.d.ts +2 -2
- package/internals/hooks/usePicker/usePicker.d.ts +1 -2
- package/internals/hooks/usePicker/usePicker.js +1 -1
- package/internals/hooks/usePicker/usePickerValue.d.ts +1 -2
- package/internals/hooks/usePicker/usePickerValue.js +12 -16
- package/internals/hooks/usePicker/usePickerValue.types.d.ts +4 -15
- package/internals/index.d.ts +0 -8
- package/internals/index.js +0 -7
- package/locales/beBY.d.ts +3 -3
- package/locales/beBY.js +4 -4
- package/locales/caES.d.ts +3 -3
- package/locales/caES.js +3 -3
- package/locales/csCZ.d.ts +3 -3
- package/locales/csCZ.js +4 -4
- package/locales/daDK.d.ts +3 -3
- package/locales/daDK.js +3 -3
- package/locales/deDE.d.ts +3 -3
- package/locales/deDE.js +3 -3
- package/locales/elGR.d.ts +3 -3
- package/locales/elGR.js +4 -4
- package/locales/enUS.d.ts +3 -3
- package/locales/enUS.js +4 -4
- package/locales/esES.d.ts +3 -3
- package/locales/esES.js +3 -3
- package/locales/eu.d.ts +3 -3
- package/locales/eu.js +3 -3
- package/locales/faIR.d.ts +3 -3
- package/locales/faIR.js +3 -3
- package/locales/fiFI.d.ts +3 -3
- package/locales/fiFI.js +3 -3
- package/locales/frFR.d.ts +3 -3
- package/locales/frFR.js +3 -3
- package/locales/heIL.d.ts +3 -3
- package/locales/heIL.js +3 -3
- package/locales/huHU.d.ts +3 -3
- package/locales/huHU.js +3 -3
- package/locales/isIS.d.ts +3 -3
- package/locales/isIS.js +4 -4
- package/locales/itIT.d.ts +3 -3
- package/locales/itIT.js +3 -3
- package/locales/jaJP.d.ts +3 -3
- package/locales/jaJP.js +3 -3
- package/locales/koKR.d.ts +3 -3
- package/locales/koKR.js +3 -3
- package/locales/kzKZ.d.ts +3 -3
- package/locales/kzKZ.js +4 -4
- package/locales/mk.d.ts +3 -3
- package/locales/mk.js +3 -3
- package/locales/nbNO.d.ts +3 -3
- package/locales/nbNO.js +4 -4
- package/locales/nlNL.d.ts +3 -3
- package/locales/nlNL.js +3 -3
- package/locales/nnNO.d.ts +3 -3
- package/locales/nnNO.js +3 -3
- package/locales/plPL.d.ts +3 -3
- package/locales/plPL.js +4 -4
- package/locales/ptBR.d.ts +3 -3
- package/locales/ptBR.js +4 -4
- package/locales/roRO.d.ts +3 -3
- package/locales/roRO.js +3 -3
- package/locales/ruRU.d.ts +3 -3
- package/locales/ruRU.js +3 -3
- package/locales/skSK.d.ts +3 -3
- package/locales/skSK.js +4 -4
- package/locales/svSE.d.ts +3 -3
- package/locales/svSE.js +3 -3
- package/locales/trTR.d.ts +3 -3
- package/locales/trTR.js +4 -4
- package/locales/ukUA.d.ts +3 -3
- package/locales/ukUA.js +3 -3
- package/locales/urPK.d.ts +3 -3
- package/locales/urPK.js +4 -4
- package/locales/utils/getPickersLocalization.d.ts +10 -3
- package/locales/utils/getPickersLocalization.js +13 -0
- package/locales/utils/pickersLocaleTextApi.d.ts +27 -3
- package/locales/viVN.d.ts +3 -3
- package/locales/viVN.js +3 -3
- package/locales/zhCN.d.ts +3 -3
- package/locales/zhCN.js +3 -3
- package/locales/zhHK.d.ts +3 -3
- package/locales/zhHK.js +3 -3
- package/models/validation.d.ts +13 -0
- package/modern/AdapterDayjs/AdapterDayjs.js +1 -1
- package/modern/DateCalendar/DateCalendar.js +2 -0
- package/modern/DateCalendar/useCalendarState.js +2 -0
- package/modern/DateCalendar/useIsDateDisabled.js +5 -3
- package/modern/DateField/DateField.js +2 -0
- package/modern/DateField/useDateField.js +5 -3
- package/modern/DatePicker/DatePicker.js +2 -0
- package/modern/DatePicker/DatePickerToolbar.js +2 -0
- package/modern/DateTimeField/DateTimeField.js +2 -0
- package/modern/DateTimeField/useDateTimeField.js +5 -3
- package/modern/DateTimePicker/DateTimePicker.js +2 -0
- package/modern/DateTimePicker/DateTimePickerTabs.js +2 -0
- package/modern/DateTimePicker/DateTimePickerToolbar.js +2 -0
- package/modern/DayCalendarSkeleton/DayCalendarSkeleton.js +2 -0
- package/modern/DesktopDatePicker/DesktopDatePicker.js +10 -3
- package/modern/DesktopDateTimePicker/DesktopDateTimePicker.js +10 -3
- package/modern/DesktopTimePicker/DesktopTimePicker.js +10 -3
- package/modern/DigitalClock/DigitalClock.js +2 -0
- package/modern/LocalizationProvider/LocalizationProvider.js +2 -0
- package/modern/MobileDatePicker/MobileDatePicker.js +10 -3
- package/modern/MobileDateTimePicker/MobileDateTimePicker.js +10 -3
- package/modern/MobileTimePicker/MobileTimePicker.js +10 -3
- package/modern/MonthCalendar/MonthCalendar.js +2 -0
- package/modern/MultiSectionDigitalClock/MultiSectionDigitalClock.js +2 -0
- package/modern/PickersActionBar/PickersActionBar.js +2 -0
- package/modern/PickersCalendarHeader/PickersCalendarHeader.js +2 -0
- package/modern/PickersDay/PickersDay.js +2 -0
- package/modern/PickersLayout/PickersLayout.js +2 -0
- package/modern/PickersLayout/usePickerLayout.js +2 -0
- package/modern/PickersSectionList/PickersSectionList.js +2 -0
- package/modern/PickersShortcuts/PickersShortcuts.js +2 -0
- package/modern/PickersTextField/PickersTextField.js +2 -0
- package/modern/StaticDatePicker/StaticDatePicker.js +3 -1
- package/modern/StaticDateTimePicker/StaticDateTimePicker.js +3 -1
- package/modern/StaticTimePicker/StaticTimePicker.js +3 -1
- package/modern/TimeClock/Clock.js +1 -1
- package/modern/TimeClock/TimeClock.js +2 -0
- package/modern/TimeField/TimeField.js +2 -0
- package/modern/TimeField/useTimeField.js +5 -3
- package/modern/TimePicker/TimePicker.js +2 -0
- package/modern/TimePicker/TimePickerToolbar.js +2 -0
- package/modern/YearCalendar/YearCalendar.js +2 -0
- package/modern/hooks/index.js +2 -1
- package/modern/hooks/useClearableField.js +2 -0
- package/modern/hooks/usePickersTranslations.js +2 -0
- package/modern/hooks/useSplitFieldProps.js +43 -0
- package/modern/index.js +3 -2
- package/modern/internals/hooks/useDesktopPicker/useDesktopPicker.js +1 -3
- package/modern/internals/hooks/useField/useField.js +11 -6
- package/modern/internals/hooks/useField/useFieldState.js +2 -4
- package/modern/internals/hooks/useMobilePicker/useMobilePicker.js +1 -3
- package/modern/internals/hooks/usePicker/usePicker.js +1 -1
- package/modern/internals/hooks/usePicker/usePickerValue.js +12 -16
- package/modern/internals/index.js +0 -7
- package/modern/locales/beBY.js +4 -4
- package/modern/locales/caES.js +3 -3
- package/modern/locales/csCZ.js +4 -4
- package/modern/locales/daDK.js +3 -3
- package/modern/locales/deDE.js +3 -3
- package/modern/locales/elGR.js +4 -4
- package/modern/locales/enUS.js +4 -4
- package/modern/locales/esES.js +3 -3
- package/modern/locales/eu.js +3 -3
- package/modern/locales/faIR.js +3 -3
- package/modern/locales/fiFI.js +3 -3
- package/modern/locales/frFR.js +3 -3
- package/modern/locales/heIL.js +3 -3
- package/modern/locales/huHU.js +3 -3
- package/modern/locales/isIS.js +4 -4
- package/modern/locales/itIT.js +3 -3
- package/modern/locales/jaJP.js +3 -3
- package/modern/locales/koKR.js +3 -3
- package/modern/locales/kzKZ.js +4 -4
- package/modern/locales/mk.js +3 -3
- package/modern/locales/nbNO.js +4 -4
- package/modern/locales/nlNL.js +3 -3
- package/modern/locales/nnNO.js +3 -3
- package/modern/locales/plPL.js +4 -4
- package/modern/locales/ptBR.js +4 -4
- package/modern/locales/roRO.js +3 -3
- package/modern/locales/ruRU.js +3 -3
- package/modern/locales/skSK.js +4 -4
- package/modern/locales/svSE.js +3 -3
- package/modern/locales/trTR.js +4 -4
- package/modern/locales/ukUA.js +3 -3
- package/modern/locales/urPK.js +4 -4
- package/modern/locales/utils/getPickersLocalization.js +13 -0
- package/modern/locales/viVN.js +3 -3
- package/modern/locales/zhCN.js +3 -3
- package/modern/locales/zhHK.js +3 -3
- package/modern/validation/index.js +5 -0
- package/modern/validation/useValidation.js +54 -0
- package/{internals/utils → modern}/validation/validateDate.js +6 -4
- package/modern/{internals/utils/validation → validation}/validateDateTime.js +8 -3
- package/{internals/utils → modern}/validation/validateTime.js +6 -4
- package/node/AdapterDayjs/AdapterDayjs.js +1 -1
- package/node/DateCalendar/DateCalendar.js +1 -0
- package/node/DateCalendar/useCalendarState.js +1 -0
- package/node/DateCalendar/useIsDateDisabled.js +5 -4
- package/node/DateField/DateField.js +1 -0
- package/node/DateField/useDateField.js +5 -4
- package/node/DatePicker/DatePicker.js +1 -0
- package/node/DatePicker/DatePickerToolbar.js +1 -0
- package/node/DateTimeField/DateTimeField.js +1 -0
- package/node/DateTimeField/useDateTimeField.js +5 -4
- package/node/DateTimePicker/DateTimePicker.js +1 -0
- package/node/DateTimePicker/DateTimePickerTabs.js +1 -0
- package/node/DateTimePicker/DateTimePickerToolbar.js +1 -0
- package/node/DayCalendarSkeleton/DayCalendarSkeleton.js +1 -0
- package/node/DesktopDatePicker/DesktopDatePicker.js +11 -5
- package/node/DesktopDateTimePicker/DesktopDateTimePicker.js +11 -5
- package/node/DesktopTimePicker/DesktopTimePicker.js +11 -5
- package/node/DigitalClock/DigitalClock.js +1 -0
- package/node/LocalizationProvider/LocalizationProvider.js +1 -0
- package/node/MobileDatePicker/MobileDatePicker.js +11 -5
- package/node/MobileDateTimePicker/MobileDateTimePicker.js +11 -5
- package/node/MobileTimePicker/MobileTimePicker.js +11 -5
- package/node/MonthCalendar/MonthCalendar.js +1 -0
- package/node/MultiSectionDigitalClock/MultiSectionDigitalClock.js +1 -0
- package/node/PickersActionBar/PickersActionBar.js +1 -0
- package/node/PickersCalendarHeader/PickersCalendarHeader.js +1 -0
- package/node/PickersDay/PickersDay.js +1 -0
- package/node/PickersLayout/PickersLayout.js +1 -0
- package/node/PickersLayout/usePickerLayout.js +1 -0
- package/node/PickersSectionList/PickersSectionList.js +1 -0
- package/node/PickersShortcuts/PickersShortcuts.js +1 -0
- package/node/PickersTextField/PickersTextField.js +1 -0
- package/node/StaticDatePicker/StaticDatePicker.js +3 -2
- package/node/StaticDateTimePicker/StaticDateTimePicker.js +3 -2
- package/node/StaticTimePicker/StaticTimePicker.js +3 -2
- package/node/TimeClock/Clock.js +1 -1
- package/node/TimeClock/TimeClock.js +1 -0
- package/node/TimeField/TimeField.js +1 -0
- package/node/TimeField/useTimeField.js +5 -4
- package/node/TimePicker/TimePicker.js +1 -0
- package/node/TimePicker/TimePickerToolbar.js +1 -0
- package/node/YearCalendar/YearCalendar.js +1 -0
- package/node/hooks/index.js +8 -1
- package/node/hooks/useClearableField.js +1 -0
- package/node/hooks/usePickersTranslations.js +1 -0
- package/node/hooks/useSplitFieldProps.js +51 -0
- package/node/index.js +13 -1
- package/node/internals/hooks/useDesktopPicker/useDesktopPicker.js +1 -3
- package/node/internals/hooks/useField/useField.js +11 -6
- package/node/internals/hooks/useField/useFieldState.js +2 -4
- package/node/internals/hooks/useMobilePicker/useMobilePicker.js +1 -3
- package/node/internals/hooks/usePicker/usePicker.js +1 -1
- package/node/internals/hooks/usePicker/usePickerValue.js +12 -16
- package/node/internals/index.js +0 -49
- package/node/locales/beBY.js +4 -4
- package/node/locales/caES.js +3 -3
- package/node/locales/csCZ.js +4 -4
- package/node/locales/daDK.js +3 -3
- package/node/locales/deDE.js +3 -3
- package/node/locales/elGR.js +4 -4
- package/node/locales/enUS.js +4 -4
- package/node/locales/esES.js +3 -3
- package/node/locales/eu.js +3 -3
- package/node/locales/faIR.js +3 -3
- package/node/locales/fiFI.js +3 -3
- package/node/locales/frFR.js +3 -3
- package/node/locales/heIL.js +3 -3
- package/node/locales/huHU.js +3 -3
- package/node/locales/isIS.js +4 -4
- package/node/locales/itIT.js +3 -3
- package/node/locales/jaJP.js +3 -3
- package/node/locales/koKR.js +3 -3
- package/node/locales/kzKZ.js +4 -4
- package/node/locales/mk.js +3 -3
- package/node/locales/nbNO.js +4 -4
- package/node/locales/nlNL.js +3 -3
- package/node/locales/nnNO.js +3 -3
- package/node/locales/plPL.js +4 -4
- package/node/locales/ptBR.js +4 -4
- package/node/locales/roRO.js +3 -3
- package/node/locales/ruRU.js +3 -3
- package/node/locales/skSK.js +4 -4
- package/node/locales/svSE.js +3 -3
- package/node/locales/trTR.js +4 -4
- package/node/locales/ukUA.js +3 -3
- package/node/locales/urPK.js +4 -4
- package/node/locales/utils/getPickersLocalization.js +16 -2
- package/node/locales/viVN.js +3 -3
- package/node/locales/zhCN.js +3 -3
- package/node/locales/zhHK.js +3 -3
- package/node/validation/index.js +40 -0
- package/node/validation/useValidation.js +61 -0
- package/node/{internals/utils/validation → validation}/validateDate.js +6 -4
- package/node/{internals/utils/validation → validation}/validateDateTime.js +8 -3
- package/node/{internals/utils/validation → validation}/validateTime.js +6 -4
- package/package.json +2 -2
- package/{internals/utils/validation → validation}/extractValidationProps.d.ts +1 -1
- package/validation/index.d.ts +9 -0
- package/validation/index.js +5 -0
- package/validation/package.json +6 -0
- package/validation/useValidation.d.ts +68 -0
- package/validation/useValidation.js +54 -0
- package/validation/validateDate.d.ts +6 -0
- package/{modern/internals/utils/validation → validation}/validateDate.js +6 -4
- package/validation/validateDateTime.d.ts +7 -0
- package/{internals/utils/validation → validation}/validateDateTime.js +8 -3
- package/validation/validateTime.d.ts +6 -0
- package/{modern/internals/utils/validation → validation}/validateTime.js +6 -4
- package/internals/hooks/useValidation.d.ts +0 -24
- package/internals/hooks/useValidation.js +0 -22
- package/internals/utils/fields.d.ts +0 -5
- package/internals/utils/fields.js +0 -28
- package/internals/utils/validation/validateDate.d.ts +0 -7
- package/internals/utils/validation/validateDateTime.d.ts +0 -7
- package/internals/utils/validation/validateTime.d.ts +0 -7
- package/internals/utils/warning.d.ts +0 -2
- package/internals/utils/warning.js +0 -21
- package/modern/internals/hooks/useValidation.js +0 -22
- package/modern/internals/utils/fields.js +0 -28
- package/modern/internals/utils/warning.js +0 -21
- package/node/internals/hooks/useValidation.js +0 -29
- package/node/internals/utils/fields.js +0 -36
- package/node/internals/utils/warning.js +0 -28
- /package/{internals/utils → modern}/validation/extractValidationProps.js +0 -0
- /package/node/{internals/utils/validation → validation}/extractValidationProps.js +0 -0
- /package/{modern/internals/utils/validation → validation}/extractValidationProps.js +0 -0
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
1
3
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
4
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
3
5
|
const _excluded = ["onFocus", "onBlur", "className", "color", "disabled", "error", "variant", "required", "InputProps", "inputProps", "inputRef", "sectionListRef", "elements", "areAllSectionsEmpty", "onClick", "onKeyDown", "onKeyUp", "onPaste", "onInput", "endAdornment", "startAdornment", "tabIndex", "contentEditable", "focused", "value", "onChange", "fullWidth", "id", "name", "helperText", "FormHelperTextProps", "label", "InputLabelProps"];
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
1
3
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
4
|
import * as React from 'react';
|
|
3
5
|
import PropTypes from 'prop-types';
|
|
4
6
|
import { useDatePickerDefaultizedProps } from "../DatePicker/shared.js";
|
|
5
7
|
import { renderDateViewCalendar } from "../dateViewRenderers/index.js";
|
|
6
8
|
import { useStaticPicker } from "../internals/hooks/useStaticPicker/index.js";
|
|
7
|
-
import { validateDate } from "../
|
|
9
|
+
import { validateDate } from "../validation/index.js";
|
|
8
10
|
import { singleItemValueManager } from "../internals/utils/valueManagers.js";
|
|
9
11
|
/**
|
|
10
12
|
* Demos:
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
1
3
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
4
|
import * as React from 'react';
|
|
3
5
|
import PropTypes from 'prop-types';
|
|
@@ -6,7 +8,7 @@ import { renderTimeViewClock } from "../timeViewRenderers/index.js";
|
|
|
6
8
|
import { renderDateViewCalendar } from "../dateViewRenderers/index.js";
|
|
7
9
|
import { singleItemValueManager } from "../internals/utils/valueManagers.js";
|
|
8
10
|
import { useStaticPicker } from "../internals/hooks/useStaticPicker/index.js";
|
|
9
|
-
import { validateDateTime } from "../
|
|
11
|
+
import { validateDateTime } from "../validation/index.js";
|
|
10
12
|
/**
|
|
11
13
|
* Demos:
|
|
12
14
|
*
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
1
3
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
4
|
import * as React from 'react';
|
|
3
5
|
import PropTypes from 'prop-types';
|
|
@@ -5,7 +7,7 @@ import { useTimePickerDefaultizedProps } from "../TimePicker/shared.js";
|
|
|
5
7
|
import { renderTimeViewClock } from "../timeViewRenderers/index.js";
|
|
6
8
|
import { singleItemValueManager } from "../internals/utils/valueManagers.js";
|
|
7
9
|
import { useStaticPicker } from "../internals/hooks/useStaticPicker/index.js";
|
|
8
|
-
import { validateTime } from "../
|
|
10
|
+
import { validateTime } from "../validation/index.js";
|
|
9
11
|
/**
|
|
10
12
|
* Demos:
|
|
11
13
|
*
|
package/TimeClock/Clock.js
CHANGED
|
@@ -308,7 +308,7 @@ export function Clock(inProps) {
|
|
|
308
308
|
})]
|
|
309
309
|
}), /*#__PURE__*/_jsx(ClockWrapper, {
|
|
310
310
|
"aria-activedescendant": selectedId,
|
|
311
|
-
"aria-label": translations.clockLabelText(type, value, utils),
|
|
311
|
+
"aria-label": translations.clockLabelText(type, value, utils, value == null ? null : utils.format(value, 'fullTime')),
|
|
312
312
|
ref: listboxRef,
|
|
313
313
|
role: "listbox",
|
|
314
314
|
onKeyDown: handleKeyDown,
|
package/TimeClock/TimeClock.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
1
3
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
4
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
3
5
|
const _excluded = ["ampm", "ampmInClock", "autoFocus", "slots", "slotProps", "value", "defaultValue", "referenceDate", "disableIgnoringDatePartForTimeValidation", "maxTime", "minTime", "disableFuture", "disablePast", "minutesStep", "shouldDisableTime", "showViewSwitcher", "onChange", "view", "views", "openTo", "onViewChange", "focusedView", "onFocusedViewChange", "className", "disabled", "readOnly", "timezone"];
|
package/TimeField/TimeField.js
CHANGED
|
@@ -2,9 +2,9 @@ import * as React from 'react';
|
|
|
2
2
|
import { SlotComponentProps } from '@mui/utils';
|
|
3
3
|
import TextField from '@mui/material/TextField';
|
|
4
4
|
import { UseFieldInternalProps } from '../internals/hooks/useField';
|
|
5
|
-
import { MakeOptional } from '../internals/models/helpers';
|
|
5
|
+
import { DefaultizedProps, MakeOptional } from '../internals/models/helpers';
|
|
6
6
|
import { BaseTimeValidationProps, TimeValidationProps } from '../internals/models/validation';
|
|
7
|
-
import { FieldSection, PickerValidDate, TimeValidationError, BuiltInFieldTextFieldProps } from '../models';
|
|
7
|
+
import { FieldSection, PickerValidDate, TimeValidationError, BuiltInFieldTextFieldProps, BaseSingleInputFieldProps } from '../models';
|
|
8
8
|
import { ExportedUseClearableFieldProps, UseClearableFieldSlots, UseClearableFieldSlotProps } from '../hooks/useClearableField';
|
|
9
9
|
export interface UseTimeFieldProps<TDate extends PickerValidDate, TEnableAccessibleFieldDOMStructure extends boolean> extends MakeOptional<UseFieldInternalProps<TDate | null, TDate, FieldSection, TEnableAccessibleFieldDOMStructure, TimeValidationError>, 'format'>, TimeValidationProps<TDate>, BaseTimeValidationProps, ExportedUseClearableFieldProps {
|
|
10
10
|
/**
|
|
@@ -13,6 +13,11 @@ export interface UseTimeFieldProps<TDate extends PickerValidDate, TEnableAccessi
|
|
|
13
13
|
*/
|
|
14
14
|
ampm?: boolean;
|
|
15
15
|
}
|
|
16
|
+
/**
|
|
17
|
+
* Props the field can receive when used inside a time picker.
|
|
18
|
+
* (`TimePicker`, `DesktopTimePicker` or `MobileTimePicker` component).
|
|
19
|
+
*/
|
|
20
|
+
export type TimeFieldInPickerProps<TDate extends PickerValidDate, TEnableAccessibleFieldDOMStructure extends boolean> = DefaultizedProps<UseTimeFieldProps<TDate, TEnableAccessibleFieldDOMStructure>, 'format' | 'timezone' | 'ampm' | keyof BaseTimeValidationProps> & BaseSingleInputFieldProps<TDate | null, TDate, FieldSection, false, TimeValidationError>;
|
|
16
21
|
export type UseTimeFieldComponentProps<TDate extends PickerValidDate, TEnableAccessibleFieldDOMStructure extends boolean, TChildProps extends {}> = Omit<TChildProps, keyof UseTimeFieldProps<TDate, TEnableAccessibleFieldDOMStructure>> & UseTimeFieldProps<TDate, TEnableAccessibleFieldDOMStructure>;
|
|
17
22
|
export type TimeFieldProps<TDate extends PickerValidDate, TEnableAccessibleFieldDOMStructure extends boolean = false> = UseTimeFieldComponentProps<TDate, TEnableAccessibleFieldDOMStructure, BuiltInFieldTextFieldProps<TEnableAccessibleFieldDOMStructure>> & {
|
|
18
23
|
/**
|
package/TimeField/index.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export { TimeField } from './TimeField';
|
|
2
2
|
export { useTimeField as unstable_useTimeField } from './useTimeField';
|
|
3
|
-
export type { UseTimeFieldProps, UseTimeFieldComponentProps, TimeFieldProps, } from './TimeField.types';
|
|
3
|
+
export type { UseTimeFieldProps, UseTimeFieldComponentProps, TimeFieldProps, TimeFieldInPickerProps, } from './TimeField.types';
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { UseTimeFieldProps } from './TimeField.types';
|
|
2
2
|
import { PickerValidDate } from '../models';
|
|
3
|
-
export declare const useTimeField: <TDate extends PickerValidDate, TEnableAccessibleFieldDOMStructure extends boolean, TAllProps extends UseTimeFieldProps<TDate, TEnableAccessibleFieldDOMStructure>>(inProps: TAllProps) => import("../internals/hooks/useField").UseFieldResponse<TEnableAccessibleFieldDOMStructure, Omit<TAllProps & Omit<UseTimeFieldProps<TDate, TEnableAccessibleFieldDOMStructure>, keyof import("../internals/hooks/defaultizedFieldProps").UseDefaultizedTimeFieldBaseProps> & Required<Pick<UseTimeFieldProps<TDate, TEnableAccessibleFieldDOMStructure>, keyof import("../internals/hooks/defaultizedFieldProps").UseDefaultizedTimeFieldBaseProps>>, keyof
|
|
3
|
+
export declare const useTimeField: <TDate extends PickerValidDate, TEnableAccessibleFieldDOMStructure extends boolean, TAllProps extends UseTimeFieldProps<TDate, TEnableAccessibleFieldDOMStructure>>(inProps: TAllProps) => import("../internals/hooks/useField").UseFieldResponse<TEnableAccessibleFieldDOMStructure, Omit<TAllProps & Omit<UseTimeFieldProps<TDate, TEnableAccessibleFieldDOMStructure>, keyof import("../internals/hooks/defaultizedFieldProps").UseDefaultizedTimeFieldBaseProps> & Required<Pick<UseTimeFieldProps<TDate, TEnableAccessibleFieldDOMStructure>, keyof import("../internals/hooks/defaultizedFieldProps").UseDefaultizedTimeFieldBaseProps>>, "disabled" | "format" | "onChange" | "onError" | "defaultValue" | "value" | "readOnly" | "ampm" | "timezone" | "referenceDate" | "formatDensity" | "shouldRespectLeadingZeros" | "selectedSections" | "onSelectedSectionsChange" | "unstableFieldRef" | "enableAccessibleFieldDOMStructure" | keyof import("../internals").BaseTimeValidationProps | keyof import("../internals").TimeValidationProps<any> | "dateSeparator">>;
|
|
@@ -1,14 +1,16 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
1
3
|
import { singleItemFieldValueManager, singleItemValueManager } from "../internals/utils/valueManagers.js";
|
|
2
4
|
import { useField } from "../internals/hooks/useField/index.js";
|
|
3
|
-
import { validateTime } from "../
|
|
4
|
-
import {
|
|
5
|
+
import { validateTime } from "../validation/index.js";
|
|
6
|
+
import { useSplitFieldProps } from "../hooks/index.js";
|
|
5
7
|
import { useDefaultizedTimeField } from "../internals/hooks/defaultizedFieldProps.js";
|
|
6
8
|
export const useTimeField = inProps => {
|
|
7
9
|
const props = useDefaultizedTimeField(inProps);
|
|
8
10
|
const {
|
|
9
11
|
forwardedProps,
|
|
10
12
|
internalProps
|
|
11
|
-
} =
|
|
13
|
+
} = useSplitFieldProps(props, 'time');
|
|
12
14
|
return useField({
|
|
13
15
|
forwardedProps,
|
|
14
16
|
internalProps,
|
package/TimePicker/TimePicker.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
1
3
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
4
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
3
5
|
const _excluded = ["ampm", "ampmInClock", "value", "isLandscape", "onChange", "view", "onViewChange", "views", "disabled", "readOnly", "className"];
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
1
3
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
2
4
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
3
5
|
const _excluded = ["autoFocus", "className", "value", "defaultValue", "referenceDate", "disabled", "disableFuture", "disablePast", "maxDate", "minDate", "onChange", "readOnly", "shouldDisableYear", "disableHighlightToday", "onYearFocus", "hasFocus", "onFocusedViewChange", "yearsPerRow", "timezone", "gridLabelId", "slots", "slotProps"];
|
package/hooks/index.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
export { useClearableField } from './useClearableField';
|
|
2
2
|
export type { ExportedUseClearableFieldProps, UseClearableFieldSlots, UseClearableFieldSlotProps, UseClearableFieldResponse, } from './useClearableField';
|
|
3
3
|
export { usePickersTranslations } from './usePickersTranslations';
|
|
4
|
+
export { useSplitFieldProps } from './useSplitFieldProps';
|
package/hooks/index.js
CHANGED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { FieldValueType } from '../models';
|
|
2
|
+
import { DATE_TIME_VALIDATION_PROP_NAMES, DATE_VALIDATION_PROP_NAMES, TIME_VALIDATION_PROP_NAMES } from '../validation/extractValidationProps';
|
|
3
|
+
declare const SHARED_FIELD_INTERNAL_PROP_NAMES: readonly ["value", "defaultValue", "referenceDate", "format", "formatDensity", "onChange", "timezone", "onError", "shouldRespectLeadingZeros", "selectedSections", "onSelectedSectionsChange", "unstableFieldRef", "enableAccessibleFieldDOMStructure", "disabled", "readOnly", "dateSeparator"];
|
|
4
|
+
type InternalPropNames<TValueType extends FieldValueType> = (typeof SHARED_FIELD_INTERNAL_PROP_NAMES)[number] | (TValueType extends 'date' | 'date-time' ? (typeof DATE_VALIDATION_PROP_NAMES)[number] : never) | (TValueType extends 'time' | 'date-time' ? (typeof TIME_VALIDATION_PROP_NAMES)[number] : never) | (TValueType extends 'date-time' ? (typeof DATE_TIME_VALIDATION_PROP_NAMES)[number] : never);
|
|
5
|
+
/**
|
|
6
|
+
* Split the props received by the field component into:
|
|
7
|
+
* - `internalProps` which are used by the various hooks called by the field component.
|
|
8
|
+
* - `forwardedProps` which are passed to the underlying component.
|
|
9
|
+
* Note that some forwarded props might be used by the hooks as well.
|
|
10
|
+
* For instance, hooks like `useDateField` need props like `autoFocus` to know how to behave.
|
|
11
|
+
* @template TProps, TValueType
|
|
12
|
+
* @param {TProps} props The props received by the field component.
|
|
13
|
+
* @param {TValueType} valueType The type of the field value ('date', 'time', or 'date-time').
|
|
14
|
+
*/
|
|
15
|
+
export declare const useSplitFieldProps: <TValueType extends FieldValueType, TProps extends { [key in InternalPropNames<TValueType>]?: any; }>(props: TProps, valueType: TValueType) => {
|
|
16
|
+
forwardedProps: Omit<TProps, InternalPropNames<TValueType>>;
|
|
17
|
+
internalProps: Pick<TProps, InternalPropNames<TValueType>>;
|
|
18
|
+
};
|
|
19
|
+
export {};
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
4
|
+
import * as React from 'react';
|
|
5
|
+
import { DATE_TIME_VALIDATION_PROP_NAMES, DATE_VALIDATION_PROP_NAMES, TIME_VALIDATION_PROP_NAMES } from "../validation/extractValidationProps.js";
|
|
6
|
+
const SHARED_FIELD_INTERNAL_PROP_NAMES = ['value', 'defaultValue', 'referenceDate', 'format', 'formatDensity', 'onChange', 'timezone', 'onError', 'shouldRespectLeadingZeros', 'selectedSections', 'onSelectedSectionsChange', 'unstableFieldRef', 'enableAccessibleFieldDOMStructure', 'disabled', 'readOnly', 'dateSeparator'];
|
|
7
|
+
/**
|
|
8
|
+
* Split the props received by the field component into:
|
|
9
|
+
* - `internalProps` which are used by the various hooks called by the field component.
|
|
10
|
+
* - `forwardedProps` which are passed to the underlying component.
|
|
11
|
+
* Note that some forwarded props might be used by the hooks as well.
|
|
12
|
+
* For instance, hooks like `useDateField` need props like `autoFocus` to know how to behave.
|
|
13
|
+
* @template TProps, TValueType
|
|
14
|
+
* @param {TProps} props The props received by the field component.
|
|
15
|
+
* @param {TValueType} valueType The type of the field value ('date', 'time', or 'date-time').
|
|
16
|
+
*/
|
|
17
|
+
export const useSplitFieldProps = (props, valueType) => {
|
|
18
|
+
return React.useMemo(() => {
|
|
19
|
+
const forwardedProps = _extends({}, props);
|
|
20
|
+
const internalProps = {};
|
|
21
|
+
const extractProp = propName => {
|
|
22
|
+
if (forwardedProps.hasOwnProperty(propName)) {
|
|
23
|
+
// @ts-ignore
|
|
24
|
+
internalProps[propName] = forwardedProps[propName];
|
|
25
|
+
delete forwardedProps[propName];
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
SHARED_FIELD_INTERNAL_PROP_NAMES.forEach(extractProp);
|
|
29
|
+
if (valueType === 'date') {
|
|
30
|
+
DATE_VALIDATION_PROP_NAMES.forEach(extractProp);
|
|
31
|
+
} else if (valueType === 'time') {
|
|
32
|
+
TIME_VALIDATION_PROP_NAMES.forEach(extractProp);
|
|
33
|
+
} else if (valueType === 'date-time') {
|
|
34
|
+
DATE_VALIDATION_PROP_NAMES.forEach(extractProp);
|
|
35
|
+
TIME_VALIDATION_PROP_NAMES.forEach(extractProp);
|
|
36
|
+
DATE_TIME_VALIDATION_PROP_NAMES.forEach(extractProp);
|
|
37
|
+
}
|
|
38
|
+
return {
|
|
39
|
+
forwardedProps,
|
|
40
|
+
internalProps
|
|
41
|
+
};
|
|
42
|
+
}, [props, valueType]);
|
|
43
|
+
};
|
package/index.d.ts
CHANGED
package/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @mui/x-date-pickers v7.
|
|
2
|
+
* @mui/x-date-pickers v7.17.0
|
|
3
3
|
*
|
|
4
4
|
* @license MIT
|
|
5
5
|
* This source code is licensed under the MIT license found in the
|
|
@@ -56,4 +56,5 @@ export * from "./PickersSectionList/index.js";
|
|
|
56
56
|
export { DEFAULT_DESKTOP_MODE_MEDIA_QUERY } from "./internals/utils/utils.js";
|
|
57
57
|
export * from "./models/index.js";
|
|
58
58
|
export * from "./icons/index.js";
|
|
59
|
-
export * from "./hooks/index.js";
|
|
59
|
+
export * from "./hooks/index.js";
|
|
60
|
+
export * from "./validation/index.js";
|
|
@@ -10,7 +10,6 @@ import IconButton from '@mui/material/IconButton';
|
|
|
10
10
|
import useForkRef from '@mui/utils/useForkRef';
|
|
11
11
|
import useId from '@mui/utils/useId';
|
|
12
12
|
import { PickersPopper } from "../../components/PickersPopper.js";
|
|
13
|
-
import { useUtils } from "../useUtils.js";
|
|
14
13
|
import { usePicker } from "../usePicker/index.js";
|
|
15
14
|
import { LocalizationProvider } from "../../../LocalizationProvider/index.js";
|
|
16
15
|
import { PickersLayout } from "../../../PickersLayout/index.js";
|
|
@@ -47,7 +46,6 @@ export const useDesktopPicker = _ref => {
|
|
|
47
46
|
localeText,
|
|
48
47
|
reduceAnimations
|
|
49
48
|
} = props;
|
|
50
|
-
const utils = useUtils();
|
|
51
49
|
const containerRef = React.useRef(null);
|
|
52
50
|
const fieldRef = React.useRef(null);
|
|
53
51
|
const labelId = useId();
|
|
@@ -89,7 +87,7 @@ export const useDesktopPicker = _ref => {
|
|
|
89
87
|
additionalProps: {
|
|
90
88
|
disabled: disabled || readOnly,
|
|
91
89
|
onClick: open ? actions.onClose : actions.onOpen,
|
|
92
|
-
'aria-label': getOpenDialogAriaText(pickerFieldProps.value
|
|
90
|
+
'aria-label': getOpenDialogAriaText(pickerFieldProps.value),
|
|
93
91
|
edge: inputAdornmentProps.position
|
|
94
92
|
},
|
|
95
93
|
ownerState: props
|
|
@@ -6,7 +6,7 @@ import { SlotComponentProps } from '@mui/utils';
|
|
|
6
6
|
import { BaseNonStaticPickerProps, BasePickerProps, BaseNonRangeNonStaticPickerProps } from '../../models/props/basePickerProps';
|
|
7
7
|
import { PickersPopperSlots, PickersPopperSlotProps } from '../../components/PickersPopper';
|
|
8
8
|
import { UsePickerParams, UsePickerProps } from '../usePicker';
|
|
9
|
-
import { BaseSingleInputFieldProps, FieldSection,
|
|
9
|
+
import { BaseSingleInputFieldProps, FieldSection, PickerValidDate } from '../../../models';
|
|
10
10
|
import { ExportedPickersLayoutSlots, ExportedPickersLayoutSlotProps, PickersLayoutSlotProps } from '../../../PickersLayout/PickersLayout.types';
|
|
11
11
|
import { UsePickerValueNonStaticProps } from '../usePicker/usePickerValue.types';
|
|
12
12
|
import { UsePickerViewsNonStaticProps, UsePickerViewsProps } from '../usePicker/usePickerViews';
|
|
@@ -71,5 +71,5 @@ export interface UseDesktopPickerProps<TDate extends PickerValidDate, TView exte
|
|
|
71
71
|
}
|
|
72
72
|
export interface UseDesktopPickerParams<TDate extends PickerValidDate, TView extends DateOrTimeViewWithMeridiem, TEnableAccessibleFieldDOMStructure extends boolean, TExternalProps extends UseDesktopPickerProps<TDate, TView, TEnableAccessibleFieldDOMStructure, any, TExternalProps>> extends Pick<UsePickerParams<TDate | null, TDate, TView, FieldSection, TExternalProps, {}>, 'valueManager' | 'valueType' | 'validator' | 'rendererInterceptor'> {
|
|
73
73
|
props: TExternalProps;
|
|
74
|
-
getOpenDialogAriaText: (date: TDate | null
|
|
74
|
+
getOpenDialogAriaText: (date: TDate | null) => string;
|
|
75
75
|
}
|
|
@@ -3,7 +3,7 @@ import * as React from 'react';
|
|
|
3
3
|
import useEnhancedEffect from '@mui/utils/useEnhancedEffect';
|
|
4
4
|
import useEventCallback from '@mui/utils/useEventCallback';
|
|
5
5
|
import { useRtl } from '@mui/system/RtlProvider';
|
|
6
|
-
import { useValidation } from "
|
|
6
|
+
import { useValidation } from "../../../validation/index.js";
|
|
7
7
|
import { useUtils } from "../useUtils.js";
|
|
8
8
|
import { adjustSectionValue, getSectionOrder } from "./useField.utils.js";
|
|
9
9
|
import { useFieldState } from "./useFieldState.js";
|
|
@@ -158,18 +158,23 @@ export const useField = params => {
|
|
|
158
158
|
useEnhancedEffect(() => {
|
|
159
159
|
interactions.syncSelectionToDOM();
|
|
160
160
|
});
|
|
161
|
-
const
|
|
161
|
+
const {
|
|
162
|
+
hasValidationError
|
|
163
|
+
} = useValidation({
|
|
164
|
+
props: internalProps,
|
|
165
|
+
validator,
|
|
166
|
+
timezone,
|
|
162
167
|
value: state.value,
|
|
163
|
-
|
|
164
|
-
})
|
|
168
|
+
onError: internalProps.onError
|
|
169
|
+
});
|
|
165
170
|
const inputError = React.useMemo(() => {
|
|
166
171
|
// only override when `error` is undefined.
|
|
167
172
|
// in case of multi input fields, the `error` value is provided externally and will always be defined.
|
|
168
173
|
if (error !== undefined) {
|
|
169
174
|
return error;
|
|
170
175
|
}
|
|
171
|
-
return
|
|
172
|
-
}, [
|
|
176
|
+
return hasValidationError;
|
|
177
|
+
}, [hasValidationError, error]);
|
|
173
178
|
React.useEffect(() => {
|
|
174
179
|
if (!inputError && activeSectionIndex == null) {
|
|
175
180
|
resetCharacterQuery();
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import { FieldSectionType, FieldSection, FieldSelectedSections, MuiPickersAdapter, TimezoneProps, FieldSectionContentType, FieldValueType,
|
|
2
|
+
import { FieldSectionType, FieldSection, FieldSelectedSections, MuiPickersAdapter, TimezoneProps, FieldSectionContentType, FieldValueType, PickerValidDate, FieldRef, OnErrorProps, InferError } from '../../../models';
|
|
3
3
|
import type { PickerValueManager } from '../usePicker';
|
|
4
|
-
import {
|
|
4
|
+
import type { Validator } from '../../../validation';
|
|
5
5
|
import type { UseFieldStateResponse } from './useFieldState';
|
|
6
6
|
import type { UseFieldCharacterEditingResponse } from './useFieldCharacterEditing';
|
|
7
7
|
import { PickersSectionElement, PickersSectionListRef } from '../../../PickersSectionList';
|
|
@@ -11,10 +11,10 @@ export interface UseFieldParams<TValue, TDate extends PickerValidDate, TSection
|
|
|
11
11
|
internalProps: TInternalProps;
|
|
12
12
|
valueManager: PickerValueManager<TValue, TDate, InferError<TInternalProps>>;
|
|
13
13
|
fieldValueManager: FieldValueManager<TValue, TDate, TSection>;
|
|
14
|
-
validator: Validator<TValue, TDate, InferError<TInternalProps>,
|
|
14
|
+
validator: Validator<TValue, TDate, InferError<TInternalProps>, TInternalProps>;
|
|
15
15
|
valueType: FieldValueType;
|
|
16
16
|
}
|
|
17
|
-
export interface UseFieldInternalProps<TValue, TDate extends PickerValidDate, TSection extends FieldSection, TEnableAccessibleFieldDOMStructure extends boolean, TError> extends TimezoneProps {
|
|
17
|
+
export interface UseFieldInternalProps<TValue, TDate extends PickerValidDate, TSection extends FieldSection, TEnableAccessibleFieldDOMStructure extends boolean, TError> extends TimezoneProps, OnErrorProps<TValue, TError> {
|
|
18
18
|
/**
|
|
19
19
|
* The selected value.
|
|
20
20
|
* Used when the component is controlled.
|
|
@@ -38,16 +38,6 @@ export interface UseFieldInternalProps<TValue, TDate extends PickerValidDate, TS
|
|
|
38
38
|
* @param {FieldChangeHandlerContext<TError>} context The context containing the validation result of the current value.
|
|
39
39
|
*/
|
|
40
40
|
onChange?: FieldChangeHandler<TValue, TError>;
|
|
41
|
-
/**
|
|
42
|
-
* Callback fired when the error associated with the current value changes.
|
|
43
|
-
* When a validation error is detected, the `error` parameter contains a non-null value.
|
|
44
|
-
* This can be used to render an appropriate form error.
|
|
45
|
-
* @template TError The validation error type. It will be either `string` or a `null`. It can be in `[start, end]` format in case of range value.
|
|
46
|
-
* @template TValue The value type. It will be the same type as `value` or `null`. It can be in `[start, end]` format in case of range value.
|
|
47
|
-
* @param {TError} error The reason why the current value is not valid.
|
|
48
|
-
* @param {TValue} value The value associated with the error.
|
|
49
|
-
*/
|
|
50
|
-
onError?: (error: TError, value: TValue) => void;
|
|
51
41
|
/**
|
|
52
42
|
* Format of the date when rendered in the input(s).
|
|
53
43
|
*/
|
|
@@ -291,14 +281,6 @@ export interface UseFieldState<TValue, TSection extends FieldSection> {
|
|
|
291
281
|
*/
|
|
292
282
|
tempValueStrAndroid: string | null;
|
|
293
283
|
}
|
|
294
|
-
export type UseFieldValidationProps<TValue, TInternalProps extends {
|
|
295
|
-
value?: TValue;
|
|
296
|
-
defaultValue?: TValue;
|
|
297
|
-
timezone?: PickersTimezone;
|
|
298
|
-
}> = Omit<TInternalProps, 'value' | 'defaultValue' | 'timezone'> & {
|
|
299
|
-
value: TValue;
|
|
300
|
-
timezone: PickersTimezone;
|
|
301
|
-
};
|
|
302
284
|
export type AvailableAdjustKeyCode = 'ArrowUp' | 'ArrowDown' | 'PageUp' | 'PageDown' | 'Home' | 'End';
|
|
303
285
|
export type SectionNeighbors = {
|
|
304
286
|
[sectionIndex: number]: {
|
|
@@ -110,10 +110,8 @@ export const useFieldState = params => {
|
|
|
110
110
|
validationError: validator({
|
|
111
111
|
adapter,
|
|
112
112
|
value,
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
timezone
|
|
116
|
-
})
|
|
113
|
+
timezone,
|
|
114
|
+
props: internalProps
|
|
117
115
|
})
|
|
118
116
|
};
|
|
119
117
|
handleValueChange(value, context);
|
|
@@ -8,7 +8,6 @@ import useId from '@mui/utils/useId';
|
|
|
8
8
|
import { PickersModalDialog } from "../../components/PickersModalDialog.js";
|
|
9
9
|
import { usePicker } from "../usePicker/index.js";
|
|
10
10
|
import { onSpaceOrEnter } from "../../utils/utils.js";
|
|
11
|
-
import { useUtils } from "../useUtils.js";
|
|
12
11
|
import { LocalizationProvider } from "../../../LocalizationProvider/index.js";
|
|
13
12
|
import { PickersLayout } from "../../../PickersLayout/index.js";
|
|
14
13
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
@@ -42,7 +41,6 @@ export const useMobilePicker = _ref => {
|
|
|
42
41
|
disabled,
|
|
43
42
|
localeText
|
|
44
43
|
} = props;
|
|
45
|
-
const utils = useUtils();
|
|
46
44
|
const fieldRef = React.useRef(null);
|
|
47
45
|
const labelId = useId();
|
|
48
46
|
const isToolbarHidden = innerSlotProps?.toolbar?.hidden ?? false;
|
|
@@ -89,7 +87,7 @@ export const useMobilePicker = _ref => {
|
|
|
89
87
|
|
|
90
88
|
// TODO: Move to `useSlotProps` when https://github.com/mui/material-ui/pull/35088 will be merged
|
|
91
89
|
fieldProps.inputProps = _extends({}, fieldProps.inputProps, {
|
|
92
|
-
'aria-label': getOpenDialogAriaText(pickerFieldProps.value
|
|
90
|
+
'aria-label': getOpenDialogAriaText(pickerFieldProps.value)
|
|
93
91
|
});
|
|
94
92
|
const slotsForField = _extends({
|
|
95
93
|
textField: slots.textField
|
|
@@ -4,7 +4,7 @@ import { SlotComponentProps } from '@mui/utils';
|
|
|
4
4
|
import { BaseNonStaticPickerProps, BasePickerProps, BaseNonRangeNonStaticPickerProps } from '../../models/props/basePickerProps';
|
|
5
5
|
import { PickersModalDialogSlots, PickersModalDialogSlotProps } from '../../components/PickersModalDialog';
|
|
6
6
|
import { UsePickerParams, UsePickerProps } from '../usePicker';
|
|
7
|
-
import { BaseSingleInputFieldProps, FieldSection,
|
|
7
|
+
import { BaseSingleInputFieldProps, FieldSection, PickerValidDate } from '../../../models';
|
|
8
8
|
import { ExportedPickersLayoutSlots, ExportedPickersLayoutSlotProps, PickersLayoutSlotProps } from '../../../PickersLayout/PickersLayout.types';
|
|
9
9
|
import { UsePickerValueNonStaticProps } from '../usePicker/usePickerValue.types';
|
|
10
10
|
import { UsePickerViewsNonStaticProps, UsePickerViewsProps } from '../usePicker/usePickerViews';
|
|
@@ -43,5 +43,5 @@ export interface UseMobilePickerProps<TDate extends PickerValidDate, TView exten
|
|
|
43
43
|
}
|
|
44
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
|
-
getOpenDialogAriaText: (date: TDate | null
|
|
46
|
+
getOpenDialogAriaText: (date: TDate | null) => string;
|
|
47
47
|
}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { UsePickerParams, UsePickerProps, UsePickerResponse } from './usePicker.types';
|
|
2
|
-
import { InferError } from '
|
|
3
|
-
import { FieldSection, PickerValidDate } from '../../../models';
|
|
2
|
+
import { FieldSection, PickerValidDate, InferError } from '../../../models';
|
|
4
3
|
import { DateOrTimeViewWithMeridiem } from '../../models';
|
|
5
4
|
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>>;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
import { warnOnce } from '@mui/x-internals/warning';
|
|
1
2
|
import { usePickerValue } from "./usePickerValue.js";
|
|
2
3
|
import { usePickerViews } from "./usePickerViews.js";
|
|
3
4
|
import { usePickerLayoutProps } from "./usePickerLayoutProps.js";
|
|
4
|
-
import { warnOnce } from "../../utils/warning.js";
|
|
5
5
|
export const usePicker = ({
|
|
6
6
|
props,
|
|
7
7
|
valueManager,
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { InferError } from '
|
|
2
|
-
import { FieldSection, PickerValidDate } from '../../../models';
|
|
1
|
+
import { FieldSection, PickerValidDate, InferError } from '../../../models';
|
|
3
2
|
import { UsePickerValueProps, UsePickerValueParams, UsePickerValueResponse } from './usePickerValue.types';
|
|
4
3
|
/**
|
|
5
4
|
* Manage the value lifecycle of all the pickers.
|
|
@@ -3,7 +3,7 @@ import * as React from 'react';
|
|
|
3
3
|
import useEventCallback from '@mui/utils/useEventCallback';
|
|
4
4
|
import { useOpenState } from "../useOpenState.js";
|
|
5
5
|
import { useLocalizationContext, useUtils } from "../useUtils.js";
|
|
6
|
-
import { useValidation } from "
|
|
6
|
+
import { useValidation } from "../../../validation/index.js";
|
|
7
7
|
import { useValueWithTimezone } from "../useValueWithTimezone.js";
|
|
8
8
|
|
|
9
9
|
/**
|
|
@@ -180,10 +180,15 @@ export const usePickerValue = ({
|
|
|
180
180
|
hasBeenModifiedSinceMount: false
|
|
181
181
|
};
|
|
182
182
|
});
|
|
183
|
-
|
|
183
|
+
const {
|
|
184
|
+
getValidationErrorForNewValue
|
|
185
|
+
} = useValidation({
|
|
186
|
+
props,
|
|
187
|
+
validator,
|
|
188
|
+
timezone,
|
|
184
189
|
value: dateState.draft,
|
|
185
|
-
|
|
186
|
-
})
|
|
190
|
+
onError: props.onError
|
|
191
|
+
});
|
|
187
192
|
const updateDate = useEventCallback(action => {
|
|
188
193
|
const updaterParams = {
|
|
189
194
|
action,
|
|
@@ -204,14 +209,7 @@ export const usePickerValue = ({
|
|
|
204
209
|
let cachedContext = null;
|
|
205
210
|
const getContext = () => {
|
|
206
211
|
if (!cachedContext) {
|
|
207
|
-
const validationError = action.name === 'setValueFromField' ? action.context.validationError :
|
|
208
|
-
adapter,
|
|
209
|
-
value: action.value,
|
|
210
|
-
props: _extends({}, props, {
|
|
211
|
-
value: action.value,
|
|
212
|
-
timezone
|
|
213
|
-
})
|
|
214
|
-
});
|
|
212
|
+
const validationError = action.name === 'setValueFromField' ? action.context.validationError : getValidationErrorForNewValue(action.value);
|
|
215
213
|
cachedContext = {
|
|
216
214
|
validationError
|
|
217
215
|
};
|
|
@@ -325,10 +323,8 @@ export const usePickerValue = ({
|
|
|
325
323
|
const error = validator({
|
|
326
324
|
adapter,
|
|
327
325
|
value: testedValue,
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
timezone
|
|
331
|
-
})
|
|
326
|
+
timezone,
|
|
327
|
+
props
|
|
332
328
|
});
|
|
333
329
|
return !valueManager.hasError(error);
|
|
334
330
|
};
|