@mui/x-date-pickers 6.10.1 → 6.11.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.
Files changed (142) hide show
  1. package/AdapterDayjs/AdapterDayjs.d.ts +8 -1
  2. package/AdapterDayjs/AdapterDayjs.js +66 -38
  3. package/CHANGELOG.md +156 -0
  4. package/DateCalendar/DateCalendar.d.ts +1 -1
  5. package/DateCalendar/DateCalendar.js +48 -38
  6. package/DateCalendar/DateCalendar.types.d.ts +9 -1
  7. package/DateCalendar/index.d.ts +1 -2
  8. package/DateCalendar/index.js +3 -2
  9. package/DateCalendar/useCalendarState.d.ts +1 -1
  10. package/DateField/DateField.d.ts +1 -1
  11. package/DateField/DateField.js +2 -2
  12. package/DatePicker/DatePicker.d.ts +1 -1
  13. package/DatePicker/DatePickerToolbar.d.ts +1 -1
  14. package/DateTimeField/DateTimeField.d.ts +1 -1
  15. package/DateTimeField/DateTimeField.js +2 -2
  16. package/DateTimePicker/DateTimePicker.d.ts +1 -1
  17. package/DayCalendarSkeleton/DayCalendarSkeleton.d.ts +1 -1
  18. package/DesktopDatePicker/DesktopDatePicker.d.ts +1 -1
  19. package/DesktopDatePicker/DesktopDatePicker.js +2 -2
  20. package/DesktopDateTimePicker/DesktopDateTimePicker.d.ts +1 -1
  21. package/DesktopDateTimePicker/DesktopDateTimePicker.js +2 -2
  22. package/DesktopTimePicker/DesktopTimePicker.d.ts +1 -1
  23. package/DesktopTimePicker/DesktopTimePicker.js +2 -2
  24. package/DigitalClock/DigitalClock.d.ts +1 -1
  25. package/DigitalClock/DigitalClock.js +1 -1
  26. package/LocalizationProvider/LocalizationProvider.d.ts +1 -1
  27. package/MobileDatePicker/MobileDatePicker.d.ts +1 -1
  28. package/MobileDatePicker/MobileDatePicker.js +2 -2
  29. package/MobileDateTimePicker/MobileDateTimePicker.d.ts +1 -1
  30. package/MobileDateTimePicker/MobileDateTimePicker.js +2 -2
  31. package/MobileTimePicker/MobileTimePicker.d.ts +1 -1
  32. package/MobileTimePicker/MobileTimePicker.js +2 -2
  33. package/MonthCalendar/MonthCalendar.d.ts +1 -1
  34. package/MultiSectionDigitalClock/MultiSectionDigitalClock.d.ts +1 -1
  35. package/MultiSectionDigitalClock/MultiSectionDigitalClockSection.d.ts +1 -1
  36. package/{DateCalendar → PickersCalendarHeader}/PickersCalendarHeader.d.ts +21 -9
  37. package/{DateCalendar → PickersCalendarHeader}/PickersCalendarHeader.js +72 -28
  38. package/PickersCalendarHeader/index.d.ts +4 -0
  39. package/PickersCalendarHeader/index.js +2 -0
  40. package/PickersCalendarHeader/package.json +6 -0
  41. package/PickersDay/PickersDay.d.ts +1 -1
  42. package/StaticDatePicker/StaticDatePicker.d.ts +1 -1
  43. package/StaticDateTimePicker/StaticDateTimePicker.d.ts +1 -1
  44. package/StaticTimePicker/StaticTimePicker.d.ts +1 -1
  45. package/TimeClock/ClockNumbers.d.ts +1 -1
  46. package/TimeClock/TimeClock.d.ts +1 -1
  47. package/TimeField/TimeField.d.ts +1 -1
  48. package/TimeField/TimeField.js +2 -2
  49. package/TimePicker/TimePicker.d.ts +1 -1
  50. package/YearCalendar/YearCalendar.d.ts +2 -2
  51. package/index.js +1 -1
  52. package/internals/components/PickersModalDialog.d.ts +2 -2
  53. package/internals/components/PickersPopper.d.ts +3 -3
  54. package/internals/components/PickersToolbar.d.ts +1 -1
  55. package/internals/hooks/date-helpers-hooks.d.ts +1 -2
  56. package/internals/hooks/useDefaultReduceAnimations.d.ts +2 -0
  57. package/internals/hooks/useDefaultReduceAnimations.js +9 -0
  58. package/internals/hooks/useField/useField.js +9 -4
  59. package/internals/hooks/useField/useField.utils.d.ts +1 -1
  60. package/internals/hooks/useField/useField.utils.js +6 -5
  61. package/internals/index.d.ts +1 -3
  62. package/internals/index.js +1 -2
  63. package/internals/utils/valueManagers.js +1 -1
  64. package/legacy/AdapterDayjs/AdapterDayjs.js +64 -38
  65. package/legacy/DateCalendar/DateCalendar.js +50 -40
  66. package/legacy/DateCalendar/index.js +3 -2
  67. package/legacy/DateField/DateField.js +2 -2
  68. package/legacy/DateTimeField/DateTimeField.js +2 -2
  69. package/legacy/DesktopDatePicker/DesktopDatePicker.js +2 -2
  70. package/legacy/DesktopDateTimePicker/DesktopDateTimePicker.js +2 -2
  71. package/legacy/DesktopTimePicker/DesktopTimePicker.js +2 -2
  72. package/legacy/DigitalClock/DigitalClock.js +1 -1
  73. package/legacy/MobileDatePicker/MobileDatePicker.js +2 -2
  74. package/legacy/MobileDateTimePicker/MobileDateTimePicker.js +2 -2
  75. package/legacy/MobileTimePicker/MobileTimePicker.js +2 -2
  76. package/legacy/{DateCalendar → PickersCalendarHeader}/PickersCalendarHeader.js +57 -13
  77. package/legacy/PickersCalendarHeader/index.js +2 -0
  78. package/legacy/TimeField/TimeField.js +2 -2
  79. package/legacy/index.js +1 -1
  80. package/legacy/internals/hooks/useDefaultReduceAnimations.js +9 -0
  81. package/legacy/internals/hooks/useField/useField.js +9 -4
  82. package/legacy/internals/hooks/useField/useField.utils.js +6 -5
  83. package/legacy/internals/index.js +1 -2
  84. package/legacy/internals/utils/valueManagers.js +1 -1
  85. package/legacy/tests/describeGregorianAdapter/testCalculations.js +63 -16
  86. package/modern/AdapterDayjs/AdapterDayjs.js +65 -38
  87. package/modern/DateCalendar/DateCalendar.js +46 -38
  88. package/modern/DateCalendar/index.js +3 -2
  89. package/modern/DateField/DateField.js +2 -2
  90. package/modern/DateTimeField/DateTimeField.js +2 -2
  91. package/modern/DesktopDatePicker/DesktopDatePicker.js +1 -1
  92. package/modern/DesktopDateTimePicker/DesktopDateTimePicker.js +1 -1
  93. package/modern/DesktopTimePicker/DesktopTimePicker.js +1 -1
  94. package/modern/DigitalClock/DigitalClock.js +1 -1
  95. package/modern/MobileDatePicker/MobileDatePicker.js +1 -1
  96. package/modern/MobileDateTimePicker/MobileDateTimePicker.js +1 -1
  97. package/modern/MobileTimePicker/MobileTimePicker.js +1 -1
  98. package/modern/{DateCalendar → PickersCalendarHeader}/PickersCalendarHeader.js +72 -28
  99. package/modern/PickersCalendarHeader/index.js +2 -0
  100. package/modern/TimeField/TimeField.js +2 -2
  101. package/modern/index.js +1 -1
  102. package/modern/internals/hooks/useDefaultReduceAnimations.js +9 -0
  103. package/modern/internals/hooks/useField/useField.js +9 -4
  104. package/modern/internals/hooks/useField/useField.utils.js +6 -5
  105. package/modern/internals/index.js +1 -2
  106. package/modern/internals/utils/valueManagers.js +1 -1
  107. package/modern/tests/describeGregorianAdapter/testCalculations.js +63 -16
  108. package/node/AdapterDayjs/AdapterDayjs.js +65 -38
  109. package/node/DateCalendar/DateCalendar.js +52 -44
  110. package/node/DateCalendar/index.js +21 -8
  111. package/node/DateField/DateField.js +2 -2
  112. package/node/DateTimeField/DateTimeField.js +2 -2
  113. package/node/DesktopDatePicker/DesktopDatePicker.js +1 -1
  114. package/node/DesktopDateTimePicker/DesktopDateTimePicker.js +1 -1
  115. package/node/DesktopTimePicker/DesktopTimePicker.js +1 -1
  116. package/node/DigitalClock/DigitalClock.js +1 -1
  117. package/node/MobileDatePicker/MobileDatePicker.js +1 -1
  118. package/node/MobileDateTimePicker/MobileDateTimePicker.js +1 -1
  119. package/node/MobileTimePicker/MobileTimePicker.js +1 -1
  120. package/node/{DateCalendar → PickersCalendarHeader}/PickersCalendarHeader.js +73 -29
  121. package/node/PickersCalendarHeader/index.js +19 -0
  122. package/node/TimeField/TimeField.js +2 -2
  123. package/node/index.js +1 -1
  124. package/node/internals/hooks/useDefaultReduceAnimations.js +18 -0
  125. package/node/internals/hooks/useField/useField.js +9 -4
  126. package/node/internals/hooks/useField/useField.utils.js +6 -5
  127. package/node/internals/index.js +7 -14
  128. package/node/internals/utils/valueManagers.js +1 -1
  129. package/node/tests/describeGregorianAdapter/testCalculations.js +61 -16
  130. package/package.json +2 -2
  131. package/tests/describeGregorianAdapter/testCalculations.js +63 -16
  132. package/themeAugmentation/props.d.ts +2 -2
  133. package/internals/utils/defaultReduceAnimations.d.ts +0 -1
  134. package/internals/utils/defaultReduceAnimations.js +0 -1
  135. package/legacy/internals/utils/defaultReduceAnimations.js +0 -1
  136. package/modern/internals/utils/defaultReduceAnimations.js +0 -1
  137. package/node/internals/utils/defaultReduceAnimations.js +0 -8
  138. /package/{DateCalendar → PickersCalendarHeader}/pickersCalendarHeaderClasses.d.ts +0 -0
  139. /package/{DateCalendar → PickersCalendarHeader}/pickersCalendarHeaderClasses.js +0 -0
  140. /package/legacy/{DateCalendar → PickersCalendarHeader}/pickersCalendarHeaderClasses.js +0 -0
  141. /package/modern/{DateCalendar → PickersCalendarHeader}/pickersCalendarHeaderClasses.js +0 -0
  142. /package/node/{DateCalendar → PickersCalendarHeader}/pickersCalendarHeaderClasses.js +0 -0
