@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
@@ -31,8 +31,7 @@ const deDEPickers = {
31
31
  dateTimePickerToolbarTitle: 'Datum & Uhrzeit auswählen',
32
32
  timePickerToolbarTitle: 'Uhrzeit auswählen',
33
33
  dateRangePickerToolbarTitle: 'Datumsbereich auswählen',
34
- // timeRangePickerToolbarTitle: 'Select time range',
35
-
34
+ timeRangePickerToolbarTitle: 'Zeitspanne auswählen',
36
35
  // Clock labels
37
36
  clockLabelText: (view, formattedTime) => `${timeViews[view] ?? view} auswählen. ${!formattedTime ? 'Keine Uhrzeit ausgewählt' : `Gewählte Uhrzeit ist ${formattedTime}`}`,
38
37
  hoursClockNumberText: hours => `${hours} ${timeViews.hours}`,
@@ -48,7 +47,7 @@ const deDEPickers = {
48
47
  // Open Picker labels
49
48
  openDatePickerDialogue: formattedDate => formattedDate ? `Datum auswählen, gewähltes Datum ist ${formattedDate}` : 'Datum auswählen',
50
49
  openTimePickerDialogue: formattedTime => formattedTime ? `Uhrzeit auswählen, gewählte Uhrzeit ist ${formattedTime}` : 'Uhrzeit auswählen',
51
- // openRangePickerDialogue: formattedRange => formattedRange ? `Choose range, selected range is ${formattedRange}` : 'Choose range',
50
+ openRangePickerDialogue: formattedRange => formattedRange ? `Zeitspanne auswählen, die aktuell ausgewählte Zeitspanne ist ${formattedRange}` : 'Zeitspanne auswählen',
52
51
  fieldClearLabel: 'Wert leeren',
53
52
  // Table labels
54
53
  timeTableLabel: 'Uhrzeit auswählen',
@@ -1,23 +1,14 @@
1
1
  import type { MakeOptional } from '@mui/x-internals/types';
2
2
  import { PickerManager, DateValidationError } from "../models/index.js";
3
3
  import { UseFieldInternalProps } from "../internals/hooks/useField/index.js";
4
- import { MuiPickersAdapterContextValue } from "../LocalizationProvider/LocalizationProvider.js";
5
- import { ExportedValidateDateProps, ValidateDatePropsToDefault, ValidateDateProps } from "../validation/validateDate.js";
6
- import { PickerManagerFieldInternalPropsWithDefaults, PickerValue } from "../internals/models/index.js";
4
+ import { ExportedValidateDateProps, ValidateDateProps } from "../validation/validateDate.js";
5
+ import { PickerValue } from "../internals/models/index.js";
7
6
  export declare function useDateManager<TEnableAccessibleFieldDOMStructure extends boolean = true>(parameters?: UseDateManagerParameters<TEnableAccessibleFieldDOMStructure>): UseDateManagerReturnValue<TEnableAccessibleFieldDOMStructure>;
8
- /**
9
- * Private utility function to get the default internal props for the fields with date editing.
10
- * Is used by the `useDateManager` and `useDateRangeManager` hooks.
11
- */
12
- export declare function getDateFieldInternalPropsDefaults(parameters: GetDateFieldInternalPropsDefaultsParameters): GetDateFieldInternalPropsDefaultsReturnValue;
7
+ type SharedDateAndDateRangeValidationProps = 'disablePast' | 'disableFuture' | 'minDate' | 'maxDate';
8
+ export declare function useApplyDefaultValuesToDateValidationProps(props: Pick<ExportedValidateDateProps, SharedDateAndDateRangeValidationProps>): Pick<ValidateDateProps, SharedDateAndDateRangeValidationProps>;
13
9
  export interface UseDateManagerParameters<TEnableAccessibleFieldDOMStructure extends boolean> {
14
10
  enableAccessibleFieldDOMStructure?: TEnableAccessibleFieldDOMStructure;
15
11
  }
16
12
  export type UseDateManagerReturnValue<TEnableAccessibleFieldDOMStructure extends boolean> = PickerManager<PickerValue, TEnableAccessibleFieldDOMStructure, DateValidationError, ValidateDateProps, DateManagerFieldInternalProps<TEnableAccessibleFieldDOMStructure>>;
17
13
  export interface DateManagerFieldInternalProps<TEnableAccessibleFieldDOMStructure extends boolean> extends MakeOptional<UseFieldInternalProps<PickerValue, TEnableAccessibleFieldDOMStructure, DateValidationError>, 'format'>, ExportedValidateDateProps {}
18
- type DateManagerFieldPropsToDefault = 'format' | ValidateDatePropsToDefault;
19
- interface GetDateFieldInternalPropsDefaultsParameters extends Pick<MuiPickersAdapterContextValue, 'defaultDates' | 'utils'> {
20
- internalProps: Pick<DateManagerFieldInternalProps<true>, DateManagerFieldPropsToDefault>;
21
- }
22
- interface GetDateFieldInternalPropsDefaultsReturnValue extends Pick<PickerManagerFieldInternalPropsWithDefaults<UseDateManagerReturnValue<true>>, DateManagerFieldPropsToDefault> {}
23
14
  export {};
@@ -5,7 +5,7 @@ import * as React from 'react';
5
5
  import { applyDefaultDate } from "../internals/utils/date-utils.js";
6
6
  import { singleItemFieldValueManager, singleItemValueManager } from "../internals/utils/valueManagers.js";
7
7
  import { validateDate } from "../validation/index.js";
8
- import { useUtils } from "../internals/hooks/useUtils.js";
8
+ import { useDefaultDates, useUtils } from "../internals/hooks/useUtils.js";
9
9
  import { usePickerTranslations } from "../hooks/usePickerTranslations.js";
10
10
  export function useDateManager(parameters = {}) {
11
11
  const {
@@ -17,42 +17,32 @@ export function useDateManager(parameters = {}) {
17
17
  internal_valueManager: singleItemValueManager,
18
18
  internal_fieldValueManager: singleItemFieldValueManager,
19
19
  internal_enableAccessibleFieldDOMStructure: enableAccessibleFieldDOMStructure,
20
- internal_applyDefaultsToFieldInternalProps: ({
21
- internalProps,
22
- utils,
23
- defaultDates
24
- }) => _extends({}, internalProps, getDateFieldInternalPropsDefaults({
25
- defaultDates,
26
- utils,
27
- internalProps
28
- })),
20
+ internal_useApplyDefaultValuesToFieldInternalProps: useApplyDefaultValuesToDateFieldInternalProps,
29
21
  internal_useOpenPickerButtonAriaLabel: useOpenPickerButtonAriaLabel
30
22
  }), [enableAccessibleFieldDOMStructure]);
31
23
  }
32
- function useOpenPickerButtonAriaLabel() {
24
+ function useOpenPickerButtonAriaLabel(value) {
33
25
  const utils = useUtils();
34
26
  const translations = usePickerTranslations();
35
- return React.useCallback(value => {
27
+ return React.useMemo(() => {
36
28
  const formattedValue = utils.isValid(value) ? utils.format(value, 'fullDate') : null;
37
29
  return translations.openDatePickerDialogue(formattedValue);
38
- }, [translations, utils]);
30
+ }, [value, translations, utils]);
39
31
  }
40
-
41
- /**
42
- * Private utility function to get the default internal props for the fields with date editing.
43
- * Is used by the `useDateManager` and `useDateRangeManager` hooks.
44
- */
45
- export function getDateFieldInternalPropsDefaults(parameters) {
46
- const {
47
- defaultDates,
48
- utils,
49
- internalProps
50
- } = parameters;
51
- return {
52
- format: internalProps.format ?? utils.formats.keyboardDate,
53
- disablePast: internalProps.disablePast ?? false,
54
- disableFuture: internalProps.disableFuture ?? false,
55
- minDate: applyDefaultDate(utils, internalProps.minDate, defaultDates.minDate),
56
- maxDate: applyDefaultDate(utils, internalProps.maxDate, defaultDates.maxDate)
57
- };
32
+ function useApplyDefaultValuesToDateFieldInternalProps(internalProps) {
33
+ const utils = useUtils();
34
+ const validationProps = useApplyDefaultValuesToDateValidationProps(internalProps);
35
+ return React.useMemo(() => _extends({}, internalProps, validationProps, {
36
+ format: internalProps.format ?? utils.formats.keyboardDate
37
+ }), [internalProps, validationProps, utils]);
38
+ }
39
+ export function useApplyDefaultValuesToDateValidationProps(props) {
40
+ const utils = useUtils();
41
+ const defaultDates = useDefaultDates();
42
+ return React.useMemo(() => ({
43
+ disablePast: props.disablePast ?? false,
44
+ disableFuture: props.disableFuture ?? false,
45
+ minDate: applyDefaultDate(utils, props.minDate, defaultDates.minDate),
46
+ maxDate: applyDefaultDate(utils, props.maxDate, defaultDates.maxDate)
47
+ }), [props.minDate, props.maxDate, props.disableFuture, props.disablePast, utils, defaultDates]);
58
48
  }
@@ -1,24 +1,15 @@
1
1
  import type { MakeOptional } from '@mui/x-internals/types';
2
2
  import { PickerManager, DateTimeValidationError } from "../models/index.js";
3
3
  import { UseFieldInternalProps } from "../internals/hooks/useField/index.js";
4
- import { MuiPickersAdapterContextValue } from "../LocalizationProvider/LocalizationProvider.js";
5
4
  import { AmPmProps } from "../internals/models/props/time.js";
6
- import { ExportedValidateDateTimeProps, ValidateDateTimeProps, ValidateDateTimePropsToDefault } from "../validation/validateDateTime.js";
7
- import { PickerManagerFieldInternalPropsWithDefaults, PickerValue } from "../internals/models/index.js";
5
+ import { ExportedValidateDateTimeProps, ValidateDateTimeProps } from "../validation/validateDateTime.js";
6
+ import { PickerValue } from "../internals/models/index.js";
8
7
  export declare function useDateTimeManager<TEnableAccessibleFieldDOMStructure extends boolean = true>(parameters?: UseDateTimeManagerParameters<TEnableAccessibleFieldDOMStructure>): UseDateTimeManagerReturnValue<TEnableAccessibleFieldDOMStructure>;
9
- /**
10
- * Private utility function to get the default internal props for the field with date time editing.
11
- * Is used by the `useDateTimeManager` and `useDateTimeRangeManager` hooks.
12
- */
13
- export declare function getDateTimeFieldInternalPropsDefaults(parameters: GetDateTimeFieldInternalPropsDefaultsParameters): GetDateTimeFieldInternalPropsDefaultsReturnValue;
8
+ type SharedDateTimeAndDateTimeRangeValidationProps = 'disablePast' | 'disableFuture' | 'minTime' | 'maxTime' | 'minDate' | 'maxDate';
9
+ export declare function useApplyDefaultValuesToDateTimeValidationProps(props: Pick<ExportedValidateDateTimeProps, SharedDateTimeAndDateTimeRangeValidationProps | 'minDateTime' | 'maxDateTime'>): Pick<ValidateDateTimeProps, SharedDateTimeAndDateTimeRangeValidationProps>;
14
10
  export interface UseDateTimeManagerParameters<TEnableAccessibleFieldDOMStructure extends boolean> {
15
11
  enableAccessibleFieldDOMStructure?: TEnableAccessibleFieldDOMStructure;
16
12
  }
17
13
  export type UseDateTimeManagerReturnValue<TEnableAccessibleFieldDOMStructure extends boolean> = PickerManager<PickerValue, TEnableAccessibleFieldDOMStructure, DateTimeValidationError, ValidateDateTimeProps, DateTimeManagerFieldInternalProps<TEnableAccessibleFieldDOMStructure>>;
18
14
  export interface DateTimeManagerFieldInternalProps<TEnableAccessibleFieldDOMStructure extends boolean> extends MakeOptional<UseFieldInternalProps<PickerValue, TEnableAccessibleFieldDOMStructure, DateTimeValidationError>, 'format'>, ExportedValidateDateTimeProps, AmPmProps {}
19
- type DateTimeManagerFieldPropsToDefault = 'format' | 'minTime' | 'maxTime' | ValidateDateTimePropsToDefault;
20
- interface GetDateTimeFieldInternalPropsDefaultsParameters extends Pick<MuiPickersAdapterContextValue, 'defaultDates' | 'utils'> {
21
- internalProps: Pick<DateTimeManagerFieldInternalProps<true>, DateTimeManagerFieldPropsToDefault | 'minDateTime' | 'maxDateTime' | 'ampm'>;
22
- }
23
- interface GetDateTimeFieldInternalPropsDefaultsReturnValue extends Pick<PickerManagerFieldInternalPropsWithDefaults<UseDateTimeManagerReturnValue<true>>, DateTimeManagerFieldPropsToDefault | 'disableIgnoringDatePartForTimeValidation'> {}
24
15
  export {};
@@ -5,7 +5,7 @@ import * as React from 'react';
5
5
  import { applyDefaultDate } from "../internals/utils/date-utils.js";
6
6
  import { singleItemFieldValueManager, singleItemValueManager } from "../internals/utils/valueManagers.js";
7
7
  import { validateDateTime } from "../validation/index.js";
8
- import { useUtils } from "../internals/hooks/useUtils.js";
8
+ import { useDefaultDates, useUtils } from "../internals/hooks/useUtils.js";
9
9
  import { usePickerTranslations } from "../hooks/usePickerTranslations.js";
10
10
  export function useDateTimeManager(parameters = {}) {
11
11
  const {
@@ -17,47 +17,37 @@ export function useDateTimeManager(parameters = {}) {
17
17
  internal_valueManager: singleItemValueManager,
18
18
  internal_fieldValueManager: singleItemFieldValueManager,
19
19
  internal_enableAccessibleFieldDOMStructure: enableAccessibleFieldDOMStructure,
20
- internal_applyDefaultsToFieldInternalProps: ({
21
- internalProps,
22
- utils,
23
- defaultDates
24
- }) => _extends({}, internalProps, getDateTimeFieldInternalPropsDefaults({
25
- internalProps,
26
- utils,
27
- defaultDates
28
- })),
20
+ internal_useApplyDefaultValuesToFieldInternalProps: useApplyDefaultValuesToDateTimeFieldInternalProps,
29
21
  internal_useOpenPickerButtonAriaLabel: useOpenPickerButtonAriaLabel
30
22
  }), [enableAccessibleFieldDOMStructure]);
31
23
  }
32
- function useOpenPickerButtonAriaLabel() {
24
+ function useOpenPickerButtonAriaLabel(value) {
33
25
  const utils = useUtils();
34
26
  const translations = usePickerTranslations();
35
- return React.useCallback(value => {
27
+ return React.useMemo(() => {
36
28
  const formattedValue = utils.isValid(value) ? utils.format(value, 'fullDate') : null;
37
29
  return translations.openDatePickerDialogue(formattedValue);
38
- }, [translations, utils]);
30
+ }, [value, translations, utils]);
39
31
  }
40
-
41
- /**
42
- * Private utility function to get the default internal props for the field with date time editing.
43
- * Is used by the `useDateTimeManager` and `useDateTimeRangeManager` hooks.
44
- */
45
- export function getDateTimeFieldInternalPropsDefaults(parameters) {
46
- const {
47
- defaultDates,
48
- utils,
49
- internalProps
50
- } = parameters;
51
- const ampm = internalProps.ampm ?? utils.is12HourCycleInCurrentLocale();
52
- const defaultFormat = ampm ? utils.formats.keyboardDateTime12h : utils.formats.keyboardDateTime24h;
53
- return {
54
- disablePast: internalProps.disablePast ?? false,
55
- disableFuture: internalProps.disableFuture ?? false,
56
- format: internalProps.format ?? defaultFormat,
57
- disableIgnoringDatePartForTimeValidation: Boolean(internalProps.minDateTime || internalProps.maxDateTime),
58
- minDate: applyDefaultDate(utils, internalProps.minDateTime ?? internalProps.minDate, defaultDates.minDate),
59
- maxDate: applyDefaultDate(utils, internalProps.maxDateTime ?? internalProps.maxDate, defaultDates.maxDate),
60
- minTime: internalProps.minDateTime ?? internalProps.minTime,
61
- maxTime: internalProps.maxDateTime ?? internalProps.maxTime
62
- };
32
+ function useApplyDefaultValuesToDateTimeFieldInternalProps(internalProps) {
33
+ const utils = useUtils();
34
+ const validationProps = useApplyDefaultValuesToDateTimeValidationProps(internalProps);
35
+ const ampm = React.useMemo(() => internalProps.ampm ?? utils.is12HourCycleInCurrentLocale(), [internalProps.ampm, utils]);
36
+ return React.useMemo(() => _extends({}, internalProps, validationProps, {
37
+ format: internalProps.format ?? (ampm ? utils.formats.keyboardDateTime12h : utils.formats.keyboardDateTime24h)
38
+ }), [internalProps, validationProps, ampm, utils]);
39
+ }
40
+ export function useApplyDefaultValuesToDateTimeValidationProps(props) {
41
+ const utils = useUtils();
42
+ const defaultDates = useDefaultDates();
43
+ return React.useMemo(() => ({
44
+ disablePast: props.disablePast ?? false,
45
+ disableFuture: props.disableFuture ?? false,
46
+ // TODO: Explore if we can remove it from the public API
47
+ disableIgnoringDatePartForTimeValidation: !!props.minDateTime || !!props.maxDateTime || !!props.disableFuture || !!props.disablePast,
48
+ minDate: applyDefaultDate(utils, props.minDateTime ?? props.minDate, defaultDates.minDate),
49
+ maxDate: applyDefaultDate(utils, props.maxDateTime ?? props.maxDate, defaultDates.maxDate),
50
+ minTime: props.minDateTime ?? props.minTime,
51
+ maxTime: props.maxDateTime ?? props.maxTime
52
+ }), [props.minDateTime, props.maxDateTime, props.minTime, props.maxTime, props.minDate, props.maxDate, props.disableFuture, props.disablePast, utils, defaultDates]);
63
53
  }
@@ -1,24 +1,15 @@
1
1
  import type { MakeOptional } from '@mui/x-internals/types';
2
2
  import { PickerManager, TimeValidationError } from "../models/index.js";
3
3
  import { UseFieldInternalProps } from "../internals/hooks/useField/index.js";
4
- import { MuiPickersAdapterContextValue } from "../LocalizationProvider/LocalizationProvider.js";
5
4
  import { AmPmProps } from "../internals/models/props/time.js";
6
- import { ExportedValidateTimeProps, ValidateTimeProps, ValidateTimePropsToDefault } from "../validation/validateTime.js";
7
- import { PickerManagerFieldInternalPropsWithDefaults, PickerValue } from "../internals/models/index.js";
5
+ import { ExportedValidateTimeProps, ValidateTimeProps } from "../validation/validateTime.js";
6
+ import { PickerValue } from "../internals/models/index.js";
8
7
  export declare function useTimeManager<TEnableAccessibleFieldDOMStructure extends boolean = true>(parameters?: UseTimeManagerParameters<TEnableAccessibleFieldDOMStructure>): UseTimeManagerReturnValue<TEnableAccessibleFieldDOMStructure>;
9
- /**
10
- * Private utility function to get the default internal props for the fields with time editing.
11
- * Is used by the `useTimeManager` and `useTimeRangeManager` hooks.
12
- */
13
- export declare function getTimeFieldInternalPropsDefaults(parameters: GetTimeFieldInternalPropsDefaultsParameters): GetTimeFieldInternalPropsDefaultsReturnValue;
8
+ type SharedTimeAndTimeRangeValidationProps = 'disablePast' | 'disableFuture';
9
+ export declare function useApplyDefaultValuesToTimeValidationProps(props: Pick<ExportedValidateTimeProps, SharedTimeAndTimeRangeValidationProps>): Pick<ValidateTimeProps, SharedTimeAndTimeRangeValidationProps>;
14
10
  export interface UseTimeManagerParameters<TEnableAccessibleFieldDOMStructure extends boolean> extends AmPmProps {
15
11
  enableAccessibleFieldDOMStructure?: TEnableAccessibleFieldDOMStructure;
16
12
  }
17
13
  export type UseTimeManagerReturnValue<TEnableAccessibleFieldDOMStructure extends boolean> = PickerManager<PickerValue, TEnableAccessibleFieldDOMStructure, TimeValidationError, ValidateTimeProps, TimeManagerFieldInternalProps<TEnableAccessibleFieldDOMStructure>>;
18
14
  export interface TimeManagerFieldInternalProps<TEnableAccessibleFieldDOMStructure extends boolean> extends MakeOptional<UseFieldInternalProps<PickerValue, TEnableAccessibleFieldDOMStructure, TimeValidationError>, 'format'>, ExportedValidateTimeProps, AmPmProps {}
19
- type TimeManagerFieldPropsToDefault = 'format' | ValidateTimePropsToDefault;
20
- interface GetTimeFieldInternalPropsDefaultsParameters extends Pick<MuiPickersAdapterContextValue, 'utils'> {
21
- internalProps: Pick<TimeManagerFieldInternalProps<true>, TimeManagerFieldPropsToDefault | 'ampm'>;
22
- }
23
- interface GetTimeFieldInternalPropsDefaultsReturnValue extends Pick<PickerManagerFieldInternalPropsWithDefaults<UseTimeManagerReturnValue<true>>, TimeManagerFieldPropsToDefault> {}
24
15
  export {};
@@ -17,42 +17,32 @@ export function useTimeManager(parameters = {}) {
17
17
  internal_valueManager: singleItemValueManager,
18
18
  internal_fieldValueManager: singleItemFieldValueManager,
19
19
  internal_enableAccessibleFieldDOMStructure: enableAccessibleFieldDOMStructure,
20
- internal_applyDefaultsToFieldInternalProps: ({
21
- internalProps,
22
- utils
23
- }) => _extends({}, internalProps, getTimeFieldInternalPropsDefaults({
24
- utils,
25
- internalProps
26
- })),
20
+ internal_useApplyDefaultValuesToFieldInternalProps: useApplyDefaultValuesToTimeFieldInternalProps,
27
21
  internal_useOpenPickerButtonAriaLabel: createUseOpenPickerButtonAriaLabel(ampm)
28
22
  }), [ampm, enableAccessibleFieldDOMStructure]);
29
23
  }
30
24
  function createUseOpenPickerButtonAriaLabel(ampm) {
31
- return function useOpenPickerButtonAriaLabel() {
25
+ return function useOpenPickerButtonAriaLabel(value) {
32
26
  const utils = useUtils();
33
27
  const translations = usePickerTranslations();
34
- return React.useCallback(value => {
28
+ return React.useMemo(() => {
35
29
  const formatKey = ampm ?? utils.is12HourCycleInCurrentLocale() ? 'fullTime12h' : 'fullTime24h';
36
30
  const formattedValue = utils.isValid(value) ? utils.format(value, formatKey) : null;
37
31
  return translations.openTimePickerDialogue(formattedValue);
38
- }, [translations, utils]);
32
+ }, [value, translations, utils]);
39
33
  };
40
34
  }
41
-
42
- /**
43
- * Private utility function to get the default internal props for the fields with time editing.
44
- * Is used by the `useTimeManager` and `useTimeRangeManager` hooks.
45
- */
46
- export function getTimeFieldInternalPropsDefaults(parameters) {
47
- const {
48
- utils,
49
- internalProps
50
- } = parameters;
51
- const ampm = internalProps.ampm ?? utils.is12HourCycleInCurrentLocale();
52
- const defaultFormat = ampm ? utils.formats.fullTime12h : utils.formats.fullTime24h;
53
- return {
54
- disablePast: internalProps.disablePast ?? false,
55
- disableFuture: internalProps.disableFuture ?? false,
56
- format: internalProps.format ?? defaultFormat
57
- };
35
+ function useApplyDefaultValuesToTimeFieldInternalProps(internalProps) {
36
+ const utils = useUtils();
37
+ const validationProps = useApplyDefaultValuesToTimeValidationProps(internalProps);
38
+ const ampm = React.useMemo(() => internalProps.ampm ?? utils.is12HourCycleInCurrentLocale(), [internalProps.ampm, utils]);
39
+ return React.useMemo(() => _extends({}, internalProps, validationProps, {
40
+ format: internalProps.format ?? (ampm ? utils.formats.fullTime12h : utils.formats.fullTime24h)
41
+ }), [internalProps, validationProps, ampm, utils]);
42
+ }
43
+ export function useApplyDefaultValuesToTimeValidationProps(props) {
44
+ return React.useMemo(() => ({
45
+ disablePast: props.disablePast ?? false,
46
+ disableFuture: props.disableFuture ?? false
47
+ }), [props.disablePast, props.disableFuture]);
58
48
  }
@@ -1,7 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import { TextFieldProps } from '@mui/material/TextField';
3
3
  import type { ExportedPickersSectionListProps } from '../PickersSectionList';
4
- import type { UseFieldInternalProps, UseFieldResponse } from '../internals/hooks/useField';
4
+ import type { UseFieldInternalProps, UseFieldReturnValue } from '../internals/hooks/useField';
5
5
  import type { PickersTextFieldProps } from '../PickersTextField';
6
6
  import { BaseSingleInputFieldProps, FieldRangeSection, PickerRangeValue, PickerValidValue } from "../internals/models/index.js";
7
7
  import { PickerOwnerState } from "./pickers.js";
@@ -131,7 +131,7 @@ export type PickerFieldSlotProps<TValue extends PickerValidValue, TEnableAccessi
131
131
  * Props the text field receives when used inside a single input Picker.
132
132
  * Only contains what the MUI components are passing to the text field, not what users can pass using the `props.slotProps.field` and `props.slotProps.textField`.
133
133
  */
134
- export type BaseSingleInputPickersTextFieldProps<TEnableAccessibleFieldDOMStructure extends boolean> = Omit<UseFieldResponse<TEnableAccessibleFieldDOMStructure, BaseSingleInputFieldProps>, 'slots' | 'slotProps' | 'clearable' | 'onClear' | 'openPickerButtonPosition' | 'clearButtonPosition' | 'openPickerAriaLabel'>;
134
+ export type BaseSingleInputPickersTextFieldProps<TEnableAccessibleFieldDOMStructure extends boolean> = Omit<UseFieldReturnValue<TEnableAccessibleFieldDOMStructure, BaseSingleInputFieldProps>, 'slots' | 'slotProps' | 'clearable' | 'onClear' | 'openPickerButtonPosition' | 'clearButtonPosition' | 'openPickerAriaLabel'>;
135
135
  /**
136
136
  * Props the built-in text field component can receive.
137
137
  */
@@ -1,5 +1,4 @@
1
1
  import type { FieldValueManager, UseFieldInternalProps } from '../internals/hooks/useField';
2
- import type { UseLocalizationContextReturnValue } from '../internals/hooks/useUtils';
3
2
  import type { PickerValidValue, PickerValueManager } from '../internals/models';
4
3
  import type { Validator } from '../validation';
5
4
  import type { PickerValueType } from './common';
@@ -66,17 +65,14 @@ export interface PickerManager<TValue extends PickerValidValue, TEnableAccessibl
66
65
  * - a default format to display the value in the field
67
66
  * - some default validation props that are needed to validate the value (e.g: minDate, maxDate)
68
67
  * This property is not part of the public API and should not be used directly.
69
- * @param {ApplyDefaultsToFieldInternalPropsParameters<TFieldInternalProps>} parameters The parameters to apply the defaults.
68
+ * @param {TFieldInternalProps<TFieldInternalProps>} internalProps The field internal props to apply the defaults to.
70
69
  * @returns {TFieldInternalPropsWithDefaults} The field internal props with the defaults applied.
71
70
  */
72
- internal_applyDefaultsToFieldInternalProps: (parameters: ApplyDefaultsToFieldInternalPropsParameters<TFieldInternalProps>) => UseFieldInternalProps<TValue, TEnableAccessibleFieldDOMStructure, TError> & TValidationProps;
71
+ internal_useApplyDefaultValuesToFieldInternalProps: (internalProps: TFieldInternalProps) => UseFieldInternalProps<TValue, TEnableAccessibleFieldDOMStructure, TError> & TValidationProps;
73
72
  /**
74
73
  * Returns a hook that creates the aria-label to apply on the button that opens the Picker.
75
- * @returns {(value: TValue) => string} The method to create the aria-label to apply on the button that opens the Picker.
74
+ * @param {TValue} value The value of the Picker.
75
+ * @returns {string} The aria-label to apply on the button that opens the Picker.
76
76
  */
77
- internal_useOpenPickerButtonAriaLabel: () => (value: TValue) => string;
78
- }
79
- interface ApplyDefaultsToFieldInternalPropsParameters<TFieldInternalProps extends {}> extends UseLocalizationContextReturnValue {
80
- internalProps: TFieldInternalProps;
81
- }
82
- export {};
77
+ internal_useOpenPickerButtonAriaLabel: (value: TValue) => string;
78
+ }
@@ -1,4 +1,3 @@
1
- import { applyDefaultDate } from "../internals/utils/date-utils.js";
2
1
  import { singleItemValueManager } from "../internals/utils/valueManagers.js";
3
2
 
4
3
  /**
@@ -27,11 +26,11 @@ export const validateDate = ({
27
26
  shouldDisableMonth,
28
27
  shouldDisableYear,
29
28
  disablePast,
30
- disableFuture
29
+ disableFuture,
30
+ minDate,
31
+ maxDate
31
32
  } = props;
32
33
  const now = adapter.utils.date(undefined, timezone);
33
- const minDate = applyDefaultDate(adapter.utils, props.minDate, adapter.defaultDates.minDate);
34
- const maxDate = applyDefaultDate(adapter.utils, props.maxDate, adapter.defaultDates.maxDate);
35
34
  switch (true) {
36
35
  case !adapter.utils.isValid(value):
37
36
  return 'invalidDate';
@@ -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/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 {};
@@ -148,12 +148,12 @@ const createSection = ({
148
148
  modified: false
149
149
  });
150
150
  };
151
- const buildSections = params => {
151
+ const buildSections = parameters => {
152
152
  const {
153
153
  utils,
154
154
  expandedFormat,
155
155
  escapedParts
156
- } = params;
156
+ } = parameters;
157
157
  const now = utils.date(undefined);
158
158
  const sections = [];
159
159
  let startSeparator = '';
@@ -178,7 +178,7 @@ const buildSections = params => {
178
178
  while (word.length > 0) {
179
179
  const firstWord = regExpFirstTokenInWord.exec(word)[1];
180
180
  word = word.slice(firstWord.length);
181
- sections.push(createSection((0, _extends2.default)({}, params, {
181
+ sections.push(createSection((0, _extends2.default)({}, parameters, {
182
182
  now,
183
183
  token: firstWord,
184
184
  startSeparator
@@ -243,19 +243,19 @@ const postProcessSections = ({
243
243
  return section;
244
244
  });
245
245
  };
246
- const buildSectionsFromFormat = params => {
247
- let expandedFormat = expandFormat(params);
248
- if (params.isRtl && params.enableAccessibleFieldDOMStructure) {
246
+ const buildSectionsFromFormat = parameters => {
247
+ let expandedFormat = expandFormat(parameters);
248
+ if (parameters.isRtl && parameters.enableAccessibleFieldDOMStructure) {
249
249
  expandedFormat = expandedFormat.split(' ').reverse().join(' ');
250
250
  }
251
- const escapedParts = getEscapedPartsFromFormat((0, _extends2.default)({}, params, {
251
+ const escapedParts = getEscapedPartsFromFormat((0, _extends2.default)({}, parameters, {
252
252
  expandedFormat
253
253
  }));
254
- const sections = buildSections((0, _extends2.default)({}, params, {
254
+ const sections = buildSections((0, _extends2.default)({}, parameters, {
255
255
  expandedFormat,
256
256
  escapedParts
257
257
  }));
258
- return postProcessSections((0, _extends2.default)({}, params, {
258
+ return postProcessSections((0, _extends2.default)({}, parameters, {
259
259
  sections
260
260
  }));
261
261
  };
@@ -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,56 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.syncSelectionToDOM = syncSelectionToDOM;
7
+ var _utils = require("../../utils/utils");
8
+ function syncSelectionToDOM(parameters) {
9
+ const {
10
+ focused,
11
+ domGetters,
12
+ stateResponse: {
13
+ // States and derived states
14
+ parsedSelectedSections,
15
+ state
16
+ }
17
+ } = parameters;
18
+ if (!domGetters.isReady()) {
19
+ return;
20
+ }
21
+ const selection = document.getSelection();
22
+ if (!selection) {
23
+ return;
24
+ }
25
+ if (parsedSelectedSections == null) {
26
+ // If the selection contains an element inside the field, we reset it.
27
+ if (selection.rangeCount > 0 && domGetters.getRoot().contains(selection.getRangeAt(0).startContainer)) {
28
+ selection.removeAllRanges();
29
+ }
30
+ if (focused) {
31
+ domGetters.getRoot().blur();
32
+ }
33
+ return;
34
+ }
35
+
36
+ // On multi input range pickers we want to update selection range only for the active input
37
+ if (!domGetters.getRoot().contains((0, _utils.getActiveElement)(document))) {
38
+ return;
39
+ }
40
+ const range = new window.Range();
41
+ let target;
42
+ if (parsedSelectedSections === 'all') {
43
+ target = domGetters.getRoot();
44
+ } else {
45
+ const section = state.sections[parsedSelectedSections];
46
+ if (section.type === 'empty') {
47
+ target = domGetters.getSectionContainer(parsedSelectedSections);
48
+ } else {
49
+ target = domGetters.getSectionContent(parsedSelectedSections);
50
+ }
51
+ }
52
+ range.selectNodeContents(target);
53
+ target.focus();
54
+ selection.removeAllRanges();
55
+ selection.addRange(range);
56
+ }
@@ -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>;