@mui/x-date-pickers-pro 6.0.0-alpha.11 → 6.0.0-alpha.13

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 (147) hide show
  1. package/CHANGELOG.md +260 -0
  2. package/DateRangeCalendar/DateRangeCalendar.js +30 -3
  3. package/DateRangeCalendar/DateRangeCalendar.types.d.ts +37 -37
  4. package/DateRangePicker/DateRangePicker.js +0 -6
  5. package/DateRangePicker/DateRangePickerView.d.ts +3 -3
  6. package/DateRangePicker/DateRangePickerView.js +6 -3
  7. package/DateRangePicker/DateRangePickerViewMobile.js +1 -1
  8. package/DateRangePickerDay/DateRangePickerDay.js +72 -1
  9. package/DesktopDateRangePicker/DesktopDateRangePicker.d.ts +5 -0
  10. package/DesktopDateRangePicker/DesktopDateRangePicker.js +0 -6
  11. package/DesktopNextDateRangePicker/DesktopNextDateRangePicker.js +22 -9
  12. package/MobileDateRangePicker/MobileDateRangePicker.d.ts +5 -0
  13. package/MobileDateRangePicker/MobileDateRangePicker.js +0 -6
  14. package/MobileNextDateRangePicker/MobileNextDateRangePicker.js +22 -9
  15. package/MultiInputDateRangeField/MultiInputDateRangeField.js +51 -11
  16. package/MultiInputDateRangeField/MultiInputDateRangeField.types.d.ts +4 -2
  17. package/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +45 -10
  18. package/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.types.d.ts +3 -3
  19. package/MultiInputTimeRangeField/MultiInputTimeRangeField.js +45 -10
  20. package/MultiInputTimeRangeField/MultiInputTimeRangeField.types.d.ts +2 -2
  21. package/NextDateRangePicker/NextDateRangePicker.js +16 -2
  22. package/NextDateRangePicker/shared.d.ts +9 -2
  23. package/SingleInputDateRangeField/SingleInputDateRangeField.js +110 -5
  24. package/SingleInputDateRangeField/SingleInputDateRangeField.types.d.ts +3 -2
  25. package/StaticDateRangePicker/StaticDateRangePicker.js +0 -5
  26. package/StaticNextDateRangePicker/StaticNextDateRangePicker.js +20 -6
  27. package/dateRangeViewRenderers/dateRangeViewRenderers.d.ts +13 -0
  28. package/{internal/utils/viewRenderers.js → dateRangeViewRenderers/dateRangeViewRenderers.js} +3 -4
  29. package/dateRangeViewRenderers/index.d.ts +2 -0
  30. package/dateRangeViewRenderers/index.js +1 -0
  31. package/dateRangeViewRenderers/package.json +6 -0
  32. package/index.d.ts +2 -1
  33. package/index.js +5 -2
  34. package/internal/hooks/useDesktopRangePicker/useDesktopRangePicker.d.ts +1 -1
  35. package/internal/hooks/useDesktopRangePicker/useDesktopRangePicker.js +6 -4
  36. package/internal/hooks/useDesktopRangePicker/useDesktopRangePicker.types.d.ts +4 -5
  37. package/internal/hooks/useMobileRangePicker/useMobileRangePicker.d.ts +1 -1
  38. package/internal/hooks/useMobileRangePicker/useMobileRangePicker.js +4 -4
  39. package/internal/hooks/useMobileRangePicker/useMobileRangePicker.types.d.ts +4 -5
  40. package/internal/hooks/useMultiInputRangeField/useMultiInputDateRangeField.js +7 -1
  41. package/internal/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.js +7 -1
  42. package/internal/hooks/useMultiInputRangeField/useMultiInputRangeField.types.d.ts +2 -0
  43. package/internal/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.js +7 -1
  44. package/internal/hooks/useRangePickerInputProps.d.ts +7 -7
  45. package/internal/hooks/useRangePickerInputProps.js +12 -11
  46. package/internal/hooks/useStaticRangePicker/useStaticRangePicker.d.ts +1 -1
  47. package/internal/hooks/useStaticRangePicker/useStaticRangePicker.js +3 -3
  48. package/internal/hooks/useStaticRangePicker/useStaticRangePicker.types.d.ts +2 -2
  49. package/internal/models/dateRange.d.ts +11 -1
  50. package/internal/models/dateTimeRange.d.ts +2 -2
  51. package/internal/models/fields.d.ts +6 -1
  52. package/internal/models/range.d.ts +0 -4
  53. package/internal/models/timeRange.d.ts +2 -1
  54. package/internal/utils/date-fields-utils.d.ts +21 -5
  55. package/internal/utils/releaseInfo.js +1 -1
  56. package/internal/utils/valueManagers.d.ts +3 -2
  57. package/internal/utils/valueManagers.js +21 -22
  58. package/legacy/DateRangeCalendar/DateRangeCalendar.js +36 -3
  59. package/legacy/DateRangePicker/DateRangePicker.js +0 -6
  60. package/legacy/DateRangePicker/DateRangePickerView.js +7 -2
  61. package/legacy/DateRangePicker/DateRangePickerViewMobile.js +1 -1
  62. package/legacy/DateRangePickerDay/DateRangePickerDay.js +72 -1
  63. package/legacy/DesktopDateRangePicker/DesktopDateRangePicker.js +0 -6
  64. package/legacy/DesktopNextDateRangePicker/DesktopNextDateRangePicker.js +22 -9
  65. package/legacy/MobileDateRangePicker/MobileDateRangePicker.js +0 -6
  66. package/legacy/MobileNextDateRangePicker/MobileNextDateRangePicker.js +22 -9
  67. package/legacy/MultiInputDateRangeField/MultiInputDateRangeField.js +48 -8
  68. package/legacy/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +43 -8
  69. package/legacy/MultiInputTimeRangeField/MultiInputTimeRangeField.js +43 -8
  70. package/legacy/NextDateRangePicker/NextDateRangePicker.js +16 -2
  71. package/legacy/SingleInputDateRangeField/SingleInputDateRangeField.js +109 -4
  72. package/legacy/StaticDateRangePicker/StaticDateRangePicker.js +0 -5
  73. package/legacy/StaticNextDateRangePicker/StaticNextDateRangePicker.js +20 -6
  74. package/legacy/{internal/utils/viewRenderers.js → dateRangeViewRenderers/dateRangeViewRenderers.js} +3 -4
  75. package/legacy/dateRangeViewRenderers/index.js +1 -0
  76. package/legacy/index.js +5 -2
  77. package/legacy/internal/hooks/useDesktopRangePicker/useDesktopRangePicker.js +6 -4
  78. package/legacy/internal/hooks/useMobileRangePicker/useMobileRangePicker.js +4 -4
  79. package/legacy/internal/hooks/useMultiInputRangeField/useMultiInputDateRangeField.js +7 -1
  80. package/legacy/internal/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.js +7 -1
  81. package/legacy/internal/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.js +7 -1
  82. package/legacy/internal/hooks/useRangePickerInputProps.js +12 -11
  83. package/legacy/internal/hooks/useStaticRangePicker/useStaticRangePicker.js +3 -3
  84. package/legacy/internal/utils/releaseInfo.js +1 -1
  85. package/legacy/internal/utils/valueManagers.js +20 -23
  86. package/legacy/tests/describeRangeValidation/testTextFieldRangeValidation.js +1 -1
  87. package/modern/DateRangeCalendar/DateRangeCalendar.js +29 -3
  88. package/modern/DateRangePicker/DateRangePicker.js +0 -6
  89. package/modern/DateRangePicker/DateRangePickerView.js +6 -3
  90. package/modern/DateRangePicker/DateRangePickerViewMobile.js +1 -1
  91. package/modern/DateRangePickerDay/DateRangePickerDay.js +72 -1
  92. package/modern/DesktopDateRangePicker/DesktopDateRangePicker.js +0 -6
  93. package/modern/DesktopNextDateRangePicker/DesktopNextDateRangePicker.js +22 -9
  94. package/modern/MobileDateRangePicker/MobileDateRangePicker.js +0 -6
  95. package/modern/MobileNextDateRangePicker/MobileNextDateRangePicker.js +22 -9
  96. package/modern/MultiInputDateRangeField/MultiInputDateRangeField.js +51 -11
  97. package/modern/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +45 -10
  98. package/modern/MultiInputTimeRangeField/MultiInputTimeRangeField.js +45 -10
  99. package/modern/NextDateRangePicker/NextDateRangePicker.js +16 -2
  100. package/modern/SingleInputDateRangeField/SingleInputDateRangeField.js +110 -5
  101. package/modern/StaticDateRangePicker/StaticDateRangePicker.js +0 -5
  102. package/modern/StaticNextDateRangePicker/StaticNextDateRangePicker.js +20 -6
  103. package/modern/{internal/utils/viewRenderers.js → dateRangeViewRenderers/dateRangeViewRenderers.js} +3 -4
  104. package/modern/dateRangeViewRenderers/index.js +1 -0
  105. package/modern/index.js +5 -2
  106. package/modern/internal/hooks/useDesktopRangePicker/useDesktopRangePicker.js +6 -4
  107. package/modern/internal/hooks/useMobileRangePicker/useMobileRangePicker.js +4 -4
  108. package/modern/internal/hooks/useMultiInputRangeField/useMultiInputDateRangeField.js +7 -1
  109. package/modern/internal/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.js +7 -1
  110. package/modern/internal/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.js +7 -1
  111. package/modern/internal/hooks/useRangePickerInputProps.js +11 -11
  112. package/modern/internal/hooks/useStaticRangePicker/useStaticRangePicker.js +3 -3
  113. package/modern/internal/utils/releaseInfo.js +1 -1
  114. package/modern/internal/utils/valueManagers.js +21 -22
  115. package/modern/tests/describeRangeValidation/testTextFieldRangeValidation.js +1 -1
  116. package/node/DateRangeCalendar/DateRangeCalendar.js +28 -2
  117. package/node/DateRangePicker/DateRangePicker.js +0 -6
  118. package/node/DateRangePicker/DateRangePickerView.js +6 -3
  119. package/node/DateRangePicker/DateRangePickerViewMobile.js +1 -1
  120. package/node/DateRangePickerDay/DateRangePickerDay.js +72 -1
  121. package/node/DesktopDateRangePicker/DesktopDateRangePicker.js +0 -6
  122. package/node/DesktopNextDateRangePicker/DesktopNextDateRangePicker.js +22 -9
  123. package/node/MobileDateRangePicker/MobileDateRangePicker.js +0 -6
  124. package/node/MobileNextDateRangePicker/MobileNextDateRangePicker.js +22 -9
  125. package/node/MultiInputDateRangeField/MultiInputDateRangeField.js +51 -11
  126. package/node/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +45 -10
  127. package/node/MultiInputTimeRangeField/MultiInputTimeRangeField.js +45 -10
  128. package/node/NextDateRangePicker/NextDateRangePicker.js +16 -2
  129. package/node/SingleInputDateRangeField/SingleInputDateRangeField.js +110 -5
  130. package/node/StaticDateRangePicker/StaticDateRangePicker.js +0 -5
  131. package/node/StaticNextDateRangePicker/StaticNextDateRangePicker.js +20 -6
  132. package/node/{internal/utils/viewRenderers.js → dateRangeViewRenderers/dateRangeViewRenderers.js} +4 -4
  133. package/node/dateRangeViewRenderers/index.js +12 -0
  134. package/node/index.js +13 -1
  135. package/node/internal/hooks/useDesktopRangePicker/useDesktopRangePicker.js +6 -4
  136. package/node/internal/hooks/useMobileRangePicker/useMobileRangePicker.js +4 -4
  137. package/node/internal/hooks/useMultiInputRangeField/useMultiInputDateRangeField.js +7 -1
  138. package/node/internal/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.js +7 -1
  139. package/node/internal/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.js +7 -1
  140. package/node/internal/hooks/useRangePickerInputProps.js +11 -11
  141. package/node/internal/hooks/useStaticRangePicker/useStaticRangePicker.js +3 -3
  142. package/node/internal/utils/releaseInfo.js +1 -1
  143. package/node/internal/utils/valueManagers.js +20 -21
  144. package/node/tests/describeRangeValidation/testTextFieldRangeValidation.js +1 -1
  145. package/package.json +4 -4
  146. package/tests/describeRangeValidation/testTextFieldRangeValidation.js +1 -1
  147. package/internal/utils/viewRenderers.d.ts +0 -7
