@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.
- package/{AdapterDateFnsJalaliV3 → AdapterDateFnsJalaliV2}/index.d.ts +1 -1
- package/{AdapterDateFnsJalaliV3 → AdapterDateFnsJalaliV2}/index.js +1 -1
- package/{AdapterDateFnsJalaliV3 → AdapterDateFnsJalaliV2}/package.json +1 -1
- package/{AdapterDateFnsV3 → AdapterDateFnsV2}/index.d.ts +1 -1
- package/{AdapterDateFnsV3 → AdapterDateFnsV2}/index.js +1 -1
- package/{AdapterDateFnsV3 → AdapterDateFnsV2}/package.json +1 -1
- package/CHANGELOG.md +206 -1
- package/DateRangeCalendar/DateRangeCalendar.js +9 -7
- package/DateRangePicker/DateRangePicker.js +1 -1
- package/DateRangePicker/DateRangePicker.types.d.ts +5 -0
- package/DateRangePicker/DateRangePickerToolbar.d.ts +2 -3
- package/DateRangePicker/DateRangePickerToolbar.js +25 -31
- package/DateRangePicker/shared.d.ts +1 -1
- package/DateTimeRangePicker/DateTimeRangePicker.js +2 -2
- package/DateTimeRangePicker/DateTimeRangePickerTabs.d.ts +4 -5
- package/DateTimeRangePicker/DateTimeRangePickerTabs.js +25 -24
- package/DateTimeRangePicker/DateTimeRangePickerTimeWrapper.d.ts +8 -10
- package/DateTimeRangePicker/DateTimeRangePickerTimeWrapper.js +7 -5
- package/DateTimeRangePicker/DateTimeRangePickerToolbar.d.ts +2 -4
- package/DateTimeRangePicker/DateTimeRangePickerToolbar.js +66 -69
- package/DateTimeRangePicker/shared.d.ts +2 -2
- package/DesktopDateRangePicker/DesktopDateRangePicker.js +9 -3
- package/DesktopDateRangePicker/DesktopDateRangePicker.types.d.ts +7 -2
- package/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.js +17 -14
- package/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.types.d.ts +2 -3
- package/MobileDateRangePicker/MobileDateRangePicker.js +2 -2
- package/MobileDateRangePicker/MobileDateRangePicker.types.d.ts +2 -2
- package/MobileDateTimeRangePicker/MobileDateTimeRangePicker.js +15 -8
- package/MobileDateTimeRangePicker/MobileDateTimeRangePicker.types.d.ts +2 -3
- package/SingleInputDateRangeField/useSingleInputDateRangeField.d.ts +1 -1
- package/SingleInputDateRangeField/useSingleInputDateRangeField.js +13 -14
- package/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.d.ts +1 -1
- package/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.js +13 -14
- package/SingleInputTimeRangeField/useSingleInputTimeRangeField.d.ts +1 -1
- package/SingleInputTimeRangeField/useSingleInputTimeRangeField.js +13 -14
- package/StaticDateRangePicker/StaticDateRangePicker.types.d.ts +2 -2
- package/dateRangeViewRenderers/dateRangeViewRenderers.d.ts +2 -2
- package/dateRangeViewRenderers/dateRangeViewRenderers.js +0 -6
- package/hooks/index.d.ts +1 -0
- package/hooks/index.js +1 -0
- package/hooks/package.json +6 -0
- package/hooks/usePickerRangePositionContext.d.ts +7 -0
- package/hooks/usePickerRangePositionContext.js +15 -0
- package/index.d.ts +2 -0
- package/index.js +4 -2
- package/internals/hooks/models/useRangePicker.d.ts +4 -4
- package/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.js +35 -53
- package/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.types.d.ts +7 -9
- package/internals/hooks/useEnrichedRangePickerFieldProps.d.ts +6 -6
- package/internals/hooks/useEnrichedRangePickerFieldProps.js +11 -8
- package/internals/hooks/useMobileRangePicker/useMobileRangePicker.js +24 -40
- package/internals/hooks/useMobileRangePicker/useMobileRangePicker.types.d.ts +7 -9
- package/internals/hooks/useMultiInputFieldSelectedSections.d.ts +10 -12
- package/internals/hooks/useMultiInputRangeField/useMultiInputDateRangeField.d.ts +1 -1
- package/internals/hooks/useMultiInputRangeField/useMultiInputDateRangeField.js +11 -6
- package/internals/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.d.ts +2 -2
- package/internals/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.js +12 -7
- package/internals/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.d.ts +2 -2
- package/internals/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.js +13 -8
- package/internals/hooks/useNullablePickerRangePositionContext.d.ts +5 -0
- package/internals/hooks/useNullablePickerRangePositionContext.js +10 -0
- package/internals/hooks/useRangePosition.d.ts +1 -1
- package/internals/hooks/useStaticRangePicker/useStaticRangePicker.js +14 -24
- package/internals/hooks/useStaticRangePicker/useStaticRangePicker.types.d.ts +6 -6
- package/internals/utils/date-range-manager.js +2 -1
- package/internals/utils/releaseInfo.js +1 -1
- package/internals/utils/valueManagers.js +7 -7
- package/managers/index.d.ts +6 -0
- package/managers/index.js +3 -0
- package/managers/package.json +6 -0
- package/managers/useDateRangeManager.d.ts +15 -0
- package/managers/useDateRangeManager.js +31 -0
- package/managers/useDateTimeRangeManager.d.ts +15 -0
- package/managers/useDateTimeRangeManager.js +31 -0
- package/managers/useTimeRangeManager.d.ts +15 -0
- package/managers/useTimeRangeManager.js +29 -0
- package/models/range.d.ts +0 -1
- package/modern/{AdapterDateFnsJalaliV3 → AdapterDateFnsJalaliV2}/index.js +1 -1
- package/modern/{AdapterDateFnsV3 → AdapterDateFnsV2}/index.js +1 -1
- package/modern/DateRangeCalendar/DateRangeCalendar.js +9 -7
- package/modern/DateRangePicker/DateRangePicker.js +1 -1
- package/modern/DateRangePicker/DateRangePickerToolbar.js +25 -31
- package/modern/DateTimeRangePicker/DateTimeRangePicker.js +2 -2
- package/modern/DateTimeRangePicker/DateTimeRangePickerTabs.js +25 -24
- package/modern/DateTimeRangePicker/DateTimeRangePickerTimeWrapper.js +7 -5
- package/modern/DateTimeRangePicker/DateTimeRangePickerToolbar.js +66 -69
- package/modern/DesktopDateRangePicker/DesktopDateRangePicker.js +9 -3
- package/modern/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.js +17 -14
- package/modern/MobileDateRangePicker/MobileDateRangePicker.js +2 -2
- package/modern/MobileDateTimeRangePicker/MobileDateTimeRangePicker.js +15 -8
- package/modern/SingleInputDateRangeField/useSingleInputDateRangeField.js +13 -14
- package/modern/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.js +13 -14
- package/modern/SingleInputTimeRangeField/useSingleInputTimeRangeField.js +13 -14
- package/modern/dateRangeViewRenderers/dateRangeViewRenderers.js +0 -6
- package/modern/hooks/index.js +1 -0
- package/modern/hooks/usePickerRangePositionContext.js +15 -0
- package/modern/index.js +4 -2
- package/modern/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.js +35 -53
- package/modern/internals/hooks/useEnrichedRangePickerFieldProps.js +11 -8
- package/modern/internals/hooks/useMobileRangePicker/useMobileRangePicker.js +24 -40
- package/modern/internals/hooks/useMultiInputRangeField/useMultiInputDateRangeField.js +11 -6
- package/modern/internals/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.js +12 -7
- package/modern/internals/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.js +13 -8
- package/modern/internals/hooks/useNullablePickerRangePositionContext.js +10 -0
- package/modern/internals/hooks/useStaticRangePicker/useStaticRangePicker.js +14 -24
- package/modern/internals/utils/date-range-manager.js +2 -1
- package/modern/internals/utils/releaseInfo.js +1 -1
- package/modern/internals/utils/valueManagers.js +7 -7
- package/modern/managers/index.js +3 -0
- package/modern/managers/useDateRangeManager.js +31 -0
- package/modern/managers/useDateTimeRangeManager.js +31 -0
- package/modern/managers/useTimeRangeManager.js +29 -0
- package/node/{AdapterDateFnsJalaliV3 → AdapterDateFnsJalaliV2}/index.js +1 -1
- package/node/{AdapterDateFnsV3 → AdapterDateFnsV2}/index.js +1 -1
- package/node/DateRangeCalendar/DateRangeCalendar.js +9 -7
- package/node/DateRangePicker/DateRangePicker.js +1 -1
- package/node/DateRangePicker/DateRangePickerToolbar.js +24 -30
- package/node/DateTimeRangePicker/DateTimeRangePicker.js +2 -2
- package/node/DateTimeRangePicker/DateTimeRangePickerTabs.js +24 -23
- package/node/DateTimeRangePicker/DateTimeRangePickerTimeWrapper.js +7 -5
- package/node/DateTimeRangePicker/DateTimeRangePickerToolbar.js +65 -68
- package/node/DesktopDateRangePicker/DesktopDateRangePicker.js +9 -3
- package/node/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.js +17 -14
- package/node/MobileDateRangePicker/MobileDateRangePicker.js +2 -2
- package/node/MobileDateTimeRangePicker/MobileDateTimeRangePicker.js +15 -8
- package/node/SingleInputDateRangeField/useSingleInputDateRangeField.js +12 -14
- package/node/SingleInputDateTimeRangeField/useSingleInputDateTimeRangeField.js +12 -14
- package/node/SingleInputTimeRangeField/useSingleInputTimeRangeField.js +12 -14
- package/node/dateRangeViewRenderers/dateRangeViewRenderers.js +0 -6
- package/node/hooks/index.js +12 -0
- package/node/hooks/usePickerRangePositionContext.js +22 -0
- package/node/index.js +23 -1
- package/node/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.js +35 -53
- package/node/internals/hooks/useEnrichedRangePickerFieldProps.js +11 -8
- package/node/internals/hooks/useMobileRangePicker/useMobileRangePicker.js +24 -40
- package/node/internals/hooks/useMultiInputRangeField/useMultiInputDateRangeField.js +10 -5
- package/node/internals/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.js +11 -6
- package/node/internals/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.js +12 -7
- package/node/internals/hooks/useNullablePickerRangePositionContext.js +16 -0
- package/node/internals/hooks/useStaticRangePicker/useStaticRangePicker.js +14 -24
- package/node/internals/utils/date-range-manager.js +2 -1
- package/node/internals/utils/releaseInfo.js +1 -1
- package/node/internals/utils/valueManagers.js +7 -7
- package/node/managers/index.js +26 -0
- package/node/managers/useDateRangeManager.js +38 -0
- package/node/managers/useDateTimeRangeManager.js +38 -0
- package/node/managers/useTimeRangeManager.js +36 -0
- 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,
|
|
3
|
-
export interface UseMobileRangePickerSlots
|
|
2
|
+
import { RangeOnlyPickerProps, UseRangePickerParams, UseRangePickerProps, UseRangePickerSlotProps, UseRangePickerSlots } from '../models/useRangePicker';
|
|
3
|
+
export interface UseMobileRangePickerSlots extends UseRangePickerSlots, PickersModalDialogSlots {
|
|
4
4
|
}
|
|
5
|
-
export interface UseMobileRangePickerSlotProps<
|
|
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
|
|
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
|
|
14
|
+
slots: UseMobileRangePickerSlots;
|
|
15
15
|
/**
|
|
16
16
|
* The props used for each component slot.
|
|
17
17
|
* @default {}
|
|
18
18
|
*/
|
|
19
|
-
slotProps?: UseMobileRangePickerSlotProps<
|
|
19
|
+
slotProps?: UseMobileRangePickerSlotProps<TEnableAccessibleFieldDOMStructure>;
|
|
20
20
|
}
|
|
21
|
-
export interface
|
|
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
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
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
|
|
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,
|
|
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
|
|
12
|
+
sharedProps,
|
|
12
13
|
startTextFieldProps,
|
|
13
14
|
unstableStartFieldRef,
|
|
14
15
|
endTextFieldProps,
|
|
15
16
|
unstableEndFieldRef
|
|
16
17
|
}) => {
|
|
17
|
-
const
|
|
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
|
-
} =
|
|
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:
|
|
56
|
+
props: sharedPropsWithDefaults,
|
|
52
57
|
value,
|
|
53
58
|
timezone,
|
|
54
59
|
validator: validateDateRange,
|
|
55
|
-
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
|
|
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
|
|
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,
|
|
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
|
|
12
|
+
sharedProps,
|
|
12
13
|
startTextFieldProps,
|
|
13
14
|
unstableStartFieldRef,
|
|
14
15
|
endTextFieldProps,
|
|
15
16
|
unstableEndFieldRef
|
|
16
17
|
}) => {
|
|
17
|
-
const
|
|
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
|
-
} =
|
|
38
|
+
} = sharedPropsWithDefaults;
|
|
34
39
|
const {
|
|
35
40
|
value,
|
|
36
41
|
handleValueChange,
|
|
37
42
|
timezone
|
|
38
43
|
} = useControlledValueWithTimezone({
|
|
39
|
-
name: '
|
|
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:
|
|
56
|
+
props: sharedPropsWithDefaults,
|
|
52
57
|
value,
|
|
53
58
|
timezone,
|
|
54
59
|
validator: validateDateTimeRange,
|
|
55
|
-
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
|
|
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
|
|
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,
|
|
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
|
|
12
|
+
sharedProps,
|
|
12
13
|
startTextFieldProps,
|
|
13
14
|
unstableStartFieldRef,
|
|
14
15
|
endTextFieldProps,
|
|
15
16
|
unstableEndFieldRef
|
|
16
17
|
}) => {
|
|
17
|
-
const
|
|
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
|
-
} =
|
|
38
|
+
} = sharedPropsWithDefaults;
|
|
34
39
|
const {
|
|
35
40
|
value,
|
|
36
41
|
handleValueChange,
|
|
37
42
|
timezone
|
|
38
43
|
} = useControlledValueWithTimezone({
|
|
39
|
-
name: '
|
|
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:
|
|
52
|
-
validator: validateTimeRange,
|
|
56
|
+
props: sharedPropsWithDefaults,
|
|
53
57
|
value,
|
|
54
58
|
timezone,
|
|
55
|
-
|
|
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
|
|
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
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
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
|
|
5
|
+
export interface UseStaticRangePickerSlots extends ExportedPickersLayoutSlots<PickerRangeValue> {
|
|
6
6
|
}
|
|
7
|
-
export interface UseStaticRangePickerSlotProps
|
|
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
|
|
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
|
|
17
|
+
slots?: UseStaticRangePickerSlots;
|
|
18
18
|
/**
|
|
19
19
|
* The props used for each component slot.
|
|
20
20
|
* @default {}
|
|
21
21
|
*/
|
|
22
|
-
slotProps?: UseStaticRangePickerSlotProps
|
|
22
|
+
slotProps?: UseStaticRangePickerSlotProps;
|
|
23
23
|
}
|
|
24
|
-
export interface UseStaticRangePickerParams<TView extends DateOrTimeViewWithMeridiem, TExternalProps extends UseStaticRangePickerProps<TView, any, TExternalProps>> extends Pick<UsePickerParams<PickerRangeValue, TView, TExternalProps
|
|
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
|
|
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 = "
|
|
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 =
|
|
16
|
-
const shouldKeepEndDate =
|
|
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 =
|
|
30
|
-
const timezoneEnd =
|
|
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 =
|
|
43
|
-
const shouldKeepEndDate =
|
|
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:
|
|
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,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 +1 @@
|
|
|
1
|
-
export { AdapterDateFnsJalali } from '@mui/x-date-pickers/
|
|
1
|
+
export { AdapterDateFnsJalali } from '@mui/x-date-pickers/AdapterDateFnsJalaliV2';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { AdapterDateFns } from '@mui/x-date-pickers/
|
|
1
|
+
export { AdapterDateFns } from '@mui/x-date-pickers/AdapterDateFnsV2';
|