jamis
Version:
一种支持通过JSON配置方式生成页面的组件库
183 lines (182 loc) • 3.78 kB
TypeScript
import type { ActionObject } from 'jamis-core';
import type { BadgeObject, BaseSchema, SchemaCollection, SchemaTpl, StaticControlSchema, StaticControlSchemaBase } from '../../types';
export * from './_Alert';
export * from './_Custom';
export * from './_Json';
export * from './_Remark';
/**
* tpl 组件
*/
export interface TplSchema extends BaseSchema {
type: 'tpl' | 'html';
/** 标题 */
title?: string;
tpl?: SchemaTpl | SchemaTpl[];
html?: SchemaTpl | SchemaTpl[];
text?: SchemaTpl | SchemaTpl[];
raw?: string;
/**
* 是否内联显示?
*/
inline?: boolean;
/**
* 角标
*/
badge?: BadgeObject;
/** 占位符 */
placeholder?: string;
icon?: string;
wrapperComponent?: React.ElementType;
}
export interface StaticTplSchema extends Omit<TplSchema, 'type'>, StaticControlSchemaBase {
type: 'static-html' | 'static-tpl';
}
/**
* Divider 分割线组件。
*
*/
export interface DividerSchema extends BaseSchema {
type: 'divider';
lineStyle?: 'dashed' | 'solid';
title?: SchemaTpl;
}
/**
* Each 循环功能组件。
*
*/
export interface EachSchema extends BaseSchema {
/**
* 指定为each展示类型
*/
type: 'each';
/**
* 关联字段名
*/
name?: string;
/**
* 关联字段名 支持数据映射
*/
source?: string;
items?: SchemaCollection;
placeholder?: string;
value?: any;
}
/**
* Link 链接展示控件。
*
*/
export interface LinkSchema extends BaseSchema {
/**
* 指定为 link 链接展示控件
*/
type: 'link';
/**
* 是否新窗口打开。
*/
blank?: boolean;
/**
* 链接地址
*/
href?: string;
/**
* 链接内容,如果不配置将显示链接地址。
*/
body?: SchemaTpl;
/**
* 角标
*/
badge?: BadgeObject;
/**
* a标签原生target属性
*/
htmlTarget?: string;
/**
* 图标
*/
icon?: string;
/**
* 右侧图标
*/
rightIcon?: string;
}
/**
* Plain 纯文本组件
*
*/
export interface PlainSchema extends BaseSchema, StaticControlSchemaBase {
/**
* 指定为模板组件。
*
*
*/
type: 'plain' | 'text';
tpl?: SchemaTpl;
text?: SchemaTpl;
/**
* 是否内联显示?
*/
inline?: boolean;
/**
* 占位符
* @deprecated -
*/
placeholder?: string;
/**
* 后缀属性, 这个属性应该所有的formitem都具备
*/
addOn?: (ActionObject | StaticControlSchema | BaseSchema) & {
position?: 'left' | 'right';
label?: string;
icon?: string;
className?: string;
};
}
export interface StaticPlainSchema extends Omit<PlainSchema, 'type'> {
type: 'static-text' | 'static-plain';
}
/**
* 状态展示控件。
*
*/
export interface StatusSchema extends BaseSchema {
/**
* 指定为状态展示控件
*/
type: 'status';
/**
* 占位符
* @default -
*/
placeholder?: string;
/**
* 状态图标映射关系
* @default {
* 0: 'svg-fail',
* 1: 'svg-success',
* success: 'svg-success',
* pending: 'rolling',
* fail: 'svg-fail',
* queue: 'svg-warning',
* schedule: 'svg-schedule'
* }
*/
map?: {
[propName: string]: string;
};
/**
* 文字映射关系
*
* @default {
* success: '成功',
* pending: '运行中',
* fail: '失败',
* queue: '排队中',
* schedule: '调度中'
* }
*/
labelMap?: {
[propName: string]: string;
};
/** 默认值 */
value?: number | string;
}