@@ -1,8 +1,8 @@
1
1
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
2
2
  import _extends from "@babel/runtime/helpers/esm/extends";
3
- const _excluded = ["components", "componentsProps", "value", "defaultValue", "format", "onChange", "readOnly", "onError", "minTime", "maxTime", "minutesStep", "shouldDisableTime", "disableFuture", "disablePast", "selectedSections", "onSelectedSectionsChange"],
4
- _excluded2 = ["onKeyDown", "ref"],
5
- _excluded3 = ["onKeyDown", "ref"];
3
+ const _excluded = ["components", "componentsProps", "value", "defaultValue", "format", "onChange", "readOnly", "disabled", "onError", "minTime", "maxTime", "minutesStep", "shouldDisableTime", "disableFuture", "disablePast", "selectedSections", "onSelectedSectionsChange"],
4
+ _excluded2 = ["onKeyDown", "ref", "readOnly", "inputMode"],
5
+ _excluded3 = ["onKeyDown", "ref", "readOnly", "inputMode"];
6
6
  import * as React from 'react';
7
7
  import PropTypes from 'prop-types';
8
8
  import Stack from '@mui/material/Stack';
@@ -14,12 +14,11 @@ import { useMultiInputTimeRangeField } from '../internal/hooks/useMultiInputRang
14
14
  import { jsx as _jsx } from "react/jsx-runtime";
