jamis
Version:
一种支持通过JSON配置方式生成页面的组件库
79 lines (78 loc) • 2.2 kB
TypeScript
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<any>;
formItem?: IFormItemStore;
formStore: IFormStore;
}
export type GroupSubControl = SchemaObject & {
/**
* 列类名
*/
columnClassName?: SchemaClassName;
/**
* 宽度占用比率。在某些容器里面有用比如 group
*/
columnRatio?: GridSizeUnit;
columnRatioExpr?: GridSizeUnit | SchemaExpression | Record<GridSizeUnitStr, boolean | SchemaBoolean>;
mode?: FormMode;
modeExpr?: SchemaExpression;
};
/**
* Group 表单集合渲染器,能让多个表单在一行显示
*
*/
export interface GroupControlSchema extends FormBaseControlSchema {
type: 'group';
/**
* FormItem 集合
*/
body: Array<GroupSubControl>;
/**
* 间隔
*/
gap?: 'xs' | 'sm' | 'normal';
/**
* 配置时垂直摆放还是左右摆放。
*/
direction?: 'horizontal' | 'vertical';
/**
* 配置子表单项默认的展示方式。
*/
subFormMode?: FormMode;
/**
* 如果是水平排版,这个属性可以细化水平排版的左右宽度占比。
*/
subFormHorizontal?: FormHorizontal;
/**
* 一行分配多少列, 只有在horizontal情况下才有用
*/
columnCount?: FormSchema['columnCount'];
/**
* 每一项的样式类
*/
itemClassName?: SchemaClassName;
}