import type { GridSizeUnit, GridSizeUnitStr, SchemaBoolean, SchemaExpression } from 'jamis-core'; import type { FormBaseControlSchema, FormControlProps, FormHorizontal, FormMode, FormSchema, IFormItemStore, IFormStore, SchemaClassName, SchemaCollection, SchemaObject } from '../types'; /** * Group 表单集合组件,能让多个表单在一行显示 */ export interface FormControlSchema extends FormBaseControlSchema { type: 'control'; /** * FormItem 内容 */ body: SchemaCollection; } /** * InputGroup * */ export interface InputGroupControlSchema extends FormBaseControlSchema { type: 'input-group'; /** * @deprecated 已过期, 请使用 body */ controls?: SchemaCollection; /** FormItem 集合 */ body: SchemaCollection; } export interface InputGroupProps extends FormControlProps { body: Array; formItem?: IFormItemStore; formStore: IFormStore; } export type GroupSubControl = SchemaObject & { /** * 列类名 */ columnClassName?: SchemaClassName; /** * 宽度占用比率。在某些容器里面有用比如 group */ columnRatio?: GridSizeUnit; columnRatioExpr?: GridSizeUnit | SchemaExpression | Record; mode?: FormMode; modeExpr?: SchemaExpression; }; /** * Group 表单集合组件,能让多个表单在一行显示 * */ export interface GroupControlSchema extends FormBaseControlSchema { type: 'group'; /** * FormItem 集合 */ body: Array; /** * 间隔 */ gap?: 'xs' | 'sm' | 'normal'; /** * 配置时垂直摆放还是左右摆放。 */ direction?: 'horizontal' | 'vertical'; /** * 配置子表单项默认的展示方式。 */ subFormMode?: FormMode; /** * 如果是水平排版,这个属性可以细化水平排版的左右宽度占比。 */ subFormHorizontal?: FormHorizontal; /** * 一行分配多少列, 只有在horizontal情况下才有用 */ columnCount?: FormSchema['columnCount']; /** * 每一项的样式类 */ itemClassName?: SchemaClassName; }