@mui/x-date-pickers 6.6.0 → 6.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AdapterDateFns/AdapterDateFns.js +20 -19
- package/AdapterDateFnsJalali/AdapterDateFnsJalali.js +17 -16
- package/AdapterDayjs/AdapterDayjs.js +12 -11
- package/AdapterLuxon/AdapterLuxon.js +20 -19
- package/AdapterMoment/AdapterMoment.js +12 -11
- package/AdapterMomentHijri/AdapterMomentHijri.js +20 -19
- package/AdapterMomentJalaali/AdapterMomentJalaali.js +20 -19
- package/CHANGELOG.md +147 -13
- package/DateCalendar/DateCalendar.js +16 -6
- package/DateCalendar/DateCalendar.types.d.ts +6 -1
- package/DateCalendar/useCalendarState.d.ts +3 -2
- package/DateCalendar/useCalendarState.js +36 -15
- package/DateField/DateField.js +1 -1
- package/DatePicker/DatePicker.js +1 -1
- package/DatePicker/DatePickerToolbar.js +6 -15
- package/DatePicker/shared.d.ts +1 -5
- package/DatePicker/shared.js +1 -16
- package/DateTimeField/DateTimeField.js +1 -1
- package/DateTimePicker/DateTimePicker.js +1 -1
- package/DesktopDatePicker/DesktopDatePicker.js +4 -3
- package/DesktopDateTimePicker/DesktopDateTimePicker.js +6 -2
- package/DesktopTimePicker/DesktopTimePicker.js +5 -1
- package/LocalizationProvider/LocalizationProvider.js +1 -0
- package/MobileDatePicker/MobileDatePicker.js +4 -3
- package/MobileDateTimePicker/MobileDateTimePicker.js +6 -2
- package/MobileTimePicker/MobileTimePicker.js +5 -1
- package/MonthCalendar/MonthCalendar.js +28 -11
- package/MonthCalendar/MonthCalendar.types.d.ts +5 -0
- package/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +1 -1
- package/PickersLayout/PickersLayout.js +1 -0
- package/PickersLayout/usePickerLayout.js +4 -3
- package/PickersShortcuts/PickersShortcuts.d.ts +12 -2
- package/PickersShortcuts/PickersShortcuts.js +10 -2
- package/PickersShortcuts/index.d.ts +1 -1
- package/StaticDatePicker/StaticDatePicker.js +1 -1
- package/StaticDateTimePicker/StaticDateTimePicker.js +1 -1
- package/TimeField/TimeField.js +1 -1
- package/TimePicker/shared.d.ts +1 -1
- package/YearCalendar/YearCalendar.js +26 -9
- package/YearCalendar/YearCalendar.types.d.ts +5 -0
- package/index.js +1 -1
- package/internals/hooks/useField/useField.types.d.ts +1 -1
- package/internals/hooks/useField/useFieldState.js +0 -1
- package/internals/hooks/usePicker/usePickerValue.js +22 -2
- package/internals/hooks/usePicker/usePickerValue.types.d.ts +6 -2
- package/internals/utils/date-time-utils.d.ts +6 -0
- package/internals/utils/date-time-utils.js +41 -0
- package/internals/utils/date-utils.d.ts +5 -2
- package/internals/utils/date-utils.js +33 -10
- package/internals/utils/getDefaultReferenceDate.d.ts +11 -3
- package/internals/utils/getDefaultReferenceDate.js +2 -3
- package/internals/utils/time-utils.d.ts +6 -1
- package/internals/utils/time-utils.js +27 -0
- package/internals/utils/validation/extractValidationProps.d.ts +1 -1
- package/internals/utils/views.d.ts +2 -3
- package/internals/utils/views.js +6 -2
- package/legacy/AdapterDateFns/AdapterDateFns.js +20 -19
- package/legacy/AdapterDateFnsJalali/AdapterDateFnsJalali.js +17 -16
- package/legacy/AdapterDayjs/AdapterDayjs.js +12 -11
- package/legacy/AdapterLuxon/AdapterLuxon.js +20 -19
- package/legacy/AdapterMoment/AdapterMoment.js +12 -11
- package/legacy/AdapterMomentHijri/AdapterMomentHijri.js +20 -19
- package/legacy/AdapterMomentJalaali/AdapterMomentJalaali.js +20 -19
- package/legacy/DateCalendar/DateCalendar.js +16 -6
- package/legacy/DateCalendar/useCalendarState.js +35 -15
- package/legacy/DateField/DateField.js +1 -1
- package/legacy/DatePicker/DatePicker.js +1 -1
- package/legacy/DatePicker/DatePickerToolbar.js +6 -15
- package/legacy/DatePicker/shared.js +1 -15
- package/legacy/DateTimeField/DateTimeField.js +1 -1
- package/legacy/DateTimePicker/DateTimePicker.js +1 -1
- package/legacy/DesktopDatePicker/DesktopDatePicker.js +4 -3
- package/legacy/DesktopDateTimePicker/DesktopDateTimePicker.js +6 -2
- package/legacy/DesktopTimePicker/DesktopTimePicker.js +5 -1
- package/legacy/LocalizationProvider/LocalizationProvider.js +1 -0
- package/legacy/MobileDatePicker/MobileDatePicker.js +4 -3
- package/legacy/MobileDateTimePicker/MobileDateTimePicker.js +6 -2
- package/legacy/MobileTimePicker/MobileTimePicker.js +5 -1
- package/legacy/MonthCalendar/MonthCalendar.js +30 -13
- package/legacy/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +1 -1
- package/legacy/PickersLayout/PickersLayout.js +1 -0
- package/legacy/PickersLayout/usePickerLayout.js +3 -2
- package/legacy/PickersShortcuts/PickersShortcuts.js +10 -2
- package/legacy/StaticDatePicker/StaticDatePicker.js +1 -1
- package/legacy/StaticDateTimePicker/StaticDateTimePicker.js +1 -1
- package/legacy/TimeField/TimeField.js +1 -1
- package/legacy/YearCalendar/YearCalendar.js +28 -11
- package/legacy/index.js +1 -1
- package/legacy/internals/hooks/useField/useFieldState.js +0 -1
- package/legacy/internals/hooks/usePicker/usePickerValue.js +24 -2
- package/legacy/internals/utils/date-time-utils.js +39 -0
- package/legacy/internals/utils/date-utils.js +31 -9
- package/legacy/internals/utils/getDefaultReferenceDate.js +2 -3
- package/legacy/internals/utils/time-utils.js +26 -0
- package/legacy/internals/utils/views.js +7 -5
- package/legacy/locales/deDE.js +2 -2
- package/legacy/locales/elGR.js +93 -0
- package/legacy/locales/index.js +17 -15
- package/legacy/locales/roRO.js +81 -0
- package/locales/deDE.js +2 -2
- package/locales/elGR.d.ts +53 -0
- package/locales/elGR.js +57 -0
- package/locales/index.d.ts +17 -15
- package/locales/index.js +17 -15
- package/locales/roRO.d.ts +53 -0
- package/locales/roRO.js +63 -0
- package/models/adapters.d.ts +137 -37
- package/modern/AdapterDateFns/AdapterDateFns.js +20 -19
- package/modern/AdapterDateFnsJalali/AdapterDateFnsJalali.js +17 -16
- package/modern/AdapterDayjs/AdapterDayjs.js +12 -11
- package/modern/AdapterLuxon/AdapterLuxon.js +20 -19
- package/modern/AdapterMoment/AdapterMoment.js +12 -11
- package/modern/AdapterMomentHijri/AdapterMomentHijri.js +20 -19
- package/modern/AdapterMomentJalaali/AdapterMomentJalaali.js +20 -19
- package/modern/DateCalendar/DateCalendar.js +16 -6
- package/modern/DateCalendar/useCalendarState.js +36 -14
- package/modern/DateField/DateField.js +1 -1
- package/modern/DatePicker/DatePicker.js +1 -1
- package/modern/DatePicker/DatePickerToolbar.js +6 -15
- package/modern/DatePicker/shared.js +1 -16
- package/modern/DateTimeField/DateTimeField.js +1 -1
- package/modern/DateTimePicker/DateTimePicker.js +1 -1
- package/modern/DesktopDatePicker/DesktopDatePicker.js +4 -3
- package/modern/DesktopDateTimePicker/DesktopDateTimePicker.js +6 -2
- package/modern/DesktopTimePicker/DesktopTimePicker.js +5 -1
- package/modern/LocalizationProvider/LocalizationProvider.js +1 -0
- package/modern/MobileDatePicker/MobileDatePicker.js +4 -3
- package/modern/MobileDateTimePicker/MobileDateTimePicker.js +6 -2
- package/modern/MobileTimePicker/MobileTimePicker.js +5 -1
- package/modern/MonthCalendar/MonthCalendar.js +28 -11
- package/modern/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +1 -1
- package/modern/PickersLayout/PickersLayout.js +1 -0
- package/modern/PickersLayout/usePickerLayout.js +4 -3
- package/modern/PickersShortcuts/PickersShortcuts.js +10 -2
- package/modern/StaticDatePicker/StaticDatePicker.js +1 -1
- package/modern/StaticDateTimePicker/StaticDateTimePicker.js +1 -1
- package/modern/TimeField/TimeField.js +1 -1
- package/modern/YearCalendar/YearCalendar.js +26 -9
- package/modern/index.js +1 -1
- package/modern/internals/hooks/useField/useFieldState.js +0 -1
- package/modern/internals/hooks/usePicker/usePickerValue.js +22 -2
- package/modern/internals/utils/date-time-utils.js +41 -0
- package/modern/internals/utils/date-utils.js +33 -10
- package/modern/internals/utils/getDefaultReferenceDate.js +2 -3
- package/modern/internals/utils/time-utils.js +27 -0
- package/modern/internals/utils/views.js +6 -2
- package/modern/locales/deDE.js +2 -2
- package/modern/locales/elGR.js +57 -0
- package/modern/locales/index.js +17 -15
- package/modern/locales/roRO.js +60 -0
- package/node/AdapterDateFns/AdapterDateFns.js +20 -19
- package/node/AdapterDateFnsJalali/AdapterDateFnsJalali.js +17 -16
- package/node/AdapterDayjs/AdapterDayjs.js +12 -11
- package/node/AdapterLuxon/AdapterLuxon.js +20 -19
- package/node/AdapterMoment/AdapterMoment.js +12 -11
- package/node/AdapterMomentHijri/AdapterMomentHijri.js +20 -19
- package/node/AdapterMomentJalaali/AdapterMomentJalaali.js +20 -19
- package/node/DateCalendar/DateCalendar.js +16 -6
- package/node/DateCalendar/useCalendarState.js +36 -14
- package/node/DateField/DateField.js +1 -1
- package/node/DatePicker/DatePicker.js +1 -1
- package/node/DatePicker/DatePickerToolbar.js +6 -15
- package/node/DatePicker/shared.js +0 -17
- package/node/DateTimeField/DateTimeField.js +1 -1
- package/node/DateTimePicker/DateTimePicker.js +1 -1
- package/node/DesktopDatePicker/DesktopDatePicker.js +3 -2
- package/node/DesktopDateTimePicker/DesktopDateTimePicker.js +8 -4
- package/node/DesktopTimePicker/DesktopTimePicker.js +7 -3
- package/node/LocalizationProvider/LocalizationProvider.js +1 -0
- package/node/MobileDatePicker/MobileDatePicker.js +3 -2
- package/node/MobileDateTimePicker/MobileDateTimePicker.js +8 -4
- package/node/MobileTimePicker/MobileTimePicker.js +7 -3
- package/node/MonthCalendar/MonthCalendar.js +28 -11
- package/node/MultiSectionDigitalClock/MultiSectionDigitalClockSection.js +1 -1
- package/node/PickersLayout/PickersLayout.js +1 -0
- package/node/PickersLayout/usePickerLayout.js +4 -3
- package/node/PickersShortcuts/PickersShortcuts.js +10 -2
- package/node/StaticDatePicker/StaticDatePicker.js +1 -1
- package/node/StaticDateTimePicker/StaticDateTimePicker.js +1 -1
- package/node/TimeField/TimeField.js +1 -1
- package/node/YearCalendar/YearCalendar.js +26 -9
- package/node/index.js +1 -1
- package/node/internals/hooks/useField/useFieldState.js +0 -1
- package/node/internals/hooks/usePicker/usePickerValue.js +22 -2
- package/node/internals/utils/date-time-utils.js +49 -0
- package/node/internals/utils/date-utils.js +35 -12
- package/node/internals/utils/getDefaultReferenceDate.js +3 -3
- package/node/internals/utils/time-utils.js +30 -2
- package/node/internals/utils/views.js +8 -5
- package/node/locales/deDE.js +2 -2
- package/node/locales/elGR.js +64 -0
- package/node/locales/index.js +112 -90
- package/node/locales/roRO.js +67 -0
- package/package.json +1 -1
|
@@ -12,15 +12,18 @@ var _utils = require("@mui/base/utils");
|
|
|
12
12
|
var _valueManagers = require("../internals/utils/valueManagers");
|
|
13
13
|
var _TimeField = require("../TimeField");
|
|
14
14
|
var _shared = require("../TimePicker/shared");
|
|
15
|
-
var
|
|
15
|
+
var _useUtils = require("../internals/hooks/useUtils");
|
|
16
|
+
var _validateTime = require("../internals/utils/validation/validateTime");
|
|
16
17
|
var _icons = require("../icons");
|
|
17
18
|
var _useDesktopPicker = require("../internals/hooks/useDesktopPicker");
|
|
18
19
|
var _extractValidationProps = require("../internals/utils/validation/extractValidationProps");
|
|
19
20
|
var _timeViewRenderers = require("../timeViewRenderers");
|
|
21
|
+
var _timeUtils = require("../internals/utils/time-utils");
|
|
20
22
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
21
23
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
22
24
|
const DesktopTimePicker = /*#__PURE__*/React.forwardRef(function DesktopTimePicker(inProps, ref) {
|
|
23
|
-
const localeText = (0,
|
|
25
|
+
const localeText = (0, _useUtils.useLocaleText)();
|
|
26
|
+
const utils = (0, _useUtils.useUtils)();
|
|
24
27
|
|
|
25
28
|
// Props with the default values common to all time pickers
|
|
26
29
|
const defaultizedProps = (0, _shared.useTimePickerDefaultizedProps)(inProps, 'MuiDesktopTimePicker');
|
|
@@ -49,6 +52,7 @@ const DesktopTimePicker = /*#__PURE__*/React.forwardRef(function DesktopTimePick
|
|
|
49
52
|
ampmInClock,
|
|
50
53
|
timeSteps,
|
|
51
54
|
viewRenderers,
|
|
55
|
+
format: (0, _timeUtils.resolveTimeFormat)(utils, defaultizedProps),
|
|
52
56
|
// Setting only `hours` time view in case of single column time picker
|
|
53
57
|
// Allows for easy view lifecycle management
|
|
54
58
|
views: shouldRenderTimeInASingleColumn ? ['hours'] : views,
|
|
@@ -76,7 +80,7 @@ const DesktopTimePicker = /*#__PURE__*/React.forwardRef(function DesktopTimePick
|
|
|
76
80
|
valueManager: _valueManagers.singleItemValueManager,
|
|
77
81
|
valueType: 'time',
|
|
78
82
|
getOpenDialogAriaText: localeText.openTimePickerDialogue,
|
|
79
|
-
validator:
|
|
83
|
+
validator: _validateTime.validateTime
|
|
80
84
|
});
|
|
81
85
|
return renderPicker();
|
|
82
86
|
});
|
|
@@ -122,6 +122,7 @@ process.env.NODE_ENV !== "production" ? LocalizationProvider.propTypes = {
|
|
|
122
122
|
keyboardDateTime: _propTypes.default.string,
|
|
123
123
|
keyboardDateTime12h: _propTypes.default.string,
|
|
124
124
|
keyboardDateTime24h: _propTypes.default.string,
|
|
125
|
+
meridiem: _propTypes.default.string,
|
|
125
126
|
minutes: _propTypes.default.string,
|
|
126
127
|
month: _propTypes.default.string,
|
|
127
128
|
monthAndDate: _propTypes.default.string,
|
|
@@ -16,6 +16,7 @@ var _DateField = require("../DateField");
|
|
|
16
16
|
var _extractValidationProps = require("../internals/utils/validation/extractValidationProps");
|
|
17
17
|
var _valueManagers = require("../internals/utils/valueManagers");
|
|
18
18
|
var _dateViewRenderers = require("../dateViewRenderers");
|
|
19
|
+
var _dateUtils = require("../internals/utils/date-utils");
|
|
19
20
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
20
21
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
21
22
|
const MobileDatePicker = /*#__PURE__*/React.forwardRef(function MobileDatePicker(inProps, ref) {
|
|
@@ -33,7 +34,7 @@ const MobileDatePicker = /*#__PURE__*/React.forwardRef(function MobileDatePicker
|
|
|
33
34
|
// Props with the default values specific to the mobile variant
|
|
34
35
|
const props = (0, _extends2.default)({}, defaultizedProps, {
|
|
35
36
|
viewRenderers,
|
|
36
|
-
format: (0,
|
|
37
|
+
format: (0, _dateUtils.resolveDateFormat)(utils, defaultizedProps, false),
|
|
37
38
|
slots: (0, _extends2.default)({
|
|
38
39
|
field: _DateField.DateField
|
|
39
40
|
}, defaultizedProps.slots),
|
|
@@ -99,7 +100,7 @@ MobileDatePicker.propTypes = {
|
|
|
99
100
|
*/
|
|
100
101
|
dayOfWeekFormatter: _propTypes.default.func,
|
|
101
102
|
/**
|
|
102
|
-
* Default calendar month displayed when `value
|
|
103
|
+
* Default calendar month displayed when `value` and `defaultValue` are empty.
|
|
103
104
|
*/
|
|
104
105
|
defaultCalendarMonth: _propTypes.default.any,
|
|
105
106
|
/**
|
|
@@ -12,15 +12,18 @@ var _utils = require("@mui/base/utils");
|
|
|
12
12
|
var _valueManagers = require("../internals/utils/valueManagers");
|
|
13
13
|
var _DateTimeField = require("../DateTimeField");
|
|
14
14
|
var _shared = require("../DateTimePicker/shared");
|
|
15
|
-
var
|
|
15
|
+
var _useUtils = require("../internals/hooks/useUtils");
|
|
16
|
+
var _validateDateTime = require("../internals/utils/validation/validateDateTime");
|
|
16
17
|
var _useMobilePicker = require("../internals/hooks/useMobilePicker");
|
|
17
18
|
var _extractValidationProps = require("../internals/utils/validation/extractValidationProps");
|
|
18
19
|
var _dateViewRenderers = require("../dateViewRenderers");
|
|
19
20
|
var _timeViewRenderers = require("../timeViewRenderers");
|
|
21
|
+
var _dateTimeUtils = require("../internals/utils/date-time-utils");
|
|
20
22
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
21
23
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
22
24
|
const MobileDateTimePicker = /*#__PURE__*/React.forwardRef(function MobileDateTimePicker(inProps, ref) {
|
|
23
|
-
const localeText = (0,
|
|
25
|
+
const localeText = (0, _useUtils.useLocaleText)();
|
|
26
|
+
const utils = (0, _useUtils.useUtils)();
|
|
24
27
|
|
|
25
28
|
// Props with the default values common to all date time pickers
|
|
26
29
|
const defaultizedProps = (0, _shared.useDateTimePickerDefaultizedProps)(inProps, 'MuiMobileDateTimePicker');
|
|
@@ -37,6 +40,7 @@ const MobileDateTimePicker = /*#__PURE__*/React.forwardRef(function MobileDateTi
|
|
|
37
40
|
// Props with the default values specific to the mobile variant
|
|
38
41
|
const props = (0, _extends2.default)({}, defaultizedProps, {
|
|
39
42
|
viewRenderers,
|
|
43
|
+
format: (0, _dateTimeUtils.resolveDateTimeFormat)(utils, defaultizedProps),
|
|
40
44
|
ampmInClock,
|
|
41
45
|
slots: (0, _extends2.default)({
|
|
42
46
|
field: _DateTimeField.DateTimeField
|
|
@@ -61,7 +65,7 @@ const MobileDateTimePicker = /*#__PURE__*/React.forwardRef(function MobileDateTi
|
|
|
61
65
|
valueManager: _valueManagers.singleItemValueManager,
|
|
62
66
|
valueType: 'date-time',
|
|
63
67
|
getOpenDialogAriaText: localeText.openDatePickerDialogue,
|
|
64
|
-
validator:
|
|
68
|
+
validator: _validateDateTime.validateDateTime
|
|
65
69
|
});
|
|
66
70
|
return renderPicker();
|
|
67
71
|
});
|
|
@@ -117,7 +121,7 @@ MobileDateTimePicker.propTypes = {
|
|
|
117
121
|
*/
|
|
118
122
|
dayOfWeekFormatter: _propTypes.default.func,
|
|
119
123
|
/**
|
|
120
|
-
* Default calendar month displayed when `value
|
|
124
|
+
* Default calendar month displayed when `value` and `defaultValue` are empty.
|
|
121
125
|
*/
|
|
122
126
|
defaultCalendarMonth: _propTypes.default.any,
|
|
123
127
|
/**
|
|
@@ -12,14 +12,17 @@ var _utils = require("@mui/base/utils");
|
|
|
12
12
|
var _valueManagers = require("../internals/utils/valueManagers");
|
|
13
13
|
var _TimeField = require("../TimeField");
|
|
14
14
|
var _shared = require("../TimePicker/shared");
|
|
15
|
-
var
|
|
15
|
+
var _useUtils = require("../internals/hooks/useUtils");
|
|
16
|
+
var _validateTime = require("../internals/utils/validation/validateTime");
|
|
16
17
|
var _useMobilePicker = require("../internals/hooks/useMobilePicker");
|
|
17
18
|
var _extractValidationProps = require("../internals/utils/validation/extractValidationProps");
|
|
18
19
|
var _timeViewRenderers = require("../timeViewRenderers");
|
|
20
|
+
var _timeUtils = require("../internals/utils/time-utils");
|
|
19
21
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
20
22
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
21
23
|
const MobileTimePicker = /*#__PURE__*/React.forwardRef(function MobileTimePicker(inProps, ref) {
|
|
22
|
-
const localeText = (0,
|
|
24
|
+
const localeText = (0, _useUtils.useLocaleText)();
|
|
25
|
+
const utils = (0, _useUtils.useUtils)();
|
|
23
26
|
|
|
24
27
|
// Props with the default values common to all time pickers
|
|
25
28
|
const defaultizedProps = (0, _shared.useTimePickerDefaultizedProps)(inProps, 'MuiMobileTimePicker');
|
|
@@ -34,6 +37,7 @@ const MobileTimePicker = /*#__PURE__*/React.forwardRef(function MobileTimePicker
|
|
|
34
37
|
const props = (0, _extends2.default)({}, defaultizedProps, {
|
|
35
38
|
ampmInClock,
|
|
36
39
|
viewRenderers,
|
|
40
|
+
format: (0, _timeUtils.resolveTimeFormat)(utils, defaultizedProps),
|
|
37
41
|
slots: (0, _extends2.default)({
|
|
38
42
|
field: _TimeField.TimeField
|
|
39
43
|
}, defaultizedProps.slots),
|
|
@@ -54,7 +58,7 @@ const MobileTimePicker = /*#__PURE__*/React.forwardRef(function MobileTimePicker
|
|
|
54
58
|
valueManager: _valueManagers.singleItemValueManager,
|
|
55
59
|
valueType: 'time',
|
|
56
60
|
getOpenDialogAriaText: localeText.openTimePickerDialogue,
|
|
57
|
-
validator:
|
|
61
|
+
validator: _validateTime.validateTime
|
|
58
62
|
});
|
|
59
63
|
return renderPicker();
|
|
60
64
|
});
|
|
@@ -18,8 +18,10 @@ var _PickersMonth = require("./PickersMonth");
|
|
|
18
18
|
var _useUtils = require("../internals/hooks/useUtils");
|
|
19
19
|
var _monthCalendarClasses = require("./monthCalendarClasses");
|
|
20
20
|
var _dateUtils = require("../internals/utils/date-utils");
|
|
21
|
+
var _valueManagers = require("../internals/utils/valueManagers");
|
|
22
|
+
var _getDefaultReferenceDate = require("../internals/utils/getDefaultReferenceDate");
|
|
21
23
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
22
|
-
const _excluded = ["className", "value", "defaultValue", "disabled", "disableFuture", "disablePast", "maxDate", "minDate", "onChange", "shouldDisableMonth", "readOnly", "disableHighlightToday", "autoFocus", "onMonthFocus", "hasFocus", "onFocusedViewChange", "monthsPerRow"];
|
|
24
|
+
const _excluded = ["className", "value", "defaultValue", "referenceDate", "disabled", "disableFuture", "disablePast", "maxDate", "minDate", "onChange", "shouldDisableMonth", "readOnly", "disableHighlightToday", "autoFocus", "onMonthFocus", "hasFocus", "onFocusedViewChange", "monthsPerRow"];
|
|
23
25
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
24
26
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
25
27
|
const useUtilityClasses = ownerState => {
|
|
@@ -66,6 +68,7 @@ const MonthCalendar = /*#__PURE__*/React.forwardRef(function MonthCalendar(inPro
|
|
|
66
68
|
className,
|
|
67
69
|
value: valueProp,
|
|
68
70
|
defaultValue,
|
|
71
|
+
referenceDate: referenceDateProp,
|
|
69
72
|
disabled,
|
|
70
73
|
disableFuture,
|
|
71
74
|
disablePast,
|
|
@@ -90,8 +93,16 @@ const MonthCalendar = /*#__PURE__*/React.forwardRef(function MonthCalendar(inPro
|
|
|
90
93
|
controlled: valueProp,
|
|
91
94
|
default: defaultValue ?? null
|
|
92
95
|
});
|
|
96
|
+
const referenceDate = React.useMemo(() => _valueManagers.singleItemValueManager.getInitialReferenceValue({
|
|
97
|
+
value,
|
|
98
|
+
utils,
|
|
99
|
+
props,
|
|
100
|
+
referenceDate: referenceDateProp,
|
|
101
|
+
granularity: _getDefaultReferenceDate.SECTION_TYPE_GRANULARITY.month
|
|
102
|
+
}), [] // eslint-disable-line react-hooks/exhaustive-deps
|
|
103
|
+
);
|
|
104
|
+
|
|
93
105
|
const todayMonth = React.useMemo(() => utils.getMonth(now), [utils, now]);
|
|
94
|
-
const selectedDateOrStartOfMonth = React.useMemo(() => value ?? utils.startOfMonth(now), [now, utils, value]);
|
|
95
106
|
const selectedMonth = React.useMemo(() => {
|
|
96
107
|
if (value != null) {
|
|
97
108
|
return utils.getMonth(value);
|
|
@@ -99,8 +110,8 @@ const MonthCalendar = /*#__PURE__*/React.forwardRef(function MonthCalendar(inPro
|
|
|
99
110
|
if (disableHighlightToday) {
|
|
100
111
|
return null;
|
|
101
112
|
}
|
|
102
|
-
return utils.getMonth(
|
|
103
|
-
}, [
|
|
113
|
+
return utils.getMonth(referenceDate);
|
|
114
|
+
}, [value, utils, disableHighlightToday, referenceDate]);
|
|
104
115
|
const [focusedMonth, setFocusedMonth] = React.useState(() => selectedMonth || todayMonth);
|
|
105
116
|
const [internalHasFocus, setInternalHasFocus] = (0, _utils.unstable_useControlled)({
|
|
106
117
|
name: 'MonthCalendar',
|
|
@@ -114,30 +125,31 @@ const MonthCalendar = /*#__PURE__*/React.forwardRef(function MonthCalendar(inPro
|
|
|
114
125
|
onFocusedViewChange(newHasFocus);
|
|
115
126
|
}
|
|
116
127
|
});
|
|
117
|
-
const isMonthDisabled = React.useCallback(
|
|
128
|
+
const isMonthDisabled = React.useCallback(dateToValidate => {
|
|
118
129
|
const firstEnabledMonth = utils.startOfMonth(disablePast && utils.isAfter(now, minDate) ? now : minDate);
|
|
119
130
|
const lastEnabledMonth = utils.startOfMonth(disableFuture && utils.isBefore(now, maxDate) ? now : maxDate);
|
|
120
|
-
|
|
131
|
+
const monthToValidate = utils.startOfMonth(dateToValidate);
|
|
132
|
+
if (utils.isBefore(monthToValidate, firstEnabledMonth)) {
|
|
121
133
|
return true;
|
|
122
134
|
}
|
|
123
|
-
if (utils.isAfter(
|
|
135
|
+
if (utils.isAfter(monthToValidate, lastEnabledMonth)) {
|
|
124
136
|
return true;
|
|
125
137
|
}
|
|
126
138
|
if (!shouldDisableMonth) {
|
|
127
139
|
return false;
|
|
128
140
|
}
|
|
129
|
-
return shouldDisableMonth(
|
|
141
|
+
return shouldDisableMonth(monthToValidate);
|
|
130
142
|
}, [disableFuture, disablePast, maxDate, minDate, now, shouldDisableMonth, utils]);
|
|
131
143
|
const handleMonthSelection = (0, _utils.unstable_useEventCallback)((event, month) => {
|
|
132
144
|
if (readOnly) {
|
|
133
145
|
return;
|
|
134
146
|
}
|
|
135
|
-
const newDate = utils.setMonth(
|
|
147
|
+
const newDate = utils.setMonth(value ?? referenceDate, month);
|
|
136
148
|
setValue(newDate);
|
|
137
149
|
onChange?.(newDate);
|
|
138
150
|
});
|
|
139
151
|
const focusMonth = (0, _utils.unstable_useEventCallback)(month => {
|
|
140
|
-
if (!isMonthDisabled(utils.setMonth(
|
|
152
|
+
if (!isMonthDisabled(utils.setMonth(value ?? referenceDate, month))) {
|
|
141
153
|
setFocusedMonth(month);
|
|
142
154
|
changeHasFocus(true);
|
|
143
155
|
if (onMonthFocus) {
|
|
@@ -185,7 +197,7 @@ const MonthCalendar = /*#__PURE__*/React.forwardRef(function MonthCalendar(inPro
|
|
|
185
197
|
className: (0, _clsx.default)(classes.root, className),
|
|
186
198
|
ownerState: ownerState
|
|
187
199
|
}, other, {
|
|
188
|
-
children: (0, _dateUtils.getMonthsInYear)(utils,
|
|
200
|
+
children: (0, _dateUtils.getMonthsInYear)(utils, value ?? referenceDate).map(month => {
|
|
189
201
|
const monthNumber = utils.getMonth(month);
|
|
190
202
|
const monthText = utils.format(month, 'monthShort');
|
|
191
203
|
const isSelected = monthNumber === selectedMonth;
|
|
@@ -272,6 +284,11 @@ process.env.NODE_ENV !== "production" ? MonthCalendar.propTypes = {
|
|
|
272
284
|
* If `true` picker is readonly
|
|
273
285
|
*/
|
|
274
286
|
readOnly: _propTypes.default.bool,
|
|
287
|
+
/**
|
|
288
|
+
* The date used to generate the new value when both `value` and `defaultValue` are empty.
|
|
289
|
+
* @default The closest valid month using the validation props, except callbacks such as `shouldDisableDate`.
|
|
290
|
+
*/
|
|
291
|
+
referenceDate: _propTypes.default.any,
|
|
275
292
|
/**
|
|
276
293
|
* Disable specific month.
|
|
277
294
|
* @template TDate
|
|
@@ -143,7 +143,7 @@ const MultiSectionDigitalClockSection = /*#__PURE__*/React.forwardRef(function M
|
|
|
143
143
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(DigitalClockSectionItem, (0, _extends2.default)({
|
|
144
144
|
onClick: () => !readOnly && onChange(option.value),
|
|
145
145
|
selected: isSelected,
|
|
146
|
-
disabled: disabled
|
|
146
|
+
disabled: disabled || option.isDisabled?.(option.value),
|
|
147
147
|
disableRipple: readOnly,
|
|
148
148
|
role: "option"
|
|
149
149
|
// aria-readonly is not supported here and does not have any effect
|
|
@@ -146,6 +146,7 @@ process.env.NODE_ENV !== "production" ? PickersLayout.propTypes = {
|
|
|
146
146
|
onClose: _propTypes.default.func.isRequired,
|
|
147
147
|
onDismiss: _propTypes.default.func.isRequired,
|
|
148
148
|
onOpen: _propTypes.default.func.isRequired,
|
|
149
|
+
onSelectShortcut: _propTypes.default.func.isRequired,
|
|
149
150
|
onSetToday: _propTypes.default.func.isRequired,
|
|
150
151
|
onViewChange: _propTypes.default.func.isRequired,
|
|
151
152
|
/**
|
|
@@ -47,6 +47,7 @@ const usePickerLayout = props => {
|
|
|
47
47
|
onViewChange,
|
|
48
48
|
value,
|
|
49
49
|
onChange,
|
|
50
|
+
onSelectShortcut,
|
|
50
51
|
isValid,
|
|
51
52
|
isLandscape,
|
|
52
53
|
disabled,
|
|
@@ -59,7 +60,7 @@ const usePickerLayout = props => {
|
|
|
59
60
|
// TODO: Remove this "as" hack. It get introduced to mark `value` prop in PickersLayoutProps as not required.
|
|
60
61
|
// The true type should be
|
|
61
62
|
// - For pickers value: TDate | null
|
|
62
|
-
// - For
|
|
63
|
+
// - For range pickers value: [TDate | null, TDate | null]
|
|
63
64
|
} = props;
|
|
64
65
|
const slots = innerSlots ?? (0, _slotsMigration.uncapitalizeObjectKeys)(components);
|
|
65
66
|
const slotProps = innerSlotProps ?? componentsProps;
|
|
@@ -129,13 +130,13 @@ const usePickerLayout = props => {
|
|
|
129
130
|
additionalProps: {
|
|
130
131
|
isValid,
|
|
131
132
|
isLandscape,
|
|
132
|
-
onChange,
|
|
133
|
+
onChange: onSelectShortcut,
|
|
133
134
|
className: classes.shortcuts
|
|
134
135
|
},
|
|
135
136
|
ownerState: {
|
|
136
137
|
isValid,
|
|
137
138
|
isLandscape,
|
|
138
|
-
onChange,
|
|
139
|
+
onChange: onSelectShortcut,
|
|
139
140
|
className: classes.shortcuts,
|
|
140
141
|
wrapperVariant
|
|
141
142
|
}
|
|
@@ -14,12 +14,13 @@ var _ListItem = _interopRequireDefault(require("@mui/material/ListItem"));
|
|
|
14
14
|
var _Chip = _interopRequireDefault(require("@mui/material/Chip"));
|
|
15
15
|
var _dimensions = require("../internals/constants/dimensions");
|
|
16
16
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
17
|
-
const _excluded = ["items", "isLandscape", "onChange", "isValid"];
|
|
17
|
+
const _excluded = ["items", "changeImportance", "isLandscape", "onChange", "isValid"];
|
|
18
18
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
19
19
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
20
20
|
function PickersShortcuts(props) {
|
|
21
21
|
const {
|
|
22
22
|
items,
|
|
23
|
+
changeImportance,
|
|
23
24
|
onChange,
|
|
24
25
|
isValid
|
|
25
26
|
} = props,
|
|
@@ -34,7 +35,7 @@ function PickersShortcuts(props) {
|
|
|
34
35
|
return {
|
|
35
36
|
label: item.label,
|
|
36
37
|
onClick: () => {
|
|
37
|
-
onChange(newValue);
|
|
38
|
+
onChange(newValue, changeImportance);
|
|
38
39
|
},
|
|
39
40
|
disabled: !isValid(newValue)
|
|
40
41
|
};
|
|
@@ -59,6 +60,13 @@ process.env.NODE_ENV !== "production" ? PickersShortcuts.propTypes = {
|
|
|
59
60
|
// | These PropTypes are generated from the TypeScript type definitions |
|
|
60
61
|
// | To update them edit the TypeScript types and run "yarn proptypes" |
|
|
61
62
|
// ----------------------------------------------------------------------
|
|
63
|
+
/**
|
|
64
|
+
* Importance of the change when picking a shortcut:
|
|
65
|
+
* - "accept": fires `onChange`, fires `onAccept` and closes the picker.
|
|
66
|
+
* - "set": fires `onChange` but do not fire `onAccept` and does not close the picker.
|
|
67
|
+
* @default "accept"
|
|
68
|
+
*/
|
|
69
|
+
changeImportance: _propTypes.default.oneOf(['accept', 'set']),
|
|
62
70
|
className: _propTypes.default.string,
|
|
63
71
|
/**
|
|
64
72
|
* If `true`, compact vertical padding designed for keyboard and mouse input is used for
|
|
@@ -83,7 +83,7 @@ StaticDatePicker.propTypes = {
|
|
|
83
83
|
*/
|
|
84
84
|
dayOfWeekFormatter: _propTypes.default.func,
|
|
85
85
|
/**
|
|
86
|
-
* Default calendar month displayed when `value
|
|
86
|
+
* Default calendar month displayed when `value` and `defaultValue` are empty.
|
|
87
87
|
*/
|
|
88
88
|
defaultCalendarMonth: _propTypes.default.any,
|
|
89
89
|
/**
|
|
@@ -103,7 +103,7 @@ StaticDateTimePicker.propTypes = {
|
|
|
103
103
|
*/
|
|
104
104
|
dayOfWeekFormatter: _propTypes.default.func,
|
|
105
105
|
/**
|
|
106
|
-
* Default calendar month displayed when `value
|
|
106
|
+
* Default calendar month displayed when `value` and `defaultValue` are empty.
|
|
107
107
|
*/
|
|
108
108
|
defaultCalendarMonth: _propTypes.default.any,
|
|
109
109
|
/**
|
|
@@ -256,7 +256,7 @@ process.env.NODE_ENV !== "production" ? TimeField.propTypes = {
|
|
|
256
256
|
*/
|
|
257
257
|
readOnly: _propTypes.default.bool,
|
|
258
258
|
/**
|
|
259
|
-
* The date used to generate a part of the
|
|
259
|
+
* The date used to generate a part of the new value that is not present in the format when both `value` and `defaultValue` are empty.
|
|
260
260
|
* For example, on time fields it will be used to determine the date to set.
|
|
261
261
|
* @default The closest valid date using the validation props, except callbacks such as `shouldDisableDate`. Value is rounded to the most granular section used.
|
|
262
262
|
*/
|
|
@@ -17,8 +17,10 @@ var _PickersYear = require("./PickersYear");
|
|
|
17
17
|
var _useUtils = require("../internals/hooks/useUtils");
|
|
18
18
|
var _yearCalendarClasses = require("./yearCalendarClasses");
|
|
19
19
|
var _dateUtils = require("../internals/utils/date-utils");
|
|
20
|
+
var _valueManagers = require("../internals/utils/valueManagers");
|
|
21
|
+
var _getDefaultReferenceDate = require("../internals/utils/getDefaultReferenceDate");
|
|
20
22
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
21
|
-
const _excluded = ["autoFocus", "className", "value", "defaultValue", "disabled", "disableFuture", "disablePast", "maxDate", "minDate", "onChange", "readOnly", "shouldDisableYear", "disableHighlightToday", "onYearFocus", "hasFocus", "onFocusedViewChange", "yearsPerRow"];
|
|
23
|
+
const _excluded = ["autoFocus", "className", "value", "defaultValue", "referenceDate", "disabled", "disableFuture", "disablePast", "maxDate", "minDate", "onChange", "readOnly", "shouldDisableYear", "disableHighlightToday", "onYearFocus", "hasFocus", "onFocusedViewChange", "yearsPerRow"];
|
|
22
24
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
23
25
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
24
26
|
const useUtilityClasses = ownerState => {
|
|
@@ -69,6 +71,7 @@ const YearCalendar = /*#__PURE__*/React.forwardRef(function YearCalendar(inProps
|
|
|
69
71
|
className,
|
|
70
72
|
value: valueProp,
|
|
71
73
|
defaultValue,
|
|
74
|
+
referenceDate: referenceDateProp,
|
|
72
75
|
disabled,
|
|
73
76
|
disableFuture,
|
|
74
77
|
disablePast,
|
|
@@ -92,7 +95,15 @@ const YearCalendar = /*#__PURE__*/React.forwardRef(function YearCalendar(inProps
|
|
|
92
95
|
controlled: valueProp,
|
|
93
96
|
default: defaultValue ?? null
|
|
94
97
|
});
|
|
95
|
-
const
|
|
98
|
+
const referenceDate = React.useMemo(() => _valueManagers.singleItemValueManager.getInitialReferenceValue({
|
|
99
|
+
value,
|
|
100
|
+
utils,
|
|
101
|
+
props,
|
|
102
|
+
referenceDate: referenceDateProp,
|
|
103
|
+
granularity: _getDefaultReferenceDate.SECTION_TYPE_GRANULARITY.year
|
|
104
|
+
}), [] // eslint-disable-line react-hooks/exhaustive-deps
|
|
105
|
+
);
|
|
106
|
+
|
|
96
107
|
const todayYear = React.useMemo(() => utils.getYear(now), [utils, now]);
|
|
97
108
|
const selectedYear = React.useMemo(() => {
|
|
98
109
|
if (value != null) {
|
|
@@ -101,8 +112,8 @@ const YearCalendar = /*#__PURE__*/React.forwardRef(function YearCalendar(inProps
|
|
|
101
112
|
if (disableHighlightToday) {
|
|
102
113
|
return null;
|
|
103
114
|
}
|
|
104
|
-
return utils.getYear(
|
|
105
|
-
}, [
|
|
115
|
+
return utils.getYear(referenceDate);
|
|
116
|
+
}, [value, utils, disableHighlightToday, referenceDate]);
|
|
106
117
|
const [focusedYear, setFocusedYear] = React.useState(() => selectedYear || todayYear);
|
|
107
118
|
const [internalHasFocus, setInternalHasFocus] = (0, _utils.unstable_useControlled)({
|
|
108
119
|
name: 'YearCalendar',
|
|
@@ -129,21 +140,22 @@ const YearCalendar = /*#__PURE__*/React.forwardRef(function YearCalendar(inProps
|
|
|
129
140
|
if (maxDate && utils.isAfterYear(dateToValidate, maxDate)) {
|
|
130
141
|
return true;
|
|
131
142
|
}
|
|
132
|
-
if (shouldDisableYear
|
|
133
|
-
return
|
|
143
|
+
if (!shouldDisableYear) {
|
|
144
|
+
return false;
|
|
134
145
|
}
|
|
135
|
-
|
|
146
|
+
const yearToValidate = utils.startOfYear(dateToValidate);
|
|
147
|
+
return shouldDisableYear(yearToValidate);
|
|
136
148
|
}, [disableFuture, disablePast, maxDate, minDate, now, shouldDisableYear, utils]);
|
|
137
149
|
const handleYearSelection = (0, _utils.unstable_useEventCallback)((event, year) => {
|
|
138
150
|
if (readOnly) {
|
|
139
151
|
return;
|
|
140
152
|
}
|
|
141
|
-
const newDate = utils.setYear(
|
|
153
|
+
const newDate = utils.setYear(value ?? referenceDate, year);
|
|
142
154
|
setValue(newDate);
|
|
143
155
|
onChange?.(newDate);
|
|
144
156
|
});
|
|
145
157
|
const focusYear = (0, _utils.unstable_useEventCallback)(year => {
|
|
146
|
-
if (!isYearDisabled(utils.setYear(
|
|
158
|
+
if (!isYearDisabled(utils.setYear(value ?? referenceDate, year))) {
|
|
147
159
|
setFocusedYear(year);
|
|
148
160
|
changeHasFocus(true);
|
|
149
161
|
onYearFocus?.(year);
|
|
@@ -291,6 +303,11 @@ process.env.NODE_ENV !== "production" ? YearCalendar.propTypes = {
|
|
|
291
303
|
* If `true` picker is readonly
|
|
292
304
|
*/
|
|
293
305
|
readOnly: _propTypes.default.bool,
|
|
306
|
+
/**
|
|
307
|
+
* The date used to generate the new value when both `value` and `defaultValue` are empty.
|
|
308
|
+
* @default The closest valid year using the validation props, except callbacks such as `shouldDisableDate`.
|
|
309
|
+
*/
|
|
310
|
+
referenceDate: _propTypes.default.any,
|
|
294
311
|
/**
|
|
295
312
|
* Disable specific year.
|
|
296
313
|
* @template TDate
|
package/node/index.js
CHANGED
|
@@ -47,6 +47,14 @@ const shouldPublishValue = params => {
|
|
|
47
47
|
}
|
|
48
48
|
return hasChanged(dateState.lastPublishedValue);
|
|
49
49
|
}
|
|
50
|
+
if (action.name === 'setValueFromShortcut' && action.changeImportance === 'accept') {
|
|
51
|
+
// On the first view,
|
|
52
|
+
// If the value is not controlled, then clicking on any value (including the one equal to `defaultValue`) should call `onChange`
|
|
53
|
+
if (isCurrentValueTheDefaultValue) {
|
|
54
|
+
return true;
|
|
55
|
+
}
|
|
56
|
+
return hasChanged(dateState.lastPublishedValue);
|
|
57
|
+
}
|
|
50
58
|
return false;
|
|
51
59
|
};
|
|
52
60
|
|
|
@@ -80,6 +88,9 @@ const shouldCommitValue = params => {
|
|
|
80
88
|
}
|
|
81
89
|
return hasChanged(dateState.lastCommittedValue);
|
|
82
90
|
}
|
|
91
|
+
if (action.name === 'setValueFromShortcut') {
|
|
92
|
+
return action.changeImportance === 'accept' && hasChanged(dateState.lastCommittedValue);
|
|
93
|
+
}
|
|
83
94
|
return false;
|
|
84
95
|
};
|
|
85
96
|
|
|
@@ -97,6 +108,9 @@ const shouldClosePicker = params => {
|
|
|
97
108
|
if (action.name === 'setValueFromView') {
|
|
98
109
|
return action.selectionState === 'finish' && closeOnSelect;
|
|
99
110
|
}
|
|
111
|
+
if (action.name === 'setValueFromShortcut') {
|
|
112
|
+
return action.changeImportance === 'accept';
|
|
113
|
+
}
|
|
100
114
|
return false;
|
|
101
115
|
};
|
|
102
116
|
|
|
@@ -263,7 +277,12 @@ const usePickerValue = ({
|
|
|
263
277
|
value: newValue,
|
|
264
278
|
selectionState
|
|
265
279
|
}));
|
|
266
|
-
const
|
|
280
|
+
const handleSelectShortcut = (0, _useEventCallback.default)((newValue, changeImportance) => updateDate({
|
|
281
|
+
name: 'setValueFromShortcut',
|
|
282
|
+
value: newValue,
|
|
283
|
+
changeImportance: changeImportance ?? 'accept'
|
|
284
|
+
}));
|
|
285
|
+
const handleChangeFromField = (0, _useEventCallback.default)((newValue, context) => updateDate({
|
|
267
286
|
name: 'setValueFromField',
|
|
268
287
|
value: newValue,
|
|
269
288
|
context
|
|
@@ -283,7 +302,7 @@ const usePickerValue = ({
|
|
|
283
302
|
};
|
|
284
303
|
const fieldResponse = {
|
|
285
304
|
value: dateState.draft,
|
|
286
|
-
onChange:
|
|
305
|
+
onChange: handleChangeFromField,
|
|
287
306
|
selectedSections,
|
|
288
307
|
onSelectedSectionsChange: handleFieldSelectedSectionsChange
|
|
289
308
|
};
|
|
@@ -308,6 +327,7 @@ const usePickerValue = ({
|
|
|
308
327
|
const layoutResponse = (0, _extends2.default)({}, actions, {
|
|
309
328
|
value: viewValue,
|
|
310
329
|
onChange: handleChange,
|
|
330
|
+
onSelectShortcut: handleSelectShortcut,
|
|
311
331
|
isValid
|
|
312
332
|
});
|
|
313
333
|
return {
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.resolveDateTimeFormat = void 0;
|
|
8
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
9
|
+
var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
|
|
10
|
+
var _timeUtils = require("./time-utils");
|
|
11
|
+
var _dateUtils = require("./date-utils");
|
|
12
|
+
const _excluded = ["views", "format"];
|
|
13
|
+
const resolveDateTimeFormat = (utils, _ref) => {
|
|
14
|
+
let {
|
|
15
|
+
views,
|
|
16
|
+
format
|
|
17
|
+
} = _ref,
|
|
18
|
+
other = (0, _objectWithoutPropertiesLoose2.default)(_ref, _excluded);
|
|
19
|
+
if (format) {
|
|
20
|
+
return format;
|
|
21
|
+
}
|
|
22
|
+
const dateViews = [];
|
|
23
|
+
const timeViews = [];
|
|
24
|
+
views.forEach(view => {
|
|
25
|
+
if ((0, _timeUtils.isTimeView)(view)) {
|
|
26
|
+
timeViews.push(view);
|
|
27
|
+
} else {
|
|
28
|
+
dateViews.push(view);
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
if (timeViews.length === 0) {
|
|
32
|
+
return (0, _dateUtils.resolveDateFormat)(utils, (0, _extends2.default)({
|
|
33
|
+
views: dateViews
|
|
34
|
+
}, other), false);
|
|
35
|
+
}
|
|
36
|
+
if (dateViews.length === 0) {
|
|
37
|
+
return (0, _timeUtils.resolveTimeFormat)(utils, (0, _extends2.default)({
|
|
38
|
+
views: timeViews
|
|
39
|
+
}, other));
|
|
40
|
+
}
|
|
41
|
+
const timeFormat = (0, _timeUtils.resolveTimeFormat)(utils, (0, _extends2.default)({
|
|
42
|
+
views: timeViews
|
|
43
|
+
}, other));
|
|
44
|
+
const dateFormat = (0, _dateUtils.resolveDateFormat)(utils, (0, _extends2.default)({
|
|
45
|
+
views: dateViews
|
|
46
|
+
}, other), false);
|
|
47
|
+
return `${dateFormat} ${timeFormat}`;
|
|
48
|
+
};
|
|
49
|
+
exports.resolveDateTimeFormat = resolveDateTimeFormat;
|