@dnb/eufemia 10.30.2 → 10.31.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 +21 -0
- package/cjs/components/checkbox/CheckIcon.d.ts +1 -1
- package/cjs/components/checkbox/CheckIcon.js +4 -9
- package/cjs/components/checkbox/CheckIcon.js.map +1 -1
- package/cjs/components/checkbox/Checkbox.d.ts +4 -0
- package/cjs/components/checkbox/Checkbox.js +9 -3
- package/cjs/components/checkbox/Checkbox.js.map +1 -1
- package/cjs/components/checkbox/CheckboxDocs.js +10 -5
- package/cjs/components/checkbox/CheckboxDocs.js.map +1 -1
- package/cjs/components/checkbox/style/dnb-checkbox.css +96 -16
- package/cjs/components/checkbox/style/dnb-checkbox.min.css +1 -1
- package/cjs/components/checkbox/style/dnb-checkbox.scss +158 -22
- package/cjs/components/checkbox/style/themes/dnb-checkbox-theme-sbanken.css +22 -2
- package/cjs/components/checkbox/style/themes/dnb-checkbox-theme-sbanken.min.css +4 -2
- package/cjs/components/checkbox/style/themes/dnb-checkbox-theme-sbanken.scss +28 -2
- package/cjs/components/checkbox/style/themes/dnb-checkbox-theme-ui.css +20 -2
- package/cjs/components/checkbox/style/themes/dnb-checkbox-theme-ui.min.css +5 -1
- package/cjs/components/checkbox/style/themes/dnb-checkbox-theme-ui.scss +25 -2
- package/cjs/components/height-animation/HeightAnimationInstance.js +6 -1
- package/cjs/components/height-animation/HeightAnimationInstance.js.map +1 -1
- package/cjs/components/modal/Modal.d.ts +2 -0
- package/cjs/components/modal/Modal.js +10 -3
- package/cjs/components/modal/Modal.js.map +1 -1
- package/cjs/extensions/forms/DataContext/Context.d.ts +2 -1
- package/cjs/extensions/forms/DataContext/Context.js +0 -1
- package/cjs/extensions/forms/DataContext/Context.js.map +1 -1
- package/cjs/extensions/forms/DataContext/Provider/Provider.js +2 -1
- package/cjs/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
- package/cjs/extensions/forms/Field/Boolean/Boolean.d.ts +12 -2
- package/cjs/extensions/forms/Field/Boolean/Boolean.js.map +1 -1
- package/cjs/extensions/forms/Field/Boolean/BooleanDocs.d.ts +2 -0
- package/cjs/extensions/forms/Field/Boolean/BooleanDocs.js +25 -0
- package/cjs/extensions/forms/Field/Boolean/BooleanDocs.js.map +1 -0
- package/cjs/extensions/forms/Field/FieldDocs.js +1 -1
- package/cjs/extensions/forms/Field/FieldDocs.js.map +1 -1
- package/cjs/extensions/forms/Field/Indeterminate/Indeterminate.d.ts +16 -0
- package/cjs/extensions/forms/Field/Indeterminate/Indeterminate.js +53 -0
- package/cjs/extensions/forms/Field/Indeterminate/Indeterminate.js.map +1 -0
- package/cjs/extensions/forms/Field/Indeterminate/IndeterminateDocs.d.ts +2 -0
- package/cjs/extensions/forms/Field/Indeterminate/IndeterminateDocs.js +38 -0
- package/cjs/extensions/forms/Field/Indeterminate/IndeterminateDocs.js.map +1 -0
- package/cjs/extensions/forms/Field/Indeterminate/index.d.ts +2 -0
- package/cjs/extensions/forms/Field/Indeterminate/index.js +27 -0
- package/cjs/extensions/forms/Field/Indeterminate/index.js.map +1 -0
- package/cjs/extensions/forms/Field/Indeterminate/useDependencePaths.d.ts +6 -0
- package/cjs/extensions/forms/Field/Indeterminate/useDependencePaths.js +81 -0
- package/cjs/extensions/forms/Field/Indeterminate/useDependencePaths.js.map +1 -0
- package/cjs/extensions/forms/Field/Name/NameDocs.js +1 -7
- package/cjs/extensions/forms/Field/Name/NameDocs.js.map +1 -1
- package/cjs/extensions/forms/Field/String/String.js.map +1 -1
- package/cjs/extensions/forms/Field/Toggle/Toggle.d.ts +2 -1
- package/cjs/extensions/forms/Field/Toggle/Toggle.js +2 -2
- package/cjs/extensions/forms/Field/Toggle/Toggle.js.map +1 -1
- package/cjs/extensions/forms/Field/Toggle/ToggleDocs.d.ts +2 -0
- package/cjs/extensions/forms/Field/Toggle/ToggleDocs.js +35 -0
- package/cjs/extensions/forms/Field/Toggle/ToggleDocs.js.map +1 -0
- package/cjs/extensions/forms/Field/index.d.ts +1 -0
- package/cjs/extensions/forms/Field/index.js +7 -0
- package/cjs/extensions/forms/Field/index.js.map +1 -1
- package/cjs/extensions/forms/FieldBlock/FieldBlockDocs.d.ts +1 -0
- package/cjs/extensions/forms/FieldBlock/FieldBlockDocs.js +24 -16
- package/cjs/extensions/forms/FieldBlock/FieldBlockDocs.js.map +1 -1
- package/cjs/extensions/forms/Form/Handler/Handler.js +2 -2
- package/cjs/extensions/forms/Form/Handler/Handler.js.map +1 -1
- package/cjs/extensions/forms/Form/Handler/HandlerDocs.js +5 -0
- package/cjs/extensions/forms/Form/Handler/HandlerDocs.js.map +1 -1
- package/cjs/extensions/forms/Wizard/Container/WizardContainer.js +6 -2
- package/cjs/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
- package/cjs/extensions/forms/Wizard/Step/Step.d.ts +4 -0
- package/cjs/extensions/forms/Wizard/Step/Step.js +7 -2
- package/cjs/extensions/forms/Wizard/Step/Step.js.map +1 -1
- package/cjs/extensions/forms/Wizard/Step/StepDocs.js +5 -0
- package/cjs/extensions/forms/Wizard/Step/StepDocs.js.map +1 -1
- package/cjs/extensions/forms/hooks/useFieldProps.js +1 -1
- package/cjs/extensions/forms/hooks/useFieldProps.js.map +1 -1
- package/cjs/extensions/forms/types.d.ts +5 -0
- package/cjs/extensions/forms/types.js.map +1 -1
- 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/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 +96 -16
- package/cjs/style/dnb-ui-components.min.css +1 -1
- package/cjs/style/dnb-ui-core.css +1 -1
- package/cjs/style/dnb-ui-core.min.css +1 -1
- package/cjs/style/themes/theme-eiendom/eiendom-theme-components.css +116 -18
- package/cjs/style/themes/theme-eiendom/eiendom-theme-components.min.css +6 -2
- package/cjs/style/themes/theme-sbanken/sbanken-theme-components.css +118 -18
- package/cjs/style/themes/theme-sbanken/sbanken-theme-components.min.css +5 -3
- package/cjs/style/themes/theme-ui/ui-theme-components.css +116 -18
- package/cjs/style/themes/theme-ui/ui-theme-components.min.css +6 -2
- package/components/checkbox/CheckIcon.d.ts +1 -1
- package/components/checkbox/CheckIcon.js +4 -8
- package/components/checkbox/CheckIcon.js.map +1 -1
- package/components/checkbox/Checkbox.d.ts +4 -0
- package/components/checkbox/Checkbox.js +9 -3
- package/components/checkbox/Checkbox.js.map +1 -1
- package/components/checkbox/CheckboxDocs.js +10 -5
- package/components/checkbox/CheckboxDocs.js.map +1 -1
- package/components/checkbox/style/dnb-checkbox.css +96 -16
- package/components/checkbox/style/dnb-checkbox.min.css +1 -1
- package/components/checkbox/style/dnb-checkbox.scss +158 -22
- package/components/checkbox/style/themes/dnb-checkbox-theme-sbanken.css +22 -2
- package/components/checkbox/style/themes/dnb-checkbox-theme-sbanken.min.css +4 -2
- package/components/checkbox/style/themes/dnb-checkbox-theme-sbanken.scss +28 -2
- package/components/checkbox/style/themes/dnb-checkbox-theme-ui.css +20 -2
- package/components/checkbox/style/themes/dnb-checkbox-theme-ui.min.css +5 -1
- package/components/checkbox/style/themes/dnb-checkbox-theme-ui.scss +25 -2
- package/components/height-animation/HeightAnimationInstance.js +6 -1
- package/components/height-animation/HeightAnimationInstance.js.map +1 -1
- package/components/modal/Modal.d.ts +2 -0
- package/components/modal/Modal.js +10 -3
- package/components/modal/Modal.js.map +1 -1
- package/es/components/checkbox/CheckIcon.d.ts +1 -1
- package/es/components/checkbox/CheckIcon.js +5 -10
- package/es/components/checkbox/CheckIcon.js.map +1 -1
- package/es/components/checkbox/Checkbox.d.ts +4 -0
- package/es/components/checkbox/Checkbox.js +9 -3
- package/es/components/checkbox/Checkbox.js.map +1 -1
- package/es/components/checkbox/CheckboxDocs.js +10 -5
- package/es/components/checkbox/CheckboxDocs.js.map +1 -1
- package/es/components/checkbox/style/dnb-checkbox.css +96 -16
- package/es/components/checkbox/style/dnb-checkbox.min.css +1 -1
- package/es/components/checkbox/style/dnb-checkbox.scss +158 -22
- package/es/components/checkbox/style/themes/dnb-checkbox-theme-sbanken.css +22 -2
- package/es/components/checkbox/style/themes/dnb-checkbox-theme-sbanken.min.css +4 -2
- package/es/components/checkbox/style/themes/dnb-checkbox-theme-sbanken.scss +28 -2
- package/es/components/checkbox/style/themes/dnb-checkbox-theme-ui.css +20 -2
- package/es/components/checkbox/style/themes/dnb-checkbox-theme-ui.min.css +5 -1
- package/es/components/checkbox/style/themes/dnb-checkbox-theme-ui.scss +25 -2
- package/es/components/height-animation/HeightAnimationInstance.js +6 -1
- package/es/components/height-animation/HeightAnimationInstance.js.map +1 -1
- package/es/components/modal/Modal.d.ts +2 -0
- package/es/components/modal/Modal.js +10 -3
- package/es/components/modal/Modal.js.map +1 -1
- package/es/extensions/forms/DataContext/Context.d.ts +2 -1
- package/es/extensions/forms/DataContext/Context.js +0 -1
- package/es/extensions/forms/DataContext/Context.js.map +1 -1
- package/es/extensions/forms/DataContext/Provider/Provider.js +2 -1
- package/es/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
- package/es/extensions/forms/Field/Boolean/Boolean.d.ts +12 -2
- package/es/extensions/forms/Field/Boolean/Boolean.js.map +1 -1
- package/es/extensions/forms/Field/Boolean/BooleanDocs.d.ts +2 -0
- package/es/extensions/forms/Field/Boolean/BooleanDocs.js +18 -0
- package/es/extensions/forms/Field/Boolean/BooleanDocs.js.map +1 -0
- package/es/extensions/forms/Field/FieldDocs.js +2 -2
- package/es/extensions/forms/Field/FieldDocs.js.map +1 -1
- package/es/extensions/forms/Field/Indeterminate/Indeterminate.d.ts +16 -0
- package/es/extensions/forms/Field/Indeterminate/Indeterminate.js +43 -0
- package/es/extensions/forms/Field/Indeterminate/Indeterminate.js.map +1 -0
- package/es/extensions/forms/Field/Indeterminate/IndeterminateDocs.d.ts +2 -0
- package/es/extensions/forms/Field/Indeterminate/IndeterminateDocs.js +29 -0
- package/es/extensions/forms/Field/Indeterminate/IndeterminateDocs.js.map +1 -0
- package/es/extensions/forms/Field/Indeterminate/index.d.ts +2 -0
- package/es/extensions/forms/Field/Indeterminate/index.js +3 -0
- package/es/extensions/forms/Field/Indeterminate/index.js.map +1 -0
- package/es/extensions/forms/Field/Indeterminate/useDependencePaths.d.ts +6 -0
- package/es/extensions/forms/Field/Indeterminate/useDependencePaths.js +74 -0
- package/es/extensions/forms/Field/Indeterminate/useDependencePaths.js.map +1 -0
- package/es/extensions/forms/Field/Name/NameDocs.js +1 -8
- package/es/extensions/forms/Field/Name/NameDocs.js.map +1 -1
- package/es/extensions/forms/Field/String/String.js.map +1 -1
- package/es/extensions/forms/Field/Toggle/Toggle.d.ts +2 -1
- package/es/extensions/forms/Field/Toggle/Toggle.js +2 -2
- package/es/extensions/forms/Field/Toggle/Toggle.js.map +1 -1
- package/es/extensions/forms/Field/Toggle/ToggleDocs.d.ts +2 -0
- package/es/extensions/forms/Field/Toggle/ToggleDocs.js +28 -0
- package/es/extensions/forms/Field/Toggle/ToggleDocs.js.map +1 -0
- package/es/extensions/forms/Field/index.d.ts +1 -0
- package/es/extensions/forms/Field/index.js +1 -0
- package/es/extensions/forms/Field/index.js.map +1 -1
- package/es/extensions/forms/FieldBlock/FieldBlockDocs.d.ts +1 -0
- package/es/extensions/forms/FieldBlock/FieldBlockDocs.js +20 -15
- package/es/extensions/forms/FieldBlock/FieldBlockDocs.js.map +1 -1
- package/es/extensions/forms/Form/Handler/Handler.js +2 -2
- package/es/extensions/forms/Form/Handler/Handler.js.map +1 -1
- package/es/extensions/forms/Form/Handler/HandlerDocs.js +5 -0
- package/es/extensions/forms/Form/Handler/HandlerDocs.js.map +1 -1
- package/es/extensions/forms/Wizard/Container/WizardContainer.js +6 -2
- package/es/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
- package/es/extensions/forms/Wizard/Step/Step.d.ts +4 -0
- package/es/extensions/forms/Wizard/Step/Step.js +7 -2
- package/es/extensions/forms/Wizard/Step/Step.js.map +1 -1
- package/es/extensions/forms/Wizard/Step/StepDocs.js +5 -0
- package/es/extensions/forms/Wizard/Step/StepDocs.js.map +1 -1
- package/es/extensions/forms/hooks/useFieldProps.js +1 -1
- package/es/extensions/forms/hooks/useFieldProps.js.map +1 -1
- package/es/extensions/forms/types.d.ts +5 -0
- package/es/extensions/forms/types.js.map +1 -1
- 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/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 +96 -16
- package/es/style/dnb-ui-components.min.css +1 -1
- package/es/style/dnb-ui-core.css +1 -1
- package/es/style/dnb-ui-core.min.css +1 -1
- package/es/style/themes/theme-eiendom/eiendom-theme-components.css +116 -18
- package/es/style/themes/theme-eiendom/eiendom-theme-components.min.css +6 -2
- package/es/style/themes/theme-sbanken/sbanken-theme-components.css +118 -18
- package/es/style/themes/theme-sbanken/sbanken-theme-components.min.css +5 -3
- package/es/style/themes/theme-ui/ui-theme-components.css +116 -18
- package/es/style/themes/theme-ui/ui-theme-components.min.css +6 -2
- 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 +3 -3
- package/esm/dnb-ui-lib.min.mjs +1 -1
- package/extensions/forms/DataContext/Context.d.ts +2 -1
- package/extensions/forms/DataContext/Context.js +0 -1
- package/extensions/forms/DataContext/Context.js.map +1 -1
- package/extensions/forms/DataContext/Provider/Provider.js +2 -1
- package/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
- package/extensions/forms/Field/Boolean/Boolean.d.ts +12 -2
- package/extensions/forms/Field/Boolean/Boolean.js.map +1 -1
- package/extensions/forms/Field/Boolean/BooleanDocs.d.ts +2 -0
- package/extensions/forms/Field/Boolean/BooleanDocs.js +18 -0
- package/extensions/forms/Field/Boolean/BooleanDocs.js.map +1 -0
- package/extensions/forms/Field/FieldDocs.js +2 -2
- package/extensions/forms/Field/FieldDocs.js.map +1 -1
- package/extensions/forms/Field/Indeterminate/Indeterminate.d.ts +16 -0
- package/extensions/forms/Field/Indeterminate/Indeterminate.js +43 -0
- package/extensions/forms/Field/Indeterminate/Indeterminate.js.map +1 -0
- package/extensions/forms/Field/Indeterminate/IndeterminateDocs.d.ts +2 -0
- package/extensions/forms/Field/Indeterminate/IndeterminateDocs.js +29 -0
- package/extensions/forms/Field/Indeterminate/IndeterminateDocs.js.map +1 -0
- package/extensions/forms/Field/Indeterminate/index.d.ts +2 -0
- package/extensions/forms/Field/Indeterminate/index.js +3 -0
- package/extensions/forms/Field/Indeterminate/index.js.map +1 -0
- package/extensions/forms/Field/Indeterminate/useDependencePaths.d.ts +6 -0
- package/extensions/forms/Field/Indeterminate/useDependencePaths.js +75 -0
- package/extensions/forms/Field/Indeterminate/useDependencePaths.js.map +1 -0
- package/extensions/forms/Field/Name/NameDocs.js +1 -8
- package/extensions/forms/Field/Name/NameDocs.js.map +1 -1
- package/extensions/forms/Field/String/String.js.map +1 -1
- package/extensions/forms/Field/Toggle/Toggle.d.ts +2 -1
- package/extensions/forms/Field/Toggle/Toggle.js +2 -2
- package/extensions/forms/Field/Toggle/Toggle.js.map +1 -1
- package/extensions/forms/Field/Toggle/ToggleDocs.d.ts +2 -0
- package/extensions/forms/Field/Toggle/ToggleDocs.js +28 -0
- package/extensions/forms/Field/Toggle/ToggleDocs.js.map +1 -0
- package/extensions/forms/Field/index.d.ts +1 -0
- package/extensions/forms/Field/index.js +1 -0
- package/extensions/forms/Field/index.js.map +1 -1
- package/extensions/forms/FieldBlock/FieldBlockDocs.d.ts +1 -0
- package/extensions/forms/FieldBlock/FieldBlockDocs.js +20 -15
- package/extensions/forms/FieldBlock/FieldBlockDocs.js.map +1 -1
- package/extensions/forms/Form/Handler/Handler.js +2 -2
- package/extensions/forms/Form/Handler/Handler.js.map +1 -1
- package/extensions/forms/Form/Handler/HandlerDocs.js +5 -0
- package/extensions/forms/Form/Handler/HandlerDocs.js.map +1 -1
- package/extensions/forms/Wizard/Container/WizardContainer.js +6 -2
- package/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
- package/extensions/forms/Wizard/Step/Step.d.ts +4 -0
- package/extensions/forms/Wizard/Step/Step.js +7 -2
- package/extensions/forms/Wizard/Step/Step.js.map +1 -1
- package/extensions/forms/Wizard/Step/StepDocs.js +5 -0
- package/extensions/forms/Wizard/Step/StepDocs.js.map +1 -1
- package/extensions/forms/hooks/useFieldProps.js +1 -1
- package/extensions/forms/hooks/useFieldProps.js.map +1 -1
- package/extensions/forms/types.d.ts +5 -0
- package/extensions/forms/types.js.map +1 -1
- 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/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 +96 -16
- package/style/dnb-ui-components.min.css +1 -1
- package/style/dnb-ui-core.css +1 -1
- package/style/dnb-ui-core.min.css +1 -1
- package/style/themes/theme-eiendom/eiendom-theme-components.css +116 -18
- package/style/themes/theme-eiendom/eiendom-theme-components.min.css +6 -2
- package/style/themes/theme-sbanken/sbanken-theme-components.css +118 -18
- package/style/themes/theme-sbanken/sbanken-theme-components.min.css +5 -3
- package/style/themes/theme-ui/ui-theme-components.css +116 -18
- package/style/themes/theme-ui/ui-theme-components.min.css +6 -2
- 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 +3 -3
- package/umd/dnb-ui-lib.min.js +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFieldProps.js","names":["_react","require","_jsonPointer","_interopRequireDefault","_utils","_ajv","_types","_DataContext","_FieldPropsContext","_componentHelper","_useId","_useUpdateEffect","_useMountEffect","_useUnmountEffect","_FieldBlockContext","_IterateElementContext","_FieldBoundaryContext","_useProcessManager","_useSharedState","_isAsync","_useTranslation","obj","__esModule","default","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","value","_toPropertyKey","configurable","writable","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","call","TypeError","Number","useFieldProps","localeProps","_dataContext$props","_dataContext$ajvInsta","_localErrorRef$curren","_ref2","_this","_props$path","_props$autoComplete","extend","useContext","FieldPropsContext","props","path","itemPath","emptyValue","required","disabled","disabledProp","info","warning","error","errorProp","errorMessages","onFocus","onBlur","onChange","onBlurValidator","validator","schema","validateInitially","validateUnchanged","continuousValidation","transformIn","transformOut","toInput","fromInput","toEvent","transformValue","fromExternal","validateRequired","_ref","forceUpdate","useReducer","startProcess","useProcessManager","id","useId","dataContext","DataContext","fieldBlockContext","FieldBlockContext","iterateElementContext","IterateElementContext","fieldBoundaryContext","FieldBoundaryContext","translation","useTranslation","transformers","useRef","handlePathChangeUnvalidated","handlePathChangeUnvalidatedDataContext","handlePathChange","handlePathChangeDataContext","updateDataValue","updateDataValueDataContext","validateData","validateDataDataContext","setFieldState","setFieldStateDataContext","setFieldError","setFieldErrorDataContext","setProps","setPropsDataContext","errors","dataContextErrors","contextErrorMessages","onChangeContext","readOnly","dataContextError","inFieldBlock","Boolean","setFieldStateFieldBlock","showFieldError","showFieldErrorFieldBlock","inIterate","index","iterateElementIndex","iteratePath","handleChange","handleChangeIterateContext","substring","Error","identifier","useMemo","iterateValuePath","externalValue","useExternalValue","valueRef","changedRef","hasFocusRef","showErrorRef","errorMethodRef","localErrorRef","contextErrorRef","validatorRef","useUpdateEffect","current","onBlurValidatorRef","schemaValidatorRef","ajvInstance","compile","asyncBehaviorIsEnabled","isAsync","validatedValue","changeEventResultRef","asyncProcessRef","defineAsyncProcess","useCallback","name","asyncBufferRef","resolve","validateProcesses","window","requestAnimationFrame","eventPool","onChangeLocal","addToPool","fn","runAsync","runPool","cb","pending","fieldStateRef","state","resolveValidatingState","showError","hideError","hasVisibleError","hasErrorProp","hasError","_ref3","errorMessagesRef","Field","errorRequired","prepareError","FormError","_error$messageValues","message","validationRule","_errorMessagesRef$cur","fieldMessage","messageWithValues","entries","messageValues","reduce","_ref4","replace","stateId","persistErrorState","method","errorArg","errorChanged","type","content","showInitially","clearErrorState","callValidator","opts","tmpValue","result","unchangedValue","callOnBlurValidator","valueOverride","validateValue","isProcessActive","requiredError","isChanged","ajvErrorsToOneFormError","handleError","setHasFocus","hasFocus","yieldAsyncProcess","_ref5","waitFor","Promise","some","_ref6","processName","withStates","withValue","hasMatchingValue","handleChangeEventResult","warningRef","infoRef","success","setEventResult","callOnChangeContext","updateValue","newValue","argFromInput","additionalArgs","currentValue","transformedValue","getArgs","args","handleFocus","handleBlur","useMountEffect","handleMountField","useUnmountEffect","handleUnMountField","_dataContext$ajvInsta2","useEffect","hasValue","pointer","has","data","existingValue","get","sharedState","createSharedState","sharedValue","showAllErrors","formState","onSubmitHandler","_dataContext$setField","setFieldEventListener","show","mountedFieldsRef","htmlAttributes","acc","cur","startsWith","_fieldBlockContext$fi","stateIds","fieldStateIdsRef","combineDescribedBy","ids","fieldBlockProps","fieldState","sharedData","useSharedState","set","autoComplete","_ref7","iterateElementValue"],"sources":["../../../../../src/extensions/forms/hooks/useFieldProps.ts"],"sourcesContent":["import {\n useRef,\n useEffect,\n useContext,\n useCallback,\n useMemo,\n useReducer,\n AriaAttributes,\n} from 'react'\nimport pointer from 'json-pointer'\nimport { ValidateFunction } from 'ajv/dist/2020'\nimport { errorChanged } from '../utils'\nimport { ajvErrorsToOneFormError } from '../utils/ajv'\nimport {\n FormError,\n FieldProps,\n AdditionalEventArgs,\n SubmitState,\n EventReturnWithStateObjectAndSuccess,\n EventStateObjectWithSuccess,\n Path,\n} from '../types'\nimport { Context as DataContext, ContextState } from '../DataContext'\nimport FieldPropsContext from '../Form/FieldProps/FieldPropsContext'\nimport { combineDescribedBy } from '../../../shared/component-helper'\nimport useId from '../../../shared/helpers/useId'\nimport useUpdateEffect from '../../../shared/helpers/useUpdateEffect'\nimport useMountEffect from '../../../shared/helpers/useMountEffect'\nimport useUnmountEffect from '../../../shared/helpers/useUnmountEffect'\nimport FieldBlockContext from '../FieldBlock/FieldBlockContext'\nimport IterateElementContext from '../Iterate/IterateElementContext'\nimport FieldBoundaryContext from '../DataContext/FieldBoundary/FieldBoundaryContext'\nimport useProcessManager from './useProcessManager'\nimport {\n createSharedState,\n useSharedState,\n} from '../../../shared/helpers/useSharedState'\nimport { isAsync } from '../../../shared/helpers/isAsync'\nimport useTranslation from './useTranslation'\n\ntype SubmitStateWithValidating = SubmitState | 'validating'\ntype AsyncProcesses =\n | 'validator'\n | 'onBlurValidator'\n | 'onChangeLocal'\n | 'onChangeContext'\ntype PersistErrorStateMethod =\n /**\n * Add or remove the error regardless\n */\n | 'weak'\n /**\n * Check if there is an existing error, and if so, keep it\n */\n | 'gracefully'\n /**\n * Remove the error, if any\n */\n | 'wipe'\ntype AsyncProcessesBuffer = {\n resolve: () => void\n validateProcesses: () => boolean\n}\n\nexport type DataAttributes = {\n [property: `data-${string}`]: string | boolean | number\n}\n\nexport default function useFieldProps<\n Value = unknown,\n Props extends FieldProps<Value> = FieldProps<Value>,\n>(\n localeProps: Props\n): Props & FieldProps<Value> & ReturnAdditional<Value> {\n const { extend } = useContext(FieldPropsContext)\n const props = extend<Props>(localeProps)\n\n const {\n path,\n itemPath,\n emptyValue,\n required,\n disabled: disabledProp,\n info,\n warning,\n error: errorProp,\n errorMessages,\n onFocus,\n onBlur,\n onChange,\n onBlurValidator,\n validator,\n schema,\n validateInitially,\n validateUnchanged,\n continuousValidation,\n transformIn = (value: Value) => value,\n transformOut = (value: Value) => value,\n toInput = (value: Value) => value,\n fromInput = (value: Value) => value,\n toEvent = (value: Value) => value,\n transformValue = (value: Value) => value,\n fromExternal = (value: Value) => value,\n validateRequired = (value: Value, { emptyValue, required, error }) => {\n const res =\n required &&\n (value === emptyValue ||\n (typeof emptyValue === 'undefined' && value === ''))\n ? error\n : undefined\n\n return res\n },\n } = props\n\n const [, forceUpdate] = useReducer(() => ({}), {})\n const { startProcess } = useProcessManager()\n const id = useId(props.id)\n const dataContext = useContext(DataContext)\n const fieldBlockContext = useContext(FieldBlockContext)\n const iterateElementContext = useContext(IterateElementContext)\n const fieldBoundaryContext = useContext(FieldBoundaryContext)\n const translation = useTranslation()\n\n const transformers = useRef({\n transformIn,\n transformOut,\n toInput,\n fromInput,\n toEvent,\n fromExternal,\n transformValue,\n validateRequired,\n })\n\n const {\n handlePathChangeUnvalidated: handlePathChangeUnvalidatedDataContext,\n handlePathChange: handlePathChangeDataContext,\n updateDataValue: updateDataValueDataContext,\n validateData: validateDataDataContext,\n setFieldState: setFieldStateDataContext,\n setFieldError: setFieldErrorDataContext,\n setProps: setPropsDataContext,\n errors: dataContextErrors,\n contextErrorMessages,\n } = dataContext ?? {}\n const onChangeContext = dataContext?.props?.onChange\n\n const disabled = disabledProp ?? props.readOnly\n const dataContextError = path ? dataContextErrors?.[path] : undefined\n const inFieldBlock = Boolean(fieldBlockContext)\n const {\n setFieldState: setFieldStateFieldBlock,\n showFieldError: showFieldErrorFieldBlock,\n } = fieldBlockContext ?? {}\n const inIterate = Boolean(iterateElementContext)\n const {\n index: iterateElementIndex,\n path: iteratePath,\n handleChange: handleChangeIterateContext,\n } = iterateElementContext ?? {}\n const { setFieldError } = fieldBoundaryContext ?? {}\n\n if (path && path.substring(0, 1) !== '/') {\n throw new Error(\n 'Invalid path. Data value path JSON Pointers must be from root (starting with a /).'\n )\n }\n if (itemPath && itemPath.substring(0, 1) !== '/') {\n throw new Error(\n 'Invalid itemPath. Item pathJSON Pointers must be from root of iterate element (starting with a /).'\n )\n }\n if (itemPath && !inIterate) {\n throw new Error(\n 'itemPath cannot be used when not inside an iterate context. Wrap the component in an Iterate.Array.'\n )\n }\n\n const identifier = useMemo(() => {\n if (itemPath) {\n const iterateValuePath = `${iteratePath}/${iterateElementIndex}${\n itemPath && itemPath !== '/' ? itemPath : ''\n }`\n return iterateValuePath\n }\n\n // Identifier is used is registries of multiple fields, like in the DataContext keeping track of errors\n return path ?? id\n }, [itemPath, path, id, iteratePath, iterateElementIndex])\n\n const externalValue = useExternalValue<Value>({\n path,\n itemPath,\n props,\n transformers,\n emptyValue,\n })\n\n // Many variables are kept in refs to avoid triggering unnecessary update loops because updates using\n // useEffect depend on them (like the external `value`)\n\n // Hold an internal copy of the input value in case the input component is used uncontrolled,\n // and to handle errors in Eufemia on components that does not take updated callback functions into account.\n const valueRef = useRef<Value>(externalValue)\n const changedRef = useRef<boolean>(false)\n const hasFocusRef = useRef<boolean>(false)\n\n // Error handling\n // - Should errors received through validation be shown initially. Assume that providing a direct prop to\n // the component means it is supposed to be shown initially.\n const showErrorRef = useRef<boolean>(\n Boolean(validateInitially || errorProp)\n )\n // - Local errors are errors based on validation instructions received by\n const errorMethodRef = useRef<\n Partial<Record<PersistErrorStateMethod, Error | FormError>>\n >({})\n const localErrorRef = useRef<Error | FormError | undefined>()\n // - Context errors are from outer contexts, like validation for this field as part of the whole data set\n const contextErrorRef = useRef<Error | FormError | undefined>(\n dataContextError\n )\n\n const validatorRef = useRef(validator)\n useUpdateEffect(() => {\n validatorRef.current = validator\n }, [validator])\n const onBlurValidatorRef = useRef(onBlurValidator)\n useUpdateEffect(() => {\n onBlurValidatorRef.current = onBlurValidator\n }, [onBlurValidator])\n\n const schemaValidatorRef = useRef<ValidateFunction>(\n schema ? dataContext.ajvInstance?.compile(schema) : undefined\n )\n\n // - Async behavior\n const asyncBehaviorIsEnabled = useMemo(() => {\n return isAsync(onChange) || isAsync(onChangeContext)\n }, [onChangeContext, onChange])\n const validatedValue = useRef<Value>()\n const changeEventResultRef = useRef<EventStateObjectWithSuccess>(null)\n const asyncProcessRef = useRef<AsyncProcesses>(null)\n const defineAsyncProcess = useCallback((name: AsyncProcesses) => {\n asyncProcessRef.current = name\n }, [])\n\n // When both an async onChange and async validators are used,\n // we buffer the onChange calls to avoid race conditions.\n const asyncBufferRef = useRef<\n Record<AsyncProcesses, AsyncProcessesBuffer> | Record<string, unknown>\n >({})\n\n for (const key in asyncBufferRef.current) {\n const { resolve, validateProcesses } = (asyncBufferRef.current[key] ||\n {}) as AsyncProcessesBuffer\n if (validateProcesses?.() === false) {\n delete asyncBufferRef.current[key]\n if (typeof resolve === 'function') {\n window.requestAnimationFrame(resolve)\n }\n }\n }\n\n const eventPool = useRef({\n validator: null,\n onBlurValidator: null,\n onChangeContext: null,\n onChangeLocal: null,\n })\n\n const addToPool = useCallback(\n (name: keyof typeof eventPool.current, fn, runAsync) => {\n if (!eventPool.current[name]) {\n eventPool.current[name] = { fn, runAsync }\n }\n },\n []\n )\n\n const runPool = useCallback(async (cb = null) => {\n for (const key in eventPool.current) {\n if (!eventPool.current[key] || eventPool.current[key].pending) {\n continue\n }\n\n const { fn, runAsync } = eventPool.current[key] || {}\n if (fn) {\n eventPool.current[key].pending = true\n eventPool.current[key] = null\n\n if (runAsync) {\n await fn()\n } else {\n fn()\n }\n }\n }\n\n // use a callback in order to avoid any async/await,\n // because it will delay the execution of the following code\n cb?.()\n }, [])\n\n const fieldStateRef = useRef<SubmitStateWithValidating>()\n const setFieldState = useCallback(\n (state: SubmitStateWithValidating) => {\n fieldStateRef.current = state\n setFieldStateDataContext(identifier, resolveValidatingState(state))\n if (!validateInitially) {\n forceUpdate()\n }\n },\n [setFieldStateDataContext, identifier, validateInitially]\n )\n\n const showError = useCallback(() => {\n showErrorRef.current = true\n showFieldErrorFieldBlock?.(identifier, true)\n }, [showFieldErrorFieldBlock, identifier])\n\n const hideError = useCallback(() => {\n showErrorRef.current = false\n showFieldErrorFieldBlock?.(identifier, false)\n }, [showFieldErrorFieldBlock, identifier])\n\n const error =\n showErrorRef.current ||\n // If the error is a type error, we want to show it even if the field as not been used\n localErrorRef.current?.['validationRule'] === 'type'\n ? errorProp ?? localErrorRef.current ?? contextErrorRef.current\n : undefined\n\n const hasVisibleError =\n Boolean(error) || (inFieldBlock && fieldBlockContext.hasErrorProp)\n const hasError = useCallback(() => {\n return Boolean(\n errorProp ?? localErrorRef.current ?? contextErrorRef.current\n )\n }, [errorProp])\n\n const errorMessagesRef = useRef(null)\n errorMessagesRef.current = useMemo(() => {\n return {\n required: translation.Field.errorRequired,\n ...errorMessages,\n }\n }, [errorMessages, translation.Field.errorRequired])\n\n /**\n * Prepare error from validation logic with correct error messages based on props\n */\n const prepareError = useCallback(\n (error: Error | FormError | undefined): FormError | undefined => {\n if (error instanceof FormError) {\n let message = error.message\n\n const { validationRule } = error\n if (typeof validationRule === 'string') {\n const fieldMessage = errorMessagesRef.current?.[validationRule]\n if (fieldMessage) {\n message = fieldMessage\n }\n }\n\n const messageWithValues = Object.entries(\n error.messageValues ?? {}\n ).reduce((message, [key, value]) => {\n return message.replace(`{${key}}`, value)\n }, message)\n\n error.message = messageWithValues\n\n return error\n }\n\n return error\n },\n []\n )\n\n /**\n * Based on validation, update error state, locally and relevant surrounding contexts\n */\n const stateId = useId()\n const persistErrorState = useCallback(\n (\n method: PersistErrorStateMethod,\n errorArg: Error | FormError | undefined = undefined\n ) => {\n const error = prepareError(errorArg)\n\n if (!errorChanged(error, localErrorRef.current)) {\n // In case different triggers lead to validation with no changes in the result (like still no error, or the same error),\n // avoid unnecessary re-renders by letting the old error object stay in the state and skip re-rendering.\n return\n }\n\n if (method === 'wipe') {\n errorMethodRef.current = {}\n } else {\n errorMethodRef.current[method] = error\n }\n\n if (\n !error &&\n method === 'gracefully' &&\n Object.keys(errorMethodRef.current).filter(Boolean).length > 0\n ) {\n // If the error is removed, we need to check if there are other errors that still should be shown\n return\n }\n\n localErrorRef.current = error\n\n // Tell the data context about the error, so it can stop the user from submitting the form until the error has been fixed\n setFieldErrorDataContext?.(identifier, error)\n setFieldError?.(identifier, error)\n\n // Set the visual states\n setFieldStateDataContext?.(identifier, error ? 'error' : undefined)\n setFieldStateFieldBlock?.({\n stateId,\n identifier,\n type: 'error',\n content: error,\n showInitially: Boolean(inFieldBlock && validateInitially),\n })\n\n forceUpdate()\n },\n [\n prepareError,\n setFieldErrorDataContext,\n identifier,\n setFieldError,\n setFieldStateDataContext,\n setFieldStateFieldBlock,\n stateId,\n inFieldBlock,\n validateInitially,\n ]\n )\n\n const clearErrorState = useCallback(() => {\n persistErrorState('wipe')\n }, [persistErrorState])\n\n const callValidator = useCallback(async () => {\n if (typeof validatorRef.current !== 'function') {\n return\n }\n\n const runAsync = isAsync(validatorRef.current)\n\n if (runAsync) {\n defineAsyncProcess('validator')\n setFieldState('validating')\n hideError()\n }\n\n const opts = {\n ...contextErrorMessages,\n ...errorMessagesRef.current,\n }\n\n const tmpValue = valueRef.current\n\n // Run async regardless to support Promise based validators\n const result = await validatorRef.current(valueRef.current, opts)\n\n const unchangedValue = tmpValue === valueRef.current\n\n // Don't show the error if the value has changed in the meantime\n if (unchangedValue) {\n persistErrorState('gracefully', result as Error)\n\n // Because its a better UX to show the error when the validation is async/delayed\n if (continuousValidation || runAsync) {\n // Because we first need to throw the error to be able to display it, we delay the showError call\n window.requestAnimationFrame(() => {\n showError()\n forceUpdate()\n })\n }\n }\n\n if (runAsync) {\n defineAsyncProcess(undefined)\n\n if (unchangedValue) {\n setFieldState(result instanceof Error ? 'error' : 'complete')\n } else {\n setFieldState('pending')\n }\n }\n\n return result\n }, [\n contextErrorMessages,\n continuousValidation,\n hideError,\n persistErrorState,\n defineAsyncProcess,\n setFieldState,\n showError,\n ])\n\n const callOnBlurValidator = useCallback(\n async ({ valueOverride = null } = {}) => {\n if (typeof onBlurValidatorRef.current !== 'function') {\n return\n }\n // External blur validators makes it possible to validate values but not on every character change in case of\n // expensive validation calling external services etc.\n\n // Since the validator can return either a synchronous result or an asynchronous\n const value = transformers.current.toEvent(\n valueOverride ?? valueRef.current,\n 'onBlurValidator'\n )\n\n const runAsync = isAsync(onBlurValidatorRef.current)\n\n if (runAsync) {\n defineAsyncProcess('onBlurValidator')\n setFieldState('validating')\n }\n\n // Run async regardless to support Promise based validators\n const result = await onBlurValidatorRef.current(value)\n\n persistErrorState('gracefully', result as Error)\n\n if (runAsync) {\n defineAsyncProcess(undefined)\n setFieldState(result instanceof Error ? 'error' : 'complete')\n }\n\n showError()\n forceUpdate()\n },\n [persistErrorState, defineAsyncProcess, setFieldState, showError]\n )\n\n /**\n * Validate the current state value by provided validator instructions\n */\n const validateValue = useCallback(async () => {\n const isProcessActive = startProcess()\n\n if (disabled) {\n if (isProcessActive()) {\n clearErrorState()\n }\n hideError()\n setFieldState(undefined)\n return // stop here\n }\n\n const value = valueRef.current\n changeEventResultRef.current = null\n validatedValue.current = null\n\n try {\n // Validate required\n const requiredError = transformers.current.validateRequired(value, {\n emptyValue,\n required,\n isChanged: changedRef.current,\n error: new FormError('The value is required', {\n validationRule: 'required',\n }),\n })\n if (requiredError instanceof Error) {\n throw requiredError\n }\n\n // Validate by provided JSON Schema for this value\n if (\n schemaValidatorRef.current &&\n value !== undefined &&\n !schemaValidatorRef.current(value)\n ) {\n const error = ajvErrorsToOneFormError(\n schemaValidatorRef.current.errors,\n valueRef.current\n )\n throw error\n }\n\n // Validate by provided derivative validator\n if (\n validatorRef.current &&\n (changedRef.current || validateInitially)\n ) {\n const result = await callValidator()\n\n if (result instanceof Error) {\n throw result\n }\n }\n\n if (isProcessActive()) {\n clearErrorState()\n }\n\n validatedValue.current = value\n } catch (error: unknown) {\n if (isProcessActive()) {\n persistErrorState('weak', error as Error)\n }\n }\n }, [\n startProcess,\n disabled,\n hideError,\n setFieldState,\n clearErrorState,\n emptyValue,\n required,\n validateInitially,\n callValidator,\n persistErrorState,\n ])\n\n const handleError = useCallback(() => {\n if (\n continuousValidation ||\n (continuousValidation !== false && !hasFocusRef.current)\n ) {\n // When there is a change to the value without there having been any focus callback beforehand, it is likely\n // to believe that the blur callback will not be called either, which would trigger the display of the error.\n // The error is therefore displayed immediately (unless instructed not to with continuousValidation set to false).\n showError()\n } else {\n // When changing the value, hide errors to avoid annoying the user before they are finished filling in that value\n hideError()\n }\n }, [continuousValidation, hideError, showError])\n\n const setHasFocus = useCallback(\n async (hasFocus: boolean, valueOverride?: Value) => {\n if (hasFocus) {\n // Field was put in focus (like when clicking in a text field or opening a dropdown menu)\n hasFocusRef.current = true\n const value = transformers.current.toEvent(\n valueOverride ?? valueRef.current,\n 'onFocus'\n )\n onFocus?.(value)\n } else {\n // Field was removed from focus (like when tabbing out of a text field or closing a dropdown menu)\n hasFocusRef.current = false\n const value = transformers.current.toEvent(\n valueOverride ?? valueRef.current,\n 'onBlur'\n )\n onBlur?.(value)\n\n if (!changedRef.current && !validateUnchanged) {\n // Avoid showing errors when blurring without having changed the value, so tabbing through several\n // fields does not make errors pop up all over the place\n return\n }\n\n addToPool(\n 'onBlurValidator',\n async () => await callOnBlurValidator({ valueOverride }),\n isAsync(onBlurValidatorRef.current)\n )\n\n await runPool(() => {\n // Since the user left the field, show error (if any)\n showError()\n forceUpdate()\n })\n }\n },\n [\n addToPool,\n callOnBlurValidator,\n onBlur,\n onFocus,\n runPool,\n showError,\n validateUnchanged,\n ]\n )\n\n // Await an async operation to run after criteria are fulfilled\n const yieldAsyncProcess = useCallback(\n async ({\n name,\n waitFor,\n }: {\n name: 'onChangeLocal' | 'onChangeContext' | 'onSubmitContext'\n waitFor: Array<{\n processName?: AsyncProcesses\n withStates: Array<SubmitStateWithValidating>\n withValue?: Value\n }>\n }) => {\n return new Promise<void>((resolve) => {\n const validateProcesses = () => {\n const result = waitFor.some(\n ({ processName, withStates, withValue }) => {\n const hasMatchingValue =\n // If the value has changed during the async process, we don't want to resolve anymore\n withValue === validatedValue.current\n\n const result =\n (typeof withValue === 'undefined'\n ? false\n : !hasMatchingValue) ||\n ((processName\n ? processName === asyncProcessRef.current\n : true) &&\n withStates?.some((state) => {\n return state === fieldStateRef.current\n }))\n\n return result\n }\n )\n\n return result\n }\n\n if (validateProcesses() === true) {\n asyncBufferRef.current[name] = { resolve, validateProcesses }\n } else {\n resolve()\n setFieldState('pending')\n }\n })\n },\n [setFieldState]\n )\n\n const handleChangeEventResult = useCallback(async () => {\n const result: EventStateObjectWithSuccess =\n changeEventResultRef.current\n\n if (typeof result?.error !== 'undefined') {\n persistErrorState('gracefully', result.error)\n showError()\n }\n if (typeof result?.warning !== 'undefined') {\n warningRef.current = result.warning\n }\n if (typeof result?.info !== 'undefined') {\n infoRef.current = result.info\n }\n\n if (asyncBehaviorIsEnabled) {\n await yieldAsyncProcess({\n name: 'onSubmitContext',\n waitFor: [{ withStates: ['validating'] }],\n })\n }\n\n defineAsyncProcess(undefined)\n\n if (result?.success === 'saved') {\n setFieldState('success')\n } else if (result?.error) {\n setFieldState('error')\n } else if (asyncBehaviorIsEnabled) {\n setFieldState('complete')\n }\n }, [\n asyncBehaviorIsEnabled,\n defineAsyncProcess,\n persistErrorState,\n setFieldState,\n showError,\n yieldAsyncProcess,\n ])\n\n const setEventResult = useCallback(\n (result: EventReturnWithStateObjectAndSuccess) => {\n if (result instanceof Error) {\n result = { error: result }\n }\n changeEventResultRef.current = {\n ...changeEventResultRef.current,\n ...result,\n } as EventStateObjectWithSuccess\n\n handleChangeEventResult()\n },\n [handleChangeEventResult]\n )\n\n const callOnChangeContext = useCallback(async () => {\n if (asyncBehaviorIsEnabled) {\n await yieldAsyncProcess({\n name: 'onChangeContext',\n waitFor: [\n {\n processName: 'validator',\n withStates: ['validating', 'error'],\n withValue: valueRef.current,\n },\n {\n processName: 'onBlurValidator',\n withStates: ['validating', 'error'],\n withValue: valueRef.current,\n },\n ],\n })\n }\n\n if (path) {\n if (isAsync(onChangeContext)) {\n defineAsyncProcess('onChangeContext')\n\n // Skip sync errors, such as required\n if (!hasError()) {\n setEventResult(\n (await handlePathChangeDataContext?.(\n path\n )) as EventReturnWithStateObjectAndSuccess\n )\n } else {\n setEventResult(null)\n }\n } else {\n setEventResult(\n handlePathChangeDataContext?.(\n path\n ) as EventReturnWithStateObjectAndSuccess\n )\n }\n }\n\n forceUpdate()\n }, [\n asyncBehaviorIsEnabled,\n path,\n hasError,\n yieldAsyncProcess,\n onChangeContext,\n defineAsyncProcess,\n setEventResult,\n handlePathChangeDataContext,\n ])\n\n const updateValue = useCallback(\n async (newValue: Value) => {\n if (newValue === valueRef.current) {\n // Avoid triggering a change if the value was not actually changed. This may be caused by rendering components\n // calling onChange even if the actual value did not change.\n return\n }\n\n valueRef.current = newValue\n\n handlePathChangeUnvalidatedDataContext(path, newValue)\n\n addToPool('validator', validateValue, isAsync(validatorRef.current))\n\n addToPool(\n 'onChangeContext',\n callOnChangeContext,\n isAsync(onChangeContext)\n )\n\n await runPool(() => {\n handleError()\n })\n },\n [\n handlePathChangeUnvalidatedDataContext,\n path,\n addToPool,\n validateValue,\n callOnChangeContext,\n onChangeContext,\n runPool,\n handleError,\n ]\n )\n\n const handleChange = useCallback(\n async (\n argFromInput: Value,\n additionalArgs: AdditionalEventArgs = undefined\n ) => {\n const currentValue = valueRef.current\n const fromInput = transformers.current.fromInput(argFromInput)\n\n if (fromInput === currentValue) {\n // Avoid triggering a change if the value was not actually changed. This may be caused by rendering components\n // calling onChange even if the actual value did not change.\n return\n }\n\n const transformedValue = transformers.current.transformOut(\n transformers.current.transformValue(fromInput, currentValue)\n )\n\n // Must be set before validation\n changedRef.current = true\n\n // Run in sync, before any async operations to avoid lag in UX\n if (itemPath) {\n const iterateValuePath = `/${iterateElementIndex}${\n itemPath && itemPath !== '/' ? itemPath : ''\n }`\n handleChangeIterateContext?.(iterateValuePath, transformedValue)\n }\n\n if (asyncBehaviorIsEnabled) {\n hideError()\n await updateValue(transformedValue)\n } else {\n updateValue(transformedValue)\n }\n\n const getArgs = (): [Value] | [Value, AdditionalEventArgs] => {\n const value = transformers.current.toEvent(\n valueRef.current,\n 'onChange'\n )\n\n return typeof additionalArgs !== 'undefined'\n ? [value, additionalArgs]\n : [value]\n }\n\n if (isAsync(onChange)) {\n addToPool(\n 'onChangeLocal',\n async () => {\n const args = getArgs()\n\n await yieldAsyncProcess({\n name: 'onChangeLocal',\n waitFor: [\n {\n processName: 'validator',\n withStates: ['validating', 'error'],\n withValue: args[0],\n },\n {\n processName: 'onBlurValidator',\n withStates: ['validating', 'error'],\n withValue: args[0],\n },\n {\n processName: 'onChangeContext',\n withStates: ['pending', 'error'],\n withValue: args[0],\n },\n ],\n })\n\n defineAsyncProcess('onChangeLocal')\n\n // Skip sync errors, such as required\n if (!hasError()) {\n // If the value has changed during the async process, we don't want to call the onChange anymore\n setEventResult(await onChange?.apply(this, args))\n } else {\n setEventResult(null)\n }\n },\n true\n )\n } else {\n setEventResult(onChange?.apply(this, getArgs()))\n }\n\n await runPool()\n },\n [\n addToPool,\n asyncBehaviorIsEnabled,\n handleChangeIterateContext,\n hasError,\n hideError,\n itemPath,\n iterateElementIndex,\n onChange,\n runPool,\n defineAsyncProcess,\n setEventResult,\n updateValue,\n yieldAsyncProcess,\n ]\n )\n\n const handleFocus = useCallback(() => setHasFocus(true), [setHasFocus])\n const handleBlur = useCallback(() => setHasFocus(false), [setHasFocus])\n\n // Put props into the surrounding data context\n setPropsDataContext?.(identifier, props)\n\n useMountEffect(() => {\n dataContext?.handleMountField(identifier)\n\n // Run this twice, because when remounting happens, the props where removed by the unmount effect\n setPropsDataContext?.(identifier, props)\n\n validateValue()\n })\n useUnmountEffect(() => {\n dataContext?.handleUnMountField(identifier)\n setFieldErrorDataContext?.(identifier, undefined)\n setFieldError?.(identifier, undefined)\n localErrorRef.current = undefined\n })\n\n useUpdateEffect(() => {\n schemaValidatorRef.current = schema\n ? dataContext.ajvInstance?.compile(schema)\n : undefined\n validateValue()\n }, [schema, validateValue])\n\n useUpdateEffect(() => {\n // Error or removed error for this field from the surrounding data context (by path)\n if (valueRef.current !== externalValue) {\n valueRef.current = externalValue\n validateValue()\n }\n forceUpdate()\n }, [externalValue, validateValue])\n\n useEffect(() => {\n const error = prepareError(dataContextError)\n if (errorChanged(error, contextErrorRef.current)) {\n contextErrorRef.current = error\n forceUpdate()\n }\n }, [dataContextError, prepareError])\n\n useEffect(() => {\n if (path) {\n let value = props.value\n\n // First, look for existing data in the context\n const hasValue = pointer.has(dataContext.data, path)\n const existingValue = hasValue\n ? pointer.get(dataContext.data, path)\n : undefined\n\n // If no data where found in the dataContext, look for shared data\n if (\n dataContext.id &&\n !hasValue &&\n typeof existingValue === 'undefined' &&\n typeof value === 'undefined'\n ) {\n const sharedState = createSharedState(dataContext.id)\n const hasValue = pointer.has(sharedState.data, path)\n if (hasValue) {\n const sharedValue = pointer.get(sharedState.data, path)\n if (sharedValue) {\n value = sharedValue\n }\n }\n }\n\n if (\n !hasValue ||\n (value !== existingValue &&\n // Prevents an infinite loop by skipping the update if the value hasn't changed\n valueRef.current !== existingValue)\n ) {\n // Update the data context when a pointer not exists,\n // but was given initially.\n updateDataValueDataContext?.(path, value)\n validateDataDataContext?.()\n }\n }\n }, [\n dataContext.data,\n dataContext.id,\n path,\n props.value,\n updateDataValueDataContext,\n validateDataDataContext,\n ])\n\n useEffect(() => {\n if (dataContext.showAllErrors) {\n // In case of async validation, we don't want to show existing errors before the validation has been completed\n if (fieldStateRef.current !== 'validating') {\n // If showError on a surrounding data context was changed and set to true, it is because the user clicked next, submit or\n // something else that should lead to showing the user all errors.\n showError()\n forceUpdate()\n }\n }\n }, [dataContext.showAllErrors, showError])\n\n useEffect(() => {\n if (\n dataContext.formState === 'pending' &&\n (validatorRef.current || onBlurValidatorRef.current)\n ) {\n hideError()\n forceUpdate()\n }\n }, [dataContext.formState, hideError])\n\n const onSubmitHandler = useCallback(async () => {\n if (hasError()) {\n return // stop here\n }\n\n addToPool('validator', callValidator, isAsync(validatorRef.current))\n addToPool(\n 'onBlurValidator',\n callOnBlurValidator,\n isAsync(onBlurValidatorRef.current)\n )\n\n await runPool()\n }, [addToPool, callOnBlurValidator, callValidator, hasError, runPool])\n\n // Validate/call validator functions during submit of the form\n useMountEffect(() => {\n dataContext?.setFieldEventListener?.(\n identifier,\n 'onSubmit',\n onSubmitHandler\n )\n })\n\n // Set the error in the field block context if this field is inside a field block\n useMountEffect(() => {\n if (inFieldBlock) {\n if (errorProp) {\n setFieldStateFieldBlock?.({\n identifier,\n type: 'error',\n content: errorProp,\n showInitially: true,\n show: true,\n })\n }\n if (warning) {\n setFieldStateFieldBlock?.({\n identifier,\n type: 'warning',\n content: warning,\n showInitially: true,\n show: true,\n })\n }\n if (info) {\n setFieldStateFieldBlock?.({\n identifier,\n type: 'info',\n content: info,\n showInitially: true,\n show: true,\n })\n }\n\n return () => {\n // Unmount procedure\n if (fieldBlockContext.mountedFieldsRef) {\n fieldBlockContext.mountedFieldsRef.current[identifier] = true\n }\n }\n }\n })\n\n const infoRef = useRef<React.ReactNode>(info)\n const warningRef = useRef<React.ReactNode>(warning)\n useUpdateEffect(() => {\n infoRef.current = info\n warningRef.current = warning\n forceUpdate()\n }, [info, warning])\n\n // - Handle htmlAttributes\n const htmlAttributes = useMemo(() => {\n return Object.keys(props).reduce<AriaAttributes>((acc, cur) => {\n if (cur.startsWith('aria-') || cur.startsWith('data-')) {\n acc[cur] = props[cur]\n }\n return acc\n }, {})\n }, [props])\n\n if (error) {\n htmlAttributes['aria-invalid'] = error ? 'true' : 'false'\n }\n if (required) {\n htmlAttributes['aria-required'] = required ? 'true' : 'false'\n }\n if (inFieldBlock) {\n // Mount the field in the field block context\n if (fieldBlockContext.mountedFieldsRef) {\n fieldBlockContext.mountedFieldsRef.current[identifier] = true\n }\n\n // Check if there are any state IDs to be added to the aria-describedby attribute\n const stateIds = fieldBlockContext.fieldStateIdsRef?.current\n\n if (stateIds) {\n htmlAttributes['aria-describedby'] = combineDescribedBy(\n htmlAttributes,\n [\n error && stateIds.error,\n warning && stateIds.warning,\n info && stateIds.info,\n ].filter(Boolean)\n )\n }\n } else {\n const ids = [\n (error || errorProp) && `${id}-form-status--error`,\n warning && `${id}-form-status--warning`,\n info && `${id}-form-status--info`,\n ].filter(Boolean)\n\n if (ids.length) {\n htmlAttributes['aria-describedby'] = combineDescribedBy(\n htmlAttributes,\n ids\n )\n }\n }\n\n const fieldBlockProps = {\n /** Documented APIs */\n info: !inFieldBlock ? infoRef.current : undefined,\n warning: !inFieldBlock ? warningRef.current : undefined,\n error: !inFieldBlock ? error : undefined,\n\n /** HTML Attributes */\n disabled:\n onBlurValidator &&\n asyncProcessRef.current === 'onBlurValidator' &&\n fieldStateRef.current === 'validating'\n ? true\n : disabled,\n\n /** Internal */\n fieldState: resolveValidatingState(fieldStateRef.current),\n }\n\n const sharedData = useSharedState(id)\n sharedData.set(fieldBlockProps)\n\n return {\n ...props,\n ...fieldBlockProps,\n\n /** HTML Attributes */\n name: props.name || props.path?.replace('/', '') || id,\n autoComplete:\n props.autoComplete ??\n (dataContext.autoComplete === true ? 'on' : undefined),\n\n /** Documented APIs */\n id,\n value: transformers.current.transformIn(\n transformers.current.toInput(valueRef.current)\n ),\n hasError: hasVisibleError,\n isChanged: changedRef.current,\n htmlAttributes,\n setHasFocus,\n handleFocus,\n handleBlur,\n handleChange,\n updateValue,\n forceUpdate,\n\n /** Internal */\n dataContext,\n }\n}\n\nexport interface ReturnAdditional<Value> {\n /** Documented APIs */\n value: Value\n isChanged: boolean\n htmlAttributes: AriaAttributes | DataAttributes\n setHasFocus: (hasFocus: boolean, valueOverride?: unknown) => void\n handleFocus: () => void\n handleBlur: () => void\n handleChange: (\n value: Value,\n additionalArgs?: AdditionalEventArgs\n ) => void\n updateValue: (value: Value) => void\n forceUpdate: () => void\n hasError?: boolean\n\n /** Internal */\n dataContext: ContextState\n fieldState: SubmitState\n}\n\nfunction resolveValidatingState(state: SubmitStateWithValidating) {\n return state === 'validating' ? 'pending' : state\n}\n\nexport function useExternalValue<Value>({\n path,\n itemPath,\n props,\n transformers,\n emptyValue = undefined,\n}: {\n path?: Path\n itemPath?: Path\n props: FieldProps<Value>\n transformers: React.MutableRefObject<{\n fromExternal: FieldProps<Value>['fromExternal']\n }>\n emptyValue?: FieldProps<Value>['emptyValue']\n}) {\n const dataContext = useContext(DataContext)\n const iterateElementContext = useContext(IterateElementContext)\n const inIterate = Boolean(iterateElementContext)\n const { value: iterateElementValue } = iterateElementContext ?? {}\n\n return useMemo(() => {\n if (props.value !== emptyValue) {\n // Value-prop sent directly to the field has highest priority, overriding any surrounding source\n return transformers.current.fromExternal(props.value)\n }\n\n if (inIterate && itemPath) {\n // This field is inside an iterate, and has a pointer from the base of the element being iterated\n if (itemPath === '/') {\n return iterateElementValue\n }\n\n return pointer.has(iterateElementValue, itemPath)\n ? pointer.get(iterateElementValue, itemPath)\n : emptyValue\n }\n\n if (dataContext.data && path) {\n // There is a surrounding data context and a path for where in the source to find the data\n if (path === '/') {\n return dataContext.data\n }\n\n return pointer.has(dataContext.data, path)\n ? pointer.get(dataContext.data, path)\n : emptyValue\n }\n\n return emptyValue\n }, [\n props.value,\n emptyValue,\n inIterate,\n itemPath,\n dataContext.data,\n path,\n transformers,\n iterateElementValue,\n ])\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useFieldProps.js","names":["_react","require","_jsonPointer","_interopRequireDefault","_utils","_ajv","_types","_DataContext","_FieldPropsContext","_componentHelper","_useId","_useUpdateEffect","_useMountEffect","_useUnmountEffect","_FieldBlockContext","_IterateElementContext","_FieldBoundaryContext","_useProcessManager","_useSharedState","_isAsync","_useTranslation","obj","__esModule","default","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","value","_toPropertyKey","configurable","writable","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","call","TypeError","Number","useFieldProps","localeProps","_dataContext$props","_dataContext$ajvInsta","_localErrorRef$curren","_ref2","_this","_props$path","_props$autoComplete","extend","useContext","FieldPropsContext","props","path","itemPath","emptyValue","required","disabled","disabledProp","info","warning","error","errorProp","errorMessages","onFocus","onBlur","onChange","onBlurValidator","validator","schema","validateInitially","validateUnchanged","continuousValidation","transformIn","transformOut","toInput","fromInput","toEvent","transformValue","fromExternal","validateRequired","_ref","forceUpdate","useReducer","startProcess","useProcessManager","id","useId","dataContext","DataContext","fieldBlockContext","FieldBlockContext","iterateElementContext","IterateElementContext","fieldBoundaryContext","FieldBoundaryContext","translation","useTranslation","transformers","useRef","handlePathChangeUnvalidated","handlePathChangeUnvalidatedDataContext","handlePathChange","handlePathChangeDataContext","updateDataValue","updateDataValueDataContext","validateData","validateDataDataContext","setFieldState","setFieldStateDataContext","setFieldError","setFieldErrorDataContext","setProps","setPropsDataContext","errors","dataContextErrors","contextErrorMessages","onChangeContext","readOnly","dataContextError","inFieldBlock","Boolean","setFieldStateFieldBlock","showFieldError","showFieldErrorFieldBlock","inIterate","index","iterateElementIndex","iteratePath","handleChange","handleChangeIterateContext","substring","Error","identifier","useMemo","iterateValuePath","externalValue","useExternalValue","valueRef","changedRef","hasFocusRef","showErrorRef","errorMethodRef","localErrorRef","contextErrorRef","validatorRef","useUpdateEffect","current","onBlurValidatorRef","schemaValidatorRef","ajvInstance","compile","asyncBehaviorIsEnabled","isAsync","validatedValue","changeEventResultRef","asyncProcessRef","defineAsyncProcess","useCallback","name","asyncBufferRef","resolve","validateProcesses","window","requestAnimationFrame","eventPool","onChangeLocal","addToPool","fn","runAsync","runPool","cb","pending","fieldStateRef","state","resolveValidatingState","showError","hideError","hasVisibleError","hasErrorProp","hasError","_ref3","errorMessagesRef","Field","errorRequired","prepareError","FormError","_error$messageValues","message","validationRule","_errorMessagesRef$cur","fieldMessage","messageWithValues","entries","messageValues","reduce","_ref4","replace","stateId","persistErrorState","method","errorArg","errorChanged","type","content","showInitially","clearErrorState","callValidator","opts","tmpValue","result","unchangedValue","callOnBlurValidator","valueOverride","validateValue","isProcessActive","requiredError","isChanged","ajvErrorsToOneFormError","handleError","setHasFocus","hasFocus","yieldAsyncProcess","_ref5","waitFor","Promise","some","_ref6","processName","withStates","withValue","hasMatchingValue","handleChangeEventResult","warningRef","infoRef","success","setEventResult","callOnChangeContext","updateValue","newValue","argFromInput","additionalArgs","currentValue","transformedValue","getArgs","args","handleFocus","handleBlur","useMountEffect","handleMountField","useUnmountEffect","handleUnMountField","_dataContext$ajvInsta2","useEffect","hasValue","pointer","has","data","existingValue","get","sharedState","createSharedState","sharedValue","showAllErrors","formState","onSubmitHandler","_dataContext$setField","setFieldEventListener","show","mountedFieldsRef","htmlAttributes","acc","cur","startsWith","_fieldBlockContext$fi","stateIds","fieldStateIdsRef","combineDescribedBy","ids","fieldBlockProps","fieldState","sharedData","useSharedState","set","autoComplete","_ref7","iterateElementValue"],"sources":["../../../../../src/extensions/forms/hooks/useFieldProps.ts"],"sourcesContent":["import {\n useRef,\n useEffect,\n useContext,\n useCallback,\n useMemo,\n useReducer,\n AriaAttributes,\n} from 'react'\nimport pointer from 'json-pointer'\nimport { ValidateFunction } from 'ajv/dist/2020'\nimport { errorChanged } from '../utils'\nimport { ajvErrorsToOneFormError } from '../utils/ajv'\nimport {\n FormError,\n FieldProps,\n AdditionalEventArgs,\n SubmitState,\n EventReturnWithStateObjectAndSuccess,\n EventStateObjectWithSuccess,\n Path,\n} from '../types'\nimport { Context as DataContext, ContextState } from '../DataContext'\nimport FieldPropsContext from '../Form/FieldProps/FieldPropsContext'\nimport { combineDescribedBy } from '../../../shared/component-helper'\nimport useId from '../../../shared/helpers/useId'\nimport useUpdateEffect from '../../../shared/helpers/useUpdateEffect'\nimport useMountEffect from '../../../shared/helpers/useMountEffect'\nimport useUnmountEffect from '../../../shared/helpers/useUnmountEffect'\nimport FieldBlockContext from '../FieldBlock/FieldBlockContext'\nimport IterateElementContext from '../Iterate/IterateElementContext'\nimport FieldBoundaryContext from '../DataContext/FieldBoundary/FieldBoundaryContext'\nimport useProcessManager from './useProcessManager'\nimport {\n createSharedState,\n useSharedState,\n} from '../../../shared/helpers/useSharedState'\nimport { isAsync } from '../../../shared/helpers/isAsync'\nimport useTranslation from './useTranslation'\n\ntype SubmitStateWithValidating = SubmitState | 'validating'\ntype AsyncProcesses =\n | 'validator'\n | 'onBlurValidator'\n | 'onChangeLocal'\n | 'onChangeContext'\ntype PersistErrorStateMethod =\n /**\n * Add or remove the error regardless\n */\n | 'weak'\n /**\n * Check if there is an existing error, and if so, keep it\n */\n | 'gracefully'\n /**\n * Remove the error, if any\n */\n | 'wipe'\ntype AsyncProcessesBuffer = {\n resolve: () => void\n validateProcesses: () => boolean\n}\n\nexport type DataAttributes = {\n [property: `data-${string}`]: string | boolean | number\n}\n\nexport default function useFieldProps<\n Value = unknown,\n Props extends FieldProps<Value> = FieldProps<Value>,\n>(\n localeProps: Props\n): Props & FieldProps<Value> & ReturnAdditional<Value> {\n const { extend } = useContext(FieldPropsContext)\n const props = extend<Props>(localeProps)\n\n const {\n path,\n itemPath,\n emptyValue,\n required,\n disabled: disabledProp,\n info,\n warning,\n error: errorProp,\n errorMessages,\n onFocus,\n onBlur,\n onChange,\n onBlurValidator,\n validator,\n schema,\n validateInitially,\n validateUnchanged,\n continuousValidation,\n transformIn = (value: Value) => value,\n transformOut = (value: Value) => value,\n toInput = (value: Value) => value,\n fromInput = (value: Value) => value,\n toEvent = (value: Value) => value,\n transformValue = (value: Value) => value,\n fromExternal = (value: Value) => value,\n validateRequired = (value: Value, { emptyValue, required, error }) => {\n const res =\n required &&\n (value === emptyValue ||\n (typeof emptyValue === 'undefined' && value === ''))\n ? error\n : undefined\n\n return res\n },\n } = props\n\n const [, forceUpdate] = useReducer(() => ({}), {})\n const { startProcess } = useProcessManager()\n const id = useId(props.id)\n const dataContext = useContext(DataContext)\n const fieldBlockContext = useContext(FieldBlockContext)\n const iterateElementContext = useContext(IterateElementContext)\n const fieldBoundaryContext = useContext(FieldBoundaryContext)\n const translation = useTranslation()\n\n const transformers = useRef({\n transformIn,\n transformOut,\n toInput,\n fromInput,\n toEvent,\n fromExternal,\n transformValue,\n validateRequired,\n })\n\n const {\n handlePathChangeUnvalidated: handlePathChangeUnvalidatedDataContext,\n handlePathChange: handlePathChangeDataContext,\n updateDataValue: updateDataValueDataContext,\n validateData: validateDataDataContext,\n setFieldState: setFieldStateDataContext,\n setFieldError: setFieldErrorDataContext,\n setProps: setPropsDataContext,\n errors: dataContextErrors,\n contextErrorMessages,\n } = dataContext ?? {}\n const onChangeContext = dataContext?.props?.onChange\n\n const disabled = disabledProp ?? props.readOnly\n const dataContextError = path ? dataContextErrors?.[path] : undefined\n const inFieldBlock = Boolean(fieldBlockContext)\n const {\n setFieldState: setFieldStateFieldBlock,\n showFieldError: showFieldErrorFieldBlock,\n } = fieldBlockContext ?? {}\n const inIterate = Boolean(iterateElementContext)\n const {\n index: iterateElementIndex,\n path: iteratePath,\n handleChange: handleChangeIterateContext,\n } = iterateElementContext ?? {}\n const { setFieldError } = fieldBoundaryContext ?? {}\n\n if (path && path.substring(0, 1) !== '/') {\n throw new Error(\n 'Invalid path. Data value path JSON Pointers must be from root (starting with a /).'\n )\n }\n if (itemPath && itemPath.substring(0, 1) !== '/') {\n throw new Error(\n 'Invalid itemPath. Item pathJSON Pointers must be from root of iterate element (starting with a /).'\n )\n }\n if (itemPath && !inIterate) {\n throw new Error(\n 'itemPath cannot be used when not inside an iterate context. Wrap the component in an Iterate.Array.'\n )\n }\n\n const identifier = useMemo(() => {\n if (itemPath) {\n const iterateValuePath = `${iteratePath}/${iterateElementIndex}${\n itemPath && itemPath !== '/' ? itemPath : ''\n }`\n return iterateValuePath\n }\n\n // Identifier is used is registries of multiple fields, like in the DataContext keeping track of errors\n return path ?? id\n }, [itemPath, path, id, iteratePath, iterateElementIndex])\n\n const externalValue = useExternalValue<Value>({\n path,\n itemPath,\n props,\n transformers,\n emptyValue,\n })\n\n // Many variables are kept in refs to avoid triggering unnecessary update loops because updates using\n // useEffect depend on them (like the external `value`)\n\n // Hold an internal copy of the input value in case the input component is used uncontrolled,\n // and to handle errors in Eufemia on components that does not take updated callback functions into account.\n const valueRef = useRef<Value>(externalValue)\n const changedRef = useRef<boolean>(false)\n const hasFocusRef = useRef<boolean>(false)\n\n // Error handling\n // - Should errors received through validation be shown initially. Assume that providing a direct prop to\n // the component means it is supposed to be shown initially.\n const showErrorRef = useRef<boolean>(\n Boolean(validateInitially || errorProp)\n )\n // - Local errors are errors based on validation instructions received by\n const errorMethodRef = useRef<\n Partial<Record<PersistErrorStateMethod, Error | FormError>>\n >({})\n const localErrorRef = useRef<Error | FormError | undefined>()\n // - Context errors are from outer contexts, like validation for this field as part of the whole data set\n const contextErrorRef = useRef<Error | FormError | undefined>(\n dataContextError\n )\n\n const validatorRef = useRef(validator)\n useUpdateEffect(() => {\n validatorRef.current = validator\n }, [validator])\n const onBlurValidatorRef = useRef(onBlurValidator)\n useUpdateEffect(() => {\n onBlurValidatorRef.current = onBlurValidator\n }, [onBlurValidator])\n\n const schemaValidatorRef = useRef<ValidateFunction>(\n schema ? dataContext.ajvInstance?.compile(schema) : undefined\n )\n\n // - Async behavior\n const asyncBehaviorIsEnabled = useMemo(() => {\n return isAsync(onChange) || isAsync(onChangeContext)\n }, [onChangeContext, onChange])\n const validatedValue = useRef<Value>()\n const changeEventResultRef = useRef<EventStateObjectWithSuccess>(null)\n const asyncProcessRef = useRef<AsyncProcesses>(null)\n const defineAsyncProcess = useCallback((name: AsyncProcesses) => {\n asyncProcessRef.current = name\n }, [])\n\n // When both an async onChange and async validators are used,\n // we buffer the onChange calls to avoid race conditions.\n const asyncBufferRef = useRef<\n Record<AsyncProcesses, AsyncProcessesBuffer> | Record<string, unknown>\n >({})\n\n for (const key in asyncBufferRef.current) {\n const { resolve, validateProcesses } = (asyncBufferRef.current[key] ||\n {}) as AsyncProcessesBuffer\n if (validateProcesses?.() === false) {\n delete asyncBufferRef.current[key]\n if (typeof resolve === 'function') {\n window.requestAnimationFrame(resolve)\n }\n }\n }\n\n const eventPool = useRef({\n validator: null,\n onBlurValidator: null,\n onChangeContext: null,\n onChangeLocal: null,\n })\n\n const addToPool = useCallback(\n (name: keyof typeof eventPool.current, fn, runAsync) => {\n if (!eventPool.current[name]) {\n eventPool.current[name] = { fn, runAsync }\n }\n },\n []\n )\n\n const runPool = useCallback(async (cb = null) => {\n for (const key in eventPool.current) {\n if (!eventPool.current[key] || eventPool.current[key].pending) {\n continue\n }\n\n const { fn, runAsync } = eventPool.current[key] || {}\n if (fn) {\n eventPool.current[key].pending = true\n eventPool.current[key] = null\n\n if (runAsync) {\n await fn()\n } else {\n fn()\n }\n }\n }\n\n // use a callback in order to avoid any async/await,\n // because it will delay the execution of the following code\n cb?.()\n }, [])\n\n const fieldStateRef = useRef<SubmitStateWithValidating>()\n const setFieldState = useCallback(\n (state: SubmitStateWithValidating) => {\n fieldStateRef.current = state\n setFieldStateDataContext(identifier, resolveValidatingState(state))\n if (!validateInitially) {\n forceUpdate()\n }\n },\n [setFieldStateDataContext, identifier, validateInitially]\n )\n\n const showError = useCallback(() => {\n showErrorRef.current = true\n showFieldErrorFieldBlock?.(identifier, true)\n }, [showFieldErrorFieldBlock, identifier])\n\n const hideError = useCallback(() => {\n showErrorRef.current = false\n showFieldErrorFieldBlock?.(identifier, false)\n }, [showFieldErrorFieldBlock, identifier])\n\n const error =\n showErrorRef.current ||\n // If the error is a type error, we want to show it even if the field as not been used\n localErrorRef.current?.['validationRule'] === 'type'\n ? errorProp ?? localErrorRef.current ?? contextErrorRef.current\n : undefined\n\n const hasVisibleError =\n Boolean(error) || (inFieldBlock && fieldBlockContext.hasErrorProp)\n const hasError = useCallback(() => {\n return Boolean(\n errorProp ?? localErrorRef.current ?? contextErrorRef.current\n )\n }, [errorProp])\n\n const errorMessagesRef = useRef(null)\n errorMessagesRef.current = useMemo(() => {\n return {\n required: translation.Field.errorRequired,\n ...errorMessages,\n }\n }, [errorMessages, translation.Field.errorRequired])\n\n /**\n * Prepare error from validation logic with correct error messages based on props\n */\n const prepareError = useCallback(\n (error: Error | FormError | undefined): FormError | undefined => {\n if (error instanceof FormError) {\n let message = error.message\n\n const { validationRule } = error\n if (typeof validationRule === 'string') {\n const fieldMessage = errorMessagesRef.current?.[validationRule]\n if (fieldMessage) {\n message = fieldMessage\n }\n }\n\n const messageWithValues = Object.entries(\n error.messageValues ?? {}\n ).reduce((message, [key, value]) => {\n return message.replace(`{${key}}`, value)\n }, message)\n\n error.message = messageWithValues\n\n return error\n }\n\n return error\n },\n []\n )\n\n /**\n * Based on validation, update error state, locally and relevant surrounding contexts\n */\n const stateId = useId()\n const persistErrorState = useCallback(\n (\n method: PersistErrorStateMethod,\n errorArg: Error | FormError | undefined = undefined\n ) => {\n const error = prepareError(errorArg)\n\n if (!errorChanged(error, localErrorRef.current)) {\n // In case different triggers lead to validation with no changes in the result (like still no error, or the same error),\n // avoid unnecessary re-renders by letting the old error object stay in the state and skip re-rendering.\n return\n }\n\n if (method === 'wipe') {\n errorMethodRef.current = {}\n } else {\n errorMethodRef.current[method] = error\n }\n\n if (\n !error &&\n method === 'gracefully' &&\n Object.keys(errorMethodRef.current).filter(Boolean).length > 0\n ) {\n // If the error is removed, we need to check if there are other errors that still should be shown\n return\n }\n\n localErrorRef.current = error\n\n // Tell the data context about the error, so it can stop the user from submitting the form until the error has been fixed\n setFieldErrorDataContext?.(identifier, error)\n setFieldError?.(identifier, error)\n\n // Set the visual states\n setFieldStateDataContext?.(identifier, error ? 'error' : undefined)\n setFieldStateFieldBlock?.({\n stateId,\n identifier,\n type: 'error',\n content: error,\n showInitially: Boolean(inFieldBlock && validateInitially),\n })\n\n forceUpdate()\n },\n [\n prepareError,\n setFieldErrorDataContext,\n identifier,\n setFieldError,\n setFieldStateDataContext,\n setFieldStateFieldBlock,\n stateId,\n inFieldBlock,\n validateInitially,\n ]\n )\n\n const clearErrorState = useCallback(() => {\n persistErrorState('wipe')\n }, [persistErrorState])\n\n const callValidator = useCallback(async () => {\n if (typeof validatorRef.current !== 'function') {\n return\n }\n\n const runAsync = isAsync(validatorRef.current)\n\n if (runAsync) {\n defineAsyncProcess('validator')\n setFieldState('validating')\n hideError()\n }\n\n const opts = {\n ...contextErrorMessages,\n ...errorMessagesRef.current,\n }\n\n const tmpValue = valueRef.current\n\n // Run async regardless to support Promise based validators\n const result = await validatorRef.current(valueRef.current, opts)\n\n const unchangedValue = tmpValue === valueRef.current\n\n // Don't show the error if the value has changed in the meantime\n if (unchangedValue) {\n persistErrorState('gracefully', result as Error)\n\n // Because its a better UX to show the error when the validation is async/delayed\n if (continuousValidation || runAsync) {\n // Because we first need to throw the error to be able to display it, we delay the showError call\n window.requestAnimationFrame(() => {\n showError()\n forceUpdate()\n })\n }\n }\n\n if (runAsync) {\n defineAsyncProcess(undefined)\n\n if (unchangedValue) {\n setFieldState(result instanceof Error ? 'error' : 'complete')\n } else {\n setFieldState('pending')\n }\n }\n\n return result\n }, [\n contextErrorMessages,\n continuousValidation,\n hideError,\n persistErrorState,\n defineAsyncProcess,\n setFieldState,\n showError,\n ])\n\n const callOnBlurValidator = useCallback(\n async ({ valueOverride = null } = {}) => {\n if (typeof onBlurValidatorRef.current !== 'function') {\n return\n }\n // External blur validators makes it possible to validate values but not on every character change in case of\n // expensive validation calling external services etc.\n\n // Since the validator can return either a synchronous result or an asynchronous\n const value = transformers.current.toEvent(\n valueOverride ?? valueRef.current,\n 'onBlurValidator'\n )\n\n const runAsync = isAsync(onBlurValidatorRef.current)\n\n if (runAsync) {\n defineAsyncProcess('onBlurValidator')\n setFieldState('validating')\n }\n\n // Run async regardless to support Promise based validators\n const result = await onBlurValidatorRef.current(value)\n\n persistErrorState('gracefully', result as Error)\n\n if (runAsync) {\n defineAsyncProcess(undefined)\n setFieldState(result instanceof Error ? 'error' : 'complete')\n }\n\n showError()\n forceUpdate()\n },\n [persistErrorState, defineAsyncProcess, setFieldState, showError]\n )\n\n /**\n * Validate the current state value by provided validator instructions\n */\n const validateValue = useCallback(async () => {\n const isProcessActive = startProcess()\n\n if (disabled) {\n if (isProcessActive()) {\n clearErrorState()\n }\n hideError()\n setFieldState(undefined)\n return // stop here\n }\n\n const value = valueRef.current\n changeEventResultRef.current = null\n validatedValue.current = null\n\n try {\n // Validate required\n const requiredError = transformers.current.validateRequired(value, {\n emptyValue,\n required,\n isChanged: changedRef.current,\n error: new FormError('The value is required', {\n validationRule: 'required',\n }),\n })\n if (requiredError instanceof Error) {\n throw requiredError\n }\n\n // Validate by provided JSON Schema for this value\n if (\n schemaValidatorRef.current &&\n value !== undefined &&\n !schemaValidatorRef.current(value)\n ) {\n const error = ajvErrorsToOneFormError(\n schemaValidatorRef.current.errors,\n valueRef.current\n )\n throw error\n }\n\n // Validate by provided derivative validator\n if (\n validatorRef.current &&\n (changedRef.current || validateInitially)\n ) {\n const result = await callValidator()\n\n if (result instanceof Error) {\n throw result\n }\n }\n\n if (isProcessActive()) {\n clearErrorState()\n }\n\n validatedValue.current = value\n } catch (error: unknown) {\n if (isProcessActive()) {\n persistErrorState('weak', error as Error)\n }\n }\n }, [\n startProcess,\n disabled,\n hideError,\n setFieldState,\n clearErrorState,\n emptyValue,\n required,\n validateInitially,\n callValidator,\n persistErrorState,\n ])\n\n const handleError = useCallback(() => {\n if (\n continuousValidation ||\n (continuousValidation !== false && !hasFocusRef.current)\n ) {\n // When there is a change to the value without there having been any focus callback beforehand, it is likely\n // to believe that the blur callback will not be called either, which would trigger the display of the error.\n // The error is therefore displayed immediately (unless instructed not to with continuousValidation set to false).\n showError()\n } else {\n // When changing the value, hide errors to avoid annoying the user before they are finished filling in that value\n hideError()\n }\n }, [continuousValidation, hideError, showError])\n\n const setHasFocus = useCallback(\n async (hasFocus: boolean, valueOverride?: Value) => {\n if (hasFocus) {\n // Field was put in focus (like when clicking in a text field or opening a dropdown menu)\n hasFocusRef.current = true\n const value = transformers.current.toEvent(\n valueOverride ?? valueRef.current,\n 'onFocus'\n )\n onFocus?.(value)\n } else {\n // Field was removed from focus (like when tabbing out of a text field or closing a dropdown menu)\n hasFocusRef.current = false\n const value = transformers.current.toEvent(\n valueOverride ?? valueRef.current,\n 'onBlur'\n )\n onBlur?.(value)\n\n if (!changedRef.current && !validateUnchanged) {\n // Avoid showing errors when blurring without having changed the value, so tabbing through several\n // fields does not make errors pop up all over the place\n return\n }\n\n addToPool(\n 'onBlurValidator',\n async () => await callOnBlurValidator({ valueOverride }),\n isAsync(onBlurValidatorRef.current)\n )\n\n await runPool(() => {\n // Since the user left the field, show error (if any)\n showError()\n forceUpdate()\n })\n }\n },\n [\n addToPool,\n callOnBlurValidator,\n onBlur,\n onFocus,\n runPool,\n showError,\n validateUnchanged,\n ]\n )\n\n // Await an async operation to run after criteria are fulfilled\n const yieldAsyncProcess = useCallback(\n async ({\n name,\n waitFor,\n }: {\n name: 'onChangeLocal' | 'onChangeContext' | 'onSubmitContext'\n waitFor: Array<{\n processName?: AsyncProcesses\n withStates: Array<SubmitStateWithValidating>\n withValue?: Value\n }>\n }) => {\n return new Promise<void>((resolve) => {\n const validateProcesses = () => {\n const result = waitFor.some(\n ({ processName, withStates, withValue }) => {\n const hasMatchingValue =\n // If the value has changed during the async process, we don't want to resolve anymore\n withValue === validatedValue.current\n\n const result =\n (typeof withValue === 'undefined'\n ? false\n : !hasMatchingValue) ||\n ((processName\n ? processName === asyncProcessRef.current\n : true) &&\n withStates?.some((state) => {\n return state === fieldStateRef.current\n }))\n\n return result\n }\n )\n\n return result\n }\n\n if (validateProcesses() === true) {\n asyncBufferRef.current[name] = { resolve, validateProcesses }\n } else {\n resolve()\n setFieldState('pending')\n }\n })\n },\n [setFieldState]\n )\n\n const handleChangeEventResult = useCallback(async () => {\n const result: EventStateObjectWithSuccess =\n changeEventResultRef.current\n\n if (typeof result?.error !== 'undefined') {\n persistErrorState('gracefully', result.error)\n showError()\n }\n if (typeof result?.warning !== 'undefined') {\n warningRef.current = result.warning\n }\n if (typeof result?.info !== 'undefined') {\n infoRef.current = result.info\n }\n\n if (asyncBehaviorIsEnabled) {\n await yieldAsyncProcess({\n name: 'onSubmitContext',\n waitFor: [{ withStates: ['validating'] }],\n })\n }\n\n defineAsyncProcess(undefined)\n\n if (result?.success === 'saved') {\n setFieldState('success')\n } else if (result?.error) {\n setFieldState('error')\n } else if (asyncBehaviorIsEnabled) {\n setFieldState('complete')\n }\n }, [\n asyncBehaviorIsEnabled,\n defineAsyncProcess,\n persistErrorState,\n setFieldState,\n showError,\n yieldAsyncProcess,\n ])\n\n const setEventResult = useCallback(\n (result: EventReturnWithStateObjectAndSuccess) => {\n if (result instanceof Error) {\n result = { error: result }\n }\n changeEventResultRef.current = {\n ...changeEventResultRef.current,\n ...result,\n } as EventStateObjectWithSuccess\n\n handleChangeEventResult()\n },\n [handleChangeEventResult]\n )\n\n const callOnChangeContext = useCallback(async () => {\n if (asyncBehaviorIsEnabled) {\n await yieldAsyncProcess({\n name: 'onChangeContext',\n waitFor: [\n {\n processName: 'validator',\n withStates: ['validating', 'error'],\n withValue: valueRef.current,\n },\n {\n processName: 'onBlurValidator',\n withStates: ['validating', 'error'],\n withValue: valueRef.current,\n },\n ],\n })\n }\n\n if (path) {\n if (isAsync(onChangeContext)) {\n defineAsyncProcess('onChangeContext')\n\n // Skip sync errors, such as required\n if (!hasError()) {\n setEventResult(\n (await handlePathChangeDataContext?.(\n path\n )) as EventReturnWithStateObjectAndSuccess\n )\n } else {\n setEventResult(null)\n }\n } else {\n setEventResult(\n handlePathChangeDataContext?.(\n path\n ) as EventReturnWithStateObjectAndSuccess\n )\n }\n }\n\n forceUpdate()\n }, [\n asyncBehaviorIsEnabled,\n path,\n hasError,\n yieldAsyncProcess,\n onChangeContext,\n defineAsyncProcess,\n setEventResult,\n handlePathChangeDataContext,\n ])\n\n const updateValue = useCallback(\n async (newValue: Value) => {\n if (newValue === valueRef.current) {\n // Avoid triggering a change if the value was not actually changed. This may be caused by rendering components\n // calling onChange even if the actual value did not change.\n return\n }\n\n valueRef.current = newValue\n\n handlePathChangeUnvalidatedDataContext(path, newValue)\n\n addToPool('validator', validateValue, isAsync(validatorRef.current))\n\n addToPool(\n 'onChangeContext',\n callOnChangeContext,\n isAsync(onChangeContext)\n )\n\n await runPool(() => {\n handleError()\n })\n },\n [\n handlePathChangeUnvalidatedDataContext,\n path,\n addToPool,\n validateValue,\n callOnChangeContext,\n onChangeContext,\n runPool,\n handleError,\n ]\n )\n\n const handleChange = useCallback(\n async (\n argFromInput: Value,\n additionalArgs: AdditionalEventArgs = undefined\n ) => {\n const currentValue = valueRef.current\n const fromInput = transformers.current.fromInput(argFromInput)\n\n if (fromInput === currentValue) {\n // Avoid triggering a change if the value was not actually changed. This may be caused by rendering components\n // calling onChange even if the actual value did not change.\n return\n }\n\n const transformedValue = transformers.current.transformOut(\n transformers.current.transformValue(fromInput, currentValue)\n )\n\n // Must be set before validation\n changedRef.current = true\n\n // Run in sync, before any async operations to avoid lag in UX\n if (itemPath) {\n const iterateValuePath = `/${iterateElementIndex}${\n itemPath && itemPath !== '/' ? itemPath : ''\n }`\n handleChangeIterateContext?.(iterateValuePath, transformedValue)\n }\n\n if (asyncBehaviorIsEnabled) {\n hideError()\n await updateValue(transformedValue)\n } else {\n updateValue(transformedValue)\n }\n\n const getArgs = (): [Value] | [Value, AdditionalEventArgs] => {\n const value = transformers.current.toEvent(\n valueRef.current,\n 'onChange'\n )\n\n return typeof additionalArgs !== 'undefined'\n ? [value, additionalArgs]\n : [value]\n }\n\n if (isAsync(onChange)) {\n addToPool(\n 'onChangeLocal',\n async () => {\n const args = getArgs()\n\n await yieldAsyncProcess({\n name: 'onChangeLocal',\n waitFor: [\n {\n processName: 'validator',\n withStates: ['validating', 'error'],\n withValue: args[0],\n },\n {\n processName: 'onBlurValidator',\n withStates: ['validating', 'error'],\n withValue: args[0],\n },\n {\n processName: 'onChangeContext',\n withStates: ['pending', 'error'],\n withValue: args[0],\n },\n ],\n })\n\n defineAsyncProcess('onChangeLocal')\n\n // Skip sync errors, such as required\n if (!hasError()) {\n // If the value has changed during the async process, we don't want to call the onChange anymore\n setEventResult(await onChange?.apply(this, args))\n } else {\n setEventResult(null)\n }\n },\n true\n )\n } else {\n setEventResult(onChange?.apply(this, getArgs()))\n }\n\n await runPool()\n },\n [\n addToPool,\n asyncBehaviorIsEnabled,\n handleChangeIterateContext,\n hasError,\n hideError,\n itemPath,\n iterateElementIndex,\n onChange,\n runPool,\n defineAsyncProcess,\n setEventResult,\n updateValue,\n yieldAsyncProcess,\n ]\n )\n\n const handleFocus = useCallback(() => setHasFocus(true), [setHasFocus])\n const handleBlur = useCallback(() => setHasFocus(false), [setHasFocus])\n\n // Put props into the surrounding data context\n setPropsDataContext?.(identifier, props)\n\n useMountEffect(() => {\n dataContext?.handleMountField(identifier)\n\n // Run this twice, because when remounting happens, the props where removed by the unmount effect\n setPropsDataContext?.(identifier, props)\n\n validateValue()\n })\n useUnmountEffect(() => {\n dataContext?.handleUnMountField(identifier)\n setFieldErrorDataContext?.(identifier, undefined)\n setFieldError?.(identifier, undefined)\n localErrorRef.current = undefined\n })\n\n useUpdateEffect(() => {\n schemaValidatorRef.current = schema\n ? dataContext.ajvInstance?.compile(schema)\n : undefined\n validateValue()\n }, [schema, validateValue])\n\n useUpdateEffect(() => {\n // Error or removed error for this field from the surrounding data context (by path)\n if (valueRef.current !== externalValue) {\n valueRef.current = externalValue\n validateValue()\n }\n forceUpdate()\n }, [externalValue, validateValue])\n\n useEffect(() => {\n const error = prepareError(dataContextError)\n if (errorChanged(error, contextErrorRef.current)) {\n contextErrorRef.current = error\n forceUpdate()\n }\n }, [dataContextError, prepareError])\n\n useEffect(() => {\n if (path) {\n let value = props.value\n\n // First, look for existing data in the context\n const hasValue = pointer.has(dataContext.data, path)\n const existingValue = hasValue\n ? pointer.get(dataContext.data, path)\n : undefined\n\n // If no data where found in the dataContext, look for shared data\n if (\n dataContext.id &&\n !hasValue &&\n typeof existingValue === 'undefined' &&\n typeof value === 'undefined'\n ) {\n const sharedState = createSharedState(dataContext.id)\n const hasValue = pointer.has(sharedState.data, path)\n if (hasValue) {\n const sharedValue = pointer.get(sharedState.data, path)\n if (sharedValue) {\n value = sharedValue\n }\n }\n }\n\n if (\n !hasValue ||\n (value !== existingValue &&\n // Prevents an infinite loop by skipping the update if the value hasn't changed\n valueRef.current !== existingValue)\n ) {\n // Update the data context when a pointer not exists,\n // but was given initially.\n updateDataValueDataContext?.(path, value)\n validateDataDataContext?.()\n }\n }\n }, [\n dataContext.data,\n dataContext.id,\n path,\n props.value,\n updateDataValueDataContext,\n validateDataDataContext,\n ])\n\n useEffect(() => {\n if (dataContext.showAllErrors) {\n // In case of async validation, we don't want to show existing errors before the validation has been completed\n if (fieldStateRef.current !== 'validating') {\n // If showError on a surrounding data context was changed and set to true, it is because the user clicked next, submit or\n // something else that should lead to showing the user all errors.\n showError()\n forceUpdate()\n }\n }\n }, [dataContext.showAllErrors, showError])\n\n useEffect(() => {\n if (\n dataContext.formState === 'pending' &&\n (validatorRef.current || onBlurValidatorRef.current)\n ) {\n hideError()\n forceUpdate()\n }\n }, [dataContext.formState, hideError])\n\n const onSubmitHandler = useCallback(async () => {\n if (hasError()) {\n return // stop here\n }\n\n addToPool('validator', callValidator, isAsync(validatorRef.current))\n addToPool(\n 'onBlurValidator',\n callOnBlurValidator,\n isAsync(onBlurValidatorRef.current)\n )\n\n await runPool()\n }, [addToPool, callOnBlurValidator, callValidator, hasError, runPool])\n\n // Validate/call validator functions during submit of the form\n useMountEffect(() => {\n dataContext?.setFieldEventListener?.(\n identifier,\n 'onSubmit',\n onSubmitHandler\n )\n })\n\n // Set the error in the field block context if this field is inside a field block\n useMountEffect(() => {\n if (inFieldBlock) {\n if (errorProp) {\n setFieldStateFieldBlock?.({\n identifier,\n type: 'error',\n content: errorProp,\n showInitially: true,\n show: true,\n })\n }\n if (warning) {\n setFieldStateFieldBlock?.({\n identifier,\n type: 'warning',\n content: warning,\n showInitially: true,\n show: true,\n })\n }\n if (info) {\n setFieldStateFieldBlock?.({\n identifier,\n type: 'info',\n content: info,\n showInitially: true,\n show: true,\n })\n }\n\n return () => {\n // Unmount procedure\n if (fieldBlockContext.mountedFieldsRef) {\n fieldBlockContext.mountedFieldsRef.current[identifier] = true\n }\n }\n }\n })\n\n const infoRef = useRef<React.ReactNode>(info)\n const warningRef = useRef<React.ReactNode>(warning)\n useUpdateEffect(() => {\n infoRef.current = info\n warningRef.current = warning\n forceUpdate()\n }, [info, warning])\n\n // - Handle htmlAttributes\n const htmlAttributes = useMemo(() => {\n return Object.keys(props).reduce<AriaAttributes>(\n (acc, cur) => {\n if (cur.startsWith('aria-') || cur.startsWith('data-')) {\n acc[cur] = props[cur]\n }\n return acc\n },\n { ...props.htmlAttributes }\n )\n }, [props])\n\n if (error) {\n htmlAttributes['aria-invalid'] = error ? 'true' : 'false'\n }\n if (required) {\n htmlAttributes['aria-required'] = required ? 'true' : 'false'\n }\n if (inFieldBlock) {\n // Mount the field in the field block context\n if (fieldBlockContext.mountedFieldsRef) {\n fieldBlockContext.mountedFieldsRef.current[identifier] = true\n }\n\n // Check if there are any state IDs to be added to the aria-describedby attribute\n const stateIds = fieldBlockContext.fieldStateIdsRef?.current\n\n if (stateIds) {\n htmlAttributes['aria-describedby'] = combineDescribedBy(\n htmlAttributes,\n [\n error && stateIds.error,\n warning && stateIds.warning,\n info && stateIds.info,\n ].filter(Boolean)\n )\n }\n } else {\n const ids = [\n (error || errorProp) && `${id}-form-status--error`,\n warning && `${id}-form-status--warning`,\n info && `${id}-form-status--info`,\n ].filter(Boolean)\n\n if (ids.length) {\n htmlAttributes['aria-describedby'] = combineDescribedBy(\n htmlAttributes,\n ids\n )\n }\n }\n\n const fieldBlockProps = {\n /** Documented APIs */\n info: !inFieldBlock ? infoRef.current : undefined,\n warning: !inFieldBlock ? warningRef.current : undefined,\n error: !inFieldBlock ? error : undefined,\n\n /** HTML Attributes */\n disabled:\n onBlurValidator &&\n asyncProcessRef.current === 'onBlurValidator' &&\n fieldStateRef.current === 'validating'\n ? true\n : disabled,\n\n /** Internal */\n fieldState: resolveValidatingState(fieldStateRef.current),\n }\n\n const sharedData = useSharedState(id)\n sharedData.set(fieldBlockProps)\n\n return {\n ...props,\n ...fieldBlockProps,\n\n /** HTML Attributes */\n name: props.name || props.path?.replace('/', '') || id,\n autoComplete:\n props.autoComplete ??\n (dataContext.autoComplete === true ? 'on' : undefined),\n\n /** Documented APIs */\n id,\n value: transformers.current.transformIn(\n transformers.current.toInput(valueRef.current)\n ),\n hasError: hasVisibleError,\n isChanged: changedRef.current,\n htmlAttributes,\n setHasFocus,\n handleFocus,\n handleBlur,\n handleChange,\n updateValue,\n forceUpdate,\n\n /** Internal */\n dataContext,\n }\n}\n\nexport interface ReturnAdditional<Value> {\n /** Documented APIs */\n value: Value\n isChanged: boolean\n htmlAttributes: AriaAttributes | DataAttributes\n setHasFocus: (hasFocus: boolean, valueOverride?: unknown) => void\n handleFocus: () => void\n handleBlur: () => void\n handleChange: (\n value: Value,\n additionalArgs?: AdditionalEventArgs\n ) => void\n updateValue: (value: Value) => void\n forceUpdate: () => void\n hasError?: boolean\n\n /** Internal */\n dataContext: ContextState\n fieldState: SubmitState\n}\n\nfunction resolveValidatingState(state: SubmitStateWithValidating) {\n return state === 'validating' ? 'pending' : state\n}\n\nexport function useExternalValue<Value>({\n path,\n itemPath,\n props,\n transformers,\n emptyValue = undefined,\n}: {\n path?: Path\n itemPath?: Path\n props: FieldProps<Value>\n transformers: React.MutableRefObject<{\n fromExternal: FieldProps<Value>['fromExternal']\n }>\n emptyValue?: FieldProps<Value>['emptyValue']\n}) {\n const dataContext = useContext(DataContext)\n const iterateElementContext = useContext(IterateElementContext)\n const inIterate = Boolean(iterateElementContext)\n const { value: iterateElementValue } = iterateElementContext ?? {}\n\n return useMemo(() => {\n if (props.value !== emptyValue) {\n // Value-prop sent directly to the field has highest priority, overriding any surrounding source\n return transformers.current.fromExternal(props.value)\n }\n\n if (inIterate && itemPath) {\n // This field is inside an iterate, and has a pointer from the base of the element being iterated\n if (itemPath === '/') {\n return iterateElementValue\n }\n\n return pointer.has(iterateElementValue, itemPath)\n ? pointer.get(iterateElementValue, itemPath)\n : emptyValue\n }\n\n if (dataContext.data && path) {\n // There is a surrounding data context and a path for where in the source to find the data\n if (path === '/') {\n return dataContext.data\n }\n\n return pointer.has(dataContext.data, path)\n ? pointer.get(dataContext.data, path)\n : emptyValue\n }\n\n return emptyValue\n }, [\n props.value,\n emptyValue,\n inIterate,\n itemPath,\n dataContext.data,\n path,\n transformers,\n iterateElementValue,\n ])\n}\n"],"mappings":"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"}
|
|
@@ -97,6 +97,11 @@ export interface UseFieldProps<Value = unknown, EmptyValue = undefined | unknown
|
|
|
97
97
|
disabled?: boolean;
|
|
98
98
|
readOnly?: boolean;
|
|
99
99
|
autoComplete?: HTMLInputElement['autocomplete'] | HTMLTextAreaElement['autocomplete'];
|
|
100
|
+
/**
|
|
101
|
+
* NB: Undocumented for now.
|
|
102
|
+
* Forwards all possible props to the underlying component.
|
|
103
|
+
*/
|
|
104
|
+
htmlAttributes?: Record<string, unknown>;
|
|
100
105
|
info?: React.ReactNode;
|
|
101
106
|
warning?: React.ReactNode;
|
|
102
107
|
error?: Error | FormError;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","names":["FormError","Error","constructor","message","options","_defineProperty","key","exports","dataValueReadProps","pickDataValueReadProps","props","Object","fromEntries","entries","filter","_ref","includes","omitDataValueReadProps","_ref2","dataValueWriteProps","pickDataValueWriteProps","_ref3","omitDataValueWriteProps","_ref4","pickDataValueReadWriteProps","_ref5","omitDataValueReadWriteProps","_ref6"],"sources":["../../../../src/extensions/forms/types.ts"],"sourcesContent":["import type { SpacingProps } from '../../components/space/types'\nimport type { JSONSchema4, JSONSchema6, JSONSchema7 } from 'json-schema'\nimport type { JSONSchemaType } from 'ajv/dist/2020'\nimport { JsonObject } from 'json-pointer'\nimport { AriaAttributes } from 'react'\n\nexport type * from 'json-schema'\nexport type JSONSchema = JSONSchema7\nexport type AllJSONSchemaVersions =\n | JSONSchema4\n | JSONSchema6\n | JSONSchema7\n | JSONSchemaType<unknown>\nexport { JSONSchemaType }\n\ntype ValidationRule = 'type' | 'pattern' | 'required' | string\ntype MessageValues = Record<string, string>\n\ninterface IFormErrorOptions {\n validationRule?: ValidationRule\n messageValues?: MessageValues\n}\n\n/**\n * Standard error object for Eufemia Forms, extending the built-in error with additional information for data handling\n */\nexport class FormError extends Error {\n /**\n * What validation rule did the error occur based on? (i.e: minLength, required or maximum)\n */\n validationRule?: ValidationRule\n\n /**\n * Replacement values relevant for this error.\n * @example { minLength: 3 } to be able to replace values in a message like \"Minimum {minLength} characters\"\n */\n messageValues?: MessageValues\n\n constructor(message: string, options?: IFormErrorOptions) {\n super(message)\n\n if (options) {\n for (const key in options) {\n this[key] = options[key]\n }\n }\n }\n}\n\n/**\n * Accept any key, so custom message keys can be used\n */\nexport type CustomErrorMessages = Record<string, string>\n\n/**\n * Accept any key, so custom message keys can be used\n * including the path to the field the message is for\n */\nexport type CustomErrorMessagesWithPaths =\n | CustomErrorMessages\n | {\n // eslint-disable-next-line no-unused-vars\n [K in `/${string}`]?: CustomErrorMessages\n }\n\nexport interface DefaultErrorMessages {\n required?: string\n pattern?: string\n}\n\nexport interface DataValueReadProps<Value = unknown> {\n /** JSON Pointer for where the data for this field is located in the source dataset */\n path?: string\n /** JSON Pointer for where the data for this field is located in the source iterate loop element */\n itemPath?: string\n value?: Value\n}\n\nconst dataValueReadProps = ['path', 'itemPath', 'value']\n\nexport function pickDataValueReadProps<Props extends DataValueReadProps>(\n props: Props\n): DataValueReadProps {\n return Object.fromEntries(\n Object.entries(props ?? {}).filter(([key]) =>\n dataValueReadProps.includes(key)\n )\n )\n}\n\nexport function omitDataValueReadProps<Props extends DataValueReadProps>(\n props: Props\n): Omit<DataValueReadProps, keyof DataValueReadProps> {\n return Object.fromEntries(\n Object.entries(props ?? {}).filter(\n ([key]) => !dataValueReadProps.includes(key)\n )\n )\n}\n\nexport interface DataValueWriteProps<\n Value = unknown,\n EmptyValue = undefined | unknown,\n> {\n emptyValue?: EmptyValue\n onFocus?: (value: Value | EmptyValue) => void\n onBlur?: (value: Value | EmptyValue) => void\n onChange?: OnChangeValue<Value, EmptyValue>\n}\n\nconst dataValueWriteProps = ['emptyValue', 'onFocus', 'onBlur', 'onChange']\n\nexport function pickDataValueWriteProps<Props extends DataValueWriteProps>(\n props: Props\n): DataValueWriteProps {\n return Object.fromEntries(\n Object.entries(props ?? {}).filter(([key]) =>\n dataValueWriteProps.includes(key)\n )\n )\n}\n\nexport function omitDataValueWriteProps<Props extends DataValueWriteProps>(\n props: Props\n): Omit<DataValueWriteProps, keyof DataValueWriteProps> {\n return Object.fromEntries(\n Object.entries(props ?? {}).filter(\n ([key]) => !dataValueWriteProps.includes(key)\n )\n )\n}\n\nexport type DataValueReadWriteProps<\n Value = unknown,\n EmptyValue = undefined | unknown,\n> = DataValueReadProps<Value> & DataValueWriteProps<Value, EmptyValue>\n\nexport function pickDataValueReadWriteProps<\n Props extends DataValueReadWriteProps,\n>(props: Props): DataValueReadWriteProps {\n return Object.fromEntries(\n Object.entries(props ?? {}).filter(\n ([key]) =>\n dataValueReadProps.includes(key) ||\n dataValueWriteProps.includes(key)\n )\n )\n}\n\nexport function omitDataValueReadWriteProps<\n Props extends DataValueReadWriteProps,\n>(\n props: Props\n): Omit<DataValueReadWriteProps, keyof DataValueReadWriteProps> {\n return Object.fromEntries(\n Object.entries(props ?? {}).filter(\n ([key]) =>\n !dataValueReadProps.includes(key) &&\n !dataValueWriteProps.includes(key)\n )\n )\n}\n\nexport type ComponentProps = SpacingProps & {\n className?: string\n}\n\nexport type AdditionalEventArgs = Record<string, unknown>\n\nexport type DataValueReadComponentProps<Value = unknown> = ComponentProps &\n DataValueReadProps<Value>\n\nexport type DataValueReadWriteComponentProps<\n Value = unknown,\n EmptyValue = undefined | unknown,\n> = ComponentProps &\n DataValueReadProps<Value> &\n DataValueWriteProps<Value, EmptyValue>\n\nexport type FieldBlockProps = {\n /**\n * The layout of the field block\n */\n layout?: 'horizontal' | 'vertical'\n /**\n * Main label text for the field\n */\n label?: React.ReactNode\n /**\n * A more discreet text displayed beside the label\n */\n labelDescription?: React.ReactNode\n /**\n * Text showing in place of the value if no value is given\n */\n placeholder?: React.ReactNode\n}\n\nexport type FieldBlockWidth =\n | false\n | 'small'\n | 'medium'\n | 'large'\n | 'stretch'\n\nexport interface UseFieldProps<\n Value = unknown,\n EmptyValue = undefined | unknown,\n ErrorMessages extends DefaultErrorMessages = DefaultErrorMessages,\n> extends DataValueReadWriteComponentProps<Value, EmptyValue>,\n AriaAttributes {\n // - HTML Element Attributes\n /**\n * ID added to the actual field component, and linked to the label via for-attribute\n */\n id?: Identifier\n name?: string\n disabled?: boolean\n readOnly?: boolean\n autoComplete?:\n | HTMLInputElement['autocomplete']\n | HTMLTextAreaElement['autocomplete']\n\n // - Used by useFieldProps and FieldBlock\n info?: React.ReactNode\n warning?: React.ReactNode\n error?: Error | FormError\n\n // - Validation\n required?: boolean\n schema?: AllJSONSchemaVersions\n validator?: (\n value: Value | EmptyValue,\n errorMessages?: ErrorMessages\n ) => Error | undefined | void | Promise<Error | undefined | void>\n onBlurValidator?: (\n value: Value | EmptyValue\n ) => Error | undefined | void | Promise<Error | undefined | void>\n validateRequired?: (\n internal: Value,\n {\n emptyValue,\n required,\n isChanged,\n error,\n }: {\n emptyValue: EmptyValue\n required: boolean\n isChanged: boolean\n error: FormError | undefined\n }\n ) => FormError | undefined\n /**\n * Should error messages based on validation be shown initially (from given value-prop or source data)\n * before the user interacts with the field?\n * @default false\n */\n validateInitially?: boolean\n /**\n * Should error messages be shown when touching (like focusing a field and blurring) without having changed\n * the value? So the user did not introduce a new error, but it was invalid based on validation initially.\n */\n validateUnchanged?: boolean\n /**\n * Should validation be done while writing, not just when blurring the field?\n */\n continuousValidation?: boolean\n /**\n * Provide custom error messages for the field\n */\n errorMessages?: ErrorMessages\n\n // - Derivatives\n\n /**\n * Transforms the `value` before its displayed in the field (e.g. input).\n * Public API. Should not be used internally.\n */\n transformIn?: (external: Value | unknown) => Value | unknown\n\n /**\n * Transforms the value before it gets forwarded to the form data object or returned as the onChange value parameter.\n * Public API. Should not be used internally.\n */\n transformOut?: (internal: Value | unknown) => Value\n\n /**\n * Transforms the value given by `handleChange` after `fromInput` and before `updateValue` and `toEvent`. The second parameter returns the current value.\n */\n transformValue?: (value: Value, currentValue?: Value) => Value\n\n /**\n * Transforms the value before it gets returned as the `value`.\n */\n toInput?: (external: Value | unknown) => Value | unknown\n\n /**\n * Transforms the internal value before it gets returned by even callbacks such as `onChange`, `onFocus` and `onBlur`. The second parameter returns the event type: `onChange`, `onFocus`, `onBlur` or `onBlurValidator`.\n */\n toEvent?: (\n internal: Value,\n type: 'onChange' | 'onFocus' | 'onBlur' | 'onBlurValidator'\n ) => Value\n\n /**\n * Transforms the value given by `handleChange` before it is used in the further process flow. Use it to destruct the value form the original event object.\n */\n fromInput?: (external: Value | unknown) => Value\n\n /**\n * Transforms the given props `value` before any other step gets entered.\n */\n fromExternal?: (external: Value) => Value\n}\n\nexport type FieldProps<\n Value = unknown,\n EmptyValue = undefined | unknown,\n ErrorMessages extends DefaultErrorMessages = DefaultErrorMessages,\n> = UseFieldProps<Value, EmptyValue, ErrorMessages> & FieldBlockProps\n\nexport interface FieldHelpProps {\n help?: {\n title?: string\n content?: string\n }\n}\n\nexport interface ValueProps<Value>\n extends DataValueReadComponentProps<Value> {\n /**\n * Field label to show above the data value.\n */\n label?: React.ReactNode\n\n /**\n * Shows the value even if it is empty.\n */\n showEmpty?: boolean\n\n /**\n * Text showing in place of the value if no value is given.\n */\n placeholder?: React.ReactNode\n\n /**\n * For showing the value inline (not as a block element)\n */\n inline?: boolean\n\n /** The max-width of a value block. Defaults to large */\n maxWidth?: 'small' | 'medium' | 'large' | 'auto'\n\n /**\n * Transforms the `value` before its displayed in the field (e.g. input).\n * Public API. Should not be used internally.\n */\n transformIn?: (external: Value | unknown) => Value | unknown\n\n /**\n * Transforms the value before it gets returned as the `value`.\n */\n toInput?: (external: Value | unknown) => Value | unknown\n\n /**\n * Transforms the given props `value` before any other step gets entered.\n */\n fromExternal?: (external: Value) => Value\n}\n\nexport type Path = string\nexport type Identifier = string\n\nexport type SubmitState =\n | 'pending' // Used for async operations\n | 'complete' // Used to hide the submit indicator\n | 'success' // Used for fields\n | 'error' // Used when error is shown\n | 'abort' // Used to abort the state regardless (step change)\n\n/**\n * Provide a error that shows in the FormStatus of a field.\n */\ntype EventStateObjectError = Error\n/**\n * Provide a warning that shows in the FormStatus of a field.\n */\ntype EventStateObjectWarning = React.ReactNode\n/**\n * Provide an info that shows in the FormStatus of a field.\n */\ntype EventStateObjectInfo = React.ReactNode\n\n/**\n * Provide a status that will enforce the form to stay in pending state\n */\ntype EventStateObjectStatus = 'pending'\n\n/**\n * Provide a success state that will show an indicator on the related field label\n */\ntype EventStateObjectSuccess = 'saved'\n\n/**\n * Provide an error or status messages that shows in the FormStatus of a field\n */\nexport type EventStateObjectOr = {\n error?: EventStateObjectError\n warning?: EventStateObjectWarning\n info?: EventStateObjectInfo\n pending?: EventStateObjectStatus\n}\n\nexport type EventStateObjectEitherOr =\n | { error: EventStateObjectError }\n | { warning: EventStateObjectWarning }\n | { info: EventStateObjectInfo }\n | { status: EventStateObjectStatus }\n\nexport type EventStateObject = EventStateObjectOr &\n EventStateObjectEitherOr\n\n/**\n * Provide 'saved' to indicate the data has been saved successfully. Can not be combined with `error`.\n */\nexport type EventStateObjectWithSuccess = EventStateObjectOr & {\n success?: EventStateObjectSuccess\n} & (EventStateObjectEitherOr | { success: EventStateObjectSuccess })\n\n/**\n * Provide an error or status messages that shows in the FormStatus of a field\n */\nexport type EventReturnWithStateObject = Error | EventStateObject\n\nexport type EventReturnWithStateObjectAndSuccess =\n | Error\n | EventStateObjectWithSuccess\n\nexport type OnSubmitParams = {\n /** Will remove browser-side stored autocomplete data */\n resetForm: () => void\n\n /** Will empty the whole internal data set of the form */\n clearData: () => void\n}\n\nexport type OnSubmit<Data = JsonObject> = (\n data: Data,\n { resetForm, clearData }: OnSubmitParams\n) =>\n | EventReturnWithStateObject\n | void\n | Promise<EventReturnWithStateObject | void>\n\nexport type OnChange<Data = unknown> = (\n data: Data\n) =>\n | EventReturnWithStateObjectAndSuccess\n | void\n | Promise<EventReturnWithStateObjectAndSuccess | void>\n\nexport type OnChangeValue<\n Value = unknown,\n EmptyValue = undefined | unknown,\n> = (\n value: Value | EmptyValue,\n additionalArgs?: AdditionalEventArgs\n) =>\n | EventReturnWithStateObjectAndSuccess\n | void\n | Promise<EventReturnWithStateObjectAndSuccess | void>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.js","names":["FormError","Error","constructor","message","options","_defineProperty","key","exports","dataValueReadProps","pickDataValueReadProps","props","Object","fromEntries","entries","filter","_ref","includes","omitDataValueReadProps","_ref2","dataValueWriteProps","pickDataValueWriteProps","_ref3","omitDataValueWriteProps","_ref4","pickDataValueReadWriteProps","_ref5","omitDataValueReadWriteProps","_ref6"],"sources":["../../../../src/extensions/forms/types.ts"],"sourcesContent":["import type { SpacingProps } from '../../components/space/types'\nimport type { JSONSchema4, JSONSchema6, JSONSchema7 } from 'json-schema'\nimport type { JSONSchemaType } from 'ajv/dist/2020'\nimport { JsonObject } from 'json-pointer'\nimport { AriaAttributes } from 'react'\n\nexport type * from 'json-schema'\nexport type JSONSchema = JSONSchema7\nexport type AllJSONSchemaVersions =\n | JSONSchema4\n | JSONSchema6\n | JSONSchema7\n | JSONSchemaType<unknown>\nexport { JSONSchemaType }\n\ntype ValidationRule = 'type' | 'pattern' | 'required' | string\ntype MessageValues = Record<string, string>\n\ninterface IFormErrorOptions {\n validationRule?: ValidationRule\n messageValues?: MessageValues\n}\n\n/**\n * Standard error object for Eufemia Forms, extending the built-in error with additional information for data handling\n */\nexport class FormError extends Error {\n /**\n * What validation rule did the error occur based on? (i.e: minLength, required or maximum)\n */\n validationRule?: ValidationRule\n\n /**\n * Replacement values relevant for this error.\n * @example { minLength: 3 } to be able to replace values in a message like \"Minimum {minLength} characters\"\n */\n messageValues?: MessageValues\n\n constructor(message: string, options?: IFormErrorOptions) {\n super(message)\n\n if (options) {\n for (const key in options) {\n this[key] = options[key]\n }\n }\n }\n}\n\n/**\n * Accept any key, so custom message keys can be used\n */\nexport type CustomErrorMessages = Record<string, string>\n\n/**\n * Accept any key, so custom message keys can be used\n * including the path to the field the message is for\n */\nexport type CustomErrorMessagesWithPaths =\n | CustomErrorMessages\n | {\n // eslint-disable-next-line no-unused-vars\n [K in `/${string}`]?: CustomErrorMessages\n }\n\nexport interface DefaultErrorMessages {\n required?: string\n pattern?: string\n}\n\nexport interface DataValueReadProps<Value = unknown> {\n /** JSON Pointer for where the data for this field is located in the source dataset */\n path?: string\n /** JSON Pointer for where the data for this field is located in the source iterate loop element */\n itemPath?: string\n value?: Value\n}\n\nconst dataValueReadProps = ['path', 'itemPath', 'value']\n\nexport function pickDataValueReadProps<Props extends DataValueReadProps>(\n props: Props\n): DataValueReadProps {\n return Object.fromEntries(\n Object.entries(props ?? {}).filter(([key]) =>\n dataValueReadProps.includes(key)\n )\n )\n}\n\nexport function omitDataValueReadProps<Props extends DataValueReadProps>(\n props: Props\n): Omit<DataValueReadProps, keyof DataValueReadProps> {\n return Object.fromEntries(\n Object.entries(props ?? {}).filter(\n ([key]) => !dataValueReadProps.includes(key)\n )\n )\n}\n\nexport interface DataValueWriteProps<\n Value = unknown,\n EmptyValue = undefined | unknown,\n> {\n emptyValue?: EmptyValue\n onFocus?: (value: Value | EmptyValue) => void\n onBlur?: (value: Value | EmptyValue) => void\n onChange?: OnChangeValue<Value, EmptyValue>\n}\n\nconst dataValueWriteProps = ['emptyValue', 'onFocus', 'onBlur', 'onChange']\n\nexport function pickDataValueWriteProps<Props extends DataValueWriteProps>(\n props: Props\n): DataValueWriteProps {\n return Object.fromEntries(\n Object.entries(props ?? {}).filter(([key]) =>\n dataValueWriteProps.includes(key)\n )\n )\n}\n\nexport function omitDataValueWriteProps<Props extends DataValueWriteProps>(\n props: Props\n): Omit<DataValueWriteProps, keyof DataValueWriteProps> {\n return Object.fromEntries(\n Object.entries(props ?? {}).filter(\n ([key]) => !dataValueWriteProps.includes(key)\n )\n )\n}\n\nexport type DataValueReadWriteProps<\n Value = unknown,\n EmptyValue = undefined | unknown,\n> = DataValueReadProps<Value> & DataValueWriteProps<Value, EmptyValue>\n\nexport function pickDataValueReadWriteProps<\n Props extends DataValueReadWriteProps,\n>(props: Props): DataValueReadWriteProps {\n return Object.fromEntries(\n Object.entries(props ?? {}).filter(\n ([key]) =>\n dataValueReadProps.includes(key) ||\n dataValueWriteProps.includes(key)\n )\n )\n}\n\nexport function omitDataValueReadWriteProps<\n Props extends DataValueReadWriteProps,\n>(\n props: Props\n): Omit<DataValueReadWriteProps, keyof DataValueReadWriteProps> {\n return Object.fromEntries(\n Object.entries(props ?? {}).filter(\n ([key]) =>\n !dataValueReadProps.includes(key) &&\n !dataValueWriteProps.includes(key)\n )\n )\n}\n\nexport type ComponentProps = SpacingProps & {\n className?: string\n}\n\nexport type AdditionalEventArgs = Record<string, unknown>\n\nexport type DataValueReadComponentProps<Value = unknown> = ComponentProps &\n DataValueReadProps<Value>\n\nexport type DataValueReadWriteComponentProps<\n Value = unknown,\n EmptyValue = undefined | unknown,\n> = ComponentProps &\n DataValueReadProps<Value> &\n DataValueWriteProps<Value, EmptyValue>\n\nexport type FieldBlockProps = {\n /**\n * The layout of the field block\n */\n layout?: 'horizontal' | 'vertical'\n /**\n * Main label text for the field\n */\n label?: React.ReactNode\n /**\n * A more discreet text displayed beside the label\n */\n labelDescription?: React.ReactNode\n /**\n * Text showing in place of the value if no value is given\n */\n placeholder?: React.ReactNode\n}\n\nexport type FieldBlockWidth =\n | false\n | 'small'\n | 'medium'\n | 'large'\n | 'stretch'\n\nexport interface UseFieldProps<\n Value = unknown,\n EmptyValue = undefined | unknown,\n ErrorMessages extends DefaultErrorMessages = DefaultErrorMessages,\n> extends DataValueReadWriteComponentProps<Value, EmptyValue>,\n AriaAttributes {\n // - HTML Element Attributes\n /**\n * ID added to the actual field component, and linked to the label via for-attribute\n */\n id?: Identifier\n name?: string\n disabled?: boolean\n readOnly?: boolean\n autoComplete?:\n | HTMLInputElement['autocomplete']\n | HTMLTextAreaElement['autocomplete']\n\n /**\n * NB: Undocumented for now.\n * Forwards all possible props to the underlying component.\n */\n htmlAttributes?: Record<string, unknown>\n\n // - Used by useFieldProps and FieldBlock\n info?: React.ReactNode\n warning?: React.ReactNode\n error?: Error | FormError\n\n // - Validation\n required?: boolean\n schema?: AllJSONSchemaVersions\n validator?: (\n value: Value | EmptyValue,\n errorMessages?: ErrorMessages\n ) => Error | undefined | void | Promise<Error | undefined | void>\n onBlurValidator?: (\n value: Value | EmptyValue\n ) => Error | undefined | void | Promise<Error | undefined | void>\n validateRequired?: (\n internal: Value,\n {\n emptyValue,\n required,\n isChanged,\n error,\n }: {\n emptyValue: EmptyValue\n required: boolean\n isChanged: boolean\n error: FormError | undefined\n }\n ) => FormError | undefined\n /**\n * Should error messages based on validation be shown initially (from given value-prop or source data)\n * before the user interacts with the field?\n * @default false\n */\n validateInitially?: boolean\n /**\n * Should error messages be shown when touching (like focusing a field and blurring) without having changed\n * the value? So the user did not introduce a new error, but it was invalid based on validation initially.\n */\n validateUnchanged?: boolean\n /**\n * Should validation be done while writing, not just when blurring the field?\n */\n continuousValidation?: boolean\n /**\n * Provide custom error messages for the field\n */\n errorMessages?: ErrorMessages\n\n // - Derivatives\n\n /**\n * Transforms the `value` before its displayed in the field (e.g. input).\n * Public API. Should not be used internally.\n */\n transformIn?: (external: Value | unknown) => Value | unknown\n\n /**\n * Transforms the value before it gets forwarded to the form data object or returned as the onChange value parameter.\n * Public API. Should not be used internally.\n */\n transformOut?: (internal: Value | unknown) => Value\n\n /**\n * Transforms the value given by `handleChange` after `fromInput` and before `updateValue` and `toEvent`. The second parameter returns the current value.\n */\n transformValue?: (value: Value, currentValue?: Value) => Value\n\n /**\n * Transforms the value before it gets returned as the `value`.\n */\n toInput?: (external: Value | unknown) => Value | unknown\n\n /**\n * Transforms the internal value before it gets returned by even callbacks such as `onChange`, `onFocus` and `onBlur`. The second parameter returns the event type: `onChange`, `onFocus`, `onBlur` or `onBlurValidator`.\n */\n toEvent?: (\n internal: Value,\n type: 'onChange' | 'onFocus' | 'onBlur' | 'onBlurValidator'\n ) => Value\n\n /**\n * Transforms the value given by `handleChange` before it is used in the further process flow. Use it to destruct the value form the original event object.\n */\n fromInput?: (external: Value | unknown) => Value\n\n /**\n * Transforms the given props `value` before any other step gets entered.\n */\n fromExternal?: (external: Value) => Value\n}\n\nexport type FieldProps<\n Value = unknown,\n EmptyValue = undefined | unknown,\n ErrorMessages extends DefaultErrorMessages = DefaultErrorMessages,\n> = UseFieldProps<Value, EmptyValue, ErrorMessages> & FieldBlockProps\n\nexport interface FieldHelpProps {\n help?: {\n title?: string\n content?: string\n }\n}\n\nexport interface ValueProps<Value>\n extends DataValueReadComponentProps<Value> {\n /**\n * Field label to show above the data value.\n */\n label?: React.ReactNode\n\n /**\n * Shows the value even if it is empty.\n */\n showEmpty?: boolean\n\n /**\n * Text showing in place of the value if no value is given.\n */\n placeholder?: React.ReactNode\n\n /**\n * For showing the value inline (not as a block element)\n */\n inline?: boolean\n\n /** The max-width of a value block. Defaults to large */\n maxWidth?: 'small' | 'medium' | 'large' | 'auto'\n\n /**\n * Transforms the `value` before its displayed in the field (e.g. input).\n * Public API. Should not be used internally.\n */\n transformIn?: (external: Value | unknown) => Value | unknown\n\n /**\n * Transforms the value before it gets returned as the `value`.\n */\n toInput?: (external: Value | unknown) => Value | unknown\n\n /**\n * Transforms the given props `value` before any other step gets entered.\n */\n fromExternal?: (external: Value) => Value\n}\n\nexport type Path = string\nexport type Identifier = string\n\nexport type SubmitState =\n | 'pending' // Used for async operations\n | 'complete' // Used to hide the submit indicator\n | 'success' // Used for fields\n | 'error' // Used when error is shown\n | 'abort' // Used to abort the state regardless (step change)\n\n/**\n * Provide a error that shows in the FormStatus of a field.\n */\ntype EventStateObjectError = Error\n/**\n * Provide a warning that shows in the FormStatus of a field.\n */\ntype EventStateObjectWarning = React.ReactNode\n/**\n * Provide an info that shows in the FormStatus of a field.\n */\ntype EventStateObjectInfo = React.ReactNode\n\n/**\n * Provide a status that will enforce the form to stay in pending state\n */\ntype EventStateObjectStatus = 'pending'\n\n/**\n * Provide a success state that will show an indicator on the related field label\n */\ntype EventStateObjectSuccess = 'saved'\n\n/**\n * Provide an error or status messages that shows in the FormStatus of a field\n */\nexport type EventStateObjectOr = {\n error?: EventStateObjectError\n warning?: EventStateObjectWarning\n info?: EventStateObjectInfo\n pending?: EventStateObjectStatus\n}\n\nexport type EventStateObjectEitherOr =\n | { error: EventStateObjectError }\n | { warning: EventStateObjectWarning }\n | { info: EventStateObjectInfo }\n | { status: EventStateObjectStatus }\n\nexport type EventStateObject = EventStateObjectOr &\n EventStateObjectEitherOr\n\n/**\n * Provide 'saved' to indicate the data has been saved successfully. Can not be combined with `error`.\n */\nexport type EventStateObjectWithSuccess = EventStateObjectOr & {\n success?: EventStateObjectSuccess\n} & (EventStateObjectEitherOr | { success: EventStateObjectSuccess })\n\n/**\n * Provide an error or status messages that shows in the FormStatus of a field\n */\nexport type EventReturnWithStateObject = Error | EventStateObject\n\nexport type EventReturnWithStateObjectAndSuccess =\n | Error\n | EventStateObjectWithSuccess\n\nexport type OnSubmitParams = {\n /** Will remove browser-side stored autocomplete data */\n resetForm: () => void\n\n /** Will empty the whole internal data set of the form */\n clearData: () => void\n}\n\nexport type OnSubmit<Data = JsonObject> = (\n data: Data,\n { resetForm, clearData }: OnSubmitParams\n) =>\n | EventReturnWithStateObject\n | void\n | Promise<EventReturnWithStateObject | void>\n\nexport type OnChange<Data = unknown> = (\n data: Data\n) =>\n | EventReturnWithStateObjectAndSuccess\n | void\n | Promise<EventReturnWithStateObjectAndSuccess | void>\n\nexport type OnChangeValue<\n Value = unknown,\n EmptyValue = undefined | unknown,\n> = (\n value: Value | EmptyValue,\n additionalArgs?: AdditionalEventArgs\n) =>\n | EventReturnWithStateObjectAndSuccess\n | void\n | Promise<EventReturnWithStateObjectAndSuccess | void>\n"],"mappings":"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"}
|
package/cjs/shared/Eufemia.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const version = "10.
|
|
1
|
+
export declare const version = "10.31.0";
|
|
2
2
|
export declare function init(): void;
|
package/cjs/shared/Eufemia.js
CHANGED
|
@@ -5,13 +5,13 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.init = init;
|
|
7
7
|
exports.version = void 0;
|
|
8
|
-
const version = '10.
|
|
8
|
+
const version = '10.31.0';
|
|
9
9
|
exports.version = version;
|
|
10
10
|
function init() {
|
|
11
11
|
if (typeof window !== 'undefined') {
|
|
12
12
|
class Eufemia {
|
|
13
13
|
get version() {
|
|
14
|
-
return '10.
|
|
14
|
+
return '10.31.0';
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
17
|
window.Eufemia = new Eufemia();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Eufemia.js","names":["version","exports","init","window","Eufemia"],"sources":["../../../src/shared/Eufemia.ts"],"sourcesContent":["export const version = '10.
|
|
1
|
+
{"version":3,"file":"Eufemia.js","names":["version","exports","init","window","Eufemia"],"sources":["../../../src/shared/Eufemia.ts"],"sourcesContent":["export const version = '10.31.0'\n\nexport function init() {\n if (typeof window !== 'undefined') {\n class Eufemia {\n get version() {\n return '10.31.0'\n }\n }\n\n window.Eufemia = new Eufemia()\n }\n}\n"],"mappings":";;;;;;;AAAO,MAAMA,OAAO,GAAG,SAAS;AAAAC,OAAA,CAAAD,OAAA,GAAAA,OAAA;AAEzB,SAASE,IAAIA,CAAA,EAAG;EACrB,IAAI,OAAOC,MAAM,KAAK,WAAW,EAAE;IACjC,MAAMC,OAAO,CAAC;MACZ,IAAIJ,OAAOA,CAAA,EAAG;QACZ,OAAO,SAAS;MAClB;IACF;IAEAG,MAAM,CAACC,OAAO,GAAG,IAAIA,OAAO,CAAC,CAAC;EAChC;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
@charset "UTF-8";html{font-size:100%}html:not([data-visual-test]){scroll-behavior:smooth}@supports (-webkit-touch-callout:none){@supports (font:-apple-system-body){html{font:-apple-system-body}}}html[xmlns="http://www.w3.org/1999/xhtml"] a:hover{-webkit-text-decoration:none;text-decoration:none}html[xmlns="http://www.w3.org/1999/xhtml"] .dnb-anchor--active{color:var(--color-mint-green)!important}html[xmlns="http://www.w3.org/1999/xhtml"] .dnb-anchor--contrast:not(:hover){color:var(--color-white)!important}html[xmlns="http://www.w3.org/1999/xhtml"] a.dnb-button--primary{color:var(--color-white)}html[xmlns="http://www.w3.org/1999/xhtml"] ul{list-style:initial}html[xmlns="http://www.w3.org/1999/xhtml"] p{background-color:initial;overflow:initial;text-align:inherit}html[xmlns="http://www.w3.org/1999/xhtml"] i{font-style:italic}html[xmlns="http://www.w3.org/1999/xhtml"] #column_left,html[xmlns="http://www.w3.org/1999/xhtml"] #root{width:100%}html[xmlns="http://www.w3.org/1999/xhtml"] body#dnbLayoutDefault #wrapper,html[xmlns="http://www.w3.org/1999/xhtml"] body#dnbLayoutDefaultStartPage #wrapper{max-width:60rem;width:100%}html[xmlns="http://www.w3.org/1999/xhtml"] #column_content{box-shadow:none}body{margin:0}.dnb-core-style{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:rgba(0,0,0,0);-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;--eufemia-version:"10.
|
|
1
|
+
@charset "UTF-8";html{font-size:100%}html:not([data-visual-test]){scroll-behavior:smooth}@supports (-webkit-touch-callout:none){@supports (font:-apple-system-body){html{font:-apple-system-body}}}html[xmlns="http://www.w3.org/1999/xhtml"] a:hover{-webkit-text-decoration:none;text-decoration:none}html[xmlns="http://www.w3.org/1999/xhtml"] .dnb-anchor--active{color:var(--color-mint-green)!important}html[xmlns="http://www.w3.org/1999/xhtml"] .dnb-anchor--contrast:not(:hover){color:var(--color-white)!important}html[xmlns="http://www.w3.org/1999/xhtml"] a.dnb-button--primary{color:var(--color-white)}html[xmlns="http://www.w3.org/1999/xhtml"] ul{list-style:initial}html[xmlns="http://www.w3.org/1999/xhtml"] p{background-color:initial;overflow:initial;text-align:inherit}html[xmlns="http://www.w3.org/1999/xhtml"] i{font-style:italic}html[xmlns="http://www.w3.org/1999/xhtml"] #column_left,html[xmlns="http://www.w3.org/1999/xhtml"] #root{width:100%}html[xmlns="http://www.w3.org/1999/xhtml"] body#dnbLayoutDefault #wrapper,html[xmlns="http://www.w3.org/1999/xhtml"] body#dnbLayoutDefaultStartPage #wrapper{max-width:60rem;width:100%}html[xmlns="http://www.w3.org/1999/xhtml"] #column_content{box-shadow:none}body{margin:0}.dnb-core-style{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:rgba(0,0,0,0);-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;--eufemia-version:"10.31.0";color:var(--theme-color-body,var(--color-black-80,#333));font-family:var(--font-family-default);font-size:var(--font-size-small);font-style:normal;font-weight:var(--font-weight-basis);line-height:var(--line-height-basis);tab-size:4;-moz-tab-size:4;word-break:break-word}.dnb-core-style *,.dnb-core-style :after,.dnb-core-style :before{background-repeat:no-repeat;box-sizing:border-box}.dnb-core-style :after,.dnb-core-style :before{text-decoration:inherit;vertical-align:inherit}.dnb-core-style hr{height:0;overflow:visible}.dnb-core-style main{display:block}.dnb-core-style nav ol,.dnb-core-style nav ul{list-style:none}.dnb-core-style abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.dnb-core-style b,.dnb-core-style strong{font-weight:bolder}.dnb-core-style code,.dnb-core-style kbd,.dnb-core-style pre,.dnb-core-style samp{font-family:var(--font-family-monospace)}.dnb-core-style ::selection{background-color:#b3d4fc;color:#000;text-shadow:none}.dnb-core-style audio,.dnb-core-style canvas,.dnb-core-style iframe,.dnb-core-style img,.dnb-core-style svg,.dnb-core-style video{vertical-align:middle}.dnb-core-style audio,.dnb-core-style video{display:inline-block}.dnb-core-style audio:not([controls]){display:none;height:0}.dnb-core-style img{border-style:none}.dnb-core-style svg:not([fill]){fill:currentcolor}.dnb-core-style svg:not(:root){overflow:hidden}.dnb-core-style table{border-collapse:collapse}.dnb-core-style button,.dnb-core-style input,.dnb-core-style select,.dnb-core-style textarea{font-family:inherit;font-size:inherit;line-height:inherit}.dnb-core-style button,.dnb-core-style figure,.dnb-core-style input,.dnb-core-style select{margin:0}.dnb-core-style button{overflow:visible;text-transform:none}.dnb-core-style fieldset{padding:.35rem .75rem .625rem}.dnb-core-style input{overflow:visible;word-break:normal}.dnb-core-style legend{color:inherit;display:table;max-width:100%;white-space:normal}.dnb-core-style progress{display:inline-block;vertical-align:baseline}.dnb-core-style select{text-transform:none}.dnb-core-style textarea{overflow:auto;resize:vertical}.dnb-core-style [type=checkbox],.dnb-core-style [type=radio]{padding:0}.dnb-core-style input[type=search]{-webkit-appearance:textfield;appearance:textfield;outline-offset:-2px}.dnb-core-style ::-webkit-inner-spin-button,.dnb-core-style ::-webkit-outer-spin-button{height:auto}.dnb-core-style ::input-placeholder{color:inherit;opacity:.54}.dnb-core-style ::-webkit-search-decoration{-webkit-appearance:none;appearance:none}.dnb-core-style ::-webkit-file-upload-button{background-color:transparent;border:none;font:inherit}.dnb-core-style ::-moz-focus-inner{border-style:none;padding:0}.dnb-core-style details{display:block}.dnb-core-style summary{display:list-item}.dnb-core-style canvas{display:inline-block}.dnb-core-style template{display:none}.dnb-core-style [tabindex],.dnb-core-style a,.dnb-core-style area,.dnb-core-style button,.dnb-core-style input,.dnb-core-style label,.dnb-core-style select,.dnb-core-style summary,.dnb-core-style textarea{touch-action:manipulation}.dnb-core-style [hidden]{display:none}.dnb-core-style [aria-busy=true]{cursor:progress}.dnb-core-style [aria-controls]:not(input){cursor:pointer}.dnb-core-style [aria-disabled=true],.dnb-core-style [disabled]{cursor:not-allowed}.dnb-core-style [aria-hidden=false][hidden]:not(:focus){clip:rect(0,0,0,0);display:inherit;position:absolute}@media print{.dnb-core-style{background-color:#fff;color:#000}}.dnb-core-style .eufemia-theme{color:var(--theme-color-body,var(--color-black-80,#333));font-family:var(--font-family-default);font-size:var(--font-size-small);font-style:normal;font-weight:var(--font-weight-basis);line-height:var(--line-height-basis)}.dnb-no-focus,.dnb-tab-focus,.dnb-tab-focus:focus{outline:none}html[data-whatinput=keyboard] .dnb-tab-focus:focus{--border-color:var(--focus-ring-color);--border-width:var(--focus-ring-width);border-color:transparent;box-shadow:0 0 0 var(--border-width) var(--border-color)}.dnb-mouse-focus,.dnb-mouse-focus:focus{outline:none}html[data-whatinput=mouse] .dnb-mouse-focus:focus{box-shadow:0 0 0 var(--border-width) var(--border-color)}.dnb-focus-ring,html[data-whatinput=mouse] .dnb-mouse-focus:focus{--border-color:var(--focus-ring-color);--border-width:var(--focus-ring-width);border-color:transparent}.dnb-focus-ring{box-shadow:0 0 0 var(--border-width) var(--border-color)!important}.dnb-scrollbar-appearance{-webkit-overflow-scrolling:touch;-ms-overflow-style:auto;scrollbar-color:var(--scrollbar-thumb-color,#888) transparent}@supports not (scrollbar-color:auto){.dnb-scrollbar-appearance::-webkit-scrollbar{background-color:var(--scrollbar-track-color,#eee);border-radius:var(--scrollbar-thumb-width,.5rem)}.dnb-scrollbar-appearance::-webkit-scrollbar:vertical{width:var(--scrollbar-track-width,.5rem)}.dnb-scrollbar-appearance::-webkit-scrollbar:horizontal{height:var(--scrollbar-track-width,.5rem)}.dnb-scrollbar-appearance::-webkit-scrollbar-thumb{background-color:var(--scrollbar-thumb-color,#888);border-radius:var(--scrollbar-thumb-width,.5rem)}.dnb-scrollbar-appearance::-webkit-scrollbar-thumb:hover{background-color:var(--scrollbar-thumb-hover-color,#666)}}.dnb-skip-link{opacity:.3;position:absolute;top:-100vh;transition:opacity .3s ease-out;z-index:0}.dnb-skip-link--active,.dnb-skip-link:focus{background-color:transparent;border:none;border-radius:0;box-shadow:none;color:var(--skip-link-color);font-size:var(--font-size-basis);left:40%;margin:0;outline:none;padding:.5rem 1rem;position:fixed;text-align:center;-webkit-text-decoration:none;text-decoration:none;top:5%;user-select:none;-webkit-user-select:none;white-space:nowrap;z-index:9999}.dnb-skip-link--active:after,.dnb-skip-link:focus:after{background-color:hsla(0,0%,100%,.85);box-shadow:150vw 150vh 0 0 hsla(0,0%,100%,.85);content:"";height:150vh;left:-200vw;position:absolute;top:-200vh;width:150vw;z-index:-2}.dnb-skip-link--active:before,.dnb-skip-link:focus:before{background-color:var(--skip-link-background);border-radius:1.5rem;content:"";height:100%;left:0;outline:none;position:absolute;top:0;width:100%;z-index:-1}html[data-whatinput=mouse] .dnb-skip-link--active:before,html[data-whatinput=mouse] .dnb-skip-link:focus:before{--border-color:var(--focus-ring-color);--border-width:var(--focus-ring-width);border-color:transparent;box-shadow:0 0 0 var(--border-width) var(--border-color)}.dnb-skip-link--active:hover:before,.dnb-skip-link:focus:hover:before{background-color:var(--skip-link-background--hover)}.dnb-skip-link--active:active:before,.dnb-skip-link:focus:active:before{background-color:var(--skip-link-background--active)}.dnb-skip-link--active:focus:not(:active):before,.dnb-skip-link:focus:focus:not(:active):before{outline:none}html[data-whatinput=keyboard] .dnb-skip-link--active:focus:not(:active):before,html[data-whatinput=keyboard] .dnb-skip-link:focus:focus:not(:active):before{--border-color:var(--focus-ring-color);--border-width:var(--focus-ring-width);border-color:transparent;box-shadow:0 0 0 var(--border-width) var(--border-color)}.dnb-skip-link--active:focus,.dnb-skip-link:focus:focus{opacity:1}.dnb-skip-link--active:hover,.dnb-skip-link:focus:hover{background-color:transparent;box-shadow:none;color:var(--skip-link-color--hover)}.dnb-skip-link--active:focus:not(:hover):not(:active),.dnb-skip-link:focus:focus:not(:hover):not(:active){background-color:transparent;box-shadow:none;color:var(--skip-link-color)}.dnb-skip-link--active:active,.dnb-skip-link:focus:active{background-color:transparent;color:var(--skip-link-color--active)}html[data-whatintent=touch] .dnb-skip-link{display:none}.dnb-alignment-helper,.dnb-alignment-helper:before{speak:none;display:inline-block;font-size:var(--font-size-small);height:0;width:0}.dnb-alignment-helper:before{content:""}.dnb-drop-shadow{box-shadow:var(--shadow-default)}.dnb-sr-only{-webkit-touch-callout:none!important;border:0!important;-webkit-clip-path:inset(50%)!important;clip-path:inset(50%)!important;margin:0!important;max-height:1px!important;max-width:1px!important;overflow:hidden!important;padding:0!important;pointer-events:none!important;position:absolute!important;-webkit-user-select:none!important;user-select:none!important;white-space:nowrap!important}.dnb-suffix{font-size:var(--font-size-basis);line-height:var(--line-height-basis);padding-left:.5rem;word-break:normal}
|