@mui/x-date-pickers 6.6.0 → 6.8.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 (194) hide show
  1. package/AdapterDateFns/AdapterDateFns.js +20 -19
  2. package/AdapterDateFnsJalali/AdapterDateFnsJalali.js +17 -16
  3. package/AdapterDayjs/AdapterDayjs.js +12 -11
  4. package/AdapterLuxon/AdapterLuxon.js +20 -19
  5. package/AdapterMoment/AdapterMoment.js +12 -11
  6. package/AdapterMomentHijri/AdapterMomentHijri.js +20 -19
  7. package/AdapterMomentJalaali/AdapterMomentJalaali.js +20 -19
  8. package/CHANGELOG.md +147 -13
  9. package/DateCalendar/DateCalendar.js +16 -6
  10. package/DateCalendar/DateCalendar.types.d.ts +6 -1
  11. package/DateCalendar/useCalendarState.d.ts +3 -2
  12. package/DateCalendar/useCalendarState.js +36 -15
  13. package/DateField/DateField.js +1 -1
  14. package/DatePicker/DatePicker.js +1 -1
  15. package/DatePicker/DatePickerToolbar.js +6 -15
  16. package/DatePicker/shared.d.ts +1 -5
  17. package/DatePicker/shared.js +1 -16
  18. package/DateTimeField/DateTimeField.js +1 -1
  19. package/DateTimePicker/DateTimePicker.js +1 -1
  20. package/DesktopDatePicker/DesktopDatePicker.js +4 -3
  21. package/DesktopDateTimePicker/DesktopDateTimePicker.js +6 -2
  22. package/DesktopTimePicker/DesktopTimePicker.js +5 -1
  23. package/LocalizationProvider/LocalizationProvider.js +1 -0
  24. package/MobileDatePicker/MobileDatePicker.js +4 -3
  25. package/MobileDateTimePicker/MobileDateTimePicker.js +6 -2
  26. package/MobileTimePicker/MobileTimePicker.js +5 -1
  27. package/MonthCalendar/MonthCalendar.js +28 -11
  28. package/MonthCalendar/MonthCalendar.types.d.ts +5 -0
  29. package/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +1 -1
  30. package/PickersLayout/PickersLayout.js +1 -0
  31. package/PickersLayout/usePickerLayout.js +4 -3
  32. package/PickersShortcuts/PickersShortcuts.d.ts +12 -2
  33. package/PickersShortcuts/PickersShortcuts.js +10 -2
  34. package/PickersShortcuts/index.d.ts +1 -1
  35. package/StaticDatePicker/StaticDatePicker.js +1 -1
  36. package/StaticDateTimePicker/StaticDateTimePicker.js +1 -1
  37. package/TimeField/TimeField.js +1 -1
  38. package/TimePicker/shared.d.ts +1 -1
  39. package/YearCalendar/YearCalendar.js +26 -9
  40. package/YearCalendar/YearCalendar.types.d.ts +5 -0
  41. package/index.js +1 -1
  42. package/internals/hooks/useField/useField.types.d.ts +1 -1
  43. package/internals/hooks/useField/useFieldState.js +0 -1
  44. package/internals/hooks/usePicker/usePickerValue.js +22 -2
  45. package/internals/hooks/usePicker/usePickerValue.types.d.ts +6 -2
  46. package/internals/utils/date-time-utils.d.ts +6 -0
  47. package/internals/utils/date-time-utils.js +41 -0
  48. package/internals/utils/date-utils.d.ts +5 -2
  49. package/internals/utils/date-utils.js +33 -10
  50. package/internals/utils/getDefaultReferenceDate.d.ts +11 -3
  51. package/internals/utils/getDefaultReferenceDate.js +2 -3
  52. package/internals/utils/time-utils.d.ts +6 -1
  53. package/internals/utils/time-utils.js +27 -0
  54. package/internals/utils/validation/extractValidationProps.d.ts +1 -1
  55. package/internals/utils/views.d.ts +2 -3
  56. package/internals/utils/views.js +6 -2
  57. package/legacy/AdapterDateFns/AdapterDateFns.js +20 -19
  58. package/legacy/AdapterDateFnsJalali/AdapterDateFnsJalali.js +17 -16
  59. package/legacy/AdapterDayjs/AdapterDayjs.js +12 -11
  60. package/legacy/AdapterLuxon/AdapterLuxon.js +20 -19
  61. package/legacy/AdapterMoment/AdapterMoment.js +12 -11
  62. package/legacy/AdapterMomentHijri/AdapterMomentHijri.js +20 -19
  63. package/legacy/AdapterMomentJalaali/AdapterMomentJalaali.js +20 -19
  64. package/legacy/DateCalendar/DateCalendar.js +16 -6
  65. package/legacy/DateCalendar/useCalendarState.js +35 -15
  66. package/legacy/DateField/DateField.js +1 -1
  67. package/legacy/DatePicker/DatePicker.js +1 -1
  68. package/legacy/DatePicker/DatePickerToolbar.js +6 -15
  69. package/legacy/DatePicker/shared.js +1 -15
  70. package/legacy/DateTimeField/DateTimeField.js +1 -1
  71. package/legacy/DateTimePicker/DateTimePicker.js +1 -1
  72. package/legacy/DesktopDatePicker/DesktopDatePicker.js +4 -3
  73. package/legacy/DesktopDateTimePicker/DesktopDateTimePicker.js +6 -2
  74. package/legacy/DesktopTimePicker/DesktopTimePicker.js +5 -1
  75. package/legacy/LocalizationProvider/LocalizationProvider.js +1 -0
  76. package/legacy/MobileDatePicker/MobileDatePicker.js +4 -3
  77. package/legacy/MobileDateTimePicker/MobileDateTimePicker.js +6 -2
  78. package/legacy/MobileTimePicker/MobileTimePicker.js +5 -1
  79. package/legacy/MonthCalendar/MonthCalendar.js +30 -13
  80. package/legacy/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +1 -1
  81. package/legacy/PickersLayout/PickersLayout.js +1 -0
  82. package/legacy/PickersLayout/usePickerLayout.js +3 -2
  83. package/legacy/PickersShortcuts/PickersShortcuts.js +10 -2
  84. package/legacy/StaticDatePicker/StaticDatePicker.js +1 -1
  85. package/legacy/StaticDateTimePicker/StaticDateTimePicker.js +1 -1
  86. package/legacy/TimeField/TimeField.js +1 -1
  87. package/legacy/YearCalendar/YearCalendar.js +28 -11
  88. package/legacy/index.js +1 -1
  89. package/legacy/internals/hooks/useField/useFieldState.js +0 -1
  90. package/legacy/internals/hooks/usePicker/usePickerValue.js +24 -2
  91. package/legacy/internals/utils/date-time-utils.js +39 -0
  92. package/legacy/internals/utils/date-utils.js +31 -9
  93. package/legacy/internals/utils/getDefaultReferenceDate.js +2 -3
  94. package/legacy/internals/utils/time-utils.js +26 -0
  95. package/legacy/internals/utils/views.js +7 -5
  96. package/legacy/locales/deDE.js +2 -2
  97. package/legacy/locales/elGR.js +93 -0
  98. package/legacy/locales/index.js +17 -15
  99. package/legacy/locales/roRO.js +81 -0
  100. package/locales/deDE.js +2 -2
  101. package/locales/elGR.d.ts +53 -0
  102. package/locales/elGR.js +57 -0
  103. package/locales/index.d.ts +17 -15
  104. package/locales/index.js +17 -15
  105. package/locales/roRO.d.ts +53 -0
  106. package/locales/roRO.js +63 -0
  107. package/models/adapters.d.ts +137 -37
  108. package/modern/AdapterDateFns/AdapterDateFns.js +20 -19
  109. package/modern/AdapterDateFnsJalali/AdapterDateFnsJalali.js +17 -16
  110. package/modern/AdapterDayjs/AdapterDayjs.js +12 -11
  111. package/modern/AdapterLuxon/AdapterLuxon.js +20 -19
  112. package/modern/AdapterMoment/AdapterMoment.js +12 -11
  113. package/modern/AdapterMomentHijri/AdapterMomentHijri.js +20 -19
  114. package/modern/AdapterMomentJalaali/AdapterMomentJalaali.js +20 -19
  115. package/modern/DateCalendar/DateCalendar.js +16 -6
  116. package/modern/DateCalendar/useCalendarState.js +36 -14
  117. package/modern/DateField/DateField.js +1 -1
  118. package/modern/DatePicker/DatePicker.js +1 -1
  119. package/modern/DatePicker/DatePickerToolbar.js +6 -15
  120. package/modern/DatePicker/shared.js +1 -16
  121. package/modern/DateTimeField/DateTimeField.js +1 -1
  122. package/modern/DateTimePicker/DateTimePicker.js +1 -1
  123. package/modern/DesktopDatePicker/DesktopDatePicker.js +4 -3
  124. package/modern/DesktopDateTimePicker/DesktopDateTimePicker.js +6 -2
  125. package/modern/DesktopTimePicker/DesktopTimePicker.js +5 -1
  126. package/modern/LocalizationProvider/LocalizationProvider.js +1 -0
  127. package/modern/MobileDatePicker/MobileDatePicker.js +4 -3
  128. package/modern/MobileDateTimePicker/MobileDateTimePicker.js +6 -2
  129. package/modern/MobileTimePicker/MobileTimePicker.js +5 -1
  130. package/modern/MonthCalendar/MonthCalendar.js +28 -11
  131. package/modern/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +1 -1
  132. package/modern/PickersLayout/PickersLayout.js +1 -0
  133. package/modern/PickersLayout/usePickerLayout.js +4 -3
  134. package/modern/PickersShortcuts/PickersShortcuts.js +10 -2
  135. package/modern/StaticDatePicker/StaticDatePicker.js +1 -1
  136. package/modern/StaticDateTimePicker/StaticDateTimePicker.js +1 -1
  137. package/modern/TimeField/TimeField.js +1 -1
  138. package/modern/YearCalendar/YearCalendar.js +26 -9
  139. package/modern/index.js +1 -1
  140. package/modern/internals/hooks/useField/useFieldState.js +0 -1
  141. package/modern/internals/hooks/usePicker/usePickerValue.js +22 -2
  142. package/modern/internals/utils/date-time-utils.js +41 -0
  143. package/modern/internals/utils/date-utils.js +33 -10
  144. package/modern/internals/utils/getDefaultReferenceDate.js +2 -3
  145. package/modern/internals/utils/time-utils.js +27 -0
  146. package/modern/internals/utils/views.js +6 -2
  147. package/modern/locales/deDE.js +2 -2
  148. package/modern/locales/elGR.js +57 -0
  149. package/modern/locales/index.js +17 -15
  150. package/modern/locales/roRO.js +60 -0
  151. package/node/AdapterDateFns/AdapterDateFns.js +20 -19
  152. package/node/AdapterDateFnsJalali/AdapterDateFnsJalali.js +17 -16
  153. package/node/AdapterDayjs/AdapterDayjs.js +12 -11
  154. package/node/AdapterLuxon/AdapterLuxon.js +20 -19
  155. package/node/AdapterMoment/AdapterMoment.js +12 -11
  156. package/node/AdapterMomentHijri/AdapterMomentHijri.js +20 -19
  157. package/node/AdapterMomentJalaali/AdapterMomentJalaali.js +20 -19
  158. package/node/DateCalendar/DateCalendar.js +16 -6
  159. package/node/DateCalendar/useCalendarState.js +36 -14
  160. package/node/DateField/DateField.js +1 -1
  161. package/node/DatePicker/DatePicker.js +1 -1
  162. package/node/DatePicker/DatePickerToolbar.js +6 -15
  163. package/node/DatePicker/shared.js +0 -17
  164. package/node/DateTimeField/DateTimeField.js +1 -1
  165. package/node/DateTimePicker/DateTimePicker.js +1 -1
  166. package/node/DesktopDatePicker/DesktopDatePicker.js +3 -2
  167. package/node/DesktopDateTimePicker/DesktopDateTimePicker.js +8 -4
  168. package/node/DesktopTimePicker/DesktopTimePicker.js +7 -3
  169. package/node/LocalizationProvider/LocalizationProvider.js +1 -0
  170. package/node/MobileDatePicker/MobileDatePicker.js +3 -2
  171. package/node/MobileDateTimePicker/MobileDateTimePicker.js +8 -4
  172. package/node/MobileTimePicker/MobileTimePicker.js +7 -3
  173. package/node/MonthCalendar/MonthCalendar.js +28 -11
  174. package/node/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +1 -1
  175. package/node/PickersLayout/PickersLayout.js +1 -0
  176. package/node/PickersLayout/usePickerLayout.js +4 -3
  177. package/node/PickersShortcuts/PickersShortcuts.js +10 -2
  178. package/node/StaticDatePicker/StaticDatePicker.js +1 -1
  179. package/node/StaticDateTimePicker/StaticDateTimePicker.js +1 -1
  180. package/node/TimeField/TimeField.js +1 -1
  181. package/node/YearCalendar/YearCalendar.js +26 -9
  182. package/node/index.js +1 -1
  183. package/node/internals/hooks/useField/useFieldState.js +0 -1
  184. package/node/internals/hooks/usePicker/usePickerValue.js +22 -2
  185. package/node/internals/utils/date-time-utils.js +49 -0
  186. package/node/internals/utils/date-utils.js +35 -12
  187. package/node/internals/utils/getDefaultReferenceDate.js +3 -3
  188. package/node/internals/utils/time-utils.js +30 -2
  189. package/node/internals/utils/views.js +8 -5
  190. package/node/locales/deDE.js +2 -2
  191. package/node/locales/elGR.js +64 -0
  192. package/node/locales/index.js +112 -90
  193. package/node/locales/roRO.js +67 -0
  194. package/package.json +1 -1
