@mui/x-date-pickers 6.2.0 → 6.2.1

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 (88) hide show
  1. package/CHANGELOG.md +49 -1
  2. package/DesktopDatePicker/DesktopDatePicker.js +1 -0
  3. package/DesktopDateTimePicker/DesktopDateTimePicker.js +1 -0
  4. package/DesktopTimePicker/DesktopTimePicker.js +1 -0
  5. package/LocalizationProvider/LocalizationProvider.d.ts +1 -1
  6. package/LocalizationProvider/LocalizationProvider.js +1 -1
  7. package/MobileDatePicker/MobileDatePicker.js +1 -0
  8. package/MobileDateTimePicker/MobileDateTimePicker.js +1 -0
  9. package/MobileTimePicker/MobileTimePicker.js +1 -0
  10. package/StaticDatePicker/StaticDatePicker.js +1 -0
  11. package/StaticDateTimePicker/StaticDateTimePicker.js +3 -2
  12. package/StaticTimePicker/StaticTimePicker.js +3 -2
  13. package/index.js +1 -1
  14. package/internals/hooks/useDesktopPicker/useDesktopPicker.d.ts +1 -1
  15. package/internals/hooks/useDesktopPicker/useDesktopPicker.js +13 -14
  16. package/internals/hooks/useDesktopPicker/useDesktopPicker.types.d.ts +1 -1
  17. package/internals/hooks/useField/useField.types.d.ts +1 -2
  18. package/internals/hooks/useField/useField.utils.d.ts +2 -2
  19. package/internals/hooks/useField/useFieldState.js +1 -1
  20. package/internals/hooks/useMobilePicker/useMobilePicker.d.ts +1 -1
  21. package/internals/hooks/useMobilePicker/useMobilePicker.js +10 -10
  22. package/internals/hooks/useMobilePicker/useMobilePicker.types.d.ts +1 -1
  23. package/internals/hooks/usePicker/usePicker.d.ts +1 -1
  24. package/internals/hooks/usePicker/usePicker.js +2 -0
  25. package/internals/hooks/usePicker/usePicker.types.d.ts +1 -1
  26. package/internals/hooks/usePicker/usePickerValue.d.ts +1 -1
  27. package/internals/hooks/usePicker/usePickerValue.js +9 -11
  28. package/internals/hooks/usePicker/usePickerValue.types.d.ts +4 -2
  29. package/internals/hooks/useStaticPicker/useStaticPicker.d.ts +1 -1
  30. package/internals/hooks/useStaticPicker/useStaticPicker.js +10 -10
  31. package/internals/hooks/useStaticPicker/useStaticPicker.types.d.ts +1 -1
  32. package/internals/utils/valueManagers.js +1 -1
  33. package/legacy/DesktopDatePicker/DesktopDatePicker.js +1 -0
  34. package/legacy/DesktopDateTimePicker/DesktopDateTimePicker.js +1 -0
  35. package/legacy/DesktopTimePicker/DesktopTimePicker.js +1 -0
  36. package/legacy/LocalizationProvider/LocalizationProvider.js +1 -1
  37. package/legacy/MobileDatePicker/MobileDatePicker.js +1 -0
  38. package/legacy/MobileDateTimePicker/MobileDateTimePicker.js +1 -0
  39. package/legacy/MobileTimePicker/MobileTimePicker.js +1 -0
  40. package/legacy/StaticDatePicker/StaticDatePicker.js +1 -0
  41. package/legacy/StaticDateTimePicker/StaticDateTimePicker.js +3 -2
  42. package/legacy/StaticTimePicker/StaticTimePicker.js +3 -2
  43. package/legacy/index.js +1 -1
  44. package/legacy/internals/hooks/useDesktopPicker/useDesktopPicker.js +8 -10
  45. package/legacy/internals/hooks/useField/useFieldState.js +1 -1
  46. package/legacy/internals/hooks/useMobilePicker/useMobilePicker.js +5 -6
  47. package/legacy/internals/hooks/usePicker/usePicker.js +2 -0
  48. package/legacy/internals/hooks/usePicker/usePickerValue.js +9 -13
  49. package/legacy/internals/hooks/useStaticPicker/useStaticPicker.js +7 -8
  50. package/legacy/internals/utils/valueManagers.js +2 -2
  51. package/models/fields.d.ts +1 -0
  52. package/modern/DesktopDatePicker/DesktopDatePicker.js +1 -0
  53. package/modern/DesktopDateTimePicker/DesktopDateTimePicker.js +1 -0
  54. package/modern/DesktopTimePicker/DesktopTimePicker.js +1 -0
  55. package/modern/LocalizationProvider/LocalizationProvider.js +1 -1
  56. package/modern/MobileDatePicker/MobileDatePicker.js +1 -0
  57. package/modern/MobileDateTimePicker/MobileDateTimePicker.js +1 -0
  58. package/modern/MobileTimePicker/MobileTimePicker.js +1 -0
  59. package/modern/StaticDatePicker/StaticDatePicker.js +1 -0
  60. package/modern/StaticDateTimePicker/StaticDateTimePicker.js +3 -2
  61. package/modern/StaticTimePicker/StaticTimePicker.js +3 -2
  62. package/modern/index.js +1 -1
  63. package/modern/internals/hooks/useDesktopPicker/useDesktopPicker.js +13 -14
  64. package/modern/internals/hooks/useField/useFieldState.js +1 -1
  65. package/modern/internals/hooks/useMobilePicker/useMobilePicker.js +10 -10
  66. package/modern/internals/hooks/usePicker/usePicker.js +2 -0
  67. package/modern/internals/hooks/usePicker/usePickerValue.js +9 -11
  68. package/modern/internals/hooks/useStaticPicker/useStaticPicker.js +10 -10
  69. package/modern/internals/utils/valueManagers.js +1 -1
  70. package/node/DesktopDatePicker/DesktopDatePicker.js +1 -0
  71. package/node/DesktopDateTimePicker/DesktopDateTimePicker.js +1 -0
  72. package/node/DesktopTimePicker/DesktopTimePicker.js +1 -0
  73. package/node/LocalizationProvider/LocalizationProvider.js +1 -1
  74. package/node/MobileDatePicker/MobileDatePicker.js +1 -0
  75. package/node/MobileDateTimePicker/MobileDateTimePicker.js +1 -0
  76. package/node/MobileTimePicker/MobileTimePicker.js +1 -0
  77. package/node/StaticDatePicker/StaticDatePicker.js +1 -0
  78. package/node/StaticDateTimePicker/StaticDateTimePicker.js +3 -2
  79. package/node/StaticTimePicker/StaticTimePicker.js +3 -2
  80. package/node/index.js +1 -1
  81. package/node/internals/hooks/useDesktopPicker/useDesktopPicker.js +13 -14
  82. package/node/internals/hooks/useField/useFieldState.js +1 -1
  83. package/node/internals/hooks/useMobilePicker/useMobilePicker.js +10 -10
  84. package/node/internals/hooks/usePicker/usePicker.js +2 -0
  85. package/node/internals/hooks/usePicker/usePickerValue.js +9 -11
  86. package/node/internals/hooks/useStaticPicker/useStaticPicker.js +10 -10
  87. package/node/internals/utils/valueManagers.js +1 -1
  88. package/package.json +1 -1
