cgreact-layui
Version:
CGReact基于Layui样式的组件库
92 lines (88 loc) • 4.69 kB
text/typescript
/** SelectState相关数据结构*/
type CGReactSelectOption = {//选项是选项label到值value的映射
[label: string]: string | undefined | { //有可能是option组的情况,配置为嵌套的object
[label: string]: string | undefined // 配置undefined会禁用对应的option
}
};//普通选择框的选项配置
type CGReactSelectState = ({
type?: "select", //普通的select类型
label?: string | "请选择" | Array<string | "请选择" | "请选择A" | "请选择B" | "请选择C">,//标签作为placeholder渲染
option?: CGReactSelectOption | Array<CGReactSelectOption>, //普通select的选项,配置一个则整个数组都生效
select?: string | Array<string> //选中的值
} | {
type?: "year" | "month" | "date" | "time" | "date-time",//时间选择器配置类型,支持多种模式
label?: string | "选择时间" | [string | "开始时间", string | "结束时间"],//时间选择框的提示文字
value?: Date | [Date, Date],//选中时间或者时间起止点
format?: string | "yyyy-MM-dd" | "HH:mm:ss" | "yyyy-MM-dd HH:mm", //时间格式字符串,如yyyy-MM-dd,选择结果会以格式字符串现实,默认值根据type有所不同
start?: Date, //开始时间限制
end?: Date,//结束时间限制
} | {
type?: "address",//地址选择类型
label?: [string | "选择省" | undefined, string | "选择市" | undefined, string | "选择区" | undefined, string | "选择街道" | undefined],//可以配置undefined则对应的级别选择不出现
select?: string,//value为regionCode
} | {
type?: "color", //颜色选择器
label?: string | "选择一个颜色",//颜色选择提示
select?: string,//颜色值比如#ffeeff
}) & {//公共属性配置
disable?: boolean | Array<boolean>, //select是否处于激活状态,默认false
width?: number | number[],// 输入框长度配置
formItem?: CGReactFormItem | boolean//表单行配置
};// @ts-ignore select的数据结构
interface SelectState extends CGReactSelectState
{
// this.state回调接口数据类型
type: string;
option: object;
label: string | Array<string>;
select: string | Date | Array<string> | [Date, Date];
disable: boolean | Array<boolean>;
format: string;
start: Date;
end: Date;
width: number | number[];
}
/** SelectProps在CGReactCompProp的基础上以input配置作为data的数据类型*/
type CGReactSelectLayout = {
layoutName?: string, //布局的名称属性,渲染为item-name
layoutWidth?: number | CGReactLength | CGReactGrid | MediaResponse,//布局宽度,水平方向支持删格系统,只有宽度才需要响应式布局
align?: CGReactAlign, //布局相对于父布局的对其方式,其优先级高于父布局的gravity配置
layoutDebug?: "debug-off" | "only-layout" | "with-content", //用于调试时显示布局的框子默认false不显示,如果没有配置,子Layout会自动同步父Layout的配置
}
type CGReactSelectProp = {
data?: CGReactSelectState, //使用Input数据类型
layout?:CGReactSelectLayout,
value?: string,// 选择框的值
};//参数类型
interface SelectProp extends CGReactSelectProp,CGReactSelectLayout {}
/** 回调接口数据类型,可能在state数据类型中交叉使用*/
interface SelectConfig //renderSelect函数回调接口数据类型
{
type: "select" | "year" | "month" | "date" | "time" | "date-time" | "address" | "color",
label: string, //input框的提示文字
select: string | Date, //当前选中的值
disable: boolean, //input是否处于激活状态,默认false
width: number,//长度配置
}//基础类配置数据结构
interface OptionSelectItem
{
label: string, //选项的标签
value: string, //选项的表单值
checked: boolean, //选项当前是否选中
disable: boolean, //选项是否禁用
group: boolean, //是否为选项组的标签
} //input的选项数据结构
interface OptionSelectConfig extends SelectConfig
{
type: "select", // type为普通选择
select: string,//当前选择的值
option: Array<OptionSelectItem>,
}// 普通select的数据结构
interface TimeSelectConfig extends SelectConfig
{
type: "year" | "month" | "date" | "time" | "date-time", //支持多种时间选择的样式
select: Date,//当前选择的时间
start: Date,// 允许选择的开始时间,undefined则无限制
end: Date,//允许选择的结束时间,undefined则无限制
format: string,//时间字符串格式化
}//时间选择数据结构