@allahjs/utils 1.9.0 → 1.11.0

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.
Files changed (84) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/browser/domUtils/index.cjs +102 -0
  3. package/dist/browser/domUtils/index.cjs.map +1 -1
  4. package/dist/browser/domUtils/index.d.ts +24 -0
  5. package/dist/core/arrayUtils/index.cjs +327 -3
  6. package/dist/core/arrayUtils/index.cjs.map +1 -1
  7. package/dist/core/arrayUtils/index.d.ts +137 -3
  8. package/dist/core/constants/asyncTaskScheduleVo.d.ts +98 -0
  9. package/dist/core/constants/comm.cjs +25 -0
  10. package/dist/core/constants/comm.cjs.map +1 -0
  11. package/dist/core/constants/comm.d.ts +309 -0
  12. package/dist/core/constants/defaultData.cjs +16 -0
  13. package/dist/core/constants/defaultData.cjs.map +1 -0
  14. package/dist/core/constants/defaultData.d.ts +8 -0
  15. package/dist/core/constants/index.cjs +22 -0
  16. package/dist/core/constants/index.cjs.map +1 -0
  17. package/dist/core/constants/index.d.ts +4 -0
  18. package/dist/core/constants/systemEnum.d.ts +7 -1
  19. package/dist/core/dateUtils/index.cjs +46 -1
  20. package/dist/core/dateUtils/index.cjs.map +1 -1
  21. package/dist/core/dateUtils/index.d.ts +21 -1
  22. package/dist/core/index.cjs +19 -17
  23. package/dist/core/index.cjs.map +1 -1
  24. package/dist/core/index.d.ts +36 -1
  25. package/dist/core/pageUtils/index.cjs +21 -1
  26. package/dist/core/pageUtils/index.cjs.map +1 -1
  27. package/dist/core/pageUtils/index.d.ts +1 -0
  28. package/dist/esm/browser/domUtils/index.d.ts +24 -0
  29. package/dist/esm/browser/domUtils/index.js +102 -0
  30. package/dist/esm/browser/domUtils/index.js.map +1 -1
  31. package/dist/esm/core/arrayUtils/index.d.ts +137 -3
  32. package/dist/esm/core/arrayUtils/index.js +327 -3
  33. package/dist/esm/core/arrayUtils/index.js.map +1 -1
  34. package/dist/esm/core/constants/asyncTaskScheduleVo.d.ts +98 -0
  35. package/dist/esm/core/constants/comm.d.ts +309 -0
  36. package/dist/esm/core/constants/comm.js +25 -0
  37. package/dist/esm/core/constants/comm.js.map +1 -0
  38. package/dist/esm/core/constants/defaultData.d.ts +8 -0
  39. package/dist/esm/core/constants/defaultData.js +14 -0
  40. package/dist/esm/core/constants/defaultData.js.map +1 -0
  41. package/dist/esm/core/constants/index.d.ts +4 -0
  42. package/dist/esm/core/constants/index.js +4 -0
  43. package/dist/esm/core/constants/index.js.map +1 -0
  44. package/dist/esm/core/constants/systemEnum.d.ts +7 -1
  45. package/dist/esm/core/dateUtils/index.d.ts +21 -1
  46. package/dist/esm/core/dateUtils/index.js +46 -2
  47. package/dist/esm/core/dateUtils/index.js.map +1 -1
  48. package/dist/esm/core/index.d.ts +36 -1
  49. package/dist/esm/core/index.js +3 -1
  50. package/dist/esm/core/index.js.map +1 -1
  51. package/dist/esm/core/pageUtils/index.d.ts +1 -0
  52. package/dist/esm/core/pageUtils/index.js +21 -2
  53. package/dist/esm/core/pageUtils/index.js.map +1 -1
  54. package/dist/esm/form/attributes.d.ts +32 -0
  55. package/dist/esm/form/formItem.d.ts +163 -0
  56. package/dist/esm/form/index.d.ts +4 -0
  57. package/dist/esm/form/index.js +2 -0
  58. package/dist/esm/form/index.js.map +1 -0
  59. package/dist/esm/form/rule.d.ts +37 -0
  60. package/dist/esm/form/types.d.ts +677 -0
  61. package/dist/esm/index.d.ts +10 -3
  62. package/dist/esm/index.js +3 -1
  63. package/dist/esm/index.js.map +1 -1
  64. package/dist/esm/request/index.d.ts +3 -3
  65. package/dist/esm/request/index.js.map +1 -1
  66. package/dist/esm/types/data/index.d.ts +22 -1
  67. package/dist/esm/types/dbData/index.d.ts +83 -0
  68. package/dist/esm/types/index.d.ts +2 -1
  69. package/dist/form/attributes.d.ts +32 -0
  70. package/dist/form/formItem.d.ts +163 -0
  71. package/dist/form/index.cjs +3 -0
  72. package/dist/form/index.cjs.map +1 -0
  73. package/dist/form/index.d.ts +4 -0
  74. package/dist/form/rule.d.ts +37 -0
  75. package/dist/form/types.d.ts +677 -0
  76. package/dist/index.cjs +42 -39
  77. package/dist/index.cjs.map +1 -1
  78. package/dist/index.d.ts +10 -3
  79. package/dist/request/index.cjs.map +1 -1
  80. package/dist/request/index.d.ts +3 -3
  81. package/dist/types/data/index.d.ts +22 -1
  82. package/dist/types/dbData/index.d.ts +83 -0
  83. package/dist/types/index.d.ts +2 -1
  84. package/package.json +13 -5
