@mui/x-date-pickers 6.7.0 → 6.9.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 (276) hide show
  1. package/AdapterDayjs/AdapterDayjs.d.ts +5 -1
  2. package/AdapterDayjs/AdapterDayjs.js +42 -15
  3. package/AdapterLuxon/AdapterLuxon.d.ts +1 -0
  4. package/AdapterLuxon/AdapterLuxon.js +12 -5
  5. package/AdapterMoment/AdapterMoment.js +18 -9
  6. package/CHANGELOG.md +145 -5541
  7. package/DateCalendar/DateCalendar.js +49 -21
  8. package/DateCalendar/DateCalendar.types.d.ts +8 -3
  9. package/DateCalendar/DayCalendar.d.ts +3 -1
  10. package/DateCalendar/DayCalendar.js +24 -17
  11. package/DateCalendar/PickersCalendarHeader.js +6 -3
  12. package/DateCalendar/useCalendarState.d.ts +5 -3
  13. package/DateCalendar/useCalendarState.js +41 -17
  14. package/DateCalendar/useIsDateDisabled.d.ts +1 -1
  15. package/DateCalendar/useIsDateDisabled.js +5 -3
  16. package/DateField/DateField.js +9 -1
  17. package/DatePicker/DatePicker.js +9 -1
  18. package/DateTimeField/DateTimeField.js +9 -1
  19. package/DateTimePicker/DateTimePicker.js +9 -1
  20. package/DesktopDatePicker/DesktopDatePicker.js +9 -1
  21. package/DesktopDateTimePicker/DesktopDateTimePicker.js +9 -1
  22. package/DesktopTimePicker/DesktopTimePicker.js +8 -0
  23. package/DigitalClock/DigitalClock.js +28 -15
  24. package/MobileDatePicker/MobileDatePicker.js +9 -1
  25. package/MobileDateTimePicker/MobileDateTimePicker.js +9 -1
  26. package/MobileTimePicker/MobileTimePicker.js +8 -0
  27. package/MonthCalendar/MonthCalendar.js +57 -24
  28. package/MonthCalendar/MonthCalendar.types.d.ts +8 -2
  29. package/MultiSectionDigitalClock/MultiSectionDigitalClock.js +28 -15
  30. package/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +1 -1
  31. package/PickersLayout/PickersLayout.js +1 -0
  32. package/PickersLayout/usePickerLayout.js +4 -3
  33. package/PickersShortcuts/PickersShortcuts.d.ts +12 -2
  34. package/PickersShortcuts/PickersShortcuts.js +10 -2
  35. package/PickersShortcuts/index.d.ts +1 -1
  36. package/StaticDatePicker/StaticDatePicker.js +9 -1
  37. package/StaticDateTimePicker/StaticDateTimePicker.js +9 -1
  38. package/StaticTimePicker/StaticTimePicker.js +8 -0
  39. package/TimeClock/TimeClock.js +27 -15
  40. package/TimeField/TimeField.js +9 -1
  41. package/TimePicker/TimePicker.js +8 -0
  42. package/YearCalendar/YearCalendar.js +55 -22
  43. package/YearCalendar/YearCalendar.types.d.ts +8 -2
  44. package/dateTimeViewRenderers/dateTimeViewRenderers.d.ts +1 -1
  45. package/dateTimeViewRenderers/dateTimeViewRenderers.js +5 -2
  46. package/dateViewRenderers/dateViewRenderers.d.ts +1 -1
  47. package/dateViewRenderers/dateViewRenderers.js +4 -2
  48. package/index.js +1 -1
  49. package/internals/hooks/date-helpers-hooks.d.ts +4 -2
  50. package/internals/hooks/date-helpers-hooks.js +8 -6
  51. package/internals/hooks/useDesktopPicker/useDesktopPicker.js +2 -0
  52. package/internals/hooks/useField/useField.d.ts +3 -1
  53. package/internals/hooks/useField/useField.js +23 -7
  54. package/internals/hooks/useField/useField.types.d.ts +6 -4
  55. package/internals/hooks/useField/useField.utils.d.ts +13 -11
  56. package/internals/hooks/useField/useField.utils.js +55 -43
  57. package/internals/hooks/useField/useFieldCharacterEditing.d.ts +3 -2
  58. package/internals/hooks/useField/useFieldCharacterEditing.js +6 -5
  59. package/internals/hooks/useField/useFieldState.d.ts +1 -0
  60. package/internals/hooks/useField/useFieldState.js +33 -23
  61. package/internals/hooks/useMobilePicker/useMobilePicker.js +2 -0
  62. package/internals/hooks/usePicker/usePickerValue.js +45 -9
  63. package/internals/hooks/usePicker/usePickerValue.types.d.ts +22 -6
  64. package/internals/hooks/usePicker/usePickerViews.d.ts +2 -1
  65. package/internals/hooks/usePicker/usePickerViews.js +7 -2
  66. package/internals/hooks/useUtils.d.ts +3 -2
  67. package/internals/hooks/useUtils.js +5 -2
  68. package/internals/hooks/useValueWithTimezone.d.ts +33 -0
  69. package/internals/hooks/useValueWithTimezone.js +69 -0
  70. package/internals/index.d.ts +1 -0
  71. package/internals/index.js +1 -0
  72. package/internals/models/props/clock.d.ts +2 -2
  73. package/internals/utils/date-utils.d.ts +4 -4
  74. package/internals/utils/date-utils.js +4 -12
  75. package/internals/utils/fields.js +1 -1
  76. package/internals/utils/getDefaultReferenceDate.d.ts +12 -3
  77. package/internals/utils/getDefaultReferenceDate.js +4 -4
  78. package/internals/utils/validation/extractValidationProps.d.ts +1 -1
  79. package/internals/utils/validation/validateDate.d.ts +3 -2
  80. package/internals/utils/validation/validateDate.js +14 -6
  81. package/internals/utils/validation/validateTime.d.ts +3 -2
  82. package/internals/utils/validation/validateTime.js +8 -8
  83. package/internals/utils/valueManagers.js +2 -1
  84. package/legacy/AdapterDayjs/AdapterDayjs.js +45 -16
  85. package/legacy/AdapterLuxon/AdapterLuxon.js +13 -6
  86. package/legacy/AdapterMoment/AdapterMoment.js +18 -9
  87. package/legacy/DateCalendar/DateCalendar.js +47 -24
  88. package/legacy/DateCalendar/DayCalendar.js +24 -17
  89. package/legacy/DateCalendar/PickersCalendarHeader.js +6 -3
  90. package/legacy/DateCalendar/useCalendarState.js +40 -17
  91. package/legacy/DateCalendar/useIsDateDisabled.js +5 -3
  92. package/legacy/DateField/DateField.js +9 -1
  93. package/legacy/DatePicker/DatePicker.js +9 -1
  94. package/legacy/DateTimeField/DateTimeField.js +9 -1
  95. package/legacy/DateTimePicker/DateTimePicker.js +9 -1
  96. package/legacy/DesktopDatePicker/DesktopDatePicker.js +9 -1
  97. package/legacy/DesktopDateTimePicker/DesktopDateTimePicker.js +9 -1
  98. package/legacy/DesktopTimePicker/DesktopTimePicker.js +8 -0
  99. package/legacy/DigitalClock/DigitalClock.js +26 -16
  100. package/legacy/MobileDatePicker/MobileDatePicker.js +9 -1
  101. package/legacy/MobileDateTimePicker/MobileDateTimePicker.js +9 -1
  102. package/legacy/MobileTimePicker/MobileTimePicker.js +8 -0
  103. package/legacy/MonthCalendar/MonthCalendar.js +61 -32
  104. package/legacy/MultiSectionDigitalClock/MultiSectionDigitalClock.js +27 -16
  105. package/legacy/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +1 -1
  106. package/legacy/PickersLayout/PickersLayout.js +1 -0
  107. package/legacy/PickersLayout/usePickerLayout.js +3 -2
  108. package/legacy/PickersShortcuts/PickersShortcuts.js +10 -2
  109. package/legacy/StaticDatePicker/StaticDatePicker.js +9 -1
  110. package/legacy/StaticDateTimePicker/StaticDateTimePicker.js +9 -1
  111. package/legacy/StaticTimePicker/StaticTimePicker.js +8 -0
  112. package/legacy/TimeClock/TimeClock.js +25 -18
  113. package/legacy/TimeField/TimeField.js +9 -1
  114. package/legacy/TimePicker/TimePicker.js +8 -0
  115. package/legacy/YearCalendar/YearCalendar.js +59 -30
  116. package/legacy/dateTimeViewRenderers/dateTimeViewRenderers.js +5 -2
  117. package/legacy/dateViewRenderers/dateViewRenderers.js +4 -2
  118. package/legacy/index.js +1 -1
  119. package/legacy/internals/hooks/date-helpers-hooks.js +8 -6
  120. package/legacy/internals/hooks/useDesktopPicker/useDesktopPicker.js +2 -0
  121. package/legacy/internals/hooks/useField/useField.js +22 -6
  122. package/legacy/internals/hooks/useField/useField.utils.js +56 -44
  123. package/legacy/internals/hooks/useField/useFieldCharacterEditing.js +6 -5
  124. package/legacy/internals/hooks/useField/useFieldState.js +42 -33
  125. package/legacy/internals/hooks/useMobilePicker/useMobilePicker.js +2 -0
  126. package/legacy/internals/hooks/usePicker/usePickerValue.js +46 -9
  127. package/legacy/internals/hooks/usePicker/usePickerViews.js +7 -2
  128. package/legacy/internals/hooks/useUtils.js +5 -2
  129. package/legacy/internals/hooks/useValueWithTimezone.js +81 -0
  130. package/legacy/internals/index.js +1 -0
  131. package/legacy/internals/utils/date-utils.js +5 -13
  132. package/legacy/internals/utils/fields.js +1 -1
  133. package/legacy/internals/utils/getDefaultReferenceDate.js +4 -4
  134. package/legacy/internals/utils/validation/validateDate.js +12 -6
  135. package/legacy/internals/utils/validation/validateTime.js +8 -8
  136. package/legacy/internals/utils/valueManagers.js +3 -0
  137. package/legacy/locales/csCZ.js +2 -2
  138. package/legacy/locales/elGR.js +93 -0
  139. package/legacy/locales/index.js +1 -0
  140. package/legacy/tests/describeAdapters/describeAdapters.js +3 -1
  141. package/legacy/tests/describeGregorianAdapter/testCalculations.js +69 -27
  142. package/legacy/tests/describeJalaliAdapter/testCalculations.js +21 -0
  143. package/legacy/timeViewRenderers/timeViewRenderers.js +12 -6
  144. package/locales/csCZ.js +2 -2
  145. package/locales/elGR.d.ts +53 -0
  146. package/locales/elGR.js +57 -0
  147. package/locales/index.d.ts +1 -0
  148. package/locales/index.js +1 -0
  149. package/models/adapters.d.ts +2 -2
  150. package/models/timezone.d.ts +10 -0
  151. package/modern/AdapterDayjs/AdapterDayjs.js +41 -15
  152. package/modern/AdapterLuxon/AdapterLuxon.js +12 -4
  153. package/modern/AdapterMoment/AdapterMoment.js +18 -9
  154. package/modern/DateCalendar/DateCalendar.js +49 -21
  155. package/modern/DateCalendar/DayCalendar.js +24 -17
  156. package/modern/DateCalendar/PickersCalendarHeader.js +6 -3
  157. package/modern/DateCalendar/useCalendarState.js +41 -16
  158. package/modern/DateCalendar/useIsDateDisabled.js +5 -3
  159. package/modern/DateField/DateField.js +9 -1
  160. package/modern/DatePicker/DatePicker.js +9 -1
  161. package/modern/DateTimeField/DateTimeField.js +9 -1
  162. package/modern/DateTimePicker/DateTimePicker.js +9 -1
  163. package/modern/DesktopDatePicker/DesktopDatePicker.js +9 -1
  164. package/modern/DesktopDateTimePicker/DesktopDateTimePicker.js +9 -1
  165. package/modern/DesktopTimePicker/DesktopTimePicker.js +8 -0
  166. package/modern/DigitalClock/DigitalClock.js +28 -15
  167. package/modern/MobileDatePicker/MobileDatePicker.js +9 -1
  168. package/modern/MobileDateTimePicker/MobileDateTimePicker.js +9 -1
  169. package/modern/MobileTimePicker/MobileTimePicker.js +8 -0
  170. package/modern/MonthCalendar/MonthCalendar.js +57 -24
  171. package/modern/MultiSectionDigitalClock/MultiSectionDigitalClock.js +28 -15
  172. package/modern/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +1 -1
  173. package/modern/PickersLayout/PickersLayout.js +1 -0
  174. package/modern/PickersLayout/usePickerLayout.js +4 -3
  175. package/modern/PickersShortcuts/PickersShortcuts.js +10 -2
  176. package/modern/StaticDatePicker/StaticDatePicker.js +9 -1
  177. package/modern/StaticDateTimePicker/StaticDateTimePicker.js +9 -1
  178. package/modern/StaticTimePicker/StaticTimePicker.js +8 -0
  179. package/modern/TimeClock/TimeClock.js +27 -15
  180. package/modern/TimeField/TimeField.js +9 -1
  181. package/modern/TimePicker/TimePicker.js +8 -0
  182. package/modern/YearCalendar/YearCalendar.js +55 -22
  183. package/modern/dateTimeViewRenderers/dateTimeViewRenderers.js +5 -2
  184. package/modern/dateViewRenderers/dateViewRenderers.js +4 -2
  185. package/modern/index.js +1 -1
  186. package/modern/internals/hooks/date-helpers-hooks.js +8 -6
  187. package/modern/internals/hooks/useDesktopPicker/useDesktopPicker.js +2 -0
  188. package/modern/internals/hooks/useField/useField.js +23 -7
  189. package/modern/internals/hooks/useField/useField.utils.js +55 -43
  190. package/modern/internals/hooks/useField/useFieldCharacterEditing.js +6 -5
  191. package/modern/internals/hooks/useField/useFieldState.js +33 -22
  192. package/modern/internals/hooks/useMobilePicker/useMobilePicker.js +2 -0
  193. package/modern/internals/hooks/usePicker/usePickerValue.js +45 -9
  194. package/modern/internals/hooks/usePicker/usePickerViews.js +7 -2
  195. package/modern/internals/hooks/useUtils.js +5 -2
  196. package/modern/internals/hooks/useValueWithTimezone.js +68 -0
  197. package/modern/internals/index.js +1 -0
  198. package/modern/internals/utils/date-utils.js +4 -12
  199. package/modern/internals/utils/fields.js +1 -1
  200. package/modern/internals/utils/getDefaultReferenceDate.js +4 -4
  201. package/modern/internals/utils/validation/validateDate.js +14 -6
  202. package/modern/internals/utils/validation/validateTime.js +8 -8
  203. package/modern/internals/utils/valueManagers.js +2 -1
  204. package/modern/locales/csCZ.js +2 -2
  205. package/modern/locales/elGR.js +57 -0
  206. package/modern/locales/index.js +1 -0
  207. package/modern/tests/describeAdapters/describeAdapters.js +3 -1
  208. package/modern/tests/describeGregorianAdapter/testCalculations.js +69 -27
  209. package/modern/tests/describeJalaliAdapter/testCalculations.js +21 -0
  210. package/modern/timeViewRenderers/timeViewRenderers.js +12 -6
  211. package/node/AdapterDayjs/AdapterDayjs.js +41 -15
  212. package/node/AdapterLuxon/AdapterLuxon.js +12 -4
  213. package/node/AdapterMoment/AdapterMoment.js +18 -9
  214. package/node/DateCalendar/DateCalendar.js +48 -20
  215. package/node/DateCalendar/DayCalendar.js +24 -17
  216. package/node/DateCalendar/PickersCalendarHeader.js +6 -3
  217. package/node/DateCalendar/useCalendarState.js +41 -16
  218. package/node/DateCalendar/useIsDateDisabled.js +5 -3
  219. package/node/DateField/DateField.js +9 -1
  220. package/node/DatePicker/DatePicker.js +9 -1
  221. package/node/DateTimeField/DateTimeField.js +9 -1
  222. package/node/DateTimePicker/DateTimePicker.js +9 -1
  223. package/node/DesktopDatePicker/DesktopDatePicker.js +9 -1
  224. package/node/DesktopDateTimePicker/DesktopDateTimePicker.js +9 -1
  225. package/node/DesktopTimePicker/DesktopTimePicker.js +8 -0
  226. package/node/DigitalClock/DigitalClock.js +28 -15
  227. package/node/MobileDatePicker/MobileDatePicker.js +9 -1
  228. package/node/MobileDateTimePicker/MobileDateTimePicker.js +9 -1
  229. package/node/MobileTimePicker/MobileTimePicker.js +8 -0
  230. package/node/MonthCalendar/MonthCalendar.js +57 -24
  231. package/node/MultiSectionDigitalClock/MultiSectionDigitalClock.js +28 -15
  232. package/node/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +1 -1
  233. package/node/PickersLayout/PickersLayout.js +1 -0
  234. package/node/PickersLayout/usePickerLayout.js +4 -3
  235. package/node/PickersShortcuts/PickersShortcuts.js +10 -2
  236. package/node/StaticDatePicker/StaticDatePicker.js +9 -1
  237. package/node/StaticDateTimePicker/StaticDateTimePicker.js +9 -1
  238. package/node/StaticTimePicker/StaticTimePicker.js +8 -0
  239. package/node/TimeClock/TimeClock.js +26 -14
  240. package/node/TimeField/TimeField.js +9 -1
  241. package/node/TimePicker/TimePicker.js +8 -0
  242. package/node/YearCalendar/YearCalendar.js +55 -22
  243. package/node/dateTimeViewRenderers/dateTimeViewRenderers.js +5 -2
  244. package/node/dateViewRenderers/dateViewRenderers.js +4 -2
  245. package/node/index.js +1 -1
  246. package/node/internals/hooks/date-helpers-hooks.js +8 -6
  247. package/node/internals/hooks/useDesktopPicker/useDesktopPicker.js +2 -0
  248. package/node/internals/hooks/useField/useField.js +23 -7
  249. package/node/internals/hooks/useField/useField.utils.js +55 -43
  250. package/node/internals/hooks/useField/useFieldCharacterEditing.js +6 -5
  251. package/node/internals/hooks/useField/useFieldState.js +33 -22
  252. package/node/internals/hooks/useMobilePicker/useMobilePicker.js +2 -0
  253. package/node/internals/hooks/usePicker/usePickerValue.js +44 -9
  254. package/node/internals/hooks/usePicker/usePickerViews.js +7 -2
  255. package/node/internals/hooks/useUtils.js +5 -2
  256. package/node/internals/hooks/useValueWithTimezone.js +79 -0
  257. package/node/internals/index.js +7 -0
  258. package/node/internals/utils/date-utils.js +5 -14
  259. package/node/internals/utils/fields.js +1 -1
  260. package/node/internals/utils/getDefaultReferenceDate.js +5 -4
  261. package/node/internals/utils/validation/validateDate.js +14 -6
  262. package/node/internals/utils/validation/validateTime.js +8 -8
  263. package/node/internals/utils/valueManagers.js +2 -1
  264. package/node/locales/csCZ.js +2 -2
  265. package/node/locales/elGR.js +64 -0
  266. package/node/locales/index.js +11 -0
  267. package/node/tests/describeAdapters/describeAdapters.js +3 -1
  268. package/node/tests/describeGregorianAdapter/testCalculations.js +69 -27
  269. package/node/tests/describeJalaliAdapter/testCalculations.js +21 -0
  270. package/node/timeViewRenderers/timeViewRenderers.js +12 -6
  271. package/package.json +2 -2
  272. package/tests/describeAdapters/describeAdapters.js +3 -1
  273. package/tests/describeGregorianAdapter/testCalculations.js +69 -27
  274. package/tests/describeJalaliAdapter/testCalculations.js +21 -0
  275. package/timeViewRenderers/timeViewRenderers.d.ts +3 -3
  276. package/timeViewRenderers/timeViewRenderers.js +12 -6
