@yibozhang/pro-table 0.0.4 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,186 +1,96 @@
1
- /**
2
- * 字段校验结果类型
3
- */
1
+ /** 字段校验结果类型 */
4
2
  export declare type ValidationResult = string;
5
- /**
6
- * 字段校验方法类型
7
- */
3
+ /** 字段校验方法类型 */
8
4
  export declare type FieldValidator = (value: any, row: ArrayFormRow, fieldName: string) => ValidationResult;
9
- /**
10
- * 字段配置接口
11
- */
5
+ /** 字段配置接口 */
12
6
  export interface FieldConfig {
13
7
  name: string;
14
8
  validator?: FieldValidator;
15
9
  }
16
- /**
17
- * 数组表单行数据接口
18
- */
10
+ /** 数组表单行数据接口 */
19
11
  export interface ArrayFormRow {
20
- uid: string;
12
+ uid?: string;
21
13
  isEdit: boolean;
22
14
  isAdd?: boolean;
15
+ disabled?: boolean;
23
16
  [key: string]: any;
24
17
  }
25
- /**
26
- * 数组表单配置接口
27
- */
18
+ /** 数组表单配置接口 */
28
19
  export interface ArrayFormConfig {
29
20
  fields: FieldConfig[];
30
21
  defaultValues?: Record<string, any>;
31
22
  targetObject?: Record<string, any>;
32
23
  arrayPropertyName?: string;
33
24
  }
34
- /**
35
- * 表单存储项接口
36
- */
25
+ /** 表单存储项接口 */
37
26
  export interface ArrayFormStoreItem {
38
27
  data: ArrayFormRow[];
39
28
  config: ArrayFormConfig;
40
29
  validationResults?: Record<string, Record<string, ValidationResult>>;
30
+ /** 初始值快照,用于自动检测字段是否被修改 */
31
+ initialSnapshot: Record<string, Record<string, any>>;
32
+ /** 编辑时快照,用于取消编辑时恢复数据 */
33
+ editingSnapshot: Record<string, Record<string, any>>;
34
+ /** 是否标记所有字段为已触碰(整个表单提交时设为 true) */
35
+ allTouched: boolean;
36
+ /** 每行的 touched 状态(单行保存时设为 true) */
37
+ rowTouched: Record<string, boolean>;
41
38
  }
42
- /**
43
- * 表单存储接口
44
- */
39
+ /** 表单存储接口 */
45
40
  export interface ArrayFormStore {
46
41
  [formName: string]: ArrayFormStoreItem;
47
42
  }
