@mui/x-date-pickers 8.0.0-alpha.3 → 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 (96) hide show
  1. package/CHANGELOG.md +274 -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/PickersLayout/PickersLayout.js +2 -2
  13. package/PickersLayout/PickersLayout.types.d.ts +4 -2
  14. package/PickersLayout/usePickerLayout.js +3 -3
  15. package/README.md +1 -1
  16. package/TimeClock/Clock.js +18 -21
  17. package/TimeClock/ClockNumber.js +15 -11
  18. package/TimeClock/ClockPointer.d.ts +6 -1
  19. package/TimeClock/ClockPointer.js +14 -10
  20. package/TimeClock/TimeClock.js +9 -8
  21. package/TimeField/useTimeField.d.ts +1 -1
  22. package/TimePicker/TimePickerToolbar.js +14 -17
  23. package/hooks/useClearableField.d.ts +5 -3
  24. package/hooks/useClearableField.js +4 -2
  25. package/index.js +1 -1
  26. package/internals/components/PickerProvider.d.ts +1 -1
  27. package/internals/components/PickersPopper.d.ts +11 -7
  28. package/internals/components/PickersPopper.js +18 -20
  29. package/internals/components/PickersToolbar.js +15 -12
  30. package/internals/components/PickersToolbarButton.js +4 -6
  31. package/internals/components/PickersToolbarText.js +11 -13
  32. package/internals/hooks/useDesktopPicker/useDesktopPicker.types.d.ts +3 -2
  33. package/internals/hooks/useMobilePicker/useMobilePicker.types.d.ts +3 -2
  34. package/internals/hooks/usePicker/usePicker.js +3 -3
  35. package/internals/hooks/usePicker/usePicker.types.d.ts +3 -2
  36. package/internals/hooks/usePicker/usePickerProvider.d.ts +15 -4
  37. package/internals/hooks/usePicker/usePickerProvider.js +8 -4
  38. package/internals/hooks/usePicker/usePickerViews.d.ts +5 -15
  39. package/internals/hooks/usePicker/usePickerViews.js +5 -6
  40. package/internals/hooks/useToolbarOwnerState.d.ts +10 -0
  41. package/internals/hooks/useToolbarOwnerState.js +13 -0
  42. package/internals/index.d.ts +5 -1
  43. package/internals/index.js +3 -1
  44. package/internals/models/common.d.ts +1 -1
  45. package/locales/roRO.js +15 -18
  46. package/modern/DatePicker/DatePickerToolbar.js +8 -9
  47. package/modern/DateTimePicker/DateTimePickerToolbar.js +53 -39
  48. package/modern/DesktopDateTimePicker/DesktopDateTimePicker.js +1 -2
  49. package/modern/DigitalClock/DigitalClock.js +13 -11
  50. package/modern/MultiSectionDigitalClock/MultiSectionDigitalClock.js +8 -7
  51. package/modern/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +12 -10
  52. package/modern/PickersLayout/PickersLayout.js +2 -2
  53. package/modern/PickersLayout/usePickerLayout.js +3 -3
  54. package/modern/TimeClock/Clock.js +18 -21
  55. package/modern/TimeClock/ClockNumber.js +15 -11
  56. package/modern/TimeClock/ClockPointer.js +14 -10
  57. package/modern/TimeClock/TimeClock.js +9 -8
  58. package/modern/TimePicker/TimePickerToolbar.js +14 -17
  59. package/modern/hooks/useClearableField.js +4 -2
  60. package/modern/index.js +1 -1
  61. package/modern/internals/components/PickersPopper.js +18 -20
  62. package/modern/internals/components/PickersToolbar.js +15 -12
  63. package/modern/internals/components/PickersToolbarButton.js +4 -6
  64. package/modern/internals/components/PickersToolbarText.js +11 -13
  65. package/modern/internals/hooks/usePicker/usePicker.js +3 -3
  66. package/modern/internals/hooks/usePicker/usePickerProvider.js +8 -4
  67. package/modern/internals/hooks/usePicker/usePickerViews.js +5 -6
  68. package/modern/internals/hooks/useToolbarOwnerState.js +13 -0
  69. package/modern/internals/index.js +3 -1
  70. package/modern/locales/roRO.js +15 -18
  71. package/node/DatePicker/DatePickerToolbar.js +8 -9
  72. package/node/DateTimePicker/DateTimePickerToolbar.js +54 -39
  73. package/node/DesktopDateTimePicker/DesktopDateTimePicker.js +1 -2
  74. package/node/DigitalClock/DigitalClock.js +13 -11
  75. package/node/MultiSectionDigitalClock/MultiSectionDigitalClock.js +8 -7
  76. package/node/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +12 -10
  77. package/node/PickersLayout/PickersLayout.js +2 -2
  78. package/node/PickersLayout/usePickerLayout.js +3 -3
  79. package/node/TimeClock/Clock.js +18 -21
  80. package/node/TimeClock/ClockNumber.js +15 -11
  81. package/node/TimeClock/ClockPointer.js +14 -10
  82. package/node/TimeClock/TimeClock.js +9 -8
  83. package/node/TimePicker/TimePickerToolbar.js +14 -17
  84. package/node/hooks/useClearableField.js +4 -2
  85. package/node/index.js +1 -1
  86. package/node/internals/components/PickersPopper.js +18 -20
  87. package/node/internals/components/PickersToolbar.js +15 -12
  88. package/node/internals/components/PickersToolbarButton.js +4 -6
  89. package/node/internals/components/PickersToolbarText.js +10 -12
  90. package/node/internals/hooks/usePicker/usePicker.js +3 -3
  91. package/node/internals/hooks/usePicker/usePickerProvider.js +8 -4
  92. package/node/internals/hooks/usePicker/usePickerViews.js +5 -6
  93. package/node/internals/hooks/useToolbarOwnerState.js +21 -0
  94. package/node/internals/index.js +15 -1
  95. package/node/locales/roRO.js +15 -18
  96. package/package.json +1 -1
