@mui/x-date-pickers 8.0.0-beta.1 → 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 (114) hide show
  1. package/CHANGELOG.md +94 -0
  2. package/DateCalendar/DateCalendar.js +4 -8
  3. package/DateCalendar/DayCalendar.js +2 -2
  4. package/DatePicker/shared.js +3 -9
  5. package/DateTimePicker/shared.js +3 -13
  6. package/MonthCalendar/MonthCalendar.js +4 -9
  7. package/PickersSectionList/PickersSectionList.d.ts +1 -1
  8. package/PickersSectionList/PickersSectionList.types.d.ts +2 -6
  9. package/TimePicker/shared.js +3 -3
  10. package/YearCalendar/YearCalendar.js +4 -10
  11. package/esm/DateCalendar/DateCalendar.js +6 -10
  12. package/esm/DateCalendar/DayCalendar.js +2 -2
  13. package/esm/DatePicker/shared.js +3 -9
  14. package/esm/DateTimePicker/shared.js +4 -14
  15. package/esm/MonthCalendar/MonthCalendar.js +6 -11
  16. package/esm/PickersSectionList/PickersSectionList.d.ts +1 -1
  17. package/esm/PickersSectionList/PickersSectionList.types.d.ts +2 -6
  18. package/esm/TimePicker/shared.js +3 -3
  19. package/esm/YearCalendar/YearCalendar.js +5 -11
  20. package/esm/index.js +1 -1
  21. package/esm/internals/hooks/useField/syncSelectionToDOM.d.ts +9 -0
  22. package/esm/internals/hooks/useField/syncSelectionToDOM.js +50 -0
  23. package/esm/internals/hooks/useField/useField.types.d.ts +8 -1
  24. package/esm/internals/hooks/useField/useField.utils.d.ts +1 -3
  25. package/esm/internals/hooks/useField/useField.utils.js +0 -57
  26. package/esm/internals/hooks/useField/useFieldHiddenInputProps.d.ts +20 -0
  27. package/esm/internals/hooks/useField/useFieldHiddenInputProps.js +31 -0
  28. package/esm/internals/hooks/useField/useFieldInternalPropsWithDefaults.js +8 -10
  29. package/esm/internals/hooks/useField/useFieldRootHandleKeyDown.js +1 -0
  30. package/esm/internals/hooks/useField/useFieldRootProps.d.ts +32 -0
  31. package/esm/internals/hooks/useField/useFieldRootProps.js +150 -0
  32. package/esm/internals/hooks/useField/useFieldSectionContainerProps.d.ts +15 -0
  33. package/esm/internals/hooks/useField/useFieldSectionContainerProps.js +29 -0
  34. package/esm/internals/hooks/useField/useFieldSectionContentProps.d.ts +23 -0
  35. package/esm/internals/hooks/useField/useFieldSectionContentProps.js +226 -0
  36. package/esm/internals/hooks/useField/useFieldV7TextField.js +76 -307
  37. package/esm/internals/index.d.ts +4 -4
  38. package/esm/internals/index.js +3 -3
  39. package/esm/locales/deDE.js +2 -3
  40. package/esm/managers/useDateManager.d.ts +4 -13
  41. package/esm/managers/useDateManager.js +18 -28
  42. package/esm/managers/useDateTimeManager.d.ts +4 -13
  43. package/esm/managers/useDateTimeManager.js +23 -33
  44. package/esm/managers/useTimeManager.d.ts +4 -13
  45. package/esm/managers/useTimeManager.js +14 -24
  46. package/esm/models/manager.d.ts +3 -8
  47. package/esm/validation/validateDate.js +3 -4
  48. package/index.js +1 -1
  49. package/internals/hooks/useField/syncSelectionToDOM.d.ts +9 -0
  50. package/internals/hooks/useField/syncSelectionToDOM.js +56 -0
  51. package/internals/hooks/useField/useField.types.d.ts +8 -1
  52. package/internals/hooks/useField/useField.utils.d.ts +1 -3
  53. package/internals/hooks/useField/useField.utils.js +2 -61
  54. package/internals/hooks/useField/useFieldHiddenInputProps.d.ts +20 -0
  55. package/internals/hooks/useField/useFieldHiddenInputProps.js +39 -0
  56. package/internals/hooks/useField/useFieldInternalPropsWithDefaults.js +8 -10
  57. package/internals/hooks/useField/useFieldRootHandleKeyDown.js +1 -0
  58. package/internals/hooks/useField/useFieldRootProps.d.ts +32 -0
  59. package/internals/hooks/useField/useFieldRootProps.js +156 -0
  60. package/internals/hooks/useField/useFieldSectionContainerProps.d.ts +15 -0
  61. package/internals/hooks/useField/useFieldSectionContainerProps.js +37 -0
  62. package/internals/hooks/useField/useFieldSectionContentProps.d.ts +23 -0
  63. package/internals/hooks/useField/useFieldSectionContentProps.js +234 -0
  64. package/internals/hooks/useField/useFieldV7TextField.js +75 -306
  65. package/internals/index.d.ts +4 -4
  66. package/internals/index.js +18 -18
  67. package/locales/deDE.js +2 -3
  68. package/managers/useDateManager.d.ts +4 -13
  69. package/managers/useDateManager.js +18 -28
  70. package/managers/useDateTimeManager.d.ts +4 -13
  71. package/managers/useDateTimeManager.js +23 -33
  72. package/managers/useTimeManager.d.ts +4 -13
  73. package/managers/useTimeManager.js +15 -25
  74. package/models/manager.d.ts +3 -8
  75. package/modern/DateCalendar/DateCalendar.js +6 -10
  76. package/modern/DateCalendar/DayCalendar.js +2 -2
  77. package/modern/DatePicker/shared.js +3 -9
  78. package/modern/DateTimePicker/shared.js +4 -14
  79. package/modern/MonthCalendar/MonthCalendar.js +6 -11
  80. package/modern/PickersSectionList/PickersSectionList.d.ts +1 -1
  81. package/modern/PickersSectionList/PickersSectionList.types.d.ts +2 -6
  82. package/modern/TimePicker/shared.js +3 -3
  83. package/modern/YearCalendar/YearCalendar.js +5 -11
  84. package/modern/index.js +1 -1
  85. package/modern/internals/hooks/useField/syncSelectionToDOM.d.ts +9 -0
  86. package/modern/internals/hooks/useField/syncSelectionToDOM.js +50 -0
  87. package/modern/internals/hooks/useField/useField.types.d.ts +8 -1
  88. package/modern/internals/hooks/useField/useField.utils.d.ts +1 -3
  89. package/modern/internals/hooks/useField/useField.utils.js +0 -57
  90. package/modern/internals/hooks/useField/useFieldHiddenInputProps.d.ts +20 -0
  91. package/modern/internals/hooks/useField/useFieldHiddenInputProps.js +31 -0
  92. package/modern/internals/hooks/useField/useFieldInternalPropsWithDefaults.js +8 -10
  93. package/modern/internals/hooks/useField/useFieldRootHandleKeyDown.js +1 -0
  94. package/modern/internals/hooks/useField/useFieldRootProps.d.ts +32 -0
  95. package/modern/internals/hooks/useField/useFieldRootProps.js +150 -0
  96. package/modern/internals/hooks/useField/useFieldSectionContainerProps.d.ts +15 -0
  97. package/modern/internals/hooks/useField/useFieldSectionContainerProps.js +29 -0
  98. package/modern/internals/hooks/useField/useFieldSectionContentProps.d.ts +23 -0
  99. package/modern/internals/hooks/useField/useFieldSectionContentProps.js +226 -0
  100. package/modern/internals/hooks/useField/useFieldV7TextField.js +76 -307
  101. package/modern/internals/index.d.ts +4 -4
  102. package/modern/internals/index.js +3 -3
  103. package/modern/locales/deDE.js +2 -3
  104. package/modern/managers/useDateManager.d.ts +4 -13
  105. package/modern/managers/useDateManager.js +18 -28
  106. package/modern/managers/useDateTimeManager.d.ts +4 -13
  107. package/modern/managers/useDateTimeManager.js +23 -33
  108. package/modern/managers/useTimeManager.d.ts +4 -13
  109. package/modern/managers/useTimeManager.js +14 -24
  110. package/modern/models/manager.d.ts +3 -8
  111. package/modern/validation/validateDate.js +3 -4
  112. package/package.json +2 -2
  113. package/tsconfig.build.tsbuildinfo +1 -1
  114. package/validation/validateDate.js +3 -4