15
15
  import { jsxs as _jsxs } from "react/jsx-runtime";
16
16
  const MultiInputTimeRangeFieldRoot = styled( /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/_jsx(Stack, _extends({
17
- ref: ref
18
- }, props, {
17
+ ref: ref,
19
18
  spacing: 2,
20
19
  direction: "row",
21
- alignItems: "center"
22
- }))), {
20
+ alignItems: "baseline"
21
+ }, props))), {
23
22
  name: 'MuiMultiInputTimeRangeField',
24
23
  slot: 'Root',
25
24
  overridesResolver: (props, styles) => styles.root
@@ -48,6 +47,7 @@ const MultiInputTimeRangeField = /*#__PURE__*/React.forwardRef(function MultiInp
48
47
  format,
49
48
  onChange,
50
49
  readOnly,
50
+ disabled,
51
51
  onError,
52
52
  minTime,
53
53
  maxTime,
@@ -98,6 +98,7 @@ const MultiInputTimeRangeField = /*#__PURE__*/React.forwardRef(function MultiInp
98
98
  format,
99
99
  onChange,
100
100
  readOnly,
101
+ disabled,
101
102
  onError,
102
103
  minTime,
103
104
  maxTime,
@@ -116,11 +117,15 @@ const MultiInputTimeRangeField = /*#__PURE__*/React.forwardRef(function MultiInp
116
117
  {
117
118
  startDate: {
118
119
  onKeyDown: onStartInputKeyDown,
119
- ref: startInputRef
120
+ ref: startInputRef,
121
+ readOnly: startReadOnly,
122
+ inputMode: startInputMode
120
123
  },
121
124
  endDate: {
122
125
  onKeyDown: onEndInputKeyDown,
123
- ref: endInputRef
126
+ ref: endInputRef,
127
+ readOnly: endReadOnly,
128
+ inputMode: endInputMode
124
129
  }
125
130
  } = _useMultiInputTimeRan,
126
131
  startDateProps = _objectWithoutPropertiesLoose(_useMultiInputTimeRan.startDate, _excluded3),
@@ -129,11 +134,15 @@ const MultiInputTimeRangeField = /*#__PURE__*/React.forwardRef(function MultiInp
129
134
  children: [/*#__PURE__*/_jsx(Input, _extends({}, startDateProps, {
130
135
  inputProps: _extends({}, startDateProps.inputProps, {
131
136
  ref: startInputRef,
137
+ readOnly: startReadOnly,
138
+ inputMode: startInputMode,
132
139
  onKeyDown: onStartInputKeyDown
133
140
  })
134
141
  })), /*#__PURE__*/_jsx(Separator, _extends({}, separatorProps)), /*#__PURE__*/_jsx(Input, _extends({}, endDateProps, {
135
142
  inputProps: _extends({}, endDateProps.inputProps, {
136
143
  ref: endInputRef,
144
+ readOnly: endReadOnly,
145
+ inputMode: endInputMode,
137
146
  onKeyDown: onEndInputKeyDown
138
147
  })
139
148
  }))]
@@ -149,6 +158,7 @@ process.env.NODE_ENV !== "production" ? MultiInputTimeRangeField.propTypes = {
149
158
  * @default `utils.is12HourCycleInCurrentLocale()`
150
159
  */
151
160
  ampm: PropTypes.bool,
161
+ className: PropTypes.string,
152
162
  /**
153
163
  * Overrideable components.
154
164
  * @default {}
@@ -163,6 +173,17 @@ process.env.NODE_ENV !== "production" ? MultiInputTimeRangeField.propTypes = {
163
173
  * The default value. Use when the component is not controlled.
164
174
  */
165
175
  defaultValue: PropTypes.arrayOf(PropTypes.any),
176
+ /**
177
+ * Defines the `flex-direction` style property.
178
+ * It is applied for all screen sizes.
179
+ * @default 'column'
180
+ */
181
+ direction: PropTypes.oneOfType([PropTypes.oneOf(['column-reverse', 'column', 'row-reverse', 'row']), PropTypes.arrayOf(PropTypes.oneOf(['column-reverse', 'column', 'row-reverse', 'row'])), PropTypes.object]),
182
+ /**
183
+ * If `true`, the component is disabled.
184
+ * @default false
185
+ */
186
+ disabled: PropTypes.bool,
166
187
  /**
167
188
  * If `true` disable values before the current date for date components, time for time components and both for date time components.
168
189
  * @default false
@@ -178,6 +199,10 @@ process.env.NODE_ENV !== "production" ? MultiInputTimeRangeField.propTypes = {
178
199
  * @default false
179
200
  */
180
201
  disablePast: PropTypes.bool,
202
+ /**
203
+ * Add an element between each child.
204
+ */
205
+ divider: PropTypes.node,
181
206
  /**
182
207
  * Format of the date when rendered in the input(s).
183
208
  */
@@ -231,7 +256,7 @@ process.env.NODE_ENV !== "production" ? MultiInputTimeRangeField.propTypes = {
231
256
  * 4. If `null` is provided, no section will be selected
232
257
  * If not provided, the selected sections will be handled internally.
233
258
  */
234
- selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'year']), PropTypes.number, PropTypes.shape({
259
+ selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'year']), PropTypes.number, PropTypes.shape({
235
260
  endIndex: PropTypes.number.isRequired,
236
261
  startIndex: PropTypes.number.isRequired
237
262
  })]),
@@ -242,6 +267,16 @@ process.env.NODE_ENV !== "production" ? MultiInputTimeRangeField.propTypes = {
242
267
  * @returns {boolean} If `true` the time will be disabled.
243
268
  */
244
269
  shouldDisableTime: PropTypes.func,
270
+ /**
271
+ * Defines the space between immediate children.
272
+ * @default 0
273
+ */
274
+ spacing: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string])), PropTypes.number, PropTypes.object, PropTypes.string]),
275
+ style: PropTypes.object,
276
+ /**
277
+ * The system prop, which allows defining system overrides as well as additional CSS styles.
278
+ */
279
+ sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),
245
280
  /**
246
281
  * The selected value.
247
282
  * Used when the component is controlled.
@@ -1,7 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import { SlotComponentProps } from '@mui/base/utils';
3
3
  import Typography from '@mui/material/Typography';
4
- import Stack from '@mui/material/Stack';
4
+ import Stack, { StackProps } from '@mui/material/Stack';
5
5
  import TextField from '@mui/material/TextField';
6
6
  import { UseTimeRangeFieldDefaultizedProps, UseTimeRangeFieldProps } from '../internal/models/timeRange';
7
7
  import { RangePosition } from '../internal/models/range';
@@ -15,7 +15,7 @@ export interface UseMultiInputTimeRangeFieldParams<TDate, TChildProps extends {}
15
15
  export interface UseMultiInputTimeRangeFieldProps<TDate> extends UseTimeRangeFieldProps<TDate> {
16
16
  }
17
17
  export type UseMultiInputTimeRangeFieldComponentProps<TDate, TChildProps extends {}> = Omit<TChildProps, keyof UseMultiInputTimeRangeFieldProps<TDate>> & UseMultiInputTimeRangeFieldProps<TDate>;
18
- export interface MultiInputTimeRangeFieldProps<TDate> extends UseMultiInputTimeRangeFieldComponentProps<TDate, {}> {
18
+ export interface MultiInputTimeRangeFieldProps<TDate> extends UseMultiInputTimeRangeFieldComponentProps<TDate, Omit<StackProps, 'position'>> {
19
19
  /**
20
20
  * Overrideable components.
21
21
  * @default {}
@@ -36,6 +36,12 @@ process.env.NODE_ENV !== "production" ? NextDateRangePicker.propTypes = {
36
36
  // | These PropTypes are generated from the TypeScript type definitions |
37
37
  // | To update them edit the TypeScript types and run "yarn proptypes" |
38
38
  // ----------------------------------------------------------------------
39
+ /**
40
+ * If `true`, the main element is focused during the first mount.
41
+ * This main element is:
42
+ * - the element chosen by the visible view if any (i.e: the selected day on the `day` view).
43
+ * - the `input` element if there is a field rendered.
44
+ */
39
45
  autoFocus: PropTypes.bool,
