@mui/x-date-pickers 6.0.0 → 6.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (178) hide show
  1. package/AdapterDateFns/index.js +1 -0
  2. package/AdapterDayjs/index.js +1 -0
  3. package/AdapterMoment/index.js +1 -0
  4. package/AdapterMomentHijri/index.d.ts +1 -1
  5. package/CHANGELOG.md +103 -12
  6. package/DateCalendar/DateCalendar.js +2 -2
  7. package/DateCalendar/PickersCalendarHeader.d.ts +2 -2
  8. package/DateField/DateField.js +2 -2
  9. package/DatePicker/DatePicker.js +2 -2
  10. package/DatePicker/DatePicker.types.d.ts +2 -2
  11. package/DatePicker/shared.d.ts +2 -2
  12. package/DateTimeField/DateTimeField.js +2 -2
  13. package/DateTimeField/DateTimeField.types.d.ts +2 -2
  14. package/DateTimePicker/DateTimePicker.js +2 -2
  15. package/DateTimePicker/DateTimePicker.types.d.ts +2 -2
  16. package/DateTimePicker/shared.d.ts +2 -2
  17. package/DesktopDatePicker/DesktopDatePicker.js +2 -2
  18. package/DesktopDatePicker/DesktopDatePicker.types.d.ts +2 -2
  19. package/DesktopDateTimePicker/DesktopDateTimePicker.js +2 -2
  20. package/DesktopDateTimePicker/DesktopDateTimePicker.types.d.ts +2 -2
  21. package/DesktopTimePicker/DesktopTimePicker.js +2 -2
  22. package/DesktopTimePicker/DesktopTimePicker.types.d.ts +2 -2
  23. package/MobileDatePicker/MobileDatePicker.js +2 -2
  24. package/MobileDatePicker/MobileDatePicker.types.d.ts +2 -2
  25. package/MobileDateTimePicker/MobileDateTimePicker.js +2 -2
  26. package/MobileDateTimePicker/MobileDateTimePicker.types.d.ts +2 -2
  27. package/MobileTimePicker/MobileTimePicker.js +2 -2
  28. package/MobileTimePicker/MobileTimePicker.types.d.ts +2 -2
  29. package/PickersLayout/PickersLayout.js +2 -2
  30. package/PickersLayout/PickersLayout.types.d.ts +2 -2
  31. package/StaticDatePicker/StaticDatePicker.js +2 -2
  32. package/StaticDatePicker/StaticDatePicker.types.d.ts +2 -2
  33. package/StaticDateTimePicker/StaticDateTimePicker.js +2 -2
  34. package/StaticDateTimePicker/StaticDateTimePicker.types.d.ts +2 -2
  35. package/StaticTimePicker/StaticTimePicker.js +2 -2
  36. package/StaticTimePicker/StaticTimePicker.types.d.ts +2 -2
  37. package/TimeClock/TimeClock.js +2 -2
  38. package/TimeClock/TimeClock.types.d.ts +2 -2
  39. package/TimeField/TimeField.js +2 -2
  40. package/TimeField/TimeField.types.d.ts +2 -2
  41. package/TimePicker/TimePicker.js +2 -2
  42. package/TimePicker/TimePicker.types.d.ts +2 -2
  43. package/TimePicker/shared.d.ts +2 -2
  44. package/index.js +1 -1
  45. package/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +8 -2
  46. package/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.types.d.ts +2 -2
  47. package/internals/components/PickersModalDialog.d.ts +4 -4
  48. package/internals/components/PickersPopper.d.ts +1 -1
  49. package/internals/hooks/useDesktopPicker/useDesktopPicker.js +13 -11
  50. package/internals/hooks/useDesktopPicker/useDesktopPicker.types.d.ts +1 -1
  51. package/internals/hooks/useField/useField.js +11 -5
  52. package/internals/hooks/useField/useField.types.d.ts +13 -8
  53. package/internals/hooks/useField/useField.utils.d.ts +3 -3
  54. package/internals/hooks/useField/useField.utils.js +63 -35
  55. package/internals/hooks/useField/useFieldCharacterEditing.js +4 -9
  56. package/internals/hooks/useField/useFieldState.js +43 -37
  57. package/internals/hooks/useMobilePicker/useMobilePicker.types.d.ts +1 -1
  58. package/internals/hooks/usePicker/usePicker.js +7 -0
  59. package/internals/hooks/useStaticPicker/useStaticPicker.types.d.ts +2 -2
  60. package/internals/hooks/useViews.js +1 -1
  61. package/internals/utils/slots-migration.d.ts +2 -2
  62. package/internals/utils/valueManagers.js +11 -7
  63. package/legacy/AdapterDateFns/index.js +1 -0
  64. package/legacy/AdapterDayjs/index.js +1 -0
  65. package/legacy/AdapterMoment/index.js +1 -0
  66. package/legacy/DateCalendar/DateCalendar.js +2 -2
  67. package/legacy/DateField/DateField.js +2 -2
  68. package/legacy/DatePicker/DatePicker.js +2 -2
  69. package/legacy/DateTimeField/DateTimeField.js +2 -2
  70. package/legacy/DateTimePicker/DateTimePicker.js +2 -2
  71. package/legacy/DesktopDatePicker/DesktopDatePicker.js +2 -2
  72. package/legacy/DesktopDateTimePicker/DesktopDateTimePicker.js +2 -2
  73. package/legacy/DesktopTimePicker/DesktopTimePicker.js +2 -2
  74. package/legacy/MobileDatePicker/MobileDatePicker.js +2 -2
  75. package/legacy/MobileDateTimePicker/MobileDateTimePicker.js +2 -2
  76. package/legacy/MobileTimePicker/MobileTimePicker.js +2 -2
  77. package/legacy/PickersLayout/PickersLayout.js +2 -2
  78. package/legacy/StaticDatePicker/StaticDatePicker.js +2 -2
  79. package/legacy/StaticDateTimePicker/StaticDateTimePicker.js +2 -2
  80. package/legacy/StaticTimePicker/StaticTimePicker.js +2 -2
  81. package/legacy/TimeClock/TimeClock.js +2 -2
  82. package/legacy/TimeField/TimeField.js +2 -2
  83. package/legacy/TimePicker/TimePicker.js +2 -2
  84. package/legacy/index.js +1 -1
  85. package/legacy/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +8 -2
  86. package/legacy/internals/hooks/useDesktopPicker/useDesktopPicker.js +15 -12
  87. package/legacy/internals/hooks/useField/useField.js +11 -5
  88. package/legacy/internals/hooks/useField/useField.utils.js +64 -36
  89. package/legacy/internals/hooks/useField/useFieldCharacterEditing.js +4 -9
  90. package/legacy/internals/hooks/useField/useFieldState.js +45 -39
  91. package/legacy/internals/hooks/usePicker/usePicker.js +7 -0
  92. package/legacy/internals/hooks/useViews.js +1 -1
  93. package/legacy/internals/utils/valueManagers.js +4 -0
  94. package/legacy/locales/deDE.js +8 -5
  95. package/legacy/locales/frFR.js +34 -20
  96. package/legacy/locales/heIL.js +71 -0
  97. package/legacy/locales/index.js +1 -0
  98. package/legacy/tests/describeValue/testPickerOpenCloseLifeCycle.js +20 -1
  99. package/locales/deDE.js +4 -5
  100. package/locales/frFR.js +16 -20
  101. package/locales/heIL.d.ts +51 -0
  102. package/locales/heIL.js +57 -0
  103. package/locales/index.d.ts +1 -0
  104. package/locales/index.js +1 -0
  105. package/modern/AdapterDateFns/index.js +1 -0
  106. package/modern/AdapterDayjs/index.js +1 -0
  107. package/modern/AdapterMoment/index.js +1 -0
  108. package/modern/DateCalendar/DateCalendar.js +2 -2
  109. package/modern/DateField/DateField.js +2 -2
  110. package/modern/DatePicker/DatePicker.js +2 -2
  111. package/modern/DateTimeField/DateTimeField.js +2 -2
  112. package/modern/DateTimePicker/DateTimePicker.js +2 -2
  113. package/modern/DesktopDatePicker/DesktopDatePicker.js +2 -2
  114. package/modern/DesktopDateTimePicker/DesktopDateTimePicker.js +2 -2
  115. package/modern/DesktopTimePicker/DesktopTimePicker.js +2 -2
  116. package/modern/MobileDatePicker/MobileDatePicker.js +2 -2
  117. package/modern/MobileDateTimePicker/MobileDateTimePicker.js +2 -2
  118. package/modern/MobileTimePicker/MobileTimePicker.js +2 -2
  119. package/modern/PickersLayout/PickersLayout.js +2 -2
  120. package/modern/StaticDatePicker/StaticDatePicker.js +2 -2
  121. package/modern/StaticDateTimePicker/StaticDateTimePicker.js +2 -2
  122. package/modern/StaticTimePicker/StaticTimePicker.js +2 -2
  123. package/modern/TimeClock/TimeClock.js +2 -2
  124. package/modern/TimeField/TimeField.js +2 -2
  125. package/modern/TimePicker/TimePicker.js +2 -2
  126. package/modern/index.js +1 -1
  127. package/modern/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +8 -2
  128. package/modern/internals/hooks/useDesktopPicker/useDesktopPicker.js +13 -11
  129. package/modern/internals/hooks/useField/useField.js +11 -5
  130. package/modern/internals/hooks/useField/useField.utils.js +63 -35
  131. package/modern/internals/hooks/useField/useFieldCharacterEditing.js +4 -9
  132. package/modern/internals/hooks/useField/useFieldState.js +43 -37
  133. package/modern/internals/hooks/usePicker/usePicker.js +7 -0
  134. package/modern/internals/hooks/useViews.js +1 -1
  135. package/modern/internals/utils/valueManagers.js +11 -7
  136. package/modern/locales/deDE.js +4 -5
  137. package/modern/locales/frFR.js +16 -20
  138. package/modern/locales/heIL.js +57 -0
  139. package/modern/locales/index.js +1 -0
  140. package/modern/tests/describeValue/testPickerOpenCloseLifeCycle.js +20 -1
  141. package/node/AdapterDateFns/index.js +1 -0
  142. package/node/AdapterDayjs/index.js +1 -0
  143. package/node/AdapterMoment/index.js +1 -0
  144. package/node/DateCalendar/DateCalendar.js +2 -2
  145. package/node/DateField/DateField.js +2 -2
  146. package/node/DatePicker/DatePicker.js +2 -2
  147. package/node/DateTimeField/DateTimeField.js +2 -2
  148. package/node/DateTimePicker/DateTimePicker.js +2 -2
  149. package/node/DesktopDatePicker/DesktopDatePicker.js +2 -2
  150. package/node/DesktopDateTimePicker/DesktopDateTimePicker.js +2 -2
  151. package/node/DesktopTimePicker/DesktopTimePicker.js +2 -2
  152. package/node/MobileDatePicker/MobileDatePicker.js +2 -2
  153. package/node/MobileDateTimePicker/MobileDateTimePicker.js +2 -2
  154. package/node/MobileTimePicker/MobileTimePicker.js +2 -2
  155. package/node/PickersLayout/PickersLayout.js +2 -2
  156. package/node/StaticDatePicker/StaticDatePicker.js +2 -2
  157. package/node/StaticDateTimePicker/StaticDateTimePicker.js +2 -2
  158. package/node/StaticTimePicker/StaticTimePicker.js +2 -2
  159. package/node/TimeClock/TimeClock.js +2 -2
  160. package/node/TimeField/TimeField.js +2 -2
  161. package/node/TimePicker/TimePicker.js +2 -2
  162. package/node/index.js +1 -1
  163. package/node/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +8 -2
  164. package/node/internals/hooks/useDesktopPicker/useDesktopPicker.js +13 -11
  165. package/node/internals/hooks/useField/useField.js +11 -5
  166. package/node/internals/hooks/useField/useField.utils.js +66 -38
  167. package/node/internals/hooks/useField/useFieldCharacterEditing.js +3 -8
  168. package/node/internals/hooks/useField/useFieldState.js +43 -37
  169. package/node/internals/hooks/usePicker/usePicker.js +7 -0
  170. package/node/internals/hooks/useViews.js +1 -1
  171. package/node/internals/utils/valueManagers.js +11 -7
  172. package/node/locales/deDE.js +4 -5
  173. package/node/locales/frFR.js +16 -20
  174. package/node/locales/heIL.js +64 -0
  175. package/node/locales/index.js +11 -0
  176. package/node/tests/describeValue/testPickerOpenCloseLifeCycle.js +19 -0
  177. package/package.json +3 -3
  178. package/tests/describeValue/testPickerOpenCloseLifeCycle.js +20 -1
