export interface FieldConfiguration { name: string; io?: FieldIoConfiguration; fetch?: FieldFetchConfiguration; behavior?: FieldBehaviorConfiguration; } export interface FieldIoConfiguration { event?: string; get?: (htmlElement: HTMLElement | NodeList) => any; set?: (htmlElement: HTMLElement | NodeList, value: any) => void; } export interface FieldFetchConfiguration { method?: string; makeUrl?: (data: object) => string; makeBody?: (data: object) => any; fullFetchConfig?: object; } export interface FieldBehaviorConfiguration { clear?: (htmlElement: HTMLElement | NodeList) => void; beforeUpdate?: (htmlElement: HTMLElement | NodeList, data: object, subjectName: string | null) => boolean; updateStatus?: (htmlElement: HTMLElement | NodeList, data: object, subjectName: string | null) => void; afterUpdate?: (htmlElement: HTMLElement | NodeList, data: object, subjectName: string | null) => boolean; } export interface SelectConfiguration extends FieldConfiguration { select?: SelectSelectConfiguration; } export interface SelectSelectConfiguration { postProcessData?: (htmlElement: Element | NodeList, data: object[]) => object[]; saveData?: (htmlElement: Element | NodeList, data: object[]) => void; clearOnParentVoid?: boolean; } export interface CheckboxConfiguration extends FieldConfiguration { checkbox?: CheckboxCheckboxConfiguration; } export interface CheckboxCheckboxConfiguration { booleanValue?: boolean; }