@mui/x-date-pickers 7.0.0-alpha.4 → 7.0.0-alpha.6

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 (252) hide show
  1. package/CHANGELOG.md +342 -0
  2. package/DateCalendar/DateCalendar.types.d.ts +6 -6
  3. package/DateCalendar/DayCalendar.d.ts +4 -4
  4. package/DateCalendar/index.d.ts +1 -1
  5. package/DateField/DateField.js +17 -50
  6. package/DateField/DateField.types.d.ts +5 -9
  7. package/DateField/useDateField.d.ts +2 -2
  8. package/DateField/useDateField.js +1 -5
  9. package/DatePicker/DatePicker.js +5 -1
  10. package/DatePicker/DatePicker.types.d.ts +6 -6
  11. package/DatePicker/index.d.ts +1 -1
  12. package/DatePicker/shared.d.ts +6 -6
  13. package/DateTimeField/DateTimeField.js +17 -50
  14. package/DateTimeField/DateTimeField.types.d.ts +5 -9
  15. package/DateTimeField/useDateTimeField.d.ts +2 -2
  16. package/DateTimeField/useDateTimeField.js +1 -5
  17. package/DateTimePicker/DateTimePicker.js +5 -1
  18. package/DateTimePicker/DateTimePicker.types.d.ts +6 -6
  19. package/DateTimePicker/index.d.ts +1 -1
  20. package/DateTimePicker/shared.d.ts +6 -6
  21. package/DesktopDatePicker/DesktopDatePicker.js +7 -2
  22. package/DesktopDatePicker/DesktopDatePicker.types.d.ts +6 -6
  23. package/DesktopDatePicker/index.d.ts +1 -1
  24. package/DesktopDateTimePicker/DesktopDateTimePicker.js +5 -1
  25. package/DesktopDateTimePicker/DesktopDateTimePicker.types.d.ts +8 -8
  26. package/DesktopDateTimePicker/index.d.ts +1 -1
  27. package/DesktopTimePicker/DesktopTimePicker.js +5 -1
  28. package/DesktopTimePicker/DesktopTimePicker.types.d.ts +8 -8
  29. package/DesktopTimePicker/index.d.ts +1 -1
  30. package/DigitalClock/DigitalClock.types.d.ts +4 -4
  31. package/DigitalClock/index.d.ts +1 -1
  32. package/MobileDatePicker/MobileDatePicker.js +7 -2
  33. package/MobileDatePicker/MobileDatePicker.types.d.ts +6 -6
  34. package/MobileDatePicker/index.d.ts +1 -1
  35. package/MobileDateTimePicker/MobileDateTimePicker.js +5 -1
  36. package/MobileDateTimePicker/MobileDateTimePicker.types.d.ts +6 -6
  37. package/MobileDateTimePicker/index.d.ts +1 -1
  38. package/MobileTimePicker/MobileTimePicker.js +5 -1
  39. package/MobileTimePicker/MobileTimePicker.types.d.ts +6 -6
  40. package/MobileTimePicker/index.d.ts +1 -1
  41. package/MultiSectionDigitalClock/MultiSectionDigitalClock.types.d.ts +4 -4
  42. package/MultiSectionDigitalClock/MultiSectionDigitalClockSection.d.ts +3 -3
  43. package/MultiSectionDigitalClock/index.d.ts +1 -1
  44. package/PickersCalendarHeader/PickersCalendarHeader.types.d.ts +8 -8
  45. package/PickersCalendarHeader/index.d.ts +1 -1
  46. package/PickersLayout/PickersLayout.types.d.ts +6 -6
  47. package/PickersLayout/index.d.ts +1 -1
  48. package/PickersSectionList/PickersSectionList.d.ts +11 -0
  49. package/PickersSectionList/PickersSectionList.js +223 -0
  50. package/PickersSectionList/PickersSectionList.types.d.ts +56 -0
  51. package/PickersSectionList/index.d.ts +4 -0
  52. package/PickersSectionList/index.js +2 -0
  53. package/PickersSectionList/package.json +6 -0
  54. package/PickersSectionList/pickersSectionListClasses.d.ts +11 -0
  55. package/PickersSectionList/pickersSectionListClasses.js +6 -0
  56. package/StaticDatePicker/StaticDatePicker.js +1 -1
  57. package/StaticDatePicker/StaticDatePicker.types.d.ts +7 -7
  58. package/StaticDatePicker/index.d.ts +1 -1
  59. package/StaticDateTimePicker/StaticDateTimePicker.types.d.ts +7 -7
  60. package/StaticDateTimePicker/index.d.ts +1 -1
  61. package/StaticTimePicker/StaticTimePicker.types.d.ts +7 -7
  62. package/StaticTimePicker/index.d.ts +1 -1
  63. package/TimeClock/TimeClock.types.d.ts +5 -5
  64. package/TimeClock/index.d.ts +1 -1
  65. package/TimeField/TimeField.js +17 -50
  66. package/TimeField/TimeField.types.d.ts +5 -9
  67. package/TimeField/useTimeField.d.ts +2 -2
  68. package/TimeField/useTimeField.js +1 -5
  69. package/TimePicker/TimePicker.js +5 -1
  70. package/TimePicker/TimePicker.types.d.ts +6 -6
  71. package/TimePicker/index.d.ts +1 -1
  72. package/TimePicker/shared.d.ts +5 -5
  73. package/hooks/index.d.ts +1 -0
  74. package/hooks/useClearableField.d.ts +32 -20
  75. package/hooks/useClearableField.js +32 -33
  76. package/index.d.ts +1 -0
  77. package/index.js +4 -1
  78. package/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.types.d.ts +9 -9
  79. package/internals/components/PickersArrowSwitcher/index.d.ts +3 -1
  80. package/internals/components/PickersArrowSwitcher/index.js +2 -1
  81. package/internals/components/{PickersTextField → PickersInput}/Outline.d.ts +1 -0
  82. package/internals/components/{PickersTextField → PickersInput}/Outline.js +35 -19
  83. package/internals/components/PickersInput/PickersFilledInput.d.ts +3 -0
  84. package/internals/components/PickersInput/PickersFilledInput.js +166 -0
  85. package/internals/components/PickersInput/PickersInput.d.ts +15 -0
  86. package/internals/components/{PickersTextField → PickersInput}/PickersInput.js +78 -106
  87. package/internals/components/PickersInput/PickersInput.types.d.ts +60 -0
  88. package/internals/components/PickersInput/PickersOutlinedInput.d.ts +3 -0
  89. package/internals/components/PickersInput/PickersOutlinedInput.js +117 -0
  90. package/internals/components/PickersInput/PickersStandardInput.d.ts +3 -0
  91. package/internals/components/PickersInput/PickersStandardInput.js +123 -0
  92. package/internals/components/PickersInput/index.d.ts +4 -0
  93. package/internals/components/PickersInput/index.js +3 -0
  94. package/internals/components/PickersInput/pickersInputClasses.d.ts +84 -0
  95. package/internals/components/PickersInput/pickersInputClasses.js +18 -0
  96. package/internals/components/PickersModalDialog.d.ts +4 -4
  97. package/internals/components/PickersPopper.d.ts +4 -4
  98. package/internals/components/PickersTextField/PickersTextField.d.ts +1 -2
  99. package/internals/components/PickersTextField/PickersTextField.js +15 -6
  100. package/internals/components/PickersTextField/PickersTextField.types.d.ts +46 -3
  101. package/internals/components/PickersTextField/pickersTextFieldClasses.d.ts +0 -31
  102. package/internals/components/PickersTextField/pickersTextFieldClasses.js +3 -6
  103. package/internals/hooks/useDesktopPicker/index.d.ts +1 -1
  104. package/internals/hooks/useDesktopPicker/useDesktopPicker.js +2 -0
  105. package/internals/hooks/useDesktopPicker/useDesktopPicker.types.d.ts +8 -8
  106. package/internals/hooks/useField/index.d.ts +1 -1
  107. package/internals/hooks/useField/useField.js +11 -4
  108. package/internals/hooks/useField/useField.types.d.ts +4 -24
  109. package/internals/hooks/useField/useField.utils.js +24 -4
  110. package/internals/hooks/useField/useFieldState.js +7 -3
  111. package/internals/hooks/useMobilePicker/index.d.ts +1 -1
  112. package/internals/hooks/useMobilePicker/useMobilePicker.js +3 -1
  113. package/internals/hooks/useMobilePicker/useMobilePicker.types.d.ts +7 -7
  114. package/internals/hooks/useStaticPicker/index.d.ts +1 -1
  115. package/internals/hooks/useStaticPicker/useStaticPicker.types.d.ts +5 -5
  116. package/internals/index.d.ts +7 -6
  117. package/internals/index.js +1 -0
  118. package/internals/models/props/basePickerProps.d.ts +4 -0
  119. package/internals/utils/convertFieldResponseIntoMuiTextFieldProps.d.ts +3 -0
  120. package/internals/utils/convertFieldResponseIntoMuiTextFieldProps.js +26 -0
  121. package/legacy/DateField/DateField.js +19 -47
  122. package/legacy/DateField/useDateField.js +1 -4
  123. package/legacy/DatePicker/DatePicker.js +5 -1
  124. package/legacy/DateTimeField/DateTimeField.js +19 -47
  125. package/legacy/DateTimeField/useDateTimeField.js +1 -4
  126. package/legacy/DateTimePicker/DateTimePicker.js +5 -1
  127. package/legacy/DesktopDatePicker/DesktopDatePicker.js +7 -2
  128. package/legacy/DesktopDateTimePicker/DesktopDateTimePicker.js +5 -1
  129. package/legacy/DesktopTimePicker/DesktopTimePicker.js +5 -1
  130. package/legacy/MobileDatePicker/MobileDatePicker.js +7 -2
  131. package/legacy/MobileDateTimePicker/MobileDateTimePicker.js +5 -1
  132. package/legacy/MobileTimePicker/MobileTimePicker.js +5 -1
  133. package/legacy/PickersSectionList/PickersSectionList.js +230 -0
  134. package/legacy/PickersSectionList/index.js +2 -0
  135. package/legacy/PickersSectionList/pickersSectionListClasses.js +6 -0
  136. package/legacy/StaticDatePicker/StaticDatePicker.js +1 -1
  137. package/legacy/TimeField/TimeField.js +19 -47
  138. package/legacy/TimeField/useTimeField.js +1 -4
  139. package/legacy/TimePicker/TimePicker.js +5 -1
  140. package/legacy/hooks/useClearableField.js +30 -32
  141. package/legacy/index.js +4 -1
  142. package/legacy/internals/components/PickersArrowSwitcher/index.js +2 -1
  143. package/legacy/internals/components/{PickersTextField → PickersInput}/Outline.js +40 -22
  144. package/legacy/internals/components/PickersInput/PickersFilledInput.js +161 -0
  145. package/legacy/internals/components/{PickersTextField → PickersInput}/PickersInput.js +75 -90
  146. package/legacy/internals/components/PickersInput/PickersInput.types.js +1 -0
  147. package/legacy/internals/components/PickersInput/PickersOutlinedInput.js +110 -0
  148. package/legacy/internals/components/PickersInput/PickersStandardInput.js +117 -0
  149. package/legacy/internals/components/PickersInput/index.js +3 -0
  150. package/legacy/internals/components/PickersInput/pickersInputClasses.js +18 -0
  151. package/legacy/internals/components/PickersTextField/PickersTextField.js +16 -7
  152. package/legacy/internals/components/PickersTextField/pickersTextFieldClasses.js +3 -6
  153. package/legacy/internals/hooks/useDesktopPicker/useDesktopPicker.js +2 -0
  154. package/legacy/internals/hooks/useField/useField.js +12 -5
  155. package/legacy/internals/hooks/useField/useField.utils.js +26 -4
  156. package/legacy/internals/hooks/useField/useFieldState.js +7 -3
  157. package/legacy/internals/hooks/useMobilePicker/useMobilePicker.js +3 -1
  158. package/legacy/internals/index.js +1 -0
  159. package/legacy/internals/utils/convertFieldResponseIntoMuiTextFieldProps.js +24 -0
  160. package/legacy/locales/ruRU.js +1 -2
  161. package/locales/ruRU.js +1 -2
  162. package/models/fields.d.ts +2 -1
  163. package/modern/DateField/DateField.js +17 -50
  164. package/modern/DateField/useDateField.js +1 -5
  165. package/modern/DatePicker/DatePicker.js +5 -1
  166. package/modern/DateTimeField/DateTimeField.js +17 -50
  167. package/modern/DateTimeField/useDateTimeField.js +1 -5
  168. package/modern/DateTimePicker/DateTimePicker.js +5 -1
  169. package/modern/DesktopDatePicker/DesktopDatePicker.js +7 -2
  170. package/modern/DesktopDateTimePicker/DesktopDateTimePicker.js +5 -1
  171. package/modern/DesktopTimePicker/DesktopTimePicker.js +5 -1
  172. package/modern/MobileDatePicker/MobileDatePicker.js +7 -2
  173. package/modern/MobileDateTimePicker/MobileDateTimePicker.js +5 -1
  174. package/modern/MobileTimePicker/MobileTimePicker.js +5 -1
  175. package/modern/PickersSectionList/PickersSectionList.js +221 -0
  176. package/modern/PickersSectionList/PickersSectionList.types.js +1 -0
  177. package/modern/PickersSectionList/index.js +2 -0
  178. package/modern/PickersSectionList/pickersSectionListClasses.js +6 -0
  179. package/modern/StaticDatePicker/StaticDatePicker.js +1 -1
  180. package/modern/TimeField/TimeField.js +17 -50
  181. package/modern/TimeField/useTimeField.js +1 -5
  182. package/modern/TimePicker/TimePicker.js +5 -1
  183. package/modern/hooks/useClearableField.js +32 -33
  184. package/modern/index.js +4 -1
  185. package/modern/internals/components/PickersArrowSwitcher/index.js +2 -1
  186. package/modern/internals/components/{PickersTextField → PickersInput}/Outline.js +35 -19
  187. package/modern/internals/components/PickersInput/PickersFilledInput.js +165 -0
  188. package/modern/internals/components/{PickersTextField → PickersInput}/PickersInput.js +78 -106
  189. package/modern/internals/components/PickersInput/PickersInput.types.js +1 -0
  190. package/modern/internals/components/PickersInput/PickersOutlinedInput.js +117 -0
  191. package/modern/internals/components/PickersInput/PickersStandardInput.js +123 -0
  192. package/modern/internals/components/PickersInput/index.js +3 -0
  193. package/modern/internals/components/PickersInput/pickersInputClasses.js +18 -0
  194. package/modern/internals/components/PickersTextField/PickersTextField.js +15 -6
  195. package/modern/internals/components/PickersTextField/pickersTextFieldClasses.js +3 -6
  196. package/modern/internals/hooks/useDesktopPicker/useDesktopPicker.js +2 -0
  197. package/modern/internals/hooks/useField/useField.js +11 -4
  198. package/modern/internals/hooks/useField/useField.utils.js +24 -4
  199. package/modern/internals/hooks/useField/useFieldState.js +7 -3
  200. package/modern/internals/hooks/useMobilePicker/useMobilePicker.js +3 -1
  201. package/modern/internals/index.js +1 -0
  202. package/modern/internals/utils/convertFieldResponseIntoMuiTextFieldProps.js +26 -0
  203. package/modern/locales/ruRU.js +1 -2
  204. package/node/DateField/DateField.js +18 -51
  205. package/node/DateField/useDateField.js +1 -5
  206. package/node/DatePicker/DatePicker.js +5 -1
  207. package/node/DateTimeField/DateTimeField.js +18 -51
  208. package/node/DateTimeField/useDateTimeField.js +1 -5
  209. package/node/DateTimePicker/DateTimePicker.js +5 -1
  210. package/node/DesktopDatePicker/DesktopDatePicker.js +10 -5
  211. package/node/DesktopDateTimePicker/DesktopDateTimePicker.js +5 -1
  212. package/node/DesktopTimePicker/DesktopTimePicker.js +5 -1
  213. package/node/MobileDatePicker/MobileDatePicker.js +10 -5
  214. package/node/MobileDateTimePicker/MobileDateTimePicker.js +5 -1
  215. package/node/MobileTimePicker/MobileTimePicker.js +5 -1
  216. package/node/PickersSectionList/PickersSectionList.js +228 -0
  217. package/node/PickersSectionList/index.js +49 -0
  218. package/node/PickersSectionList/pickersSectionListClasses.js +14 -0
  219. package/node/StaticDatePicker/StaticDatePicker.js +2 -2
  220. package/node/TimeField/TimeField.js +18 -51
  221. package/node/TimeField/useTimeField.js +1 -5
  222. package/node/TimePicker/TimePicker.js +5 -1
  223. package/node/hooks/useClearableField.js +33 -34
  224. package/node/index.js +13 -1
  225. package/node/internals/components/PickersArrowSwitcher/index.js +14 -1
  226. package/node/internals/components/{PickersTextField → PickersInput}/Outline.js +35 -19
  227. package/node/internals/components/PickersInput/PickersFilledInput.js +174 -0
  228. package/node/internals/components/{PickersTextField → PickersInput}/PickersInput.js +80 -108
  229. package/node/internals/components/PickersInput/PickersInput.types.js +5 -0
  230. package/node/internals/components/PickersInput/PickersOutlinedInput.js +125 -0
  231. package/node/internals/components/PickersInput/PickersStandardInput.js +132 -0
  232. package/node/internals/components/PickersInput/index.js +32 -0
  233. package/node/internals/components/PickersInput/pickersInputClasses.js +29 -0
  234. package/node/internals/components/PickersTextField/PickersTextField.js +15 -6
  235. package/node/internals/components/PickersTextField/pickersTextFieldClasses.js +6 -9
  236. package/node/internals/hooks/useDesktopPicker/useDesktopPicker.js +2 -0
  237. package/node/internals/hooks/useField/useField.js +11 -4
  238. package/node/internals/hooks/useField/useField.utils.js +24 -4
  239. package/node/internals/hooks/useField/useFieldState.js +7 -3
  240. package/node/internals/hooks/useMobilePicker/useMobilePicker.js +3 -1
  241. package/node/internals/index.js +7 -0
  242. package/node/internals/utils/convertFieldResponseIntoMuiTextFieldProps.js +34 -0
  243. package/node/locales/ruRU.js +1 -2
  244. package/package.json +5 -5
  245. package/themeAugmentation/overrides.d.ts +5 -7
  246. package/themeAugmentation/props.d.ts +6 -8
  247. package/internals/components/PickersTextField/PickersInput.d.ts +0 -3
  248. package/internals/components/PickersTextField/PickersInput.types.d.ts +0 -45
  249. /package/{internals/components/PickersTextField/PickersInput.types.js → PickersSectionList/PickersSectionList.types.js} +0 -0
  250. /package/{legacy/internals/components/PickersTextField → internals/components/PickersInput}/PickersInput.types.js +0 -0
  251. /package/{modern/internals/components/PickersTextField/PickersInput.types.js → legacy/PickersSectionList/PickersSectionList.types.js} +0 -0
  252. /package/node/{internals/components/PickersTextField/PickersInput.types.js → PickersSectionList/PickersSectionList.types.js} +0 -0