@@ -18,12 +18,10 @@ var _useForkRef = _interopRequireDefault(require("@mui/utils/useForkRef"));
18
18
  var _multiSectionDigitalClockSectionClasses = require("./multiSectionDigitalClockSectionClasses");
19
19
  var _dimensions = require("../internals/constants/dimensions");
20
20
  var _utils = require("../internals/utils/utils");
21
+ var _usePickerPrivateContext = require("../internals/hooks/usePickerPrivateContext");
21
22
  var _jsxRuntime = require("react/jsx-runtime");
22
- const _excluded = ["autoFocus", "onChange", "className", "disabled", "readOnly", "items", "active", "slots", "slotProps", "skipDisabled"];
23
- const useUtilityClasses = ownerState => {
24
- const {
25
- classes
26
- } = ownerState;
23
+ const _excluded = ["autoFocus", "onChange", "className", "classes", "disabled", "readOnly", "items", "active", "slots", "slotProps", "skipDisabled"];
24
+ const useUtilityClasses = classes => {
27
25
  const slots = {
28
26
  root: ['root'],
29
27
  item: ['item']
@@ -63,7 +61,7 @@ const MultiSectionDigitalClockSectionRoot = (0, _styles.styled)(_MenuList.defaul
63
61
  },
64
62
  variants: [{
65
63
  props: {
66
- alreadyRendered: true
64
+ hasDigitalClockAlreadyBeenRendered: true
67
65
  },
68
66
  style: {
69
67
  '@media (prefers-reduced-motion: no-preference)': {
@@ -115,6 +113,7 @@ const MultiSectionDigitalClockSection = exports.MultiSectionDigitalClockSection
115
113
  autoFocus,
116
114
  onChange,
117
115
  className,
116
+ classes: classesProp,
118
117
  disabled,
119
118
  readOnly,
120
119
  items,
@@ -124,10 +123,13 @@ const MultiSectionDigitalClockSection = exports.MultiSectionDigitalClockSection
124
123
  skipDisabled
125
124
  } = props,
126
125
  other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
127
- const ownerState = React.useMemo(() => (0, _extends2.default)({}, props, {
128
- alreadyRendered: !!containerRef.current
129
- }), [props]);
130
- const classes = useUtilityClasses(ownerState);
126
+ const {
127
+ ownerState: pickerOwnerState
128
+ } = (0, _usePickerPrivateContext.usePickerPrivateContext)();
129
+ const ownerState = (0, _extends2.default)({}, pickerOwnerState, {
130
+ hasDigitalClockAlreadyBeenRendered: !!containerRef.current
131
+ });
132
+ const classes = useUtilityClasses(classesProp);
131
133
  const DigitalClockSectionItem = slots?.digitalClockSectionItem ?? MultiSectionDigitalClockSectionItem;
132
134
  React.useEffect(() => {
133
135
  if (containerRef.current === null) {
@@ -55,7 +55,7 @@ const PickersLayoutRoot = exports.PickersLayoutRoot = (0, _styles.styled)('div',
55
55
  }, {
56
56
  props: {
57
57
  pickerOrientation: 'landscape',
58
- isRtl: true
58
+ layoutDirection: 'rtl'
59
59
  },
60
60
  style: {
61
61
  [`& .${_pickersLayoutClasses.pickersLayoutClasses.toolbar}`]: {
@@ -79,7 +79,7 @@ const PickersLayoutRoot = exports.PickersLayoutRoot = (0, _styles.styled)('div',
79
79
  }, {
80
80
  props: {
81
81
  pickerOrientation: 'portrait',
82
- isRtl: true
82
+ layoutDirection: 'rtl'
83
83
  },
84
84
  style: {
85
85
  [`& .${_pickersLayoutClasses.pickersLayoutClasses.shortcuts}`]: {
@@ -66,9 +66,9 @@ const usePickerLayout = props => {
66
66
  // - For pickers value: PickerValidDate | null
67
67
  // - For range pickers value: [PickerValidDate | null, PickerValidDate | null]
68
68
  } = props;
69
- const ownerState = (0, _extends2.default)({}, pickerOwnerState, {
70
- isRtl
71
- });
69
+ const ownerState = React.useMemo(() => (0, _extends2.default)({}, pickerOwnerState, {
70
+ layoutDirection: isRtl ? 'rtl' : 'ltr'
71
+ }), [pickerOwnerState, isRtl]);
72
72
  const classes = useUtilityClasses(classesProp, ownerState);
73
73
 
74
74
  // Action bar
@@ -19,20 +19,17 @@ var _useUtils = require("../internals/hooks/useUtils");
19
19
  var _shared = require("./shared");
20
20
  var _clockClasses = require("./clockClasses");
21
21
  var _dateUtils = require("../internals/utils/date-utils");
22
+ var _usePickerPrivateContext = require("../internals/hooks/usePickerPrivateContext");
22
23
  var _jsxRuntime = require("react/jsx-runtime");
23
- const useUtilityClasses = ownerState => {
24
- const {
25
- classes,
26
- meridiemMode
27
- } = ownerState;
24
+ const useUtilityClasses = (classes, ownerState) => {
28
25
  const slots = {
29
26
  root: ['root'],
30
27
  clock: ['clock'],
31
28
  wrapper: ['wrapper'],
32
29
  squareMask: ['squareMask'],
33
30
  pin: ['pin'],
34
- amButton: ['amButton', meridiemMode === 'am' && 'selected'],
35
- pmButton: ['pmButton', meridiemMode === 'pm' && 'selected'],
31
+ amButton: ['amButton', ownerState.clockMeridiemMode === 'am' && 'selected'],
32
+ pmButton: ['pmButton', ownerState.clockMeridiemMode === 'pm' && 'selected'],
36
33
  meridiemText: ['meridiemText']
37
34
  };
38
35
  return (0, _utils.unstable_composeClasses)(slots, _clockClasses.getClockUtilityClass, classes);
@@ -86,7 +83,7 @@ const ClockSquareMask = (0, _styles.styled)('div', {
86
83
  userSelect: 'none',
87
84
  variants: [{
88
85
  props: {
89
- disabled: false
86
+ isClockDisabled: false
90
87
  },
91
88
  style: {
92
89
  '@media (pointer: fine)': {
@@ -190,13 +187,20 @@ function Clock(inProps) {
190
187
  viewValue,
191
188
  disabled = false,
192
189
  readOnly,
193
- className
190
+ className,
191
+ classes: classesProp
194
192
  } = props;
195
- const ownerState = props;
196
193
  const utils = (0, _useUtils.useUtils)();
197
194
  const translations = (0, _usePickerTranslations.usePickerTranslations)();
195
+ const {
196
+ ownerState: pickerOwnerState
197
+ } = (0, _usePickerPrivateContext.usePickerPrivateContext)();
198
+ const ownerState = (0, _extends2.default)({}, pickerOwnerState, {
199
+ isClockDisabled: disabled,
200
+ clockMeridiemMode: meridiemMode
201
+ });
198
202
  const isMoving = React.useRef(false);
199
- const classes = useUtilityClasses(ownerState);
203
+ const classes = useUtilityClasses(classesProp, ownerState);
200
204
  const isSelectedTimeDisabled = isTimeDisabled(viewValue, type);
201
205
  const isPointerInner = !ampm && type === 'hours' && (viewValue < 1 || viewValue > 12);
202
206
  const handleValueChange = (newValue, isFinish) => {
@@ -244,12 +248,7 @@ function Clock(inProps) {
244
248
  }
245
249
  setTime(event.nativeEvent, 'finish');
246
250
  };
247
- const hasSelected = React.useMemo(() => {
248
- if (type === 'hours') {
249
- return true;
250
- }
251
- return viewValue % 5 === 0;
252
- }, [type, viewValue]);
251
+ const isPointerBetweenTwoClockValues = type === 'hours' ? false : viewValue % 5 !== 0;
253
252
  const keyboardControlStep = type === 'minutes' ? minutesStep : 1;
254
253
  const listboxRef = React.useRef(null);
255
254
  // Since this is rendered when a Popper is opened we can't use passive effects.
@@ -310,9 +309,7 @@ function Clock(inProps) {
310
309
  onTouchEnd: handleTouchEnd,
311
310
  onMouseUp: handleMouseUp,
312
311
  onMouseMove: handleMouseMove,
313
- ownerState: {
314
- disabled
315
- },
312
+ ownerState: ownerState,
316
313
  className: classes.squareMask
317
314
  }), !isSelectedTimeDisabled && /*#__PURE__*/(0, _jsxRuntime.jsxs)(React.Fragment, {
318
315
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(ClockPin, {
@@ -321,7 +318,7 @@ function Clock(inProps) {
321
318
  type: type,
322
319
  viewValue: viewValue,
323
320
  isInner: isPointerInner,
324
- hasSelected: hasSelected
321
+ isBetweenTwoClockValues: isPointerBetweenTwoClockValues
325
322
  })]
326
323
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(ClockWrapper, {
327
324
  "aria-activedescendant": selectedId,
@@ -14,16 +14,12 @@ var _styles = require("@mui/material/styles");
14
14
  var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
15
15
  var _shared = require("./shared");
16
16
  var _clockNumberClasses = require("./clockNumberClasses");
17
+ var _usePickerPrivateContext = require("../internals/hooks/usePickerPrivateContext");
17
18
  var _jsxRuntime = require("react/jsx-runtime");
18
- const _excluded = ["className", "disabled", "index", "inner", "label", "selected"];
19
- const useUtilityClasses = ownerState => {
20
- const {
21
- classes,
22
- selected,
23
- disabled
24
- } = ownerState;
19
+ const _excluded = ["className", "classes", "disabled", "index", "inner", "label", "selected"];
20
+ const useUtilityClasses = (classes, ownerState) => {
25
21
  const slots = {
26
- root: ['root', selected && 'selected', disabled && 'disabled']
22
+ root: ['root', ownerState.isClockNumberSelected && 'selected', ownerState.isClockNumberDisabled && 'disabled']
27
23
  };
28
24
  return (0, _composeClasses.default)(slots, _clockNumberClasses.getClockNumberUtilityClass, classes);
29
25
  };
@@ -60,7 +56,7 @@ const ClockNumberRoot = (0, _styles.styled)('span', {
60
56
  },
61
57
  variants: [{
62
58
  props: {
63
- inner: true
59
+ isClockNumberInInnerRing: true
64
60
  },
65
61
  style: (0, _extends2.default)({}, theme.typography.body2, {
66
62
  color: (theme.vars || theme).palette.text.secondary
@@ -78,6 +74,7 @@ function ClockNumber(inProps) {
78
74
  });
79
75
  const {
80
76
  className,
77
+ classes: classesProp,
81
78
  disabled,
82
79
  index,
83
80
  inner,
@@ -85,8 +82,15 @@ function ClockNumber(inProps) {
85
82
  selected
86
83
  } = props,
87
84
  other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
88
- const ownerState = props;
89
- const classes = useUtilityClasses(ownerState);
85
+ const {
86
+ ownerState: pickerOwnerState
87
+ } = (0, _usePickerPrivateContext.usePickerPrivateContext)();
88
+ const ownerState = (0, _extends2.default)({}, pickerOwnerState, {
89
+ isClockNumberInInnerRing: inner,
90
+ isClockNumberSelected: selected,
91
+ isClockNumberDisabled: disabled
92
+ });
93
+ const classes = useUtilityClasses(classesProp, ownerState);
90
94
  const angle = index % 12 / 12 * Math.PI * 2 - Math.PI / 2;
91
95
  const length = (_shared.CLOCK_WIDTH - _shared.CLOCK_HOUR_WIDTH - 2) / 2 * (inner ? 0.65 : 1);
92
96
  const x = Math.round(Math.cos(angle) * length);
@@ -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.3
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
  }));