diff options
Diffstat (limited to 'packages/web-util/src/forms/useField.ts')
-rw-r--r-- | packages/web-util/src/forms/useField.ts | 30 |
1 files changed, 15 insertions, 15 deletions
diff --git a/packages/web-util/src/forms/useField.ts b/packages/web-util/src/forms/useField.ts index eed8cebea..fad53ebac 100644 --- a/packages/web-util/src/forms/useField.ts +++ b/packages/web-util/src/forms/useField.ts @@ -8,15 +8,25 @@ export interface InputFieldHandler<Type> { isDirty: boolean; } +/** + * @depreacted removing this so we don't depend on context to create a form + * @param name + * @returns + */ export function useField<T extends object, K extends keyof T>( name: K, -): InputFieldHandler<T[K]> { +): InputFieldHandler<T[K]> | undefined { + const ctx = useContext(FormContext); + if (!ctx) { + //no context, can't be used + return undefined; + } const { value: formValue, computeFormState, onUpdate: notifyUpdate, readOnly: readOnlyForm, - } = useContext(FormContext); + } = ctx type P = typeof name; type V = T[P]; @@ -24,7 +34,7 @@ export function useField<T extends object, K extends keyof T>( const fieldValue = readField(formValue.current, String(name)) as V; // console.log("USE FIELD", String(name), formValue.current, fieldValue); - const [currentValue, setCurrentValue] = useState<any | undefined>(fieldValue); + // const [currentValue, setCurrentValue] = useState<any | undefined>(fieldValue); const fieldState = readField<Partial<FieldUIOptions>>(formState, String(name)) ?? {}; @@ -38,7 +48,7 @@ export function useField<T extends object, K extends keyof T>( }; function onChange(value: V): void { - setCurrentValue(value); + // setCurrentValue(value); formValue.current = setValueDeeper( formValue.current, String(name).split("."), @@ -52,7 +62,7 @@ export function useField<T extends object, K extends keyof T>( return { value: fieldValue, onChange, - isDirty: currentValue !== undefined, + isDirty: fieldValue !== undefined, state, }; } @@ -67,18 +77,8 @@ export function useField<T extends object, K extends keyof T>( function readField<T>( object: any, name: string, - debug?: boolean, ): T | undefined { return name.split(".").reduce((prev, current) => { - if (debug) { - console.log( - "READ", - name, - prev, - current, - prev ? prev[current] : undefined, - ); - } return prev ? prev[current] : undefined; }, object); } |