48
- /**
49
- * 数组型数据收集基础服务
50
- *
51
- * 功能:
52
- * 1. 支持通过 ngModel 绑定对应行的数据源
53
- * 2. 自动为数组数据添加 isEdit 和 uid 字段
54
- * 3. 支持每个字段的自定义校验方法,返回 'success' | 'warning' | 'error'
55
- * 4. 提供公共方法支持删除、新增、编辑等操作
56
- */
43
+ /** 数组型数据收集基础服务 */
57
44
  export declare class ArrayFormService {
58
45
  private formStore;
59
46
  constructor();
60
- /**
61
- * 初始化数组数据
62
- * 为现有数据添加 uid 和 isEdit 字段
63
- *
64
- * @param data 原始数据数组
65
- * @param config 表单配置
66
- * @returns 初始化后的数据数组
67
- */
47
+ /** 深度克隆值 */
48
+ private cloneValue;
49
+ /** 比较两个值是否相等 */
50
+ private isEqual;
51
+ /** 创建行的初始值快照 */
52
+ private createRowSnapshot;
53
+ /** 初始化数组数据,添加 uid 和 isEdit 字段 */
68
54
  private initializeData;
69
- /**
70
- * 为单行数据添加 uid 和 isEdit 字段
71
- *
72
- * @param row 原始行数据
73
- * @returns 增强后的行数据
74
- */
55
+ /** 为单行数据添加 uid 和 isEdit 字段 */
75
56
  private enrichRow;
76
- /**
77
- * 新增一行数据
78
- *
79
- * @param data 数据数组引用
80
- * @param defaultValues 默认值
81
- * @returns 新增的行数据
82
- */
57
+ /** 新增一行数据 */
83
58
  private addRow;
84
- /**
85
- * 校验单个字段
86
- *
87
- * @param row 行数据
88
- * @param fieldName 字段名
89
- * @param config 表单配置
90
- * @returns 校验结果
91
- */
59
+ /** 校验单个字段 */
92
60
  private validateField;
93
- /**
94
- * 校验整行数据
95
- *
96
- * @param row 行数据
97
- * @param config 表单配置
98
- * @returns 校验结果对象,key为字段名,value为校验结果
99
- */
61
+ /** 校验整行数据 */
100
62
  private validateRow;
101
- /**
102
- * 校验整个数组
103
- *
104
- * @param data 数据数组
105
- * @param config 表单配置
106
- * @returns 校验结果对象,key为行的uid,value为该行的校验结果
107
- */
63
+ /** 校验整个数组 */
108
64
  private validateData;
109
- /**
110
- * 注册表单到存储
111
- * 如果表单已存在,则更新其配置
112
- *
113
- * @param formName 表单名称
114
- * @param data 数据数组
115
- * @param config 表单配置
116
- */
65
+ /** 注册表单到存储 */
117
66
  registerForm(formName: string, data: ArrayFormRow[], config: ArrayFormConfig): void;
118
- /**
119
- * 从存储中获取表单
120
- *
121
- * @param formName 表单名称
122
- * @returns 表单存储项或undefined
123
- */
67
+ /** 从存储中获取表单 */
124
68
  getForm(formName: string): ArrayFormStoreItem | undefined;
125
- /**
126
- * 向表单添加行
127
- *
128
- * @param formName 表单名称
129
- * @param defaultValues 默认值
130
- * @returns 新增的行数据或undefined
131
- */
69
+ /** 从存储中获取表单数据 */
70
+ getFormData(formName: string): Array<Pick<ArrayFormRow, "uid" | "isEdit" | "isAdd" | keyof ArrayFormRow>> | undefined;
71
+ /** 向表单添加行 */
132
72
  addRowToForm(formName: string, defaultValues?: Record<string, any>): ArrayFormRow | undefined;
133
- /**
134
- * 校验表单
135
- *
136
- * @param formName 表单名称
137
- * @returns 校验结果或undefined
138
- */
139
- validateForm(formName: string): Record<string, Record<string, ValidationResult>> | undefined;
140
- /**
141
- * 开启指定行的编辑模式
142
- *
143
- * @param row 行数据
144
- */
145
- enableEdit(row: ArrayFormRow): void;
146
- /**
147
- * 关闭指定行的编辑模式
148
- *
149
- * @param row 行数据
150
- */
151
- disableEdit(row: ArrayFormRow): void;
152
- /**
153
- * 从表单中删除指定行
154
- *
155
- * @param formName 表单名称
156
- * @param row 行的uid
157
- * @returns 是否删除成功
158
- */
73
+ /** 校验表单,自动标记所有字段为已触碰 */
74
+ validateForm(formName: string): boolean;
75
+ /** 开启编辑模式,保存快照用于取消恢复 */
76
+ enableEdit(formName: string, row: ArrayFormRow): void;
77
+ /** 取消编辑,恢复到编辑前的数据 */
78
+ disableEdit(formName: string, row: ArrayFormRow): void;
79
+ /** 确认编辑,保留修改后的数据 */
80
+ confirmEdit(formName: string, row: ArrayFormRow): void;
81
+ /** 从表单中删除指定行 */
159
82
  deleteRowFromForm(formName: string, row: ArrayFormRow): boolean;
160
- /**
161
- * 校验指定行的指定字段并返回校验结果
162
- * 实时执行校验,用于模板中的实时校验显示
163
- *
164
- * @param formName 表单名称
165
- * @param row 行数据
166
- * @param fieldName 字段名
167
- * @returns 校验结果
168
- */
169
- validateFieldInRow(formName: string, row: ArrayFormRow, fieldName: string): "success" | "error";
170
- /**
171
- * 校验指定行的所有字段
172
- *
173
- * @param formName 表单名称
174
- * @param row 行数据
175
- * @returns 是否所有字段都通过校验
176
- */
83
+ /** 检测字段是否已被触碰 */
84
+ private isFieldTouched;
85
+ /** 校验指定行的指定字段,未修改时不显示校验状态 */
86
+ validateFieldInRow(formName: string, row: ArrayFormRow, fieldName: string): "success" | "error" | "";
87
+ /** 获取指定行指定字段的校验错误信息 */
88
+ getFieldErrorMessage(formName: string, row: ArrayFormRow, fieldName: string): string;
89
+ /** 校验指定行的所有字段 */
177
90
  validateRowAllFields(formName: string, row: ArrayFormRow): boolean;
178
- /**
179
- * 自动更新外部数组引用(如果配置了)
180
- * 私有方法,在数据变化时自动调用
181
- *
182
- * @param formName 表单名称
183
- */
91
+ /** 自动更新外部数组引用 */
184
92
  private autoUpdateArrayReference;
93
+ /** 是否有正在编辑的行 */
94
+ hasEditingRow(formName: string): boolean;
185
95
  }