@@ -131,35 +131,41 @@ export var useFieldState = function useFieldState(params) {
131
131
  return addPositionPropertiesToSections(newSections);
132
132
  };
133
133
  var clearValue = function clearValue() {
134
- return publishValue({
134
+ if (valueManager.areValuesEqual(utils, state.value, valueManager.emptyValue)) {
135
+ return;
136
+ }
137
+ publishValue({
135
138
  value: valueManager.emptyValue,
136
139
  referenceValue: state.referenceValue
137
140
  }, null);
138
141
  };
139
142
  var clearActiveSection = function clearActiveSection() {
140
143
  if (selectedSectionIndexes == null) {
141
- return undefined;
144
+ return;
142
145
  }
143
146
  var activeSection = state.sections[selectedSectionIndexes.startIndex];
147
+ if (activeSection.value === '') {
148
+ return;
149
+ }
144
150
  var activeDateManager = fieldValueManager.getActiveDateManager(utils, state, activeSection);
145
151
  var activeDateSections = fieldValueManager.getActiveDateSections(state.sections, activeSection);
146
- var isTheOnlyNonEmptySection = activeDateSections.every(function (section) {
147
- if (section.startInInput === activeSection.startInInput) {
148
- return true;
149
- }
150
- return section.value === '';
151
- });
152
+ var nonEmptySectionCountBefore = activeDateSections.filter(function (section) {
153
+ return section.value !== '';
154
+ }).length;
155
+ var isTheOnlyNonEmptySection = nonEmptySectionCountBefore === 1;
152
156
  var newSections = setSectionValue(selectedSectionIndexes.startIndex, '');
153
- var newValue = activeDateManager.getNewValueFromNewActiveDate(null);
154
- if (isTheOnlyNonEmptySection) {
155
- return publishValue(newValue, newSections);
157
+ var newActiveDate = isTheOnlyNonEmptySection ? null : utils.date(new Date(''));
158
+ var newValue = activeDateManager.getNewValueFromNewActiveDate(newActiveDate);
159
+ if ((newActiveDate != null && !utils.isValid(newActiveDate)) !== (activeDateManager.activeDate != null && !utils.isValid(activeDateManager.activeDate))) {
160
+ publishValue(newValue, newSections);
161
+ } else {
162
+ setState(function (prevState) {
163
+ return _extends({}, prevState, newValue, {
164
+ sections: newSections,
165
+ tempValueStrAndroid: null
166
+ });
167
+ });
156
168
  }
157
- return setState(function (prevState) {
158
- return _extends({}, prevState, {
159
- sections: newSections,
160
- tempValueStrAndroid: null
161
- }, newValue);
162
- });
163
169
  };
164
170
  var updateValueFromValueStr = function updateValueFromValueStr(valueStr) {
165
171
  var parseDateStr = function parseDateStr(dateStr, referenceDate) {
@@ -182,53 +188,53 @@ export var useFieldState = function useFieldState(params) {
182
188
  newSectionValue = _ref3.newSectionValue,
183
189
  shouldGoToNextSection = _ref3.shouldGoToNextSection;
184
190
  var commit = function commit(_ref4) {
185
- var shouldPublish = _ref4.shouldPublish,
186
- values = _ref4.values,
187
- sections = _ref4.sections;
191
+ var values = _ref4.values,
192
+ sections = _ref4.sections,
193
+ shouldPublish = _ref4.shouldPublish;
188
194
  if (shouldGoToNextSection && selectedSectionIndexes && selectedSectionIndexes.startIndex < state.sections.length - 1) {
189
195
  setSelectedSections(selectedSectionIndexes.startIndex + 1);
190
196
  } else if (selectedSectionIndexes && selectedSectionIndexes.startIndex !== selectedSectionIndexes.endIndex) {
191
197
  setSelectedSections(selectedSectionIndexes.startIndex);
192
198
  }
193
199
  if (shouldPublish) {
194
- return publishValue(values);
195
- }
196
- return setState(function (prev) {
197
- return _extends({}, prev, {
198
- tempValueStrAndroid: null
199
- }, values, {
200
- sections: sections != null ? sections : prev.sections
200
+ publishValue(values, sections);
201
+ } else {
202
+ setState(function (prevState) {
203
+ return _extends({}, prevState, values, {
204
+ sections: sections != null ? sections : state.sections,
205
+ tempValueStrAndroid: null
206
+ });
201
207
  });
202
- });
208
+ }
203
209
  };
204
210
  var activeDateManager = fieldValueManager.getActiveDateManager(utils, state, activeSection);
205
211
  var newSections = setSectionValue(selectedSectionIndexes.startIndex, newSectionValue);
206
212
  var activeDateSections = fieldValueManager.getActiveDateSections(newSections, activeSection);
207
- var newDate = getDateFromDateSections(utils, activeDateSections);
213
+ var newActiveDate = getDateFromDateSections(utils, activeDateSections);
208
214
 
209
215
  // When all the sections are filled but the date is invalid, it can be because the month has fewer days than asked.
210
216
  // We can try to set the day to the maximum boundary.
211
- if (!utils.isValid(newDate) && activeDateSections.every(function (section) {
217
+ if (!utils.isValid(newActiveDate) && activeDateSections.every(function (section) {
212
218
  return section.type === 'weekDay' || section.value !== '';
213
219
  }) && activeDateSections.some(function (section) {
214
220
  return section.type === 'day';
215
221
  })) {
216
222
  var cleanSections = clampDaySection(utils, activeDateSections, sectionsValueBoundaries);
217
223
  if (cleanSections != null) {
218
- newDate = getDateFromDateSections(utils, cleanSections);
224
+ newActiveDate = getDateFromDateSections(utils, cleanSections);
219
225
  }
220
226
  }
221
- if (newDate != null && utils.isValid(newDate)) {
222
- var mergedDate = mergeDateIntoReferenceDate(utils, newDate, activeDateSections, activeDateManager.referenceActiveDate, true);
227
+ if (newActiveDate != null && utils.isValid(newActiveDate)) {
228
+ var mergedDate = mergeDateIntoReferenceDate(utils, newActiveDate, activeDateSections, activeDateManager.referenceActiveDate, true);
223
229
  return commit({
224
- shouldPublish: true,
225
- values: activeDateManager.getNewValueFromNewActiveDate(mergedDate)
230
+ values: activeDateManager.getNewValueFromNewActiveDate(mergedDate),
231
+ shouldPublish: true
226
232
  });
227
233
  }
228
234
  return commit({
229
- shouldPublish: false,
230
- values: activeDateManager.getNewValueFromNewActiveDate(newDate),
231
- sections: newSections
235
+ values: activeDateManager.getNewValueFromNewActiveDate(newActiveDate),
236
+ sections: newSections,
237
+ shouldPublish: (newActiveDate != null && !utils.isValid(newActiveDate)) !== (activeDateManager.activeDate != null && !utils.isValid(activeDateManager.activeDate))
232
238
  });
233
239
  };
234
240
  var setTempAndroidValueStr = function setTempAndroidValueStr(tempValueStrAndroid) {
@@ -252,7 +258,7 @@ export var useFieldState = function useFieldState(params) {
252
258
  }, [valueFromTheOutside]); // eslint-disable-line react-hooks/exhaustive-deps
253
259
 
254
260
  React.useEffect(function () {
255
- var sections = fieldValueManager.getSectionsFromValue(utils, localeText, state.sections, state.value, format);
261
+ var sections = fieldValueManager.getSectionsFromValue(utils, localeText, null, state.value, format);
256
262
  validateSections(sections, valueType);
257
263
  setState(function (prevState) {
258
264
  return _extends({}, prevState, {
@@ -1,6 +1,8 @@
1
1
  import { usePickerValue } from './usePickerValue';
2
2
  import { usePickerViews } from './usePickerViews';
3
3
  import { usePickerLayoutProps } from './usePickerLayoutProps';
4
+ import { buildWarning } from '../../utils/warning';
5
+ var warnRenderInputIsDefined = buildWarning(['The `renderInput` prop has been removed in version 6.0 of the Date and Time Pickers.', 'You can replace it with the `textField` component slot in most cases.', 'For more information, please have a look at the migration guide (https://mui.com/x/migration/migration-pickers-v5/#input-renderer-required-in-v5).']);
4
6
  export var usePicker = function usePicker(_ref) {
5
7
  var props = _ref.props,
6
8
  valueManager = _ref.valueManager,
@@ -9,6 +11,11 @@ export var usePicker = function usePicker(_ref) {
9
11
  additionalViewProps = _ref.additionalViewProps,
10
12
  validator = _ref.validator,
11
13
  autoFocusView = _ref.autoFocusView;
14
+ if (process.env.NODE_ENV !== 'production') {
15
+ if (props.renderInput != null) {
16
+ warnRenderInputIsDefined();
17
+ }
18
+ }
12
19
  var pickerValueResponse = usePickerValue({
13
20
  props: props,
14
21
  valueManager: valueManager,
@@ -75,7 +75,7 @@ export function useViews(_ref) {
75
75
  // Blur event
76
76
  setFocusedView(function (prevFocusedView) {
77
77
  return viewToFocus === prevFocusedView ? null : prevFocusedView;
78
- } // If false the blur is due to view swiching
78
+ } // If false the blur is due to view switching
79
79
  );
80
80
  }
81
81
 
@@ -19,6 +19,10 @@ export var singleItemFieldValueManager = {
19
19
  return value == null || !utils.isValid(value) ? prevReferenceValue : value;
20
20
  },
21
21
  getSectionsFromValue: function getSectionsFromValue(utils, localeText, prevSections, date, format) {
22
+ var shouldReUsePrevDateSections = !utils.isValid(date) && !!prevSections;
23
+ if (shouldReUsePrevDateSections) {
24
+ return prevSections;
25
+ }
22
26
  return addPositionPropertiesToSections(splitFormatIntoSections(utils, localeText, format, date));
23
27
  },
24
28
  getValueStrFromSections: function getValueStrFromSections(sections) {
@@ -44,11 +44,14 @@ var deDEPickers = {
44
44
  return "".concat(seconds, " ").concat(timeViews.seconds);
45
45
  },
46
46
  // Calendar labels
47
- // calendarWeekNumberHeaderLabel: 'Week number',
48
- // calendarWeekNumberHeaderText: '#',
49
- // calendarWeekNumberAriaLabelText: weekNumber => `Week ${weekNumber}`,
50
- // calendarWeekNumberText: weekNumber => `${weekNumber}`,
51
-
47
+ calendarWeekNumberHeaderLabel: 'Kalenderwoche',
48
+ calendarWeekNumberHeaderText: '#',
49
+ calendarWeekNumberAriaLabelText: function calendarWeekNumberAriaLabelText(weekNumber) {
50
+ return "Woche ".concat(weekNumber);
51
+ },
52
+ calendarWeekNumberText: function calendarWeekNumberText(weekNumber) {
53
+ return "".concat(weekNumber);
54
+ },
52
55
  // Open picker labels
53
56
  openDatePickerDialogue: function openDatePickerDialogue(value, utils) {
54
57
  return value !== null && utils.isValid(value) ? "Datum ausw\xE4hlen, gew\xE4hltes Datum ist ".concat(utils.format(value, 'fullDate')) : 'Datum auswählen';
@@ -23,11 +23,10 @@ var frFRPickers = {
23
23
  okButtonLabel: 'OK',
24
24
  todayButtonLabel: "Aujourd'hui",
25
25
  // Toolbar titles
26
- // datePickerToolbarTitle: 'Select date',
27
- // dateTimePickerToolbarTitle: 'Select date & time',
28
- // timePickerToolbarTitle: 'Select time',
29
- // dateRangePickerToolbarTitle: 'Select date range',
30
-
26
+ datePickerToolbarTitle: 'Choisir une date',
27
+ dateTimePickerToolbarTitle: "Choisir la date et l'heure",
28
+ timePickerToolbarTitle: "Choisir l'heure",
29
+ dateRangePickerToolbarTitle: 'Choisir la plage de dates',
31
30
  // Clock labels
32
31
  clockLabelText: function clockLabelText(view, time, adapter) {
33
32
  return "Choix des ".concat(views[view], ". ").concat(time === null ? 'Aucune heure choisie' : "L'heure choisie est ".concat(adapter.format(time, 'fullTime')));
@@ -42,11 +41,14 @@ var frFRPickers = {
42
41
  return "".concat(seconds, " secondes");
43
42
  },
44
43
  // Calendar labels
45
- // calendarWeekNumberHeaderLabel: 'Week number',
46
- // calendarWeekNumberHeaderText: '#',
47
- // calendarWeekNumberAriaLabelText: weekNumber => `Week ${weekNumber}`,
48
- // calendarWeekNumberText: weekNumber => `${weekNumber}`,
49
-
44
+ calendarWeekNumberHeaderLabel: 'Semaine',
45
+ calendarWeekNumberHeaderText: '#',
46
+ calendarWeekNumberAriaLabelText: function calendarWeekNumberAriaLabelText(weekNumber) {
47
+ return "Semaine ".concat(weekNumber);
48
+ },
49
+ calendarWeekNumberText: function calendarWeekNumberText(weekNumber) {
50
+ return "".concat(weekNumber);
51
+ },
50
52
  // Open picker labels
51
53
  openDatePickerDialogue: function openDatePickerDialogue(value, utils) {
52
54
  return value !== null && utils.isValid(value) ? "Choisir la date, la date s\xE9lectionn\xE9e est ".concat(utils.format(value, 'fullDate')) : 'Choisir la date';
@@ -56,17 +58,29 @@ var frFRPickers = {
56
58
  },
57
59
  // Table labels
58
60
  timeTableLabel: "choix de l'heure",
59
- dateTableLabel: 'choix de la date'
60
-
61
+ dateTableLabel: 'choix de la date',
61
62
  // Field section placeholders
62
- // fieldYearPlaceholder: params => 'Y'.repeat(params.digitAmount),
63
- // fieldMonthPlaceholder: params => params.contentType === 'letter' ? 'MMMM' : 'MM',
64
- // fieldDayPlaceholder: () => 'DD',
63
+ fieldYearPlaceholder: function fieldYearPlaceholder(params) {
64
+ return 'A'.repeat(params.digitAmount);
65
+ },
66
+ fieldMonthPlaceholder: function fieldMonthPlaceholder(params) {
67
+ return params.contentType === 'letter' ? 'MMMM' : 'MM';
68
+ },
69
+ fieldDayPlaceholder: function fieldDayPlaceholder() {
70
+ return 'JJ';
71
+ },
65
72
  // fieldWeekDayPlaceholder: params => params.contentType === 'letter' ? 'EEEE' : 'EE',
66
- // fieldHoursPlaceholder: () => 'hh',
67
- // fieldMinutesPlaceholder: () => 'mm',
68
- // fieldSecondsPlaceholder: () => 'ss',
69
- // fieldMeridiemPlaceholder: () => 'aa',
73
+ fieldHoursPlaceholder: function fieldHoursPlaceholder() {
74
+ return 'hh';
75
+ },
76
+ fieldMinutesPlaceholder: function fieldMinutesPlaceholder() {
77
+ return 'mm';
78
+ },
79
+ fieldSecondsPlaceholder: function fieldSecondsPlaceholder() {
80
+ return 'ss';
81
+ },
82
+ fieldMeridiemPlaceholder: function fieldMeridiemPlaceholder() {
83
+ return 'aa';
84
+ }
70
85
  };
71
-
72
86
  export var frFR = getPickersLocalization(frFRPickers);
@@ -0,0 +1,71 @@
1
+ import { getPickersLocalization } from './utils/getPickersLocalization';
2
+ var views = {
3
+ hours: 'שעות',
4
+ minutes: 'דקות',
5
+ seconds: 'שניות'
6
+ };
7
+ var heILPickers = {
8
+ // Calendar navigation
9
+ previousMonth: 'חודש קודם',
10
+ nextMonth: 'חודש הבא',
11
+ // View navigation
12
+ openPreviousView: 'תצוגה קודמת',
13
+ openNextView: 'תצוגה הבאה',
14
+ calendarViewSwitchingButtonAriaLabel: function calendarViewSwitchingButtonAriaLabel(view) {
15
+ return view === 'year' ? 'תצוגת שנה פתוחה, מעבר לתצוגת לוח שנה' : 'תצוגת לוח שנה פתוחה, מעבר לתצוגת שנה';
16
+ },
17
+ // DateRange placeholders
18
+ start: 'תחילה',
19
+ end: 'סיום',
20
+ // Action bar
21
+ cancelButtonLabel: 'ביטול',
22
+ clearButtonLabel: 'ניקוי',
23
+ okButtonLabel: 'אישור',
24
+ todayButtonLabel: 'היום',
25
+ // Toolbar titles
26
+ datePickerToolbarTitle: 'בחירת תאריך',
27
+ dateTimePickerToolbarTitle: 'בחירת תאריך ושעה',
28
+ timePickerToolbarTitle: 'בחירת שעה',
29
+ dateRangePickerToolbarTitle: 'בחירת טווח תאריכים',
30
+ // Clock labels
31
+ clockLabelText: function clockLabelText(view, time, adapter) {
32
+ return "\u05D1\u05D7\u05D9\u05E8\u05EA ".concat(views[view], ". ").concat(time === null ? 'לא נבחרה שעה' : "\u05D4\u05E9\u05E2\u05D4 \u05D4\u05E0\u05D1\u05D7\u05E8\u05EA \u05D4\u05D9\u05D0 ".concat(adapter.format(time, 'fullTime')));
33
+ },
34
+ hoursClockNumberText: function hoursClockNumberText(hours) {
35
+ return "".concat(hours, " \u05E9\u05E2\u05D5\u05EA");
36
+ },
37
+ minutesClockNumberText: function minutesClockNumberText(minutes) {
38
+ return "".concat(minutes, " \u05D3\u05E7\u05D5\u05EA");
39
+ },
40
+ secondsClockNumberText: function secondsClockNumberText(seconds) {
41
+ return "".concat(seconds, " \u05E9\u05E0\u05D9\u05D5\u05EA");
42
+ },
43
+ // Calendar labels
44
+ // calendarWeekNumberHeaderLabel: 'Week number',
45
+ // calendarWeekNumberHeaderText: '#',
46
+ // calendarWeekNumberAriaLabelText: weekNumber => `Week ${weekNumber}`,
47
+ // calendarWeekNumberText: weekNumber => `${weekNumber}`,
48
+
49
+ // Open picker labels
50
+ openDatePickerDialogue: function openDatePickerDialogue(value, utils) {
51
+ return value !== null && utils.isValid(value) ? "\u05D1\u05D7\u05D9\u05E8\u05EA \u05EA\u05D0\u05E8\u05D9\u05DA, \u05D4\u05EA\u05D0\u05E8\u05D9\u05DA \u05E9\u05E0\u05D1\u05D7\u05E8 \u05D4\u05D5\u05D0 ".concat(utils.format(value, 'fullDate')) : 'בחירת תאריך';
52
+ },
53
+ openTimePickerDialogue: function openTimePickerDialogue(value, utils) {
54
+ return value !== null && utils.isValid(value) ? "\u05D1\u05D7\u05D9\u05E8\u05EA \u05E9\u05E2\u05D4, \u05D4\u05E9\u05E2\u05D4 \u05E9\u05E0\u05D1\u05D7\u05E8\u05D4 \u05D4\u05D9\u05D0 ".concat(utils.format(value, 'fullTime')) : 'בחירת שעה';
55
+ },
56
+ // Table labels
57
+ timeTableLabel: 'בחירת שעה',
58
+ dateTableLabel: 'בחירת תאריך'
59
+
60
+ // Field section placeholders
61
+ // fieldYearPlaceholder: params => 'Y'.repeat(params.digitAmount),
62
+ // fieldMonthPlaceholder: params => params.contentType === 'letter' ? 'MMMM' : 'MM',
63
+ // fieldDayPlaceholder: () => 'DD',
64
+ // fieldWeekDayPlaceholder: params => params.contentType === 'letter' ? 'EEEE' : 'EE',
65
+ // fieldHoursPlaceholder: () => 'hh',
66
+ // fieldMinutesPlaceholder: () => 'mm',
67
+ // fieldSecondsPlaceholder: () => 'ss',
68
+ // fieldMeridiemPlaceholder: () => 'aa',
69
+ };
70
+
71
+ export var heIL = getPickersLocalization(heILPickers);
@@ -21,4 +21,5 @@ export * from './ukUA';
21
21
  export * from './urPK';
22
22
  export * from './beBY';
23
23
  export * from './ruRU';
24
+ export * from './heIL';
24
25
  export * from './utils/pickersLocaleTextApi';
@@ -4,7 +4,7 @@ import * as React from 'react';
4
4
  import { expect } from 'chai';
5
5
  import { spy } from 'sinon';
6
6
  import { screen, userEvent } from '@mui/monorepo/test/utils';
7
- import { openPicker } from 'test/utils/pickers-utils';
7
+ import { getTextbox, openPicker } from 'test/utils/pickers-utils';
8
8
  import { jsx as _jsx } from "react/jsx-runtime";
9
9
  export var testPickerOpenCloseLifeCycle = function testPickerOpenCloseLifeCycle(ElementToTest, getOptions) {
10
10
  var _getOptions = getOptions(),
@@ -85,6 +85,25 @@ export var testPickerOpenCloseLifeCycle = function testPickerOpenCloseLifeCycle(
85
85
  expect(onAccept.callCount).to.equal(pickerParams.variant === 'mobile' ? 0 : 1);
86
86
  expect(onClose.callCount).to.equal(pickerParams.variant === 'mobile' ? 0 : 1);
87
87
  });
88
+ it('should not select any field section after closing on mobile', function () {
89
+ if (pickerParams.variant !== 'mobile') {
90
+ return;
91
+ }
92
+ render( /*#__PURE__*/_jsx(ElementToTest, {
93
+ defaultValue: values[0]
94
+ }));
95
+
96
+ // Change the value
97
+ setNewValue(values[0]);
98
+ var textbox;
99
+ if (pickerParams.type === 'date-range') {
100
+ textbox = screen.getAllByRole('textbox')[0];
101
+ } else {
102
+ textbox = getTextbox();
103
+ }
104
+ expect(textbox.selectionStart).to.be.equal(0);
105
+ expect(textbox.selectionEnd).to.be.equal(0);
106
+ });
88
107
  it('should call onChange, onClose and onAccept when selecting a value and `props.closeOnSelect` is true', function () {
89
108
  var onChange = spy();
90
109
  var onAccept = spy();
package/locales/deDE.js CHANGED
@@ -36,11 +36,10 @@ const deDEPickers = {
36
36
  minutesClockNumberText: minutes => `${minutes} ${timeViews.minutes}`,
37
37
  secondsClockNumberText: seconds => `${seconds} ${timeViews.seconds}`,
38
38
  // Calendar labels
39
- // calendarWeekNumberHeaderLabel: 'Week number',
40
- // calendarWeekNumberHeaderText: '#',
41
- // calendarWeekNumberAriaLabelText: weekNumber => `Week ${weekNumber}`,
42
- // calendarWeekNumberText: weekNumber => `${weekNumber}`,
43
-
39
+ calendarWeekNumberHeaderLabel: 'Kalenderwoche',
40
+ calendarWeekNumberHeaderText: '#',
41
+ calendarWeekNumberAriaLabelText: weekNumber => `Woche ${weekNumber}`,
42
+ calendarWeekNumberText: weekNumber => `${weekNumber}`,
44
43
  // Open picker labels
45
44
  openDatePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Datum auswählen, gewähltes Datum ist ${utils.format(value, 'fullDate')}` : 'Datum auswählen',
46
45
  openTimePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Uhrzeit auswählen, gewählte Uhrzeit ist ${utils.format(value, 'fullTime')}` : 'Uhrzeit auswählen',
package/locales/frFR.js CHANGED
@@ -21,38 +21,34 @@ const frFRPickers = {
21
21
  okButtonLabel: 'OK',
22
22
  todayButtonLabel: "Aujourd'hui",
23
23
  // Toolbar titles
24
- // datePickerToolbarTitle: 'Select date',
25
- // dateTimePickerToolbarTitle: 'Select date & time',
26
- // timePickerToolbarTitle: 'Select time',
27
- // dateRangePickerToolbarTitle: 'Select date range',
28
-
24
+ datePickerToolbarTitle: 'Choisir une date',
25
+ dateTimePickerToolbarTitle: "Choisir la date et l'heure",
26
+ timePickerToolbarTitle: "Choisir l'heure",
27
+ dateRangePickerToolbarTitle: 'Choisir la plage de dates',
29
28
  // Clock labels
30
29
  clockLabelText: (view, time, adapter) => `Choix des ${views[view]}. ${time === null ? 'Aucune heure choisie' : `L'heure choisie est ${adapter.format(time, 'fullTime')}`}`,
31
30
  hoursClockNumberText: hours => `${hours} heures`,
32
31
  minutesClockNumberText: minutes => `${minutes} minutes`,
33
32
  secondsClockNumberText: seconds => `${seconds} secondes`,
34
33
  // Calendar labels
35
- // calendarWeekNumberHeaderLabel: 'Week number',
36
- // calendarWeekNumberHeaderText: '#',
37
- // calendarWeekNumberAriaLabelText: weekNumber => `Week ${weekNumber}`,
38
- // calendarWeekNumberText: weekNumber => `${weekNumber}`,
39
-
34
+ calendarWeekNumberHeaderLabel: 'Semaine',
35
+ calendarWeekNumberHeaderText: '#',
36
+ calendarWeekNumberAriaLabelText: weekNumber => `Semaine ${weekNumber}`,
37
+ calendarWeekNumberText: weekNumber => `${weekNumber}`,
40
38
  // Open picker labels
41
39
  openDatePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Choisir la date, la date sélectionnée est ${utils.format(value, 'fullDate')}` : 'Choisir la date',
42
40
  openTimePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `Choisir l'heure, l'heure sélectionnée est ${utils.format(value, 'fullTime')}` : "Choisir l'heure",
43
41
  // Table labels
44
42
  timeTableLabel: "choix de l'heure",
45
- dateTableLabel: 'choix de la date'
46
-
43
+ dateTableLabel: 'choix de la date',
47
44
  // Field section placeholders
48
- // fieldYearPlaceholder: params => 'Y'.repeat(params.digitAmount),
49
- // fieldMonthPlaceholder: params => params.contentType === 'letter' ? 'MMMM' : 'MM',
50
- // fieldDayPlaceholder: () => 'DD',
45
+ fieldYearPlaceholder: params => 'A'.repeat(params.digitAmount),
46
+ fieldMonthPlaceholder: params => params.contentType === 'letter' ? 'MMMM' : 'MM',
47
+ fieldDayPlaceholder: () => 'JJ',
51
48
  // fieldWeekDayPlaceholder: params => params.contentType === 'letter' ? 'EEEE' : 'EE',
52
- // fieldHoursPlaceholder: () => 'hh',
53
- // fieldMinutesPlaceholder: () => 'mm',
54
- // fieldSecondsPlaceholder: () => 'ss',
55
- // fieldMeridiemPlaceholder: () => 'aa',
49
+ fieldHoursPlaceholder: () => 'hh',
50
+ fieldMinutesPlaceholder: () => 'mm',
51
+ fieldSecondsPlaceholder: () => 'ss',
52
+ fieldMeridiemPlaceholder: () => 'aa'
56
53
  };
57
-
58
54
  export const frFR = getPickersLocalization(frFRPickers);
@@ -0,0 +1,51 @@
1
+ export declare const heIL: {
2
+ components: {
3
+ MuiLocalizationProvider: {
4
+ defaultProps: {
5
+ localeText: {
6
+ previousMonth?: string | undefined;
7
+ nextMonth?: string | undefined;
8
+ calendarWeekNumberHeaderLabel?: string | undefined;
9
+ calendarWeekNumberHeaderText?: string | undefined;
10
+ calendarWeekNumberAriaLabelText?: ((weekNumber: number) => string) | undefined;
11
+ calendarWeekNumberText?: ((weekNumber: number) => string) | undefined;
12
+ openPreviousView?: string | undefined;
13
+ openNextView?: string | undefined;
14
+ calendarViewSwitchingButtonAriaLabel?: ((currentView: import("..").DateView) => string) | undefined;
15
+ start?: string | undefined;
16
+ end?: string | undefined;
17
+ cancelButtonLabel?: string | undefined;
18
+ clearButtonLabel?: string | undefined;
19
+ okButtonLabel?: string | undefined;
20
+ todayButtonLabel?: string | undefined;
21
+ clockLabelText?: ((view: import("..").TimeView, time: any, adapter: import("../internals").MuiPickersAdapter<any>) => string) | undefined;
22
+ hoursClockNumberText?: ((hours: string) => string) | undefined;
23
+ minutesClockNumberText?: ((minutes: string) => string) | undefined;
24
+ secondsClockNumberText?: ((seconds: string) => string) | undefined;
25
+ openDatePickerDialogue?: ((date: any, utils: import("../internals").MuiPickersAdapter<any>) => string) | undefined;
26
+ openTimePickerDialogue?: ((date: any, utils: import("../internals").MuiPickersAdapter<any>) => string) | undefined;
27
+ timeTableLabel?: string | undefined;
28
+ dateTableLabel?: string | undefined;
29
+ fieldYearPlaceholder?: ((params: {
30
+ digitAmount: number;
31
+ }) => string) | undefined;
32
+ fieldMonthPlaceholder?: ((params: {
33
+ contentType: "letter" | "digit";
34
+ }) => string) | undefined;
35
+ fieldDayPlaceholder?: (() => string) | undefined;
36
+ fieldWeekDayPlaceholder?: ((params: {
37
+ contentType: "letter" | "digit";
38
+ }) => string) | undefined;
39
+ fieldHoursPlaceholder?: (() => string) | undefined;
40
+ fieldMinutesPlaceholder?: (() => string) | undefined;
41
+ fieldSecondsPlaceholder?: (() => string) | undefined;
42
+ fieldMeridiemPlaceholder?: (() => string) | undefined;
43
+ datePickerToolbarTitle?: string | undefined;
44
+ timePickerToolbarTitle?: string | undefined;
45
+ dateTimePickerToolbarTitle?: string | undefined;
46
+ dateRangePickerToolbarTitle?: string | undefined;
47
+ };
48
+ };
49
+ };
50
+ };
51
+ };
@@ -0,0 +1,57 @@
1
+ import { getPickersLocalization } from './utils/getPickersLocalization';
2
+ const views = {
3
+ hours: 'שעות',
4
+ minutes: 'דקות',
5
+ seconds: 'שניות'
6
+ };
7
+ const heILPickers = {
8
+ // Calendar navigation
9
+ previousMonth: 'חודש קודם',
10
+ nextMonth: 'חודש הבא',
11
+ // View navigation
12
+ openPreviousView: 'תצוגה קודמת',
13
+ openNextView: 'תצוגה הבאה',
14
+ calendarViewSwitchingButtonAriaLabel: view => view === 'year' ? 'תצוגת שנה פתוחה, מעבר לתצוגת לוח שנה' : 'תצוגת לוח שנה פתוחה, מעבר לתצוגת שנה',
15
+ // DateRange placeholders
16
+ start: 'תחילה',
17
+ end: 'סיום',
18
+ // Action bar
19
+ cancelButtonLabel: 'ביטול',
20
+ clearButtonLabel: 'ניקוי',
21
+ okButtonLabel: 'אישור',
22
+ todayButtonLabel: 'היום',
23
+ // Toolbar titles
24
+ datePickerToolbarTitle: 'בחירת תאריך',
25
+ dateTimePickerToolbarTitle: 'בחירת תאריך ושעה',
26
+ timePickerToolbarTitle: 'בחירת שעה',
27
+ dateRangePickerToolbarTitle: 'בחירת טווח תאריכים',
28
+ // Clock labels
29
+ clockLabelText: (view, time, adapter) => `בחירת ${views[view]}. ${time === null ? 'לא נבחרה שעה' : `השעה הנבחרת היא ${adapter.format(time, 'fullTime')}`}`,
30
+ hoursClockNumberText: hours => `${hours} שעות`,
31
+ minutesClockNumberText: minutes => `${minutes} דקות`,
32
+ secondsClockNumberText: seconds => `${seconds} שניות`,
33
+ // Calendar labels
34
+ // calendarWeekNumberHeaderLabel: 'Week number',
35
+ // calendarWeekNumberHeaderText: '#',
36
+ // calendarWeekNumberAriaLabelText: weekNumber => `Week ${weekNumber}`,
37
+ // calendarWeekNumberText: weekNumber => `${weekNumber}`,
38
+
39
+ // Open picker labels
40
+ openDatePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `בחירת תאריך, התאריך שנבחר הוא ${utils.format(value, 'fullDate')}` : 'בחירת תאריך',
41
+ openTimePickerDialogue: (value, utils) => value !== null && utils.isValid(value) ? `בחירת שעה, השעה שנבחרה היא ${utils.format(value, 'fullTime')}` : 'בחירת שעה',
42
+ // Table labels
43
+ timeTableLabel: 'בחירת שעה',
44
+ dateTableLabel: 'בחירת תאריך'
45
+
46
+ // Field section placeholders
47
+ // fieldYearPlaceholder: params => 'Y'.repeat(params.digitAmount),
48
+ // fieldMonthPlaceholder: params => params.contentType === 'letter' ? 'MMMM' : 'MM',
49
+ // fieldDayPlaceholder: () => 'DD',
50
+ // fieldWeekDayPlaceholder: params => params.contentType === 'letter' ? 'EEEE' : 'EE',
51
+ // fieldHoursPlaceholder: () => 'hh',
52
+ // fieldMinutesPlaceholder: () => 'mm',
53
+ // fieldSecondsPlaceholder: () => 'ss',
54
+ // fieldMeridiemPlaceholder: () => 'aa',
55
+ };
56
+
57
+ export const heIL = getPickersLocalization(heILPickers);
@@ -21,4 +21,5 @@ export * from './ukUA';
21
21
  export * from './urPK';
22
22
  export * from './beBY';
23
23
  export * from './ruRU';
24
+ export * from './heIL';
24
25
  export * from './utils/pickersLocaleTextApi';
package/locales/index.js CHANGED
@@ -21,4 +21,5 @@ export * from './ukUA';
21
21
  export * from './urPK';
22
22
  export * from './beBY';
23
23
  export * from './ruRU';
24
+ export * from './heIL';
24
25
  export * from './utils/pickersLocaleTextApi';
@@ -31,6 +31,7 @@ const formatTokenMap = {
31
31
  // Day of the month
32
32
  d: 'day',
33
33
  dd: 'day',
34
+ do: 'day',
34
35
  // Day of the week
35
36
  E: {
36
37
  sectionType: 'weekDay',
@@ -22,6 +22,7 @@ const formatTokenMap = {
22
22
  // Day of the month
23
23
  D: 'day',
24
24
  DD: 'day',
25
+ Do: 'day',
25
26
  // Day of the week
26
27
  d: 'weekDay',
27
28
  dd: {
@@ -21,6 +21,7 @@ const formatTokenMap = {
21
21
  // Day of the month
22
22
  D: 'day',
23
23
  DD: 'day',
24
+ Do: 'day',
24
25
  // Day of the week
25
26
  E: 'weekDay',
26
27
  e: 'weekDay',
@@ -339,7 +339,7 @@ process.env.NODE_ENV !== "production" ? DateCalendar.propTypes = {
339
339
  classes: PropTypes.object,
340
340
  className: PropTypes.string,
341
341
  /**
342
- * Overrideable components.
342
+ * Overridable components.
343
343
  * @default {}
344
344
  * @deprecated Please use `slots`.
345
345
  */
@@ -511,7 +511,7 @@ process.env.NODE_ENV !== "production" ? DateCalendar.propTypes = {
511
511
  */
512
512
  slotProps: PropTypes.object,
513
513
  /**
514
- * Overrideable component slots.
514
+ * Overridable component slots.
515
515
  * @default {}
516
516
  */
517
517
  slots: PropTypes.object,