@mui/x-date-pickers 6.5.0 → 6.6.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 (297) hide show
  1. package/AdapterDateFns/AdapterDateFns.d.ts +6 -0
  2. package/AdapterDateFns/AdapterDateFns.js +18 -0
  3. package/AdapterDateFnsJalali/AdapterDateFnsJalali.d.ts +6 -0
  4. package/AdapterDateFnsJalali/AdapterDateFnsJalali.js +18 -0
  5. package/AdapterDayjs/AdapterDayjs.d.ts +14 -1
  6. package/AdapterDayjs/AdapterDayjs.js +131 -14
  7. package/AdapterLuxon/AdapterLuxon.d.ts +7 -1
  8. package/AdapterLuxon/AdapterLuxon.js +58 -9
  9. package/AdapterMoment/AdapterMoment.d.ts +12 -1
  10. package/AdapterMoment/AdapterMoment.js +91 -2
  11. package/AdapterMomentHijri/AdapterMomentHijri.d.ts +4 -0
  12. package/AdapterMomentHijri/AdapterMomentHijri.js +10 -0
  13. package/AdapterMomentJalaali/AdapterMomentJalaali.d.ts +4 -0
  14. package/AdapterMomentJalaali/AdapterMomentJalaali.js +10 -0
  15. package/CHANGELOG.md +78 -2
  16. package/DateCalendar/DateCalendar.js +2 -2
  17. package/DateCalendar/DayCalendar.d.ts +1 -1
  18. package/DateCalendar/PickersCalendarHeader.d.ts +1 -1
  19. package/DateCalendar/PickersCalendarHeader.js +2 -2
  20. package/DateCalendar/PickersFadeTransitionGroup.d.ts +1 -1
  21. package/DateCalendar/PickersSlideTransition.d.ts +1 -1
  22. package/DateField/DateField.js +6 -0
  23. package/DateField/DateField.types.d.ts +1 -1
  24. package/DateTimeField/DateTimeField.js +6 -0
  25. package/DateTimeField/DateTimeField.types.d.ts +1 -1
  26. package/DateTimePicker/DateTimePicker.js +19 -2
  27. package/DateTimePicker/DateTimePicker.types.d.ts +4 -3
  28. package/DateTimePicker/DateTimePickerTabs.d.ts +3 -3
  29. package/DateTimePicker/DateTimePickerTabs.js +6 -5
  30. package/DateTimePicker/DateTimePickerToolbar.d.ts +5 -4
  31. package/DateTimePicker/DateTimePickerToolbar.js +46 -22
  32. package/DateTimePicker/shared.d.ts +6 -6
  33. package/DayCalendarSkeleton/DayCalendarSkeleton.d.ts +1 -1
  34. package/DesktopDatePicker/DesktopDatePicker.js +2 -2
  35. package/DesktopDateTimePicker/DesktopDateTimePicker.js +53 -10
  36. package/DesktopDateTimePicker/DesktopDateTimePicker.types.d.ts +10 -3
  37. package/DesktopTimePicker/DesktopTimePicker.js +2 -2
  38. package/MobileDateTimePicker/MobileDateTimePicker.types.d.ts +8 -7
  39. package/MonthCalendar/MonthCalendar.js +2 -2
  40. package/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +4 -3
  41. package/PickersActionBar/PickersActionBar.d.ts +2 -2
  42. package/PickersLayout/PickersLayout.d.ts +1 -1
  43. package/PickersShortcuts/PickersShortcuts.d.ts +2 -2
  44. package/README.md +5 -5
  45. package/StaticDateTimePicker/StaticDateTimePicker.types.d.ts +1 -1
  46. package/TimeClock/Clock.d.ts +1 -1
  47. package/TimeClock/ClockNumber.d.ts +1 -1
  48. package/TimeClock/ClockNumbers.d.ts +2 -2
  49. package/TimeClock/ClockPointer.d.ts +1 -1
  50. package/TimeField/TimeField.js +6 -0
  51. package/TimeField/TimeField.types.d.ts +1 -1
  52. package/TimePicker/TimePickerToolbar.d.ts +2 -2
  53. package/YearCalendar/YearCalendar.js +2 -2
  54. package/dateTimeViewRenderers/dateTimeViewRenderers.d.ts +13 -0
  55. package/dateTimeViewRenderers/dateTimeViewRenderers.js +148 -0
  56. package/dateTimeViewRenderers/index.d.ts +2 -0
  57. package/dateTimeViewRenderers/index.js +1 -0
  58. package/dateTimeViewRenderers/package.json +6 -0
  59. package/dateViewRenderers/dateViewRenderers.d.ts +3 -2
  60. package/dateViewRenderers/dateViewRenderers.js +2 -2
  61. package/icons/index.d.ts +42 -0
  62. package/{internals/components/icons → icons}/index.js +7 -7
  63. package/icons/package.json +6 -0
  64. package/index.d.ts +1 -0
  65. package/index.js +3 -2
  66. package/internals/components/DateTimeViewWrapper/DateTimeViewWrapper.d.ts +2 -0
  67. package/internals/components/DateTimeViewWrapper/DateTimeViewWrapper.js +5 -0
  68. package/internals/components/DateTimeViewWrapper/index.d.ts +1 -0
  69. package/internals/components/DateTimeViewWrapper/index.js +1 -0
  70. package/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +3 -3
  71. package/internals/components/PickersModalDialog.d.ts +1 -1
  72. package/internals/components/PickersPopper.d.ts +1 -1
  73. package/internals/components/PickersToolbarButton.d.ts +1 -0
  74. package/internals/components/PickersToolbarButton.js +8 -3
  75. package/internals/constants/dimensions.d.ts +1 -0
  76. package/internals/constants/dimensions.js +2 -1
  77. package/internals/demo/DemoContainer.d.ts +2 -2
  78. package/internals/hooks/useDesktopPicker/useDesktopPicker.d.ts +2 -2
  79. package/internals/hooks/useDesktopPicker/useDesktopPicker.types.d.ts +2 -2
  80. package/internals/hooks/useField/useField.d.ts +1 -1
  81. package/internals/hooks/useField/useField.js +8 -3
  82. package/internals/hooks/useField/useField.types.d.ts +8 -2
  83. package/internals/hooks/useField/useFieldState.d.ts +1 -1
  84. package/internals/hooks/useField/useFieldState.js +22 -2
  85. package/internals/hooks/useMobilePicker/useMobilePicker.d.ts +2 -2
  86. package/internals/hooks/useMobilePicker/useMobilePicker.types.d.ts +2 -2
  87. package/internals/hooks/usePicker/usePickerValue.types.d.ts +32 -2
  88. package/internals/hooks/usePicker/usePickerViews.js +8 -10
  89. package/internals/hooks/useStaticPicker/useStaticPicker.d.ts +2 -2
  90. package/internals/hooks/useViews.js +10 -9
  91. package/internals/index.d.ts +2 -1
  92. package/internals/index.js +2 -1
  93. package/internals/models/fields.d.ts +1 -1
  94. package/internals/utils/date-utils.d.ts +4 -1
  95. package/internals/utils/date-utils.js +4 -1
  96. package/internals/utils/fields.js +1 -1
  97. package/internals/utils/getDefaultReferenceDate.d.ts +15 -0
  98. package/internals/utils/getDefaultReferenceDate.js +62 -0
  99. package/internals/utils/time-utils.d.ts +2 -1
  100. package/internals/utils/time-utils.js +1 -0
  101. package/internals/utils/valueManagers.js +21 -3
  102. package/legacy/AdapterDateFns/AdapterDateFns.js +18 -0
  103. package/legacy/AdapterDateFnsJalali/AdapterDateFnsJalali.js +18 -0
  104. package/legacy/AdapterDayjs/AdapterDayjs.js +135 -14
  105. package/legacy/AdapterLuxon/AdapterLuxon.js +58 -9
  106. package/legacy/AdapterMoment/AdapterMoment.js +97 -6
  107. package/legacy/AdapterMomentHijri/AdapterMomentHijri.js +10 -0
  108. package/legacy/AdapterMomentJalaali/AdapterMomentJalaali.js +10 -0
  109. package/legacy/DateCalendar/DateCalendar.js +2 -2
  110. package/legacy/DateCalendar/PickersCalendarHeader.js +2 -2
  111. package/legacy/DateField/DateField.js +6 -0
  112. package/legacy/DateTimeField/DateTimeField.js +6 -0
  113. package/legacy/DateTimePicker/DateTimePicker.js +19 -2
  114. package/legacy/DateTimePicker/DateTimePickerTabs.js +6 -5
  115. package/legacy/DateTimePicker/DateTimePickerToolbar.js +51 -23
  116. package/legacy/DesktopDatePicker/DesktopDatePicker.js +2 -2
  117. package/legacy/DesktopDateTimePicker/DesktopDateTimePicker.js +54 -10
  118. package/legacy/DesktopTimePicker/DesktopTimePicker.js +2 -2
  119. package/legacy/MonthCalendar/MonthCalendar.js +2 -2
  120. package/legacy/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +4 -3
  121. package/legacy/TimeField/TimeField.js +6 -0
  122. package/legacy/YearCalendar/YearCalendar.js +2 -2
  123. package/legacy/dateTimeViewRenderers/dateTimeViewRenderers.js +147 -0
  124. package/legacy/dateTimeViewRenderers/index.js +1 -0
  125. package/legacy/dateViewRenderers/dateViewRenderers.js +2 -4
  126. package/legacy/{internals/components/icons → icons}/index.js +7 -7
  127. package/legacy/index.js +3 -2
  128. package/legacy/internals/components/DateTimeViewWrapper/DateTimeViewWrapper.js +5 -0
  129. package/legacy/internals/components/DateTimeViewWrapper/index.js +1 -0
  130. package/legacy/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +3 -3
  131. package/legacy/internals/components/PickersToolbarButton.js +7 -2
  132. package/legacy/internals/constants/dimensions.js +2 -1
  133. package/legacy/internals/hooks/useField/useField.js +8 -3
  134. package/legacy/internals/hooks/useField/useFieldState.js +22 -2
  135. package/legacy/internals/hooks/usePicker/usePickerViews.js +4 -4
  136. package/legacy/internals/hooks/useViews.js +10 -9
  137. package/legacy/internals/index.js +2 -1
  138. package/legacy/internals/utils/date-utils.js +7 -0
  139. package/legacy/internals/utils/fields.js +1 -1
  140. package/legacy/internals/utils/getDefaultReferenceDate.js +64 -0
  141. package/legacy/internals/utils/time-utils.js +3 -0
  142. package/legacy/internals/utils/valueManagers.js +20 -4
  143. package/legacy/locales/index.js +1 -0
  144. package/legacy/locales/viVN.js +93 -0
  145. package/legacy/models/index.js +1 -0
  146. package/legacy/models/timezone.js +1 -0
  147. package/legacy/tests/describeGregorianAdapter/describeGregorianAdapter.js +16 -1
  148. package/legacy/tests/describeGregorianAdapter/testCalculations.js +349 -79
  149. package/legacy/tests/describeGregorianAdapter/testLocalization.js +3 -3
  150. package/legacy/tests/describeValidation/testDayViewValidation.js +129 -52
  151. package/legacy/tests/describeValidation/testMinutesViewValidation.js +3 -10
  152. package/legacy/tests/describeValidation/testMonthViewValidation.js +3 -10
  153. package/legacy/tests/describeValidation/testYearViewValidation.js +3 -10
  154. package/legacy/tests/describeValue/describeValue.js +12 -5
  155. package/legacy/tests/describeValue/testControlledUnControlled.js +19 -4
  156. package/legacy/tests/describeValue/testPickerActionBar.js +12 -10
  157. package/legacy/tests/describeValue/testPickerOpenCloseLifeCycle.js +10 -7
  158. package/legacy/timeViewRenderers/timeViewRenderers.js +1 -1
  159. package/locales/index.d.ts +1 -0
  160. package/locales/index.js +1 -0
  161. package/locales/viVN.d.ts +53 -0
  162. package/locales/viVN.js +57 -0
  163. package/models/adapters.d.ts +50 -9
  164. package/models/fields.d.ts +1 -1
  165. package/models/index.d.ts +1 -0
  166. package/models/index.js +1 -0
  167. package/models/timezone.d.ts +1 -0
  168. package/models/timezone.js +1 -0
  169. package/modern/AdapterDateFns/AdapterDateFns.js +18 -0
  170. package/modern/AdapterDateFnsJalali/AdapterDateFnsJalali.js +18 -0
  171. package/modern/AdapterDayjs/AdapterDayjs.js +130 -14
  172. package/modern/AdapterLuxon/AdapterLuxon.js +57 -9
  173. package/modern/AdapterMoment/AdapterMoment.js +90 -2
  174. package/modern/AdapterMomentHijri/AdapterMomentHijri.js +10 -0
  175. package/modern/AdapterMomentJalaali/AdapterMomentJalaali.js +10 -0
  176. package/modern/DateCalendar/DateCalendar.js +2 -2
  177. package/modern/DateCalendar/PickersCalendarHeader.js +2 -2
  178. package/modern/DateField/DateField.js +6 -0
  179. package/modern/DateTimeField/DateTimeField.js +6 -0
  180. package/modern/DateTimePicker/DateTimePicker.js +19 -2
  181. package/modern/DateTimePicker/DateTimePickerTabs.js +6 -5
  182. package/modern/DateTimePicker/DateTimePickerToolbar.js +46 -22
  183. package/modern/DesktopDatePicker/DesktopDatePicker.js +2 -2
  184. package/modern/DesktopDateTimePicker/DesktopDateTimePicker.js +52 -9
  185. package/modern/DesktopTimePicker/DesktopTimePicker.js +2 -2
  186. package/modern/MonthCalendar/MonthCalendar.js +2 -2
  187. package/modern/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +4 -3
  188. package/modern/TimeField/TimeField.js +6 -0
  189. package/modern/YearCalendar/YearCalendar.js +2 -2
  190. package/modern/dateTimeViewRenderers/dateTimeViewRenderers.js +147 -0
  191. package/modern/dateTimeViewRenderers/index.js +1 -0
  192. package/modern/dateViewRenderers/dateViewRenderers.js +2 -2
  193. package/modern/{internals/components/icons → icons}/index.js +7 -7
  194. package/modern/index.js +3 -2
  195. package/modern/internals/components/DateTimeViewWrapper/DateTimeViewWrapper.js +5 -0
  196. package/modern/internals/components/DateTimeViewWrapper/index.js +1 -0
  197. package/modern/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +3 -3
  198. package/modern/internals/components/PickersToolbarButton.js +8 -3
  199. package/modern/internals/constants/dimensions.js +2 -1
  200. package/modern/internals/hooks/useField/useField.js +8 -3
  201. package/modern/internals/hooks/useField/useFieldState.js +22 -2
  202. package/modern/internals/hooks/usePicker/usePickerViews.js +8 -10
  203. package/modern/internals/hooks/useViews.js +10 -9
  204. package/modern/internals/index.js +2 -1
  205. package/modern/internals/utils/date-utils.js +4 -1
  206. package/modern/internals/utils/fields.js +1 -1
  207. package/modern/internals/utils/getDefaultReferenceDate.js +58 -0
  208. package/modern/internals/utils/time-utils.js +1 -0
  209. package/modern/internals/utils/valueManagers.js +21 -3
  210. package/modern/locales/index.js +1 -0
  211. package/modern/locales/viVN.js +57 -0
  212. package/modern/models/index.js +1 -0
  213. package/modern/models/timezone.js +1 -0
  214. package/modern/tests/describeGregorianAdapter/describeGregorianAdapter.js +13 -1
  215. package/modern/tests/describeGregorianAdapter/testCalculations.js +347 -79
  216. package/modern/tests/describeGregorianAdapter/testLocalization.js +3 -3
  217. package/modern/tests/describeValidation/testDayViewValidation.js +129 -52
  218. package/modern/tests/describeValidation/testMinutesViewValidation.js +3 -10
  219. package/modern/tests/describeValidation/testMonthViewValidation.js +3 -10
  220. package/modern/tests/describeValidation/testYearViewValidation.js +3 -10
  221. package/modern/tests/describeValue/describeValue.js +13 -4
  222. package/modern/tests/describeValue/testControlledUnControlled.js +15 -4
  223. package/modern/tests/describeValue/testPickerActionBar.js +19 -17
  224. package/modern/tests/describeValue/testPickerOpenCloseLifeCycle.js +10 -7
  225. package/modern/timeViewRenderers/timeViewRenderers.js +1 -1
  226. package/node/AdapterDateFns/AdapterDateFns.js +18 -0
  227. package/node/AdapterDateFnsJalali/AdapterDateFnsJalali.js +18 -0
  228. package/node/AdapterDayjs/AdapterDayjs.js +130 -14
  229. package/node/AdapterLuxon/AdapterLuxon.js +57 -9
  230. package/node/AdapterMoment/AdapterMoment.js +90 -2
  231. package/node/AdapterMomentHijri/AdapterMomentHijri.js +10 -0
  232. package/node/AdapterMomentJalaali/AdapterMomentJalaali.js +10 -0
  233. package/node/DateCalendar/DateCalendar.js +2 -2
  234. package/node/DateCalendar/PickersCalendarHeader.js +2 -2
  235. package/node/DateField/DateField.js +6 -0
  236. package/node/DateTimeField/DateTimeField.js +6 -0
  237. package/node/DateTimePicker/DateTimePicker.js +19 -2
  238. package/node/DateTimePicker/DateTimePickerTabs.js +6 -5
  239. package/node/DateTimePicker/DateTimePickerToolbar.js +46 -22
  240. package/node/DesktopDatePicker/DesktopDatePicker.js +2 -2
  241. package/node/DesktopDateTimePicker/DesktopDateTimePicker.js +52 -9
  242. package/node/DesktopTimePicker/DesktopTimePicker.js +2 -2
  243. package/node/MonthCalendar/MonthCalendar.js +2 -2
  244. package/node/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +3 -2
  245. package/node/TimeField/TimeField.js +6 -0
  246. package/node/YearCalendar/YearCalendar.js +2 -2
  247. package/node/dateTimeViewRenderers/dateTimeViewRenderers.js +156 -0
  248. package/node/dateTimeViewRenderers/index.js +12 -0
  249. package/node/dateViewRenderers/dateViewRenderers.js +3 -3
  250. package/node/{internals/components/icons → icons}/index.js +15 -15
  251. package/node/index.js +13 -1
  252. package/node/internals/components/DateTimeViewWrapper/DateTimeViewWrapper.js +12 -0
  253. package/node/internals/components/DateTimeViewWrapper/index.js +12 -0
  254. package/node/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js +3 -3
  255. package/node/internals/components/PickersToolbarButton.js +8 -3
  256. package/node/internals/constants/dimensions.js +4 -2
  257. package/node/internals/hooks/useField/useField.js +8 -3
  258. package/node/internals/hooks/useField/useFieldState.js +22 -2
  259. package/node/internals/hooks/usePicker/usePickerViews.js +8 -10
  260. package/node/internals/hooks/useViews.js +10 -9
  261. package/node/internals/index.js +13 -0
  262. package/node/internals/utils/date-utils.js +7 -2
  263. package/node/internals/utils/fields.js +1 -1
  264. package/node/internals/utils/getDefaultReferenceDate.js +66 -0
  265. package/node/internals/utils/time-utils.js +3 -1
  266. package/node/internals/utils/valueManagers.js +21 -2
  267. package/node/locales/index.js +11 -0
  268. package/node/locales/viVN.js +64 -0
  269. package/node/models/index.js +11 -0
  270. package/node/models/timezone.js +5 -0
  271. package/node/tests/describeGregorianAdapter/describeGregorianAdapter.js +13 -1
  272. package/node/tests/describeGregorianAdapter/testCalculations.js +347 -79
  273. package/node/tests/describeGregorianAdapter/testLocalization.js +3 -4
  274. package/node/tests/describeValidation/testDayViewValidation.js +129 -52
  275. package/node/tests/describeValidation/testMinutesViewValidation.js +3 -10
  276. package/node/tests/describeValidation/testMonthViewValidation.js +3 -10
  277. package/node/tests/describeValidation/testYearViewValidation.js +3 -10
  278. package/node/tests/describeValue/describeValue.js +13 -4
  279. package/node/tests/describeValue/testControlledUnControlled.js +15 -4
  280. package/node/tests/describeValue/testPickerActionBar.js +19 -16
  281. package/node/tests/describeValue/testPickerOpenCloseLifeCycle.js +9 -6
  282. package/node/timeViewRenderers/timeViewRenderers.js +1 -1
  283. package/package.json +4 -4
  284. package/tests/describeGregorianAdapter/describeGregorianAdapter.js +14 -1
  285. package/tests/describeGregorianAdapter/testCalculations.js +347 -79
  286. package/tests/describeGregorianAdapter/testLocalization.js +3 -3
  287. package/tests/describeValidation/testDayViewValidation.js +129 -52
  288. package/tests/describeValidation/testMinutesViewValidation.js +3 -10
  289. package/tests/describeValidation/testMonthViewValidation.js +3 -10
  290. package/tests/describeValidation/testYearViewValidation.js +3 -10
  291. package/tests/describeValue/describeValue.js +13 -4
  292. package/tests/describeValue/testControlledUnControlled.js +15 -4
  293. package/tests/describeValue/testPickerActionBar.js +19 -17
  294. package/tests/describeValue/testPickerOpenCloseLifeCycle.js +10 -7
  295. package/timeViewRenderers/timeViewRenderers.d.ts +4 -4
  296. package/timeViewRenderers/timeViewRenderers.js +1 -1
  297. package/internals/components/icons/index.d.ts +0 -42
