@mui/x-date-pickers-pro 6.8.0 → 6.9.0
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/CHANGELOG.md +76 -5534
- package/DateRangeCalendar/DateRangeCalendar.js +41 -22
- package/DateRangeCalendar/DateRangeCalendar.types.d.ts +2 -1
- package/DateRangeCalendar/useDragRange.d.ts +3 -2
- package/DateRangeCalendar/useDragRange.js +14 -11
- package/DateRangePicker/DateRangePicker.js +8 -0
- package/DesktopDateRangePicker/DesktopDateRangePicker.js +8 -0
- package/MobileDateRangePicker/MobileDateRangePicker.js +8 -0
- package/MultiInputDateRangeField/MultiInputDateRangeField.js +8 -0
- package/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +8 -0
- package/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.types.d.ts +1 -1
- package/MultiInputTimeRangeField/MultiInputTimeRangeField.js +8 -0
- package/MultiInputTimeRangeField/MultiInputTimeRangeField.types.d.ts +1 -1
- package/SingleInputDateRangeField/SingleInputDateRangeField.js +8 -0
- package/SingleInputDateRangeField/SingleInputDateRangeField.types.d.ts +1 -1
- package/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.js +8 -0
- package/SingleInputTimeRangeField/SingleInputTimeRangeField.js +8 -0
- package/StaticDateRangePicker/StaticDateRangePicker.js +8 -0
- package/dateRangeViewRenderers/dateRangeViewRenderers.d.ts +1 -1
- package/dateRangeViewRenderers/dateRangeViewRenderers.js +4 -2
- package/index.js +1 -1
- package/internal/hooks/useDesktopRangePicker/useDesktopRangePicker.js +2 -0
- package/internal/hooks/useMobileRangePicker/useMobileRangePicker.js +3 -1
- package/internal/hooks/useMultiInputRangeField/useMultiInputDateRangeField.js +21 -14
- package/internal/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.js +21 -14
- package/internal/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.js +21 -14
- package/internal/utils/releaseInfo.js +1 -1
- package/internal/utils/validation/validateDateRange.d.ts +3 -2
- package/internal/utils/validation/validateDateTimeRange.d.ts +3 -2
- package/internal/utils/validation/validateTimeRange.d.ts +3 -2
- package/internal/utils/valueManagers.js +3 -2
- package/legacy/DateRangeCalendar/DateRangeCalendar.js +39 -24
- package/legacy/DateRangeCalendar/useDragRange.js +14 -11
- package/legacy/DateRangePicker/DateRangePicker.js +8 -0
- package/legacy/DesktopDateRangePicker/DesktopDateRangePicker.js +8 -0
- package/legacy/MobileDateRangePicker/MobileDateRangePicker.js +8 -0
- package/legacy/MultiInputDateRangeField/MultiInputDateRangeField.js +8 -0
- package/legacy/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +8 -0
- package/legacy/MultiInputTimeRangeField/MultiInputTimeRangeField.js +8 -0
- package/legacy/SingleInputDateRangeField/SingleInputDateRangeField.js +8 -0
- package/legacy/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.js +8 -0
- package/legacy/SingleInputTimeRangeField/SingleInputTimeRangeField.js +8 -0
- package/legacy/StaticDateRangePicker/StaticDateRangePicker.js +8 -0
- package/legacy/dateRangeViewRenderers/dateRangeViewRenderers.js +4 -2
- package/legacy/index.js +1 -1
- package/legacy/internal/hooks/useDesktopRangePicker/useDesktopRangePicker.js +2 -0
- package/legacy/internal/hooks/useMobileRangePicker/useMobileRangePicker.js +3 -1
- package/legacy/internal/hooks/useMultiInputRangeField/useMultiInputDateRangeField.js +20 -18
- package/legacy/internal/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.js +20 -18
- package/legacy/internal/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.js +20 -18
- package/legacy/internal/utils/releaseInfo.js +1 -1
- package/legacy/internal/utils/valueManagers.js +5 -2
- package/modern/DateRangeCalendar/DateRangeCalendar.js +41 -22
- package/modern/DateRangeCalendar/useDragRange.js +14 -11
- package/modern/DateRangePicker/DateRangePicker.js +8 -0
- package/modern/DesktopDateRangePicker/DesktopDateRangePicker.js +8 -0
- package/modern/MobileDateRangePicker/MobileDateRangePicker.js +8 -0
- package/modern/MultiInputDateRangeField/MultiInputDateRangeField.js +8 -0
- package/modern/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +8 -0
- package/modern/MultiInputTimeRangeField/MultiInputTimeRangeField.js +8 -0
- package/modern/SingleInputDateRangeField/SingleInputDateRangeField.js +8 -0
- package/modern/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.js +8 -0
- package/modern/SingleInputTimeRangeField/SingleInputTimeRangeField.js +8 -0
- package/modern/StaticDateRangePicker/StaticDateRangePicker.js +8 -0
- package/modern/dateRangeViewRenderers/dateRangeViewRenderers.js +4 -2
- package/modern/index.js +1 -1
- package/modern/internal/hooks/useDesktopRangePicker/useDesktopRangePicker.js +2 -0
- package/modern/internal/hooks/useMobileRangePicker/useMobileRangePicker.js +3 -1
- package/modern/internal/hooks/useMultiInputRangeField/useMultiInputDateRangeField.js +21 -13
- package/modern/internal/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.js +21 -13
- package/modern/internal/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.js +21 -13
- package/modern/internal/utils/releaseInfo.js +1 -1
- package/modern/internal/utils/valueManagers.js +3 -2
- package/node/DateRangeCalendar/DateRangeCalendar.js +40 -21
- package/node/DateRangeCalendar/useDragRange.js +14 -11
- package/node/DateRangePicker/DateRangePicker.js +8 -0
- package/node/DesktopDateRangePicker/DesktopDateRangePicker.js +8 -0
- package/node/MobileDateRangePicker/MobileDateRangePicker.js +8 -0
- package/node/MultiInputDateRangeField/MultiInputDateRangeField.js +8 -0
- package/node/MultiInputDateTimeRangeField/MultiInputDateTimeRangeField.js +8 -0
- package/node/MultiInputTimeRangeField/MultiInputTimeRangeField.js +8 -0
- package/node/SingleInputDateRangeField/SingleInputDateRangeField.js +8 -0
- package/node/SingleInputDateTimeRangeField/SingleInputDateTimeRangeField.js +8 -0
- package/node/SingleInputTimeRangeField/SingleInputTimeRangeField.js +8 -0
- package/node/StaticDateRangePicker/StaticDateRangePicker.js +8 -0
- package/node/dateRangeViewRenderers/dateRangeViewRenderers.js +4 -2
- package/node/index.js +1 -1
- package/node/internal/hooks/useDesktopRangePicker/useDesktopRangePicker.js +2 -0
- package/node/internal/hooks/useMobileRangePicker/useMobileRangePicker.js +3 -1
- package/node/internal/hooks/useMultiInputRangeField/useMultiInputDateRangeField.js +20 -14
- package/node/internal/hooks/useMultiInputRangeField/useMultiInputDateTimeRangeField.js +20 -14
- package/node/internal/hooks/useMultiInputRangeField/useMultiInputTimeRangeField.js +20 -14
- package/node/internal/utils/releaseInfo.js +1 -1
- package/node/internal/utils/valueManagers.js +3 -2
- package/package.json +4 -4
|
@@ -252,6 +252,14 @@ StaticDateRangePicker.propTypes = {
|
|
|
252
252
|
* The system prop that allows defining system overrides as well as additional CSS styles.
|
|
253
253
|
*/
|
|
254
254
|
sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),
|
|
255
|
+
/**
|
|
256
|
+
* Choose which timezone to use for the value.
|
|
257
|
+
* Example: "default", "system", "UTC", "America/New_York".
|
|
258
|
+
* If you pass values from other timezones to some props, they will be converted to this timezone before being used.
|
|
259
|
+
* @see See the {@link https://mui.com/x/react-date-pickers/timezone/ timezones documention} for more details.
|
|
260
|
+
* @default The timezone of the `value` or `defaultValue` prop is defined, 'default' otherwise.
|
|
261
|
+
*/
|
|
262
|
+
timezone: PropTypes.string,
|
|
255
263
|
/**
|
|
256
264
|
* The selected value.
|
|
257
265
|
* Used when the component is controlled.
|
|
@@ -40,7 +40,8 @@ export var renderDateRangeViewCalendar = function renderDateRangeViewCalendar(_r
|
|
|
40
40
|
autoFocus = _ref.autoFocus,
|
|
41
41
|
fixedWeekNumber = _ref.fixedWeekNumber,
|
|
42
42
|
disableDragEditing = _ref.disableDragEditing,
|
|
43
|
-
displayWeekNumber = _ref.displayWeekNumber
|
|
43
|
+
displayWeekNumber = _ref.displayWeekNumber,
|
|
44
|
+
timezone = _ref.timezone;
|
|
44
45
|
return /*#__PURE__*/_jsx(DateRangeCalendar, {
|
|
45
46
|
value: value,
|
|
46
47
|
defaultValue: defaultValue,
|
|
@@ -76,6 +77,7 @@ export var renderDateRangeViewCalendar = function renderDateRangeViewCalendar(_r
|
|
|
76
77
|
autoFocus: autoFocus,
|
|
77
78
|
fixedWeekNumber: fixedWeekNumber,
|
|
78
79
|
disableDragEditing: disableDragEditing,
|
|
79
|
-
displayWeekNumber: displayWeekNumber
|
|
80
|
+
displayWeekNumber: displayWeekNumber,
|
|
81
|
+
timezone: timezone
|
|
80
82
|
});
|
|
81
83
|
};
|
package/legacy/index.js
CHANGED
|
@@ -24,6 +24,7 @@ export var useDesktopRangePicker = function useDesktopRangePicker(_ref) {
|
|
|
24
24
|
sx = props.sx,
|
|
25
25
|
format = props.format,
|
|
26
26
|
formatDensity = props.formatDensity,
|
|
27
|
+
timezone = props.timezone,
|
|
27
28
|
label = props.label,
|
|
28
29
|
inputRef = props.inputRef,
|
|
29
30
|
readOnly = props.readOnly,
|
|
@@ -73,6 +74,7 @@ export var useDesktopRangePicker = function useDesktopRangePicker(_ref) {
|
|
|
73
74
|
sx: sx,
|
|
74
75
|
format: format,
|
|
75
76
|
formatDensity: formatDensity,
|
|
77
|
+
timezone: timezone,
|
|
76
78
|
autoFocus: autoFocus && !props.open,
|
|
77
79
|
ref: fieldContainerRef
|
|
78
80
|
}, fieldType === 'single-input' && {
|
|
@@ -25,6 +25,7 @@ export var useMobileRangePicker = function useMobileRangePicker(_ref) {
|
|
|
25
25
|
sx = props.sx,
|
|
26
26
|
format = props.format,
|
|
27
27
|
formatDensity = props.formatDensity,
|
|
28
|
+
timezone = props.timezone,
|
|
28
29
|
label = props.label,
|
|
29
30
|
inputRef = props.inputRef,
|
|
30
31
|
readOnly = props.readOnly,
|
|
@@ -62,7 +63,8 @@ export var useMobileRangePicker = function useMobileRangePicker(_ref) {
|
|
|
62
63
|
className: className,
|
|
63
64
|
sx: sx,
|
|
64
65
|
format: format,
|
|
65
|
-
formatDensity: formatDensity
|
|
66
|
+
formatDensity: formatDensity,
|
|
67
|
+
timezone: timezone
|
|
66
68
|
}, fieldType === 'single-input' && {
|
|
67
69
|
inputRef: inputRef
|
|
68
70
|
}),
|
|
@@ -1,15 +1,11 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
-
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
3
|
-
import * as React from 'react';
|
|
4
2
|
import useEventCallback from '@mui/utils/useEventCallback';
|
|
5
3
|
import { unstable_useDateField as useDateField } from '@mui/x-date-pickers/DateField';
|
|
6
|
-
import { useLocalizationContext, useValidation } from '@mui/x-date-pickers/internals';
|
|
7
|
-
import useControlled from '@mui/utils/useControlled';
|
|
4
|
+
import { useLocalizationContext, useValidation, useControlledValueWithTimezone } from '@mui/x-date-pickers/internals';
|
|
8
5
|
import { useDefaultizedDateRangeFieldProps } from '../../../SingleInputDateRangeField/useSingleInputDateRangeField';
|
|
9
6
|
import { validateDateRange } from '../../utils/validation/validateDateRange';
|
|
10
7
|
import { rangeValueManager } from '../../utils/valueManagers';
|
|
11
8
|
export var useMultiInputDateRangeField = function useMultiInputDateRangeField(_ref) {
|
|
12
|
-
var _firstDefaultValue$cu;
|
|
13
9
|
var inSharedProps = _ref.sharedProps,
|
|
14
10
|
startTextFieldProps = _ref.startTextFieldProps,
|
|
15
11
|
startInputRef = _ref.startInputRef,
|
|
@@ -28,37 +24,41 @@ export var useMultiInputDateRangeField = function useMultiInputDateRangeField(_r
|
|
|
28
24
|
disabled = sharedProps.disabled,
|
|
29
25
|
readOnly = sharedProps.readOnly,
|
|
30
26
|
selectedSections = sharedProps.selectedSections,
|
|
31
|
-
onSelectedSectionsChange = sharedProps.onSelectedSectionsChange
|
|
32
|
-
|
|
33
|
-
var
|
|
27
|
+
onSelectedSectionsChange = sharedProps.onSelectedSectionsChange,
|
|
28
|
+
timezoneProp = sharedProps.timezone;
|
|
29
|
+
var _useControlledValueWi = useControlledValueWithTimezone({
|
|
34
30
|
name: 'useMultiInputDateRangeField',
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
31
|
+
timezone: timezoneProp,
|
|
32
|
+
value: valueProp,
|
|
33
|
+
defaultValue: defaultValue,
|
|
34
|
+
onChange: onChange,
|
|
35
|
+
valueManager: rangeValueManager
|
|
38
36
|
}),
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
37
|
+
value = _useControlledValueWi.value,
|
|
38
|
+
handleValueChange = _useControlledValueWi.handleValueChange,
|
|
39
|
+
timezone = _useControlledValueWi.timezone;
|
|
42
40
|
|
|
43
41
|
// TODO: Maybe export utility from `useField` instead of copy/pasting the logic
|
|
44
42
|
var buildChangeHandler = function buildChangeHandler(index) {
|
|
45
43
|
return function (newDate, rawContext) {
|
|
46
44
|
var newDateRange = index === 0 ? [newDate, value[1]] : [value[0], newDate];
|
|
47
|
-
setValue(newDateRange);
|
|
48
45
|
var context = _extends({}, rawContext, {
|
|
49
46
|
validationError: validateDateRange({
|
|
50
47
|
adapter: adapter,
|
|
51
48
|
value: newDateRange,
|
|
52
|
-
props: sharedProps
|
|
49
|
+
props: _extends({}, sharedProps, {
|
|
50
|
+
timezone: timezone
|
|
51
|
+
})
|
|
53
52
|
})
|
|
54
53
|
});
|
|
55
|
-
|
|
54
|
+
handleValueChange(newDateRange, context);
|
|
56
55
|
};
|
|
57
56
|
};
|
|
58
57
|
var handleStartDateChange = useEventCallback(buildChangeHandler(0));
|
|
59
58
|
var handleEndDateChange = useEventCallback(buildChangeHandler(1));
|
|
60
59
|
var validationError = useValidation(_extends({}, sharedProps, {
|
|
61
|
-
value: value
|
|
60
|
+
value: value,
|
|
61
|
+
timezone: timezone
|
|
62
62
|
}), validateDateRange, rangeValueManager.isSameError, rangeValueManager.defaultErrorState);
|
|
63
63
|
var startFieldProps = _extends({
|
|
64
64
|
error: !!validationError[0]
|
|
@@ -68,6 +68,7 @@ export var useMultiInputDateRangeField = function useMultiInputDateRangeField(_r
|
|
|
68
68
|
format: format,
|
|
69
69
|
formatDensity: formatDensity,
|
|
70
70
|
shouldRespectLeadingZeros: shouldRespectLeadingZeros,
|
|
71
|
+
timezone: timezone,
|
|
71
72
|
unstableFieldRef: unstableStartFieldRef,
|
|
72
73
|
value: valueProp === undefined ? undefined : valueProp[0],
|
|
73
74
|
defaultValue: defaultValue === undefined ? undefined : defaultValue[0],
|
|
@@ -83,6 +84,7 @@ export var useMultiInputDateRangeField = function useMultiInputDateRangeField(_r
|
|
|
83
84
|
shouldRespectLeadingZeros: shouldRespectLeadingZeros,
|
|
84
85
|
disabled: disabled,
|
|
85
86
|
readOnly: readOnly,
|
|
87
|
+
timezone: timezone,
|
|
86
88
|
unstableFieldRef: unstableEndFieldRef,
|
|
87
89
|
value: valueProp === undefined ? undefined : valueProp[1],
|
|
88
90
|
defaultValue: defaultValue === undefined ? undefined : defaultValue[1],
|
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
2
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
3
|
-
import * as React from 'react';
|
|
4
2
|
import useEventCallback from '@mui/utils/useEventCallback';
|
|
5
3
|
import { unstable_useDateTimeField as useDateTimeField } from '@mui/x-date-pickers/DateTimeField';
|
|
6
|
-
import { applyDefaultDate, useDefaultDates, useLocalizationContext, useUtils, useValidation } from '@mui/x-date-pickers/internals';
|
|
7
|
-
import useControlled from '@mui/utils/useControlled';
|
|
4
|
+
import { applyDefaultDate, useDefaultDates, useLocalizationContext, useUtils, useValidation, useControlledValueWithTimezone } from '@mui/x-date-pickers/internals';
|
|
8
5
|
import { validateDateTimeRange } from '../../utils/validation/validateDateTimeRange';
|
|
9
6
|
import { rangeValueManager } from '../../utils/valueManagers';
|
|
10
7
|
export var useDefaultizedDateTimeRangeFieldProps = function useDefaultizedDateTimeRangeFieldProps(props) {
|
|
@@ -25,7 +22,6 @@ export var useDefaultizedDateTimeRangeFieldProps = function useDefaultizedDateTi
|
|
|
25
22
|
});
|
|
26
23
|
};
|
|
27
24
|
export var useMultiInputDateTimeRangeField = function useMultiInputDateTimeRangeField(_ref) {
|
|
28
|
-
var _firstDefaultValue$cu;
|
|
29
25
|
var inSharedProps = _ref.sharedProps,
|
|
30
26
|
startTextFieldProps = _ref.startTextFieldProps,
|
|
31
27
|
startInputRef = _ref.startInputRef,
|
|
@@ -39,39 +35,43 @@ export var useMultiInputDateTimeRangeField = function useMultiInputDateTimeRange
|
|
|
39
35
|
defaultValue = sharedProps.defaultValue,
|
|
40
36
|
format = sharedProps.format,
|
|
41
37
|
shouldRespectLeadingZeros = sharedProps.shouldRespectLeadingZeros,
|
|
38
|
+
timezoneProp = sharedProps.timezone,
|
|
42
39
|
onChange = sharedProps.onChange,
|
|
43
40
|
disabled = sharedProps.disabled,
|
|
44
41
|
readOnly = sharedProps.readOnly;
|
|
45
|
-
var
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
42
|
+
var _useControlledValueWi = useControlledValueWithTimezone({
|
|
43
|
+
name: 'useMultiInputDateRangeField',
|
|
44
|
+
timezone: timezoneProp,
|
|
45
|
+
value: valueProp,
|
|
46
|
+
defaultValue: defaultValue,
|
|
47
|
+
onChange: onChange,
|
|
48
|
+
valueManager: rangeValueManager
|
|
51
49
|
}),
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
50
|
+
value = _useControlledValueWi.value,
|
|
51
|
+
handleValueChange = _useControlledValueWi.handleValueChange,
|
|
52
|
+
timezone = _useControlledValueWi.timezone;
|
|
55
53
|
|
|
56
54
|
// TODO: Maybe export utility from `useField` instead of copy/pasting the logic
|
|
57
55
|
var buildChangeHandler = function buildChangeHandler(index) {
|
|
58
56
|
return function (newDate, rawContext) {
|
|
59
57
|
var newDateRange = index === 0 ? [newDate, value[1]] : [value[0], newDate];
|
|
60
|
-
setValue(newDateRange);
|
|
61
58
|
var context = _extends({}, rawContext, {
|
|
62
59
|
validationError: validateDateTimeRange({
|
|
63
60
|
adapter: adapter,
|
|
64
61
|
value: newDateRange,
|
|
65
|
-
props: sharedProps
|
|
62
|
+
props: _extends({}, sharedProps, {
|
|
63
|
+
timezone: timezone
|
|
64
|
+
})
|
|
66
65
|
})
|
|
67
66
|
});
|
|
68
|
-
|
|
67
|
+
handleValueChange(newDateRange, context);
|
|
69
68
|
};
|
|
70
69
|
};
|
|
71
70
|
var handleStartDateChange = useEventCallback(buildChangeHandler(0));
|
|
72
71
|
var handleEndDateChange = useEventCallback(buildChangeHandler(1));
|
|
73
72
|
var validationError = useValidation(_extends({}, sharedProps, {
|
|
74
|
-
value: value
|
|
73
|
+
value: value,
|
|
74
|
+
timezone: timezone
|
|
75
75
|
}), validateDateTimeRange, rangeValueManager.isSameError, rangeValueManager.defaultErrorState);
|
|
76
76
|
var startFieldProps = _extends({
|
|
77
77
|
error: !!validationError[0]
|
|
@@ -80,6 +80,7 @@ export var useMultiInputDateTimeRangeField = function useMultiInputDateTimeRange
|
|
|
80
80
|
shouldRespectLeadingZeros: shouldRespectLeadingZeros,
|
|
81
81
|
disabled: disabled,
|
|
82
82
|
readOnly: readOnly,
|
|
83
|
+
timezone: timezone,
|
|
83
84
|
unstableFieldRef: unstableStartFieldRef,
|
|
84
85
|
value: valueProp === undefined ? undefined : valueProp[0],
|
|
85
86
|
defaultValue: defaultValue === undefined ? undefined : defaultValue[0],
|
|
@@ -92,6 +93,7 @@ export var useMultiInputDateTimeRangeField = function useMultiInputDateTimeRange
|
|
|
92
93
|
shouldRespectLeadingZeros: shouldRespectLeadingZeros,
|
|
93
94
|
disabled: disabled,
|
|
94
95
|
readOnly: readOnly,
|
|
96
|
+
timezone: timezone,
|
|
95
97
|
unstableFieldRef: unstableEndFieldRef,
|
|
96
98
|
value: valueProp === undefined ? undefined : valueProp[1],
|
|
97
99
|
defaultValue: defaultValue === undefined ? undefined : defaultValue[1],
|
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
2
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
3
|
-
import * as React from 'react';
|
|
4
2
|
import useEventCallback from '@mui/utils/useEventCallback';
|
|
5
3
|
import { unstable_useTimeField as useTimeField } from '@mui/x-date-pickers/TimeField';
|
|
6
|
-
import { useLocalizationContext, useUtils, useValidation } from '@mui/x-date-pickers/internals';
|
|
7
|
-
import useControlled from '@mui/utils/useControlled';
|
|
4
|
+
import { useLocalizationContext, useUtils, useValidation, useControlledValueWithTimezone } from '@mui/x-date-pickers/internals';
|
|
8
5
|
import { validateTimeRange } from '../../utils/validation/validateTimeRange';
|
|
9
6
|
import { rangeValueManager } from '../../utils/valueManagers';
|
|
10
7
|
export var useDefaultizedTimeRangeFieldProps = function useDefaultizedTimeRangeFieldProps(props) {
|
|
@@ -19,7 +16,6 @@ export var useDefaultizedTimeRangeFieldProps = function useDefaultizedTimeRangeF
|
|
|
19
16
|
});
|
|
20
17
|
};
|
|
21
18
|
export var useMultiInputTimeRangeField = function useMultiInputTimeRangeField(_ref) {
|
|
22
|
-
var _firstDefaultValue$cu;
|
|
23
19
|
var inSharedProps = _ref.sharedProps,
|
|
24
20
|
startTextFieldProps = _ref.startTextFieldProps,
|
|
25
21
|
startInputRef = _ref.startInputRef,
|
|
@@ -33,39 +29,43 @@ export var useMultiInputTimeRangeField = function useMultiInputTimeRangeField(_r
|
|
|
33
29
|
defaultValue = sharedProps.defaultValue,
|
|
34
30
|
format = sharedProps.format,
|
|
35
31
|
shouldRespectLeadingZeros = sharedProps.shouldRespectLeadingZeros,
|
|
32
|
+
timezoneProp = sharedProps.timezone,
|
|
36
33
|
onChange = sharedProps.onChange,
|
|
37
34
|
disabled = sharedProps.disabled,
|
|
38
35
|
readOnly = sharedProps.readOnly;
|
|
39
|
-
var
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
36
|
+
var _useControlledValueWi = useControlledValueWithTimezone({
|
|
37
|
+
name: 'useMultiInputDateRangeField',
|
|
38
|
+
timezone: timezoneProp,
|
|
39
|
+
value: valueProp,
|
|
40
|
+
defaultValue: defaultValue,
|
|
41
|
+
onChange: onChange,
|
|
42
|
+
valueManager: rangeValueManager
|
|
45
43
|
}),
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
44
|
+
value = _useControlledValueWi.value,
|
|
45
|
+
handleValueChange = _useControlledValueWi.handleValueChange,
|
|
46
|
+
timezone = _useControlledValueWi.timezone;
|
|
49
47
|
|
|
50
48
|
// TODO: Maybe export utility from `useField` instead of copy/pasting the logic
|
|
51
49
|
var buildChangeHandler = function buildChangeHandler(index) {
|
|
52
50
|
return function (newDate, rawContext) {
|
|
53
51
|
var newDateRange = index === 0 ? [newDate, value[1]] : [value[0], newDate];
|
|
54
|
-
setValue(newDateRange);
|
|
55
52
|
var context = _extends({}, rawContext, {
|
|
56
53
|
validationError: validateTimeRange({
|
|
57
54
|
adapter: adapter,
|
|
58
55
|
value: newDateRange,
|
|
59
|
-
props: sharedProps
|
|
56
|
+
props: _extends({}, sharedProps, {
|
|
57
|
+
timezone: timezone
|
|
58
|
+
})
|
|
60
59
|
})
|
|
61
60
|
});
|
|
62
|
-
|
|
61
|
+
handleValueChange(newDateRange, context);
|
|
63
62
|
};
|
|
64
63
|
};
|
|
65
64
|
var handleStartDateChange = useEventCallback(buildChangeHandler(0));
|
|
66
65
|
var handleEndDateChange = useEventCallback(buildChangeHandler(1));
|
|
67
66
|
var validationError = useValidation(_extends({}, sharedProps, {
|
|
68
|
-
value: value
|
|
67
|
+
value: value,
|
|
68
|
+
timezone: timezone
|
|
69
69
|
}), validateTimeRange, rangeValueManager.isSameError, rangeValueManager.defaultErrorState);
|
|
70
70
|
var startFieldProps = _extends({
|
|
71
71
|
error: !!validationError[0]
|
|
@@ -74,6 +74,7 @@ export var useMultiInputTimeRangeField = function useMultiInputTimeRangeField(_r
|
|
|
74
74
|
shouldRespectLeadingZeros: shouldRespectLeadingZeros,
|
|
75
75
|
disabled: disabled,
|
|
76
76
|
readOnly: readOnly,
|
|
77
|
+
timezone: timezone,
|
|
77
78
|
unstableFieldRef: unstableStartFieldRef,
|
|
78
79
|
value: valueProp === undefined ? undefined : valueProp[0],
|
|
79
80
|
defaultValue: defaultValue === undefined ? undefined : defaultValue[0],
|
|
@@ -86,6 +87,7 @@ export var useMultiInputTimeRangeField = function useMultiInputTimeRangeField(_r
|
|
|
86
87
|
shouldRespectLeadingZeros: shouldRespectLeadingZeros,
|
|
87
88
|
disabled: disabled,
|
|
88
89
|
readOnly: readOnly,
|
|
90
|
+
timezone: timezone,
|
|
89
91
|
unstableFieldRef: unstableEndFieldRef,
|
|
90
92
|
value: valueProp === undefined ? undefined : valueProp[1],
|
|
91
93
|
defaultValue: defaultValue === undefined ? undefined : defaultValue[1],
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ponyfillGlobal } from '@mui/utils';
|
|
2
2
|
export var getReleaseInfo = function getReleaseInfo() {
|
|
3
|
-
var releaseInfo = "
|
|
3
|
+
var releaseInfo = "MTY4NzM4MTIwMDAwMA==";
|
|
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
|
|
@@ -7,8 +7,8 @@ import { replaceInvalidDateByNull, addPositionPropertiesToSections, createDateSt
|
|
|
7
7
|
import { splitDateRangeSections, removeLastSeparator } from './date-fields-utils';
|
|
8
8
|
export var rangeValueManager = {
|
|
9
9
|
emptyValue: [null, null],
|
|
10
|
-
getTodayValue: function getTodayValue(utils, valueType) {
|
|
11
|
-
return [getTodayDate(utils, valueType), getTodayDate(utils, valueType)];
|
|
10
|
+
getTodayValue: function getTodayValue(utils, timezone, valueType) {
|
|
11
|
+
return [getTodayDate(utils, timezone, valueType), getTodayDate(utils, timezone, valueType)];
|
|
12
12
|
},
|
|
13
13
|
getInitialReferenceValue: function getInitialReferenceValue(_ref) {
|
|
14
14
|
var value = _ref.value,
|
|
@@ -44,6 +44,9 @@ export var rangeValueManager = {
|
|
|
44
44
|
throw new Error('MUI: The timezone of the start and the end date should be the same');
|
|
45
45
|
}
|
|
46
46
|
return timezoneStart != null ? timezoneStart : timezoneEnd;
|
|
47
|
+
},
|
|
48
|
+
setTimezone: function setTimezone(utils, timezone, value) {
|
|
49
|
+
return [value[0] == null ? null : utils.setTimezone(value[0], timezone), value[1] == null ? null : utils.setTimezone(value[1], timezone)];
|
|
47
50
|
}
|
|
48
51
|
};
|
|
49
52
|
export var rangeFieldValueManager = {
|
|
@@ -1,18 +1,17 @@
|
|
|
1
1
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
2
2
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
3
|
-
const _excluded = ["value", "defaultValue", "onChange", "className", "disableFuture", "disablePast", "minDate", "maxDate", "shouldDisableDate", "reduceAnimations", "onMonthChange", "defaultCalendarMonth", "rangePosition", "defaultRangePosition", "onRangePositionChange", "calendars", "currentMonthCalendarPosition", "components", "componentsProps", "slots", "slotProps", "loading", "renderLoading", "disableHighlightToday", "readOnly", "disabled", "showDaysOutsideCurrentMonth", "dayOfWeekFormatter", "disableAutoMonthSwitching", "autoFocus", "fixedWeekNumber", "disableDragEditing", "displayWeekNumber"],
|
|
3
|
+
const _excluded = ["value", "defaultValue", "onChange", "className", "disableFuture", "disablePast", "minDate", "maxDate", "shouldDisableDate", "reduceAnimations", "onMonthChange", "defaultCalendarMonth", "rangePosition", "defaultRangePosition", "onRangePositionChange", "calendars", "currentMonthCalendarPosition", "components", "componentsProps", "slots", "slotProps", "loading", "renderLoading", "disableHighlightToday", "readOnly", "disabled", "showDaysOutsideCurrentMonth", "dayOfWeekFormatter", "disableAutoMonthSwitching", "autoFocus", "fixedWeekNumber", "disableDragEditing", "displayWeekNumber", "timezone"],
|
|
4
4
|
_excluded2 = ["isDragging", "rangeDragDay", "draggingDatePosition"];
|
|
5
5
|
import * as React from 'react';
|
|
6
6
|
import PropTypes from 'prop-types';
|
|
7
7
|
import clsx from 'clsx';
|
|
8
8
|
import useEventCallback from '@mui/utils/useEventCallback';
|
|
9
|
-
import useControlled from '@mui/utils/useControlled';
|
|
10
9
|
import useMediaQuery from '@mui/material/useMediaQuery';
|
|
11
10
|
import { resolveComponentProps } from '@mui/base/utils';
|
|
12
11
|
import { styled, useThemeProps } from '@mui/material/styles';
|
|
13
12
|
import { unstable_composeClasses as composeClasses } from '@mui/utils';
|
|
14
13
|
import { Watermark } from '@mui/x-license-pro';
|
|
15
|
-
import { applyDefaultDate, DAY_MARGIN, DayCalendar, defaultReduceAnimations, PickersArrowSwitcher, PickersCalendarHeader, useCalendarState, useDefaultDates, useLocaleText, useNextMonthDisabled, usePreviousMonthDisabled, useUtils, useNow, uncapitalizeObjectKeys, DEFAULT_DESKTOP_MODE_MEDIA_QUERY, buildWarning } from '@mui/x-date-pickers/internals';
|
|
14
|
+
import { applyDefaultDate, DAY_MARGIN, DayCalendar, defaultReduceAnimations, PickersArrowSwitcher, PickersCalendarHeader, useCalendarState, useDefaultDates, useLocaleText, useNextMonthDisabled, usePreviousMonthDisabled, useUtils, useNow, uncapitalizeObjectKeys, DEFAULT_DESKTOP_MODE_MEDIA_QUERY, buildWarning, useControlledValueWithTimezone } from '@mui/x-date-pickers/internals';
|
|
16
15
|
import { getReleaseInfo } from '../internal/utils/releaseInfo';
|
|
17
16
|
import { dateRangeCalendarClasses, getDateRangeCalendarUtilityClass } from './dateRangeCalendarClasses';
|
|
18
17
|
import { isEndOfRange, isRangeValid, isStartOfRange, isWithinRange } from '../internal/utils/date-utils';
|
|
@@ -40,7 +39,7 @@ const DateRangeCalendarMonthContainer = styled('div', {
|
|
|
40
39
|
theme
|
|
41
40
|
}) => ({
|
|
42
41
|
'&:not(:last-of-type)': {
|
|
43
|
-
borderRight: `
|
|
42
|
+
borderRight: `1px solid ${(theme.vars || theme).palette.divider}`
|
|
44
43
|
}
|
|
45
44
|
}));
|
|
46
45
|
const DateRangeCalendarArrowSwitcher = styled(PickersArrowSwitcher)({
|
|
@@ -108,9 +107,6 @@ const useUtilityClasses = ownerState => {
|
|
|
108
107
|
return composeClasses(slots, getDateRangeCalendarUtilityClass, classes);
|
|
109
108
|
};
|
|
110
109
|
const DateRangeCalendar = /*#__PURE__*/React.forwardRef(function DateRangeCalendar(inProps, ref) {
|
|
111
|
-
const utils = useUtils();
|
|
112
|
-
const localeText = useLocaleText();
|
|
113
|
-
const now = useNow();
|
|
114
110
|
const props = useDateRangeCalendarDefaultizedProps(inProps, 'MuiDateRangeCalendar');
|
|
115
111
|
const shouldHavePreview = useMediaQuery(DEFAULT_DESKTOP_MODE_MEDIA_QUERY, {
|
|
116
112
|
defaultMatches: false
|
|
@@ -148,17 +144,27 @@ const DateRangeCalendar = /*#__PURE__*/React.forwardRef(function DateRangeCalend
|
|
|
148
144
|
autoFocus,
|
|
149
145
|
fixedWeekNumber,
|
|
150
146
|
disableDragEditing,
|
|
151
|
-
displayWeekNumber
|
|
147
|
+
displayWeekNumber,
|
|
148
|
+
timezone: timezoneProp
|
|
152
149
|
} = props,
|
|
153
150
|
other = _objectWithoutPropertiesLoose(props, _excluded);
|
|
154
|
-
const
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
151
|
+
const {
|
|
152
|
+
value,
|
|
153
|
+
handleValueChange,
|
|
154
|
+
timezone
|
|
155
|
+
} = useControlledValueWithTimezone({
|
|
159
156
|
name: 'DateRangeCalendar',
|
|
160
|
-
|
|
157
|
+
timezone: timezoneProp,
|
|
158
|
+
value: valueProp,
|
|
159
|
+
defaultValue,
|
|
160
|
+
onChange,
|
|
161
|
+
valueManager: rangeValueManager
|
|
161
162
|
});
|
|
163
|
+
const utils = useUtils();
|
|
164
|
+
const localeText = useLocaleText();
|
|
165
|
+
const now = useNow(timezone);
|
|
166
|
+
const slots = innerSlots ?? uncapitalizeObjectKeys(components);
|
|
167
|
+
const slotProps = innerSlotProps ?? componentsProps;
|
|
162
168
|
const {
|
|
163
169
|
rangePosition,
|
|
164
170
|
onRangePositionChange
|
|
@@ -185,8 +191,7 @@ const DateRangeCalendar = /*#__PURE__*/React.forwardRef(function DateRangeCalend
|
|
|
185
191
|
});
|
|
186
192
|
onRangePositionChange(nextSelection);
|
|
187
193
|
const isFullRangeSelected = rangePosition === 'end' && isRangeValid(utils, newRange);
|
|
188
|
-
|
|
189
|
-
onChange?.(newRange, isFullRangeSelected ? 'finish' : 'partial');
|
|
194
|
+
handleValueChange(newRange, isFullRangeSelected ? 'finish' : 'partial');
|
|
190
195
|
});
|
|
191
196
|
const handleDrop = useEventCallback(newDate => {
|
|
192
197
|
handleSelectedDayChange(newDate, undefined, true);
|
|
@@ -201,7 +206,8 @@ const DateRangeCalendar = /*#__PURE__*/React.forwardRef(function DateRangeCalend
|
|
|
201
206
|
onDrop: handleDrop,
|
|
202
207
|
onDatePositionChange: handleDatePositionChange,
|
|
203
208
|
utils,
|
|
204
|
-
dateRange: valueDayRange
|
|
209
|
+
dateRange: valueDayRange,
|
|
210
|
+
timezone
|
|
205
211
|
}),
|
|
206
212
|
{
|
|
207
213
|
isDragging,
|
|
@@ -248,7 +254,8 @@ const DateRangeCalendar = /*#__PURE__*/React.forwardRef(function DateRangeCalend
|
|
|
248
254
|
minDate,
|
|
249
255
|
onMonthChange,
|
|
250
256
|
reduceAnimations,
|
|
251
|
-
shouldDisableDate: wrappedShouldDisableDate
|
|
257
|
+
shouldDisableDate: wrappedShouldDisableDate,
|
|
258
|
+
timezone
|
|
252
259
|
});
|
|
253
260
|
const prevValue = React.useRef(null);
|
|
254
261
|
React.useEffect(() => {
|
|
@@ -283,11 +290,13 @@ const DateRangeCalendar = /*#__PURE__*/React.forwardRef(function DateRangeCalend
|
|
|
283
290
|
}, [changeMonth, calendarState.currentMonth, utils]);
|
|
284
291
|
const isNextMonthDisabled = useNextMonthDisabled(calendarState.currentMonth, {
|
|
285
292
|
disableFuture,
|
|
286
|
-
maxDate
|
|
293
|
+
maxDate,
|
|
294
|
+
timezone
|
|
287
295
|
});
|
|
288
296
|
const isPreviousMonthDisabled = usePreviousMonthDisabled(calendarState.currentMonth, {
|
|
289
297
|
disablePast,
|
|
290
|
-
minDate
|
|
298
|
+
minDate,
|
|
299
|
+
timezone
|
|
291
300
|
});
|
|
292
301
|
const baseDateValidationProps = {
|
|
293
302
|
disablePast,
|
|
@@ -415,7 +424,8 @@ const DateRangeCalendar = /*#__PURE__*/React.forwardRef(function DateRangeCalend
|
|
|
415
424
|
disableFuture: disableFuture,
|
|
416
425
|
reduceAnimations: reduceAnimations,
|
|
417
426
|
slots: slots,
|
|
418
|
-
slotProps: slotProps
|
|
427
|
+
slotProps: slotProps,
|
|
428
|
+
timezone: timezone
|
|
419
429
|
}) : /*#__PURE__*/_jsx(DateRangeCalendarArrowSwitcher, {
|
|
420
430
|
onGoToPrevious: selectPreviousMonth,
|
|
421
431
|
onGoToNext: selectNextMonth,
|
|
@@ -447,7 +457,8 @@ const DateRangeCalendar = /*#__PURE__*/React.forwardRef(function DateRangeCalend
|
|
|
447
457
|
slotProps: slotPropsForDayCalendar,
|
|
448
458
|
autoFocus: month === focusedMonth,
|
|
449
459
|
fixedWeekNumber: fixedWeekNumber,
|
|
450
|
-
displayWeekNumber: displayWeekNumber
|
|
460
|
+
displayWeekNumber: displayWeekNumber,
|
|
461
|
+
timezone: timezone
|
|
451
462
|
}), index)]
|
|
452
463
|
}, month))]
|
|
453
464
|
}));
|
|
@@ -636,6 +647,14 @@ process.env.NODE_ENV !== "production" ? DateRangeCalendar.propTypes = {
|
|
|
636
647
|
* The system prop that allows defining system overrides as well as additional CSS styles.
|
|
637
648
|
*/
|
|
638
649
|
sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),
|
|
650
|
+
/**
|
|
651
|
+
* Choose which timezone to use for the value.
|
|
652
|
+
* Example: "default", "system", "UTC", "America/New_York".
|
|
653
|
+
* If you pass values from other timezones to some props, they will be converted to this timezone before being used.
|
|
654
|
+
* @see See the {@link https://mui.com/x/react-date-pickers/timezone/ timezones documention} for more details.
|
|
655
|
+
* @default The timezone of the `value` or `defaultValue` prop is defined, 'default' otherwise.
|
|
656
|
+
*/
|
|
657
|
+
timezone: PropTypes.string,
|
|
639
658
|
/**
|
|
640
659
|
* The selected value.
|
|
641
660
|
* Used when the component is controlled.
|
|
@@ -2,13 +2,13 @@ import _extends from "@babel/runtime/helpers/esm/extends";
|
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import useEventCallback from '@mui/utils/useEventCallback';
|
|
4
4
|
import { isEndOfRange, isStartOfRange } from '../internal/utils/date-utils';
|
|
5
|
-
const resolveDateFromTarget = (target, utils) => {
|
|
5
|
+
const resolveDateFromTarget = (target, utils, timezone) => {
|
|
6
6
|
const timestampString = target.dataset.timestamp;
|
|
7
7
|
if (!timestampString) {
|
|
8
8
|
return null;
|
|
9
9
|
}
|
|
10
10
|
const timestamp = +timestampString;
|
|
11
|
-
return utils.
|
|
11
|
+
return utils.dateWithTimezone(new Date(timestamp).toISOString(), timezone);
|
|
12
12
|
};
|
|
13
13
|
const isSameAsDraggingDate = event => {
|
|
14
14
|
const timestampString = event.target.dataset.timestamp;
|
|
@@ -48,7 +48,8 @@ const useDragRangeEvents = ({
|
|
|
48
48
|
onDatePositionChange,
|
|
49
49
|
onDrop,
|
|
50
50
|
disableDragEditing,
|
|
51
|
-
dateRange
|
|
51
|
+
dateRange,
|
|
52
|
+
timezone
|
|
52
53
|
}) => {
|
|
53
54
|
const emptyDragImgRef = React.useRef(null);
|
|
54
55
|
React.useEffect(() => {
|
|
@@ -66,7 +67,7 @@ const useDragRangeEvents = ({
|
|
|
66
67
|
return shouldInitDragging && (isSelectedStartDate || isSelectedEndDate);
|
|
67
68
|
};
|
|
68
69
|
const handleDragStart = useEventCallback(event => {
|
|
69
|
-
const newDate = resolveDateFromTarget(event.target, utils);
|
|
70
|
+
const newDate = resolveDateFromTarget(event.target, utils, timezone);
|
|
70
71
|
if (!isElementDraggable(newDate)) {
|
|
71
72
|
return;
|
|
72
73
|
}
|
|
@@ -90,7 +91,7 @@ const useDragRangeEvents = ({
|
|
|
90
91
|
if (!target) {
|
|
91
92
|
return;
|
|
92
93
|
}
|
|
93
|
-
const newDate = resolveDateFromTarget(target, utils);
|
|
94
|
+
const newDate = resolveDateFromTarget(target, utils, timezone);
|
|
94
95
|
if (!isElementDraggable(newDate)) {
|
|
95
96
|
return;
|
|
96
97
|
}
|
|
@@ -109,14 +110,14 @@ const useDragRangeEvents = ({
|
|
|
109
110
|
event.preventDefault();
|
|
110
111
|
event.stopPropagation();
|
|
111
112
|
event.dataTransfer.dropEffect = 'move';
|
|
112
|
-
setRangeDragDay(resolveDateFromTarget(event.target, utils));
|
|
113
|
+
setRangeDragDay(resolveDateFromTarget(event.target, utils, timezone));
|
|
113
114
|
});
|
|
114
115
|
const handleTouchMove = useEventCallback(event => {
|
|
115
116
|
const target = resolveElementFromTouch(event);
|
|
116
117
|
if (!isDragging || !target) {
|
|
117
118
|
return;
|
|
118
119
|
}
|
|
119
|
-
const newDate = resolveDateFromTarget(target, utils);
|
|
120
|
+
const newDate = resolveDateFromTarget(target, utils, timezone);
|
|
120
121
|
if (newDate) {
|
|
121
122
|
setRangeDragDay(newDate);
|
|
122
123
|
}
|
|
@@ -149,7 +150,7 @@ const useDragRangeEvents = ({
|
|
|
149
150
|
|
|
150
151
|
// make sure the focused element is the element where touch ended
|
|
151
152
|
target.focus();
|
|
152
|
-
const newDate = resolveDateFromTarget(target, utils);
|
|
153
|
+
const newDate = resolveDateFromTarget(target, utils, timezone);
|
|
153
154
|
if (newDate) {
|
|
154
155
|
onDrop(newDate);
|
|
155
156
|
}
|
|
@@ -176,7 +177,7 @@ const useDragRangeEvents = ({
|
|
|
176
177
|
if (isSameAsDraggingDate(event)) {
|
|
177
178
|
return;
|
|
178
179
|
}
|
|
179
|
-
const newDate = resolveDateFromTarget(event.target, utils);
|
|
180
|
+
const newDate = resolveDateFromTarget(event.target, utils, timezone);
|
|
180
181
|
if (newDate) {
|
|
181
182
|
onDrop(newDate);
|
|
182
183
|
}
|
|
@@ -198,7 +199,8 @@ export const useDragRange = ({
|
|
|
198
199
|
utils,
|
|
199
200
|
onDatePositionChange,
|
|
200
201
|
onDrop,
|
|
201
|
-
dateRange
|
|
202
|
+
dateRange,
|
|
203
|
+
timezone
|
|
202
204
|
}) => {
|
|
203
205
|
const [isDragging, setIsDragging] = React.useState(false);
|
|
204
206
|
const [rangeDragDay, setRangeDragDay] = React.useState(null);
|
|
@@ -227,7 +229,8 @@ export const useDragRange = ({
|
|
|
227
229
|
isDragging,
|
|
228
230
|
setRangeDragDay: handleRangeDragDayChange,
|
|
229
231
|
disableDragEditing,
|
|
230
|
-
dateRange
|
|
232
|
+
dateRange,
|
|
233
|
+
timezone
|
|
231
234
|
});
|
|
232
235
|
return React.useMemo(() => _extends({
|
|
233
236
|
isDragging,
|
|
@@ -307,6 +307,14 @@ process.env.NODE_ENV !== "production" ? DateRangePicker.propTypes = {
|
|
|
307
307
|
* The system prop that allows defining system overrides as well as additional CSS styles.
|
|
308
308
|
*/
|
|
309
309
|
sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),
|
|
310
|
+
/**
|
|
311
|
+
* Choose which timezone to use for the value.
|
|
312
|
+
* Example: "default", "system", "UTC", "America/New_York".
|
|
313
|
+
* If you pass values from other timezones to some props, they will be converted to this timezone before being used.
|
|
314
|
+
* @see See the {@link https://mui.com/x/react-date-pickers/timezone/ timezones documention} for more details.
|
|
315
|
+
* @default The timezone of the `value` or `defaultValue` prop is defined, 'default' otherwise.
|
|
316
|
+
*/
|
|
317
|
+
timezone: PropTypes.string,
|
|
310
318
|
/**
|
|
311
319
|
* The selected value.
|
|
312
320
|
* Used when the component is controlled.
|