40
46
  /**
41
47
  * The number of calendars to render on **desktop**.
@@ -222,7 +228,7 @@ process.env.NODE_ENV !== "production" ? NextDateRangePicker.propTypes = {
222
228
  * 4. If `null` is provided, no section will be selected
223
229
  * If not provided, the selected sections will be handled internally.
224
230
  */
225
- selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'year']), PropTypes.number, PropTypes.shape({
231
+ selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'year']), PropTypes.number, PropTypes.shape({
226
232
  endIndex: PropTypes.number.isRequired,
227
233
  startIndex: PropTypes.number.isRequired
228
234
  })]),
@@ -252,6 +258,14 @@ process.env.NODE_ENV !== "production" ? NextDateRangePicker.propTypes = {
252
258
  * The selected value.
253
259
  * Used when the component is controlled.
254
260
  */
255
- value: PropTypes.arrayOf(PropTypes.any)
261
+ value: PropTypes.arrayOf(PropTypes.any),
262
+ /**
263
+ * Define custom view renderers for each section.
264
+ * If `null`, the section will only have field editing.
265
+ * If `undefined`, internally defined view will be the used.
266
+ */
267
+ viewRenderers: PropTypes.shape({
268
+ day: PropTypes.func
269
+ })
256
270
  } : void 0;