@@ -1,7 +1,7 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
3
3
  import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
4
- var _excluded = ["onClick", "onKeyDown", "onFocus", "onBlur", "onMouseUp", "onPaste", "error", "clearable", "onClear", "disabled"];
4
+ var _excluded = ["inputRef", "onClick", "onKeyDown", "onFocus", "onBlur", "onMouseUp", "onPaste", "error", "clearable", "onClear", "disabled"];
5
5
  import * as React from 'react';
6
6
  import useEnhancedEffect from '@mui/utils/useEnhancedEffect';
7
7
  import useEventCallback from '@mui/utils/useEventCallback';
@@ -27,14 +27,14 @@ export var useField = function useField(params) {
27
27
  sectionsValueBoundaries = _useFieldState.sectionsValueBoundaries,
28
28
  placeholder = _useFieldState.placeholder,
29
29
  timezone = _useFieldState.timezone;
30
- var inputRefProp = params.inputRef,
31
- internalProps = params.internalProps,
30
+ var internalProps = params.internalProps,
32
31
  _params$internalProps = params.internalProps,
33
32
  _params$internalProps2 = _params$internalProps.readOnly,
34
33
  readOnly = _params$internalProps2 === void 0 ? false : _params$internalProps2,
35
34
  unstableFieldRef = _params$internalProps.unstableFieldRef,
36
35
  minutesStep = _params$internalProps.minutesStep,
37
36
  _params$forwardedProp = params.forwardedProps,
37
+ inputRefProp = _params$forwardedProp.inputRef,
38
38
  onClick = _params$forwardedProp.onClick,
39
39
  onKeyDown = _params$forwardedProp.onKeyDown,
40
40
  onFocus = _params$forwardedProp.onFocus,
@@ -152,7 +152,14 @@ export var useField = function useField(params) {
152
152
  var digitsAndLetterOnly = /^(([a-zA-Z]+)|)([0-9]+)(([a-zA-Z]+)|)$/.test(pastedValue);
153
153
  var isValidPastedValue = activeSection.contentType === 'letter' && lettersOnly || activeSection.contentType === 'digit' && digitsOnly || activeSection.contentType === 'digit-with-letter' && digitsAndLetterOnly;
154
154
  if (isValidPastedValue) {
155
- // Early return to let the paste update section, value
155
+ resetCharacterQuery();
156
+ updateSectionValue({
157
+ activeSection: activeSection,
158
+ newSectionValue: pastedValue,
159
+ shouldGoToNextSection: true
160
+ });
161
+ // prevent default to avoid the input change handler being called
162
+ event.preventDefault();
156
163
  return;
157
164
  }
158
165
  if (lettersOnly || digitsOnly) {
@@ -455,7 +462,7 @@ export var useField = function useField(params) {
455
462
  onMouseUp: handleInputMouseUp,
456
463
  onClear: handleClearValue,
457
464
  error: inputError,
458
- ref: handleRef,
465
+ inputRef: handleRef,
459
466
  clearable: Boolean(clearable && !areAllSectionsEmpty && !readOnly && !disabled)
460
467
  });
461
468
  };
@@ -202,7 +202,7 @@ export var addPositionPropertiesToSections = function addPositionPropertiesToSec
202
202
 
203
203
  // The ...InInput values consider the unicode characters but do include them in their indexes
204
204
  var cleanedValue = cleanString(renderedValue);
205
- var startInInput = positionInInput + renderedValue.indexOf(cleanedValue[0]) + section.startSeparator.length;
205
+ var startInInput = positionInInput + (cleanedValue === '' ? 0 : renderedValue.indexOf(cleanedValue[0])) + section.startSeparator.length;
206
206
  var endInInput = startInInput + cleanedValue.length;
207
207
  newSections.push(_extends({}, section, {
208
208
  start: position,
@@ -444,6 +444,21 @@ export var splitFormatIntoSections = function splitFormatIntoSections(utils, tim
444
444
  _loop(i);
445
445
  }
446
446
  commitToken(currentTokenValue);
447
+ if (sections.length === 0 && startSeparator.length > 0) {
448
+ sections.push({
449
+ type: 'empty',
450
+ contentType: 'letter',
451
+ maxLength: null,
452
+ format: '',
453
+ value: '',
454
+ placeholder: '',
455
+ hasLeadingZerosInFormat: false,
456
+ hasLeadingZerosInInput: false,
457
+ startSeparator: startSeparator,
458
+ endSeparator: '',
459
+ modified: false
460
+ });
461
+ }
447
462
  return sections.map(function (section) {
448
463
  var cleanSeparator = function cleanSeparator(separator) {
449
464
  var cleanedSeparator = separator;
@@ -594,6 +609,12 @@ export var getSectionsBoundaries = function getSectionsBoundaries(utils, timezon
594
609
  minimum: 0,
595
610
  maximum: 0
596
611
  };
612
+ },
613
+ empty: function empty() {
614
+ return {
615
+ minimum: 0,
616
+ maximum: 0
617
+ };
597
618
  }
598
619
  };
599
620
  };
@@ -601,7 +622,7 @@ var warnedOnceInvalidSection = false;
601
622
  export var validateSections = function validateSections(sections, valueType) {
602
623
  if (process.env.NODE_ENV !== 'production') {
603
624
  if (!warnedOnceInvalidSection) {
604
- var supportedSections = [];
625
+ var supportedSections = ['empty'];
605
626
  if (['date', 'date-time'].includes(valueType)) {
606
627
  supportedSections.push('weekDay', 'day', 'month', 'year');
607
628
  }
@@ -612,7 +633,7 @@ export var validateSections = function validateSections(sections, valueType) {
612
633
  return !supportedSections.includes(section.type);
613
634
  });
614
635
  if (invalidSection) {
615
- console.warn("MUI: The field component you are using is not compatible with the \"".concat(invalidSection.type, " date section."), "The supported date sections are [\"".concat(supportedSections.join('", "'), "\"]`."));
636
+ console.warn("MUI: The field component you are using is not compatible with the \"".concat(invalidSection.type, "\" date section."), "The supported date sections are [\"".concat(supportedSections.join('", "'), "\"]`."));
616
637
  warnedOnceInvalidSection = true;
617
638
  }
618
639
  }
@@ -679,7 +700,8 @@ var reliableSectionModificationOrder = {
679
700
  hours: 5,
680
701
  minutes: 6,
681
702
  seconds: 7,
682
- meridiem: 8
703
+ meridiem: 8,
704
+ empty: 9
683
705
  };
684
706
  export var mergeDateIntoReferenceDate = function mergeDateIntoReferenceDate(utils, timezone, dateToTransferFrom, sections, referenceDate, shouldLimitToEditedSections) {
685
707
  return (
@@ -111,7 +111,8 @@ export var useFieldState = function useFieldState(params) {
111
111
  if (typeof selectedSections === 'number') {
112
112
  return {
113
113
  startIndex: selectedSections,
114
- endIndex: selectedSections
114
+ endIndex: selectedSections,
115
+ shouldSelectBoundarySelectors: state.sections[selectedSections].type === 'empty'
115
116
  };
116
117
  }
117
118
  if (typeof selectedSections === 'string') {
@@ -120,10 +121,13 @@ export var useFieldState = function useFieldState(params) {
120
121
  });
121
122
  return {
122
123
  startIndex: selectedSectionIndex,
123
- endIndex: selectedSectionIndex
124
+ endIndex: selectedSectionIndex,
125
+ shouldSelectBoundarySelectors: state.sections[selectedSectionIndex].type === 'empty'
124
126
  };
125
127
  }
126
- return selectedSections;
128
+ return _extends({}, selectedSections, {
129
+ shouldSelectBoundarySelectors: selectedSections.startIndex === selectedSections.endIndex && state.sections[selectedSections.startIndex].type === 'empty'
130
+ });
127
131
  }, [selectedSections, state.sections]);
128
132
  var publishValue = function publishValue(_ref) {
129
133
  var value = _ref.value,
@@ -31,6 +31,7 @@ export var useMobilePicker = function useMobilePicker(_ref) {
31
31
  format = props.format,
32
32
  formatDensity = props.formatDensity,
33
33
  timezone = props.timezone,
34
+ name = props.name,
34
35
  label = props.label,
35
36
  inputRef = props.inputRef,
36
37
  readOnly = props.readOnly,
@@ -69,7 +70,8 @@ export var useMobilePicker = function useMobilePicker(_ref) {
69
70
  format: format,
70
71
  formatDensity: formatDensity,
71
72
  timezone: timezone,
72
- label: label
73
+ label: label,
74
+ name: name
73
75
  }),
74
76
  ownerState: props
75
77
  });
@@ -16,6 +16,7 @@ export { useStaticPicker } from './hooks/useStaticPicker';
16
16
  export { useLocalizationContext, useDefaultDates, useUtils, useLocaleText, useNow } from './hooks/useUtils';
17
17
  export { useValidation } from './hooks/useValidation';
18
18
  export { usePreviousMonthDisabled, useNextMonthDisabled } from './hooks/date-helpers-hooks';
19
+ export { convertFieldResponseIntoMuiTextFieldProps } from './utils/convertFieldResponseIntoMuiTextFieldProps';
19
20
  export { applyDefaultDate, replaceInvalidDateByNull, areDatesEqual, getTodayDate } from './utils/date-utils';
20
21
  export { splitFieldInternalAndForwardedProps } from './utils/fields';
21
22
  export { getDefaultReferenceDate } from './utils/getDefaultReferenceDate';
@@ -0,0 +1,24 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
3
+ var _excluded = ["onPaste", "onKeyDown", "inputMode", "readOnly", "InputProps", "inputProps", "inputRef"];
4
+ export var convertFieldResponseIntoMuiTextFieldProps = function convertFieldResponseIntoMuiTextFieldProps(fieldResponse) {
5
+ var onPaste = fieldResponse.onPaste,
6
+ onKeyDown = fieldResponse.onKeyDown,
7
+ inputMode = fieldResponse.inputMode,
8
+ readOnly = fieldResponse.readOnly,
9
+ InputProps = fieldResponse.InputProps,
10
+ inputProps = fieldResponse.inputProps,
11
+ inputRef = fieldResponse.inputRef,
12
+ other = _objectWithoutProperties(fieldResponse, _excluded);
13
+ return _extends({}, other, {
14
+ InputProps: _extends({}, InputProps != null ? InputProps : {}, {
15
+ readOnly: readOnly
16
+ }),
17
+ inputProps: _extends({}, inputProps != null ? inputProps : {}, {
18
+ inputMode: inputMode,
19
+ onPaste: onPaste,
20
+ onKeyDown: onKeyDown,
21
+ ref: inputRef
22
+ })
23
+ });
24
+ };
@@ -62,8 +62,7 @@ var ruRUPickers = {
62
62
  openTimePickerDialogue: function openTimePickerDialogue(value, utils) {
63
63
  return value !== null && utils.isValid(value) ? "\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0432\u0440\u0435\u043C\u044F, \u0432\u044B\u0431\u0440\u0430\u043D\u043E \u0432\u0440\u0435\u043C\u044F ".concat(utils.format(value, 'fullTime')) : 'Выберите время';
64
64
  },
65
- // fieldClearLabel: 'Clear value',
66
-
65
+ fieldClearLabel: 'Очистить значение',
67
66
  // Table labels
68
67
  timeTableLabel: 'выбрать время',
69
68
  dateTableLabel: 'выбрать дату',
package/locales/ruRU.js CHANGED
@@ -42,8 +42,7 @@ const ruRUPickers = {
42
42
  // Open picker labels
43
43
  openDatePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Выберите дату, выбрана дата ${utils.format(value, 'fullDate')}` : 'Выберите дату',
44
44
  openTimePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Выберите время, выбрано время ${utils.format(value, 'fullTime')}` : 'Выберите время',
45
- // fieldClearLabel: 'Clear value',
46
-
45
+ fieldClearLabel: 'Очистить значение',
47
46
  // Table labels
48
47
  timeTableLabel: 'выбрать время',
49
48
  dateTableLabel: 'выбрать дату',
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import type { BaseFieldProps } from '../internals/models/fields';
3
- export type FieldSectionType = 'year' | 'month' | 'day' | 'weekDay' | 'hours' | 'minutes' | 'seconds' | 'meridiem';
3
+ export type FieldSectionType = 'year' | 'month' | 'day' | 'weekDay' | 'hours' | 'minutes' | 'seconds' | 'meridiem' | 'empty';
4
4
  export type FieldSectionContentType = 'digit' | 'digit-with-letter' | 'letter';
5
5
  export type FieldValueType = 'date' | 'time' | 'date-time';
6
6
  export interface FieldSection {
@@ -112,6 +112,7 @@ export type FieldSelectedSections = number | FieldSectionType | null | 'all' | {
112
112
  export interface BaseSingleInputFieldProps<TValue, TDate, TSection extends FieldSection, TError> extends BaseFieldProps<TValue, TDate, TSection, TError> {
113
113
  label?: React.ReactNode;
114
114
  id?: string;
115
+ name?: string;
115
116
  inputRef?: React.Ref<HTMLInputElement>;
116
117
  onKeyDown?: React.KeyboardEventHandler;
117
118
  onBlur?: React.FocusEventHandler;
@@ -1,8 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
- const _excluded = ["slots", "slotProps", "InputProps", "inputProps"],
4
- _excluded2 = ["inputRef"],
5
- _excluded3 = ["ref", "onPaste", "onKeyDown", "inputMode", "readOnly", "clearable", "onClear"];
3
+ const _excluded = ["slots", "slotProps", "InputProps", "inputProps"];
6
4
  import * as React from 'react';
7
5
  import PropTypes from 'prop-types';
8
6
  import MuiTextField from '@mui/material/TextField';
@@ -11,6 +9,7 @@ import { useSlotProps } from '@mui/base/utils';
11
9
  import { refType } from '@mui/utils';
12
10
  import { useDateField } from './useDateField';
13
11
  import { useClearableField } from '../hooks';
12
+ import { convertFieldResponseIntoMuiTextFieldProps } from '../internals/utils/convertFieldResponseIntoMuiTextFieldProps';
14
13
  import { jsx as _jsx } from "react/jsx-runtime";
15
14
  /**
16
15
  * Demos:
@@ -22,7 +21,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
22
21
  *
23
22
  * - [DateField API](https://mui.com/x/api/date-pickers/date-field/)
24
23
  */
25
- const DateField = /*#__PURE__*/React.forwardRef(function DateField(inProps, ref) {
24
+ const DateField = /*#__PURE__*/React.forwardRef(function DateField(inProps, inRef) {
26
25
  const themeProps = useThemeProps({
27
26
  props: inProps,
28
27
  name: 'MuiDateField'
@@ -36,58 +35,26 @@ const DateField = /*#__PURE__*/React.forwardRef(function DateField(inProps, ref)
36
35
  other = _objectWithoutPropertiesLoose(themeProps, _excluded);
37
36
  const ownerState = themeProps;
38
37
  const TextField = slots?.textField ?? MuiTextField;
39
- const _useSlotProps = useSlotProps({
40
- elementType: TextField,
41
- externalSlotProps: slotProps?.textField,
42
- externalForwardedProps: other,
43
- ownerState
44
- }),
45
- {
46
- inputRef: externalInputRef
47
- } = _useSlotProps,
48
- textFieldProps = _objectWithoutPropertiesLoose(_useSlotProps, _excluded2);
38
+ const textFieldProps = useSlotProps({
39
+ elementType: TextField,
40
+ externalSlotProps: slotProps?.textField,
41
+ externalForwardedProps: other,
42
+ additionalProps: {
43
+ ref: inRef
44
+ },
45
+ ownerState
46
+ });
49
47
 
50
48
  // TODO: Remove when mui/material-ui#35088 will be merged
51
49
  textFieldProps.inputProps = _extends({}, inputProps, textFieldProps.inputProps);
52
50
  textFieldProps.InputProps = _extends({}, InputProps, textFieldProps.InputProps);
53
- const _useDateField = useDateField({
54
- props: textFieldProps,
55
- inputRef: externalInputRef
56
- }),
57
- {
58
- ref: inputRef,
59
- onPaste,
60
- onKeyDown,
61
- inputMode,
62
- readOnly,
63
- clearable,
64
- onClear
65
- } = _useDateField,
66
- fieldProps = _objectWithoutPropertiesLoose(_useDateField, _excluded3);
67
- const {
68
- InputProps: ProcessedInputProps,
69
- fieldProps: processedFieldProps
70
- } = useClearableField({
71
- onClear,
72
- clearable,
73
- fieldProps,
74
- InputProps: fieldProps.InputProps,
51
+ const fieldResponse = useDateField(textFieldProps);
52
+ const convertedFieldResponse = convertFieldResponseIntoMuiTextFieldProps(fieldResponse);
53
+ const processedFieldProps = useClearableField(_extends({}, convertedFieldResponse, {
75
54
  slots,
76
55
  slotProps
77
- });
78
- return /*#__PURE__*/_jsx(TextField, _extends({
79
- ref: ref
80
- }, processedFieldProps, {
81
- InputProps: _extends({}, ProcessedInputProps, {
82
- readOnly
83
- }),
84
- inputProps: _extends({}, fieldProps.inputProps, {
85
- inputMode,
86
- onPaste,
87
- onKeyDown,
88
- ref: inputRef
89
- })
90
56
  }));
57
+ return /*#__PURE__*/_jsx(TextField, _extends({}, processedFieldProps));
91
58
  });
92
59
  process.env.NODE_ENV !== "production" ? DateField.propTypes = {
93
60
  // ----------------------------- Warning --------------------------------
@@ -265,7 +232,7 @@ process.env.NODE_ENV !== "production" ? DateField.propTypes = {
265
232
  * 4. If `null` is provided, no section will be selected
266
233
  * If not provided, the selected sections will be handled internally.
267
234
  */
268
- selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'weekDay', 'year']), PropTypes.number, PropTypes.shape({
235
+ selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'empty', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'weekDay', 'year']), PropTypes.number, PropTypes.shape({
269
236
  endIndex: PropTypes.number.isRequired,
270
237
  startIndex: PropTypes.number.isRequired
271
238
  })]),
@@ -16,17 +16,13 @@ const useDefaultizedDateField = props => {
16
16
  maxDate: applyDefaultDate(utils, props.maxDate, defaultDates.maxDate)
17
17
  });
18
18
  };
19
- export const useDateField = ({
20
- props: inProps,
21
- inputRef
22
- }) => {
19
+ export const useDateField = inProps => {
23
20
  const props = useDefaultizedDateField(inProps);
24
21
  const {
25
22
  forwardedProps,
26
23
  internalProps
27
24
  } = splitFieldInternalAndForwardedProps(props, 'date');
28
25
  return useField({
29
- inputRef,
30
26
  forwardedProps,
31
27
  internalProps,
32
28
  valueManager: singleItemValueManager,
@@ -160,6 +160,10 @@ process.env.NODE_ENV !== "production" ? DatePicker.propTypes = {
160
160
  * @default 3
161
161
  */
162
162
  monthsPerRow: PropTypes.oneOf([3, 4]),
163
+ /**
164
+ * Name attribute used by the `input` element in the Field.
165
+ */
166
+ name: PropTypes.string,
163
167
  /**
164
168
  * Callback fired when the value is accepted.
165
169
  * @template TValue The value type. Will be either the same type as `value` or `null`. Can be in `[start, end]` format in case of range value.
@@ -258,7 +262,7 @@ process.env.NODE_ENV !== "production" ? DatePicker.propTypes = {
258
262
  * 4. If `null` is provided, no section will be selected
259
263
  * If not provided, the selected sections will be handled internally.
260
264
  */
261
- selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'weekDay', 'year']), PropTypes.number, PropTypes.shape({
265
+ selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'empty', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'weekDay', 'year']), PropTypes.number, PropTypes.shape({
262
266
  endIndex: PropTypes.number.isRequired,
263
267
  startIndex: PropTypes.number.isRequired
264
268
  })]),
@@ -1,8 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
- const _excluded = ["slots", "slotProps", "InputProps", "inputProps"],
4
- _excluded2 = ["inputRef"],
5
- _excluded3 = ["ref", "onPaste", "onKeyDown", "inputMode", "readOnly", "clearable", "onClear"];
3
+ const _excluded = ["slots", "slotProps", "InputProps", "inputProps"];
6
4
  import * as React from 'react';
7
5
  import PropTypes from 'prop-types';
8
6
  import MuiTextField from '@mui/material/TextField';
@@ -11,6 +9,7 @@ import { useSlotProps } from '@mui/base/utils';
11
9
  import { refType } from '@mui/utils';
12
10
  import { useDateTimeField } from './useDateTimeField';
13
11
  import { useClearableField } from '../hooks';
12
+ import { convertFieldResponseIntoMuiTextFieldProps } from '../internals/utils/convertFieldResponseIntoMuiTextFieldProps';
14
13
  import { jsx as _jsx } from "react/jsx-runtime";
15
14
  /**
16
15
  * Demos:
@@ -22,7 +21,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
22
21
  *
23
22
  * - [DateTimeField API](https://mui.com/x/api/date-pickers/date-time-field/)
24
23
  */
25
- const DateTimeField = /*#__PURE__*/React.forwardRef(function DateTimeField(inProps, ref) {
24
+ const DateTimeField = /*#__PURE__*/React.forwardRef(function DateTimeField(inProps, inRef) {
26
25
  const themeProps = useThemeProps({
27
26
  props: inProps,
28
27
  name: 'MuiDateTimeField'
@@ -36,58 +35,26 @@ const DateTimeField = /*#__PURE__*/React.forwardRef(function DateTimeField(inPro
36
35
  other = _objectWithoutPropertiesLoose(themeProps, _excluded);
37
36
  const ownerState = themeProps;
38
37
  const TextField = slots?.textField ?? MuiTextField;
39
- const _useSlotProps = useSlotProps({
40
- elementType: TextField,
41
- externalSlotProps: slotProps?.textField,
42
- externalForwardedProps: other,
43
- ownerState
44
- }),
45
- {
46
- inputRef: externalInputRef
47
- } = _useSlotProps,
48
- textFieldProps = _objectWithoutPropertiesLoose(_useSlotProps, _excluded2);
38
+ const textFieldProps = useSlotProps({
39
+ elementType: TextField,
40
+ externalSlotProps: slotProps?.textField,
41
+ externalForwardedProps: other,
42
+ ownerState,
43
+ additionalProps: {
44
+ ref: inRef
45
+ }
46
+ });
49
47
 
50
48
  // TODO: Remove when mui/material-ui#35088 will be merged
51
49
  textFieldProps.inputProps = _extends({}, inputProps, textFieldProps.inputProps);
52
50
  textFieldProps.InputProps = _extends({}, InputProps, textFieldProps.InputProps);
53
- const _useDateTimeField = useDateTimeField({
54
- props: textFieldProps,
55
- inputRef: externalInputRef
56
- }),
57
- {
58
- ref: inputRef,
59
- onPaste,
60
- onKeyDown,
61
- inputMode,
62
- readOnly,
63
- clearable,
64
- onClear
65
- } = _useDateTimeField,
66
- fieldProps = _objectWithoutPropertiesLoose(_useDateTimeField, _excluded3);
67
- const {
68
- InputProps: ProcessedInputProps,
69
- fieldProps: processedFieldProps
70
- } = useClearableField({
71
- onClear,
72
- clearable,
73
- fieldProps,
74
- InputProps: fieldProps.InputProps,
51
+ const fieldResponse = useDateTimeField(textFieldProps);
52
+ const convertedFieldResponse = convertFieldResponseIntoMuiTextFieldProps(fieldResponse);
53
+ const processedFieldProps = useClearableField(_extends({}, convertedFieldResponse, {
75
54
  slots,
76
55
  slotProps
77
- });
78
- return /*#__PURE__*/_jsx(TextField, _extends({
79
- ref: ref
80
- }, processedFieldProps, {
81
- InputProps: _extends({}, ProcessedInputProps, {
82
- readOnly
83
- }),
84
- inputProps: _extends({}, fieldProps.inputProps, {
85
- inputMode,
86
- onPaste,
87
- onKeyDown,
88
- ref: inputRef
89
- })
90
56
  }));
57
+ return /*#__PURE__*/_jsx(TextField, _extends({}, processedFieldProps));
91
58
  });
92
59
  process.env.NODE_ENV !== "production" ? DateTimeField.propTypes = {
93
60
  // ----------------------------- Warning --------------------------------
@@ -298,7 +265,7 @@ process.env.NODE_ENV !== "production" ? DateTimeField.propTypes = {
298
265
  * 4. If `null` is provided, no section will be selected
299
266
  * If not provided, the selected sections will be handled internally.
300
267
  */
301
- selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'weekDay', 'year']), PropTypes.number, PropTypes.shape({
268
+ selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'empty', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'weekDay', 'year']), PropTypes.number, PropTypes.shape({
302
269
  endIndex: PropTypes.number.isRequired,
303
270
  startIndex: PropTypes.number.isRequired
304
271
  })]),
@@ -21,17 +21,13 @@ const useDefaultizedDateTimeField = props => {
21
21
  maxTime: props.maxDateTime ?? props.maxTime
22
22
  });
23
23
  };
24
- export const useDateTimeField = ({
25
- props: inProps,
26
- inputRef
27
- }) => {
24
+ export const useDateTimeField = inProps => {
28
25
  const props = useDefaultizedDateTimeField(inProps);
29
26
  const {
30
27
  forwardedProps,
31
28
  internalProps
32
29
  } = splitFieldInternalAndForwardedProps(props, 'date-time');
33
30
  return useField({
34
- inputRef,
35
31
  forwardedProps,
36
32
  internalProps,
37
33
  valueManager: singleItemValueManager,
@@ -198,6 +198,10 @@ process.env.NODE_ENV !== "production" ? DateTimePicker.propTypes = {
198
198
  * @default 3
199
199
  */
200
200
  monthsPerRow: PropTypes.oneOf([3, 4]),
201
+ /**
202
+ * Name attribute used by the `input` element in the Field.
203
+ */
204
+ name: PropTypes.string,
201
205
  /**
202
206
  * Callback fired when the value is accepted.
203
207
  * @template TValue The value type. Will be either the same type as `value` or `null`. Can be in `[start, end]` format in case of range value.
@@ -296,7 +300,7 @@ process.env.NODE_ENV !== "production" ? DateTimePicker.propTypes = {
296
300
  * 4. If `null` is provided, no section will be selected
297
301
  * If not provided, the selected sections will be handled internally.
298
302
  */
299
- selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'weekDay', 'year']), PropTypes.number, PropTypes.shape({
303
+ selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'empty', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'weekDay', 'year']), PropTypes.number, PropTypes.shape({
300
304
  endIndex: PropTypes.number.isRequired,
301
305
  startIndex: PropTypes.number.isRequired
302
306
  })]),
@@ -5,7 +5,8 @@ import { resolveComponentProps } from '@mui/base/utils';
5
5
  import { refType } from '@mui/utils';
6
6
  import { singleItemValueManager } from '../internals/utils/valueManagers';
7
7
  import { useDatePickerDefaultizedProps } from '../DatePicker/shared';
8
- import { useLocaleText, useUtils, validateDate } from '../internals';
8
+ import { useLocaleText, useUtils } from '../internals/hooks/useUtils';
9
+ import { validateDate } from '../internals/utils/validation/validateDate';
9
10
  import { useDesktopPicker } from '../internals/hooks/useDesktopPicker';
10
11
  import { CalendarIcon } from '../icons';
11
12
  import { DateField } from '../DateField';
@@ -174,6 +175,10 @@ DesktopDatePicker.propTypes = {
174
175
  * @default 3
175
176
  */
176
177
  monthsPerRow: PropTypes.oneOf([3, 4]),
178
+ /**
179
+ * Name attribute used by the `input` element in the Field.
180
+ */
181
+ name: PropTypes.string,
177
182
  /**
178
183
  * Callback fired when the value is accepted.
179
184
  * @template TValue The value type. Will be either the same type as `value` or `null`. Can be in `[start, end]` format in case of range value.
@@ -272,7 +277,7 @@ DesktopDatePicker.propTypes = {
272
277
  * 4. If `null` is provided, no section will be selected
273
278
  * If not provided, the selected sections will be handled internally.
274
279
  */
275
- selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'weekDay', 'year']), PropTypes.number, PropTypes.shape({
280
+ selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'empty', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'weekDay', 'year']), PropTypes.number, PropTypes.shape({
276
281
  endIndex: PropTypes.number.isRequired,
277
282
  startIndex: PropTypes.number.isRequired
278
283
  })]),
@@ -251,6 +251,10 @@ DesktopDateTimePicker.propTypes = {
251
251
  * @default 3
252
252
  */
253
253
  monthsPerRow: PropTypes.oneOf([3, 4]),
254
+ /**
255
+ * Name attribute used by the `input` element in the Field.
256
+ */
257
+ name: PropTypes.string,
254
258
  /**
255
259
  * Callback fired when the value is accepted.
256
260
  * @template TValue The value type. Will be either the same type as `value` or `null`. Can be in `[start, end]` format in case of range value.
@@ -349,7 +353,7 @@ DesktopDateTimePicker.propTypes = {
349
353
  * 4. If `null` is provided, no section will be selected
350
354
  * If not provided, the selected sections will be handled internally.
351
355
  */
352
- selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'weekDay', 'year']), PropTypes.number, PropTypes.shape({
356
+ selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'empty', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'weekDay', 'year']), PropTypes.number, PropTypes.shape({
353
357
  endIndex: PropTypes.number.isRequired,
354
358
  startIndex: PropTypes.number.isRequired
355
359
  })]),
@@ -185,6 +185,10 @@ DesktopTimePicker.propTypes = {
185
185
  * @default 1
186
186
  */
187
187
  minutesStep: PropTypes.number,
188
+ /**
189
+ * Name attribute used by the `input` element in the Field.
190
+ */
191
+ name: PropTypes.string,
188
192
  /**
189
193
  * Callback fired when the value is accepted.
190
194
  * @template TValue The value type. Will be either the same type as `value` or `null`. Can be in `[start, end]` format in case of range value.
@@ -265,7 +269,7 @@ DesktopTimePicker.propTypes = {
265
269
  * 4. If `null` is provided, no section will be selected
266
270
  * If not provided, the selected sections will be handled internally.
267
271
  */
268
- selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'weekDay', 'year']), PropTypes.number, PropTypes.shape({
272
+ selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'empty', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'weekDay', 'year']), PropTypes.number, PropTypes.shape({
269
273
  endIndex: PropTypes.number.isRequired,
270
274
  startIndex: PropTypes.number.isRequired
271
275
  })]),
@@ -5,7 +5,8 @@ import { resolveComponentProps } from '@mui/base/utils';
5
5
  import { refType } from '@mui/utils';
6
6
  import { useMobilePicker } from '../internals/hooks/useMobilePicker';
7
7
  import { useDatePickerDefaultizedProps } from '../DatePicker/shared';
8
- import { useLocaleText, useUtils, validateDate } from '../internals';
8
+ import { useUtils, useLocaleText } from '../internals/hooks/useUtils';
9
+ import { validateDate } from '../internals/utils/validation/validateDate';
9
10
  import { DateField } from '../DateField';
10
11
  import { extractValidationProps } from '../internals/utils/validation/extractValidationProps';
11
12
  import { singleItemValueManager } from '../internals/utils/valueManagers';
@@ -171,6 +172,10 @@ MobileDatePicker.propTypes = {
171
172
  * @default 3
172
173
  */
173
174
  monthsPerRow: PropTypes.oneOf([3, 4]),
175
+ /**
176
+ * Name attribute used by the `input` element in the Field.
177
+ */
178
+ name: PropTypes.string,
174
179
  /**
175
180
  * Callback fired when the value is accepted.
176
181
  * @template TValue The value type. Will be either the same type as `value` or `null`. Can be in `[start, end]` format in case of range value.
@@ -269,7 +274,7 @@ MobileDatePicker.propTypes = {
269
274
  * 4. If `null` is provided, no section will be selected
270
275
  * If not provided, the selected sections will be handled internally.
271
276
  */
272
- selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'weekDay', 'year']), PropTypes.number, PropTypes.shape({
277
+ selectedSections: PropTypes.oneOfType([PropTypes.oneOf(['all', 'day', 'empty', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'weekDay', 'year']), PropTypes.number, PropTypes.shape({
273
278
  endIndex: PropTypes.number.isRequired,
274
279
  startIndex: PropTypes.number.isRequired
275
280
  })]),