@mui/x-date-pickers 6.16.1 → 6.16.2

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 (98) hide show
  1. package/AdapterDayjs/AdapterDayjs.js +6 -4
  2. package/AdapterMoment/AdapterMoment.js +2 -5
  3. package/CHANGELOG.md +104 -0
  4. package/DateField/DateField.d.ts +10 -0
  5. package/DateField/DateField.js +10 -0
  6. package/DateTimeField/DateTimeField.d.ts +10 -0
  7. package/DateTimeField/DateTimeField.js +10 -0
  8. package/DateTimePicker/DateTimePicker.d.ts +10 -0
  9. package/DateTimePicker/DateTimePicker.js +15 -0
  10. package/DesktopDateTimePicker/DesktopDateTimePicker.d.ts +10 -0
  11. package/DesktopDateTimePicker/DesktopDateTimePicker.js +25 -7
  12. package/DesktopDateTimePicker/DesktopDateTimePicker.types.d.ts +4 -3
  13. package/DesktopTimePicker/DesktopTimePicker.d.ts +10 -0
  14. package/DesktopTimePicker/DesktopTimePicker.js +18 -9
  15. package/DigitalClock/DigitalClock.js +1 -1
  16. package/MobileDateTimePicker/MobileDateTimePicker.d.ts +10 -0
  17. package/MobileDateTimePicker/MobileDateTimePicker.js +10 -0
  18. package/MobileTimePicker/MobileTimePicker.d.ts +10 -0
  19. package/MobileTimePicker/MobileTimePicker.js +10 -0
  20. package/StaticDateTimePicker/StaticDateTimePicker.d.ts +10 -0
  21. package/StaticDateTimePicker/StaticDateTimePicker.js +10 -0
  22. package/StaticTimePicker/StaticTimePicker.d.ts +10 -0
  23. package/StaticTimePicker/StaticTimePicker.js +10 -0
  24. package/TimeField/TimeField.d.ts +10 -0
  25. package/TimeField/TimeField.js +10 -0
  26. package/TimePicker/TimePicker.d.ts +10 -0
  27. package/TimePicker/TimePicker.js +10 -0
  28. package/dateTimeViewRenderers/dateTimeViewRenderers.d.ts +2 -1
  29. package/dateTimeViewRenderers/dateTimeViewRenderers.js +52 -33
  30. package/index.js +1 -1
  31. package/internals/components/FakeTextField/FakeTextField.d.ts +7 -0
  32. package/internals/components/FakeTextField/FakeTextField.js +19 -0
  33. package/internals/components/FakeTextField/index.d.ts +1 -0
  34. package/internals/components/FakeTextField/index.js +1 -0
  35. package/internals/utils/date-time-utils.d.ts +11 -0
  36. package/internals/utils/date-time-utils.js +32 -2
  37. package/legacy/AdapterDayjs/AdapterDayjs.js +6 -4
  38. package/legacy/AdapterMoment/AdapterMoment.js +2 -5
  39. package/legacy/DateField/DateField.js +10 -0
  40. package/legacy/DateTimeField/DateTimeField.js +10 -0
  41. package/legacy/DateTimePicker/DateTimePicker.js +15 -0
  42. package/legacy/DesktopDateTimePicker/DesktopDateTimePicker.js +24 -8
  43. package/legacy/DesktopTimePicker/DesktopTimePicker.js +19 -10
  44. package/legacy/DigitalClock/DigitalClock.js +1 -1
  45. package/legacy/MobileDateTimePicker/MobileDateTimePicker.js +10 -0
  46. package/legacy/MobileTimePicker/MobileTimePicker.js +10 -0
  47. package/legacy/StaticDateTimePicker/StaticDateTimePicker.js +10 -0
  48. package/legacy/StaticTimePicker/StaticTimePicker.js +10 -0
  49. package/legacy/TimeField/TimeField.js +10 -0
  50. package/legacy/TimePicker/TimePicker.js +10 -0
  51. package/legacy/dateTimeViewRenderers/dateTimeViewRenderers.js +51 -33
  52. package/legacy/index.js +1 -1
  53. package/legacy/internals/components/FakeTextField/FakeTextField.js +19 -0
  54. package/legacy/internals/components/FakeTextField/index.js +1 -0
  55. package/legacy/internals/utils/date-time-utils.js +34 -2
  56. package/legacy/locales/esES.js +1 -1
  57. package/locales/esES.js +1 -1
  58. package/modern/AdapterDayjs/AdapterDayjs.js +6 -4
  59. package/modern/AdapterMoment/AdapterMoment.js +2 -5
  60. package/modern/DateField/DateField.js +10 -0
  61. package/modern/DateTimeField/DateTimeField.js +10 -0
  62. package/modern/DateTimePicker/DateTimePicker.js +15 -0
  63. package/modern/DesktopDateTimePicker/DesktopDateTimePicker.js +25 -7
  64. package/modern/DesktopTimePicker/DesktopTimePicker.js +17 -8
  65. package/modern/DigitalClock/DigitalClock.js +1 -1
  66. package/modern/MobileDateTimePicker/MobileDateTimePicker.js +10 -0
  67. package/modern/MobileTimePicker/MobileTimePicker.js +10 -0
  68. package/modern/StaticDateTimePicker/StaticDateTimePicker.js +10 -0
  69. package/modern/StaticTimePicker/StaticTimePicker.js +10 -0
  70. package/modern/TimeField/TimeField.js +10 -0
  71. package/modern/TimePicker/TimePicker.js +10 -0
  72. package/modern/dateTimeViewRenderers/dateTimeViewRenderers.js +52 -33
  73. package/modern/index.js +1 -1
  74. package/modern/internals/components/FakeTextField/FakeTextField.js +19 -0
  75. package/modern/internals/components/FakeTextField/index.js +1 -0
  76. package/modern/internals/utils/date-time-utils.js +29 -2
  77. package/modern/locales/esES.js +1 -1
  78. package/node/AdapterDayjs/AdapterDayjs.js +6 -4
  79. package/node/AdapterMoment/AdapterMoment.js +2 -5
  80. package/node/DateField/DateField.js +10 -0
  81. package/node/DateTimeField/DateTimeField.js +10 -0
  82. package/node/DateTimePicker/DateTimePicker.js +15 -0
  83. package/node/DesktopDateTimePicker/DesktopDateTimePicker.js +24 -6
  84. package/node/DesktopTimePicker/DesktopTimePicker.js +17 -8
  85. package/node/DigitalClock/DigitalClock.js +1 -1
  86. package/node/MobileDateTimePicker/MobileDateTimePicker.js +10 -0
  87. package/node/MobileTimePicker/MobileTimePicker.js +10 -0
  88. package/node/StaticDateTimePicker/StaticDateTimePicker.js +10 -0
  89. package/node/StaticTimePicker/StaticTimePicker.js +10 -0
  90. package/node/TimeField/TimeField.js +10 -0
  91. package/node/TimePicker/TimePicker.js +10 -0
  92. package/node/dateTimeViewRenderers/dateTimeViewRenderers.js +51 -32
  93. package/node/index.js +1 -1
  94. package/node/internals/components/FakeTextField/FakeTextField.js +27 -0
  95. package/node/internals/components/FakeTextField/index.js +12 -0
  96. package/node/internals/utils/date-time-utils.js +29 -1
  97. package/node/locales/esES.js +1 -1
  98. package/package.json +1 -1