257
271
  export { NextDateRangePicker };
@@ -1,10 +1,11 @@
1
1
  import * as React from 'react';
2
2
  import { LocalizedComponent } from '@mui/x-date-pickers';
3
- import { BaseNextPickerProps, DefaultizedProps, BaseDateValidationProps } from '@mui/x-date-pickers/internals';
3
+ import { DefaultizedProps, BaseDateValidationProps, BaseNextPickerInputProps, PickerViewRendererLookup } from '@mui/x-date-pickers/internals';
4
4
  import { DateRangeValidationError } from '../internal/hooks/validation/useDateRangeValidation';
5
5
  import { DateRange } from '../internal/models';
6
6
  import { DateRangeCalendarSlotsComponent, DateRangeCalendarSlotsComponentsProps, ExportedDateRangeCalendarProps } from '../DateRangeCalendar';
7
7
  import { DateRangePickerToolbarProps, ExportedDateRangePickerToolbarProps } from '../DateRangePicker/DateRangePickerToolbar';
8
+ import { DateRangeViewRendererProps } from '../dateRangeViewRenderers';
8
9
  export interface BaseNextDateRangePickerSlotsComponent<TDate> extends DateRangeCalendarSlotsComponent<TDate> {
9
10
  /**
10
11
  * Custom component for the toolbar rendered above the views.
@@ -15,7 +16,7 @@ export interface BaseNextDateRangePickerSlotsComponent<TDate> extends DateRangeC
15
16
  export interface BaseNextDateRangePickerSlotsComponentsProps<TDate> extends DateRangeCalendarSlotsComponentsProps<TDate> {
16
17
  toolbar?: ExportedDateRangePickerToolbarProps;
17
18
  }
18
- export interface BaseNextDateRangePickerProps<TDate> extends Omit<BaseNextPickerProps<DateRange<TDate>, TDate, 'day', DateRangeValidationError>, 'views' | 'openTo' | 'onViewChange' | 'orientation'>, ExportedDateRangeCalendarProps<TDate>, BaseDateValidationProps<TDate> {
19
+ export interface BaseNextDateRangePickerProps<TDate> extends Omit<BaseNextPickerInputProps<DateRange<TDate>, TDate, 'day', DateRangeValidationError>, 'view' | 'views' | 'openTo' | 'onViewChange' | 'orientation'>, ExportedDateRangeCalendarProps<TDate>, BaseDateValidationProps<TDate> {
19
20
  /**
20
21
  * Overrideable components.
21
22
  * @default {}
@@ -26,6 +27,12 @@ export interface BaseNextDateRangePickerProps<TDate> extends Omit<BaseNextPicker
26
27
  * @default {}
27
28
  */
28
29
  componentsProps?: BaseNextDateRangePickerSlotsComponentsProps<TDate>;
30
+ /**
31
+ * Define custom view renderers for each section.
32
+ * If `null`, the section will only have field editing.
33
+ * If `undefined`, internally defined view will be the used.
34
+ */
35
+ viewRenderers?: Partial<PickerViewRendererLookup<DateRange<TDate>, 'day', DateRangeViewRendererProps<TDate, 'day'>, {}>>;
29
36
  }
30
37
  type UseNextDateRangePickerDefaultizedProps<TDate, Props extends BaseNextDateRangePickerProps<TDate>> = LocalizedComponent<TDate, DefaultizedProps<Props, keyof BaseDateValidationProps<TDate>>>;
31
38
  export declare function useNextDateRangePickerDefaultizedProps<TDate, Props extends BaseNextDateRangePickerProps<TDate>>(props: Props, name: string): UseNextDateRangePickerDefaultizedProps<TDate, Props>;
@@ -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 = ["components", "componentsProps"],
4
- _excluded2 = ["ref", "onPaste", "inputMode"];
4
+ _excluded2 = ["ref", "onPaste", "inputMode", "readOnly"];
5
5
  import * as React from 'react';
6
6
  import PropTypes from 'prop-types';
7
7
  import TextField from '@mui/material/TextField';
@@ -35,7 +35,8 @@ const SingleInputDateRangeField = /*#__PURE__*/React.forwardRef(function SingleI
35
35
  {
36
36
  ref: inputRef,
37
37
  onPaste,
38
- inputMode
38
+ inputMode,
39
+ readOnly
39
40
  } = _useSingleInputDateRa,
40
41
  fieldProps = _objectWithoutPropertiesLoose(_useSingleInputDateRa, _excluded2);
41
42
  return /*#__PURE__*/_jsx(Input, _extends({
@@ -44,7 +45,8 @@ const SingleInputDateRangeField = /*#__PURE__*/React.forwardRef(function SingleI
44
45
  inputProps: _extends({}, fieldProps.inputProps, {
45
46
  ref: inputRef,
46
47
  onPaste,
47
- inputMode
48
+ inputMode,
49
+ readOnly
48
50
  })
49
51
  }));
50
52
  });