@@ -40,8 +40,9 @@ var StaticDateTimePicker = /*#__PURE__*/React.forwardRef(function StaticDateTime
40
40
  var _useStaticPicker = useStaticPicker({
41
41
  props: props,
42
42
  valueManager: singleItemValueManager,
43
- ref: ref,
44
- validator: validateDateTime
43
+ valueType: 'date-time',
44
+ validator: validateDateTime,
45
+ ref: ref
45
46
  }),
46
47
  renderPicker = _useStaticPicker.renderPicker;
47
48
  return renderPicker();
@@ -32,8 +32,9 @@ var StaticTimePicker = /*#__PURE__*/React.forwardRef(function StaticTimePicker(i
32
32
  var _useStaticPicker = useStaticPicker({
33
33
  props: props,
34
34
  valueManager: singleItemValueManager,
35
- ref: ref,
36
- validator: validateTime
35
+ valueType: 'time',
36
+ validator: validateTime,
37
+ ref: ref
37
38
  }),
38
39
  renderPicker = _useStaticPicker.renderPicker;
39
40
  return renderPicker();
package/legacy/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-date-pickers v6.2.0
2
+ * @mui/x-date-pickers v6.2.1
3
3
  *
4
4
  * @license MIT
5
5
  * This source code is licensed under the MIT license found in the
@@ -1,8 +1,9 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
2
  import _extends from "@babel/runtime/helpers/esm/extends";
3
3
  import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
4
- var _excluded = ["ownerState"],
5
- _excluded2 = ["ownerState"];
4
+ var _excluded = ["props", "getOpenDialogAriaText"],
5
+ _excluded2 = ["ownerState"],
6
+ _excluded3 = ["ownerState"];
6
7
  import * as React from 'react';
7
8
  import { useSlotProps } from '@mui/base/utils';
8
9
  import MuiInputAdornment from '@mui/material/InputAdornment';
@@ -25,9 +26,8 @@ import { jsxs as _jsxs } from "react/jsx-runtime";
25
26
  export var useDesktopPicker = function useDesktopPicker(_ref) {
26
27
  var _innerSlotProps$toolb, _innerSlotProps$toolb2, _slots$inputAdornment, _slots$openPickerButt, _slots$layout;
27
28
  var props = _ref.props,
28
- valueManager = _ref.valueManager,
29
29
  getOpenDialogAriaText = _ref.getOpenDialogAriaText,
30
- validator = _ref.validator;
30
+ pickerParams = _objectWithoutProperties(_ref, _excluded);
31
31
  var slots = props.slots,
32
32
  innerSlotProps = props.slotProps,
33
33
  className = props.className,
@@ -45,15 +45,13 @@ export var useDesktopPicker = function useDesktopPicker(_ref) {
45
45
  var containerRef = React.useRef(null);
46
46
  var labelId = useId();
47
47
  var isToolbarHidden = (_innerSlotProps$toolb = innerSlotProps == null ? void 0 : (_innerSlotProps$toolb2 = innerSlotProps.toolbar) == null ? void 0 : _innerSlotProps$toolb2.hidden) != null ? _innerSlotProps$toolb : false;
48
- var _usePicker = usePicker({
48
+ var _usePicker = usePicker(_extends({}, pickerParams, {
49
49
  props: props,
50
50
  inputRef: internalInputRef,
51
- valueManager: valueManager,
52
- validator: validator,
53
51
  autoFocusView: true,
54
52
  additionalViewProps: {},
55
53
  wrapperVariant: 'desktop'
56
- }),
54
+ })),
57
55
  open = _usePicker.open,
58
56
  actions = _usePicker.actions,
59
57
  hasUIView = _usePicker.hasUIView,
@@ -71,7 +69,7 @@ export var useDesktopPicker = function useDesktopPicker(_ref) {
71
69
  ownerState: props
72
70
  }),
73
71
  inputAdornmentOwnerState = _useSlotProps.ownerState,
74
- inputAdornmentProps = _objectWithoutProperties(_useSlotProps, _excluded);
72
+ inputAdornmentProps = _objectWithoutProperties(_useSlotProps, _excluded2);
75
73
  var OpenPickerButton = (_slots$openPickerButt = slots.openPickerButton) != null ? _slots$openPickerButt : IconButton;
76
74
  var _useSlotProps2 = useSlotProps({
77
75
  elementType: OpenPickerButton,
@@ -85,7 +83,7 @@ export var useDesktopPicker = function useDesktopPicker(_ref) {
85
83
  ownerState: props
86
84
  }),
87
85
  openPickerButtonOwnerState = _useSlotProps2.ownerState,
88
- openPickerButtonProps = _objectWithoutProperties(_useSlotProps2, _excluded2);
86
+ openPickerButtonProps = _objectWithoutProperties(_useSlotProps2, _excluded3);
89
87
  var OpenPickerIcon = slots.openPickerIcon;
90
88
  var Field = slots.field;
91
89
  var fieldProps = useSlotProps({
@@ -47,7 +47,7 @@ export var useFieldState = function useFieldState(params) {
47
47
  return {
48
48
  sections: sections,
49
49
  value: valueFromTheOutside,
50
- referenceValue: fieldValueManager.updateReferenceValue(utils, valueFromTheOutside, valueManager.getTodayValue(utils)),
50
+ referenceValue: fieldValueManager.updateReferenceValue(utils, valueFromTheOutside, valueManager.getTodayValue(utils, valueType)),
51
51
  tempValueStrAndroid: null
52
52
  };
53
53
  }),
@@ -1,4 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
3
+ var _excluded = ["props", "getOpenDialogAriaText"];
2
4
  import * as React from 'react';
3
5
  import { useSlotProps } from '@mui/base/utils';
4
6
  import useForkRef from '@mui/utils/useForkRef';
@@ -20,9 +22,8 @@ import { jsxs as _jsxs } from "react/jsx-runtime";
20
22
  export var useMobilePicker = function useMobilePicker(_ref) {
21
23
  var _innerSlotProps$toolb, _innerSlotProps$toolb2, _slots$layout;
22
24
  var props = _ref.props,
23
- valueManager = _ref.valueManager,
24
25
  getOpenDialogAriaText = _ref.getOpenDialogAriaText,
25
- validator = _ref.validator;
26
+ pickerParams = _objectWithoutProperties(_ref, _excluded);
26
27
  var slots = props.slots,
27
28
  innerSlotProps = props.slotProps,
28
29
  className = props.className,
@@ -38,15 +39,13 @@ export var useMobilePicker = function useMobilePicker(_ref) {
38
39
  var internalInputRef = React.useRef(null);
39
40
  var labelId = useId();
40
41
  var isToolbarHidden = (_innerSlotProps$toolb = innerSlotProps == null ? void 0 : (_innerSlotProps$toolb2 = innerSlotProps.toolbar) == null ? void 0 : _innerSlotProps$toolb2.hidden) != null ? _innerSlotProps$toolb : false;
41
- var _usePicker = usePicker({
42
+ var _usePicker = usePicker(_extends({}, pickerParams, {
42
43
  props: props,
43
44
  inputRef: internalInputRef,
44
- valueManager: valueManager,
45
- validator: validator,
46
45
  autoFocusView: true,
47
46
  additionalViewProps: {},
48
47
  wrapperVariant: 'mobile'
49
- }),
48
+ })),
50
49
  open = _usePicker.open,
51
50
  actions = _usePicker.actions,
52
51
  layoutProps = _usePicker.layoutProps,
@@ -6,6 +6,7 @@ var warnRenderInputIsDefined = buildWarning(['The `renderInput` prop has been re
6
6
  export var usePicker = function usePicker(_ref) {
7
7
  var props = _ref.props,
8
8
  valueManager = _ref.valueManager,
9
+ valueType = _ref.valueType,
9
10
  wrapperVariant = _ref.wrapperVariant,
10
11
  inputRef = _ref.inputRef,
11
12
  additionalViewProps = _ref.additionalViewProps,
@@ -19,6 +20,7 @@ export var usePicker = function usePicker(_ref) {
19
20
  var pickerValueResponse = usePickerValue({
20
21
  props: props,
21
22
  valueManager: valueManager,
23
+ valueType: valueType,
22
24
  wrapperVariant: wrapperVariant,
23
25
  validator: validator
24
26
  });
@@ -92,6 +92,7 @@ var shouldClosePicker = function shouldClosePicker(params) {
92
92
  export var usePickerValue = function usePickerValue(_ref) {
93
93
  var props = _ref.props,
94
94
  valueManager = _ref.valueManager,
95
+ valueType = _ref.valueType,
95
96
  wrapperVariant = _ref.wrapperVariant,
96
97
  validator = _ref.validator;
97
98
  var onAccept = props.onAccept,
@@ -200,21 +201,16 @@ export var usePickerValue = function usePickerValue(_ref) {
200
201
  setIsOpen(false);
201
202
  }
202
203
  });
203
- React.useEffect(function () {
204
- if (isOpen) {
205
- setDateState(function (prev) {
206
- return _extends({}, prev, {
207
- lastCommittedValue: dateState.draft
208
- });
209
- });
210
- }
211
- }, [isOpen]); // eslint-disable-line react-hooks/exhaustive-deps
212
-
213
204
  if (inValue !== undefined && (dateState.lastControlledValue === undefined || !valueManager.areValuesEqual(utils, dateState.lastControlledValue, inValue))) {
205
+ var isUpdateComingFromPicker = valueManager.areValuesEqual(utils, dateState.draft, inValue);
214
206
  setDateState(function (prev) {
215
207
  return _extends({}, prev, {
216
- lastControlledValue: inValue,
217
- draft: inValue
208
+ lastControlledValue: inValue
209
+ }, isUpdateComingFromPicker ? {} : {
210
+ lastCommittedValue: inValue,
211
+ lastPublishedValue: inValue,
212
+ draft: inValue,
213
+ hasBeenModifiedSinceMount: true
218
214
  });
219
215
  });
220
216
  }
@@ -248,7 +244,7 @@ export var usePickerValue = function usePickerValue(_ref) {
248
244
  });
249
245
  var handleSetToday = useEventCallback(function () {
250
246
  updateDate({
251
- value: valueManager.getTodayValue(utils),
247
+ value: valueManager.getTodayValue(utils, valueType),
252
248
  name: 'setValueFromAction',
253
249
  pickerAction: 'today'
254
250
  });
@@ -1,5 +1,7 @@
1
- import _extends from "@babel/runtime/helpers/esm/extends";
2
1
  import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
2
+ import _extends from "@babel/runtime/helpers/esm/extends";
3
+ import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
4
+ var _excluded = ["props", "ref"];
3
5
  import * as React from 'react';
4
6
  import clsx from 'clsx';
5
7
  import { styled } from '@mui/material/styles';
@@ -26,9 +28,8 @@ var PickerStaticLayout = styled(PickersLayout)(function (_ref) {
26
28
  export var useStaticPicker = function useStaticPicker(_ref2) {
27
29
  var _slots$layout;
28
30
  var props = _ref2.props,
29
- valueManager = _ref2.valueManager,
30
- validator = _ref2.validator,
31
- ref = _ref2.ref;
31
+ ref = _ref2.ref,
32
+ pickerParams = _objectWithoutProperties(_ref2, _excluded);
32
33
  var localeText = props.localeText,
33
34
  slots = props.slots,
34
35
  slotProps = props.slotProps,
@@ -36,14 +37,12 @@ export var useStaticPicker = function useStaticPicker(_ref2) {
36
37
  sx = props.sx,
37
38
  displayStaticWrapperAs = props.displayStaticWrapperAs,
38
39
  autoFocus = props.autoFocus;
39
- var _usePicker = usePicker({
40
+ var _usePicker = usePicker(_extends({}, pickerParams, {
40
41
  props: props,
41
- valueManager: valueManager,
42
- validator: validator,
43
42
  autoFocusView: autoFocus != null ? autoFocus : false,
44
43
  additionalViewProps: {},
45
44
  wrapperVariant: displayStaticWrapperAs
46
- }),
45
+ })),
47
46
  layoutProps = _usePicker.layoutProps,
48
47
  renderCurrentView = _usePicker.renderCurrentView;
49
48
  var Layout = (_slots$layout = slots == null ? void 0 : slots.layout) != null ? _slots$layout : PickerStaticLayout;
@@ -2,8 +2,8 @@ import { areDatesEqual, replaceInvalidDateByNull } from './date-utils';
2
2
  import { addPositionPropertiesToSections, createDateStrForInputFromSections } from '../hooks/useField/useField.utils';
3
3
  export var singleItemValueManager = {
4
4
  emptyValue: null,
5
- getTodayValue: function getTodayValue(utils) {
6
- return utils.date();
5
+ getTodayValue: function getTodayValue(utils, valueType) {
6
+ return valueType === 'date' ? utils.startOfDay(utils.date()) : utils.date();
7
7
  },
8
8
  cleanValue: replaceInvalidDateByNull,
9
9
  areValuesEqual: areDatesEqual,
@@ -1,6 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import type { BaseFieldProps } from '../internals/models/fields';
3
3
  export type FieldSectionType = 'year' | 'month' | 'day' | 'weekDay' | 'hours' | 'minutes' | 'seconds' | 'meridiem';
4
+ export type FieldValueType = 'date' | 'time' | 'date-time';
4
5
  export interface FieldSection {
5
6
  /**
6
7
  * Value of the section, as rendered inside the input.
@@ -45,6 +45,7 @@ const DesktopDatePicker = /*#__PURE__*/React.forwardRef(function DesktopDatePick
45
45
  } = useDesktopPicker({
46
46
  props,
47
47
  valueManager: singleItemValueManager,
48
+ valueType: 'date',
48
49
  getOpenDialogAriaText: localeText.openDatePickerDialogue,
49
50
  validator: validateDate
50
51
  });
@@ -53,6 +53,7 @@ const DesktopDateTimePicker = /*#__PURE__*/React.forwardRef(function DesktopDate
53
53
  } = useDesktopPicker({
54
54
  props,
55
55
  valueManager: singleItemValueManager,
56
+ valueType: 'date-time',
56
57
  getOpenDialogAriaText: localeText.openDatePickerDialogue,
57
58
  validator: validateDateTime
58
59
  });
@@ -45,6 +45,7 @@ const DesktopTimePicker = /*#__PURE__*/React.forwardRef(function DesktopTimePick
45
45
  } = useDesktopPicker({
46
46
  props,
47
47
  valueManager: singleItemValueManager,
48
+ valueType: 'time',
48
49
  getOpenDialogAriaText: localeText.openTimePickerDialogue,
49
50
  validator: validateTime
50
51
  });
@@ -89,7 +89,7 @@ process.env.NODE_ENV !== "production" ? LocalizationProvider.propTypes = {
89
89
  children: PropTypes.node,
90
90
  /**
91
91
  * Date library adapter class function.
92
- * @see See the localization provider {@link https://mui.com/x/react-date-pickers/getting-started/#code-setup code setup section} for more details.
92
+ * @see See the localization provider {@link https://mui.com/x/react-date-pickers/getting-started/#setup-your-date-library-adapter date adapter setup section} for more details.
93
93
  */
94
94
  dateAdapter: PropTypes.func,
95
95
  /**
@@ -42,6 +42,7 @@ const MobileDatePicker = /*#__PURE__*/React.forwardRef(function MobileDatePicker
42
42
  } = useMobilePicker({
43
43
  props,
44
44
  valueManager: singleItemValueManager,
45
+ valueType: 'date',
45
46
  getOpenDialogAriaText: localeText.openDatePickerDialogue,
46
47
  validator: validateDate
47
48
  });
@@ -51,6 +51,7 @@ const MobileDateTimePicker = /*#__PURE__*/React.forwardRef(function MobileDateTi
51
51
  } = useMobilePicker({
52
52
  props,
53
53
  valueManager: singleItemValueManager,
54
+ valueType: 'date-time',
54
55
  getOpenDialogAriaText: localeText.openDatePickerDialogue,
55
56
  validator: validateDateTime
56
57
  });
@@ -44,6 +44,7 @@ const MobileTimePicker = /*#__PURE__*/React.forwardRef(function MobileTimePicker
44
44
  } = useMobilePicker({
45
45
  props,
46
46
  valueManager: singleItemValueManager,
47
+ valueType: 'time',
47
48
  getOpenDialogAriaText: localeText.openTimePickerDialogue,
48
49
  validator: validateTime
49
50
  });
@@ -31,6 +31,7 @@ const StaticDatePicker = /*#__PURE__*/React.forwardRef(function StaticDatePicker
31
31
  } = useStaticPicker({
32
32
  props,
33
33
  valueManager: singleItemValueManager,
34
+ valueType: 'date',
34
35
  validator: validateDate,
35
36
  ref
36
37
  });
@@ -41,8 +41,9 @@ const StaticDateTimePicker = /*#__PURE__*/React.forwardRef(function StaticDateTi
41
41
  } = useStaticPicker({
42
42
  props,
43
43
  valueManager: singleItemValueManager,
44
- ref,
45
- validator: validateDateTime
44
+ valueType: 'date-time',
45
+ validator: validateDateTime,
46
+ ref
46
47
  });
47
48
  return renderPicker();
48
49
  });
@@ -33,8 +33,9 @@ const StaticTimePicker = /*#__PURE__*/React.forwardRef(function StaticTimePicker
33
33
  } = useStaticPicker({
34
34
  props,
35
35
  valueManager: singleItemValueManager,
36
- ref,
37
- validator: validateTime
36
+ valueType: 'time',
37
+ validator: validateTime,
38
+ ref
38
39
  });
39
40
  return renderPicker();
40
41
  });
package/modern/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-date-pickers v6.2.0
2
+ * @mui/x-date-pickers v6.2.1
3
3
  *
4
4
  * @license MIT
5
5
  * This source code is licensed under the MIT license found in the
@@ -1,7 +1,8 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
- const _excluded = ["ownerState"],
4
- _excluded2 = ["ownerState"];
3
+ const _excluded = ["props", "getOpenDialogAriaText"],
4
+ _excluded2 = ["ownerState"],
5
+ _excluded3 = ["ownerState"];
5
6
  import * as React from 'react';
6
7
  import { useSlotProps } from '@mui/base/utils';
7
8
  import MuiInputAdornment from '@mui/material/InputAdornment';
@@ -21,12 +22,12 @@ import { jsxs as _jsxs } from "react/jsx-runtime";
21
22
  * - DesktopDateTimePicker
22
23
  * - DesktopTimePicker
23
24
  */
24
- export const useDesktopPicker = ({
25
- props,
26
- valueManager,
27
- getOpenDialogAriaText,
28
- validator
29
- }) => {
25
+ export const useDesktopPicker = _ref => {
26
+ let {
27
+ props,
28
+ getOpenDialogAriaText
29
+ } = _ref,
30
+ pickerParams = _objectWithoutPropertiesLoose(_ref, _excluded);
30
31
  const {
31
32
  slots,
32
33
  slotProps: innerSlotProps,
@@ -54,15 +55,13 @@ export const useDesktopPicker = ({
54
55
  renderCurrentView,
55
56
  shouldRestoreFocus,
56
57
  fieldProps: pickerFieldProps
57
- } = usePicker({
58
+ } = usePicker(_extends({}, pickerParams, {
58
59
  props,
59
60
  inputRef: internalInputRef,
60
- valueManager,
61
- validator,
62
61
  autoFocusView: true,
63
62
  additionalViewProps: {},
64
63
  wrapperVariant: 'desktop'
65
- });
64
+ }));
66
65
  const InputAdornment = slots.inputAdornment ?? MuiInputAdornment;
67
66
  const _useSlotProps = useSlotProps({
68
67
  elementType: InputAdornment,
@@ -72,7 +71,7 @@ export const useDesktopPicker = ({
72
71
  },
73
72
  ownerState: props
74
73
  }),
75
- inputAdornmentProps = _objectWithoutPropertiesLoose(_useSlotProps, _excluded);
74
+ inputAdornmentProps = _objectWithoutPropertiesLoose(_useSlotProps, _excluded2);
76
75
  const OpenPickerButton = slots.openPickerButton ?? IconButton;
77
76
  const _useSlotProps2 = useSlotProps({
78
77
  elementType: OpenPickerButton,
@@ -85,7 +84,7 @@ export const useDesktopPicker = ({
85
84
  },
86
85
  ownerState: props
87
86
  }),
88
- openPickerButtonProps = _objectWithoutPropertiesLoose(_useSlotProps2, _excluded2);
87
+ openPickerButtonProps = _objectWithoutPropertiesLoose(_useSlotProps2, _excluded3);
89
88
  const OpenPickerIcon = slots.openPickerIcon;
90
89
  const Field = slots.field;
91
90
  const fieldProps = useSlotProps({
@@ -37,7 +37,7 @@ export const useFieldState = params => {
37
37
  return {
38
38
  sections,
39
39
  value: valueFromTheOutside,
40
- referenceValue: fieldValueManager.updateReferenceValue(utils, valueFromTheOutside, valueManager.getTodayValue(utils)),
40
+ referenceValue: fieldValueManager.updateReferenceValue(utils, valueFromTheOutside, valueManager.getTodayValue(utils, valueType)),
41
41
  tempValueStrAndroid: null
42
42
  };
43
43
  });
@@ -1,4 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
+ const _excluded = ["props", "getOpenDialogAriaText"];
2
4
  import * as React from 'react';
3
5
  import { useSlotProps } from '@mui/base/utils';
4
6
  import useForkRef from '@mui/utils/useForkRef';
@@ -17,12 +19,12 @@ import { jsxs as _jsxs } from "react/jsx-runtime";
17
19
  * - MobileDateTimePicker
18
20
  * - MobileTimePicker
19
21
  */
20
- export const useMobilePicker = ({
21
- props,
22
- valueManager,
23
- getOpenDialogAriaText,
24
- validator
25
- }) => {
22
+ export const useMobilePicker = _ref => {
23
+ let {
24
+ props,
25
+ getOpenDialogAriaText
26
+ } = _ref,
27
+ pickerParams = _objectWithoutPropertiesLoose(_ref, _excluded);
26
28
  const {
27
29
  slots,
28
30
  slotProps: innerSlotProps,
@@ -46,15 +48,13 @@ export const useMobilePicker = ({
46
48
  layoutProps,
47
49
  renderCurrentView,
48
50
  fieldProps: pickerFieldProps
49
- } = usePicker({
51
+ } = usePicker(_extends({}, pickerParams, {
50
52
  props,
51
53
  inputRef: internalInputRef,
52
- valueManager,
53
- validator,
54
54
  autoFocusView: true,
55
55
  additionalViewProps: {},
56
56
  wrapperVariant: 'mobile'
57
- });
57
+ }));
58
58
  const Field = slots.field;
59
59
  const fieldProps = useSlotProps({
60
60
  elementType: Field,
@@ -6,6 +6,7 @@ const warnRenderInputIsDefined = buildWarning(['The `renderInput` prop has been
6
6
  export const usePicker = ({
7
7
  props,
8
8
  valueManager,
9
+ valueType,
9
10
  wrapperVariant,
10
11
  inputRef,
11
12
  additionalViewProps,
@@ -20,6 +21,7 @@ export const usePicker = ({
20
21
  const pickerValueResponse = usePickerValue({
21
22
  props,
22
23
  valueManager,
24
+ valueType,
23
25
  wrapperVariant,
24
26
  validator
25
27
  });
@@ -97,6 +97,7 @@ const shouldClosePicker = params => {
97
97
  export const usePickerValue = ({
98
98
  props,
99
99
  valueManager,
100
+ valueType,
100
101
  wrapperVariant,
101
102
  validator
102
103
  }) => {
@@ -200,18 +201,15 @@ export const usePickerValue = ({
200
201
  setIsOpen(false);
201
202
  }
202
203
  });
203
- React.useEffect(() => {
204
- if (isOpen) {
205
- setDateState(prev => _extends({}, prev, {
206
- lastCommittedValue: dateState.draft
207
- }));
208
- }
209
- }, [isOpen]); // eslint-disable-line react-hooks/exhaustive-deps
210
-
211
204
  if (inValue !== undefined && (dateState.lastControlledValue === undefined || !valueManager.areValuesEqual(utils, dateState.lastControlledValue, inValue))) {
205
+ const isUpdateComingFromPicker = valueManager.areValuesEqual(utils, dateState.draft, inValue);
212
206
  setDateState(prev => _extends({}, prev, {
213
- lastControlledValue: inValue,
214
- draft: inValue
207
+ lastControlledValue: inValue
208
+ }, isUpdateComingFromPicker ? {} : {
209
+ lastCommittedValue: inValue,
210
+ lastPublishedValue: inValue,
211
+ draft: inValue,
212
+ hasBeenModifiedSinceMount: true
215
213
  }));
216
214
  }
217
215
  const handleClear = useEventCallback(() => {
@@ -244,7 +242,7 @@ export const usePickerValue = ({
244
242
  });
245
243
  const handleSetToday = useEventCallback(() => {
246
244
  updateDate({
247
- value: valueManager.getTodayValue(utils),
245
+ value: valueManager.getTodayValue(utils, valueType),
248
246
  name: 'setValueFromAction',
249
247
  pickerAction: 'today'
250
248
  });
@@ -1,4 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
+ const _excluded = ["props", "ref"];
2
4
  import * as React from 'react';
3
5
  import clsx from 'clsx';
4
6
  import { styled } from '@mui/material/styles';
@@ -21,12 +23,12 @@ const PickerStaticLayout = styled(PickersLayout)(({
21
23
  * - StaticDateTimePicker
22
24
  * - StaticTimePicker
23
25
  */
24
- export const useStaticPicker = ({
25
- props,
26
- valueManager,
27
- validator,
28
- ref
29
- }) => {
26
+ export const useStaticPicker = _ref => {
27
+ let {
28
+ props,
29
+ ref
30
+ } = _ref,
31
+ pickerParams = _objectWithoutPropertiesLoose(_ref, _excluded);
30
32
  const {
31
33
  localeText,
32
34
  slots,
@@ -39,14 +41,12 @@ export const useStaticPicker = ({
39
41
  const {
40
42
  layoutProps,
41
43
  renderCurrentView
42
- } = usePicker({
44
+ } = usePicker(_extends({}, pickerParams, {
43
45
  props,
44
- valueManager,
45
- validator,
46
46
  autoFocusView: autoFocus ?? false,
47
47
  additionalViewProps: {},
48
48
  wrapperVariant: displayStaticWrapperAs
49
- });
49
+ }));
50
50
  const Layout = slots?.layout ?? PickerStaticLayout;
51
51
  const renderPicker = () => /*#__PURE__*/_jsx(LocalizationProvider, {
52
52
  localeText: localeText,
@@ -2,7 +2,7 @@ import { areDatesEqual, replaceInvalidDateByNull } from './date-utils';
2
2
  import { addPositionPropertiesToSections, createDateStrForInputFromSections } from '../hooks/useField/useField.utils';
3
3
  export const singleItemValueManager = {
4
4
  emptyValue: null,
5
- getTodayValue: utils => utils.date(),
5
+ getTodayValue: (utils, valueType) => valueType === 'date' ? utils.startOfDay(utils.date()) : utils.date(),
6
6
  cleanValue: replaceInvalidDateByNull,
7
7
  areValuesEqual: areDatesEqual,
8
8
  isSameError: (a, b) => a === b,
@@ -54,6 +54,7 @@ const DesktopDatePicker = /*#__PURE__*/React.forwardRef(function DesktopDatePick
54
54
  } = (0, _useDesktopPicker.useDesktopPicker)({
55
55
  props,
56
56
  valueManager: _valueManagers.singleItemValueManager,
57
+ valueType: 'date',
57
58
  getOpenDialogAriaText: localeText.openDatePickerDialogue,
58
59
  validator: _internals.validateDate
59
60
  });
@@ -62,6 +62,7 @@ const DesktopDateTimePicker = /*#__PURE__*/React.forwardRef(function DesktopDate
62
62
  } = (0, _useDesktopPicker.useDesktopPicker)({
63
63
  props,
64
64
  valueManager: _valueManagers.singleItemValueManager,
65
+ valueType: 'date-time',
65
66
  getOpenDialogAriaText: localeText.openDatePickerDialogue,
66
67
  validator: _internals.validateDateTime
67
68
  });
@@ -54,6 +54,7 @@ const DesktopTimePicker = /*#__PURE__*/React.forwardRef(function DesktopTimePick
54
54
  } = (0, _useDesktopPicker.useDesktopPicker)({
55
55
  props,
56
56
  valueManager: _valueManagers.singleItemValueManager,
57
+ valueType: 'time',
57
58
  getOpenDialogAriaText: localeText.openTimePickerDialogue,
58
59
  validator: _internals.validateTime
59
60
  });
@@ -100,7 +100,7 @@ process.env.NODE_ENV !== "production" ? LocalizationProvider.propTypes = {
100
100
  children: _propTypes.default.node,
101
101
  /**
102
102
  * Date library adapter class function.
103
- * @see See the localization provider {@link https://mui.com/x/react-date-pickers/getting-started/#code-setup code setup section} for more details.
103
+ * @see See the localization provider {@link https://mui.com/x/react-date-pickers/getting-started/#setup-your-date-library-adapter date adapter setup section} for more details.
104
104
  */
105
105
  dateAdapter: _propTypes.default.func,
106
106
  /**
@@ -51,6 +51,7 @@ const MobileDatePicker = /*#__PURE__*/React.forwardRef(function MobileDatePicker
51
51
  } = (0, _useMobilePicker.useMobilePicker)({
52
52
  props,
53
53
  valueManager: _valueManagers.singleItemValueManager,
54
+ valueType: 'date',
54
55
  getOpenDialogAriaText: localeText.openDatePickerDialogue,
55
56
  validator: _internals.validateDate
56
57
  });