@mui/x-date-pickers 8.0.0-beta.0 → 8.0.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (237) hide show
  1. package/CHANGELOG.md +171 -0
  2. package/DateCalendar/DateCalendar.js +4 -8
  3. package/DateCalendar/DayCalendar.d.ts +3 -7
  4. package/DateCalendar/DayCalendar.js +18 -10
  5. package/DateCalendar/index.d.ts +0 -1
  6. package/DateField/useDateField.d.ts +1 -1
  7. package/DateField/useDateField.js +2 -16
  8. package/DatePicker/DatePicker.js +1 -0
  9. package/DatePicker/shared.js +3 -9
  10. package/DateTimeField/useDateTimeField.d.ts +1 -1
  11. package/DateTimeField/useDateTimeField.js +2 -16
  12. package/DateTimePicker/DateTimePicker.js +1 -0
  13. package/DateTimePicker/shared.js +3 -13
  14. package/DesktopDatePicker/DesktopDatePicker.js +1 -0
  15. package/DesktopDateTimePicker/DesktopDateTimePicker.js +1 -0
  16. package/DesktopTimePicker/DesktopTimePicker.js +1 -0
  17. package/MobileDatePicker/MobileDatePicker.js +1 -0
  18. package/MobileDateTimePicker/MobileDateTimePicker.js +1 -0
  19. package/MobileTimePicker/MobileTimePicker.js +1 -0
  20. package/MonthCalendar/MonthCalendar.js +4 -9
  21. package/PickersDay/PickersDay.d.ts +1 -72
  22. package/PickersDay/PickersDay.js +30 -28
  23. package/PickersDay/PickersDay.types.d.ts +114 -0
  24. package/PickersDay/PickersDay.types.js +5 -0
  25. package/PickersDay/index.d.ts +1 -1
  26. package/PickersDay/usePickerDayOwnerState.d.ts +14 -0
  27. package/PickersDay/usePickerDayOwnerState.js +40 -0
  28. package/PickersSectionList/PickersSectionList.d.ts +1 -1
  29. package/PickersSectionList/PickersSectionList.types.d.ts +2 -6
  30. package/TimeField/useTimeField.d.ts +1 -1
  31. package/TimeField/useTimeField.js +2 -16
  32. package/TimePicker/TimePicker.js +1 -0
  33. package/TimePicker/shared.js +3 -3
  34. package/YearCalendar/YearCalendar.js +4 -10
  35. package/esm/DateCalendar/DateCalendar.js +6 -10
  36. package/esm/DateCalendar/DayCalendar.d.ts +3 -7
  37. package/esm/DateCalendar/DayCalendar.js +18 -10
  38. package/esm/DateCalendar/index.d.ts +0 -1
  39. package/esm/DateField/useDateField.d.ts +1 -1
  40. package/esm/DateField/useDateField.js +3 -17
  41. package/esm/DatePicker/DatePicker.js +1 -0
  42. package/esm/DatePicker/shared.js +3 -9
  43. package/esm/DateTimeField/useDateTimeField.d.ts +1 -1
  44. package/esm/DateTimeField/useDateTimeField.js +3 -17
  45. package/esm/DateTimePicker/DateTimePicker.js +1 -0
  46. package/esm/DateTimePicker/shared.js +4 -14
  47. package/esm/DesktopDatePicker/DesktopDatePicker.js +1 -0
  48. package/esm/DesktopDateTimePicker/DesktopDateTimePicker.js +1 -0
  49. package/esm/DesktopTimePicker/DesktopTimePicker.js +1 -0
  50. package/esm/MobileDatePicker/MobileDatePicker.js +1 -0
  51. package/esm/MobileDateTimePicker/MobileDateTimePicker.js +1 -0
  52. package/esm/MobileTimePicker/MobileTimePicker.js +1 -0
  53. package/esm/MonthCalendar/MonthCalendar.js +6 -11
  54. package/esm/PickersDay/PickersDay.d.ts +1 -72
  55. package/esm/PickersDay/PickersDay.js +30 -28
  56. package/esm/PickersDay/PickersDay.types.d.ts +114 -0
  57. package/esm/PickersDay/PickersDay.types.js +1 -0
  58. package/esm/PickersDay/index.d.ts +1 -1
  59. package/esm/PickersDay/usePickerDayOwnerState.d.ts +14 -0
  60. package/esm/PickersDay/usePickerDayOwnerState.js +32 -0
  61. package/esm/PickersSectionList/PickersSectionList.d.ts +1 -1
  62. package/esm/PickersSectionList/PickersSectionList.types.d.ts +2 -6
  63. package/esm/TimeField/useTimeField.d.ts +1 -1
  64. package/esm/TimeField/useTimeField.js +3 -17
  65. package/esm/TimePicker/TimePicker.js +1 -0
  66. package/esm/TimePicker/shared.js +3 -3
  67. package/esm/YearCalendar/YearCalendar.js +5 -11
  68. package/esm/hooks/useSplitFieldProps.d.ts +1 -1
  69. package/esm/index.js +1 -1
  70. package/esm/internals/components/PickerFieldUI.d.ts +5 -5
  71. package/esm/internals/hooks/useField/buildSectionsFromFormat.d.ts +2 -2
  72. package/esm/internals/hooks/useField/buildSectionsFromFormat.js +9 -9
  73. package/esm/internals/hooks/useField/index.d.ts +1 -1
  74. package/esm/internals/hooks/useField/syncSelectionToDOM.d.ts +9 -0
  75. package/esm/internals/hooks/useField/syncSelectionToDOM.js +50 -0
  76. package/esm/internals/hooks/useField/useField.d.ts +2 -4
  77. package/esm/internals/hooks/useField/useField.js +5 -229
  78. package/esm/internals/hooks/useField/useField.types.d.ts +55 -68
  79. package/esm/internals/hooks/useField/useField.utils.d.ts +3 -8
  80. package/esm/internals/hooks/useField/useField.utils.js +7 -149
  81. package/esm/internals/hooks/useField/useFieldCharacterEditing.d.ts +19 -26
  82. package/esm/internals/hooks/useField/useFieldCharacterEditing.js +42 -60
  83. package/esm/internals/hooks/useField/useFieldHiddenInputProps.d.ts +20 -0
  84. package/esm/internals/hooks/useField/useFieldHiddenInputProps.js +31 -0
  85. package/esm/internals/hooks/useField/useFieldInternalPropsWithDefaults.js +8 -10
  86. package/esm/internals/hooks/useField/useFieldRootHandleKeyDown.d.ts +16 -0
  87. package/esm/internals/hooks/useField/useFieldRootHandleKeyDown.js +205 -0
  88. package/esm/internals/hooks/useField/useFieldRootProps.d.ts +32 -0
  89. package/esm/internals/hooks/useField/useFieldRootProps.js +150 -0
  90. package/esm/internals/hooks/useField/useFieldSectionContainerProps.d.ts +15 -0
  91. package/esm/internals/hooks/useField/useFieldSectionContainerProps.js +29 -0
  92. package/esm/internals/hooks/useField/useFieldSectionContentProps.d.ts +23 -0
  93. package/esm/internals/hooks/useField/useFieldSectionContentProps.js +226 -0
  94. package/esm/internals/hooks/useField/useFieldState.d.ts +23 -13
  95. package/esm/internals/hooks/useField/useFieldState.js +103 -30
  96. package/esm/internals/hooks/useField/useFieldV6TextField.d.ts +3 -3
  97. package/esm/internals/hooks/useField/useFieldV6TextField.js +202 -135
  98. package/esm/internals/hooks/useField/useFieldV7TextField.d.ts +3 -2
  99. package/esm/internals/hooks/useField/useFieldV7TextField.js +200 -367
  100. package/esm/internals/hooks/usePicker/usePicker.types.d.ts +1 -0
  101. package/esm/internals/index.d.ts +6 -5
  102. package/esm/internals/index.js +4 -3
  103. package/esm/locales/deDE.js +2 -3
  104. package/esm/managers/useDateManager.d.ts +4 -13
  105. package/esm/managers/useDateManager.js +21 -31
  106. package/esm/managers/useDateTimeManager.d.ts +4 -13
  107. package/esm/managers/useDateTimeManager.js +26 -36
  108. package/esm/managers/useTimeManager.d.ts +4 -13
  109. package/esm/managers/useTimeManager.js +17 -27
  110. package/esm/models/fields.d.ts +2 -2
  111. package/esm/models/manager.d.ts +6 -10
  112. package/esm/validation/validateDate.js +3 -4
  113. package/hooks/useSplitFieldProps.d.ts +1 -1
  114. package/index.js +1 -1
  115. package/internals/components/PickerFieldUI.d.ts +5 -5
  116. package/internals/hooks/useField/buildSectionsFromFormat.d.ts +2 -2
  117. package/internals/hooks/useField/buildSectionsFromFormat.js +9 -9
  118. package/internals/hooks/useField/index.d.ts +1 -1
  119. package/internals/hooks/useField/syncSelectionToDOM.d.ts +9 -0
  120. package/internals/hooks/useField/syncSelectionToDOM.js +56 -0
  121. package/internals/hooks/useField/useField.d.ts +2 -4
  122. package/internals/hooks/useField/useField.js +5 -231
  123. package/internals/hooks/useField/useField.types.d.ts +55 -68
  124. package/internals/hooks/useField/useField.utils.d.ts +3 -8
  125. package/internals/hooks/useField/useField.utils.js +9 -154
  126. package/internals/hooks/useField/useFieldCharacterEditing.d.ts +19 -26
  127. package/internals/hooks/useField/useFieldCharacterEditing.js +41 -59
  128. package/internals/hooks/useField/useFieldHiddenInputProps.d.ts +20 -0
  129. package/internals/hooks/useField/useFieldHiddenInputProps.js +39 -0
  130. package/internals/hooks/useField/useFieldInternalPropsWithDefaults.js +8 -10
  131. package/internals/hooks/useField/useFieldRootHandleKeyDown.d.ts +16 -0
  132. package/internals/hooks/useField/useFieldRootHandleKeyDown.js +211 -0
  133. package/internals/hooks/useField/useFieldRootProps.d.ts +32 -0
  134. package/internals/hooks/useField/useFieldRootProps.js +156 -0
  135. package/internals/hooks/useField/useFieldSectionContainerProps.d.ts +15 -0
  136. package/internals/hooks/useField/useFieldSectionContainerProps.js +37 -0
  137. package/internals/hooks/useField/useFieldSectionContentProps.d.ts +23 -0
  138. package/internals/hooks/useField/useFieldSectionContentProps.js +234 -0
  139. package/internals/hooks/useField/useFieldState.d.ts +23 -13
  140. package/internals/hooks/useField/useFieldState.js +102 -29
  141. package/internals/hooks/useField/useFieldV6TextField.d.ts +3 -3
  142. package/internals/hooks/useField/useFieldV6TextField.js +202 -135
  143. package/internals/hooks/useField/useFieldV7TextField.d.ts +3 -2
  144. package/internals/hooks/useField/useFieldV7TextField.js +200 -367
  145. package/internals/hooks/usePicker/usePicker.types.d.ts +1 -0
  146. package/internals/index.d.ts +6 -5
  147. package/internals/index.js +25 -18
  148. package/locales/deDE.js +2 -3
  149. package/managers/useDateManager.d.ts +4 -13
  150. package/managers/useDateManager.js +21 -31
  151. package/managers/useDateTimeManager.d.ts +4 -13
  152. package/managers/useDateTimeManager.js +26 -36
  153. package/managers/useTimeManager.d.ts +4 -13
  154. package/managers/useTimeManager.js +18 -28
  155. package/models/fields.d.ts +2 -2
  156. package/models/manager.d.ts +6 -10
  157. package/modern/DateCalendar/DateCalendar.js +6 -10
  158. package/modern/DateCalendar/DayCalendar.d.ts +3 -7
  159. package/modern/DateCalendar/DayCalendar.js +18 -10
  160. package/modern/DateCalendar/index.d.ts +0 -1
  161. package/modern/DateField/useDateField.d.ts +1 -1
  162. package/modern/DateField/useDateField.js +3 -17
  163. package/modern/DatePicker/DatePicker.js +1 -0
  164. package/modern/DatePicker/shared.js +3 -9
  165. package/modern/DateTimeField/useDateTimeField.d.ts +1 -1
  166. package/modern/DateTimeField/useDateTimeField.js +3 -17
  167. package/modern/DateTimePicker/DateTimePicker.js +1 -0
  168. package/modern/DateTimePicker/shared.js +4 -14
  169. package/modern/DesktopDatePicker/DesktopDatePicker.js +1 -0
  170. package/modern/DesktopDateTimePicker/DesktopDateTimePicker.js +1 -0
  171. package/modern/DesktopTimePicker/DesktopTimePicker.js +1 -0
  172. package/modern/MobileDatePicker/MobileDatePicker.js +1 -0
  173. package/modern/MobileDateTimePicker/MobileDateTimePicker.js +1 -0
  174. package/modern/MobileTimePicker/MobileTimePicker.js +1 -0
  175. package/modern/MonthCalendar/MonthCalendar.js +6 -11
  176. package/modern/PickersDay/PickersDay.d.ts +1 -72
  177. package/modern/PickersDay/PickersDay.js +30 -28
  178. package/modern/PickersDay/PickersDay.types.d.ts +114 -0
  179. package/modern/PickersDay/PickersDay.types.js +1 -0
  180. package/modern/PickersDay/index.d.ts +1 -1
  181. package/modern/PickersDay/usePickerDayOwnerState.d.ts +14 -0
  182. package/modern/PickersDay/usePickerDayOwnerState.js +32 -0
  183. package/modern/PickersSectionList/PickersSectionList.d.ts +1 -1
  184. package/modern/PickersSectionList/PickersSectionList.types.d.ts +2 -6
  185. package/modern/TimeField/useTimeField.d.ts +1 -1
  186. package/modern/TimeField/useTimeField.js +3 -17
  187. package/modern/TimePicker/TimePicker.js +1 -0
  188. package/modern/TimePicker/shared.js +3 -3
  189. package/modern/YearCalendar/YearCalendar.js +5 -11
  190. package/modern/hooks/useSplitFieldProps.d.ts +1 -1
  191. package/modern/index.js +1 -1
  192. package/modern/internals/components/PickerFieldUI.d.ts +5 -5
  193. package/modern/internals/hooks/useField/buildSectionsFromFormat.d.ts +2 -2
  194. package/modern/internals/hooks/useField/buildSectionsFromFormat.js +9 -9
  195. package/modern/internals/hooks/useField/index.d.ts +1 -1
  196. package/modern/internals/hooks/useField/syncSelectionToDOM.d.ts +9 -0
  197. package/modern/internals/hooks/useField/syncSelectionToDOM.js +50 -0
  198. package/modern/internals/hooks/useField/useField.d.ts +2 -4
  199. package/modern/internals/hooks/useField/useField.js +5 -229
  200. package/modern/internals/hooks/useField/useField.types.d.ts +55 -68
  201. package/modern/internals/hooks/useField/useField.utils.d.ts +3 -8
  202. package/modern/internals/hooks/useField/useField.utils.js +7 -149
  203. package/modern/internals/hooks/useField/useFieldCharacterEditing.d.ts +19 -26
  204. package/modern/internals/hooks/useField/useFieldCharacterEditing.js +42 -60
  205. package/modern/internals/hooks/useField/useFieldHiddenInputProps.d.ts +20 -0
  206. package/modern/internals/hooks/useField/useFieldHiddenInputProps.js +31 -0
  207. package/modern/internals/hooks/useField/useFieldInternalPropsWithDefaults.js +8 -10
  208. package/modern/internals/hooks/useField/useFieldRootHandleKeyDown.d.ts +16 -0
  209. package/modern/internals/hooks/useField/useFieldRootHandleKeyDown.js +205 -0
  210. package/modern/internals/hooks/useField/useFieldRootProps.d.ts +32 -0
  211. package/modern/internals/hooks/useField/useFieldRootProps.js +150 -0
  212. package/modern/internals/hooks/useField/useFieldSectionContainerProps.d.ts +15 -0
  213. package/modern/internals/hooks/useField/useFieldSectionContainerProps.js +29 -0
  214. package/modern/internals/hooks/useField/useFieldSectionContentProps.d.ts +23 -0
  215. package/modern/internals/hooks/useField/useFieldSectionContentProps.js +226 -0
  216. package/modern/internals/hooks/useField/useFieldState.d.ts +23 -13
  217. package/modern/internals/hooks/useField/useFieldState.js +103 -30
  218. package/modern/internals/hooks/useField/useFieldV6TextField.d.ts +3 -3
  219. package/modern/internals/hooks/useField/useFieldV6TextField.js +202 -135
  220. package/modern/internals/hooks/useField/useFieldV7TextField.d.ts +3 -2
  221. package/modern/internals/hooks/useField/useFieldV7TextField.js +200 -367
  222. package/modern/internals/hooks/usePicker/usePicker.types.d.ts +1 -0
  223. package/modern/internals/index.d.ts +6 -5
  224. package/modern/internals/index.js +4 -3
  225. package/modern/locales/deDE.js +2 -3
  226. package/modern/managers/useDateManager.d.ts +4 -13
  227. package/modern/managers/useDateManager.js +21 -31
  228. package/modern/managers/useDateTimeManager.d.ts +4 -13
  229. package/modern/managers/useDateTimeManager.js +26 -36
  230. package/modern/managers/useTimeManager.d.ts +4 -13
  231. package/modern/managers/useTimeManager.js +17 -27
  232. package/modern/models/fields.d.ts +2 -2
  233. package/modern/models/manager.d.ts +6 -10
  234. package/modern/validation/validateDate.js +3 -4
  235. package/package.json +2 -2
  236. package/tsconfig.build.tsbuildinfo +1 -1
  237. package/validation/validateDate.js +3 -4