@@ -28,6 +28,7 @@ type DateFnsLocale = typeof defaultLocale;
28
28
  */
29
29
  export declare class AdapterDateFns implements MuiPickersAdapter<Date, DateFnsLocale> {
30
30
  isMUIAdapter: boolean;
31
+ isTimezoneCompatible: boolean;
31
32
  lib: string;
32
33
  locale?: DateFnsLocale;
33
34
  formats: AdapterFormats;
@@ -38,6 +39,9 @@ export declare class AdapterDateFns implements MuiPickersAdapter<Date, DateFnsLo
38
39
  };
39
40
  constructor({ locale, formats }?: AdapterOptions<DateFnsLocale, never>);
40
41
  date: (value?: any) => Date | null;
42
+ dateWithTimezone: (value: string | null | undefined) => Date | null;
43
+ getTimezone: () => string;
44
+ setTimezone: (value: Date) => Date;
41
45
  toJsDate: (value: Date) => Date;
42
46
  parseISO: (isoString: string) => Date;
43
47
  toISO: (value: Date) => string;
@@ -85,12 +89,14 @@ export declare class AdapterDateFns implements MuiPickersAdapter<Date, DateFnsLo
85
89
  getHours: (value: Date) => number;
86
90
  getMinutes: (value: Date) => number;
