@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
|
@@ -1,19 +1,14 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
|
-
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
4
3
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
5
|
-
const _excluded = ["slots", "slotProps"
|
|
4
|
+
const _excluded = ["slots", "slotProps"];
|
|
6
5
|
import * as React from 'react';
|
|
7
6
|
import PropTypes from 'prop-types';
|
|
8
|
-
import MuiTextField from '@mui/material/TextField';
|
|
9
7
|
import { useThemeProps } from '@mui/material/styles';
|
|
10
|
-
import useSlotProps from '@mui/utils/useSlotProps';
|
|
11
8
|
import { refType } from '@mui/utils';
|
|
12
9
|
import { useDateTimeField } from "./useDateTimeField.js";
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import { convertFieldResponseIntoMuiTextFieldProps } from "../internals/utils/convertFieldResponseIntoMuiTextFieldProps.js";
|
|
16
|
-
import { useFieldOwnerState } from "../internals/hooks/useFieldOwnerState.js";
|
|
10
|
+
import { PickerFieldUI, useFieldTextFieldProps } from "../internals/components/PickerFieldUI.js";
|
|
11
|
+
import { CalendarIcon } from "../icons/index.js";
|
|
17
12
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
18
13
|
/**
|
|
19
14
|
* Demos:
|
|
@@ -32,33 +27,21 @@ const DateTimeField = /*#__PURE__*/React.forwardRef(function DateTimeField(inPro
|
|
|
32
27
|
});
|
|
33
28
|
const {
|
|
34
29
|
slots,
|
|
35
|
-
slotProps
|
|
36
|
-
InputProps,
|
|
37
|
-
inputProps
|
|
30
|
+
slotProps
|
|
38
31
|
} = themeProps,
|
|
39
32
|
other = _objectWithoutPropertiesLoose(themeProps, _excluded);
|
|
40
|
-
const
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
externalSlotProps: slotProps?.textField,
|
|
45
|
-
externalForwardedProps: other,
|
|
46
|
-
ownerState,
|
|
47
|
-
additionalProps: {
|
|
48
|
-
ref: inRef
|
|
49
|
-
}
|
|
33
|
+
const textFieldProps = useFieldTextFieldProps({
|
|
34
|
+
slotProps,
|
|
35
|
+
ref: inRef,
|
|
36
|
+
externalForwardedProps: other
|
|
50
37
|
});
|
|
51
|
-
|
|
52
|
-
// TODO: Remove when mui/material-ui#35088 will be merged
|
|
53
|
-
textFieldProps.inputProps = _extends({}, inputProps, textFieldProps.inputProps);
|
|
54
|
-
textFieldProps.InputProps = _extends({}, InputProps, textFieldProps.InputProps);
|
|
55
38
|
const fieldResponse = useDateTimeField(textFieldProps);
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
39
|
+
return /*#__PURE__*/_jsx(PickerFieldUI, {
|
|
40
|
+
slots: slots,
|
|
41
|
+
slotProps: slotProps,
|
|
42
|
+
fieldResponse: fieldResponse,
|
|
43
|
+
defaultOpenPickerIcon: CalendarIcon
|
|
44
|
+
});
|
|
62
45
|
});
|
|
63
46
|
process.env.NODE_ENV !== "production" ? DateTimeField.propTypes = {
|
|
64
47
|
// ----------------------------- Warning --------------------------------
|
|
@@ -81,6 +64,12 @@ process.env.NODE_ENV !== "production" ? DateTimeField.propTypes = {
|
|
|
81
64
|
* @default false
|
|
82
65
|
*/
|
|
83
66
|
clearable: PropTypes.bool,
|
|
67
|
+
/**
|
|
68
|
+
* The position at which the clear button is placed.
|
|
69
|
+
* If the field is not clearable, the button is not rendered.
|
|
70
|
+
* @default 'end'
|
|
71
|
+
*/
|
|
72
|
+
clearButtonPosition: PropTypes.oneOf(['end', 'start']),
|
|
84
73
|
/**
|
|
85
74
|
* The color of the component.
|
|
86
75
|
* It supports both default and custom theme colors, which can be added as shown in the
|
|
@@ -252,6 +241,12 @@ process.env.NODE_ENV !== "production" ? DateTimeField.propTypes = {
|
|
|
252
241
|
* @param {FieldSelectedSections} newValue The new selected sections.
|
|
253
242
|
*/
|
|
254
243
|
onSelectedSectionsChange: PropTypes.func,
|
|
244
|
+
/**
|
|
245
|
+
* The position at which the opening button is placed.
|
|
246
|
+
* If there is no picker to open, the button is not rendered
|
|
247
|
+
* @default 'end'
|
|
248
|
+
*/
|
|
249
|
+
openPickerButtonPosition: PropTypes.oneOf(['end', 'start']),
|
|
255
250
|
/**
|
|
256
251
|
* If `true`, the component is read-only.
|
|
257
252
|
* When read-only, the value cannot be changed but the user can interact with the interface.
|
|
@@ -1,14 +1,11 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import { TextFieldProps } from '@mui/material/TextField';
|
|
4
|
-
import { DateTimeValidationError, BuiltInFieldTextFieldProps, FieldOwnerState } from '../models';
|
|
1
|
+
import { MakeOptional } from '@mui/x-internals/types';
|
|
2
|
+
import { DateTimeValidationError, BuiltInFieldTextFieldProps } from '../models';
|
|
5
3
|
import { UseFieldInternalProps } from '../internals/hooks/useField';
|
|
6
|
-
import { ExportedUseClearableFieldProps, UseClearableFieldSlots, UseClearableFieldSlotProps } from '../hooks/useClearableField';
|
|
7
4
|
import { ExportedValidateDateTimeProps } from '../validation/validateDateTime';
|
|
8
5
|
import { AmPmProps } from '../internals/models/props/time';
|
|
9
6
|
import { PickerValue } from '../internals/models';
|
|
10
|
-
import {
|
|
11
|
-
export interface UseDateTimeFieldProps<TEnableAccessibleFieldDOMStructure extends boolean> extends MakeOptional<UseFieldInternalProps<PickerValue, TEnableAccessibleFieldDOMStructure, DateTimeValidationError>, 'format'>, ExportedValidateDateTimeProps,
|
|
7
|
+
import { ExportedPickerFieldUIProps, PickerFieldUISlotProps, PickerFieldUISlots } from '../internals/components/PickerFieldUI';
|
|
8
|
+
export interface UseDateTimeFieldProps<TEnableAccessibleFieldDOMStructure extends boolean> extends MakeOptional<UseFieldInternalProps<PickerValue, TEnableAccessibleFieldDOMStructure, DateTimeValidationError>, 'format'>, ExportedValidateDateTimeProps, ExportedPickerFieldUIProps, AmPmProps {
|
|
12
9
|
}
|
|
13
10
|
export type DateTimeFieldProps<TEnableAccessibleFieldDOMStructure extends boolean = true> = UseDateTimeFieldProps<TEnableAccessibleFieldDOMStructure> & Omit<BuiltInFieldTextFieldProps<TEnableAccessibleFieldDOMStructure>, keyof UseDateTimeFieldProps<TEnableAccessibleFieldDOMStructure>> & {
|
|
14
11
|
/**
|
|
@@ -22,13 +19,7 @@ export type DateTimeFieldProps<TEnableAccessibleFieldDOMStructure extends boolea
|
|
|
22
19
|
*/
|
|
23
20
|
slotProps?: DateTimeFieldSlotProps;
|
|
24
21
|
};
|
|
25
|
-
export interface DateTimeFieldSlots extends
|
|
26
|
-
/**
|
|
27
|
-
* Form control with an input to render the value.
|
|
28
|
-
* @default <PickersTextField />, or <TextField /> from '@mui/material' if `enableAccessibleFieldDOMStructure` is `false`.
|
|
29
|
-
*/
|
|
30
|
-
textField?: React.ElementType;
|
|
22
|
+
export interface DateTimeFieldSlots extends PickerFieldUISlots {
|
|
31
23
|
}
|
|
32
|
-
export interface DateTimeFieldSlotProps extends
|
|
33
|
-
textField?: SlotComponentPropsFromProps<PickersTextFieldProps | TextFieldProps, {}, FieldOwnerState>;
|
|
24
|
+
export interface DateTimeFieldSlotProps extends PickerFieldUISlotProps {
|
|
34
25
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { UseDateTimeFieldProps } from './DateTimeField.types';
|
|
2
|
-
export declare const useDateTimeField: <TEnableAccessibleFieldDOMStructure extends boolean, TAllProps extends UseDateTimeFieldProps<TEnableAccessibleFieldDOMStructure>>(
|
|
2
|
+
export declare const useDateTimeField: <TEnableAccessibleFieldDOMStructure extends boolean, TAllProps extends UseDateTimeFieldProps<TEnableAccessibleFieldDOMStructure>>(props: TAllProps) => import("../internals").UseFieldResponse<TEnableAccessibleFieldDOMStructure, Omit<TAllProps, "disabled" | "readOnly" | "value" | "defaultValue" | "autoFocus" | "onChange" | "onError" | "format" | "ampm" | "disableFuture" | "disablePast" | "maxDate" | "minDate" | "timezone" | "shouldDisableYear" | "shouldDisableMonth" | "shouldDisableDate" | "minTime" | "maxTime" | "minutesStep" | "shouldDisableTime" | "disableIgnoringDatePartForTimeValidation" | "minDateTime" | "maxDateTime" | "referenceDate" | "formatDensity" | "shouldRespectLeadingZeros" | "selectedSections" | "onSelectedSectionsChange" | "unstableFieldRef" | "unstableStartFieldRef" | "unstableEndFieldRef" | "enableAccessibleFieldDOMStructure" | "dateSeparator">>;
|
|
@@ -1,22 +1,25 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
|
-
import {
|
|
4
|
-
import { useField } from "../internals/hooks/useField/index.js";
|
|
5
|
-
import { validateDateTime } from "../validation/index.js";
|
|
3
|
+
import { useField, useFieldInternalPropsWithDefaults } from "../internals/hooks/useField/index.js";
|
|
6
4
|
import { useSplitFieldProps } from "../hooks/index.js";
|
|
7
|
-
import {
|
|
8
|
-
export const useDateTimeField =
|
|
9
|
-
const
|
|
5
|
+
import { useDateTimeManager } from "../managers/index.js";
|
|
6
|
+
export const useDateTimeField = props => {
|
|
7
|
+
const manager = useDateTimeManager(props);
|
|
10
8
|
const {
|
|
11
9
|
forwardedProps,
|
|
12
10
|
internalProps
|
|
13
11
|
} = useSplitFieldProps(props, 'date-time');
|
|
12
|
+
const internalPropsWithDefaults = useFieldInternalPropsWithDefaults({
|
|
13
|
+
manager,
|
|
14
|
+
internalProps
|
|
15
|
+
});
|
|
14
16
|
return useField({
|
|
15
17
|
forwardedProps,
|
|
16
|
-
internalProps,
|
|
17
|
-
valueManager:
|
|
18
|
-
fieldValueManager:
|
|
19
|
-
validator:
|
|
20
|
-
valueType:
|
|
18
|
+
internalProps: internalPropsWithDefaults,
|
|
19
|
+
valueManager: manager.internal_valueManager,
|
|
20
|
+
fieldValueManager: manager.internal_fieldValueManager,
|
|
21
|
+
validator: manager.validator,
|
|
22
|
+
valueType: manager.valueType,
|
|
23
|
+
getOpenPickerButtonAriaLabel: manager.internal_getOpenPickerButtonAriaLabel
|
|
21
24
|
});
|
|
22
25
|
};
|
|
@@ -69,8 +69,8 @@ process.env.NODE_ENV !== "production" ? DateTimePicker.propTypes = {
|
|
|
69
69
|
autoFocus: PropTypes.bool,
|
|
70
70
|
className: PropTypes.string,
|
|
71
71
|
/**
|
|
72
|
-
* If `true`, the
|
|
73
|
-
* @default
|
|
72
|
+
* If `true`, the Picker will close after submitting the full date.
|
|
73
|
+
* @default false
|
|
74
74
|
*/
|
|
75
75
|
closeOnSelect: PropTypes.bool,
|
|
76
76
|
/**
|
|
@@ -78,11 +78,11 @@ const DateTimePickerTabs = function DateTimePickerTabs(inProps) {
|
|
|
78
78
|
} = usePickerPrivateContext();
|
|
79
79
|
const {
|
|
80
80
|
view,
|
|
81
|
-
|
|
81
|
+
setView
|
|
82
82
|
} = usePickerContext();
|
|
83
83
|
const classes = useUtilityClasses(classesProp);
|
|
84
84
|
const handleChange = (event, value) => {
|
|
85
|
-
|
|
85
|
+
setView(tabToView(value));
|
|
86
86
|
};
|
|
87
87
|
if (hidden) {
|
|
88
88
|
return null;
|
|
@@ -2,13 +2,15 @@ import * as React from 'react';
|
|
|
2
2
|
import { BaseToolbarProps, ExportedBaseToolbarProps } from '../internals/models/props/toolbar';
|
|
3
3
|
import { DateTimePickerToolbarClasses } from './dateTimePickerToolbarClasses';
|
|
4
4
|
import { DateOrTimeViewWithMeridiem, PickerValue } from '../internals/models';
|
|
5
|
+
import { DateTimeValidationError } from '../models';
|
|
6
|
+
import { SetValueActionOptions } from '../internals/hooks/usePicker/usePickerValue.types';
|
|
5
7
|
export interface ExportedDateTimePickerToolbarProps extends ExportedBaseToolbarProps {
|
|
6
8
|
/**
|
|
7
9
|
* Override or extend the styles applied to the component.
|
|
8
10
|
*/
|
|
9
11
|
classes?: Partial<DateTimePickerToolbarClasses>;
|
|
10
12
|
}
|
|
11
|
-
export interface DateTimePickerToolbarProps extends ExportedDateTimePickerToolbarProps, BaseToolbarProps
|
|
13
|
+
export interface DateTimePickerToolbarProps extends ExportedDateTimePickerToolbarProps, BaseToolbarProps {
|
|
12
14
|
/**
|
|
13
15
|
* If provided, it will be used instead of `dateTimePickerToolbarTitle` from localization.
|
|
14
16
|
*/
|
|
@@ -22,8 +24,10 @@ export interface DateTimePickerToolbarProps extends ExportedDateTimePickerToolba
|
|
|
22
24
|
* This is used by the Date Time Range Picker Toolbar.
|
|
23
25
|
*/
|
|
24
26
|
export declare const DateTimePickerToolbarOverrideContext: React.Context<{
|
|
27
|
+
value: PickerValue;
|
|
28
|
+
setValue: (value: PickerValue, options?: SetValueActionOptions<DateTimeValidationError>) => void;
|
|
25
29
|
forceDesktopVariant: boolean;
|
|
26
|
-
|
|
30
|
+
setView: (view: DateOrTimeViewWithMeridiem) => void;
|
|
27
31
|
view: DateOrTimeViewWithMeridiem | null;
|
|
28
32
|
} | null>;
|
|
29
33
|
/**
|
|
@@ -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", "toolbarFormat", "toolbarPlaceholder", "toolbarTitle", "className", "classes"];
|
|
6
6
|
import * as React from 'react';
|
|
7
7
|
import clsx from 'clsx';
|
|
8
8
|
import PropTypes from 'prop-types';
|
|
@@ -230,9 +230,6 @@ function DateTimePickerToolbar(inProps) {
|
|
|
230
230
|
const {
|
|
231
231
|
ampm,
|
|
232
232
|
ampmInClock,
|
|
233
|
-
value,
|
|
234
|
-
onChange,
|
|
235
|
-
isLandscape,
|
|
236
233
|
toolbarFormat,
|
|
237
234
|
toolbarPlaceholder = '––',
|
|
238
235
|
toolbarTitle: inToolbarTitle,
|
|
@@ -241,31 +238,37 @@ function DateTimePickerToolbar(inProps) {
|
|
|
241
238
|
} = props,
|
|
242
239
|
other = _objectWithoutPropertiesLoose(props, _excluded);
|
|
243
240
|
const {
|
|
241
|
+
value: valueContext,
|
|
242
|
+
setValue: setValueContext,
|
|
244
243
|
disabled,
|
|
245
244
|
readOnly,
|
|
246
245
|
variant,
|
|
247
|
-
|
|
248
|
-
|
|
246
|
+
orientation,
|
|
247
|
+
view: viewContext,
|
|
248
|
+
setView: setViewContext,
|
|
249
249
|
views
|
|
250
250
|
} = usePickerContext();
|
|
251
|
+
const translations = usePickerTranslations();
|
|
251
252
|
const ownerState = useToolbarOwnerState();
|
|
252
253
|
const classes = useUtilityClasses(classesProp, ownerState);
|
|
253
254
|
const utils = useUtils();
|
|
255
|
+
const overrides = React.useContext(DateTimePickerToolbarOverrideContext);
|
|
256
|
+
const value = overrides ? overrides.value : valueContext;
|
|
257
|
+
const setValue = overrides ? overrides.setValue : setValueContext;
|
|
258
|
+
const view = overrides ? overrides.view : viewContext;
|
|
259
|
+
const setView = overrides ? overrides.setView : setViewContext;
|
|
254
260
|
const {
|
|
255
261
|
meridiemMode,
|
|
256
262
|
handleMeridiemChange
|
|
257
|
-
} = useMeridiemMode(value, ampm,
|
|
258
|
-
|
|
259
|
-
|
|
263
|
+
} = useMeridiemMode(value, ampm, newValue => setValue(newValue, {
|
|
264
|
+
changeImportance: 'set'
|
|
265
|
+
}));
|
|
260
266
|
const toolbarVariant = overrides?.forceDesktopVariant ? 'desktop' : variant;
|
|
261
267
|
const isDesktop = toolbarVariant === 'desktop';
|
|
262
268
|
const showAmPmControl = Boolean(ampm && !ampmInClock);
|
|
263
269
|
const toolbarTitle = inToolbarTitle ?? translations.dateTimePickerToolbarTitle;
|
|
264
|
-
const view = overrides ? overrides.view : viewCtx;
|
|
265
|
-
const onViewChange = overrides ? overrides.onViewChange : onViewChangeCtx;
|
|
266
|
-
const formatHours = time => ampm ? utils.format(time, 'hours12h') : utils.format(time, 'hours24h');
|
|
267
270
|
const dateText = React.useMemo(() => {
|
|
268
|
-
if (!value) {
|
|
271
|
+
if (!utils.isValid(value)) {
|
|
269
272
|
return toolbarPlaceholder;
|
|
270
273
|
}
|
|
271
274
|
if (toolbarFormat) {
|
|
@@ -273,8 +276,13 @@ function DateTimePickerToolbar(inProps) {
|
|
|
273
276
|
}
|
|
274
277
|
return utils.format(value, 'shortDate');
|
|
275
278
|
}, [value, toolbarFormat, toolbarPlaceholder, utils]);
|
|
279
|
+
const formatSection = (format, fallback) => {
|
|
280
|
+
if (!utils.isValid(value)) {
|
|
281
|
+
return fallback;
|
|
282
|
+
}
|
|
283
|
+
return utils.format(value, format);
|
|
284
|
+
};
|
|
276
285
|
return /*#__PURE__*/_jsxs(DateTimePickerToolbarRoot, _extends({
|
|
277
|
-
isLandscape: isLandscape,
|
|
278
286
|
className: clsx(classes.root, className),
|
|
279
287
|
toolbarTitle: toolbarTitle,
|
|
280
288
|
toolbarVariant: toolbarVariant
|
|
@@ -286,13 +294,13 @@ function DateTimePickerToolbar(inProps) {
|
|
|
286
294
|
children: [views.includes('year') && /*#__PURE__*/_jsx(PickersToolbarButton, {
|
|
287
295
|
tabIndex: -1,
|
|
288
296
|
variant: "subtitle1",
|
|
289
|
-
onClick: () =>
|
|
297
|
+
onClick: () => setView('year'),
|
|
290
298
|
selected: view === 'year',
|
|
291
|
-
value:
|
|
299
|
+
value: formatSection('year', '–')
|
|
292
300
|
}), views.includes('day') && /*#__PURE__*/_jsx(PickersToolbarButton, {
|
|
293
301
|
tabIndex: -1,
|
|
294
302
|
variant: isDesktop ? 'h5' : 'h4',
|
|
295
|
-
onClick: () =>
|
|
303
|
+
onClick: () => setView('day'),
|
|
296
304
|
selected: view === 'day',
|
|
297
305
|
value: dateText
|
|
298
306
|
})]
|
|
@@ -307,10 +315,10 @@ function DateTimePickerToolbar(inProps) {
|
|
|
307
315
|
children: [views.includes('hours') && /*#__PURE__*/_jsxs(React.Fragment, {
|
|
308
316
|
children: [/*#__PURE__*/_jsx(PickersToolbarButton, {
|
|
309
317
|
variant: isDesktop ? 'h5' : 'h3',
|
|
310
|
-
width: isDesktop &&
|
|
311
|
-
onClick: () =>
|
|
318
|
+
width: isDesktop && orientation === 'portrait' ? MULTI_SECTION_CLOCK_SECTION_WIDTH : undefined,
|
|
319
|
+
onClick: () => setView('hours'),
|
|
312
320
|
selected: view === 'hours',
|
|
313
|
-
value:
|
|
321
|
+
value: formatSection(ampm ? 'hours12h' : 'hours24h', '--')
|
|
314
322
|
}), /*#__PURE__*/_jsx(DateTimePickerToolbarSeparator, {
|
|
315
323
|
variant: isDesktop ? 'h5' : 'h3',
|
|
316
324
|
value: ":",
|
|
@@ -319,10 +327,10 @@ function DateTimePickerToolbar(inProps) {
|
|
|
319
327
|
toolbarVariant: toolbarVariant
|
|
320
328
|
}), /*#__PURE__*/_jsx(PickersToolbarButton, {
|
|
321
329
|
variant: isDesktop ? 'h5' : 'h3',
|
|
322
|
-
width: isDesktop &&
|
|
323
|
-
onClick: () =>
|
|
330
|
+
width: isDesktop && orientation === 'portrait' ? MULTI_SECTION_CLOCK_SECTION_WIDTH : undefined,
|
|
331
|
+
onClick: () => setView('minutes'),
|
|
324
332
|
selected: view === 'minutes' || !views.includes('minutes') && view === 'hours',
|
|
325
|
-
value:
|
|
333
|
+
value: formatSection('minutes', '--'),
|
|
326
334
|
disabled: !views.includes('minutes')
|
|
327
335
|
})]
|
|
328
336
|
}), views.includes('seconds') && /*#__PURE__*/_jsxs(React.Fragment, {
|
|
@@ -334,10 +342,10 @@ function DateTimePickerToolbar(inProps) {
|
|
|
334
342
|
toolbarVariant: toolbarVariant
|
|
335
343
|
}), /*#__PURE__*/_jsx(PickersToolbarButton, {
|
|
336
344
|
variant: isDesktop ? 'h5' : 'h3',
|
|
337
|
-
width: isDesktop &&
|
|
338
|
-
onClick: () =>
|
|
345
|
+
width: isDesktop && orientation === 'portrait' ? MULTI_SECTION_CLOCK_SECTION_WIDTH : undefined,
|
|
346
|
+
onClick: () => setView('seconds'),
|
|
339
347
|
selected: view === 'seconds',
|
|
340
|
-
value:
|
|
348
|
+
value: formatSection('seconds', '--')
|
|
341
349
|
})]
|
|
342
350
|
})]
|
|
343
351
|
}), showAmPmControl && !isDesktop && /*#__PURE__*/_jsxs(DateTimePickerToolbarAmPmSelection, {
|
|
@@ -360,7 +368,7 @@ function DateTimePickerToolbar(inProps) {
|
|
|
360
368
|
})]
|
|
361
369
|
}), ampm && isDesktop && /*#__PURE__*/_jsx(PickersToolbarButton, {
|
|
362
370
|
variant: "h5",
|
|
363
|
-
onClick: () =>
|
|
371
|
+
onClick: () => setView('meridiem'),
|
|
364
372
|
selected: view === 'meridiem',
|
|
365
373
|
value: value && meridiemMode ? formatMeridiem(utils, meridiemMode) : '--',
|
|
366
374
|
width: MULTI_SECTION_CLOCK_SECTION_WIDTH
|
|
@@ -385,8 +393,6 @@ process.env.NODE_ENV !== "production" ? DateTimePickerToolbar.propTypes = {
|
|
|
385
393
|
* @default `true` for Desktop, `false` for Mobile.
|
|
386
394
|
*/
|
|
387
395
|
hidden: PropTypes.bool,
|
|
388
|
-
isLandscape: PropTypes.bool.isRequired,
|
|
389
|
-
onChange: PropTypes.func.isRequired,
|
|
390
396
|
/**
|
|
391
397
|
* The system prop that allows defining system overrides as well as additional CSS styles.
|
|
392
398
|
*/
|
|
@@ -404,7 +410,6 @@ process.env.NODE_ENV !== "production" ? DateTimePickerToolbar.propTypes = {
|
|
|
404
410
|
/**
|
|
405
411
|
* If provided, it will be used instead of `dateTimePickerToolbarTitle` from localization.
|
|
406
412
|
*/
|
|
407
|
-
toolbarTitle: PropTypes.node
|
|
408
|
-
value: PropTypes.object
|
|
413
|
+
toolbarTitle: PropTypes.node
|
|
409
414
|
} : void 0;
|
|
410
415
|
export { DateTimePickerToolbar };
|
|
@@ -35,7 +35,7 @@ export interface BaseDateTimePickerSlotProps extends DateCalendarSlotProps, Time
|
|
|
35
35
|
*/
|
|
36
36
|
toolbar?: ExportedDateTimePickerToolbarProps;
|
|
37
37
|
}
|
|
38
|
-
export type DateTimePickerViewRenderers<TView extends DateOrTimeViewWithMeridiem
|
|
38
|
+
export type DateTimePickerViewRenderers<TView extends DateOrTimeViewWithMeridiem> = PickerViewRendererLookup<PickerValue, TView, Omit<DateViewRendererProps<TView>, 'slots' | 'slotProps'> & Omit<TimeViewRendererProps<TimeViewWithMeridiem, BaseClockProps<TimeViewWithMeridiem>>, 'slots' | 'slotProps'>>;
|
|
39
39
|
export interface BaseDateTimePickerProps<TView extends DateOrTimeViewWithMeridiem> extends BasePickerInputProps<PickerValue, TView, DateTimeValidationError>, Omit<ExportedDateCalendarProps, 'onViewChange'>, ExportedBaseClockProps, ExportedValidateDateTimeProps {
|
|
40
40
|
/**
|
|
41
41
|
* Display ampm controls under the clock (instead of in the toolbar).
|
|
@@ -7,15 +7,14 @@ import resolveComponentProps from '@mui/utils/resolveComponentProps';
|
|
|
7
7
|
import { refType } from '@mui/utils';
|
|
8
8
|
import { singleItemValueManager } from "../internals/utils/valueManagers.js";
|
|
9
9
|
import { useDatePickerDefaultizedProps } from "../DatePicker/shared.js";
|
|
10
|
-
import { usePickerTranslations } from "../hooks/usePickerTranslations.js";
|
|
11
10
|
import { useUtils } from "../internals/hooks/useUtils.js";
|
|
12
11
|
import { validateDate, extractValidationProps } from "../validation/index.js";
|
|
13
12
|
import { useDesktopPicker } from "../internals/hooks/useDesktopPicker/index.js";
|
|
14
|
-
import { CalendarIcon } from "../icons/index.js";
|
|
15
13
|
import { DateField } from "../DateField/index.js";
|
|
16
14
|
import { renderDateViewCalendar } from "../dateViewRenderers/index.js";
|
|
17
15
|
import { resolveDateFormat } from "../internals/utils/date-utils.js";
|
|
18
|
-
|
|
16
|
+
const emptyActions = [];
|
|
17
|
+
|
|
19
18
|
/**
|
|
20
19
|
* Demos:
|
|
21
20
|
*
|
|
@@ -27,7 +26,6 @@ import { buildGetOpenDialogAriaText } from "../locales/utils/getPickersLocalizat
|
|
|
27
26
|
* - [DesktopDatePicker API](https://mui.com/x/api/date-pickers/desktop-date-picker/)
|
|
28
27
|
*/
|
|
29
28
|
const DesktopDatePicker = /*#__PURE__*/React.forwardRef(function DesktopDatePicker(inProps, ref) {
|
|
30
|
-
const translations = usePickerTranslations();
|
|
31
29
|
const utils = useUtils();
|
|
32
30
|
|
|
33
31
|
// Props with the default values common to all date pickers
|
|
@@ -40,11 +38,11 @@ const DesktopDatePicker = /*#__PURE__*/React.forwardRef(function DesktopDatePick
|
|
|
40
38
|
|
|
41
39
|
// Props with the default values specific to the desktop variant
|
|
42
40
|
const props = _extends({}, defaultizedProps, {
|
|
41
|
+
closeOnSelect: defaultizedProps.closeOnSelect ?? true,
|
|
43
42
|
viewRenderers,
|
|
44
43
|
format: resolveDateFormat(utils, defaultizedProps, false),
|
|
45
44
|
yearsPerRow: defaultizedProps.yearsPerRow ?? 4,
|
|
46
45
|
slots: _extends({
|
|
47
|
-
openPickerIcon: CalendarIcon,
|
|
48
46
|
field: DateField
|
|
49
47
|
}, defaultizedProps.slots),
|
|
50
48
|
slotProps: _extends({}, defaultizedProps.slotProps, {
|
|
@@ -53,7 +51,10 @@ const DesktopDatePicker = /*#__PURE__*/React.forwardRef(function DesktopDatePick
|
|
|
53
51
|
}),
|
|
54
52
|
toolbar: _extends({
|
|
55
53
|
hidden: true
|
|
56
|
-
}, defaultizedProps.slotProps?.toolbar)
|
|
54
|
+
}, defaultizedProps.slotProps?.toolbar),
|
|
55
|
+
actionBar: ownerState => _extends({
|
|
56
|
+
actions: emptyActions
|
|
57
|
+
}, resolveComponentProps(defaultizedProps.slotProps?.actionBar, ownerState))
|
|
57
58
|
})
|
|
58
59
|
});
|
|
59
60
|
const {
|
|
@@ -62,12 +63,6 @@ const DesktopDatePicker = /*#__PURE__*/React.forwardRef(function DesktopDatePick
|
|
|
62
63
|
props,
|
|
63
64
|
valueManager: singleItemValueManager,
|
|
64
65
|
valueType: 'date',
|
|
65
|
-
getOpenDialogAriaText: buildGetOpenDialogAriaText({
|
|
66
|
-
utils,
|
|
67
|
-
formatKey: 'fullDate',
|
|
68
|
-
contextTranslation: translations.openDatePickerDialogue,
|
|
69
|
-
propsTranslation: props.localeText?.openDatePickerDialogue
|
|
70
|
-
}),
|
|
71
66
|
validator: validateDate
|
|
72
67
|
});
|
|
73
68
|
return renderPicker();
|
|
@@ -86,8 +81,8 @@ DesktopDatePicker.propTypes = {
|
|
|
86
81
|
autoFocus: PropTypes.bool,
|
|
87
82
|
className: PropTypes.string,
|
|
88
83
|
/**
|
|
89
|
-
* If `true`, the
|
|
90
|
-
* @default
|
|
84
|
+
* If `true`, the Picker will close after submitting the full date.
|
|
85
|
+
* @default true
|
|
91
86
|
*/
|
|
92
87
|
closeOnSelect: PropTypes.bool,
|
|
93
88
|
/**
|
|
@@ -22,4 +22,9 @@ export interface DesktopDatePickerProps<TEnableAccessibleFieldDOMStructure exten
|
|
|
22
22
|
* @default 4
|
|
23
23
|
*/
|
|
24
24
|
yearsPerRow?: 3 | 4;
|
|
25
|
+
/**
|
|
26
|
+
* If `true`, the Picker will close after submitting the full date.
|
|
27
|
+
* @default true
|
|
28
|
+
*/
|
|
29
|
+
closeOnSelect?: boolean;
|
|
25
30
|
}
|
|
@@ -12,10 +12,8 @@ import { singleItemValueManager } from "../internals/utils/valueManagers.js";
|
|
|
12
12
|
import { DateTimeField } from "../DateTimeField/index.js";
|
|
13
13
|
import { useDateTimePickerDefaultizedProps } from "../DateTimePicker/shared.js";
|
|
14
14
|
import { renderDateViewCalendar } from "../dateViewRenderers/dateViewRenderers.js";
|
|
15
|
-
import { usePickerTranslations } from "../hooks/usePickerTranslations.js";
|
|
16
15
|
import { useUtils } from "../internals/hooks/useUtils.js";
|
|
17
16
|
import { validateDateTime, extractValidationProps } from "../validation/index.js";
|
|
18
|
-
import { CalendarIcon } from "../icons/index.js";
|
|
19
17
|
import { useDesktopPicker } from "../internals/hooks/useDesktopPicker/index.js";
|
|
20
18
|
import { resolveDateTimeFormat, resolveTimeViewsResponse } from "../internals/utils/date-time-utils.js";
|
|
21
19
|
import { renderDigitalClockTimeView, renderMultiSectionDigitalClockTimeView } from "../timeViewRenderers/index.js";
|
|
@@ -25,9 +23,13 @@ import { DesktopDateTimePickerLayout } from "./DesktopDateTimePickerLayout.js";
|
|
|
25
23
|
import { VIEW_HEIGHT } from "../internals/constants/dimensions.js";
|
|
26
24
|
import { isInternalTimeView } from "../internals/utils/time-utils.js";
|
|
27
25
|
import { isDatePickerView } from "../internals/utils/date-utils.js";
|
|
28
|
-
import { buildGetOpenDialogAriaText } from "../locales/utils/getPickersLocalization.js";
|
|
29
26
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
30
|
-
const rendererInterceptor = function
|
|
27
|
+
const rendererInterceptor = function RendererInterceptor(props) {
|
|
28
|
+
const {
|
|
29
|
+
viewRenderers,
|
|
30
|
+
popperView,
|
|
31
|
+
rendererProps
|
|
32
|
+
} = props;
|
|
31
33
|
const {
|
|
32
34
|
openTo,
|
|
33
35
|
focusedView,
|
|
@@ -46,8 +48,10 @@ const rendererInterceptor = function rendererInterceptor(inViewRenderers, popper
|
|
|
46
48
|
}]
|
|
47
49
|
});
|
|
48
50
|
const isTimeViewActive = isInternalTimeView(popperView);
|
|
51
|
+
const dateView = isTimeViewActive ? 'day' : popperView;
|
|
52
|
+
const timeView = isTimeViewActive ? popperView : 'hours';
|
|
49
53
|
return /*#__PURE__*/_jsxs(React.Fragment, {
|
|
50
|
-
children: [
|
|
54
|
+
children: [viewRenderers[dateView]?.(_extends({}, rendererProps, {
|
|
51
55
|
view: !isTimeViewActive ? popperView : 'day',
|
|
52
56
|
focusedView: focusedView && isDatePickerView(focusedView) ? focusedView : null,
|
|
53
57
|
views: rendererProps.views.filter(isDatePickerView),
|
|
@@ -60,7 +64,7 @@ const rendererInterceptor = function rendererInterceptor(inViewRenderers, popper
|
|
|
60
64
|
sx: {
|
|
61
65
|
gridColumn: 2
|
|
62
66
|
}
|
|
63
|
-
}),
|
|
67
|
+
}), viewRenderers[timeView]?.(_extends({}, finalProps, {
|
|
64
68
|
view: isTimeViewActive ? popperView : 'hours',
|
|
65
69
|
focusedView: focusedView && isInternalTimeView(focusedView) ? focusedView : null,
|
|
66
70
|
openTo: isInternalTimeView(openTo) ? openTo : 'hours',
|
|
@@ -83,7 +87,6 @@ const rendererInterceptor = function rendererInterceptor(inViewRenderers, popper
|
|
|
83
87
|
* - [DesktopDateTimePicker API](https://mui.com/x/api/date-pickers/desktop-date-time-picker/)
|
|
84
88
|
*/
|
|
85
89
|
const DesktopDateTimePicker = /*#__PURE__*/React.forwardRef(function DesktopDateTimePicker(inProps, ref) {
|
|
86
|
-
const translations = usePickerTranslations();
|
|
87
90
|
const utils = useUtils();
|
|
88
91
|
|
|
89
92
|
// Props with the default values common to all date time pickers
|
|
@@ -108,7 +111,6 @@ const DesktopDateTimePicker = /*#__PURE__*/React.forwardRef(function DesktopDate
|
|
|
108
111
|
// Need to avoid adding the `meridiem` view when unexpected renderer is specified
|
|
109
112
|
const shouldHoursRendererContainMeridiemView = viewRenderers.hours?.name === renderMultiSectionDigitalClockTimeView.name;
|
|
110
113
|
const views = !shouldHoursRendererContainMeridiemView ? resolvedViews.filter(view => view !== 'meridiem') : resolvedViews;
|
|
111
|
-
const actionBarActions = shouldRenderTimeInASingleColumn ? [] : ['accept'];
|
|
112
114
|
|
|
113
115
|
// Props with the default values specific to the desktop variant
|
|
114
116
|
const props = _extends({}, defaultizedProps, {
|
|
@@ -122,8 +124,7 @@ const DesktopDateTimePicker = /*#__PURE__*/React.forwardRef(function DesktopDate
|
|
|
122
124
|
shouldRenderTimeInASingleColumn,
|
|
123
125
|
slots: _extends({
|
|
124
126
|
field: DateTimeField,
|
|
125
|
-
layout: DesktopDateTimePickerLayout
|
|
126
|
-
openPickerIcon: CalendarIcon
|
|
127
|
+
layout: DesktopDateTimePickerLayout
|
|
127
128
|
}, defaultizedProps.slots),
|
|
128
129
|
slotProps: _extends({}, defaultizedProps.slotProps, {
|
|
129
130
|
field: ownerState => _extends({}, resolveComponentProps(defaultizedProps.slotProps?.field, ownerState), extractValidationProps(defaultizedProps), {
|
|
@@ -135,10 +136,7 @@ const DesktopDateTimePicker = /*#__PURE__*/React.forwardRef(function DesktopDate
|
|
|
135
136
|
}, defaultizedProps.slotProps?.toolbar),
|
|
136
137
|
tabs: _extends({
|
|
137
138
|
hidden: true
|
|
138
|
-
}, defaultizedProps.slotProps?.tabs)
|
|
139
|
-
actionBar: ownerState => _extends({
|
|
140
|
-
actions: actionBarActions
|
|
141
|
-
}, resolveComponentProps(defaultizedProps.slotProps?.actionBar, ownerState))
|
|
139
|
+
}, defaultizedProps.slotProps?.tabs)
|
|
142
140
|
})
|
|
143
141
|
});
|
|
144
142
|
const {
|
|
@@ -147,12 +145,6 @@ const DesktopDateTimePicker = /*#__PURE__*/React.forwardRef(function DesktopDate
|
|
|
147
145
|
props,
|
|
148
146
|
valueManager: singleItemValueManager,
|
|
149
147
|
valueType: 'date-time',
|
|
150
|
-
getOpenDialogAriaText: buildGetOpenDialogAriaText({
|
|
151
|
-
utils,
|
|
152
|
-
formatKey: 'fullDate',
|
|
153
|
-
contextTranslation: translations.openDatePickerDialogue,
|
|
154
|
-
propsTranslation: props.localeText?.openDatePickerDialogue
|
|
155
|
-
}),
|
|
156
148
|
validator: validateDateTime,
|
|
157
149
|
rendererInterceptor
|
|
158
150
|
});
|
|
@@ -182,8 +174,8 @@ DesktopDateTimePicker.propTypes = {
|
|
|
182
174
|
autoFocus: PropTypes.bool,
|
|
183
175
|
className: PropTypes.string,
|
|
184
176
|
/**
|
|
185
|
-
* If `true`, the
|
|
186
|
-
* @default
|
|
177
|
+
* If `true`, the Picker will close after submitting the full date.
|
|
178
|
+
* @default false
|
|
187
179
|
*/
|
|
188
180
|
closeOnSelect: PropTypes.bool,
|
|
189
181
|
/**
|
|
@@ -65,9 +65,6 @@ process.env.NODE_ENV !== "production" ? DesktopDateTimePickerLayout.propTypes =
|
|
|
65
65
|
*/
|
|
66
66
|
classes: PropTypes.object,
|
|
67
67
|
className: PropTypes.string,
|
|
68
|
-
isValid: PropTypes.func.isRequired,
|
|
69
|
-
onChange: PropTypes.func.isRequired,
|
|
70
|
-
onSelectShortcut: PropTypes.func.isRequired,
|
|
71
68
|
/**
|
|
72
69
|
* The props used for each component slot.
|
|
73
70
|
* @default {}
|
|
@@ -81,7 +78,6 @@ process.env.NODE_ENV !== "production" ? DesktopDateTimePickerLayout.propTypes =
|
|
|
81
78
|
/**
|
|
82
79
|
* The system prop that allows defining system overrides as well as additional CSS styles.
|
|
83
80
|
*/
|
|
84
|
-
sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])
|
|
85
|
-
value: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.object), PropTypes.object])
|
|
81
|
+
sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])
|
|
86
82
|
} : void 0;
|
|
87
83
|
export { DesktopDateTimePickerLayout };
|