@@ -53,6 +55,19 @@ process.env.NODE_ENV !== "production" ? SingleInputDateRangeField.propTypes = {
53
55
  // | These PropTypes are generated from the TypeScript type definitions |
54
56
  // | To update them edit the TypeScript types and run "yarn proptypes" |
55
57
  // ----------------------------------------------------------------------
58
+ /**
59
+ * If `true`, the `input` element is focused during the first mount.
60
+ * @default false
61
+ */
62
+ autoFocus: PropTypes.bool,
63
+ className: PropTypes.string,
64
+ /**
65
+ * The color of the component.
66
+ * It supports both default and custom theme colors, which can be added as shown in the
67
+ * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).
68
+ * @default 'primary'
69
+ */
70
+ color: PropTypes.oneOf(['error', 'info', 'primary', 'secondary', 'success', 'warning']),
56
71
  /**
57
72
  * Overrideable components.
58
73
  * @default {}
@@ -67,6 +82,11 @@ process.env.NODE_ENV !== "production" ? SingleInputDateRangeField.propTypes = {
67
82
  * The default value. Use when the component is not controlled.
68
83
  */
69
84
  defaultValue: PropTypes.arrayOf(PropTypes.any),
85
+ /**
86
+ * If `true`, the component is disabled.
87
+ * @default false
88
+ */
89
+ disabled: PropTypes.bool,
70
90
  /**
71
91
  * If `true` disable values before the current date for date components, time for time components and both for date time components.
72
92
  * @default false
@@ -77,10 +97,70 @@ process.env.NODE_ENV !== "production" ? SingleInputDateRangeField.propTypes = {
77
97
  * @default false
78
98
  */
79
99
  disablePast: PropTypes.bool,
100
+ /**
101
+ * If `true`, the component is displayed in focused state.
102
+ */
103
+ focused: PropTypes.bool,
80
104
  /**
81
105
  * Format of the date when rendered in the input(s).
82
106
  */
83
107
  format: PropTypes.string,
108
+ /**
109
+ * Props applied to the [`FormHelperText`](/material-ui/api/form-helper-text/) element.
110
+ */
111
+ FormHelperTextProps: PropTypes.object,
112
+ /**
113
+ * If `true`, the input will take up the full width of its container.
114
+ * @default false
115
+ */
116
+ fullWidth: PropTypes.bool,
117
+ /**
118
+ * The helper text content.
119
+ */
120
+ helperText: PropTypes.node,
121
+ /**
122
+ * If `true`, the label is hidden.
123
+ * This is used to increase density for a `FilledInput`.
124
+ * Be sure to add `aria-label` to the `input` element.
125
+ * @default false
126
+ */
127
+ hiddenLabel: PropTypes.bool,
128
+ /**
129
+ * The id of the `input` element.
130
+ * Use this prop to make `label` and `helperText` accessible for screen readers.
131
+ */
132
+ id: PropTypes.string,
133
+ /**
134
+ * Props applied to the [`InputLabel`](/material-ui/api/input-label/) element.
135
+ * Pointer events like `onClick` are enabled if and only if `shrink` is `true`.
136
+ */
137
+ InputLabelProps: PropTypes.object,
138
+ /**
139
+ * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.
140
+ */
141
+ inputProps: PropTypes.object,
142
+ /**
143
+ * Props applied to the Input element.
144
+ * It will be a [`FilledInput`](/material-ui/api/filled-input/),
145
+ * [`OutlinedInput`](/material-ui/api/outlined-input/) or [`Input`](/material-ui/api/input/)
146
+ * component depending on the `variant` prop value.
147
+ */
148
+ InputProps: PropTypes.object,
149
+ /**
150
+ * Pass a ref to the `input` element.
151
+ */
152
+ inputRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({
153
+ current: PropTypes.any.isRequired
154
+ })]),
155
+ /**
156
+ * The label content.
157
+ */
158
+ label: PropTypes.node,
159
+ /**
160
+ * If `dense` or `normal`, will adjust vertical spacing of this and contained components.
161
+ * @default 'none'
162
+ */
163
+ margin: PropTypes.oneOf(['dense', 'none', 'normal']),
84
164
  /**
85
165
  * Maximal selectable date.
86
166
  */
@@ -89,6 +169,11 @@ process.env.NODE_ENV !== "production" ? SingleInputDateRangeField.propTypes = {
89
169
  * Minimal selectable date.
90
170
  */
91
171
  minDate: PropTypes.any,
172
+ /**
173
+ * Name attribute of the `input` element.
174
+ */
175
+ name: PropTypes.string,
176
+ onBlur: PropTypes.func,
92
177
  /**
93
178
  * Callback fired when the value changes.
94
179
  * @template TValue, TError
@@ -103,6 +188,7 @@ process.env.NODE_ENV !== "production" ? SingleInputDateRangeField.propTypes = {
103
188
  * @param {TValue} value The value associated to the error.
104
189
  */
105
190
  onError: PropTypes.func,
191
+ onFocus: PropTypes.func,
106
192
  /**
107
193
  * Callback fired when the selected sections change.
108
194
  * @param {FieldSelectedSections} newValue The new selected sections.
@@ -114,6 +200,11 @@ process.env.NODE_ENV !== "production" ? SingleInputDateRangeField.propTypes = {
114
200
  * @default false
115
201
  */
116
202
  readOnly: PropTypes.bool,
203
+ /**
204
+ * If `true`, the label is displayed as required and the `input` element is required.
205
+ * @default false
206
+ */
207
+ required: PropTypes.bool,
117
208
  /**
118
209
  * The currently selected sections.
119
210
  * This prop accept four formats:
@@ -123,7 +214,7 @@ process.env.NODE_ENV !== "production" ? SingleInputDateRangeField.propTypes = {
123
214
  * 4. If `null` is provided, no section will be selected
124
215
  * If not provided, the selected sections will be handled internally.
125
216
  */
126
- selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'year']), PropTypes.number, PropTypes.shape({
217
+ selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'year']), PropTypes.number, PropTypes.shape({
127
218
  endIndex: PropTypes.number.isRequired,
128
219
  startIndex: PropTypes.number.isRequired
129
220
  })]),