186
96
  //# sourceMappingURL=array-form.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"array-form.d.ts","sourceRoot":"D:/projects/vps-front/Front/DasPMSWeb/lib/pro-table/src/","sources":["lib/page-public/array-form.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,oBAAY,gBAAgB,GAAG,MAAM,CAAC;AAEtC;;GAEG;AACH,oBAAY,cAAc,GAAG,CAC3B,KAAK,EAAE,GAAG,EACV,GAAG,EAAE,YAAY,EACjB,SAAS,EAAE,MAAM,KACd,gBAAgB,CAAC;AAEtB;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,cAAc,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAEpC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACnC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,YAAY,EAAE,CAAC;IACrB,MAAM,EAAE,eAAe,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC;CACtE;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,CAAC,QAAQ,EAAE,MAAM,GAAG,kBAAkB,CAAC;CACxC;AAED;;;;;;;;GAQG;AACH,qBAGa,gBAAgB;IAC3B,OAAO,CAAC,SAAS,CAAsB;;IAIvC;;;;;;;OAOG;IACH,OAAO,CAAC,cAAc;IAItB;;;;;OAKG;IACH,OAAO,CAAC,SAAS;IAQjB;;;;;;OAMG;IACH,OAAO,CAAC,MAAM;IAcd;;;;;;;OAOG;IACH,OAAO,CAAC,aAAa;IAkBrB;;;;;;OAMG;IACH,OAAO,CAAC,WAAW;IAiBnB;;;;;;OAMG;IACH,OAAO,CAAC,YAAY;IAapB;;;;;;;OAOG;IACH,YAAY,CACV,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,YAAY,EAAE,EACpB,MAAM,EAAE,eAAe,GACtB,IAAI;IAUP;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS;IAIzD;;;;;;OAMG;IACH,YAAY,CACV,QAAQ,EAAE,MAAM,EAChB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAClC,YAAY,GAAG,SAAS;IAW3B;;;;;OAKG;IACH,YAAY,CACV,QAAQ,EAAE,MAAM,GACf,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,GAAG,SAAS;IAU/D;;;;OAIG;IACH,UAAU,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI;IAInC;;;;OAIG;IACH,WAAW,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI;IAIpC;;;;;;OAMG;IACH,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO;IAkB/D;;;;;;;;OAQG;IACH,kBAAkB,CAChB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,YAAY,EACjB,SAAS,EAAE,MAAM,GAChB,SAAS,GAAG,OAAO;IA4BtB;;;;;;OAMG;IACH,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO;IAkBlE;;;;;OAKG;IACH,OAAO,CAAC,wBAAwB;CASjC"}
