@mui/x-date-pickers-pro 8.0.0-alpha.4 → 8.0.0-alpha.6
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 +182 -0
- package/DateRangePicker/DateRangePickerToolbar.d.ts +1 -1
- package/DateRangePicker/DateRangePickerToolbar.js +2 -16
- package/DateTimeRangePicker/DateTimeRangePickerTabs.d.ts +2 -2
- package/DateTimeRangePicker/DateTimeRangePickerTabs.js +18 -18
- package/DateTimeRangePicker/DateTimeRangePickerToolbar.d.ts +2 -3
- package/DateTimeRangePicker/DateTimeRangePickerToolbar.js +49 -50
- package/DesktopDateRangePicker/DesktopDateRangePicker.types.d.ts +2 -2
- package/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.types.d.ts +2 -3
- package/MobileDateRangePicker/MobileDateRangePicker.types.d.ts +2 -2
- package/MobileDateTimeRangePicker/MobileDateTimeRangePicker.types.d.ts +2 -3
- package/StaticDateRangePicker/StaticDateRangePicker.types.d.ts +2 -2
- package/index.js +1 -1
- package/internals/hooks/models/useRangePicker.d.ts +2 -2
- package/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.js +13 -14
- package/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.types.d.ts +4 -4
- package/internals/hooks/useEnrichedRangePickerFieldProps.d.ts +2 -2
- package/internals/hooks/useEnrichedRangePickerFieldProps.js +8 -5
- package/internals/hooks/useMobileRangePicker/useMobileRangePicker.js +5 -7
- package/internals/hooks/useMobileRangePicker/useMobileRangePicker.types.d.ts +4 -4
- package/internals/hooks/useStaticRangePicker/useStaticRangePicker.types.d.ts +4 -4
- package/internals/utils/releaseInfo.js +1 -1
- package/modern/DateRangePicker/DateRangePickerToolbar.js +2 -16
- package/modern/DateTimeRangePicker/DateTimeRangePickerTabs.js +18 -18
- package/modern/DateTimeRangePicker/DateTimeRangePickerToolbar.js +49 -50
- package/modern/index.js +1 -1
- package/modern/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.js +13 -14
- package/modern/internals/hooks/useEnrichedRangePickerFieldProps.js +8 -5
- package/modern/internals/hooks/useMobileRangePicker/useMobileRangePicker.js +5 -7
- package/modern/internals/utils/releaseInfo.js +1 -1
- package/node/DateRangePicker/DateRangePickerToolbar.js +2 -16
- package/node/DateTimeRangePicker/DateTimeRangePickerTabs.js +17 -17
- package/node/DateTimeRangePicker/DateTimeRangePickerToolbar.js +48 -49
- package/node/index.js +1 -1
- package/node/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.js +13 -14
- package/node/internals/hooks/useEnrichedRangePickerFieldProps.js +8 -5
- package/node/internals/hooks/useMobileRangePicker/useMobileRangePicker.js +5 -7
- package/node/internals/utils/releaseInfo.js +1 -1
- package/package.json +4 -4
|
@@ -59,8 +59,6 @@ export const useDesktopRangePicker = _ref => {
|
|
|
59
59
|
fieldRef = endFieldRef;
|
|
60
60
|
}
|
|
61
61
|
const {
|
|
62
|
-
open,
|
|
63
|
-
actions,
|
|
64
62
|
layoutProps,
|
|
65
63
|
providerProps,
|
|
66
64
|
renderCurrentView,
|
|
@@ -79,8 +77,8 @@ export const useDesktopRangePicker = _ref => {
|
|
|
79
77
|
}
|
|
80
78
|
}));
|
|
81
79
|
React.useEffect(() => {
|
|
82
|
-
if (
|
|
83
|
-
initialView.current =
|
|
80
|
+
if (providerProps.contextValue.view) {
|
|
81
|
+
initialView.current = providerProps.contextValue.view;
|
|
84
82
|
}
|
|
85
83
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
86
84
|
}, []);
|
|
@@ -89,7 +87,9 @@ export const useDesktopRangePicker = _ref => {
|
|
|
89
87
|
if (fieldContainerRef.current?.contains(getActiveElement(document)) || popperRef.current?.contains(getActiveElement(document))) {
|
|
90
88
|
return;
|
|
91
89
|
}
|
|
92
|
-
|
|
90
|
+
|
|
91
|
+
// This direct access to `providerProps` will go away once the range fields stop having their views in a tooltip.
|
|
92
|
+
providerProps.privateContextValue.dismissViews();
|
|
93
93
|
});
|
|
94
94
|
};
|
|
95
95
|
const Field = slots.field;
|
|
@@ -124,8 +124,9 @@ export const useDesktopRangePicker = _ref => {
|
|
|
124
124
|
const enrichedFieldProps = useEnrichedRangePickerFieldProps({
|
|
125
125
|
variant: 'desktop',
|
|
126
126
|
fieldType,
|
|
127
|
-
|
|
128
|
-
|
|
127
|
+
// These direct access to `providerProps` will go away once the range fields handle the picker opening
|
|
128
|
+
open: providerProps.contextValue.open,
|
|
129
|
+
setOpen: providerProps.contextValue.setOpen,
|
|
129
130
|
readOnly,
|
|
130
131
|
disableOpenPicker,
|
|
131
132
|
label,
|
|
@@ -140,9 +141,9 @@ export const useDesktopRangePicker = _ref => {
|
|
|
140
141
|
startFieldRef,
|
|
141
142
|
endFieldRef,
|
|
142
143
|
singleInputFieldRef,
|
|
143
|
-
currentView:
|
|
144
|
+
currentView: providerProps.contextValue.view !== props.openTo ? providerProps.contextValue.view : undefined,
|
|
144
145
|
initialView: initialView.current ?? undefined,
|
|
145
|
-
onViewChange:
|
|
146
|
+
onViewChange: providerProps.contextValue.onViewChange
|
|
146
147
|
});
|
|
147
148
|
const slotPropsForLayout = _extends({}, slotProps, {
|
|
148
149
|
tabs: _extends({}, slotProps?.tabs, {
|
|
@@ -156,14 +157,12 @@ export const useDesktopRangePicker = _ref => {
|
|
|
156
157
|
});
|
|
157
158
|
const Layout = slots?.layout ?? PickersLayout;
|
|
158
159
|
const renderPicker = () => /*#__PURE__*/_jsxs(PickerProvider, _extends({}, providerProps, {
|
|
159
|
-
children: [/*#__PURE__*/_jsx(Field, _extends({}, enrichedFieldProps)), /*#__PURE__*/_jsx(PickersPopper,
|
|
160
|
+
children: [/*#__PURE__*/_jsx(Field, _extends({}, enrichedFieldProps)), /*#__PURE__*/_jsx(PickersPopper, {
|
|
160
161
|
role: "tooltip",
|
|
161
162
|
placement: "bottom-start",
|
|
162
163
|
containerRef: popperRef,
|
|
163
164
|
anchorEl: anchorRef.current,
|
|
164
|
-
onBlur: handleBlur
|
|
165
|
-
}, actions, {
|
|
166
|
-
open: open,
|
|
165
|
+
onBlur: handleBlur,
|
|
167
166
|
slots: slots,
|
|
168
167
|
slotProps: slotProps,
|
|
169
168
|
shouldRestoreFocus: shouldRestoreFocus,
|
|
@@ -173,7 +172,7 @@ export const useDesktopRangePicker = _ref => {
|
|
|
173
172
|
slotProps: slotPropsForLayout,
|
|
174
173
|
children: renderCurrentView()
|
|
175
174
|
}))
|
|
176
|
-
})
|
|
175
|
+
})]
|
|
177
176
|
}));
|
|
178
177
|
return {
|
|
179
178
|
renderPicker
|
|
@@ -10,7 +10,7 @@ import { onSpaceOrEnter } from '@mui/x-date-pickers/internals';
|
|
|
10
10
|
const useMultiInputFieldSlotProps = ({
|
|
11
11
|
variant,
|
|
12
12
|
open,
|
|
13
|
-
|
|
13
|
+
setOpen,
|
|
14
14
|
readOnly,
|
|
15
15
|
labelId,
|
|
16
16
|
disableOpenPicker,
|
|
@@ -54,14 +54,16 @@ const useMultiInputFieldSlotProps = ({
|
|
|
54
54
|
event.stopPropagation();
|
|
55
55
|
onRangePositionChange('start');
|
|
56
56
|
if (!readOnly && !disableOpenPicker) {
|
|
57
|
-
|
|
57
|
+
event.preventDefault();
|
|
58
|
+
setOpen(true);
|
|
58
59
|
}
|
|
59
60
|
};
|
|
60
61
|
const openRangeEndSelection = event => {
|
|
61
62
|
event.stopPropagation();
|
|
62
63
|
onRangePositionChange('end');
|
|
63
64
|
if (!readOnly && !disableOpenPicker) {
|
|
64
|
-
|
|
65
|
+
event.preventDefault();
|
|
66
|
+
setOpen(true);
|
|
65
67
|
}
|
|
66
68
|
};
|
|
67
69
|
const handleFocusStart = () => {
|
|
@@ -148,7 +150,7 @@ const useMultiInputFieldSlotProps = ({
|
|
|
148
150
|
const useSingleInputFieldSlotProps = ({
|
|
149
151
|
variant,
|
|
150
152
|
open,
|
|
151
|
-
|
|
153
|
+
setOpen,
|
|
152
154
|
readOnly,
|
|
153
155
|
labelId,
|
|
154
156
|
disableOpenPicker,
|
|
@@ -197,7 +199,8 @@ const useSingleInputFieldSlotProps = ({
|
|
|
197
199
|
const openPicker = event => {
|
|
198
200
|
event.stopPropagation();
|
|
199
201
|
if (!readOnly && !disableOpenPicker) {
|
|
200
|
-
|
|
202
|
+
event.preventDefault();
|
|
203
|
+
setOpen(true);
|
|
201
204
|
}
|
|
202
205
|
};
|
|
203
206
|
const slots = _extends({}, fieldProps.slots, {
|
|
@@ -57,8 +57,6 @@ export const useMobileRangePicker = _ref => {
|
|
|
57
57
|
fieldRef = endFieldRef;
|
|
58
58
|
}
|
|
59
59
|
const {
|
|
60
|
-
open,
|
|
61
|
-
actions,
|
|
62
60
|
layoutProps,
|
|
63
61
|
providerProps,
|
|
64
62
|
renderCurrentView,
|
|
@@ -106,8 +104,9 @@ export const useMobileRangePicker = _ref => {
|
|
|
106
104
|
const enrichedFieldProps = useEnrichedRangePickerFieldProps({
|
|
107
105
|
variant: 'mobile',
|
|
108
106
|
fieldType,
|
|
109
|
-
|
|
110
|
-
|
|
107
|
+
// These direct access to `providerProps` will go away once the range fields handle the picker opening
|
|
108
|
+
open: providerProps.contextValue.open,
|
|
109
|
+
setOpen: providerProps.contextValue.setOpen,
|
|
111
110
|
readOnly,
|
|
112
111
|
labelId,
|
|
113
112
|
disableOpenPicker,
|
|
@@ -156,8 +155,7 @@ export const useMobileRangePicker = _ref => {
|
|
|
156
155
|
}, innerSlotProps?.mobilePaper)
|
|
157
156
|
});
|
|
158
157
|
const renderPicker = () => /*#__PURE__*/_jsxs(PickerProvider, _extends({}, providerProps, {
|
|
159
|
-
children: [/*#__PURE__*/_jsx(Field, _extends({}, enrichedFieldProps)), /*#__PURE__*/_jsx(PickersModalDialog,
|
|
160
|
-
open: open,
|
|
158
|
+
children: [/*#__PURE__*/_jsx(Field, _extends({}, enrichedFieldProps)), /*#__PURE__*/_jsx(PickersModalDialog, {
|
|
161
159
|
slots: slots,
|
|
162
160
|
slotProps: slotProps,
|
|
163
161
|
children: /*#__PURE__*/_jsx(Layout, _extends({}, layoutProps, slotProps?.layout, {
|
|
@@ -165,7 +163,7 @@ export const useMobileRangePicker = _ref => {
|
|
|
165
163
|
slotProps: slotPropsForLayout,
|
|
166
164
|
children: renderCurrentView()
|
|
167
165
|
}))
|
|
168
|
-
})
|
|
166
|
+
})]
|
|
169
167
|
}));
|
|
170
168
|
return {
|
|
171
169
|
renderPicker
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ponyfillGlobal } from '@mui/utils';
|
|
2
2
|
export const getReleaseInfo = () => {
|
|
3
|
-
const releaseInfo = "
|
|
3
|
+
const releaseInfo = "MTczNTE2NDAwMDAwMA==";
|
|
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
|
|
@@ -19,7 +19,7 @@ var _internals = require("@mui/x-date-pickers/internals");
|
|
|
19
19
|
var _hooks = require("@mui/x-date-pickers/hooks");
|
|
20
20
|
var _dateRangePickerToolbarClasses = require("./dateRangePickerToolbarClasses");
|
|
21
21
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
22
|
-
const _excluded = ["value", "rangePosition", "onRangePositionChange", "toolbarFormat", "className", "classes"
|
|
22
|
+
const _excluded = ["value", "rangePosition", "onRangePositionChange", "toolbarFormat", "className", "classes"];
|
|
23
23
|
const useUtilityClasses = classes => {
|
|
24
24
|
const slots = {
|
|
25
25
|
root: ['root'],
|
|
@@ -110,12 +110,6 @@ process.env.NODE_ENV !== "production" ? DateRangePickerToolbar.propTypes = {
|
|
|
110
110
|
*/
|
|
111
111
|
hidden: _propTypes.default.bool,
|
|
112
112
|
onRangePositionChange: _propTypes.default.func.isRequired,
|
|
113
|
-
/**
|
|
114
|
-
* Callback called when a toolbar is clicked
|
|
115
|
-
* @template TView
|
|
116
|
-
* @param {TView} view The view to open
|
|
117
|
-
*/
|
|
118
|
-
onViewChange: _propTypes.default.func.isRequired,
|
|
119
113
|
rangePosition: _propTypes.default.oneOf(['end', 'start']).isRequired,
|
|
120
114
|
/**
|
|
121
115
|
* The system prop that allows defining system overrides as well as additional CSS styles.
|
|
@@ -131,13 +125,5 @@ process.env.NODE_ENV !== "production" ? DateRangePickerToolbar.propTypes = {
|
|
|
131
125
|
* @default "––"
|
|
132
126
|
*/
|
|
133
127
|
toolbarPlaceholder: _propTypes.default.node,
|
|
134
|
-
value: _propTypes.default.arrayOf(_propTypes.default.object).isRequired
|
|
135
|
-
/**
|
|
136
|
-
* Currently visible picker view.
|
|
137
|
-
*/
|
|
138
|
-
view: _propTypes.default.oneOf(['day']).isRequired,
|
|
139
|
-
/**
|
|
140
|
-
* Available views.
|
|
141
|
-
*/
|
|
142
|
-
views: _propTypes.default.arrayOf(_propTypes.default.oneOf(['day'])).isRequired
|
|
128
|
+
value: _propTypes.default.arrayOf(_propTypes.default.object).isRequired
|
|
143
129
|
} : void 0;
|
|
@@ -76,9 +76,7 @@ const DateTimeRangePickerTabs = exports.DateTimeRangePickerTabs = function DateT
|
|
|
76
76
|
});
|
|
77
77
|
const {
|
|
78
78
|
dateIcon = /*#__PURE__*/(0, _jsxRuntime.jsx)(_icons.DateRangeIcon, {}),
|
|
79
|
-
onViewChange,
|
|
80
79
|
timeIcon = /*#__PURE__*/(0, _jsxRuntime.jsx)(_icons.TimeIcon, {}),
|
|
81
|
-
view,
|
|
82
80
|
hidden = typeof window === 'undefined' || window.innerHeight < 667,
|
|
83
81
|
rangePosition,
|
|
84
82
|
onRangePositionChange,
|
|
@@ -90,8 +88,12 @@ const DateTimeRangePickerTabs = exports.DateTimeRangePickerTabs = function DateT
|
|
|
90
88
|
const {
|
|
91
89
|
ownerState
|
|
92
90
|
} = (0, _internals.usePickerPrivateContext)();
|
|
91
|
+
const {
|
|
92
|
+
view,
|
|
93
|
+
onViewChange
|
|
94
|
+
} = (0, _hooks.usePickerContext)();
|
|
93
95
|
const classes = useUtilityClasses(classesProp);
|
|
94
|
-
const value = React.useMemo(() => viewToTab(view, rangePosition), [view, rangePosition]);
|
|
96
|
+
const value = React.useMemo(() => view == null ? null : viewToTab(view, rangePosition), [view, rangePosition]);
|
|
95
97
|
const isPreviousHidden = value === 'start-date';
|
|
96
98
|
const isNextHidden = value === 'end-time';
|
|
97
99
|
const tabLabel = React.useMemo(() => {
|
|
@@ -116,18 +118,26 @@ const DateTimeRangePickerTabs = exports.DateTimeRangePickerTabs = function DateT
|
|
|
116
118
|
}
|
|
117
119
|
});
|
|
118
120
|
const changeToPreviousTab = (0, _useEventCallback.default)(() => {
|
|
119
|
-
const previousTab = tabOptions[tabOptions.indexOf(value) - 1];
|
|
121
|
+
const previousTab = value == null ? tabOptions[0] : tabOptions[tabOptions.indexOf(value) - 1];
|
|
120
122
|
onViewChange(tabToView(previousTab));
|
|
121
123
|
handleRangePositionChange(previousTab);
|
|
122
124
|
});
|
|
123
125
|
const changeToNextTab = (0, _useEventCallback.default)(() => {
|
|
124
|
-
const nextTab = tabOptions[tabOptions.indexOf(value) + 1];
|
|
126
|
+
const nextTab = value == null ? tabOptions[0] : tabOptions[tabOptions.indexOf(value) + 1];
|
|
125
127
|
onViewChange(tabToView(nextTab));
|
|
126
128
|
handleRangePositionChange(nextTab);
|
|
127
129
|
});
|
|
128
130
|
if (hidden) {
|
|
129
131
|
return null;
|
|
130
132
|
}
|
|
133
|
+
let startIcon;
|
|
134
|
+
if (view == null) {
|
|
135
|
+
startIcon = null;
|
|
136
|
+
} else if ((0, _internals.isDatePickerView)(view)) {
|
|
137
|
+
startIcon = dateIcon;
|
|
138
|
+
} else {
|
|
139
|
+
startIcon = timeIcon;
|
|
140
|
+
}
|
|
131
141
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(DateTimeRangePickerTabsRoot, {
|
|
132
142
|
ownerState: ownerState,
|
|
133
143
|
className: (0, _clsx.default)(classes.root, className),
|
|
@@ -140,7 +150,7 @@ const DateTimeRangePickerTabs = exports.DateTimeRangePickerTabs = function DateT
|
|
|
140
150
|
}) : /*#__PURE__*/(0, _jsxRuntime.jsx)(DateTimeRangePickerTabFiller, {
|
|
141
151
|
className: classes.filler
|
|
142
152
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(DateTimeRangePickerTab, {
|
|
143
|
-
startIcon:
|
|
153
|
+
startIcon: startIcon,
|
|
144
154
|
className: classes.tabButton,
|
|
145
155
|
size: "large",
|
|
146
156
|
children: tabLabel
|
|
@@ -175,12 +185,6 @@ process.env.NODE_ENV !== "production" ? DateTimeRangePickerTabs.propTypes = {
|
|
|
175
185
|
*/
|
|
176
186
|
hidden: _propTypes.default.bool,
|
|
177
187
|
onRangePositionChange: _propTypes.default.func.isRequired,
|
|
178
|
-
/**
|
|
179
|
-
* Callback called when a tab is clicked.
|
|
180
|
-
* @template TView
|
|
181
|
-
* @param {TView} view The view to open
|
|
182
|
-
*/
|
|
183
|
-
onViewChange: _propTypes.default.func.isRequired,
|
|
184
188
|
rangePosition: _propTypes.default.oneOf(['end', 'start']).isRequired,
|
|
185
189
|
/**
|
|
186
190
|
* The system prop that allows defining system overrides as well as additional CSS styles.
|
|
@@ -190,9 +194,5 @@ process.env.NODE_ENV !== "production" ? DateTimeRangePickerTabs.propTypes = {
|
|
|
190
194
|
* Time tab icon.
|
|
191
195
|
* @default TimeIcon
|
|
192
196
|
*/
|
|
193
|
-
timeIcon: _propTypes.default.element
|
|
194
|
-
/**
|
|
195
|
-
* Currently visible picker view.
|
|
196
|
-
*/
|
|
197
|
-
view: _propTypes.default.oneOf(['day', 'hours', 'meridiem', 'minutes', 'month', 'seconds', 'year']).isRequired
|
|
197
|
+
timeIcon: _propTypes.default.element
|
|
198
198
|
} : void 0;
|
|
@@ -20,7 +20,7 @@ var _DateTimePicker = require("@mui/x-date-pickers/DateTimePicker");
|
|
|
20
20
|
var _dateTimeRangePickerToolbarClasses = require("./dateTimeRangePickerToolbarClasses");
|
|
21
21
|
var _dateRangeManager = require("../internals/utils/date-range-manager");
|
|
22
22
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
23
|
-
const _excluded = ["value", "rangePosition", "onRangePositionChange", "className", "classes", "
|
|
23
|
+
const _excluded = ["value", "rangePosition", "onRangePositionChange", "className", "classes", "onChange", "classes", "isLandscape", "ampm", "hidden", "toolbarFormat", "toolbarPlaceholder", "titleId", "sx"];
|
|
24
24
|
const useUtilityClasses = classes => {
|
|
25
25
|
const slots = {
|
|
26
26
|
root: ['root'],
|
|
@@ -62,11 +62,8 @@ const DateTimeRangePickerToolbar = exports.DateTimeRangePickerToolbar = /*#__PUR
|
|
|
62
62
|
onRangePositionChange,
|
|
63
63
|
className,
|
|
64
64
|
classes: classesProp,
|
|
65
|
-
onViewChange,
|
|
66
65
|
onChange,
|
|
67
|
-
view,
|
|
68
66
|
isLandscape,
|
|
69
|
-
views,
|
|
70
67
|
ampm,
|
|
71
68
|
hidden,
|
|
72
69
|
toolbarFormat,
|
|
@@ -77,7 +74,10 @@ const DateTimeRangePickerToolbar = exports.DateTimeRangePickerToolbar = /*#__PUR
|
|
|
77
74
|
other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
|
|
78
75
|
const {
|
|
79
76
|
disabled,
|
|
80
|
-
readOnly
|
|
77
|
+
readOnly,
|
|
78
|
+
view,
|
|
79
|
+
onViewChange,
|
|
80
|
+
views
|
|
81
81
|
} = (0, _hooks.usePickerContext)();
|
|
82
82
|
const translations = (0, _hooks.usePickerTranslations)();
|
|
83
83
|
const ownerState = (0, _internals.useToolbarOwnerState)();
|
|
@@ -92,24 +92,6 @@ const DateTimeRangePickerToolbar = exports.DateTimeRangePickerToolbar = /*#__PUR
|
|
|
92
92
|
toolbarFormat,
|
|
93
93
|
toolbarPlaceholder
|
|
94
94
|
};
|
|
95
|
-
const handleStartRangeViewChange = React.useCallback(newView => {
|
|
96
|
-
if (newView === 'year' || newView === 'month') {
|
|
97
|
-
return;
|
|
98
|
-
}
|
|
99
|
-
if (rangePosition !== 'start') {
|
|
100
|
-
onRangePositionChange('start');
|
|
101
|
-
}
|
|
102
|
-
onViewChange(newView);
|
|
103
|
-
}, [onRangePositionChange, onViewChange, rangePosition]);
|
|
104
|
-
const handleEndRangeViewChange = React.useCallback(newView => {
|
|
105
|
-
if (newView === 'year' || newView === 'month') {
|
|
106
|
-
return;
|
|
107
|
-
}
|
|
108
|
-
if (rangePosition !== 'end') {
|
|
109
|
-
onRangePositionChange('end');
|
|
110
|
-
}
|
|
111
|
-
onViewChange(newView);
|
|
112
|
-
}, [onRangePositionChange, onViewChange, rangePosition]);
|
|
113
95
|
const handleOnChange = React.useCallback(newDate => {
|
|
114
96
|
const {
|
|
115
97
|
nextSelection,
|
|
@@ -124,37 +106,68 @@ const DateTimeRangePickerToolbar = exports.DateTimeRangePickerToolbar = /*#__PUR
|
|
|
124
106
|
onRangePositionChange(nextSelection);
|
|
125
107
|
onChange(newRange);
|
|
126
108
|
}, [onChange, onRangePositionChange, props.value, rangePosition, utils]);
|
|
109
|
+
const startOverrides = React.useMemo(() => {
|
|
110
|
+
const handleStartRangeViewChange = newView => {
|
|
111
|
+
if (newView === 'year' || newView === 'month') {
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
if (rangePosition !== 'start') {
|
|
115
|
+
onRangePositionChange('start');
|
|
116
|
+
}
|
|
117
|
+
onViewChange(newView);
|
|
118
|
+
};
|
|
119
|
+
return {
|
|
120
|
+
forceDesktopVariant: true,
|
|
121
|
+
onViewChange: handleStartRangeViewChange,
|
|
122
|
+
view: rangePosition === 'start' ? view : null
|
|
123
|
+
};
|
|
124
|
+
}, [rangePosition, view, onRangePositionChange, onViewChange]);
|
|
125
|
+
const endOverrides = React.useMemo(() => {
|
|
126
|
+
const handleEndRangeViewChange = newView => {
|
|
127
|
+
if (newView === 'year' || newView === 'month') {
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
if (rangePosition !== 'end') {
|
|
131
|
+
onRangePositionChange('end');
|
|
132
|
+
}
|
|
133
|
+
onViewChange(newView);
|
|
134
|
+
};
|
|
135
|
+
return {
|
|
136
|
+
forceDesktopVariant: true,
|
|
137
|
+
onViewChange: handleEndRangeViewChange,
|
|
138
|
+
view: rangePosition === 'end' ? view : null
|
|
139
|
+
};
|
|
140
|
+
}, [rangePosition, view, onRangePositionChange, onViewChange]);
|
|
127
141
|
if (hidden) {
|
|
128
142
|
return null;
|
|
129
143
|
}
|
|
130
|
-
return /*#__PURE__*/(0, _jsxRuntime.
|
|
144
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(DateTimeRangePickerToolbarRoot, (0, _extends2.default)({
|
|
131
145
|
className: (0, _clsx.default)(classes.root, className),
|
|
132
146
|
ownerState: ownerState,
|
|
133
147
|
ref: ref,
|
|
134
148
|
sx: sx
|
|
135
149
|
}, other, {
|
|
136
|
-
children: /*#__PURE__*/(0, _jsxRuntime.
|
|
137
|
-
value:
|
|
138
|
-
children:
|
|
150
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_internals.DateTimePickerToolbarOverrideContext.Provider, {
|
|
151
|
+
value: startOverrides,
|
|
152
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(DateTimeRangePickerToolbarStart, (0, _extends2.default)({
|
|
139
153
|
value: start,
|
|
140
|
-
onViewChange: handleStartRangeViewChange,
|
|
141
154
|
toolbarTitle: translations.start,
|
|
142
155
|
ownerState: ownerState,
|
|
143
|
-
view: rangePosition === 'start' ? view : undefined,
|
|
144
156
|
className: classes.startToolbar,
|
|
145
157
|
onChange: handleOnChange,
|
|
146
158
|
titleId: titleId ? `${titleId}-start-toolbar` : undefined
|
|
147
|
-
}, commonToolbarProps))
|
|
159
|
+
}, commonToolbarProps))
|
|
160
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_internals.DateTimePickerToolbarOverrideContext.Provider, {
|
|
161
|
+
value: endOverrides,
|
|
162
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(DateTimeRangePickerToolbarEnd, (0, _extends2.default)({
|
|
148
163
|
value: end,
|
|
149
|
-
onViewChange: handleEndRangeViewChange,
|
|
150
164
|
toolbarTitle: translations.end,
|
|
151
165
|
ownerState: ownerState,
|
|
152
|
-
view: rangePosition === 'end' ? view : undefined,
|
|
153
166
|
className: classes.endToolbar,
|
|
154
167
|
onChange: handleOnChange,
|
|
155
168
|
titleId: titleId ? `${titleId}-end-toolbar` : undefined
|
|
156
|
-
}, commonToolbarProps))
|
|
157
|
-
})
|
|
169
|
+
}, commonToolbarProps))
|
|
170
|
+
})]
|
|
158
171
|
}));
|
|
159
172
|
});
|
|
160
173
|
process.env.NODE_ENV !== "production" ? DateTimeRangePickerToolbar.propTypes = {
|
|
@@ -176,12 +189,6 @@ process.env.NODE_ENV !== "production" ? DateTimeRangePickerToolbar.propTypes = {
|
|
|
176
189
|
isLandscape: _propTypes.default.bool.isRequired,
|
|
177
190
|
onChange: _propTypes.default.func.isRequired,
|
|
178
191
|
onRangePositionChange: _propTypes.default.func.isRequired,
|
|
179
|
-
/**
|
|
180
|
-
* Callback called when a toolbar is clicked
|
|
181
|
-
* @template TView
|
|
182
|
-
* @param {TView} view The view to open
|
|
183
|
-
*/
|
|
184
|
-
onViewChange: _propTypes.default.func.isRequired,
|
|
185
192
|
rangePosition: _propTypes.default.oneOf(['end', 'start']).isRequired,
|
|
186
193
|
/**
|
|
187
194
|
* The system prop that allows defining system overrides as well as additional CSS styles.
|
|
@@ -197,13 +204,5 @@ process.env.NODE_ENV !== "production" ? DateTimeRangePickerToolbar.propTypes = {
|
|
|
197
204
|
* @default "––"
|
|
198
205
|
*/
|
|
199
206
|
toolbarPlaceholder: _propTypes.default.node,
|
|
200
|
-
value: _propTypes.default.arrayOf(_propTypes.default.object).isRequired
|
|
201
|
-
/**
|
|
202
|
-
* Currently visible picker view.
|
|
203
|
-
*/
|
|
204
|
-
view: _propTypes.default.oneOf(['day', 'hours', 'meridiem', 'minutes', 'seconds']).isRequired,
|
|
205
|
-
/**
|
|
206
|
-
* Available views.
|
|
207
|
-
*/
|
|
208
|
-
views: _propTypes.default.arrayOf(_propTypes.default.oneOf(['day', 'hours', 'meridiem', 'minutes', 'seconds']).isRequired).isRequired
|
|
207
|
+
value: _propTypes.default.arrayOf(_propTypes.default.object).isRequired
|
|
209
208
|
} : void 0;
|
package/node/index.js
CHANGED
|
@@ -67,8 +67,6 @@ const useDesktopRangePicker = _ref => {
|
|
|
67
67
|
fieldRef = endFieldRef;
|
|
68
68
|
}
|
|
69
69
|
const {
|
|
70
|
-
open,
|
|
71
|
-
actions,
|
|
72
70
|
layoutProps,
|
|
73
71
|
providerProps,
|
|
74
72
|
renderCurrentView,
|
|
@@ -87,8 +85,8 @@ const useDesktopRangePicker = _ref => {
|
|
|
87
85
|
}
|
|
88
86
|
}));
|
|
89
87
|
React.useEffect(() => {
|
|
90
|
-
if (
|
|
91
|
-
initialView.current =
|
|
88
|
+
if (providerProps.contextValue.view) {
|
|
89
|
+
initialView.current = providerProps.contextValue.view;
|
|
92
90
|
}
|
|
93
91
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
94
92
|
}, []);
|
|
@@ -97,7 +95,9 @@ const useDesktopRangePicker = _ref => {
|
|
|
97
95
|
if (fieldContainerRef.current?.contains((0, _internals.getActiveElement)(document)) || popperRef.current?.contains((0, _internals.getActiveElement)(document))) {
|
|
98
96
|
return;
|
|
99
97
|
}
|
|
100
|
-
|
|
98
|
+
|
|
99
|
+
// This direct access to `providerProps` will go away once the range fields stop having their views in a tooltip.
|
|
100
|
+
providerProps.privateContextValue.dismissViews();
|
|
101
101
|
});
|
|
102
102
|
};
|
|
103
103
|
const Field = slots.field;
|
|
@@ -132,8 +132,9 @@ const useDesktopRangePicker = _ref => {
|
|
|
132
132
|
const enrichedFieldProps = (0, _useEnrichedRangePickerFieldProps.useEnrichedRangePickerFieldProps)({
|
|
133
133
|
variant: 'desktop',
|
|
134
134
|
fieldType,
|
|
135
|
-
|
|
136
|
-
|
|
135
|
+
// These direct access to `providerProps` will go away once the range fields handle the picker opening
|
|
136
|
+
open: providerProps.contextValue.open,
|
|
137
|
+
setOpen: providerProps.contextValue.setOpen,
|
|
137
138
|
readOnly,
|
|
138
139
|
disableOpenPicker,
|
|
139
140
|
label,
|
|
@@ -148,9 +149,9 @@ const useDesktopRangePicker = _ref => {
|
|
|
148
149
|
startFieldRef,
|
|
149
150
|
endFieldRef,
|
|
150
151
|
singleInputFieldRef,
|
|
151
|
-
currentView:
|
|
152
|
+
currentView: providerProps.contextValue.view !== props.openTo ? providerProps.contextValue.view : undefined,
|
|
152
153
|
initialView: initialView.current ?? undefined,
|
|
153
|
-
onViewChange:
|
|
154
|
+
onViewChange: providerProps.contextValue.onViewChange
|
|
154
155
|
});
|
|
155
156
|
const slotPropsForLayout = (0, _extends2.default)({}, slotProps, {
|
|
156
157
|
tabs: (0, _extends2.default)({}, slotProps?.tabs, {
|
|
@@ -164,14 +165,12 @@ const useDesktopRangePicker = _ref => {
|
|
|
164
165
|
});
|
|
165
166
|
const Layout = slots?.layout ?? _PickersLayout.PickersLayout;
|
|
166
167
|
const renderPicker = () => /*#__PURE__*/(0, _jsxRuntime.jsxs)(_internals.PickerProvider, (0, _extends2.default)({}, providerProps, {
|
|
167
|
-
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(Field, (0, _extends2.default)({}, enrichedFieldProps)), /*#__PURE__*/(0, _jsxRuntime.jsx)(_internals.PickersPopper,
|
|
168
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(Field, (0, _extends2.default)({}, enrichedFieldProps)), /*#__PURE__*/(0, _jsxRuntime.jsx)(_internals.PickersPopper, {
|
|
168
169
|
role: "tooltip",
|
|
169
170
|
placement: "bottom-start",
|
|
170
171
|
containerRef: popperRef,
|
|
171
172
|
anchorEl: anchorRef.current,
|
|
172
|
-
onBlur: handleBlur
|
|
173
|
-
}, actions, {
|
|
174
|
-
open: open,
|
|
173
|
+
onBlur: handleBlur,
|
|
175
174
|
slots: slots,
|
|
176
175
|
slotProps: slotProps,
|
|
177
176
|
shouldRestoreFocus: shouldRestoreFocus,
|
|
@@ -181,7 +180,7 @@ const useDesktopRangePicker = _ref => {
|
|
|
181
180
|
slotProps: slotPropsForLayout,
|
|
182
181
|
children: renderCurrentView()
|
|
183
182
|
}))
|
|
184
|
-
})
|
|
183
|
+
})]
|
|
185
184
|
}));
|
|
186
185
|
return {
|
|
187
186
|
renderPicker
|
|
@@ -18,7 +18,7 @@ const _excluded = ["clearable", "onClear"];
|
|
|
18
18
|
const useMultiInputFieldSlotProps = ({
|
|
19
19
|
variant,
|
|
20
20
|
open,
|
|
21
|
-
|
|
21
|
+
setOpen,
|
|
22
22
|
readOnly,
|
|
23
23
|
labelId,
|
|
24
24
|
disableOpenPicker,
|
|
@@ -62,14 +62,16 @@ const useMultiInputFieldSlotProps = ({
|
|
|
62
62
|
event.stopPropagation();
|
|
63
63
|
onRangePositionChange('start');
|
|
64
64
|
if (!readOnly && !disableOpenPicker) {
|
|
65
|
-
|
|
65
|
+
event.preventDefault();
|
|
66
|
+
setOpen(true);
|
|
66
67
|
}
|
|
67
68
|
};
|
|
68
69
|
const openRangeEndSelection = event => {
|
|
69
70
|
event.stopPropagation();
|
|
70
71
|
onRangePositionChange('end');
|
|
71
72
|
if (!readOnly && !disableOpenPicker) {
|
|
72
|
-
|
|
73
|
+
event.preventDefault();
|
|
74
|
+
setOpen(true);
|
|
73
75
|
}
|
|
74
76
|
};
|
|
75
77
|
const handleFocusStart = () => {
|
|
@@ -156,7 +158,7 @@ const useMultiInputFieldSlotProps = ({
|
|
|
156
158
|
const useSingleInputFieldSlotProps = ({
|
|
157
159
|
variant,
|
|
158
160
|
open,
|
|
159
|
-
|
|
161
|
+
setOpen,
|
|
160
162
|
readOnly,
|
|
161
163
|
labelId,
|
|
162
164
|
disableOpenPicker,
|
|
@@ -205,7 +207,8 @@ const useSingleInputFieldSlotProps = ({
|
|
|
205
207
|
const openPicker = event => {
|
|
206
208
|
event.stopPropagation();
|
|
207
209
|
if (!readOnly && !disableOpenPicker) {
|
|
208
|
-
|
|
210
|
+
event.preventDefault();
|
|
211
|
+
setOpen(true);
|
|
209
212
|
}
|
|
210
213
|
};
|
|
211
214
|
const slots = (0, _extends2.default)({}, fieldProps.slots, {
|
|
@@ -65,8 +65,6 @@ const useMobileRangePicker = _ref => {
|
|
|
65
65
|
fieldRef = endFieldRef;
|
|
66
66
|
}
|
|
67
67
|
const {
|
|
68
|
-
open,
|
|
69
|
-
actions,
|
|
70
68
|
layoutProps,
|
|
71
69
|
providerProps,
|
|
72
70
|
renderCurrentView,
|
|
@@ -114,8 +112,9 @@ const useMobileRangePicker = _ref => {
|
|
|
114
112
|
const enrichedFieldProps = (0, _useEnrichedRangePickerFieldProps.useEnrichedRangePickerFieldProps)({
|
|
115
113
|
variant: 'mobile',
|
|
116
114
|
fieldType,
|
|
117
|
-
|
|
118
|
-
|
|
115
|
+
// These direct access to `providerProps` will go away once the range fields handle the picker opening
|
|
116
|
+
open: providerProps.contextValue.open,
|
|
117
|
+
setOpen: providerProps.contextValue.setOpen,
|
|
119
118
|
readOnly,
|
|
120
119
|
labelId,
|
|
121
120
|
disableOpenPicker,
|
|
@@ -164,8 +163,7 @@ const useMobileRangePicker = _ref => {
|
|
|
164
163
|
}, innerSlotProps?.mobilePaper)
|
|
165
164
|
});
|
|
166
165
|
const renderPicker = () => /*#__PURE__*/(0, _jsxRuntime.jsxs)(_internals.PickerProvider, (0, _extends2.default)({}, providerProps, {
|
|
167
|
-
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(Field, (0, _extends2.default)({}, enrichedFieldProps)), /*#__PURE__*/(0, _jsxRuntime.jsx)(_internals.PickersModalDialog,
|
|
168
|
-
open: open,
|
|
166
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(Field, (0, _extends2.default)({}, enrichedFieldProps)), /*#__PURE__*/(0, _jsxRuntime.jsx)(_internals.PickersModalDialog, {
|
|
169
167
|
slots: slots,
|
|
170
168
|
slotProps: slotProps,
|
|
171
169
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(Layout, (0, _extends2.default)({}, layoutProps, slotProps?.layout, {
|
|
@@ -173,7 +171,7 @@ const useMobileRangePicker = _ref => {
|
|
|
173
171
|
slotProps: slotPropsForLayout,
|
|
174
172
|
children: renderCurrentView()
|
|
175
173
|
}))
|
|
176
|
-
})
|
|
174
|
+
})]
|
|
177
175
|
}));
|
|
178
176
|
return {
|
|
179
177
|
renderPicker
|
|
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.getReleaseInfo = void 0;
|
|
7
7
|
var _utils = require("@mui/utils");
|
|
8
8
|
const getReleaseInfo = () => {
|
|
9
|
-
const releaseInfo = "
|
|
9
|
+
const releaseInfo = "MTczNTE2NDAwMDAwMA==";
|
|
10
10
|
if (process.env.NODE_ENV !== 'production') {
|
|
11
11
|
// A simple hack to set the value in the test environment (has no build step).
|
|
12
12
|
// eslint-disable-next-line no-useless-concat
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mui/x-date-pickers-pro",
|
|
3
|
-
"version": "8.0.0-alpha.
|
|
3
|
+
"version": "8.0.0-alpha.6",
|
|
4
4
|
"description": "The Pro plan edition of the Date and Time Picker components (MUI X).",
|
|
5
5
|
"author": "MUI Team",
|
|
6
6
|
"main": "./node/index.js",
|
|
@@ -37,9 +37,9 @@
|
|
|
37
37
|
"clsx": "^2.1.1",
|
|
38
38
|
"prop-types": "^15.8.1",
|
|
39
39
|
"react-transition-group": "^4.4.5",
|
|
40
|
-
"@mui/x-date-pickers": "8.0.0-alpha.
|
|
41
|
-
"@mui/x-internals": "8.0.0-alpha.
|
|
42
|
-
"@mui/x-license": "8.0.0-alpha.
|
|
40
|
+
"@mui/x-date-pickers": "8.0.0-alpha.6",
|
|
41
|
+
"@mui/x-internals": "8.0.0-alpha.6",
|
|
42
|
+
"@mui/x-license": "8.0.0-alpha.6"
|
|
43
43
|
},
|
|
44
44
|
"peerDependencies": {
|
|
45
45
|
"@emotion/react": "^11.9.0",
|