@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
@@ -1,11 +1,11 @@
1
1
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
2
2
  import _extends from "@babel/runtime/helpers/esm/extends";
3
- const _excluded = ["autoFocus", "onViewChange", "value", "defaultValue", "disableFuture", "disablePast", "defaultCalendarMonth", "onChange", "onYearChange", "onMonthChange", "reduceAnimations", "shouldDisableDate", "shouldDisableMonth", "shouldDisableYear", "view", "views", "openTo", "className", "disabled", "readOnly", "minDate", "maxDate", "disableHighlightToday", "focusedView", "onFocusedViewChange", "showDaysOutsideCurrentMonth", "fixedWeekNumber", "dayOfWeekFormatter", "components", "componentsProps", "slots", "slotProps", "loading", "renderLoading", "displayWeekNumber", "yearsPerRow", "monthsPerRow"];
3
+ const _excluded = ["autoFocus", "onViewChange", "value", "defaultValue", "referenceDate", "disableFuture", "disablePast", "defaultCalendarMonth", "onChange", "onYearChange", "onMonthChange", "reduceAnimations", "shouldDisableDate", "shouldDisableMonth", "shouldDisableYear", "view", "views", "openTo", "className", "disabled", "readOnly", "minDate", "maxDate", "disableHighlightToday", "focusedView", "onFocusedViewChange", "showDaysOutsideCurrentMonth", "fixedWeekNumber", "dayOfWeekFormatter", "components", "componentsProps", "slots", "slotProps", "loading", "renderLoading", "displayWeekNumber", "yearsPerRow", "monthsPerRow", "timezone"];
4
4
  import * as React from 'react';
5
5
  import PropTypes from 'prop-types';
6
6
  import clsx from 'clsx';
7
7
  import { styled, useThemeProps } from '@mui/material/styles';
8
- import { unstable_composeClasses as composeClasses, unstable_useId as useId, unstable_useEventCallback as useEventCallback, unstable_useControlled as useControlled } from '@mui/utils';
8
+ import { unstable_composeClasses as composeClasses, unstable_useId as useId, unstable_useEventCallback as useEventCallback } from '@mui/utils';
9
9
  import { useCalendarState } from './useCalendarState';
10
10
  import { useDefaultDates, useUtils } from '../internals/hooks/useUtils';
11
11
  import { PickersFadeTransitionGroup } from './PickersFadeTransitionGroup';
@@ -18,6 +18,8 @@ import { findClosestEnabledDate, applyDefaultDate, mergeDateAndTime } from '../i
18
18
  import { PickerViewRoot } from '../internals/components/PickerViewRoot';
19
19
  import { defaultReduceAnimations } from '../internals/utils/defaultReduceAnimations';
20
20
  import { getDateCalendarUtilityClass } from './dateCalendarClasses';
21
+ import { useControlledValueWithTimezone } from '../internals/hooks/useValueWithTimezone';
22
+ import { singleItemValueManager } from '../internals/utils/valueManagers';
21
23
  import { jsx as _jsx } from "react/jsx-runtime";
22
24
  import { jsxs as _jsxs } from "react/jsx-runtime";
