@mui/x-date-pickers 8.3.1 → 8.5.0
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 +213 -0
- package/DateCalendar/DateCalendar.js +9 -6
- package/DateCalendar/DateCalendar.types.d.ts +1 -1
- package/DateCalendar/dateCalendarClasses.js +5 -3
- package/DateCalendar/dayCalendarClasses.js +5 -3
- package/DateCalendar/pickersFadeTransitionGroupClasses.js +5 -3
- package/DateCalendar/pickersSlideTransitionClasses.js +5 -3
- package/DateField/DateField.js +3 -2
- package/DatePicker/DatePicker.js +5 -4
- package/DatePicker/DatePickerToolbar.js +1 -0
- package/DatePicker/datePickerToolbarClasses.js +5 -3
- package/DateTimeField/DateTimeField.js +3 -2
- package/DateTimePicker/DateTimePicker.js +5 -4
- package/DateTimePicker/DateTimePickerTabs.js +1 -0
- package/DateTimePicker/DateTimePickerToolbar.js +1 -0
- package/DateTimePicker/dateTimePickerTabsClasses.js +5 -3
- package/DateTimePicker/dateTimePickerToolbarClasses.js +5 -3
- package/DayCalendarSkeleton/dayCalendarSkeletonClasses.js +5 -3
- package/DesktopDatePicker/DesktopDatePicker.js +3 -2
- package/DesktopDateTimePicker/DesktopDateTimePicker.js +4 -2
- package/DesktopDateTimePicker/DesktopDateTimePickerLayout.js +1 -0
- package/DesktopTimePicker/DesktopTimePicker.js +3 -2
- package/DigitalClock/DigitalClock.js +1 -0
- package/DigitalClock/DigitalClock.types.d.ts +1 -1
- package/LocalizationProvider/LocalizationProvider.js +2 -3
- package/MobileDatePicker/MobileDatePicker.js +3 -2
- package/MobileDateTimePicker/MobileDateTimePicker.js +5 -4
- package/MobileTimePicker/MobileTimePicker.js +3 -2
- package/MonthCalendar/MonthCalendar.js +12 -9
- package/MonthCalendar/MonthCalendarButton.js +2 -1
- package/MonthCalendar/monthCalendarClasses.js +5 -3
- package/MultiSectionDigitalClock/MultiSectionDigitalClock.js +5 -4
- package/MultiSectionDigitalClock/MultiSectionDigitalClock.types.d.ts +1 -1
- package/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +2 -1
- package/PickersActionBar/PickersActionBar.js +2 -1
- package/PickersCalendarHeader/PickersCalendarHeader.js +1 -0
- package/PickersCalendarHeader/PickersCalendarHeader.types.d.ts +1 -1
- package/PickersCalendarHeader/pickersCalendarHeaderClasses.js +5 -3
- package/PickersDay/PickersDay.js +9 -5
- package/PickersDay/pickersDayClasses.js +5 -3
- package/PickersLayout/PickersLayout.js +1 -0
- package/PickersLayout/PickersLayout.types.d.ts +1 -1
- package/PickersSectionList/PickersSectionList.js +1 -0
- package/PickersSectionList/PickersSectionList.types.d.ts +1 -1
- package/PickersTextField/PickersFilledInput/PickersFilledInput.js +3 -2
- package/PickersTextField/PickersInput/PickersInput.js +3 -2
- package/PickersTextField/PickersInputBase/PickersInputBase.js +3 -2
- package/PickersTextField/PickersOutlinedInput/PickersOutlinedInput.js +3 -2
- package/PickersTextField/PickersTextField.js +6 -3
- package/PickersTextField/usePickerTextFieldOwnerState.js +1 -0
- package/StaticDatePicker/StaticDatePicker.js +1 -0
- package/StaticDateTimePicker/StaticDateTimePicker.js +1 -0
- package/StaticTimePicker/StaticTimePicker.js +1 -0
- package/TimeClock/Clock.js +4 -3
- package/TimeClock/TimeClock.js +5 -3
- package/TimeClock/clockClasses.js +5 -3
- package/TimeClock/clockNumberClasses.js +5 -3
- package/TimeClock/clockPointerClasses.js +5 -3
- package/TimeClock/timeClockClasses.js +5 -3
- package/TimeField/TimeField.js +3 -2
- package/TimePicker/TimePicker.js +5 -4
- package/TimePicker/timePickerToolbarClasses.js +5 -3
- package/YearCalendar/YearCalendar.js +14 -10
- package/YearCalendar/YearCalendarButton.js +2 -1
- package/YearCalendar/yearCalendarClasses.js +5 -3
- package/dateViewRenderers/dateViewRenderers.js +2 -1
- package/esm/DateCalendar/DateCalendar.js +4 -1
- package/esm/DateCalendar/DateCalendar.types.d.ts +1 -1
- package/esm/DateCalendar/dateCalendarClasses.js +2 -1
- package/esm/DateCalendar/dayCalendarClasses.js +2 -1
- package/esm/DateCalendar/pickersFadeTransitionGroupClasses.js +2 -1
- package/esm/DateCalendar/pickersSlideTransitionClasses.js +2 -1
- package/esm/DateField/DateField.js +2 -1
- package/esm/DatePicker/DatePicker.js +2 -1
- package/esm/DatePicker/DatePickerToolbar.js +1 -0
- package/esm/DatePicker/datePickerToolbarClasses.js +2 -1
- package/esm/DateTimeField/DateTimeField.js +2 -1
- package/esm/DateTimePicker/DateTimePicker.js +2 -1
- package/esm/DateTimePicker/DateTimePickerTabs.js +1 -0
- package/esm/DateTimePicker/DateTimePickerToolbar.js +1 -0
- package/esm/DateTimePicker/dateTimePickerTabsClasses.js +2 -1
- package/esm/DateTimePicker/dateTimePickerToolbarClasses.js +2 -1
- package/esm/DayCalendarSkeleton/dayCalendarSkeletonClasses.js +2 -1
- package/esm/DesktopDatePicker/DesktopDatePicker.js +2 -1
- package/esm/DesktopDateTimePicker/DesktopDateTimePicker.js +3 -1
- package/esm/DesktopDateTimePicker/DesktopDateTimePickerLayout.js +1 -0
- package/esm/DesktopTimePicker/DesktopTimePicker.js +2 -1
- package/esm/DigitalClock/DigitalClock.js +1 -0
- package/esm/DigitalClock/DigitalClock.types.d.ts +1 -1
- package/esm/LocalizationProvider/LocalizationProvider.js +2 -3
- package/esm/MobileDatePicker/MobileDatePicker.js +2 -1
- package/esm/MobileDateTimePicker/MobileDateTimePicker.js +2 -1
- package/esm/MobileTimePicker/MobileTimePicker.js +2 -1
- package/esm/MonthCalendar/MonthCalendar.js +4 -1
- package/esm/MonthCalendar/MonthCalendarButton.js +2 -1
- package/esm/MonthCalendar/monthCalendarClasses.js +2 -1
- package/esm/MultiSectionDigitalClock/MultiSectionDigitalClock.js +1 -0
- package/esm/MultiSectionDigitalClock/MultiSectionDigitalClock.types.d.ts +1 -1
- package/esm/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +2 -1
- package/esm/PickersActionBar/PickersActionBar.js +1 -0
- package/esm/PickersCalendarHeader/PickersCalendarHeader.js +1 -0
- package/esm/PickersCalendarHeader/PickersCalendarHeader.types.d.ts +1 -1
- package/esm/PickersCalendarHeader/pickersCalendarHeaderClasses.js +2 -1
- package/esm/PickersDay/PickersDay.js +6 -2
- package/esm/PickersDay/pickersDayClasses.js +2 -1
- package/esm/PickersLayout/PickersLayout.js +1 -0
- package/esm/PickersLayout/PickersLayout.types.d.ts +1 -1
- package/esm/PickersSectionList/PickersSectionList.js +1 -0
- package/esm/PickersSectionList/PickersSectionList.types.d.ts +1 -1
- package/esm/PickersTextField/PickersFilledInput/PickersFilledInput.js +2 -1
- package/esm/PickersTextField/PickersInput/PickersInput.js +2 -1
- package/esm/PickersTextField/PickersInputBase/PickersInputBase.js +2 -1
- package/esm/PickersTextField/PickersOutlinedInput/PickersOutlinedInput.js +2 -1
- package/esm/PickersTextField/PickersTextField.js +5 -2
- package/esm/PickersTextField/usePickerTextFieldOwnerState.js +1 -0
- package/esm/StaticDatePicker/StaticDatePicker.js +1 -0
- package/esm/StaticDateTimePicker/StaticDateTimePicker.js +1 -0
- package/esm/StaticTimePicker/StaticTimePicker.js +1 -0
- package/esm/TimeClock/Clock.js +2 -1
- package/esm/TimeClock/TimeClock.js +3 -1
- package/esm/TimeClock/clockClasses.js +2 -1
- package/esm/TimeClock/clockNumberClasses.js +2 -1
- package/esm/TimeClock/clockPointerClasses.js +2 -1
- package/esm/TimeClock/timeClockClasses.js +2 -1
- package/esm/TimeField/TimeField.js +2 -1
- package/esm/TimePicker/TimePicker.js +2 -1
- package/esm/TimePicker/timePickerToolbarClasses.js +2 -1
- package/esm/YearCalendar/YearCalendar.js +5 -1
- package/esm/YearCalendar/YearCalendarButton.js +2 -1
- package/esm/YearCalendar/yearCalendarClasses.js +2 -1
- package/esm/dateViewRenderers/dateViewRenderers.js +2 -1
- package/esm/hooks/useIsValidValue.js +1 -0
- package/esm/hooks/usePickerContext.js +1 -0
- package/esm/index.js +1 -1
- package/esm/internals/components/PickerFieldUI.js +1 -0
- package/esm/internals/components/PickerPopper/PickerPopper.js +5 -1
- package/esm/internals/components/PickerProvider.js +2 -0
- package/esm/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +2 -1
- package/esm/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.types.d.ts +1 -1
- package/esm/internals/components/PickersArrowSwitcher/pickersArrowSwitcherClasses.js +2 -1
- package/esm/internals/components/PickersToolbar.js +2 -1
- package/esm/internals/components/PickersToolbarButton.js +2 -1
- package/esm/internals/components/PickersToolbarText.js +2 -1
- package/esm/internals/components/pickersToolbarButtonClasses.js +2 -1
- package/esm/internals/components/pickersToolbarClasses.js +2 -1
- package/esm/internals/components/pickersToolbarTextClasses.js +2 -1
- package/esm/internals/hooks/useDesktopPicker/useDesktopPicker.js +1 -0
- package/esm/internals/hooks/useField/useFieldCharacterEditing.js +27 -11
- package/esm/internals/hooks/useField/useFieldSectionContainerProps.js +2 -3
- package/esm/internals/hooks/useField/useFieldSectionContentProps.js +2 -2
- package/esm/internals/hooks/useField/useFieldState.js +2 -2
- package/esm/internals/hooks/useMobilePicker/useMobilePicker.js +1 -0
- package/esm/internals/hooks/useNullableFieldPrivateContext.js +1 -0
- package/esm/internals/hooks/useStaticPicker/useStaticPicker.js +1 -0
- package/esm/timeViewRenderers/timeViewRenderers.js +4 -1
- package/hooks/useIsValidValue.js +1 -0
- package/hooks/usePickerContext.js +1 -0
- package/index.js +1 -1
- package/internals/components/PickerFieldUI.js +1 -0
- package/internals/components/PickerPopper/PickerPopper.js +17 -13
- package/internals/components/PickerProvider.js +2 -0
- package/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +2 -1
- package/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.types.d.ts +1 -1
- package/internals/components/PickersArrowSwitcher/pickersArrowSwitcherClasses.js +5 -3
- package/internals/components/PickersToolbar.js +2 -1
- package/internals/components/PickersToolbarButton.js +2 -1
- package/internals/components/PickersToolbarText.js +2 -1
- package/internals/components/pickersToolbarButtonClasses.js +5 -3
- package/internals/components/pickersToolbarClasses.js +5 -3
- package/internals/components/pickersToolbarTextClasses.js +5 -3
- package/internals/hooks/useDesktopPicker/useDesktopPicker.js +1 -0
- package/internals/hooks/useField/useFieldCharacterEditing.js +27 -11
- package/internals/hooks/useField/useFieldSectionContainerProps.js +2 -4
- package/internals/hooks/useField/useFieldSectionContentProps.js +2 -2
- package/internals/hooks/useField/useFieldState.js +2 -2
- package/internals/hooks/useMobilePicker/useMobilePicker.js +1 -0
- package/internals/hooks/useNullableFieldPrivateContext.js +1 -0
- package/internals/hooks/useStaticPicker/useStaticPicker.js +1 -0
- package/package.json +2 -2
- package/timeViewRenderers/timeViewRenderers.js +4 -1
|
@@ -133,7 +133,11 @@ const useFieldCharacterEditing = ({
|
|
|
133
133
|
return applyQuery(params, getFirstSectionValueMatchingWithQuery);
|
|
134
134
|
};
|
|
135
135
|
const applyNumericEditing = params => {
|
|
136
|
-
const getNewSectionValue = (
|
|
136
|
+
const getNewSectionValue = ({
|
|
137
|
+
queryValue,
|
|
138
|
+
skipIfBelowMinimum,
|
|
139
|
+
section
|
|
140
|
+
}) => {
|
|
137
141
|
const cleanQueryValue = (0, _useField.removeLocalizedDigits)(queryValue, localizedDigits);
|
|
138
142
|
const queryValueNumber = Number(cleanQueryValue);
|
|
139
143
|
const sectionBoundaries = sectionsValueBoundaries[section.type]({
|
|
@@ -150,7 +154,7 @@ const useFieldCharacterEditing = ({
|
|
|
150
154
|
// If the user types `0` on a month section,
|
|
151
155
|
// It is below the minimum, but we want to store the `0` in the query,
|
|
152
156
|
// So that when he pressed `1`, it will store `01` and move to the next section.
|
|
153
|
-
if (queryValueNumber < sectionBoundaries.minimum) {
|
|
157
|
+
if (skipIfBelowMinimum && queryValueNumber < sectionBoundaries.minimum) {
|
|
154
158
|
return {
|
|
155
159
|
saveQuery: true
|
|
156
160
|
};
|
|
@@ -164,20 +168,28 @@ const useFieldCharacterEditing = ({
|
|
|
164
168
|
};
|
|
165
169
|
const getFirstSectionValueMatchingWithQuery = (queryValue, activeSection) => {
|
|
166
170
|
if (activeSection.contentType === 'digit' || activeSection.contentType === 'digit-with-letter') {
|
|
167
|
-
return getNewSectionValue(
|
|
171
|
+
return getNewSectionValue({
|
|
172
|
+
queryValue,
|
|
173
|
+
skipIfBelowMinimum: false,
|
|
174
|
+
section: activeSection
|
|
175
|
+
});
|
|
168
176
|
}
|
|
169
177
|
|
|
170
178
|
// When editing a letter-format month and the user presses a digit,
|
|
171
179
|
// We can support the numeric editing by using the digit-format month and re-formatting the result.
|
|
172
180
|
if (activeSection.type === 'month') {
|
|
173
181
|
const hasLeadingZerosInFormat = (0, _useField.doesSectionFormatHaveLeadingZeros)(utils, 'digit', 'month', 'MM');
|
|
174
|
-
const response = getNewSectionValue(
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
182
|
+
const response = getNewSectionValue({
|
|
183
|
+
queryValue,
|
|
184
|
+
skipIfBelowMinimum: true,
|
|
185
|
+
section: {
|
|
186
|
+
type: activeSection.type,
|
|
187
|
+
format: 'MM',
|
|
188
|
+
hasLeadingZerosInFormat,
|
|
189
|
+
hasLeadingZerosInInput: true,
|
|
190
|
+
contentType: 'digit',
|
|
191
|
+
maxLength: 2
|
|
192
|
+
}
|
|
181
193
|
});
|
|
182
194
|
if (isQueryResponseWithoutValue(response)) {
|
|
183
195
|
return response;
|
|
@@ -191,7 +203,11 @@ const useFieldCharacterEditing = ({
|
|
|
191
203
|
// When editing a letter-format weekDay and the user presses a digit,
|
|
192
204
|
// We can support the numeric editing by returning the nth day in the week day array.
|
|
193
205
|
if (activeSection.type === 'weekDay') {
|
|
194
|
-
const response = getNewSectionValue(
|
|
206
|
+
const response = getNewSectionValue({
|
|
207
|
+
queryValue,
|
|
208
|
+
skipIfBelowMinimum: true,
|
|
209
|
+
section: activeSection
|
|
210
|
+
});
|
|
195
211
|
if (isQueryResponseWithoutValue(response)) {
|
|
196
212
|
return response;
|
|
197
213
|
}
|
|
@@ -1,13 +1,11 @@
|
|
|
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;
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.useFieldSectionContainerProps = useFieldSectionContainerProps;
|
|
9
8
|
var React = _interopRequireWildcard(require("react"));
|
|
10
|
-
var _useEventCallback = _interopRequireDefault(require("@mui/utils/useEventCallback"));
|
|
11
9
|
/**
|
|
12
10
|
* Generate the props to pass to the container element of each section of the field.
|
|
13
11
|
* It is not used by the non-accessible DOM structure (with an <input /> element for editing).
|
|
@@ -25,14 +23,14 @@ function useFieldSectionContainerProps(parameters) {
|
|
|
25
23
|
disabled = false
|
|
26
24
|
}
|
|
27
25
|
} = parameters;
|
|
28
|
-
const createHandleClick =
|
|
26
|
+
const createHandleClick = React.useCallback(sectionIndex => event => {
|
|
29
27
|
// The click event on the clear button would propagate to the input, trigger this handler and result in a wrong section selection.
|
|
30
28
|
// We avoid this by checking if the call to this function is actually intended, or a side effect.
|
|
31
29
|
if (disabled || event.isDefaultPrevented()) {
|
|
32
30
|
return;
|
|
33
31
|
}
|
|
34
32
|
setSelectedSections(sectionIndex);
|
|
35
|
-
});
|
|
33
|
+
}, [disabled, setSelectedSections]);
|
|
36
34
|
return React.useCallback(sectionIndex => ({
|
|
37
35
|
'data-sectionindex': sectionIndex,
|
|
38
36
|
onClick: createHandleClick(sectionIndex)
|
|
@@ -136,12 +136,12 @@ function useFieldSectionContentProps(parameters) {
|
|
|
136
136
|
event.preventDefault();
|
|
137
137
|
event.dataTransfer.dropEffect = 'none';
|
|
138
138
|
});
|
|
139
|
-
const createFocusHandler =
|
|
139
|
+
const createFocusHandler = React.useCallback(sectionIndex => () => {
|
|
140
140
|
if (disabled) {
|
|
141
141
|
return;
|
|
142
142
|
}
|
|
143
143
|
setSelectedSections(sectionIndex);
|
|
144
|
-
});
|
|
144
|
+
}, [disabled, setSelectedSections]);
|
|
145
145
|
return React.useCallback((section, sectionIndex) => {
|
|
146
146
|
const sectionBoundaries = sectionsValueBoundaries[section.type]({
|
|
147
147
|
currentDate: fieldValueManager.getDateFromSection(value, section),
|
|
@@ -276,10 +276,10 @@ const useFieldState = parameters => {
|
|
|
276
276
|
}
|
|
277
277
|
|
|
278
278
|
/**
|
|
279
|
-
* If all the sections are filled but the date is invalid,
|
|
279
|
+
* If all the sections are filled but the date is invalid and the previous date is valid or null,
|
|
280
280
|
* Then we publish an invalid date.
|
|
281
281
|
*/
|
|
282
|
-
if (newActiveDateSections.every(sectionBis => sectionBis.value !== '')) {
|
|
282
|
+
if (newActiveDateSections.every(sectionBis => sectionBis.value !== '') && (activeDate == null || utils.isValid(activeDate))) {
|
|
283
283
|
setSectionUpdateToApplyOnNextInvalidDate(newSectionValue);
|
|
284
284
|
return publishValue(fieldValueManager.updateDateInValue(value, section, newActiveDate));
|
|
285
285
|
}
|
|
@@ -8,6 +8,7 @@ exports.PickerFieldPrivateContext = void 0;
|
|
|
8
8
|
exports.useNullableFieldPrivateContext = useNullableFieldPrivateContext;
|
|
9
9
|
var React = _interopRequireWildcard(require("react"));
|
|
10
10
|
const PickerFieldPrivateContext = exports.PickerFieldPrivateContext = /*#__PURE__*/React.createContext(null);
|
|
11
|
+
if (process.env.NODE_ENV !== "production") PickerFieldPrivateContext.displayName = "PickerFieldPrivateContext";
|
|
11
12
|
function useNullableFieldPrivateContext() {
|
|
12
13
|
return React.useContext(PickerFieldPrivateContext);
|
|
13
14
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mui/x-date-pickers",
|
|
3
|
-
"version": "8.
|
|
3
|
+
"version": "8.5.0",
|
|
4
4
|
"author": "MUI Team",
|
|
5
5
|
"description": "The community edition of the MUI X Date and Time Picker components.",
|
|
6
6
|
"main": "./index.js",
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"clsx": "^2.1.1",
|
|
42
42
|
"prop-types": "^15.8.1",
|
|
43
43
|
"react-transition-group": "^4.4.5",
|
|
44
|
-
"@mui/x-internals": "8.
|
|
44
|
+
"@mui/x-internals": "8.5.0"
|
|
45
45
|
},
|
|
46
46
|
"peerDependencies": {
|
|
47
47
|
"@emotion/react": "^11.9.0",
|
|
@@ -71,6 +71,7 @@ const renderTimeViewClock = ({
|
|
|
71
71
|
timezone: timezone
|
|
72
72
|
});
|
|
73
73
|
exports.renderTimeViewClock = renderTimeViewClock;
|
|
74
|
+
if (process.env.NODE_ENV !== "production") renderTimeViewClock.displayName = "renderTimeViewClock";
|
|
74
75
|
const renderDigitalClockTimeView = ({
|
|
75
76
|
view,
|
|
76
77
|
onViewChange,
|
|
@@ -131,6 +132,7 @@ const renderDigitalClockTimeView = ({
|
|
|
131
132
|
timezone: timezone
|
|
132
133
|
});
|
|
133
134
|
exports.renderDigitalClockTimeView = renderDigitalClockTimeView;
|
|
135
|
+
if (process.env.NODE_ENV !== "production") renderDigitalClockTimeView.displayName = "renderDigitalClockTimeView";
|
|
134
136
|
const renderMultiSectionDigitalClockTimeView = ({
|
|
135
137
|
view,
|
|
136
138
|
onViewChange,
|
|
@@ -190,4 +192,5 @@ const renderMultiSectionDigitalClockTimeView = ({
|
|
|
190
192
|
skipDisabled: skipDisabled,
|
|
191
193
|
timezone: timezone
|
|
192
194
|
});
|
|
193
|
-
exports.renderMultiSectionDigitalClockTimeView = renderMultiSectionDigitalClockTimeView;
|
|
195
|
+
exports.renderMultiSectionDigitalClockTimeView = renderMultiSectionDigitalClockTimeView;
|
|
196
|
+
if (process.env.NODE_ENV !== "production") renderMultiSectionDigitalClockTimeView.displayName = "renderMultiSectionDigitalClockTimeView";
|