@mui/x-date-pickers-pro 8.0.0-alpha.5 → 8.0.0-alpha.7

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 (148) hide show
  1. package/{AdapterDateFnsJalaliV3 → AdapterDateFnsJalaliV2}/index.d.ts +1 -1
  2. package/{AdapterDateFnsJalaliV3 → AdapterDateFnsJalaliV2}/index.js +1 -1
  3. package/{AdapterDateFnsJalaliV3 → AdapterDateFnsJalaliV2}/package.json +1 -1
  4. package/{AdapterDateFnsV3 → AdapterDateFnsV2}/index.d.ts +1 -1
  5. package/{AdapterDateFnsV3 → AdapterDateFnsV2}/index.js +1 -1
  6. package/{AdapterDateFnsV3 → AdapterDateFnsV2}/package.json +1 -1
  7. package/CHANGELOG.md +206 -1
  8. package/DateRangeCalendar/DateRangeCalendar.js +9 -7
  9. package/DateRangePicker/DateRangePicker.js +1 -1
  10. package/DateRangePicker/DateRangePicker.types.d.ts +5 -0
  11. package/DateRangePicker/DateRangePickerToolbar.d.ts +2 -3
  12. package/DateRangePicker/DateRangePickerToolbar.js +25 -31
  13. package/DateRangePicker/shared.d.ts +1 -1
  14. package/DateTimeRangePicker/DateTimeRangePicker.js +2 -2
  15. package/DateTimeRangePicker/DateTimeRangePickerTabs.d.ts +4 -5
  16. package/DateTimeRangePicker/DateTimeRangePickerTabs.js +25 -24
  17. package/DateTimeRangePicker/DateTimeRangePickerTimeWrapper.d.ts +8 -10
  18. package/DateTimeRangePicker/DateTimeRangePickerTimeWrapper.js +7 -5
  19. package/DateTimeRangePicker/DateTimeRangePickerToolbar.d.ts +2 -4
  20. package/DateTimeRangePicker/DateTimeRangePickerToolbar.js +66 -69
  21. package/DateTimeRangePicker/shared.d.ts +2 -2
  22. package/DesktopDateRangePicker/DesktopDateRangePicker.js +9 -3
  23. package/DesktopDateRangePicker/DesktopDateRangePicker.types.d.ts +7 -2
  24. package/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.js +17 -14
  25. package/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.types.d.ts +2 -3
  26. package/MobileDateRangePicker/MobileDateRangePicker.js +2 -2
  27. package/MobileDateRangePicker/MobileDateRangePicker.types.d.ts +2 -2
  28. package/MobileDateTimeRangePicker/MobileDateTimeRangePicker.js +15 -8
  29. package/MobileDateTimeRangePicker/MobileDateTimeRangePicker.types.d.ts +2 -3
  30. package/SingleInputDateRangeField/useSingleInputDateRangeField.d.ts +1 -1
  31. package/SingleInputDateRangeField/useSingleInputDateRangeField.js +13 -14
  32. package/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.d.ts +1 -1
  33. package/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.js +13 -14
  34. package/SingleInputTimeRangeField/useSingleInputTimeRangeField.d.ts +1 -1
  35. package/SingleInputTimeRangeField/useSingleInputTimeRangeField.js +13 -14
  36. package/StaticDateRangePicker/StaticDateRangePicker.types.d.ts +2 -2
  37. package/dateRangeViewRenderers/dateRangeViewRenderers.d.ts +2 -2
  38. package/dateRangeViewRenderers/dateRangeViewRenderers.js +0 -6
  39. package/hooks/index.d.ts +1 -0
  40. package/hooks/index.js +1 -0
  41. package/hooks/package.json +6 -0
  42. package/hooks/usePickerRangePositionContext.d.ts +7 -0
  43. package/hooks/usePickerRangePositionContext.js +15 -0
  44. package/index.d.ts +2 -0
  45. package/index.js +4 -2
  46. package/internals/hooks/models/useRangePicker.d.ts +4 -4
  47. package/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.js +35 -53
  48. package/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.types.d.ts +7 -9
  49. package/internals/hooks/useEnrichedRangePickerFieldProps.d.ts +6 -6
  50. package/internals/hooks/useEnrichedRangePickerFieldProps.js +11 -8
  51. package/internals/hooks/useMobileRangePicker/useMobileRangePicker.js +24 -40
  52. package/internals/hooks/useMobileRangePicker/useMobileRangePicker.types.d.ts +7 -9
  53. package/internals/hooks/useMultiInputFieldSelectedSections.d.ts +10 -12
  54. package/internals/hooks/useMultiInputRangeField/useMultiInputDateRangeField.d.ts +1 -1
  55. package/internals/hooks/useMultiInputRangeField/useMultiInputDateRangeField.js +11 -6
  56. package/internals/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.d.ts +2 -2
  57. package/internals/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.js +12 -7
  58. package/internals/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.d.ts +2 -2
  59. package/internals/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.js +13 -8
  60. package/internals/hooks/useNullablePickerRangePositionContext.d.ts +5 -0
  61. package/internals/hooks/useNullablePickerRangePositionContext.js +10 -0
  62. package/internals/hooks/useRangePosition.d.ts +1 -1
  63. package/internals/hooks/useStaticRangePicker/useStaticRangePicker.js +14 -24
  64. package/internals/hooks/useStaticRangePicker/useStaticRangePicker.types.d.ts +6 -6
  65. package/internals/utils/date-range-manager.js +2 -1
  66. package/internals/utils/releaseInfo.js +1 -1
  67. package/internals/utils/valueManagers.js +7 -7
  68. package/managers/index.d.ts +6 -0
  69. package/managers/index.js +3 -0
  70. package/managers/package.json +6 -0
  71. package/managers/useDateRangeManager.d.ts +15 -0
  72. package/managers/useDateRangeManager.js +31 -0
  73. package/managers/useDateTimeRangeManager.d.ts +15 -0
  74. package/managers/useDateTimeRangeManager.js +31 -0
  75. package/managers/useTimeRangeManager.d.ts +15 -0
  76. package/managers/useTimeRangeManager.js +29 -0
  77. package/models/range.d.ts +0 -1
  78. package/modern/{AdapterDateFnsJalaliV3 → AdapterDateFnsJalaliV2}/index.js +1 -1
  79. package/modern/{AdapterDateFnsV3 → AdapterDateFnsV2}/index.js +1 -1
  80. package/modern/DateRangeCalendar/DateRangeCalendar.js +9 -7
  81. package/modern/DateRangePicker/DateRangePicker.js +1 -1
  82. package/modern/DateRangePicker/DateRangePickerToolbar.js +25 -31
  83. package/modern/DateTimeRangePicker/DateTimeRangePicker.js +2 -2
  84. package/modern/DateTimeRangePicker/DateTimeRangePickerTabs.js +25 -24
  85. package/modern/DateTimeRangePicker/DateTimeRangePickerTimeWrapper.js +7 -5
  86. package/modern/DateTimeRangePicker/DateTimeRangePickerToolbar.js +66 -69
  87. package/modern/DesktopDateRangePicker/DesktopDateRangePicker.js +9 -3
  88. package/modern/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.js +17 -14
  89. package/modern/MobileDateRangePicker/MobileDateRangePicker.js +2 -2
  90. package/modern/MobileDateTimeRangePicker/MobileDateTimeRangePicker.js +15 -8
  91. package/modern/SingleInputDateRangeField/useSingleInputDateRangeField.js +13 -14
  92. package/modern/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.js +13 -14
  93. package/modern/SingleInputTimeRangeField/useSingleInputTimeRangeField.js +13 -14
  94. package/modern/dateRangeViewRenderers/dateRangeViewRenderers.js +0 -6
  95. package/modern/hooks/index.js +1 -0
  96. package/modern/hooks/usePickerRangePositionContext.js +15 -0
  97. package/modern/index.js +4 -2
  98. package/modern/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.js +35 -53
  99. package/modern/internals/hooks/useEnrichedRangePickerFieldProps.js +11 -8
  100. package/modern/internals/hooks/useMobileRangePicker/useMobileRangePicker.js +24 -40
  101. package/modern/internals/hooks/useMultiInputRangeField/useMultiInputDateRangeField.js +11 -6
  102. package/modern/internals/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.js +12 -7
  103. package/modern/internals/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.js +13 -8
  104. package/modern/internals/hooks/useNullablePickerRangePositionContext.js +10 -0
  105. package/modern/internals/hooks/useStaticRangePicker/useStaticRangePicker.js +14 -24
  106. package/modern/internals/utils/date-range-manager.js +2 -1
  107. package/modern/internals/utils/releaseInfo.js +1 -1
  108. package/modern/internals/utils/valueManagers.js +7 -7
  109. package/modern/managers/index.js +3 -0
  110. package/modern/managers/useDateRangeManager.js +31 -0
  111. package/modern/managers/useDateTimeRangeManager.js +31 -0
  112. package/modern/managers/useTimeRangeManager.js +29 -0
  113. package/node/{AdapterDateFnsJalaliV3 → AdapterDateFnsJalaliV2}/index.js +1 -1
  114. package/node/{AdapterDateFnsV3 → AdapterDateFnsV2}/index.js +1 -1
  115. package/node/DateRangeCalendar/DateRangeCalendar.js +9 -7
  116. package/node/DateRangePicker/DateRangePicker.js +1 -1
  117. package/node/DateRangePicker/DateRangePickerToolbar.js +24 -30
  118. package/node/DateTimeRangePicker/DateTimeRangePicker.js +2 -2
  119. package/node/DateTimeRangePicker/DateTimeRangePickerTabs.js +24 -23
  120. package/node/DateTimeRangePicker/DateTimeRangePickerTimeWrapper.js +7 -5
  121. package/node/DateTimeRangePicker/DateTimeRangePickerToolbar.js +65 -68
  122. package/node/DesktopDateRangePicker/DesktopDateRangePicker.js +9 -3
  123. package/node/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.js +17 -14
  124. package/node/MobileDateRangePicker/MobileDateRangePicker.js +2 -2
  125. package/node/MobileDateTimeRangePicker/MobileDateTimeRangePicker.js +15 -8
  126. package/node/SingleInputDateRangeField/useSingleInputDateRangeField.js +12 -14
  127. package/node/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.js +12 -14
  128. package/node/SingleInputTimeRangeField/useSingleInputTimeRangeField.js +12 -14
  129. package/node/dateRangeViewRenderers/dateRangeViewRenderers.js +0 -6
  130. package/node/hooks/index.js +12 -0
  131. package/node/hooks/usePickerRangePositionContext.js +22 -0
  132. package/node/index.js +23 -1
  133. package/node/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.js +35 -53
  134. package/node/internals/hooks/useEnrichedRangePickerFieldProps.js +11 -8
  135. package/node/internals/hooks/useMobileRangePicker/useMobileRangePicker.js +24 -40
  136. package/node/internals/hooks/useMultiInputRangeField/useMultiInputDateRangeField.js +10 -5
  137. package/node/internals/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.js +11 -6
  138. package/node/internals/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.js +12 -7
  139. package/node/internals/hooks/useNullablePickerRangePositionContext.js +16 -0
  140. package/node/internals/hooks/useStaticRangePicker/useStaticRangePicker.js +14 -24
  141. package/node/internals/utils/date-range-manager.js +2 -1
  142. package/node/internals/utils/releaseInfo.js +1 -1
  143. package/node/internals/utils/valueManagers.js +7 -7
  144. package/node/managers/index.js +26 -0
  145. package/node/managers/useDateRangeManager.js +38 -0
  146. package/node/managers/useDateTimeRangeManager.js +38 -0
  147. package/node/managers/useTimeRangeManager.js +36 -0
  148. package/package.json +5 -5
