aboutsummaryrefslogtreecommitdiff
path: root/packages/web-util/src/forms/useField.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/web-util/src/forms/useField.ts')
-rw-r--r--packages/web-util/src/forms/useField.ts12
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 ?? [] : [],
};