@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
|
@@ -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,11 +1,11 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { PickerOwnerState } from '../../models';
|
|
3
3
|
import { PickersInputLocaleText } from '../../locales';
|
|
4
|
-
import { DateOrTimeViewWithMeridiem, PickerOrientation, PickerVariant } from '../models';
|
|
4
|
+
import { DateOrTimeViewWithMeridiem, PickerOrientation, PickerValidValue, PickerVariant } from '../models';
|
|
5
5
|
import type { UsePickerValueActionsContextValue, UsePickerValueContextValue, UsePickerValuePrivateContextValue } from '../hooks/usePicker/usePickerValue.types';
|
|
6
|
-
import { UsePickerViewsContextValue } from '../hooks/usePicker/usePickerViews';
|
|
7
|
-
|
|
8
|
-
export declare const PickerActionsContext: React.Context<PickerActionsContextValue | null>;
|
|
6
|
+
import { UsePickerViewsActionsContextValue, UsePickerViewsContextValue } from '../hooks/usePicker/usePickerViews';
|
|
7
|
+
import { PickerFieldPrivateContextValue } from '../hooks/useField/useFieldInternalPropsWithDefaults';
|
|
8
|
+
export declare const PickerActionsContext: React.Context<PickerActionsContextValue<any, any, any> | null>;
|
|
9
9
|
export declare const PickerPrivateContext: React.Context<PickerPrivateContextValue>;
|
|
10
10
|
/**
|
|
11
11
|
* Provides the context for the various parts of a picker component:
|
|
@@ -14,15 +14,17 @@ export declare const PickerPrivateContext: React.Context<PickerPrivateContextVal
|
|
|
14
14
|
*
|
|
15
15
|
* @ignore - do not document.
|
|
16
16
|
*/
|
|
17
|
-
export declare function PickerProvider(props: PickerProviderProps): React.JSX.Element;
|
|
18
|
-
export interface PickerProviderProps {
|
|
19
|
-
contextValue: PickerContextValue<any>;
|
|
20
|
-
actionsContextValue: PickerActionsContextValue
|
|
17
|
+
export declare function PickerProvider<TValue extends PickerValidValue>(props: PickerProviderProps<TValue>): React.JSX.Element;
|
|
18
|
+
export interface PickerProviderProps<TValue extends PickerValidValue> {
|
|
19
|
+
contextValue: PickerContextValue<any, any, any>;
|
|
20
|
+
actionsContextValue: PickerActionsContextValue<any, any, any>;
|
|
21
21
|
privateContextValue: PickerPrivateContextValue;
|
|
22
|
+
fieldPrivateContextValue: PickerFieldPrivateContextValue;
|
|
23
|
+
isValidContextValue: (value: TValue) => boolean;
|
|
22
24
|
localeText: PickersInputLocaleText | undefined;
|
|
23
25
|
children: React.ReactNode;
|
|
24
26
|
}
|
|
25
|
-
export interface PickerContextValue<TView extends DateOrTimeViewWithMeridiem
|
|
27
|
+
export interface PickerContextValue<TValue extends PickerValidValue, TView extends DateOrTimeViewWithMeridiem, TError> extends UsePickerValueContextValue<TValue, TError>, UsePickerViewsContextValue<TView> {
|
|
26
28
|
/**
|
|
27
29
|
* `true` if the picker is disabled, `false` otherwise.
|
|
28
30
|
*/
|
|
@@ -37,7 +39,7 @@ export interface PickerContextValue<TView extends DateOrTimeViewWithMeridiem = D
|
|
|
37
39
|
* Is equal to "mobile" when using a mobile picker (like <MobileDatePicker />).
|
|
38
40
|
* Is equal to "mobile" or "desktop" when using a responsive picker (like <DatePicker />) depending on the `desktopModeMediaQuery` prop.
|
|
39
41
|
* Is equal to "mobile" or "desktop" when using a static picker (like <StaticDatePicker />) depending on the `displayStaticWrapperAs` prop.
|
|
40
|
-
* Is always equal to "desktop" if the component you are accessing the
|
|
42
|
+
* Is always equal to "desktop" if the component you are accessing the context from is not wrapped by a picker.
|
|
41
43
|
*/
|
|
42
44
|
variant: PickerVariant;
|
|
43
45
|
/**
|
|
@@ -45,11 +47,31 @@ export interface PickerContextValue<TView extends DateOrTimeViewWithMeridiem = D
|
|
|
45
47
|
* Is equal to "landscape" when the picker is in landscape orientation.
|
|
46
48
|
* Is equal to "portrait" when the picker is in portrait orientation.
|
|
47
49
|
* You can use the "orientation" on any picker component to force the orientation.
|
|
48
|
-
* Is always equal to "portrait" if the component you are accessing the
|
|
50
|
+
* Is always equal to "portrait" if the component you are accessing the context from is not wrapped by a picker.
|
|
49
51
|
*/
|
|
50
52
|
orientation: PickerOrientation;
|
|
53
|
+
/**
|
|
54
|
+
* The ref that should be attached to the element that triggers the Picker opening.
|
|
55
|
+
* When using a built-in field component, this property is automatically handled.
|
|
56
|
+
*/
|
|
57
|
+
triggerRef: React.RefObject<any>;
|
|
58
|
+
/**
|
|
59
|
+
* The status of the element that triggers the Picker opening.
|
|
60
|
+
* If it is "hidden", the field should not render the UI to open the Picker.
|
|
61
|
+
* If it is "disabled", the field should render a disabled UI to open the Picker.
|
|
62
|
+
* If it is "enabled", the field should render an interactive UI to open the Picker.
|
|
63
|
+
*/
|
|
64
|
+
triggerStatus: 'hidden' | 'disabled' | 'enabled';
|
|
65
|
+
/**
|
|
66
|
+
* Format that should be used to render the value in the field.
|
|
67
|
+
* Is equal to `props.format` on the picker component if defined.
|
|
68
|
+
* Is generated based on the available views if not defined.
|
|
69
|
+
* Is equal to an empty string if the picker does not have a field (static pickers).
|
|
70
|
+
* Is always equal to an empty string if the component you are accessing the context from is not wrapped by a picker.
|
|
71
|
+
*/
|
|
72
|
+
fieldFormat: string;
|
|
51
73
|
}
|
|
52
|
-
export interface PickerActionsContextValue extends UsePickerValueActionsContextValue {
|
|
74
|
+
export interface PickerActionsContextValue<TValue extends PickerValidValue, TView extends DateOrTimeViewWithMeridiem, TError = string | null> extends UsePickerValueActionsContextValue<TValue, TError>, UsePickerViewsActionsContextValue<TView> {
|
|
53
75
|
}
|
|
54
76
|
export interface PickerPrivateContextValue extends UsePickerValuePrivateContextValue {
|
|
55
77
|
/**
|
|
@@ -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,14 +1,13 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { BaseToolbarProps } from '../models/props/toolbar';
|
|
3
3
|
import { PickersToolbarClasses } from './pickersToolbarClasses';
|
|
4
|
-
|
|
5
|
-
export interface PickersToolbarProps<TValue extends PickerValidValue> extends Pick<BaseToolbarProps<TValue>, 'isLandscape' | 'hidden' | 'titleId'> {
|
|
4
|
+
export interface PickersToolbarProps extends Pick<BaseToolbarProps, 'hidden' | 'titleId'> {
|
|
6
5
|
className?: string;
|
|
7
6
|
landscapeDirection?: 'row' | 'column';
|
|
8
7
|
toolbarTitle: React.ReactNode;
|
|
9
8
|
classes?: Partial<PickersToolbarClasses>;
|
|
10
9
|
}
|
|
11
|
-
type PickersToolbarComponent = (
|
|
10
|
+
type PickersToolbarComponent = ((props: React.PropsWithChildren<PickersToolbarProps> & React.RefAttributes<HTMLDivElement>) => React.JSX.Element) & {
|
|
12
11
|
propTypes?: any;
|
|
13
12
|
};
|
|
14
13
|
export declare const PickersToolbar: PickersToolbarComponent;
|
|
@@ -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
|
|
@@ -7,6 +7,6 @@ import { DateOrTimeViewWithMeridiem } from '../../models';
|
|
|
7
7
|
* - DesktopDateTimePicker
|
|
8
8
|
* - DesktopTimePicker
|
|
9
9
|
*/
|
|
10
|
-
export declare const useDesktopPicker: <TView extends DateOrTimeViewWithMeridiem, TEnableAccessibleFieldDOMStructure extends boolean, TExternalProps extends UseDesktopPickerProps<TView, TEnableAccessibleFieldDOMStructure, any, TExternalProps>>({ props,
|
|
10
|
+
export declare const useDesktopPicker: <TView extends DateOrTimeViewWithMeridiem, TEnableAccessibleFieldDOMStructure extends boolean, TExternalProps extends UseDesktopPickerProps<TView, TEnableAccessibleFieldDOMStructure, any, TExternalProps>>({ props, ...pickerParams }: UseDesktopPickerParams<TView, TEnableAccessibleFieldDOMStructure, TExternalProps>) => {
|
|
11
11
|
renderPicker: () => React.JSX.Element;
|
|
12
12
|
};
|
|
@@ -1,18 +1,15 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
3
|
-
const _excluded = ["props"
|
|
4
|
-
_excluded2 = ["ownerState"],
|
|
5
|
-
_excluded3 = ["ownerState"];
|
|
3
|
+
const _excluded = ["props"];
|
|
6
4
|
import * as React from 'react';
|
|
7
5
|
import useSlotProps from '@mui/utils/useSlotProps';
|
|
8
|
-
import MuiInputAdornment from '@mui/material/InputAdornment';
|
|
9
|
-
import IconButton from '@mui/material/IconButton';
|
|
10
6
|
import useForkRef from '@mui/utils/useForkRef';
|
|
11
7
|
import useId from '@mui/utils/useId';
|
|
12
8
|
import { PickersPopper } from "../../components/PickersPopper.js";
|
|
13
9
|
import { usePicker } from "../usePicker/index.js";
|
|
14
10
|
import { PickersLayout } from "../../../PickersLayout/index.js";
|
|
15
11
|
import { PickerProvider } from "../../components/PickerProvider.js";
|
|
12
|
+
import { PickerFieldUIContextProvider } from "../../components/PickerFieldUI.js";
|
|
16
13
|
|
|
17
14
|
/**
|
|
18
15
|
* Hook managing all the single-date desktop pickers:
|
|
@@ -23,8 +20,7 @@ import { PickerProvider } from "../../components/PickerProvider.js";
|
|
|
23
20
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
24
21
|
export const useDesktopPicker = _ref => {
|
|
25
22
|
let {
|
|
26
|
-
props
|
|
27
|
-
getOpenDialogAriaText
|
|
23
|
+
props
|
|
28
24
|
} = _ref,
|
|
29
25
|
pickerParams = _objectWithoutPropertiesLoose(_ref, _excluded);
|
|
30
26
|
const {
|
|
@@ -32,74 +28,29 @@ export const useDesktopPicker = _ref => {
|
|
|
32
28
|
slotProps: innerSlotProps,
|
|
33
29
|
className,
|
|
34
30
|
sx,
|
|
35
|
-
format,
|
|
36
|
-
formatDensity,
|
|
37
|
-
enableAccessibleFieldDOMStructure,
|
|
38
|
-
selectedSections,
|
|
39
|
-
onSelectedSectionsChange,
|
|
40
|
-
timezone,
|
|
41
31
|
name,
|
|
42
32
|
label,
|
|
43
33
|
inputRef,
|
|
44
34
|
readOnly,
|
|
45
|
-
disabled,
|
|
46
35
|
autoFocus,
|
|
47
36
|
localeText,
|
|
48
37
|
reduceAnimations
|
|
49
38
|
} = props;
|
|
50
|
-
const containerRef = React.useRef(null);
|
|
51
39
|
const fieldRef = React.useRef(null);
|
|
52
40
|
const labelId = useId();
|
|
53
41
|
const isToolbarHidden = innerSlotProps?.toolbar?.hidden ?? false;
|
|
54
42
|
const {
|
|
55
|
-
hasUIView,
|
|
56
|
-
layoutProps,
|
|
57
43
|
providerProps,
|
|
58
44
|
renderCurrentView,
|
|
59
45
|
shouldRestoreFocus,
|
|
60
|
-
fieldProps: pickerFieldProps,
|
|
61
46
|
ownerState
|
|
62
47
|
} = usePicker(_extends({}, pickerParams, {
|
|
63
48
|
props,
|
|
64
49
|
fieldRef,
|
|
65
50
|
localeText,
|
|
66
51
|
autoFocusView: true,
|
|
67
|
-
additionalViewProps: {},
|
|
68
52
|
variant: 'desktop'
|
|
69
53
|
}));
|
|
70
|
-
const InputAdornment = slots.inputAdornment ?? MuiInputAdornment;
|
|
71
|
-
const _useSlotProps = useSlotProps({
|
|
72
|
-
elementType: InputAdornment,
|
|
73
|
-
externalSlotProps: innerSlotProps?.inputAdornment,
|
|
74
|
-
additionalProps: {
|
|
75
|
-
position: 'end'
|
|
76
|
-
},
|
|
77
|
-
ownerState
|
|
78
|
-
}),
|
|
79
|
-
inputAdornmentProps = _objectWithoutPropertiesLoose(_useSlotProps, _excluded2);
|
|
80
|
-
const OpenPickerButton = slots.openPickerButton ?? IconButton;
|
|
81
|
-
const _useSlotProps2 = useSlotProps({
|
|
82
|
-
elementType: OpenPickerButton,
|
|
83
|
-
externalSlotProps: innerSlotProps?.openPickerButton,
|
|
84
|
-
additionalProps: {
|
|
85
|
-
disabled: disabled || readOnly,
|
|
86
|
-
// This direct access to `providerProps` will go away in https://github.com/mui/mui-x/pull/15671
|
|
87
|
-
onClick: event => {
|
|
88
|
-
event.preventDefault();
|
|
89
|
-
providerProps.contextValue.setOpen(prevOpen => !prevOpen);
|
|
90
|
-
},
|
|
91
|
-
'aria-label': getOpenDialogAriaText(pickerFieldProps.value),
|
|
92
|
-
edge: inputAdornmentProps.position
|
|
93
|
-
},
|
|
94
|
-
ownerState
|
|
95
|
-
}),
|
|
96
|
-
openPickerButtonProps = _objectWithoutPropertiesLoose(_useSlotProps2, _excluded3);
|
|
97
|
-
const OpenPickerIcon = slots.openPickerIcon;
|
|
98
|
-
const openPickerIconProps = useSlotProps({
|
|
99
|
-
elementType: OpenPickerIcon,
|
|
100
|
-
externalSlotProps: innerSlotProps?.openPickerIcon,
|
|
101
|
-
ownerState
|
|
102
|
-
});
|
|
103
54
|
const Field = slots.field;
|
|
104
55
|
const fieldProps = useSlotProps({
|
|
105
56
|
elementType: Field,
|
|
@@ -107,17 +58,7 @@ export const useDesktopPicker = _ref => {
|
|
|
107
58
|
additionalProps: _extends({
|
|
108
59
|
// Internal props
|
|
109
60
|
readOnly,
|
|
110
|
-
|
|
111
|
-
format,
|
|
112
|
-
formatDensity,
|
|
113
|
-
enableAccessibleFieldDOMStructure,
|
|
114
|
-
selectedSections,
|
|
115
|
-
onSelectedSectionsChange,
|
|
116
|
-
timezone,
|
|
117
|
-
autoFocus: autoFocus && !props.open
|
|
118
|
-
}, pickerFieldProps, {
|
|
119
|
-
// onChange and value
|
|
120
|
-
|
|
61
|
+
autoFocus: autoFocus && !props.open,
|
|
121
62
|
// Forwarded props
|
|
122
63
|
className,
|
|
123
64
|
sx,
|
|
@@ -131,24 +72,6 @@ export const useDesktopPicker = _ref => {
|
|
|
131
72
|
}),
|
|
132
73
|
ownerState
|
|
133
74
|
});
|
|
134
|
-
|
|
135
|
-
// TODO: Move to `useSlotProps` when https://github.com/mui/material-ui/pull/35088 will be merged
|
|
136
|
-
if (hasUIView) {
|
|
137
|
-
fieldProps.InputProps = _extends({}, fieldProps.InputProps, {
|
|
138
|
-
ref: containerRef
|
|
139
|
-
}, !props.disableOpenPicker && {
|
|
140
|
-
[`${inputAdornmentProps.position}Adornment`]: /*#__PURE__*/_jsx(InputAdornment, _extends({}, inputAdornmentProps, {
|
|
141
|
-
children: /*#__PURE__*/_jsx(OpenPickerButton, _extends({}, openPickerButtonProps, {
|
|
142
|
-
children: /*#__PURE__*/_jsx(OpenPickerIcon, _extends({}, openPickerIconProps))
|
|
143
|
-
}))
|
|
144
|
-
}))
|
|
145
|
-
});
|
|
146
|
-
}
|
|
147
|
-
const slotsForField = _extends({
|
|
148
|
-
textField: slots.textField,
|
|
149
|
-
clearIcon: slots.clearIcon,
|
|
150
|
-
clearButton: slots.clearButton
|
|
151
|
-
}, fieldProps.slots);
|
|
152
75
|
const Layout = slots.layout ?? PickersLayout;
|
|
153
76
|
let labelledById = labelId;
|
|
154
77
|
if (isToolbarHidden) {
|
|
@@ -167,25 +90,27 @@ export const useDesktopPicker = _ref => {
|
|
|
167
90
|
}, innerSlotProps?.popper)
|
|
168
91
|
});
|
|
169
92
|
const handleFieldRef = useForkRef(fieldRef, fieldProps.unstableFieldRef);
|
|
170
|
-
const renderPicker = () => /*#__PURE__*/
|
|
171
|
-
children:
|
|
172
|
-
slots: slotsForField,
|
|
173
|
-
slotProps: slotProps,
|
|
174
|
-
unstableFieldRef: handleFieldRef
|
|
175
|
-
})), /*#__PURE__*/_jsx(PickersPopper, {
|
|
176
|
-
role: "dialog",
|
|
177
|
-
placement: "bottom-start",
|
|
178
|
-
anchorEl: containerRef.current,
|
|
93
|
+
const renderPicker = () => /*#__PURE__*/_jsx(PickerProvider, _extends({}, providerProps, {
|
|
94
|
+
children: /*#__PURE__*/_jsxs(PickerFieldUIContextProvider, {
|
|
179
95
|
slots: slots,
|
|
180
96
|
slotProps: slotProps,
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
97
|
+
children: [/*#__PURE__*/_jsx(Field, _extends({}, fieldProps, {
|
|
98
|
+
unstableFieldRef: handleFieldRef
|
|
99
|
+
})), /*#__PURE__*/_jsx(PickersPopper, {
|
|
100
|
+
role: "dialog",
|
|
101
|
+
placement: "bottom-start",
|
|
102
|
+
anchorEl: providerProps.contextValue.triggerRef.current,
|
|
184
103
|
slots: slots,
|
|
185
104
|
slotProps: slotProps,
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
105
|
+
shouldRestoreFocus: shouldRestoreFocus,
|
|
106
|
+
reduceAnimations: reduceAnimations,
|
|
107
|
+
children: /*#__PURE__*/_jsx(Layout, _extends({}, slotProps?.layout, {
|
|
108
|
+
slots: slots,
|
|
109
|
+
slotProps: slotProps,
|
|
110
|
+
children: renderCurrentView()
|
|
111
|
+
}))
|
|
112
|
+
})]
|
|
113
|
+
})
|
|
189
114
|
}));
|
|
190
115
|
return {
|
|
191
116
|
renderPicker
|