snowy-designer
Version:
基于Epic-Designer-Pro版本的设计器,可视化开发页面表单
83 lines (82 loc) • 2.4 kB
TypeScript
import { FormItemRule } from '../../ui-kit/panel-ui/src/index/src/components/ERuleEditor/types';
import { AttributeConfig, ComponentConfigModel, GlobalApiConfig } from './index';
import { ActionsModel } from '../../utils/src/index';
import { TableJson } from './designer';
export interface ComponentStatus {
invalid?: boolean;
lock?: boolean;
}
export interface ComponentSchema {
[fieldName: string]: any;
bindable?: boolean;
children?: ComponentSchema[];
componentProps?: any;
dataSource?: any;
editData?: any;
field?: string;
id?: string;
input?: boolean;
label?: string;
noFormItem?: boolean;
on?: {
[eventName: string]: ActionsModel[];
};
onChange?: (params: {
componentAttributes?: AttributeConfig[];
tableJson?: TableJson;
value: any;
values: ComponentSchema;
}) => void;
rules?: FormItemRule[];
show?: ((params: {
tableJson?: TableJson;
values: ComponentSchema;
}) => boolean) | boolean;
slotName?: string;
slots?: {
[slotName: string]: ComponentSchema[];
};
status?: ComponentStatus;
type: string;
}
export interface FormConfig {
customStyle?: string;
hideRequiredMark?: boolean;
labelCol: any;
labelLayout: any;
labelWidth?: string;
layout?: string;
wrapperCol: any;
}
export type FormDataModel = Record<string, any>;
export interface PageSchema {
canvas?: {
height?: string;
mode?: 'desktop' | 'mobile' | 'pad' | 'pc' | 'tablet';
width?: string;
};
globalApiConfig?: GlobalApiConfig;
schemas: ComponentSchema[];
script?: string;
}
export interface DesignerState {
disabledHover: boolean;
hoverNode: ComponentSchema | null;
matched: ComponentSchema[];
selectedNode: ComponentSchema | null;
selectedNodeConfig: ComponentConfigModel | null;
}
export interface Designer {
handleDelete: () => void;
handleDuplicate: () => void;
handleImported: (data: PageSchema) => void;
handleToggleDeviceMode: (mode: string) => void;
pageSchema: PageSchema;
preview: () => void;
reset: () => void;
save: () => void;
setDisabledHover: (disabledHover?: boolean) => void;
setHoverNode: (schema: ComponentSchema | null) => void;
setSelectedNode: (schema?: ComponentSchema) => void;
state: DesignerState;
}