@@ -0,0 +1,114 @@
1
+ import { ButtonBaseProps } from '@mui/material/ButtonBase';
2
+ import { PickerOwnerState, PickerValidDate } from "../models/pickers.js";
3
+ import { ExtendMui } from "../internals/models/helpers.js";
4
+ import { PickersDayClasses } from "./pickersDayClasses.js";
5
+ export interface PickerDayOwnerState extends PickerOwnerState {
6
+ /**
7
+ * The object representing the day.
8
+ */
9
+ day: PickerValidDate;
10
+ /**
11
+ * Whether the day is selected.
12
+ */
13
+ isDaySelected: boolean;
14
+ /**
15
+ * Whether the day is disabled.
16
+ */
17
+ isDayDisabled: boolean;
18
+ /**
19
+ * Whether the day is equal to today.
20
+ */
21
+ isDayCurrent: boolean;
22
+ /**
23
+ * Whether the day is outside the month it's being rendered in.
24
+ */
25
+ isDayOutsideMonth: boolean;
26
+ /**
27
+ * Whether the day is the first day of the week.
28
+ */
29
+ isDayStartOfWeek: boolean;
30
+ /**
31
+ * Whether the day is the last day of the week.
32
+ */
33
+ isDayEndOfWeek: boolean;
34
+ /**
35
+ * Whether the margin around the day should be removed.
36
+ */
37
+ disableMargin: boolean;
38
+ /**
39
+ * Whether the visual indication around the current day should be removed.
40
+ */
41
+ disableHighlightToday: boolean;
42
+ /**
43
+ * Whether the day outside of the month they are being rendered in should be visible.
44
+ */
45
+ showDaysOutsideCurrentMonth: boolean;
46
+ }
47
+ export interface ExportedPickersDayProps {
48
+ /**
49
+ * If `true`, today's date is rendering without highlighting with circle.
50
+ * @default false
51
+ */
52
+ disableHighlightToday?: boolean;
53
+ /**
54
+ * If `true`, days outside the current month are rendered:
55
+ *
56
+ * - if `fixedWeekNumber` is defined, renders days to have the weeks requested.
57
+ *
58
+ * - if `fixedWeekNumber` is not defined, renders day to fill the first and last week of the current month.
59
+ *
60
+ * - ignored if `calendars` equals more than `1` on range pickers.
61
+ * @default false
62
+ */
63
+ showDaysOutsideCurrentMonth?: boolean;
64
+ }
65
+ export interface PickersDayProps extends ExportedPickersDayProps, Omit<ExtendMui<ButtonBaseProps>, 'onKeyDown' | 'onFocus' | 'onBlur' | 'onMouseEnter' | 'LinkComponent'> {
66
+ /**
67
+ * Override or extend the styles applied to the component.
68
+ */
69
+ classes?: Partial<PickersDayClasses>;
70
+ /**
71
+ * The date to show.
72
+ */
73
+ day: PickerValidDate;
74
+ /**
75
+ * If `true`, renders as disabled.
76
+ * @default false
77
+ */
78
+ disabled?: boolean;
79
+ /**
80
+ * If `true`, days are rendering without margin. Useful for displaying linked range of days.
81
+ * @default false
82
+ */
83
+ disableMargin?: boolean;
84
+ isAnimating?: boolean;
85
+ onFocus?: (event: React.FocusEvent<HTMLButtonElement>, day: PickerValidDate) => void;
86
+ onBlur?: (event: React.FocusEvent<HTMLButtonElement>, day: PickerValidDate) => void;
87
+ onKeyDown?: (event: React.KeyboardEvent<HTMLButtonElement>, day: PickerValidDate) => void;
88
+ onMouseEnter?: (event: React.MouseEvent<HTMLButtonElement>, day: PickerValidDate) => void;
89
+ onDaySelect: (day: PickerValidDate) => void;
90
+ /**
91
+ * If `true`, day is outside of month and will be hidden.
92
+ */
93
+ outsideCurrentMonth: boolean;
94
+ /**
95
+ * If `true`, day is the first visible cell of the month.
96
+ * Either the first day of the month or the first day of the week depending on `showDaysOutsideCurrentMonth`.
97
+ */
98
+ isFirstVisibleCell: boolean;
99
+ /**
100
+ * If `true`, day is the last visible cell of the month.
101
+ * Either the last day of the month or the last day of the week depending on `showDaysOutsideCurrentMonth`.
102
+ */
103
+ isLastVisibleCell: boolean;
104
+ /**
105
+ * If `true`, renders as selected.
106
+ * @default false
107
+ */
108
+ selected?: boolean;
109
+ /**
110
+ * If `true`, renders as today date.
111
+ * @default false
112
+ */
113
+ today?: boolean;
114
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -1,4 +1,4 @@
1
1
  export { PickersDay } from "./PickersDay.js";
2
- export type { PickersDayProps } from './PickersDay';
2
+ export type { PickersDayProps, PickerDayOwnerState } from './PickersDay.types';
3
3
  export { pickersDayClasses, getPickersDayUtilityClass } from "./pickersDayClasses.js";
4
4
  export type { PickersDayClasses, PickersDayClassKey } from './pickersDayClasses';
@@ -0,0 +1,14 @@
1
+ import { PickerDayOwnerState } from "./PickersDay.types.js";
2
+ import { PickerValidDate } from "../models/pickers.js";
3
+ export declare function usePickerDayOwnerState(parameters: UsePickerDayOwnerStateParameters): PickerDayOwnerState;
4
+ interface UsePickerDayOwnerStateParameters {
5
+ day: PickerValidDate;
6
+ disabled: boolean | undefined;
7
+ selected: boolean | undefined;
8
+ today: boolean | undefined;
9
+ outsideCurrentMonth: boolean | undefined;
10
+ disableMargin: boolean | undefined;
11
+ disableHighlightToday: boolean | undefined;
12
+ showDaysOutsideCurrentMonth: boolean | undefined;
13
+ }
14
+ export {};
@@ -0,0 +1,32 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import * as React from 'react';
3
+ import { usePickerPrivateContext } from "../internals/hooks/usePickerPrivateContext.js";
4
+ import { useUtils } from "../internals/hooks/useUtils.js";
5
+ export function usePickerDayOwnerState(parameters) {
6
+ const {
7
+ disabled,
8
+ selected,
9
+ today,
10
+ outsideCurrentMonth,
11
+ day,
12
+ disableMargin,
13
+ disableHighlightToday,
14
+ showDaysOutsideCurrentMonth
15
+ } = parameters;
16
+ const utils = useUtils();
17
+ const {
18
+ ownerState: pickerOwnerState
19
+ } = usePickerPrivateContext();
20
+ return React.useMemo(() => _extends({}, pickerOwnerState, {
21
+ day,
22
+ isDaySelected: selected ?? false,
23
+ isDayDisabled: disabled ?? false,
24
+ isDayCurrent: today ?? false,
25
+ isDayOutsideMonth: outsideCurrentMonth ?? false,
26
+ isDayStartOfWeek: utils.isSameDay(day, utils.startOfWeek(day)),
27
+ isDayEndOfWeek: utils.isSameDay(day, utils.endOfWeek(day)),
28
+ disableMargin: disableMargin ?? false,
29
+ disableHighlightToday: disableHighlightToday ?? false,
30
+ showDaysOutsideCurrentMonth: showDaysOutsideCurrentMonth ?? false
31
+ }), [utils, pickerOwnerState, day, selected, disabled, today, outsideCurrentMonth, disableMargin, disableHighlightToday, showDaysOutsideCurrentMonth]);
32
+ }
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { PickersSectionListProps } from "./PickersSectionList.types.js";
2
+ import type { PickersSectionListProps } from './PickersSectionList.types';
3
3
  export declare const PickersSectionListRoot: import("@emotion/styled").StyledComponent<import("@mui/system").MUIStyledCommonProps<import("@mui/material").Theme>, Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof React.ClassAttributes<HTMLDivElement> | keyof React.HTMLAttributes<HTMLDivElement>>, {}>;
4
4
  export declare const PickersSectionListSection: import("@emotion/styled").StyledComponent<import("@mui/system").MUIStyledCommonProps<import("@mui/material").Theme>, Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, keyof React.ClassAttributes<HTMLSpanElement> | keyof React.HTMLAttributes<HTMLSpanElement>>, {}>;
5
5
  export declare const PickersSectionListSectionSeparator: import("@emotion/styled").StyledComponent<import("@mui/system").MUIStyledCommonProps<import("@mui/material").Theme>, Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, keyof React.ClassAttributes<HTMLSpanElement> | keyof React.HTMLAttributes<HTMLSpanElement>>, {}>;
@@ -2,6 +2,7 @@ import * as React from 'react';
2
2
  import { SlotComponentProps } from '@mui/utils';
3
3
  import { PickersSectionListClasses } from "./pickersSectionListClasses.js";
4
4
  import { PickerOwnerState } from "../models/index.js";
5
+ import type { UseFieldDOMGetters } from '../internals/hooks/useField/useField.types';
5
6
  export interface PickersSectionListSlots {
6
7
  root: React.ElementType;
7
8
  section: React.ElementType;
@@ -28,12 +29,7 @@ export interface PickersSectionElement {
28
29
  before: React.HTMLAttributes<HTMLSpanElement>;
29
30
  after: React.HTMLAttributes<HTMLSpanElement>;
30
31
  }
31
- export interface PickersSectionListRef {
32
- getRoot: () => HTMLElement;
33
- getSectionContainer: (sectionIndex: number) => HTMLElement;
34
- getSectionContent: (sectionIndex: number) => HTMLElement;
35
- getSectionIndexFromDOMElement: (element: Element | null | undefined) => number | null;
36
- }
32
+ export interface PickersSectionListRef extends Omit<UseFieldDOMGetters, 'isReady'> {}
37
33
  export interface ExportedPickersSectionListProps extends Pick<React.HTMLAttributes<HTMLDivElement>, 'tabIndex'> {
38
34
  /**
39
35
  * The elements to render.
@@ -1,2 +1,2 @@
1
1
  import { UseTimeFieldProps } from "./TimeField.types.js";
2
- export declare const useTimeField: <TEnableAccessibleFieldDOMStructure extends boolean, TAllProps extends UseTimeFieldProps<TEnableAccessibleFieldDOMStructure>>(props: TAllProps) => import("../internals").UseFieldResponse<TEnableAccessibleFieldDOMStructure, Omit<TAllProps, "disabled" | "readOnly" | "value" | "defaultValue" | "autoFocus" | "onChange" | "onError" | "format" | "focused" | keyof import("../internals").BaseTimeValidationProps | keyof import("../internals").TimeValidationProps | "ampm" | "referenceDate" | "formatDensity" | "timezone" | "shouldRespectLeadingZeros" | "selectedSections" | "onSelectedSectionsChange" | "unstableFieldRef" | "unstableStartFieldRef" | "unstableEndFieldRef" | "enableAccessibleFieldDOMStructure" | "dateSeparator">>;
2
+ export declare const useTimeField: <TEnableAccessibleFieldDOMStructure extends boolean, TProps extends UseTimeFieldProps<TEnableAccessibleFieldDOMStructure>>(props: TProps) => import("../internals").UseFieldReturnValue<TEnableAccessibleFieldDOMStructure, TProps>;
@@ -1,25 +1,11 @@
1
1
  'use client';
2
2
 
3
- import { useField, useFieldInternalPropsWithDefaults } from "../internals/hooks/useField/index.js";
4
- import { useSplitFieldProps } from "../hooks/index.js";
3
+ import { useField } from "../internals/hooks/useField/index.js";
5
4
  import { useTimeManager } from "../managers/index.js";
6
5
  export const useTimeField = props => {
7
6
  const manager = useTimeManager(props);
8
- const {
9
- forwardedProps,
10
- internalProps
11
- } = useSplitFieldProps(props, 'time');
12
- const internalPropsWithDefaults = useFieldInternalPropsWithDefaults({
13
- manager,
14
- internalProps
15
- });
16
7
  return useField({
17
- forwardedProps,
18
- internalProps: internalPropsWithDefaults,
19
- valueManager: manager.internal_valueManager,
20
- fieldValueManager: manager.internal_fieldValueManager,
21
- validator: manager.validator,
22
- valueType: manager.valueType,
23
- getOpenPickerButtonAriaLabel: manager.internal_useOpenPickerButtonAriaLabel()
8
+ manager,
9
+ props
24
10
  });
25
11
  };
@@ -102,6 +102,7 @@ process.env.NODE_ENV !== "production" ? TimePicker.propTypes = {
102
102
  disableIgnoringDatePartForTimeValidation: PropTypes.bool,
103
103
  /**
104
104
  * If `true`, the button to open the Picker will not be rendered (it will only render the field).
105
+ * @deprecated Use the [field component](https://next.mui.com/x/react-date-pickers/fields/) instead.
105
106
  * @default false
106
107
  */
107
108
  disableOpenPicker: PropTypes.bool,
@@ -4,12 +4,14 @@ import { useThemeProps } from '@mui/material/styles';
4
4
  import { useUtils } from "../internals/hooks/useUtils.js";
5
5
  import { TimePickerToolbar } from "./TimePickerToolbar.js";
6
6
  import { applyDefaultViewProps } from "../internals/utils/views.js";
7
+ import { useApplyDefaultValuesToTimeValidationProps } from "../managers/useTimeManager.js";
7
8
  export function useTimePickerDefaultizedProps(props, name) {
8
9
  const utils = useUtils();
9
10
  const themeProps = useThemeProps({
10
11
  props,
11
12
  name
12
13
  });
14
+ const validationProps = useApplyDefaultValuesToTimeValidationProps(themeProps);
13
15
  const ampm = themeProps.ampm ?? utils.is12HourCycleInCurrentLocale();
14
16
  const localeText = React.useMemo(() => {
15
17
  if (themeProps.localeText?.toolbarTitle == null) {
@@ -19,7 +21,7 @@ export function useTimePickerDefaultizedProps(props, name) {
19
21
  timePickerToolbarTitle: themeProps.localeText.toolbarTitle
20
22
  });
21
23
  }, [themeProps.localeText]);
22
- return _extends({}, themeProps, {
24
+ return _extends({}, themeProps, validationProps, {
23
25
  ampm,
24
26
  localeText
25
27
  }, applyDefaultViewProps({
@@ -28,8 +30,6 @@ export function useTimePickerDefaultizedProps(props, name) {
28
30
  defaultViews: ['hours', 'minutes'],
29
31
  defaultOpenTo: 'hours'
30
32
  }), {
31
- disableFuture: themeProps.disableFuture ?? false,
32
- disablePast: themeProps.disablePast ?? false,
33
33
  slots: _extends({
34
34
  toolbar: TimePickerToolbar
35
35
  }, themeProps.slots),
@@ -11,14 +11,14 @@ import { shouldForwardProp } from '@mui/system/createStyled';
11
11
  import { styled, useThemeProps } from '@mui/material/styles';
12
12
  import { unstable_useForkRef as useForkRef, unstable_composeClasses as composeClasses, unstable_useControlled as useControlled, unstable_useEventCallback as useEventCallback } from '@mui/utils';
13
13
  import { YearCalendarButton } from "./YearCalendarButton.js";
14
- import { useUtils, useNow, useDefaultDates } from "../internals/hooks/useUtils.js";
14
+ import { useUtils, useNow } from "../internals/hooks/useUtils.js";
15
15
  import { getYearCalendarUtilityClass } from "./yearCalendarClasses.js";
16
- import { applyDefaultDate } from "../internals/utils/date-utils.js";
17
16
  import { singleItemValueManager } from "../internals/utils/valueManagers.js";
18
17
  import { SECTION_TYPE_GRANULARITY } from "../internals/utils/getDefaultReferenceDate.js";
19
18
  import { useControlledValue } from "../internals/hooks/useControlledValue.js";
20
19
  import { DIALOG_WIDTH, MAX_CALENDAR_HEIGHT } from "../internals/constants/dimensions.js";
21
20
  import { usePickerPrivateContext } from "../internals/hooks/usePickerPrivateContext.js";
21
+ import { useApplyDefaultValuesToDateValidationProps } from "../managers/useDateManager.js";
22
22
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
23
23
  const useUtilityClasses = classes => {
24
24
  const slots = {
@@ -27,20 +27,14 @@ const useUtilityClasses = classes => {
27
27
  return composeClasses(slots, getYearCalendarUtilityClass, classes);
28
28
  };
29
29
  function useYearCalendarDefaultizedProps(props, name) {
30
- const utils = useUtils();
31
- const defaultDates = useDefaultDates();
32
30
  const themeProps = useThemeProps({
33
31
  props,
34
32
  name
35
33
  });
36
- return _extends({
37
- disablePast: false,
38
- disableFuture: false
39
- }, themeProps, {
34
+ const validationProps = useApplyDefaultValuesToDateValidationProps(themeProps);
35
+ return _extends({}, themeProps, validationProps, {
40
36
  yearsPerRow: themeProps.yearsPerRow ?? 3,
41
- yearsOrder: themeProps.yearsOrder ?? 'asc',
42
- minDate: applyDefaultDate(utils, themeProps.minDate, defaultDates.minDate),
43
- maxDate: applyDefaultDate(utils, themeProps.maxDate, defaultDates.maxDate)
37
+ yearsOrder: themeProps.yearsOrder ?? 'asc'
44
38
  });
45
39
  }
46
40
  const YearCalendarRoot = styled('div', {
@@ -1,7 +1,7 @@
1
1
  import { DATE_TIME_VALIDATION_PROP_NAMES, DATE_VALIDATION_PROP_NAMES, TIME_VALIDATION_PROP_NAMES } from "../validation/extractValidationProps.js";
2
2
  import { PickerValueType } from "../models/common.js";
3
3
  declare const SHARED_FIELD_INTERNAL_PROP_NAMES: readonly ["value", "defaultValue", "referenceDate", "format", "formatDensity", "onChange", "timezone", "onError", "shouldRespectLeadingZeros", "selectedSections", "onSelectedSectionsChange", "unstableFieldRef", "unstableStartFieldRef", "unstableEndFieldRef", "enableAccessibleFieldDOMStructure", "disabled", "readOnly", "dateSeparator", "autoFocus", "focused"];
4
- type InternalPropNames<TValueType extends PickerValueType> = (typeof SHARED_FIELD_INTERNAL_PROP_NAMES)[number] | (TValueType extends 'date' | 'date-time' ? (typeof DATE_VALIDATION_PROP_NAMES)[number] : never) | (TValueType extends 'time' | 'date-time' ? (typeof TIME_VALIDATION_PROP_NAMES)[number] : never) | (TValueType extends 'date-time' ? (typeof DATE_TIME_VALIDATION_PROP_NAMES)[number] : never);
4
+ export type InternalPropNames<TValueType extends PickerValueType> = (typeof SHARED_FIELD_INTERNAL_PROP_NAMES)[number] | (TValueType extends 'date' | 'date-time' ? (typeof DATE_VALIDATION_PROP_NAMES)[number] : never) | (TValueType extends 'time' | 'date-time' ? (typeof TIME_VALIDATION_PROP_NAMES)[number] : never) | (TValueType extends 'date-time' ? (typeof DATE_TIME_VALIDATION_PROP_NAMES)[number] : never);
5
5
  /**
6
6
  * Split the props received by the field component into:
7
7
  * - `internalProps` which are used by the various hooks called by the field component.
package/esm/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-date-pickers v8.0.0-beta.0
2
+ * @mui/x-date-pickers v8.0.0-beta.2
3
3
  *
4
4
  * @license MIT
5
5
  * This source code is licensed under the MIT license found in the
@@ -6,9 +6,9 @@ import { SvgIconProps } from '@mui/material/SvgIcon';
6
6
  import { MakeOptional, SlotComponentPropsFromProps } from '@mui/x-internals/types';
7
7
  import { FieldOwnerState } from "../../models/index.js";
8
8
  import { UseFieldOwnerStateParameters } from "../hooks/useFieldOwnerState.js";
9
- import type { UseFieldResponse } from '../hooks/useField';
9
+ import type { UseFieldReturnValue, UseFieldProps } from '../hooks/useField';
10
10
  import { PickersTextFieldProps } from "../../PickersTextField/index.js";
11
- export declare const cleanFieldResponse: <TFieldResponse extends MakeOptional<UseFieldResponse<any, ExportedPickerFieldUIProps & {
11
+ export declare const cleanFieldResponse: <TFieldResponse extends MakeOptional<UseFieldReturnValue<any, ExportedPickerFieldUIProps & {
12
12
  [key: string]: any;
13
13
  }>, "onClear" | "clearable">>({
14
14
  enableAccessibleFieldDOMStructure,
@@ -22,7 +22,7 @@ export declare const PickerFieldUIContext: React.Context<PickerFieldUIContextVal
22
22
  * Adds the button to open the Picker and the button to clear the value of the field.
23
23
  * @ignore - internal component.
24
24
  */
25
- export declare function PickerFieldUI(props: PickerFieldUIProps): React.JSX.Element;
25
+ export declare function PickerFieldUI<TEnableAccessibleFieldDOMStructure extends boolean, TProps extends UseFieldProps<TEnableAccessibleFieldDOMStructure>>(props: PickerFieldUIProps<TEnableAccessibleFieldDOMStructure, TProps>): React.JSX.Element;
26
26
  export interface ExportedPickerFieldUIProps {
27
27
  /**
28
28
  * If `true`, a clear button will be shown in the field allowing value clearing.
@@ -46,7 +46,7 @@ export interface ExportedPickerFieldUIProps {
46
46
  */
47
47
  openPickerButtonPosition?: 'start' | 'end';
48
48
  }
49
- export interface PickerFieldUIProps {
49
+ export interface PickerFieldUIProps<TEnableAccessibleFieldDOMStructure extends boolean, TProps extends UseFieldProps<TEnableAccessibleFieldDOMStructure>> {
50
50
  /**
51
51
  * Overridable component slots.
52
52
  * @default {}
@@ -60,7 +60,7 @@ export interface PickerFieldUIProps {
60
60
  /**
61
61
  * Object returned by the `useField` hook or one of its wrapper (for example `useDateField`).
62
62
  */
63
- fieldResponse: UseFieldResponse<any, any>;
63
+ fieldResponse: UseFieldReturnValue<TEnableAccessibleFieldDOMStructure, TProps>;
64
64
  /**
65
65
  * The component to use to render the Picker opening icon if none is provided in the Picker's slots.
66
66
  */
@@ -1,6 +1,6 @@
1
1
  import { FieldSection, MuiPickersAdapter, PickerValidDate } from "../../../models/index.js";
2
2
  import { PickersLocaleText } from "../../../locales/index.js";
3
- interface BuildSectionsFromFormatParams {
3
+ interface BuildSectionsFromFormatParameters {
4
4
  utils: MuiPickersAdapter;
5
5
  format: string;
6
6
  formatDensity: 'dense' | 'spacious';
@@ -11,5 +11,5 @@ interface BuildSectionsFromFormatParams {
11
11
  date: PickerValidDate | null;
12
12
  enableAccessibleFieldDOMStructure: boolean;
13
13
  }
14
- export declare const buildSectionsFromFormat: (params: BuildSectionsFromFormatParams) => FieldSection[];
14
+ export declare const buildSectionsFromFormat: (parameters: BuildSectionsFromFormatParameters) => FieldSection[];
15
15
  export {};
@@ -141,12 +141,12 @@ const createSection = ({
141
141
  modified: false
142
142
  });
143
143
  };
144
- const buildSections = params => {
144
+ const buildSections = parameters => {
145
145
  const {
146
146
  utils,
147
147
  expandedFormat,
148
148
  escapedParts
149
- } = params;
149
+ } = parameters;
150
150
  const now = utils.date(undefined);
151
151
  const sections = [];
152
152
  let startSeparator = '';
@@ -171,7 +171,7 @@ const buildSections = params => {
171
171
  while (word.length > 0) {
172
172
  const firstWord = regExpFirstTokenInWord.exec(word)[1];
173
173
  word = word.slice(firstWord.length);
174
- sections.push(createSection(_extends({}, params, {
174
+ sections.push(createSection(_extends({}, parameters, {
175
175
  now,
176
176
  token: firstWord,
177
177
  startSeparator
@@ -236,19 +236,19 @@ const postProcessSections = ({
236
236
  return section;
237
237
  });
238
238
  };
239
- export const buildSectionsFromFormat = params => {
240
- let expandedFormat = expandFormat(params);
241
- if (params.isRtl && params.enableAccessibleFieldDOMStructure) {
239
+ export const buildSectionsFromFormat = parameters => {
240
+ let expandedFormat = expandFormat(parameters);
241
+ if (parameters.isRtl && parameters.enableAccessibleFieldDOMStructure) {
242
242
  expandedFormat = expandedFormat.split(' ').reverse().join(' ');
243
243
  }
244
- const escapedParts = getEscapedPartsFromFormat(_extends({}, params, {
244
+ const escapedParts = getEscapedPartsFromFormat(_extends({}, parameters, {
245
245
  expandedFormat
246
246
  }));
247
- const sections = buildSections(_extends({}, params, {
247
+ const sections = buildSections(_extends({}, parameters, {
248
248
  expandedFormat,
249
249
  escapedParts
250
250
  }));
251
- return postProcessSections(_extends({}, params, {
251
+ return postProcessSections(_extends({}, parameters, {
252
252
  sections
253
253
  }));
254
254
  };
@@ -1,4 +1,4 @@
1
1
  export { useField } from "./useField.js";
2
- export type { FieldValueManager, UseFieldInternalProps, UseFieldParams, UseFieldResponse, FieldChangeHandler, FieldChangeHandlerContext } from './useField.types';
2
+ export type { UseFieldInternalProps, UseFieldParameters, UseFieldReturnValue, UseFieldProps, FieldValueManager, FieldChangeHandler, FieldChangeHandlerContext } from './useField.types';
3
3
  export { createDateStrForV7HiddenInputFromSections, createDateStrForV6InputFromSections } from "./useField.utils.js";
4
4
  export { useFieldInternalPropsWithDefaults } from "./useFieldInternalPropsWithDefaults.js";
@@ -0,0 +1,9 @@
1
+ import { PickerValidValue } from "../../models/index.js";
2
+ import { UseFieldDOMGetters } from "./useField.types.js";
3
+ import { UseFieldStateReturnValue } from "./useFieldState.js";
4
+ export declare function syncSelectionToDOM<TValue extends PickerValidValue>(parameters: SyncSelectionToDOMParameters<TValue>): void;
5
+ export interface SyncSelectionToDOMParameters<TValue extends PickerValidValue> {
6
+ domGetters: UseFieldDOMGetters;
7
+ stateResponse: UseFieldStateReturnValue<TValue>;
8
+ focused: boolean;
9
+ }
@@ -0,0 +1,50 @@
1
+ import { getActiveElement } from "../../utils/utils.js";
2
+ export function syncSelectionToDOM(parameters) {
3
+ const {
4
+ focused,
5
+ domGetters,
6
+ stateResponse: {
7
+ // States and derived states
8
+ parsedSelectedSections,
9
+ state
10
+ }
11
+ } = parameters;
12
+ if (!domGetters.isReady()) {
13
+ return;
14
+ }
15
+ const selection = document.getSelection();
16
+ if (!selection) {
17
+ return;
18
+ }
19
+ if (parsedSelectedSections == null) {
20
+ // If the selection contains an element inside the field, we reset it.
21
+ if (selection.rangeCount > 0 && domGetters.getRoot().contains(selection.getRangeAt(0).startContainer)) {
22
+ selection.removeAllRanges();
23
+ }
24
+ if (focused) {
25
+ domGetters.getRoot().blur();
26
+ }
27
+ return;
28
+ }
29
+
30
+ // On multi input range pickers we want to update selection range only for the active input
31
+ if (!domGetters.getRoot().contains(getActiveElement(document))) {
32
+ return;
33
+ }
34
+ const range = new window.Range();
35
+ let target;
36
+ if (parsedSelectedSections === 'all') {
37
+ target = domGetters.getRoot();
38
+ } else {
39
+ const section = state.sections[parsedSelectedSections];
40
+ if (section.type === 'empty') {
41
+ target = domGetters.getSectionContainer(parsedSelectedSections);
42
+ } else {
43
+ target = domGetters.getSectionContent(parsedSelectedSections);
44
+ }
45
+ }
46
+ range.selectNodeContents(target);
47
+ target.focus();
48
+ selection.removeAllRanges();
49
+ selection.addRange(range);
50
+ }
@@ -1,5 +1,3 @@
1
- import { UseFieldParams, UseFieldResponse, UseFieldCommonForwardedProps, UseFieldInternalProps, UseFieldForwardedProps } from "./useField.types.js";
1
+ import { UseFieldParameters, UseFieldReturnValue, UseFieldProps } from "./useField.types.js";
2
2
  import { PickerValidValue } from "../../models/index.js";
3
- export declare const useField: <TValue extends PickerValidValue, TEnableAccessibleFieldDOMStructure extends boolean, TForwardedProps extends UseFieldCommonForwardedProps & UseFieldForwardedProps<TEnableAccessibleFieldDOMStructure>, TInternalProps extends UseFieldInternalProps<TValue, TEnableAccessibleFieldDOMStructure, any> & {
4
- minutesStep?: number;
5
- }>(params: UseFieldParams<TValue, TEnableAccessibleFieldDOMStructure, TForwardedProps, TInternalProps>) => UseFieldResponse<TEnableAccessibleFieldDOMStructure, TForwardedProps>;
3
+ export declare const useField: <TValue extends PickerValidValue, TEnableAccessibleFieldDOMStructure extends boolean, TError, TValidationProps extends {}, TProps extends UseFieldProps<TEnableAccessibleFieldDOMStructure>>(parameters: UseFieldParameters<TValue, TEnableAccessibleFieldDOMStructure, TError, TValidationProps, TProps>) => UseFieldReturnValue<TEnableAccessibleFieldDOMStructure, TProps>;