@mui/x-date-pickers 7.0.0-beta.7 → 7.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (209) hide show
  1. package/AdapterDateFns/AdapterDateFns.js +1 -1
  2. package/AdapterDateFnsBase/AdapterDateFnsBase.js +1 -2
  3. package/AdapterDateFnsJalali/AdapterDateFnsJalali.js +2 -4
  4. package/AdapterDateFnsV3/AdapterDateFnsV3.js +1 -1
  5. package/AdapterDayjs/AdapterDayjs.js +2 -4
  6. package/AdapterLuxon/AdapterLuxon.js +12 -9
  7. package/AdapterMoment/AdapterMoment.js +5 -6
  8. package/CHANGELOG.md +266 -12
  9. package/DateCalendar/DateCalendar.js +14 -16
  10. package/DateCalendar/DayCalendar.js +5 -6
  11. package/DateField/DateField.js +3 -4
  12. package/DatePicker/DatePicker.js +1 -1
  13. package/DatePicker/DatePickerToolbar.js +11 -6
  14. package/DatePicker/shared.d.ts +2 -1
  15. package/DatePicker/shared.js +3 -5
  16. package/DateTimeField/DateTimeField.js +3 -4
  17. package/DateTimePicker/DateTimePicker.js +1 -1
  18. package/DateTimePicker/DateTimePickerToolbar.js +98 -46
  19. package/DateTimePicker/shared.d.ts +2 -1
  20. package/DateTimePicker/shared.js +11 -13
  21. package/DayCalendarSkeleton/DayCalendarSkeleton.js +12 -8
  22. package/DesktopDatePicker/DesktopDatePicker.js +7 -11
  23. package/DesktopDateTimePicker/DesktopDateTimePicker.js +72 -37
  24. package/DesktopDateTimePicker/DesktopDateTimePickerLayout.d.ts +12 -0
  25. package/DesktopDateTimePicker/DesktopDateTimePickerLayout.js +101 -0
  26. package/DesktopDateTimePicker/index.d.ts +1 -0
  27. package/DesktopDateTimePicker/index.js +2 -1
  28. package/DesktopTimePicker/DesktopTimePicker.js +8 -12
  29. package/DigitalClock/DigitalClock.js +16 -9
  30. package/LocalizationProvider/LocalizationProvider.js +1 -2
  31. package/MobileDatePicker/MobileDatePicker.js +6 -10
  32. package/MobileDateTimePicker/MobileDateTimePicker.js +8 -12
  33. package/MobileTimePicker/MobileTimePicker.js +6 -10
  34. package/MonthCalendar/MonthCalendar.js +4 -4
  35. package/MonthCalendar/PickersMonth.js +13 -8
  36. package/MultiSectionDigitalClock/MultiSectionDigitalClock.js +1 -1
  37. package/MultiSectionDigitalClock/MultiSectionDigitalClock.utils.js +1 -1
  38. package/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +16 -9
  39. package/PickersActionBar/PickersActionBar.js +1 -1
  40. package/PickersCalendarHeader/PickersCalendarHeader.js +17 -14
  41. package/PickersDay/PickersDay.js +30 -15
  42. package/PickersLayout/PickersLayout.js +31 -17
  43. package/PickersLayout/usePickerLayout.js +8 -9
  44. package/PickersSectionList/PickersSectionList.js +9 -11
  45. package/PickersTextField/PickersFilledInput/PickersFilledInput.js +138 -74
  46. package/PickersTextField/PickersInput/PickersInput.js +77 -55
  47. package/PickersTextField/PickersInputBase/PickersInputBase.js +67 -28
  48. package/PickersTextField/PickersInputBase/PickersInputBase.types.d.ts +7 -0
  49. package/PickersTextField/PickersOutlinedInput/Outline.js +58 -41
  50. package/PickersTextField/PickersOutlinedInput/PickersOutlinedInput.js +33 -14
  51. package/README.md +1 -1
  52. package/StaticDatePicker/StaticDatePicker.js +4 -5
  53. package/StaticDateTimePicker/StaticDateTimePicker.js +6 -7
  54. package/StaticTimePicker/StaticTimePicker.js +3 -4
  55. package/TimeClock/Clock.js +48 -35
  56. package/TimeClock/ClockNumber.js +12 -7
  57. package/TimeClock/ClockPointer.js +23 -13
  58. package/TimeClock/TimeClock.js +1 -1
  59. package/TimeField/TimeField.js +2 -3
  60. package/TimePicker/TimePickerToolbar.js +25 -16
  61. package/TimePicker/shared.d.ts +2 -1
  62. package/TimePicker/shared.js +5 -7
  63. package/YearCalendar/PickersYear.js +12 -6
  64. package/YearCalendar/YearCalendar.js +5 -6
  65. package/hooks/useClearableField.js +6 -7
  66. package/index.js +1 -1
  67. package/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +19 -15
  68. package/internals/components/PickersModalDialog.js +6 -7
  69. package/internals/components/PickersPopper.js +25 -24
  70. package/internals/components/PickersToolbar.js +42 -24
  71. package/internals/hooks/date-helpers-hooks.js +1 -1
  72. package/internals/hooks/defaultizedFieldProps.js +15 -18
  73. package/internals/hooks/useClockReferenceDate.js +1 -1
  74. package/internals/hooks/useDesktopPicker/index.d.ts +1 -1
  75. package/internals/hooks/useDesktopPicker/useDesktopPicker.js +11 -12
  76. package/internals/hooks/useDesktopPicker/useDesktopPicker.types.d.ts +2 -2
  77. package/internals/hooks/useField/buildSectionsFromFormat.js +35 -31
  78. package/internals/hooks/useField/useField.js +6 -4
  79. package/internals/hooks/useField/useField.types.d.ts +1 -0
  80. package/internals/hooks/useField/useField.utils.js +4 -7
  81. package/internals/hooks/useField/useFieldCharacterEditing.js +1 -2
  82. package/internals/hooks/useField/useFieldState.js +1 -1
  83. package/internals/hooks/useField/useFieldV6TextField.js +17 -18
  84. package/internals/hooks/useField/useFieldV7TextField.js +9 -11
  85. package/internals/hooks/useMobilePicker/useMobilePicker.js +7 -8
  86. package/internals/hooks/useOpenState.js +1 -1
  87. package/internals/hooks/usePicker/index.d.ts +1 -0
  88. package/internals/hooks/usePicker/usePickerViews.d.ts +4 -2
  89. package/internals/hooks/usePicker/usePickerViews.js +1 -2
  90. package/internals/hooks/useStaticPicker/useStaticPicker.js +13 -17
  91. package/internals/hooks/useValueWithTimezone.js +5 -6
  92. package/internals/hooks/useViews.js +3 -4
  93. package/internals/index.d.ts +1 -1
  94. package/internals/models/validation.d.ts +1 -1
  95. package/internals/utils/convertFieldResponseIntoMuiTextFieldProps.js +3 -3
  96. package/internals/utils/date-time-utils.js +2 -5
  97. package/internals/utils/fields.js +1 -1
  98. package/internals/utils/getDefaultReferenceDate.js +2 -6
  99. package/internals/utils/views.js +1 -1
  100. package/locales/csCZ.js +1 -4
  101. package/locales/daDK.js +1 -4
  102. package/locales/deDE.js +1 -4
  103. package/locales/huHU.js +1 -4
  104. package/locales/itIT.js +16 -20
  105. package/locales/jaJP.js +1 -4
  106. package/locales/roRO.js +1 -4
  107. package/locales/skSK.js +1 -4
  108. package/locales/zhHK.js +14 -17
  109. package/modern/AdapterLuxon/AdapterLuxon.js +9 -4
  110. package/modern/DateCalendar/DateCalendar.js +1 -1
  111. package/modern/DateField/DateField.js +1 -1
  112. package/modern/DatePicker/DatePicker.js +1 -1
  113. package/modern/DatePicker/DatePickerToolbar.js +11 -6
  114. package/modern/DateTimeField/DateTimeField.js +1 -1
  115. package/modern/DateTimePicker/DateTimePicker.js +1 -1
  116. package/modern/DateTimePicker/DateTimePickerToolbar.js +97 -45
  117. package/modern/DayCalendarSkeleton/DayCalendarSkeleton.js +12 -8
  118. package/modern/DesktopDatePicker/DesktopDatePicker.js +1 -1
  119. package/modern/DesktopDateTimePicker/DesktopDateTimePicker.js +64 -25
  120. package/modern/DesktopDateTimePicker/DesktopDateTimePickerLayout.js +101 -0
  121. package/modern/DesktopDateTimePicker/index.js +2 -1
  122. package/modern/DigitalClock/DigitalClock.js +14 -6
  123. package/modern/MobileDatePicker/MobileDatePicker.js +1 -1
  124. package/modern/MobileDateTimePicker/MobileDateTimePicker.js +1 -1
  125. package/modern/MonthCalendar/PickersMonth.js +12 -6
  126. package/modern/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +13 -4
  127. package/modern/PickersCalendarHeader/PickersCalendarHeader.js +13 -9
  128. package/modern/PickersDay/PickersDay.js +30 -15
  129. package/modern/PickersLayout/PickersLayout.js +31 -17
  130. package/modern/PickersTextField/PickersFilledInput/PickersFilledInput.js +137 -72
  131. package/modern/PickersTextField/PickersInput/PickersInput.js +76 -54
  132. package/modern/PickersTextField/PickersInputBase/PickersInputBase.js +64 -24
  133. package/modern/PickersTextField/PickersOutlinedInput/Outline.js +58 -41
  134. package/modern/PickersTextField/PickersOutlinedInput/PickersOutlinedInput.js +31 -12
  135. package/modern/StaticDatePicker/StaticDatePicker.js +1 -1
  136. package/modern/StaticDateTimePicker/StaticDateTimePicker.js +1 -1
  137. package/modern/TimeClock/Clock.js +48 -35
  138. package/modern/TimeClock/ClockNumber.js +12 -7
  139. package/modern/TimeClock/ClockPointer.js +23 -13
  140. package/modern/TimePicker/TimePickerToolbar.js +25 -16
  141. package/modern/YearCalendar/PickersYear.js +12 -6
  142. package/modern/index.js +1 -1
  143. package/modern/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +11 -6
  144. package/modern/internals/components/PickersPopper.js +13 -9
  145. package/modern/internals/components/PickersToolbar.js +39 -18
  146. package/modern/internals/hooks/useField/buildSectionsFromFormat.js +34 -30
  147. package/modern/internals/hooks/useField/useField.js +4 -2
  148. package/modern/internals/hooks/useField/useFieldV6TextField.js +8 -3
  149. package/modern/internals/hooks/useField/useFieldV7TextField.js +1 -1
  150. package/modern/internals/hooks/useOpenState.js +1 -1
  151. package/modern/internals/utils/fields.js +1 -1
  152. package/modern/locales/itIT.js +16 -20
  153. package/modern/locales/zhHK.js +14 -17
  154. package/node/AdapterLuxon/AdapterLuxon.js +9 -4
  155. package/node/DateCalendar/DateCalendar.js +1 -1
  156. package/node/DateField/DateField.js +1 -1
  157. package/node/DatePicker/DatePicker.js +1 -1
  158. package/node/DatePicker/DatePickerToolbar.js +11 -6
  159. package/node/DateTimeField/DateTimeField.js +1 -1
  160. package/node/DateTimePicker/DateTimePicker.js +1 -1
  161. package/node/DateTimePicker/DateTimePickerToolbar.js +97 -45
  162. package/node/DayCalendarSkeleton/DayCalendarSkeleton.js +12 -8
  163. package/node/DesktopDatePicker/DesktopDatePicker.js +1 -1
  164. package/node/DesktopDateTimePicker/DesktopDateTimePicker.js +63 -25
  165. package/node/DesktopDateTimePicker/DesktopDateTimePickerLayout.js +108 -0
  166. package/node/DesktopDateTimePicker/index.js +8 -1
  167. package/node/DigitalClock/DigitalClock.js +14 -6
  168. package/node/MobileDatePicker/MobileDatePicker.js +1 -1
  169. package/node/MobileDateTimePicker/MobileDateTimePicker.js +1 -1
  170. package/node/MonthCalendar/PickersMonth.js +12 -6
  171. package/node/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +13 -4
  172. package/node/PickersCalendarHeader/PickersCalendarHeader.js +13 -9
  173. package/node/PickersDay/PickersDay.js +30 -15
  174. package/node/PickersLayout/PickersLayout.js +31 -17
  175. package/node/PickersTextField/PickersFilledInput/PickersFilledInput.js +137 -72
  176. package/node/PickersTextField/PickersInput/PickersInput.js +76 -54
  177. package/node/PickersTextField/PickersInputBase/PickersInputBase.js +64 -24
  178. package/node/PickersTextField/PickersOutlinedInput/Outline.js +58 -41
  179. package/node/PickersTextField/PickersOutlinedInput/PickersOutlinedInput.js +31 -12
  180. package/node/StaticDatePicker/StaticDatePicker.js +1 -1
  181. package/node/StaticDateTimePicker/StaticDateTimePicker.js +1 -1
  182. package/node/TimeClock/Clock.js +48 -35
  183. package/node/TimeClock/ClockNumber.js +12 -7
  184. package/node/TimeClock/ClockPointer.js +23 -13
  185. package/node/TimePicker/TimePickerToolbar.js +25 -16
  186. package/node/YearCalendar/PickersYear.js +12 -6
  187. package/node/index.js +1 -1
  188. package/node/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +11 -6
  189. package/node/internals/components/PickersPopper.js +13 -9
  190. package/node/internals/components/PickersToolbar.js +39 -18
  191. package/node/internals/hooks/useField/buildSectionsFromFormat.js +34 -30
  192. package/node/internals/hooks/useField/useField.js +4 -2
  193. package/node/internals/hooks/useField/useFieldV6TextField.js +8 -3
  194. package/node/internals/hooks/useField/useFieldV7TextField.js +1 -1
  195. package/node/internals/hooks/useOpenState.js +1 -1
  196. package/node/internals/utils/fields.js +1 -1
  197. package/node/locales/itIT.js +16 -20
  198. package/node/locales/zhHK.js +14 -17
  199. package/package.json +5 -5
  200. package/timeViewRenderers/timeViewRenderers.js +1 -1
  201. package/dateTimeViewRenderers/dateTimeViewRenderers.d.ts +0 -15
  202. package/dateTimeViewRenderers/dateTimeViewRenderers.js +0 -163
  203. package/dateTimeViewRenderers/index.d.ts +0 -2
  204. package/dateTimeViewRenderers/index.js +0 -1
  205. package/dateTimeViewRenderers/package.json +0 -6
  206. package/modern/dateTimeViewRenderers/dateTimeViewRenderers.js +0 -162
  207. package/modern/dateTimeViewRenderers/index.js +0 -1
  208. package/node/dateTimeViewRenderers/dateTimeViewRenderers.js +0 -171
  209. package/node/dateTimeViewRenderers/index.js +0 -12