@@ -3,10 +3,13 @@ import * as React from 'react';
3
3
  import Divider from '@mui/material/Divider';
4
4
  import { resolveComponentProps } from '@mui/base/utils';
5
5
  import { DateCalendar } from '../DateCalendar';
6
- import { MultiSectionDigitalClock, multiSectionDigitalClockSectionClasses } from '../MultiSectionDigitalClock';
6
+ import { multiSectionDigitalClockSectionClasses } from '../MultiSectionDigitalClock';
7
7
  import { DateTimeViewWrapper } from '../internals/components/DateTimeViewWrapper';
8
8
  import { isInternalTimeView } from '../internals/utils/time-utils';
9
9
  import { isDatePickerView } from '../internals/utils/date-utils';
10
+ import { renderDigitalClockTimeView, renderMultiSectionDigitalClockTimeView } from '../timeViewRenderers';
11
+ import { digitalClockClasses } from '../DigitalClock';
12
+ import { VIEW_HEIGHT } from '../internals/constants/dimensions';
10
13
  import { jsx as _jsx } from "react/jsx-runtime";
11
14
  import { jsxs as _jsxs } from "react/jsx-runtime";
12
15
  export const renderDesktopDateTimeView = ({
@@ -59,9 +62,42 @@ export const renderDesktopDateTimeView = ({
59
62
  disableIgnoringDatePartForTimeValidation,
60
63
  timeSteps,
61
64
  skipDisabled,
62
- timeViewsCount
65
+ timeViewsCount,
66
+ shouldRenderTimeInASingleColumn
63
67
  }) => {
64
68
  const isActionBarVisible = !!resolveComponentProps(slotProps?.actionBar ?? componentsProps?.actionBar, {})?.actions?.length;
69
+ const commonTimeProps = {
70
+ view: isInternalTimeView(view) ? view : 'hours',
71
+ onViewChange,
72
+ focusedView: focusedView && isInternalTimeView(focusedView) ? focusedView : null,
73
+ onFocusedViewChange,
74
+ views: views.filter(isInternalTimeView),
75
+ value,
76
+ defaultValue,
77
+ referenceDate,
78
+ onChange,
79
+ className,
80
+ classes,
81
+ disableFuture,
82
+ disablePast,
83
+ minTime,
84
+ maxTime,
85
+ shouldDisableTime,
86
+ shouldDisableClock,
87
+ minutesStep,
88
+ ampm,
89
+ components,
90
+ componentsProps,
91
+ slots,
92
+ slotProps,
93
+ readOnly,
94
+ disabled,
95
+ autoFocus,
96
+ disableIgnoringDatePartForTimeValidation,
97
+ timeSteps,
98
+ skipDisabled,
99
+ timezone
100
+ };
65
101
  return /*#__PURE__*/_jsxs(React.Fragment, {
66
102
  children: [/*#__PURE__*/_jsxs(DateTimeViewWrapper, {
67
103
  children: [/*#__PURE__*/_jsx(DateCalendar, {
@@ -108,45 +144,28 @@ export const renderDesktopDateTimeView = ({
108
144
  }), timeViewsCount > 0 && /*#__PURE__*/_jsxs(React.Fragment, {
109
145
  children: [/*#__PURE__*/_jsx(Divider, {
110
146
  orientation: "vertical"
111
- }), /*#__PURE__*/_jsx(MultiSectionDigitalClock, {
147
+ }), shouldRenderTimeInASingleColumn ? renderDigitalClockTimeView(_extends({}, commonTimeProps, {
148
+ view: 'hours',
149
+ views: ['hours'],
150
+ focusedView: focusedView && isInternalTimeView(focusedView) ? 'hours' : null,
151
+ sx: _extends({
152
+ width: 'auto',
153
+ [`&.${digitalClockClasses.root}`]: {
154
+ maxHeight: VIEW_HEIGHT
155
+ }
156
+ }, Array.isArray(sx) ? sx : [sx])
157
+ })) : renderMultiSectionDigitalClockTimeView(_extends({}, commonTimeProps, {
112
158
  view: isInternalTimeView(view) ? view : 'hours',
113
- onViewChange: onViewChange,
114
- focusedView: focusedView && isInternalTimeView(focusedView) ? focusedView : null,
115
- onFocusedViewChange: onFocusedViewChange,
116
159
  views: views.filter(isInternalTimeView),
117
- value: value,
118
- defaultValue: defaultValue,
119
- referenceDate: referenceDate,
120
- onChange: onChange,
121
- className: className,
122
- classes: classes,
123
- disableFuture: disableFuture,
124
- disablePast: disablePast,
125
- minTime: minTime,
126
- maxTime: maxTime,
127
- shouldDisableTime: shouldDisableTime,
128
- shouldDisableClock: shouldDisableClock,
129
- minutesStep: minutesStep,
130
- ampm: ampm,
131
- components: components,
132
- componentsProps: componentsProps,
133
- slots: slots,
134
- slotProps: slotProps,
135
- readOnly: readOnly,
136
- disabled: disabled,
160
+ focusedView: focusedView && isInternalTimeView(focusedView) ? focusedView : null,
137
161
  sx: _extends({
138
162
  borderBottom: 0,
139
163
  width: 'auto',
140
164
  [`.${multiSectionDigitalClockSectionClasses.root}`]: {
141
165
  maxHeight: '100%'
142
166
  }
143
- }, Array.isArray(sx) ? sx : [sx]),
144
- autoFocus: autoFocus,
145
- disableIgnoringDatePartForTimeValidation: disableIgnoringDatePartForTimeValidation,
146
- timeSteps: timeSteps,
147
- skipDisabled: skipDisabled,
148
- timezone: timezone
149
- })]
167
+ }, Array.isArray(sx) ? sx : [sx])
168
+ }))]
150
169
  })]
151
170
  }), isActionBarVisible && /*#__PURE__*/_jsx(Divider, {})]
152
171
  });