1
+ {"version":3,"file":"array-form.d.ts","sourceRoot":"D:/projects/vps-front/Front/DasPMSWeb/lib/pro-table/src/","sources":["lib/page-public/array-form.ts"],"names":[],"mappings":"AAGA,eAAe;AACf,oBAAY,gBAAgB,GAAG,MAAM,CAAC;AAEtC,eAAe;AACf,oBAAY,cAAc,GAAG,CAC3B,KAAK,EAAE,GAAG,EACV,GAAG,EAAE,YAAY,EACjB,SAAS,EAAE,MAAM,KACd,gBAAgB,CAAC;AAEtB,aAAa;AACb,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,cAAc,CAAC;CAC5B;AAED,gBAAgB;AAChB,MAAM,WAAW,YAAY;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,eAAe;AACf,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAEpC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACnC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,cAAc;AACd,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,YAAY,EAAE,CAAC;IACrB,MAAM,EAAE,eAAe,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC;IACrE,0BAA0B;IAC1B,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;IACrD,wBAAwB;IACxB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;IACrD,mCAAmC;IACnC,UAAU,EAAE,OAAO,CAAC;IACpB,mCAAmC;IACnC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC;AAED,aAAa;AACb,MAAM,WAAW,cAAc;IAC7B,CAAC,QAAQ,EAAE,MAAM,GAAG,kBAAkB,CAAC;CACxC;AAED,kBAAkB;AAClB,qBAGa,gBAAgB;IAC3B,OAAO,CAAC,SAAS,CAAsB;;IAIvC,YAAY;IACZ,OAAO,CAAC,UAAU;IAiBlB,gBAAgB;IAChB,OAAO,CAAC,OAAO;IAqBf,gBAAgB;IAChB,OAAO,CAAC,iBAAiB;IAWzB,iCAAiC;IACjC,OAAO,CAAC,cAAc;IAItB,8BAA8B;IAC9B,OAAO,CAAC,SAAS;IASjB,aAAa;IACb,OAAO,CAAC,MAAM;IAed,aAAa;IACb,OAAO,CAAC,aAAa;IAkBrB,aAAa;IACb,OAAO,CAAC,WAAW;IAiBnB,aAAa;IACb,OAAO,CAAC,YAAY;IAapB,cAAc;IACd,YAAY,CACV,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,YAAY,EAAE,EACpB,MAAM,EAAE,eAAe,GACtB,IAAI;IAsBP,eAAe;IACf,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS;IAIzD,iBAAiB;IACjB,WAAW,CACT,QAAQ,EAAE,MAAM,GAEd,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,YAAY,CAAC,CAAC,GAC1E,SAAS;IAab,aAAa;IACb,YAAY,CACV,QAAQ,EAAE,MAAM,EAChB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAClC,YAAY,GAAG,SAAS;IAgB3B,wBAAwB;IACxB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAqBvC,wBAAwB;IACxB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,GAAG,IAAI;IAYrD,qBAAqB;IACrB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,GAAG,IAAI;IAqBtD,oBAAoB;IACpB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,GAAG,IAAI;IAmBtD,gBAAgB;IAChB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO;IAsB/D,iBAAiB;IACjB,OAAO,CAAC,cAAc;IAmBtB,6BAA6B;IAC7B,kBAAkB,CAChB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,YAAY,EACjB,SAAS,EAAE,MAAM,GAChB,SAAS,GAAG,OAAO,GAAG,EAAE;IAkC3B,uBAAuB;IACvB,oBAAoB,CAClB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,YAAY,EACjB,SAAS,EAAE,MAAM,GAChB,MAAM;IAYT,iBAAiB;IACjB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO;IA0BlE,iBAAiB;IACjB,OAAO,CAAC,wBAAwB;IAUhC,gBAAgB;IAChB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;CAOzC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yibozhang/pro-table",
3
- "version": "0.0.4",
3
+ "version": "0.0.5",
4
4
  "description": "基于 Angular 和 ng-zorro-antd 的高级表格组件库",
5
5
  "publishConfig": {
6
6
  "access": "public"