UNPKG

4.49 kBTypeScriptView Raw
1import { VXEComponent } from '../component'
2import { VxeTableDefines, VxeTableDataRow, VxeTableConstructor } from '../table'
3import { VxeGridConstructor } from '../grid'
4import { VxeColumnPropTypes } from '../column'
5
6/* eslint-disable no-use-before-define */
7
8/**
9 * 表格模块 - 校验模块
10 */
11export const VxeTableValidatorModule: VXEComponent<{ [key: string]: any }>
12/**
13 * 表格模块 - 校验模块
14 */
15export const Validator: VXEComponent<{ [key: string]: any }>
16
17export interface TableValidatorMethods<D = VxeTableDataRow> {
18 /**
19 * 手动清除校验
20 */
21 clearValidate(rows?: any, fieldOrColumn?: VxeColumnPropTypes.Field | VxeTableDefines.ColumnInfo<any> | VxeColumnPropTypes.Field[] | VxeTableDefines.ColumnInfo<any>[]): Promise<void>
22 /**
23 * 完整校验,默认校验当前表格数据,和 validate 的区别就是默认校验当前表格数据并且给有效数据中的每一行进行校验
24 * @param rows 指定行
25 */
26 fullValidate(rows?: boolean | object | any[] | ((errMap: VxeTableDefines.ValidatorErrorMapParams<D>) => void), callback?: (errMap: VxeTableDefines.ValidatorErrorMapParams<D>) => void): Promise<VxeTableDefines.ValidatorErrorMapParams<D>>
27 /**
28 * 快速校验,如果存在记录不通过的记录,则返回不再继续校验(异步校验除外);
29 * 如果第一个参数为 true 则校验当前表格数据,如果指定 row 或 rows 则校验指定一行或多行,如果不指定数据,则默认只校验临时变动的数据,例如新增或修改。该回调函数会在校验结束后被调用 callback(errMap)。若不传入回调函数,则会返回一个 promise
30 * @param rows 指定行
31 */
32 validate(rows?: boolean | object | any[] | ((errMap?: VxeTableDefines.ValidatorErrorMapParams<D>) => void), callback?: (errMap?: VxeTableDefines.ValidatorErrorMapParams<D>) => void): Promise<VxeTableDefines.ValidatorErrorMapParams<D>>
33}
34
35export interface TableValidatorPrivateMethods<D = VxeTableDataRow> {
36 validCellRules(type: any, row: any, column: VxeTableDefines.ColumnInfo<any>, val?: any): Promise<any>
37 hasCellRules(type: any, row: any, column: VxeTableDefines.ColumnInfo<any>): boolean
38 triggerValidate(type: any): Promise<any>
39 showValidTooltip(params: any): void
40}
41
42declare module '../grid' {
43 export interface VxeGridMethods<D = VxeTableDataRow> extends TableValidatorMethods<D> { }
44}
45
46declare module '../table' {
47 export interface VxeTableMethods<D = VxeTableDataRow> extends TableValidatorMethods<D> { }
48 export interface VxeTablePrivateMethods<D = VxeTableDataRow> extends TableValidatorPrivateMethods<D> { }
49 export namespace VxeTableDefines {
50 export interface ValidatorRule<D = VxeTableDataRow> {
51 /**
52 * 是否必填
53 */
54 required?: boolean
55 /**
56 * 最小长度/值
57 */
58 min?: number | string
59 /**
60 * 最大长度/值
61 */
62 max?: number | string
63 /**
64 * 数据类型
65 */
66 type?: 'number' | 'string' | 'array' | '' | null
67 /**
68 * 使用正则表达式校验
69 */
70 pattern?: string | RegExp
71 /**
72 * 使用自定义校验函数,接收一个 Promise
73 * @param params 参数
74 */
75 validator?: string | ((params: RuleValidatorParams<D>) => void | Error | Promise<void>)
76 /**
77 * 提示消息
78 */
79 content?: string
80 trigger?: 'blur' | 'change' | 'manual' | '' | null
81 maxWidth?: number
82 /**
83 * @deprecated 已废弃,请使用 content
84 */
85 message?: string
86 }
87 export interface RuleValidatorParams<D = VxeTableDataRow> {
88 $table: VxeTableConstructor<D>
89 $grid: VxeGridConstructor<D> | null
90 cellValue: any
91 rule: ValidatorRule<D>
92 rules: ValidatorRule<D>[]
93 column: VxeTableDefines.ColumnInfo<D>
94 columnIndex: number
95 row: D
96 rowIndex: number
97 field: string
98 }
99 export interface ValidatorErrorParams<D = VxeTableDataRow> {
100 $table: VxeTableConstructor<D>
101 cellValue: any
102 rule: ValidatorRule<D>
103 rules: ValidatorRule<D>[]
104 column: VxeTableDefines.ColumnInfo<D>
105 columnIndex: number
106 row: D
107 rowIndex: number
108 field: string
109 }
110 export interface ValidatorErrorMapParams<D = VxeTableDataRow> {
111 [key: string]: VxeTableDefines.ValidatorErrorParams<D>[]
112 }
113 }
114}
115
\No newline at end of file