package/modern/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-date-pickers v6.16.1
2
+ * @mui/x-date-pickers v6.16.2
3
3
  *
4
4
  * @license MIT
5
5
  * This source code is licensed under the MIT license found in the
@@ -0,0 +1,19 @@
1
+ import * as React from 'react';
2
+ import Stack from '@mui/material/Stack';
3
+ import { jsx as _jsx } from "react/jsx-runtime";
4
+ import { jsxs as _jsxs } from "react/jsx-runtime";
5
+ export function FakeTextField(props) {
6
+ const {
7
+ sections
8
+ } = props;
9
+ return /*#__PURE__*/_jsx(Stack, {
10
+ direction: "row",
11
+ spacing: 1,
12
+ children: sections.map(section => /*#__PURE__*/_jsxs(React.Fragment, {
13
+ children: [section.startSeparator, /*#__PURE__*/_jsx("input", {
14
+ value: section.value,
15
+ onChange: () => {}
16
+ }), section.endSeparator]
17
+ }))
18
+ });
19
+ }
@@ -0,0 +1 @@
1
+ export { FakeTextField } from './FakeTextField';
@@ -1,7 +1,7 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
3
  const _excluded = ["views", "format"];
4
- import { resolveTimeFormat, isTimeView } from './time-utils';
4
+ import { resolveTimeFormat, isTimeView, isInternalTimeView } from './time-utils';
5
5
  import { resolveDateFormat } from './date-utils';
