import { ResponsiveColumn } from 'element-ui/types/col'; import { AvueAlignment, AvueComponentSize, Obj } from '../global'; import { DicHttpProps } from '../variable'; import { AvueFormColumn } from './column'; /** 表单组件基本配置属性 */ export interface FormBaseOption { /** 视图类型 */ boxType: 'add' | 'edit' | 'view'; /** 是否详情模式, 默认: false */ detail: boolean; /** * 详情模式优先级, 默认: 'global' * @description 当detail同时存在全局配置和列配置时, global表示优先取全局detail, column表示优先取列detail * @since 2.11.12 */ detailPriority: 'global' | 'column'; /** 是否禁用模式, 默认: false */ disabled: boolean; /** 是否只读模式, 默认: false */ readonly: boolean; /** 表单宽度 */ formWidth: number | string; /** 是否在输入框中显示校验结果反馈图标, 默认: false */ statusIcon: boolean; /** 是否卡片效果, 默认: false */ card: boolean; /** 是否以行内形式展示校验信息, 默认: false */ inlineMessage: boolean; /** * 重置时不清空的字段, 默认: [] * @since 2.7.7 */ clearExclude: string[]; /** 是否回车提交表单, 默认: false */ enter: boolean; /** 项之间的间间距, 默认: 10 */ gutter: number; /** 表单的label宽度, 默认: 80 */ labelWidth: string | number; /** 表单的label位置, 默认: 'left' */ labelPosition: 'left' | 'top' | 'right'; /** 标题的后缀, 默认: ':' */ labelSuffix: string; /** 表单全局控件的大小, 默认: 'medium' */ size: AvueComponentSize; /** 是否以tab形式展示group, 默认: false */ tabs: boolean; /** 栅列, 默认: 12 */ span: number; /** 输入时是否触发表单的校验,仅对input类型表单项生效, 默认: false */ validateEvent: boolean; /** 默认的接口请求配置 */ propsHttp: DicHttpProps; } /** 表单组件菜单栏配置属性 */ export interface FormMenuOption { /** 是否显示按钮栏, 默认: true */ menuBtn: boolean; /** 按钮栏的span, 可选值为1-24, 默认: 24 */ menuSpan: number; /** 按钮的位置, 默认: 'center' */ menuPosition: AvueAlignment; /** 是否显示提交按钮, 默认: true */ submitBtn: boolean; /** 提交按钮的大小, 默认: 'medium' */ submitSize: AvueComponentSize; /** 提交按钮的文字, 默认: '提交' */ submitText: string; /** * 提交按钮图标 , 默认: 'el-icon-check' * @since v2.5.1 */ submitIcon: string; /** 是否显示清空按钮, 默认: true */ emptyBtn?: boolean; /** 清空按钮的大小, 默认: 'medium' */ emptySize: AvueAlignment; /** 清空按钮的文字, 默认: '清空' */ emptyText: string; /** 清空按钮图标, 默认: 'el-icon-delete' */ emptyIcon: string; /** 是否显示表单打印按钮, 默认: false */ printBtn: boolean; /** * 是否显示模拟数据按钮, 默认: false * @description 需要导入额外的包(一定要放到index.html中的head标签里) * ``` * * ``` */ mockBtn: boolean; } /** 表单分组配置 */ export interface FormGroupOption { /** 分组名称 */ label: string; /** 分组名称宽度, 默认: 90 */ labelWidth?: number; /** 分组字段 */ prop?: string; /** 分组图标 */ icon?: string; /** 是否分组折叠, 默认: true */ arrow?: boolean; /** 分组默认叠起, 默认: false */ collapse?: boolean; /** * ≥768px 响应式栅格数或者栅格属性对象, 默认: 12 * @since 2.8.12 */ smSpan?: ResponsiveColumn; /** * <768px 响应式栅格数或者栅格属性对象, 默认: 24 * @since 2.9.12 */ xsSpan?: ResponsiveColumn; /** * <768px 响应式栅格数或者栅格属性对象, 默认: 24 * @since 2.8.12 * @deprecated 2.9.12 */ xmSpan?: ResponsiveColumn; /** * 栅格左侧的间隔格数, 默认: 0 * @since 2.8.12 */ offset?: number; /** 是否显示分组, 默认: true */ display?: boolean; /** 分组下的字段配置 */ column: AvueFormColumn[]; } /** * 表单项配置 * @description 表单的渲染顺序从上到下为column -> group -> footer */ export interface FormColumnOption { /** 分组配置 */ group?: FormGroupOption[]; /** 字段配置 */ column?: AvueFormColumn[]; /** * 底部字段配置 * @description 该字段等同于在group最后push一个无label分组在tabs模式下效果更糟,因此内部改版中删除该字段 * @since 2.9.9 * @deprecated 2.9.12(改) */ footer?: AvueFormColumn[]; } /** 表单全局事件 */ export interface FormEvents { /** * 表单全局事件源码 * @since 2.9.12(伪) */ _events?: { /** 表单加载完成后执行事件字符串源码 */ didMount?: string; /** 表单提交事件字符串源码 */ submit?: string; }; /** * 表单全局事件 * @since 2.9.12(伪) */ events?: { /** 表单加载完成后执行事件 */ didMount?: () => void; /** * 表单提交事件 * @param form 表单数据 * @param hide 取消表单提交状态 * @since 2.11.18 */ submit?: (form: T, hide: () => void) => void; }; } /** 表单组件配置属性 */ export type FormOption = Partial & Partial & FormColumnOption & FormEvents & Obj;