@@ -12,15 +12,18 @@ var _utils = require("@mui/base/utils");
12
12
  var _valueManagers = require("../internals/utils/valueManagers");
13
13
  var _TimeField = require("../TimeField");
14
14
  var _shared = require("../TimePicker/shared");
15
- var _internals = require("../internals");
15
+ var _useUtils = require("../internals/hooks/useUtils");
16
+ var _validateTime = require("../internals/utils/validation/validateTime");
16
17
  var _icons = require("../icons");
17
18
  var _useDesktopPicker = require("../internals/hooks/useDesktopPicker");
18
19
  var _extractValidationProps = require("../internals/utils/validation/extractValidationProps");
19
20
  var _timeViewRenderers = require("../timeViewRenderers");
21
+ var _timeUtils = require("../internals/utils/time-utils");
20
22
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
21
23
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
22
24
  const DesktopTimePicker = /*#__PURE__*/React.forwardRef(function DesktopTimePicker(inProps, ref) {
23
- const localeText = (0, _internals.useLocaleText)();
25
+ const localeText = (0, _useUtils.useLocaleText)();
26
+ const utils = (0, _useUtils.useUtils)();
24
27
 
25
28
  // Props with the default values common to all time pickers
26
29
  const defaultizedProps = (0, _shared.useTimePickerDefaultizedProps)(inProps, 'MuiDesktopTimePicker');
@@ -49,6 +52,7 @@ const DesktopTimePicker = /*#__PURE__*/React.forwardRef(function DesktopTimePick
49
52
  ampmInClock,
50
53
  timeSteps,
51
54
  viewRenderers,
55
+ format: (0, _timeUtils.resolveTimeFormat)(utils, defaultizedProps),
52
56
  // Setting only `hours` time view in case of single column time picker
53
57
  // Allows for easy view lifecycle management
54
58
  views: shouldRenderTimeInASingleColumn ? ['hours'] : views,
@@ -76,7 +80,7 @@ const DesktopTimePicker = /*#__PURE__*/React.forwardRef(function DesktopTimePick
76
80
  valueManager: _valueManagers.singleItemValueManager,
77
81
  valueType: 'time',
78
82
  getOpenDialogAriaText: localeText.openTimePickerDialogue,
79
- validator: _internals.validateTime
83
+ validator: _validateTime.validateTime
80
84
  });
81
85
  return renderPicker();
82
86
  });
