@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.
Files changed (39) hide show
  1. package/CHANGELOG.md +182 -0
  2. package/DateRangePicker/DateRangePickerToolbar.d.ts +1 -1
  3. package/DateRangePicker/DateRangePickerToolbar.js +2 -16
  4. package/DateTimeRangePicker/DateTimeRangePickerTabs.d.ts +2 -2
  5. package/DateTimeRangePicker/DateTimeRangePickerTabs.js +18 -18
  6. package/DateTimeRangePicker/DateTimeRangePickerToolbar.d.ts +2 -3
  7. package/DateTimeRangePicker/DateTimeRangePickerToolbar.js +49 -50
  8. package/DesktopDateRangePicker/DesktopDateRangePicker.types.d.ts +2 -2
  9. package/DesktopDateTimeRangePicker/DesktopDateTimeRangePicker.types.d.ts +2 -3
  10. package/MobileDateRangePicker/MobileDateRangePicker.types.d.ts +2 -2
  11. package/MobileDateTimeRangePicker/MobileDateTimeRangePicker.types.d.ts +2 -3
  12. package/StaticDateRangePicker/StaticDateRangePicker.types.d.ts +2 -2
  13. package/index.js +1 -1
  14. package/internals/hooks/models/useRangePicker.d.ts +2 -2
  15. package/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.js +13 -14
  16. package/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.types.d.ts +4 -4
  17. package/internals/hooks/useEnrichedRangePickerFieldProps.d.ts +2 -2
  18. package/internals/hooks/useEnrichedRangePickerFieldProps.js +8 -5
  19. package/internals/hooks/useMobileRangePicker/useMobileRangePicker.js +5 -7
  20. package/internals/hooks/useMobileRangePicker/useMobileRangePicker.types.d.ts +4 -4
  21. package/internals/hooks/useStaticRangePicker/useStaticRangePicker.types.d.ts +4 -4
  22. package/internals/utils/releaseInfo.js +1 -1
  23. package/modern/DateRangePicker/DateRangePickerToolbar.js +2 -16
  24. package/modern/DateTimeRangePicker/DateTimeRangePickerTabs.js +18 -18
  25. package/modern/DateTimeRangePicker/DateTimeRangePickerToolbar.js +49 -50
  26. package/modern/index.js +1 -1
  27. package/modern/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.js +13 -14
  28. package/modern/internals/hooks/useEnrichedRangePickerFieldProps.js +8 -5
  29. package/modern/internals/hooks/useMobileRangePicker/useMobileRangePicker.js +5 -7
  30. package/modern/internals/utils/releaseInfo.js +1 -1
  31. package/node/DateRangePicker/DateRangePickerToolbar.js +2 -16
  32. package/node/DateTimeRangePicker/DateTimeRangePickerTabs.js +17 -17
  33. package/node/DateTimeRangePicker/DateTimeRangePickerToolbar.js +48 -49
  34. package/node/index.js +1 -1
  35. package/node/internals/hooks/useDesktopRangePicker/useDesktopRangePicker.js +13 -14
  36. package/node/internals/hooks/useEnrichedRangePickerFieldProps.js +8 -5
  37. package/node/internals/hooks/useMobileRangePicker/useMobileRangePicker.js +5 -7
  38. package/node/internals/utils/releaseInfo.js +1 -1
  39. 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 (layoutProps.view) {
83
- initialView.current = layoutProps.view;
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
- actions.onDismiss();
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
- open,
128
- actions,
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: layoutProps.view !== props.openTo ? layoutProps.view : undefined,
144
+ currentView: providerProps.contextValue.view !== props.openTo ? providerProps.contextValue.view : undefined,
144
145
  initialView: initialView.current ?? undefined,
145
- onViewChange: layoutProps.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, _extends({
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
- actions,
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
- actions.onOpen(event);
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
- actions.onOpen(event);
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
- actions,
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
- actions.onOpen(event);
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
- open,
110
- actions,
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, _extends({}, actions, {
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 = "MTczNDA0MDgwMDAwMA==";
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", "onViewChange", "view", "views"];
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: (0, _internals.isDatePickerView)(view) ? dateIcon : timeIcon,
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", "onViewChange", "onChange", "classes", "view", "isLandscape", "views", "ampm", "hidden", "toolbarFormat", "toolbarPlaceholder", "titleId", "sx"];
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.jsx)(DateTimeRangePickerToolbarRoot, (0, _extends2.default)({
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.jsxs)(_internals.DateTimePickerToolbarForceDesktopVariant.Provider, {
137
- value: true,
138
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(DateTimeRangePickerToolbarStart, (0, _extends2.default)({
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)), /*#__PURE__*/(0, _jsxRuntime.jsx)(DateTimeRangePickerToolbarEnd, (0, _extends2.default)({
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
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-date-pickers-pro v8.0.0-alpha.4
2
+ * @mui/x-date-pickers-pro v8.0.0-alpha.6
3
3
  *
4
4
  * @license MUI X Commercial
5
5
  * This source code is licensed under the commercial license found in the
@@ -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 (layoutProps.view) {
91
- initialView.current = layoutProps.view;
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
- actions.onDismiss();
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
- open,
136
- actions,
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: layoutProps.view !== props.openTo ? layoutProps.view : undefined,
152
+ currentView: providerProps.contextValue.view !== props.openTo ? providerProps.contextValue.view : undefined,
152
153
  initialView: initialView.current ?? undefined,
153
- onViewChange: layoutProps.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, (0, _extends2.default)({
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
- actions,
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
- actions.onOpen(event);
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
- actions.onOpen(event);
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
- actions,
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
- actions.onOpen(event);
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
- open,
118
- actions,
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, (0, _extends2.default)({}, actions, {
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 = "MTczNDA0MDgwMDAwMA==";
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.4",
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.4",
41
- "@mui/x-internals": "8.0.0-alpha.2",
42
- "@mui/x-license": "8.0.0-alpha.4"
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",