@dnb/eufemia 10.24.0 → 10.25.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/CHANGELOG.md +17 -0
- package/cjs/components/accordion/style/dnb-accordion.css +6 -2
- package/cjs/components/accordion/style/dnb-accordion.min.css +2 -2
- package/cjs/components/accordion/style/dnb-accordion.scss +8 -2
- package/cjs/components/accordion/style/themes/dnb-accordion-theme-sbanken.css +5 -4
- package/cjs/components/accordion/style/themes/dnb-accordion-theme-sbanken.min.css +1 -1
- package/cjs/components/accordion/style/themes/dnb-accordion-theme-sbanken.scss +5 -5
- package/cjs/components/autocomplete/Autocomplete.d.ts +0 -15
- package/cjs/components/autocomplete/AutocompleteDocs.d.ts +3 -0
- package/cjs/components/autocomplete/AutocompleteDocs.js +293 -0
- package/cjs/components/autocomplete/AutocompleteDocs.js.map +1 -0
- package/cjs/components/dropdown/Dropdown.d.ts +0 -3
- package/cjs/components/input/InputDocs.js +2 -2
- package/cjs/components/input/InputDocs.js.map +1 -1
- package/cjs/extensions/forms/DataContext/At/At.js +6 -6
- package/cjs/extensions/forms/DataContext/At/At.js.map +1 -1
- package/cjs/extensions/forms/DataContext/Context.d.ts +5 -2
- package/cjs/extensions/forms/DataContext/Context.js +1 -0
- package/cjs/extensions/forms/DataContext/Context.js.map +1 -1
- package/cjs/extensions/forms/DataContext/Provider/Provider.d.ts +1 -5
- package/cjs/extensions/forms/DataContext/Provider/Provider.js +52 -26
- package/cjs/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
- package/cjs/extensions/forms/DataContext/Provider/ProviderDocs.js +4 -4
- package/cjs/extensions/forms/DataContext/Provider/ProviderDocs.js.map +1 -1
- package/cjs/extensions/forms/Form/Handler/Handler.d.ts +1 -1
- package/cjs/extensions/forms/Form/Handler/Handler.js +3 -3
- package/cjs/extensions/forms/Form/Handler/Handler.js.map +1 -1
- package/cjs/extensions/forms/StepsLayout/StepsLayout.js +27 -24
- package/cjs/extensions/forms/StepsLayout/StepsLayout.js.map +1 -1
- package/cjs/extensions/forms/StepsLayout/StepsLayoutDocs.js +1 -1
- package/cjs/extensions/forms/StepsLayout/StepsLayoutDocs.js.map +1 -1
- package/cjs/extensions/forms/StepsLayout/style/dnb-steps-layout.css +1 -1
- package/cjs/extensions/forms/StepsLayout/style/dnb-steps-layout.min.css +1 -1
- package/cjs/extensions/forms/StepsLayout/style/dnb-steps-layout.scss +1 -1
- package/cjs/extensions/forms/hooks/useFieldProps.js +82 -58
- package/cjs/extensions/forms/hooks/useFieldProps.js.map +1 -1
- package/cjs/extensions/forms/style/dnb-forms.css +1 -1
- package/cjs/extensions/forms/style/dnb-forms.min.css +1 -1
- package/cjs/fragments/drawer-list/DrawerList.d.ts +95 -1
- package/cjs/fragments/drawer-list/DrawerListDocs.d.ts +3 -0
- package/cjs/fragments/drawer-list/DrawerListDocs.js +188 -0
- package/cjs/fragments/drawer-list/DrawerListDocs.js.map +1 -0
- package/cjs/shared/Eufemia.d.ts +1 -1
- package/cjs/shared/Eufemia.js +2 -2
- package/cjs/shared/Eufemia.js.map +1 -1
- package/cjs/shared/helpers/runCssVersionMismatchWarning.js +2 -2
- package/cjs/shared/helpers/runCssVersionMismatchWarning.js.map +1 -1
- package/cjs/style/core/scopes.scss +1 -1
- package/cjs/style/dnb-ui-basis.css +1 -1
- package/cjs/style/dnb-ui-basis.min.css +1 -1
- package/cjs/style/dnb-ui-body.css +1 -1
- package/cjs/style/dnb-ui-body.min.css +1 -1
- package/cjs/style/dnb-ui-components.css +7 -3
- package/cjs/style/dnb-ui-components.min.css +2 -2
- package/cjs/style/dnb-ui-core.css +1 -1
- package/cjs/style/dnb-ui-core.min.css +1 -1
- package/cjs/style/dnb-ui-extensions.css +1 -1
- package/cjs/style/dnb-ui-extensions.min.css +1 -1
- package/cjs/style/dnb-ui-forms.css +1 -1
- package/cjs/style/dnb-ui-forms.min.css +1 -1
- package/cjs/style/themes/theme-eiendom/eiendom-theme-components.css +8 -4
- package/cjs/style/themes/theme-eiendom/eiendom-theme-components.min.css +3 -3
- package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.css +1 -1
- package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
- package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.css +1 -1
- package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
- package/cjs/style/themes/theme-eiendom/properties.js +10 -10
- package/cjs/style/themes/theme-eiendom/properties.js.map +1 -1
- package/cjs/style/themes/theme-sbanken/properties.js +10 -10
- package/cjs/style/themes/theme-sbanken/properties.js.map +1 -1
- package/cjs/style/themes/theme-sbanken/properties.scss +10 -10
- package/cjs/style/themes/theme-sbanken/sbanken-theme-basis.css +10 -10
- package/cjs/style/themes/theme-sbanken/sbanken-theme-basis.min.css +1 -1
- package/cjs/style/themes/theme-sbanken/sbanken-theme-components.css +13 -8
- package/cjs/style/themes/theme-sbanken/sbanken-theme-components.min.css +4 -4
- package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.css +1 -1
- package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
- package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.css +1 -1
- package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
- package/cjs/style/themes/theme-ui/properties.js +10 -10
- package/cjs/style/themes/theme-ui/properties.js.map +1 -1
- package/cjs/style/themes/theme-ui/ui-theme-components.css +8 -4
- package/cjs/style/themes/theme-ui/ui-theme-components.min.css +3 -3
- package/cjs/style/themes/theme-ui/ui-theme-extensions.css +1 -1
- package/cjs/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
- package/cjs/style/themes/theme-ui/ui-theme-forms.css +1 -1
- package/cjs/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
- package/components/accordion/style/dnb-accordion.css +6 -2
- package/components/accordion/style/dnb-accordion.min.css +2 -2
- package/components/accordion/style/dnb-accordion.scss +8 -2
- package/components/accordion/style/themes/dnb-accordion-theme-sbanken.css +5 -4
- package/components/accordion/style/themes/dnb-accordion-theme-sbanken.min.css +1 -1
- package/components/accordion/style/themes/dnb-accordion-theme-sbanken.scss +5 -5
- package/components/autocomplete/Autocomplete.d.ts +0 -15
- package/components/autocomplete/AutocompleteDocs.d.ts +3 -0
- package/components/autocomplete/AutocompleteDocs.js +285 -0
- package/components/autocomplete/AutocompleteDocs.js.map +1 -0
- package/components/dropdown/Dropdown.d.ts +0 -3
- package/components/input/InputDocs.js +2 -2
- package/components/input/InputDocs.js.map +1 -1
- package/es/components/accordion/style/dnb-accordion.css +6 -2
- package/es/components/accordion/style/dnb-accordion.min.css +2 -2
- package/es/components/accordion/style/dnb-accordion.scss +8 -2
- package/es/components/accordion/style/themes/dnb-accordion-theme-sbanken.css +5 -4
- package/es/components/accordion/style/themes/dnb-accordion-theme-sbanken.min.css +1 -1
- package/es/components/accordion/style/themes/dnb-accordion-theme-sbanken.scss +5 -5
- package/es/components/autocomplete/Autocomplete.d.ts +0 -15
- package/es/components/autocomplete/AutocompleteDocs.d.ts +3 -0
- package/es/components/autocomplete/AutocompleteDocs.js +285 -0
- package/es/components/autocomplete/AutocompleteDocs.js.map +1 -0
- package/es/components/dropdown/Dropdown.d.ts +0 -3
- package/es/components/input/InputDocs.js +2 -2
- package/es/components/input/InputDocs.js.map +1 -1
- package/es/extensions/forms/DataContext/At/At.js +7 -7
- package/es/extensions/forms/DataContext/At/At.js.map +1 -1
- package/es/extensions/forms/DataContext/Context.d.ts +5 -2
- package/es/extensions/forms/DataContext/Context.js +1 -0
- package/es/extensions/forms/DataContext/Context.js.map +1 -1
- package/es/extensions/forms/DataContext/Provider/Provider.d.ts +1 -5
- package/es/extensions/forms/DataContext/Provider/Provider.js +51 -26
- package/es/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
- package/es/extensions/forms/DataContext/Provider/ProviderDocs.js +4 -4
- package/es/extensions/forms/DataContext/Provider/ProviderDocs.js.map +1 -1
- package/es/extensions/forms/Form/Handler/Handler.d.ts +1 -1
- package/es/extensions/forms/Form/Handler/Handler.js +3 -3
- package/es/extensions/forms/Form/Handler/Handler.js.map +1 -1
- package/es/extensions/forms/StepsLayout/StepsLayout.js +27 -24
- package/es/extensions/forms/StepsLayout/StepsLayout.js.map +1 -1
- package/es/extensions/forms/StepsLayout/StepsLayoutDocs.js +1 -1
- package/es/extensions/forms/StepsLayout/StepsLayoutDocs.js.map +1 -1
- package/es/extensions/forms/StepsLayout/style/dnb-steps-layout.css +1 -1
- package/es/extensions/forms/StepsLayout/style/dnb-steps-layout.min.css +1 -1
- package/es/extensions/forms/StepsLayout/style/dnb-steps-layout.scss +1 -1
- package/es/extensions/forms/hooks/useFieldProps.js +82 -58
- package/es/extensions/forms/hooks/useFieldProps.js.map +1 -1
- package/es/extensions/forms/style/dnb-forms.css +1 -1
- package/es/extensions/forms/style/dnb-forms.min.css +1 -1
- package/es/fragments/drawer-list/DrawerList.d.ts +95 -1
- package/es/fragments/drawer-list/DrawerListDocs.d.ts +3 -0
- package/es/fragments/drawer-list/DrawerListDocs.js +180 -0
- package/es/fragments/drawer-list/DrawerListDocs.js.map +1 -0
- package/es/shared/Eufemia.d.ts +1 -1
- package/es/shared/Eufemia.js +2 -2
- package/es/shared/Eufemia.js.map +1 -1
- package/es/shared/helpers/runCssVersionMismatchWarning.js +2 -2
- package/es/shared/helpers/runCssVersionMismatchWarning.js.map +1 -1
- package/es/style/core/scopes.scss +1 -1
- package/es/style/dnb-ui-basis.css +1 -1
- package/es/style/dnb-ui-basis.min.css +1 -1
- package/es/style/dnb-ui-body.css +1 -1
- package/es/style/dnb-ui-body.min.css +1 -1
- package/es/style/dnb-ui-components.css +7 -3
- package/es/style/dnb-ui-components.min.css +2 -2
- package/es/style/dnb-ui-core.css +1 -1
- package/es/style/dnb-ui-core.min.css +1 -1
- package/es/style/dnb-ui-extensions.css +1 -1
- package/es/style/dnb-ui-extensions.min.css +1 -1
- package/es/style/dnb-ui-forms.css +1 -1
- package/es/style/dnb-ui-forms.min.css +1 -1
- package/es/style/themes/theme-eiendom/eiendom-theme-components.css +8 -4
- package/es/style/themes/theme-eiendom/eiendom-theme-components.min.css +3 -3
- package/es/style/themes/theme-eiendom/eiendom-theme-extensions.css +1 -1
- package/es/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
- package/es/style/themes/theme-eiendom/eiendom-theme-forms.css +1 -1
- package/es/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
- package/es/style/themes/theme-eiendom/properties.js +10 -10
- package/es/style/themes/theme-eiendom/properties.js.map +1 -1
- package/es/style/themes/theme-sbanken/properties.js +10 -10
- package/es/style/themes/theme-sbanken/properties.js.map +1 -1
- package/es/style/themes/theme-sbanken/properties.scss +10 -10
- package/es/style/themes/theme-sbanken/sbanken-theme-basis.css +10 -10
- package/es/style/themes/theme-sbanken/sbanken-theme-basis.min.css +1 -1
- package/es/style/themes/theme-sbanken/sbanken-theme-components.css +13 -8
- package/es/style/themes/theme-sbanken/sbanken-theme-components.min.css +4 -4
- package/es/style/themes/theme-sbanken/sbanken-theme-extensions.css +1 -1
- package/es/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
- package/es/style/themes/theme-sbanken/sbanken-theme-forms.css +1 -1
- package/es/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
- package/es/style/themes/theme-ui/properties.js +10 -10
- package/es/style/themes/theme-ui/properties.js.map +1 -1
- package/es/style/themes/theme-ui/ui-theme-components.css +8 -4
- package/es/style/themes/theme-ui/ui-theme-components.min.css +3 -3
- package/es/style/themes/theme-ui/ui-theme-extensions.css +1 -1
- package/es/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
- package/es/style/themes/theme-ui/ui-theme-forms.css +1 -1
- package/es/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
- package/esm/dnb-ui-basis.min.mjs +1 -1
- package/esm/dnb-ui-components.min.mjs +1 -1
- package/esm/dnb-ui-elements.min.mjs +1 -1
- package/esm/dnb-ui-extensions.min.mjs +2 -2
- package/esm/dnb-ui-lib.min.mjs +1 -1
- package/extensions/forms/DataContext/At/At.js +7 -7
- package/extensions/forms/DataContext/At/At.js.map +1 -1
- package/extensions/forms/DataContext/Context.d.ts +5 -2
- package/extensions/forms/DataContext/Context.js +1 -0
- package/extensions/forms/DataContext/Context.js.map +1 -1
- package/extensions/forms/DataContext/Provider/Provider.d.ts +1 -5
- package/extensions/forms/DataContext/Provider/Provider.js +52 -26
- package/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
- package/extensions/forms/DataContext/Provider/ProviderDocs.js +4 -4
- package/extensions/forms/DataContext/Provider/ProviderDocs.js.map +1 -1
- package/extensions/forms/Form/Handler/Handler.d.ts +1 -1
- package/extensions/forms/Form/Handler/Handler.js +3 -3
- package/extensions/forms/Form/Handler/Handler.js.map +1 -1
- package/extensions/forms/StepsLayout/StepsLayout.js +27 -24
- package/extensions/forms/StepsLayout/StepsLayout.js.map +1 -1
- package/extensions/forms/StepsLayout/StepsLayoutDocs.js +1 -1
- package/extensions/forms/StepsLayout/StepsLayoutDocs.js.map +1 -1
- package/extensions/forms/StepsLayout/style/dnb-steps-layout.css +1 -1
- package/extensions/forms/StepsLayout/style/dnb-steps-layout.min.css +1 -1
- package/extensions/forms/StepsLayout/style/dnb-steps-layout.scss +1 -1
- package/extensions/forms/hooks/useFieldProps.js +82 -58
- package/extensions/forms/hooks/useFieldProps.js.map +1 -1
- package/extensions/forms/style/dnb-forms.css +1 -1
- package/extensions/forms/style/dnb-forms.min.css +1 -1
- package/fragments/drawer-list/DrawerList.d.ts +95 -1
- package/fragments/drawer-list/DrawerListDocs.d.ts +3 -0
- package/fragments/drawer-list/DrawerListDocs.js +180 -0
- package/fragments/drawer-list/DrawerListDocs.js.map +1 -0
- package/package.json +1 -1
- package/shared/Eufemia.d.ts +1 -1
- package/shared/Eufemia.js +2 -2
- package/shared/Eufemia.js.map +1 -1
- package/shared/helpers/runCssVersionMismatchWarning.js +2 -2
- package/shared/helpers/runCssVersionMismatchWarning.js.map +1 -1
- package/style/core/scopes.scss +1 -1
- package/style/dnb-ui-basis.css +1 -1
- package/style/dnb-ui-basis.min.css +1 -1
- package/style/dnb-ui-body.css +1 -1
- package/style/dnb-ui-body.min.css +1 -1
- package/style/dnb-ui-components.css +7 -3
- package/style/dnb-ui-components.min.css +2 -2
- package/style/dnb-ui-core.css +1 -1
- package/style/dnb-ui-core.min.css +1 -1
- package/style/dnb-ui-extensions.css +1 -1
- package/style/dnb-ui-extensions.min.css +1 -1
- package/style/dnb-ui-forms.css +1 -1
- package/style/dnb-ui-forms.min.css +1 -1
- package/style/themes/theme-eiendom/eiendom-theme-components.css +8 -4
- package/style/themes/theme-eiendom/eiendom-theme-components.min.css +3 -3
- package/style/themes/theme-eiendom/eiendom-theme-extensions.css +1 -1
- package/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
- package/style/themes/theme-eiendom/eiendom-theme-forms.css +1 -1
- package/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
- package/style/themes/theme-eiendom/properties.js +10 -10
- package/style/themes/theme-eiendom/properties.js.map +1 -1
- package/style/themes/theme-sbanken/properties.js +10 -10
- package/style/themes/theme-sbanken/properties.js.map +1 -1
- package/style/themes/theme-sbanken/properties.scss +10 -10
- package/style/themes/theme-sbanken/sbanken-theme-basis.css +10 -10
- package/style/themes/theme-sbanken/sbanken-theme-basis.min.css +1 -1
- package/style/themes/theme-sbanken/sbanken-theme-components.css +13 -8
- package/style/themes/theme-sbanken/sbanken-theme-components.min.css +4 -4
- package/style/themes/theme-sbanken/sbanken-theme-extensions.css +1 -1
- package/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
- package/style/themes/theme-sbanken/sbanken-theme-forms.css +1 -1
- package/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
- package/style/themes/theme-ui/properties.js +10 -10
- package/style/themes/theme-ui/properties.js.map +1 -1
- package/style/themes/theme-ui/ui-theme-components.css +8 -4
- package/style/themes/theme-ui/ui-theme-components.min.css +3 -3
- package/style/themes/theme-ui/ui-theme-extensions.css +1 -1
- package/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
- package/style/themes/theme-ui/ui-theme-forms.css +1 -1
- package/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
- package/umd/dnb-ui-basis.min.js +1 -1
- package/umd/dnb-ui-components.min.js +1 -1
- package/umd/dnb-ui-elements.min.js +1 -1
- package/umd/dnb-ui-extensions.min.js +2 -2
- package/umd/dnb-ui-lib.min.js +1 -1
|
@@ -84,6 +84,7 @@ export default function useFieldProps(props) {
|
|
|
84
84
|
validateRequired
|
|
85
85
|
});
|
|
86
86
|
const {
|
|
87
|
+
handlePathChangeUnvalidated: handlePathChangeUnvalidatedDataContext,
|
|
87
88
|
handlePathChange: handlePathChangeDataContext,
|
|
88
89
|
updateDataValue: updateDataValueDataContext,
|
|
89
90
|
validateData: validateDataDataContext,
|
|
@@ -155,22 +156,22 @@ export default function useFieldProps(props) {
|
|
|
155
156
|
const asyncBehaviorIsEnabled = useMemo(() => {
|
|
156
157
|
return isAsync(onChange) || isAsync(onChangeContext);
|
|
157
158
|
}, [onChangeContext, onChange]);
|
|
158
|
-
const
|
|
159
|
+
const validatedValue = useRef();
|
|
159
160
|
const changeEventResultRef = useRef(null);
|
|
160
|
-
const
|
|
161
|
-
const
|
|
162
|
-
|
|
161
|
+
const asyncProcessRef = useRef(null);
|
|
162
|
+
const defineAsyncProcess = useCallback(name => {
|
|
163
|
+
asyncProcessRef.current = name;
|
|
163
164
|
}, []);
|
|
164
165
|
const asyncBufferRef = useRef({});
|
|
165
166
|
for (const key in asyncBufferRef.current) {
|
|
166
167
|
const {
|
|
167
|
-
|
|
168
|
-
|
|
168
|
+
resolve,
|
|
169
|
+
validateProcesses
|
|
169
170
|
} = asyncBufferRef.current[key] || {};
|
|
170
|
-
if ((
|
|
171
|
+
if ((validateProcesses === null || validateProcesses === void 0 ? void 0 : validateProcesses()) === false) {
|
|
171
172
|
delete asyncBufferRef.current[key];
|
|
172
|
-
if (typeof
|
|
173
|
-
window.requestAnimationFrame(
|
|
173
|
+
if (typeof resolve === 'function') {
|
|
174
|
+
window.requestAnimationFrame(resolve);
|
|
174
175
|
}
|
|
175
176
|
}
|
|
176
177
|
}
|
|
@@ -298,24 +299,33 @@ export default function useFieldProps(props) {
|
|
|
298
299
|
}
|
|
299
300
|
const runAsync = isAsync(validatorRef.current);
|
|
300
301
|
if (runAsync) {
|
|
301
|
-
|
|
302
|
+
defineAsyncProcess('validator');
|
|
302
303
|
setFieldState('validating');
|
|
303
304
|
hideError();
|
|
304
305
|
}
|
|
305
306
|
const opts = _objectSpread(_objectSpread({}, contextErrorMessages), errorMessagesRef.current);
|
|
307
|
+
const tmpValue = valueRef.current;
|
|
306
308
|
const result = await validatorRef.current(valueRef.current, opts);
|
|
307
|
-
|
|
308
|
-
if (
|
|
309
|
-
|
|
309
|
+
const unchangedValue = tmpValue === valueRef.current;
|
|
310
|
+
if (unchangedValue) {
|
|
311
|
+
persistErrorState('gracefully', result);
|
|
312
|
+
if (continuousValidation || runAsync) {
|
|
313
|
+
window.requestAnimationFrame(() => {
|
|
314
|
+
showError();
|
|
315
|
+
forceUpdate();
|
|
316
|
+
});
|
|
317
|
+
}
|
|
310
318
|
}
|
|
311
|
-
if (
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
}
|
|
319
|
+
if (runAsync) {
|
|
320
|
+
defineAsyncProcess(undefined);
|
|
321
|
+
if (unchangedValue) {
|
|
322
|
+
setFieldState(result instanceof Error ? 'error' : 'complete');
|
|
323
|
+
} else {
|
|
324
|
+
setFieldState('pending');
|
|
325
|
+
}
|
|
316
326
|
}
|
|
317
327
|
return result;
|
|
318
|
-
}, [contextErrorMessages, continuousValidation, hideError, persistErrorState,
|
|
328
|
+
}, [contextErrorMessages, continuousValidation, hideError, persistErrorState, defineAsyncProcess, setFieldState, showError]);
|
|
319
329
|
const callOnBlurValidator = useCallback(async function () {
|
|
320
330
|
let {
|
|
321
331
|
valueOverride = null
|
|
@@ -326,17 +336,18 @@ export default function useFieldProps(props) {
|
|
|
326
336
|
const value = transformers.current.toEvent(valueOverride !== null && valueOverride !== void 0 ? valueOverride : valueRef.current, 'onBlurValidator');
|
|
327
337
|
const runAsync = isAsync(onBlurValidatorRef.current);
|
|
328
338
|
if (runAsync) {
|
|
329
|
-
|
|
339
|
+
defineAsyncProcess('onBlurValidator');
|
|
330
340
|
setFieldState('validating');
|
|
331
341
|
}
|
|
332
342
|
const result = await onBlurValidatorRef.current(value);
|
|
333
343
|
persistErrorState('gracefully', result);
|
|
334
344
|
if (runAsync) {
|
|
345
|
+
defineAsyncProcess(undefined);
|
|
335
346
|
setFieldState(result instanceof Error ? 'error' : 'complete');
|
|
336
347
|
}
|
|
337
348
|
showError();
|
|
338
349
|
forceUpdate();
|
|
339
|
-
}, [persistErrorState,
|
|
350
|
+
}, [persistErrorState, defineAsyncProcess, setFieldState, showError]);
|
|
340
351
|
const validateValue = useCallback(async () => {
|
|
341
352
|
const isProcessActive = startProcess();
|
|
342
353
|
if (disabled) {
|
|
@@ -349,7 +360,7 @@ export default function useFieldProps(props) {
|
|
|
349
360
|
}
|
|
350
361
|
const value = valueRef.current;
|
|
351
362
|
changeEventResultRef.current = null;
|
|
352
|
-
|
|
363
|
+
validatedValue.current = null;
|
|
353
364
|
try {
|
|
354
365
|
const requiredError = transformers.current.validateRequired(value, {
|
|
355
366
|
emptyValue,
|
|
@@ -375,7 +386,7 @@ export default function useFieldProps(props) {
|
|
|
375
386
|
if (isProcessActive()) {
|
|
376
387
|
clearErrorState();
|
|
377
388
|
}
|
|
378
|
-
|
|
389
|
+
validatedValue.current = value;
|
|
379
390
|
} catch (error) {
|
|
380
391
|
if (isProcessActive()) {
|
|
381
392
|
persistErrorState('weak', error);
|
|
@@ -413,33 +424,31 @@ export default function useFieldProps(props) {
|
|
|
413
424
|
const yieldAsyncProcess = useCallback(async _ref5 => {
|
|
414
425
|
let {
|
|
415
426
|
name,
|
|
416
|
-
waitFor
|
|
417
|
-
withValidatedValueOf
|
|
427
|
+
waitFor
|
|
418
428
|
} = _ref5;
|
|
419
429
|
return new Promise(resolve => {
|
|
420
|
-
const
|
|
421
|
-
|
|
422
|
-
resolve();
|
|
423
|
-
}
|
|
424
|
-
};
|
|
425
|
-
const hasAsyncProcesses = () => {
|
|
426
|
-
return waitFor.some(_ref6 => {
|
|
430
|
+
const validateProcesses = () => {
|
|
431
|
+
const result = waitFor.some(_ref6 => {
|
|
427
432
|
let {
|
|
428
433
|
processName,
|
|
429
|
-
withStates
|
|
434
|
+
withStates,
|
|
435
|
+
withValue
|
|
430
436
|
} = _ref6;
|
|
431
|
-
|
|
437
|
+
const hasMatchingValue = withValue === validatedValue.current;
|
|
438
|
+
const result = (typeof withValue === 'undefined' ? false : !hasMatchingValue) || (processName ? processName === asyncProcessRef.current : true) && (withStates === null || withStates === void 0 ? void 0 : withStates.some(state => {
|
|
432
439
|
return state === fieldStateRef.current;
|
|
433
|
-
});
|
|
440
|
+
}));
|
|
441
|
+
return result;
|
|
434
442
|
});
|
|
443
|
+
return result;
|
|
435
444
|
};
|
|
436
|
-
if (
|
|
445
|
+
if (validateProcesses() === true) {
|
|
437
446
|
asyncBufferRef.current[name] = {
|
|
438
|
-
|
|
439
|
-
|
|
447
|
+
resolve,
|
|
448
|
+
validateProcesses
|
|
440
449
|
};
|
|
441
450
|
} else {
|
|
442
|
-
|
|
451
|
+
resolve();
|
|
443
452
|
setFieldState('pending');
|
|
444
453
|
}
|
|
445
454
|
});
|
|
@@ -464,6 +473,7 @@ export default function useFieldProps(props) {
|
|
|
464
473
|
}]
|
|
465
474
|
});
|
|
466
475
|
}
|
|
476
|
+
defineAsyncProcess(undefined);
|
|
467
477
|
if ((result === null || result === void 0 ? void 0 : result.success) === 'saved') {
|
|
468
478
|
setFieldState('success');
|
|
469
479
|
} else if (result !== null && result !== void 0 && result.error) {
|
|
@@ -471,7 +481,7 @@ export default function useFieldProps(props) {
|
|
|
471
481
|
} else if (asyncBehaviorIsEnabled) {
|
|
472
482
|
setFieldState('complete');
|
|
473
483
|
}
|
|
474
|
-
}, [asyncBehaviorIsEnabled, persistErrorState, setFieldState, showError, yieldAsyncProcess]);
|
|
484
|
+
}, [asyncBehaviorIsEnabled, defineAsyncProcess, persistErrorState, setFieldState, showError, yieldAsyncProcess]);
|
|
475
485
|
const setEventResult = useCallback(result => {
|
|
476
486
|
if (result instanceof Error) {
|
|
477
487
|
result = {
|
|
@@ -485,37 +495,43 @@ export default function useFieldProps(props) {
|
|
|
485
495
|
if (asyncBehaviorIsEnabled) {
|
|
486
496
|
await yieldAsyncProcess({
|
|
487
497
|
name: 'onChangeContext',
|
|
488
|
-
withValidatedValueOf: valueRef.current,
|
|
489
498
|
waitFor: [{
|
|
490
499
|
processName: 'validator',
|
|
491
|
-
withStates: ['validating', 'error']
|
|
500
|
+
withStates: ['validating', 'error'],
|
|
501
|
+
withValue: valueRef.current
|
|
492
502
|
}, {
|
|
493
503
|
processName: 'onBlurValidator',
|
|
494
|
-
withStates: ['validating', 'error']
|
|
504
|
+
withStates: ['validating', 'error'],
|
|
505
|
+
withValue: valueRef.current
|
|
495
506
|
}]
|
|
496
507
|
});
|
|
497
508
|
}
|
|
498
509
|
if (path) {
|
|
499
510
|
if (isAsync(onChangeContext)) {
|
|
500
|
-
|
|
501
|
-
|
|
511
|
+
defineAsyncProcess('onChangeContext');
|
|
512
|
+
if (!hasError()) {
|
|
513
|
+
setEventResult(await (handlePathChangeDataContext === null || handlePathChangeDataContext === void 0 ? void 0 : handlePathChangeDataContext(path)));
|
|
514
|
+
} else {
|
|
515
|
+
setEventResult(null);
|
|
516
|
+
}
|
|
502
517
|
} else {
|
|
503
|
-
setEventResult(handlePathChangeDataContext === null || handlePathChangeDataContext === void 0 ? void 0 : handlePathChangeDataContext(path
|
|
518
|
+
setEventResult(handlePathChangeDataContext === null || handlePathChangeDataContext === void 0 ? void 0 : handlePathChangeDataContext(path));
|
|
504
519
|
}
|
|
505
520
|
}
|
|
506
521
|
forceUpdate();
|
|
507
|
-
}, [asyncBehaviorIsEnabled, path, yieldAsyncProcess, onChangeContext,
|
|
522
|
+
}, [asyncBehaviorIsEnabled, path, hasError, yieldAsyncProcess, onChangeContext, defineAsyncProcess, setEventResult, handlePathChangeDataContext]);
|
|
508
523
|
const updateValue = useCallback(async newValue => {
|
|
509
524
|
if (newValue === valueRef.current) {
|
|
510
525
|
return;
|
|
511
526
|
}
|
|
512
527
|
valueRef.current = newValue;
|
|
528
|
+
handlePathChangeUnvalidatedDataContext(path, newValue);
|
|
513
529
|
addToPool('validator', validateValue, isAsync(validatorRef.current));
|
|
514
530
|
addToPool('onChangeContext', callOnChangeContext, isAsync(onChangeContext));
|
|
515
531
|
await runPool(() => {
|
|
516
532
|
handleError();
|
|
517
533
|
});
|
|
518
|
-
}, [addToPool,
|
|
534
|
+
}, [handlePathChangeUnvalidatedDataContext, path, addToPool, validateValue, callOnChangeContext, onChangeContext, runPool, handleError]);
|
|
519
535
|
const handleChange = useCallback(async function (argFromInput) {
|
|
520
536
|
let additionalArgs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;
|
|
521
537
|
const currentValue = valueRef.current;
|
|
@@ -540,20 +556,26 @@ export default function useFieldProps(props) {
|
|
|
540
556
|
const args = getArgs();
|
|
541
557
|
await yieldAsyncProcess({
|
|
542
558
|
name: 'onChangeLocal',
|
|
543
|
-
withValidatedValueOf: args[0],
|
|
544
559
|
waitFor: [{
|
|
545
560
|
processName: 'validator',
|
|
546
|
-
withStates: ['validating', 'error']
|
|
561
|
+
withStates: ['validating', 'error'],
|
|
562
|
+
withValue: args[0]
|
|
547
563
|
}, {
|
|
548
564
|
processName: 'onBlurValidator',
|
|
549
|
-
withStates: ['validating', 'error']
|
|
565
|
+
withStates: ['validating', 'error'],
|
|
566
|
+
withValue: args[0]
|
|
550
567
|
}, {
|
|
551
568
|
processName: 'onChangeContext',
|
|
552
|
-
withStates: ['pending', 'error']
|
|
569
|
+
withStates: ['pending', 'error'],
|
|
570
|
+
withValue: args[0]
|
|
553
571
|
}]
|
|
554
572
|
});
|
|
555
|
-
|
|
556
|
-
|
|
573
|
+
defineAsyncProcess('onChangeLocal');
|
|
574
|
+
if (!hasError()) {
|
|
575
|
+
setEventResult(await (onChange === null || onChange === void 0 ? void 0 : onChange.apply(_this, args)));
|
|
576
|
+
} else {
|
|
577
|
+
setEventResult(null);
|
|
578
|
+
}
|
|
557
579
|
}, true);
|
|
558
580
|
} else {
|
|
559
581
|
setEventResult(onChange === null || onChange === void 0 ? void 0 : onChange.apply(_this, getArgs()));
|
|
@@ -564,7 +586,7 @@ export default function useFieldProps(props) {
|
|
|
564
586
|
handleIterateElementChange === null || handleIterateElementChange === void 0 ? void 0 : handleIterateElementChange(iterateValuePath, valueRef.current);
|
|
565
587
|
}
|
|
566
588
|
});
|
|
567
|
-
}, [addToPool, asyncBehaviorIsEnabled, handleIterateElementChange, hideError, itemPath, iterateElementIndex, onChange, runPool,
|
|
589
|
+
}, [addToPool, asyncBehaviorIsEnabled, handleIterateElementChange, hasError, hideError, itemPath, iterateElementIndex, onChange, runPool, defineAsyncProcess, setEventResult, updateValue, yieldAsyncProcess]);
|
|
568
590
|
const handleFocus = useCallback(() => setHasFocus(true), [setHasFocus]);
|
|
569
591
|
const handleBlur = useCallback(() => setHasFocus(false), [setHasFocus]);
|
|
570
592
|
useMountEffect(() => {
|
|
@@ -616,8 +638,10 @@ export default function useFieldProps(props) {
|
|
|
616
638
|
}, [dataContext.data, dataContext.id, path, props.value, updateDataValueDataContext, validateDataDataContext]);
|
|
617
639
|
useEffect(() => {
|
|
618
640
|
if (dataContext.showAllErrors) {
|
|
619
|
-
|
|
620
|
-
|
|
641
|
+
if (fieldStateRef.current !== 'validating') {
|
|
642
|
+
showError();
|
|
643
|
+
forceUpdate();
|
|
644
|
+
}
|
|
621
645
|
}
|
|
622
646
|
}, [dataContext.showAllErrors, showError]);
|
|
623
647
|
useEffect(() => {
|
|
@@ -714,7 +738,7 @@ export default function useFieldProps(props) {
|
|
|
714
738
|
info: !inFieldBlock ? infoRef.current : undefined,
|
|
715
739
|
warning: !inFieldBlock ? warningRef.current : undefined,
|
|
716
740
|
error: !inFieldBlock ? error : undefined,
|
|
717
|
-
disabled: onBlurValidator &&
|
|
741
|
+
disabled: onBlurValidator && asyncProcessRef.current === 'onBlurValidator' && fieldStateRef.current === 'validating' ? true : disabled,
|
|
718
742
|
fieldState: resolveValidatingState(fieldStateRef.current)
|
|
719
743
|
};
|
|
720
744
|
const sharedData = useSharedState(id);
|