@mui/x-date-pickers 8.0.0-alpha.6 → 8.0.0-alpha.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AdapterDateFns/AdapterDateFns.d.ts +2 -4
- package/AdapterDateFns/AdapterDateFns.js +49 -47
- package/AdapterDateFnsBase/AdapterDateFnsBase.d.ts +1 -1
- package/AdapterDateFnsJalali/AdapterDateFnsJalali.d.ts +2 -4
- package/AdapterDateFnsJalali/AdapterDateFnsJalali.js +48 -46
- package/{AdapterDateFnsJalaliV3/AdapterDateFnsJalaliV3.d.ts → AdapterDateFnsJalaliV2/AdapterDateFnsJalaliV2.d.ts} +2 -2
- package/{AdapterDateFnsJalaliV3/AdapterDateFnsJalaliV3.js → AdapterDateFnsJalaliV2/AdapterDateFnsJalaliV2.js} +45 -52
- package/AdapterDateFnsJalaliV2/index.d.ts +1 -0
- package/AdapterDateFnsJalaliV2/index.js +1 -0
- package/{AdapterDateFnsJalaliV3 → AdapterDateFnsJalaliV2}/package.json +1 -1
- package/{AdapterDateFnsV3/AdapterDateFnsV3.d.ts → AdapterDateFnsV2/AdapterDateFnsV2.d.ts} +2 -2
- package/{AdapterDateFnsV3/AdapterDateFnsV3.js → AdapterDateFnsV2/AdapterDateFnsV2.js} +46 -54
- package/AdapterDateFnsV2/index.d.ts +1 -0
- package/AdapterDateFnsV2/index.js +1 -0
- package/{AdapterDateFnsV3 → AdapterDateFnsV2}/package.json +1 -1
- package/AdapterDayjs/AdapterDayjs.d.ts +1 -1
- package/AdapterLuxon/AdapterLuxon.d.ts +1 -1
- package/AdapterMoment/AdapterMoment.d.ts +1 -1
- package/CHANGELOG.md +242 -1
- package/DateCalendar/DateCalendar.js +1 -1
- package/DateCalendar/PickersFadeTransitionGroup.d.ts +1 -1
- package/DateCalendar/PickersSlideTransition.d.ts +1 -1
- package/DateField/DateField.js +26 -31
- package/DateField/DateField.types.d.ts +6 -15
- package/DateField/useDateField.d.ts +1 -1
- package/DateField/useDateField.js +14 -11
- package/DatePicker/DatePicker.js +1 -1
- package/DatePicker/DatePicker.types.d.ts +5 -0
- package/DatePicker/DatePickerToolbar.d.ts +1 -2
- package/DatePicker/DatePickerToolbar.js +7 -11
- package/DatePicker/shared.d.ts +1 -1
- package/DateTimeField/DateTimeField.js +26 -31
- package/DateTimeField/DateTimeField.types.d.ts +6 -15
- package/DateTimeField/useDateTimeField.d.ts +1 -1
- package/DateTimeField/useDateTimeField.js +14 -11
- package/DateTimePicker/DateTimePicker.js +2 -2
- package/DateTimePicker/DateTimePickerTabs.js +2 -2
- package/DateTimePicker/DateTimePickerToolbar.d.ts +6 -2
- package/DateTimePicker/DateTimePickerToolbar.js +36 -31
- package/DateTimePicker/shared.d.ts +1 -1
- package/DesktopDatePicker/DesktopDatePicker.js +9 -14
- package/DesktopDatePicker/DesktopDatePicker.types.d.ts +5 -0
- package/DesktopDateTimePicker/DesktopDateTimePicker.js +14 -22
- package/DesktopDateTimePicker/DesktopDateTimePickerLayout.js +1 -5
- package/DesktopTimePicker/DesktopTimePicker.js +4 -19
- package/MobileDatePicker/MobileDatePicker.js +2 -11
- package/MobileDateTimePicker/MobileDateTimePicker.js +2 -11
- package/MobileTimePicker/MobileTimePicker.js +2 -11
- package/PickersActionBar/PickersActionBar.d.ts +6 -3
- package/PickersActionBar/PickersActionBar.js +6 -3
- package/PickersLayout/PickersLayout.js +1 -5
- package/PickersLayout/PickersLayout.types.d.ts +2 -3
- package/PickersLayout/usePickerLayout.js +12 -31
- package/PickersShortcuts/PickersShortcuts.d.ts +2 -5
- package/PickersShortcuts/PickersShortcuts.js +13 -10
- package/PickersShortcuts/index.d.ts +1 -1
- package/PickersTextField/PickersInputBase/PickersInputBase.js +7 -0
- package/PickersTextField/PickersTextField.js +1 -1
- package/TimeField/TimeField.js +25 -30
- package/TimeField/TimeField.types.d.ts +6 -15
- package/TimeField/useTimeField.d.ts +1 -1
- package/TimeField/useTimeField.js +14 -11
- package/TimePicker/TimePicker.js +2 -2
- package/TimePicker/TimePickerToolbar.d.ts +1 -2
- package/TimePicker/TimePickerToolbar.js +20 -18
- package/TimePicker/shared.d.ts +1 -1
- package/hooks/index.d.ts +1 -0
- package/hooks/index.js +2 -1
- package/hooks/useIsValidValue.d.ts +7 -0
- package/hooks/useIsValidValue.js +11 -0
- package/hooks/useParsedFormat.d.ts +8 -6
- package/hooks/useParsedFormat.js +10 -12
- package/hooks/usePickerActionsContext.d.ts +3 -1
- package/hooks/usePickerActionsContext.js +0 -1
- package/hooks/usePickerContext.d.ts +5 -3
- package/hooks/usePickerContext.js +3 -2
- package/hooks/useSplitFieldProps.d.ts +12 -3
- package/hooks/useSplitFieldProps.js +8 -3
- package/index.d.ts +1 -0
- package/index.js +3 -2
- package/internals/components/PickerFieldUI.d.ts +132 -0
- package/internals/components/PickerFieldUI.js +306 -0
- package/internals/components/PickerProvider.d.ts +34 -12
- package/internals/components/PickerProvider.js +14 -4
- package/internals/components/PickersToolbar.d.ts +2 -3
- package/internals/components/PickersToolbar.js +1 -1
- package/internals/hooks/date-helpers-hooks.js +4 -3
- package/internals/hooks/useDesktopPicker/useDesktopPicker.d.ts +1 -1
- package/internals/hooks/useDesktopPicker/useDesktopPicker.js +21 -96
- package/internals/hooks/useDesktopPicker/useDesktopPicker.types.d.ts +10 -33
- package/internals/hooks/useField/buildSectionsFromFormat.js +1 -1
- package/internals/hooks/useField/index.d.ts +2 -0
- package/internals/hooks/useField/index.js +2 -1
- package/internals/hooks/useField/useField.js +12 -4
- package/internals/hooks/useField/useField.types.d.ts +11 -4
- package/internals/hooks/useField/useField.utils.js +2 -2
- package/internals/hooks/useField/useFieldInternalPropsWithDefaults.d.ts +15 -0
- package/internals/hooks/useField/useFieldInternalPropsWithDefaults.js +46 -0
- package/internals/hooks/useField/useFieldState.js +2 -2
- package/internals/hooks/useField/useFieldV6TextField.js +2 -2
- package/internals/hooks/useField/useFieldV7TextField.js +3 -3
- package/internals/hooks/useFieldOwnerState.d.ts +1 -2
- package/internals/hooks/useMobilePicker/useMobilePicker.d.ts +1 -1
- package/internals/hooks/useMobilePicker/useMobilePicker.js +20 -51
- package/internals/hooks/useMobilePicker/useMobilePicker.types.d.ts +8 -16
- package/internals/hooks/useNullablePickerContext.d.ts +5 -0
- package/internals/hooks/useNullablePickerContext.js +10 -0
- package/internals/hooks/useOpenState.js +3 -2
- package/internals/hooks/usePicker/usePicker.d.ts +1 -2
- package/internals/hooks/usePicker/usePicker.js +0 -9
- package/internals/hooks/usePicker/usePicker.types.d.ts +7 -9
- package/internals/hooks/usePicker/usePickerProvider.d.ts +12 -6
- package/internals/hooks/usePicker/usePickerProvider.js +26 -4
- package/internals/hooks/usePicker/usePickerValue.d.ts +1 -1
- package/internals/hooks/usePicker/usePickerValue.js +62 -185
- package/internals/hooks/usePicker/usePickerValue.types.d.ts +52 -55
- package/internals/hooks/usePicker/usePickerViews.d.ts +27 -23
- package/internals/hooks/usePicker/usePickerViews.js +17 -11
- package/internals/hooks/useStaticPicker/useStaticPicker.js +1 -4
- package/internals/hooks/useStaticPicker/useStaticPicker.types.d.ts +2 -2
- package/internals/hooks/useUtils.d.ts +4 -3
- package/internals/hooks/useUtils.js +1 -1
- package/internals/index.d.ts +11 -6
- package/internals/index.js +6 -4
- package/internals/models/fields.d.ts +3 -16
- package/internals/models/index.d.ts +1 -0
- package/internals/models/index.js +2 -1
- package/internals/models/manager.d.ts +15 -0
- package/internals/models/manager.js +1 -0
- package/internals/models/props/basePickerProps.d.ts +2 -14
- package/internals/models/props/toolbar.d.ts +1 -5
- package/internals/utils/date-utils.js +1 -1
- package/internals/utils/valueManagers.js +4 -4
- package/locales/index.d.ts +1 -0
- package/locales/index.js +1 -0
- package/locales/nbNO.js +15 -19
- package/locales/utils/getPickersLocalization.d.ts +0 -7
- package/locales/utils/getPickersLocalization.js +0 -13
- package/locales/zhTW.d.ts +80 -0
- package/locales/zhTW.js +73 -0
- package/managers/index.d.ts +6 -0
- package/managers/index.js +3 -0
- package/managers/package.json +6 -0
- package/managers/useDateManager.d.ts +27 -0
- package/managers/useDateManager.js +55 -0
- package/managers/useDateTimeManager.d.ts +28 -0
- package/managers/useDateTimeManager.js +60 -0
- package/managers/useTimeManager.d.ts +28 -0
- package/managers/useTimeManager.js +51 -0
- package/models/adapters.d.ts +1 -1
- package/models/fields.d.ts +4 -4
- package/models/index.d.ts +1 -0
- package/models/index.js +1 -0
- package/models/manager.d.ts +87 -0
- package/models/manager.js +1 -0
- package/models/pickers.d.ts +7 -0
- package/modern/AdapterDateFns/AdapterDateFns.js +49 -47
- package/modern/AdapterDateFnsJalali/AdapterDateFnsJalali.js +48 -46
- package/modern/{AdapterDateFnsJalaliV3/AdapterDateFnsJalaliV3.js → AdapterDateFnsJalaliV2/AdapterDateFnsJalaliV2.js} +45 -52
- package/modern/AdapterDateFnsJalaliV2/index.js +1 -0
- package/modern/{AdapterDateFnsV3/AdapterDateFnsV3.js → AdapterDateFnsV2/AdapterDateFnsV2.js} +46 -54
- package/modern/AdapterDateFnsV2/index.js +1 -0
- package/modern/DateCalendar/DateCalendar.js +1 -1
- package/modern/DateField/DateField.js +26 -31
- package/modern/DateField/useDateField.js +14 -11
- package/modern/DatePicker/DatePicker.js +1 -1
- package/modern/DatePicker/DatePickerToolbar.js +7 -11
- package/modern/DateTimeField/DateTimeField.js +26 -31
- package/modern/DateTimeField/useDateTimeField.js +14 -11
- package/modern/DateTimePicker/DateTimePicker.js +2 -2
- package/modern/DateTimePicker/DateTimePickerTabs.js +2 -2
- package/modern/DateTimePicker/DateTimePickerToolbar.js +36 -31
- package/modern/DesktopDatePicker/DesktopDatePicker.js +9 -14
- package/modern/DesktopDateTimePicker/DesktopDateTimePicker.js +14 -22
- package/modern/DesktopDateTimePicker/DesktopDateTimePickerLayout.js +1 -5
- package/modern/DesktopTimePicker/DesktopTimePicker.js +4 -19
- package/modern/MobileDatePicker/MobileDatePicker.js +2 -11
- package/modern/MobileDateTimePicker/MobileDateTimePicker.js +2 -11
- package/modern/MobileTimePicker/MobileTimePicker.js +2 -11
- package/modern/PickersActionBar/PickersActionBar.js +6 -3
- package/modern/PickersLayout/PickersLayout.js +1 -5
- package/modern/PickersLayout/usePickerLayout.js +12 -31
- package/modern/PickersShortcuts/PickersShortcuts.js +13 -10
- package/modern/PickersTextField/PickersInputBase/PickersInputBase.js +7 -0
- package/modern/PickersTextField/PickersTextField.js +1 -1
- package/modern/TimeField/TimeField.js +25 -30
- package/modern/TimeField/useTimeField.js +14 -11
- package/modern/TimePicker/TimePicker.js +2 -2
- package/modern/TimePicker/TimePickerToolbar.js +20 -18
- package/modern/hooks/index.js +2 -1
- package/modern/hooks/useIsValidValue.js +11 -0
- package/modern/hooks/useParsedFormat.js +10 -12
- package/modern/hooks/usePickerActionsContext.js +0 -1
- package/modern/hooks/usePickerContext.js +3 -2
- package/modern/hooks/useSplitFieldProps.js +8 -3
- package/modern/index.js +3 -2
- package/modern/internals/components/PickerFieldUI.js +306 -0
- package/modern/internals/components/PickerProvider.js +14 -4
- package/modern/internals/components/PickersToolbar.js +1 -1
- package/modern/internals/hooks/date-helpers-hooks.js +4 -3
- package/modern/internals/hooks/useDesktopPicker/useDesktopPicker.js +21 -96
- package/modern/internals/hooks/useField/buildSectionsFromFormat.js +1 -1
- package/modern/internals/hooks/useField/index.js +2 -1
- package/modern/internals/hooks/useField/useField.js +12 -4
- package/modern/internals/hooks/useField/useField.utils.js +2 -2
- package/modern/internals/hooks/useField/useFieldInternalPropsWithDefaults.js +46 -0
- package/modern/internals/hooks/useField/useFieldState.js +2 -2
- package/modern/internals/hooks/useField/useFieldV6TextField.js +2 -2
- package/modern/internals/hooks/useField/useFieldV7TextField.js +3 -3
- package/modern/internals/hooks/useMobilePicker/useMobilePicker.js +20 -51
- package/modern/internals/hooks/useNullablePickerContext.js +10 -0
- package/modern/internals/hooks/useOpenState.js +3 -2
- package/modern/internals/hooks/usePicker/usePicker.js +0 -9
- package/modern/internals/hooks/usePicker/usePickerProvider.js +26 -4
- package/modern/internals/hooks/usePicker/usePickerValue.js +62 -185
- package/modern/internals/hooks/usePicker/usePickerViews.js +17 -11
- package/modern/internals/hooks/useStaticPicker/useStaticPicker.js +1 -4
- package/modern/internals/hooks/useUtils.js +1 -1
- package/modern/internals/index.js +6 -4
- package/modern/internals/models/index.js +2 -1
- package/modern/internals/models/manager.js +1 -0
- package/modern/internals/utils/date-utils.js +1 -1
- package/modern/internals/utils/valueManagers.js +4 -4
- package/modern/locales/index.js +1 -0
- package/modern/locales/nbNO.js +15 -19
- package/modern/locales/utils/getPickersLocalization.js +0 -13
- package/modern/locales/zhTW.js +73 -0
- package/modern/managers/index.js +3 -0
- package/modern/managers/useDateManager.js +55 -0
- package/modern/managers/useDateTimeManager.js +60 -0
- package/modern/managers/useTimeManager.js +51 -0
- package/modern/models/index.js +1 -0
- package/modern/models/manager.js +1 -0
- package/node/AdapterDateFns/AdapterDateFns.js +97 -97
- package/node/AdapterDateFnsJalali/AdapterDateFnsJalali.js +97 -96
- package/node/{AdapterDateFnsJalaliV3/AdapterDateFnsJalaliV3.js → AdapterDateFnsJalaliV2/AdapterDateFnsJalaliV2.js} +94 -101
- package/node/{AdapterDateFnsJalaliV3 → AdapterDateFnsJalaliV2}/index.js +1 -1
- package/node/AdapterDateFnsV2/AdapterDateFnsV2.js +291 -0
- package/node/{AdapterDateFnsV3 → AdapterDateFnsV2}/index.js +1 -1
- package/node/DateCalendar/DateCalendar.js +1 -1
- package/node/DateField/DateField.js +26 -31
- package/node/DateField/useDateField.js +13 -10
- package/node/DatePicker/DatePicker.js +1 -1
- package/node/DatePicker/DatePickerToolbar.js +7 -11
- package/node/DateTimeField/DateTimeField.js +26 -31
- package/node/DateTimeField/useDateTimeField.js +13 -10
- package/node/DateTimePicker/DateTimePicker.js +2 -2
- package/node/DateTimePicker/DateTimePickerTabs.js +2 -2
- package/node/DateTimePicker/DateTimePickerToolbar.js +36 -31
- package/node/DesktopDatePicker/DesktopDatePicker.js +9 -14
- package/node/DesktopDateTimePicker/DesktopDateTimePicker.js +14 -22
- package/node/DesktopDateTimePicker/DesktopDateTimePickerLayout.js +1 -5
- package/node/DesktopTimePicker/DesktopTimePicker.js +4 -19
- package/node/MobileDatePicker/MobileDatePicker.js +2 -11
- package/node/MobileDateTimePicker/MobileDateTimePicker.js +2 -11
- package/node/MobileTimePicker/MobileTimePicker.js +2 -11
- package/node/PickersActionBar/PickersActionBar.js +8 -5
- package/node/PickersLayout/PickersLayout.js +1 -5
- package/node/PickersLayout/usePickerLayout.js +16 -35
- package/node/PickersShortcuts/PickersShortcuts.js +13 -10
- package/node/PickersTextField/PickersInputBase/PickersInputBase.js +7 -0
- package/node/PickersTextField/PickersTextField.js +1 -1
- package/node/TimeField/TimeField.js +25 -30
- package/node/TimeField/useTimeField.js +13 -10
- package/node/TimePicker/TimePicker.js +2 -2
- package/node/TimePicker/TimePickerToolbar.js +20 -18
- package/node/hooks/index.js +8 -1
- package/node/hooks/useIsValidValue.js +18 -0
- package/node/hooks/useParsedFormat.js +10 -12
- package/node/hooks/usePickerContext.js +5 -4
- package/node/hooks/useSplitFieldProps.js +7 -2
- package/node/index.js +13 -1
- package/node/internals/components/PickerFieldUI.js +318 -0
- package/node/internals/components/PickerProvider.js +16 -6
- package/node/internals/components/PickersToolbar.js +1 -1
- package/node/internals/hooks/date-helpers-hooks.js +4 -3
- package/node/internals/hooks/useDesktopPicker/useDesktopPicker.js +23 -98
- package/node/internals/hooks/useField/buildSectionsFromFormat.js +1 -1
- package/node/internals/hooks/useField/index.js +8 -1
- package/node/internals/hooks/useField/useField.js +11 -3
- package/node/internals/hooks/useField/useField.utils.js +2 -2
- package/node/internals/hooks/useField/useFieldInternalPropsWithDefaults.js +55 -0
- package/node/internals/hooks/useField/useFieldState.js +2 -2
- package/node/internals/hooks/useField/useFieldV6TextField.js +2 -2
- package/node/internals/hooks/useField/useFieldV7TextField.js +3 -3
- package/node/internals/hooks/useMobilePicker/useMobilePicker.js +20 -51
- package/node/internals/hooks/useNullablePickerContext.js +16 -0
- package/node/internals/hooks/useOpenState.js +4 -2
- package/node/internals/hooks/usePicker/usePicker.js +0 -10
- package/node/internals/hooks/usePicker/usePickerProvider.js +26 -4
- package/node/internals/hooks/usePicker/usePickerValue.js +62 -185
- package/node/internals/hooks/usePicker/usePickerViews.js +17 -12
- package/node/internals/hooks/useStaticPicker/useStaticPicker.js +1 -4
- package/node/internals/hooks/useUtils.js +1 -1
- package/node/internals/index.js +45 -19
- package/node/internals/models/index.js +11 -0
- package/node/internals/models/manager.js +5 -0
- package/node/internals/utils/date-utils.js +1 -1
- package/node/internals/utils/valueManagers.js +4 -4
- package/node/locales/index.js +11 -0
- package/node/locales/nbNO.js +15 -19
- package/node/locales/utils/getPickersLocalization.js +2 -16
- package/node/locales/zhTW.js +79 -0
- package/node/managers/index.js +26 -0
- package/node/managers/useDateManager.js +63 -0
- package/node/managers/useDateTimeManager.js +68 -0
- package/node/managers/useTimeManager.js +59 -0
- package/node/models/index.js +11 -0
- package/node/models/manager.js +5 -0
- package/package.json +3 -3
- package/themeAugmentation/props.d.ts +1 -1
- package/validation/extractValidationProps.d.ts +1 -1
- package/AdapterDateFnsJalaliV3/index.d.ts +0 -1
- package/AdapterDateFnsJalaliV3/index.js +0 -1
- package/AdapterDateFnsV3/index.d.ts +0 -1
- package/AdapterDateFnsV3/index.js +0 -1
- package/internals/hooks/defaultizedFieldProps.d.ts +0 -18
- package/internals/hooks/defaultizedFieldProps.js +0 -40
- package/internals/utils/convertFieldResponseIntoMuiTextFieldProps.d.ts +0 -3
- package/internals/utils/convertFieldResponseIntoMuiTextFieldProps.js +0 -44
- package/modern/AdapterDateFnsJalaliV3/index.js +0 -1
- package/modern/AdapterDateFnsV3/index.js +0 -1
- package/modern/internals/hooks/defaultizedFieldProps.js +0 -40
- package/modern/internals/utils/convertFieldResponseIntoMuiTextFieldProps.js +0 -44
- package/node/AdapterDateFnsV3/AdapterDateFnsV3.js +0 -299
- package/node/internals/hooks/defaultizedFieldProps.js +0 -50
- package/node/internals/utils/convertFieldResponseIntoMuiTextFieldProps.js +0 -52
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
4
4
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
5
|
-
const _excluded = ["ampm", "ampmInClock", "
|
|
5
|
+
const _excluded = ["ampm", "ampmInClock", "className", "classes"];
|
|
6
6
|
import * as React from 'react';
|
|
7
7
|
import clsx from 'clsx';
|
|
8
8
|
import PropTypes from 'prop-types';
|
|
@@ -122,9 +122,6 @@ function TimePickerToolbar(inProps) {
|
|
|
122
122
|
const {
|
|
123
123
|
ampm,
|
|
124
124
|
ampmInClock,
|
|
125
|
-
value,
|
|
126
|
-
isLandscape,
|
|
127
|
-
onChange,
|
|
128
125
|
className,
|
|
129
126
|
classes: classesProp
|
|
130
127
|
} = props,
|
|
@@ -134,18 +131,27 @@ function TimePickerToolbar(inProps) {
|
|
|
134
131
|
const ownerState = useToolbarOwnerState();
|
|
135
132
|
const classes = useUtilityClasses(classesProp, ownerState);
|
|
136
133
|
const {
|
|
134
|
+
value,
|
|
135
|
+
setValue,
|
|
137
136
|
disabled,
|
|
138
137
|
readOnly,
|
|
139
138
|
view,
|
|
140
|
-
|
|
139
|
+
setView,
|
|
141
140
|
views
|
|
142
141
|
} = usePickerContext();
|
|
143
142
|
const showAmPmControl = Boolean(ampm && !ampmInClock && views.includes('hours'));
|
|
144
143
|
const {
|
|
145
144
|
meridiemMode,
|
|
146
145
|
handleMeridiemChange
|
|
147
|
-
} = useMeridiemMode(value, ampm,
|
|
148
|
-
|
|
146
|
+
} = useMeridiemMode(value, ampm, newValue => setValue(newValue, {
|
|
147
|
+
changeImportance: 'set'
|
|
148
|
+
}));
|
|
149
|
+
const formatSection = format => {
|
|
150
|
+
if (!utils.isValid(value)) {
|
|
151
|
+
return '--';
|
|
152
|
+
}
|
|
153
|
+
return utils.format(value, format);
|
|
154
|
+
};
|
|
149
155
|
const separator = /*#__PURE__*/_jsx(TimePickerToolbarSeparator, {
|
|
150
156
|
tabIndex: -1,
|
|
151
157
|
value: ":",
|
|
@@ -156,7 +162,6 @@ function TimePickerToolbar(inProps) {
|
|
|
156
162
|
return /*#__PURE__*/_jsxs(TimePickerToolbarRoot, _extends({
|
|
157
163
|
landscapeDirection: "row",
|
|
158
164
|
toolbarTitle: translations.timePickerToolbarTitle,
|
|
159
|
-
isLandscape: isLandscape,
|
|
160
165
|
ownerState: ownerState,
|
|
161
166
|
className: clsx(classes.root, className)
|
|
162
167
|
}, other, {
|
|
@@ -166,20 +171,20 @@ function TimePickerToolbar(inProps) {
|
|
|
166
171
|
children: [arrayIncludes(views, 'hours') && /*#__PURE__*/_jsx(PickersToolbarButton, {
|
|
167
172
|
tabIndex: -1,
|
|
168
173
|
variant: "h3",
|
|
169
|
-
onClick: () =>
|
|
174
|
+
onClick: () => setView('hours'),
|
|
170
175
|
selected: view === 'hours',
|
|
171
|
-
value:
|
|
176
|
+
value: formatSection(ampm ? 'hours12h' : 'hours24h')
|
|
172
177
|
}), arrayIncludes(views, ['hours', 'minutes']) && separator, arrayIncludes(views, 'minutes') && /*#__PURE__*/_jsx(PickersToolbarButton, {
|
|
173
178
|
tabIndex: -1,
|
|
174
179
|
variant: "h3",
|
|
175
|
-
onClick: () =>
|
|
180
|
+
onClick: () => setView('minutes'),
|
|
176
181
|
selected: view === 'minutes',
|
|
177
|
-
value:
|
|
182
|
+
value: formatSection('minutes')
|
|
178
183
|
}), arrayIncludes(views, ['minutes', 'seconds']) && separator, arrayIncludes(views, 'seconds') && /*#__PURE__*/_jsx(PickersToolbarButton, {
|
|
179
184
|
variant: "h3",
|
|
180
|
-
onClick: () =>
|
|
185
|
+
onClick: () => setView('seconds'),
|
|
181
186
|
selected: view === 'seconds',
|
|
182
|
-
value:
|
|
187
|
+
value: formatSection('seconds')
|
|
183
188
|
})]
|
|
184
189
|
}), showAmPmControl && /*#__PURE__*/_jsxs(TimePickerToolbarAmPmSelection, {
|
|
185
190
|
className: classes.ampmSelection,
|
|
@@ -221,8 +226,6 @@ process.env.NODE_ENV !== "production" ? TimePickerToolbar.propTypes = {
|
|
|
221
226
|
* @default `true` for Desktop, `false` for Mobile.
|
|
222
227
|
*/
|
|
223
228
|
hidden: PropTypes.bool,
|
|
224
|
-
isLandscape: PropTypes.bool.isRequired,
|
|
225
|
-
onChange: PropTypes.func.isRequired,
|
|
226
229
|
/**
|
|
227
230
|
* The system prop that allows defining system overrides as well as additional CSS styles.
|
|
228
231
|
*/
|
|
@@ -236,7 +239,6 @@ process.env.NODE_ENV !== "production" ? TimePickerToolbar.propTypes = {
|
|
|
236
239
|
* Toolbar value placeholder—it is displayed when the value is empty.
|
|
237
240
|
* @default "––"
|
|
238
241
|
*/
|
|
239
|
-
toolbarPlaceholder: PropTypes.node
|
|
240
|
-
value: PropTypes.object
|
|
242
|
+
toolbarPlaceholder: PropTypes.node
|
|
241
243
|
} : void 0;
|
|
242
244
|
export { TimePickerToolbar };
|
package/modern/hooks/index.js
CHANGED
|
@@ -3,4 +3,5 @@ export { usePickerTranslations } from "./usePickerTranslations.js";
|
|
|
3
3
|
export { useSplitFieldProps } from "./useSplitFieldProps.js";
|
|
4
4
|
export { useParsedFormat } from "./useParsedFormat.js";
|
|
5
5
|
export { usePickerContext } from "./usePickerContext.js";
|
|
6
|
-
export { usePickerActionsContext } from "./usePickerActionsContext.js";
|
|
6
|
+
export { usePickerActionsContext } from "./usePickerActionsContext.js";
|
|
7
|
+
export { useIsValidValue } from "./useIsValidValue.js";
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
export const IsValidValueContext = /*#__PURE__*/React.createContext(() => true);
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Returns a function to check if a value is valid according to the validation props passed to the parent picker.
|
|
8
|
+
*/
|
|
9
|
+
export function useIsValidValue() {
|
|
10
|
+
return React.useContext(IsValidValueContext);
|
|
11
|
+
}
|
|
@@ -6,32 +6,30 @@ import { useUtils } from "../internals/hooks/useUtils.js";
|
|
|
6
6
|
import { buildSectionsFromFormat } from "../internals/hooks/useField/buildSectionsFromFormat.js";
|
|
7
7
|
import { getLocalizedDigits } from "../internals/hooks/useField/useField.utils.js";
|
|
8
8
|
import { usePickerTranslations } from "./usePickerTranslations.js";
|
|
9
|
+
import { useNullablePickerContext } from "../internals/hooks/useNullablePickerContext.js";
|
|
9
10
|
/**
|
|
10
11
|
* Returns the parsed format to be rendered in the field when there is no value or in other parts of the Picker.
|
|
11
12
|
* This format is localized (for example `AAAA` for the year with the French locale) and cannot be parsed by your date library.
|
|
12
13
|
* @param {object} The parameters needed to build the placeholder.
|
|
13
|
-
* @param {string} params.format Format
|
|
14
|
-
* @param {'dense' | 'spacious'} params.formatDensity Density of the format (setting `formatDensity` to `"spacious"` will add a space before and after each `/`, `-` and `.` character).
|
|
15
|
-
* @param {boolean} params.shouldRespectLeadingZeros If `true`, the format will respect the leading zeroes, if `false`, the format will always add leading zeroes.
|
|
14
|
+
* @param {string} params.format Format to parse.
|
|
16
15
|
* @returns
|
|
17
16
|
*/
|
|
18
|
-
export const useParsedFormat = parameters => {
|
|
19
|
-
const
|
|
20
|
-
format,
|
|
21
|
-
formatDensity = 'dense',
|
|
22
|
-
shouldRespectLeadingZeros = false
|
|
23
|
-
} = parameters;
|
|
17
|
+
export const useParsedFormat = (parameters = {}) => {
|
|
18
|
+
const pickerContext = useNullablePickerContext();
|
|
24
19
|
const utils = useUtils();
|
|
25
20
|
const isRtl = useRtl();
|
|
26
21
|
const translations = usePickerTranslations();
|
|
27
22
|
const localizedDigits = React.useMemo(() => getLocalizedDigits(utils), [utils]);
|
|
23
|
+
const {
|
|
24
|
+
format = pickerContext?.fieldFormat ?? utils.formats.fullDate
|
|
25
|
+
} = parameters;
|
|
28
26
|
return React.useMemo(() => {
|
|
29
27
|
const sections = buildSectionsFromFormat({
|
|
30
28
|
utils,
|
|
31
29
|
format,
|
|
32
|
-
formatDensity,
|
|
30
|
+
formatDensity: 'dense',
|
|
33
31
|
isRtl,
|
|
34
|
-
shouldRespectLeadingZeros,
|
|
32
|
+
shouldRespectLeadingZeros: true,
|
|
35
33
|
localeText: translations,
|
|
36
34
|
localizedDigits,
|
|
37
35
|
date: null,
|
|
@@ -39,5 +37,5 @@ export const useParsedFormat = parameters => {
|
|
|
39
37
|
enableAccessibleFieldDOMStructure: false
|
|
40
38
|
});
|
|
41
39
|
return sections.map(section => `${section.startSeparator}${section.placeholder}${section.endSeparator}`).join('');
|
|
42
|
-
}, [utils, isRtl, translations, localizedDigits, format
|
|
40
|
+
}, [utils, isRtl, translations, localizedDigits, format]);
|
|
43
41
|
};
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
import { PickerActionsContext } from "../internals/components/PickerProvider.js";
|
|
5
|
-
|
|
6
5
|
/**
|
|
7
6
|
* Returns a subset of the context passed by the picker wrapping the current component.
|
|
8
7
|
* It only contains the actions and never causes a re-render of the component using it.
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
3
|
import * as React from 'react';
|
|
4
|
-
|
|
4
|
+
export const PickerContext = /*#__PURE__*/React.createContext(null);
|
|
5
|
+
|
|
5
6
|
/**
|
|
6
7
|
* Returns the context passed by the picker that wraps the current component.
|
|
7
8
|
*/
|
|
8
9
|
export const usePickerContext = () => {
|
|
9
10
|
const value = React.useContext(PickerContext);
|
|
10
11
|
if (value == null) {
|
|
11
|
-
throw new Error(
|
|
12
|
+
throw new Error('MUI X: The `usePickerContext` hook can only be called inside the context of a picker component');
|
|
12
13
|
}
|
|
13
14
|
return value;
|
|
14
15
|
};
|
|
@@ -3,13 +3,13 @@
|
|
|
3
3
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
4
4
|
import * as React from 'react';
|
|
5
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'];
|
|
6
|
+
const SHARED_FIELD_INTERNAL_PROP_NAMES = ['value', 'defaultValue', 'referenceDate', 'format', 'formatDensity', 'onChange', 'timezone', 'onError', 'shouldRespectLeadingZeros', 'selectedSections', 'onSelectedSectionsChange', 'unstableFieldRef', 'unstableStartFieldRef', 'unstableEndFieldRef', 'enableAccessibleFieldDOMStructure', 'disabled', 'readOnly', 'dateSeparator', 'autoFocus'];
|
|
7
7
|
/**
|
|
8
8
|
* Split the props received by the field component into:
|
|
9
9
|
* - `internalProps` which are used by the various hooks called by the field component.
|
|
10
10
|
* - `forwardedProps` which are passed to the underlying component.
|
|
11
11
|
* Note that some forwarded props might be used by the hooks as well.
|
|
12
|
-
* For instance, hooks like `useDateField` need props like `
|
|
12
|
+
* For instance, hooks like `useDateField` need props like `onKeyDown` to merge the default event handler and the one provided by the application.
|
|
13
13
|
* @template TProps, TValueType
|
|
14
14
|
* @param {TProps} props The props received by the field component.
|
|
15
15
|
* @param {TValueType} valueType The type of the field value ('date', 'time', or 'date-time').
|
|
@@ -40,4 +40,9 @@ export const useSplitFieldProps = (props, valueType) => {
|
|
|
40
40
|
internalProps
|
|
41
41
|
};
|
|
42
42
|
}, [props, valueType]);
|
|
43
|
-
};
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Extract the internal props from the props received by the field component.
|
|
47
|
+
* This makes sure that the internal props not defined in the props are not present in the result.
|
|
48
|
+
*/
|
package/modern/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @mui/x-date-pickers v8.0.0-alpha.
|
|
2
|
+
* @mui/x-date-pickers v8.0.0-alpha.8
|
|
3
3
|
*
|
|
4
4
|
* @license MIT
|
|
5
5
|
* This source code is licensed under the MIT license found in the
|
|
@@ -57,4 +57,5 @@ 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
59
|
export * from "./hooks/index.js";
|
|
60
|
-
export * from "./validation/index.js";
|
|
60
|
+
export * from "./validation/index.js";
|
|
61
|
+
export * from "./managers/index.js";
|
|
@@ -0,0 +1,306 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
+
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
3
|
+
const _excluded = ["enableAccessibleFieldDOMStructure"],
|
|
4
|
+
_excluded2 = ["InputProps", "readOnly", "onClear", "clearable", "clearButtonPosition", "openPickerButtonPosition", "openPickerAriaLabel"],
|
|
5
|
+
_excluded3 = ["onPaste", "onKeyDown", "inputMode", "readOnly", "InputProps", "inputProps", "inputRef", "onClear", "clearable", "clearButtonPosition", "openPickerButtonPosition", "openPickerAriaLabel"],
|
|
6
|
+
_excluded4 = ["ownerState"],
|
|
7
|
+
_excluded5 = ["ownerState"],
|
|
8
|
+
_excluded6 = ["ownerState"],
|
|
9
|
+
_excluded7 = ["ownerState"],
|
|
10
|
+
_excluded8 = ["InputProps", "inputProps"];
|
|
11
|
+
import * as React from 'react';
|
|
12
|
+
import useEventCallback from '@mui/utils/useEventCallback';
|
|
13
|
+
import resolveComponentProps from '@mui/utils/resolveComponentProps';
|
|
14
|
+
import MuiTextField from '@mui/material/TextField';
|
|
15
|
+
import MuiIconButton from '@mui/material/IconButton';
|
|
16
|
+
import MuiInputAdornment from '@mui/material/InputAdornment';
|
|
17
|
+
import useSlotProps from '@mui/utils/useSlotProps';
|
|
18
|
+
import { useFieldOwnerState } from "../hooks/useFieldOwnerState.js";
|
|
19
|
+
import { usePickerTranslations } from "../../hooks/index.js";
|
|
20
|
+
import { ClearIcon as MuiClearIcon } from "../../icons/index.js";
|
|
21
|
+
import { useNullablePickerContext } from "../hooks/useNullablePickerContext.js";
|
|
22
|
+
import { PickersTextField } from "../../PickersTextField/index.js";
|
|
23
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
24
|
+
export const cleanFieldResponse = _ref => {
|
|
25
|
+
let {
|
|
26
|
+
enableAccessibleFieldDOMStructure
|
|
27
|
+
} = _ref,
|
|
28
|
+
fieldResponse = _objectWithoutPropertiesLoose(_ref, _excluded);
|
|
29
|
+
if (enableAccessibleFieldDOMStructure) {
|
|
30
|
+
const {
|
|
31
|
+
InputProps,
|
|
32
|
+
readOnly,
|
|
33
|
+
onClear,
|
|
34
|
+
clearable,
|
|
35
|
+
clearButtonPosition,
|
|
36
|
+
openPickerButtonPosition,
|
|
37
|
+
openPickerAriaLabel
|
|
38
|
+
} = fieldResponse,
|
|
39
|
+
other = _objectWithoutPropertiesLoose(fieldResponse, _excluded2);
|
|
40
|
+
return {
|
|
41
|
+
clearable,
|
|
42
|
+
onClear,
|
|
43
|
+
clearButtonPosition,
|
|
44
|
+
openPickerButtonPosition,
|
|
45
|
+
openPickerAriaLabel,
|
|
46
|
+
textFieldProps: _extends({}, other, {
|
|
47
|
+
InputProps: _extends({}, InputProps ?? {}, {
|
|
48
|
+
readOnly
|
|
49
|
+
})
|
|
50
|
+
})
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
const {
|
|
54
|
+
onPaste,
|
|
55
|
+
onKeyDown,
|
|
56
|
+
inputMode,
|
|
57
|
+
readOnly,
|
|
58
|
+
InputProps,
|
|
59
|
+
inputProps,
|
|
60
|
+
inputRef,
|
|
61
|
+
onClear,
|
|
62
|
+
clearable,
|
|
63
|
+
clearButtonPosition,
|
|
64
|
+
openPickerButtonPosition,
|
|
65
|
+
openPickerAriaLabel
|
|
66
|
+
} = fieldResponse,
|
|
67
|
+
other = _objectWithoutPropertiesLoose(fieldResponse, _excluded3);
|
|
68
|
+
return {
|
|
69
|
+
clearable,
|
|
70
|
+
onClear,
|
|
71
|
+
clearButtonPosition,
|
|
72
|
+
openPickerButtonPosition,
|
|
73
|
+
openPickerAriaLabel,
|
|
74
|
+
textFieldProps: _extends({}, other, {
|
|
75
|
+
InputProps: _extends({}, InputProps ?? {}, {
|
|
76
|
+
readOnly
|
|
77
|
+
}),
|
|
78
|
+
inputProps: _extends({}, inputProps ?? {}, {
|
|
79
|
+
inputMode,
|
|
80
|
+
onPaste,
|
|
81
|
+
onKeyDown,
|
|
82
|
+
ref: inputRef
|
|
83
|
+
})
|
|
84
|
+
})
|
|
85
|
+
};
|
|
86
|
+
};
|
|
87
|
+
const PickerFieldUIContext = /*#__PURE__*/React.createContext({
|
|
88
|
+
slots: {},
|
|
89
|
+
slotProps: {}
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Adds the button to open the picker and the button to clear the value of the field.
|
|
94
|
+
* @ignore - internal component.
|
|
95
|
+
*/
|
|
96
|
+
export function PickerFieldUI(props) {
|
|
97
|
+
const {
|
|
98
|
+
slots,
|
|
99
|
+
slotProps,
|
|
100
|
+
fieldResponse,
|
|
101
|
+
defaultOpenPickerIcon
|
|
102
|
+
} = props;
|
|
103
|
+
const translations = usePickerTranslations();
|
|
104
|
+
const pickerContext = useNullablePickerContext();
|
|
105
|
+
const pickerFieldUIContext = React.useContext(PickerFieldUIContext);
|
|
106
|
+
const {
|
|
107
|
+
textFieldProps,
|
|
108
|
+
onClear,
|
|
109
|
+
clearable,
|
|
110
|
+
openPickerAriaLabel,
|
|
111
|
+
clearButtonPosition: clearButtonPositionProp = 'end',
|
|
112
|
+
openPickerButtonPosition: openPickerButtonPositionProp = 'end'
|
|
113
|
+
} = cleanFieldResponse(fieldResponse);
|
|
114
|
+
const ownerState = useFieldOwnerState(textFieldProps);
|
|
115
|
+
const handleClickOpeningButton = useEventCallback(event => {
|
|
116
|
+
event.preventDefault();
|
|
117
|
+
pickerContext?.setOpen(prev => !prev);
|
|
118
|
+
});
|
|
119
|
+
const triggerStatus = pickerContext ? pickerContext.triggerStatus : 'hidden';
|
|
120
|
+
const clearButtonPosition = clearable ? clearButtonPositionProp : null;
|
|
121
|
+
const openPickerButtonPosition = triggerStatus !== 'hidden' ? openPickerButtonPositionProp : null;
|
|
122
|
+
const TextField = slots?.textField ?? pickerFieldUIContext.slots.textField ?? (fieldResponse.enableAccessibleFieldDOMStructure === false ? MuiTextField : PickersTextField);
|
|
123
|
+
const InputAdornment = slots?.inputAdornment ?? pickerFieldUIContext.slots.inputAdornment ?? MuiInputAdornment;
|
|
124
|
+
const _useSlotProps = useSlotProps({
|
|
125
|
+
elementType: InputAdornment,
|
|
126
|
+
externalSlotProps: mergeSlotProps(pickerFieldUIContext.slotProps.inputAdornment, slotProps?.inputAdornment),
|
|
127
|
+
additionalProps: {
|
|
128
|
+
position: 'start'
|
|
129
|
+
},
|
|
130
|
+
ownerState: _extends({}, ownerState, {
|
|
131
|
+
position: 'start'
|
|
132
|
+
})
|
|
133
|
+
}),
|
|
134
|
+
startInputAdornmentProps = _objectWithoutPropertiesLoose(_useSlotProps, _excluded4);
|
|
135
|
+
const _useSlotProps2 = useSlotProps({
|
|
136
|
+
elementType: InputAdornment,
|
|
137
|
+
externalSlotProps: slotProps?.inputAdornment,
|
|
138
|
+
additionalProps: {
|
|
139
|
+
position: 'end'
|
|
140
|
+
},
|
|
141
|
+
ownerState: _extends({}, ownerState, {
|
|
142
|
+
position: 'end'
|
|
143
|
+
})
|
|
144
|
+
}),
|
|
145
|
+
endInputAdornmentProps = _objectWithoutPropertiesLoose(_useSlotProps2, _excluded5);
|
|
146
|
+
const OpenPickerButton = pickerFieldUIContext.slots.openPickerButton ?? MuiIconButton;
|
|
147
|
+
// We don't want to forward the `ownerState` to the `<IconButton />` component, see mui/material-ui#34056
|
|
148
|
+
const _useSlotProps3 = useSlotProps({
|
|
149
|
+
elementType: OpenPickerButton,
|
|
150
|
+
externalSlotProps: pickerFieldUIContext.slotProps.openPickerButton,
|
|
151
|
+
additionalProps: {
|
|
152
|
+
disabled: triggerStatus === 'disabled',
|
|
153
|
+
onClick: handleClickOpeningButton,
|
|
154
|
+
'aria-label': openPickerAriaLabel,
|
|
155
|
+
edge: clearButtonPosition === 'start' && openPickerButtonPosition === 'start' ? undefined : openPickerButtonPosition
|
|
156
|
+
},
|
|
157
|
+
ownerState
|
|
158
|
+
}),
|
|
159
|
+
openPickerButtonProps = _objectWithoutPropertiesLoose(_useSlotProps3, _excluded6);
|
|
160
|
+
const OpenPickerIcon = pickerFieldUIContext.slots.openPickerIcon ?? defaultOpenPickerIcon;
|
|
161
|
+
const openPickerIconProps = useSlotProps({
|
|
162
|
+
elementType: OpenPickerIcon,
|
|
163
|
+
externalSlotProps: pickerFieldUIContext.slotProps.openPickerIcon,
|
|
164
|
+
ownerState
|
|
165
|
+
});
|
|
166
|
+
const ClearButton = slots?.clearButton ?? pickerFieldUIContext.slots.clearButton ?? MuiIconButton;
|
|
167
|
+
// We don't want to forward the `ownerState` to the `<IconButton />` component, see mui/material-ui#34056
|
|
168
|
+
const _useSlotProps4 = useSlotProps({
|
|
169
|
+
elementType: ClearButton,
|
|
170
|
+
externalSlotProps: mergeSlotProps(pickerFieldUIContext.slotProps.clearButton, slotProps?.clearButton),
|
|
171
|
+
className: 'clearButton',
|
|
172
|
+
additionalProps: {
|
|
173
|
+
title: translations.fieldClearLabel,
|
|
174
|
+
tabIndex: -1,
|
|
175
|
+
onClick: onClear,
|
|
176
|
+
disabled: fieldResponse.disabled || fieldResponse.readOnly,
|
|
177
|
+
edge: clearButtonPosition === 'end' && openPickerButtonPosition === 'end' ? undefined : clearButtonPosition
|
|
178
|
+
},
|
|
179
|
+
ownerState
|
|
180
|
+
}),
|
|
181
|
+
clearButtonProps = _objectWithoutPropertiesLoose(_useSlotProps4, _excluded7);
|
|
182
|
+
const ClearIcon = slots?.clearIcon ?? pickerFieldUIContext.slots.clearIcon ?? MuiClearIcon;
|
|
183
|
+
const clearIconProps = useSlotProps({
|
|
184
|
+
elementType: ClearIcon,
|
|
185
|
+
externalSlotProps: mergeSlotProps(pickerFieldUIContext.slotProps.clearIcon, slotProps?.clearIcon),
|
|
186
|
+
additionalProps: {
|
|
187
|
+
fontSize: 'small'
|
|
188
|
+
},
|
|
189
|
+
ownerState
|
|
190
|
+
});
|
|
191
|
+
if (!textFieldProps.InputProps) {
|
|
192
|
+
textFieldProps.InputProps = {};
|
|
193
|
+
}
|
|
194
|
+
if (pickerContext) {
|
|
195
|
+
textFieldProps.InputProps.ref = pickerContext.triggerRef;
|
|
196
|
+
}
|
|
197
|
+
if (!textFieldProps.InputProps?.startAdornment && (clearButtonPosition === 'start' || openPickerButtonPosition === 'start')) {
|
|
198
|
+
textFieldProps.InputProps.startAdornment = /*#__PURE__*/_jsxs(InputAdornment, _extends({}, startInputAdornmentProps, {
|
|
199
|
+
children: [openPickerButtonPosition === 'start' && /*#__PURE__*/_jsx(OpenPickerButton, _extends({}, openPickerButtonProps, {
|
|
200
|
+
children: /*#__PURE__*/_jsx(OpenPickerIcon, _extends({}, openPickerIconProps))
|
|
201
|
+
})), clearButtonPosition === 'start' && /*#__PURE__*/_jsx(ClearButton, _extends({}, clearButtonProps, {
|
|
202
|
+
children: /*#__PURE__*/_jsx(ClearIcon, _extends({}, clearIconProps))
|
|
203
|
+
}))]
|
|
204
|
+
}));
|
|
205
|
+
}
|
|
206
|
+
if (!textFieldProps.InputProps?.endAdornment && (clearButtonPosition === 'end' || openPickerButtonPosition === 'end')) {
|
|
207
|
+
textFieldProps.InputProps.endAdornment = /*#__PURE__*/_jsxs(InputAdornment, _extends({}, endInputAdornmentProps, {
|
|
208
|
+
children: [clearButtonPosition === 'end' && /*#__PURE__*/_jsx(ClearButton, _extends({}, clearButtonProps, {
|
|
209
|
+
children: /*#__PURE__*/_jsx(ClearIcon, _extends({}, clearIconProps))
|
|
210
|
+
})), openPickerButtonPosition === 'end' && /*#__PURE__*/_jsx(OpenPickerButton, _extends({}, openPickerButtonProps, {
|
|
211
|
+
children: /*#__PURE__*/_jsx(OpenPickerIcon, _extends({}, openPickerIconProps))
|
|
212
|
+
}))]
|
|
213
|
+
}));
|
|
214
|
+
}
|
|
215
|
+
if (clearButtonPosition != null) {
|
|
216
|
+
textFieldProps.sx = [{
|
|
217
|
+
'& .clearButton': {
|
|
218
|
+
opacity: 1
|
|
219
|
+
},
|
|
220
|
+
'@media (pointer: fine)': {
|
|
221
|
+
'& .clearButton': {
|
|
222
|
+
opacity: 0
|
|
223
|
+
},
|
|
224
|
+
'&:hover, &:focus-within': {
|
|
225
|
+
'.clearButton': {
|
|
226
|
+
opacity: 1
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
}, ...(Array.isArray(textFieldProps.sx) ? textFieldProps.sx : [textFieldProps.sx])];
|
|
231
|
+
}
|
|
232
|
+
return /*#__PURE__*/_jsx(TextField, _extends({}, textFieldProps));
|
|
233
|
+
}
|
|
234
|
+
function mergeSlotProps(slotPropsA, slotPropsB) {
|
|
235
|
+
if (!slotPropsA) {
|
|
236
|
+
return slotPropsB;
|
|
237
|
+
}
|
|
238
|
+
if (!slotPropsB) {
|
|
239
|
+
return slotPropsA;
|
|
240
|
+
}
|
|
241
|
+
return ownerState => {
|
|
242
|
+
return _extends({}, resolveComponentProps(slotPropsB, ownerState), resolveComponentProps(slotPropsA, ownerState));
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
/**
|
|
247
|
+
* The `textField` slot props cannot be handled inside `PickerFieldUI` because it would be a breaking change to not pass the enriched props to `useField`.
|
|
248
|
+
* Once the non-accessible DOM structure will be removed, we will be able to remove the `textField` slot and clean this logic.
|
|
249
|
+
*/
|
|
250
|
+
export function useFieldTextFieldProps(parameters) {
|
|
251
|
+
const {
|
|
252
|
+
ref,
|
|
253
|
+
externalForwardedProps,
|
|
254
|
+
slotProps
|
|
255
|
+
} = parameters;
|
|
256
|
+
const pickerFieldUIContext = React.useContext(PickerFieldUIContext);
|
|
257
|
+
const ownerState = useFieldOwnerState(externalForwardedProps);
|
|
258
|
+
const {
|
|
259
|
+
InputProps,
|
|
260
|
+
inputProps
|
|
261
|
+
} = externalForwardedProps,
|
|
262
|
+
otherExternalForwardedProps = _objectWithoutPropertiesLoose(externalForwardedProps, _excluded8);
|
|
263
|
+
const textFieldProps = useSlotProps({
|
|
264
|
+
elementType: PickersTextField,
|
|
265
|
+
externalSlotProps: mergeSlotProps(pickerFieldUIContext.slotProps.textField, slotProps?.textField),
|
|
266
|
+
externalForwardedProps: otherExternalForwardedProps,
|
|
267
|
+
additionalProps: {
|
|
268
|
+
ref
|
|
269
|
+
},
|
|
270
|
+
ownerState
|
|
271
|
+
});
|
|
272
|
+
|
|
273
|
+
// TODO: Remove when mui/material-ui#35088 will be merged
|
|
274
|
+
textFieldProps.inputProps = _extends({}, inputProps, textFieldProps.inputProps);
|
|
275
|
+
textFieldProps.InputProps = _extends({}, InputProps, textFieldProps.InputProps);
|
|
276
|
+
return textFieldProps;
|
|
277
|
+
}
|
|
278
|
+
export function PickerFieldUIContextProvider(props) {
|
|
279
|
+
const {
|
|
280
|
+
slots = {},
|
|
281
|
+
slotProps = {},
|
|
282
|
+
children
|
|
283
|
+
} = props;
|
|
284
|
+
const contextValue = React.useMemo(() => ({
|
|
285
|
+
slots: {
|
|
286
|
+
openPickerButton: slots.openPickerButton,
|
|
287
|
+
openPickerIcon: slots.openPickerIcon,
|
|
288
|
+
textField: slots.textField,
|
|
289
|
+
inputAdornment: slots.inputAdornment,
|
|
290
|
+
clearIcon: slots.clearIcon,
|
|
291
|
+
clearButton: slots.clearButton
|
|
292
|
+
},
|
|
293
|
+
slotProps: {
|
|
294
|
+
openPickerButton: slotProps.openPickerButton,
|
|
295
|
+
openPickerIcon: slotProps.openPickerIcon,
|
|
296
|
+
textField: slotProps.textField,
|
|
297
|
+
inputAdornment: slotProps.inputAdornment,
|
|
298
|
+
clearIcon: slotProps.clearIcon,
|
|
299
|
+
clearButton: slotProps.clearButton
|
|
300
|
+
}
|
|
301
|
+
}), [slots.openPickerButton, slots.openPickerIcon, slots.textField, slots.inputAdornment, slots.clearIcon, slots.clearButton, slotProps.openPickerButton, slotProps.openPickerIcon, slotProps.textField, slotProps.inputAdornment, slotProps.clearIcon, slotProps.clearButton]);
|
|
302
|
+
return /*#__PURE__*/_jsx(PickerFieldUIContext.Provider, {
|
|
303
|
+
value: contextValue,
|
|
304
|
+
children: children
|
|
305
|
+
});
|
|
306
|
+
}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { LocalizationProvider } from "../../LocalizationProvider/index.js";
|
|
3
|
+
import { IsValidValueContext } from "../../hooks/useIsValidValue.js";
|
|
4
|
+
import { PickerFieldPrivateContext } from "../hooks/useField/useFieldInternalPropsWithDefaults.js";
|
|
5
|
+
import { PickerContext } from "../../hooks/usePickerContext.js";
|
|
3
6
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
4
|
-
export const PickerContext = /*#__PURE__*/React.createContext(null);
|
|
5
7
|
export const PickerActionsContext = /*#__PURE__*/React.createContext(null);
|
|
6
8
|
export const PickerPrivateContext = /*#__PURE__*/React.createContext({
|
|
7
9
|
ownerState: {
|
|
@@ -27,6 +29,8 @@ export function PickerProvider(props) {
|
|
|
27
29
|
contextValue,
|
|
28
30
|
actionsContextValue,
|
|
29
31
|
privateContextValue,
|
|
32
|
+
fieldPrivateContextValue,
|
|
33
|
+
isValidContextValue,
|
|
30
34
|
localeText,
|
|
31
35
|
children
|
|
32
36
|
} = props;
|
|
@@ -36,9 +40,15 @@ export function PickerProvider(props) {
|
|
|
36
40
|
value: actionsContextValue,
|
|
37
41
|
children: /*#__PURE__*/_jsx(PickerPrivateContext.Provider, {
|
|
38
42
|
value: privateContextValue,
|
|
39
|
-
children: /*#__PURE__*/_jsx(
|
|
40
|
-
|
|
41
|
-
children:
|
|
43
|
+
children: /*#__PURE__*/_jsx(PickerFieldPrivateContext.Provider, {
|
|
44
|
+
value: fieldPrivateContextValue,
|
|
45
|
+
children: /*#__PURE__*/_jsx(IsValidValueContext.Provider, {
|
|
46
|
+
value: isValidContextValue,
|
|
47
|
+
children: /*#__PURE__*/_jsx(LocalizationProvider, {
|
|
48
|
+
localeText: localeText,
|
|
49
|
+
children: children
|
|
50
|
+
})
|
|
51
|
+
})
|
|
42
52
|
})
|
|
43
53
|
})
|
|
44
54
|
})
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
3
|
-
const _excluded = ["children", "className", "classes", "toolbarTitle", "hidden", "titleId", "
|
|
3
|
+
const _excluded = ["children", "className", "classes", "toolbarTitle", "hidden", "titleId", "classes", "landscapeDirection"];
|
|
4
4
|
import * as React from 'react';
|
|
5
5
|
import clsx from 'clsx';
|
|
6
6
|
import Typography from '@mui/material/Typography';
|
|
@@ -27,11 +27,12 @@ export function usePreviousMonthDisabled(month, {
|
|
|
27
27
|
}
|
|
28
28
|
export function useMeridiemMode(date, ampm, onChange, selectionState) {
|
|
29
29
|
const utils = useUtils();
|
|
30
|
-
const
|
|
30
|
+
const cleanDate = React.useMemo(() => !utils.isValid(date) ? null : date, [utils, date]);
|
|
31
|
+
const meridiemMode = getMeridiem(cleanDate, utils);
|
|
31
32
|
const handleMeridiemChange = React.useCallback(mode => {
|
|
32
|
-
const timeWithMeridiem =
|
|
33
|
+
const timeWithMeridiem = cleanDate == null ? null : convertToMeridiem(cleanDate, mode, Boolean(ampm), utils);
|
|
33
34
|
onChange(timeWithMeridiem, selectionState ?? 'partial');
|
|
34
|
-
}, [ampm,
|
|
35
|
+
}, [ampm, cleanDate, onChange, selectionState, utils]);
|
|
35
36
|
return {
|
|
36
37
|
meridiemMode,
|
|
37
38
|
handleMeridiemChange
|