@mui/x-date-pickers 8.0.0-alpha.7 → 8.0.0-alpha.9
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/CHANGELOG.md +551 -3
- package/DateCalendar/DayCalendar.js +2 -0
- 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 +2 -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 +2 -1
- package/DesktopDatePicker/DesktopDatePicker.js +0 -11
- package/DesktopDateTimePicker/DesktopDateTimePicker.js +1 -12
- package/DesktopTimePicker/DesktopTimePicker.js +1 -12
- package/MobileDatePicker/MobileDatePicker.js +0 -9
- package/MobileDateTimePicker/MobileDateTimePicker.js +0 -9
- package/MobileTimePicker/MobileTimePicker.js +0 -9
- package/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +2 -0
- package/PickersCalendarHeader/PickersCalendarHeader.js +2 -0
- package/TimeClock/ClockPointer.js +2 -0
- 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 +2 -1
- package/hooks/useParsedFormat.d.ts +8 -6
- package/hooks/useParsedFormat.js +10 -12
- package/hooks/usePickerActionsContext.d.ts +1 -1
- package/hooks/usePickerContext.d.ts +4 -2
- package/hooks/usePickerContext.js +2 -1
- package/hooks/useSplitFieldProps.d.ts +12 -3
- package/hooks/useSplitFieldProps.js +8 -3
- package/index.js +1 -1
- package/internals/components/PickerFieldUI.d.ts +132 -0
- package/internals/components/PickerFieldUI.js +306 -0
- package/internals/components/PickerProvider.d.ts +25 -4
- package/internals/components/PickerProvider.js +11 -6
- package/internals/hooks/useDesktopPicker/useDesktopPicker.d.ts +1 -1
- package/internals/hooks/useDesktopPicker/useDesktopPicker.js +21 -94
- package/internals/hooks/useDesktopPicker/useDesktopPicker.types.d.ts +8 -31
- package/internals/hooks/useField/index.d.ts +3 -1
- package/internals/hooks/useField/index.js +3 -2
- package/internals/hooks/useField/useField.d.ts +1 -10
- package/internals/hooks/useField/useField.js +16 -19
- package/internals/hooks/useField/useField.types.d.ts +11 -4
- package/internals/hooks/useField/useFieldInternalPropsWithDefaults.d.ts +15 -0
- package/internals/hooks/useField/useFieldInternalPropsWithDefaults.js +46 -0
- package/internals/hooks/useField/useFieldV6TextField.js +3 -0
- package/internals/hooks/useField/useFieldV7TextField.js +6 -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 -49
- package/internals/hooks/useMobilePicker/useMobilePicker.types.d.ts +6 -14
- package/internals/hooks/useNullablePickerContext.d.ts +5 -0
- package/internals/hooks/useNullablePickerContext.js +10 -0
- package/internals/hooks/usePicker/usePicker.d.ts +1 -2
- package/internals/hooks/usePicker/usePicker.js +0 -3
- package/internals/hooks/usePicker/usePicker.types.d.ts +2 -3
- package/internals/hooks/usePicker/usePickerProvider.d.ts +8 -2
- package/internals/hooks/usePicker/usePickerProvider.js +22 -2
- package/internals/hooks/usePicker/usePickerValue.js +5 -11
- package/internals/hooks/usePicker/usePickerValue.types.d.ts +5 -2
- package/internals/hooks/useUtils.d.ts +4 -3
- package/internals/index.d.ts +6 -3
- package/internals/index.js +1 -1
- package/internals/models/fields.d.ts +3 -16
- package/internals/models/manager.d.ts +3 -0
- package/internals/models/props/basePickerProps.d.ts +0 -12
- package/locales/utils/getPickersLocalization.d.ts +0 -7
- package/locales/utils/getPickersLocalization.js +0 -13
- package/managers/index.d.ts +3 -3
- package/managers/useDateManager.d.ts +1 -1
- package/managers/useDateManager.js +9 -1
- package/managers/useDateTimeManager.d.ts +1 -1
- package/managers/useDateTimeManager.js +9 -1
- package/managers/useTimeManager.d.ts +1 -1
- package/managers/useTimeManager.js +9 -1
- package/models/fields.d.ts +4 -4
- package/models/manager.d.ts +12 -3
- package/modern/DateCalendar/DayCalendar.js +2 -0
- package/modern/DateField/DateField.js +26 -31
- package/modern/DateField/useDateField.js +2 -1
- package/modern/DateTimeField/DateTimeField.js +26 -31
- package/modern/DateTimeField/useDateTimeField.js +2 -1
- package/modern/DesktopDatePicker/DesktopDatePicker.js +0 -11
- package/modern/DesktopDateTimePicker/DesktopDateTimePicker.js +1 -12
- package/modern/DesktopTimePicker/DesktopTimePicker.js +1 -12
- package/modern/MobileDatePicker/MobileDatePicker.js +0 -9
- package/modern/MobileDateTimePicker/MobileDateTimePicker.js +0 -9
- package/modern/MobileTimePicker/MobileTimePicker.js +0 -9
- package/modern/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +2 -0
- package/modern/PickersCalendarHeader/PickersCalendarHeader.js +2 -0
- package/modern/TimeClock/ClockPointer.js +2 -0
- package/modern/TimeField/TimeField.js +25 -30
- package/modern/TimeField/useTimeField.js +2 -1
- package/modern/hooks/useParsedFormat.js +10 -12
- package/modern/hooks/usePickerContext.js +2 -1
- package/modern/hooks/useSplitFieldProps.js +8 -3
- package/modern/index.js +1 -1
- package/modern/internals/components/PickerFieldUI.js +306 -0
- package/modern/internals/components/PickerProvider.js +11 -6
- package/modern/internals/hooks/useDesktopPicker/useDesktopPicker.js +21 -94
- package/modern/internals/hooks/useField/index.js +3 -2
- package/modern/internals/hooks/useField/useField.js +16 -19
- package/modern/internals/hooks/useField/useFieldInternalPropsWithDefaults.js +46 -0
- package/modern/internals/hooks/useField/useFieldV6TextField.js +3 -0
- package/modern/internals/hooks/useField/useFieldV7TextField.js +6 -3
- package/modern/internals/hooks/useMobilePicker/useMobilePicker.js +20 -49
- package/modern/internals/hooks/useNullablePickerContext.js +10 -0
- package/modern/internals/hooks/usePicker/usePicker.js +0 -3
- package/modern/internals/hooks/usePicker/usePickerProvider.js +22 -2
- package/modern/internals/hooks/usePicker/usePickerValue.js +5 -11
- package/modern/internals/index.js +1 -1
- package/modern/locales/utils/getPickersLocalization.js +0 -13
- package/modern/managers/useDateManager.js +9 -1
- package/modern/managers/useDateTimeManager.js +9 -1
- package/modern/managers/useTimeManager.js +9 -1
- package/node/DateCalendar/DayCalendar.js +1 -0
- package/node/DateField/DateField.js +26 -31
- package/node/DateField/useDateField.js +2 -1
- package/node/DateTimeField/DateTimeField.js +26 -31
- package/node/DateTimeField/useDateTimeField.js +2 -1
- package/node/DesktopDatePicker/DesktopDatePicker.js +0 -11
- package/node/DesktopDateTimePicker/DesktopDateTimePicker.js +1 -12
- package/node/DesktopTimePicker/DesktopTimePicker.js +1 -12
- package/node/MobileDatePicker/MobileDatePicker.js +0 -9
- package/node/MobileDateTimePicker/MobileDateTimePicker.js +0 -9
- package/node/MobileTimePicker/MobileTimePicker.js +0 -9
- package/node/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +1 -0
- package/node/PickersCalendarHeader/PickersCalendarHeader.js +2 -0
- package/node/TimeClock/ClockPointer.js +1 -0
- package/node/TimeField/TimeField.js +25 -30
- package/node/TimeField/useTimeField.js +2 -1
- package/node/hooks/useParsedFormat.js +10 -12
- package/node/hooks/usePickerContext.js +4 -3
- package/node/hooks/useSplitFieldProps.js +7 -2
- package/node/index.js +1 -1
- package/node/internals/components/PickerFieldUI.js +318 -0
- package/node/internals/components/PickerProvider.js +13 -8
- package/node/internals/hooks/useDesktopPicker/useDesktopPicker.js +23 -96
- package/node/internals/hooks/useField/index.js +3 -2
- package/node/internals/hooks/useField/useField.js +17 -21
- package/node/internals/hooks/useField/useFieldInternalPropsWithDefaults.js +55 -0
- package/node/internals/hooks/useField/useFieldV6TextField.js +3 -0
- package/node/internals/hooks/useField/useFieldV7TextField.js +6 -3
- package/node/internals/hooks/useMobilePicker/useMobilePicker.js +20 -49
- package/node/internals/hooks/useNullablePickerContext.js +16 -0
- package/node/internals/hooks/usePicker/usePicker.js +0 -3
- package/node/internals/hooks/usePicker/usePickerProvider.js +22 -2
- package/node/internals/hooks/usePicker/usePickerValue.js +5 -11
- package/node/internals/index.js +21 -3
- package/node/locales/utils/getPickersLocalization.js +2 -16
- package/node/managers/useDateManager.js +9 -1
- package/node/managers/useDateTimeManager.js +9 -1
- package/node/managers/useTimeManager.js +9 -1
- package/package.json +2 -2
- package/internals/utils/convertFieldResponseIntoMuiTextFieldProps.d.ts +0 -3
- package/internals/utils/convertFieldResponseIntoMuiTextFieldProps.js +0 -44
- package/modern/internals/utils/convertFieldResponseIntoMuiTextFieldProps.js +0 -44
- package/node/internals/utils/convertFieldResponseIntoMuiTextFieldProps.js +0 -52
|
@@ -12,32 +12,30 @@ var _useUtils = require("../internals/hooks/useUtils");
|
|
|
12
12
|
var _buildSectionsFromFormat = require("../internals/hooks/useField/buildSectionsFromFormat");
|
|
13
13
|
var _useField = require("../internals/hooks/useField/useField.utils");
|
|
14
14
|
var _usePickerTranslations = require("./usePickerTranslations");
|
|
15
|
+
var _useNullablePickerContext = require("../internals/hooks/useNullablePickerContext");
|
|
15
16
|
/**
|
|
16
17
|
* Returns the parsed format to be rendered in the field when there is no value or in other parts of the Picker.
|
|
17
18
|
* This format is localized (for example `AAAA` for the year with the French locale) and cannot be parsed by your date library.
|
|
18
19
|
* @param {object} The parameters needed to build the placeholder.
|
|
19
|
-
* @param {string} params.format Format
|
|
20
|
-
* @param {'dense' | 'spacious'} params.formatDensity Density of the format (setting `formatDensity` to `"spacious"` will add a space before and after each `/`, `-` and `.` character).
|
|
21
|
-
* @param {boolean} params.shouldRespectLeadingZeros If `true`, the format will respect the leading zeroes, if `false`, the format will always add leading zeroes.
|
|
20
|
+
* @param {string} params.format Format to parse.
|
|
22
21
|
* @returns
|
|
23
22
|
*/
|
|
24
|
-
const useParsedFormat = parameters => {
|
|
25
|
-
const
|
|
26
|
-
format,
|
|
27
|
-
formatDensity = 'dense',
|
|
28
|
-
shouldRespectLeadingZeros = false
|
|
29
|
-
} = parameters;
|
|
23
|
+
const useParsedFormat = (parameters = {}) => {
|
|
24
|
+
const pickerContext = (0, _useNullablePickerContext.useNullablePickerContext)();
|
|
30
25
|
const utils = (0, _useUtils.useUtils)();
|
|
31
26
|
const isRtl = (0, _RtlProvider.useRtl)();
|
|
32
27
|
const translations = (0, _usePickerTranslations.usePickerTranslations)();
|
|
33
28
|
const localizedDigits = React.useMemo(() => (0, _useField.getLocalizedDigits)(utils), [utils]);
|
|
29
|
+
const {
|
|
30
|
+
format = pickerContext?.fieldFormat ?? utils.formats.fullDate
|
|
31
|
+
} = parameters;
|
|
34
32
|
return React.useMemo(() => {
|
|
35
33
|
const sections = (0, _buildSectionsFromFormat.buildSectionsFromFormat)({
|
|
36
34
|
utils,
|
|
37
35
|
format,
|
|
38
|
-
formatDensity,
|
|
36
|
+
formatDensity: 'dense',
|
|
39
37
|
isRtl,
|
|
40
|
-
shouldRespectLeadingZeros,
|
|
38
|
+
shouldRespectLeadingZeros: true,
|
|
41
39
|
localeText: translations,
|
|
42
40
|
localizedDigits,
|
|
43
41
|
date: null,
|
|
@@ -45,6 +43,6 @@ const useParsedFormat = parameters => {
|
|
|
45
43
|
enableAccessibleFieldDOMStructure: false
|
|
46
44
|
});
|
|
47
45
|
return sections.map(section => `${section.startSeparator}${section.placeholder}${section.endSeparator}`).join('');
|
|
48
|
-
}, [utils, isRtl, translations, localizedDigits, format
|
|
46
|
+
}, [utils, isRtl, translations, localizedDigits, format]);
|
|
49
47
|
};
|
|
50
48
|
exports.useParsedFormat = useParsedFormat;
|
|
@@ -5,14 +5,15 @@ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWild
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.usePickerContext = void 0;
|
|
8
|
+
exports.usePickerContext = exports.PickerContext = void 0;
|
|
9
9
|
var React = _interopRequireWildcard(require("react"));
|
|
10
|
-
|
|
10
|
+
const PickerContext = exports.PickerContext = /*#__PURE__*/React.createContext(null);
|
|
11
|
+
|
|
11
12
|
/**
|
|
12
13
|
* Returns the context passed by the picker that wraps the current component.
|
|
13
14
|
*/
|
|
14
15
|
const usePickerContext = () => {
|
|
15
|
-
const value = React.useContext(
|
|
16
|
+
const value = React.useContext(PickerContext);
|
|
16
17
|
if (value == null) {
|
|
17
18
|
throw new Error('MUI X: The `usePickerContext` hook can only be called inside the context of a picker component');
|
|
18
19
|
}
|
|
@@ -10,13 +10,13 @@ exports.useSplitFieldProps = void 0;
|
|
|
10
10
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
11
11
|
var React = _interopRequireWildcard(require("react"));
|
|
12
12
|
var _extractValidationProps = require("../validation/extractValidationProps");
|
|
13
|
-
const SHARED_FIELD_INTERNAL_PROP_NAMES = ['value', 'defaultValue', 'referenceDate', 'format', 'formatDensity', 'onChange', 'timezone', 'onError', 'shouldRespectLeadingZeros', 'selectedSections', 'onSelectedSectionsChange', 'unstableFieldRef', 'enableAccessibleFieldDOMStructure', 'disabled', 'readOnly', 'dateSeparator'];
|
|
13
|
+
const SHARED_FIELD_INTERNAL_PROP_NAMES = ['value', 'defaultValue', 'referenceDate', 'format', 'formatDensity', 'onChange', 'timezone', 'onError', 'shouldRespectLeadingZeros', 'selectedSections', 'onSelectedSectionsChange', 'unstableFieldRef', 'unstableStartFieldRef', 'unstableEndFieldRef', 'enableAccessibleFieldDOMStructure', 'disabled', 'readOnly', 'dateSeparator', 'autoFocus'];
|
|
14
14
|
/**
|
|
15
15
|
* Split the props received by the field component into:
|
|
16
16
|
* - `internalProps` which are used by the various hooks called by the field component.
|
|
17
17
|
* - `forwardedProps` which are passed to the underlying component.
|
|
18
18
|
* Note that some forwarded props might be used by the hooks as well.
|
|
19
|
-
* For instance, hooks like `useDateField` need props like `
|
|
19
|
+
* For instance, hooks like `useDateField` need props like `onKeyDown` to merge the default event handler and the one provided by the application.
|
|
20
20
|
* @template TProps, TValueType
|
|
21
21
|
* @param {TProps} props The props received by the field component.
|
|
22
22
|
* @param {TValueType} valueType The type of the field value ('date', 'time', or 'date-time').
|
|
@@ -48,4 +48,9 @@ const useSplitFieldProps = (props, valueType) => {
|
|
|
48
48
|
};
|
|
49
49
|
}, [props, valueType]);
|
|
50
50
|
};
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Extract the internal props from the props received by the field component.
|
|
54
|
+
* This makes sure that the internal props not defined in the props are not present in the result.
|
|
55
|
+
*/
|
|
51
56
|
exports.useSplitFieldProps = useSplitFieldProps;
|
package/node/index.js
CHANGED
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.PickerFieldUI = PickerFieldUI;
|
|
9
|
+
exports.PickerFieldUIContextProvider = PickerFieldUIContextProvider;
|
|
10
|
+
exports.cleanFieldResponse = void 0;
|
|
11
|
+
exports.useFieldTextFieldProps = useFieldTextFieldProps;
|
|
12
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
13
|
+
var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
|
|
14
|
+
var React = _interopRequireWildcard(require("react"));
|
|
15
|
+
var _useEventCallback = _interopRequireDefault(require("@mui/utils/useEventCallback"));
|
|
16
|
+
var _resolveComponentProps = _interopRequireDefault(require("@mui/utils/resolveComponentProps"));
|
|
17
|
+
var _TextField = _interopRequireDefault(require("@mui/material/TextField"));
|
|
18
|
+
var _IconButton = _interopRequireDefault(require("@mui/material/IconButton"));
|
|
19
|
+
var _InputAdornment = _interopRequireDefault(require("@mui/material/InputAdornment"));
|
|
20
|
+
var _useSlotProps5 = _interopRequireDefault(require("@mui/utils/useSlotProps"));
|
|
21
|
+
var _useFieldOwnerState = require("../hooks/useFieldOwnerState");
|
|
22
|
+
var _hooks = require("../../hooks");
|
|
23
|
+
var _icons = require("../../icons");
|
|
24
|
+
var _useNullablePickerContext = require("../hooks/useNullablePickerContext");
|
|
25
|
+
var _PickersTextField = require("../../PickersTextField");
|
|
26
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
27
|
+
const _excluded = ["enableAccessibleFieldDOMStructure"],
|
|
28
|
+
_excluded2 = ["InputProps", "readOnly", "onClear", "clearable", "clearButtonPosition", "openPickerButtonPosition", "openPickerAriaLabel"],
|
|
29
|
+
_excluded3 = ["onPaste", "onKeyDown", "inputMode", "readOnly", "InputProps", "inputProps", "inputRef", "onClear", "clearable", "clearButtonPosition", "openPickerButtonPosition", "openPickerAriaLabel"],
|
|
30
|
+
_excluded4 = ["ownerState"],
|
|
31
|
+
_excluded5 = ["ownerState"],
|
|
32
|
+
_excluded6 = ["ownerState"],
|
|
33
|
+
_excluded7 = ["ownerState"],
|
|
34
|
+
_excluded8 = ["InputProps", "inputProps"];
|
|
35
|
+
const cleanFieldResponse = _ref => {
|
|
36
|
+
let {
|
|
37
|
+
enableAccessibleFieldDOMStructure
|
|
38
|
+
} = _ref,
|
|
39
|
+
fieldResponse = (0, _objectWithoutPropertiesLoose2.default)(_ref, _excluded);
|
|
40
|
+
if (enableAccessibleFieldDOMStructure) {
|
|
41
|
+
const {
|
|
42
|
+
InputProps,
|
|
43
|
+
readOnly,
|
|
44
|
+
onClear,
|
|
45
|
+
clearable,
|
|
46
|
+
clearButtonPosition,
|
|
47
|
+
openPickerButtonPosition,
|
|
48
|
+
openPickerAriaLabel
|
|
49
|
+
} = fieldResponse,
|
|
50
|
+
other = (0, _objectWithoutPropertiesLoose2.default)(fieldResponse, _excluded2);
|
|
51
|
+
return {
|
|
52
|
+
clearable,
|
|
53
|
+
onClear,
|
|
54
|
+
clearButtonPosition,
|
|
55
|
+
openPickerButtonPosition,
|
|
56
|
+
openPickerAriaLabel,
|
|
57
|
+
textFieldProps: (0, _extends2.default)({}, other, {
|
|
58
|
+
InputProps: (0, _extends2.default)({}, InputProps ?? {}, {
|
|
59
|
+
readOnly
|
|
60
|
+
})
|
|
61
|
+
})
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
const {
|
|
65
|
+
onPaste,
|
|
66
|
+
onKeyDown,
|
|
67
|
+
inputMode,
|
|
68
|
+
readOnly,
|
|
69
|
+
InputProps,
|
|
70
|
+
inputProps,
|
|
71
|
+
inputRef,
|
|
72
|
+
onClear,
|
|
73
|
+
clearable,
|
|
74
|
+
clearButtonPosition,
|
|
75
|
+
openPickerButtonPosition,
|
|
76
|
+
openPickerAriaLabel
|
|
77
|
+
} = fieldResponse,
|
|
78
|
+
other = (0, _objectWithoutPropertiesLoose2.default)(fieldResponse, _excluded3);
|
|
79
|
+
return {
|
|
80
|
+
clearable,
|
|
81
|
+
onClear,
|
|
82
|
+
clearButtonPosition,
|
|
83
|
+
openPickerButtonPosition,
|
|
84
|
+
openPickerAriaLabel,
|
|
85
|
+
textFieldProps: (0, _extends2.default)({}, other, {
|
|
86
|
+
InputProps: (0, _extends2.default)({}, InputProps ?? {}, {
|
|
87
|
+
readOnly
|
|
88
|
+
}),
|
|
89
|
+
inputProps: (0, _extends2.default)({}, inputProps ?? {}, {
|
|
90
|
+
inputMode,
|
|
91
|
+
onPaste,
|
|
92
|
+
onKeyDown,
|
|
93
|
+
ref: inputRef
|
|
94
|
+
})
|
|
95
|
+
})
|
|
96
|
+
};
|
|
97
|
+
};
|
|
98
|
+
exports.cleanFieldResponse = cleanFieldResponse;
|
|
99
|
+
const PickerFieldUIContext = /*#__PURE__*/React.createContext({
|
|
100
|
+
slots: {},
|
|
101
|
+
slotProps: {}
|
|
102
|
+
});
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Adds the button to open the picker and the button to clear the value of the field.
|
|
106
|
+
* @ignore - internal component.
|
|
107
|
+
*/
|
|
108
|
+
function PickerFieldUI(props) {
|
|
109
|
+
const {
|
|
110
|
+
slots,
|
|
111
|
+
slotProps,
|
|
112
|
+
fieldResponse,
|
|
113
|
+
defaultOpenPickerIcon
|
|
114
|
+
} = props;
|
|
115
|
+
const translations = (0, _hooks.usePickerTranslations)();
|
|
116
|
+
const pickerContext = (0, _useNullablePickerContext.useNullablePickerContext)();
|
|
117
|
+
const pickerFieldUIContext = React.useContext(PickerFieldUIContext);
|
|
118
|
+
const {
|
|
119
|
+
textFieldProps,
|
|
120
|
+
onClear,
|
|
121
|
+
clearable,
|
|
122
|
+
openPickerAriaLabel,
|
|
123
|
+
clearButtonPosition: clearButtonPositionProp = 'end',
|
|
124
|
+
openPickerButtonPosition: openPickerButtonPositionProp = 'end'
|
|
125
|
+
} = cleanFieldResponse(fieldResponse);
|
|
126
|
+
const ownerState = (0, _useFieldOwnerState.useFieldOwnerState)(textFieldProps);
|
|
127
|
+
const handleClickOpeningButton = (0, _useEventCallback.default)(event => {
|
|
128
|
+
event.preventDefault();
|
|
129
|
+
pickerContext?.setOpen(prev => !prev);
|
|
130
|
+
});
|
|
131
|
+
const triggerStatus = pickerContext ? pickerContext.triggerStatus : 'hidden';
|
|
132
|
+
const clearButtonPosition = clearable ? clearButtonPositionProp : null;
|
|
133
|
+
const openPickerButtonPosition = triggerStatus !== 'hidden' ? openPickerButtonPositionProp : null;
|
|
134
|
+
const TextField = slots?.textField ?? pickerFieldUIContext.slots.textField ?? (fieldResponse.enableAccessibleFieldDOMStructure === false ? _TextField.default : _PickersTextField.PickersTextField);
|
|
135
|
+
const InputAdornment = slots?.inputAdornment ?? pickerFieldUIContext.slots.inputAdornment ?? _InputAdornment.default;
|
|
136
|
+
const _useSlotProps = (0, _useSlotProps5.default)({
|
|
137
|
+
elementType: InputAdornment,
|
|
138
|
+
externalSlotProps: mergeSlotProps(pickerFieldUIContext.slotProps.inputAdornment, slotProps?.inputAdornment),
|
|
139
|
+
additionalProps: {
|
|
140
|
+
position: 'start'
|
|
141
|
+
},
|
|
142
|
+
ownerState: (0, _extends2.default)({}, ownerState, {
|
|
143
|
+
position: 'start'
|
|
144
|
+
})
|
|
145
|
+
}),
|
|
146
|
+
startInputAdornmentProps = (0, _objectWithoutPropertiesLoose2.default)(_useSlotProps, _excluded4);
|
|
147
|
+
const _useSlotProps2 = (0, _useSlotProps5.default)({
|
|
148
|
+
elementType: InputAdornment,
|
|
149
|
+
externalSlotProps: slotProps?.inputAdornment,
|
|
150
|
+
additionalProps: {
|
|
151
|
+
position: 'end'
|
|
152
|
+
},
|
|
153
|
+
ownerState: (0, _extends2.default)({}, ownerState, {
|
|
154
|
+
position: 'end'
|
|
155
|
+
})
|
|
156
|
+
}),
|
|
157
|
+
endInputAdornmentProps = (0, _objectWithoutPropertiesLoose2.default)(_useSlotProps2, _excluded5);
|
|
158
|
+
const OpenPickerButton = pickerFieldUIContext.slots.openPickerButton ?? _IconButton.default;
|
|
159
|
+
// We don't want to forward the `ownerState` to the `<IconButton />` component, see mui/material-ui#34056
|
|
160
|
+
const _useSlotProps3 = (0, _useSlotProps5.default)({
|
|
161
|
+
elementType: OpenPickerButton,
|
|
162
|
+
externalSlotProps: pickerFieldUIContext.slotProps.openPickerButton,
|
|
163
|
+
additionalProps: {
|
|
164
|
+
disabled: triggerStatus === 'disabled',
|
|
165
|
+
onClick: handleClickOpeningButton,
|
|
166
|
+
'aria-label': openPickerAriaLabel,
|
|
167
|
+
edge: clearButtonPosition === 'start' && openPickerButtonPosition === 'start' ? undefined : openPickerButtonPosition
|
|
168
|
+
},
|
|
169
|
+
ownerState
|
|
170
|
+
}),
|
|
171
|
+
openPickerButtonProps = (0, _objectWithoutPropertiesLoose2.default)(_useSlotProps3, _excluded6);
|
|
172
|
+
const OpenPickerIcon = pickerFieldUIContext.slots.openPickerIcon ?? defaultOpenPickerIcon;
|
|
173
|
+
const openPickerIconProps = (0, _useSlotProps5.default)({
|
|
174
|
+
elementType: OpenPickerIcon,
|
|
175
|
+
externalSlotProps: pickerFieldUIContext.slotProps.openPickerIcon,
|
|
176
|
+
ownerState
|
|
177
|
+
});
|
|
178
|
+
const ClearButton = slots?.clearButton ?? pickerFieldUIContext.slots.clearButton ?? _IconButton.default;
|
|
179
|
+
// We don't want to forward the `ownerState` to the `<IconButton />` component, see mui/material-ui#34056
|
|
180
|
+
const _useSlotProps4 = (0, _useSlotProps5.default)({
|
|
181
|
+
elementType: ClearButton,
|
|
182
|
+
externalSlotProps: mergeSlotProps(pickerFieldUIContext.slotProps.clearButton, slotProps?.clearButton),
|
|
183
|
+
className: 'clearButton',
|
|
184
|
+
additionalProps: {
|
|
185
|
+
title: translations.fieldClearLabel,
|
|
186
|
+
tabIndex: -1,
|
|
187
|
+
onClick: onClear,
|
|
188
|
+
disabled: fieldResponse.disabled || fieldResponse.readOnly,
|
|
189
|
+
edge: clearButtonPosition === 'end' && openPickerButtonPosition === 'end' ? undefined : clearButtonPosition
|
|
190
|
+
},
|
|
191
|
+
ownerState
|
|
192
|
+
}),
|
|
193
|
+
clearButtonProps = (0, _objectWithoutPropertiesLoose2.default)(_useSlotProps4, _excluded7);
|
|
194
|
+
const ClearIcon = slots?.clearIcon ?? pickerFieldUIContext.slots.clearIcon ?? _icons.ClearIcon;
|
|
195
|
+
const clearIconProps = (0, _useSlotProps5.default)({
|
|
196
|
+
elementType: ClearIcon,
|
|
197
|
+
externalSlotProps: mergeSlotProps(pickerFieldUIContext.slotProps.clearIcon, slotProps?.clearIcon),
|
|
198
|
+
additionalProps: {
|
|
199
|
+
fontSize: 'small'
|
|
200
|
+
},
|
|
201
|
+
ownerState
|
|
202
|
+
});
|
|
203
|
+
if (!textFieldProps.InputProps) {
|
|
204
|
+
textFieldProps.InputProps = {};
|
|
205
|
+
}
|
|
206
|
+
if (pickerContext) {
|
|
207
|
+
textFieldProps.InputProps.ref = pickerContext.triggerRef;
|
|
208
|
+
}
|
|
209
|
+
if (!textFieldProps.InputProps?.startAdornment && (clearButtonPosition === 'start' || openPickerButtonPosition === 'start')) {
|
|
210
|
+
textFieldProps.InputProps.startAdornment = /*#__PURE__*/(0, _jsxRuntime.jsxs)(InputAdornment, (0, _extends2.default)({}, startInputAdornmentProps, {
|
|
211
|
+
children: [openPickerButtonPosition === 'start' && /*#__PURE__*/(0, _jsxRuntime.jsx)(OpenPickerButton, (0, _extends2.default)({}, openPickerButtonProps, {
|
|
212
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(OpenPickerIcon, (0, _extends2.default)({}, openPickerIconProps))
|
|
213
|
+
})), clearButtonPosition === 'start' && /*#__PURE__*/(0, _jsxRuntime.jsx)(ClearButton, (0, _extends2.default)({}, clearButtonProps, {
|
|
214
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(ClearIcon, (0, _extends2.default)({}, clearIconProps))
|
|
215
|
+
}))]
|
|
216
|
+
}));
|
|
217
|
+
}
|
|
218
|
+
if (!textFieldProps.InputProps?.endAdornment && (clearButtonPosition === 'end' || openPickerButtonPosition === 'end')) {
|
|
219
|
+
textFieldProps.InputProps.endAdornment = /*#__PURE__*/(0, _jsxRuntime.jsxs)(InputAdornment, (0, _extends2.default)({}, endInputAdornmentProps, {
|
|
220
|
+
children: [clearButtonPosition === 'end' && /*#__PURE__*/(0, _jsxRuntime.jsx)(ClearButton, (0, _extends2.default)({}, clearButtonProps, {
|
|
221
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(ClearIcon, (0, _extends2.default)({}, clearIconProps))
|
|
222
|
+
})), openPickerButtonPosition === 'end' && /*#__PURE__*/(0, _jsxRuntime.jsx)(OpenPickerButton, (0, _extends2.default)({}, openPickerButtonProps, {
|
|
223
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(OpenPickerIcon, (0, _extends2.default)({}, openPickerIconProps))
|
|
224
|
+
}))]
|
|
225
|
+
}));
|
|
226
|
+
}
|
|
227
|
+
if (clearButtonPosition != null) {
|
|
228
|
+
textFieldProps.sx = [{
|
|
229
|
+
'& .clearButton': {
|
|
230
|
+
opacity: 1
|
|
231
|
+
},
|
|
232
|
+
'@media (pointer: fine)': {
|
|
233
|
+
'& .clearButton': {
|
|
234
|
+
opacity: 0
|
|
235
|
+
},
|
|
236
|
+
'&:hover, &:focus-within': {
|
|
237
|
+
'.clearButton': {
|
|
238
|
+
opacity: 1
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
}, ...(Array.isArray(textFieldProps.sx) ? textFieldProps.sx : [textFieldProps.sx])];
|
|
243
|
+
}
|
|
244
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(TextField, (0, _extends2.default)({}, textFieldProps));
|
|
245
|
+
}
|
|
246
|
+
function mergeSlotProps(slotPropsA, slotPropsB) {
|
|
247
|
+
if (!slotPropsA) {
|
|
248
|
+
return slotPropsB;
|
|
249
|
+
}
|
|
250
|
+
if (!slotPropsB) {
|
|
251
|
+
return slotPropsA;
|
|
252
|
+
}
|
|
253
|
+
return ownerState => {
|
|
254
|
+
return (0, _extends2.default)({}, (0, _resolveComponentProps.default)(slotPropsB, ownerState), (0, _resolveComponentProps.default)(slotPropsA, ownerState));
|
|
255
|
+
};
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
/**
|
|
259
|
+
* The `textField` slot props cannot be handled inside `PickerFieldUI` because it would be a breaking change to not pass the enriched props to `useField`.
|
|
260
|
+
* Once the non-accessible DOM structure will be removed, we will be able to remove the `textField` slot and clean this logic.
|
|
261
|
+
*/
|
|
262
|
+
function useFieldTextFieldProps(parameters) {
|
|
263
|
+
const {
|
|
264
|
+
ref,
|
|
265
|
+
externalForwardedProps,
|
|
266
|
+
slotProps
|
|
267
|
+
} = parameters;
|
|
268
|
+
const pickerFieldUIContext = React.useContext(PickerFieldUIContext);
|
|
269
|
+
const ownerState = (0, _useFieldOwnerState.useFieldOwnerState)(externalForwardedProps);
|
|
270
|
+
const {
|
|
271
|
+
InputProps,
|
|
272
|
+
inputProps
|
|
273
|
+
} = externalForwardedProps,
|
|
274
|
+
otherExternalForwardedProps = (0, _objectWithoutPropertiesLoose2.default)(externalForwardedProps, _excluded8);
|
|
275
|
+
const textFieldProps = (0, _useSlotProps5.default)({
|
|
276
|
+
elementType: _PickersTextField.PickersTextField,
|
|
277
|
+
externalSlotProps: mergeSlotProps(pickerFieldUIContext.slotProps.textField, slotProps?.textField),
|
|
278
|
+
externalForwardedProps: otherExternalForwardedProps,
|
|
279
|
+
additionalProps: {
|
|
280
|
+
ref
|
|
281
|
+
},
|
|
282
|
+
ownerState
|
|
283
|
+
});
|
|
284
|
+
|
|
285
|
+
// TODO: Remove when mui/material-ui#35088 will be merged
|
|
286
|
+
textFieldProps.inputProps = (0, _extends2.default)({}, inputProps, textFieldProps.inputProps);
|
|
287
|
+
textFieldProps.InputProps = (0, _extends2.default)({}, InputProps, textFieldProps.InputProps);
|
|
288
|
+
return textFieldProps;
|
|
289
|
+
}
|
|
290
|
+
function PickerFieldUIContextProvider(props) {
|
|
291
|
+
const {
|
|
292
|
+
slots = {},
|
|
293
|
+
slotProps = {},
|
|
294
|
+
children
|
|
295
|
+
} = props;
|
|
296
|
+
const contextValue = React.useMemo(() => ({
|
|
297
|
+
slots: {
|
|
298
|
+
openPickerButton: slots.openPickerButton,
|
|
299
|
+
openPickerIcon: slots.openPickerIcon,
|
|
300
|
+
textField: slots.textField,
|
|
301
|
+
inputAdornment: slots.inputAdornment,
|
|
302
|
+
clearIcon: slots.clearIcon,
|
|
303
|
+
clearButton: slots.clearButton
|
|
304
|
+
},
|
|
305
|
+
slotProps: {
|
|
306
|
+
openPickerButton: slotProps.openPickerButton,
|
|
307
|
+
openPickerIcon: slotProps.openPickerIcon,
|
|
308
|
+
textField: slotProps.textField,
|
|
309
|
+
inputAdornment: slotProps.inputAdornment,
|
|
310
|
+
clearIcon: slotProps.clearIcon,
|
|
311
|
+
clearButton: slotProps.clearButton
|
|
312
|
+
}
|
|
313
|
+
}), [slots.openPickerButton, slots.openPickerIcon, slots.textField, slots.inputAdornment, slots.clearIcon, slots.clearButton, slotProps.openPickerButton, slotProps.openPickerIcon, slotProps.textField, slotProps.inputAdornment, slotProps.clearIcon, slotProps.clearButton]);
|
|
314
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(PickerFieldUIContext.Provider, {
|
|
315
|
+
value: contextValue,
|
|
316
|
+
children: children
|
|
317
|
+
});
|
|
318
|
+
}
|
|
@@ -4,13 +4,14 @@ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWild
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.PickerPrivateContext = exports.
|
|
7
|
+
exports.PickerPrivateContext = exports.PickerActionsContext = void 0;
|
|
8
8
|
exports.PickerProvider = PickerProvider;
|
|
9
9
|
var React = _interopRequireWildcard(require("react"));
|
|
10
10
|
var _LocalizationProvider = require("../../LocalizationProvider");
|
|
11
11
|
var _useIsValidValue = require("../../hooks/useIsValidValue");
|
|
12
|
+
var _useFieldInternalPropsWithDefaults = require("../hooks/useField/useFieldInternalPropsWithDefaults");
|
|
13
|
+
var _usePickerContext = require("../../hooks/usePickerContext");
|
|
12
14
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
13
|
-
const PickerContext = exports.PickerContext = /*#__PURE__*/React.createContext(null);
|
|
14
15
|
const PickerActionsContext = exports.PickerActionsContext = /*#__PURE__*/React.createContext(null);
|
|
15
16
|
const PickerPrivateContext = exports.PickerPrivateContext = /*#__PURE__*/React.createContext({
|
|
16
17
|
ownerState: {
|
|
@@ -36,21 +37,25 @@ function PickerProvider(props) {
|
|
|
36
37
|
contextValue,
|
|
37
38
|
actionsContextValue,
|
|
38
39
|
privateContextValue,
|
|
40
|
+
fieldPrivateContextValue,
|
|
39
41
|
isValidContextValue,
|
|
40
42
|
localeText,
|
|
41
43
|
children
|
|
42
44
|
} = props;
|
|
43
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsx)(PickerContext.Provider, {
|
|
45
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_usePickerContext.PickerContext.Provider, {
|
|
44
46
|
value: contextValue,
|
|
45
47
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(PickerActionsContext.Provider, {
|
|
46
48
|
value: actionsContextValue,
|
|
47
49
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(PickerPrivateContext.Provider, {
|
|
48
50
|
value: privateContextValue,
|
|
49
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(
|
|
50
|
-
value:
|
|
51
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(
|
|
52
|
-
|
|
53
|
-
children:
|
|
51
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_useFieldInternalPropsWithDefaults.PickerFieldPrivateContext.Provider, {
|
|
52
|
+
value: fieldPrivateContextValue,
|
|
53
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_useIsValidValue.IsValidValueContext.Provider, {
|
|
54
|
+
value: isValidContextValue,
|
|
55
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_LocalizationProvider.LocalizationProvider, {
|
|
56
|
+
localeText: localeText,
|
|
57
|
+
children: children
|
|
58
|
+
})
|
|
54
59
|
})
|
|
55
60
|
})
|
|
56
61
|
})
|
|
@@ -9,19 +9,16 @@ exports.useDesktopPicker = void 0;
|
|
|
9
9
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
10
10
|
var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
|
|
11
11
|
var React = _interopRequireWildcard(require("react"));
|
|
12
|
-
var
|
|
13
|
-
var _InputAdornment = _interopRequireDefault(require("@mui/material/InputAdornment"));
|
|
14
|
-
var _IconButton = _interopRequireDefault(require("@mui/material/IconButton"));
|
|
12
|
+
var _useSlotProps = _interopRequireDefault(require("@mui/utils/useSlotProps"));
|
|
15
13
|
var _useForkRef = _interopRequireDefault(require("@mui/utils/useForkRef"));
|
|
16
14
|
var _useId = _interopRequireDefault(require("@mui/utils/useId"));
|
|
17
15
|
var _PickersPopper = require("../../components/PickersPopper");
|
|
18
16
|
var _usePicker = require("../usePicker");
|
|
19
17
|
var _PickersLayout = require("../../../PickersLayout");
|
|
20
18
|
var _PickerProvider = require("../../components/PickerProvider");
|
|
19
|
+
var _PickerFieldUI = require("../../components/PickerFieldUI");
|
|
21
20
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
22
|
-
const _excluded = ["props"
|
|
23
|
-
_excluded2 = ["ownerState"],
|
|
24
|
-
_excluded3 = ["ownerState"];
|
|
21
|
+
const _excluded = ["props"];
|
|
25
22
|
/**
|
|
26
23
|
* Hook managing all the single-date desktop pickers:
|
|
27
24
|
* - DesktopDatePicker
|
|
@@ -30,8 +27,7 @@ const _excluded = ["props", "getOpenDialogAriaText"],
|
|
|
30
27
|
*/
|
|
31
28
|
const useDesktopPicker = _ref => {
|
|
32
29
|
let {
|
|
33
|
-
props
|
|
34
|
-
getOpenDialogAriaText
|
|
30
|
+
props
|
|
35
31
|
} = _ref,
|
|
36
32
|
pickerParams = (0, _objectWithoutPropertiesLoose2.default)(_ref, _excluded);
|
|
37
33
|
const {
|
|
@@ -39,31 +35,21 @@ const useDesktopPicker = _ref => {
|
|
|
39
35
|
slotProps: innerSlotProps,
|
|
40
36
|
className,
|
|
41
37
|
sx,
|
|
42
|
-
format,
|
|
43
|
-
formatDensity,
|
|
44
|
-
enableAccessibleFieldDOMStructure,
|
|
45
|
-
selectedSections,
|
|
46
|
-
onSelectedSectionsChange,
|
|
47
|
-
timezone,
|
|
48
38
|
name,
|
|
49
39
|
label,
|
|
50
40
|
inputRef,
|
|
51
41
|
readOnly,
|
|
52
|
-
disabled,
|
|
53
42
|
autoFocus,
|
|
54
43
|
localeText,
|
|
55
44
|
reduceAnimations
|
|
56
45
|
} = props;
|
|
57
|
-
const containerRef = React.useRef(null);
|
|
58
46
|
const fieldRef = React.useRef(null);
|
|
59
47
|
const labelId = (0, _useId.default)();
|
|
60
48
|
const isToolbarHidden = innerSlotProps?.toolbar?.hidden ?? false;
|
|
61
49
|
const {
|
|
62
|
-
hasUIView,
|
|
63
50
|
providerProps,
|
|
64
51
|
renderCurrentView,
|
|
65
52
|
shouldRestoreFocus,
|
|
66
|
-
fieldProps: pickerFieldProps,
|
|
67
53
|
ownerState
|
|
68
54
|
} = (0, _usePicker.usePicker)((0, _extends2.default)({}, pickerParams, {
|
|
69
55
|
props,
|
|
@@ -72,57 +58,14 @@ const useDesktopPicker = _ref => {
|
|
|
72
58
|
autoFocusView: true,
|
|
73
59
|
variant: 'desktop'
|
|
74
60
|
}));
|
|
75
|
-
const InputAdornment = slots.inputAdornment ?? _InputAdornment.default;
|
|
76
|
-
const _useSlotProps = (0, _useSlotProps3.default)({
|
|
77
|
-
elementType: InputAdornment,
|
|
78
|
-
externalSlotProps: innerSlotProps?.inputAdornment,
|
|
79
|
-
additionalProps: {
|
|
80
|
-
position: 'end'
|
|
81
|
-
},
|
|
82
|
-
ownerState
|
|
83
|
-
}),
|
|
84
|
-
inputAdornmentProps = (0, _objectWithoutPropertiesLoose2.default)(_useSlotProps, _excluded2);
|
|
85
|
-
const OpenPickerButton = slots.openPickerButton ?? _IconButton.default;
|
|
86
|
-
const _useSlotProps2 = (0, _useSlotProps3.default)({
|
|
87
|
-
elementType: OpenPickerButton,
|
|
88
|
-
externalSlotProps: innerSlotProps?.openPickerButton,
|
|
89
|
-
additionalProps: {
|
|
90
|
-
disabled: disabled || readOnly,
|
|
91
|
-
// This direct access to `providerProps` will go away in https://github.com/mui/mui-x/pull/15671
|
|
92
|
-
onClick: event => {
|
|
93
|
-
event.preventDefault();
|
|
94
|
-
providerProps.contextValue.setOpen(prevOpen => !prevOpen);
|
|
95
|
-
},
|
|
96
|
-
'aria-label': getOpenDialogAriaText(pickerFieldProps.value),
|
|
97
|
-
edge: inputAdornmentProps.position
|
|
98
|
-
},
|
|
99
|
-
ownerState
|
|
100
|
-
}),
|
|
101
|
-
openPickerButtonProps = (0, _objectWithoutPropertiesLoose2.default)(_useSlotProps2, _excluded3);
|
|
102
|
-
const OpenPickerIcon = slots.openPickerIcon;
|
|
103
|
-
const openPickerIconProps = (0, _useSlotProps3.default)({
|
|
104
|
-
elementType: OpenPickerIcon,
|
|
105
|
-
externalSlotProps: innerSlotProps?.openPickerIcon,
|
|
106
|
-
ownerState
|
|
107
|
-
});
|
|
108
61
|
const Field = slots.field;
|
|
109
|
-
const fieldProps = (0,
|
|
62
|
+
const fieldProps = (0, _useSlotProps.default)({
|
|
110
63
|
elementType: Field,
|
|
111
64
|
externalSlotProps: innerSlotProps?.field,
|
|
112
65
|
additionalProps: (0, _extends2.default)({
|
|
113
66
|
// Internal props
|
|
114
67
|
readOnly,
|
|
115
|
-
|
|
116
|
-
format,
|
|
117
|
-
formatDensity,
|
|
118
|
-
enableAccessibleFieldDOMStructure,
|
|
119
|
-
selectedSections,
|
|
120
|
-
onSelectedSectionsChange,
|
|
121
|
-
timezone,
|
|
122
|
-
autoFocus: autoFocus && !props.open
|
|
123
|
-
}, pickerFieldProps, {
|
|
124
|
-
// onChange and value
|
|
125
|
-
|
|
68
|
+
autoFocus: autoFocus && !props.open,
|
|
126
69
|
// Forwarded props
|
|
127
70
|
className,
|
|
128
71
|
sx,
|
|
@@ -136,24 +79,6 @@ const useDesktopPicker = _ref => {
|
|
|
136
79
|
}),
|
|
137
80
|
ownerState
|
|
138
81
|
});
|
|
139
|
-
|
|
140
|
-
// TODO: Move to `useSlotProps` when https://github.com/mui/material-ui/pull/35088 will be merged
|
|
141
|
-
if (hasUIView) {
|
|
142
|
-
fieldProps.InputProps = (0, _extends2.default)({}, fieldProps.InputProps, {
|
|
143
|
-
ref: containerRef
|
|
144
|
-
}, !props.disableOpenPicker && {
|
|
145
|
-
[`${inputAdornmentProps.position}Adornment`]: /*#__PURE__*/(0, _jsxRuntime.jsx)(InputAdornment, (0, _extends2.default)({}, inputAdornmentProps, {
|
|
146
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(OpenPickerButton, (0, _extends2.default)({}, openPickerButtonProps, {
|
|
147
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(OpenPickerIcon, (0, _extends2.default)({}, openPickerIconProps))
|
|
148
|
-
}))
|
|
149
|
-
}))
|
|
150
|
-
});
|
|
151
|
-
}
|
|
152
|
-
const slotsForField = (0, _extends2.default)({
|
|
153
|
-
textField: slots.textField,
|
|
154
|
-
clearIcon: slots.clearIcon,
|
|
155
|
-
clearButton: slots.clearButton
|
|
156
|
-
}, fieldProps.slots);
|
|
157
82
|
const Layout = slots.layout ?? _PickersLayout.PickersLayout;
|
|
158
83
|
let labelledById = labelId;
|
|
159
84
|
if (isToolbarHidden) {
|
|
@@ -172,25 +97,27 @@ const useDesktopPicker = _ref => {
|
|
|
172
97
|
}, innerSlotProps?.popper)
|
|
173
98
|
});
|
|
174
99
|
const handleFieldRef = (0, _useForkRef.default)(fieldRef, fieldProps.unstableFieldRef);
|
|
175
|
-
const renderPicker = () => /*#__PURE__*/(0, _jsxRuntime.
|
|
176
|
-
children:
|
|
177
|
-
slots: slotsForField,
|
|
178
|
-
slotProps: slotProps,
|
|
179
|
-
unstableFieldRef: handleFieldRef
|
|
180
|
-
})), /*#__PURE__*/(0, _jsxRuntime.jsx)(_PickersPopper.PickersPopper, {
|
|
181
|
-
role: "dialog",
|
|
182
|
-
placement: "bottom-start",
|
|
183
|
-
anchorEl: containerRef.current,
|
|
100
|
+
const renderPicker = () => /*#__PURE__*/(0, _jsxRuntime.jsx)(_PickerProvider.PickerProvider, (0, _extends2.default)({}, providerProps, {
|
|
101
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_PickerFieldUI.PickerFieldUIContextProvider, {
|
|
184
102
|
slots: slots,
|
|
185
103
|
slotProps: slotProps,
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
104
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(Field, (0, _extends2.default)({}, fieldProps, {
|
|
105
|
+
unstableFieldRef: handleFieldRef
|
|
106
|
+
})), /*#__PURE__*/(0, _jsxRuntime.jsx)(_PickersPopper.PickersPopper, {
|
|
107
|
+
role: "dialog",
|
|
108
|
+
placement: "bottom-start",
|
|
109
|
+
anchorEl: providerProps.contextValue.triggerRef.current,
|
|
189
110
|
slots: slots,
|
|
190
111
|
slotProps: slotProps,
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
112
|
+
shouldRestoreFocus: shouldRestoreFocus,
|
|
113
|
+
reduceAnimations: reduceAnimations,
|
|
114
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(Layout, (0, _extends2.default)({}, slotProps?.layout, {
|
|
115
|
+
slots: slots,
|
|
116
|
+
slotProps: slotProps,
|
|
117
|
+
children: renderCurrentView()
|
|
118
|
+
}))
|
|
119
|
+
})]
|
|
120
|
+
})
|
|
194
121
|
}));
|
|
195
122
|
return {
|
|
196
123
|
renderPicker
|