87
91
  getSeconds: (value: Date) => number;
92
+ getMilliseconds: (value: Date) => number;
88
93
  setYear: (value: Date, year: number) => Date;
89
94
  setMonth: (value: Date, month: number) => Date;
90
95
  setDate: (value: Date, date: number) => Date;
91
96
  setHours: (value: Date, hours: number) => Date;
92
97
  setMinutes: (value: Date, minutes: number) => Date;
93
98
  setSeconds: (value: Date, seconds: number) => Date;
99
+ setMilliseconds: (value: Date, milliseconds: number) => Date;
94
100
  getDaysInMonth: (value: Date) => number;
95
101
  getNextMonth: (value: Date) => Date;
96
102
  getPreviousMonth: (value: Date) => Date;
@@ -27,6 +27,7 @@ import getHours from 'date-fns/getHours';
27
27
  import getMinutes from 'date-fns/getMinutes';
28
28
  import getMonth from 'date-fns/getMonth';
29
29
  import getSeconds from 'date-fns/getSeconds';
30
+ import getMilliseconds from 'date-fns/getMilliseconds';
30
31
  import getWeek from 'date-fns/getWeek';
31
32
  import getYear from 'date-fns/getYear';
32
33
  import isAfter from 'date-fns/isAfter';
@@ -43,6 +44,7 @@ import setHours from 'date-fns/setHours';
43
44
  import setMinutes from 'date-fns/setMinutes';
