jamis
Version:
一种支持通过JSON配置方式生成页面的组件库
143 lines (142 loc) • 3.29 kB
TypeScript
import type { GridSizeUnit } from 'jamis-core';
import type { BaseSchema, FormHorizontal, SchemaClassName, SchemaCollection, SchemaObject } from '../types';
export type GridDevice =
/**
* 屏幕 < 768
* @deprecated 用`m`替代
*/
'xs'
/**
* 屏幕 < 768
* @deprecated 用`m`替代
*/
| 'sm' | 'm'
/**
* 屏幕 >= 768
*
* @deprecated 用`pc`替代
*/
| 'md'
/**
* 屏幕 >= 768
*/
| 'pc' | 'lg' | 'xl';
export interface GridColumnObject extends Partial<Record<GridDevice, GridSizeUnit | 'auto'>> {
/**
* 垂直对齐方式
*/
valign?: 'top' | 'middle' | 'bottom' | 'between';
/**
* 配置子表单项默认的展示方式。
*/
mode?: 'normal' | 'inline' | 'horizontal';
/**
* 如果是水平排版,这个属性可以细化水平排版的左右宽度占比。
*/
horizontal?: FormHorizontal;
body?: SchemaCollection;
/**
* 列类名
*/
columnClassName?: SchemaClassName;
}
export type GridColumn = (SchemaObject & GridColumnObject) | GridColumnObject;
/**
* Grid 格子布局渲染器。
*
*/
export interface GridSchema extends BaseSchema {
/**
* 指定为 Grid 格子布局渲染器。
*/
type: 'grid';
/**
* 列集合
*/
columns: Array<GridColumn>;
/**
* 水平间距
*/
gap?: 'xs' | 'sm' | 'base' | 'none' | 'md' | 'lg';
/**
* 垂直对齐方式
*/
valign?: 'top' | 'middle' | 'bottom' | 'between';
/**
* 水平对齐方式
*/
align?: 'left' | 'right' | 'between' | 'center';
}
/**
* 二维布局渲染器。
*
*/
export interface Grid2DSchema extends BaseSchema {
/**
* 指定为 grid-2d 展示类型
*/
type: 'grid-2d';
/**
* 列数量,默认是 12
*/
cols?: number;
/**
* grid 2d 容器宽度,默认是 auto
*/
width?: number | string | 'auto';
/**
* 格子间距,默认 0,包含行和列
*/
gap?: number | string;
/**
* 格子行级别的间距,如果不设置就和 gap 一样
*/
gapRow?: number | string;
/**
* 单位行高度,默认 50 px
*/
rowHeight?: number | string;
/**
* 每个格子的配置
*/
grids: Array<Grid2DItem>;
}
export interface Grid2DObject {
/**
* 起始横坐标位置,以 1 为起点
*/
x: number;
/**
* 起始纵坐标位置,以 1 为起点
*/
y: number;
/**
* 宽度,跨几列
*/
w: number;
/**
* 高度,跨几行
*/
h: number;
/**
* 宽度,会影响起始位置对应那一列的宽度
*/
width?: number | string;
/**
* 高度,会影响起始位置那一行的高度,设置为 auto 就会自适应
*/
height?: number | string;
/**
* 水平展示方式,用于内容宽度比 grid 小的情况,默认是 auto 自动撑满
*/
align?: 'left' | 'right' | 'center' | 'auto';
/**
* 垂直展示方式,用于内容高度比 grid 小的情况,默认是 auto 自动撑满
*/
valign?: 'top' | 'bottom' | 'middle' | 'auto';
/**
* 每个格子最外层容器的 className
*/
gridClassName?: string;
}
export type Grid2DItem = Grid2DObject & SchemaObject;