@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
@@ -10,6 +10,16 @@ import { DesktopTimePicker } from '../DesktopTimePicker';
10
10
  import { MobileTimePicker } from '../MobileTimePicker';
11
11
  import { DEFAULT_DESKTOP_MODE_MEDIA_QUERY } from '../internals/utils/utils';
12
12
  import { jsx as _jsx } from "react/jsx-runtime";
13
+ /**
14
+ * Demos:
15
+ *
16
+ * - [TimePicker](https://mui.com/x/react-date-pickers/time-picker/)
17
+ * - [Validation](https://mui.com/x/react-date-pickers/validation/)
18
+ *
19
+ * API:
20
+ *
21
+ * - [TimePicker API](https://mui.com/x/api/date-pickers/time-picker/)
22
+ */
13
23
  const TimePicker = /*#__PURE__*/React.forwardRef(function TimePicker(inProps, ref) {
14
24
  const props = useThemeProps({
15
25
  props: inProps,
@@ -9,5 +9,6 @@ export interface DateTimeViewRendererProps<TDate> extends Omit<DateCalendarProps
9
9
  views: readonly DateOrTimeViewWithMeridiem[];
10
10
  focusedView: DateOrTimeViewWithMeridiem | null;
11
11
  timeViewsCount: number;
12
+ shouldRenderTimeInASingleColumn: boolean;
12
13
  }
13
- export declare const renderDesktopDateTimeView: <TDate extends unknown>({ view, onViewChange, views, focusedView, onFocusedViewChange, value, defaultValue, referenceDate, onChange, className, classes, disableFuture, disablePast, minDate, minTime, maxDate, maxTime, shouldDisableDate, shouldDisableMonth, shouldDisableYear, shouldDisableTime, shouldDisableClock, reduceAnimations, minutesStep, ampm, onMonthChange, monthsPerRow, onYearChange, yearsPerRow, defaultCalendarMonth, components, componentsProps, slots, slotProps, loading, renderLoading, disableHighlightToday, readOnly, disabled, showDaysOutsideCurrentMonth, dayOfWeekFormatter, sx, autoFocus, fixedWeekNumber, displayWeekNumber, timezone, disableIgnoringDatePartForTimeValidation, timeSteps, skipDisabled, timeViewsCount, }: DateTimeViewRendererProps<TDate>) => React.JSX.Element;
14
+ export declare const renderDesktopDateTimeView: <TDate extends unknown>({ view, onViewChange, views, focusedView, onFocusedViewChange, value, defaultValue, referenceDate, onChange, className, classes, disableFuture, disablePast, minDate, minTime, maxDate, maxTime, shouldDisableDate, shouldDisableMonth, shouldDisableYear, shouldDisableTime, shouldDisableClock, reduceAnimations, minutesStep, ampm, onMonthChange, monthsPerRow, onYearChange, yearsPerRow, defaultCalendarMonth, components, componentsProps, slots, slotProps, loading, renderLoading, disableHighlightToday, readOnly, disabled, showDaysOutsideCurrentMonth, dayOfWeekFormatter, sx, autoFocus, fixedWeekNumber, displayWeekNumber, timezone, disableIgnoringDatePartForTimeValidation, timeSteps, skipDisabled, timeViewsCount, shouldRenderTimeInASingleColumn, }: DateTimeViewRendererProps<TDate>) => React.JSX.Element;
@@ -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,10 +62,43 @@ export const renderDesktopDateTimeView = ({
59
62
  disableIgnoringDatePartForTimeValidation,
60
63
  timeSteps,
61
64
  skipDisabled,
62
- timeViewsCount
65
+ timeViewsCount,
66
+ shouldRenderTimeInASingleColumn
63
67
  }) => {
64
68
  var _resolveComponentProp, _slotProps$actionBar;
65
69
  const isActionBarVisible = !!((_resolveComponentProp = resolveComponentProps((_slotProps$actionBar = slotProps == null ? void 0 : slotProps.actionBar) != null ? _slotProps$actionBar : componentsProps == null ? void 0 : componentsProps.actionBar, {})) != null && (_resolveComponentProp = _resolveComponentProp.actions) != null && _resolveComponentProp.length);
70
+ const commonTimeProps = {
71
+ view: isInternalTimeView(view) ? view : 'hours',
72
+ onViewChange,
73
+ focusedView: focusedView && isInternalTimeView(focusedView) ? focusedView : null,
74
+ onFocusedViewChange,
75
+ views: views.filter(isInternalTimeView),
76
+ value,
77
+ defaultValue,
78
+ referenceDate,
79
+ onChange,
80
+ className,
81
+ classes,
82
+ disableFuture,
83
+ disablePast,
84
+ minTime,
85
+ maxTime,
86
+ shouldDisableTime,
87
+ shouldDisableClock,
88
+ minutesStep,
89
+ ampm,
90
+ components,
91
+ componentsProps,
92
+ slots,
93
+ slotProps,
94
+ readOnly,
95
+ disabled,
96
+ autoFocus,
97
+ disableIgnoringDatePartForTimeValidation,
98
+ timeSteps,
99
+ skipDisabled,
100
+ timezone
101
+ };
66
102
  return /*#__PURE__*/_jsxs(React.Fragment, {
67
103
  children: [/*#__PURE__*/_jsxs(DateTimeViewWrapper, {
68
104
  children: [/*#__PURE__*/_jsx(DateCalendar, {
@@ -109,45 +145,28 @@ export const renderDesktopDateTimeView = ({
109
145
  }), timeViewsCount > 0 && /*#__PURE__*/_jsxs(React.Fragment, {
110
146
  children: [/*#__PURE__*/_jsx(Divider, {
111
147
  orientation: "vertical"
112
- }), /*#__PURE__*/_jsx(MultiSectionDigitalClock, {
148
+ }), shouldRenderTimeInASingleColumn ? renderDigitalClockTimeView(_extends({}, commonTimeProps, {
149
+ view: 'hours',
150
+ views: ['hours'],
151
+ focusedView: focusedView && isInternalTimeView(focusedView) ? 'hours' : null,
152
+ sx: _extends({
153
+ width: 'auto',
154
+ [`&.${digitalClockClasses.root}`]: {
155
+ maxHeight: VIEW_HEIGHT
156
+ }
157
+ }, Array.isArray(sx) ? sx : [sx])
158
+ })) : renderMultiSectionDigitalClockTimeView(_extends({}, commonTimeProps, {
113
159
  view: isInternalTimeView(view) ? view : 'hours',
114
- onViewChange: onViewChange,
115
- focusedView: focusedView && isInternalTimeView(focusedView) ? focusedView : null,
116
- onFocusedViewChange: onFocusedViewChange,
117
160
  views: views.filter(isInternalTimeView),
118
- value: value,
119
- defaultValue: defaultValue,
120
- referenceDate: referenceDate,
121
- onChange: onChange,
122
- className: className,
123
- classes: classes,
124
- disableFuture: disableFuture,
125
- disablePast: disablePast,
126
- minTime: minTime,
127
- maxTime: maxTime,
128
- shouldDisableTime: shouldDisableTime,
129
- shouldDisableClock: shouldDisableClock,
130
- minutesStep: minutesStep,
131
- ampm: ampm,
132
- components: components,
133
- componentsProps: componentsProps,
134
- slots: slots,
135
- slotProps: slotProps,
136
- readOnly: readOnly,
137
- disabled: disabled,
161
+ focusedView: focusedView && isInternalTimeView(focusedView) ? focusedView : null,
138
162
  sx: _extends({
139
163
  borderBottom: 0,
140
164
  width: 'auto',
141
165
  [`.${multiSectionDigitalClockSectionClasses.root}`]: {
142
166
  maxHeight: '100%'
143
167
  }
144
- }, Array.isArray(sx) ? sx : [sx]),
145
- autoFocus: autoFocus,
146
- disableIgnoringDatePartForTimeValidation: disableIgnoringDatePartForTimeValidation,
147
- timeSteps: timeSteps,
148
- skipDisabled: skipDisabled,
149
- timezone: timezone
150
- })]
168
+ }, Array.isArray(sx) ? sx : [sx])
169
+ }))]
151
170
  })]
152
171
  }), isActionBarVisible && /*#__PURE__*/_jsx(Divider, {})]
153
172
  });
package/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,7 @@
1
+ import * as React from 'react';
2
+ import { FieldSection } from '../../../models';
3
+ interface FakeTextFieldProps {
4
+ sections: FieldSection[];
5
+ }
6
+ export declare function FakeTextField(props: FakeTextFieldProps): React.JSX.Element;
7
+ export {};
@@ -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';
@@ -0,0 +1 @@
1
+ export { FakeTextField } from './FakeTextField';
@@ -1,6 +1,17 @@
1
1
  import { DateOrTimeView, MuiPickersAdapter } from '../../models';
2
+ import { DateOrTimeViewWithMeridiem } from '../models';
3
+ import { DesktopOnlyTimePickerProps } from '../models/props/clock';
4
+ import { DefaultizedProps } from '../models/helpers';
2
5
  export declare const resolveDateTimeFormat: (utils: MuiPickersAdapter<any>, { views, format, ...other }: {
3
6
  format?: string | undefined;
4
7
  views: readonly DateOrTimeView[];
5
8
  ampm: boolean;
6
9
  }) => string;
10
+ interface DefaultizedTimeViewsProps<TDate, TView = DateOrTimeView> extends DefaultizedProps<DesktopOnlyTimePickerProps<TDate>, 'ampm'> {
11
+ views: readonly TView[];
12
+ }
13
+ interface DefaultizedTimeViewsResponse<TDate, TView = DateOrTimeViewWithMeridiem> extends Required<Pick<DefaultizedTimeViewsProps<TDate, TView>, 'thresholdToRenderTimeInASingleColumn' | 'timeSteps' | 'views'>> {
14
+ shouldRenderTimeInASingleColumn: boolean;
15
+ }
16
+ export declare function resolveTimeViewsResponse<TDate, InTView extends DateOrTimeView = DateOrTimeView, OutTView extends DateOrTimeViewWithMeridiem = DateOrTimeViewWithMeridiem>({ thresholdToRenderTimeInASingleColumn: inThreshold, ampm, timeSteps: inTimeSteps, views, }: DefaultizedTimeViewsProps<TDate, InTView>): DefaultizedTimeViewsResponse<TDate, OutTView>;
17
+ export {};
@@ -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,34 @@ 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) => {
49
+ var _timeSteps$hours, _timeSteps$minutes;
50
+ return 24 * 60 / (((_timeSteps$hours = timeSteps.hours) != null ? _timeSteps$hours : 1) * ((_timeSteps$minutes = timeSteps.minutes) != null ? _timeSteps$minutes : 5)) <= threshold;
51
+ };
52
+ export function resolveTimeViewsResponse({
53
+ thresholdToRenderTimeInASingleColumn: inThreshold,
54
+ ampm,
55
+ timeSteps: inTimeSteps,
56
+ views
57
+ }) {
58
+ const thresholdToRenderTimeInASingleColumn = inThreshold != null ? inThreshold : 24;
59
+ const timeSteps = _extends({
60
+ hours: 1,
61
+ minutes: 5,
62
+ seconds: 5
63
+ }, inTimeSteps);
64
+ const shouldRenderTimeInASingleColumn = resolveShouldRenderTimeInASingleColumn(timeSteps, thresholdToRenderTimeInASingleColumn);
65
+ return {
66
+ thresholdToRenderTimeInASingleColumn,
67
+ timeSteps,
68
+ shouldRenderTimeInASingleColumn,
69
+ views: resolveViews(ampm, views, shouldRenderTimeInASingleColumn)
70
+ };
71
+ }
@@ -309,14 +309,16 @@ export var AdapterDayjs = /*#__PURE__*/_createClass(function AdapterDayjs() {
309
309
  return parsedValue.locale(_this.locale);
310
310
  };
311
311
  this.getTimezone = function (value) {
312
- if (_this.hasUTCPlugin() && value.isUTC()) {
313
- return 'UTC';
314
- }
315
312
  if (_this.hasTimezonePlugin()) {
316
313
  var _value$$x;
317
314
  // @ts-ignore
318
315
  var zone = (_value$$x = value.$x) == null ? void 0 : _value$$x.$timezone;
319
- return zone != null ? zone : 'system';
316
+ if (zone) {
317
+ return zone;
318
+ }
319
+ }
320
+ if (_this.hasUTCPlugin() && value.isUTC()) {
321
+ return 'UTC';
320
322
  }
321
323
  return 'system';
322
324
  };
@@ -247,16 +247,13 @@ export var AdapterMoment = /*#__PURE__*/_createClass(function AdapterMoment() {
247
247
  };
248
248
  this.getTimezone = function (value) {
249
249
  var _value$_z, _ref2, _this$moment$defaultZ;
250
- if (value.isUTC()) {
251
- return 'UTC';
252
- }
253
-
254
250
  // @ts-ignore
255
251
  // eslint-disable-next-line no-underscore-dangle
256
252
  var zone = (_value$_z = value._z) == null ? void 0 : _value$_z.name;
253
+ var defaultZone = value.isUTC() ? 'UTC' : 'system';
257
254
 
258
255
  // @ts-ignore
259
- return (_ref2 = zone != null ? zone : (_this$moment$defaultZ = _this.moment.defaultZone) == null ? void 0 : _this$moment$defaultZ.name) != null ? _ref2 : 'system';
256
+ return (_ref2 = zone != null ? zone : (_this$moment$defaultZ = _this.moment.defaultZone) == null ? void 0 : _this$moment$defaultZ.name) != null ? _ref2 : defaultZone;
260
257
  };
261
258
  this.setTimezone = function (value, timezone) {
262
259
  var _this$moment$defaultZ2, _this$moment$defaultZ3;
@@ -12,6 +12,16 @@ import { refType } from '@mui/utils';
12
12
  import { useDateField } from './useDateField';
13
13
  import { useClearableField } from '../hooks';
14
14
  import { jsx as _jsx } from "react/jsx-runtime";
15
+ /**
16
+ * Demos:
17
+ *
18
+ * - [DateField](http://mui.com/x/react-date-pickers/date-field/)
19
+ * - [Fields](https://mui.com/x/react-date-pickers/fields/)
20
+ *
21
+ * API:
22
+ *
23
+ * - [DateField API](https://mui.com/x/api/date-pickers/date-field/)
24
+ */
15
25
  var DateField = /*#__PURE__*/React.forwardRef(function DateField(inProps, ref) {
16
26
  var _ref, _slots$textField, _slotProps$textField;
17
27
  var themeProps = useThemeProps({
@@ -12,6 +12,16 @@ import { refType } from '@mui/utils';
12
12
  import { useDateTimeField } from './useDateTimeField';
13
13
  import { useClearableField } from '../hooks';
14
14
  import { jsx as _jsx } from "react/jsx-runtime";
15
+ /**
16
+ * Demos:
17
+ *
18
+ * - [DateTimeField](http://mui.com/x/react-date-pickers/date-time-field/)
19
+ * - [Fields](https://mui.com/x/react-date-pickers/fields/)
20
+ *
21
+ * API:
22
+ *
23
+ * - [DateTimeField API](https://mui.com/x/api/date-pickers/date-time-field/)
24
+ */
15
25
  var DateTimeField = /*#__PURE__*/React.forwardRef(function DateTimeField(inProps, ref) {
16
26
  var _ref, _slots$textField, _slotProps$textField;
17
27
  var themeProps = useThemeProps({
@@ -10,6 +10,16 @@ import { DesktopDateTimePicker } from '../DesktopDateTimePicker';
10
10
  import { MobileDateTimePicker } from '../MobileDateTimePicker';
11
11
  import { DEFAULT_DESKTOP_MODE_MEDIA_QUERY } from '../internals/utils/utils';
12
12
  import { jsx as _jsx } from "react/jsx-runtime";
13
+ /**
14
+ * Demos:
15
+ *
16
+ * - [DateTimePicker](https://mui.com/x/react-date-pickers/date-time-picker/)
17
+ * - [Validation](https://mui.com/x/react-date-pickers/validation/)
18
+ *
19
+ * API:
20
+ *
21
+ * - [DateTimePicker API](https://mui.com/x/api/date-pickers/date-time-picker/)
22
+ */
13
23
  var DateTimePicker = /*#__PURE__*/React.forwardRef(function DateTimePicker(inProps, ref) {
14
24
  var props = useThemeProps({
15
25
  props: inProps,
@@ -376,6 +386,11 @@ process.env.NODE_ENV !== "production" ? DateTimePicker.propTypes = {
376
386
  * The system prop that allows defining system overrides as well as additional CSS styles.
377
387
  */
378
388
  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),
389
+ /**
390
+ * Amount of time options below or at which the single column time renderer is used.
391
+ * @default 24
392
+ */
393
+ thresholdToRenderTimeInASingleColumn: PropTypes.number,
379
394
  /**
380
395
  * The time steps between two time unit options.
381
396
  * For example, if `timeStep.minutes = 8`, then the available minute options will be `[0, 8, 16, 24, 32, 40, 48, 56]`.
@@ -1,4 +1,3 @@
1
- import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
2
1
  import _extends from "@babel/runtime/helpers/esm/extends";
3
2
  import * as React from 'react';
4
3
  import PropTypes from 'prop-types';
@@ -14,7 +13,17 @@ import { validateDateTime } from '../internals/utils/validation/validateDateTime
14
13
  import { CalendarIcon } from '../icons';
15
14
  import { useDesktopPicker } from '../internals/hooks/useDesktopPicker';
16
15
  import { extractValidationProps } from '../internals/utils/validation/extractValidationProps';
17
- import { resolveDateTimeFormat } from '../internals/utils/date-time-utils';
16
+ import { resolveDateTimeFormat, resolveTimeViewsResponse } from '../internals/utils/date-time-utils';
17
+ /**
18
+ * Demos:
19
+ *
20
+ * - [DateTimePicker](https://mui.com/x/react-date-pickers/date-time-picker/)
21
+ * - [Validation](https://mui.com/x/react-date-pickers/validation/)
22
+ *
23
+ * API:
24
+ *
25
+ * - [DesktopDateTimePicker API](https://mui.com/x/api/date-pickers/desktop-date-time-picker/)
26
+ */
18
27
  var DesktopDateTimePicker = /*#__PURE__*/React.forwardRef(function DesktopDateTimePicker(inProps, ref) {
19
28
  var _defaultizedProps$amp, _defaultizedProps$yea, _defaultizedProps$slo2, _defaultizedProps$slo3, _defaultizedProps$slo4, _props$localeText$ope, _props$localeText;
20
29
  var localeText = useLocaleText();
@@ -22,11 +31,11 @@ var DesktopDateTimePicker = /*#__PURE__*/React.forwardRef(function DesktopDateTi
22
31
 
23
32
  // Props with the default values common to all date time pickers
24
33
  var defaultizedProps = useDateTimePickerDefaultizedProps(inProps, 'MuiDesktopDateTimePicker');
25
- var timeSteps = _extends({
26
- hours: 1,
27
- minutes: 5,
28
- seconds: 5
29
- }, defaultizedProps.timeSteps);
34
+ var _resolveTimeViewsResp = resolveTimeViewsResponse(defaultizedProps),
35
+ shouldRenderTimeInASingleColumn = _resolveTimeViewsResp.shouldRenderTimeInASingleColumn,
36
+ thresholdToRenderTimeInASingleColumn = _resolveTimeViewsResp.thresholdToRenderTimeInASingleColumn,
37
+ views = _resolveTimeViewsResp.views,
38
+ timeSteps = _resolveTimeViewsResp.timeSteps;
30
39
  var shouldUseNewRenderer = !defaultizedProps.viewRenderers || Object.keys(defaultizedProps.viewRenderers).length === 0;
31
40
  var viewRenderers =
32
41
  // we can only ensure the expected two-column layout if none of the renderers are overridden
@@ -55,10 +64,12 @@ var DesktopDateTimePicker = /*#__PURE__*/React.forwardRef(function DesktopDateTi
55
64
  var props = _extends({}, defaultizedProps, {
56
65
  viewRenderers: viewRenderers,
57
66
  format: resolveDateTimeFormat(utils, defaultizedProps),
58
- views: defaultizedProps.ampm ? [].concat(_toConsumableArray(defaultizedProps.views), ['meridiem']) : defaultizedProps.views,
67
+ views: views,
59
68
  yearsPerRow: (_defaultizedProps$yea = defaultizedProps.yearsPerRow) != null ? _defaultizedProps$yea : 4,
60
69
  ampmInClock: ampmInClock,
61
70
  timeSteps: timeSteps,
71
+ thresholdToRenderTimeInASingleColumn: thresholdToRenderTimeInASingleColumn,
72
+ shouldRenderTimeInASingleColumn: shouldRenderTimeInASingleColumn,
62
73
  slots: _extends({
63
74
  field: DateTimeField,
64
75
  openPickerIcon: CalendarIcon
@@ -431,6 +442,11 @@ DesktopDateTimePicker.propTypes = {
431
442
  * The system prop that allows defining system overrides as well as additional CSS styles.
432
443
  */
433
444
  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),
445
+ /**
446
+ * Amount of time options below or at which the single column time renderer is used.
447
+ * @default 24
448
+ */
449
+ thresholdToRenderTimeInASingleColumn: PropTypes.number,
434
450
  /**
435
451
  * The time steps between two time unit options.
436
452
  * For example, if `timeStep.minutes = 8`, then the available minute options will be `[0, 8, 16, 24, 32, 40, 48, 56]`.
@@ -1,4 +1,3 @@
1
- import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
2
1
  import _extends from "@babel/runtime/helpers/esm/extends";
3
2
  import * as React from 'react';
4
3
  import PropTypes from 'prop-types';
@@ -14,20 +13,28 @@ import { useDesktopPicker } from '../internals/hooks/useDesktopPicker';
14
13
  import { extractValidationProps } from '../internals/utils/validation/extractValidationProps';
15
14
  import { renderDigitalClockTimeView, renderMultiSectionDigitalClockTimeView } from '../timeViewRenderers';
16
15
  import { resolveTimeFormat } from '../internals/utils/time-utils';
16
+ import { resolveTimeViewsResponse } from '../internals/utils/date-time-utils';
17
+ /**
18
+ * Demos:
19
+ *
20
+ * - [TimePicker](https://mui.com/x/react-date-pickers/time-picker/)
21
+ * - [Validation](https://mui.com/x/react-date-pickers/validation/)
22
+ *
23
+ * API:
24
+ *
25
+ * - [DesktopTimePicker API](https://mui.com/x/api/date-pickers/desktop-time-picker/)
26
+ */
17
27
  var DesktopTimePicker = /*#__PURE__*/React.forwardRef(function DesktopTimePicker(inProps, ref) {
18
- var _defaultizedProps$thr, _defaultizedProps$amp, _viewRenderers$hours, _defaultizedProps$slo2, _defaultizedProps$slo3, _props$localeText$ope, _props$localeText;
28
+ var _defaultizedProps$amp, _viewRenderers$hours, _defaultizedProps$slo2, _defaultizedProps$slo3, _props$localeText$ope, _props$localeText;
19
29
  var localeText = useLocaleText();
20
30
  var utils = useUtils();
21
31
 
22
32
  // Props with the default values common to all time pickers
23
33
  var defaultizedProps = useTimePickerDefaultizedProps(inProps, 'MuiDesktopTimePicker');
24
- var thresholdToRenderTimeInASingleColumn = (_defaultizedProps$thr = defaultizedProps.thresholdToRenderTimeInASingleColumn) != null ? _defaultizedProps$thr : 24;
25
- var timeSteps = _extends({
26
- hours: 1,
27
- minutes: 5,
28
- seconds: 5
29
- }, defaultizedProps.timeSteps);
30
- var shouldRenderTimeInASingleColumn = 24 * 60 / (timeSteps.hours * timeSteps.minutes) <= thresholdToRenderTimeInASingleColumn;
34
+ var _resolveTimeViewsResp = resolveTimeViewsResponse(defaultizedProps),
35
+ shouldRenderTimeInASingleColumn = _resolveTimeViewsResp.shouldRenderTimeInASingleColumn,
36
+ resolvedViews = _resolveTimeViewsResp.views,
37
+ timeSteps = _resolveTimeViewsResp.timeSteps;
31
38
  var renderTimeView = shouldRenderTimeInASingleColumn ? renderDigitalClockTimeView : renderMultiSectionDigitalClockTimeView;
32
39
  var viewRenderers = _extends({
33
40
  hours: renderTimeView,
@@ -39,7 +46,9 @@ var DesktopTimePicker = /*#__PURE__*/React.forwardRef(function DesktopTimePicker
39
46
  var actionBarActions = shouldRenderTimeInASingleColumn ? [] : ['accept'];
40
47
  // Need to avoid adding the `meridiem` view when unexpected renderer is specified
41
48
  var shouldHoursRendererContainMeridiemView = ((_viewRenderers$hours = viewRenderers.hours) == null ? void 0 : _viewRenderers$hours.name) === renderMultiSectionDigitalClockTimeView.name;
42
- var views = defaultizedProps.ampm && shouldHoursRendererContainMeridiemView ? [].concat(_toConsumableArray(defaultizedProps.views), ['meridiem']) : defaultizedProps.views;
49
+ var views = !shouldHoursRendererContainMeridiemView ? resolvedViews.filter(function (view) {
50
+ return view !== 'meridiem';
51
+ }) : resolvedViews;
43
52
 
44
53
  // Props with the default values specific to the desktop variant
45
54
  var props = _extends({}, defaultizedProps, {
@@ -166,7 +166,7 @@ export var DigitalClock = /*#__PURE__*/React.forwardRef(function DigitalClock(in
166
166
  timezone: timezone
167
167
  });
168
168
  var handleValueChange = useEventCallback(function (newValue) {
169
- return handleRawValueChange(newValue, 'finish');
169
+ return handleRawValueChange(newValue, 'finish', 'hours');
170
170
  });
171
171
  var _useViews = useViews({
172
172
  view: inView,
@@ -13,6 +13,16 @@ import { extractValidationProps } from '../internals/utils/validation/extractVal
13
13
  import { renderDateViewCalendar } from '../dateViewRenderers';
14
14
  import { renderTimeViewClock } from '../timeViewRenderers';
15
15
  import { resolveDateTimeFormat } from '../internals/utils/date-time-utils';
16
+ /**
17
+ * Demos:
18
+ *
19
+ * - [DateTimePicker](https://mui.com/x/react-date-pickers/date-time-picker/)
20
+ * - [Validation](https://mui.com/x/react-date-pickers/validation/)
21
+ *
22
+ * API:
23
+ *
24
+ * - [MobileDateTimePicker API](https://mui.com/x/api/date-pickers/mobile-date-time-picker/)
25
+ */
16
26
  var MobileDateTimePicker = /*#__PURE__*/React.forwardRef(function MobileDateTimePicker(inProps, ref) {
17
27
  var _defaultizedProps$amp, _defaultizedProps$slo2, _defaultizedProps$slo3, _props$localeText$ope, _props$localeText;
18
28
  var localeText = useLocaleText();
@@ -12,6 +12,16 @@ import { useMobilePicker } from '../internals/hooks/useMobilePicker';
12
12
  import { extractValidationProps } from '../internals/utils/validation/extractValidationProps';
13
13
  import { renderTimeViewClock } from '../timeViewRenderers';
14
14
  import { resolveTimeFormat } from '../internals/utils/time-utils';
15
+ /**
16
+ * Demos:
17
+ *
18
+ * - [TimePicker](https://mui.com/x/react-date-pickers/time-picker/)
19
+ * - [Validation](https://mui.com/x/react-date-pickers/validation/)
20
+ *
21
+ * API:
22
+ *
23
+ * - [MobileTimePicker API](https://mui.com/x/api/date-pickers/mobile-time-picker/)
24
+ */
15
25
  var MobileTimePicker = /*#__PURE__*/React.forwardRef(function MobileTimePicker(inProps, ref) {
16
26
  var _defaultizedProps$amp, _defaultizedProps$slo2, _props$localeText$ope, _props$localeText;
17
27
  var localeText = useLocaleText();
@@ -7,6 +7,16 @@ import { renderDateViewCalendar } from '../dateViewRenderers';
7
7
  import { singleItemValueManager } from '../internals/utils/valueManagers';
8
8
  import { useStaticPicker } from '../internals/hooks/useStaticPicker';
9
9
  import { validateDateTime } from '../internals/utils/validation/validateDateTime';
10
+ /**
11
+ * Demos:
12
+ *
13
+ * - [DateTimePicker](https://mui.com/x/react-date-pickers/date-time-picker/)
14
+ * - [Validation](https://mui.com/x/react-date-pickers/validation/)
15
+ *
16
+ * API:
17
+ *
18
+ * - [StaticDateTimePicker API](https://mui.com/x/api/date-pickers/static-date-time-picker/)
19
+ */
10
20
  var StaticDateTimePicker = /*#__PURE__*/React.forwardRef(function StaticDateTimePicker(inProps, ref) {
11
21
  var _defaultizedProps$dis, _defaultizedProps$amp, _defaultizedProps$yea, _defaultizedProps$slo, _defaultizedProps$slo2;
12
22
  var defaultizedProps = useDateTimePickerDefaultizedProps(inProps, 'MuiStaticDateTimePicker');
@@ -6,6 +6,16 @@ import { renderTimeViewClock } from '../timeViewRenderers';
6
6
  import { singleItemValueManager } from '../internals/utils/valueManagers';
7
7
  import { useStaticPicker } from '../internals/hooks/useStaticPicker';
8
8
  import { validateTime } from '../internals/utils/validation/validateTime';
9
+ /**
10
+ * Demos:
11
+ *
12
+ * - [TimePicker](https://mui.com/x/react-date-pickers/time-picker/)
13
+ * - [Validation](https://mui.com/x/react-date-pickers/validation/)
14
+ *
15
+ * API:
16
+ *
17
+ * - [StaticTimePicker API](https://mui.com/x/api/date-pickers/static-time-picker/)
18
+ */
9
19
  var StaticTimePicker = /*#__PURE__*/React.forwardRef(function StaticTimePicker(inProps, ref) {
10
20
  var _defaultizedProps$dis, _defaultizedProps$amp, _defaultizedProps$slo;
11
21
  var defaultizedProps = useTimePickerDefaultizedProps(inProps, 'MuiStaticTimePicker');
@@ -12,6 +12,16 @@ import { refType } from '@mui/utils';
12
12
  import { useTimeField } from './useTimeField';
13
13
  import { useClearableField } from '../hooks';
14
14
  import { jsx as _jsx } from "react/jsx-runtime";
15
+ /**
16
+ * Demos:
17
+ *
18
+ * - [TimeField](http://mui.com/x/react-date-pickers/time-field/)
19
+ * - [Fields](https://mui.com/x/react-date-pickers/fields/)
20
+ *
21
+ * API:
22
+ *
23
+ * - [TimeField API](https://mui.com/x/api/date-pickers/time-field/)
24
+ */
15
25
  var TimeField = /*#__PURE__*/React.forwardRef(function TimeField(inProps, ref) {
16
26
  var _ref, _slots$textField, _slotProps$textField;
17
27
  var themeProps = useThemeProps({
@@ -10,6 +10,16 @@ import { DesktopTimePicker } from '../DesktopTimePicker';
10
10
  import { MobileTimePicker } from '../MobileTimePicker';
11
11
  import { DEFAULT_DESKTOP_MODE_MEDIA_QUERY } from '../internals/utils/utils';
12
12
  import { jsx as _jsx } from "react/jsx-runtime";
13
+ /**
14
+ * Demos:
15
+ *
16
+ * - [TimePicker](https://mui.com/x/react-date-pickers/time-picker/)
17
+ * - [Validation](https://mui.com/x/react-date-pickers/validation/)
18
+ *
19
+ * API:
20
+ *
21
+ * - [TimePicker API](https://mui.com/x/api/date-pickers/time-picker/)
22
+ */
13
23
  var TimePicker = /*#__PURE__*/React.forwardRef(function TimePicker(inProps, ref) {
14
24
  var props = useThemeProps({
15
25
  props: inProps,