@@ -30,7 +30,7 @@ export declare class AdapterDayjs implements MuiPickersAdapter<Dayjs, string> {
30
30
  isMUIAdapter: boolean;
31
31
  isTimezoneCompatible: boolean;
32
32
  lib: string;
33
- rawDayJsInstance: typeof defaultDayjs;
33
+ rawDayJsInstance?: typeof defaultDayjs;
34
34
  dayjs: Constructor;
35
35
  locale?: string;
36
36
  formats: AdapterFormats;
@@ -44,6 +44,10 @@ export declare class AdapterDayjs implements MuiPickersAdapter<Dayjs, string> {
44
44
  private hasUTCPlugin;
45
45
  private hasTimezonePlugin;
46
46
  private isSame;
47
+ /**
48
+ * Replace "default" by undefined before passing it to `dayjs
49
+ */
50
+ private cleanTimezone;
47
51
  private createSystemDate;
48
52
  private createUTCDate;
49
53
  private createTZDate;
@@ -158,6 +158,7 @@ export class AdapterDayjs {
158
158
  formats,
159
159
  instance
160
160
  } = {}) {
161
+ var _this$rawDayJsInstanc;
161
162
  this.isMUIAdapter = true;
162
163
  this.isTimezoneCompatible = true;
163
164
  this.lib = 'dayjs';
@@ -183,9 +184,27 @@ export class AdapterDayjs {
183
184
  const comparingInValueTimezone = this.setTimezone(comparing, this.getTimezone(value));
184
185
  return value.format(comparisonTemplate) === comparingInValueTimezone.format(comparisonTemplate);
185
186
  };
187
+ /**
188
+ * Replace "default" by undefined before passing it to `dayjs
189
+ */
190
+ this.cleanTimezone = timezone => timezone === 'default' ? undefined : timezone;
186
191
  this.createSystemDate = value => {
187
192
  // TODO v7: Stop using `this.rawDayJsInstance` (drop the `instance` param on the adapters)
188
- return this.rawDayJsInstance(value);
193
+ /* istanbul ignore next */
194
+ if (this.rawDayJsInstance) {
195
+ return this.rawDayJsInstance(value);
196
+ }
197
+ if (this.hasUTCPlugin() && this.hasTimezonePlugin()) {
198
+ const timezone = defaultDayjs.tz.guess();
199
+
200
+ // We can't change the system timezone in the tests
201
+ /* istanbul ignore next */
202
+ if (timezone !== 'UTC') {
203
+ return defaultDayjs.tz(value, timezone);
204
+ }
205
+ return defaultDayjs(value);
206
+ }
207
+ return defaultDayjs(value);
189
208
  };
190
209
  this.createUTCDate = value => {
191
210
  /* istanbul ignore next */
@@ -204,9 +223,8 @@ export class AdapterDayjs {
204
223
  if (!this.hasTimezonePlugin()) {
205
224
  throw new Error(MISSING_TIMEZONE_PLUGIN);
206
225
  }
207
- const cleanTimezone = timezone === 'default' ? undefined : timezone;
208
226
  const keepLocalTime = value !== undefined && !value.endsWith('Z');
209
- return defaultDayjs(value).tz(cleanTimezone, keepLocalTime);
227
+ return defaultDayjs(value).tz(this.cleanTimezone(timezone), keepLocalTime);
210
228
  };
211
229
  this.getLocaleFormats = () => {
212
230
  const locales = defaultDayjs.Ls;
@@ -264,11 +282,12 @@ export class AdapterDayjs {
264
282
  }
265
283
  return value.utc();
266
284
  }
285
+
286
+ // We know that we have the UTC plugin.
287
+ // Otherwise, the value timezone would always equal "system".
288
+ // And it would be caught by the first "if" of this method.
267
289
  if (timezone === 'system') {
268
- if (this.hasUTCPlugin()) {
269
- return value.local();
270
- }
271
- return value;
290
+ return value.local();
272
291
  }
273
292
  if (!this.hasTimezonePlugin()) {
274
293
  if (timezone === 'default') {
@@ -278,8 +297,7 @@ export class AdapterDayjs {
278
297
  /* istanbul ignore next */
279
298
  throw new Error(MISSING_TIMEZONE_PLUGIN);
280
299
  }
281
- const cleanZone = timezone === 'default' ? undefined : timezone;
282
- return defaultDayjs.tz(value, cleanZone);
300
+ return defaultDayjs.tz(value, this.cleanTimezone(timezone));
283
301
  };
284
302
  this.toJsDate = value => {
285
303
  return value.toDate();
@@ -338,7 +356,7 @@ export class AdapterDayjs {
338
356
  if (value === null && comparing === null) {
339
357
  return true;
340
358
  }
341
- return this.dayjs(value).isSame(comparing);
359
+ return this.dayjs(value).toDate().getTime() === this.dayjs(comparing).toDate().getTime();
342
360
  };
343
361
  this.isSameYear = (value, comparing) => {
344
362
  return this.isSame(value, comparing, 'YYYY');
@@ -498,9 +516,10 @@ export class AdapterDayjs {
498
516
  return [0, 1, 2, 3, 4, 5, 6].map(diff => this.formatByString(start.add(diff, 'day'), 'dd'));
499
517
  };
500
518
  this.getWeekArray = value => {
501
- const cleanLocale = this.setLocaleToValue(value);
502
- const start = cleanLocale.startOf('month').startOf('week');
503
- const end = cleanLocale.endOf('month').endOf('week');
519
+ const timezone = this.getTimezone(value);
520
+ const cleanValue = this.setLocaleToValue(value);
521
+ const start = cleanValue.startOf('month').startOf('week');
522
+ const end = cleanValue.endOf('month').endOf('week');
504
523
  let count = 0;
505
524
  let current = start;
506
525
  const nestedWeeks = [];
@@ -509,6 +528,14 @@ export class AdapterDayjs {
509
528
  nestedWeeks[weekNumber] = nestedWeeks[weekNumber] || [];
510
529
  nestedWeeks[weekNumber].push(current);
511
530
  current = current.add(1, 'day');
531
+
532
+ // If the new day does not have the same offset as the old one (when switching to summer day time for example),
533
+ // Then dayjs will not automatically adjust the offset (moment does)
534
+ // We have to parse again the value to make sure the `fixOffset` method is applied
535
+ // See https://github.com/iamkun/dayjs/blob/b3624de619d6e734cd0ffdbbd3502185041c1b60/src/plugin/timezone/index.js#L72
536
+ if (this.hasTimezonePlugin() && timezone !== 'UTC' && timezone !== 'system') {
537
+ current = current.tz(this.cleanTimezone(timezone), true);
538
+ }
512
539
  count += 1;
513
540
  }
514
541
  return nestedWeeks;
@@ -530,8 +557,8 @@ export class AdapterDayjs {
530
557
  this.getMeridiemText = ampm => {
531
558
  return ampm === 'am' ? 'AM' : 'PM';
532
559
  };
533
- this.rawDayJsInstance = instance || defaultDayjs;
534
- this.dayjs = withLocale(this.rawDayJsInstance, _locale);
560
+ this.rawDayJsInstance = instance;
561
+ this.dayjs = withLocale((_this$rawDayJsInstanc = this.rawDayJsInstance) != null ? _this$rawDayJsInstanc : defaultDayjs, _locale);
535
562
  this.locale = _locale;
536
563
  this.formats = _extends({}, defaultFormats, formats);
537
564
  defaultDayjs.extend(weekOfYear);
@@ -37,6 +37,7 @@ export declare class AdapterLuxon implements MuiPickersAdapter<DateTime, string>
37
37
  };
38
38
  formatTokenMap: FieldFormatTokenMap;
39
39
  constructor({ locale, formats }?: AdapterOptions<string, never>);
40
+ private setLocaleToValue;
40
41
  date: (value?: any) => DateTime | null;
41
42
  dateWithTimezone: (value: string | null | undefined, timezone: PickersTimezone) => DateTime | null;
42
43
  getTimezone: (value: DateTime) => string;
@@ -178,6 +178,13 @@ export class AdapterLuxon {
178
178
  end: "'"
179
179
  };
180
180
  this.formatTokenMap = formatTokenMap;
181
+ this.setLocaleToValue = value => {
182
+ const expectedLocale = this.getCurrentLocaleCode();
183
+ if (expectedLocale === value.locale) {
184
+ return value;
185
+ }
186
+ return value.setLocale(expectedLocale);
187
+ };
181
188
  this.date = value => {
182
189
  if (typeof value === 'undefined') {
183
190
  return DateTime.local();
@@ -219,12 +226,11 @@ export class AdapterLuxon {
219
226
  });
220
227
  };
221
228
  this.getTimezone = value => {
222
- var _value$zoneName;
223
229
  // When using the system zone, we want to return "system", not something like "Europe/Paris"
224
230
  if (value.zone.type === 'system') {
225
231
  return 'system';
226
232
  }
227
- return (_value$zoneName = value.zoneName) != null ? _value$zoneName : 'system';
233
+ return value.zoneName;
228
234
  };
229
235
  this.setTimezone = (value, timezone) => {
230
236
  if (!value.zone.equals(Info.normalizeZone(timezone))) {
@@ -239,7 +245,7 @@ export class AdapterLuxon {
239
245
  return DateTime.fromISO(isoString);
240
246
  };
241
247
  this.toISO = value => {
242
- return value.toISO({
248
+ return value.toUTC().toISO({
243
249
  format: 'extended'
244
250
  });
245
251
  };
@@ -522,11 +528,12 @@ export class AdapterLuxon {
522
528
  });
523
529
  };
524
530
  this.getWeekArray = value => {
531
+ const cleanValue = this.setLocaleToValue(value);
525
532
  const {
526
533
  days
527
- } = value.endOf('month').endOf('week').diff(value.startOf('month').startOf('week'), 'days').toObject();
534
+ } = cleanValue.endOf('month').endOf('week').diff(cleanValue.startOf('month').startOf('week'), 'days').toObject();
528
535
  const weeks = [];
529
- new Array(Math.round(days)).fill(0).map((_, i) => i).map(day => value.startOf('month').startOf('week').plus({
536
+ new Array(Math.round(days)).fill(0).map((_, i) => i).map(day => cleanValue.startOf('month').startOf('week').plus({
530
537
  days: day
531
538
  })).forEach((v, i) => {
532
539
  if (i === 0 || i % 7 === 0 && i > 6) {
@@ -6,7 +6,11 @@ const formatTokenMap = {
6
6
  // Year
7
7
  Y: 'year',
8
8
  YY: 'year',
9
- YYYY: 'year',
9
+ YYYY: {
10
+ sectionType: 'year',
11
+ contentType: 'digit',
12
+ maxLength: 4
13
+ },
10
14
  // Month
11
15
  M: {
12
16
  sectionType: 'month',
@@ -234,6 +238,9 @@ export class AdapterMoment {
234
238
  };
235
239
  this.setTimezone = (value, timezone) => {
236
240
  var _this$moment$defaultZ2, _this$moment$defaultZ3;
241
+ if (this.getTimezone(value) === timezone) {
242
+ return value;
243
+ }
237
244
  if (timezone === 'UTC') {
238
245
  return value.clone().utc();
239
246
  }
@@ -241,15 +248,17 @@ export class AdapterMoment {
241
248
  return value.clone().local();
242
249
  }
243
250
  if (!this.hasTimezonePlugin()) {
244
- if (timezone === 'default') {
245
- return value;
246
- }
247
-
248
251
  /* istanbul ignore next */
249
- throw new Error(MISSING_TIMEZONE_PLUGIN);
252
+ if (timezone !== 'default') {
253
+ throw new Error(MISSING_TIMEZONE_PLUGIN);
254
+ }
255
+ return value;
250
256
  }
251
257
  const cleanZone = timezone === 'default' ? // @ts-ignore
252
258
  (_this$moment$defaultZ2 = (_this$moment$defaultZ3 = this.moment.defaultZone) == null ? void 0 : _this$moment$defaultZ3.name) != null ? _this$moment$defaultZ2 : 'system' : timezone;
259
+ if (cleanZone === 'system') {
260
+ return value.clone().local();
261
+ }
253
262
  const newValue = value.clone();
254
263
  newValue.tz(cleanZone);
255
264
  return newValue;
@@ -463,9 +472,9 @@ export class AdapterMoment {
463
472
  return defaultMoment.weekdaysShort(true);
464
473
  };
465
474
  this.getWeekArray = value => {
466
- const cleanLocale = this.setLocaleToValue(value);
467
- const start = cleanLocale.clone().startOf('month').startOf('week');
468
- const end = cleanLocale.clone().endOf('month').endOf('week');
475
+ const cleanValue = this.setLocaleToValue(value);
476
+ const start = cleanValue.clone().startOf('month').startOf('week');
477
+ const end = cleanValue.clone().endOf('month').endOf('week');
469
478
  let count = 0;
470
479
  let current = start;
471
480
  const nestedWeeks = [];