@@ -135,10 +226,24 @@ process.env.NODE_ENV !== "production" ? SingleInputDateRangeField.propTypes = {
135
226
  * @returns {boolean} Returns `true` if the date should be disabled.
136
227
  */
137
228
  shouldDisableDate: PropTypes.func,
229
+ /**
230
+ * The size of the component.
231
+ */
232
+ size: PropTypes.oneOf(['medium', 'small']),
233
+ style: PropTypes.object,
234
+ /**
235
+ * The system prop that allows defining system overrides as well as additional CSS styles.
236
+ */
237
+ sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),
138
238
  /**
139
239
  * The selected value.
140
240
  * Used when the component is controlled.
141
241
  */
142
- value: PropTypes.arrayOf(PropTypes.any)
242
+ value: PropTypes.arrayOf(PropTypes.any),
243
+ /**
244
+ * The variant to use.
245
+ * @default 'outlined'
246
+ */
247
+ variant: PropTypes.oneOf(['filled', 'outlined', 'standard'])
143
248
  } : void 0;
144
249
  export { SingleInputDateRangeField };
@@ -1,6 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import { SlotComponentProps } from '@mui/base/utils';
3
- import TextField, { TextFieldProps } from '@mui/material/TextField';
3
+ import TextField from '@mui/material/TextField';
4
+ import { FieldsTextFieldProps } from '@mui/x-date-pickers/internals';
4
5
  import { UseDateRangeFieldDefaultizedProps, UseDateRangeFieldProps } from '../internal/models';
5
6
  export interface UseSingleInputDateRangeFieldParams<TDate, TChildProps extends {}> {
6
7
  props: UseSingleInputDateRangeFieldComponentProps<TDate, TChildProps>;
@@ -10,7 +11,7 @@ export interface UseSingleInputDateRangeFieldProps<TDate> extends UseDateRangeFi
10
11
  }
11
12
  export type UseSingleInputDateRangeFieldDefaultizedProps<TDate, AdditionalProps extends {}> = UseDateRangeFieldDefaultizedProps<TDate> & AdditionalProps;
12
13
  export type UseSingleInputDateRangeFieldComponentProps<TDate, TChildProps extends {}> = Omit<TChildProps, keyof UseSingleInputDateRangeFieldProps<TDate>> & UseSingleInputDateRangeFieldProps<TDate>;
