@mui/x-date-pickers 8.0.0-alpha.2 → 8.0.0-alpha.4

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 (110) hide show
  1. package/CHANGELOG.md +376 -0
  2. package/DateField/useDateField.d.ts +1 -1
  3. package/DatePicker/DatePickerToolbar.js +8 -9
  4. package/DateTimeField/useDateTimeField.d.ts +1 -1
  5. package/DateTimePicker/DateTimePickerToolbar.d.ts +6 -2
  6. package/DateTimePicker/DateTimePickerToolbar.js +53 -39
  7. package/DesktopDateTimePicker/DesktopDateTimePicker.js +1 -2
  8. package/DigitalClock/DigitalClock.js +13 -11
  9. package/DigitalClock/DigitalClock.types.d.ts +8 -2
  10. package/MultiSectionDigitalClock/MultiSectionDigitalClock.js +8 -7
  11. package/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +12 -10
  12. package/PickersActionBar/PickersActionBar.js +8 -1
  13. package/PickersLayout/PickersLayout.js +2 -2
  14. package/PickersLayout/PickersLayout.types.d.ts +4 -2
  15. package/PickersLayout/usePickerLayout.js +3 -3
  16. package/PickersShortcuts/PickersShortcuts.js +8 -1
  17. package/README.md +1 -1
  18. package/TimeClock/Clock.js +18 -21
  19. package/TimeClock/ClockNumber.js +15 -11
  20. package/TimeClock/ClockPointer.d.ts +6 -1
  21. package/TimeClock/ClockPointer.js +14 -10
  22. package/TimeClock/TimeClock.js +9 -8
  23. package/TimeField/useTimeField.d.ts +1 -1
  24. package/TimePicker/TimePickerToolbar.js +14 -17
  25. package/hooks/useClearableField.d.ts +5 -3
  26. package/hooks/useClearableField.js +4 -2
  27. package/index.js +1 -1
  28. package/internals/components/PickerProvider.d.ts +2 -15
  29. package/internals/components/PickersPopper.d.ts +11 -7
  30. package/internals/components/PickersPopper.js +18 -20
  31. package/internals/components/PickersToolbar.js +15 -12
  32. package/internals/components/PickersToolbarButton.js +4 -6
  33. package/internals/components/PickersToolbarText.js +11 -13
  34. package/internals/hooks/useDesktopPicker/useDesktopPicker.types.d.ts +3 -2
  35. package/internals/hooks/useMobilePicker/useMobilePicker.types.d.ts +3 -2
  36. package/internals/hooks/useOpenState.d.ts +3 -2
  37. package/internals/hooks/useOpenState.js +10 -9
  38. package/internals/hooks/usePicker/usePicker.js +3 -3
  39. package/internals/hooks/usePicker/usePicker.types.d.ts +3 -2
  40. package/internals/hooks/usePicker/usePickerProvider.d.ts +17 -6
  41. package/internals/hooks/usePicker/usePickerProvider.js +14 -12
  42. package/internals/hooks/usePicker/usePickerValue.js +22 -11
  43. package/internals/hooks/usePicker/usePickerValue.types.d.ts +26 -0
  44. package/internals/hooks/usePicker/usePickerViews.d.ts +5 -15
  45. package/internals/hooks/usePicker/usePickerViews.js +5 -6
  46. package/internals/hooks/useToolbarOwnerState.d.ts +10 -0
  47. package/internals/hooks/useToolbarOwnerState.js +13 -0
  48. package/internals/index.d.ts +5 -1
  49. package/internals/index.js +3 -1
  50. package/internals/models/common.d.ts +1 -1
  51. package/locales/roRO.js +15 -18
  52. package/modern/DatePicker/DatePickerToolbar.js +8 -9
  53. package/modern/DateTimePicker/DateTimePickerToolbar.js +53 -39
  54. package/modern/DesktopDateTimePicker/DesktopDateTimePicker.js +1 -2
  55. package/modern/DigitalClock/DigitalClock.js +13 -11
  56. package/modern/MultiSectionDigitalClock/MultiSectionDigitalClock.js +8 -7
  57. package/modern/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +12 -10
  58. package/modern/PickersActionBar/PickersActionBar.js +8 -1
  59. package/modern/PickersLayout/PickersLayout.js +2 -2
  60. package/modern/PickersLayout/usePickerLayout.js +3 -3
  61. package/modern/PickersShortcuts/PickersShortcuts.js +8 -1
  62. package/modern/TimeClock/Clock.js +18 -21
  63. package/modern/TimeClock/ClockNumber.js +15 -11
  64. package/modern/TimeClock/ClockPointer.js +14 -10
  65. package/modern/TimeClock/TimeClock.js +9 -8
  66. package/modern/TimePicker/TimePickerToolbar.js +14 -17
  67. package/modern/hooks/useClearableField.js +4 -2
  68. package/modern/index.js +1 -1
  69. package/modern/internals/components/PickersPopper.js +18 -20
  70. package/modern/internals/components/PickersToolbar.js +15 -12
  71. package/modern/internals/components/PickersToolbarButton.js +4 -6
  72. package/modern/internals/components/PickersToolbarText.js +11 -13
  73. package/modern/internals/hooks/useOpenState.js +10 -9
  74. package/modern/internals/hooks/usePicker/usePicker.js +3 -3
  75. package/modern/internals/hooks/usePicker/usePickerProvider.js +14 -12
  76. package/modern/internals/hooks/usePicker/usePickerValue.js +22 -11
  77. package/modern/internals/hooks/usePicker/usePickerViews.js +5 -6
  78. package/modern/internals/hooks/useToolbarOwnerState.js +13 -0
  79. package/modern/internals/index.js +3 -1
  80. package/modern/locales/roRO.js +15 -18
  81. package/node/DatePicker/DatePickerToolbar.js +8 -9
  82. package/node/DateTimePicker/DateTimePickerToolbar.js +54 -39
  83. package/node/DesktopDateTimePicker/DesktopDateTimePicker.js +1 -2
  84. package/node/DigitalClock/DigitalClock.js +13 -11
  85. package/node/MultiSectionDigitalClock/MultiSectionDigitalClock.js +8 -7
  86. package/node/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +12 -10
  87. package/node/PickersActionBar/PickersActionBar.js +8 -1
  88. package/node/PickersLayout/PickersLayout.js +2 -2
  89. package/node/PickersLayout/usePickerLayout.js +3 -3
  90. package/node/PickersShortcuts/PickersShortcuts.js +8 -1
  91. package/node/TimeClock/Clock.js +18 -21
  92. package/node/TimeClock/ClockNumber.js +15 -11
  93. package/node/TimeClock/ClockPointer.js +14 -10
  94. package/node/TimeClock/TimeClock.js +9 -8
  95. package/node/TimePicker/TimePickerToolbar.js +14 -17
  96. package/node/hooks/useClearableField.js +4 -2
  97. package/node/index.js +1 -1
  98. package/node/internals/components/PickersPopper.js +18 -20
  99. package/node/internals/components/PickersToolbar.js +15 -12
  100. package/node/internals/components/PickersToolbarButton.js +4 -6
  101. package/node/internals/components/PickersToolbarText.js +10 -12
  102. package/node/internals/hooks/useOpenState.js +10 -9
  103. package/node/internals/hooks/usePicker/usePicker.js +3 -3
  104. package/node/internals/hooks/usePicker/usePickerProvider.js +15 -13
  105. package/node/internals/hooks/usePicker/usePickerValue.js +22 -11
  106. package/node/internals/hooks/usePicker/usePickerViews.js +5 -6
  107. package/node/internals/hooks/useToolbarOwnerState.js +21 -0
  108. package/node/internals/index.js +15 -1
  109. package/node/locales/roRO.js +15 -18
  110. package/package.json +1 -1
