diff options
Diffstat (limited to 'packages/web-util/src/forms/useField.ts')
-rw-r--r-- | packages/web-util/src/forms/useField.ts | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/packages/web-util/src/forms/useField.ts b/packages/web-util/src/forms/useField.ts index bf94d2f5d..651778628 100644 --- a/packages/web-util/src/forms/useField.ts +++ b/packages/web-util/src/forms/useField.ts @@ -1,10 +1,10 @@ import { useContext, useState } from "preact/compat"; -import { FormContext, InputFieldState } from "./FormProvider.js"; +import { BehaviorResult, FormContext, InputFieldState } from "./FormProvider.js"; export interface InputFieldHandler<Type> { value: Type; onChange: (s: Type) => void; - state: InputFieldState; + state: BehaviorResult; isDirty: boolean; } @@ -16,6 +16,7 @@ export function useField<T extends object, K extends keyof T>( value: formValue, computeFormState, onUpdate: notifyUpdate, + readOnly: readOnlyForm, } = useContext(FormContext); type P = typeof name; @@ -26,14 +27,15 @@ export function useField<T extends object, K extends keyof T>( // console.log("USE FIELD", String(name), formValue.current, fieldValue); const [currentValue, setCurrentValue] = useState<any | undefined>(fieldValue); const fieldState = - readField<Partial<InputFieldState>>(formState, String(name)) ?? {}; + readField<Partial<BehaviorResult>>(formState, String(name)) ?? {}; //compute default state const state = { - disabled: fieldState.disabled ?? false, - readonly: fieldState.readonly ?? false, + disabled: readOnlyForm ? true : (fieldState.disabled ?? false), + readonly: readOnlyForm ? true : (fieldState.readonly ?? false), hidden: fieldState.hidden ?? false, error: fieldState.error, + help: fieldState.help, elements: "elements" in fieldState ? fieldState.elements ?? [] : [], }; |