44
45
  import setMonth from 'date-fns/setMonth';
45
46
  import setSeconds from 'date-fns/setSeconds';
47
+ import setMilliseconds from 'date-fns/setMilliseconds';
46
48
  import setYear from 'date-fns/setYear';
47
49
  import startOfDay from 'date-fns/startOfDay';
48
50
  import startOfMonth from 'date-fns/startOfMonth';
@@ -281,6 +283,7 @@ export class AdapterDateFns {
281
283
  formats
282
284
  } = {}) {
283
285
  this.isMUIAdapter = true;
286
+ this.isTimezoneCompatible = false;
284
287
  this.lib = 'date-fns';
285
288
  this.locale = void 0;
286
289
  this.formats = void 0;
@@ -298,6 +301,15 @@ export class AdapterDateFns {
298
301
  }
299
302
  return new Date(value);
300
303
  };
304
+ this.dateWithTimezone = value => {
305
+ return this.date(value);
306
+ };
307
+ this.getTimezone = () => {
308
+ return 'default';
309
+ };
310
+ this.setTimezone = value => {
311
+ return value;
312
+ };
301
313
  this.toJsDate = value => {
302
314
  return value;
303
315
  };
@@ -498,6 +510,9 @@ export class AdapterDateFns {
498
510
  this.getSeconds = value => {
499
511
  return getSeconds(value);
500
512
  };
513
+ this.getMilliseconds = value => {
514
+ return getMilliseconds(value);
515
+ };
501
516
  this.setYear = (value, year) => {
502
517
  return setYear(value, year);
503
518
  };
@@ -516,6 +531,9 @@ export class AdapterDateFns {
516
531
  this.setSeconds = (value, seconds) => {
517
532
  return setSeconds(value, seconds);
518
533
  };
534
+ this.setMilliseconds = (value, milliseconds) => {
535
+ return setMilliseconds(value, milliseconds);
536
+ };
519
537
  this.getDaysInMonth = value => {
520
538
  return getDaysInMonth(value);
521
539
  };
@@ -28,6 +28,7 @@ type DateFnsLocale = typeof defaultLocale;
28
28
  */
29
29
  export declare class AdapterDateFnsJalali implements MuiPickersAdapter<Date, DateFnsLocale> {
30
30
  isMUIAdapter: boolean;
31
+ isTimezoneCompatible: boolean;
31
32
  lib: string;
32
33
  locale?: DateFnsLocale;
33
34
  formats: AdapterFormats;
@@ -38,6 +39,9 @@ export declare class AdapterDateFnsJalali implements MuiPickersAdapter<Date, Dat
38
39
  };
39
40
  constructor({ locale, formats }?: AdapterOptions<DateFnsLocale, never>);
40
41
  date: (value?: any) => Date | null;
42
+ dateWithTimezone: (value: string | null | undefined) => Date | null;
43
+ getTimezone: () => string;
44
+ setTimezone: (value: Date) => Date;
41
45
  toJsDate: (value: Date) => Date;
42
46
  parseISO: (isoString: string) => Date;
43
47
  toISO: (value: Date) => string;
@@ -85,12 +89,14 @@ export declare class AdapterDateFnsJalali implements MuiPickersAdapter<Date, Dat
85
89
  getHours: (value: Date) => number;
86
90
  getMinutes: (value: Date) => number;
87
91
  getSeconds: (value: Date) => number;
92
+ getMilliseconds: (value: Date) => number;
88
93
  setYear: (value: Date, year: number) => Date;
89
94
  setMonth: (value: Date, month: number) => Date;
90
95
  setDate: (value: Date, date: number) => Date;
91
96
  setHours: (value: Date, hours: number) => Date;
92
97
  setMinutes: (value: Date, minutes: number) => Date;
93
98
  setSeconds: (value: Date, seconds: number) => Date;
99
+ setMilliseconds: (value: Date, milliseconds: number) => Date;
94
100
  getDaysInMonth: (value: Date) => number;
95
101
  getNextMonth: (value: Date) => Date;
96
102
  getPreviousMonth: (value: Date) => Date;
@@ -24,6 +24,7 @@ import dateFnsFormat from 'date-fns-jalali/format';
24
24
  import formatISO from 'date-fns-jalali/formatISO';
25
25
  import getHours from 'date-fns-jalali/getHours';
26
26
  import getSeconds from 'date-fns-jalali/getSeconds';
27
+ import getMilliseconds from 'date-fns-jalali/getMilliseconds';
27
28
  import getWeek from 'date-fns-jalali/getWeek';
28
29
  import getYear from 'date-fns-jalali/getYear';
29
30
  import getMonth from 'date-fns-jalali/getMonth';
@@ -45,6 +46,7 @@ import setHours from 'date-fns-jalali/setHours';
45
46
  import setMinutes from 'date-fns-jalali/setMinutes';
46
47
  import setMonth from 'date-fns-jalali/setMonth';
47
48
  import setSeconds from 'date-fns-jalali/setSeconds';
49
+ import setMilliseconds from 'date-fns-jalali/setMilliseconds';
48
50
  import setYear from 'date-fns-jalali/setYear';
49
51
  import startOfDay from 'date-fns-jalali/startOfDay';
50
52
  import startOfMonth from 'date-fns-jalali/startOfMonth';
@@ -293,6 +295,7 @@ export class AdapterDateFnsJalali {
293
295
  formats
294
296
  } = {}) {
295
297
  this.isMUIAdapter = true;
298
+ this.isTimezoneCompatible = false;
296
299
  this.lib = 'date-fns-jalali';
297
300
  this.locale = void 0;
298
301
  this.formats = void 0;
@@ -310,6 +313,15 @@ export class AdapterDateFnsJalali {
310
313
  }
311
314
  return new Date(value);
312
315
  };
316
+ this.dateWithTimezone = value => {
317
+ return this.date(value);
318
+ };
319
+ this.getTimezone = () => {
320
+ return 'default';
321
+ };
322
+ this.setTimezone = value => {
323
+ return value;
324
+ };
313
325
  this.toJsDate = value => {
314
326
  return value;
315
327
  };
@@ -510,6 +522,9 @@ export class AdapterDateFnsJalali {
510
522
  this.getSeconds = value => {
511
523
  return getSeconds(value);
512
524
  };
525
+ this.getMilliseconds = value => {
526
+ return getMilliseconds(value);
527
+ };
513
528
  this.setYear = (value, year) => {
514
529
  return setYear(value, year);
515
530
  };
@@ -528,6 +543,9 @@ export class AdapterDateFnsJalali {
528
543
  this.setSeconds = (value, seconds) => {
529
544
  return setSeconds(value, seconds);
530
545
  };
546
+ this.setMilliseconds = (value, milliseconds) => {
547
+ return setMilliseconds(value, milliseconds);
548
+ };
531
549
  this.getDaysInMonth = value => {
532
550
  return getDaysInMonth(value);
533
551
  };
@@ -1,5 +1,5 @@
1
1
  import defaultDayjs, { Dayjs } from 'dayjs';
2
- import { FieldFormatTokenMap, MuiPickersAdapter, AdapterFormats, AdapterUnits, AdapterOptions } from '../models';
2
+ import { FieldFormatTokenMap, MuiPickersAdapter, AdapterFormats, AdapterUnits, AdapterOptions, PickersTimezone } from '../models';
3
3
  type Constructor = (...args: Parameters<typeof defaultDayjs>) => Dayjs;
4
4
  /**
5
5
  * Based on `@date-io/dayjs`
@@ -28,6 +28,7 @@ type Constructor = (...args: Parameters<typeof defaultDayjs>) => Dayjs;
28
28
  */
29
29
  export declare class AdapterDayjs implements MuiPickersAdapter<Dayjs, string> {
30
30
  isMUIAdapter: boolean;
31
+ isTimezoneCompatible: boolean;
31
32
  lib: string;
32
33
  rawDayJsInstance: typeof defaultDayjs;
33
34
  dayjs: Constructor;
@@ -39,8 +40,18 @@ export declare class AdapterDayjs implements MuiPickersAdapter<Dayjs, string> {
39
40
  };
40
41
  formatTokenMap: FieldFormatTokenMap;
41
42
  constructor({ locale, formats, instance }?: AdapterOptions<string, typeof defaultDayjs>);
43
+ private setLocaleToValue;
44
+ private hasUTCPlugin;
45
+ private hasTimezonePlugin;
46
+ private isSame;
47
+ private createSystemDate;
48
+ private createUTCDate;
49
+ private createTZDate;
42
50
  private getLocaleFormats;
43
51
  date: (value?: any) => defaultDayjs.Dayjs | null;
52
+ dateWithTimezone: (value: string | null | undefined, timezone: PickersTimezone) => Dayjs | null;
53
+ getTimezone: (value: Dayjs) => string;
54
+ setTimezone: (value: Dayjs, timezone: PickersTimezone) => Dayjs;
44
55
  toJsDate: (value: Dayjs) => Date;
45
56
  parseISO: (isoString: string) => defaultDayjs.Dayjs;
46
57
  toISO: (value: Dayjs) => string;
@@ -88,12 +99,14 @@ export declare class AdapterDayjs implements MuiPickersAdapter<Dayjs, string> {
88
99
  getHours: (value: Dayjs) => number;
89
100
  getMinutes: (value: Dayjs) => number;
90
101
  getSeconds: (value: Dayjs) => number;
102
+ getMilliseconds: (value: Dayjs) => number;
91
103
  setYear: (value: Dayjs, year: number) => defaultDayjs.Dayjs;
92
104
  setMonth: (value: Dayjs, month: number) => defaultDayjs.Dayjs;
93
105
  setDate: (value: Dayjs, date: number) => defaultDayjs.Dayjs;
94
106
  setHours: (value: Dayjs, hours: number) => defaultDayjs.Dayjs;
95
107
  setMinutes: (value: Dayjs, minutes: number) => defaultDayjs.Dayjs;
96
108
  setSeconds: (value: Dayjs, seconds: number) => defaultDayjs.Dayjs;
109
+ setMilliseconds: (value: Dayjs, milliseconds: number) => defaultDayjs.Dayjs;
97
110
  getDaysInMonth: (value: Dayjs) => number;
98
111
  getNextMonth: (value: Dayjs) => defaultDayjs.Dayjs;
99
112
  getPreviousMonth: (value: Dayjs) => defaultDayjs.Dayjs;
@@ -122,6 +122,8 @@ const defaultFormats = {
122
122
  keyboardDateTime12h: 'L hh:mm A',
123
123
  keyboardDateTime24h: 'L HH:mm'
124
124
  };
125
+ const MISSING_UTC_PLUGIN = ['Missing UTC plugin', 'To be able to use UTC or timezones, you have to enable the `utc` plugin', 'Find more information on https://mui.com/x/react-date-pickers/timezone/#day-js-and-utc'].join('\n');
126
+ const MISSING_TIMEZONE_PLUGIN = ['Missing timezone plugin', 'To be able to use timezones, you have to enable both the `utc` and the `timezone` plugin', 'Find more information on https://mui.com/x/react-date-pickers/timezone/#day-js-and-timezone'].join('\n');
125
127
  const withLocale = (dayjs, locale) => !locale ? dayjs : (...args) => dayjs(...args).locale(locale);
126
128
 
127
129
  /**
@@ -156,6 +158,7 @@ export class AdapterDayjs {
156
158
  instance
157
159
  } = {}) {
158
160
  this.isMUIAdapter = true;
161
+ this.isTimezoneCompatible = true;
159
162
  this.lib = 'dayjs';
160
163
  this.rawDayJsInstance = void 0;
161
164
  this.dayjs = void 0;
@@ -166,6 +169,44 @@ export class AdapterDayjs {
166
169
  end: ']'
167
170
  };
168
171
  this.formatTokenMap = formatTokenMap;
172
+ this.setLocaleToValue = value => {
173
+ const expectedLocale = this.getCurrentLocaleCode();
174
+ if (expectedLocale === value.locale()) {
175
+ return value;
176
+ }
177
+ return value.locale(expectedLocale);
178
+ };
179
+ this.hasUTCPlugin = () => typeof defaultDayjs.utc !== 'undefined';
180
+ this.hasTimezonePlugin = () => typeof defaultDayjs.tz !== 'undefined';
181
+ this.isSame = (value, comparing, comparisonTemplate) => {
182
+ const comparingInValueTimezone = this.setTimezone(comparing, this.getTimezone(value));
183
+ return value.format(comparisonTemplate) === comparingInValueTimezone.format(comparisonTemplate);
184
+ };
185
+ this.createSystemDate = value => {
186
+ // TODO v7: Stop using `this.rawDayJsInstance` (drop the `instance` param on the adapters)
187
+ return this.rawDayJsInstance(value);
188
+ };
189
+ this.createUTCDate = value => {
190
+ /* istanbul ignore next */
191
+ if (!this.hasUTCPlugin()) {
192
+ throw new Error(MISSING_UTC_PLUGIN);
193
+ }
194
+ return defaultDayjs.utc(value);
195
+ };
196
+ this.createTZDate = (value, timezone) => {
197
+ /* istanbul ignore next */
198
+ if (!this.hasUTCPlugin()) {
199
+ throw new Error(MISSING_UTC_PLUGIN);
200
+ }
201
+
202
+ /* istanbul ignore next */
203
+ if (!this.hasTimezonePlugin()) {
204
+ throw new Error(MISSING_TIMEZONE_PLUGIN);
205
+ }
206
+ const cleanTimezone = timezone === 'default' ? undefined : timezone;
207
+ const keepLocalTime = value !== undefined && !value.endsWith('Z');
208
+ return defaultDayjs(value).tz(cleanTimezone, keepLocalTime);
209
+ };
169
210
  this.getLocaleFormats = () => {
170
211
  const locales = defaultDayjs.Ls;
171
212
  const locale = this.locale || 'en';
@@ -182,6 +223,63 @@ export class AdapterDayjs {
182
223
  }
183
224
  return this.dayjs(value);
184
225
  };
226
+ this.dateWithTimezone = (value, timezone) => {
227
+ if (value === null) {
228
+ return null;
229
+ }
230
+ let parsedValue;
231
+ if (timezone === 'UTC') {
232
+ parsedValue = this.createUTCDate(value);
233
+ } else if (timezone === 'system' || timezone === 'default' && !this.hasTimezonePlugin()) {
234
+ parsedValue = this.createSystemDate(value);
235
+ } else {
236
+ parsedValue = this.createTZDate(value, timezone);
237
+ }
238
+ if (this.locale === undefined) {
239
+ return parsedValue;
240
+ }
241
+ return parsedValue.locale(this.locale);
242
+ };
243
+ this.getTimezone = value => {
244
+ if (this.hasUTCPlugin() && value.isUTC()) {
245
+ return 'UTC';
246
+ }
247
+ if (this.hasTimezonePlugin()) {
248
+ var _value$$x;
249
+ // @ts-ignore
250
+ const zone = (_value$$x = value.$x) == null ? void 0 : _value$$x.$timezone;
251
+ return zone != null ? zone : 'system';
252
+ }
253
+ return 'system';
254
+ };
255
+ this.setTimezone = (value, timezone) => {
256
+ if (this.getTimezone(value) === timezone) {
257
+ return value;
258
+ }
259
+ if (timezone === 'UTC') {
260
+ /* istanbul ignore next */
261
+ if (!this.hasUTCPlugin()) {
262
+ throw new Error(MISSING_UTC_PLUGIN);
263
+ }
264
+ return value.utc();
265
+ }
266
+ if (timezone === 'system') {
267
+ if (this.hasUTCPlugin()) {
268
+ return value.local();
269
+ }
270
+ return value;
271
+ }
272
+ if (!this.hasTimezonePlugin()) {
273
+ if (timezone === 'default') {
274
+ return value;
275
+ }
276
+
277
+ /* istanbul ignore next */
278
+ throw new Error(MISSING_TIMEZONE_PLUGIN);
279
+ }
280
+ const cleanZone = timezone === 'default' ? undefined : timezone;
281
+ return defaultDayjs.tz(value, cleanZone);
282
+ };
185
283
  this.toJsDate = value => {
186
284
  return value.toDate();
187
285
  };
@@ -242,37 +340,49 @@ export class AdapterDayjs {
242
340
  return this.dayjs(value).isSame(comparing);
243
341
  };
244
342
  this.isSameYear = (value, comparing) => {
245
- return value.isSame(comparing, 'year');
343
+ return this.isSame(value, comparing, 'YYYY');
246
344
  };
247
345
  this.isSameMonth = (value, comparing) => {
248
- return value.isSame(comparing, 'month');
346
+ return this.isSame(value, comparing, 'YYYY-MM');
249
347
  };
250
348
  this.isSameDay = (value, comparing) => {
251
- return value.isSame(comparing, 'day');
349
+ return this.isSame(value, comparing, 'YYYY-MM-DD');
252
350
  };
253
351
  this.isSameHour = (value, comparing) => {
254
352
  return value.isSame(comparing, 'hour');
255
353
  };
256
354
  this.isAfter = (value, comparing) => {
257
- return value.isAfter(comparing);
355
+ return value > comparing;
258
356
  };
259
357
  this.isAfterYear = (value, comparing) => {
260
- return value.isAfter(comparing, 'year');
358
+ if (!this.hasUTCPlugin()) {
359
+ return value.isAfter(comparing, 'year');
360
+ }
361
+ return !this.isSameYear(value, comparing) && value.utc() > comparing.utc();
261
362
  };
262
363
  this.isAfterDay = (value, comparing) => {
263
- return value.isAfter(comparing, 'day');
364
+ if (!this.hasUTCPlugin()) {
365
+ return value.isAfter(comparing, 'day');
366
+ }
367
+ return !this.isSameDay(value, comparing) && value.utc() > comparing.utc();
264
368
  };
265
369
  this.isBefore = (value, comparing) => {
266
- return value.isBefore(comparing);
370
+ return value < comparing;
267
371
  };
268
372
  this.isBeforeYear = (value, comparing) => {
269
- return value.isBefore(comparing, 'year');
373
+ if (!this.hasUTCPlugin()) {
374
+ return value.isBefore(comparing, 'year');
375
+ }
376
+ return !this.isSameYear(value, comparing) && value.utc() < comparing.utc();
270
377
  };
271
378
  this.isBeforeDay = (value, comparing) => {
272
- return value.isBefore(comparing, 'day');
379
+ if (!this.hasUTCPlugin()) {
380
+ return value.isBefore(comparing, 'day');
381
+ }
382
+ return !this.isSameDay(value, comparing) && value.utc() < comparing.utc();
273
383
  };
274
384
  this.isWithinRange = (value, [start, end]) => {
275
- return value.isBetween(start, end, null, '[]');
385
+ return value >= start && value <= end;
276
386
  };
277
387
  this.startOfYear = value => {
278
388
  return value.startOf('year');
@@ -337,6 +447,9 @@ export class AdapterDayjs {
337
447
  this.getSeconds = value => {
338
448
  return value.second();
339
449
  };
450
+ this.getMilliseconds = value => {
451
+ return value.millisecond();
452
+ };
340
453
  this.setYear = (value, year) => {
341
454
  return value.set('year', year);
342
455
  };
@@ -355,6 +468,9 @@ export class AdapterDayjs {
355
468
  this.setSeconds = (value, seconds) => {
356
469
  return value.set('second', seconds);
357
470
  };
471
+ this.setMilliseconds = (value, milliseconds) => {
472
+ return value.set('millisecond', milliseconds);
473
+ };
358
474
  this.getDaysInMonth = value => {
359
475
  return value.daysInMonth();
360
476
  };
@@ -381,12 +497,13 @@ export class AdapterDayjs {
381
497
  return [0, 1, 2, 3, 4, 5, 6].map(diff => this.formatByString(start.add(diff, 'day'), 'dd'));
382
498
  };
383
499
  this.getWeekArray = value => {
384
- const start = value.startOf('month').startOf('week');
385
- const end = value.endOf('month').endOf('week');
500
+ const cleanLocale = this.setLocaleToValue(value);
501
+ const start = cleanLocale.startOf('month').startOf('week');
502
+ const end = cleanLocale.endOf('month').endOf('week');
386
503
  let count = 0;
387
504
  let current = start;
388
505
  const nestedWeeks = [];
389
- while (current.isBefore(end)) {
506
+ while (current < end) {
390
507
  const weekNumber = Math.floor(count / 7);
391
508
  nestedWeeks[weekNumber] = nestedWeeks[weekNumber] || [];
392
509
  nestedWeeks[weekNumber].push(current);
@@ -403,7 +520,7 @@ export class AdapterDayjs {
403
520
  const endDate = end.endOf('year');
404
521
  const years = [];
405
522
  let current = startDate;
406
- while (current.isBefore(endDate)) {
523
+ while (current < endDate) {
407
524
  years.push(current);
408
525
  current = current.add(1, 'year');
409
526
  }
@@ -1,5 +1,5 @@
1
1
  import { DateTime } from 'luxon';
2
- import { AdapterFormats, AdapterOptions, AdapterUnits, FieldFormatTokenMap, MuiPickersAdapter } from '../models';
2
+ import { AdapterFormats, AdapterOptions, AdapterUnits, FieldFormatTokenMap, MuiPickersAdapter, PickersTimezone } from '../models';
3
3
  /**
4
4
  * Based on `@date-io/luxon`
5
5
  *
@@ -27,6 +27,7 @@ import { AdapterFormats, AdapterOptions, AdapterUnits, FieldFormatTokenMap, MuiP
27
27
  */
28
28
  export declare class AdapterLuxon implements MuiPickersAdapter<DateTime, string> {
29
29
  isMUIAdapter: boolean;
30
+ isTimezoneCompatible: boolean;
30
31
  lib: string;
31
32
  locale: string;
32
33
  formats: AdapterFormats;
@@ -37,6 +38,9 @@ export declare class AdapterLuxon implements MuiPickersAdapter<DateTime, string>
37
38
  formatTokenMap: FieldFormatTokenMap;
38
39
  constructor({ locale, formats }?: AdapterOptions<string, never>);
39
40
  date: (value?: any) => DateTime | null;
41
+ dateWithTimezone: (value: string | null | undefined, timezone: PickersTimezone) => DateTime | null;
42
+ getTimezone: (value: DateTime) => string;
43
+ setTimezone: (value: DateTime, timezone: PickersTimezone) => DateTime;
40
44
  toJsDate: (value: DateTime) => Date;
41
45
  parseISO: (isoString: string) => DateTime;
42
46
  toISO: (value: DateTime) => string;
@@ -84,12 +88,14 @@ export declare class AdapterLuxon implements MuiPickersAdapter<DateTime, string>
84
88
  getHours: (value: DateTime) => number;
85
89
  getMinutes: (value: DateTime) => number;
86
90
  getSeconds: (value: DateTime) => number;
91
+ getMilliseconds: (value: DateTime) => number;
87
92
  setYear: (value: DateTime, year: number) => DateTime;
88
93
  setMonth: (value: DateTime, month: number) => DateTime;
89
94
  setDate: (value: DateTime, date: number) => DateTime;
90
95
  setHours: (value: DateTime, hours: number) => DateTime;
91
96
  setMinutes: (value: DateTime, minutes: number) => DateTime;
92
97
  setSeconds: (value: DateTime, seconds: number) => DateTime;
98
+ setMilliseconds: (value: DateTime, milliseconds: number) => DateTime;
93
99
  getDaysInMonth: (value: DateTime) => import("luxon").PossibleDaysInMonth;
94
100
  getNextMonth: (value: DateTime) => DateTime;
95
101
  getPreviousMonth: (value: DateTime) => DateTime;
@@ -168,6 +168,7 @@ export class AdapterLuxon {
168
168
  formats
169
169
  } = {}) {
170
170
  this.isMUIAdapter = true;
171
+ this.isTimezoneCompatible = true;
171
172
  this.lib = 'luxon';
172
173
  this.locale = void 0;
173
174
  this.formats = void 0;
@@ -198,6 +199,38 @@ export class AdapterLuxon {
198
199
  locale: this.locale
199
200
  });
200
201
  };
202
+ this.dateWithTimezone = (value, timezone) => {
203
+ if (value === null) {
204
+ return null;
205
+ }
206
+ if (typeof value === 'undefined') {
207
+ // @ts-ignore
208
+ return DateTime.fromJSDate(new Date(), {
209
+ locale: this.locale,
210
+ zone: timezone
211
+ });
212
+ }
213
+
214
+ // @ts-ignore
215
+ return DateTime.fromISO(value, {
216
+ locale: this.locale,
217
+ zone: timezone
218
+ });
219
+ };
220
+ this.getTimezone = value => {
221
+ var _value$zoneName;
222
+ // When using the system zone, we want to return "system", not something like "Europe/Paris"
223
+ if (value.zone.type === 'system') {
224
+ return 'system';
225
+ }
226
+ return (_value$zoneName = value.zoneName) != null ? _value$zoneName : 'system';
227
+ };
228
+ this.setTimezone = (value, timezone) => {
229
+ if (!value.zone.equals(Info.normalizeZone(timezone))) {
230
+ return value.setZone(timezone);
231
+ }
232
+ return value;
233
+ };
201
234
  this.toJsDate = value => {
202
235
  return value.toJSDate();
203
236
  };
@@ -290,40 +323,48 @@ export class AdapterLuxon {
290
323
  if (value === null || comparing === null) {
291
324
  return false;
292
325
  }
293
- return this.date(value).equals(this.date(comparing));
326
+ return +this.date(value) === +this.date(comparing);
294
327
  };
295
328
  this.isSameYear = (value, comparing) => {
296
- return value.hasSame(comparing, 'year');
329
+ const comparingInValueTimezone = this.setTimezone(comparing, this.getTimezone(value));
330
+ return value.hasSame(comparingInValueTimezone, 'year');
297
331
  };
298
332
  this.isSameMonth = (value, comparing) => {
299
- return value.hasSame(comparing, 'month');
333
+ const comparingInValueTimezone = this.setTimezone(comparing, this.getTimezone(value));
334
+ return value.hasSame(comparingInValueTimezone, 'month');
300
335
  };
301
336
  this.isSameDay = (value, comparing) => {
302
- return value.hasSame(comparing, 'day');
337
+ const comparingInValueTimezone = this.setTimezone(comparing, this.getTimezone(value));
338
+ return value.hasSame(comparingInValueTimezone, 'day');
303
339
  };
304
340
  this.isSameHour = (value, comparing) => {
305
- return value.hasSame(comparing, 'hour');
341
+ const comparingInValueTimezone = this.setTimezone(comparing, this.getTimezone(value));
342
+ return value.hasSame(comparingInValueTimezone, 'hour');
306
343
  };
307
344
  this.isAfter = (value, comparing) => {
308
345
  return value > comparing;
309
346
  };
310
347
  this.isAfterYear = (value, comparing) => {
311
- const diff = value.diff(comparing.endOf('year'), 'years').toObject();
348
+ const comparingInValueTimezone = this.setTimezone(comparing, this.getTimezone(value));
349
+ const diff = value.diff(comparingInValueTimezone.endOf('year'), 'years').toObject();
312
350
  return diff.years > 0;
313
351
  };
314
352
  this.isAfterDay = (value, comparing) => {
315
- const diff = value.diff(comparing.endOf('day'), 'days').toObject();
353
+ const comparingInValueTimezone = this.setTimezone(comparing, this.getTimezone(value));
354
+ const diff = value.diff(comparingInValueTimezone.endOf('day'), 'days').toObject();
316
355
  return diff.days > 0;
317
356
  };
318
357
  this.isBefore = (value, comparing) => {
319
358
  return value < comparing;
320
359
  };
321
360
  this.isBeforeYear = (value, comparing) => {
322
- const diff = value.diff(comparing.startOf('year'), 'years').toObject();
361
+ const comparingInValueTimezone = this.setTimezone(comparing, this.getTimezone(value));
362
+ const diff = value.diff(comparingInValueTimezone.startOf('year'), 'years').toObject();
323
363
  return diff.years < 0;
324
364
  };
325
365
  this.isBeforeDay = (value, comparing) => {
326
- const diff = value.diff(comparing.startOf('day'), 'days').toObject();
366
+ const comparingInValueTimezone = this.setTimezone(comparing, this.getTimezone(value));
367
+ const diff = value.diff(comparingInValueTimezone.startOf('day'), 'days').toObject();
327
368
  return diff.days < 0;
328
369
  };
329
370
  this.isWithinRange = (value, [start, end]) => {
@@ -407,6 +448,9 @@ export class AdapterLuxon {
407
448
  this.getSeconds = value => {
408
449
  return value.get('second');
409
450
  };
451
+ this.getMilliseconds = value => {
452
+ return value.get('millisecond');
453
+ };
410
454
  this.setYear = (value, year) => {
411
455
  return value.set({
412
456
  year
@@ -437,6 +481,11 @@ export class AdapterLuxon {
437
481
  second: seconds
438
482
  });
439
483
  };
484
+ this.setMilliseconds = (value, milliseconds) => {
485
+ return value.set({
486
+ millisecond: milliseconds
487
+ });
488
+ };
440
489
  this.getDaysInMonth = value => {
441
490
  return value.daysInMonth;
442
491
  };
@@ -1,5 +1,5 @@
1
1
  import defaultMoment, { Moment } from 'moment';
2
- import { AdapterFormats, AdapterOptions, AdapterUnits, FieldFormatTokenMap, MuiPickersAdapter } from '../models';
2
+ import { AdapterFormats, AdapterOptions, AdapterUnits, FieldFormatTokenMap, MuiPickersAdapter, PickersTimezone } from '../models';
3
3
  /**
4
4
  * Based on `@date-io/moment`
5
5
  *
@@ -27,6 +27,7 @@ import { AdapterFormats, AdapterOptions, AdapterUnits, FieldFormatTokenMap, MuiP
27
27
  */
28
28
  export declare class AdapterMoment implements MuiPickersAdapter<Moment, string> {
29
29
  isMUIAdapter: boolean;
30
+ isTimezoneCompatible: boolean;
30
31
  lib: string;
31
32
  moment: typeof defaultMoment;
32
33
  locale?: string;
@@ -37,7 +38,15 @@ export declare class AdapterMoment implements MuiPickersAdapter<Moment, string>
37
38
  };
38
39
  formatTokenMap: FieldFormatTokenMap;
39
40
  constructor({ locale, formats, instance }?: AdapterOptions<string, typeof defaultMoment>);
41
+ private setLocaleToValue;
42
+ private hasTimezonePlugin;
43
+ private createSystemDate;
44
+ private createUTCDate;
45
+ private createTZDate;
40
46
  date: (value?: any) => defaultMoment.Moment | null;
47
+ dateWithTimezone: (value: string | null | undefined, timezone: PickersTimezone) => Moment | null;
48
+ getTimezone: (value: Moment) => string;
49
+ setTimezone: (value: Moment, timezone: PickersTimezone) => Moment;
41
50
  toJsDate: (value: Moment) => Date;
42
51
  parseISO: (isoString: string) => defaultMoment.Moment;
43
52
  toISO: (value: Moment) => string;
@@ -85,12 +94,14 @@ export declare class AdapterMoment implements MuiPickersAdapter<Moment, string>
85
94
  getHours: (value: Moment) => number;
86
95
  getMinutes: (value: Moment) => number;
87
96
  getSeconds: (value: Moment) => number;
97
+ getMilliseconds: (value: Moment) => number;
88
98
  setYear: (value: Moment, year: number) => defaultMoment.Moment;
89
99
  setMonth: (value: Moment, month: number) => defaultMoment.Moment;
90
100
  setDate: (value: Moment, date: number) => defaultMoment.Moment;
91
101
  setHours: (value: Moment, hours: number) => defaultMoment.Moment;
92
102
  setMinutes: (value: Moment, minutes: number) => defaultMoment.Moment;
93
103
  setSeconds: (value: Moment, seconds: number) => defaultMoment.Moment;
104
+ setMilliseconds: (value: Moment, milliseconds: number) => defaultMoment.Moment;
94
105
  getDaysInMonth: (value: Moment) => number;
95
106
  getNextMonth: (value: Moment) => defaultMoment.Moment;
96
107
  getPreviousMonth: (value: Moment) => defaultMoment.Moment;