@@ -32,14 +32,20 @@ const PickersYearRoot = (0, _styles.styled)('div', {
32
32
  name: 'MuiPickersYear',
33
33
  slot: 'Root',
34
34
  overridesResolver: (_, styles) => [styles.root]
35
- })(({
36
- ownerState
37
- }) => ({
38
- flexBasis: ownerState.yearsPerRow === 3 ? '33.3%' : '25%',
35
+ })({
39
36
  display: 'flex',
40
37
  alignItems: 'center',
41
- justifyContent: 'center'
42
- }));
38
+ justifyContent: 'center',
39
+ flexBasis: '33.3%',
40
+ variants: [{
41
+ props: {
42
+ yearsPerRow: 4
43
+ },
44
+ style: {
45
+ flexBasis: '25%'
46
+ }
47
+ }]
48
+ });
43
49
  const PickersYearButton = (0, _styles.styled)('button', {
44
50
  name: 'MuiPickersYear',
45
51
  slot: 'YearButton',
package/node/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-date-pickers v7.0.0-beta.7
2
+ * @mui/x-date-pickers v7.1.0
3
3
  *
4
4
  * @license MIT
5
5
  * This source code is licensed under the MIT license found in the
@@ -5,8 +5,8 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.PickersArrowSwitcher = void 0;
8
- var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
9
8
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
+ var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
10
10
  var React = _interopRequireWildcard(require("react"));
11
11
  var _clsx = _interopRequireDefault(require("clsx"));
12
12
  var _Typography = _interopRequireDefault(require("@mui/material/Typography"));
@@ -42,11 +42,16 @@ const PickersArrowSwitcherButton = (0, _styles.styled)(_IconButton.default, {
42
42
  name: 'MuiPickersArrowSwitcher',
43
43
  slot: 'Button',
44
44
  overridesResolver: (props, styles) => styles.button
45
- })(({
46
- ownerState
47
- }) => (0, _extends2.default)({}, ownerState.hidden && {
48
- visibility: 'hidden'
49
- }));
45
+ })({
46
+ variants: [{
47
+ props: {
48
+ hidden: true
49
+ },
50
+ style: {
51
+ visibility: 'hidden'
52
+ }
53
+ }]
54
+ });
50
55
  const useUtilityClasses = ownerState => {
51
56
  const {
52
57
  classes
@@ -5,8 +5,8 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.PickersPopper = PickersPopper;
8
- var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
9
8
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
+ var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
10
10
  var React = _interopRequireWildcard(require("react"));
11
11
  var _utils = require("@mui/base/utils");
12
12
  var _Grow = _interopRequireDefault(require("@mui/material/Grow"));
@@ -46,14 +46,18 @@ const PickersPopperPaper = (0, _styles.styled)(_Paper.default, {
46
46
  name: 'MuiPickersPopper',
47
47
  slot: 'Paper',
48
48
  overridesResolver: (_, styles) => styles.paper
49
- })(({
50
- ownerState
51
- }) => (0, _extends2.default)({
49
+ })({
52
50
  outline: 0,
53
- transformOrigin: 'top center'
54
- }, ownerState.placement.includes('top') && {
55
- transformOrigin: 'bottom center'
56
- }));
51
+ transformOrigin: 'top center',
52
+ variants: [{
53
+ props: ({
54
+ placement
55
+ }) => ['top', 'top-start', 'top-end'].includes(placement),
56
+ style: {
57
+ transformOrigin: 'bottom center'
58
+ }
59
+ }]
60
+ });
57
61
  function clickedRootScrollbar(event, doc) {
58
62
  return doc.documentElement.clientWidth < event.clientX || doc.documentElement.clientHeight < event.clientY;
59
63
  }