@@ -192,9 +192,24 @@ class AdapterDayjs {
192
192
  return value.format(comparisonTemplate) === comparingInValueTimezone.format(comparisonTemplate);
193
193
  };
194
194
  /**
195
- * Replace "default" by undefined before passing it to `dayjs
195
+ * Replaces "default" by undefined and "system" by the system timezone before passing it to `dayjs`.
196
196
  */
197
- this.cleanTimezone = timezone => timezone === 'default' ? undefined : timezone;
197
+ this.cleanTimezone = timezone => {
198
+ switch (timezone) {
199
+ case 'default':
200
+ {
201
+ return undefined;
202
+ }
203
+ case 'system':
204
+ {
205
+ return _dayjs.default.tz.guess();
206
+ }
207
+ default:
208
+ {
209
+ return timezone;
210
+ }
211
+ }
212
+ };
198
213
  this.createSystemDate = value => {
199
214
  // TODO v7: Stop using `this.rawDayJsInstance` (drop the `instance` param on the adapters)
200
215
  /* istanbul ignore next */
@@ -243,6 +258,27 @@ class AdapterDayjs {
243
258
  }
244
259
  return localeObject.formats;
245
260
  };
261
+ /**
262
+ * If the new day does not have the same offset as the old one (when switching to summer day time for example),
263
+ * Then dayjs will not automatically adjust the offset (moment does).
264
+ * We have to parse again the value to make sure the `fixOffset` method is applied.
265
+ * See https://github.com/iamkun/dayjs/blob/b3624de619d6e734cd0ffdbbd3502185041c1b60/src/plugin/timezone/index.js#L72
266
+ */
267
+ this.adjustOffset = value => {
268
+ if (!this.hasTimezonePlugin()) {
269
+ return value;
270
+ }
271
+ const timezone = this.getTimezone(value);
272
+ if (timezone !== 'UTC') {
273
+ const fixedValue = value.tz(this.cleanTimezone(timezone), true);
274
+ // @ts-ignore
275
+ if ((fixedValue.$offset ?? 0) === (value.$offset ?? 0)) {
276
+ return value;
277
+ }
278
+ return fixedValue;
279
+ }
280
+ return value;
281
+ };
246
282
  this.date = value => {
247
283
  if (value === null) {
248
284
  return null;
@@ -410,49 +446,49 @@ class AdapterDayjs {
410
446
  return value >= start && value <= end;
411
447
  };
412
448
  this.startOfYear = value => {
413
- return value.startOf('year');
449
+ return this.adjustOffset(value.startOf('year'));
414
450
  };
415
451
  this.startOfMonth = value => {
416
- return value.startOf('month');
452
+ return this.adjustOffset(value.startOf('month'));
417
453
  };
418
454
  this.startOfWeek = value => {
419
- return value.startOf('week');
455
+ return this.adjustOffset(value.startOf('week'));
420
456
  };
421
457
  this.startOfDay = value => {
422
- return value.startOf('day');
458
+ return this.adjustOffset(value.startOf('day'));
423
459
  };
424
460
  this.endOfYear = value => {
425
- return value.endOf('year');
461
+ return this.adjustOffset(value.endOf('year'));
426
462
  };
427
463
  this.endOfMonth = value => {
428
- return value.endOf('month');
464
+ return this.adjustOffset(value.endOf('month'));
429
465
  };
430
466
  this.endOfWeek = value => {
431
- return value.endOf('week');
467
+ return this.adjustOffset(value.endOf('week'));
432
468
  };
433
469
  this.endOfDay = value => {
434
- return value.endOf('day');
470
+ return this.adjustOffset(value.endOf('day'));
435
471
  };
436
472
  this.addYears = (value, amount) => {
437
- return amount < 0 ? value.subtract(Math.abs(amount), 'year') : value.add(amount, 'year');
473
+ return this.adjustOffset(amount < 0 ? value.subtract(Math.abs(amount), 'year') : value.add(amount, 'year'));
438
474
  };
439
475
  this.addMonths = (value, amount) => {
440
- return amount < 0 ? value.subtract(Math.abs(amount), 'month') : value.add(amount, 'month');
476
+ return this.adjustOffset(amount < 0 ? value.subtract(Math.abs(amount), 'month') : value.add(amount, 'month'));
441
477
  };
442
478
  this.addWeeks = (value, amount) => {
443
- return amount < 0 ? value.subtract(Math.abs(amount), 'week') : value.add(amount, 'week');
479
+ return this.adjustOffset(amount < 0 ? value.subtract(Math.abs(amount), 'week') : value.add(amount, 'week'));
444
480
  };
445
481
  this.addDays = (value, amount) => {
446
- return amount < 0 ? value.subtract(Math.abs(amount), 'day') : value.add(amount, 'day');
482
+ return this.adjustOffset(amount < 0 ? value.subtract(Math.abs(amount), 'day') : value.add(amount, 'day'));
447
483
  };
448
484
  this.addHours = (value, amount) => {
449
- return amount < 0 ? value.subtract(Math.abs(amount), 'hour') : value.add(amount, 'hour');
485
+ return this.adjustOffset(amount < 0 ? value.subtract(Math.abs(amount), 'hour') : value.add(amount, 'hour'));
450
486
  };
451
487
  this.addMinutes = (value, amount) => {
452
- return amount < 0 ? value.subtract(Math.abs(amount), 'minute') : value.add(amount, 'minute');
488
+ return this.adjustOffset(amount < 0 ? value.subtract(Math.abs(amount), 'minute') : value.add(amount, 'minute'));
453
489
  };
454
490
  this.addSeconds = (value, amount) => {
455
- return amount < 0 ? value.subtract(Math.abs(amount), 'second') : value.add(amount, 'second');
491
+ return this.adjustOffset(amount < 0 ? value.subtract(Math.abs(amount), 'second') : value.add(amount, 'second'));
456
492
  };
457
493
  this.getYear = value => {
458
494
  return value.year();
@@ -476,34 +512,34 @@ class AdapterDayjs {
476
512
  return value.millisecond();
477
513
  };
478
514
  this.setYear = (value, year) => {
479
- return value.set('year', year);
515
+ return this.adjustOffset(value.set('year', year));
480
516
  };
481
517
  this.setMonth = (value, month) => {
482
- return value.set('month', month);
518
+ return this.adjustOffset(value.set('month', month));
483
519
  };
484
520
  this.setDate = (value, date) => {
485
- return value.set('date', date);
521
+ return this.adjustOffset(value.set('date', date));
486
522
  };
487
523
  this.setHours = (value, hours) => {
488
- return value.set('hour', hours);
524
+ return this.adjustOffset(value.set('hour', hours));
489
525
  };
490
526
  this.setMinutes = (value, minutes) => {
491
- return value.set('minute', minutes);
527
+ return this.adjustOffset(value.set('minute', minutes));
492
528
  };
493
529
  this.setSeconds = (value, seconds) => {
494
- return value.set('second', seconds);
530
+ return this.adjustOffset(value.set('second', seconds));
495
531
  };
496
532
  this.setMilliseconds = (value, milliseconds) => {
497
- return value.set('millisecond', milliseconds);
533
+ return this.adjustOffset(value.set('millisecond', milliseconds));
498
534
  };
499
535
  this.getDaysInMonth = value => {
500
536
  return value.daysInMonth();
501
537
  };
502
538
  this.getNextMonth = value => {
503
- return value.add(1, 'month');
539
+ return this.addMonths(value, 1);
504
540
  };
505
541
  this.getPreviousMonth = value => {
506
- return value.subtract(1, 'month');
542
+ return this.addMonths(value, -1);
507
543
  };
508
544
  this.getMonthArray = value => {
509
545
  const firstMonth = value.startOf('year');
@@ -519,10 +555,9 @@ class AdapterDayjs {
519
555
  };
520
556
  this.getWeekdays = () => {
521
557
  const start = this.dayjs().startOf('week');
522
- return [0, 1, 2, 3, 4, 5, 6].map(diff => this.formatByString(start.add(diff, 'day'), 'dd'));
558
+ return [0, 1, 2, 3, 4, 5, 6].map(diff => this.formatByString(this.addDays(start, diff), 'dd'));
523
559
  };
524
560
  this.getWeekArray = value => {
525
- const timezone = this.getTimezone(value);
526
561
  const cleanValue = this.setLocaleToValue(value);
527
562
  const start = cleanValue.startOf('month').startOf('week');
528
563
  const end = cleanValue.endOf('month').endOf('week');
@@ -533,15 +568,7 @@ class AdapterDayjs {
533
568
  const weekNumber = Math.floor(count / 7);
534
569
  nestedWeeks[weekNumber] = nestedWeeks[weekNumber] || [];
535
570
  nestedWeeks[weekNumber].push(current);
536
- current = current.add(1, 'day');
537
-
538
- // If the new day does not have the same offset as the old one (when switching to summer day time for example),
539
- // Then dayjs will not automatically adjust the offset (moment does)
540
- // We have to parse again the value to make sure the `fixOffset` method is applied
541
- // See https://github.com/iamkun/dayjs/blob/b3624de619d6e734cd0ffdbbd3502185041c1b60/src/plugin/timezone/index.js#L72
542
- if (this.hasTimezonePlugin() && timezone !== 'UTC' && timezone !== 'system') {
543
- current = current.tz(this.cleanTimezone(timezone), true);
544
- }
571
+ current = this.addDays(current, 1);
545
572
  count += 1;
546
573
  }
547
574
  return nestedWeeks;
@@ -556,7 +583,7 @@ class AdapterDayjs {
556
583
  let current = startDate;
557
584
  while (current < endDate) {
558
585
  years.push(current);
559
- current = current.add(1, 'year');
586
+ current = this.addYears(current, 1);
560
587
  }
561
588
  return years;
562
589
  };
@@ -10,8 +10,9 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
10
10
  var React = _interopRequireWildcard(require("react"));
11
11
  var _propTypes = _interopRequireDefault(require("prop-types"));
12
12
  var _clsx = _interopRequireDefault(require("clsx"));
13
+ var _utils = require("@mui/base/utils");
13
14
  var _styles = require("@mui/material/styles");
14
- var _utils = require("@mui/utils");
15
+ var _utils2 = require("@mui/utils");
15
16
  var _useCalendarState = require("./useCalendarState");
16
17
  var _useUtils = require("../internals/hooks/useUtils");
17
18
  var _PickersFadeTransitionGroup = require("./PickersFadeTransitionGroup");
@@ -19,10 +20,10 @@ var _DayCalendar = require("./DayCalendar");
19
20
  var _MonthCalendar = require("../MonthCalendar");
20
21
  var _YearCalendar = require("../YearCalendar");
21
22
  var _useViews = require("../internals/hooks/useViews");
22
- var _PickersCalendarHeader = require("./PickersCalendarHeader");
23
+ var _PickersCalendarHeader = require("../PickersCalendarHeader");
23
24
  var _dateUtils = require("../internals/utils/date-utils");
24
25
  var _PickerViewRoot = require("../internals/components/PickerViewRoot");
25
- var _defaultReduceAnimations = require("../internals/utils/defaultReduceAnimations");
26
+ var _useDefaultReduceAnimations = require("../internals/hooks/useDefaultReduceAnimations");
26
27
  var _dateCalendarClasses = require("./dateCalendarClasses");
27
28
  var _useValueWithTimezone = require("../internals/hooks/useValueWithTimezone");
28
29
  var _valueManagers = require("../internals/utils/valueManagers");
@@ -38,26 +39,26 @@ const useUtilityClasses = ownerState => {
38
39
  root: ['root'],
39
40
  viewTransitionContainer: ['viewTransitionContainer']
40
41
  };
41
- return (0, _utils.unstable_composeClasses)(slots, _dateCalendarClasses.getDateCalendarUtilityClass, classes);
42
+ return (0, _utils2.unstable_composeClasses)(slots, _dateCalendarClasses.getDateCalendarUtilityClass, classes);
42
43
  };
43
44
  function useDateCalendarDefaultizedProps(props, name) {
44
45
  const utils = (0, _useUtils.useUtils)();
45
46
  const defaultDates = (0, _useUtils.useDefaultDates)();
47
+ const defaultReduceAnimations = (0, _useDefaultReduceAnimations.useDefaultReduceAnimations)();
46
48
  const themeProps = (0, _styles.useThemeProps)({
47
49
  props,
48
50
  name
49
51
  });
50
- return (0, _extends2.default)({
51
- loading: false,
52
- disablePast: false,
53
- disableFuture: false,
54
- openTo: 'day',
55
- views: ['year', 'day'],
56
- reduceAnimations: _defaultReduceAnimations.defaultReduceAnimations,
57
- renderLoading: () => /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
52
+ return (0, _extends2.default)({}, themeProps, {
53
+ loading: themeProps.loading ?? false,
54
+ disablePast: themeProps.disablePast ?? false,
55
+ disableFuture: themeProps.disableFuture ?? false,
56
+ openTo: themeProps.openTo ?? 'day',
57
+ views: themeProps.views ?? ['year', 'day'],
58
+ reduceAnimations: themeProps.reduceAnimations ?? defaultReduceAnimations,
59
+ renderLoading: themeProps.renderLoading ?? (() => /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
58
60
  children: "..."
59
- })
60
- }, themeProps, {
61
+ })),
61
62
  minDate: (0, _dateUtils.applyDefaultDate)(utils, themeProps.minDate, defaultDates.minDate),
62
63
  maxDate: (0, _dateUtils.applyDefaultDate)(utils, themeProps.maxDate, defaultDates.maxDate)
63
64
  });
@@ -87,7 +88,7 @@ const DateCalendarViewTransitionContainer = (0, _styles.styled)(_PickersFadeTran
87
88
  */
88
89
  const DateCalendar = /*#__PURE__*/React.forwardRef(function DateCalendar(inProps, ref) {
89
90
  const utils = (0, _useUtils.useUtils)();
90
- const id = (0, _utils.unstable_useId)();
91
+ const id = (0, _utils2.unstable_useId)();
91
92
  const props = useDateCalendarDefaultizedProps(inProps, 'MuiDateCalendar');
92
93
  const {
93
94
  autoFocus,
@@ -181,7 +182,39 @@ const DateCalendar = /*#__PURE__*/React.forwardRef(function DateCalendar(inProps
181
182
  disableFuture,
182
183
  timezone
183
184
  });
184
- const handleDateMonthChange = (0, _utils.unstable_useEventCallback)(newDate => {
185
+
186
+ // When disabled, limit the view to the selected date
187
+ const minDateWithDisabled = disabled && value || minDate;
188
+ const maxDateWithDisabled = disabled && value || maxDate;
189
+ const gridLabelId = `${id}-grid-label`;
190
+ const hasFocus = focusedView !== null;
191
+ const CalendarHeader = slots?.calendarHeader ?? components?.CalendarHeader ?? _PickersCalendarHeader.PickersCalendarHeader;
192
+ const calendarHeaderProps = (0, _utils.useSlotProps)({
193
+ elementType: CalendarHeader,
194
+ externalSlotProps: slotProps?.calendarHeader ?? componentsProps?.calendarHeader,
195
+ additionalProps: {
196
+ views,
197
+ view,
198
+ currentMonth: calendarState.currentMonth,
199
+ onViewChange: setView,
200
+ onMonthChange: (newMonth, direction) => handleChangeMonth({
201
+ newMonth,
202
+ direction
203
+ }),
204
+ minDate: minDateWithDisabled,
205
+ maxDate: maxDateWithDisabled,
206
+ disabled,
207
+ disablePast,
208
+ disableFuture,
209
+ reduceAnimations,
210
+ timezone,
211
+ labelId: gridLabelId,
212
+ slots,
213
+ slotProps
214
+ },
215
+ ownerState: props
216
+ });
217
+ const handleDateMonthChange = (0, _utils2.unstable_useEventCallback)(newDate => {
185
218
  const startOfMonth = utils.startOfMonth(newDate);
186
219
  const endOfMonth = utils.endOfMonth(newDate);
187
220
  const closestEnabledDate = isDateDisabled(newDate) ? (0, _dateUtils.findClosestEnabledDate)({
@@ -203,7 +236,7 @@ const DateCalendar = /*#__PURE__*/React.forwardRef(function DateCalendar(inProps
203
236
  }
204
237
  changeFocusedDay(closestEnabledDate, true);
205
238
  });
206
- const handleDateYearChange = (0, _utils.unstable_useEventCallback)(newDate => {
239
+ const handleDateYearChange = (0, _utils2.unstable_useEventCallback)(newDate => {
207
240
  const startOfYear = utils.startOfYear(newDate);
208
241
  const endOfYear = utils.endOfYear(newDate);
209
242
  const closestEnabledDate = isDateDisabled(newDate) ? (0, _dateUtils.findClosestEnabledDate)({
@@ -225,7 +258,7 @@ const DateCalendar = /*#__PURE__*/React.forwardRef(function DateCalendar(inProps
225
258
  }
226
259
  changeFocusedDay(closestEnabledDate, true);
227
260
  });
228
- const handleSelectedDayChange = (0, _utils.unstable_useEventCallback)(day => {
261
+ const handleSelectedDayChange = (0, _utils2.unstable_useEventCallback)(day => {
229
262
  if (day) {
230
263
  // If there is a date already selected, then we want to keep its time
231
264
  return handleValueChange((0, _dateUtils.mergeDateAndTime)(utils, day, value ?? referenceDate), 'finish');
@@ -246,18 +279,12 @@ const DateCalendar = /*#__PURE__*/React.forwardRef(function DateCalendar(inProps
246
279
  maxDate,
247
280
  minDate
248
281
  };
249
-
250
- // When disabled, limit the view to the selected date
251
- const minDateWithDisabled = disabled && value || minDate;
252
- const maxDateWithDisabled = disabled && value || maxDate;
253
282
  const commonViewProps = {
254
283
  disableHighlightToday,
255
284
  readOnly,
256
285
  disabled,
257
286
  timezone
258
287
  };
259
- const gridLabelId = `${id}-grid-label`;
260
- const hasFocus = focusedView !== null;
261
288
  const prevOpenViewRef = React.useRef(view);
262
289
  React.useEffect(() => {
263
290
  // If the view change and the focus was on the previous view
@@ -276,26 +303,7 @@ const DateCalendar = /*#__PURE__*/React.forwardRef(function DateCalendar(inProps
276
303
  className: (0, _clsx.default)(classes.root, className),
277
304
  ownerState: ownerState
278
305
  }, other, {
279
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_PickersCalendarHeader.PickersCalendarHeader, {
280
- views: views,
281
- view: view,
282
- currentMonth: calendarState.currentMonth,
283
- onViewChange: setView,
284
- onMonthChange: (newMonth, direction) => handleChangeMonth({
285
- newMonth,
286
- direction
287
- }),
288
- minDate: minDateWithDisabled,
289
- maxDate: maxDateWithDisabled,
290
- disabled: disabled,
291
- disablePast: disablePast,
292
- disableFuture: disableFuture,
293
- reduceAnimations: reduceAnimations,
294
- labelId: gridLabelId,
295
- slots: slots,
296
- slotProps: slotProps,
297
- timezone: timezone
298
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(DateCalendarViewTransitionContainer, {
306
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(CalendarHeader, (0, _extends2.default)({}, calendarHeaderProps)), /*#__PURE__*/(0, _jsxRuntime.jsx)(DateCalendarViewTransitionContainer, {
299
307
  reduceAnimations: reduceAnimations,
300
308
  className: classes.viewTransitionContainer,
301
309
  transKey: view,
@@ -3,6 +3,14 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ var _exportNames = {
7
+ DateCalendar: true,
8
+ getDateCalendarUtilityClass: true,
9
+ dateCalendarClasses: true,
10
+ dayPickerClasses: true,
11
+ pickersFadeTransitionGroupClasses: true,
12
+ pickersSlideTransitionClasses: true
13
+ };
6
14
  Object.defineProperty(exports, "DateCalendar", {
7
15
  enumerable: true,
8
16
  get: function () {
@@ -27,12 +35,6 @@ Object.defineProperty(exports, "getDateCalendarUtilityClass", {
27
35
  return _dateCalendarClasses.getDateCalendarUtilityClass;
28
36
  }
29
37
  });
30
- Object.defineProperty(exports, "pickersCalendarHeaderClasses", {
31
- enumerable: true,
32
- get: function () {
33
- return _pickersCalendarHeaderClasses.pickersCalendarHeaderClasses;
34
- }
35
- });
36
38
  Object.defineProperty(exports, "pickersFadeTransitionGroupClasses", {
37
39
  enumerable: true,
38
40
  get: function () {
@@ -48,6 +50,17 @@ Object.defineProperty(exports, "pickersSlideTransitionClasses", {
48
50
  var _DateCalendar = require("./DateCalendar");
49
51
  var _dateCalendarClasses = require("./dateCalendarClasses");
50
52
  var _dayCalendarClasses = require("./dayCalendarClasses");
51
- var _pickersCalendarHeaderClasses = require("./pickersCalendarHeaderClasses");
52
53
  var _pickersFadeTransitionGroupClasses = require("./pickersFadeTransitionGroupClasses");
53
- var _pickersSlideTransitionClasses = require("./pickersSlideTransitionClasses");
54
+ var _pickersSlideTransitionClasses = require("./pickersSlideTransitionClasses");
55
+ var _PickersCalendarHeader = require("../PickersCalendarHeader");
56
+ Object.keys(_PickersCalendarHeader).forEach(function (key) {
57
+ if (key === "default" || key === "__esModule") return;
58
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
59
+ if (key in exports && exports[key] === _PickersCalendarHeader[key]) return;
60
+ Object.defineProperty(exports, key, {
61
+ enumerable: true,
62
+ get: function () {
63
+ return _PickersCalendarHeader[key];
64
+ }
65
+ });
66
+ });
@@ -47,8 +47,8 @@ const DateField = /*#__PURE__*/React.forwardRef(function DateField(inProps, ref)
47
47
  textFieldProps = (0, _objectWithoutPropertiesLoose2.default)(_useSlotProps, _excluded2);
48
48
 
49
49
  // TODO: Remove when mui/material-ui#35088 will be merged
50
- textFieldProps.inputProps = (0, _extends2.default)({}, textFieldProps.inputProps, inputProps);
51
- textFieldProps.InputProps = (0, _extends2.default)({}, textFieldProps.InputProps, InputProps);
50
+ textFieldProps.inputProps = (0, _extends2.default)({}, inputProps, textFieldProps.inputProps);
51
+ textFieldProps.InputProps = (0, _extends2.default)({}, InputProps, textFieldProps.InputProps);
52
52
  const _useDateField = (0, _useDateField2.useDateField)({
53
53
  props: textFieldProps,
54
54
  inputRef: externalInputRef
@@ -47,8 +47,8 @@ const DateTimeField = /*#__PURE__*/React.forwardRef(function DateTimeField(inPro
47
47
  textFieldProps = (0, _objectWithoutPropertiesLoose2.default)(_useSlotProps, _excluded2);
48
48
 
49
49
  // TODO: Remove when mui/material-ui#35088 will be merged
50
- textFieldProps.inputProps = (0, _extends2.default)({}, textFieldProps.inputProps, inputProps);
51
- textFieldProps.InputProps = (0, _extends2.default)({}, textFieldProps.InputProps, InputProps);
50
+ textFieldProps.inputProps = (0, _extends2.default)({}, inputProps, textFieldProps.inputProps);
51
+ textFieldProps.InputProps = (0, _extends2.default)({}, InputProps, textFieldProps.InputProps);
52
52
  const _useDateTimeField = (0, _useDateTimeField2.useDateTimeField)({
53
53
  props: textFieldProps,
54
54
  inputRef: externalInputRef
@@ -56,7 +56,7 @@ const DesktopDatePicker = /*#__PURE__*/React.forwardRef(function DesktopDatePick
56
56
  props,
57
57
  valueManager: _valueManagers.singleItemValueManager,
58
58
  valueType: 'date',
59
- getOpenDialogAriaText: localeText.openDatePickerDialogue,
59
+ getOpenDialogAriaText: props.localeText?.openDatePickerDialogue ?? localeText.openDatePickerDialogue,
60
60
  validator: _internals.validateDate
61
61
  });
62
62
  return renderPicker();
@@ -92,7 +92,7 @@ const DesktopDateTimePicker = /*#__PURE__*/React.forwardRef(function DesktopDate
92
92
  props,
93
93
  valueManager: _valueManagers.singleItemValueManager,
94
94
  valueType: 'date-time',
95
- getOpenDialogAriaText: localeText.openDatePickerDialogue,
95
+ getOpenDialogAriaText: props.localeText?.openDatePickerDialogue ?? localeText.openDatePickerDialogue,
96
96
  validator: _validateDateTime.validateDateTime
97
97
  });
98
98
  return renderPicker();
@@ -79,7 +79,7 @@ const DesktopTimePicker = /*#__PURE__*/React.forwardRef(function DesktopTimePick
79
79
  props,
80
80
  valueManager: _valueManagers.singleItemValueManager,
81
81
  valueType: 'time',
82
- getOpenDialogAriaText: localeText.openTimePickerDialogue,
82
+ getOpenDialogAriaText: props.localeText?.openTimePickerDialogue ?? localeText.openTimePickerDialogue,
83
83
  validator: _validateTime.validateTime
84
84
  });
85
85
  return renderPicker();
@@ -222,7 +222,7 @@ const DigitalClock = /*#__PURE__*/React.forwardRef(function DigitalClock(inProps
222
222
  const startOfDay = utils.startOfDay(valueOrReferenceDate);
223
223
  return [startOfDay, ...Array.from({
224
224
  length: Math.ceil(24 * 60 / timeStep) - 1
225
- }, (_, index) => utils.addMinutes(startOfDay, timeStep * (index + 1))), utils.endOfDay(valueOrReferenceDate)];
225
+ }, (_, index) => utils.addMinutes(startOfDay, timeStep * (index + 1)))];
226
226
  }, [valueOrReferenceDate, timeStep, utils]);
227
227
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(DigitalClockRoot, (0, _extends2.default)({
228
228
  ref: handleRef,
@@ -53,7 +53,7 @@ const MobileDatePicker = /*#__PURE__*/React.forwardRef(function MobileDatePicker
53
53
  props,
54
54
  valueManager: _valueManagers.singleItemValueManager,
55
55
  valueType: 'date',
56
- getOpenDialogAriaText: localeText.openDatePickerDialogue,
56
+ getOpenDialogAriaText: props.localeText?.openDatePickerDialogue ?? localeText.openDatePickerDialogue,
57
57
  validator: _internals.validateDate
58
58
  });
59
59
  return renderPicker();
@@ -64,7 +64,7 @@ const MobileDateTimePicker = /*#__PURE__*/React.forwardRef(function MobileDateTi
64
64
  props,
65
65
  valueManager: _valueManagers.singleItemValueManager,
66
66
  valueType: 'date-time',
67
- getOpenDialogAriaText: localeText.openDatePickerDialogue,
67
+ getOpenDialogAriaText: props.localeText?.openDatePickerDialogue ?? localeText.openDatePickerDialogue,
68
68
  validator: _validateDateTime.validateDateTime
69
69
  });
70
70
  return renderPicker();
@@ -57,7 +57,7 @@ const MobileTimePicker = /*#__PURE__*/React.forwardRef(function MobileTimePicker
57
57
  props,
58
58
  valueManager: _valueManagers.singleItemValueManager,
59
59
  valueType: 'time',
60
- getOpenDialogAriaText: localeText.openTimePickerDialogue,
60
+ getOpenDialogAriaText: props.localeText?.openTimePickerDialogue ?? localeText.openTimePickerDialogue,
61
61
  validator: _validateTime.validateTime
62
62
  });
63
63
  return renderPicker();