@@ -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,15 +17,7 @@ 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
  }
@@ -37,27 +29,25 @@ function useOpenPickerButtonAriaLabel(value) {
37
29
  return translations.openDatePickerDialogue(formattedValue);
38
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,13 +17,7 @@ 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
  }
@@ -38,21 +32,17 @@ function createUseOpenPickerButtonAriaLabel(ampm) {
38
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,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,18 +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
74
  * @param {TValue} value The value of the Picker.
76
75
  * @returns {string} The aria-label to apply on the button that opens the Picker.
77
76
  */
78
77
  internal_useOpenPickerButtonAriaLabel: (value: TValue) => string;
79
- }
80
- interface ApplyDefaultsToFieldInternalPropsParameters<TFieldInternalProps extends {}> extends UseLocalizationContextReturnValue {
81
- internalProps: TFieldInternalProps;
82
- }
83
- export {};
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';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mui/x-date-pickers",
3
- "version": "8.0.0-beta.1",
3
+ "version": "8.0.0-beta.2",
4
4
  "description": "The community edition of the Date and Time Picker components (MUI X).",
5
5
  "author": "MUI Team",
6
6
  "main": "./index.js",
@@ -41,7 +41,7 @@
41
41
  "clsx": "^2.1.1",
42
42
  "prop-types": "^15.8.1",
43
43
  "react-transition-group": "^4.4.5",
44
- "@mui/x-internals": "8.0.0-beta.0"
44
+ "@mui/x-internals": "8.0.0-beta.2"
45
45
  },
46
46
  "peerDependencies": {
47
47
  "@emotion/react": "^11.9.0",