@mui/x-date-pickers 8.0.0-beta.0 → 8.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +77 -0
- package/DateCalendar/DayCalendar.d.ts +3 -7
- package/DateCalendar/DayCalendar.js +16 -8
- package/DateCalendar/index.d.ts +0 -1
- package/DateField/useDateField.d.ts +1 -1
- package/DateField/useDateField.js +2 -16
- package/DatePicker/DatePicker.js +1 -0
- package/DateTimeField/useDateTimeField.d.ts +1 -1
- package/DateTimeField/useDateTimeField.js +2 -16
- package/DateTimePicker/DateTimePicker.js +1 -0
- package/DesktopDatePicker/DesktopDatePicker.js +1 -0
- package/DesktopDateTimePicker/DesktopDateTimePicker.js +1 -0
- package/DesktopTimePicker/DesktopTimePicker.js +1 -0
- package/MobileDatePicker/MobileDatePicker.js +1 -0
- package/MobileDateTimePicker/MobileDateTimePicker.js +1 -0
- package/MobileTimePicker/MobileTimePicker.js +1 -0
- package/PickersDay/PickersDay.d.ts +1 -72
- package/PickersDay/PickersDay.js +30 -28
- package/PickersDay/PickersDay.types.d.ts +114 -0
- package/PickersDay/PickersDay.types.js +5 -0
- package/PickersDay/index.d.ts +1 -1
- package/PickersDay/usePickerDayOwnerState.d.ts +14 -0
- package/PickersDay/usePickerDayOwnerState.js +40 -0
- package/TimeField/useTimeField.d.ts +1 -1
- package/TimeField/useTimeField.js +2 -16
- package/TimePicker/TimePicker.js +1 -0
- package/esm/DateCalendar/DayCalendar.d.ts +3 -7
- package/esm/DateCalendar/DayCalendar.js +16 -8
- package/esm/DateCalendar/index.d.ts +0 -1
- package/esm/DateField/useDateField.d.ts +1 -1
- package/esm/DateField/useDateField.js +3 -17
- package/esm/DatePicker/DatePicker.js +1 -0
- package/esm/DateTimeField/useDateTimeField.d.ts +1 -1
- package/esm/DateTimeField/useDateTimeField.js +3 -17
- package/esm/DateTimePicker/DateTimePicker.js +1 -0
- package/esm/DesktopDatePicker/DesktopDatePicker.js +1 -0
- package/esm/DesktopDateTimePicker/DesktopDateTimePicker.js +1 -0
- package/esm/DesktopTimePicker/DesktopTimePicker.js +1 -0
- package/esm/MobileDatePicker/MobileDatePicker.js +1 -0
- package/esm/MobileDateTimePicker/MobileDateTimePicker.js +1 -0
- package/esm/MobileTimePicker/MobileTimePicker.js +1 -0
- package/esm/PickersDay/PickersDay.d.ts +1 -72
- package/esm/PickersDay/PickersDay.js +30 -28
- package/esm/PickersDay/PickersDay.types.d.ts +114 -0
- package/esm/PickersDay/PickersDay.types.js +1 -0
- package/esm/PickersDay/index.d.ts +1 -1
- package/esm/PickersDay/usePickerDayOwnerState.d.ts +14 -0
- package/esm/PickersDay/usePickerDayOwnerState.js +32 -0
- package/esm/TimeField/useTimeField.d.ts +1 -1
- package/esm/TimeField/useTimeField.js +3 -17
- package/esm/TimePicker/TimePicker.js +1 -0
- package/esm/hooks/useSplitFieldProps.d.ts +1 -1
- package/esm/index.js +1 -1
- package/esm/internals/components/PickerFieldUI.d.ts +5 -5
- package/esm/internals/hooks/useField/buildSectionsFromFormat.d.ts +2 -2
- package/esm/internals/hooks/useField/buildSectionsFromFormat.js +9 -9
- package/esm/internals/hooks/useField/index.d.ts +1 -1
- package/esm/internals/hooks/useField/useField.d.ts +2 -4
- package/esm/internals/hooks/useField/useField.js +5 -229
- package/esm/internals/hooks/useField/useField.types.d.ts +48 -68
- package/esm/internals/hooks/useField/useField.utils.d.ts +2 -5
- package/esm/internals/hooks/useField/useField.utils.js +7 -92
- package/esm/internals/hooks/useField/useFieldCharacterEditing.d.ts +19 -26
- package/esm/internals/hooks/useField/useFieldCharacterEditing.js +42 -60
- package/esm/internals/hooks/useField/useFieldRootHandleKeyDown.d.ts +16 -0
- package/esm/internals/hooks/useField/useFieldRootHandleKeyDown.js +204 -0
- package/esm/internals/hooks/useField/useFieldState.d.ts +23 -13
- package/esm/internals/hooks/useField/useFieldState.js +103 -30
- package/esm/internals/hooks/useField/useFieldV6TextField.d.ts +3 -3
- package/esm/internals/hooks/useField/useFieldV6TextField.js +202 -135
- package/esm/internals/hooks/useField/useFieldV7TextField.d.ts +3 -2
- package/esm/internals/hooks/useField/useFieldV7TextField.js +217 -153
- package/esm/internals/hooks/usePicker/usePicker.types.d.ts +1 -0
- package/esm/internals/index.d.ts +2 -1
- package/esm/internals/index.js +1 -0
- package/esm/managers/useDateManager.js +3 -3
- package/esm/managers/useDateTimeManager.js +3 -3
- package/esm/managers/useTimeManager.js +3 -3
- package/esm/models/fields.d.ts +2 -2
- package/esm/models/manager.d.ts +3 -2
- package/hooks/useSplitFieldProps.d.ts +1 -1
- package/index.js +1 -1
- package/internals/components/PickerFieldUI.d.ts +5 -5
- package/internals/hooks/useField/buildSectionsFromFormat.d.ts +2 -2
- package/internals/hooks/useField/buildSectionsFromFormat.js +9 -9
- package/internals/hooks/useField/index.d.ts +1 -1
- package/internals/hooks/useField/useField.d.ts +2 -4
- package/internals/hooks/useField/useField.js +5 -231
- package/internals/hooks/useField/useField.types.d.ts +48 -68
- package/internals/hooks/useField/useField.utils.d.ts +2 -5
- package/internals/hooks/useField/useField.utils.js +8 -94
- package/internals/hooks/useField/useFieldCharacterEditing.d.ts +19 -26
- package/internals/hooks/useField/useFieldCharacterEditing.js +41 -59
- package/internals/hooks/useField/useFieldRootHandleKeyDown.d.ts +16 -0
- package/internals/hooks/useField/useFieldRootHandleKeyDown.js +210 -0
- package/internals/hooks/useField/useFieldState.d.ts +23 -13
- package/internals/hooks/useField/useFieldState.js +102 -29
- package/internals/hooks/useField/useFieldV6TextField.d.ts +3 -3
- package/internals/hooks/useField/useFieldV6TextField.js +202 -135
- package/internals/hooks/useField/useFieldV7TextField.d.ts +3 -2
- package/internals/hooks/useField/useFieldV7TextField.js +218 -154
- package/internals/hooks/usePicker/usePicker.types.d.ts +1 -0
- package/internals/index.d.ts +2 -1
- package/internals/index.js +7 -0
- package/managers/useDateManager.js +3 -3
- package/managers/useDateTimeManager.js +3 -3
- package/managers/useTimeManager.js +3 -3
- package/models/fields.d.ts +2 -2
- package/models/manager.d.ts +3 -2
- package/modern/DateCalendar/DayCalendar.d.ts +3 -7
- package/modern/DateCalendar/DayCalendar.js +16 -8
- package/modern/DateCalendar/index.d.ts +0 -1
- package/modern/DateField/useDateField.d.ts +1 -1
- package/modern/DateField/useDateField.js +3 -17
- package/modern/DatePicker/DatePicker.js +1 -0
- package/modern/DateTimeField/useDateTimeField.d.ts +1 -1
- package/modern/DateTimeField/useDateTimeField.js +3 -17
- package/modern/DateTimePicker/DateTimePicker.js +1 -0
- package/modern/DesktopDatePicker/DesktopDatePicker.js +1 -0
- package/modern/DesktopDateTimePicker/DesktopDateTimePicker.js +1 -0
- package/modern/DesktopTimePicker/DesktopTimePicker.js +1 -0
- package/modern/MobileDatePicker/MobileDatePicker.js +1 -0
- package/modern/MobileDateTimePicker/MobileDateTimePicker.js +1 -0
- package/modern/MobileTimePicker/MobileTimePicker.js +1 -0
- package/modern/PickersDay/PickersDay.d.ts +1 -72
- package/modern/PickersDay/PickersDay.js +30 -28
- package/modern/PickersDay/PickersDay.types.d.ts +114 -0
- package/modern/PickersDay/PickersDay.types.js +1 -0
- package/modern/PickersDay/index.d.ts +1 -1
- package/modern/PickersDay/usePickerDayOwnerState.d.ts +14 -0
- package/modern/PickersDay/usePickerDayOwnerState.js +32 -0
- package/modern/TimeField/useTimeField.d.ts +1 -1
- package/modern/TimeField/useTimeField.js +3 -17
- package/modern/TimePicker/TimePicker.js +1 -0
- package/modern/hooks/useSplitFieldProps.d.ts +1 -1
- package/modern/index.js +1 -1
- package/modern/internals/components/PickerFieldUI.d.ts +5 -5
- package/modern/internals/hooks/useField/buildSectionsFromFormat.d.ts +2 -2
- package/modern/internals/hooks/useField/buildSectionsFromFormat.js +9 -9
- package/modern/internals/hooks/useField/index.d.ts +1 -1
- package/modern/internals/hooks/useField/useField.d.ts +2 -4
- package/modern/internals/hooks/useField/useField.js +5 -229
- package/modern/internals/hooks/useField/useField.types.d.ts +48 -68
- package/modern/internals/hooks/useField/useField.utils.d.ts +2 -5
- package/modern/internals/hooks/useField/useField.utils.js +7 -92
- package/modern/internals/hooks/useField/useFieldCharacterEditing.d.ts +19 -26
- package/modern/internals/hooks/useField/useFieldCharacterEditing.js +42 -60
- package/modern/internals/hooks/useField/useFieldRootHandleKeyDown.d.ts +16 -0
- package/modern/internals/hooks/useField/useFieldRootHandleKeyDown.js +204 -0
- package/modern/internals/hooks/useField/useFieldState.d.ts +23 -13
- package/modern/internals/hooks/useField/useFieldState.js +103 -30
- package/modern/internals/hooks/useField/useFieldV6TextField.d.ts +3 -3
- package/modern/internals/hooks/useField/useFieldV6TextField.js +202 -135
- package/modern/internals/hooks/useField/useFieldV7TextField.d.ts +3 -2
- package/modern/internals/hooks/useField/useFieldV7TextField.js +217 -153
- package/modern/internals/hooks/usePicker/usePicker.types.d.ts +1 -0
- package/modern/internals/index.d.ts +2 -1
- package/modern/internals/index.js +1 -0
- package/modern/managers/useDateManager.js +3 -3
- package/modern/managers/useDateTimeManager.js +3 -3
- package/modern/managers/useTimeManager.js +3 -3
- package/modern/models/fields.d.ts +2 -2
- package/modern/models/manager.d.ts +3 -2
- package/package.json +1 -1
- package/tsconfig.build.tsbuildinfo +1 -1
|
@@ -10,25 +10,30 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
|
|
|
10
10
|
var React = _interopRequireWildcard(require("react"));
|
|
11
11
|
var _useControlled = _interopRequireDefault(require("@mui/utils/useControlled"));
|
|
12
12
|
var _useTimeout = _interopRequireDefault(require("@mui/utils/useTimeout"));
|
|
13
|
+
var _useEventCallback = _interopRequireDefault(require("@mui/utils/useEventCallback"));
|
|
13
14
|
var _RtlProvider = require("@mui/system/RtlProvider");
|
|
14
15
|
var _usePickerTranslations = require("../../../hooks/usePickerTranslations");
|
|
15
16
|
var _useUtils = require("../useUtils");
|
|
16
17
|
var _useField = require("./useField.utils");
|
|
17
18
|
var _buildSectionsFromFormat = require("./buildSectionsFromFormat");
|
|
19
|
+
var _validation = require("../../../validation");
|
|
18
20
|
var _useControlledValue = require("../useControlledValue");
|
|
19
21
|
var _getDefaultReferenceDate = require("../../utils/getDefaultReferenceDate");
|
|
20
|
-
const
|
|
22
|
+
const QUERY_LIFE_DURATION_MS = 5000;
|
|
23
|
+
const useFieldState = parameters => {
|
|
21
24
|
const utils = (0, _useUtils.useUtils)();
|
|
22
25
|
const translations = (0, _usePickerTranslations.usePickerTranslations)();
|
|
23
26
|
const adapter = (0, _useUtils.useLocalizationContext)();
|
|
24
27
|
const isRtl = (0, _RtlProvider.useRtl)();
|
|
25
28
|
const {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
29
|
+
manager: {
|
|
30
|
+
validator,
|
|
31
|
+
valueType,
|
|
32
|
+
internal_valueManager: valueManager,
|
|
33
|
+
internal_fieldValueManager: fieldValueManager
|
|
34
|
+
},
|
|
35
|
+
internalPropsWithDefaults,
|
|
36
|
+
internalPropsWithDefaults: {
|
|
32
37
|
value: valueProp,
|
|
33
38
|
defaultValue,
|
|
34
39
|
referenceDate: referenceDateProp,
|
|
@@ -40,8 +45,11 @@ const useFieldState = params => {
|
|
|
40
45
|
shouldRespectLeadingZeros = false,
|
|
41
46
|
timezone: timezoneProp,
|
|
42
47
|
enableAccessibleFieldDOMStructure = true
|
|
48
|
+
},
|
|
49
|
+
forwardedProps: {
|
|
50
|
+
error: errorProp
|
|
43
51
|
}
|
|
44
|
-
} =
|
|
52
|
+
} = parameters;
|
|
45
53
|
const {
|
|
46
54
|
value,
|
|
47
55
|
handleValueChange,
|
|
@@ -59,6 +67,23 @@ const useFieldState = params => {
|
|
|
59
67
|
React.useEffect(() => {
|
|
60
68
|
valueRef.current = value;
|
|
61
69
|
}, [value]);
|
|
70
|
+
const {
|
|
71
|
+
hasValidationError
|
|
72
|
+
} = (0, _validation.useValidation)({
|
|
73
|
+
props: internalPropsWithDefaults,
|
|
74
|
+
validator,
|
|
75
|
+
timezone,
|
|
76
|
+
value,
|
|
77
|
+
onError: internalPropsWithDefaults.onError
|
|
78
|
+
});
|
|
79
|
+
const error = React.useMemo(() => {
|
|
80
|
+
// only override when `error` is undefined.
|
|
81
|
+
// in case of multi input fields, the `error` value is provided externally and will always be defined.
|
|
82
|
+
if (errorProp !== undefined) {
|
|
83
|
+
return errorProp;
|
|
84
|
+
}
|
|
85
|
+
return hasValidationError;
|
|
86
|
+
}, [hasValidationError, errorProp]);
|
|
62
87
|
const localizedDigits = React.useMemo(() => (0, _useField.getLocalizedDigits)(utils), [utils]);
|
|
63
88
|
const sectionsValueBoundaries = React.useMemo(() => (0, _useField.getSectionsBoundaries)(utils, localizedDigits, timezone), [utils, localizedDigits, timezone]);
|
|
64
89
|
const getSectionsFromValue = React.useCallback(valueToAnalyze => fieldValueManager.getSectionsFromValue(valueToAnalyze, date => (0, _buildSectionsFromFormat.buildSectionsFromFormat)({
|
|
@@ -83,14 +108,15 @@ const useFieldState = params => {
|
|
|
83
108
|
isRtl,
|
|
84
109
|
locale: utils.locale
|
|
85
110
|
},
|
|
86
|
-
tempValueStrAndroid: null
|
|
111
|
+
tempValueStrAndroid: null,
|
|
112
|
+
characterQuery: null
|
|
87
113
|
};
|
|
88
114
|
const granularity = (0, _getDefaultReferenceDate.getSectionTypeGranularity)(sections);
|
|
89
115
|
const referenceValue = valueManager.getInitialReferenceValue({
|
|
90
116
|
referenceDate: referenceDateProp,
|
|
91
117
|
value,
|
|
92
118
|
utils,
|
|
93
|
-
props:
|
|
119
|
+
props: internalPropsWithDefaults,
|
|
94
120
|
granularity,
|
|
95
121
|
timezone
|
|
96
122
|
});
|
|
@@ -110,13 +136,15 @@ const useFieldState = params => {
|
|
|
110
136
|
};
|
|
111
137
|
const parsedSelectedSections = React.useMemo(() => (0, _useField.parseSelectedSections)(selectedSections, state.sections), [selectedSections, state.sections]);
|
|
112
138
|
const activeSectionIndex = parsedSelectedSections === 'all' ? 0 : parsedSelectedSections;
|
|
139
|
+
const sectionOrder = React.useMemo(() => (0, _useField.getSectionOrder)(state.sections, isRtl && !enableAccessibleFieldDOMStructure), [state.sections, isRtl, enableAccessibleFieldDOMStructure]);
|
|
140
|
+
const areAllSectionsEmpty = React.useMemo(() => state.sections.every(section => section.value === ''), [state.sections]);
|
|
113
141
|
const publishValue = newValue => {
|
|
114
142
|
const context = {
|
|
115
143
|
validationError: validator({
|
|
116
144
|
adapter,
|
|
117
145
|
value: newValue,
|
|
118
146
|
timezone,
|
|
119
|
-
props:
|
|
147
|
+
props: internalPropsWithDefaults
|
|
120
148
|
})
|
|
121
149
|
};
|
|
122
150
|
handleValueChange(newValue, context);
|
|
@@ -130,7 +158,7 @@ const useFieldState = params => {
|
|
|
130
158
|
return newSections;
|
|
131
159
|
};
|
|
132
160
|
const sectionToUpdateOnNextInvalidDateRef = React.useRef(null);
|
|
133
|
-
const
|
|
161
|
+
const updateSectionValueOnNextInvalidDateTimeout = (0, _useTimeout.default)();
|
|
134
162
|
const setSectionUpdateToApplyOnNextInvalidDate = newSectionValue => {
|
|
135
163
|
if (activeSectionIndex == null) {
|
|
136
164
|
return;
|
|
@@ -139,7 +167,7 @@ const useFieldState = params => {
|
|
|
139
167
|
sectionIndex: activeSectionIndex,
|
|
140
168
|
value: newSectionValue
|
|
141
169
|
};
|
|
142
|
-
|
|
170
|
+
updateSectionValueOnNextInvalidDateTimeout.start(0, () => {
|
|
143
171
|
sectionToUpdateOnNextInvalidDateRef.current = null;
|
|
144
172
|
});
|
|
145
173
|
};
|
|
@@ -149,9 +177,13 @@ const useFieldState = params => {
|
|
|
149
177
|
sections: prevState.sections.map(section => (0, _extends2.default)({}, section, {
|
|
150
178
|
value: ''
|
|
151
179
|
})),
|
|
152
|
-
tempValueStrAndroid: null
|
|
180
|
+
tempValueStrAndroid: null,
|
|
181
|
+
characterQuery: null
|
|
153
182
|
}));
|
|
154
183
|
} else {
|
|
184
|
+
setState(prevState => (0, _extends2.default)({}, prevState, {
|
|
185
|
+
characterQuery: null
|
|
186
|
+
}));
|
|
155
187
|
publishValue(valueManager.emptyValue);
|
|
156
188
|
}
|
|
157
189
|
};
|
|
@@ -167,9 +199,13 @@ const useFieldState = params => {
|
|
|
167
199
|
if (fieldValueManager.getDateFromSection(value, activeSection) === null) {
|
|
168
200
|
setState(prevState => (0, _extends2.default)({}, prevState, {
|
|
169
201
|
sections: setSectionValue(activeSectionIndex, ''),
|
|
170
|
-
tempValueStrAndroid: null
|
|
202
|
+
tempValueStrAndroid: null,
|
|
203
|
+
characterQuery: null
|
|
171
204
|
}));
|
|
172
205
|
} else {
|
|
206
|
+
setState(prevState => (0, _extends2.default)({}, prevState, {
|
|
207
|
+
characterQuery: null
|
|
208
|
+
}));
|
|
173
209
|
publishValue(fieldValueManager.updateDateInValue(value, activeSection, null));
|
|
174
210
|
}
|
|
175
211
|
};
|
|
@@ -195,14 +231,14 @@ const useFieldState = params => {
|
|
|
195
231
|
const newValue = fieldValueManager.parseValueStr(valueStr, state.referenceValue, parseDateStr);
|
|
196
232
|
publishValue(newValue);
|
|
197
233
|
};
|
|
198
|
-
const
|
|
234
|
+
const cleanActiveDateSectionsIfValueNullTimeout = (0, _useTimeout.default)();
|
|
199
235
|
const updateSectionValue = ({
|
|
200
236
|
section,
|
|
201
237
|
newSectionValue,
|
|
202
238
|
shouldGoToNextSection
|
|
203
239
|
}) => {
|
|
204
|
-
|
|
205
|
-
|
|
240
|
+
updateSectionValueOnNextInvalidDateTimeout.clear();
|
|
241
|
+
cleanActiveDateSectionsIfValueNullTimeout.clear();
|
|
206
242
|
const activeDate = fieldValueManager.getDateFromSection(value, section);
|
|
207
243
|
|
|
208
244
|
/**
|
|
@@ -227,7 +263,7 @@ const useFieldState = params => {
|
|
|
227
263
|
if (utils.isValid(newActiveDate)) {
|
|
228
264
|
const mergedDate = (0, _useField.mergeDateIntoReferenceDate)(utils, newActiveDate, newActiveDateSections, fieldValueManager.getDateFromSection(state.referenceValue, section), true);
|
|
229
265
|
if (activeDate == null) {
|
|
230
|
-
|
|
266
|
+
cleanActiveDateSectionsIfValueNullTimeout.start(0, () => {
|
|
231
267
|
if (valueRef.current === value) {
|
|
232
268
|
setState(prevState => (0, _extends2.default)({}, prevState, {
|
|
233
269
|
sections: fieldValueManager.clearDateSections(state.sections, section),
|
|
@@ -266,9 +302,14 @@ const useFieldState = params => {
|
|
|
266
302
|
tempValueStrAndroid: null
|
|
267
303
|
}));
|
|
268
304
|
};
|
|
269
|
-
const setTempAndroidValueStr = tempValueStrAndroid => setState(
|
|
305
|
+
const setTempAndroidValueStr = tempValueStrAndroid => setState(prevState => (0, _extends2.default)({}, prevState, {
|
|
270
306
|
tempValueStrAndroid
|
|
271
307
|
}));
|
|
308
|
+
const setCharacterQuery = (0, _useEventCallback.default)(newCharacterQuery => {
|
|
309
|
+
setState(prevState => (0, _extends2.default)({}, prevState, {
|
|
310
|
+
characterQuery: newCharacterQuery
|
|
311
|
+
}));
|
|
312
|
+
});
|
|
272
313
|
|
|
273
314
|
// If `prop.value` changes, we update the state to reflect the new value
|
|
274
315
|
if (value !== state.lastExternalValue) {
|
|
@@ -300,29 +341,61 @@ const useFieldState = params => {
|
|
|
300
341
|
locale: utils.locale
|
|
301
342
|
},
|
|
302
343
|
sections,
|
|
303
|
-
tempValueStrAndroid: null
|
|
344
|
+
tempValueStrAndroid: null,
|
|
345
|
+
characterQuery: null
|
|
304
346
|
}));
|
|
305
347
|
}
|
|
348
|
+
if (state.characterQuery != null && !error && activeSectionIndex == null) {
|
|
349
|
+
setCharacterQuery(null);
|
|
350
|
+
}
|
|
351
|
+
if (state.characterQuery != null && state.sections[state.characterQuery.sectionIndex]?.type !== state.characterQuery.sectionType) {
|
|
352
|
+
setCharacterQuery(null);
|
|
353
|
+
}
|
|
306
354
|
React.useEffect(() => {
|
|
307
355
|
if (sectionToUpdateOnNextInvalidDateRef.current != null) {
|
|
308
356
|
sectionToUpdateOnNextInvalidDateRef.current = null;
|
|
309
357
|
}
|
|
310
358
|
});
|
|
359
|
+
const cleanCharacterQueryTimeout = (0, _useTimeout.default)();
|
|
360
|
+
React.useEffect(() => {
|
|
361
|
+
if (state.characterQuery != null) {
|
|
362
|
+
cleanCharacterQueryTimeout.start(QUERY_LIFE_DURATION_MS, () => setCharacterQuery(null));
|
|
363
|
+
}
|
|
364
|
+
return () => {};
|
|
365
|
+
}, [state.characterQuery, setCharacterQuery, cleanCharacterQueryTimeout]);
|
|
366
|
+
|
|
367
|
+
// If `tempValueStrAndroid` is still defined for some section when running `useEffect`,
|
|
368
|
+
// Then `onChange` has only been called once, which means the user pressed `Backspace` to reset the section.
|
|
369
|
+
// This causes a small flickering on Android,
|
|
370
|
+
// But we can't use `useEnhancedEffect` which is always called before the second `onChange` call and then would cause false positives.
|
|
371
|
+
React.useEffect(() => {
|
|
372
|
+
if (state.tempValueStrAndroid != null && activeSectionIndex != null) {
|
|
373
|
+
clearActiveSection();
|
|
374
|
+
}
|
|
375
|
+
}, [state.sections]); // eslint-disable-line react-hooks/exhaustive-deps
|
|
376
|
+
|
|
311
377
|
return {
|
|
312
|
-
|
|
313
|
-
value,
|
|
378
|
+
// States and derived states
|
|
314
379
|
activeSectionIndex,
|
|
380
|
+
areAllSectionsEmpty,
|
|
381
|
+
error,
|
|
382
|
+
localizedDigits,
|
|
315
383
|
parsedSelectedSections,
|
|
316
|
-
|
|
384
|
+
sectionOrder,
|
|
385
|
+
sectionsValueBoundaries,
|
|
386
|
+
state,
|
|
387
|
+
timezone,
|
|
388
|
+
value,
|
|
389
|
+
// Methods to update the states
|
|
317
390
|
clearValue,
|
|
318
391
|
clearActiveSection,
|
|
392
|
+
setCharacterQuery,
|
|
393
|
+
setSelectedSections,
|
|
394
|
+
setTempAndroidValueStr,
|
|
319
395
|
updateSectionValue,
|
|
320
396
|
updateValueFromValueStr,
|
|
321
|
-
|
|
322
|
-
getSectionsFromValue
|
|
323
|
-
sectionsValueBoundaries,
|
|
324
|
-
localizedDigits,
|
|
325
|
-
timezone
|
|
397
|
+
// Utilities methods
|
|
398
|
+
getSectionsFromValue
|
|
326
399
|
};
|
|
327
400
|
};
|
|
328
401
|
exports.useFieldState = useFieldState;
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { UseFieldParameters, UseFieldProps, UseFieldReturnValue } from "./useField.types.js";
|
|
2
2
|
import { InferFieldSection } from "../../../models/index.js";
|
|
3
3
|
import { PickerValidValue } from "../../models/index.js";
|
|
4
|
+
export declare const addPositionPropertiesToSections: <TValue extends PickerValidValue>(sections: InferFieldSection<TValue>[], localizedDigits: string[], isRtl: boolean) => FieldSectionWithPositions<TValue>[];
|
|
5
|
+
export declare const useFieldV6TextField: <TValue extends PickerValidValue, TError, TValidationProps extends {}, TProps extends UseFieldProps<false>>(parameters: UseFieldParameters<TValue, false, TError, TValidationProps, TProps>) => UseFieldReturnValue<false, TProps>;
|
|
4
6
|
type FieldSectionWithPositions<TValue extends PickerValidValue> = InferFieldSection<TValue> & {
|
|
5
7
|
/**
|
|
6
8
|
* Start index of the section in the format
|
|
@@ -21,6 +23,4 @@ type FieldSectionWithPositions<TValue extends PickerValidValue> = InferFieldSect
|
|
|
21
23
|
*/
|
|
22
24
|
endInInput: number;
|
|
23
25
|
};
|
|
24
|
-
export declare const addPositionPropertiesToSections: <TValue extends PickerValidValue>(sections: InferFieldSection<TValue>[], localizedDigits: string[], isRtl: boolean) => FieldSectionWithPositions<TValue>[];
|
|
25
|
-
export declare const useFieldV6TextField: UseFieldTextField<false>;
|
|
26
26
|
export {};
|