@@ -0,0 +1,677 @@
1
+ import { IOptions, ITreeNode } from '../types/data/index.js';
2
+ import { BaseRule } from './rule.js';
3
+ import { FormItemProps } from './formItem.js';
4
+
5
+ /**
6
+ * JSON规则项配置
7
+ * 用于定义表单字段的动态校验规则
8
+ */
9
+ type IJsonRuleItem = {
10
+ /** 连接符,如 'and'、'or' */
11
+ connect: string;
12
+ /** 字段名称 */
13
+ fact: string;
14
+ /** 操作符,如 '='、'>'、'<'、'!=' 等 */
15
+ operator: string;
16
+ /** 比较值 */
17
+ value: any;
18
+ /**
19
+ * 依赖字段的类型,比如text,select之类的
20
+ * 用于确定如何处理和比较值
21
+ */
22
+ type: any;
23
+ };
24
+ /**
25
+ * JSON规则列表项
26
+ * 包含一组规则和对应的触发事件
27
+ */
28
+ type IJsonRuleListItem = {
29
+ /**
30
+ * 全部的规则集合
31
+ * 当所有规则都满足时触发对应事件
32
+ */
33
+ all: IJsonRuleItem[];
34
+ /**
35
+ * 对应的事件类型
36
+ * 如 'show'、'hide'、'required'、'disabled' 等
37
+ */
38
+ event: string;
39
+ };
40
+ /**
41
+ * ProForm实例类型扩展
42
+ * 在原有FormInstance基础上增加格式化相关方法
43
+ * @template T 表单数据类型
44
+ */
45
+ type ProFormInstanceType<T> = {
46
+ /**
47
+ * 获取被 ProForm 格式化后的所有数据
48
+ * @param nameList 是否获取所有数据,包括未被form托管的
49
+ * @param omitNil 是否忽略空值
50
+ * @returns 格式化后的表单数据
51
+ *
52
+ * @example getFieldsFormatValue() // 返回所有数据
53
+ * @example getFieldsFormatValue(true) // 返回所有数据,即使没有被 form 托管的
54
+ */
55
+ getFieldsFormatValue?: (nameList?: true, omitNil?: boolean) => T;
56
+ /**
57
+ * 获取被 ProForm 格式化后的单个数据
58
+ * @param nameList 字段路径数组
59
+ * @returns 格式化后的字段值
60
+ *
61
+ * @example {a:{b:value}} -> getFieldFormatValue(['a', 'b']) -> value
62
+ */
63
+ getFieldFormatValue?: (nameList?: NamePath) => T;
64
+ /**
65
+ * 获取被 ProForm 格式化后的单个数据,包含完整的对象结构
66
+ * @param nameList 字段路径数组
67
+ * @returns 包含完整路径的格式化数据对象
68
+ *
69
+ * @example {a:{b:value}} -> getFieldFormatValueObject(['a','b']) -> {a:{b:value}}
70
+ */
71
+ getFieldFormatValueObject?: (nameList?: NamePath) => T;
72
+ /**
73
+ * 验证字段后返回格式化之后的所有数据
74
+ * @param nameList 需要验证的字段路径数组
75
+ * @returns Promise包装的格式化数据
76
+ *
77
+ * @example validateFieldsReturnFormatValue -> {a:{b:value}}
78
+ */
79
+ validateFieldsReturnFormatValue?: (nameList?: NamePath[]) => Promise<T>;
80
+ };
81
+ /**
82
+ * ProForm实例类型
83
+ * 结合了原生FormInstance和ProForm扩展功能
84
+ * @template T 表单数据类型,默认为any
85
+ */
86
+ type ProFormInstance<T = any> = FormInstance<T> & ProFormInstanceType<T>;
87
+ /**
88
+ * 内部字段数据接口
89
+ * 包含字段值和元数据信息
90
+ */
91
+ interface InternalFieldData extends Meta {
92
+ /** 字段值 */
93
+ value: any;
94
+ }
95
+ /**
96
+ * 字段数据接口
97
+ * 用于 setFields 配置,不包含name的其他元数据
98
+ */
99
+ interface FieldData extends Partial<Omit<InternalFieldData, "name">> {
100
+ /** 字段路径 */
101
+ name: NamePath;
102
+ }
103
+ /**
104
+ * 内部字段路径类型
105
+ * 由字符串或数字组成的数组,用于定位嵌套字段
106
+ */
107
+ type InternalNamePath = (string | number)[];
108
+ /**
109
+ * 字段元数据接口
110
+ * 包含字段的状态信息
111
+ */
112
+ interface Meta {
113
+ /** 是否已被触摸(用户交互过) */
114
+ touched: boolean;
115
+ /** 是否正在验证中 */
116
+ validating: boolean;
117
+ /** 错误信息数组 */
118
+ errors: string[];
119
+ /** 警告信息数组 */
120
+ warnings: string[];
121
+ /** 字段路径 */
122
+ name: InternalNamePath;
123
+ /** 是否已验证 */
124
+ validated: boolean;
125
+ }
126
+ /**
127
+ * 字段错误接口
128
+ * 包含字段路径和对应的错误、警告信息
129
+ */
130
+ interface FieldError {
131
+ /** 字段路径 */
132
+ name: InternalNamePath;
133
+ /** 错误信息数组 */
134
+ errors: string[];
135
+ /** 警告信息数组 */
136
+ warnings: string[];
137
+ }
138
+ /**
139
+ * 过滤函数类型
140
+ * 用于过滤字段元数据
141
+ * @param meta 字段元数据
142
+ * @returns 是否通过过滤
143
+ */
144
+ type FilterFunc = (meta: Meta) => boolean;
145
+ /**
146
+ * 字段路径类型
147
+ * 可以是任意类型,通常为字符串、数字或它们的数组
148
+ * @template T 路径类型,默认为any
149
+ */
150
+ type NamePath = any;
151
+ /**
152
+ * 验证选项接口
153
+ * 用于配置字段验证行为
154
+ */
155
+ interface ValidateOptions {
156
+ /**
157
+ * 仅验证,不触发UI和字段状态更新
158
+ */
159
+ validateOnly?: boolean;
160
+ /**
161
+ * 递归验证。会验证包含提供路径的所有字段
162
+ * 例如:[['a']] 会验证 ['a']、['a', 'b'] 和 ['a', 1]
163
+ */
164
+ recursive?: boolean;
165
+ /** 仅验证脏字段(已验证或已触摸的字段) */
166
+ dirty?: boolean;
167
+ }
168
+ /**
169
+ * 获取字段值的配置
170
+ * 用于 getFieldsValue 方法
171
+ */
172
+ type GetFieldsValueConfig = {
173
+ /** 严格模式,是否严格按照字段定义获取值 */
174
+ strict?: boolean;
175
+ /** 过滤函数,用于过滤需要获取的字段 */
176
+ filter?: FilterFunc;
177
+ };
178
+ /**
179
+ * 验证字段函数类型
180
+ * 支持多种调用方式的字段验证
181
+ * @template Values 表单值类型,默认为any
182
+ */
183
+ type ValidateFields<Values = any> = {
184
+ /** 验证所有字段 */
185
+ (opt?: ValidateOptions): Promise<Values>;
186
+ /** 验证指定字段 */
187
+ (nameList?: NamePath[], opt?: ValidateOptions): Promise<Values>;
188
+ };
189
+ /**
190
+ * React Hook Form 实例接口
191
+ * 提供表单的核心操作方法
192
+ * @template Values 表单值类型,默认为any
193
+ */
194
+ interface RcFormInstance<Values = any> {
195
+ /** 获取单个字段值 */
196
+ getFieldValue: (name: NamePath) => any;
197
+ /** 获取多个字段值,支持多种调用方式 */
198
+ getFieldsValue: (() => Values) & ((nameList: NamePath[] | true, filterFunc?: FilterFunc) => any) & ((config: GetFieldsValueConfig) => any);
199
+ /** 获取字段错误信息 */
200
+ getFieldError: (name: NamePath) => string[];
201
+ /** 获取多个字段错误信息 */
202
+ getFieldsError: (nameList?: NamePath[]) => FieldError[];
203
+ /** 获取字段警告信息 */
204
+ getFieldWarning: (name: NamePath) => string[];
205
+ /** 检查字段是否被触摸 */
206
+ isFieldsTouched: ((nameList?: NamePath[], allFieldsTouched?: boolean) => boolean) & ((allFieldsTouched?: boolean) => boolean);
207
+ /** 检查单个字段是否被触摸 */
208
+ isFieldTouched: (name: NamePath) => boolean;
209
+ /** 检查字段是否正在验证 */
210
+ isFieldValidating: (name: NamePath) => boolean;
211
+ /** 检查多个字段是否正在验证 */
212
+ isFieldsValidating: (nameList?: NamePath[]) => boolean;
213
+ /** 重置字段值 */
214
+ resetFields: (fields?: NamePath[]) => void;
215
+ /** 设置字段数据 */
216
+ setFields: (fields: FieldData[]) => void;
217
+ /** 设置单个字段值 */
218
+ setFieldValue: (name: NamePath, value: any) => void;
219
+ /** 设置多个字段值 */
220
+ setFieldsValue: (values: any) => void;
221
+ /** 验证字段 */
222
+ validateFields: ValidateFields<Values>;
223
+ /** 提交表单 */
224
+ submit: () => void;
225
+ }
226
+ /**
227
+ * 表单实例接口
228
+ * 在RcFormInstance基础上增加滚动和获取字段实例功能
229
+ * @template Values 表单值类型,默认为any
230
+ */
231
+ interface FormInstance<Values = any> extends RcFormInstance<Values> {
232
+ /** 滚动到指定字段 */
233
+ scrollToField: (name: NamePath, options?: ScrollOptions) => void;
234
+ /** 获取字段实例 */
235
+ getFieldInstance: (name: NamePath) => any;
236
+ }
237
+ /**
238
+ * 以上类型定义从 antdForm.d.ts 迁移而来
239
+ * 提供了完整的表单实例和字段管理功能
240
+ */
241
+ /**
242
+ * 尺寸类型
243
+ * 定义组件的大小规格
244
+ */
245
+ type ISizeType = "small" | "middle" | "large" | undefined;
246
+ /**
247
+ * 表单字段类型
248
+ * 定义特殊的表单字段类型
249
+ */
250
+ declare type FormFieldType = "group" | "formList" | "formSet" | "divider" | "dependency";
251
+ /**
252
+ * ProField值类型与字段属性映射
253
+ * 定义了各种字段类型对应的属性配置
254
+ */
255
+ interface ProFieldValueTypeWithFieldProps {
256
+ /** 文本类型 */
257
+ text: Record<string, any>;
258
+ /** 密码类型 */
259
+ password: Record<string, any>;
260
+ /** 金额类型 */
261
+ money: Record<string, any>;
262
+ /** 索引类型 */
263
+ index: Record<string, any>;
264
+ /** 带边框索引类型 */
265
+ indexBorder: Record<string, any>;
266
+ /** 选项类型 */
267
+ option: Record<string, any>;
268
+ /** 文本域类型 */
269
+ textarea: Record<string, any>;
270
+ /** 日期类型 */
271
+ date: Record<string, any>;
272
+ /** 周选择类型 */
273
+ dateWeek: Record<string, any>;
274
+ /** 月份选择类型 */
275
+ dateMonth: Record<string, any>;
276
+ /** 季度选择类型 */
277
+ dateQuarter: Record<string, any>;
278
+ /** 年份选择类型 */
279
+ dateYear: Record<string, any>;
280
+ /** 日期时间类型 */
281
+ dateTime: Record<string, any>;
282
+ /** 相对时间类型 */
283
+ fromNow: Record<string, any>;
284
+ /** 日期范围类型 */
285
+ dateRange: Record<string, any>;
286
+ /** 日期时间范围类型 */
287
+ dateTimeRange: Record<string, any>;
288
+ /** 时间类型 */
289
+ time: Record<string, any>;
290
+ /** 时间范围类型 */
291
+ timeRange: Record<string, any>;
292
+ /** 选择器类型 */
293
+ select: Record<string, any>;
294
+ /** 复选框类型 */
295
+ checkbox: Record<string, any>;
296
+ /** 评分类型 */
297
+ rate: Record<string, any>;
298
+ /** 滑块类型 */
299
+ slider: Record<string, any>;
300
+ /** 单选框类型 */
301
+ radio: Record<string, any>;
302
+ /** 单选按钮类型 */
303
+ radioButton: Record<string, any>;
304
+ /** 进度条类型 */
305
+ progress: Record<string, any>;
306
+ /** 百分比类型 */
307
+ percent: Record<string, any>;
308
+ /** 数字类型 */
309
+ digit: Record<string, any>;
310
+ /** 数字范围类型 */
311
+ digitRange: Record<string, any>;
312
+ /** 秒数类型 */
313
+ second: Record<string, any>;
314
+ /** 代码类型 */
315
+ code: Record<string, any>;
316
+ /** JSON代码类型 */
317
+ jsonCode: Record<string, any>;
318
+ /** 头像类型 */
319
+ avatar: Record<string, any>;
320
+ /** 开关类型 */
321
+ switch: Record<string, any>;
322
+ /** 图片类型 */
323
+ image: Record<string, any>;
324
+ /** 级联选择类型 */
325
+ cascader: Record<string, any>;
326
+ /** 树选择类型 */
327
+ treeSelect: Record<string, any>;
328
+ /** 颜色选择类型 */
329
+ color: Record<string, any> & {
330
+ /** 当前颜色值 */
331
+ value?: string;
332
+ /** 弹出框属性 */
333
+ popoverProps?: any;
334
+ /** 模式:只读或编辑 */
335
+ mode?: "read" | "edit";
336
+ /** 颜色变化回调 */
337
+ onChange?: (color: string) => void;
338
+ /** 预设颜色数组 */
339
+ colors?: string[];
340
+ };
341
+ }
342
+ /**
343
+ * 基础表单项属性接口
344
+ * 定义了表单项的通用配置
345
+ * @template T 值类型,默认为any
346
+ */
347
+ interface IAhFormItemProps<T = any> {
348
+ /** 当前值 */
349
+ value?: T;
350
+ /** 值变化回调 */
351
+ onChange?: (v: T) => void;
352
+ /** 标签文本 */
353
+ label?: string | any;
354
+ /** 标题文本 */
355
+ title?: string;
356
+ /** 右侧DOM元素 */
357
+ rightDom?: any;
358
+ /** 左侧DOM元素 */
359
+ leftDom?: any;
360
+ /**
361
+ * 是否显示分隔线
362
+ * @default false
363
+ */
364
+ showDivider?: boolean;
365
+ /**
366
+ * 请求远程数据的函数
367
+ * 可以返回枚举对象、树节点数组或选项数组
368
+ */
369
+ request?: (v?: any) => Promise<ProSchemaValueEnumObj> | Promise<ITreeNode[] | Promise<IOptions<any>[]>>;
370
+ /**
371
+ * 值枚举配置
372
+ * 支持 object 和 Map,Map 支持其他基础类型作为 key
373
+ */
374
+ valueEnum?: ProSchemaValueEnumObj;
375
+ /**
376
+ * 布局方式
377
+ * @default 'horizontal'
378
+ */
379
+ layout?: "horizontal" | "vertical";
380
+ /**
381
+ * 是否禁用
382
+ * @default false
383
+ */
384
+ disabled?: boolean;
385
+ /**
386
+ * 是否是详情模式
387
+ */
388
+ details?: boolean;
389
+ /**
390
+ * 占位符文本
391
+ */
392
+ placeholder?: string;
393
+ /** 是否必填 */
394
+ required?: boolean;
395
+ /**
396
+ * 自定义字典 - 配置这个组件会自动调用 DicUtilService.opt7ListByKey 来获取数据
397
+ * 需要配合 request 使用
398
+ */
399
+ dicGroupMap?: string;
400
+ }
401
+ /**
402
+ * ProField值类型
403
+ * 从ProFieldValueTypeWithFieldProps中提取的键名
404
+ */
405
+ type ProFieldValueType = keyof ProFieldValueTypeWithFieldProps;
406
+ /**
407
+ * 值类型联合
408
+ * 包含ProField类型和自定义扩展类型
409
+ */
410
+ type IValueType = ProFieldValueType | "group" | "reference" | "array" | "string" | "customRender" | "formList" | "formSet" | "stepper" | "divider" | "dependency" | "cascader" | "boolean" | "button" | "money" | "text" | "title" | "datetime";
411
+ /**
412
+ * ProSchema值枚举类型配置
413
+ * 用于配置选项的显示和行为
414
+ */
415
+ declare type ProSchemaValueEnumType = {
416
+ /** 唯一键值 */
417
+ key?: string;
418
+ /** 显示标签 */
419
+ label?: string;
420
+ /** 选项值 */
421
+ value: string | number;
422
+ /** 显示文本 */
423
+ text: string;
424
+ /**
425
+ * 预定义状态颜色
426
+ * 如 'success'、'error'、'warning' 等
427
+ */
428
+ status?: string;
429
+ /**
430
+ * 自定义颜色值
431
+ * 支持十六进制、RGB等格式
432
+ */
433
+ color?: string;
434
+ /**
435
+ * 是否禁用该选项
436
+ * @default false
437
+ */
438
+ disabled?: boolean;
439
+ };
440
+ /**
441
+ * ProSchema值枚举对象类型
442
+ * 支持 Map 和 Object 两种数据结构
443
+ */
444
+ declare type ProSchemaValueEnumObj = Record<string, ProSchemaValueEnumType | (Omit<IOptions<any>, "text"> & {
445
+ /** 显示文本 */
446
+ text: string;
447
+ })>;
448
+ /**
449
+ * ProSchema值枚举Map类型
450
+ * 支持 Map 数据结构,键可以是多种基础类型
451
+ */
452
+ declare type ProSchemaValueEnumMap = Map<string | number | bigint, ProSchemaValueEnumType>;
453
+ /**
454
+ * 依赖关系配置接口
455
+ * 用于配置字段间的依赖逻辑
456
+ */
457
+ interface IDependent {
458
+ /** 依赖的字段名 */
459
+ field: string;
460
+ /**
461
+ * 校验正则表达式
462
+ * 用于匹配依赖字段的值
463
+ */
464
+ regexp?: string;
465
+ /**
466
+ * 依赖的具体值
467
+ */
468
+ value?: string;
469
+ /** 是否显示当前字段 */
470
+ show: boolean;
471
+ /** 是否设为必填 */
472
+ required: boolean;
473
+ /**
474
+ * 提示信息
475
+ * 当依赖条件不满足时显示
476
+ */
477
+ message?: string;
478
+ }
479
+ /**
480
+ * 表单列配置接口
481
+ * 定义表单列的完整配置选项
482
+ * @template Entity 实体类型,默认为Record<string, any>
483
+ */
484
+ interface IAhFormColumns<Entity = Record<string, any>> {
485
+ /**
486
+ * 列的唯一标识符
487
+ * 一般用于 dataIndex 重复的情况
488
+ */
489
+ key?: string | number | bigint;
490
+ /**
491
+ * 与实体映射的键值
492
+ * 数组会被转化为嵌套访问,如 [a,b] => Entity.a.b
493
+ */
494
+ dataIndex?: (string | number | bigint) | (string | number | bigint)[];
495
+ /**
496
+ * 字段依赖关系配置
497
+ * 用于实现字段间的联动效果
498
+ */
499
+ dependent?: IDependent[];
500
+ /**
501
+ * 数据的渲染方式
502
+ * 支持内置类型和自定义valueType
503
+ */
504
+ valueType?: IValueType;
505
+ /**
506
+ * 标题内容
507
+ * 在表单中作为字段标签显示
508
+ */
509
+ title: any | string;
510
+ /**
511
+ * 工具提示内容
512
+ * 会在 title 旁边展示一个图标,鼠标悬停时显示提示
513
+ */
514
+ tooltip?: string;
515
+ /**
516
+ * 值枚举配置
517
+ * 支持函数、对象和Map三种形式
518
+ */
519
+ valueEnum?: ((row: Entity) => ProSchemaValueEnumObj | ProSchemaValueEnumMap) | ProSchemaValueEnumObj | ProSchemaValueEnumMap;
520
+ /** 表单项属性配置 */
521
+ formItemProps?: FormItemProps & {
522
+ usage?: string;
523
+ };
524
+ /** 子列配置,用于嵌套表单结构 */
525
+ columns?: IAhFormColumns<Entity>[];
526
+ /** 字段初始值 */
527
+ initialValue?: any;
528
+ /**
529
+ * 请求远程数据的函数
530
+ * 用于动态获取选项数据
531
+ */
532
+ request?: IAhFormItemProps["request"];
533
+ /**
534
+ * 是否禁用字段
535
+ * @default false
536
+ */
537
+ disabled?: boolean;
538
+ /**
539
+ * 是否显示字段
540
+ * @default true
541
+ */
542
+ show?: boolean;
543
+ /**
544
+ * 布局方式
545
+ * @default 'horizontal'
546
+ */
547
+ layout?: "horizontal" | "vertical";
548
+ /**
549
+ * 是否显示分隔线
550
+ * @default false
551
+ */
552
+ showDivider?: boolean;
553
+ /**
554
+ * 选项数组
555
+ * 用于选择类型字段的静态选项
556
+ */
557
+ options?: IOptions<any>[];
558
+ /**
559
+ * 字段属性配置
560
+ * 传递给 Form.Item 的属性
561
+ */
562
+ fieldProps?: FormItemProps;
563
+ /**
564
+ * 验证规则配置
565
+ */
566
+ rules?: BaseRule[];
567
+ /**
568
+ * 校验规则 - 最后转成form的rules格式
569
+ */
570
+ verRules?: {
571
+ required?: boolean;
572
+ pattern?: string;
573
+ max?: number;
574
+ min?: number;
575
+ type?: string;
576
+ };
577
+ /**
578
+ * 值变化事件回调
579
+ * @param v 新的字段值
580
+ */
581
+ onChange?: (v: any) => void;
582
+ /**
583
+ * 搜索模式配置
584
+ * - local: 强制使用本地搜索,即使有 request 函数
585
+ * - remote: 强制使用远程搜索,需要配合 request 函数
586
+ * - auto: 自动判断,有 request 时使用远程搜索,否则使用本地搜索
587
+ * @default 'auto'
588
+ */
589
+ searchMode?: "local" | "remote" | "auto";
590
+ /**
591
+ * 自定义渲染函数
592
+ * 用于完全自定义字段的显示和交互
593
+ * @param value 字段值
594
+ * @param record 当前记录数据
595
+ * @param index 索引
596
+ * @param form 表单实例
597
+ * @param extra 额外信息,包含类型(读取或写入)
598
+ * @returns 渲染结果
599
+ */
600
+ render?: (value: unknown, record: Entity, index: number, form: FormInstance, extra: {
601
+ /** 渲染类型:读取模式或编辑模式 */
602
+ type: "read" | "write";
603
+ }) => any;
604
+ /**
605
+ * 业务场景标识
606
+ * 用于区分不同的业务场景,如用户头像可能有注册、评论、订单等不同场景
607
+ */
608
+ busiScene?: string;
609
+ /**
610
+ * 自定义渲染函数 - 前端代码预设一些函数的名字,然后可以通过这个字段来调用
611
+ */
612
+ renderFunKey?: string;
613
+ /**
614
+ * 自定义字典 - 配置这个组件会自动调用 DicUtilService.opt7ListByKey 来获取数据
615
+ * 需要配合 request 使用
616
+ */
617
+ dicGroupMap?: string;
618
+ }
619
+ /**
620
+ * 表单列接口
621
+ * IAhFormColumns的别名,提供更简洁的命名
622
+ * @template T 实体类型,默认为any
623
+ */
624
+ interface IFormColumns<T = any> extends IAhFormColumns<T> {
625
+ }
626
+ /**
627
+ * 级联选择器属性接口
628
+ * 继承基础表单项属性,专门用于级联选择组件
629
+ */
630
+ type IAhCascaderProps = IAhFormItemProps<string> & {
631
+ /**
632
+ * 选择模式
633
+ * - multiple: 多选模式
634
+ * - tags: 标签模式
635
+ */
636
+ mode?: "multiple" | "tags";
637
+ /**
638
+ * 是否在每级菜单选择时都触发变化
639
+ * 仅在单选时生效,具体行为参考 Ant Design Cascader 组件文档
640
+ * @default false
641
+ */
642
+ changeOnSelect?: boolean;
643
+ /**
644
+ * 值变化回调
645
+ * @param value 选中的值数组
646
+ */
647
+ onChange?: (value: string[]) => void;
648
+ /**
649
+ * 当前选中值
650
+ */
651
+ value?: string[];
652
+ /**
653
+ * 请求远程数据函数
654
+ * 返回树形结构的选项数据
655
+ * @param v 查询参数
656
+ * @returns Promise包装的树节点数组
657
+ */
658
+ request?: (v?: any) => Promise<ITreeNode[]>;
659
+ };
660
+ /**
661
+ * 枚举对象联合类型
662
+ * 支持多种枚举数据结构
663
+ */
664
+ type IEnumObjAll = ProSchemaValueEnumMap | ProSchemaValueEnumObj | Record<string, IOptions<any> & {
665
+ /** 显示文本 */
666
+ text: string;
667
+ }>;
668
+ /**
669
+ * 标准枚举对象类型
670
+ * 基于IOptions扩展的枚举配置
671
+ */
672
+ type IEnumObj = Record<string, IOptions<any> & {
673
+ /** 显示文本 */
674
+ text: string;
675
+ }>;
676
+
677
+ export type { FieldData, FieldError, FilterFunc, FormFieldType, FormInstance, GetFieldsValueConfig, IAhCascaderProps, IAhFormColumns, IAhFormItemProps, IDependent, IEnumObj, IEnumObjAll, IFormColumns, IJsonRuleItem, IJsonRuleListItem, ISizeType, IValueType, InternalFieldData, InternalNamePath, Meta, NamePath, ProFieldValueType, ProFieldValueTypeWithFieldProps, ProFormInstance, ProFormInstanceType, ProSchemaValueEnumMap, ProSchemaValueEnumObj, ProSchemaValueEnumType, RcFormInstance, ValidateFields, ValidateOptions };