23
25
  const useUtilityClasses = ownerState => {
@@ -84,6 +86,7 @@ export const DateCalendar = /*#__PURE__*/React.forwardRef(function DateCalendar(
84
86
  onViewChange,
85
87
  value: valueProp,
86
88
  defaultValue,
89
+ referenceDate: referenceDateProp,
87
90
  disableFuture,
88
91
  disablePast,
89
92
  defaultCalendarMonth,
@@ -116,18 +119,21 @@ export const DateCalendar = /*#__PURE__*/React.forwardRef(function DateCalendar(
116
119
  renderLoading,
117
120
  displayWeekNumber,
118
121
  yearsPerRow,
119
- monthsPerRow
122
+ monthsPerRow,
123
+ timezone: timezoneProp
120
124
  } = props,
121
125
  other = _objectWithoutPropertiesLoose(props, _excluded);
122
- const [value, setValue] = useControlled({
126
+ const {
127
+ value,
128
+ handleValueChange,
129
+ timezone
130
+ } = useControlledValueWithTimezone({
123
131
  name: 'DateCalendar',
124
- state: 'value',
125
- controlled: valueProp,
126
- default: defaultValue ?? null
127
- });
128
- const handleValueChange = useEventCallback((newValue, selectionState) => {
129
- setValue(newValue);
130
- onChange?.(newValue, selectionState);
132
+ timezone: timezoneProp,
133
+ value: valueProp,
134
+ defaultValue,
135
+ onChange,
136
+ valueManager: singleItemValueManager
131
137
  });
132
138
  const {
133
139
  view,
@@ -147,6 +153,7 @@ export const DateCalendar = /*#__PURE__*/React.forwardRef(function DateCalendar(
147
153
  onFocusedViewChange
148
154
  });
149
155
  const {
156
+ referenceDate,
150
157
  calendarState,
151
158
  changeFocusedDay,
152
159
  changeMonth,
@@ -156,13 +163,15 @@ export const DateCalendar = /*#__PURE__*/React.forwardRef(function DateCalendar(
156
163
  } = useCalendarState({
157
164
  value,
158
165
  defaultCalendarMonth,
166
+ referenceDate: referenceDateProp,
159
167
  reduceAnimations,
160
168
  onMonthChange,
161
169
  minDate,
162
170
  maxDate,
163
171
  shouldDisableDate,
164
172
  disablePast,
165
- disableFuture
173
+ disableFuture,
174
+ timezone
166
175
  });
167
176
  const handleDateMonthChange = useEventCallback(newDate => {
168
177
  const startOfMonth = utils.startOfMonth(newDate);
@@ -174,7 +183,8 @@ export const DateCalendar = /*#__PURE__*/React.forwardRef(function DateCalendar(
174
183
  maxDate: utils.isAfter(maxDate, endOfMonth) ? endOfMonth : maxDate,
175
184
  disablePast,
176
185
  disableFuture,
177
- isDateDisabled
186
+ isDateDisabled,
187
+ timezone
178
188
  }) : newDate;
179
189
  if (closestEnabledDate) {
180
190
  setValueAndGoToNextView(closestEnabledDate, 'finish');
@@ -195,7 +205,8 @@ export const DateCalendar = /*#__PURE__*/React.forwardRef(function DateCalendar(
195
205
  maxDate: utils.isAfter(maxDate, endOfYear) ? endOfYear : maxDate,
196
206
  disablePast,
197
207
  disableFuture,
198
- isDateDisabled
208
+ isDateDisabled,
209
+ timezone
199
210
  }) : newDate;
200
211
  if (closestEnabledDate) {
201
212
  setValueAndGoToNextView(closestEnabledDate, 'finish');
@@ -207,9 +218,9 @@ export const DateCalendar = /*#__PURE__*/React.forwardRef(function DateCalendar(
207
218
  changeFocusedDay(closestEnabledDate, true);
208
219
  });
209
220
  const handleSelectedDayChange = useEventCallback(day => {
210
- if (value && day) {
221
+ if (day) {
211
222
  // If there is a date already selected, then we want to keep its time
212
- return handleValueChange(mergeDateAndTime(utils, day, value), 'finish');
223
+ return handleValueChange(mergeDateAndTime(utils, day, value ?? referenceDate), 'finish');
213
224
  }
214
225
  return handleValueChange(day, 'finish');
215
226
  });
@@ -234,7 +245,8 @@ export const DateCalendar = /*#__PURE__*/React.forwardRef(function DateCalendar(
234
245
  const commonViewProps = {
235
246
  disableHighlightToday,
236
247
  readOnly,
237
- disabled
248
+ disabled,
249
+ timezone
238
250
  };
239
251
  const gridLabelId = `${id}-grid-label`;
240
252
  const hasFocus = focusedView !== null;
@@ -273,7 +285,8 @@ export const DateCalendar = /*#__PURE__*/React.forwardRef(function DateCalendar(
273
285
  reduceAnimations: reduceAnimations,
274
286
  labelId: gridLabelId,
275
287
  slots: slots,
276
- slotProps: slotProps
288
+ slotProps: slotProps,
289
+ timezone: timezone
277
290
  }), /*#__PURE__*/_jsx(DateCalendarViewTransitionContainer, {
278
291
  reduceAnimations: reduceAnimations,
279
292
  className: classes.viewTransitionContainer,
@@ -286,7 +299,8 @@ export const DateCalendar = /*#__PURE__*/React.forwardRef(function DateCalendar(
286
299
  shouldDisableYear: shouldDisableYear,
287
300
  hasFocus: hasFocus,
288
301
  onFocusedViewChange: isViewFocused => setFocusedView('year', isViewFocused),
289
- yearsPerRow: yearsPerRow
302
+ yearsPerRow: yearsPerRow,
303
+ referenceDate: referenceDate
290
304
  })), view === 'month' && /*#__PURE__*/_jsx(MonthCalendar, _extends({}, baseDateValidationProps, commonViewProps, {
291
305
  hasFocus: hasFocus,
292
306
  className: className,
@@ -294,7 +308,8 @@ export const DateCalendar = /*#__PURE__*/React.forwardRef(function DateCalendar(
294
308
  onChange: handleDateMonthChange,
295
309
  shouldDisableMonth: shouldDisableMonth,
296
310
  onFocusedViewChange: isViewFocused => setFocusedView('month', isViewFocused),
297
- monthsPerRow: monthsPerRow
311
+ monthsPerRow: monthsPerRow,
312
+ referenceDate: referenceDate
298
313
  })), view === 'day' && /*#__PURE__*/_jsx(DayCalendar, _extends({}, calendarState, baseDateValidationProps, commonViewProps, {
299
314
  onMonthSwitchingAnimationEnd: onMonthSwitchingAnimationEnd,
300
315
  onFocusedDayChange: changeFocusedDay,
@@ -356,7 +371,7 @@ process.env.NODE_ENV !== "production" ? DateCalendar.propTypes = {
356
371
  */
357
372
  dayOfWeekFormatter: PropTypes.func,
358
373
  /**
359
- * Default calendar month displayed when `value={null}`.
374
+ * Default calendar month displayed when `value` and `defaultValue` are empty.
360
375
  */
361
376
  defaultCalendarMonth: PropTypes.any,
362
377
  /**
@@ -465,6 +480,11 @@ process.env.NODE_ENV !== "production" ? DateCalendar.propTypes = {
465
480
  * @default typeof navigator !== 'undefined' && /(android)/i.test(navigator.userAgent)
466
481
  */
467
482
  reduceAnimations: PropTypes.bool,
483
+ /**
484
+ * The date used to generate the new value when both `value` and `defaultValue` are empty.
485
+ * @default The closest valid date using the validation props, except callbacks such as `shouldDisableDate`.
486
+ */
487
+ referenceDate: PropTypes.any,
468
488
  /**
469
489
  * Component displaying when passed `loading` true.
470
490
  * @returns {React.ReactNode} The node to render when loading.
@@ -517,6 +537,14 @@ process.env.NODE_ENV !== "production" ? DateCalendar.propTypes = {
517
537
  * The system prop that allows defining system overrides as well as additional CSS styles.
518
538
  */
519
539
  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),
540
+ /**
541
+ * Choose which timezone to use for the value.
542
+ * Example: "default", "system", "UTC", "America/New_York".
543
+ * If you pass values from other timezones to some props, they will be converted to this timezone before being used.
544
+ * @see See the {@link https://mui.com/x/react-date-pickers/timezone/ timezones documention} for more details.
545
+ * @default The timezone of the `value` or `defaultValue` prop is defined, 'default' otherwise.
546
+ */
547
+ timezone: PropTypes.string,
520
548
  /**
521
549
  * The selected value.
522
550
  * Used when the component is controlled.
@@ -138,8 +138,6 @@ function WrappedDay(_ref) {
138
138
  isViewFocused
139
139
  } = _ref,
140
140
  other = _objectWithoutPropertiesLoose(_ref, _excluded);
141
- const utils = useUtils();
142
- const now = useNow();
143
141
  const {
144
142
  disabled,
145
143
  disableHighlightToday,
@@ -148,8 +146,11 @@ function WrappedDay(_ref) {
148
146
  components,
149
147
  componentsProps,
150
148
  slots,
151
- slotProps
149
+ slotProps,
150
+ timezone
152
151
  } = parentProps;
152
+ const utils = useUtils();
153
+ const now = useNow(timezone);
153
154
  const isFocusableDay = focusableDay !== null && utils.isSameDay(day, focusableDay);
154
155
  const isSelected = selectedDays.some(selectedDay => utils.isSameDay(selectedDay, day));
155
156
  const isToday = utils.isSameDay(day, now);
@@ -207,15 +208,10 @@ function WrappedDay(_ref) {
207
208
  * @ignore - do not document.
208
209
  */
209
210
  export function DayCalendar(inProps) {
210
- const now = useNow();
211
- const utils = useUtils();
212
211
  const props = useThemeProps({
213
212
  props: inProps,
214
213
  name: 'MuiDayCalendar'
215
214
  });
216
- const classes = useUtilityClasses(props);
217
- const theme = useTheme();
218
- const isRTL = theme.direction === 'rtl';
219
215
  const {
220
216
  onFocusedDayChange,
221
217
  className,
@@ -245,8 +241,14 @@ export function DayCalendar(inProps) {
245
241
  gridLabelId,
246
242
  displayWeekNumber,
247
243
  fixedWeekNumber,
248
- autoFocus
244
+ autoFocus,
245
+ timezone
249
246
  } = props;
247
+ const now = useNow(timezone);
248
+ const utils = useUtils();
249
+ const classes = useUtilityClasses(props);
250
+ const theme = useTheme();
251
+ const isRTL = theme.direction === 'rtl';
250
252
  const isDateDisabled = useIsDateDisabled({
251
253
  shouldDisableDate,
252
254
  shouldDisableMonth,
@@ -254,7 +256,8 @@ export function DayCalendar(inProps) {
254
256
  minDate,
255
257
  maxDate,
256
258
  disablePast,
257
- disableFuture
259
+ disableFuture,
260
+ timezone
258
261
  });
259
262
  const localeText = useLocaleText();
260
263
  const [internalHasFocus, setInternalHasFocus] = useControlled({
@@ -297,7 +300,8 @@ export function DayCalendar(inProps) {
297
300
  date: newFocusedDayDefault,
298
301
  minDate: isRTL ? newFocusedDayDefault : utils.startOfMonth(nextAvailableMonth),
299
302
  maxDate: isRTL ? utils.endOfMonth(nextAvailableMonth) : newFocusedDayDefault,
300
- isDateDisabled
303
+ isDateDisabled,
304
+ timezone
301
305
  });
302
306
  focusDay(closestDayToFocus || newFocusedDayDefault);
303
307
  event.preventDefault();
@@ -312,7 +316,8 @@ export function DayCalendar(inProps) {
312
316
  date: newFocusedDayDefault,
313
317
  minDate: isRTL ? utils.startOfMonth(nextAvailableMonth) : newFocusedDayDefault,
314
318
  maxDate: isRTL ? newFocusedDayDefault : utils.endOfMonth(nextAvailableMonth),
315
- isDateDisabled
319
+ isDateDisabled,
320
+ timezone
316
321
  });
317
322
  focusDay(closestDayToFocus || newFocusedDayDefault);
318
323
  event.preventDefault();
@@ -363,14 +368,16 @@ export function DayCalendar(inProps) {
363
368
  maxDate: endOfMonth,
364
369
  disablePast,
365
370
  disableFuture,
366
- isDateDisabled
371
+ isDateDisabled,
372
+ timezone
367
373
  });
368
374
  }
369
375
  return internalFocusedDay;
370
- }, [currentMonth, disableFuture, disablePast, internalFocusedDay, isDateDisabled, utils]);
376
+ }, [currentMonth, disableFuture, disablePast, internalFocusedDay, isDateDisabled, utils, timezone]);
371
377
  const weeksToDisplay = React.useMemo(() => {
372
- const toDisplay = utils.getWeekArray(currentMonth);
373
- let nextMonth = utils.addMonths(currentMonth, 1);
378
+ const currentMonthWithTimezone = utils.setTimezone(currentMonth, timezone);
379
+ const toDisplay = utils.getWeekArray(currentMonthWithTimezone);
380
+ let nextMonth = utils.addMonths(currentMonthWithTimezone, 1);
374
381
  while (fixedWeekNumber && toDisplay.length < fixedWeekNumber) {
375
382
  const additionalWeeks = utils.getWeekArray(nextMonth);
376
383
  const hasCommonWeek = utils.isSameDay(toDisplay[toDisplay.length - 1][0], additionalWeeks[0][0]);
@@ -382,7 +389,7 @@ export function DayCalendar(inProps) {
382
389
  nextMonth = utils.addMonths(nextMonth, 1);
383
390
  }
384
391
  return toDisplay;
385
- }, [currentMonth, fixedWeekNumber, utils]);
392
+ }, [currentMonth, fixedWeekNumber, utils, timezone]);
386
393
  return /*#__PURE__*/_jsxs("div", {
387
394
  role: "grid",
388
395
  "aria-labelledby": gridLabelId,
@@ -116,7 +116,8 @@ export function PickersCalendarHeader(inProps) {
116
116
  view,
117
117
  reduceAnimations,
118
118
  views,
119
- labelId
119
+ labelId,
120
+ timezone
120
121
  } = props;
121
122
  const ownerState = props;
122
123
  const classes = useUtilityClasses(props);
@@ -144,11 +145,13 @@ export function PickersCalendarHeader(inProps) {
144
145
  const selectPreviousMonth = () => onMonthChange(utils.addMonths(month, -1), 'right');
145
146
  const isNextMonthDisabled = useNextMonthDisabled(month, {
146
147
  disableFuture,
147
- maxDate
148
+ maxDate,
149
+ timezone
148
150
  });
149
151
  const isPreviousMonthDisabled = usePreviousMonthDisabled(month, {
150
152
  disablePast,
151
- minDate
153
+ minDate,
154
+ timezone
152
155
  });
153
156
  const handleToggleView = () => {
154
157
  if (views.length === 1 || !onViewChange || disabled) {
@@ -3,7 +3,8 @@ import * as React from 'react';
3
3
  import useEventCallback from '@mui/utils/useEventCallback';
4
4
  import { useIsDateDisabled } from './useIsDateDisabled';
5
5
  import { useUtils, useNow } from '../internals/hooks/useUtils';
6
- import { clamp } from '../internals/utils/date-utils';
6
+ import { singleItemValueManager } from '../internals/utils/valueManagers';
7
+ import { SECTION_TYPE_GRANULARITY } from '../internals/utils/getDefaultReferenceDate';
7
8
  export const createCalendarStateReducer = (reduceAnimations, disableSwitchToMonthOnDayFocus, utils) => (state, action) => {
8
9
  switch (action.type) {
9
10
  case 'changeMonth':
@@ -33,25 +34,47 @@ export const createCalendarStateReducer = (reduceAnimations, disableSwitchToMont
33
34
  throw new Error('missing support');
34
35
  }
35
36
  };
36
- export const useCalendarState = ({
37
- value,
38
- defaultCalendarMonth,
39
- disableFuture,
40
- disablePast,
41
- disableSwitchToMonthOnDayFocus = false,
42
- maxDate,
43
- minDate,
44
- onMonthChange,
45
- reduceAnimations,
46
- shouldDisableDate
47
- }) => {
48
- const now = useNow();
37
+ export const useCalendarState = params => {
38
+ const {
39
+ value,
40
+ referenceDate: referenceDateProp,
41
+ defaultCalendarMonth,
42
+ disableFuture,
43
+ disablePast,
44
+ disableSwitchToMonthOnDayFocus = false,
45
+ maxDate,
46
+ minDate,
47
+ onMonthChange,
48
+ reduceAnimations,
49
+ shouldDisableDate,
50
+ timezone
51
+ } = params;
52
+ const now = useNow(timezone);
49
53
  const utils = useUtils();
50
54
  const reducerFn = React.useRef(createCalendarStateReducer(Boolean(reduceAnimations), disableSwitchToMonthOnDayFocus, utils)).current;
55
+ const referenceDate = React.useMemo(() => {
56
+ let externalReferenceDate = null;
57
+ if (referenceDateProp) {
58
+ externalReferenceDate = referenceDateProp;
59
+ } else if (defaultCalendarMonth) {
60
+ // For `defaultCalendarMonth`, we just want to keep the month and the year to avoid a behavior change.
61
+ externalReferenceDate = utils.startOfMonth(defaultCalendarMonth);
62
+ }
63
+ return singleItemValueManager.getInitialReferenceValue({
64
+ value,
65
+ utils,
66
+ timezone,
67
+ props: params,
68
+ referenceDate: externalReferenceDate,
69
+ granularity: SECTION_TYPE_GRANULARITY.day
70
+ });
71
+ }, [] // eslint-disable-line react-hooks/exhaustive-deps
72
+ );
73
+
51
74
  const [calendarState, dispatch] = React.useReducer(reducerFn, {
52
75
  isMonthSwitchingAnimating: false,
53
76
  focusedDay: value || now,
54
- currentMonth: utils.startOfMonth(value ?? defaultCalendarMonth ?? clamp(utils, now, minDate, maxDate)),
77
+ currentMonth: utils.startOfMonth(referenceDate),
55
78
  slideDirection: 'left'
56
79
  });
57
80
  const handleChangeMonth = React.useCallback(payload => {
@@ -77,7 +100,8 @@ export const useCalendarState = ({
77
100
  minDate,
78
101
  maxDate,
79
102
  disableFuture,
80
- disablePast
103
+ disablePast,
104
+ timezone
81
105
  });
82
106
  const onMonthSwitchingAnimationEnd = React.useCallback(() => {
83
107
  dispatch({
@@ -94,6 +118,7 @@ export const useCalendarState = ({
94
118
  }
95
119
  });
96
120
  return {
121
+ referenceDate,
97
122
  calendarState,
98
123
  changeMonth,
99
124
  changeFocusedDay,
@@ -8,7 +8,8 @@ export const useIsDateDisabled = ({
8
8
  minDate,
9
9
  maxDate,
10
10
  disableFuture,
11
- disablePast
11
+ disablePast,
12
+ timezone
12
13
  }) => {
13
14
  const adapter = useLocalizationContext();
14
15
  return React.useCallback(day => validateDate({
@@ -21,7 +22,8 @@ export const useIsDateDisabled = ({
21
22
  minDate,
22
23
  maxDate,
23
24
  disableFuture,
24
- disablePast
25
+ disablePast,
26
+ timezone
25
27
  }
26
- }) !== null, [adapter, shouldDisableDate, shouldDisableMonth, shouldDisableYear, minDate, maxDate, disableFuture, disablePast]);
28
+ }) !== null, [adapter, shouldDisableDate, shouldDisableMonth, shouldDisableYear, minDate, maxDate, disableFuture, disablePast, timezone]);
27
29
  };
@@ -229,7 +229,7 @@ process.env.NODE_ENV !== "production" ? DateField.propTypes = {
229
229
  */
230
230
  readOnly: PropTypes.bool,
231
231
  /**
232
- * The date used to generate a part of the date-time that is not present in the format when both `value` and `defaultValue` are not present.
232
+ * The date used to generate a part of the new value that is not present in the format when both `value` and `defaultValue` are empty.
233
233
  * For example, on time fields it will be used to determine the date to set.
234
234
  * @default The closest valid date using the validation props, except callbacks such as `shouldDisableDate`. Value is rounded to the most granular section used.
235
235
  */
@@ -307,6 +307,14 @@ process.env.NODE_ENV !== "production" ? DateField.propTypes = {
307
307
  * The system prop that allows defining system overrides as well as additional CSS styles.
308
308
  */
309
309
  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),
310
+ /**
311
+ * Choose which timezone to use for the value.
312
+ * Example: "default", "system", "UTC", "America/New_York".
313
+ * If you pass values from other timezones to some props, they will be converted to this timezone before being used.
314
+ * @see See the {@link https://mui.com/x/react-date-pickers/timezone/ timezones documention} for more details.
315
+ * @default The timezone of the `value` or `defaultValue` prop is defined, 'default' otherwise.
316
+ */
317
+ timezone: PropTypes.string,
310
318
  /**
311
319
  * The ref object used to imperatively interact with the field.
312
320
  */
@@ -73,7 +73,7 @@ process.env.NODE_ENV !== "production" ? DatePicker.propTypes = {
73
73
  */
74
74
  dayOfWeekFormatter: PropTypes.func,
75
75
  /**
76
- * Default calendar month displayed when `value={null}`.
76
+ * Default calendar month displayed when `value` and `defaultValue` are empty.
77
77
  */
78
78
  defaultCalendarMonth: PropTypes.any,
79
79
  /**
@@ -310,6 +310,14 @@ process.env.NODE_ENV !== "production" ? DatePicker.propTypes = {
310
310
  * The system prop that allows defining system overrides as well as additional CSS styles.
311
311
  */
312
312
  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),
313
+ /**
314
+ * Choose which timezone to use for the value.
315
+ * Example: "default", "system", "UTC", "America/New_York".
316
+ * If you pass values from other timezones to some props, they will be converted to this timezone before being used.
317
+ * @see See the {@link https://mui.com/x/react-date-pickers/timezone/ timezones documention} for more details.
318
+ * @default The timezone of the `value` or `defaultValue` prop is defined, 'default' otherwise.
319
+ */
320
+ timezone: PropTypes.string,
313
321
  /**
314
322
  * The selected value.
315
323
  * Used when the component is controlled.
@@ -262,7 +262,7 @@ process.env.NODE_ENV !== "production" ? DateTimeField.propTypes = {
262
262
  */
263
263
  readOnly: PropTypes.bool,
264
264
  /**
265
- * The date used to generate a part of the date-time that is not present in the format when both `value` and `defaultValue` are not present.
265
+ * The date used to generate a part of the new value that is not present in the format when both `value` and `defaultValue` are empty.
266
266
  * For example, on time fields it will be used to determine the date to set.
267
267
  * @default The closest valid date using the validation props, except callbacks such as `shouldDisableDate`. Value is rounded to the most granular section used.
268
268
  */
@@ -356,6 +356,14 @@ process.env.NODE_ENV !== "production" ? DateTimeField.propTypes = {
356
356
  * The system prop that allows defining system overrides as well as additional CSS styles.
357
357
  */
358
358
  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),
359
+ /**
360
+ * Choose which timezone to use for the value.
361
+ * Example: "default", "system", "UTC", "America/New_York".
362
+ * If you pass values from other timezones to some props, they will be converted to this timezone before being used.
363
+ * @see See the {@link https://mui.com/x/react-date-pickers/timezone/ timezones documention} for more details.
364
+ * @default The timezone of the `value` or `defaultValue` prop is defined, 'default' otherwise.
365
+ */
366
+ timezone: PropTypes.string,
359
367
  /**
360
368
  * The ref object used to imperatively interact with the field.
361
369
  */
@@ -83,7 +83,7 @@ process.env.NODE_ENV !== "production" ? DateTimePicker.propTypes = {
83
83
  */
84
84
  dayOfWeekFormatter: PropTypes.func,
85
85
  /**
86
- * Default calendar month displayed when `value={null}`.
86
+ * Default calendar month displayed when `value` and `defaultValue` are empty.
87
87
  */
88
88
  defaultCalendarMonth: PropTypes.any,
89
89
  /**
@@ -380,6 +380,14 @@ process.env.NODE_ENV !== "production" ? DateTimePicker.propTypes = {
380
380
  minutes: PropTypes.number,
381
381
  seconds: PropTypes.number
382
382
  }),
383
+ /**
384
+ * Choose which timezone to use for the value.
385
+ * Example: "default", "system", "UTC", "America/New_York".
386
+ * If you pass values from other timezones to some props, they will be converted to this timezone before being used.
387
+ * @see See the {@link https://mui.com/x/react-date-pickers/timezone/ timezones documention} for more details.
388
+ * @default The timezone of the `value` or `defaultValue` prop is defined, 'default' otherwise.
389
+ */
390
+ timezone: PropTypes.string,
383
391
  /**
384
392
  * The selected value.
385
393
  * Used when the component is controlled.
@@ -93,7 +93,7 @@ DesktopDatePicker.propTypes = {
93
93
  */
94
94
  dayOfWeekFormatter: PropTypes.func,
95
95
  /**
96
- * Default calendar month displayed when `value={null}`.
96
+ * Default calendar month displayed when `value` and `defaultValue` are empty.
97
97
  */
98
98
  defaultCalendarMonth: PropTypes.any,
99
99
  /**
@@ -324,6 +324,14 @@ DesktopDatePicker.propTypes = {
324
324
  * The system prop that allows defining system overrides as well as additional CSS styles.
325
325
  */
326
326
  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),
327
+ /**
328
+ * Choose which timezone to use for the value.
329
+ * Example: "default", "system", "UTC", "America/New_York".
330
+ * If you pass values from other timezones to some props, they will be converted to this timezone before being used.
331
+ * @see See the {@link https://mui.com/x/react-date-pickers/timezone/ timezones documention} for more details.
332
+ * @default The timezone of the `value` or `defaultValue` prop is defined, 'default' otherwise.
333
+ */
334
+ timezone: PropTypes.string,
327
335
  /**
328
336
  * The selected value.
329
337
  * Used when the component is controlled.
@@ -139,7 +139,7 @@ DesktopDateTimePicker.propTypes = {
139
139
  */
140
140
  dayOfWeekFormatter: PropTypes.func,
141
141
  /**
142
- * Default calendar month displayed when `value={null}`.
142
+ * Default calendar month displayed when `value` and `defaultValue` are empty.
143
143
  */
144
144
  defaultCalendarMonth: PropTypes.any,
145
145
  /**
@@ -430,6 +430,14 @@ DesktopDateTimePicker.propTypes = {
430
430
  minutes: PropTypes.number,
431
431
  seconds: PropTypes.number
432
432
  }),
433
+ /**
434
+ * Choose which timezone to use for the value.
435
+ * Example: "default", "system", "UTC", "America/New_York".
436
+ * If you pass values from other timezones to some props, they will be converted to this timezone before being used.
437
+ * @see See the {@link https://mui.com/x/react-date-pickers/timezone/ timezones documention} for more details.
438
+ * @default The timezone of the `value` or `defaultValue` prop is defined, 'default' otherwise.
439
+ */
440
+ timezone: PropTypes.string,
433
441
  /**
434
442
  * The selected value.
435
443
  * Used when the component is controlled.
@@ -314,6 +314,14 @@ DesktopTimePicker.propTypes = {
314
314
  minutes: PropTypes.number,
315
315
  seconds: PropTypes.number
316
316
  }),
317
+ /**
318
+ * Choose which timezone to use for the value.
319
+ * Example: "default", "system", "UTC", "America/New_York".
320
+ * If you pass values from other timezones to some props, they will be converted to this timezone before being used.
321
+ * @see See the {@link https://mui.com/x/react-date-pickers/timezone/ timezones documention} for more details.
322
+ * @default The timezone of the `value` or `defaultValue` prop is defined, 'default' otherwise.
323
+ */
324
+ timezone: PropTypes.string,
317
325
  /**
318
326
  * The selected value.
319
327
  * Used when the component is controlled.