diff options
Diffstat (limited to 'packages/exchange-backoffice-ui/src/handlers/useField.ts')
-rw-r--r-- | packages/exchange-backoffice-ui/src/handlers/useField.ts | 31 |
1 files changed, 21 insertions, 10 deletions
diff --git a/packages/exchange-backoffice-ui/src/handlers/useField.ts b/packages/exchange-backoffice-ui/src/handlers/useField.ts index 60e65f435..bf94d2f5d 100644 --- a/packages/exchange-backoffice-ui/src/handlers/useField.ts +++ b/packages/exchange-backoffice-ui/src/handlers/useField.ts @@ -1,9 +1,5 @@ -import { TargetedEvent, useContext, useState } from "preact/compat"; -import { - FormContext, - InputArrayFieldState, - InputFieldState, -} from "./FormProvider.js"; +import { useContext, useState } from "preact/compat"; +import { FormContext, InputFieldState } from "./FormProvider.js"; export interface InputFieldHandler<Type> { value: Type; @@ -21,11 +17,13 @@ export function useField<T extends object, K extends keyof T>( computeFormState, onUpdate: notifyUpdate, } = useContext(FormContext); + type P = typeof name; type V = T[P]; const formState = computeFormState ? computeFormState(formValue.current) : {}; 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 fieldState = readField<Partial<InputFieldState>>(formState, String(name)) ?? {}; @@ -66,10 +64,23 @@ export function useField<T extends object, K extends keyof T>( * @param name * @returns */ -function readField<T>(object: any, name: string): T | undefined { - return name - .split(".") - .reduce((prev, current) => prev && prev[current], object); +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); } function setValueDeeper(object: any, names: string[], value: any): any { |