13
- export interface SingleInputDateRangeFieldProps<TDate> extends UseSingleInputDateRangeFieldComponentProps<TDate, TextFieldProps> {
14
+ export interface SingleInputDateRangeFieldProps<TDate> extends UseSingleInputDateRangeFieldComponentProps<TDate, FieldsTextFieldProps> {
14
15
  /**
15
16
  * Overrideable components.
16
17
  * @default {}
@@ -245,11 +245,6 @@ process.env.NODE_ENV !== "production" ? StaticDateRangePicker.propTypes = {
245
245
  * @returns {void|Promise} -
246
246
  */
247
247
  onMonthChange: PropTypes.func,
248
- /**
249
- * Callback fired on view change.
250
- * @param {DateView} view The new view.
251
- */
252
- onViewChange: PropTypes.func,
253
248
  /**
254
249
  * Props to pass to keyboard adornment button.
255
250
  */
@@ -3,19 +3,20 @@ import * as React from 'react';
3
3
  import PropTypes from 'prop-types';
4
4
  import { useStaticRangePicker } from '../internal/hooks/useStaticRangePicker';
5
5
  import { useNextDateRangePickerDefaultizedProps } from '../NextDateRangePicker/shared';
6
+ import { renderDateRangeViewCalendar } from '../dateRangeViewRenderers';
6
7
  import { rangeValueManager } from '../internal/utils/valueManagers';
7
- import { renderDateRangeView } from '../internal/utils/viewRenderers';
8
8
  import { validateDateRange } from '../internal/hooks/validation/useDateRangeValidation';
9
- const VIEW_LOOKUP = {
10
- day: renderDateRangeView
11
- };
12
9
  const StaticNextDateRangePicker = /*#__PURE__*/React.forwardRef(function StaticNextDateRangePicker(inProps, ref) {
13
10
  var _defaultizedProps$dis, _defaultizedProps$cal, _defaultizedProps$sho;
14
11
  const defaultizedProps = useNextDateRangePickerDefaultizedProps(inProps, 'MuiStaticNextDateRangePicker');
15
12
  const displayStaticWrapperAs = (_defaultizedProps$dis = defaultizedProps.displayStaticWrapperAs) != null ? _defaultizedProps$dis : 'mobile';
13
+ const viewRenderers = _extends({
14
+ day: renderDateRangeViewCalendar
15
+ }, defaultizedProps.viewRenderers);
16
16
 
17
17
  // Props with the default values specific to the static variant
18
18
  const props = _extends({}, defaultizedProps, {
19
+ viewRenderers,
19
20
  displayStaticWrapperAs,
20
21
  views: ['day'],
21
22
  openTo: 'day',
@@ -27,7 +28,6 @@ const StaticNextDateRangePicker = /*#__PURE__*/React.forwardRef(function StaticN
27
28
  } = useStaticRangePicker({
28
29
  props,
29
30
  valueManager: rangeValueManager,
30
- viewLookup: VIEW_LOOKUP,
31
31
  validator: validateDateRange,
32
32
  ref
33
33
  });
@@ -38,6 +38,12 @@ StaticNextDateRangePicker.propTypes = {
38
38
  // | These PropTypes are generated from the TypeScript type definitions |
39
39
  // | To update them edit the TypeScript types and run "yarn proptypes" |
40
40
  // ----------------------------------------------------------------------
41
+ /**
42
+ * If `true`, the main element is focused during the first mount.
43
+ * This main element is:
44
+ * - the element chosen by the visible view if any (i.e: the selected day on the `day` view).
45
+ * - the `input` element if there is a field rendered.
46
+ */
41
47
  autoFocus: PropTypes.bool,
42
48
  /**
43
49
  * The number of calendars to render.
@@ -205,6 +211,14 @@ StaticNextDateRangePicker.propTypes = {
205
211
  * The selected value.
206
212
  * Used when the component is controlled.
207
213
  */
208
- value: PropTypes.arrayOf(PropTypes.any)
214
+ value: PropTypes.arrayOf(PropTypes.any),
215
+ /**
216
+ * Define custom view renderers for each section.
217
+ * If `null`, the section will only have field editing.
218
+ * If `undefined`, internally defined view will be the used.
219
+ */
220
+ viewRenderers: PropTypes.shape({
221
+ day: PropTypes.func
222
+ })
209
223
  };
210
224
  export { StaticNextDateRangePicker };
@@ -0,0 +1,13 @@
1
+ /// <reference types="react" />
2
+ import { DateOrTimeView } from '@mui/x-date-pickers/internals';
3
+ import { DateRangeCalendarProps } from '../DateRangeCalendar';
4
+ export interface DateRangeViewRendererProps<TDate, TView extends DateOrTimeView> extends DateRangeCalendarProps<TDate> {
5
+ view: TView;
6
+ onViewChange?: (view: TView) => void;
7
+ views: readonly TView[];
8
+ }
9
+ /**
10
+ * We don't pass all the props down to `DateRangeCalendar`,
11
+ * because otherwise some unwanted props would be passed to the HTML element.
12
+ */
13
+ export declare const renderDateRangeViewCalendar: <TDate extends unknown>({ value, defaultValue, onChange, className, classes, disableFuture, disablePast, minDate, maxDate, shouldDisableDate, reduceAnimations, onMonthChange, defaultCalendarMonth, rangePosition, onRangePositionChange, calendars, components, componentsProps, loading, renderLoading, disableHighlightToday, readOnly, disabled, showDaysOutsideCurrentMonth, dayOfWeekFormatter, disableAutoMonthSwitching, sx, autoFocus, fixedWeekNumber, disableDragEditing, displayWeekNumber, }: DateRangeViewRendererProps<TDate, any>) => JSX.Element;
@@ -1,12 +1,11 @@
1
1
  import * as React from 'react';
2
- import { DateRangeCalendar } from '../../DateRangeCalendar';
3
-
2
+ import { DateRangeCalendar } from '../DateRangeCalendar';
3
+ import { jsx as _jsx } from "react/jsx-runtime";
4
4
  /**
5
5
  * We don't pass all the props down to `DateRangeCalendar`,
6
6
  * because otherwise some unwanted props would be passed to the HTML element.
7
7
  */
8
- import { jsx as _jsx } from "react/jsx-runtime";
9
- export const renderDateRangeView = ({
8
+ export const renderDateRangeViewCalendar = ({
10
9
  value,
11
10
  defaultValue,
12
11
  onChange,
@@ -0,0 +1,2 @@
1
+ export { renderDateRangeViewCalendar } from './dateRangeViewRenderers';
2
+ export type { DateRangeViewRendererProps } from './dateRangeViewRenderers';
@@ -0,0 +1 @@
1
+ export { renderDateRangeViewCalendar } from './dateRangeViewRenderers';
@@ -0,0 +1,6 @@
1
+ {
2
+ "sideEffects": false,
3
+ "module": "./index.js",
4
+ "main": "../node/dateRangeViewRenderers/index.js",
5
+ "types": "./index.d.ts"
6
+ }
package/index.d.ts CHANGED
@@ -9,10 +9,11 @@ export * from './MultiInputDateRangeField';
9
9
  export * from './MultiInputTimeRangeField';
10
10
  export * from './MultiInputDateTimeRangeField';
11
11
  export * from './SingleInputDateRangeField';
12
- export type { DateRangeFieldSection } from './internal/models/range';
12
+ export type { RangeFieldSection } from './internal/models/fields';
13
13
  export * from './DateRangeCalendar';
14
14
  export * from './NextDateRangePicker';
15
15
  export * from './DesktopNextDateRangePicker';
16
16
  export * from './MobileNextDateRangePicker';
17
17
  export * from './StaticNextDateRangePicker';
18
+ export * from './dateRangeViewRenderers';
18
19
  export type { DateRangeValidationError } from './internal/hooks/validation/useDateRangeValidation';
package/index.js CHANGED
@@ -1,4 +1,4 @@
1
- /** @license MUI v6.0.0-alpha.11
1
+ /** @license MUI v6.0.0-alpha.13
2
2
  *
3
3
  * This source code is licensed under the MIT license found in the
4
4
  * LICENSE file in the root directory of this source tree.
@@ -23,4 +23,7 @@ export * from './DateRangeCalendar';
23
23
  export * from './NextDateRangePicker';
24
24
  export * from './DesktopNextDateRangePicker';
25
25
  export * from './MobileNextDateRangePicker';
26
- export * from './StaticNextDateRangePicker';
26
+ export * from './StaticNextDateRangePicker';
27
+
28
+ // View renderers
29
+ export * from './dateRangeViewRenderers';
@@ -1,6 +1,6 @@
1
1
  /// <reference types="react" />
2
2
  import { DateOrTimeView } from '@mui/x-date-pickers/internals';
3
3
  import { UseDesktopRangePickerParams, UseDesktopRangePickerProps } from './useDesktopRangePicker.types';
4
- export declare const useDesktopRangePicker: <TDate, TView extends DateOrTimeView, TExternalProps extends UseDesktopRangePickerProps<TDate, TView, any>>({ props, valueManager, viewLookup, validator, }: UseDesktopRangePickerParams<TDate, TView, TExternalProps>) => {
4
+ export declare const useDesktopRangePicker: <TDate, TView extends DateOrTimeView, TExternalProps extends UseDesktopRangePickerProps<TDate, TView, any, TExternalProps>>({ props, valueManager, validator, }: UseDesktopRangePickerParams<TDate, TView, TExternalProps>) => {
5
5
  renderPicker: () => JSX.Element;
6
6
  };