UNPKG

@manojadams/metaforms

Version:
75 lines (74 loc) 3.97 kB
import EventEmitter from "eventemitter3"; import React from "react"; import { Page, Rest } from "."; import { IMetaForm, IForm, IFormField, IError, IDepdendencyItem, IElementTypes, IFnTypes, TCondition } from "./common-interface"; import { IConfig, IField, IOption, ISchema, ITheme, IURLLoaderConfig, TParam } from "./model-interfaces"; export default class MetaForm implements IMetaForm { private schema; private eventEmitter; theme: ITheme; form: IForm; rest: Rest; page: Page; icons: IElementTypes | undefined; fns: IFnTypes | undefined; errorHandler: Function | undefined; controls: IElementTypes | undefined; controlElements: Record<string, React.FunctionComponent> | undefined; constructor(schema: ISchema, eventEmitter: EventEmitter); init(): void; /** page functions */ getPage(): Page; setPage(page: Page): void; updatePage(pageNumber: number): void; setEndOfPage(pageNumber: number | undefined): void; resetEndOfPage(): void; /** event emitter functions */ emit(eventType: string, payload: any): void; listener(eventType: string, fn: (...args: any[]) => void): void; removeListener(event: string, fn?: (...args: any[]) => void): void; destroy(): void; /** icons */ getIcon(type: string): JSX.Element | ""; setIcons(icons: IElementTypes): void; /** rest functions */ getRestConfig(): IConfig; api(type: string, url: string, params?: Array<TParam>, currentValue?: any, sectionName?: string, isRemote?: boolean): Promise<any>; getData(config: IURLLoaderConfig, val: any, section: string, eventType?: string): Promise<Array<IOption>>; /** Theme functions */ getThemeProp(themeName: string, prop: string): any; getSection(pageNumber: number): {} | null; setSection(section: string): void; initField(section: string, field: IField): void; getField(section: string, field: string): IFormField; setField(section: string, field: string, value: any): void; updateField(section: string, field: string, value: any): void; getFieldProp(section: string, field: string, prop: string): any; setFieldProp(section: string, field: string, prop: any, propVal: any): void; getFieldDisplay(section: string, field: string): any; setFieldDisplay(section: string, field: string, display: boolean): void; getFieldOptions(section: string, field: string): any; setFieldOptions(section: string, field: string, options: Array<any> | undefined): void; setFieldDisabled(section: string, field: string, disabled: boolean): void; getDependencies(section: string, field: string): any; getChangeEvents(section: string, field: string): any; applyDependencies(section: string, fields: Array<IField>): void; handleDependencies(section: string, fieldName: string, value: any, fieldDisplayed: boolean): Promise<unknown>; handleChangeEvents(gSection: string, gField: string, fieldValue?: any, fieldRef?: any): void; setDisplayTypeFieldProp(displayType: string, section: string, field: string, resultOptions: Array<any>, dependency: IDepdendencyItem): void; performDeepUpdate(section: string, field: string, value: any, ref: any): void; /** validation functions */ setError(section: string, field: string, error: IError): void; validate(): boolean; parseCondition(condition: Array<TCondition>, section: string): any; /** Function mapper */ getFn(fn: string): Function | null; setFns(fns: IFnTypes): void; /** Error handler */ handleError(error: any, section: string, field: string): void; setErrorHandler(errorHandler: Function): void; getControl(displayType: string): JSX.Element; setControls(controls: IElementTypes): void; getControlElements(displayType: string): any; setControlElements(controlElements: Record<string, React.FunctionComponent>): void; }