@@ -155,7 +159,7 @@ function useClickAwayListener(active, onClickAway) {
155
159
  // TODO This behavior is not tested automatically
156
160
  // It's unclear whether this is due to different update semantics in test (batched in act() vs discrete on click).
157
161
  // Or if this is a timing related issues due to different Transition components
158
- // Once we get rid of all the manual scheduling (e.g. setTimeout(update, 0)) we can revisit this code+test.
162
+ // Once we get rid of all the manual scheduling (for example setTimeout(update, 0)) we can revisit this code+test.
159
163
  if (active) {
160
164
  const doc = (0, _utils2.unstable_ownerDocument)(nodeRef.current);
161
165
  doc.addEventListener('click', handleClickAway);
@@ -5,8 +5,8 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.PickersToolbar = void 0;
8
- var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
9
8
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
+ var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
10
10
  var React = _interopRequireWildcard(require("react"));
11
11
  var _clsx = _interopRequireDefault(require("clsx"));
12
12
  var _Typography = _interopRequireDefault(require("@mui/material/Typography"));
@@ -34,36 +34,57 @@ const PickersToolbarRoot = (0, _styles.styled)('div', {
34
34
  slot: 'Root',
35
35
  overridesResolver: (props, styles) => styles.root
36
36
  })(({
37
- theme,
38
- ownerState
39
- }) => (0, _extends2.default)({
37
+ theme
38
+ }) => ({
40
39
  display: 'flex',
41
40
  flexDirection: 'column',
42
41
  alignItems: 'flex-start',
43
42
  justifyContent: 'space-between',
44
- padding: theme.spacing(2, 3)
45
- }, ownerState.isLandscape && {
46
- height: 'auto',
47
- maxWidth: 160,
48
- padding: 16,
49
- justifyContent: 'flex-start',
50
- flexWrap: 'wrap'
43
+ padding: theme.spacing(2, 3),
44
+ variants: [{
45
+ props: {
46
+ isLandscape: true
47
+ },
48
+ style: {
49
+ height: 'auto',
50
+ maxWidth: 160,
51
+ padding: 16,
52
+ justifyContent: 'flex-start',
53
+ flexWrap: 'wrap'
54
+ }
55
+ }]
51
56
  }));
52
57
  const PickersToolbarContent = (0, _styles.styled)('div', {
53
58
  name: 'MuiPickersToolbar',
54
59
  slot: 'Content',
55
60
  overridesResolver: (props, styles) => styles.content
56
- })(({
57
- ownerState
58
- }) => ({
61
+ })({
59
62
  display: 'flex',
60
63
  flexWrap: 'wrap',
61
64
  width: '100%',
62
- justifyContent: ownerState.isLandscape ? 'flex-start' : 'space-between',
63
- flexDirection: ownerState.isLandscape ? ownerState.landscapeDirection ?? 'column' : 'row',
64
65
  flex: 1,
65
- alignItems: ownerState.isLandscape ? 'flex-start' : 'center'
66
- }));
66
+ justifyContent: 'space-between',
67
+ alignItems: 'center',
68
+ flexDirection: 'row',
69
+ variants: [{
70
+ props: {
71
+ isLandscape: true
72
+ },
73
+ style: {
74
+ justifyContent: 'flex-start',
75
+ alignItems: 'flex-start',
76
+ flexDirection: 'column'
77
+ }
78
+ }, {
79
+ props: {
80
+ isLandscape: true,
81
+ landscapeDirection: 'row'
82
+ },
83
+ style: {
84
+ flexDirection: 'row'
85
+ }
86
+ }]
87
+ });
67
88
  const PickersToolbar = exports.PickersToolbar = /*#__PURE__*/React.forwardRef(function PickersToolbar(inProps, ref) {
68
89
  const props = (0, _styles.useThemeProps)({
69
90
  props: inProps,
@@ -159,49 +159,53 @@ const buildSections = params => {
159
159
  const sections = [];
160
160
  let startSeparator = '';
161
161
 
162
- // This RegExp test if the beginning of a string corresponds to a supported token
163
- const isTokenStartRegExp = new RegExp(`^(${Object.keys(utils.formatTokenMap).sort((a, b) => b.length - a.length) // Sort to put longest word first
164
- .join('|')})`, 'g') // used to get access to lastIndex state
165
- ;
166
- let currentTokenValue = '';
167
- for (let i = 0; i < expandedFormat.length; i += 1) {
168
- const escapedPartOfCurrentChar = escapedParts.find(escapeIndex => escapeIndex.start <= i && escapeIndex.end >= i);
169
- const char = expandedFormat[i];
162
+ // This RegExp tests if the beginning of a string corresponds to a supported token
163
+ const validTokens = Object.keys(utils.formatTokenMap).sort((a, b) => b.length - a.length); // Sort to put longest word first
164
+
165
+ const regExpFirstWordInFormat = /^([a-zA-Z]+)/;
166
+ const regExpWordOnlyComposedOfTokens = new RegExp(`^(${validTokens.join('|')})*$`);
167
+ const regExpFirstTokenInWord = new RegExp(`^(${validTokens.join('|')})`);
168
+ const getEscapedPartOfCurrentChar = i => escapedParts.find(escapeIndex => escapeIndex.start <= i && escapeIndex.end >= i);
169
+ let i = 0;
170
+ while (i < expandedFormat.length) {
171
+ const escapedPartOfCurrentChar = getEscapedPartOfCurrentChar(i);
170
172
  const isEscapedChar = escapedPartOfCurrentChar != null;
171
- const potentialToken = `${currentTokenValue}${expandedFormat.slice(i)}`;
172
- const regExpMatch = isTokenStartRegExp.test(potentialToken);
173
- if (!isEscapedChar && char.match(/([A-Za-z]+)/) && regExpMatch) {
174
- currentTokenValue = potentialToken.slice(0, isTokenStartRegExp.lastIndex);
175
- i += isTokenStartRegExp.lastIndex - 1;
176
- } else {
173
+ const firstWordInFormat = regExpFirstWordInFormat.exec(expandedFormat.slice(i))?.[1];
174
+
175
+ // The first word in the format is only composed of tokens.
176
+ // We extract those tokens to create a new sections.
177
+ if (!isEscapedChar && firstWordInFormat != null && regExpWordOnlyComposedOfTokens.test(firstWordInFormat)) {
178
+ let word = firstWordInFormat;
179
+ while (word.length > 0) {
180
+ const firstWord = regExpFirstTokenInWord.exec(word)[1];
181
+ word = word.slice(firstWord.length);
182
+ sections.push(createSection((0, _extends2.default)({}, params, {
183
+ now,
184
+ token: firstWord,
185
+ startSeparator
186
+ })));
187
+ startSeparator = '';
188
+ }
189
+ i += firstWordInFormat.length;
190
+ }
191
+ // The remaining format does not start with a token,
192
+ // We take the first character and add it to the current section's end separator.
193
+ else {
194
+ const char = expandedFormat[i];
195
+
177
196
  // If we are on the opening or closing character of an escaped part of the format,
178
197
  // Then we ignore this character.
179
198
  const isEscapeBoundary = isEscapedChar && escapedPartOfCurrentChar?.start === i || escapedPartOfCurrentChar?.end === i;
180
199
  if (!isEscapeBoundary) {
181
- if (currentTokenValue !== '') {
182
- sections.push(createSection((0, _extends2.default)({}, params, {
183
- now,
184
- token: currentTokenValue,
185
- startSeparator
186
- })));
187
- currentTokenValue = '';
188
- }
189
200
  if (sections.length === 0) {
190
201
  startSeparator += char;
191
202
  } else {
192
- startSeparator = '';
193
203
  sections[sections.length - 1].endSeparator += char;
194
204
  }
195
205
  }
206
+ i += 1;
196
207
  }
197
208
  }
198
- if (currentTokenValue !== '') {
199
- sections.push(createSection((0, _extends2.default)({}, params, {
200
- now,
201
- token: currentTokenValue,
202
- startSeparator
203
- })));
204
- }
205
209
  if (sections.length === 0 && startSeparator.length > 0) {
206
210
  sections.push({
207
211
  type: 'empty',
@@ -211,9 +211,11 @@ const useField = params => {
211
211
  event.preventDefault();
212
212
  onClear?.(event, ...args);
213
213
  clearValue();
214
- setSelectedSections(sectionOrder.startIndex);
215
- if (!interactions.isFieldFocused) {
214
+ if (!interactions.isFieldFocused()) {
215
+ // setSelectedSections is called internally
216
216
  interactions.focusField(0);
217
+ } else {
218
+ setSelectedSections(sectionOrder.startIndex);
217
219
  }
218
220
  });
219
221
  const commonForwardedProps = {
@@ -53,7 +53,8 @@ const useFieldV6TextField = params => {
53
53
  onClick,
54
54
  onPaste,
55
55
  onBlur,
56
- inputRef: inputRefProp
56
+ inputRef: inputRefProp,
57
+ placeholder: inPlaceholder
57
58
  },
58
59
  internalProps: {
59
60
  readOnly = false
@@ -137,7 +138,6 @@ const useFieldV6TextField = params => {
137
138
  }), [inputRef, parsedSelectedSections, sections, setSelectedSections]);
138
139
  const syncSelectionFromDOM = () => {
139
140
  if (readOnly) {
140
- setSelectedSections(null);
141
141
  return;
142
142
  }
143
143
  const browserStartIndex = inputRef.current.selectionStart ?? 0;
@@ -285,7 +285,12 @@ const useFieldV6TextField = params => {
285
285
  sectionIndex: activeSectionIndex
286
286
  });
287
287
  });
288
- const placeholder = React.useMemo(() => fieldValueManager.getV6InputValueFromSections(getSectionsFromValue(valueManager.emptyValue), localizedDigits, isRTL), [fieldValueManager, getSectionsFromValue, valueManager.emptyValue, localizedDigits, isRTL]);
288
+ const placeholder = React.useMemo(() => {
289
+ if (inPlaceholder) {
290
+ return inPlaceholder;
291
+ }
292
+ return fieldValueManager.getV6InputValueFromSections(getSectionsFromValue(valueManager.emptyValue), localizedDigits, isRTL);
293
+ }, [inPlaceholder, fieldValueManager, getSectionsFromValue, valueManager.emptyValue, localizedDigits, isRTL]);
289
294
  const valueStr = React.useMemo(() => state.tempValueStrAndroid ?? fieldValueManager.getV6InputValueFromSections(state.sections, localizedDigits, isRTL), [state.sections, fieldValueManager, state.tempValueStrAndroid, localizedDigits, isRTL]);
290
295
  React.useEffect(() => {
291
296
  // Select all the sections when focused on mount (`autoFocus = true` on the input)
@@ -375,7 +375,7 @@ const useFieldV7TextField = params => {
375
375
  const valueStr = React.useMemo(() => areAllSectionsEmpty ? '' : fieldValueManager.getV7HiddenInputValueFromSections(state.sections), [areAllSectionsEmpty, state.sections, fieldValueManager]);
376
376
  React.useEffect(() => {
377
377
  if (sectionListRef.current == null) {
378
- throw new Error(['MUI X: The `sectionListRef` prop has not been initialized by `PickersSectionList`', 'You probably tried to pass a component to the `textField` slot that contains an `<input />` element instead of a `PickersSectionList`.', '', 'If you want to keep using an `<input />` HTML element for the editing, please remove the `enableAccessibleFieldDOMStructure` prop from your picker or field component:', '', '<DatePicker slots={{ textField: MyCustomTextField }} />', '', 'Learn more about the field accessible DOM structure on the MUI documentation: https://next.mui.com/x/react-date-pickers/fields/#fields-to-edit-a-single-element'].join('\n'));
378
+ throw new Error(['MUI X: The `sectionListRef` prop has not been initialized by `PickersSectionList`', 'You probably tried to pass a component to the `textField` slot that contains an `<input />` element instead of a `PickersSectionList`.', '', 'If you want to keep using an `<input />` HTML element for the editing, please remove the `enableAccessibleFieldDOMStructure` prop from your picker or field component:', '', '<DatePicker slots={{ textField: MyCustomTextField }} />', '', 'Learn more about the field accessible DOM structure on the MUI documentation: https://mui.com/x/react-date-pickers/fields/#fields-to-edit-a-single-element'].join('\n'));
379
379
  }
380
380
  if (autoFocus && sectionListRef.current) {
381
381
  sectionListRef.current.getSectionContent(sectionOrder.startIndex).focus();
@@ -16,7 +16,7 @@ const useOpenState = ({
16
16
  const [openState, setIsOpenState] = React.useState(false);
17
17
 
18
18
  // It is required to update inner state in useEffect in order to avoid situation when
19
- // Our component is not mounted yet, but `open` state is set to `true` (e.g. initially opened)
19
+ // Our component is not mounted yet, but `open` state is set to `true` (for example initially opened)
20
20
  React.useEffect(() => {
21
21
  if (isControllingOpenProp) {
22
22
  if (typeof open !== 'boolean') {
@@ -7,7 +7,7 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports.splitFieldInternalAndForwardedProps = void 0;
8
8
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
9
  var _extractValidationProps = require("./validation/extractValidationProps");
10
- const SHARED_FIELD_INTERNAL_PROP_NAMES = ['value', 'defaultValue', 'referenceDate', 'format', 'formatDensity', 'onChange', 'timezone', 'onError', 'shouldRespectLeadingZeros', 'selectedSections', 'onSelectedSectionsChange', 'unstableFieldRef', 'enableAccessibleFieldDOMStructure', 'disabled', 'readOnly'];
10
+ const SHARED_FIELD_INTERNAL_PROP_NAMES = ['value', 'defaultValue', 'referenceDate', 'format', 'formatDensity', 'onChange', 'timezone', 'onError', 'shouldRespectLeadingZeros', 'selectedSections', 'onSelectedSectionsChange', 'unstableFieldRef', 'enableAccessibleFieldDOMStructure', 'disabled', 'readOnly', 'dateSeparator'];
11
11
  const splitFieldInternalAndForwardedProps = (props, valueType) => {
12
12
  const forwardedProps = (0, _extends2.default)({}, props);
13
13
  const internalProps = {};
@@ -22,11 +22,10 @@ const itITPickers = {
22
22
  // DateRange labels
23
23
  start: 'Inizio',
24
24
  end: 'Fine',
25
- // startDate: 'Start date',
26
- // startTime: 'Start time',
27
- // endDate: 'End date',
28
- // endTime: 'End time',
29
-
25
+ startDate: 'Data di inizio',
26
+ startTime: 'Ora di inizio',
27
+ endDate: 'Data di fine',
28
+ endTime: 'Ora di fine',
30
29
  // Action bar
31
30
  cancelButtonLabel: 'Cancellare',
32
31
  clearButtonLabel: 'Sgomberare',
@@ -52,8 +51,7 @@ const itITPickers = {
52
51
  // Open picker labels
53
52
  openDatePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Scegli la data, la data selezionata è ${utils.format(value, 'fullDate')}` : 'Scegli la data',
54
53
  openTimePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Scegli l'ora, l'ora selezionata è ${utils.format(value, 'fullTime')}` : "Scegli l'ora",
55
- // fieldClearLabel: 'Clear value',
56
-
54
+ fieldClearLabel: 'Cancella valore',
57
55
  // Table labels
58
56
  timeTableLabel: "scegli un'ora",
59
57
  dateTableLabel: 'scegli una data',
@@ -61,23 +59,21 @@ const itITPickers = {
61
59
  fieldYearPlaceholder: params => 'A'.repeat(params.digitAmount),
62
60
  fieldMonthPlaceholder: params => params.contentType === 'letter' ? 'MMMM' : 'MM',
63
61
  fieldDayPlaceholder: () => 'GG',
64
- // fieldWeekDayPlaceholder: params => params.contentType === 'letter' ? 'EEEE' : 'EE',
62
+ fieldWeekDayPlaceholder: params => params.contentType === 'letter' ? 'GGGG' : 'GG',
65
63
  fieldHoursPlaceholder: () => 'hh',
66
64
  fieldMinutesPlaceholder: () => 'mm',
67
65
  fieldSecondsPlaceholder: () => 'ss',
68
- fieldMeridiemPlaceholder: () => 'aa'
69
-
66
+ fieldMeridiemPlaceholder: () => 'aa',
70
67
  // View names
71
- // year: 'Year',
72
- // month: 'Month',
73
- // day: 'Day',
74
- // weekDay: 'Week day',
75
- // hours: 'Hours',
76
- // minutes: 'Minutes',
77
- // seconds: 'Seconds',
78
- // meridiem: 'Meridiem',
79
-
68
+ year: 'Anno',
69
+ month: 'Mese',
70
+ day: 'Giorno',
71
+ weekDay: 'Giorno della settimana',
72
+ hours: 'Ore',
73
+ minutes: 'Minuti',
74
+ seconds: 'Secondi',
75
+ meridiem: 'Meridiano',
80
76
  // Common
81
- // empty: 'Empty',
77
+ empty: 'Vuoto'
82
78
  };
83
79
  const itIT = exports.itIT = (0, _getPickersLocalization.getPickersLocalization)(itITPickers);
@@ -22,11 +22,10 @@ const zhHKPickers = {
22
22
  // DateRange labels
23
23
  start: '開始',
24
24
  end: '結束',
25
- // startDate: 'Start date',
26
- // startTime: 'Start time',
27
- // endDate: 'End date',
28
- // endTime: 'End time',
29
-
25
+ startDate: '開始日期',
26
+ startTime: '開始時間',
27
+ endDate: '結束日期',
28
+ endTime: '結束時間',
30
29
  // Action bar
31
30
  cancelButtonLabel: '取消',
32
31
  clearButtonLabel: '清除',
@@ -65,19 +64,17 @@ const zhHKPickers = {
65
64
  fieldHoursPlaceholder: () => 'hh',
66
65
  fieldMinutesPlaceholder: () => 'mm',
67
66
  fieldSecondsPlaceholder: () => 'ss',
68
- fieldMeridiemPlaceholder: () => 'aa'
69
-
67
+ fieldMeridiemPlaceholder: () => 'aa',
70
68
  // View names
71
- // year: 'Year',
72
- // month: 'Month',
73
- // day: 'Day',
74
- // weekDay: 'Week day',
75
- // hours: 'Hours',
76
- // minutes: 'Minutes',
77
- // seconds: 'Seconds',
78
- // meridiem: 'Meridiem',
79
-
69
+ year: '',
70
+ month: '',
71
+ day: '',
72
+ weekDay: '星期',
73
+ hours: '小時',
74
+ minutes: '分鐘',
75
+ seconds: '',
76
+ meridiem: '子午線',
80
77
  // Common
81
- // empty: 'Empty',
78
+ empty: '空值'
82
79
  };
83
80
  const zhHK = exports.zhHK = (0, _getPickersLocalization.getPickersLocalization)(zhHKPickers);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mui/x-date-pickers",
3
- "version": "7.0.0-beta.7",
3
+ "version": "7.1.0",
4
4
  "description": "The community edition of the date picker components (MUI X).",
5
5
  "author": "MUI Team",
6
6
  "main": "./node/index.js",
@@ -35,9 +35,9 @@
35
35
  },
36
36
  "dependencies": {
37
37
  "@babel/runtime": "^7.24.0",
38
- "@mui/base": "^5.0.0-beta.36",
39
- "@mui/system": "^5.15.9",
40
- "@mui/utils": "^5.15.9",
38
+ "@mui/base": "^5.0.0-beta.40",
39
+ "@mui/system": "^5.15.14",
40
+ "@mui/utils": "^5.15.14",
41
41
  "@types/react-transition-group": "^4.4.10",
42
42
  "clsx": "^2.1.0",
43
43
  "prop-types": "^15.8.1",
@@ -46,7 +46,7 @@
46
46
  "peerDependencies": {
47
47
  "@emotion/react": "^11.9.0",
48
48
  "@emotion/styled": "^11.8.1",
49
- "@mui/material": "^5.15.0",
49
+ "@mui/material": "^5.15.14",
50
50
  "date-fns": "^2.25.0 || ^3.2.0",
51
51
  "date-fns-jalali": "^2.13.0-0",
52
52
  "dayjs": "^1.10.7",
@@ -118,7 +118,7 @@ export const renderDigitalClockTimeView = ({
118
118
  sx: sx,
119
119
  autoFocus: autoFocus,
120
120
  disableIgnoringDatePartForTimeValidation: disableIgnoringDatePartForTimeValidation,
121
- timeStep: timeSteps == null ? void 0 : timeSteps.minutes,
121
+ timeStep: timeSteps?.minutes,
122
122
  skipDisabled: skipDisabled,
123
123
  timezone: timezone
124
124
  });
@@ -1,15 +0,0 @@
1
- import * as React from 'react';
2
- import { DateCalendarProps } from '../DateCalendar';
3
- import { DateOrTimeViewWithMeridiem } from '../internals/models';
4
- import { MultiSectionDigitalClockProps } from '../MultiSectionDigitalClock';
5
- import type { DateTimePickerProps } from '../DateTimePicker/DateTimePicker.types';
6
- import { PickerValidDate } from '../models';
7
- export interface DateTimeViewRendererProps<TDate extends PickerValidDate> extends Omit<DateCalendarProps<TDate> & MultiSectionDigitalClockProps<TDate>, 'views' | 'openTo' | 'view' | 'onViewChange' | 'focusedView' | 'slots' | 'slotProps'>, Pick<DateTimePickerProps<TDate>, 'slots' | 'slotProps'> {
8
- view: DateOrTimeViewWithMeridiem;
9
- onViewChange?: (view: DateOrTimeViewWithMeridiem) => void;
10
- views: readonly DateOrTimeViewWithMeridiem[];
11
- focusedView: DateOrTimeViewWithMeridiem | null;
12
- timeViewsCount: number;
13
- shouldRenderTimeInASingleColumn: boolean;
14
- }
15
- export declare const renderDesktopDateTimeView: <TDate extends PickerValidDate>({ view, onViewChange, views, focusedView, onFocusedViewChange, value, defaultValue, referenceDate, onChange, className, classes, disableFuture, disablePast, minDate, minTime, maxDate, maxTime, shouldDisableDate, shouldDisableMonth, shouldDisableYear, shouldDisableTime, reduceAnimations, minutesStep, ampm, onMonthChange, monthsPerRow, onYearChange, yearsPerRow, slots, slotProps, loading, renderLoading, disableHighlightToday, readOnly, disabled, showDaysOutsideCurrentMonth, dayOfWeekFormatter, sx, autoFocus, fixedWeekNumber, displayWeekNumber, timezone, disableIgnoringDatePartForTimeValidation, timeSteps, skipDisabled, timeViewsCount, shouldRenderTimeInASingleColumn, }: DateTimeViewRendererProps<TDate>) => React.JSX.Element;