@tomino/dynamic-form-semantic-ui
Version:
Semantic UI form renderer based on dynamic form generation
69 lines (68 loc) • 2.74 kB
TypeScript
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 {};