6
6
  export const resolveDateTimeFormat = (utils, _ref) => {
7
7
  let {
@@ -38,4 +38,31 @@ export const resolveDateTimeFormat = (utils, _ref) => {
38
38
  views: dateViews
39
39
  }, other), false);
40
40
  return `${dateFormat} ${timeFormat}`;
41
- };
41
+ };
42
+ const resolveViews = (ampm, views, shouldUseSingleColumn) => {
43
+ if (shouldUseSingleColumn) {
44
+ return views.filter(view => !isInternalTimeView(view) || view === 'hours');
45
+ }
46
+ return ampm ? [...views, 'meridiem'] : views;
47
+ };
48
+ const resolveShouldRenderTimeInASingleColumn = (timeSteps, threshold) => 24 * 60 / ((timeSteps.hours ?? 1) * (timeSteps.minutes ?? 5)) <= threshold;
49
+ export function resolveTimeViewsResponse({
50
+ thresholdToRenderTimeInASingleColumn: inThreshold,
51
+ ampm,
52
+ timeSteps: inTimeSteps,
53
+ views
54
+ }) {
55
+ const thresholdToRenderTimeInASingleColumn = inThreshold ?? 24;
56
+ const timeSteps = _extends({
57
+ hours: 1,
58
+ minutes: 5,
59
+ seconds: 5
60
+ }, inTimeSteps);
61
+ const shouldRenderTimeInASingleColumn = resolveShouldRenderTimeInASingleColumn(timeSteps, thresholdToRenderTimeInASingleColumn);
62
+ return {
63
+ thresholdToRenderTimeInASingleColumn,
64
+ timeSteps,
65
+ shouldRenderTimeInASingleColumn,
66
+ views: resolveViews(ampm, views, shouldRenderTimeInASingleColumn)
67
+ };
68
+ }
@@ -47,7 +47,7 @@ const esESPickers = {
47
47
  timeTableLabel: 'elige la fecha',
48
48
  dateTableLabel: 'elige la hora',
49
49
  // Field section placeholders
50
- fieldYearPlaceholder: params => 'Y'.repeat(params.digitAmount),
50
+ fieldYearPlaceholder: params => 'A'.repeat(params.digitAmount),
51
51
  fieldMonthPlaceholder: params => params.contentType === 'letter' ? 'MMMM' : 'MM',
52
52
  fieldDayPlaceholder: () => 'DD',
53
53
  fieldWeekDayPlaceholder: params => params.contentType === 'letter' ? 'EEEE' : 'EE',
@@ -303,13 +303,15 @@ class AdapterDayjs {
303
303
  return parsedValue.locale(this.locale);
304
304
  };
305
305
  this.getTimezone = value => {
306
- if (this.hasUTCPlugin() && value.isUTC()) {
307
- return 'UTC';
308
- }
309
306
  if (this.hasTimezonePlugin()) {
310
307
  // @ts-ignore
311
308
  const zone = value.$x?.$timezone;
312
- return zone ?? 'system';
309
+ if (zone) {
310
+ return zone;
311
+ }
312
+ }
313
+ if (this.hasUTCPlugin() && value.isUTC()) {
314
+ return 'UTC';
313
315
  }
314
316
  return 'system';
315
317
  };
@@ -247,16 +247,13 @@ class AdapterMoment {
247
247
  return this.createTZDate(value, timezone);
248
248
  };
249
249
  this.getTimezone = value => {
250
- if (value.isUTC()) {
251
- return 'UTC';
252
- }
253
-
254
250
  // @ts-ignore
255
251
  // eslint-disable-next-line no-underscore-dangle
256
252
  const zone = value._z?.name;
253
+ const defaultZone = value.isUTC() ? 'UTC' : 'system';
257
254
 
258
255
  // @ts-ignore
259
- return zone ?? this.moment.defaultZone?.name ?? 'system';
256
+ return zone ?? this.moment.defaultZone?.name ?? defaultZone;
260
257
  };
261
258
  this.setTimezone = (value, timezone) => {
262
259
  if (this.getTimezone(value) === timezone) {
@@ -21,6 +21,16 @@ const _excluded = ["components", "componentsProps", "slots", "slotProps", "Input
21
21
  _excluded3 = ["ref", "onPaste", "onKeyDown", "inputMode", "readOnly", "clearable", "onClear"];
22
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); }
23
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; }
24
+ /**
25
+ * Demos:
26
+ *
27
+ * - [DateField](http://mui.com/x/react-date-pickers/date-field/)
28
+ * - [Fields](https://mui.com/x/react-date-pickers/fields/)
29
+ *
30
+ * API:
31
+ *
32
+ * - [DateField API](https://mui.com/x/api/date-pickers/date-field/)
33
+ */
24
34
  const DateField = exports.DateField = /*#__PURE__*/React.forwardRef(function DateField(inProps, ref) {
25
35
  const themeProps = (0, _styles.useThemeProps)({
26
36
  props: inProps,
@@ -21,6 +21,16 @@ const _excluded = ["components", "componentsProps", "slots", "slotProps", "Input
21
21
  _excluded3 = ["ref", "onPaste", "onKeyDown", "inputMode", "readOnly", "clearable", "onClear"];
22
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); }
23
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; }
24
+ /**
25
+ * Demos:
26
+ *
27
+ * - [DateTimeField](http://mui.com/x/react-date-pickers/date-time-field/)
28
+ * - [Fields](https://mui.com/x/react-date-pickers/fields/)
29
+ *
30
+ * API:
31
+ *
32
+ * - [DateTimeField API](https://mui.com/x/api/date-pickers/date-time-field/)
33
+ */
24
34
  const DateTimeField = exports.DateTimeField = /*#__PURE__*/React.forwardRef(function DateTimeField(inProps, ref) {
25
35
  const themeProps = (0, _styles.useThemeProps)({
26
36
  props: inProps,
@@ -19,6 +19,16 @@ var _jsxRuntime = require("react/jsx-runtime");
19
19
  const _excluded = ["desktopModeMediaQuery"];
20
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); }
21
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; }
22
+ /**
23
+ * Demos:
24
+ *
25
+ * - [DateTimePicker](https://mui.com/x/react-date-pickers/date-time-picker/)
26
+ * - [Validation](https://mui.com/x/react-date-pickers/validation/)
27
+ *
28
+ * API:
29
+ *
30
+ * - [DateTimePicker API](https://mui.com/x/api/date-pickers/date-time-picker/)
31
+ */
22
32
  const DateTimePicker = exports.DateTimePicker = /*#__PURE__*/React.forwardRef(function DateTimePicker(inProps, ref) {
23
33
  const props = (0, _styles.useThemeProps)({
24
34
  props: inProps,
@@ -386,6 +396,11 @@ process.env.NODE_ENV !== "production" ? DateTimePicker.propTypes = {
386
396
  * The system prop that allows defining system overrides as well as additional CSS styles.
387
397
  */
388
398
  sx: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object, _propTypes.default.bool])), _propTypes.default.func, _propTypes.default.object]),
399
+ /**
400
+ * Amount of time options below or at which the single column time renderer is used.
401
+ * @default 24
402
+ */
403
+ thresholdToRenderTimeInASingleColumn: _propTypes.default.number,
389
404
  /**
390
405
  * The time steps between two time unit options.
391
406
  * For example, if `timeStep.minutes = 8`, then the available minute options will be `[0, 8, 16, 24, 32, 40, 48, 56]`.
@@ -23,17 +23,28 @@ var _extractValidationProps = require("../internals/utils/validation/extractVali
23
23
  var _dateTimeUtils = require("../internals/utils/date-time-utils");
24
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); }
25
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; }
26
+ /**
27
+ * Demos:
28
+ *
29
+ * - [DateTimePicker](https://mui.com/x/react-date-pickers/date-time-picker/)
30
+ * - [Validation](https://mui.com/x/react-date-pickers/validation/)
31
+ *
32
+ * API:
33
+ *
34
+ * - [DesktopDateTimePicker API](https://mui.com/x/api/date-pickers/desktop-date-time-picker/)
35
+ */
26
36
  const DesktopDateTimePicker = exports.DesktopDateTimePicker = /*#__PURE__*/React.forwardRef(function DesktopDateTimePicker(inProps, ref) {
27
37
  const localeText = (0, _useUtils.useLocaleText)();
28
38
  const utils = (0, _useUtils.useUtils)();
29
39
 
30
40
  // Props with the default values common to all date time pickers
31
41
  const defaultizedProps = (0, _shared.useDateTimePickerDefaultizedProps)(inProps, 'MuiDesktopDateTimePicker');
32
- const timeSteps = (0, _extends2.default)({
33
- hours: 1,
34
- minutes: 5,
35
- seconds: 5
36
- }, defaultizedProps.timeSteps);
42
+ const {
43
+ shouldRenderTimeInASingleColumn,
44
+ thresholdToRenderTimeInASingleColumn,
45
+ views,
46
+ timeSteps
47
+ } = (0, _dateTimeUtils.resolveTimeViewsResponse)(defaultizedProps);
37
48
  const shouldUseNewRenderer = !defaultizedProps.viewRenderers || Object.keys(defaultizedProps.viewRenderers).length === 0;
38
49
  const viewRenderers =
39
50
  // we can only ensure the expected two-column layout if none of the renderers are overridden
@@ -62,10 +73,12 @@ const DesktopDateTimePicker = exports.DesktopDateTimePicker = /*#__PURE__*/React
62
73
  const props = (0, _extends2.default)({}, defaultizedProps, {
63
74
  viewRenderers,
64
75
  format: (0, _dateTimeUtils.resolveDateTimeFormat)(utils, defaultizedProps),
65
- views: defaultizedProps.ampm ? [...defaultizedProps.views, 'meridiem'] : defaultizedProps.views,
76
+ views,
66
77
  yearsPerRow: defaultizedProps.yearsPerRow ?? 4,
67
78
  ampmInClock,
68
79
  timeSteps,
80
+ thresholdToRenderTimeInASingleColumn,
81
+ shouldRenderTimeInASingleColumn,
69
82
  slots: (0, _extends2.default)({
70
83
  field: _DateTimeField.DateTimeField,
71
84
  openPickerIcon: _icons.CalendarIcon
@@ -436,6 +449,11 @@ DesktopDateTimePicker.propTypes = {
436
449
  * The system prop that allows defining system overrides as well as additional CSS styles.
437
450
  */
438
451
  sx: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object, _propTypes.default.bool])), _propTypes.default.func, _propTypes.default.object]),
452
+ /**
453
+ * Amount of time options below or at which the single column time renderer is used.
454
+ * @default 24
455
+ */
456
+ thresholdToRenderTimeInASingleColumn: _propTypes.default.number,
439
457
  /**
440
458
  * The time steps between two time unit options.
441
459
  * For example, if `timeStep.minutes = 8`, then the available minute options will be `[0, 8, 16, 24, 32, 40, 48, 56]`.
@@ -20,21 +20,30 @@ var _useDesktopPicker = require("../internals/hooks/useDesktopPicker");
20
20
  var _extractValidationProps = require("../internals/utils/validation/extractValidationProps");
21
21
  var _timeViewRenderers = require("../timeViewRenderers");
22
22
  var _timeUtils = require("../internals/utils/time-utils");
23
+ var _dateTimeUtils = require("../internals/utils/date-time-utils");
23
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); }
24
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; }
26
+ /**
27
+ * Demos:
28
+ *
29
+ * - [TimePicker](https://mui.com/x/react-date-pickers/time-picker/)
30
+ * - [Validation](https://mui.com/x/react-date-pickers/validation/)
31
+ *
32
+ * API:
33
+ *
34
+ * - [DesktopTimePicker API](https://mui.com/x/api/date-pickers/desktop-time-picker/)
35
+ */
25
36
  const DesktopTimePicker = exports.DesktopTimePicker = /*#__PURE__*/React.forwardRef(function DesktopTimePicker(inProps, ref) {
26
37
  const localeText = (0, _useUtils.useLocaleText)();
27
38
  const utils = (0, _useUtils.useUtils)();
28
39
 
29
40
  // Props with the default values common to all time pickers
30
41
  const defaultizedProps = (0, _shared.useTimePickerDefaultizedProps)(inProps, 'MuiDesktopTimePicker');
31
- const thresholdToRenderTimeInASingleColumn = defaultizedProps.thresholdToRenderTimeInASingleColumn ?? 24;
32
- const timeSteps = (0, _extends2.default)({
33
- hours: 1,
34
- minutes: 5,
35
- seconds: 5
36
- }, defaultizedProps.timeSteps);
37
- const shouldRenderTimeInASingleColumn = 24 * 60 / (timeSteps.hours * timeSteps.minutes) <= thresholdToRenderTimeInASingleColumn;
42
+ const {
43
+ shouldRenderTimeInASingleColumn,
44
+ views: resolvedViews,
45
+ timeSteps
46
+ } = (0, _dateTimeUtils.resolveTimeViewsResponse)(defaultizedProps);
38
47
  const renderTimeView = shouldRenderTimeInASingleColumn ? _timeViewRenderers.renderDigitalClockTimeView : _timeViewRenderers.renderMultiSectionDigitalClockTimeView;
39
48
  const viewRenderers = (0, _extends2.default)({
40
49
  hours: renderTimeView,
@@ -46,7 +55,7 @@ const DesktopTimePicker = exports.DesktopTimePicker = /*#__PURE__*/React.forward
46
55
  const actionBarActions = shouldRenderTimeInASingleColumn ? [] : ['accept'];
47
56
  // Need to avoid adding the `meridiem` view when unexpected renderer is specified
48
57
  const shouldHoursRendererContainMeridiemView = viewRenderers.hours?.name === _timeViewRenderers.renderMultiSectionDigitalClockTimeView.name;
49
- const views = defaultizedProps.ampm && shouldHoursRendererContainMeridiemView ? [...defaultizedProps.views, 'meridiem'] : defaultizedProps.views;
58
+ const views = !shouldHoursRendererContainMeridiemView ? resolvedViews.filter(view => view !== 'meridiem') : resolvedViews;
50
59
 
51
60
  // Props with the default values specific to the desktop variant
52
61
  const props = (0, _extends2.default)({}, defaultizedProps, {
@@ -161,7 +161,7 @@ const DigitalClock = exports.DigitalClock = /*#__PURE__*/React.forwardRef(functi
161
161
  props,
162
162
  timezone
163
163
  });
164
- const handleValueChange = (0, _useEventCallback.default)(newValue => handleRawValueChange(newValue, 'finish'));
164
+ const handleValueChange = (0, _useEventCallback.default)(newValue => handleRawValueChange(newValue, 'finish', 'hours'));
165
165
  const {
166
166
  setValueAndGoToNextView
167
167
  } = (0, _useViews.useViews)({
@@ -22,6 +22,16 @@ var _timeViewRenderers = require("../timeViewRenderers");
22
22
  var _dateTimeUtils = require("../internals/utils/date-time-utils");
23
23
  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
24
  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
+ /**
26
+ * Demos:
27
+ *
28
+ * - [DateTimePicker](https://mui.com/x/react-date-pickers/date-time-picker/)
29
+ * - [Validation](https://mui.com/x/react-date-pickers/validation/)
30
+ *
31
+ * API:
32
+ *
33
+ * - [MobileDateTimePicker API](https://mui.com/x/api/date-pickers/mobile-date-time-picker/)
34
+ */
25
35
  const MobileDateTimePicker = exports.MobileDateTimePicker = /*#__PURE__*/React.forwardRef(function MobileDateTimePicker(inProps, ref) {
26
36
  const localeText = (0, _useUtils.useLocaleText)();
27
37
  const utils = (0, _useUtils.useUtils)();
@@ -21,6 +21,16 @@ var _timeViewRenderers = require("../timeViewRenderers");
21
21
  var _timeUtils = require("../internals/utils/time-utils");
22
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); }
23
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; }
24
+ /**
25
+ * Demos:
26
+ *
27
+ * - [TimePicker](https://mui.com/x/react-date-pickers/time-picker/)
28
+ * - [Validation](https://mui.com/x/react-date-pickers/validation/)
29
+ *
30
+ * API:
31
+ *
32
+ * - [MobileTimePicker API](https://mui.com/x/api/date-pickers/mobile-time-picker/)
33
+ */
24
34
  const MobileTimePicker = exports.MobileTimePicker = /*#__PURE__*/React.forwardRef(function MobileTimePicker(inProps, ref) {
25
35
  const localeText = (0, _useUtils.useLocaleText)();
26
36
  const utils = (0, _useUtils.useUtils)();
@@ -16,6 +16,16 @@ var _useStaticPicker = require("../internals/hooks/useStaticPicker");
16
16
  var _validateDateTime = require("../internals/utils/validation/validateDateTime");
17
17
  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); }
18
18
  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; }
19
+ /**
20
+ * Demos:
21
+ *
22
+ * - [DateTimePicker](https://mui.com/x/react-date-pickers/date-time-picker/)
23
+ * - [Validation](https://mui.com/x/react-date-pickers/validation/)
24
+ *
25
+ * API:
26
+ *
27
+ * - [StaticDateTimePicker API](https://mui.com/x/api/date-pickers/static-date-time-picker/)
28
+ */
19
29
  const StaticDateTimePicker = exports.StaticDateTimePicker = /*#__PURE__*/React.forwardRef(function StaticDateTimePicker(inProps, ref) {
20
30
  const defaultizedProps = (0, _shared.useDateTimePickerDefaultizedProps)(inProps, 'MuiStaticDateTimePicker');
21
31
  const displayStaticWrapperAs = defaultizedProps.displayStaticWrapperAs ?? 'mobile';
@@ -15,6 +15,16 @@ var _useStaticPicker = require("../internals/hooks/useStaticPicker");
15
15
  var _validateTime = require("../internals/utils/validation/validateTime");
16
16
  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); }
17
17
  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; }
18
+ /**
19
+ * Demos:
20
+ *
21
+ * - [TimePicker](https://mui.com/x/react-date-pickers/time-picker/)
22
+ * - [Validation](https://mui.com/x/react-date-pickers/validation/)
23
+ *
24
+ * API:
25
+ *
26
+ * - [StaticTimePicker API](https://mui.com/x/api/date-pickers/static-time-picker/)
27
+ */
18
28
  const StaticTimePicker = exports.StaticTimePicker = /*#__PURE__*/React.forwardRef(function StaticTimePicker(inProps, ref) {
19
29
  const defaultizedProps = (0, _shared.useTimePickerDefaultizedProps)(inProps, 'MuiStaticTimePicker');
20
30
  const displayStaticWrapperAs = defaultizedProps.displayStaticWrapperAs ?? 'mobile';
@@ -21,6 +21,16 @@ const _excluded = ["slots", "slotProps", "components", "componentsProps", "Input
21
21
  _excluded3 = ["ref", "onPaste", "onKeyDown", "inputMode", "readOnly", "clearable", "onClear"];
22
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); }
23
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; }
24
+ /**
25
+ * Demos:
26
+ *
27
+ * - [TimeField](http://mui.com/x/react-date-pickers/time-field/)
28
+ * - [Fields](https://mui.com/x/react-date-pickers/fields/)
29
+ *
30
+ * API:
31
+ *
32
+ * - [TimeField API](https://mui.com/x/api/date-pickers/time-field/)
33
+ */
24
34
  const TimeField = exports.TimeField = /*#__PURE__*/React.forwardRef(function TimeField(inProps, ref) {
25
35
  const themeProps = (0, _styles.useThemeProps)({
26
36
  props: inProps,
@@ -19,6 +19,16 @@ var _jsxRuntime = require("react/jsx-runtime");
19
19
  const _excluded = ["desktopModeMediaQuery"];
20
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); }
21
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; }
22
+ /**
23
+ * Demos:
24
+ *
25
+ * - [TimePicker](https://mui.com/x/react-date-pickers/time-picker/)
26
+ * - [Validation](https://mui.com/x/react-date-pickers/validation/)
27
+ *
28
+ * API:
29
+ *
30
+ * - [TimePicker API](https://mui.com/x/api/date-pickers/time-picker/)
31
+ */
22
32
  const TimePicker = exports.TimePicker = /*#__PURE__*/React.forwardRef(function TimePicker(inProps, ref) {
23
33
  const props = (0, _styles.useThemeProps)({
24
34
  props: inProps,