@mui/x-date-pickers 7.17.0 → 7.18.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/AdapterDateFns/AdapterDateFns.js +1 -1
- package/AdapterDateFnsV3/AdapterDateFnsV3.js +1 -1
- package/CHANGELOG.md +98 -5
- package/DateCalendar/DateCalendar.js +9 -1
- package/DatePicker/DatePicker.js +6 -0
- package/DatePicker/DatePicker.types.d.ts +5 -5
- package/DateTimePicker/DateTimePicker.js +6 -0
- package/DateTimePicker/DateTimePicker.types.d.ts +7 -6
- package/DesktopDatePicker/DesktopDatePicker.js +6 -0
- package/DesktopDatePicker/DesktopDatePicker.types.d.ts +7 -6
- package/DesktopDateTimePicker/DesktopDateTimePicker.js +6 -0
- package/DesktopDateTimePicker/DesktopDateTimePicker.types.d.ts +11 -10
- package/MobileDatePicker/MobileDatePicker.js +6 -0
- package/MobileDatePicker/MobileDatePicker.types.d.ts +5 -0
- package/MobileDateTimePicker/MobileDateTimePicker.js +6 -0
- package/MonthCalendar/MonthCalendar.types.d.ts +1 -1
- package/PickersCalendarHeader/PickersCalendarHeader.types.d.ts +1 -1
- package/StaticDatePicker/StaticDatePicker.js +7 -1
- package/StaticDatePicker/StaticDatePicker.types.d.ts +5 -0
- package/StaticDateTimePicker/StaticDateTimePicker.js +7 -1
- package/StaticDateTimePicker/StaticDateTimePicker.types.d.ts +5 -0
- package/YearCalendar/YearCalendar.js +19 -6
- package/YearCalendar/YearCalendar.types.d.ts +7 -1
- package/dateViewRenderers/dateViewRenderers.d.ts +1 -1
- package/dateViewRenderers/dateViewRenderers.js +2 -0
- package/index.js +1 -1
- package/modern/AdapterDateFns/AdapterDateFns.js +1 -1
- package/modern/AdapterDateFnsV3/AdapterDateFnsV3.js +1 -1
- package/modern/DateCalendar/DateCalendar.js +9 -1
- package/modern/DatePicker/DatePicker.js +6 -0
- package/modern/DateTimePicker/DateTimePicker.js +6 -0
- package/modern/DesktopDatePicker/DesktopDatePicker.js +6 -0
- package/modern/DesktopDateTimePicker/DesktopDateTimePicker.js +6 -0
- package/modern/MobileDatePicker/MobileDatePicker.js +6 -0
- package/modern/MobileDateTimePicker/MobileDateTimePicker.js +6 -0
- package/modern/StaticDatePicker/StaticDatePicker.js +7 -1
- package/modern/StaticDateTimePicker/StaticDateTimePicker.js +7 -1
- package/modern/YearCalendar/YearCalendar.js +19 -6
- package/modern/dateViewRenderers/dateViewRenderers.js +2 -0
- package/modern/index.js +1 -1
- package/node/AdapterDateFns/AdapterDateFns.js +1 -1
- package/node/AdapterDateFnsV3/AdapterDateFnsV3.js +1 -1
- package/node/DateCalendar/DateCalendar.js +9 -1
- package/node/DatePicker/DatePicker.js +6 -0
- package/node/DateTimePicker/DateTimePicker.js +6 -0
- package/node/DesktopDatePicker/DesktopDatePicker.js +6 -0
- package/node/DesktopDateTimePicker/DesktopDateTimePicker.js +6 -0
- package/node/MobileDatePicker/MobileDatePicker.js +6 -0
- package/node/MobileDateTimePicker/MobileDateTimePicker.js +6 -0
- package/node/StaticDatePicker/StaticDatePicker.js +7 -1
- package/node/StaticDateTimePicker/StaticDateTimePicker.js +7 -1
- package/node/YearCalendar/YearCalendar.js +19 -6
- package/node/dateViewRenderers/dateViewRenderers.js +2 -0
- package/node/index.js +1 -1
- package/package.json +4 -4
|
@@ -82,7 +82,7 @@ export class AdapterDateFns extends AdapterDateFnsBase {
|
|
|
82
82
|
/* istanbul ignore next */
|
|
83
83
|
if (process.env.NODE_ENV !== 'production') {
|
|
84
84
|
if (typeof addDays !== 'function') {
|
|
85
|
-
throw new Error([`MUI: The \`date-fns\` package v2.x is not compatible with this adapter.`, 'Please, install v3.x of the package or use the `AdapterDateFns` instead.'].join('\n'));
|
|
85
|
+
throw new Error([`MUI: The \`date-fns\` package v2.x is not compatible with this adapter.`, 'Please, install v3.x or v4.x of the package or use the `AdapterDateFns` instead.'].join('\n'));
|
|
86
86
|
}
|
|
87
87
|
if (!longFormatters) {
|
|
88
88
|
throw new Error('MUI: The minimum supported `date-fns` package version compatible with this adapter is `3.2.x`.');
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
4
4
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
5
|
-
const _excluded = ["autoFocus", "onViewChange", "value", "defaultValue", "referenceDate", "disableFuture", "disablePast", "onChange", "onYearChange", "onMonthChange", "reduceAnimations", "shouldDisableDate", "shouldDisableMonth", "shouldDisableYear", "view", "views", "openTo", "className", "disabled", "readOnly", "minDate", "maxDate", "disableHighlightToday", "focusedView", "onFocusedViewChange", "showDaysOutsideCurrentMonth", "fixedWeekNumber", "dayOfWeekFormatter", "slots", "slotProps", "loading", "renderLoading", "displayWeekNumber", "yearsPerRow", "monthsPerRow", "timezone"];
|
|
5
|
+
const _excluded = ["autoFocus", "onViewChange", "value", "defaultValue", "referenceDate", "disableFuture", "disablePast", "onChange", "onYearChange", "onMonthChange", "reduceAnimations", "shouldDisableDate", "shouldDisableMonth", "shouldDisableYear", "view", "views", "openTo", "className", "disabled", "readOnly", "minDate", "maxDate", "disableHighlightToday", "focusedView", "onFocusedViewChange", "showDaysOutsideCurrentMonth", "fixedWeekNumber", "dayOfWeekFormatter", "slots", "slotProps", "loading", "renderLoading", "displayWeekNumber", "yearsOrder", "yearsPerRow", "monthsPerRow", "timezone"];
|
|
6
6
|
import * as React from 'react';
|
|
7
7
|
import PropTypes from 'prop-types';
|
|
8
8
|
import clsx from 'clsx';
|
|
@@ -120,6 +120,7 @@ export const DateCalendar = /*#__PURE__*/React.forwardRef(function DateCalendar(
|
|
|
120
120
|
loading,
|
|
121
121
|
renderLoading,
|
|
122
122
|
displayWeekNumber,
|
|
123
|
+
yearsOrder,
|
|
123
124
|
yearsPerRow,
|
|
124
125
|
monthsPerRow,
|
|
125
126
|
timezone: timezoneProp
|
|
@@ -311,6 +312,7 @@ export const DateCalendar = /*#__PURE__*/React.forwardRef(function DateCalendar(
|
|
|
311
312
|
shouldDisableYear: shouldDisableYear,
|
|
312
313
|
hasFocus: hasFocus,
|
|
313
314
|
onFocusedViewChange: isViewFocused => setFocusedView('year', isViewFocused),
|
|
315
|
+
yearsOrder: yearsOrder,
|
|
314
316
|
yearsPerRow: yearsPerRow,
|
|
315
317
|
referenceDate: referenceDate
|
|
316
318
|
})), view === 'month' && /*#__PURE__*/_jsx(MonthCalendar, _extends({}, baseDateValidationProps, commonViewProps, {
|
|
@@ -560,6 +562,12 @@ process.env.NODE_ENV !== "production" ? DateCalendar.propTypes = {
|
|
|
560
562
|
* Available views.
|
|
561
563
|
*/
|
|
562
564
|
views: PropTypes.arrayOf(PropTypes.oneOf(['day', 'month', 'year']).isRequired),
|
|
565
|
+
/**
|
|
566
|
+
* Years are displayed in ascending (chronological) order by default.
|
|
567
|
+
* If `desc`, years are displayed in descending order.
|
|
568
|
+
* @default 'asc'
|
|
569
|
+
*/
|
|
570
|
+
yearsOrder: PropTypes.oneOf(['asc', 'desc']),
|
|
563
571
|
/**
|
|
564
572
|
* Years rendered per row.
|
|
565
573
|
* @default 3
|
|
@@ -351,6 +351,12 @@ process.env.NODE_ENV !== "production" ? DatePicker.propTypes = {
|
|
|
351
351
|
* Available views.
|
|
352
352
|
*/
|
|
353
353
|
views: PropTypes.arrayOf(PropTypes.oneOf(['day', 'month', 'year']).isRequired),
|
|
354
|
+
/**
|
|
355
|
+
* Years are displayed in ascending (chronological) order by default.
|
|
356
|
+
* If `desc`, years are displayed in descending order.
|
|
357
|
+
* @default 'asc'
|
|
358
|
+
*/
|
|
359
|
+
yearsOrder: PropTypes.oneOf(['asc', 'desc']),
|
|
354
360
|
/**
|
|
355
361
|
* Years rendered per row.
|
|
356
362
|
* @default 4 on desktop, 3 on mobile
|
|
@@ -422,6 +422,12 @@ process.env.NODE_ENV !== "production" ? DateTimePicker.propTypes = {
|
|
|
422
422
|
* Available views.
|
|
423
423
|
*/
|
|
424
424
|
views: PropTypes.arrayOf(PropTypes.oneOf(['day', 'hours', 'minutes', 'month', 'seconds', 'year']).isRequired),
|
|
425
|
+
/**
|
|
426
|
+
* Years are displayed in ascending (chronological) order by default.
|
|
427
|
+
* If `desc`, years are displayed in descending order.
|
|
428
|
+
* @default 'asc'
|
|
429
|
+
*/
|
|
430
|
+
yearsOrder: PropTypes.oneOf(['asc', 'desc']),
|
|
425
431
|
/**
|
|
426
432
|
* Years rendered per row.
|
|
427
433
|
* @default 4 on desktop, 3 on mobile
|
|
@@ -372,6 +372,12 @@ DesktopDatePicker.propTypes = {
|
|
|
372
372
|
* Available views.
|
|
373
373
|
*/
|
|
374
374
|
views: PropTypes.arrayOf(PropTypes.oneOf(['day', 'month', 'year']).isRequired),
|
|
375
|
+
/**
|
|
376
|
+
* Years are displayed in ascending (chronological) order by default.
|
|
377
|
+
* If `desc`, years are displayed in descending order.
|
|
378
|
+
* @default 'asc'
|
|
379
|
+
*/
|
|
380
|
+
yearsOrder: PropTypes.oneOf(['asc', 'desc']),
|
|
375
381
|
/**
|
|
376
382
|
* Years rendered per row.
|
|
377
383
|
* @default 4
|
|
@@ -530,6 +530,12 @@ DesktopDateTimePicker.propTypes = {
|
|
|
530
530
|
* Available views.
|
|
531
531
|
*/
|
|
532
532
|
views: PropTypes.arrayOf(PropTypes.oneOf(['day', 'hours', 'minutes', 'month', 'seconds', 'year']).isRequired),
|
|
533
|
+
/**
|
|
534
|
+
* Years are displayed in ascending (chronological) order by default.
|
|
535
|
+
* If `desc`, years are displayed in descending order.
|
|
536
|
+
* @default 'asc'
|
|
537
|
+
*/
|
|
538
|
+
yearsOrder: PropTypes.oneOf(['asc', 'desc']),
|
|
533
539
|
/**
|
|
534
540
|
* Years rendered per row.
|
|
535
541
|
* @default 4
|
|
@@ -369,6 +369,12 @@ MobileDatePicker.propTypes = {
|
|
|
369
369
|
* Available views.
|
|
370
370
|
*/
|
|
371
371
|
views: PropTypes.arrayOf(PropTypes.oneOf(['day', 'month', 'year']).isRequired),
|
|
372
|
+
/**
|
|
373
|
+
* Years are displayed in ascending (chronological) order by default.
|
|
374
|
+
* If `desc`, years are displayed in descending order.
|
|
375
|
+
* @default 'asc'
|
|
376
|
+
*/
|
|
377
|
+
yearsOrder: PropTypes.oneOf(['asc', 'desc']),
|
|
372
378
|
/**
|
|
373
379
|
* Years rendered per row.
|
|
374
380
|
* @default 3
|
|
@@ -428,6 +428,12 @@ MobileDateTimePicker.propTypes = {
|
|
|
428
428
|
* Available views.
|
|
429
429
|
*/
|
|
430
430
|
views: PropTypes.arrayOf(PropTypes.oneOf(['day', 'hours', 'minutes', 'month', 'seconds', 'year']).isRequired),
|
|
431
|
+
/**
|
|
432
|
+
* Years are displayed in ascending (chronological) order by default.
|
|
433
|
+
* If `desc`, years are displayed in descending order.
|
|
434
|
+
* @default 'asc'
|
|
435
|
+
*/
|
|
436
|
+
yearsOrder: PropTypes.oneOf(['asc', 'desc']),
|
|
431
437
|
/**
|
|
432
438
|
* Years rendered per row.
|
|
433
439
|
* @default 3
|
|
@@ -293,9 +293,15 @@ StaticDatePicker.propTypes = {
|
|
|
293
293
|
* Available views.
|
|
294
294
|
*/
|
|
295
295
|
views: PropTypes.arrayOf(PropTypes.oneOf(['day', 'month', 'year']).isRequired),
|
|
296
|
+
/**
|
|
297
|
+
* Years are displayed in ascending (chronological) order by default.
|
|
298
|
+
* If `desc`, years are displayed in descending order.
|
|
299
|
+
* @default 'asc'
|
|
300
|
+
*/
|
|
301
|
+
yearsOrder: PropTypes.oneOf(['asc', 'desc']),
|
|
296
302
|
/**
|
|
297
303
|
* Years rendered per row.
|
|
298
|
-
* @default 3
|
|
304
|
+
* @default `4` when `displayStaticWrapperAs === 'desktop'`, `3` otherwise.
|
|
299
305
|
*/
|
|
300
306
|
yearsPerRow: PropTypes.oneOf([3, 4])
|
|
301
307
|
};
|
|
@@ -352,9 +352,15 @@ StaticDateTimePicker.propTypes = {
|
|
|
352
352
|
* Available views.
|
|
353
353
|
*/
|
|
354
354
|
views: PropTypes.arrayOf(PropTypes.oneOf(['day', 'hours', 'minutes', 'month', 'seconds', 'year']).isRequired),
|
|
355
|
+
/**
|
|
356
|
+
* Years are displayed in ascending (chronological) order by default.
|
|
357
|
+
* If `desc`, years are displayed in descending order.
|
|
358
|
+
* @default 'asc'
|
|
359
|
+
*/
|
|
360
|
+
yearsOrder: PropTypes.oneOf(['asc', 'desc']),
|
|
355
361
|
/**
|
|
356
362
|
* Years rendered per row.
|
|
357
|
-
* @default 3
|
|
363
|
+
* @default `4` when `displayStaticWrapperAs === 'desktop'`, `3` otherwise.
|
|
358
364
|
*/
|
|
359
365
|
yearsPerRow: PropTypes.oneOf([3, 4])
|
|
360
366
|
};
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
4
4
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
5
|
-
const _excluded = ["autoFocus", "className", "value", "defaultValue", "referenceDate", "disabled", "disableFuture", "disablePast", "maxDate", "minDate", "onChange", "readOnly", "shouldDisableYear", "disableHighlightToday", "onYearFocus", "hasFocus", "onFocusedViewChange", "yearsPerRow", "timezone", "gridLabelId", "slots", "slotProps"];
|
|
5
|
+
const _excluded = ["autoFocus", "className", "value", "defaultValue", "referenceDate", "disabled", "disableFuture", "disablePast", "maxDate", "minDate", "onChange", "readOnly", "shouldDisableYear", "disableHighlightToday", "onYearFocus", "hasFocus", "onFocusedViewChange", "yearsOrder", "yearsPerRow", "timezone", "gridLabelId", "slots", "slotProps"];
|
|
6
6
|
import * as React from 'react';
|
|
7
7
|
import PropTypes from 'prop-types';
|
|
8
8
|
import clsx from 'clsx';
|
|
@@ -88,6 +88,7 @@ export const YearCalendar = /*#__PURE__*/React.forwardRef(function YearCalendar(
|
|
|
88
88
|
onYearFocus,
|
|
89
89
|
hasFocus,
|
|
90
90
|
onFocusedViewChange,
|
|
91
|
+
yearsOrder = 'asc',
|
|
91
92
|
yearsPerRow,
|
|
92
93
|
timezone: timezoneProp,
|
|
93
94
|
gridLabelId,
|
|
@@ -177,22 +178,24 @@ export const YearCalendar = /*#__PURE__*/React.forwardRef(function YearCalendar(
|
|
|
177
178
|
React.useEffect(() => {
|
|
178
179
|
setFocusedYear(prevFocusedYear => selectedYear !== null && prevFocusedYear !== selectedYear ? selectedYear : prevFocusedYear);
|
|
179
180
|
}, [selectedYear]);
|
|
181
|
+
const verticalDirection = yearsOrder !== 'desc' ? yearsPerRow * 1 : yearsPerRow * -1;
|
|
182
|
+
const horizontalDirection = isRtl || yearsOrder === 'desc' ? -1 : 1;
|
|
180
183
|
const handleKeyDown = useEventCallback((event, year) => {
|
|
181
184
|
switch (event.key) {
|
|
182
185
|
case 'ArrowUp':
|
|
183
|
-
focusYear(year -
|
|
186
|
+
focusYear(year - verticalDirection);
|
|
184
187
|
event.preventDefault();
|
|
185
188
|
break;
|
|
186
189
|
case 'ArrowDown':
|
|
187
|
-
focusYear(year +
|
|
190
|
+
focusYear(year + verticalDirection);
|
|
188
191
|
event.preventDefault();
|
|
189
192
|
break;
|
|
190
193
|
case 'ArrowLeft':
|
|
191
|
-
focusYear(year
|
|
194
|
+
focusYear(year - horizontalDirection);
|
|
192
195
|
event.preventDefault();
|
|
193
196
|
break;
|
|
194
197
|
case 'ArrowRight':
|
|
195
|
-
focusYear(year +
|
|
198
|
+
focusYear(year + horizontalDirection);
|
|
196
199
|
event.preventDefault();
|
|
197
200
|
break;
|
|
198
201
|
default:
|
|
@@ -230,6 +233,10 @@ export const YearCalendar = /*#__PURE__*/React.forwardRef(function YearCalendar(
|
|
|
230
233
|
}
|
|
231
234
|
scrollerRef.current.scrollTop = elementBottom - clientHeight / 2 - offsetHeight / 2;
|
|
232
235
|
}, [autoFocus]);
|
|
236
|
+
const yearRange = utils.getYearRange([minDate, maxDate]);
|
|
237
|
+
if (yearsOrder === 'desc') {
|
|
238
|
+
yearRange.reverse();
|
|
239
|
+
}
|
|
233
240
|
return /*#__PURE__*/_jsx(YearCalendarRoot, _extends({
|
|
234
241
|
ref: handleRef,
|
|
235
242
|
className: clsx(classes.root, className),
|
|
@@ -237,7 +244,7 @@ export const YearCalendar = /*#__PURE__*/React.forwardRef(function YearCalendar(
|
|
|
237
244
|
role: "radiogroup",
|
|
238
245
|
"aria-labelledby": gridLabelId
|
|
239
246
|
}, other, {
|
|
240
|
-
children:
|
|
247
|
+
children: yearRange.map(year => {
|
|
241
248
|
const yearNumber = utils.getYear(year);
|
|
242
249
|
const isSelected = yearNumber === selectedYear;
|
|
243
250
|
const isDisabled = disabled || isYearDisabled(year);
|
|
@@ -358,6 +365,12 @@ process.env.NODE_ENV !== "production" ? YearCalendar.propTypes = {
|
|
|
358
365
|
* Used when the component is controlled.
|
|
359
366
|
*/
|
|
360
367
|
value: PropTypes.object,
|
|
368
|
+
/**
|
|
369
|
+
* Years are displayed in ascending (chronological) order by default.
|
|
370
|
+
* If `desc`, years are displayed in descending order.
|
|
371
|
+
* @default 'asc'
|
|
372
|
+
*/
|
|
373
|
+
yearsOrder: PropTypes.oneOf(['asc', 'desc']),
|
|
361
374
|
/**
|
|
362
375
|
* Years rendered per row.
|
|
363
376
|
* @default 3
|
|
@@ -25,6 +25,7 @@ export const renderDateViewCalendar = ({
|
|
|
25
25
|
onMonthChange,
|
|
26
26
|
monthsPerRow,
|
|
27
27
|
onYearChange,
|
|
28
|
+
yearsOrder,
|
|
28
29
|
yearsPerRow,
|
|
29
30
|
slots,
|
|
30
31
|
slotProps,
|
|
@@ -63,6 +64,7 @@ export const renderDateViewCalendar = ({
|
|
|
63
64
|
onMonthChange: onMonthChange,
|
|
64
65
|
monthsPerRow: monthsPerRow,
|
|
65
66
|
onYearChange: onYearChange,
|
|
67
|
+
yearsOrder: yearsOrder,
|
|
66
68
|
yearsPerRow: yearsPerRow,
|
|
67
69
|
slots: slots,
|
|
68
70
|
slotProps: slotProps,
|
package/modern/index.js
CHANGED
|
@@ -87,7 +87,7 @@ class AdapterDateFns extends _AdapterDateFnsBase.AdapterDateFnsBase {
|
|
|
87
87
|
/* istanbul ignore next */
|
|
88
88
|
if (process.env.NODE_ENV !== 'production') {
|
|
89
89
|
if (typeof _addDays.default !== 'function') {
|
|
90
|
-
throw new Error(['MUI:
|
|
90
|
+
throw new Error(['MUI: This adapter is only compatible with `date-fns` v2.x package versions.', 'Please, install v2.x of the package or use the `AdapterDateFnsV3` instead.'].join('\n'));
|
|
91
91
|
}
|
|
92
92
|
}
|
|
93
93
|
super({
|
|
@@ -90,7 +90,7 @@ class AdapterDateFns extends _AdapterDateFnsBase.AdapterDateFnsBase {
|
|
|
90
90
|
/* istanbul ignore next */
|
|
91
91
|
if (process.env.NODE_ENV !== 'production') {
|
|
92
92
|
if (typeof _addDays.addDays !== 'function') {
|
|
93
|
-
throw new Error([`MUI: The \`date-fns\` package v2.x is not compatible with this adapter.`, 'Please, install v3.x of the package or use the `AdapterDateFns` instead.'].join('\n'));
|
|
93
|
+
throw new Error([`MUI: The \`date-fns\` package v2.x is not compatible with this adapter.`, 'Please, install v3.x or v4.x of the package or use the `AdapterDateFns` instead.'].join('\n'));
|
|
94
94
|
}
|
|
95
95
|
if (!_format.longFormatters) {
|
|
96
96
|
throw new Error('MUI: The minimum supported `date-fns` package version compatible with this adapter is `3.2.x`.');
|
|
@@ -31,7 +31,7 @@ var _useValueWithTimezone = require("../internals/hooks/useValueWithTimezone");
|
|
|
31
31
|
var _valueManagers = require("../internals/utils/valueManagers");
|
|
32
32
|
var _dimensions = require("../internals/constants/dimensions");
|
|
33
33
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
34
|
-
const _excluded = ["autoFocus", "onViewChange", "value", "defaultValue", "referenceDate", "disableFuture", "disablePast", "onChange", "onYearChange", "onMonthChange", "reduceAnimations", "shouldDisableDate", "shouldDisableMonth", "shouldDisableYear", "view", "views", "openTo", "className", "disabled", "readOnly", "minDate", "maxDate", "disableHighlightToday", "focusedView", "onFocusedViewChange", "showDaysOutsideCurrentMonth", "fixedWeekNumber", "dayOfWeekFormatter", "slots", "slotProps", "loading", "renderLoading", "displayWeekNumber", "yearsPerRow", "monthsPerRow", "timezone"];
|
|
34
|
+
const _excluded = ["autoFocus", "onViewChange", "value", "defaultValue", "referenceDate", "disableFuture", "disablePast", "onChange", "onYearChange", "onMonthChange", "reduceAnimations", "shouldDisableDate", "shouldDisableMonth", "shouldDisableYear", "view", "views", "openTo", "className", "disabled", "readOnly", "minDate", "maxDate", "disableHighlightToday", "focusedView", "onFocusedViewChange", "showDaysOutsideCurrentMonth", "fixedWeekNumber", "dayOfWeekFormatter", "slots", "slotProps", "loading", "renderLoading", "displayWeekNumber", "yearsOrder", "yearsPerRow", "monthsPerRow", "timezone"];
|
|
35
35
|
const useUtilityClasses = ownerState => {
|
|
36
36
|
const {
|
|
37
37
|
classes
|
|
@@ -127,6 +127,7 @@ const DateCalendar = exports.DateCalendar = /*#__PURE__*/React.forwardRef(functi
|
|
|
127
127
|
loading,
|
|
128
128
|
renderLoading,
|
|
129
129
|
displayWeekNumber,
|
|
130
|
+
yearsOrder,
|
|
130
131
|
yearsPerRow,
|
|
131
132
|
monthsPerRow,
|
|
132
133
|
timezone: timezoneProp
|
|
@@ -318,6 +319,7 @@ const DateCalendar = exports.DateCalendar = /*#__PURE__*/React.forwardRef(functi
|
|
|
318
319
|
shouldDisableYear: shouldDisableYear,
|
|
319
320
|
hasFocus: hasFocus,
|
|
320
321
|
onFocusedViewChange: isViewFocused => setFocusedView('year', isViewFocused),
|
|
322
|
+
yearsOrder: yearsOrder,
|
|
321
323
|
yearsPerRow: yearsPerRow,
|
|
322
324
|
referenceDate: referenceDate
|
|
323
325
|
})), view === 'month' && /*#__PURE__*/(0, _jsxRuntime.jsx)(_MonthCalendar.MonthCalendar, (0, _extends2.default)({}, baseDateValidationProps, commonViewProps, {
|
|
@@ -567,6 +569,12 @@ process.env.NODE_ENV !== "production" ? DateCalendar.propTypes = {
|
|
|
567
569
|
* Available views.
|
|
568
570
|
*/
|
|
569
571
|
views: _propTypes.default.arrayOf(_propTypes.default.oneOf(['day', 'month', 'year']).isRequired),
|
|
572
|
+
/**
|
|
573
|
+
* Years are displayed in ascending (chronological) order by default.
|
|
574
|
+
* If `desc`, years are displayed in descending order.
|
|
575
|
+
* @default 'asc'
|
|
576
|
+
*/
|
|
577
|
+
yearsOrder: _propTypes.default.oneOf(['asc', 'desc']),
|
|
570
578
|
/**
|
|
571
579
|
* Years rendered per row.
|
|
572
580
|
* @default 3
|
|
@@ -358,6 +358,12 @@ process.env.NODE_ENV !== "production" ? DatePicker.propTypes = {
|
|
|
358
358
|
* Available views.
|
|
359
359
|
*/
|
|
360
360
|
views: _propTypes.default.arrayOf(_propTypes.default.oneOf(['day', 'month', 'year']).isRequired),
|
|
361
|
+
/**
|
|
362
|
+
* Years are displayed in ascending (chronological) order by default.
|
|
363
|
+
* If `desc`, years are displayed in descending order.
|
|
364
|
+
* @default 'asc'
|
|
365
|
+
*/
|
|
366
|
+
yearsOrder: _propTypes.default.oneOf(['asc', 'desc']),
|
|
361
367
|
/**
|
|
362
368
|
* Years rendered per row.
|
|
363
369
|
* @default 4 on desktop, 3 on mobile
|
|
@@ -429,6 +429,12 @@ process.env.NODE_ENV !== "production" ? DateTimePicker.propTypes = {
|
|
|
429
429
|
* Available views.
|
|
430
430
|
*/
|
|
431
431
|
views: _propTypes.default.arrayOf(_propTypes.default.oneOf(['day', 'hours', 'minutes', 'month', 'seconds', 'year']).isRequired),
|
|
432
|
+
/**
|
|
433
|
+
* Years are displayed in ascending (chronological) order by default.
|
|
434
|
+
* If `desc`, years are displayed in descending order.
|
|
435
|
+
* @default 'asc'
|
|
436
|
+
*/
|
|
437
|
+
yearsOrder: _propTypes.default.oneOf(['asc', 'desc']),
|
|
432
438
|
/**
|
|
433
439
|
* Years rendered per row.
|
|
434
440
|
* @default 4 on desktop, 3 on mobile
|
|
@@ -379,6 +379,12 @@ DesktopDatePicker.propTypes = {
|
|
|
379
379
|
* Available views.
|
|
380
380
|
*/
|
|
381
381
|
views: _propTypes.default.arrayOf(_propTypes.default.oneOf(['day', 'month', 'year']).isRequired),
|
|
382
|
+
/**
|
|
383
|
+
* Years are displayed in ascending (chronological) order by default.
|
|
384
|
+
* If `desc`, years are displayed in descending order.
|
|
385
|
+
* @default 'asc'
|
|
386
|
+
*/
|
|
387
|
+
yearsOrder: _propTypes.default.oneOf(['asc', 'desc']),
|
|
382
388
|
/**
|
|
383
389
|
* Years rendered per row.
|
|
384
390
|
* @default 4
|
|
@@ -537,6 +537,12 @@ DesktopDateTimePicker.propTypes = {
|
|
|
537
537
|
* Available views.
|
|
538
538
|
*/
|
|
539
539
|
views: _propTypes.default.arrayOf(_propTypes.default.oneOf(['day', 'hours', 'minutes', 'month', 'seconds', 'year']).isRequired),
|
|
540
|
+
/**
|
|
541
|
+
* Years are displayed in ascending (chronological) order by default.
|
|
542
|
+
* If `desc`, years are displayed in descending order.
|
|
543
|
+
* @default 'asc'
|
|
544
|
+
*/
|
|
545
|
+
yearsOrder: _propTypes.default.oneOf(['asc', 'desc']),
|
|
540
546
|
/**
|
|
541
547
|
* Years rendered per row.
|
|
542
548
|
* @default 4
|
|
@@ -376,6 +376,12 @@ MobileDatePicker.propTypes = {
|
|
|
376
376
|
* Available views.
|
|
377
377
|
*/
|
|
378
378
|
views: _propTypes.default.arrayOf(_propTypes.default.oneOf(['day', 'month', 'year']).isRequired),
|
|
379
|
+
/**
|
|
380
|
+
* Years are displayed in ascending (chronological) order by default.
|
|
381
|
+
* If `desc`, years are displayed in descending order.
|
|
382
|
+
* @default 'asc'
|
|
383
|
+
*/
|
|
384
|
+
yearsOrder: _propTypes.default.oneOf(['asc', 'desc']),
|
|
379
385
|
/**
|
|
380
386
|
* Years rendered per row.
|
|
381
387
|
* @default 3
|
|
@@ -435,6 +435,12 @@ MobileDateTimePicker.propTypes = {
|
|
|
435
435
|
* Available views.
|
|
436
436
|
*/
|
|
437
437
|
views: _propTypes.default.arrayOf(_propTypes.default.oneOf(['day', 'hours', 'minutes', 'month', 'seconds', 'year']).isRequired),
|
|
438
|
+
/**
|
|
439
|
+
* Years are displayed in ascending (chronological) order by default.
|
|
440
|
+
* If `desc`, years are displayed in descending order.
|
|
441
|
+
* @default 'asc'
|
|
442
|
+
*/
|
|
443
|
+
yearsOrder: _propTypes.default.oneOf(['asc', 'desc']),
|
|
438
444
|
/**
|
|
439
445
|
* Years rendered per row.
|
|
440
446
|
* @default 3
|
|
@@ -300,9 +300,15 @@ StaticDatePicker.propTypes = {
|
|
|
300
300
|
* Available views.
|
|
301
301
|
*/
|
|
302
302
|
views: _propTypes.default.arrayOf(_propTypes.default.oneOf(['day', 'month', 'year']).isRequired),
|
|
303
|
+
/**
|
|
304
|
+
* Years are displayed in ascending (chronological) order by default.
|
|
305
|
+
* If `desc`, years are displayed in descending order.
|
|
306
|
+
* @default 'asc'
|
|
307
|
+
*/
|
|
308
|
+
yearsOrder: _propTypes.default.oneOf(['asc', 'desc']),
|
|
303
309
|
/**
|
|
304
310
|
* Years rendered per row.
|
|
305
|
-
* @default 3
|
|
311
|
+
* @default `4` when `displayStaticWrapperAs === 'desktop'`, `3` otherwise.
|
|
306
312
|
*/
|
|
307
313
|
yearsPerRow: _propTypes.default.oneOf([3, 4])
|
|
308
314
|
};
|
|
@@ -359,9 +359,15 @@ StaticDateTimePicker.propTypes = {
|
|
|
359
359
|
* Available views.
|
|
360
360
|
*/
|
|
361
361
|
views: _propTypes.default.arrayOf(_propTypes.default.oneOf(['day', 'hours', 'minutes', 'month', 'seconds', 'year']).isRequired),
|
|
362
|
+
/**
|
|
363
|
+
* Years are displayed in ascending (chronological) order by default.
|
|
364
|
+
* If `desc`, years are displayed in descending order.
|
|
365
|
+
* @default 'asc'
|
|
366
|
+
*/
|
|
367
|
+
yearsOrder: _propTypes.default.oneOf(['asc', 'desc']),
|
|
362
368
|
/**
|
|
363
369
|
* Years rendered per row.
|
|
364
|
-
* @default 3
|
|
370
|
+
* @default `4` when `displayStaticWrapperAs === 'desktop'`, `3` otherwise.
|
|
365
371
|
*/
|
|
366
372
|
yearsPerRow: _propTypes.default.oneOf([3, 4])
|
|
367
373
|
};
|
|
@@ -24,7 +24,7 @@ var _getDefaultReferenceDate = require("../internals/utils/getDefaultReferenceDa
|
|
|
24
24
|
var _useValueWithTimezone = require("../internals/hooks/useValueWithTimezone");
|
|
25
25
|
var _dimensions = require("../internals/constants/dimensions");
|
|
26
26
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
27
|
-
const _excluded = ["autoFocus", "className", "value", "defaultValue", "referenceDate", "disabled", "disableFuture", "disablePast", "maxDate", "minDate", "onChange", "readOnly", "shouldDisableYear", "disableHighlightToday", "onYearFocus", "hasFocus", "onFocusedViewChange", "yearsPerRow", "timezone", "gridLabelId", "slots", "slotProps"];
|
|
27
|
+
const _excluded = ["autoFocus", "className", "value", "defaultValue", "referenceDate", "disabled", "disableFuture", "disablePast", "maxDate", "minDate", "onChange", "readOnly", "shouldDisableYear", "disableHighlightToday", "onYearFocus", "hasFocus", "onFocusedViewChange", "yearsOrder", "yearsPerRow", "timezone", "gridLabelId", "slots", "slotProps"];
|
|
28
28
|
const useUtilityClasses = ownerState => {
|
|
29
29
|
const {
|
|
30
30
|
classes
|
|
@@ -95,6 +95,7 @@ const YearCalendar = exports.YearCalendar = /*#__PURE__*/React.forwardRef(functi
|
|
|
95
95
|
onYearFocus,
|
|
96
96
|
hasFocus,
|
|
97
97
|
onFocusedViewChange,
|
|
98
|
+
yearsOrder = 'asc',
|
|
98
99
|
yearsPerRow,
|
|
99
100
|
timezone: timezoneProp,
|
|
100
101
|
gridLabelId,
|
|
@@ -184,22 +185,24 @@ const YearCalendar = exports.YearCalendar = /*#__PURE__*/React.forwardRef(functi
|
|
|
184
185
|
React.useEffect(() => {
|
|
185
186
|
setFocusedYear(prevFocusedYear => selectedYear !== null && prevFocusedYear !== selectedYear ? selectedYear : prevFocusedYear);
|
|
186
187
|
}, [selectedYear]);
|
|
188
|
+
const verticalDirection = yearsOrder !== 'desc' ? yearsPerRow * 1 : yearsPerRow * -1;
|
|
189
|
+
const horizontalDirection = isRtl || yearsOrder === 'desc' ? -1 : 1;
|
|
187
190
|
const handleKeyDown = (0, _utils.unstable_useEventCallback)((event, year) => {
|
|
188
191
|
switch (event.key) {
|
|
189
192
|
case 'ArrowUp':
|
|
190
|
-
focusYear(year -
|
|
193
|
+
focusYear(year - verticalDirection);
|
|
191
194
|
event.preventDefault();
|
|
192
195
|
break;
|
|
193
196
|
case 'ArrowDown':
|
|
194
|
-
focusYear(year +
|
|
197
|
+
focusYear(year + verticalDirection);
|
|
195
198
|
event.preventDefault();
|
|
196
199
|
break;
|
|
197
200
|
case 'ArrowLeft':
|
|
198
|
-
focusYear(year
|
|
201
|
+
focusYear(year - horizontalDirection);
|
|
199
202
|
event.preventDefault();
|
|
200
203
|
break;
|
|
201
204
|
case 'ArrowRight':
|
|
202
|
-
focusYear(year +
|
|
205
|
+
focusYear(year + horizontalDirection);
|
|
203
206
|
event.preventDefault();
|
|
204
207
|
break;
|
|
205
208
|
default:
|
|
@@ -237,6 +240,10 @@ const YearCalendar = exports.YearCalendar = /*#__PURE__*/React.forwardRef(functi
|
|
|
237
240
|
}
|
|
238
241
|
scrollerRef.current.scrollTop = elementBottom - clientHeight / 2 - offsetHeight / 2;
|
|
239
242
|
}, [autoFocus]);
|
|
243
|
+
const yearRange = utils.getYearRange([minDate, maxDate]);
|
|
244
|
+
if (yearsOrder === 'desc') {
|
|
245
|
+
yearRange.reverse();
|
|
246
|
+
}
|
|
240
247
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(YearCalendarRoot, (0, _extends2.default)({
|
|
241
248
|
ref: handleRef,
|
|
242
249
|
className: (0, _clsx.default)(classes.root, className),
|
|
@@ -244,7 +251,7 @@ const YearCalendar = exports.YearCalendar = /*#__PURE__*/React.forwardRef(functi
|
|
|
244
251
|
role: "radiogroup",
|
|
245
252
|
"aria-labelledby": gridLabelId
|
|
246
253
|
}, other, {
|
|
247
|
-
children:
|
|
254
|
+
children: yearRange.map(year => {
|
|
248
255
|
const yearNumber = utils.getYear(year);
|
|
249
256
|
const isSelected = yearNumber === selectedYear;
|
|
250
257
|
const isDisabled = disabled || isYearDisabled(year);
|
|
@@ -365,6 +372,12 @@ process.env.NODE_ENV !== "production" ? YearCalendar.propTypes = {
|
|
|
365
372
|
* Used when the component is controlled.
|
|
366
373
|
*/
|
|
367
374
|
value: _propTypes.default.object,
|
|
375
|
+
/**
|
|
376
|
+
* Years are displayed in ascending (chronological) order by default.
|
|
377
|
+
* If `desc`, years are displayed in descending order.
|
|
378
|
+
* @default 'asc'
|
|
379
|
+
*/
|
|
380
|
+
yearsOrder: _propTypes.default.oneOf(['asc', 'desc']),
|
|
368
381
|
/**
|
|
369
382
|
* Years rendered per row.
|
|
370
383
|
* @default 3
|
|
@@ -32,6 +32,7 @@ const renderDateViewCalendar = ({
|
|
|
32
32
|
onMonthChange,
|
|
33
33
|
monthsPerRow,
|
|
34
34
|
onYearChange,
|
|
35
|
+
yearsOrder,
|
|
35
36
|
yearsPerRow,
|
|
36
37
|
slots,
|
|
37
38
|
slotProps,
|
|
@@ -70,6 +71,7 @@ const renderDateViewCalendar = ({
|
|
|
70
71
|
onMonthChange: onMonthChange,
|
|
71
72
|
monthsPerRow: monthsPerRow,
|
|
72
73
|
onYearChange: onYearChange,
|
|
74
|
+
yearsOrder: yearsOrder,
|
|
73
75
|
yearsPerRow: yearsPerRow,
|
|
74
76
|
slots: slots,
|
|
75
77
|
slotProps: slotProps,
|
package/node/index.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mui/x-date-pickers",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.18.0",
|
|
4
4
|
"description": "The community edition of the Date and Time Picker components (MUI X).",
|
|
5
5
|
"author": "MUI Team",
|
|
6
6
|
"main": "./node/index.js",
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
],
|
|
32
32
|
"repository": {
|
|
33
33
|
"type": "git",
|
|
34
|
-
"url": "https://github.com/mui/mui-x.git",
|
|
34
|
+
"url": "git+https://github.com/mui/mui-x.git",
|
|
35
35
|
"directory": "packages/x-date-pickers"
|
|
36
36
|
},
|
|
37
37
|
"dependencies": {
|
|
@@ -41,14 +41,14 @@
|
|
|
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": "7.
|
|
44
|
+
"@mui/x-internals": "7.18.0"
|
|
45
45
|
},
|
|
46
46
|
"peerDependencies": {
|
|
47
47
|
"@emotion/react": "^11.9.0",
|
|
48
48
|
"@emotion/styled": "^11.8.1",
|
|
49
49
|
"@mui/material": "^5.15.14 || ^6.0.0",
|
|
50
50
|
"@mui/system": "^5.15.14 || ^6.0.0",
|
|
51
|
-
"date-fns": "^2.25.0 || ^3.2.0",
|
|
51
|
+
"date-fns": "^2.25.0 || ^3.2.0 || ^4.0.0",
|
|
52
52
|
"date-fns-jalali": "^2.13.0-0 || ^3.2.0-0",
|
|
53
53
|
"dayjs": "^1.10.7",
|
|
54
54
|
"luxon": "^3.0.2",
|