@mui/x-date-pickers 8.0.0-beta.0 → 8.0.0-beta.1
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 +77 -0
- package/DateCalendar/DayCalendar.d.ts +3 -7
- package/DateCalendar/DayCalendar.js +16 -8
- package/DateCalendar/index.d.ts +0 -1
- package/DateField/useDateField.d.ts +1 -1
- package/DateField/useDateField.js +2 -16
- package/DatePicker/DatePicker.js +1 -0
- package/DateTimeField/useDateTimeField.d.ts +1 -1
- package/DateTimeField/useDateTimeField.js +2 -16
- package/DateTimePicker/DateTimePicker.js +1 -0
- package/DesktopDatePicker/DesktopDatePicker.js +1 -0
- package/DesktopDateTimePicker/DesktopDateTimePicker.js +1 -0
- package/DesktopTimePicker/DesktopTimePicker.js +1 -0
- package/MobileDatePicker/MobileDatePicker.js +1 -0
- package/MobileDateTimePicker/MobileDateTimePicker.js +1 -0
- package/MobileTimePicker/MobileTimePicker.js +1 -0
- package/PickersDay/PickersDay.d.ts +1 -72
- package/PickersDay/PickersDay.js +30 -28
- package/PickersDay/PickersDay.types.d.ts +114 -0
- package/PickersDay/PickersDay.types.js +5 -0
- package/PickersDay/index.d.ts +1 -1
- package/PickersDay/usePickerDayOwnerState.d.ts +14 -0
- package/PickersDay/usePickerDayOwnerState.js +40 -0
- package/TimeField/useTimeField.d.ts +1 -1
- package/TimeField/useTimeField.js +2 -16
- package/TimePicker/TimePicker.js +1 -0
- package/esm/DateCalendar/DayCalendar.d.ts +3 -7
- package/esm/DateCalendar/DayCalendar.js +16 -8
- package/esm/DateCalendar/index.d.ts +0 -1
- package/esm/DateField/useDateField.d.ts +1 -1
- package/esm/DateField/useDateField.js +3 -17
- package/esm/DatePicker/DatePicker.js +1 -0
- package/esm/DateTimeField/useDateTimeField.d.ts +1 -1
- package/esm/DateTimeField/useDateTimeField.js +3 -17
- package/esm/DateTimePicker/DateTimePicker.js +1 -0
- package/esm/DesktopDatePicker/DesktopDatePicker.js +1 -0
- package/esm/DesktopDateTimePicker/DesktopDateTimePicker.js +1 -0
- package/esm/DesktopTimePicker/DesktopTimePicker.js +1 -0
- package/esm/MobileDatePicker/MobileDatePicker.js +1 -0
- package/esm/MobileDateTimePicker/MobileDateTimePicker.js +1 -0
- package/esm/MobileTimePicker/MobileTimePicker.js +1 -0
- package/esm/PickersDay/PickersDay.d.ts +1 -72
- package/esm/PickersDay/PickersDay.js +30 -28
- package/esm/PickersDay/PickersDay.types.d.ts +114 -0
- package/esm/PickersDay/PickersDay.types.js +1 -0
- package/esm/PickersDay/index.d.ts +1 -1
- package/esm/PickersDay/usePickerDayOwnerState.d.ts +14 -0
- package/esm/PickersDay/usePickerDayOwnerState.js +32 -0
- package/esm/TimeField/useTimeField.d.ts +1 -1
- package/esm/TimeField/useTimeField.js +3 -17
- package/esm/TimePicker/TimePicker.js +1 -0
- package/esm/hooks/useSplitFieldProps.d.ts +1 -1
- package/esm/index.js +1 -1
- package/esm/internals/components/PickerFieldUI.d.ts +5 -5
- package/esm/internals/hooks/useField/buildSectionsFromFormat.d.ts +2 -2
- package/esm/internals/hooks/useField/buildSectionsFromFormat.js +9 -9
- package/esm/internals/hooks/useField/index.d.ts +1 -1
- package/esm/internals/hooks/useField/useField.d.ts +2 -4
- package/esm/internals/hooks/useField/useField.js +5 -229
- package/esm/internals/hooks/useField/useField.types.d.ts +48 -68
- package/esm/internals/hooks/useField/useField.utils.d.ts +2 -5
- package/esm/internals/hooks/useField/useField.utils.js +7 -92
- package/esm/internals/hooks/useField/useFieldCharacterEditing.d.ts +19 -26
- package/esm/internals/hooks/useField/useFieldCharacterEditing.js +42 -60
- package/esm/internals/hooks/useField/useFieldRootHandleKeyDown.d.ts +16 -0
- package/esm/internals/hooks/useField/useFieldRootHandleKeyDown.js +204 -0
- package/esm/internals/hooks/useField/useFieldState.d.ts +23 -13
- package/esm/internals/hooks/useField/useFieldState.js +103 -30
- package/esm/internals/hooks/useField/useFieldV6TextField.d.ts +3 -3
- package/esm/internals/hooks/useField/useFieldV6TextField.js +202 -135
- package/esm/internals/hooks/useField/useFieldV7TextField.d.ts +3 -2
- package/esm/internals/hooks/useField/useFieldV7TextField.js +217 -153
- package/esm/internals/hooks/usePicker/usePicker.types.d.ts +1 -0
- package/esm/internals/index.d.ts +2 -1
- package/esm/internals/index.js +1 -0
- package/esm/managers/useDateManager.js +3 -3
- package/esm/managers/useDateTimeManager.js +3 -3
- package/esm/managers/useTimeManager.js +3 -3
- package/esm/models/fields.d.ts +2 -2
- package/esm/models/manager.d.ts +3 -2
- package/hooks/useSplitFieldProps.d.ts +1 -1
- package/index.js +1 -1
- package/internals/components/PickerFieldUI.d.ts +5 -5
- package/internals/hooks/useField/buildSectionsFromFormat.d.ts +2 -2
- package/internals/hooks/useField/buildSectionsFromFormat.js +9 -9
- package/internals/hooks/useField/index.d.ts +1 -1
- package/internals/hooks/useField/useField.d.ts +2 -4
- package/internals/hooks/useField/useField.js +5 -231
- package/internals/hooks/useField/useField.types.d.ts +48 -68
- package/internals/hooks/useField/useField.utils.d.ts +2 -5
- package/internals/hooks/useField/useField.utils.js +8 -94
- package/internals/hooks/useField/useFieldCharacterEditing.d.ts +19 -26
- package/internals/hooks/useField/useFieldCharacterEditing.js +41 -59
- package/internals/hooks/useField/useFieldRootHandleKeyDown.d.ts +16 -0
- package/internals/hooks/useField/useFieldRootHandleKeyDown.js +210 -0
- package/internals/hooks/useField/useFieldState.d.ts +23 -13
- package/internals/hooks/useField/useFieldState.js +102 -29
- package/internals/hooks/useField/useFieldV6TextField.d.ts +3 -3
- package/internals/hooks/useField/useFieldV6TextField.js +202 -135
- package/internals/hooks/useField/useFieldV7TextField.d.ts +3 -2
- package/internals/hooks/useField/useFieldV7TextField.js +218 -154
- package/internals/hooks/usePicker/usePicker.types.d.ts +1 -0
- package/internals/index.d.ts +2 -1
- package/internals/index.js +7 -0
- package/managers/useDateManager.js +3 -3
- package/managers/useDateTimeManager.js +3 -3
- package/managers/useTimeManager.js +3 -3
- package/models/fields.d.ts +2 -2
- package/models/manager.d.ts +3 -2
- package/modern/DateCalendar/DayCalendar.d.ts +3 -7
- package/modern/DateCalendar/DayCalendar.js +16 -8
- package/modern/DateCalendar/index.d.ts +0 -1
- package/modern/DateField/useDateField.d.ts +1 -1
- package/modern/DateField/useDateField.js +3 -17
- package/modern/DatePicker/DatePicker.js +1 -0
- package/modern/DateTimeField/useDateTimeField.d.ts +1 -1
- package/modern/DateTimeField/useDateTimeField.js +3 -17
- package/modern/DateTimePicker/DateTimePicker.js +1 -0
- package/modern/DesktopDatePicker/DesktopDatePicker.js +1 -0
- package/modern/DesktopDateTimePicker/DesktopDateTimePicker.js +1 -0
- package/modern/DesktopTimePicker/DesktopTimePicker.js +1 -0
- package/modern/MobileDatePicker/MobileDatePicker.js +1 -0
- package/modern/MobileDateTimePicker/MobileDateTimePicker.js +1 -0
- package/modern/MobileTimePicker/MobileTimePicker.js +1 -0
- package/modern/PickersDay/PickersDay.d.ts +1 -72
- package/modern/PickersDay/PickersDay.js +30 -28
- package/modern/PickersDay/PickersDay.types.d.ts +114 -0
- package/modern/PickersDay/PickersDay.types.js +1 -0
- package/modern/PickersDay/index.d.ts +1 -1
- package/modern/PickersDay/usePickerDayOwnerState.d.ts +14 -0
- package/modern/PickersDay/usePickerDayOwnerState.js +32 -0
- package/modern/TimeField/useTimeField.d.ts +1 -1
- package/modern/TimeField/useTimeField.js +3 -17
- package/modern/TimePicker/TimePicker.js +1 -0
- package/modern/hooks/useSplitFieldProps.d.ts +1 -1
- package/modern/index.js +1 -1
- package/modern/internals/components/PickerFieldUI.d.ts +5 -5
- package/modern/internals/hooks/useField/buildSectionsFromFormat.d.ts +2 -2
- package/modern/internals/hooks/useField/buildSectionsFromFormat.js +9 -9
- package/modern/internals/hooks/useField/index.d.ts +1 -1
- package/modern/internals/hooks/useField/useField.d.ts +2 -4
- package/modern/internals/hooks/useField/useField.js +5 -229
- package/modern/internals/hooks/useField/useField.types.d.ts +48 -68
- package/modern/internals/hooks/useField/useField.utils.d.ts +2 -5
- package/modern/internals/hooks/useField/useField.utils.js +7 -92
- package/modern/internals/hooks/useField/useFieldCharacterEditing.d.ts +19 -26
- package/modern/internals/hooks/useField/useFieldCharacterEditing.js +42 -60
- package/modern/internals/hooks/useField/useFieldRootHandleKeyDown.d.ts +16 -0
- package/modern/internals/hooks/useField/useFieldRootHandleKeyDown.js +204 -0
- package/modern/internals/hooks/useField/useFieldState.d.ts +23 -13
- package/modern/internals/hooks/useField/useFieldState.js +103 -30
- package/modern/internals/hooks/useField/useFieldV6TextField.d.ts +3 -3
- package/modern/internals/hooks/useField/useFieldV6TextField.js +202 -135
- package/modern/internals/hooks/useField/useFieldV7TextField.d.ts +3 -2
- package/modern/internals/hooks/useField/useFieldV7TextField.js +217 -153
- package/modern/internals/hooks/usePicker/usePicker.types.d.ts +1 -0
- package/modern/internals/index.d.ts +2 -1
- package/modern/internals/index.js +1 -0
- package/modern/managers/useDateManager.js +3 -3
- package/modern/managers/useDateTimeManager.js +3 -3
- package/modern/managers/useTimeManager.js +3 -3
- package/modern/models/fields.d.ts +2 -2
- package/modern/models/manager.d.ts +3 -2
- package/package.json +1 -1
- package/tsconfig.build.tsbuildinfo +1 -1
|
@@ -1,128 +1,147 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
3
|
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
4
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
8
|
exports.useFieldV7TextField = void 0;
|
|
9
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
9
10
|
var React = _interopRequireWildcard(require("react"));
|
|
10
11
|
var _useForkRef = _interopRequireDefault(require("@mui/utils/useForkRef"));
|
|
11
12
|
var _useEventCallback = _interopRequireDefault(require("@mui/utils/useEventCallback"));
|
|
12
13
|
var _useEnhancedEffect = _interopRequireDefault(require("@mui/utils/useEnhancedEffect"));
|
|
14
|
+
var _useTimeout = _interopRequireDefault(require("@mui/utils/useTimeout"));
|
|
13
15
|
var _useId = _interopRequireDefault(require("@mui/utils/useId"));
|
|
14
16
|
var _useField = require("./useField.utils");
|
|
15
17
|
var _utils = require("../../utils/utils");
|
|
18
|
+
var _hooks = require("../../../hooks");
|
|
16
19
|
var _usePickerTranslations = require("../../../hooks/usePickerTranslations");
|
|
17
20
|
var _useUtils = require("../useUtils");
|
|
18
|
-
|
|
21
|
+
var _useFieldCharacterEditing = require("./useFieldCharacterEditing");
|
|
22
|
+
var _useFieldRootHandleKeyDown = require("./useFieldRootHandleKeyDown");
|
|
23
|
+
var _useFieldState = require("./useFieldState");
|
|
24
|
+
var _useFieldInternalPropsWithDefaults = require("./useFieldInternalPropsWithDefaults");
|
|
25
|
+
const useFieldV7TextField = parameters => {
|
|
26
|
+
const translations = (0, _usePickerTranslations.usePickerTranslations)();
|
|
27
|
+
const utils = (0, _useUtils.useUtils)();
|
|
28
|
+
const id = (0, _useId.default)();
|
|
19
29
|
const {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
30
|
+
props,
|
|
31
|
+
manager,
|
|
32
|
+
skipContextFieldRefAssignment,
|
|
33
|
+
manager: {
|
|
34
|
+
valueType,
|
|
35
|
+
internal_fieldValueManager: fieldValueManager,
|
|
36
|
+
internal_useOpenPickerButtonAriaLabel: useOpenPickerButtonAriaLabel
|
|
37
|
+
}
|
|
38
|
+
} = parameters;
|
|
39
|
+
const {
|
|
40
|
+
internalProps,
|
|
41
|
+
forwardedProps
|
|
42
|
+
} = (0, _hooks.useSplitFieldProps)(props, valueType);
|
|
43
|
+
const internalPropsWithDefaults = (0, _useFieldInternalPropsWithDefaults.useFieldInternalPropsWithDefaults)({
|
|
44
|
+
manager,
|
|
45
|
+
internalProps,
|
|
46
|
+
skipContextFieldRefAssignment
|
|
47
|
+
});
|
|
48
|
+
const {
|
|
49
|
+
sectionListRef: sectionListRefProp,
|
|
50
|
+
onBlur,
|
|
51
|
+
onClick,
|
|
52
|
+
onFocus,
|
|
53
|
+
onInput,
|
|
54
|
+
onPaste,
|
|
55
|
+
onKeyDown,
|
|
56
|
+
onClear,
|
|
57
|
+
clearable
|
|
58
|
+
} = forwardedProps;
|
|
59
|
+
const {
|
|
60
|
+
disabled = false,
|
|
61
|
+
readOnly = false,
|
|
62
|
+
autoFocus = false,
|
|
63
|
+
focused: focusedProp,
|
|
64
|
+
unstableFieldRef
|
|
65
|
+
} = internalPropsWithDefaults;
|
|
66
|
+
const sectionListRef = React.useRef(null);
|
|
67
|
+
const handleSectionListRef = (0, _useForkRef.default)(sectionListRefProp, sectionListRef);
|
|
68
|
+
const stateResponse = (0, _useFieldState.useFieldState)({
|
|
69
|
+
manager,
|
|
70
|
+
internalPropsWithDefaults,
|
|
71
|
+
forwardedProps
|
|
72
|
+
});
|
|
73
|
+
const {
|
|
74
|
+
// States and derived states
|
|
75
|
+
areAllSectionsEmpty,
|
|
76
|
+
error,
|
|
38
77
|
parsedSelectedSections,
|
|
78
|
+
sectionOrder,
|
|
79
|
+
sectionsValueBoundaries,
|
|
39
80
|
state,
|
|
40
|
-
|
|
81
|
+
value,
|
|
82
|
+
// Methods to update the states
|
|
41
83
|
clearValue,
|
|
84
|
+
clearActiveSection,
|
|
85
|
+
setCharacterQuery,
|
|
86
|
+
setSelectedSections,
|
|
42
87
|
updateSectionValue,
|
|
43
|
-
updateValueFromValueStr
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
}
|
|
48
|
-
const
|
|
49
|
-
const handleSectionListRef = (0, _useForkRef.default)(inSectionListRef, sectionListRef);
|
|
50
|
-
const translations = (0, _usePickerTranslations.usePickerTranslations)();
|
|
51
|
-
const utils = (0, _useUtils.useUtils)();
|
|
52
|
-
const id = (0, _useId.default)();
|
|
88
|
+
updateValueFromValueStr
|
|
89
|
+
} = stateResponse;
|
|
90
|
+
const applyCharacterEditing = (0, _useFieldCharacterEditing.useFieldCharacterEditing)({
|
|
91
|
+
stateResponse
|
|
92
|
+
});
|
|
93
|
+
const openPickerAriaLabel = useOpenPickerButtonAriaLabel(value);
|
|
53
94
|
const [focused, setFocused] = React.useState(false);
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
95
|
+
function syncSelectionToDOM() {
|
|
96
|
+
if (!sectionListRef.current) {
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
const selection = document.getSelection();
|
|
100
|
+
if (!selection) {
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
if (parsedSelectedSections == null) {
|
|
104
|
+
// If the selection contains an element inside the field, we reset it.
|
|
105
|
+
if (selection.rangeCount > 0 && sectionListRef.current.getRoot().contains(selection.getRangeAt(0).startContainer)) {
|
|
106
|
+
selection.removeAllRanges();
|
|
58
107
|
}
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
return;
|
|
62
|
-
}
|
|
63
|
-
if (parsedSelectedSections == null) {
|
|
64
|
-
// If the selection contains an element inside the field, we reset it.
|
|
65
|
-
if (selection.rangeCount > 0 && sectionListRef.current.getRoot().contains(selection.getRangeAt(0).startContainer)) {
|
|
66
|
-
selection.removeAllRanges();
|
|
67
|
-
}
|
|
68
|
-
if (focused) {
|
|
69
|
-
sectionListRef.current.getRoot().blur();
|
|
70
|
-
}
|
|
71
|
-
return;
|
|
108
|
+
if (focused) {
|
|
109
|
+
sectionListRef.current.getRoot().blur();
|
|
72
110
|
}
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
73
113
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
114
|
+
// On multi input range pickers we want to update selection range only for the active input
|
|
115
|
+
if (!sectionListRef.current.getRoot().contains((0, _utils.getActiveElement)(document))) {
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
const range = new window.Range();
|
|
119
|
+
let target;
|
|
120
|
+
if (parsedSelectedSections === 'all') {
|
|
121
|
+
target = sectionListRef.current.getRoot();
|
|
122
|
+
} else {
|
|
123
|
+
const section = state.sections[parsedSelectedSections];
|
|
124
|
+
if (section.type === 'empty') {
|
|
125
|
+
target = sectionListRef.current.getSectionContainer(parsedSelectedSections);
|
|
82
126
|
} else {
|
|
83
|
-
|
|
84
|
-
if (section.type === 'empty') {
|
|
85
|
-
target = sectionListRef.current.getSectionContainer(parsedSelectedSections);
|
|
86
|
-
} else {
|
|
87
|
-
target = sectionListRef.current.getSectionContent(parsedSelectedSections);
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
range.selectNodeContents(target);
|
|
91
|
-
target.focus();
|
|
92
|
-
selection.removeAllRanges();
|
|
93
|
-
selection.addRange(range);
|
|
94
|
-
},
|
|
95
|
-
getActiveSectionIndexFromDOM: () => {
|
|
96
|
-
const activeElement = (0, _utils.getActiveElement)(document);
|
|
97
|
-
if (!activeElement || !sectionListRef.current || !sectionListRef.current.getRoot().contains(activeElement)) {
|
|
98
|
-
return null;
|
|
99
|
-
}
|
|
100
|
-
return sectionListRef.current.getSectionIndexFromDOMElement(activeElement);
|
|
101
|
-
},
|
|
102
|
-
focusField: (newSelectedSections = 0) => {
|
|
103
|
-
if (!sectionListRef.current ||
|
|
104
|
-
// if the field is already focused, we don't need to focus it again
|
|
105
|
-
interactions.getActiveSectionIndexFromDOM() != null) {
|
|
106
|
-
return;
|
|
127
|
+
target = sectionListRef.current.getSectionContent(parsedSelectedSections);
|
|
107
128
|
}
|
|
108
|
-
const newParsedSelectedSections = (0, _useField.parseSelectedSections)(newSelectedSections, state.sections);
|
|
109
|
-
setFocused(true);
|
|
110
|
-
sectionListRef.current.getSectionContent(newParsedSelectedSections).focus();
|
|
111
|
-
},
|
|
112
|
-
setSelectedSections: newSelectedSections => {
|
|
113
|
-
if (!sectionListRef.current) {
|
|
114
|
-
return;
|
|
115
|
-
}
|
|
116
|
-
const newParsedSelectedSections = (0, _useField.parseSelectedSections)(newSelectedSections, state.sections);
|
|
117
|
-
const newActiveSectionIndex = newParsedSelectedSections === 'all' ? 0 : newParsedSelectedSections;
|
|
118
|
-
setFocused(newActiveSectionIndex !== null);
|
|
119
|
-
setSelectedSections(newSelectedSections);
|
|
120
|
-
},
|
|
121
|
-
isFieldFocused: () => {
|
|
122
|
-
const activeElement = (0, _utils.getActiveElement)(document);
|
|
123
|
-
return !!sectionListRef.current && sectionListRef.current.getRoot().contains(activeElement);
|
|
124
129
|
}
|
|
125
|
-
|
|
130
|
+
range.selectNodeContents(target);
|
|
131
|
+
target.focus();
|
|
132
|
+
selection.removeAllRanges();
|
|
133
|
+
selection.addRange(range);
|
|
134
|
+
}
|
|
135
|
+
function focusField(newSelectedSections = 0) {
|
|
136
|
+
if (!sectionListRef.current ||
|
|
137
|
+
// if the field is already focused, we don't need to focus it again
|
|
138
|
+
getActiveSectionIndex(sectionListRef) != null) {
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
const newParsedSelectedSections = (0, _useField.parseSelectedSections)(newSelectedSections, state.sections);
|
|
142
|
+
setFocused(true);
|
|
143
|
+
sectionListRef.current.getSectionContent(newParsedSelectedSections).focus();
|
|
144
|
+
}
|
|
126
145
|
|
|
127
146
|
/**
|
|
128
147
|
* If a section content has been updated with a value we don't want to keep,
|
|
@@ -134,8 +153,9 @@ const useFieldV7TextField = params => {
|
|
|
134
153
|
}
|
|
135
154
|
const section = state.sections[sectionIndex];
|
|
136
155
|
sectionListRef.current.getSectionContent(sectionIndex).innerHTML = section.value || section.placeholder;
|
|
137
|
-
|
|
156
|
+
syncSelectionToDOM();
|
|
138
157
|
});
|
|
158
|
+
const containerClickTimeout = (0, _useTimeout.default)();
|
|
139
159
|
const handleContainerClick = (0, _useEventCallback.default)((event, ...args) => {
|
|
140
160
|
// The click event on the clear button would propagate to the input, trigger this handler and result in a wrong section selection.
|
|
141
161
|
// We avoid this by checking if the call of `handleContainerClick` is actually intended, or a side effect.
|
|
@@ -145,7 +165,7 @@ const useFieldV7TextField = params => {
|
|
|
145
165
|
setFocused(true);
|
|
146
166
|
onClick?.(event, ...args);
|
|
147
167
|
if (parsedSelectedSections === 'all') {
|
|
148
|
-
|
|
168
|
+
containerClickTimeout.start(0, () => {
|
|
149
169
|
const cursorPosition = document.getSelection().getRangeAt(0).startOffset;
|
|
150
170
|
if (cursorPosition === 0) {
|
|
151
171
|
setSelectedSections(sectionOrder.startIndex);
|
|
@@ -178,9 +198,8 @@ const useFieldV7TextField = params => {
|
|
|
178
198
|
const target = event.target;
|
|
179
199
|
const keyPressed = target.textContent ?? '';
|
|
180
200
|
sectionListRef.current.getRoot().innerHTML = state.sections.map(section => `${section.startSeparator}${section.value || section.placeholder}${section.endSeparator}`).join('');
|
|
181
|
-
|
|
201
|
+
syncSelectionToDOM();
|
|
182
202
|
if (keyPressed.length === 0 || keyPressed.charCodeAt(0) === 10) {
|
|
183
|
-
resetCharacterQuery();
|
|
184
203
|
clearValue();
|
|
185
204
|
setSelectedSections('all');
|
|
186
205
|
} else if (keyPressed.length > 1) {
|
|
@@ -203,7 +222,7 @@ const useFieldV7TextField = params => {
|
|
|
203
222
|
}
|
|
204
223
|
const pastedValue = event.clipboardData.getData('text');
|
|
205
224
|
event.preventDefault();
|
|
206
|
-
|
|
225
|
+
setCharacterQuery(null);
|
|
207
226
|
updateValueFromValueStr(pastedValue);
|
|
208
227
|
});
|
|
209
228
|
const handleContainerFocus = (0, _useEventCallback.default)(event => {
|
|
@@ -260,7 +279,7 @@ const useFieldV7TextField = params => {
|
|
|
260
279
|
const digitsAndLetterOnly = /^(([a-zA-Z]+)|)([0-9]+)(([a-zA-Z]+)|)$/.test(pastedValue);
|
|
261
280
|
const isValidPastedValue = activeSection.contentType === 'letter' && lettersOnly || activeSection.contentType === 'digit' && digitsOnly || activeSection.contentType === 'digit-with-letter' && digitsAndLetterOnly;
|
|
262
281
|
if (isValidPastedValue) {
|
|
263
|
-
|
|
282
|
+
setCharacterQuery(null);
|
|
264
283
|
updateSectionValue({
|
|
265
284
|
section: activeSection,
|
|
266
285
|
newSectionValue: pastedValue,
|
|
@@ -269,7 +288,7 @@ const useFieldV7TextField = params => {
|
|
|
269
288
|
}
|
|
270
289
|
// If the pasted value corresponds to a single section, but not the expected type, we skip the modification
|
|
271
290
|
else if (!lettersOnly && !digitsOnly) {
|
|
272
|
-
|
|
291
|
+
setCharacterQuery(null);
|
|
273
292
|
updateValueFromValueStr(pastedValue);
|
|
274
293
|
}
|
|
275
294
|
});
|
|
@@ -299,7 +318,6 @@ const useFieldV7TextField = params => {
|
|
|
299
318
|
revertDOMSectionChange(sectionIndex);
|
|
300
319
|
return;
|
|
301
320
|
}
|
|
302
|
-
resetCharacterQuery();
|
|
303
321
|
revertDOMSectionChange(sectionIndex);
|
|
304
322
|
clearActiveSection();
|
|
305
323
|
return;
|
|
@@ -312,33 +330,35 @@ const useFieldV7TextField = params => {
|
|
|
312
330
|
// The DOM value needs to remain the one React is expecting.
|
|
313
331
|
revertDOMSectionChange(sectionIndex);
|
|
314
332
|
});
|
|
315
|
-
(0,
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
if (
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
domElement.focus();
|
|
325
|
-
}
|
|
333
|
+
const handleClear = (0, _useEventCallback.default)((event, ...args) => {
|
|
334
|
+
event.preventDefault();
|
|
335
|
+
onClear?.(event, ...args);
|
|
336
|
+
clearValue();
|
|
337
|
+
if (!isFieldFocused(sectionListRef)) {
|
|
338
|
+
// setSelectedSections is called internally
|
|
339
|
+
focusField(0);
|
|
340
|
+
} else {
|
|
341
|
+
setSelectedSections(sectionOrder.startIndex);
|
|
326
342
|
}
|
|
327
|
-
}
|
|
328
|
-
const
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
}, [sectionsValueBoundaries, state.sections]);
|
|
343
|
+
});
|
|
344
|
+
const handleContainerKeyDown = (0, _useFieldRootHandleKeyDown.useFieldRootHandleKeyDown)({
|
|
345
|
+
manager,
|
|
346
|
+
internalPropsWithDefaults,
|
|
347
|
+
stateResponse
|
|
348
|
+
});
|
|
349
|
+
const wrappedHandleContainerKeyDown = (0, _useEventCallback.default)(event => {
|
|
350
|
+
onKeyDown?.(event);
|
|
351
|
+
handleContainerKeyDown(event);
|
|
352
|
+
});
|
|
338
353
|
const isContainerEditable = parsedSelectedSections === 'all';
|
|
339
354
|
const elements = React.useMemo(() => {
|
|
340
355
|
return state.sections.map((section, index) => {
|
|
341
356
|
const isEditable = !isContainerEditable && !disabled && !readOnly;
|
|
357
|
+
const sectionBoundaries = sectionsValueBoundaries[section.type]({
|
|
358
|
+
currentDate: fieldValueManager.getDateFromSection(value, section),
|
|
359
|
+
contentType: section.contentType,
|
|
360
|
+
format: section.format
|
|
361
|
+
});
|
|
342
362
|
return {
|
|
343
363
|
container: {
|
|
344
364
|
'data-sectionindex': index,
|
|
@@ -352,8 +372,8 @@ const useFieldV7TextField = params => {
|
|
|
352
372
|
'aria-labelledby': `${id}-${section.type}`,
|
|
353
373
|
'aria-readonly': readOnly,
|
|
354
374
|
'aria-valuenow': (0, _useField.getSectionValueNow)(section, utils),
|
|
355
|
-
'aria-valuemin': sectionBoundaries
|
|
356
|
-
'aria-valuemax': sectionBoundaries
|
|
375
|
+
'aria-valuemin': sectionBoundaries.minimum,
|
|
376
|
+
'aria-valuemax': sectionBoundaries.maximum,
|
|
357
377
|
'aria-valuetext': section.value ? (0, _useField.getSectionValueText)(section, utils) : translations.empty,
|
|
358
378
|
'aria-label': translations[section.type],
|
|
359
379
|
'aria-disabled': disabled,
|
|
@@ -377,7 +397,7 @@ const useFieldV7TextField = params => {
|
|
|
377
397
|
}
|
|
378
398
|
};
|
|
379
399
|
});
|
|
380
|
-
}, [
|
|
400
|
+
}, [disabled, fieldValueManager, getInputContainerClickHandler, getInputContentFocusHandler, handleInputContentDragOver, handleInputContentInput, handleInputContentMouseUp, handleInputContentPaste, id, isContainerEditable, readOnly, sectionsValueBoundaries, state.sections, translations, utils, value]);
|
|
381
401
|
const handleValueStrChange = (0, _useEventCallback.default)(event => {
|
|
382
402
|
updateValueFromValueStr(event.target.value);
|
|
383
403
|
});
|
|
@@ -391,29 +411,73 @@ const useFieldV7TextField = params => {
|
|
|
391
411
|
}
|
|
392
412
|
}, []); // eslint-disable-line react-hooks/exhaustive-deps
|
|
393
413
|
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
sectionListRef
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
onInput: handleContainerInput,
|
|
406
|
-
onPaste: handleContainerPaste,
|
|
407
|
-
// Additional
|
|
408
|
-
enableAccessibleFieldDOMStructure: true,
|
|
409
|
-
elements,
|
|
410
|
-
// TODO v7: Try to set to undefined when there is a section selected.
|
|
411
|
-
tabIndex: parsedSelectedSections === 0 ? -1 : 0,
|
|
412
|
-
contentEditable: isContainerEditable,
|
|
413
|
-
value: valueStr,
|
|
414
|
-
onChange: handleValueStrChange,
|
|
415
|
-
areAllSectionsEmpty
|
|
414
|
+
(0, _useEnhancedEffect.default)(() => {
|
|
415
|
+
if (!focused || !sectionListRef.current) {
|
|
416
|
+
return;
|
|
417
|
+
}
|
|
418
|
+
if (parsedSelectedSections === 'all') {
|
|
419
|
+
sectionListRef.current.getRoot().focus();
|
|
420
|
+
} else if (typeof parsedSelectedSections === 'number') {
|
|
421
|
+
const domElement = sectionListRef.current.getSectionContent(parsedSelectedSections);
|
|
422
|
+
if (domElement) {
|
|
423
|
+
domElement.focus();
|
|
424
|
+
}
|
|
416
425
|
}
|
|
417
|
-
};
|
|
426
|
+
}, [parsedSelectedSections, focused]);
|
|
427
|
+
(0, _useEnhancedEffect.default)(() => {
|
|
428
|
+
syncSelectionToDOM();
|
|
429
|
+
});
|
|
430
|
+
React.useImperativeHandle(unstableFieldRef, () => ({
|
|
431
|
+
getSections: () => state.sections,
|
|
432
|
+
getActiveSectionIndex: () => getActiveSectionIndex(sectionListRef),
|
|
433
|
+
setSelectedSections: newSelectedSections => {
|
|
434
|
+
if (!sectionListRef.current) {
|
|
435
|
+
return;
|
|
436
|
+
}
|
|
437
|
+
const newParsedSelectedSections = (0, _useField.parseSelectedSections)(newSelectedSections, state.sections);
|
|
438
|
+
const newActiveSectionIndex = newParsedSelectedSections === 'all' ? 0 : newParsedSelectedSections;
|
|
439
|
+
setFocused(newActiveSectionIndex !== null);
|
|
440
|
+
setSelectedSections(newSelectedSections);
|
|
441
|
+
},
|
|
442
|
+
focusField,
|
|
443
|
+
isFieldFocused: () => isFieldFocused(sectionListRef)
|
|
444
|
+
}));
|
|
445
|
+
return (0, _extends2.default)({}, forwardedProps, {
|
|
446
|
+
error,
|
|
447
|
+
clearable: Boolean(clearable && !areAllSectionsEmpty && !readOnly && !disabled),
|
|
448
|
+
focused: focusedProp ?? focused,
|
|
449
|
+
sectionListRef: handleSectionListRef,
|
|
450
|
+
onBlur: handleContainerBlur,
|
|
451
|
+
onClick: handleContainerClick,
|
|
452
|
+
onFocus: handleContainerFocus,
|
|
453
|
+
onInput: handleContainerInput,
|
|
454
|
+
onPaste: handleContainerPaste,
|
|
455
|
+
onKeyDown: wrappedHandleContainerKeyDown,
|
|
456
|
+
onClear: handleClear,
|
|
457
|
+
// Additional
|
|
458
|
+
enableAccessibleFieldDOMStructure: true,
|
|
459
|
+
elements,
|
|
460
|
+
// TODO v7: Try to set to undefined when there is a section selected.
|
|
461
|
+
tabIndex: parsedSelectedSections === 0 ? -1 : 0,
|
|
462
|
+
contentEditable: isContainerEditable,
|
|
463
|
+
value: valueStr,
|
|
464
|
+
onChange: handleValueStrChange,
|
|
465
|
+
areAllSectionsEmpty,
|
|
466
|
+
disabled,
|
|
467
|
+
readOnly,
|
|
468
|
+
autoFocus,
|
|
469
|
+
openPickerAriaLabel
|
|
470
|
+
});
|
|
418
471
|
};
|
|
419
|
-
exports.useFieldV7TextField = useFieldV7TextField;
|
|
472
|
+
exports.useFieldV7TextField = useFieldV7TextField;
|
|
473
|
+
function getActiveSectionIndex(sectionListRef) {
|
|
474
|
+
const activeElement = (0, _utils.getActiveElement)(document);
|
|
475
|
+
if (!activeElement || !sectionListRef.current || !sectionListRef.current.getRoot().contains(activeElement)) {
|
|
476
|
+
return null;
|
|
477
|
+
}
|
|
478
|
+
return sectionListRef.current.getSectionIndexFromDOMElement(activeElement);
|
|
479
|
+
}
|
|
480
|
+
function isFieldFocused(sectionListRef) {
|
|
481
|
+
const activeElement = (0, _utils.getActiveElement)(document);
|
|
482
|
+
return !!sectionListRef.current && sectionListRef.current.getRoot().contains(activeElement);
|
|
483
|
+
}
|
|
@@ -89,6 +89,7 @@ export interface UsePickerNonStaticProps extends Omit<PickerFieldPrivateContextV
|
|
|
89
89
|
format?: string;
|
|
90
90
|
/**
|
|
91
91
|
* If `true`, the button to open the Picker will not be rendered (it will only render the field).
|
|
92
|
+
* @deprecated Use the [field component](https://next.mui.com/x/react-date-pickers/fields/) instead.
|
|
92
93
|
* @default false
|
|
93
94
|
*/
|
|
94
95
|
disableOpenPicker?: boolean;
|
package/internals/index.d.ts
CHANGED
|
@@ -26,7 +26,7 @@ export { DAY_MARGIN, DIALOG_WIDTH, VIEW_HEIGHT, MULTI_SECTION_CLOCK_SECTION_WIDT
|
|
|
26
26
|
export { useControlledValue } from "./hooks/useControlledValue.js";
|
|
27
27
|
export type { DesktopOnlyPickerProps } from './hooks/useDesktopPicker';
|
|
28
28
|
export { useField, useFieldInternalPropsWithDefaults, createDateStrForV7HiddenInputFromSections, createDateStrForV6InputFromSections } from "./hooks/useField/index.js";
|
|
29
|
-
export type { UseFieldInternalProps,
|
|
29
|
+
export type { UseFieldInternalProps, UseFieldParameters, UseFieldReturnValue, FieldValueManager, FieldChangeHandler, FieldChangeHandlerContext } from './hooks/useField';
|
|
30
30
|
export { useFieldOwnerState } from "./hooks/useFieldOwnerState.js";
|
|
31
31
|
export type { MobileOnlyPickerProps } from './hooks/useMobilePicker';
|
|
32
32
|
export { useNullableFieldPrivateContext } from "./hooks/useNullableFieldPrivateContext.js";
|
|
@@ -65,6 +65,7 @@ export type { DayCalendarProps, DayCalendarSlots, DayCalendarSlotProps, Exported
|
|
|
65
65
|
export type { ExportedDateCalendarProps } from '../DateCalendar/DateCalendar.types';
|
|
66
66
|
export { useCalendarState } from "../DateCalendar/useCalendarState.js";
|
|
67
67
|
export { DateTimePickerToolbarOverrideContext } from "../DateTimePicker/DateTimePickerToolbar.js";
|
|
68
|
+
export { usePickerDayOwnerState } from "../PickersDay/usePickerDayOwnerState.js";
|
|
68
69
|
export { getDateFieldInternalPropsDefaults } from "../managers/useDateManager.js";
|
|
69
70
|
export { getTimeFieldInternalPropsDefaults } from "../managers/useTimeManager.js";
|
|
70
71
|
export { getDateTimeFieldInternalPropsDefaults } from "../managers/useDateTimeManager.js";
|
package/internals/index.js
CHANGED
|
@@ -363,6 +363,12 @@ Object.defineProperty(exports, "usePicker", {
|
|
|
363
363
|
return _usePicker.usePicker;
|
|
364
364
|
}
|
|
365
365
|
});
|
|
366
|
+
Object.defineProperty(exports, "usePickerDayOwnerState", {
|
|
367
|
+
enumerable: true,
|
|
368
|
+
get: function () {
|
|
369
|
+
return _usePickerDayOwnerState.usePickerDayOwnerState;
|
|
370
|
+
}
|
|
371
|
+
});
|
|
366
372
|
Object.defineProperty(exports, "usePickerPrivateContext", {
|
|
367
373
|
enumerable: true,
|
|
368
374
|
get: function () {
|
|
@@ -440,6 +446,7 @@ var _views = require("./utils/views");
|
|
|
440
446
|
var _DayCalendar = require("../DateCalendar/DayCalendar");
|
|
441
447
|
var _useCalendarState = require("../DateCalendar/useCalendarState");
|
|
442
448
|
var _DateTimePickerToolbar = require("../DateTimePicker/DateTimePickerToolbar");
|
|
449
|
+
var _usePickerDayOwnerState = require("../PickersDay/usePickerDayOwnerState");
|
|
443
450
|
var _useDateManager = require("../managers/useDateManager");
|
|
444
451
|
var _useTimeManager = require("../managers/useTimeManager");
|
|
445
452
|
var _useDateTimeManager = require("../managers/useDateTimeManager");
|
|
@@ -37,13 +37,13 @@ function useDateManager(parameters = {}) {
|
|
|
37
37
|
internal_useOpenPickerButtonAriaLabel: useOpenPickerButtonAriaLabel
|
|
38
38
|
}), [enableAccessibleFieldDOMStructure]);
|
|
39
39
|
}
|
|
40
|
-
function useOpenPickerButtonAriaLabel() {
|
|
40
|
+
function useOpenPickerButtonAriaLabel(value) {
|
|
41
41
|
const utils = (0, _useUtils.useUtils)();
|
|
42
42
|
const translations = (0, _usePickerTranslations.usePickerTranslations)();
|
|
43
|
-
return React.
|
|
43
|
+
return React.useMemo(() => {
|
|
44
44
|
const formattedValue = utils.isValid(value) ? utils.format(value, 'fullDate') : null;
|
|
45
45
|
return translations.openDatePickerDialogue(formattedValue);
|
|
46
|
-
}, [translations, utils]);
|
|
46
|
+
}, [value, translations, utils]);
|
|
47
47
|
}
|
|
48
48
|
|
|
49
49
|
/**
|
|
@@ -37,13 +37,13 @@ function useDateTimeManager(parameters = {}) {
|
|
|
37
37
|
internal_useOpenPickerButtonAriaLabel: useOpenPickerButtonAriaLabel
|
|
38
38
|
}), [enableAccessibleFieldDOMStructure]);
|
|
39
39
|
}
|
|
40
|
-
function useOpenPickerButtonAriaLabel() {
|
|
40
|
+
function useOpenPickerButtonAriaLabel(value) {
|
|
41
41
|
const utils = (0, _useUtils.useUtils)();
|
|
42
42
|
const translations = (0, _usePickerTranslations.usePickerTranslations)();
|
|
43
|
-
return React.
|
|
43
|
+
return React.useMemo(() => {
|
|
44
44
|
const formattedValue = utils.isValid(value) ? utils.format(value, 'fullDate') : null;
|
|
45
45
|
return translations.openDatePickerDialogue(formattedValue);
|
|
46
|
-
}, [translations, utils]);
|
|
46
|
+
}, [value, translations, utils]);
|
|
47
47
|
}
|
|
48
48
|
|
|
49
49
|
/**
|
|
@@ -36,14 +36,14 @@ function useTimeManager(parameters = {}) {
|
|
|
36
36
|
}), [ampm, enableAccessibleFieldDOMStructure]);
|
|
37
37
|
}
|
|
38
38
|
function createUseOpenPickerButtonAriaLabel(ampm) {
|
|
39
|
-
return function useOpenPickerButtonAriaLabel() {
|
|
39
|
+
return function useOpenPickerButtonAriaLabel(value) {
|
|
40
40
|
const utils = (0, _useUtils.useUtils)();
|
|
41
41
|
const translations = (0, _usePickerTranslations.usePickerTranslations)();
|
|
42
|
-
return React.
|
|
42
|
+
return React.useMemo(() => {
|
|
43
43
|
const formatKey = ampm ?? utils.is12HourCycleInCurrentLocale() ? 'fullTime12h' : 'fullTime24h';
|
|
44
44
|
const formattedValue = utils.isValid(value) ? utils.format(value, formatKey) : null;
|
|
45
45
|
return translations.openTimePickerDialogue(formattedValue);
|
|
46
|
-
}, [translations, utils]);
|
|
46
|
+
}, [value, translations, utils]);
|
|
47
47
|
};
|
|
48
48
|
}
|
|
49
49
|
|
package/models/fields.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { TextFieldProps } from '@mui/material/TextField';
|
|
3
3
|
import type { ExportedPickersSectionListProps } from '../PickersSectionList';
|
|
4
|
-
import type { UseFieldInternalProps,
|
|
4
|
+
import type { UseFieldInternalProps, UseFieldReturnValue } from '../internals/hooks/useField';
|
|
5
5
|
import type { PickersTextFieldProps } from '../PickersTextField';
|
|
6
6
|
import { BaseSingleInputFieldProps, FieldRangeSection, PickerRangeValue, PickerValidValue } from "../internals/models/index.js";
|
|
7
7
|
import { PickerOwnerState } from "./pickers.js";
|
|
@@ -131,7 +131,7 @@ export type PickerFieldSlotProps<TValue extends PickerValidValue, TEnableAccessi
|
|
|
131
131
|
* Props the text field receives when used inside a single input Picker.
|
|
132
132
|
* Only contains what the MUI components are passing to the text field, not what users can pass using the `props.slotProps.field` and `props.slotProps.textField`.
|
|
133
133
|
*/
|
|
134
|
-
export type BaseSingleInputPickersTextFieldProps<TEnableAccessibleFieldDOMStructure extends boolean> = Omit<
|
|
134
|
+
export type BaseSingleInputPickersTextFieldProps<TEnableAccessibleFieldDOMStructure extends boolean> = Omit<UseFieldReturnValue<TEnableAccessibleFieldDOMStructure, BaseSingleInputFieldProps>, 'slots' | 'slotProps' | 'clearable' | 'onClear' | 'openPickerButtonPosition' | 'clearButtonPosition' | 'openPickerAriaLabel'>;
|
|
135
135
|
/**
|
|
136
136
|
* Props the built-in text field component can receive.
|
|
137
137
|
*/
|
package/models/manager.d.ts
CHANGED
|
@@ -72,9 +72,10 @@ export interface PickerManager<TValue extends PickerValidValue, TEnableAccessibl
|
|
|
72
72
|
internal_applyDefaultsToFieldInternalProps: (parameters: ApplyDefaultsToFieldInternalPropsParameters<TFieldInternalProps>) => UseFieldInternalProps<TValue, TEnableAccessibleFieldDOMStructure, TError> & TValidationProps;
|
|
73
73
|
/**
|
|
74
74
|
* Returns a hook that creates the aria-label to apply on the button that opens the Picker.
|
|
75
|
-
* @
|
|
75
|
+
* @param {TValue} value The value of the Picker.
|
|
76
|
+
* @returns {string} The aria-label to apply on the button that opens the Picker.
|
|
76
77
|
*/
|
|
77
|
-
internal_useOpenPickerButtonAriaLabel: (
|
|
78
|
+
internal_useOpenPickerButtonAriaLabel: (value: TValue) => string;
|
|
78
79
|
}
|
|
79
80
|
interface ApplyDefaultsToFieldInternalPropsParameters<TFieldInternalProps extends {}> extends UseLocalizationContextReturnValue {
|
|
80
81
|
internalProps: TFieldInternalProps;
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { DefaultizedProps, SlotComponentPropsFromProps } from '@mui/x-internals/types';
|
|
3
|
-
import {
|
|
3
|
+
import { PickerDayOwnerState, PickersDayProps } from "../PickersDay/index.js";
|
|
4
|
+
import { ExportedPickersDayProps } from "../PickersDay/PickersDay.types.js";
|
|
4
5
|
import { PickerOnChangeFn } from "../internals/hooks/useViews.js";
|
|
5
6
|
import { SlideDirection, SlideTransitionProps } from "./PickersSlideTransition.js";
|
|
6
7
|
import { BaseDateValidationProps, DayValidationProps, MonthValidationProps, YearValidationProps } from "../internals/models/validation.js";
|
|
7
8
|
import { DayCalendarClasses } from "./dayCalendarClasses.js";
|
|
8
|
-
import {
|
|
9
|
+
import { PickerValidDate, TimezoneProps } from "../models/index.js";
|
|
9
10
|
import { FormProps } from "../internals/models/formProps.js";
|
|
10
11
|
export interface DayCalendarSlots {
|
|
11
12
|
/**
|
|
@@ -18,11 +19,6 @@ export interface DayCalendarSlots {
|
|
|
18
19
|
export interface DayCalendarSlotProps {
|
|
19
20
|
day?: SlotComponentPropsFromProps<PickersDayProps, {}, PickerDayOwnerState>;
|
|
20
21
|
}
|
|
21
|
-
export interface PickerDayOwnerState extends PickerOwnerState {
|
|
22
|
-
isDaySelected: boolean;
|
|
23
|
-
isDayDisabled: boolean;
|
|
24
|
-
day: PickerValidDate;
|
|
25
|
-
}
|
|
26
22
|
export interface ExportedDayCalendarProps extends ExportedPickersDayProps {
|
|
27
23
|
/**
|
|
28
24
|
* If `true`, calls `renderLoading` instead of rendering the day calendar.
|