@mui/x-date-pickers 8.0.0-alpha.6 → 8.0.0-alpha.8
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.d.ts +2 -4
- package/AdapterDateFns/AdapterDateFns.js +49 -47
- package/AdapterDateFnsBase/AdapterDateFnsBase.d.ts +1 -1
- package/AdapterDateFnsJalali/AdapterDateFnsJalali.d.ts +2 -4
- package/AdapterDateFnsJalali/AdapterDateFnsJalali.js +48 -46
- package/{AdapterDateFnsJalaliV3/AdapterDateFnsJalaliV3.d.ts → AdapterDateFnsJalaliV2/AdapterDateFnsJalaliV2.d.ts} +2 -2
- package/{AdapterDateFnsJalaliV3/AdapterDateFnsJalaliV3.js → AdapterDateFnsJalaliV2/AdapterDateFnsJalaliV2.js} +45 -52
- package/AdapterDateFnsJalaliV2/index.d.ts +1 -0
- package/AdapterDateFnsJalaliV2/index.js +1 -0
- package/{AdapterDateFnsJalaliV3 → AdapterDateFnsJalaliV2}/package.json +1 -1
- package/{AdapterDateFnsV3/AdapterDateFnsV3.d.ts → AdapterDateFnsV2/AdapterDateFnsV2.d.ts} +2 -2
- package/{AdapterDateFnsV3/AdapterDateFnsV3.js → AdapterDateFnsV2/AdapterDateFnsV2.js} +46 -54
- package/AdapterDateFnsV2/index.d.ts +1 -0
- package/AdapterDateFnsV2/index.js +1 -0
- package/{AdapterDateFnsV3 → AdapterDateFnsV2}/package.json +1 -1
- package/AdapterDayjs/AdapterDayjs.d.ts +1 -1
- package/AdapterLuxon/AdapterLuxon.d.ts +1 -1
- package/AdapterMoment/AdapterMoment.d.ts +1 -1
- package/CHANGELOG.md +242 -1
- package/DateCalendar/DateCalendar.js +1 -1
- package/DateCalendar/PickersFadeTransitionGroup.d.ts +1 -1
- package/DateCalendar/PickersSlideTransition.d.ts +1 -1
- package/DateField/DateField.js +26 -31
- package/DateField/DateField.types.d.ts +6 -15
- package/DateField/useDateField.d.ts +1 -1
- package/DateField/useDateField.js +14 -11
- package/DatePicker/DatePicker.js +1 -1
- package/DatePicker/DatePicker.types.d.ts +5 -0
- package/DatePicker/DatePickerToolbar.d.ts +1 -2
- package/DatePicker/DatePickerToolbar.js +7 -11
- package/DatePicker/shared.d.ts +1 -1
- package/DateTimeField/DateTimeField.js +26 -31
- package/DateTimeField/DateTimeField.types.d.ts +6 -15
- package/DateTimeField/useDateTimeField.d.ts +1 -1
- package/DateTimeField/useDateTimeField.js +14 -11
- package/DateTimePicker/DateTimePicker.js +2 -2
- package/DateTimePicker/DateTimePickerTabs.js +2 -2
- package/DateTimePicker/DateTimePickerToolbar.d.ts +6 -2
- package/DateTimePicker/DateTimePickerToolbar.js +36 -31
- package/DateTimePicker/shared.d.ts +1 -1
- package/DesktopDatePicker/DesktopDatePicker.js +9 -14
- package/DesktopDatePicker/DesktopDatePicker.types.d.ts +5 -0
- package/DesktopDateTimePicker/DesktopDateTimePicker.js +14 -22
- package/DesktopDateTimePicker/DesktopDateTimePickerLayout.js +1 -5
- package/DesktopTimePicker/DesktopTimePicker.js +4 -19
- package/MobileDatePicker/MobileDatePicker.js +2 -11
- package/MobileDateTimePicker/MobileDateTimePicker.js +2 -11
- package/MobileTimePicker/MobileTimePicker.js +2 -11
- package/PickersActionBar/PickersActionBar.d.ts +6 -3
- package/PickersActionBar/PickersActionBar.js +6 -3
- package/PickersLayout/PickersLayout.js +1 -5
- package/PickersLayout/PickersLayout.types.d.ts +2 -3
- package/PickersLayout/usePickerLayout.js +12 -31
- package/PickersShortcuts/PickersShortcuts.d.ts +2 -5
- package/PickersShortcuts/PickersShortcuts.js +13 -10
- package/PickersShortcuts/index.d.ts +1 -1
- package/PickersTextField/PickersInputBase/PickersInputBase.js +7 -0
- package/PickersTextField/PickersTextField.js +1 -1
- package/TimeField/TimeField.js +25 -30
- package/TimeField/TimeField.types.d.ts +6 -15
- package/TimeField/useTimeField.d.ts +1 -1
- package/TimeField/useTimeField.js +14 -11
- package/TimePicker/TimePicker.js +2 -2
- package/TimePicker/TimePickerToolbar.d.ts +1 -2
- package/TimePicker/TimePickerToolbar.js +20 -18
- package/TimePicker/shared.d.ts +1 -1
- package/hooks/index.d.ts +1 -0
- package/hooks/index.js +2 -1
- package/hooks/useIsValidValue.d.ts +7 -0
- package/hooks/useIsValidValue.js +11 -0
- package/hooks/useParsedFormat.d.ts +8 -6
- package/hooks/useParsedFormat.js +10 -12
- package/hooks/usePickerActionsContext.d.ts +3 -1
- package/hooks/usePickerActionsContext.js +0 -1
- package/hooks/usePickerContext.d.ts +5 -3
- package/hooks/usePickerContext.js +3 -2
- package/hooks/useSplitFieldProps.d.ts +12 -3
- package/hooks/useSplitFieldProps.js +8 -3
- package/index.d.ts +1 -0
- package/index.js +3 -2
- package/internals/components/PickerFieldUI.d.ts +132 -0
- package/internals/components/PickerFieldUI.js +306 -0
- package/internals/components/PickerProvider.d.ts +34 -12
- package/internals/components/PickerProvider.js +14 -4
- package/internals/components/PickersToolbar.d.ts +2 -3
- package/internals/components/PickersToolbar.js +1 -1
- package/internals/hooks/date-helpers-hooks.js +4 -3
- package/internals/hooks/useDesktopPicker/useDesktopPicker.d.ts +1 -1
- package/internals/hooks/useDesktopPicker/useDesktopPicker.js +21 -96
- package/internals/hooks/useDesktopPicker/useDesktopPicker.types.d.ts +10 -33
- package/internals/hooks/useField/buildSectionsFromFormat.js +1 -1
- package/internals/hooks/useField/index.d.ts +2 -0
- package/internals/hooks/useField/index.js +2 -1
- package/internals/hooks/useField/useField.js +12 -4
- package/internals/hooks/useField/useField.types.d.ts +11 -4
- package/internals/hooks/useField/useField.utils.js +2 -2
- package/internals/hooks/useField/useFieldInternalPropsWithDefaults.d.ts +15 -0
- package/internals/hooks/useField/useFieldInternalPropsWithDefaults.js +46 -0
- package/internals/hooks/useField/useFieldState.js +2 -2
- package/internals/hooks/useField/useFieldV6TextField.js +2 -2
- package/internals/hooks/useField/useFieldV7TextField.js +3 -3
- package/internals/hooks/useFieldOwnerState.d.ts +1 -2
- package/internals/hooks/useMobilePicker/useMobilePicker.d.ts +1 -1
- package/internals/hooks/useMobilePicker/useMobilePicker.js +20 -51
- package/internals/hooks/useMobilePicker/useMobilePicker.types.d.ts +8 -16
- package/internals/hooks/useNullablePickerContext.d.ts +5 -0
- package/internals/hooks/useNullablePickerContext.js +10 -0
- package/internals/hooks/useOpenState.js +3 -2
- package/internals/hooks/usePicker/usePicker.d.ts +1 -2
- package/internals/hooks/usePicker/usePicker.js +0 -9
- package/internals/hooks/usePicker/usePicker.types.d.ts +7 -9
- package/internals/hooks/usePicker/usePickerProvider.d.ts +12 -6
- package/internals/hooks/usePicker/usePickerProvider.js +26 -4
- package/internals/hooks/usePicker/usePickerValue.d.ts +1 -1
- package/internals/hooks/usePicker/usePickerValue.js +62 -185
- package/internals/hooks/usePicker/usePickerValue.types.d.ts +52 -55
- package/internals/hooks/usePicker/usePickerViews.d.ts +27 -23
- package/internals/hooks/usePicker/usePickerViews.js +17 -11
- package/internals/hooks/useStaticPicker/useStaticPicker.js +1 -4
- package/internals/hooks/useStaticPicker/useStaticPicker.types.d.ts +2 -2
- package/internals/hooks/useUtils.d.ts +4 -3
- package/internals/hooks/useUtils.js +1 -1
- package/internals/index.d.ts +11 -6
- package/internals/index.js +6 -4
- package/internals/models/fields.d.ts +3 -16
- package/internals/models/index.d.ts +1 -0
- package/internals/models/index.js +2 -1
- package/internals/models/manager.d.ts +15 -0
- package/internals/models/manager.js +1 -0
- package/internals/models/props/basePickerProps.d.ts +2 -14
- package/internals/models/props/toolbar.d.ts +1 -5
- package/internals/utils/date-utils.js +1 -1
- package/internals/utils/valueManagers.js +4 -4
- package/locales/index.d.ts +1 -0
- package/locales/index.js +1 -0
- package/locales/nbNO.js +15 -19
- package/locales/utils/getPickersLocalization.d.ts +0 -7
- package/locales/utils/getPickersLocalization.js +0 -13
- package/locales/zhTW.d.ts +80 -0
- package/locales/zhTW.js +73 -0
- package/managers/index.d.ts +6 -0
- package/managers/index.js +3 -0
- package/managers/package.json +6 -0
- package/managers/useDateManager.d.ts +27 -0
- package/managers/useDateManager.js +55 -0
- package/managers/useDateTimeManager.d.ts +28 -0
- package/managers/useDateTimeManager.js +60 -0
- package/managers/useTimeManager.d.ts +28 -0
- package/managers/useTimeManager.js +51 -0
- package/models/adapters.d.ts +1 -1
- package/models/fields.d.ts +4 -4
- package/models/index.d.ts +1 -0
- package/models/index.js +1 -0
- package/models/manager.d.ts +87 -0
- package/models/manager.js +1 -0
- package/models/pickers.d.ts +7 -0
- package/modern/AdapterDateFns/AdapterDateFns.js +49 -47
- package/modern/AdapterDateFnsJalali/AdapterDateFnsJalali.js +48 -46
- package/modern/{AdapterDateFnsJalaliV3/AdapterDateFnsJalaliV3.js → AdapterDateFnsJalaliV2/AdapterDateFnsJalaliV2.js} +45 -52
- package/modern/AdapterDateFnsJalaliV2/index.js +1 -0
- package/modern/{AdapterDateFnsV3/AdapterDateFnsV3.js → AdapterDateFnsV2/AdapterDateFnsV2.js} +46 -54
- package/modern/AdapterDateFnsV2/index.js +1 -0
- package/modern/DateCalendar/DateCalendar.js +1 -1
- package/modern/DateField/DateField.js +26 -31
- package/modern/DateField/useDateField.js +14 -11
- package/modern/DatePicker/DatePicker.js +1 -1
- package/modern/DatePicker/DatePickerToolbar.js +7 -11
- package/modern/DateTimeField/DateTimeField.js +26 -31
- package/modern/DateTimeField/useDateTimeField.js +14 -11
- package/modern/DateTimePicker/DateTimePicker.js +2 -2
- package/modern/DateTimePicker/DateTimePickerTabs.js +2 -2
- package/modern/DateTimePicker/DateTimePickerToolbar.js +36 -31
- package/modern/DesktopDatePicker/DesktopDatePicker.js +9 -14
- package/modern/DesktopDateTimePicker/DesktopDateTimePicker.js +14 -22
- package/modern/DesktopDateTimePicker/DesktopDateTimePickerLayout.js +1 -5
- package/modern/DesktopTimePicker/DesktopTimePicker.js +4 -19
- package/modern/MobileDatePicker/MobileDatePicker.js +2 -11
- package/modern/MobileDateTimePicker/MobileDateTimePicker.js +2 -11
- package/modern/MobileTimePicker/MobileTimePicker.js +2 -11
- package/modern/PickersActionBar/PickersActionBar.js +6 -3
- package/modern/PickersLayout/PickersLayout.js +1 -5
- package/modern/PickersLayout/usePickerLayout.js +12 -31
- package/modern/PickersShortcuts/PickersShortcuts.js +13 -10
- package/modern/PickersTextField/PickersInputBase/PickersInputBase.js +7 -0
- package/modern/PickersTextField/PickersTextField.js +1 -1
- package/modern/TimeField/TimeField.js +25 -30
- package/modern/TimeField/useTimeField.js +14 -11
- package/modern/TimePicker/TimePicker.js +2 -2
- package/modern/TimePicker/TimePickerToolbar.js +20 -18
- package/modern/hooks/index.js +2 -1
- package/modern/hooks/useIsValidValue.js +11 -0
- package/modern/hooks/useParsedFormat.js +10 -12
- package/modern/hooks/usePickerActionsContext.js +0 -1
- package/modern/hooks/usePickerContext.js +3 -2
- package/modern/hooks/useSplitFieldProps.js +8 -3
- package/modern/index.js +3 -2
- package/modern/internals/components/PickerFieldUI.js +306 -0
- package/modern/internals/components/PickerProvider.js +14 -4
- package/modern/internals/components/PickersToolbar.js +1 -1
- package/modern/internals/hooks/date-helpers-hooks.js +4 -3
- package/modern/internals/hooks/useDesktopPicker/useDesktopPicker.js +21 -96
- package/modern/internals/hooks/useField/buildSectionsFromFormat.js +1 -1
- package/modern/internals/hooks/useField/index.js +2 -1
- package/modern/internals/hooks/useField/useField.js +12 -4
- package/modern/internals/hooks/useField/useField.utils.js +2 -2
- package/modern/internals/hooks/useField/useFieldInternalPropsWithDefaults.js +46 -0
- package/modern/internals/hooks/useField/useFieldState.js +2 -2
- package/modern/internals/hooks/useField/useFieldV6TextField.js +2 -2
- package/modern/internals/hooks/useField/useFieldV7TextField.js +3 -3
- package/modern/internals/hooks/useMobilePicker/useMobilePicker.js +20 -51
- package/modern/internals/hooks/useNullablePickerContext.js +10 -0
- package/modern/internals/hooks/useOpenState.js +3 -2
- package/modern/internals/hooks/usePicker/usePicker.js +0 -9
- package/modern/internals/hooks/usePicker/usePickerProvider.js +26 -4
- package/modern/internals/hooks/usePicker/usePickerValue.js +62 -185
- package/modern/internals/hooks/usePicker/usePickerViews.js +17 -11
- package/modern/internals/hooks/useStaticPicker/useStaticPicker.js +1 -4
- package/modern/internals/hooks/useUtils.js +1 -1
- package/modern/internals/index.js +6 -4
- package/modern/internals/models/index.js +2 -1
- package/modern/internals/models/manager.js +1 -0
- package/modern/internals/utils/date-utils.js +1 -1
- package/modern/internals/utils/valueManagers.js +4 -4
- package/modern/locales/index.js +1 -0
- package/modern/locales/nbNO.js +15 -19
- package/modern/locales/utils/getPickersLocalization.js +0 -13
- package/modern/locales/zhTW.js +73 -0
- package/modern/managers/index.js +3 -0
- package/modern/managers/useDateManager.js +55 -0
- package/modern/managers/useDateTimeManager.js +60 -0
- package/modern/managers/useTimeManager.js +51 -0
- package/modern/models/index.js +1 -0
- package/modern/models/manager.js +1 -0
- package/node/AdapterDateFns/AdapterDateFns.js +97 -97
- package/node/AdapterDateFnsJalali/AdapterDateFnsJalali.js +97 -96
- package/node/{AdapterDateFnsJalaliV3/AdapterDateFnsJalaliV3.js → AdapterDateFnsJalaliV2/AdapterDateFnsJalaliV2.js} +94 -101
- package/node/{AdapterDateFnsJalaliV3 → AdapterDateFnsJalaliV2}/index.js +1 -1
- package/node/AdapterDateFnsV2/AdapterDateFnsV2.js +291 -0
- package/node/{AdapterDateFnsV3 → AdapterDateFnsV2}/index.js +1 -1
- package/node/DateCalendar/DateCalendar.js +1 -1
- package/node/DateField/DateField.js +26 -31
- package/node/DateField/useDateField.js +13 -10
- package/node/DatePicker/DatePicker.js +1 -1
- package/node/DatePicker/DatePickerToolbar.js +7 -11
- package/node/DateTimeField/DateTimeField.js +26 -31
- package/node/DateTimeField/useDateTimeField.js +13 -10
- package/node/DateTimePicker/DateTimePicker.js +2 -2
- package/node/DateTimePicker/DateTimePickerTabs.js +2 -2
- package/node/DateTimePicker/DateTimePickerToolbar.js +36 -31
- package/node/DesktopDatePicker/DesktopDatePicker.js +9 -14
- package/node/DesktopDateTimePicker/DesktopDateTimePicker.js +14 -22
- package/node/DesktopDateTimePicker/DesktopDateTimePickerLayout.js +1 -5
- package/node/DesktopTimePicker/DesktopTimePicker.js +4 -19
- package/node/MobileDatePicker/MobileDatePicker.js +2 -11
- package/node/MobileDateTimePicker/MobileDateTimePicker.js +2 -11
- package/node/MobileTimePicker/MobileTimePicker.js +2 -11
- package/node/PickersActionBar/PickersActionBar.js +8 -5
- package/node/PickersLayout/PickersLayout.js +1 -5
- package/node/PickersLayout/usePickerLayout.js +16 -35
- package/node/PickersShortcuts/PickersShortcuts.js +13 -10
- package/node/PickersTextField/PickersInputBase/PickersInputBase.js +7 -0
- package/node/PickersTextField/PickersTextField.js +1 -1
- package/node/TimeField/TimeField.js +25 -30
- package/node/TimeField/useTimeField.js +13 -10
- package/node/TimePicker/TimePicker.js +2 -2
- package/node/TimePicker/TimePickerToolbar.js +20 -18
- package/node/hooks/index.js +8 -1
- package/node/hooks/useIsValidValue.js +18 -0
- package/node/hooks/useParsedFormat.js +10 -12
- package/node/hooks/usePickerContext.js +5 -4
- package/node/hooks/useSplitFieldProps.js +7 -2
- package/node/index.js +13 -1
- package/node/internals/components/PickerFieldUI.js +318 -0
- package/node/internals/components/PickerProvider.js +16 -6
- package/node/internals/components/PickersToolbar.js +1 -1
- package/node/internals/hooks/date-helpers-hooks.js +4 -3
- package/node/internals/hooks/useDesktopPicker/useDesktopPicker.js +23 -98
- package/node/internals/hooks/useField/buildSectionsFromFormat.js +1 -1
- package/node/internals/hooks/useField/index.js +8 -1
- package/node/internals/hooks/useField/useField.js +11 -3
- package/node/internals/hooks/useField/useField.utils.js +2 -2
- package/node/internals/hooks/useField/useFieldInternalPropsWithDefaults.js +55 -0
- package/node/internals/hooks/useField/useFieldState.js +2 -2
- package/node/internals/hooks/useField/useFieldV6TextField.js +2 -2
- package/node/internals/hooks/useField/useFieldV7TextField.js +3 -3
- package/node/internals/hooks/useMobilePicker/useMobilePicker.js +20 -51
- package/node/internals/hooks/useNullablePickerContext.js +16 -0
- package/node/internals/hooks/useOpenState.js +4 -2
- package/node/internals/hooks/usePicker/usePicker.js +0 -10
- package/node/internals/hooks/usePicker/usePickerProvider.js +26 -4
- package/node/internals/hooks/usePicker/usePickerValue.js +62 -185
- package/node/internals/hooks/usePicker/usePickerViews.js +17 -12
- package/node/internals/hooks/useStaticPicker/useStaticPicker.js +1 -4
- package/node/internals/hooks/useUtils.js +1 -1
- package/node/internals/index.js +45 -19
- package/node/internals/models/index.js +11 -0
- package/node/internals/models/manager.js +5 -0
- package/node/internals/utils/date-utils.js +1 -1
- package/node/internals/utils/valueManagers.js +4 -4
- package/node/locales/index.js +11 -0
- package/node/locales/nbNO.js +15 -19
- package/node/locales/utils/getPickersLocalization.js +2 -16
- package/node/locales/zhTW.js +79 -0
- package/node/managers/index.js +26 -0
- package/node/managers/useDateManager.js +63 -0
- package/node/managers/useDateTimeManager.js +68 -0
- package/node/managers/useTimeManager.js +59 -0
- package/node/models/index.js +11 -0
- package/node/models/manager.js +5 -0
- package/package.json +3 -3
- package/themeAugmentation/props.d.ts +1 -1
- package/validation/extractValidationProps.d.ts +1 -1
- package/AdapterDateFnsJalaliV3/index.d.ts +0 -1
- package/AdapterDateFnsJalaliV3/index.js +0 -1
- package/AdapterDateFnsV3/index.d.ts +0 -1
- package/AdapterDateFnsV3/index.js +0 -1
- package/internals/hooks/defaultizedFieldProps.d.ts +0 -18
- package/internals/hooks/defaultizedFieldProps.js +0 -40
- package/internals/utils/convertFieldResponseIntoMuiTextFieldProps.d.ts +0 -3
- package/internals/utils/convertFieldResponseIntoMuiTextFieldProps.js +0 -44
- package/modern/AdapterDateFnsJalaliV3/index.js +0 -1
- package/modern/AdapterDateFnsV3/index.js +0 -1
- package/modern/internals/hooks/defaultizedFieldProps.js +0 -40
- package/modern/internals/utils/convertFieldResponseIntoMuiTextFieldProps.js +0 -44
- package/node/AdapterDateFnsV3/AdapterDateFnsV3.js +0 -299
- package/node/internals/hooks/defaultizedFieldProps.js +0 -50
- package/node/internals/utils/convertFieldResponseIntoMuiTextFieldProps.js +0 -52
|
@@ -5,106 +5,6 @@ import { useOpenState } from "../useOpenState.js";
|
|
|
5
5
|
import { useLocalizationContext, useUtils } from "../useUtils.js";
|
|
6
6
|
import { useValidation } from "../../../validation/index.js";
|
|
7
7
|
import { useValueWithTimezone } from "../useValueWithTimezone.js";
|
|
8
|
-
/**
|
|
9
|
-
* Decide if the new value should be published
|
|
10
|
-
* The published value will be passed to `onChange` if defined.
|
|
11
|
-
*/
|
|
12
|
-
const shouldPublishValue = params => {
|
|
13
|
-
const {
|
|
14
|
-
action,
|
|
15
|
-
hasChanged,
|
|
16
|
-
dateState,
|
|
17
|
-
isControlled
|
|
18
|
-
} = params;
|
|
19
|
-
const isCurrentValueTheDefaultValue = !isControlled && !dateState.hasBeenModifiedSinceMount;
|
|
20
|
-
|
|
21
|
-
// The field is responsible for only calling `onChange` when needed.
|
|
22
|
-
if (action.name === 'setValueFromField') {
|
|
23
|
-
return true;
|
|
24
|
-
}
|
|
25
|
-
if (action.name === 'setValueFromAction') {
|
|
26
|
-
// If the component is not controlled, and the value has not been modified since the mount,
|
|
27
|
-
// Then we want to publish the default value whenever the user pressed the "Accept", "Today" or "Clear" button.
|
|
28
|
-
if (isCurrentValueTheDefaultValue && ['accept', 'today', 'clear'].includes(action.pickerAction)) {
|
|
29
|
-
return true;
|
|
30
|
-
}
|
|
31
|
-
return hasChanged(dateState.lastPublishedValue);
|
|
32
|
-
}
|
|
33
|
-
if (action.name === 'setValueFromView' && action.selectionState !== 'shallow') {
|
|
34
|
-
// On the first view,
|
|
35
|
-
// If the value is not controlled, then clicking on any value (including the one equal to `defaultValue`) should call `onChange`
|
|
36
|
-
if (isCurrentValueTheDefaultValue) {
|
|
37
|
-
return true;
|
|
38
|
-
}
|
|
39
|
-
return hasChanged(dateState.lastPublishedValue);
|
|
40
|
-
}
|
|
41
|
-
if (action.name === 'setValueFromShortcut') {
|
|
42
|
-
// On the first view,
|
|
43
|
-
// If the value is not controlled, then clicking on any value (including the one equal to `defaultValue`) should call `onChange`
|
|
44
|
-
if (isCurrentValueTheDefaultValue) {
|
|
45
|
-
return true;
|
|
46
|
-
}
|
|
47
|
-
return hasChanged(dateState.lastPublishedValue);
|
|
48
|
-
}
|
|
49
|
-
return false;
|
|
50
|
-
};
|
|
51
|
-
|
|
52
|
-
/**
|
|
53
|
-
* Decide if the new value should be committed.
|
|
54
|
-
* The committed value will be passed to `onAccept` if defined.
|
|
55
|
-
* It will also be used as a reset target when calling the `cancel` picker action (when clicking on the "Cancel" button).
|
|
56
|
-
*/
|
|
57
|
-
const shouldCommitValue = params => {
|
|
58
|
-
const {
|
|
59
|
-
action,
|
|
60
|
-
hasChanged,
|
|
61
|
-
dateState,
|
|
62
|
-
isControlled,
|
|
63
|
-
closeOnSelect
|
|
64
|
-
} = params;
|
|
65
|
-
const isCurrentValueTheDefaultValue = !isControlled && !dateState.hasBeenModifiedSinceMount;
|
|
66
|
-
if (action.name === 'setValueFromAction') {
|
|
67
|
-
// If the component is not controlled, and the value has not been modified since the mount,
|
|
68
|
-
// Then we want to commit the default value whenever the user pressed the "Accept", "Today" or "Clear" button.
|
|
69
|
-
if (isCurrentValueTheDefaultValue && ['accept', 'today', 'clear'].includes(action.pickerAction)) {
|
|
70
|
-
return true;
|
|
71
|
-
}
|
|
72
|
-
return hasChanged(dateState.lastCommittedValue);
|
|
73
|
-
}
|
|
74
|
-
if (action.name === 'setValueFromView' && action.selectionState === 'finish' && closeOnSelect) {
|
|
75
|
-
// On picker where the 1st view is also the last view,
|
|
76
|
-
// If the value is not controlled, then clicking on any value (including the one equal to `defaultValue`) should call `onAccept`
|
|
77
|
-
if (isCurrentValueTheDefaultValue) {
|
|
78
|
-
return true;
|
|
79
|
-
}
|
|
80
|
-
return hasChanged(dateState.lastCommittedValue);
|
|
81
|
-
}
|
|
82
|
-
if (action.name === 'setValueFromShortcut') {
|
|
83
|
-
return action.changeImportance === 'accept' && hasChanged(dateState.lastCommittedValue);
|
|
84
|
-
}
|
|
85
|
-
return false;
|
|
86
|
-
};
|
|
87
|
-
|
|
88
|
-
/**
|
|
89
|
-
* Decide if the picker should be closed after the value is updated.
|
|
90
|
-
*/
|
|
91
|
-
const shouldClosePicker = params => {
|
|
92
|
-
const {
|
|
93
|
-
action,
|
|
94
|
-
closeOnSelect
|
|
95
|
-
} = params;
|
|
96
|
-
if (action.name === 'setValueFromAction') {
|
|
97
|
-
return true;
|
|
98
|
-
}
|
|
99
|
-
if (action.name === 'setValueFromView') {
|
|
100
|
-
return action.selectionState === 'finish' && closeOnSelect;
|
|
101
|
-
}
|
|
102
|
-
if (action.name === 'setValueFromShortcut') {
|
|
103
|
-
return action.changeImportance === 'accept';
|
|
104
|
-
}
|
|
105
|
-
return false;
|
|
106
|
-
};
|
|
107
|
-
|
|
108
8
|
/**
|
|
109
9
|
* Manage the value lifecycle of all the pickers.
|
|
110
10
|
*/
|
|
@@ -112,7 +12,6 @@ export const usePickerValue = ({
|
|
|
112
12
|
props,
|
|
113
13
|
valueManager,
|
|
114
14
|
valueType,
|
|
115
|
-
variant,
|
|
116
15
|
validator
|
|
117
16
|
}) => {
|
|
118
17
|
const {
|
|
@@ -120,7 +19,7 @@ export const usePickerValue = ({
|
|
|
120
19
|
onChange,
|
|
121
20
|
value: inValueWithoutRenderTimezone,
|
|
122
21
|
defaultValue: inDefaultValue,
|
|
123
|
-
closeOnSelect =
|
|
22
|
+
closeOnSelect = false,
|
|
124
23
|
timezone: timezoneProp,
|
|
125
24
|
referenceDate
|
|
126
25
|
} = props;
|
|
@@ -200,43 +99,49 @@ export const usePickerValue = ({
|
|
|
200
99
|
value: dateState.draft,
|
|
201
100
|
onError: props.onError
|
|
202
101
|
});
|
|
203
|
-
const
|
|
204
|
-
const
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
102
|
+
const setValue = useEventCallback((newValue, options) => {
|
|
103
|
+
const {
|
|
104
|
+
changeImportance = 'accept',
|
|
105
|
+
skipPublicationIfPristine = false,
|
|
106
|
+
validationError,
|
|
107
|
+
shortcut
|
|
108
|
+
} = options ?? {};
|
|
109
|
+
let shouldPublish;
|
|
110
|
+
let shouldCommit;
|
|
111
|
+
if (!skipPublicationIfPristine && !isControlled && !dateState.hasBeenModifiedSinceMount) {
|
|
112
|
+
// If the value is not controlled and the value has never been modified before,
|
|
113
|
+
// Then clicking on any value (including the one equal to `defaultValue`) should call `onChange` and `onAccept`
|
|
114
|
+
shouldPublish = true;
|
|
115
|
+
shouldCommit = changeImportance === 'accept';
|
|
116
|
+
} else {
|
|
117
|
+
shouldPublish = !valueManager.areValuesEqual(utils, newValue, dateState.lastPublishedValue);
|
|
118
|
+
shouldCommit = changeImportance === 'accept' && !valueManager.areValuesEqual(utils, newValue, dateState.lastCommittedValue);
|
|
119
|
+
}
|
|
214
120
|
setDateState(prev => _extends({}, prev, {
|
|
215
|
-
draft:
|
|
216
|
-
lastPublishedValue: shouldPublish ?
|
|
217
|
-
lastCommittedValue: shouldCommit ?
|
|
121
|
+
draft: newValue,
|
|
122
|
+
lastPublishedValue: shouldPublish ? newValue : prev.lastPublishedValue,
|
|
123
|
+
lastCommittedValue: shouldCommit ? newValue : prev.lastCommittedValue,
|
|
218
124
|
hasBeenModifiedSinceMount: true
|
|
219
125
|
}));
|
|
220
126
|
let cachedContext = null;
|
|
221
127
|
const getContext = () => {
|
|
222
128
|
if (!cachedContext) {
|
|
223
|
-
const validationError = action.name === 'setValueFromField' ? action.context.validationError : getValidationErrorForNewValue(action.value);
|
|
224
129
|
cachedContext = {
|
|
225
|
-
validationError
|
|
130
|
+
validationError: validationError == null ? getValidationErrorForNewValue(newValue) : validationError
|
|
226
131
|
};
|
|
227
|
-
if (
|
|
228
|
-
cachedContext.shortcut =
|
|
132
|
+
if (shortcut) {
|
|
133
|
+
cachedContext.shortcut = shortcut;
|
|
229
134
|
}
|
|
230
135
|
}
|
|
231
136
|
return cachedContext;
|
|
232
137
|
};
|
|
233
138
|
if (shouldPublish) {
|
|
234
|
-
handleValueChange(
|
|
139
|
+
handleValueChange(newValue, getContext());
|
|
235
140
|
}
|
|
236
141
|
if (shouldCommit && onAccept) {
|
|
237
|
-
onAccept(
|
|
142
|
+
onAccept(newValue, getContext());
|
|
238
143
|
}
|
|
239
|
-
if (
|
|
144
|
+
if (changeImportance === 'accept') {
|
|
240
145
|
setOpen(false);
|
|
241
146
|
}
|
|
242
147
|
});
|
|
@@ -251,33 +156,6 @@ export const usePickerValue = ({
|
|
|
251
156
|
hasBeenModifiedSinceMount: true
|
|
252
157
|
}));
|
|
253
158
|
}
|
|
254
|
-
const handleChange = useEventCallback((newValue, selectionState = 'partial') => updateDate({
|
|
255
|
-
name: 'setValueFromView',
|
|
256
|
-
value: newValue,
|
|
257
|
-
selectionState
|
|
258
|
-
}));
|
|
259
|
-
const handleSelectShortcut = useEventCallback((newValue, changeImportance, shortcut) => updateDate({
|
|
260
|
-
name: 'setValueFromShortcut',
|
|
261
|
-
value: newValue,
|
|
262
|
-
changeImportance,
|
|
263
|
-
shortcut
|
|
264
|
-
}));
|
|
265
|
-
const handleChangeFromField = useEventCallback((newValue, context) => updateDate({
|
|
266
|
-
name: 'setValueFromField',
|
|
267
|
-
value: newValue,
|
|
268
|
-
context
|
|
269
|
-
}));
|
|
270
|
-
const fieldResponse = {
|
|
271
|
-
value: dateState.draft,
|
|
272
|
-
onChange: handleChangeFromField
|
|
273
|
-
};
|
|
274
|
-
const valueWithoutError = React.useMemo(() => valueManager.cleanValue(utils, dateState.draft), [utils, valueManager, dateState.draft]);
|
|
275
|
-
const viewResponse = {
|
|
276
|
-
value: valueWithoutError,
|
|
277
|
-
onChange: handleChange,
|
|
278
|
-
open,
|
|
279
|
-
setOpen
|
|
280
|
-
};
|
|
281
159
|
const isValid = testedValue => {
|
|
282
160
|
const error = validator({
|
|
283
161
|
adapter,
|
|
@@ -287,62 +165,61 @@ export const usePickerValue = ({
|
|
|
287
165
|
});
|
|
288
166
|
return !valueManager.hasError(error);
|
|
289
167
|
};
|
|
290
|
-
const
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
};
|
|
296
|
-
const clearValue = useEventCallback(() => updateDate({
|
|
297
|
-
value: valueManager.emptyValue,
|
|
298
|
-
name: 'setValueFromAction',
|
|
299
|
-
pickerAction: 'clear'
|
|
300
|
-
}));
|
|
301
|
-
const setValueToToday = useEventCallback(() => updateDate({
|
|
302
|
-
value: valueManager.getTodayValue(utils, timezone, valueType),
|
|
303
|
-
name: 'setValueFromAction',
|
|
304
|
-
pickerAction: 'today'
|
|
305
|
-
}));
|
|
306
|
-
const acceptValueChanges = useEventCallback(() => updateDate({
|
|
307
|
-
value: dateState.lastPublishedValue,
|
|
308
|
-
name: 'setValueFromAction',
|
|
309
|
-
pickerAction: 'accept'
|
|
310
|
-
}));
|
|
311
|
-
const cancelValueChanges = useEventCallback(() => updateDate({
|
|
312
|
-
value: dateState.lastCommittedValue,
|
|
313
|
-
name: 'setValueFromAction',
|
|
314
|
-
pickerAction: 'cancel'
|
|
168
|
+
const clearValue = useEventCallback(() => setValue(valueManager.emptyValue));
|
|
169
|
+
const setValueToToday = useEventCallback(() => setValue(valueManager.getTodayValue(utils, timezone, valueType)));
|
|
170
|
+
const acceptValueChanges = useEventCallback(() => setValue(dateState.lastPublishedValue));
|
|
171
|
+
const cancelValueChanges = useEventCallback(() => setValue(dateState.lastCommittedValue, {
|
|
172
|
+
skipPublicationIfPristine: true
|
|
315
173
|
}));
|
|
316
174
|
const dismissViews = useEventCallback(() => {
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
name: 'setValueFromAction',
|
|
320
|
-
pickerAction: 'dismiss'
|
|
175
|
+
setValue(dateState.lastPublishedValue, {
|
|
176
|
+
skipPublicationIfPristine: true
|
|
321
177
|
});
|
|
322
178
|
});
|
|
179
|
+
const setValueFromView = useEventCallback((newValue, selectionState = 'partial') => {
|
|
180
|
+
// TODO: Expose a new method (private?) like `setView` that only updates the draft value.
|
|
181
|
+
if (selectionState === 'shallow') {
|
|
182
|
+
setDateState(prev => _extends({}, prev, {
|
|
183
|
+
draft: newValue,
|
|
184
|
+
hasBeenModifiedSinceMount: true
|
|
185
|
+
}));
|
|
186
|
+
}
|
|
187
|
+
setValue(newValue, {
|
|
188
|
+
changeImportance: selectionState === 'finish' && closeOnSelect ? 'accept' : 'set'
|
|
189
|
+
});
|
|
190
|
+
});
|
|
191
|
+
const valueWithoutError = React.useMemo(() => valueManager.cleanValue(utils, dateState.draft), [utils, valueManager, dateState.draft]);
|
|
192
|
+
const viewResponse = {
|
|
193
|
+
value: valueWithoutError,
|
|
194
|
+
onChange: setValueFromView,
|
|
195
|
+
open,
|
|
196
|
+
setOpen
|
|
197
|
+
};
|
|
323
198
|
const actionsContextValue = React.useMemo(() => ({
|
|
199
|
+
setValue,
|
|
324
200
|
setOpen,
|
|
325
201
|
clearValue,
|
|
326
202
|
setValueToToday,
|
|
327
203
|
acceptValueChanges,
|
|
328
204
|
cancelValueChanges
|
|
329
|
-
}), [setOpen, clearValue, setValueToToday, acceptValueChanges, cancelValueChanges]);
|
|
205
|
+
}), [setValue, setOpen, clearValue, setValueToToday, acceptValueChanges, cancelValueChanges]);
|
|
330
206
|
const contextValue = React.useMemo(() => _extends({}, actionsContextValue, {
|
|
207
|
+
value: dateState.draft,
|
|
208
|
+
timezone,
|
|
331
209
|
open
|
|
332
|
-
}), [actionsContextValue, open]);
|
|
210
|
+
}), [actionsContextValue, timezone, open, dateState.draft]);
|
|
333
211
|
const privateContextValue = React.useMemo(() => ({
|
|
334
212
|
dismissViews
|
|
335
213
|
}), [dismissViews]);
|
|
336
214
|
const providerParams = {
|
|
337
|
-
value:
|
|
215
|
+
value: dateState.draft,
|
|
338
216
|
contextValue,
|
|
339
217
|
actionsContextValue,
|
|
340
|
-
privateContextValue
|
|
218
|
+
privateContextValue,
|
|
219
|
+
isValidContextValue: isValid
|
|
341
220
|
};
|
|
342
221
|
return {
|
|
343
|
-
fieldProps: fieldResponse,
|
|
344
222
|
viewProps: viewResponse,
|
|
345
|
-
layoutProps: layoutResponse,
|
|
346
223
|
provider: providerParams
|
|
347
224
|
};
|
|
348
225
|
};
|
|
@@ -14,7 +14,7 @@ import { isTimeView } from "../../utils/time-utils.js";
|
|
|
14
14
|
/**
|
|
15
15
|
* Props used to handle the value of the pickers.
|
|
16
16
|
*/
|
|
17
|
-
|
|
17
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
18
18
|
/**
|
|
19
19
|
* Manage the views of all the pickers:
|
|
20
20
|
* - Handles the view switch
|
|
@@ -24,9 +24,8 @@ import { isTimeView } from "../../utils/time-utils.js";
|
|
|
24
24
|
export const usePickerViews = ({
|
|
25
25
|
props,
|
|
26
26
|
propsFromPickerValue,
|
|
27
|
-
additionalViewProps,
|
|
28
27
|
autoFocusView,
|
|
29
|
-
rendererInterceptor,
|
|
28
|
+
rendererInterceptor: RendererInterceptor,
|
|
30
29
|
fieldRef
|
|
31
30
|
}) => {
|
|
32
31
|
const {
|
|
@@ -124,15 +123,18 @@ export const usePickerViews = ({
|
|
|
124
123
|
setFocusedView(newView, true);
|
|
125
124
|
}, [open]); // eslint-disable-line react-hooks/exhaustive-deps
|
|
126
125
|
|
|
127
|
-
const
|
|
126
|
+
const actionsContextValue = React.useMemo(() => ({
|
|
127
|
+
setView
|
|
128
|
+
}), [setView]);
|
|
129
|
+
const contextValue = React.useMemo(() => _extends({}, actionsContextValue, {
|
|
128
130
|
views,
|
|
129
|
-
view: popperView
|
|
130
|
-
|
|
131
|
-
}), [views, popperView, setView]);
|
|
131
|
+
view: popperView
|
|
132
|
+
}), [actionsContextValue, views, popperView]);
|
|
132
133
|
const providerParams = {
|
|
133
134
|
hasUIView,
|
|
134
135
|
views,
|
|
135
|
-
contextValue
|
|
136
|
+
contextValue,
|
|
137
|
+
actionsContextValue
|
|
136
138
|
};
|
|
137
139
|
return {
|
|
138
140
|
shouldRestoreFocus,
|
|
@@ -145,7 +147,7 @@ export const usePickerViews = ({
|
|
|
145
147
|
if (renderer == null) {
|
|
146
148
|
return null;
|
|
147
149
|
}
|
|
148
|
-
const rendererProps = _extends({}, propsToForwardToView,
|
|
150
|
+
const rendererProps = _extends({}, propsToForwardToView, {
|
|
149
151
|
views,
|
|
150
152
|
timezone,
|
|
151
153
|
value,
|
|
@@ -157,8 +159,12 @@ export const usePickerViews = ({
|
|
|
157
159
|
showViewSwitcher: timeViewsCount > 1,
|
|
158
160
|
timeViewsCount
|
|
159
161
|
});
|
|
160
|
-
if (
|
|
161
|
-
return
|
|
162
|
+
if (RendererInterceptor) {
|
|
163
|
+
return /*#__PURE__*/_jsx(RendererInterceptor, {
|
|
164
|
+
viewRenderers: viewRenderers,
|
|
165
|
+
popperView: popperView,
|
|
166
|
+
rendererProps: rendererProps
|
|
167
|
+
});
|
|
162
168
|
}
|
|
163
169
|
return renderer(rendererProps);
|
|
164
170
|
}
|
|
@@ -39,20 +39,17 @@ export const useStaticPicker = _ref => {
|
|
|
39
39
|
autoFocus
|
|
40
40
|
} = props;
|
|
41
41
|
const {
|
|
42
|
-
layoutProps,
|
|
43
42
|
providerProps,
|
|
44
43
|
renderCurrentView
|
|
45
44
|
} = usePicker(_extends({}, pickerParams, {
|
|
46
45
|
props,
|
|
47
46
|
autoFocusView: autoFocus ?? false,
|
|
48
|
-
fieldRef: undefined,
|
|
49
47
|
localeText,
|
|
50
|
-
additionalViewProps: {},
|
|
51
48
|
variant: displayStaticWrapperAs
|
|
52
49
|
}));
|
|
53
50
|
const Layout = slots?.layout ?? PickerStaticLayout;
|
|
54
51
|
const renderPicker = () => /*#__PURE__*/_jsx(PickerProvider, _extends({}, providerProps, {
|
|
55
|
-
children: /*#__PURE__*/_jsx(Layout, _extends({},
|
|
52
|
+
children: /*#__PURE__*/_jsx(Layout, _extends({}, slotProps?.layout, {
|
|
56
53
|
slots: slots,
|
|
57
54
|
slotProps: slotProps,
|
|
58
55
|
sx: [...(Array.isArray(sx) ? sx : [sx]), ...(Array.isArray(slotProps?.layout?.sx) ? slotProps.layout.sx : [slotProps?.layout?.sx])],
|
|
@@ -19,7 +19,7 @@ export const useUtils = () => useLocalizationContext().utils;
|
|
|
19
19
|
export const useDefaultDates = () => useLocalizationContext().defaultDates;
|
|
20
20
|
export const useNow = timezone => {
|
|
21
21
|
const utils = useUtils();
|
|
22
|
-
const now = React.useRef();
|
|
22
|
+
const now = React.useRef(undefined);
|
|
23
23
|
if (now.current === undefined) {
|
|
24
24
|
now.current = utils.date(undefined, timezone);
|
|
25
25
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { PickersArrowSwitcher } from "./components/PickersArrowSwitcher/PickersArrowSwitcher.js";
|
|
2
|
+
export { PickerFieldUI, PickerFieldUIContextProvider, cleanFieldResponse, useFieldTextFieldProps } from "./components/PickerFieldUI.js";
|
|
2
3
|
export { PickerProvider } from "./components/PickerProvider.js";
|
|
3
4
|
export { PickersModalDialog } from "./components/PickersModalDialog.js";
|
|
4
5
|
export { PickersPopper } from "./components/PickersPopper.js";
|
|
@@ -11,7 +12,7 @@ export { pickersPopperClasses } from "./components/pickersPopperClasses.js";
|
|
|
11
12
|
export { PickersToolbarButton } from "./components/PickersToolbarButton.js";
|
|
12
13
|
export { DAY_MARGIN, DIALOG_WIDTH, VIEW_HEIGHT } from "./constants/dimensions.js";
|
|
13
14
|
export { useControlledValueWithTimezone } from "./hooks/useValueWithTimezone.js";
|
|
14
|
-
export { useField, createDateStrForV7HiddenInputFromSections, createDateStrForV6InputFromSections } from "./hooks/useField/index.js";
|
|
15
|
+
export { useField, useFieldInternalPropsWithDefaults, createDateStrForV7HiddenInputFromSections, createDateStrForV6InputFromSections } from "./hooks/useField/index.js";
|
|
15
16
|
export { useFieldOwnerState } from "./hooks/useFieldOwnerState.js";
|
|
16
17
|
export { usePicker } from "./hooks/usePicker/index.js";
|
|
17
18
|
export { usePickerPrivateContext } from "./hooks/usePickerPrivateContext.js";
|
|
@@ -20,15 +21,16 @@ export { useToolbarOwnerState } from "./hooks/useToolbarOwnerState.js";
|
|
|
20
21
|
export { useLocalizationContext, useDefaultDates, useUtils, useNow } from "./hooks/useUtils.js";
|
|
21
22
|
export { useViews } from "./hooks/useViews.js";
|
|
22
23
|
export { usePreviousMonthDisabled, useNextMonthDisabled } from "./hooks/date-helpers-hooks.js";
|
|
23
|
-
export { convertFieldResponseIntoMuiTextFieldProps } from "./utils/convertFieldResponseIntoMuiTextFieldProps.js";
|
|
24
24
|
export { applyDefaultDate, replaceInvalidDateByNull, areDatesEqual, getTodayDate, isDatePickerView, mergeDateAndTime, formatMeridiem } from "./utils/date-utils.js";
|
|
25
25
|
export { resolveTimeViewsResponse, resolveDateTimeFormat } from "./utils/date-time-utils.js";
|
|
26
26
|
export { getDefaultReferenceDate } from "./utils/getDefaultReferenceDate.js";
|
|
27
27
|
export { executeInTheNextEventLoopTick, getActiveElement, onSpaceOrEnter, DEFAULT_DESKTOP_MODE_MEDIA_QUERY } from "./utils/utils.js";
|
|
28
|
-
export { useDefaultizedDateField, useDefaultizedTimeField, useDefaultizedDateTimeField } from "./hooks/defaultizedFieldProps.js";
|
|
29
28
|
export { useDefaultReduceAnimations } from "./hooks/useDefaultReduceAnimations.js";
|
|
30
29
|
export { applyDefaultViewProps } from "./utils/views.js";
|
|
31
30
|
export { DayCalendar } from "../DateCalendar/DayCalendar.js";
|
|
32
31
|
export { useCalendarState } from "../DateCalendar/useCalendarState.js";
|
|
33
32
|
export { isInternalTimeView, isTimeView } from "./utils/time-utils.js";
|
|
34
|
-
export { DateTimePickerToolbarOverrideContext } from "../DateTimePicker/DateTimePickerToolbar.js";
|
|
33
|
+
export { DateTimePickerToolbarOverrideContext } from "../DateTimePicker/DateTimePickerToolbar.js";
|
|
34
|
+
export { getDateFieldInternalPropsDefaults } from "../managers/useDateManager.js";
|
|
35
|
+
export { getTimeFieldInternalPropsDefaults } from "../managers/useTimeManager.js";
|
|
36
|
+
export { getDateTimeFieldInternalPropsDefaults } from "../managers/useDateTimeManager.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -58,7 +58,7 @@ export const findClosestEnabledDate = ({
|
|
|
58
58
|
}
|
|
59
59
|
return null;
|
|
60
60
|
};
|
|
61
|
-
export const replaceInvalidDateByNull = (utils, value) =>
|
|
61
|
+
export const replaceInvalidDateByNull = (utils, value) => !utils.isValid(value) ? null : value;
|
|
62
62
|
export const applyDefaultDate = (utils, value, defaultValue) => {
|
|
63
63
|
if (value == null || !utils.isValid(value)) {
|
|
64
64
|
return defaultValue;
|
|
@@ -12,7 +12,7 @@ export const singleItemValueManager = {
|
|
|
12
12
|
referenceDate
|
|
13
13
|
} = _ref,
|
|
14
14
|
params = _objectWithoutPropertiesLoose(_ref, _excluded);
|
|
15
|
-
if (
|
|
15
|
+
if (params.utils.isValid(value)) {
|
|
16
16
|
return value;
|
|
17
17
|
}
|
|
18
18
|
if (referenceDate != null) {
|
|
@@ -25,11 +25,11 @@ export const singleItemValueManager = {
|
|
|
25
25
|
isSameError: (a, b) => a === b,
|
|
26
26
|
hasError: error => error != null,
|
|
27
27
|
defaultErrorState: null,
|
|
28
|
-
getTimezone: (utils, value) =>
|
|
28
|
+
getTimezone: (utils, value) => utils.isValid(value) ? utils.getTimezone(value) : null,
|
|
29
29
|
setTimezone: (utils, timezone, value) => value == null ? null : utils.setTimezone(value, timezone)
|
|
30
30
|
};
|
|
31
31
|
export const singleItemFieldValueManager = {
|
|
32
|
-
updateReferenceValue: (utils, value, prevReferenceValue) =>
|
|
32
|
+
updateReferenceValue: (utils, value, prevReferenceValue) => !utils.isValid(value) ? prevReferenceValue : value,
|
|
33
33
|
getSectionsFromValue: (utils, date, prevSections, getSectionsFromDate) => {
|
|
34
34
|
const shouldReUsePrevDateSections = !utils.isValid(date) && !!prevSections;
|
|
35
35
|
if (shouldReUsePrevDateSections) {
|
|
@@ -45,7 +45,7 @@ export const singleItemFieldValueManager = {
|
|
|
45
45
|
getSections: sections => sections,
|
|
46
46
|
getNewValuesFromNewActiveDate: newActiveDate => ({
|
|
47
47
|
value: newActiveDate,
|
|
48
|
-
referenceValue:
|
|
48
|
+
referenceValue: utils.isValid(newActiveDate) ? newActiveDate : state.referenceValue
|
|
49
49
|
})
|
|
50
50
|
}),
|
|
51
51
|
parseValueStr: (valueStr, referenceValue, parseDate) => parseDate(valueStr.trim(), referenceValue)
|
package/modern/locales/index.js
CHANGED
package/modern/locales/nbNO.js
CHANGED
|
@@ -16,11 +16,10 @@ const nbNOPickers = {
|
|
|
16
16
|
// DateRange labels
|
|
17
17
|
start: 'Start',
|
|
18
18
|
end: 'Slutt',
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
19
|
+
startDate: 'Startdato',
|
|
20
|
+
startTime: 'Starttid',
|
|
21
|
+
endDate: 'Sluttdato',
|
|
22
|
+
endTime: 'Slutttid',
|
|
24
23
|
// Action bar
|
|
25
24
|
cancelButtonLabel: 'Avbryt',
|
|
26
25
|
clearButtonLabel: 'Fjern',
|
|
@@ -46,8 +45,7 @@ const nbNOPickers = {
|
|
|
46
45
|
// Open picker labels
|
|
47
46
|
openDatePickerDialogue: formattedDate => formattedDate ? `Velg dato, valgt dato er ${formattedDate}` : 'Velg dato',
|
|
48
47
|
openTimePickerDialogue: formattedTime => formattedTime ? `Velg tid, valgt tid er ${formattedTime}` : 'Velg tid',
|
|
49
|
-
|
|
50
|
-
|
|
48
|
+
fieldClearLabel: 'Slett',
|
|
51
49
|
// Table labels
|
|
52
50
|
timeTableLabel: 'velg tid',
|
|
53
51
|
dateTableLabel: 'velg dato',
|
|
@@ -59,19 +57,17 @@ const nbNOPickers = {
|
|
|
59
57
|
fieldHoursPlaceholder: () => 'tt',
|
|
60
58
|
fieldMinutesPlaceholder: () => 'mm',
|
|
61
59
|
fieldSecondsPlaceholder: () => 'ss',
|
|
62
|
-
fieldMeridiemPlaceholder: () => 'aa'
|
|
63
|
-
|
|
60
|
+
fieldMeridiemPlaceholder: () => 'aa',
|
|
64
61
|
// View names
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
62
|
+
year: 'År',
|
|
63
|
+
month: 'Måned',
|
|
64
|
+
day: 'Dag',
|
|
65
|
+
weekDay: 'Ukedag',
|
|
66
|
+
hours: 'Timer',
|
|
67
|
+
minutes: 'Minutter',
|
|
68
|
+
seconds: 'Sekunder',
|
|
69
|
+
meridiem: 'Meridiem',
|
|
74
70
|
// Common
|
|
75
|
-
|
|
71
|
+
empty: 'Tøm'
|
|
76
72
|
};
|
|
77
73
|
export const nbNO = getPickersLocalization(nbNOPickers);
|
|
@@ -9,17 +9,4 @@ export const getPickersLocalization = pickersTranslations => {
|
|
|
9
9
|
}
|
|
10
10
|
}
|
|
11
11
|
};
|
|
12
|
-
};
|
|
13
|
-
export const buildGetOpenDialogAriaText = params => {
|
|
14
|
-
const {
|
|
15
|
-
utils,
|
|
16
|
-
formatKey,
|
|
17
|
-
contextTranslation,
|
|
18
|
-
propsTranslation
|
|
19
|
-
} = params;
|
|
20
|
-
return value => {
|
|
21
|
-
const formattedValue = value !== null && utils.isValid(value) ? utils.format(value, formatKey) : null;
|
|
22
|
-
const translation = propsTranslation ?? contextTranslation;
|
|
23
|
-
return translation(formattedValue);
|
|
24
|
-
};
|
|
25
12
|
};
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { getPickersLocalization } from "./utils/getPickersLocalization.js";
|
|
2
|
+
const views = {
|
|
3
|
+
hours: '小時',
|
|
4
|
+
minutes: '分鐘',
|
|
5
|
+
seconds: '秒',
|
|
6
|
+
meridiem: '十二小時制'
|
|
7
|
+
};
|
|
8
|
+
const zhTWPickers = {
|
|
9
|
+
// Calendar navigation
|
|
10
|
+
previousMonth: '上個月',
|
|
11
|
+
nextMonth: '下個月',
|
|
12
|
+
// View navigation
|
|
13
|
+
openPreviousView: '前一個視圖',
|
|
14
|
+
openNextView: '下一個視圖',
|
|
15
|
+
calendarViewSwitchingButtonAriaLabel: view => view === 'year' ? '年視圖已打開,切換為日曆視圖' : '日曆視圖已打開,切換為年視圖',
|
|
16
|
+
// DateRange labels
|
|
17
|
+
start: '開始',
|
|
18
|
+
end: '結束',
|
|
19
|
+
startDate: '開始日期',
|
|
20
|
+
startTime: '開始時間',
|
|
21
|
+
endDate: '結束日期',
|
|
22
|
+
endTime: '結束時間',
|
|
23
|
+
// Action bar
|
|
24
|
+
cancelButtonLabel: '取消',
|
|
25
|
+
clearButtonLabel: '清除',
|
|
26
|
+
okButtonLabel: '確認',
|
|
27
|
+
todayButtonLabel: '今天',
|
|
28
|
+
// Toolbar titles
|
|
29
|
+
datePickerToolbarTitle: '選擇日期',
|
|
30
|
+
dateTimePickerToolbarTitle: '選擇日期和時間',
|
|
31
|
+
timePickerToolbarTitle: '選擇時間',
|
|
32
|
+
dateRangePickerToolbarTitle: '選擇時間範圍',
|
|
33
|
+
// Clock labels
|
|
34
|
+
clockLabelText: (view, formattedTime) => `選擇 ${views[view]}. ${!formattedTime ? '未選擇時間' : `已選擇${formattedTime}`}`,
|
|
35
|
+
hoursClockNumberText: hours => `${hours}小時`,
|
|
36
|
+
minutesClockNumberText: minutes => `${minutes}分鐘`,
|
|
37
|
+
secondsClockNumberText: seconds => `${seconds}秒`,
|
|
38
|
+
// Digital clock labels
|
|
39
|
+
selectViewText: view => `選擇 ${views[view]}`,
|
|
40
|
+
// Calendar labels
|
|
41
|
+
calendarWeekNumberHeaderLabel: '週數',
|
|
42
|
+
calendarWeekNumberHeaderText: '#',
|
|
43
|
+
calendarWeekNumberAriaLabelText: weekNumber => `第${weekNumber}週`,
|
|
44
|
+
calendarWeekNumberText: weekNumber => `${weekNumber}`,
|
|
45
|
+
// Open picker labels
|
|
46
|
+
openDatePickerDialogue: formattedDate => formattedDate ? `選擇日期,已選擇${formattedDate}` : '選擇日期',
|
|
47
|
+
openTimePickerDialogue: formattedTime => formattedTime ? `選擇時間,已選擇${formattedTime}` : '選擇時間',
|
|
48
|
+
fieldClearLabel: '清除',
|
|
49
|
+
// Table labels
|
|
50
|
+
timeTableLabel: '選擇時間',
|
|
51
|
+
dateTableLabel: '選擇日期',
|
|
52
|
+
// Field section placeholders
|
|
53
|
+
fieldYearPlaceholder: params => 'Y'.repeat(params.digitAmount),
|
|
54
|
+
fieldMonthPlaceholder: params => params.contentType === 'letter' ? 'MMMM' : 'MM',
|
|
55
|
+
fieldDayPlaceholder: () => 'DD',
|
|
56
|
+
fieldWeekDayPlaceholder: params => params.contentType === 'letter' ? 'EEEE' : 'EE',
|
|
57
|
+
fieldHoursPlaceholder: () => 'hh',
|
|
58
|
+
fieldMinutesPlaceholder: () => 'mm',
|
|
59
|
+
fieldSecondsPlaceholder: () => 'ss',
|
|
60
|
+
fieldMeridiemPlaceholder: () => 'aa',
|
|
61
|
+
// View names
|
|
62
|
+
year: '年份',
|
|
63
|
+
month: '月份',
|
|
64
|
+
day: '日期',
|
|
65
|
+
weekDay: '星期',
|
|
66
|
+
hours: '時',
|
|
67
|
+
minutes: '分',
|
|
68
|
+
seconds: '秒',
|
|
69
|
+
meridiem: '十二小時制',
|
|
70
|
+
// Common
|
|
71
|
+
empty: '空'
|
|
72
|
+
};
|
|
73
|
+
export const zhTW = getPickersLocalization(zhTWPickers);
|