UNPKG

@tomino/dynamic-form-semantic-ui

Version:

Semantic UI form renderer based on dynamic form generation

69 lines (68 loc) 2.74 kB
import { JSONSchema, FormElement, DataSet, EditorComponentCatalogue } from '@tomino/dynamic-form'; import { IMSTMap, ISimpleType } from 'mobx-state-tree'; import { JSONSchemaBase } from '@tomino/dynamic-form'; import { SchemaRecord } from './editor_types'; declare type FormElementType = DataSet<FormElement & { id: string; }>; export interface FormDataSet<P = any, C = any, CH = any> extends FormElementType { elements: FormDataSet<CH, any>[]; pages: FormDataSet[]; props: P; controlProps: C; parent: FormDataSet<any, CH>; isSelected: boolean; moveElement(from: FormDataSet, to: FormDataSet, index?: number): void; } declare type SchemaElementType = DataSet<JSONSchemaBase>; export interface SchemaDataSet extends SchemaElementType { id: string; required: string[]; parent: SchemaDataSet; properties: IMSTMap<ISimpleType<SchemaDataSet>>; items: SchemaDataSet; definitions: IMSTMap<ISimpleType<SchemaDataSet>>; reference?: SchemaDataSet; imports: IMSTMap<ISimpleType<SchemaDataSet>>; oneOf: SchemaDataSet[]; allOf: SchemaDataSet[]; anyOf: SchemaDataSet[]; not: SchemaDataSet; changeType(value: string, prev: string): void; } export declare type StateDataSet = { readonly selectedSchema: SchemaDataSet; readonly selectedSchemaName: string; readonly selectedElement: FormDataSet; readonly selectedForm: FormDataSet; readonly selectedLeftPane: LeftPane; setForm(element: FormDataSet): void; setSchema(schema: SchemaDataSet, name?: string): void; setElement(element: FormDataSet, schema: SchemaDataSet): void; deleteActiveSchema(): void; deleteActiveElement(): void; changeLeftPane(view: LeftPane): void; }; declare type LeftPane = 'pages' | 'data' | 'components' | 'outline' | 'views' | 'all'; export interface ProjectDataSet { form: FormDataSet; schema: SchemaDataSet; state: StateDataSet; renameSchema(name: string, rootSchema: SchemaDataSet): string; } export declare function searchJsonSchema(func: (item: JSONSchema) => any, schema: JSONSchema): any; export declare function searchSchema(schema: SchemaDataSet, func: (item: SchemaDataSet) => any): any; export declare function searchForm(form: FormDataSet, func: (item: FormDataSet) => any): any; declare type IState = { editorCatalogue: EditorComponentCatalogue; selectedParentSchema: SchemaDataSet; selectedSourcePath: string; recomputeDataBounce(): void; types: SchemaRecord[]; schema: SchemaDataSet; form: FormDataSet; project: ProjectDataSet; state: StateDataSet; }; export declare function prepareStores(context: IState): (form: FormElement<any, any>, schema: JSONSchema) => ProjectDataSet; export {};