import { DFUISchema } from './UiSchema';  
 | 
  
 | 
export interface DFSchemaDefinition {  
 | 
    [key: string]: DFSchema;  
 | 
  }  
 | 
  
 | 
/**  
 | 
 * JSON Schema Form 结构体  
 | 
 *  
 | 
 * **注意:** 所有结构都以标准为基准,除了 `ui` 属性为非标准单纯只是为了更好的开发  
 | 
 */  
 | 
export interface DFSchema {  
 | 
    //////////// Any /////////////  
 | 
    /**  
 | 
     * 数据类型,支持 JavaScript 基础类型;注意项:  
 | 
     *  
 | 
     * - `integer` 表示整型,`number` 表示浮点型  
 | 
     * - JSON 中 `date` 等同 `string` 类型  
 | 
     * - 指定 `format` 标准参数可以自动适配渲染小部件  
 | 
     * - 指定 `widget` 参数强制渲染小部件  
 | 
     */  
 | 
    type?: 'number' | 'integer' | 'string' | 'boolean' | 'object' | 'array';  
 | 
  
 | 
    /**  
 | 
     * 枚举,静态数据源,例如:`radio`、`checkbox` 等  
 | 
     *  
 | 
     * - `disabled` 属性表示:禁用状态  
 | 
     * - `label` 属性表示:文本  
 | 
     * - `value` 属性表示:返回值  
 | 
     * - 基础数据类型数组会自动转化成 `SFSchemaEnum` 数组格式  
 | 
     */  
 | 
    enum?: any[];  
 | 
  
 | 
    //////////// 数值类型 /////////////  
 | 
    /**  
 | 
     * 最小值  
 | 
     */  
 | 
    minimum?: number;  
 | 
    /**  
 | 
     * 约束是否包括 `minimum` 值  
 | 
     */  
 | 
    exclusiveMinimum?: boolean;  
 | 
    /**  
 | 
     * 最大值  
 | 
     */  
 | 
    maximum?: number;  
 | 
    /**  
 | 
     * 约束是否包括 `maximum` 值  
 | 
     */  
 | 
    exclusiveMaximum?: boolean;  
 | 
    /**  
 | 
     * 倍数  
 | 
     */  
 | 
    multipleOf?: number;  
 | 
    //////////// 字符串类型/////////////  
 | 
    /**  
 | 
     * 定义字符串的最大长度  
 | 
     */  
 | 
    maxLength?: number;  
 | 
    /**  
 | 
     * 定义字符串的最小长度  
 | 
     */  
 | 
    minLength?: number;  
 | 
    /**  
 | 
     * 验证输入字段正则表达式字符串,若指定 `format: 'regex'` 时务必指定  
 | 
     */  
 | 
    pattern?: string;  
 | 
  
 | 
    //////////// 数组类型/////////////  
 | 
    /**  
 | 
     * 数组元素类型描述,只支持数组对象,若需要基础类型数组可通过其他部件支持  
 | 
     *  
 | 
     * ```json  
 | 
     * items: {  
 | 
     *   type: 'object',  
 | 
     *   properties: {  
 | 
     *     name: { type: 'string' },  
 | 
     *     age: { type: 'number' }  
 | 
     *   }  
 | 
     * }  
 | 
     * ```  
 | 
     *  
 | 
     * 结果  
 | 
     *  
 | 
     * ```json  
 | 
     * [  
 | 
     *   { "name": "cipchk1", "age": 18 },  
 | 
     *   { "name": "cipchk2", "age": 16 }  
 | 
     * ]  
 | 
     * ```  
 | 
     */  
 | 
  
 | 
    items?: DFSchema;  
 | 
    /**  
 | 
     * 约束数组最小的元素个数  
 | 
     * - `type="array"` 时有效  
 | 
     */  
 | 
    minItems?: number;  
 | 
    /**  
 | 
     * 约束数组最大的元素个数  
 | 
     * - `type="array"` 时有效  
 | 
     */  
 | 
    maxItems?: number;  
 | 
    /**  
 | 
     * 约束数组每个元素都不相同  
 | 
     * - `type="array"` 时有效  
 | 
     */  
 | 
    uniqueItems?: boolean;  
 | 
    /**  
 | 
     * 数组额外元素的校验规则  
 | 
     */  
 | 
    additionalItems?: DFSchema;  
 | 
    //////////// 对象类型/////////////  
 | 
    /**  
 | 
     * 最大属性个数,必须是非负整数  
 | 
     */  
 | 
    maxProperties?: number;  
 | 
    /**  
 | 
     * 最小属性个数,必须是非负整数  
 | 
     */  
 | 
    minProperties?: number;  
 | 
    /**  
 | 
     * 必填项属性  
 | 
     */  
 | 
    required?: string[];  
 | 
    /**  
 | 
     * 定义属性  
 | 
     */  
 | 
    properties?: { [key: string]: DFSchema };  
 | 
  
 | 
    //////////// 格式/////////////  
 | 
    /**  
 | 
     * 数据格式,[文档](http://json-schema.org/latest/json-schema-validation.html#rfc.section.7.3)  
 | 
     * - `date-time` 日期时间,渲染为 `date`,[RFC3339](https://tools.ietf.org/html/rfc3339#section-5.6)  
 | 
     * - `date`、`full-date` 日期,渲染为 `date`  
 | 
     * - `time`、`full-time` 时间,渲染为 `time`  
 | 
     * - `email` Email格式,渲染为 `autocomplete`  
 | 
     * - 非标准:`week`,渲染为 `nz-week-picker`  
 | 
     * - 非标准:`month`,渲染为 `nz-month-picker`  
 | 
     * - `ip` IP地址,渲染为 `input`  
 | 
     * - `uri` URL地址,渲染为 `upload`  
 | 
     * - `regex` 正则表达式,必须指定 `pattern` 属性,渲染为 `input`  
 | 
     * - `mobile` 手机号  
 | 
     * - `id-card` 身份证  
 | 
     * - `color` 颜色值  
 | 
     */  
 | 
    format?: string;  
 | 
  
 | 
    //////////// 注释/////////////  
 | 
    /**  
 | 
     * 属性描述,相当于 `label` 值,按以下规则展示:  
 | 
     * - 当值为 `null`、`undefined` 时使用 `key` 替代  
 | 
     * - 当值为 `''` 空字符串表示不展示 `label` 部分,例如:`checkbox` 可能需要  
 | 
     */  
 | 
    title?: string;  
 | 
    /**  
 | 
     * 属性目的性解释,采用 `nz-form-extra` 渲染  
 | 
     */  
 | 
    description?: string;  
 | 
    /**  
 | 
     * 默认值  
 | 
     */  
 | 
    default?: any;  
 | 
    /**  
 | 
     * 是否只读状态  
 | 
     */  
 | 
    readOnly?: boolean;  
 | 
    //////////// 其他/////////////  
 | 
  
 | 
    //////////// Definitions /////////////  
 | 
    // /** 指定 Schema JSON 模式,默认为:`http://json-schema.org/draft-07/schema` */  
 | 
    // $schema?: string;  
 | 
    /** 内部类型定义体 */  
 | 
    definitions?: DFSchemaDefinition;  
 | 
  
 | 
    //////////// 非标准/////////////  
 | 
    /** **唯一非标准:** 指定UI配置信息,优先级高于 `sf` 组件 `ui` 属性值 */  
 | 
    ui?: DFUISchema | string;  
 | 
  }  
 |