@@ -1,24 +1,22 @@
1
1
  import { PickersModalDialogSlots, PickersModalDialogSlotProps, UsePickerViewsProps, DateOrTimeViewWithMeridiem } from '@mui/x-date-pickers/internals';
2
- import { RangeOnlyPickerProps, RangePickerAdditionalViewProps, UseRangePickerParams, UseRangePickerProps, UseRangePickerSlotProps, UseRangePickerSlots } from '../models/useRangePicker';
3
- export interface UseMobileRangePickerSlots<TView extends DateOrTimeViewWithMeridiem> extends UseRangePickerSlots<TView>, PickersModalDialogSlots {
2
+ import { RangeOnlyPickerProps, UseRangePickerParams, UseRangePickerProps, UseRangePickerSlotProps, UseRangePickerSlots } from '../models/useRangePicker';
3
+ export interface UseMobileRangePickerSlots extends UseRangePickerSlots, PickersModalDialogSlots {
4
4
  }
5
- export interface UseMobileRangePickerSlotProps<TView extends DateOrTimeViewWithMeridiem, TEnableAccessibleFieldDOMStructure extends boolean> extends UseRangePickerSlotProps<TView, TEnableAccessibleFieldDOMStructure>, PickersModalDialogSlotProps {
5
+ export interface UseMobileRangePickerSlotProps<TEnableAccessibleFieldDOMStructure extends boolean> extends UseRangePickerSlotProps<TEnableAccessibleFieldDOMStructure>, PickersModalDialogSlotProps {
6
6
  }
7
7
  export interface MobileRangeOnlyPickerProps extends RangeOnlyPickerProps {
8
8
  }
9
- export interface UseMobileRangePickerProps<TView extends DateOrTimeViewWithMeridiem, TEnableAccessibleFieldDOMStructure extends boolean, TError, TExternalProps extends UsePickerViewsProps<any, TView, any, any>> extends UseRangePickerProps<TView, TError, TExternalProps, MobileRangePickerAdditionalViewProps> {
9
+ export interface UseMobileRangePickerProps<TView extends DateOrTimeViewWithMeridiem, TEnableAccessibleFieldDOMStructure extends boolean, TError, TExternalProps extends UsePickerViewsProps<any, TView, any>> extends UseRangePickerProps<TView, TError, TExternalProps> {
10
10
  /**
11
11
  * Overridable component slots.
12
12
  * @default {}
13
13
  */
14
- slots: UseMobileRangePickerSlots<TView>;
14
+ slots: UseMobileRangePickerSlots;
15
15
  /**
16
16
  * The props used for each component slot.
17
17
  * @default {}
18
18
  */
19
- slotProps?: UseMobileRangePickerSlotProps<TView, TEnableAccessibleFieldDOMStructure>;
19
+ slotProps?: UseMobileRangePickerSlotProps<TEnableAccessibleFieldDOMStructure>;
20
20
  }
21
- export interface MobileRangePickerAdditionalViewProps extends RangePickerAdditionalViewProps {
22
- }
23
- export interface UseMobileRangePickerParams<TView extends DateOrTimeViewWithMeridiem, TEnableAccessibleFieldDOMStructure extends boolean, TExternalProps extends UseMobileRangePickerProps<TView, TEnableAccessibleFieldDOMStructure, any, TExternalProps>> extends UseRangePickerParams<TView, TExternalProps, MobileRangePickerAdditionalViewProps> {
21
+ export interface UseMobileRangePickerParams<TView extends DateOrTimeViewWithMeridiem, TEnableAccessibleFieldDOMStructure extends boolean, TExternalProps extends UseMobileRangePickerProps<TView, TEnableAccessibleFieldDOMStructure, any, TExternalProps>> extends UseRangePickerParams<TView, TExternalProps> {
24
22
  }
@@ -5,16 +5,14 @@ interface UseMultiInputFieldSelectedSectionsParams extends Pick<UseFieldInternal
5
5
  unstableStartFieldRef?: React.Ref<FieldRef<PickerValue>>;
6
6
  unstableEndFieldRef?: React.Ref<FieldRef<PickerValue>>;
7
7
  }
8
- export declare const useMultiInputFieldSelectedSections: (params: UseMultiInputFieldSelectedSectionsParams) => {
9
- start: {
10
- unstableFieldRef: React.Ref<FieldRef<PickerValue>> | undefined;
11
- selectedSections: FieldSelectedSections;
12
- onSelectedSectionsChange: (newSelectedSections: FieldSelectedSections) => void;
13
- };
14
- end: {
15
- unstableFieldRef: ((instance: FieldRef<PickerValue> | null) => void | React.DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES[keyof React.DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES]) | null;
16
- selectedSections: FieldSelectedSections;
17
- onSelectedSectionsChange: (newSelectedSections: FieldSelectedSections) => void;
18
- };
19
- };
8
+ interface UseMultiInputFieldSelectedSectionsResponseItem {
9
+ unstableFieldRef?: React.Ref<FieldRef<PickerValue>>;
10
+ selectedSections: FieldSelectedSections;
11
+ onSelectedSectionsChange: (newSelectedSections: FieldSelectedSections) => void;
12
+ }
13
+ interface UseMultiInputFieldSelectedSectionsResponse {
14
+ start: UseMultiInputFieldSelectedSectionsResponseItem;
15
+ end: UseMultiInputFieldSelectedSectionsResponseItem;
16
+ }
17
+ export declare const useMultiInputFieldSelectedSections: (params: UseMultiInputFieldSelectedSectionsParams) => UseMultiInputFieldSelectedSectionsResponse;
20
18
  export {};
@@ -1,3 +1,3 @@
1
1
  import { UseMultiInputDateRangeFieldParams } from '../../../MultiInputDateRangeField/MultiInputDateRangeField.types';
2
2
  import type { UseMultiInputRangeFieldResponse } from './useMultiInputRangeField.types';
3
- export declare const useMultiInputDateRangeField: <TEnableAccessibleFieldDOMStructure extends boolean, TTextFieldSlotProps extends {}>({ sharedProps: inSharedProps, startTextFieldProps, unstableStartFieldRef, endTextFieldProps, unstableEndFieldRef, }: UseMultiInputDateRangeFieldParams<TEnableAccessibleFieldDOMStructure, TTextFieldSlotProps>) => UseMultiInputRangeFieldResponse<TEnableAccessibleFieldDOMStructure, TTextFieldSlotProps>;
3
+ export declare const useMultiInputDateRangeField: <TEnableAccessibleFieldDOMStructure extends boolean, TTextFieldSlotProps extends {}>({ sharedProps, startTextFieldProps, unstableStartFieldRef, endTextFieldProps, unstableEndFieldRef, }: UseMultiInputDateRangeFieldParams<TEnableAccessibleFieldDOMStructure, TTextFieldSlotProps>) => UseMultiInputRangeFieldResponse<TEnableAccessibleFieldDOMStructure, TTextFieldSlotProps>;
@@ -1,20 +1,25 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import useEventCallback from '@mui/utils/useEventCallback';
3
3
  import { unstable_useDateField as useDateField } from '@mui/x-date-pickers/DateField';
4
- import { useControlledValueWithTimezone, useDefaultizedDateField } from '@mui/x-date-pickers/internals';
4
+ import { useControlledValueWithTimezone, useFieldInternalPropsWithDefaults } from '@mui/x-date-pickers/internals';
5
5
  import { useValidation } from '@mui/x-date-pickers/validation';
6
6
  import { validateDateRange } from "../../../validation/index.js";
7
7
  import { rangeValueManager } from "../../utils/valueManagers.js";
8
8
  import { excludeProps } from "./shared.js";
9
9
  import { useMultiInputFieldSelectedSections } from "../useMultiInputFieldSelectedSections.js";
10
+ import { useDateRangeManager } from "../../../managers/index.js";
10
11
  export const useMultiInputDateRangeField = ({
11
- sharedProps: inSharedProps,
12
+ sharedProps,
12
13
  startTextFieldProps,
13
14
  unstableStartFieldRef,
14
15
  endTextFieldProps,
15
16
  unstableEndFieldRef
16
17
  }) => {
17
- const sharedProps = useDefaultizedDateField(inSharedProps);
18
+ const manager = useDateRangeManager(sharedProps);
19
+ const sharedPropsWithDefaults = useFieldInternalPropsWithDefaults({
20
+ manager,
21
+ internalProps: sharedProps
22
+ });
18
23
  const {
19
24
  value: valueProp,
20
25
  defaultValue,
@@ -30,7 +35,7 @@ export const useMultiInputDateRangeField = ({
30
35
  timezone: timezoneProp,
31
36
  enableAccessibleFieldDOMStructure,
32
37
  autoFocus
33
- } = sharedProps;
38
+ } = sharedPropsWithDefaults;
34
39
  const {
35
40
  value,
36
41
  handleValueChange,
@@ -48,11 +53,11 @@ export const useMultiInputDateRangeField = ({
48
53
  validationError,
49
54
  getValidationErrorForNewValue
50
55
  } = useValidation({
51
- props: sharedProps,
56
+ props: sharedPropsWithDefaults,
52
57
  value,
53
58
  timezone,
54
59
  validator: validateDateRange,
55
- onError: sharedProps.onError
60
+ onError: sharedPropsWithDefaults.onError
56
61
  });
57
62
 
58
63
  // TODO: Maybe export utility from `useField` instead of copy/pasting the logic
@@ -1,3 +1,3 @@
1
- import type { UseMultiInputDateTimeRangeFieldParams } from '../../../MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.types';
1
+ import { UseMultiInputDateTimeRangeFieldParams } from '../../../MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.types';
2
2
  import type { UseMultiInputRangeFieldResponse } from './useMultiInputRangeField.types';
3
- export declare const useMultiInputDateTimeRangeField: <TEnableAccessibleFieldDOMStructure extends boolean, TTextFieldSlotProps extends {}>({ sharedProps: inSharedProps, startTextFieldProps, unstableStartFieldRef, endTextFieldProps, unstableEndFieldRef, }: UseMultiInputDateTimeRangeFieldParams<TEnableAccessibleFieldDOMStructure, TTextFieldSlotProps>) => UseMultiInputRangeFieldResponse<TEnableAccessibleFieldDOMStructure, TTextFieldSlotProps>;
3
+ export declare const useMultiInputDateTimeRangeField: <TEnableAccessibleFieldDOMStructure extends boolean, TTextFieldSlotProps extends {}>({ sharedProps, startTextFieldProps, unstableStartFieldRef, endTextFieldProps, unstableEndFieldRef, }: UseMultiInputDateTimeRangeFieldParams<TEnableAccessibleFieldDOMStructure, TTextFieldSlotProps>) => UseMultiInputRangeFieldResponse<TEnableAccessibleFieldDOMStructure, TTextFieldSlotProps>;
@@ -1,20 +1,25 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import useEventCallback from '@mui/utils/useEventCallback';
3
3
  import { unstable_useDateTimeField as useDateTimeField } from '@mui/x-date-pickers/DateTimeField';
4
- import { useControlledValueWithTimezone, useDefaultizedDateTimeField } from '@mui/x-date-pickers/internals';
4
+ import { useControlledValueWithTimezone, useFieldInternalPropsWithDefaults } from '@mui/x-date-pickers/internals';
5
5
  import { useValidation } from '@mui/x-date-pickers/validation';
6
6
  import { validateDateTimeRange } from "../../../validation/index.js";
7
7
  import { rangeValueManager } from "../../utils/valueManagers.js";
8
8
  import { excludeProps } from "./shared.js";
9
9
  import { useMultiInputFieldSelectedSections } from "../useMultiInputFieldSelectedSections.js";
10
+ import { useDateTimeRangeManager } from "../../../managers/index.js";
10
11
  export const useMultiInputDateTimeRangeField = ({
11
- sharedProps: inSharedProps,
12
+ sharedProps,
12
13
  startTextFieldProps,
13
14
  unstableStartFieldRef,
14
15
  endTextFieldProps,
15
16
  unstableEndFieldRef
16
17
  }) => {
17
- const sharedProps = useDefaultizedDateTimeField(inSharedProps);
18
+ const manager = useDateTimeRangeManager(sharedProps);
19
+ const sharedPropsWithDefaults = useFieldInternalPropsWithDefaults({
20
+ manager,
21
+ internalProps: sharedProps
22
+ });
18
23
  const {
19
24
  value: valueProp,
20
25
  defaultValue,
@@ -30,13 +35,13 @@ export const useMultiInputDateTimeRangeField = ({
30
35
  timezone: timezoneProp,
31
36
  enableAccessibleFieldDOMStructure,
32
37
  autoFocus
33
- } = sharedProps;
38
+ } = sharedPropsWithDefaults;
34
39
  const {
35
40
  value,
36
41
  handleValueChange,
37
42
  timezone
38
43
  } = useControlledValueWithTimezone({
39
- name: 'useMultiInputDateRangeField',
44
+ name: 'useMultiInputDateTimeRangeField',
40
45
  timezone: timezoneProp,
41
46
  value: valueProp,
42
47
  defaultValue,
@@ -48,11 +53,11 @@ export const useMultiInputDateTimeRangeField = ({
48
53
  validationError,
49
54
  getValidationErrorForNewValue
50
55
  } = useValidation({
51
- props: sharedProps,
56
+ props: sharedPropsWithDefaults,
52
57
  value,
53
58
  timezone,
54
59
  validator: validateDateTimeRange,
55
- onError: sharedProps.onError
60
+ onError: sharedPropsWithDefaults.onError
56
61
  });
57
62
 
58
63
  // TODO: Maybe export utility from `useField` instead of copy/pasting the logic
@@ -1,3 +1,3 @@
1
- import type { UseMultiInputTimeRangeFieldParams } from '../../../MultiInputTimeRangeField/MultiInputTimeRangeField.types';
1
+ import { UseMultiInputTimeRangeFieldParams } from '../../../MultiInputTimeRangeField/MultiInputTimeRangeField.types';
2
2
  import type { UseMultiInputRangeFieldResponse } from './useMultiInputRangeField.types';
3
- export declare const useMultiInputTimeRangeField: <TEnableAccessibleFieldDOMStructure extends boolean, TTextFieldSlotProps extends {}>({ sharedProps: inSharedProps, startTextFieldProps, unstableStartFieldRef, endTextFieldProps, unstableEndFieldRef, }: UseMultiInputTimeRangeFieldParams<TEnableAccessibleFieldDOMStructure, TTextFieldSlotProps>) => UseMultiInputRangeFieldResponse<TEnableAccessibleFieldDOMStructure, TTextFieldSlotProps>;
3
+ export declare const useMultiInputTimeRangeField: <TEnableAccessibleFieldDOMStructure extends boolean, TTextFieldSlotProps extends {}>({ sharedProps, startTextFieldProps, unstableStartFieldRef, endTextFieldProps, unstableEndFieldRef, }: UseMultiInputTimeRangeFieldParams<TEnableAccessibleFieldDOMStructure, TTextFieldSlotProps>) => UseMultiInputRangeFieldResponse<TEnableAccessibleFieldDOMStructure, TTextFieldSlotProps>;
@@ -1,20 +1,25 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import useEventCallback from '@mui/utils/useEventCallback';
3
3
  import { unstable_useTimeField as useTimeField } from '@mui/x-date-pickers/TimeField';
4
- import { useControlledValueWithTimezone, useDefaultizedTimeField } from '@mui/x-date-pickers/internals';
4
+ import { useControlledValueWithTimezone, useFieldInternalPropsWithDefaults } from '@mui/x-date-pickers/internals';
5
5
  import { useValidation } from '@mui/x-date-pickers/validation';
6
6
  import { validateTimeRange } from "../../../validation/index.js";
7
7
  import { rangeValueManager } from "../../utils/valueManagers.js";
8
8
  import { excludeProps } from "./shared.js";
9
9
  import { useMultiInputFieldSelectedSections } from "../useMultiInputFieldSelectedSections.js";
10
+ import { useTimeRangeManager } from "../../../managers/index.js";
10
11
  export const useMultiInputTimeRangeField = ({
11
- sharedProps: inSharedProps,
12
+ sharedProps,
12
13
  startTextFieldProps,
13
14
  unstableStartFieldRef,
14
15
  endTextFieldProps,
15
16
  unstableEndFieldRef
16
17
  }) => {
17
- const sharedProps = useDefaultizedTimeField(inSharedProps);
18
+ const manager = useTimeRangeManager(sharedProps);
19
+ const sharedPropsWithDefaults = useFieldInternalPropsWithDefaults({
20
+ manager,
21
+ internalProps: sharedProps
22
+ });
18
23
  const {
19
24
  value: valueProp,
20
25
  defaultValue,
@@ -30,13 +35,13 @@ export const useMultiInputTimeRangeField = ({
30
35
  timezone: timezoneProp,
31
36
  enableAccessibleFieldDOMStructure,
32
37
  autoFocus
33
- } = sharedProps;
38
+ } = sharedPropsWithDefaults;
34
39
  const {
35
40
  value,
36
41
  handleValueChange,
37
42
  timezone
38
43
  } = useControlledValueWithTimezone({
39
- name: 'useMultiInputDateRangeField',
44
+ name: 'useMultiInputTimeRangeField',
40
45
  timezone: timezoneProp,
41
46
  value: valueProp,
42
47
  defaultValue,
@@ -48,11 +53,11 @@ export const useMultiInputTimeRangeField = ({
48
53
  validationError,
49
54
  getValidationErrorForNewValue
50
55
  } = useValidation({
51
- props: sharedProps,
52
- validator: validateTimeRange,
56
+ props: sharedPropsWithDefaults,
53
57
  value,
54
58
  timezone,
55
- onError: sharedProps.onError
59
+ validator: validateTimeRange,
60
+ onError: sharedPropsWithDefaults.onError
56
61
  });
57
62
 
58
63
  // TODO: Maybe export utility from `useField` instead of copy/pasting the logic
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Returns information about the range position of the picker that wraps the current component.
3
+ * If no picker wraps the current component, returns `null`.
4
+ */
5
+ export declare function useNullablePickerRangePositionContext(): import("./useRangePosition").UseRangePositionResponse | null;
@@ -0,0 +1,10 @@
1
+ import * as React from 'react';
2
+ import { PickerRangePositionContext } from "../../hooks/usePickerRangePositionContext.js";
3
+
4
+ /**
5
+ * Returns information about the range position of the picker that wraps the current component.
6
+ * If no picker wraps the current component, returns `null`.
7
+ */
8
+ export function useNullablePickerRangePositionContext() {
9
+ return React.useContext(PickerRangePositionContext);
10
+ }
@@ -24,4 +24,4 @@ export interface UseRangePositionResponse {
24
24
  rangePosition: RangePosition;
25
25
  onRangePositionChange: (newPosition: RangePosition) => void;
26
26
  }
27
- export declare const useRangePosition: (props: UseRangePositionProps, singleInputFieldRef?: React.RefObject<FieldRef<PickerRangeValue>>) => UseRangePositionResponse;
27
+ export declare const useRangePosition: (props: UseRangePositionProps, singleInputFieldRef?: React.RefObject<FieldRef<PickerRangeValue> | null>) => UseRangePositionResponse;
@@ -7,6 +7,7 @@ import { styled } from '@mui/material/styles';
7
7
  import { PickersLayout } from '@mui/x-date-pickers/PickersLayout';
8
8
  import { usePicker, DIALOG_WIDTH, PickerProvider } from '@mui/x-date-pickers/internals';
9
9
  import { useRangePosition } from "../useRangePosition.js";
10
+ import { PickerRangePositionContext } from "../../../hooks/usePickerRangePositionContext.js";
10
11
  import { jsx as _jsx } from "react/jsx-runtime";
11
12
  const PickerStaticLayout = styled(PickersLayout)(({
12
13
  theme
@@ -35,12 +36,8 @@ export const useStaticRangePicker = _ref => {
35
36
  displayStaticWrapperAs,
36
37
  autoFocus
37
38
  } = props;
39
+ const rangePositionResponse = useRangePosition(props);
38
40
  const {
39
- rangePosition,
40
- onRangePositionChange
41
- } = useRangePosition(props);
42
- const {
43
- layoutProps,
44
41
  providerProps,
45
42
  renderCurrentView
46
43
  } = usePicker(_extends({}, pickerParams, {
@@ -48,29 +45,22 @@ export const useStaticRangePicker = _ref => {
48
45
  autoFocusView: autoFocus ?? false,
49
46
  fieldRef: undefined,
50
47
  localeText,
51
- additionalViewProps: {
52
- rangePosition,
53
- onRangePositionChange
54
- },
55
48
  variant: displayStaticWrapperAs
56
49
  }));
57
50
  const Layout = slots?.layout ?? PickerStaticLayout;
58
- const slotPropsForLayout = _extends({}, slotProps, {
59
- toolbar: _extends({}, slotProps?.toolbar, {
60
- rangePosition,
61
- onRangePositionChange
62
- })
63
- });
64
- const renderPicker = () => /*#__PURE__*/_jsx(PickerProvider, _extends({}, providerProps, {
65
- children: /*#__PURE__*/_jsx(Layout, _extends({}, layoutProps, slotProps?.layout, {
66
- slots: slots,
67
- slotProps: slotPropsForLayout,
68
- sx: [...(Array.isArray(sx) ? sx : [sx]), ...(Array.isArray(slotProps?.layout?.sx) ? slotProps.layout.sx : [slotProps?.layout?.sx])],
69
- className: clsx(className, slotProps?.layout?.className),
70
- ref: ref,
71
- children: renderCurrentView()
51
+ const renderPicker = () => /*#__PURE__*/_jsx(PickerRangePositionContext.Provider, {
52
+ value: rangePositionResponse,
53
+ children: /*#__PURE__*/_jsx(PickerProvider, _extends({}, providerProps, {
54
+ children: /*#__PURE__*/_jsx(Layout, _extends({}, slotProps?.layout, {
55
+ slots: slots,
56
+ slotProps: slotProps,
57
+ sx: [...(Array.isArray(sx) ? sx : [sx]), ...(Array.isArray(slotProps?.layout?.sx) ? slotProps.layout.sx : [slotProps?.layout?.sx])],
58
+ className: clsx(className, slotProps?.layout?.className),
59
+ ref: ref,
60
+ children: renderCurrentView()
61
+ }))
72
62
  }))
73
- }));
63
+ });
74
64
  return {
75
65
  renderPicker
76
66
  };
@@ -2,26 +2,26 @@ import * as React from 'react';
2
2
  import { BasePickerProps, UsePickerParams, ExportedBaseToolbarProps, StaticOnlyPickerProps, DateOrTimeViewWithMeridiem, PickerRangeValue } from '@mui/x-date-pickers/internals';
3
3
  import { ExportedPickersLayoutSlots, ExportedPickersLayoutSlotProps } from '@mui/x-date-pickers/PickersLayout';
4
4
  import { UseRangePositionProps } from '../useRangePosition';
5
- export interface UseStaticRangePickerSlots<TView extends DateOrTimeViewWithMeridiem> extends ExportedPickersLayoutSlots<PickerRangeValue, TView> {
5
+ export interface UseStaticRangePickerSlots extends ExportedPickersLayoutSlots<PickerRangeValue> {
6
6
  }
7
- export interface UseStaticRangePickerSlotProps<TView extends DateOrTimeViewWithMeridiem> extends ExportedPickersLayoutSlotProps<PickerRangeValue, TView> {
7
+ export interface UseStaticRangePickerSlotProps extends ExportedPickersLayoutSlotProps<PickerRangeValue> {
8
8
  toolbar?: ExportedBaseToolbarProps;
9
9
  }
10
10
  export interface StaticRangeOnlyPickerProps extends StaticOnlyPickerProps, UseRangePositionProps {
11
11
  }
12
- export interface UseStaticRangePickerProps<TView extends DateOrTimeViewWithMeridiem, TError, TExternalProps extends UseStaticRangePickerProps<TView, any, TExternalProps>> extends BasePickerProps<PickerRangeValue, TView, TError, TExternalProps, {}>, StaticRangeOnlyPickerProps {
12
+ export interface UseStaticRangePickerProps<TView extends DateOrTimeViewWithMeridiem, TError, TExternalProps extends UseStaticRangePickerProps<TView, any, TExternalProps>> extends BasePickerProps<PickerRangeValue, TView, TError, TExternalProps>, StaticRangeOnlyPickerProps {
13
13
  /**
14
14
  * Overridable components.
15
15
  * @default {}
16
16
  */
17
- slots?: UseStaticRangePickerSlots<TView>;
17
+ slots?: UseStaticRangePickerSlots;
18
18
  /**
19
19
  * The props used for each component slot.
20
20
  * @default {}
21
21
  */
22
- slotProps?: UseStaticRangePickerSlotProps<TView>;
22
+ slotProps?: UseStaticRangePickerSlotProps;
23
23
  }
24
- export interface UseStaticRangePickerParams<TView extends DateOrTimeViewWithMeridiem, TExternalProps extends UseStaticRangePickerProps<TView, any, TExternalProps>> extends Pick<UsePickerParams<PickerRangeValue, TView, TExternalProps, {}>, 'valueManager' | 'valueType' | 'validator'> {
24
+ export interface UseStaticRangePickerParams<TView extends DateOrTimeViewWithMeridiem, TExternalProps extends UseStaticRangePickerProps<TView, any, TExternalProps>> extends Pick<UsePickerParams<PickerRangeValue, TView, TExternalProps>, 'valueManager' | 'valueType' | 'validator'> {
25
25
  props: TExternalProps;
26
26
  /**
27
27
  * Ref to pass to the root element
@@ -8,7 +8,8 @@ export function calculateRangeChange({
8
8
  shouldMergeDateAndTime = false,
9
9
  referenceDate
10
10
  }) {
11
- const [start, end] = range;
11
+ const start = !utils.isValid(range[0]) ? null : range[0];
12
+ const end = !utils.isValid(range[1]) ? null : range[1];
12
13
  if (shouldMergeDateAndTime && selectedDate) {
13
14
  // If there is a date already selected, then we want to keep its time
14
15
  if (start && rangePosition === 'start') {
@@ -1,6 +1,6 @@
1
1
  import { ponyfillGlobal } from '@mui/utils';
2
2
  export const getReleaseInfo = () => {
3
- const releaseInfo = "MTczNDU2NjQwMDAwMA==";
3
+ const releaseInfo = "MTczNjM3NzIwMDAwMA==";
4
4
  if (process.env.NODE_ENV !== 'production') {
5
5
  // A simple hack to set the value in the test environment (has no build step).
6
6
  // eslint-disable-next-line no-useless-concat
@@ -12,8 +12,8 @@ export const rangeValueManager = {
12
12
  referenceDate: referenceDateProp
13
13
  } = _ref,
14
14
  params = _objectWithoutPropertiesLoose(_ref, _excluded);
15
- const shouldKeepStartDate = value[0] != null && params.utils.isValid(value[0]);
16
- const shouldKeepEndDate = value[1] != null && params.utils.isValid(value[1]);
15
+ const shouldKeepStartDate = params.utils.isValid(value[0]);
16
+ const shouldKeepEndDate = params.utils.isValid(value[1]);
17
17
  if (shouldKeepStartDate && shouldKeepEndDate) {
18
18
  return value;
19
19
  }
@@ -26,8 +26,8 @@ export const rangeValueManager = {
26
26
  hasError: error => error[0] != null || error[1] != null,
27
27
  defaultErrorState: [null, null],
28
28
  getTimezone: (utils, value) => {
29
- const timezoneStart = value[0] == null || !utils.isValid(value[0]) ? null : utils.getTimezone(value[0]);
30
- const timezoneEnd = value[1] == null || !utils.isValid(value[1]) ? null : utils.getTimezone(value[1]);
29
+ const timezoneStart = utils.isValid(value[0]) ? utils.getTimezone(value[0]) : null;
30
+ const timezoneEnd = utils.isValid(value[1]) ? utils.getTimezone(value[1]) : null;
31
31
  if (timezoneStart != null && timezoneEnd != null && timezoneStart !== timezoneEnd) {
32
32
  throw new Error('MUI X: The timezone of the start and the end date should be the same.');
33
33
  }
@@ -39,8 +39,8 @@ export const getRangeFieldValueManager = ({
39
39
  dateSeparator = '–'
40
40
  }) => ({
41
41
  updateReferenceValue: (utils, value, prevReferenceValue) => {
42
- const shouldKeepStartDate = value[0] != null && utils.isValid(value[0]);
43
- const shouldKeepEndDate = value[1] != null && utils.isValid(value[1]);
42
+ const shouldKeepStartDate = utils.isValid(value[0]);
43
+ const shouldKeepEndDate = utils.isValid(value[1]);
44
44
  if (!shouldKeepStartDate && !shouldKeepEndDate) {
45
45
  return prevReferenceValue;
46
46
  }
@@ -111,7 +111,7 @@ export const getRangeFieldValueManager = ({
111
111
  },
112
112
  getNewValuesFromNewActiveDate: newActiveDate => ({
113
113
  value: updateDateInRange(newActiveDate, state.value),
114
- referenceValue: newActiveDate == null || !utils.isValid(newActiveDate) ? state.referenceValue : updateDateInRange(newActiveDate, state.referenceValue)
114
+ referenceValue: !utils.isValid(newActiveDate) ? state.referenceValue : updateDateInRange(newActiveDate, state.referenceValue)
115
115
  })
116
116
  };
117
117
  }
@@ -0,0 +1,6 @@
1
+ export { useDateRangeManager } from './useDateRangeManager';
2
+ export type { UseDateRangeManagerReturnValue, UseDateRangeManagerParameters, } from './useDateRangeManager';
3
+ export { useTimeRangeManager } from './useTimeRangeManager';
4
+ export type { UseTimeRangeManagerReturnValue, UseTimeRangeManagerParameters, } from './useTimeRangeManager';
5
+ export { useDateTimeRangeManager } from './useDateTimeRangeManager';
6
+ export type { UseDateTimeRangeManagerReturnValue, UseDateTimeRangeManagerParameters, } from './useDateTimeRangeManager';
@@ -0,0 +1,3 @@
1
+ export { useDateRangeManager } from "./useDateRangeManager.js";
2
+ export { useTimeRangeManager } from "./useTimeRangeManager.js";
3
+ export { useDateTimeRangeManager } from "./useDateTimeRangeManager.js";
@@ -0,0 +1,6 @@
1
+ {
2
+ "sideEffects": false,
3
+ "module": "./index.js",
4
+ "main": "../node/managers/index.js",
5
+ "types": "./index.d.ts"
6
+ }
@@ -0,0 +1,15 @@
1
+ import type { MakeOptional } from '@mui/x-internals/types';
2
+ import { PickerManager } from '@mui/x-date-pickers/models';
3
+ import { PickerRangeValue, UseFieldInternalProps } from '@mui/x-date-pickers/internals';
4
+ import { DateRangeValidationError, RangeFieldSeparatorProps } from '../models';
5
+ import { ExportedValidateDateRangeProps, ValidateDateRangeProps } from '../validation/validateDateRange';
6
+ export declare function useDateRangeManager<TEnableAccessibleFieldDOMStructure extends boolean = true>(parameters?: UseDateRangeManagerParameters<TEnableAccessibleFieldDOMStructure>): UseDateRangeManagerReturnValue<TEnableAccessibleFieldDOMStructure>;
7
+ export interface UseDateRangeManagerParameters<TEnableAccessibleFieldDOMStructure extends boolean> extends RangeFieldSeparatorProps {
8
+ enableAccessibleFieldDOMStructure?: TEnableAccessibleFieldDOMStructure;
9
+ }
10
+ export type UseDateRangeManagerReturnValue<TEnableAccessibleFieldDOMStructure extends boolean> = PickerManager<PickerRangeValue, TEnableAccessibleFieldDOMStructure, DateRangeValidationError, DateRangeManagerFieldInternalProps<TEnableAccessibleFieldDOMStructure>, DateRangeManagerFieldInternalPropsWithDefaults<TEnableAccessibleFieldDOMStructure>>;
11
+ interface DateRangeManagerFieldInternalProps<TEnableAccessibleFieldDOMStructure extends boolean> extends MakeOptional<UseFieldInternalProps<PickerRangeValue, TEnableAccessibleFieldDOMStructure, DateRangeValidationError>, 'format'>, RangeFieldSeparatorProps, ExportedValidateDateRangeProps {
12
+ }
13
+ interface DateRangeManagerFieldInternalPropsWithDefaults<TEnableAccessibleFieldDOMStructure extends boolean> extends UseFieldInternalProps<PickerRangeValue, TEnableAccessibleFieldDOMStructure, DateRangeValidationError>, ValidateDateRangeProps, RangeFieldSeparatorProps {
14
+ }
15
+ export {};
@@ -0,0 +1,31 @@
1
+ 'use client';
2
+
3
+ import _extends from "@babel/runtime/helpers/esm/extends";
4
+ import * as React from 'react';
5
+ import { getDateFieldInternalPropsDefaults } from '@mui/x-date-pickers/internals';
6
+ import { getRangeFieldValueManager, rangeValueManager } from "../internals/utils/valueManagers.js";
7
+ import { validateDateRange } from "../validation/index.js";
8
+ export function useDateRangeManager(parameters = {}) {
9
+ const {
10
+ enableAccessibleFieldDOMStructure = true,
11
+ dateSeparator
12
+ } = parameters;
13
+ return React.useMemo(() => ({
14
+ valueType: 'date',
15
+ validator: validateDateRange,
16
+ internal_valueManager: rangeValueManager,
17
+ internal_fieldValueManager: getRangeFieldValueManager({
18
+ dateSeparator
19
+ }),
20
+ internal_enableAccessibleFieldDOMStructure: enableAccessibleFieldDOMStructure,
21
+ internal_applyDefaultsToFieldInternalProps: ({
22
+ internalProps,
23
+ utils,
24
+ defaultDates
25
+ }) => _extends({}, internalProps, getDateFieldInternalPropsDefaults({
26
+ defaultDates,
27
+ utils,
28
+ internalProps
29
+ }))
30
+ }), [enableAccessibleFieldDOMStructure, dateSeparator]);
31
+ }
@@ -0,0 +1,15 @@
1
+ import type { MakeOptional } from '@mui/x-internals/types';
2
+ import { PickerManager } from '@mui/x-date-pickers/models';
3
+ import { AmPmProps, PickerRangeValue, UseFieldInternalProps } from '@mui/x-date-pickers/internals';
4
+ import { DateTimeRangeValidationError, RangeFieldSeparatorProps } from '../models';
5
+ import { ExportedValidateDateTimeRangeProps, ValidateDateTimeRangeProps } from '../validation/validateDateTimeRange';
6
+ export declare function useDateTimeRangeManager<TEnableAccessibleFieldDOMStructure extends boolean = true>(parameters?: UseDateTimeRangeManagerParameters<TEnableAccessibleFieldDOMStructure>): UseDateTimeRangeManagerReturnValue<TEnableAccessibleFieldDOMStructure>;
7
+ export interface UseDateTimeRangeManagerParameters<TEnableAccessibleFieldDOMStructure extends boolean> extends RangeFieldSeparatorProps {
8
+ enableAccessibleFieldDOMStructure?: TEnableAccessibleFieldDOMStructure;
9
+ }
10
+ export type UseDateTimeRangeManagerReturnValue<TEnableAccessibleFieldDOMStructure extends boolean> = PickerManager<PickerRangeValue, TEnableAccessibleFieldDOMStructure, DateTimeRangeValidationError, DateTimeRangeManagerFieldInternalProps<TEnableAccessibleFieldDOMStructure>, DateTimeRangeManagerFieldInternalPropsWithDefaults<TEnableAccessibleFieldDOMStructure>>;
11
+ interface DateTimeRangeManagerFieldInternalProps<TEnableAccessibleFieldDOMStructure extends boolean> extends MakeOptional<UseFieldInternalProps<PickerRangeValue, TEnableAccessibleFieldDOMStructure, DateTimeRangeValidationError>, 'format'>, ExportedValidateDateTimeRangeProps, AmPmProps, RangeFieldSeparatorProps {
12
+ }
13
+ interface DateTimeRangeManagerFieldInternalPropsWithDefaults<TEnableAccessibleFieldDOMStructure extends boolean> extends UseFieldInternalProps<PickerRangeValue, TEnableAccessibleFieldDOMStructure, DateTimeRangeValidationError>, ValidateDateTimeRangeProps, RangeFieldSeparatorProps {
14
+ }
15
+ export {};
@@ -0,0 +1,31 @@
1
+ 'use client';
2
+
3
+ import _extends from "@babel/runtime/helpers/esm/extends";
4
+ import * as React from 'react';
5
+ import { getDateTimeFieldInternalPropsDefaults } from '@mui/x-date-pickers/internals';
6
+ import { getRangeFieldValueManager, rangeValueManager } from "../internals/utils/valueManagers.js";
7
+ import { validateDateTimeRange } from "../validation/index.js";
8
+ export function useDateTimeRangeManager(parameters = {}) {
9
+ const {
10
+ enableAccessibleFieldDOMStructure = true,
11
+ dateSeparator
12
+ } = parameters;
13
+ return React.useMemo(() => ({
14
+ valueType: 'date-time',
15
+ validator: validateDateTimeRange,
16
+ internal_valueManager: rangeValueManager,
17
+ internal_fieldValueManager: getRangeFieldValueManager({
18
+ dateSeparator
19
+ }),
20
+ internal_enableAccessibleFieldDOMStructure: enableAccessibleFieldDOMStructure,
21
+ internal_applyDefaultsToFieldInternalProps: ({
22
+ internalProps,
23
+ utils,
24
+ defaultDates
25
+ }) => _extends({}, internalProps, getDateTimeFieldInternalPropsDefaults({
26
+ internalProps,
27
+ utils,
28
+ defaultDates
29
+ }))
30
+ }), [enableAccessibleFieldDOMStructure, dateSeparator]);
31
+ }
@@ -0,0 +1,15 @@
1
+ import type { MakeOptional } from '@mui/x-internals/types';
2
+ import { PickerManager } from '@mui/x-date-pickers/models';
3
+ import { AmPmProps, PickerRangeValue, UseFieldInternalProps } from '@mui/x-date-pickers/internals';
4
+ import { TimeRangeValidationError, RangeFieldSeparatorProps } from '../models';
5
+ import { ExportedValidateTimeRangeProps, ValidateTimeRangeProps } from '../validation/validateTimeRange';
6
+ export declare function useTimeRangeManager<TEnableAccessibleFieldDOMStructure extends boolean = true>(parameters?: UseTimeRangeManagerParameters<TEnableAccessibleFieldDOMStructure>): UseTimeRangeManagerReturnValue<TEnableAccessibleFieldDOMStructure>;
7
+ export interface UseTimeRangeManagerParameters<TEnableAccessibleFieldDOMStructure extends boolean> extends RangeFieldSeparatorProps {
8
+ enableAccessibleFieldDOMStructure?: TEnableAccessibleFieldDOMStructure;
9
+ }
10
+ export type UseTimeRangeManagerReturnValue<TEnableAccessibleFieldDOMStructure extends boolean> = PickerManager<PickerRangeValue, TEnableAccessibleFieldDOMStructure, TimeRangeValidationError, TimeRangeManagerFieldInternalProps<TEnableAccessibleFieldDOMStructure>, TimeRangeManagerFieldInternalPropsWithDefaults<TEnableAccessibleFieldDOMStructure>>;
11
+ interface TimeRangeManagerFieldInternalProps<TEnableAccessibleFieldDOMStructure extends boolean> extends MakeOptional<UseFieldInternalProps<PickerRangeValue, TEnableAccessibleFieldDOMStructure, TimeRangeValidationError>, 'format'>, ExportedValidateTimeRangeProps, AmPmProps, RangeFieldSeparatorProps {
12
+ }
13
+ interface TimeRangeManagerFieldInternalPropsWithDefaults<TEnableAccessibleFieldDOMStructure extends boolean> extends UseFieldInternalProps<PickerRangeValue, TEnableAccessibleFieldDOMStructure, TimeRangeValidationError>, ValidateTimeRangeProps {
14
+ }
15
+ export {};
@@ -0,0 +1,29 @@
1
+ 'use client';
2
+
3
+ import _extends from "@babel/runtime/helpers/esm/extends";
4
+ import * as React from 'react';
5
+ import { getTimeFieldInternalPropsDefaults } from '@mui/x-date-pickers/internals';
6
+ import { getRangeFieldValueManager, rangeValueManager } from "../internals/utils/valueManagers.js";
7
+ import { validateTimeRange } from "../validation/index.js";
8
+ export function useTimeRangeManager(parameters = {}) {
9
+ const {
10
+ enableAccessibleFieldDOMStructure = true,
11
+ dateSeparator
12
+ } = parameters;
13
+ return React.useMemo(() => ({
14
+ valueType: 'time',
15
+ validator: validateTimeRange,
16
+ internal_valueManager: rangeValueManager,
17
+ internal_fieldValueManager: getRangeFieldValueManager({
18
+ dateSeparator
19
+ }),
20
+ internal_enableAccessibleFieldDOMStructure: enableAccessibleFieldDOMStructure,
21
+ internal_applyDefaultsToFieldInternalProps: ({
22
+ internalProps,
23
+ utils
24
+ }) => _extends({}, internalProps, getTimeFieldInternalPropsDefaults({
25
+ utils,
26
+ internalProps
27
+ }))
28
+ }), [enableAccessibleFieldDOMStructure, dateSeparator]);
29
+ }
package/models/range.d.ts CHANGED
@@ -1,3 +1,2 @@
1
1
  import { PickerValidDate } from '@mui/x-date-pickers/models';
2
2
  export type DateRange<TDate extends PickerValidDate> = [TDate | null, TDate | null];
3
- export type NonEmptyDateRange = [PickerValidDate, PickerValidDate];
@@ -1 +1 @@
1
- export { AdapterDateFnsJalali } from '@mui/x-date-pickers/AdapterDateFnsJalaliV3';
1
+ export { AdapterDateFnsJalali } from '@mui/x-date-pickers/AdapterDateFnsJalaliV2';
@@ -1 +1 @@
1
- export { AdapterDateFns } from '@mui/x-date-pickers/AdapterDateFnsV3';
1
+ export { AdapterDateFns } from '@mui/x-date-pickers/AdapterDateFnsV2';