@@ -14,12 +14,10 @@ var _styles = require("@mui/material/styles");
14
14
  var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
15
15
  var _shared = require("./shared");
16
16
  var _clockPointerClasses = require("./clockPointerClasses");
17
+ var _usePickerPrivateContext = require("../internals/hooks/usePickerPrivateContext");
17
18
  var _jsxRuntime = require("react/jsx-runtime");
18
- const _excluded = ["className", "hasSelected", "isInner", "type", "viewValue"];
19
- const useUtilityClasses = ownerState => {
20
- const {
21
- classes
22
- } = ownerState;
19
+ const _excluded = ["className", "classes", "isBetweenTwoClockValues", "isInner", "type", "viewValue"];
20
+ const useUtilityClasses = classes => {
23
21
  const slots = {
24
22
  root: ['root'],
25
23
  thumb: ['thumb']
@@ -41,7 +39,7 @@ const ClockPointerRoot = (0, _styles.styled)('div', {
41
39
  transformOrigin: 'center bottom 0px',
42
40
  variants: [{
43
41
  props: {
44
- shouldAnimate: true
42
+ isClockPointerAnimated: true
45
43
  },
46
44
  style: {
47
45
  transition: theme.transitions.create(['transform', 'height'])
@@ -66,7 +64,7 @@ const ClockPointerThumb = (0, _styles.styled)('div', {
66
64
  boxSizing: 'content-box',
67
65
  variants: [{
68
66
  props: {
69
- hasSelected: true
67
+ isBetweenTwoClockValues: false
70
68
  },
71
69
  style: {
72
70
  backgroundColor: (theme.vars || theme).palette.primary.main
@@ -84,6 +82,8 @@ function ClockPointer(inProps) {
84
82
  });
85
83
  const {
86
84
  className,
85
+ classes: classesProp,
86
+ isBetweenTwoClockValues,
87
87
  isInner,
88
88
  type,
89
89
  viewValue
@@ -93,10 +93,14 @@ function ClockPointer(inProps) {
93
93
  React.useEffect(() => {
94
94
  previousType.current = type;
95
95
  }, [type]);
96
- const ownerState = (0, _extends2.default)({}, props, {
97
- shouldAnimate: previousType.current !== type
96
+ const {
97
+ ownerState: pickerOwnerState
98
+ } = (0, _usePickerPrivateContext.usePickerPrivateContext)();
99
+ const ownerState = (0, _extends2.default)({}, pickerOwnerState, {
100
+ isClockPointerAnimated: previousType.current !== type,
101
+ isClockPointerBetweenTwoValues: isBetweenTwoClockValues
98
102
  });
99
- const classes = useUtilityClasses(ownerState);
103
+ const classes = useUtilityClasses(classesProp);
100
104
  const getAngleStyle = () => {
101
105
  const max = type === 'hours' ? 12 : 60;
102
106
  let angle = 360 / max * viewValue;
@@ -27,12 +27,10 @@ var _ClockNumbers = require("./ClockNumbers");
27
27
  var _useValueWithTimezone = require("../internals/hooks/useValueWithTimezone");
28
28
  var _valueManagers = require("../internals/utils/valueManagers");
29
29
  var _useClockReferenceDate = require("../internals/hooks/useClockReferenceDate");
30
+ var _usePickerPrivateContext = require("../internals/hooks/usePickerPrivateContext");
30
31
  var _jsxRuntime = require("react/jsx-runtime");
31
- const _excluded = ["ampm", "ampmInClock", "autoFocus", "slots", "slotProps", "value", "defaultValue", "referenceDate", "disableIgnoringDatePartForTimeValidation", "maxTime", "minTime", "disableFuture", "disablePast", "minutesStep", "shouldDisableTime", "showViewSwitcher", "onChange", "view", "views", "openTo", "onViewChange", "focusedView", "onFocusedViewChange", "className", "disabled", "readOnly", "timezone"];
32
- const useUtilityClasses = ownerState => {
33
- const {
34
- classes
35
- } = ownerState;
32
+ const _excluded = ["ampm", "ampmInClock", "autoFocus", "slots", "slotProps", "value", "defaultValue", "referenceDate", "disableIgnoringDatePartForTimeValidation", "maxTime", "minTime", "disableFuture", "disablePast", "minutesStep", "shouldDisableTime", "showViewSwitcher", "onChange", "view", "views", "openTo", "onViewChange", "focusedView", "onFocusedViewChange", "className", "classes", "disabled", "readOnly", "timezone"];
33
+ const useUtilityClasses = classes => {
36
34
  const slots = {
37
35
  root: ['root'],
38
36
  arrowSwitcher: ['arrowSwitcher']
@@ -100,6 +98,7 @@ const TimeClock = exports.TimeClock = /*#__PURE__*/React.forwardRef(function Tim
100
98
  focusedView,
101
99
  onFocusedViewChange,
102
100
  className,
101
+ classes: classesProp,
103
102
  disabled,
104
103
  readOnly,
105
104
  timezone: timezoneProp
@@ -127,6 +126,10 @@ const TimeClock = exports.TimeClock = /*#__PURE__*/React.forwardRef(function Tim
127
126
  });
128
127
  const translations = (0, _usePickerTranslations.usePickerTranslations)();
129
128
  const now = (0, _useUtils.useNow)(timezone);
129
+ const selectedId = (0, _utils.unstable_useId)();
130
+ const {
131
+ ownerState
132
+ } = (0, _usePickerPrivateContext.usePickerPrivateContext)();
130
133
  const {
131
134
  view,
132
135
  setView,
@@ -221,7 +224,6 @@ const TimeClock = exports.TimeClock = /*#__PURE__*/React.forwardRef(function Tim
221
224
  throw new Error('not supported');
222
225
  }
223
226
  }, [ampm, valueOrReferenceDate, disableIgnoringDatePartForTimeValidation, maxTime, meridiemMode, minTime, minutesStep, shouldDisableTime, utils, disableFuture, disablePast, now, views]);
224
- const selectedId = (0, _utils.unstable_useId)();
225
227
  const viewProps = React.useMemo(() => {
226
228
  switch (view) {
227
229
  case 'hours':
@@ -286,8 +288,7 @@ const TimeClock = exports.TimeClock = /*#__PURE__*/React.forwardRef(function Tim
286
288
  throw new Error('You must provide the type for ClockView');
287
289
  }
288
290
  }, [view, utils, value, ampm, translations.hoursClockNumberText, translations.minutesClockNumberText, translations.secondsClockNumberText, meridiemMode, setValueAndGoToNextView, valueOrReferenceDate, isTimeDisabled, selectedId, disabled]);
289
- const ownerState = props;
290
- const classes = useUtilityClasses(ownerState);
291
+ const classes = useUtilityClasses(classesProp);
291
292
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(TimeClockRoot, (0, _extends2.default)({
292
293
  ref: ref,
293
294
  className: (0, _clsx.default)(classes.root, className),
@@ -12,7 +12,6 @@ var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runt
12
12
  var React = _interopRequireWildcard(require("react"));
13
13
  var _clsx = _interopRequireDefault(require("clsx"));
14
14
  var _propTypes = _interopRequireDefault(require("prop-types"));
15
- var _RtlProvider = require("@mui/system/RtlProvider");
16
15
  var _styles = require("@mui/material/styles");
17
16
  var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
18
17
  var _PickersToolbarText = require("../internals/components/PickersToolbarText");
@@ -25,19 +24,19 @@ var _dateHelpersHooks = require("../internals/hooks/date-helpers-hooks");
25
24
  var _timePickerToolbarClasses = require("./timePickerToolbarClasses");
26
25
  var _dateUtils = require("../internals/utils/date-utils");
27
26
  var _hooks = require("../hooks");
27
+ var _useToolbarOwnerState = require("../internals/hooks/useToolbarOwnerState");
28
28
  var _jsxRuntime = require("react/jsx-runtime");
29
- const _excluded = ["ampm", "ampmInClock", "value", "isLandscape", "onChange", "view", "onViewChange", "views", "className"];
30
- const useUtilityClasses = ownerState => {
29
+ const _excluded = ["ampm", "ampmInClock", "value", "isLandscape", "onChange", "view", "onViewChange", "views", "className", "classes"];
30
+ const useUtilityClasses = (classes, ownerState) => {
31
31
  const {
32
- isLandscape,
33
- classes,
34
- isRtl
32
+ pickerOrientation,
33
+ toolbarDirection
35
34
  } = ownerState;
36
35
  const slots = {
37
36
  root: ['root'],
38
37
  separator: ['separator'],
39
- hourMinuteLabel: ['hourMinuteLabel', isLandscape && 'hourMinuteLabelLandscape', isRtl && 'hourMinuteLabelReverse'],
40
- ampmSelection: ['ampmSelection', isLandscape && 'ampmLandscape'],
38
+ hourMinuteLabel: ['hourMinuteLabel', pickerOrientation === 'landscape' && 'hourMinuteLabelLandscape', toolbarDirection === 'rtl' && 'hourMinuteLabelReverse'],
39
+ ampmSelection: ['ampmSelection', pickerOrientation === 'landscape' && 'ampmLandscape'],
41
40
  ampmLabel: ['ampmLabel']
42
41
  };
43
42
  return (0, _composeClasses.default)(slots, _timePickerToolbarClasses.getTimePickerToolbarUtilityClass, classes);
@@ -69,14 +68,14 @@ const TimePickerToolbarHourMinuteLabel = (0, _styles.styled)('div', {
69
68
  alignItems: 'flex-end',
70
69
  variants: [{
71
70
  props: {
72
- isRtl: true
71
+ toolbarDirection: 'rtl'
73
72
  },
74
73
  style: {
75
74
  flexDirection: 'row-reverse'
76
75
  }
77
76
  }, {
78
77
  props: {
79
- isLandscape: true
78
+ pickerOrientation: 'landscape'
80
79
  },
81
80
  style: {
82
81
  marginTop: 'auto'
@@ -101,7 +100,7 @@ const TimePickerToolbarAmPmSelection = (0, _styles.styled)('div', {
101
100
  },
102
101
  variants: [{
103
102
  props: {
104
- isLandscape: true
103
+ pickerOrientation: 'landscape'
105
104
  },
106
105
  style: {
107
106
  margin: '4px 0 auto',
@@ -136,12 +135,14 @@ function TimePickerToolbar(inProps) {
136
135
  view,
137
136
  onViewChange,
138
137
  views,
139
- className
138
+ className,
139
+ classes: classesProp
140
140
  } = props,
141
141
  other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
142
142
  const utils = (0, _useUtils.useUtils)();
143
143
  const translations = (0, _usePickerTranslations.usePickerTranslations)();
144
- const isRtl = (0, _RtlProvider.useRtl)();
144
+ const ownerState = (0, _useToolbarOwnerState.useToolbarOwnerState)();
145
+ const classes = useUtilityClasses(classesProp, ownerState);
145
146
  const {
146
147
  disabled,
147
148
  readOnly
@@ -152,10 +153,6 @@ function TimePickerToolbar(inProps) {
152
153
  handleMeridiemChange
153
154
  } = (0, _dateHelpersHooks.useMeridiemMode)(value, ampm, onChange);
154
155
  const formatHours = time => ampm ? utils.format(time, 'hours12h') : utils.format(time, 'hours24h');
155
- const ownerState = (0, _extends2.default)({}, props, {
156
- isRtl
157
- });
158
- const classes = useUtilityClasses(ownerState);
159
156
  const separator = /*#__PURE__*/(0, _jsxRuntime.jsx)(TimePickerToolbarSeparator, {
160
157
  tabIndex: -1,
161
158
  value: ":",
@@ -15,11 +15,13 @@ var _IconButton = _interopRequireDefault(require("@mui/material/IconButton"));
15
15
  var _InputAdornment = _interopRequireDefault(require("@mui/material/InputAdornment"));
16
16
  var _icons = require("../icons");
17
17
  var _usePickerTranslations = require("./usePickerTranslations");
18
+ var _useFieldOwnerState = require("../internals/hooks/useFieldOwnerState");
18
19
  var _jsxRuntime = require("react/jsx-runtime");
19
20
  const _excluded = ["clearable", "onClear", "InputProps", "sx", "slots", "slotProps"],
20
21
  _excluded2 = ["ownerState"];
21
22
  const useClearableField = props => {
22
23
  const translations = (0, _usePickerTranslations.usePickerTranslations)();
24
+ const ownerState = (0, _useFieldOwnerState.useFieldOwnerState)(props);
23
25
  const {
24
26
  clearable,
25
27
  onClear,
@@ -34,7 +36,7 @@ const useClearableField = props => {
34
36
  const _useSlotProps = (0, _useSlotProps2.default)({
35
37
  elementType: IconButton,
36
38
  externalSlotProps: slotProps?.clearButton,
37
- ownerState: {},
39
+ ownerState,
38
40
  className: 'clearButton',
39
41
  additionalProps: {
40
42
  title: translations.fieldClearLabel,
@@ -46,7 +48,7 @@ const useClearableField = props => {
46
48
  const endClearIconProps = (0, _useSlotProps2.default)({
47
49
  elementType: EndClearIcon,
48
50
  externalSlotProps: slotProps?.clearIcon,
49
- ownerState: {}
51
+ ownerState
50
52
  });
51
53
  return (0, _extends2.default)({}, other, {
52
54
  InputProps: (0, _extends2.default)({}, InputProps, {
package/node/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-date-pickers v8.0.0-alpha.2
2
+ * @mui/x-date-pickers v8.0.0-alpha.4
3
3
  *
4
4
  * @license MIT
5
5
  * This source code is licensed under the MIT license found in the
@@ -20,12 +20,10 @@ var _styles = require("@mui/material/styles");
20
20
  var _pickersPopperClasses = require("./pickersPopperClasses");
21
21
  var _utils2 = require("../utils/utils");
22
22
  var _useDefaultReduceAnimations = require("../hooks/useDefaultReduceAnimations");
23
+ var _usePickerPrivateContext = require("../hooks/usePickerPrivateContext");
23
24
  var _jsxRuntime = require("react/jsx-runtime");
24
- const _excluded = ["PaperComponent", "popperPlacement", "ownerState", "children", "paperSlotProps", "paperClasses", "onPaperClick", "onPaperTouchStart"];
25
- const useUtilityClasses = ownerState => {
26
- const {
27
- classes
28
- } = ownerState;
25
+ const _excluded = ["PaperComponent", "ownerState", "children", "paperSlotProps", "paperClasses", "onPaperClick", "onPaperTouchStart"];
26
+ const useUtilityClasses = classes => {
29
27
  const slots = {
30
28
  root: ['root'],
31
29
  paper: ['paper']
@@ -50,8 +48,8 @@ const PickersPopperPaper = (0, _styles.styled)(_Paper.default, {
50
48
  transformOrigin: 'top center',
51
49
  variants: [{
52
50
  props: ({
53
- placement
54
- }) => ['top', 'top-start', 'top-end'].includes(placement),
51
+ popperPlacement
52
+ }) => ['top', 'top-start', 'top-end'].includes(popperPlacement),
55
53
  style: {
56
54
  transformOrigin: 'bottom center'
57
55
  }
@@ -175,8 +173,7 @@ function useClickAwayListener(active, onClickAway) {
175
173
  const PickersPopperPaperWrapper = /*#__PURE__*/React.forwardRef((props, ref) => {
176
174
  const {
177
175
  PaperComponent,
178
- popperPlacement,
179
- ownerState: inOwnerState,
176
+ ownerState,
180
177
  children,
181
178
  paperSlotProps,
182
179
  paperClasses,
@@ -186,9 +183,6 @@ const PickersPopperPaperWrapper = /*#__PURE__*/React.forwardRef((props, ref) =>
186
183
  // https://mui.com/material-ui/transitions/#child-requirement
187
184
  } = props,
188
185
  other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
189
- const ownerState = (0, _extends2.default)({}, inOwnerState, {
190
- placement: popperPlacement
191
- });
192
186
  const paperProps = (0, _useSlotProps.default)({
193
187
  elementType: PaperComponent,
194
188
  externalSlotProps: paperSlotProps,
@@ -227,10 +221,11 @@ function PickersPopper(inProps) {
227
221
  onDismiss,
228
222
  open,
229
223
  role,
230
- placement,
224
+ placement = 'bottom',
231
225
  slots,
232
226
  slotProps,
233
- reduceAnimations: inReduceAnimations
227
+ reduceAnimations: inReduceAnimations,
228
+ classes: classesProp
234
229
  } = props;
235
230
  React.useEffect(() => {
236
231
  function handleKeyDown(nativeEvent) {
@@ -264,10 +259,15 @@ function PickersPopper(inProps) {
264
259
  const paperRef = React.useRef(null);
265
260
  const handleRef = (0, _utils.unstable_useForkRef)(paperRef, containerRef);
266
261
  const handlePaperRef = (0, _utils.unstable_useForkRef)(handleRef, clickAwayRef);
267
- const ownerState = props;
268
- const classes = useUtilityClasses(ownerState);
262
+ const classes = useUtilityClasses(classesProp);
269
263
  const defaultReduceAnimations = (0, _useDefaultReduceAnimations.useDefaultReduceAnimations)();
270
264
  const reduceAnimations = inReduceAnimations ?? defaultReduceAnimations;
265
+ const {
266
+ ownerState: pickerOwnerState
267
+ } = (0, _usePickerPrivateContext.usePickerPrivateContext)();
268
+ const ownerState = (0, _extends2.default)({}, pickerOwnerState, {
269
+ popperPlacement: placement
270
+ });
271
271
  const handleKeyDown = event => {
272
272
  if (event.key === 'Escape') {
273
273
  // stop the propagation to avoid closing parent modal
@@ -291,12 +291,11 @@ function PickersPopper(inProps) {
291
291
  onKeyDown: handleKeyDown
292
292
  },
293
293
  className: classes.root,
294
- ownerState: props
294
+ ownerState
295
295
  });
296
296
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(Popper, (0, _extends2.default)({}, popperProps, {
297
297
  children: ({
298
- TransitionProps,
299
- placement: popperPlacement
298
+ TransitionProps
300
299
  }) => /*#__PURE__*/(0, _jsxRuntime.jsx)(FocusTrap, (0, _extends2.default)({
301
300
  open: open,
302
301
  disableAutoFocus: true
@@ -312,7 +311,6 @@ function PickersPopper(inProps) {
312
311
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(PickersPopperPaperWrapper, {
313
312
  PaperComponent: Paper,
314
313
  ownerState: ownerState,
315
- popperPlacement: popperPlacement,
316
314
  ref: handlePaperRef,
317
315
  onPaperClick: onPaperClick,
318
316
  onPaperTouchStart: onPaperTouchStart,
@@ -13,13 +13,12 @@ var _clsx = _interopRequireDefault(require("clsx"));
13
13
  var _Typography = _interopRequireDefault(require("@mui/material/Typography"));
14
14
  var _styles = require("@mui/material/styles");
15
15
  var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
16
+ var _createStyled = require("@mui/system/createStyled");
16
17
  var _pickersToolbarClasses = require("./pickersToolbarClasses");
18
+ var _useToolbarOwnerState = require("../hooks/useToolbarOwnerState");
17
19
  var _jsxRuntime = require("react/jsx-runtime");
18
- const _excluded = ["children", "className", "toolbarTitle", "hidden", "titleId", "isLandscape", "classes", "landscapeDirection"];
19
- const useUtilityClasses = ownerState => {
20
- const {
21
- classes
22
- } = ownerState;
20
+ const _excluded = ["children", "className", "classes", "toolbarTitle", "hidden", "titleId", "isLandscape", "classes", "landscapeDirection"];
21
+ const useUtilityClasses = classes => {
23
22
  const slots = {
24
23
  root: ['root'],
25
24
  content: ['content']
@@ -40,7 +39,7 @@ const PickersToolbarRoot = (0, _styles.styled)('div', {
40
39
  padding: theme.spacing(2, 3),
41
40
  variants: [{
42
41
  props: {
43
- isLandscape: true
42
+ pickerOrientation: 'landscape'
44
43
  },
45
44
  style: {
46
45
  height: 'auto',
@@ -54,7 +53,8 @@ const PickersToolbarRoot = (0, _styles.styled)('div', {
54
53
  const PickersToolbarContent = (0, _styles.styled)('div', {
55
54
  name: 'MuiPickersToolbar',
56
55
  slot: 'Content',
57
- overridesResolver: (props, styles) => styles.content
56
+ overridesResolver: (props, styles) => styles.content,
57
+ shouldForwardProp: prop => (0, _createStyled.shouldForwardProp)(prop) && prop !== 'landscapeDirection'
58
58
  })({
59
59
  display: 'flex',
60
60
  flexWrap: 'wrap',
@@ -65,7 +65,7 @@ const PickersToolbarContent = (0, _styles.styled)('div', {
65
65
  flexDirection: 'row',
66
66
  variants: [{
67
67
  props: {
68
- isLandscape: true
68
+ pickerOrientation: 'landscape'
69
69
  },
70
70
  style: {
71
71
  justifyContent: 'flex-start',
@@ -74,7 +74,7 @@ const PickersToolbarContent = (0, _styles.styled)('div', {
74
74
  }
75
75
  }, {
76
76
  props: {
77
- isLandscape: true,
77
+ pickerOrientation: 'landscape',
78
78
  landscapeDirection: 'row'
79
79
  },
80
80
  style: {
@@ -90,13 +90,15 @@ const PickersToolbar = exports.PickersToolbar = /*#__PURE__*/React.forwardRef(fu
90
90
  const {
91
91
  children,
92
92
  className,
93
+ classes: classesProp,
93
94
  toolbarTitle,
94
95
  hidden,
95
- titleId
96
+ titleId,
97
+ landscapeDirection
96
98
  } = props,
97
99
  other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
98
- const ownerState = props;
99
- const classes = useUtilityClasses(ownerState);
100
+ const ownerState = (0, _useToolbarOwnerState.useToolbarOwnerState)();
101
+ const classes = useUtilityClasses(classesProp);
100
102
  if (hidden) {
101
103
  return null;
102
104
  }
@@ -113,6 +115,7 @@ const PickersToolbar = exports.PickersToolbar = /*#__PURE__*/React.forwardRef(fu
113
115
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(PickersToolbarContent, {
114
116
  className: classes.content,
115
117
  ownerState: ownerState,
118
+ landscapeDirection: landscapeDirection,
116
119
  children: children
117
120
  })]
118
121
  }));
@@ -16,11 +16,8 @@ var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"
16
16
  var _PickersToolbarText = require("./PickersToolbarText");
17
17
  var _pickersToolbarClasses = require("./pickersToolbarClasses");
18
18
  var _jsxRuntime = require("react/jsx-runtime");
19
- const _excluded = ["align", "className", "selected", "typographyClassName", "value", "variant", "width"];
20
- const useUtilityClasses = ownerState => {
21
- const {
22
- classes
23
- } = ownerState;
19
+ const _excluded = ["align", "className", "classes", "selected", "typographyClassName", "value", "variant", "width"];
20
+ const useUtilityClasses = classes => {
24
21
  const slots = {
25
22
  root: ['root']
26
23
  };
@@ -43,6 +40,7 @@ const PickersToolbarButton = exports.PickersToolbarButton = /*#__PURE__*/React.f
43
40
  const {
44
41
  align,
45
42
  className,
43
+ classes: classesProp,
46
44
  selected,
47
45
  typographyClassName,
48
46
  value,
@@ -50,7 +48,7 @@ const PickersToolbarButton = exports.PickersToolbarButton = /*#__PURE__*/React.f
50
48
  width
51
49
  } = props,
52
50
  other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
53
- const classes = useUtilityClasses(props);
51
+ const classes = useUtilityClasses(classesProp);
54
52
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(PickersToolbarButtonRoot, (0, _extends2.default)({
55
53
  variant: "text",
56
54
  ref: ref,
@@ -15,29 +15,23 @@ var _styles = require("@mui/material/styles");
15
15
  var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
16
16
  var _pickersToolbarTextClasses = require("./pickersToolbarTextClasses");
17
17
  var _jsxRuntime = require("react/jsx-runtime");
18
- const _excluded = ["className", "selected", "value"];
19
- const useUtilityClasses = ownerState => {
20
- const {
21
- classes,
22
- selected
23
- } = ownerState;
18
+ const _excluded = ["className", "classes", "selected", "value"];
19
+ const useUtilityClasses = classes => {
24
20
  const slots = {
25
- root: ['root', selected && 'selected']
21
+ root: ['root']
26
22
  };
27
23
  return (0, _composeClasses.default)(slots, _pickersToolbarTextClasses.getPickersToolbarTextUtilityClass, classes);
28
24
  };
29
25
  const PickersToolbarTextRoot = (0, _styles.styled)(_Typography.default, {
30
26
  name: 'MuiPickersToolbarText',
31
27
  slot: 'Root',
32
- overridesResolver: (_, styles) => [styles.root, {
33
- [`&.${_pickersToolbarTextClasses.pickersToolbarTextClasses.selected}`]: styles.selected
34
- }]
28
+ overridesResolver: (_, styles) => [styles.root]
35
29
  })(({
36
30
  theme
37
31
  }) => ({
38
32
  transition: theme.transitions.create('color'),
39
33
  color: (theme.vars || theme).palette.text.secondary,
40
- [`&.${_pickersToolbarTextClasses.pickersToolbarTextClasses.selected}`]: {
34
+ [`&[data-selected]`]: {
41
35
  color: (theme.vars || theme).palette.text.primary
42
36
  }
43
37
  }));
@@ -48,14 +42,18 @@ const PickersToolbarText = exports.PickersToolbarText = /*#__PURE__*/React.forwa
48
42
  });
49
43
  const {
50
44
  className,
45
+ classes: classesProp,
46
+ selected,
51
47
  value
52
48
  } = props,
53
49
  other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
54
- const classes = useUtilityClasses(props);
50
+ const classes = useUtilityClasses(classesProp);
55
51
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(PickersToolbarTextRoot, (0, _extends2.default)({
56
52
  ref: ref,
57
53
  className: (0, _clsx.default)(classes.root, className),
58
54
  component: "span"
55
+ }, selected && {
56
+ 'data-selected': true
59
57
  }, other, {
60
58
  children: value
61
59
  }));
@@ -12,7 +12,7 @@ const useOpenState = ({
12
12
  onClose
13
13
  }) => {
14
14
  const isControllingOpenProp = React.useRef(typeof open === 'boolean').current;
15
- const [openState, setIsOpenState] = React.useState(false);
15
+ const [openState, setOpenState] = React.useState(false);
16
16
 
17
17
  // It is required to update inner state in useEffect in order to avoid situation when
18
18
  // Our component is not mounted yet, but `open` state is set to `true` (for example initially opened)
@@ -21,23 +21,24 @@ const useOpenState = ({
21
21
  if (typeof open !== 'boolean') {
22
22
  throw new Error('You must not mix controlling and uncontrolled mode for `open` prop');
23
23
  }
24
- setIsOpenState(open);
24
+ setOpenState(open);
25
25
  }
26
26
  }, [isControllingOpenProp, open]);
27
- const setIsOpen = React.useCallback(newIsOpen => {
27
+ const setOpen = React.useCallback(action => {
28
+ const newOpen = typeof action === 'function' ? action(openState) : action;
28
29
  if (!isControllingOpenProp) {
29
- setIsOpenState(newIsOpen);
30
+ setOpenState(newOpen);
30
31
  }
31
- if (newIsOpen && onOpen) {
32
+ if (newOpen && onOpen) {
32
33
  onOpen();
33
34
  }
34
- if (!newIsOpen && onClose) {
35
+ if (!newOpen && onClose) {
35
36
  onClose();
36
37
  }
37
- }, [isControllingOpenProp, onOpen, onClose]);
38
+ }, [isControllingOpenProp, onOpen, onClose, openState]);
38
39
  return {
39
- isOpen: openState,
40
- setIsOpen
40
+ open: openState,
41
+ setOpen
41
42
  };
42
43
  };
43
44
  exports.useOpenState = useOpenState;
@@ -44,11 +44,11 @@ const usePicker = ({
44
44
  });
45
45
  const providerProps = (0, _usePickerProvider.usePickerProvider)({
46
46
  props,
47
- pickerValueResponse,
48
47
  localeText,
49
48
  valueManager,
50
49
  variant,
51
- views: pickerViewsResponse.views
50
+ paramsFromUsePickerValue: pickerValueResponse.provider,
51
+ paramsFromUsePickerViews: pickerViewsResponse.provider
52
52
  });
53
53
  return {
54
54
  // Picker value
@@ -57,7 +57,7 @@ const usePicker = ({
57
57
  fieldProps: pickerValueResponse.fieldProps,
58
58
  // Picker views
59
59
  renderCurrentView: pickerViewsResponse.renderCurrentView,
60
- hasUIView: pickerViewsResponse.hasUIView,
60
+ hasUIView: pickerViewsResponse.provider.hasUIView,
61
61
  shouldRestoreFocus: pickerViewsResponse.shouldRestoreFocus,
62
62
  // Picker layout
63
63
  layoutProps: (0, _extends2.default)({}, pickerViewsResponse.layoutProps, pickerValueResponse.layoutProps),
@@ -1,12 +1,13 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
3
  var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
8
  exports.usePickerOrientation = void 0;
9
9
  exports.usePickerProvider = usePickerProvider;
10
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
11
  var React = _interopRequireWildcard(require("react"));
11
12
  var _useEnhancedEffect = _interopRequireDefault(require("@mui/utils/useEnhancedEffect"));
12
13
  var _useUtils = require("../useUtils");
@@ -46,31 +47,28 @@ exports.usePickerOrientation = usePickerOrientation;
46
47
  function usePickerProvider(parameters) {
47
48
  const {
48
49
  props,
49
- pickerValueResponse,
50
50
  valueManager,
51
51
  localeText,
52
52
  variant,
53
- views
53
+ paramsFromUsePickerValue,
54
+ paramsFromUsePickerViews
54
55
  } = parameters;
55
56
  const utils = (0, _useUtils.useUtils)();
56
- const orientation = usePickerOrientation(views, props.orientation);
57
+ const orientation = usePickerOrientation(paramsFromUsePickerViews.views, props.orientation);
57
58
  const ownerState = React.useMemo(() => ({
58
- isPickerValueEmpty: valueManager.areValuesEqual(utils, pickerValueResponse.viewProps.value, valueManager.emptyValue),
59
- isPickerOpen: pickerValueResponse.open,
59
+ isPickerValueEmpty: valueManager.areValuesEqual(utils, paramsFromUsePickerValue.value, valueManager.emptyValue),
60
+ isPickerOpen: paramsFromUsePickerValue.contextValue.open,
60
61
  isPickerDisabled: props.disabled ?? false,
61
62
  isPickerReadOnly: props.readOnly ?? false,
62
63
  pickerOrientation: orientation,
63
64
  pickerVariant: variant
64
- }), [utils, valueManager, pickerValueResponse.viewProps.value, pickerValueResponse.open, orientation, variant, props.disabled, props.readOnly]);
65
- const contextValue = React.useMemo(() => ({
66
- onOpen: pickerValueResponse.actions.onOpen,
67
- onClose: pickerValueResponse.actions.onClose,
68
- open: pickerValueResponse.open,
65
+ }), [utils, valueManager, paramsFromUsePickerValue.value, paramsFromUsePickerValue.contextValue.open, orientation, variant, props.disabled, props.readOnly]);
66
+ const contextValue = React.useMemo(() => (0, _extends2.default)({}, paramsFromUsePickerValue.contextValue, {
69
67
  disabled: props.disabled ?? false,
70
68
  readOnly: props.readOnly ?? false,
71
69
  variant,
72
70
  orientation
73
- }), [pickerValueResponse.actions.onOpen, pickerValueResponse.actions.onClose, pickerValueResponse.open, variant, orientation, props.disabled, props.readOnly]);
71
+ }), [paramsFromUsePickerValue.contextValue, variant, orientation, props.disabled, props.readOnly]);
74
72
  const privateContextValue = React.useMemo(() => ({
75
73
  ownerState
76
74
  }), [ownerState]);
@@ -82,6 +80,10 @@ function usePickerProvider(parameters) {
82
80
  }
83
81
 
84
82
  /**
85
- * Props used to create the private context.
83
+ * Props used to create the picker's contexts.
86
84
  * Those props are exposed on all the pickers.
85
+ */
86
+
87
+ /**
88
+ * Props used to create the picker's contexts and that are not available on static pickers.
87
89
  */