@@ -122,6 +122,7 @@ process.env.NODE_ENV !== "production" ? LocalizationProvider.propTypes = {
122
122
  keyboardDateTime: _propTypes.default.string,
123
123
  keyboardDateTime12h: _propTypes.default.string,
124
124
  keyboardDateTime24h: _propTypes.default.string,
125
+ meridiem: _propTypes.default.string,
125
126
  minutes: _propTypes.default.string,
126
127
  month: _propTypes.default.string,
127
128
  monthAndDate: _propTypes.default.string,
@@ -16,6 +16,7 @@ var _DateField = require("../DateField");
16
16
  var _extractValidationProps = require("../internals/utils/validation/extractValidationProps");
17
17
  var _valueManagers = require("../internals/utils/valueManagers");
18
18
  var _dateViewRenderers = require("../dateViewRenderers");
19
+ var _dateUtils = require("../internals/utils/date-utils");
19
20
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
20
21
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
21
22
  const MobileDatePicker = /*#__PURE__*/React.forwardRef(function MobileDatePicker(inProps, ref) {
@@ -33,7 +34,7 @@ const MobileDatePicker = /*#__PURE__*/React.forwardRef(function MobileDatePicker
33
34
  // Props with the default values specific to the mobile variant
34
35
  const props = (0, _extends2.default)({}, defaultizedProps, {
35
36
  viewRenderers,
36
- format: (0, _shared.getDatePickerFieldFormat)(utils, defaultizedProps),
37
+ format: (0, _dateUtils.resolveDateFormat)(utils, defaultizedProps, false),
37
38
  slots: (0, _extends2.default)({
38
39
  field: _DateField.DateField
39
40
  }, defaultizedProps.slots),
@@ -99,7 +100,7 @@ MobileDatePicker.propTypes = {
99
100
  */
100
101
  dayOfWeekFormatter: _propTypes.default.func,
101
102
  /**
102
- * Default calendar month displayed when `value={null}`.
103
+ * Default calendar month displayed when `value` and `defaultValue` are empty.
103
104
  */
104
105
  defaultCalendarMonth: _propTypes.default.any,
105
106
  /**
@@ -12,15 +12,18 @@ var _utils = require("@mui/base/utils");
12
12
  var _valueManagers = require("../internals/utils/valueManagers");
13
13
  var _DateTimeField = require("../DateTimeField");
14
14
  var _shared = require("../DateTimePicker/shared");
15
- var _internals = require("../internals");
15
+ var _useUtils = require("../internals/hooks/useUtils");
16
+ var _validateDateTime = require("../internals/utils/validation/validateDateTime");
16
17
  var _useMobilePicker = require("../internals/hooks/useMobilePicker");
17
18
  var _extractValidationProps = require("../internals/utils/validation/extractValidationProps");
18
19
  var _dateViewRenderers = require("../dateViewRenderers");
19
20
  var _timeViewRenderers = require("../timeViewRenderers");
21
+ var _dateTimeUtils = require("../internals/utils/date-time-utils");
20
22
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
21
23
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
22
24
  const MobileDateTimePicker = /*#__PURE__*/React.forwardRef(function MobileDateTimePicker(inProps, ref) {
23
- const localeText = (0, _internals.useLocaleText)();
25
+ const localeText = (0, _useUtils.useLocaleText)();
26
+ const utils = (0, _useUtils.useUtils)();
24
27
 
25
28
  // Props with the default values common to all date time pickers
26
29
  const defaultizedProps = (0, _shared.useDateTimePickerDefaultizedProps)(inProps, 'MuiMobileDateTimePicker');
@@ -37,6 +40,7 @@ const MobileDateTimePicker = /*#__PURE__*/React.forwardRef(function MobileDateTi
37
40
  // Props with the default values specific to the mobile variant
38
41
  const props = (0, _extends2.default)({}, defaultizedProps, {
39
42
  viewRenderers,
43
+ format: (0, _dateTimeUtils.resolveDateTimeFormat)(utils, defaultizedProps),
40
44
  ampmInClock,
41
45
  slots: (0, _extends2.default)({
42
46
  field: _DateTimeField.DateTimeField
@@ -61,7 +65,7 @@ const MobileDateTimePicker = /*#__PURE__*/React.forwardRef(function MobileDateTi
61
65
  valueManager: _valueManagers.singleItemValueManager,
62
66
  valueType: 'date-time',
63
67
  getOpenDialogAriaText: localeText.openDatePickerDialogue,
64
- validator: _internals.validateDateTime
68
+ validator: _validateDateTime.validateDateTime
65
69
  });
66
70
  return renderPicker();
67
71
  });
@@ -117,7 +121,7 @@ MobileDateTimePicker.propTypes = {
117
121
  */
118
122
  dayOfWeekFormatter: _propTypes.default.func,
119
123
  /**
120
- * Default calendar month displayed when `value={null}`.
124
+ * Default calendar month displayed when `value` and `defaultValue` are empty.
121
125
  */
122
126
  defaultCalendarMonth: _propTypes.default.any,
123
127
  /**
@@ -12,14 +12,17 @@ var _utils = require("@mui/base/utils");
12
12
  var _valueManagers = require("../internals/utils/valueManagers");
13
13
  var _TimeField = require("../TimeField");
14
14
  var _shared = require("../TimePicker/shared");
15
- var _internals = require("../internals");
15
+ var _useUtils = require("../internals/hooks/useUtils");
16
+ var _validateTime = require("../internals/utils/validation/validateTime");
16
17
  var _useMobilePicker = require("../internals/hooks/useMobilePicker");
17
18
  var _extractValidationProps = require("../internals/utils/validation/extractValidationProps");
18
19
  var _timeViewRenderers = require("../timeViewRenderers");
20
+ var _timeUtils = require("../internals/utils/time-utils");
19
21
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
20
22
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
21
23
  const MobileTimePicker = /*#__PURE__*/React.forwardRef(function MobileTimePicker(inProps, ref) {
22
- const localeText = (0, _internals.useLocaleText)();
24
+ const localeText = (0, _useUtils.useLocaleText)();
25
+ const utils = (0, _useUtils.useUtils)();
23
26
 
24
27
  // Props with the default values common to all time pickers
25
28
  const defaultizedProps = (0, _shared.useTimePickerDefaultizedProps)(inProps, 'MuiMobileTimePicker');
@@ -34,6 +37,7 @@ const MobileTimePicker = /*#__PURE__*/React.forwardRef(function MobileTimePicker
34
37
  const props = (0, _extends2.default)({}, defaultizedProps, {
35
38
  ampmInClock,
36
39
  viewRenderers,
40
+ format: (0, _timeUtils.resolveTimeFormat)(utils, defaultizedProps),
37
41
  slots: (0, _extends2.default)({
38
42
  field: _TimeField.TimeField
39
43
  }, defaultizedProps.slots),
@@ -54,7 +58,7 @@ const MobileTimePicker = /*#__PURE__*/React.forwardRef(function MobileTimePicker
54
58
  valueManager: _valueManagers.singleItemValueManager,
55
59
  valueType: 'time',
56
60
  getOpenDialogAriaText: localeText.openTimePickerDialogue,
57
- validator: _internals.validateTime
61
+ validator: _validateTime.validateTime
58
62
  });
59
63
  return renderPicker();
60
64
  });
@@ -18,8 +18,10 @@ var _PickersMonth = require("./PickersMonth");
18
18
  var _useUtils = require("../internals/hooks/useUtils");
19
19
  var _monthCalendarClasses = require("./monthCalendarClasses");
20
20
  var _dateUtils = require("../internals/utils/date-utils");
21
+ var _valueManagers = require("../internals/utils/valueManagers");
22
+ var _getDefaultReferenceDate = require("../internals/utils/getDefaultReferenceDate");
21
23
  var _jsxRuntime = require("react/jsx-runtime");
22
- const _excluded = ["className", "value", "defaultValue", "disabled", "disableFuture", "disablePast", "maxDate", "minDate", "onChange", "shouldDisableMonth", "readOnly", "disableHighlightToday", "autoFocus", "onMonthFocus", "hasFocus", "onFocusedViewChange", "monthsPerRow"];
24
+ const _excluded = ["className", "value", "defaultValue", "referenceDate", "disabled", "disableFuture", "disablePast", "maxDate", "minDate", "onChange", "shouldDisableMonth", "readOnly", "disableHighlightToday", "autoFocus", "onMonthFocus", "hasFocus", "onFocusedViewChange", "monthsPerRow"];
23
25
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
24
26
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
25
27
  const useUtilityClasses = ownerState => {
@@ -66,6 +68,7 @@ const MonthCalendar = /*#__PURE__*/React.forwardRef(function MonthCalendar(inPro
66
68
  className,
67
69
  value: valueProp,
68
70
  defaultValue,
71
+ referenceDate: referenceDateProp,
69
72
  disabled,
70
73
  disableFuture,
71
74
  disablePast,
@@ -90,8 +93,16 @@ const MonthCalendar = /*#__PURE__*/React.forwardRef(function MonthCalendar(inPro
90
93
  controlled: valueProp,
91
94
  default: defaultValue ?? null
92
95
  });
96
+ const referenceDate = React.useMemo(() => _valueManagers.singleItemValueManager.getInitialReferenceValue({
97
+ value,
98
+ utils,
99
+ props,
100
+ referenceDate: referenceDateProp,
101
+ granularity: _getDefaultReferenceDate.SECTION_TYPE_GRANULARITY.month
102
+ }), [] // eslint-disable-line react-hooks/exhaustive-deps
103
+ );
104
+
93
105
  const todayMonth = React.useMemo(() => utils.getMonth(now), [utils, now]);
94
- const selectedDateOrStartOfMonth = React.useMemo(() => value ?? utils.startOfMonth(now), [now, utils, value]);
95
106
  const selectedMonth = React.useMemo(() => {
96
107
  if (value != null) {
97
108
  return utils.getMonth(value);
@@ -99,8 +110,8 @@ const MonthCalendar = /*#__PURE__*/React.forwardRef(function MonthCalendar(inPro
99
110
  if (disableHighlightToday) {
100
111
  return null;
101
112
  }
102
- return utils.getMonth(now);
103
- }, [now, value, utils, disableHighlightToday]);
113
+ return utils.getMonth(referenceDate);
114
+ }, [value, utils, disableHighlightToday, referenceDate]);
104
115
  const [focusedMonth, setFocusedMonth] = React.useState(() => selectedMonth || todayMonth);
105
116
  const [internalHasFocus, setInternalHasFocus] = (0, _utils.unstable_useControlled)({
106
117
  name: 'MonthCalendar',
@@ -114,30 +125,31 @@ const MonthCalendar = /*#__PURE__*/React.forwardRef(function MonthCalendar(inPro
114
125
  onFocusedViewChange(newHasFocus);
115
126
  }
116
127
  });
117
- const isMonthDisabled = React.useCallback(month => {
128
+ const isMonthDisabled = React.useCallback(dateToValidate => {
118
129
  const firstEnabledMonth = utils.startOfMonth(disablePast && utils.isAfter(now, minDate) ? now : minDate);
119
130
  const lastEnabledMonth = utils.startOfMonth(disableFuture && utils.isBefore(now, maxDate) ? now : maxDate);
120
- if (utils.isBefore(month, firstEnabledMonth)) {
131
+ const monthToValidate = utils.startOfMonth(dateToValidate);
132
+ if (utils.isBefore(monthToValidate, firstEnabledMonth)) {
121
133
  return true;
122
134
  }
123
- if (utils.isAfter(month, lastEnabledMonth)) {
135
+ if (utils.isAfter(monthToValidate, lastEnabledMonth)) {
124
136
  return true;
125
137
  }
126
138
  if (!shouldDisableMonth) {
127
139
  return false;
128
140
  }
129
- return shouldDisableMonth(month);
141
+ return shouldDisableMonth(monthToValidate);
130
142
  }, [disableFuture, disablePast, maxDate, minDate, now, shouldDisableMonth, utils]);
131
143
  const handleMonthSelection = (0, _utils.unstable_useEventCallback)((event, month) => {
132
144
  if (readOnly) {
133
145
  return;
134
146
  }
135
- const newDate = utils.setMonth(selectedDateOrStartOfMonth, month);
147
+ const newDate = utils.setMonth(value ?? referenceDate, month);
136
148
  setValue(newDate);
137
149
  onChange?.(newDate);
138
150
  });
139
151
  const focusMonth = (0, _utils.unstable_useEventCallback)(month => {
140
- if (!isMonthDisabled(utils.setMonth(selectedDateOrStartOfMonth, month))) {
152
+ if (!isMonthDisabled(utils.setMonth(value ?? referenceDate, month))) {
141
153
  setFocusedMonth(month);
142
154
  changeHasFocus(true);
143
155
  if (onMonthFocus) {
@@ -185,7 +197,7 @@ const MonthCalendar = /*#__PURE__*/React.forwardRef(function MonthCalendar(inPro
185
197
  className: (0, _clsx.default)(classes.root, className),
186
198
  ownerState: ownerState
187
199
  }, other, {
188
- children: (0, _dateUtils.getMonthsInYear)(utils, selectedDateOrStartOfMonth).map(month => {
200
+ children: (0, _dateUtils.getMonthsInYear)(utils, value ?? referenceDate).map(month => {
189
201
  const monthNumber = utils.getMonth(month);
190
202
  const monthText = utils.format(month, 'monthShort');
191
203
  const isSelected = monthNumber === selectedMonth;
@@ -272,6 +284,11 @@ process.env.NODE_ENV !== "production" ? MonthCalendar.propTypes = {
272
284
  * If `true` picker is readonly
273
285
  */
274
286
  readOnly: _propTypes.default.bool,
287
+ /**
288
+ * The date used to generate the new value when both `value` and `defaultValue` are empty.
289
+ * @default The closest valid month using the validation props, except callbacks such as `shouldDisableDate`.
290
+ */
291
+ referenceDate: _propTypes.default.any,
275
292
  /**
276
293
  * Disable specific month.
277
294
  * @template TDate
@@ -143,7 +143,7 @@ const MultiSectionDigitalClockSection = /*#__PURE__*/React.forwardRef(function M
143
143
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(DigitalClockSectionItem, (0, _extends2.default)({
144
144
  onClick: () => !readOnly && onChange(option.value),
145
145
  selected: isSelected,
146
- disabled: disabled ?? option.isDisabled?.(option.value),
146
+ disabled: disabled || option.isDisabled?.(option.value),
147
147
  disableRipple: readOnly,
148
148
  role: "option"
149
149
  // aria-readonly is not supported here and does not have any effect
@@ -146,6 +146,7 @@ process.env.NODE_ENV !== "production" ? PickersLayout.propTypes = {
146
146
  onClose: _propTypes.default.func.isRequired,
147
147
  onDismiss: _propTypes.default.func.isRequired,
148
148
  onOpen: _propTypes.default.func.isRequired,
149
+ onSelectShortcut: _propTypes.default.func.isRequired,
149
150
  onSetToday: _propTypes.default.func.isRequired,
150
151
  onViewChange: _propTypes.default.func.isRequired,
151
152
  /**
@@ -47,6 +47,7 @@ const usePickerLayout = props => {
47
47
  onViewChange,
48
48
  value,
49
49
  onChange,
50
+ onSelectShortcut,
50
51
  isValid,
51
52
  isLandscape,
52
53
  disabled,
@@ -59,7 +60,7 @@ const usePickerLayout = props => {
59
60
  // TODO: Remove this "as" hack. It get introduced to mark `value` prop in PickersLayoutProps as not required.
60
61
  // The true type should be
61
62
  // - For pickers value: TDate | null
62
- // - For rangepickers value: [TDate | null, TDate | null]
63
+ // - For range pickers value: [TDate | null, TDate | null]
63
64
  } = props;
64
65
  const slots = innerSlots ?? (0, _slotsMigration.uncapitalizeObjectKeys)(components);
65
66
  const slotProps = innerSlotProps ?? componentsProps;
@@ -129,13 +130,13 @@ const usePickerLayout = props => {
129
130
  additionalProps: {
130
131
  isValid,
131
132
  isLandscape,
132
- onChange,
133
+ onChange: onSelectShortcut,
133
134
  className: classes.shortcuts
134
135
  },
135
136
  ownerState: {
136
137
  isValid,
137
138
  isLandscape,
138
- onChange,
139
+ onChange: onSelectShortcut,
139
140
  className: classes.shortcuts,
140
141
  wrapperVariant
141
142
  }
@@ -14,12 +14,13 @@ var _ListItem = _interopRequireDefault(require("@mui/material/ListItem"));
14
14
  var _Chip = _interopRequireDefault(require("@mui/material/Chip"));
15
15
  var _dimensions = require("../internals/constants/dimensions");
16
16
  var _jsxRuntime = require("react/jsx-runtime");
17
- const _excluded = ["items", "isLandscape", "onChange", "isValid"];
17
+ const _excluded = ["items", "changeImportance", "isLandscape", "onChange", "isValid"];
18
18
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
19
19
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
20
20
  function PickersShortcuts(props) {
21
21
  const {
22
22
  items,
23
+ changeImportance,
23
24
  onChange,
24
25
  isValid
25
26
  } = props,
@@ -34,7 +35,7 @@ function PickersShortcuts(props) {
34
35
  return {
35
36
  label: item.label,
36
37
  onClick: () => {
37
- onChange(newValue);
38
+ onChange(newValue, changeImportance);
38
39
  },
39
40
  disabled: !isValid(newValue)
40
41
  };
@@ -59,6 +60,13 @@ process.env.NODE_ENV !== "production" ? PickersShortcuts.propTypes = {
59
60
  // | These PropTypes are generated from the TypeScript type definitions |
60
61
  // | To update them edit the TypeScript types and run "yarn proptypes" |
61
62
  // ----------------------------------------------------------------------
63
+ /**
64
+ * Importance of the change when picking a shortcut:
65
+ * - "accept": fires `onChange`, fires `onAccept` and closes the picker.
66
+ * - "set": fires `onChange` but do not fire `onAccept` and does not close the picker.
67
+ * @default "accept"
68
+ */
69
+ changeImportance: _propTypes.default.oneOf(['accept', 'set']),
62
70
  className: _propTypes.default.string,
63
71
  /**
64
72
  * If `true`, compact vertical padding designed for keyboard and mouse input is used for
@@ -83,7 +83,7 @@ StaticDatePicker.propTypes = {
83
83
  */
84
84
  dayOfWeekFormatter: _propTypes.default.func,
85
85
  /**
86
- * Default calendar month displayed when `value={null}`.
86
+ * Default calendar month displayed when `value` and `defaultValue` are empty.
87
87
  */
88
88
  defaultCalendarMonth: _propTypes.default.any,
89
89
  /**
@@ -103,7 +103,7 @@ StaticDateTimePicker.propTypes = {
103
103
  */
104
104
  dayOfWeekFormatter: _propTypes.default.func,
105
105
  /**
106
- * Default calendar month displayed when `value={null}`.
106
+ * Default calendar month displayed when `value` and `defaultValue` are empty.
107
107
  */
108
108
  defaultCalendarMonth: _propTypes.default.any,
109
109
  /**
@@ -256,7 +256,7 @@ process.env.NODE_ENV !== "production" ? TimeField.propTypes = {
256
256
  */
257
257
  readOnly: _propTypes.default.bool,
258
258
  /**
259
- * The date used to generate a part of the date-time that is not present in the format when both `value` and `defaultValue` are not present.
259
+ * The date used to generate a part of the new value that is not present in the format when both `value` and `defaultValue` are empty.
260
260
  * For example, on time fields it will be used to determine the date to set.
261
261
  * @default The closest valid date using the validation props, except callbacks such as `shouldDisableDate`. Value is rounded to the most granular section used.
262
262
  */
@@ -17,8 +17,10 @@ var _PickersYear = require("./PickersYear");
17
17
  var _useUtils = require("../internals/hooks/useUtils");
18
18
  var _yearCalendarClasses = require("./yearCalendarClasses");
19
19
  var _dateUtils = require("../internals/utils/date-utils");
20
+ var _valueManagers = require("../internals/utils/valueManagers");
21
+ var _getDefaultReferenceDate = require("../internals/utils/getDefaultReferenceDate");
20
22
  var _jsxRuntime = require("react/jsx-runtime");
21
- const _excluded = ["autoFocus", "className", "value", "defaultValue", "disabled", "disableFuture", "disablePast", "maxDate", "minDate", "onChange", "readOnly", "shouldDisableYear", "disableHighlightToday", "onYearFocus", "hasFocus", "onFocusedViewChange", "yearsPerRow"];
23
+ const _excluded = ["autoFocus", "className", "value", "defaultValue", "referenceDate", "disabled", "disableFuture", "disablePast", "maxDate", "minDate", "onChange", "readOnly", "shouldDisableYear", "disableHighlightToday", "onYearFocus", "hasFocus", "onFocusedViewChange", "yearsPerRow"];
22
24
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
23
25
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
24
26
  const useUtilityClasses = ownerState => {
@@ -69,6 +71,7 @@ const YearCalendar = /*#__PURE__*/React.forwardRef(function YearCalendar(inProps
69
71
  className,
70
72
  value: valueProp,
71
73
  defaultValue,
74
+ referenceDate: referenceDateProp,
72
75
  disabled,
73
76
  disableFuture,
74
77
  disablePast,
@@ -92,7 +95,15 @@ const YearCalendar = /*#__PURE__*/React.forwardRef(function YearCalendar(inProps
92
95
  controlled: valueProp,
93
96
  default: defaultValue ?? null
94
97
  });
95
- const selectedDateOrStartOfYear = React.useMemo(() => value ?? utils.startOfYear(now), [now, utils, value]);
98
+ const referenceDate = React.useMemo(() => _valueManagers.singleItemValueManager.getInitialReferenceValue({
99
+ value,
100
+ utils,
101
+ props,
102
+ referenceDate: referenceDateProp,
103
+ granularity: _getDefaultReferenceDate.SECTION_TYPE_GRANULARITY.year
104
+ }), [] // eslint-disable-line react-hooks/exhaustive-deps
105
+ );
106
+
96
107
  const todayYear = React.useMemo(() => utils.getYear(now), [utils, now]);
97
108
  const selectedYear = React.useMemo(() => {
98
109
  if (value != null) {
@@ -101,8 +112,8 @@ const YearCalendar = /*#__PURE__*/React.forwardRef(function YearCalendar(inProps
101
112
  if (disableHighlightToday) {
102
113
  return null;
103
114
  }
104
- return utils.getYear(now);
105
- }, [now, value, utils, disableHighlightToday]);
115
+ return utils.getYear(referenceDate);
116
+ }, [value, utils, disableHighlightToday, referenceDate]);
106
117
  const [focusedYear, setFocusedYear] = React.useState(() => selectedYear || todayYear);
107
118
  const [internalHasFocus, setInternalHasFocus] = (0, _utils.unstable_useControlled)({
108
119
  name: 'YearCalendar',
@@ -129,21 +140,22 @@ const YearCalendar = /*#__PURE__*/React.forwardRef(function YearCalendar(inProps
129
140
  if (maxDate && utils.isAfterYear(dateToValidate, maxDate)) {
130
141
  return true;
131
142
  }
132
- if (shouldDisableYear && shouldDisableYear(dateToValidate)) {
133
- return true;
143
+ if (!shouldDisableYear) {
144
+ return false;
134
145
  }
135
- return false;
146
+ const yearToValidate = utils.startOfYear(dateToValidate);
147
+ return shouldDisableYear(yearToValidate);
136
148
  }, [disableFuture, disablePast, maxDate, minDate, now, shouldDisableYear, utils]);
137
149
  const handleYearSelection = (0, _utils.unstable_useEventCallback)((event, year) => {
138
150
  if (readOnly) {
139
151
  return;
140
152
  }
141
- const newDate = utils.setYear(selectedDateOrStartOfYear, year);
153
+ const newDate = utils.setYear(value ?? referenceDate, year);
142
154
  setValue(newDate);
143
155
  onChange?.(newDate);
144
156
  });
145
157
  const focusYear = (0, _utils.unstable_useEventCallback)(year => {
146
- if (!isYearDisabled(utils.setYear(selectedDateOrStartOfYear, year))) {
158
+ if (!isYearDisabled(utils.setYear(value ?? referenceDate, year))) {
147
159
  setFocusedYear(year);
148
160
  changeHasFocus(true);
149
161
  onYearFocus?.(year);
@@ -291,6 +303,11 @@ process.env.NODE_ENV !== "production" ? YearCalendar.propTypes = {
291
303
  * If `true` picker is readonly
292
304
  */
293
305
  readOnly: _propTypes.default.bool,
306
+ /**
307
+ * The date used to generate the new value when both `value` and `defaultValue` are empty.
308
+ * @default The closest valid year using the validation props, except callbacks such as `shouldDisableDate`.
309
+ */
310
+ referenceDate: _propTypes.default.any,
294
311
  /**
295
312
  * Disable specific year.
296
313
  * @template TDate
package/node/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-date-pickers v6.6.0
2
+ * @mui/x-date-pickers v6.8.0
3
3
  *
4
4
  * @license MIT
5
5
  * This source code is licensed under the MIT license found in the
@@ -56,7 +56,6 @@ const useFieldState = params => {
56
56
  const referenceValue = valueManager.getInitialReferenceValue({
57
57
  referenceDate: referenceDateProp,
58
58
  value: valueFromTheOutside,
59
- valueType,
60
59
  utils,
61
60
  props: internalProps,
62
61
  granularity
@@ -47,6 +47,14 @@ const shouldPublishValue = params => {
47
47
  }
48
48
  return hasChanged(dateState.lastPublishedValue);
49
49
  }
50
+ if (action.name === 'setValueFromShortcut' && action.changeImportance === 'accept') {
51
+ // On the first view,
52
+ // If the value is not controlled, then clicking on any value (including the one equal to `defaultValue`) should call `onChange`
53
+ if (isCurrentValueTheDefaultValue) {
54
+ return true;
55
+ }
56
+ return hasChanged(dateState.lastPublishedValue);
57
+ }
50
58
  return false;
51
59
  };
52
60
 
@@ -80,6 +88,9 @@ const shouldCommitValue = params => {
80
88
  }
81
89
  return hasChanged(dateState.lastCommittedValue);
82
90
  }
91
+ if (action.name === 'setValueFromShortcut') {
92
+ return action.changeImportance === 'accept' && hasChanged(dateState.lastCommittedValue);
93
+ }
83
94
  return false;
84
95
  };
85
96
 
@@ -97,6 +108,9 @@ const shouldClosePicker = params => {
97
108
  if (action.name === 'setValueFromView') {
98
109
  return action.selectionState === 'finish' && closeOnSelect;
99
110
  }
111
+ if (action.name === 'setValueFromShortcut') {
112
+ return action.changeImportance === 'accept';
113
+ }
100
114
  return false;
101
115
  };
102
116
 
@@ -263,7 +277,12 @@ const usePickerValue = ({
263
277
  value: newValue,
264
278
  selectionState
265
279
  }));
266
- const handleChangeField = (0, _useEventCallback.default)((newValue, context) => updateDate({
280
+ const handleSelectShortcut = (0, _useEventCallback.default)((newValue, changeImportance) => updateDate({
281
+ name: 'setValueFromShortcut',
282
+ value: newValue,
283
+ changeImportance: changeImportance ?? 'accept'
284
+ }));
285
+ const handleChangeFromField = (0, _useEventCallback.default)((newValue, context) => updateDate({
267
286
  name: 'setValueFromField',
268
287
  value: newValue,
269
288
  context
@@ -283,7 +302,7 @@ const usePickerValue = ({
283
302
  };
284
303
  const fieldResponse = {
285
304
  value: dateState.draft,
286
- onChange: handleChangeField,
305
+ onChange: handleChangeFromField,
287
306
  selectedSections,
288
307
  onSelectedSectionsChange: handleFieldSelectedSectionsChange
289
308
  };
@@ -308,6 +327,7 @@ const usePickerValue = ({
308
327
  const layoutResponse = (0, _extends2.default)({}, actions, {
309
328
  value: viewValue,
310
329
  onChange: handleChange,
330
+ onSelectShortcut: handleSelectShortcut,
311
331
  isValid
312
332
  });
313
333
  return {
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.resolveDateTimeFormat = void 0;
8
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
+ var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
10
+ var _timeUtils = require("./time-utils");
11
+ var _dateUtils = require("./date-utils");
12
+ const _excluded = ["views", "format"];
13
+ const resolveDateTimeFormat = (utils, _ref) => {
14
+ let {
15
+ views,
16
+ format
17
+ } = _ref,
18
+ other = (0, _objectWithoutPropertiesLoose2.default)(_ref, _excluded);
19
+ if (format) {
20
+ return format;
21
+ }
22
+ const dateViews = [];
23
+ const timeViews = [];
24
+ views.forEach(view => {
25
+ if ((0, _timeUtils.isTimeView)(view)) {
26
+ timeViews.push(view);
27
+ } else {
28
+ dateViews.push(view);
29
+ }
30
+ });
31
+ if (timeViews.length === 0) {
32
+ return (0, _dateUtils.resolveDateFormat)(utils, (0, _extends2.default)({
33
+ views: dateViews
34
+ }, other), false);
35
+ }
36
+ if (dateViews.length === 0) {
37
+ return (0, _timeUtils.resolveTimeFormat)(utils, (0, _extends2.default)({
38
+ views: timeViews
39
+ }, other));
40
+ }
41
+ const timeFormat = (0, _timeUtils.resolveTimeFormat)(utils, (0, _extends2.default)({
42
+ views: timeViews
43
+ }, other));
44
+ const dateFormat = (0, _dateUtils.resolveDateFormat)(utils, (0, _extends2.default)({
45
+ views: dateViews
46
+ }, other), false);
47
+ return `${dateFormat} ${timeFormat}`;
48
+ };
49
+ exports.resolveDateTimeFormat = resolveDateTimeFormat;