pro-design-vue 1.3.20 → 1.3.22

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 (145) hide show
  1. package/dist/index.css +1 -1
  2. package/dist/index.full.js +1203 -1588
  3. package/dist/index.full.min.js +7 -9
  4. package/dist/index.full.min.js.map +1 -1
  5. package/dist/index.full.min.mjs +7 -9
  6. package/dist/index.full.min.mjs.map +1 -1
  7. package/dist/index.full.mjs +1204 -1589
  8. package/es/components/config-provider/src/typing.d.ts +3 -1
  9. package/es/components/table/src/components/Body/Body.vue.d.ts +270 -15
  10. package/es/components/table/src/components/Body/BodyCell.vue.d.ts +255 -0
  11. package/es/components/table/src/components/Body/BodyEditCell.d.ts +60 -0
  12. package/es/components/table/src/components/Body/BodyExtraCell.vue.d.ts +6 -1
  13. package/es/components/table/src/components/Body/BodyRow.vue.d.ts +270 -15
  14. package/es/components/table/src/components/Body/BodyRows.vue.d.ts +270 -15
  15. package/es/components/table/src/components/Body/{BodyCell.d.ts → BodyTextCell.d.ts} +1 -7
  16. package/es/components/table/src/components/ExpandIcon.vue.d.ts +3 -0
  17. package/es/components/table/src/components/InteralTable.vue.d.ts +332 -19
  18. package/es/components/table/src/components/Table.d.ts +60 -0
  19. package/es/components/table/src/components/context/TableContext.d.ts +6 -1
  20. package/es/components/table/src/components/interface.d.ts +308 -23
  21. package/es/components/table/src/hooks/useCellProps.d.ts +5 -1
  22. package/es/components/table/src/hooks/useEdit.d.ts +24 -7
  23. package/es/components/table/src/utils/form-model.d.ts +25 -0
  24. package/es/components/table/src/utils/util.d.ts +1 -0
  25. package/es/index.d.ts +291 -5
  26. package/es/packages/components/table/src/components/Body/BodyCell.vue.mjs +35 -0
  27. package/es/packages/components/table/src/components/Body/BodyCell.vue.mjs.map +1 -0
  28. package/es/packages/components/table/src/components/Body/BodyCell.vue2.mjs +129 -0
  29. package/es/packages/components/table/src/components/Body/BodyCell.vue2.mjs.map +1 -0
  30. package/es/packages/components/table/src/components/Body/BodyEditCell.mjs +256 -0
  31. package/es/packages/components/table/src/components/Body/BodyEditCell.mjs.map +1 -0
  32. package/es/packages/components/table/src/components/Body/BodyExtraCell.vue.mjs +2 -1
  33. package/es/packages/components/table/src/components/Body/BodyExtraCell.vue.mjs.map +1 -1
  34. package/es/packages/components/table/src/components/Body/BodyExtraCell.vue2.mjs +1 -0
  35. package/es/packages/components/table/src/components/Body/BodyExtraCell.vue2.mjs.map +1 -1
  36. package/es/packages/components/table/src/components/Body/BodyRow.vue.mjs +66 -9
  37. package/es/packages/components/table/src/components/Body/BodyRow.vue.mjs.map +1 -1
  38. package/es/packages/components/table/src/components/Body/BodyRow.vue2.mjs +26 -18
  39. package/es/packages/components/table/src/components/Body/BodyRow.vue2.mjs.map +1 -1
  40. package/es/packages/components/table/src/components/Body/{BodyCell.mjs → BodyTextCell.mjs} +25 -155
  41. package/es/packages/components/table/src/components/Body/BodyTextCell.mjs.map +1 -0
  42. package/es/packages/components/table/src/components/ExpandIcon.vue.mjs.map +1 -1
  43. package/es/packages/components/table/src/components/ExpandIcon.vue2.mjs +4 -2
  44. package/es/packages/components/table/src/components/ExpandIcon.vue2.mjs.map +1 -1
  45. package/es/packages/components/table/src/components/InteralTable.vue.mjs +24 -25
  46. package/es/packages/components/table/src/components/InteralTable.vue.mjs.map +1 -1
  47. package/es/packages/components/table/src/components/InteralTable.vue2.mjs +43 -97
  48. package/es/packages/components/table/src/components/InteralTable.vue2.mjs.map +1 -1
  49. package/es/packages/components/table/src/components/Table.mjs +24 -20
  50. package/es/packages/components/table/src/components/Table.mjs.map +1 -1
  51. package/es/packages/components/table/src/components/context/TableContext.mjs.map +1 -1
  52. package/es/packages/components/table/src/components/interface.mjs +28 -0
  53. package/es/packages/components/table/src/components/interface.mjs.map +1 -1
  54. package/es/packages/components/table/src/hooks/useCellProps.mjs +8 -0
  55. package/es/packages/components/table/src/hooks/useCellProps.mjs.map +1 -1
  56. package/es/packages/components/table/src/hooks/useEdit.mjs +293 -18
  57. package/es/packages/components/table/src/hooks/useEdit.mjs.map +1 -1
  58. package/es/packages/components/table/src/utils/form-model.mjs +98 -0
  59. package/es/packages/components/table/src/utils/form-model.mjs.map +1 -0
  60. package/es/packages/components/table/src/utils/util.mjs +4 -1
  61. package/es/packages/components/table/src/utils/util.mjs.map +1 -1
  62. package/es/packages/utils/dom.mjs +15 -1
  63. package/es/packages/utils/dom.mjs.map +1 -1
  64. package/es/packages/utils/index.mjs +1 -1
  65. package/es/utils/dom.d.ts +2 -0
  66. package/es/version.d.ts +1 -1
  67. package/es/version.mjs +1 -1
  68. package/es/version.mjs.map +1 -1
  69. package/lib/components/config-provider/src/typing.d.ts +3 -1
  70. package/lib/components/table/src/components/Body/Body.vue.d.ts +270 -15
  71. package/lib/components/table/src/components/Body/BodyCell.vue.d.ts +255 -0
  72. package/lib/components/table/src/components/Body/BodyEditCell.d.ts +60 -0
  73. package/lib/components/table/src/components/Body/BodyExtraCell.vue.d.ts +6 -1
  74. package/lib/components/table/src/components/Body/BodyRow.vue.d.ts +270 -15
  75. package/lib/components/table/src/components/Body/BodyRows.vue.d.ts +270 -15
  76. package/lib/components/table/src/components/Body/{BodyCell.d.ts → BodyTextCell.d.ts} +1 -7
  77. package/lib/components/table/src/components/ExpandIcon.vue.d.ts +3 -0
  78. package/lib/components/table/src/components/InteralTable.vue.d.ts +332 -19
  79. package/lib/components/table/src/components/Table.d.ts +60 -0
  80. package/lib/components/table/src/components/context/TableContext.d.ts +6 -1
  81. package/lib/components/table/src/components/interface.d.ts +308 -23
  82. package/lib/components/table/src/hooks/useCellProps.d.ts +5 -1
  83. package/lib/components/table/src/hooks/useEdit.d.ts +24 -7
  84. package/lib/components/table/src/utils/form-model.d.ts +25 -0
  85. package/lib/components/table/src/utils/util.d.ts +1 -0
  86. package/lib/index.d.ts +291 -5
  87. package/lib/packages/components/table/src/components/Body/BodyCell.vue.js +39 -0
  88. package/lib/packages/components/table/src/components/Body/BodyCell.vue.js.map +1 -0
  89. package/lib/packages/components/table/src/components/Body/BodyCell.vue2.js +133 -0
  90. package/lib/packages/components/table/src/components/Body/BodyCell.vue2.js.map +1 -0
  91. package/lib/packages/components/table/src/components/Body/BodyEditCell.js +260 -0
  92. package/lib/packages/components/table/src/components/Body/BodyEditCell.js.map +1 -0
  93. package/lib/packages/components/table/src/components/Body/BodyExtraCell.vue.js +2 -1
  94. package/lib/packages/components/table/src/components/Body/BodyExtraCell.vue.js.map +1 -1
  95. package/lib/packages/components/table/src/components/Body/BodyExtraCell.vue2.js +1 -0
  96. package/lib/packages/components/table/src/components/Body/BodyExtraCell.vue2.js.map +1 -1
  97. package/lib/packages/components/table/src/components/Body/BodyRow.vue.js +66 -9
  98. package/lib/packages/components/table/src/components/Body/BodyRow.vue.js.map +1 -1
  99. package/lib/packages/components/table/src/components/Body/BodyRow.vue2.js +24 -16
  100. package/lib/packages/components/table/src/components/Body/BodyRow.vue2.js.map +1 -1
  101. package/lib/packages/components/table/src/components/Body/{BodyCell.js → BodyTextCell.js} +24 -154
  102. package/lib/packages/components/table/src/components/Body/BodyTextCell.js.map +1 -0
  103. package/lib/packages/components/table/src/components/ExpandIcon.vue.js.map +1 -1
  104. package/lib/packages/components/table/src/components/ExpandIcon.vue2.js +4 -2
  105. package/lib/packages/components/table/src/components/ExpandIcon.vue2.js.map +1 -1
  106. package/lib/packages/components/table/src/components/InteralTable.vue.js +24 -25
  107. package/lib/packages/components/table/src/components/InteralTable.vue.js.map +1 -1
  108. package/lib/packages/components/table/src/components/InteralTable.vue2.js +43 -97
  109. package/lib/packages/components/table/src/components/InteralTable.vue2.js.map +1 -1
  110. package/lib/packages/components/table/src/components/Table.js +24 -20
  111. package/lib/packages/components/table/src/components/Table.js.map +1 -1
  112. package/lib/packages/components/table/src/components/context/TableContext.js.map +1 -1
  113. package/lib/packages/components/table/src/components/interface.js +28 -0
  114. package/lib/packages/components/table/src/components/interface.js.map +1 -1
  115. package/lib/packages/components/table/src/hooks/useCellProps.js +8 -0
  116. package/lib/packages/components/table/src/hooks/useCellProps.js.map +1 -1
  117. package/lib/packages/components/table/src/hooks/useEdit.js +292 -17
  118. package/lib/packages/components/table/src/hooks/useEdit.js.map +1 -1
  119. package/lib/packages/components/table/src/utils/form-model.js +102 -0
  120. package/lib/packages/components/table/src/utils/form-model.js.map +1 -0
  121. package/lib/packages/components/table/src/utils/util.js +4 -0
  122. package/lib/packages/components/table/src/utils/util.js.map +1 -1
  123. package/lib/packages/utils/dom.js +16 -0
  124. package/lib/packages/utils/dom.js.map +1 -1
  125. package/lib/packages/utils/index.js +2 -0
  126. package/lib/packages/utils/index.js.map +1 -1
  127. package/lib/utils/dom.d.ts +2 -0
  128. package/lib/version.d.ts +1 -1
  129. package/lib/version.js +1 -1
  130. package/lib/version.js.map +1 -1
  131. package/package.json +1 -1
  132. package/theme-chalk/index.css +1 -1
  133. package/theme-chalk/src/table/table.less +78 -25
  134. package/es/components/table/src/components/Body/EditInput.vue.d.ts +0 -102
  135. package/es/packages/components/table/src/components/Body/BodyCell.mjs.map +0 -1
  136. package/es/packages/components/table/src/components/Body/EditInput.vue.mjs +0 -48
  137. package/es/packages/components/table/src/components/Body/EditInput.vue.mjs.map +0 -1
  138. package/es/packages/components/table/src/components/Body/EditInput.vue2.mjs +0 -151
  139. package/es/packages/components/table/src/components/Body/EditInput.vue2.mjs.map +0 -1
  140. package/lib/components/table/src/components/Body/EditInput.vue.d.ts +0 -102
  141. package/lib/packages/components/table/src/components/Body/BodyCell.js.map +0 -1
  142. package/lib/packages/components/table/src/components/Body/EditInput.vue.js +0 -52
  143. package/lib/packages/components/table/src/components/Body/EditInput.vue.js.map +0 -1
  144. package/lib/packages/components/table/src/components/Body/EditInput.vue2.js +0 -155
  145. package/lib/packages/components/table/src/components/Body/EditInput.vue2.js.map +0 -1
@@ -190,10 +190,18 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
190
190
  type: BooleanConstructor;
191
191
  default: undefined;
192
192
  };
193
+ selectRowByClick: {
194
+ type: BooleanConstructor;
195
+ default: undefined;
196
+ };
193
197
  expandIcon: {
194
198
  type: import("vue").PropType<import("./interface").RenderExpandIcon<import("./interface").DefaultRecordType>>;
195
199
  default: undefined;
196
200
  };
201
+ expandIconType: {
202
+ type: import("vue").PropType<import("./interface").ExpandIconType>;
203
+ default: undefined;
204
+ };
197
205
  onExpand: {
198
206
  type: import("vue").PropType<(expanded: boolean, record: import("./interface").DefaultRecordType) => void>;
199
207
  default: undefined;
@@ -259,6 +267,14 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
259
267
  }) => Record<string, any>>;
260
268
  default: () => {};
261
269
  };
270
+ editableKeys: {
271
+ type: import("vue").PropType<Key[]>;
272
+ default: undefined;
273
+ };
274
+ rowEditable: {
275
+ type: import("vue").PropType<import("./interface").RowEditableConfig<import("./interface").DefaultRecordType>>;
276
+ default: undefined;
277
+ };
262
278
  showHeader: {
263
279
  type: BooleanConstructor;
264
280
  default: boolean;
@@ -431,6 +447,9 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
431
447
  type: BooleanConstructor;
432
448
  default: undefined;
433
449
  };
450
+ editableCellState: {
451
+ type: import("vue").PropType<import("./interface").EditableCellType<import("./interface").DefaultRecordType>>;
452
+ };
434
453
  paginationSticky: {
435
454
  type: import("vue").PropType<boolean | import("./interface").BottomSticky>;
436
455
  default: boolean;
@@ -484,6 +503,15 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
484
503
  type: import("vue").PropType<(opt: import("pro-design-vue").CellRenderArgs) => void>;
485
504
  default: undefined;
486
505
  };
506
+ onDataChange: {
507
+ type: import("vue").PropType<(dataSource: import("./interface").DefaultRecordType[]) => void>;
508
+ };
509
+ onRowValidate: {
510
+ type: import("vue").PropType<(TablePromiseErrorData: any) => void>;
511
+ };
512
+ onValidate: {
513
+ type: import("vue").PropType<(TablePromiseErrorData: any) => void>;
514
+ };
487
515
  'onUpdate:pagination': {
488
516
  type: import("vue").PropType<(info: import("pro-design-vue").ProTablePaginationConfig) => void>;
489
517
  };
@@ -685,10 +713,18 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
685
713
  type: BooleanConstructor;
686
714
  default: undefined;
687
715
  };
716
+ selectRowByClick: {
717
+ type: BooleanConstructor;
718
+ default: undefined;
719
+ };
688
720
  expandIcon: {
689
721
  type: import("vue").PropType<import("./interface").RenderExpandIcon<import("./interface").DefaultRecordType>>;
690
722
  default: undefined;
691
723
  };
724
+ expandIconType: {
725
+ type: import("vue").PropType<import("./interface").ExpandIconType>;
726
+ default: undefined;
727
+ };
692
728
  onExpand: {
693
729
  type: import("vue").PropType<(expanded: boolean, record: import("./interface").DefaultRecordType) => void>;
694
730
  default: undefined;
@@ -754,6 +790,14 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
754
790
  }) => Record<string, any>>;
755
791
  default: () => {};
756
792
  };
793
+ editableKeys: {
794
+ type: import("vue").PropType<Key[]>;
795
+ default: undefined;
796
+ };
797
+ rowEditable: {
798
+ type: import("vue").PropType<import("./interface").RowEditableConfig<import("./interface").DefaultRecordType>>;
799
+ default: undefined;
800
+ };
757
801
  showHeader: {
758
802
  type: BooleanConstructor;
759
803
  default: boolean;
@@ -926,6 +970,9 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
926
970
  type: BooleanConstructor;
927
971
  default: undefined;
928
972
  };
973
+ editableCellState: {
974
+ type: import("vue").PropType<import("./interface").EditableCellType<import("./interface").DefaultRecordType>>;
975
+ };
929
976
  paginationSticky: {
930
977
  type: import("vue").PropType<boolean | import("./interface").BottomSticky>;
931
978
  default: boolean;
@@ -979,6 +1026,15 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
979
1026
  type: import("vue").PropType<(opt: import("pro-design-vue").CellRenderArgs) => void>;
980
1027
  default: undefined;
981
1028
  };
1029
+ onDataChange: {
1030
+ type: import("vue").PropType<(dataSource: import("./interface").DefaultRecordType[]) => void>;
1031
+ };
1032
+ onRowValidate: {
1033
+ type: import("vue").PropType<(TablePromiseErrorData: any) => void>;
1034
+ };
1035
+ onValidate: {
1036
+ type: import("vue").PropType<(TablePromiseErrorData: any) => void>;
1037
+ };
982
1038
  'onUpdate:pagination': {
983
1039
  type: import("vue").PropType<(info: import("pro-design-vue").ProTablePaginationConfig) => void>;
984
1040
  };
@@ -1089,7 +1145,9 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
1089
1145
  defaultExpandedRowKeys: Key[];
1090
1146
  expandedRowRender: import("./interface").ExpandedRowRender<import("./interface").DefaultRecordType>;
1091
1147
  expandRowByClick: boolean;
1148
+ selectRowByClick: boolean;
1092
1149
  expandIcon: import("./interface").RenderExpandIcon<import("./interface").DefaultRecordType>;
1150
+ expandIconType: import("./interface").ExpandIconType;
1093
1151
  onExpand: (expanded: boolean, record: import("./interface").DefaultRecordType) => void;
1094
1152
  onExpandedRowsChange: (expandedKeys: Key[]) => void;
1095
1153
  defaultExpandAllRows: boolean;
@@ -1113,6 +1171,8 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
1113
1171
  column: import("pro-design-vue").ProTableColumnType<import("./interface").DefaultRecordType>;
1114
1172
  columnIndex: number;
1115
1173
  }) => Record<string, any>;
1174
+ editableKeys: Key[];
1175
+ rowEditable: import("./interface").RowEditableConfig<import("./interface").DefaultRecordType>;
1116
1176
  showHeader: boolean;
1117
1177
  showSorterTooltip: boolean | Partial<import("vue").ExtractPropTypes<{
1118
1178
  title: import("node_modules/vue-types/dist/index").VueTypeValidableDef<any>;
@@ -7,7 +7,7 @@ import type { FlattenRecordsType } from '../../hooks/useFlattenRecords';
7
7
  import type { FlattenAllRecordsType } from '../../hooks/useKVMap';
8
8
  import type { SelectionsRes } from '../../hooks/useRowSelection';
9
9
  import type { SortState } from '../../hooks/useSorter';
10
- import type { ColumnsType, DragColumnEventInfo, DragRowEventInfo, ExpandType, GetPopupContainer, GetRowKey, Key, Position, SummaryFixed, ProTableProps, TableLocale, TableRowSelection, TriggerEventHandler } from '../interface';
10
+ import type { ColumnsType, DragColumnEventInfo, DragRowEventInfo, ExpandType, GetPopupContainer, GetRowKey, Key, Position, SummaryFixed, ProTableProps, TableLocale, TableRowSelection, TriggerEventHandler, ExpandIconType } from '../interface';
11
11
  type PaginationPos = {
12
12
  bottom?: 'left' | 'right';
13
13
  top?: 'left' | 'right';
@@ -47,6 +47,7 @@ export interface TableContextProps extends CalType, UseColumnsType, FlattenRecor
47
47
  onTriggerExpand: TriggerEventHandler<any>;
48
48
  childrenColumnName: Ref<string>;
49
49
  expandType: Ref<ExpandType>;
50
+ expandIconType: ComputedRef<ExpandIconType>;
50
51
  supportSticky: boolean;
51
52
  mergedRowSelection: Ref<TableRowSelection>;
52
53
  getPopupContainer: Ref<GetPopupContainer>;
@@ -74,6 +75,10 @@ export interface TableContextProps extends CalType, UseColumnsType, FlattenRecor
74
75
  bottomPaginationHeight: Ref<number>;
75
76
  pos: ComputedRef<PaginationPos>;
76
77
  rootRef: Ref<HTMLDivElement | undefined>;
78
+ cancelEditable: (recordKey: Key) => boolean;
79
+ startEditable: (recordKey: Key, recordValue?: any) => boolean;
80
+ saveEditable: (recordKey: Key) => Promise<boolean>;
81
+ isEditable: (recordKey: Key) => boolean;
77
82
  }
78
83
  export declare const TableContextKey: InjectionKey<TableContextProps>;
79
84
  export declare const useProvideTable: (props: TableContextProps) => void;
@@ -133,6 +133,7 @@ export interface RenderExpandIconProps<RecordType> {
133
133
  onExpand: TriggerEventHandler<RecordType>;
134
134
  }
135
135
  export type RenderExpandIcon<RecordType> = (props: RenderExpandIconProps<RecordType>) => any;
136
+ export type ExpandIconType = 'default' | 'arrow';
136
137
  export type SelectionItemSelectFn = (currentRowKeys: Key[]) => void;
137
138
  export interface SelectionItem {
138
139
  key: string;
@@ -169,6 +170,60 @@ type GetComponentProps<DataType> = (data: DataType, index?: number) => Omit<HTML
169
170
  };
170
171
  export type ResizeActionType = 'start' | 'move' | 'end';
171
172
  export type SummaryFixed = boolean | 'top' | 'bottom';
173
+ export interface ValueParserParams<RecordType = DefaultRecordType, TValue = any> {
174
+ newValue: TValue;
175
+ oldValue: TValue;
176
+ record: RecordType;
177
+ recordIndexs: number[];
178
+ column: ColumnType<RecordType>;
179
+ }
180
+ export interface EditableValueParams<RecordType = DefaultRecordType, TValue = any> {
181
+ value: TValue;
182
+ record: RecordType;
183
+ recordIndexs: number[];
184
+ column: ColumnType<RecordType>;
185
+ }
186
+ export interface ValueParserFunc<T = any, TValue = any> {
187
+ (params: EditableValueParams<T, TValue>): TValue | null | undefined;
188
+ }
189
+ export interface ValueGetterFunc<T = any, TValue = any> {
190
+ (params: EditableValueParams<T, TValue>): string | null | undefined;
191
+ }
192
+ export type EditableTrigger = 'click' | 'dblClick' | 'contextmenu';
193
+ export interface PlainObject {
194
+ [key: string]: any;
195
+ }
196
+ export type EditableCellProps<T> = PlainObject | ((params: EditableValueParams<T>) => PlainObject);
197
+ export type EditableCellRules<T> = EditRule[] | ((params: EditableValueParams<T>) => EditRule[]);
198
+ export type EditableCellType<T> = (params: EditableValueParams<T>) => boolean;
199
+ export type RowEditableType = 'single' | 'multiple';
200
+ export type RowEditableConfig<DataType> = {
201
+ /**
202
+ * @type single | multiple
203
+ * @name 编辑的类型,支持单选和多选
204
+ */
205
+ type?: RowEditableType;
206
+ /** @name 正在编辑的列 */
207
+ editableKeys?: Key[];
208
+ /** 只能编辑一行的的提示 */
209
+ onlyOneLineEditorAlertMessage?: string;
210
+ /** 同时只能新增一行的提示 */
211
+ onlyAddOneLineAlertMessage?: string | false;
212
+ /** 正在编辑的列修改的时候 */
213
+ onChange?: (editableKeys: Key[], editableRows: DataType[] | DataType) => void;
214
+ /** 行保存的时候 */
215
+ onSave?: (
216
+ /** 行 id,一般是唯一id */
217
+ key: Key,
218
+ /** 当前修改的行的值 */
219
+ record: DataType & {
220
+ index?: number;
221
+ },
222
+ /** 原始值,可以用于判断是否修改 */
223
+ originRow: DataType & {
224
+ index?: number;
225
+ }) => Promise<any | void> | any | void;
226
+ };
172
227
  export declare const baseTableProps: <T = DefaultRecordType>() => {
173
228
  ignoreCellKey: BooleanConstructor;
174
229
  showHeaderScrollbar: BooleanConstructor;
@@ -286,10 +341,18 @@ export declare const baseTableProps: <T = DefaultRecordType>() => {
286
341
  type: BooleanConstructor;
287
342
  default: undefined;
288
343
  };
344
+ selectRowByClick: {
345
+ type: BooleanConstructor;
346
+ default: undefined;
347
+ };
289
348
  expandIcon: {
290
349
  type: PropType<RenderExpandIcon<T>>;
291
350
  default: undefined;
292
351
  };
352
+ expandIconType: {
353
+ type: PropType<ExpandIconType>;
354
+ default: undefined;
355
+ };
293
356
  onExpand: {
294
357
  type: PropType<(expanded: boolean, record: T) => void>;
295
358
  default: undefined;
@@ -353,6 +416,14 @@ export declare const baseTableProps: <T = DefaultRecordType>() => {
353
416
  }) => Record<string, any>>;
354
417
  default: () => {};
355
418
  };
419
+ editableKeys: {
420
+ type: PropType<Key[]>;
421
+ default: undefined;
422
+ };
423
+ rowEditable: {
424
+ type: PropType<RowEditableConfig<T>>;
425
+ default: undefined;
426
+ };
356
427
  showHeader: {
357
428
  type: BooleanConstructor;
358
429
  default: boolean;
@@ -462,6 +533,9 @@ export declare const baseTableProps: <T = DefaultRecordType>() => {
462
533
  type: BooleanConstructor;
463
534
  default: undefined;
464
535
  };
536
+ editableCellState: {
537
+ type: PropType<EditableCellType<T>>;
538
+ };
465
539
  paginationSticky: {
466
540
  type: PropType<boolean | BottomSticky>;
467
541
  default: boolean;
@@ -515,6 +589,15 @@ export declare const baseTableProps: <T = DefaultRecordType>() => {
515
589
  type: PropType<(opt: CellRenderArgs) => void>;
516
590
  default: undefined;
517
591
  };
592
+ onDataChange: {
593
+ type: PropType<(dataSource: T[]) => void>;
594
+ };
595
+ onRowValidate: {
596
+ type: PropType<(TablePromiseErrorData: any) => void>;
597
+ };
598
+ onValidate: {
599
+ type: PropType<(TablePromiseErrorData: any) => void>;
600
+ };
518
601
  'onUpdate:pagination': {
519
602
  type: PropType<(info: TablePaginationConfig) => void>;
520
603
  };
@@ -676,10 +759,18 @@ export declare const tableProps: <T = DefaultRecordType>() => {
676
759
  type: BooleanConstructor;
677
760
  default: undefined;
678
761
  };
762
+ selectRowByClick: {
763
+ type: BooleanConstructor;
764
+ default: undefined;
765
+ };
679
766
  expandIcon: {
680
767
  type: PropType<RenderExpandIcon<T>>;
681
768
  default: undefined;
682
769
  };
770
+ expandIconType: {
771
+ type: PropType<ExpandIconType>;
772
+ default: undefined;
773
+ };
683
774
  onExpand: {
684
775
  type: PropType<(expanded: boolean, record: T) => void>;
685
776
  default: undefined;
@@ -743,6 +834,14 @@ export declare const tableProps: <T = DefaultRecordType>() => {
743
834
  }) => Record<string, any>>;
744
835
  default: () => {};
745
836
  };
837
+ editableKeys: {
838
+ type: PropType<Key[]>;
839
+ default: undefined;
840
+ };
841
+ rowEditable: {
842
+ type: PropType<RowEditableConfig<T>>;
843
+ default: undefined;
844
+ };
746
845
  showHeader: {
747
846
  type: BooleanConstructor;
748
847
  default: boolean;
@@ -913,6 +1012,9 @@ export declare const tableProps: <T = DefaultRecordType>() => {
913
1012
  type: BooleanConstructor;
914
1013
  default: undefined;
915
1014
  };
1015
+ editableCellState: {
1016
+ type: PropType<EditableCellType<T>>;
1017
+ };
916
1018
  paginationSticky: {
917
1019
  type: PropType<boolean | BottomSticky>;
918
1020
  default: boolean;
@@ -966,6 +1068,15 @@ export declare const tableProps: <T = DefaultRecordType>() => {
966
1068
  type: PropType<(opt: CellRenderArgs) => void>;
967
1069
  default: undefined;
968
1070
  };
1071
+ onDataChange: {
1072
+ type: PropType<(dataSource: T[]) => void>;
1073
+ };
1074
+ onRowValidate: {
1075
+ type: PropType<(TablePromiseErrorData: any) => void>;
1076
+ };
1077
+ onValidate: {
1078
+ type: PropType<(TablePromiseErrorData: any) => void>;
1079
+ };
969
1080
  'onUpdate:pagination': {
970
1081
  type: PropType<(info: TablePaginationConfig) => void>;
971
1082
  };
@@ -1169,10 +1280,18 @@ declare class Helper<T extends DefaultRecordType> {
1169
1280
  type: BooleanConstructor;
1170
1281
  default: undefined;
1171
1282
  };
1283
+ selectRowByClick: {
1284
+ type: BooleanConstructor;
1285
+ default: undefined;
1286
+ };
1172
1287
  expandIcon: {
1173
1288
  type: PropType<RenderExpandIcon<T>>;
1174
1289
  default: undefined;
1175
1290
  };
1291
+ expandIconType: {
1292
+ type: PropType<ExpandIconType>;
1293
+ default: undefined;
1294
+ };
1176
1295
  onExpand: {
1177
1296
  type: PropType<(expanded: boolean, record: T) => void>;
1178
1297
  default: undefined;
@@ -1236,6 +1355,14 @@ declare class Helper<T extends DefaultRecordType> {
1236
1355
  }) => Record<string, any>>;
1237
1356
  default: () => {};
1238
1357
  };
1358
+ editableKeys: {
1359
+ type: PropType<Key[]>;
1360
+ default: undefined;
1361
+ };
1362
+ rowEditable: {
1363
+ type: PropType<RowEditableConfig<T>>;
1364
+ default: undefined;
1365
+ };
1239
1366
  showHeader: {
1240
1367
  type: BooleanConstructor;
1241
1368
  default: boolean;
@@ -1406,6 +1533,9 @@ declare class Helper<T extends DefaultRecordType> {
1406
1533
  type: BooleanConstructor;
1407
1534
  default: undefined;
1408
1535
  };
1536
+ editableCellState: {
1537
+ type: PropType<EditableCellType<T>>;
1538
+ };
1409
1539
  paginationSticky: {
1410
1540
  type: PropType<boolean | BottomSticky>;
1411
1541
  default: boolean;
@@ -1459,6 +1589,15 @@ declare class Helper<T extends DefaultRecordType> {
1459
1589
  type: PropType<(opt: CellRenderArgs) => void>;
1460
1590
  default: undefined;
1461
1591
  };
1592
+ onDataChange: {
1593
+ type: PropType<(dataSource: T[]) => void>;
1594
+ };
1595
+ onRowValidate: {
1596
+ type: PropType<(TablePromiseErrorData: any) => void>;
1597
+ };
1598
+ onValidate: {
1599
+ type: PropType<(TablePromiseErrorData: any) => void>;
1600
+ };
1462
1601
  'onUpdate:pagination': {
1463
1602
  type: PropType<(info: TablePaginationConfig) => void>;
1464
1603
  };
@@ -1602,27 +1741,61 @@ export interface CellTooltip {
1602
1741
  shouldOpen?: (isEllipsis: boolean, args: CellRenderArgs) => boolean;
1603
1742
  allowEnter?: boolean;
1604
1743
  }
1605
- export interface ValueParserParams<RecordType = DefaultRecordType, TValue = any> {
1606
- newValue: TValue;
1607
- oldValue: TValue;
1608
- record: RecordType;
1609
- recordIndexs: number[];
1610
- column: ColumnType<RecordType>;
1611
- }
1612
- export interface EditableValueParams<RecordType = DefaultRecordType, TValue = any> {
1613
- value: TValue;
1614
- record: RecordType;
1615
- recordIndexs: number[];
1616
- column: ColumnType<RecordType>;
1617
- }
1618
- export interface ValueParserFunc<T = any, TValue = any> {
1619
- (params: ValueParserParams<T, TValue>): TValue | null | undefined;
1620
- }
1621
- export interface ValueGetterFunc<T = any, TValue = any> {
1622
- (params: EditableValueParams<T, TValue>): string | null | undefined;
1744
+ export interface EditableCellConfig<T = DefaultRecordType> {
1745
+ /**
1746
+ * 除了点击非自身元素退出编辑态之外,还有哪些事件退出编辑态。示例:`abortEditOnEvent: ['onChange']`
1747
+ */
1748
+ abortEditOnEvent?: string[];
1749
+ editableTrigger?: EditableTrigger | EditableTrigger[];
1750
+ /**
1751
+ * 组件定义,如:`Input` `Select`。对于完全自定义的组件(非组件库内的组件),组件需要支持 `value` `onChange` ;如果还需要支持校验规则,则组件还需实现 `tips` 和 `status` 两个 API,实现规则可参考 `Input` 组件
1752
+ */
1753
+ component?: any;
1754
+ /**
1755
+ * 单元格默认状态是否为编辑态
1756
+ * @default false
1757
+ */
1758
+ defaultEditable?: boolean;
1759
+ /**
1760
+ * 设置当前列的单元格始终保持为编辑态
1761
+ * @default false
1762
+ */
1763
+ keepEditMode?: boolean;
1764
+ /**
1765
+ * 是否可以编辑
1766
+ */
1767
+ editable?: (context: EditableValueParams<T>) => boolean;
1768
+ valueParser?: ValueParserFunc<T>;
1769
+ valueGetter?: ValueGetterFunc<T>;
1770
+ valueSetter?: (params: EditableValueParams<T>) => boolean | Promise<any>;
1771
+ /**
1772
+ * 透传给编辑组件的事件,参数有({ row, rowIndex, col, colIndex, editedRow, updateEditedCellValue })。可以使用参数 `updateEditedCellValue` 更新当前单元格(或当前行任意编辑状态单元格)的值。<br/>更新当前单元格数据示例:`updateEditedCellValue(value)`;<br/>更新当前行编辑态数据示例:`updateEditedCellValue({ isUpdateCurrentRow: true, column_key: 'test' })`;<br/>更新其他行编辑态数据示例:`updateEditedCellValue({ rowValue: '124', column_key: 'test' })`
1773
+ */
1774
+ on?: (context: EditableValueParams<T>) => {
1775
+ [eventName: string]: Function;
1776
+ };
1777
+ /**
1778
+ * 编辑完成后,退出编辑模式时触发
1779
+ */
1780
+ onEdited?: (context: EditableValueParams<T>) => void;
1781
+ /**
1782
+ * 透传给组件 `edit.component` 的属性,可以使用 `updateEditedCellValue` 更新当前行任意编辑状态单元格的值
1783
+ */
1784
+ props?: EditableCellProps<T>;
1785
+ /**
1786
+ * 校验规则
1787
+ */
1788
+ rules?: EditableCellRules<T>;
1789
+ /**
1790
+ * 是否显示编辑图标
1791
+ * @default true
1792
+ */
1793
+ /**
1794
+ * 触发校验的时机,有 2 种:退出编辑时和数据变化时
1795
+ * @default 'exit'
1796
+ */
1797
+ validateTrigger?: 'exit' | 'change';
1623
1798
  }
1624
- type CellEditorSlot = 'cellEditorSlot';
1625
- export type EditableTrigger = 'click' | 'dblClick' | 'contextmenu';
1626
1799
  export interface ColumnType<RecordType = DefaultRecordType> extends ColumnSharedType, Omit<ProFormItemType, 'key' | 'originKey' | 'tooltip' | 'hidden' | 'grid' | 'title' | 'spaceProps' | 'children' | 'width' | 'ignoreWidth' | 'name' | 'originName' | 'rowProps' | 'colProps' | 'valueEnum'> {
1627
1800
  search?: ProFormItemType;
1628
1801
  colSpan?: number;
@@ -1680,9 +1853,15 @@ export interface ColumnType<RecordType = DefaultRecordType> extends ColumnShared
1680
1853
  record: RecordType;
1681
1854
  index: number;
1682
1855
  column: ColumnType<RecordType>;
1856
+ cancelEditable: (recordKey: Key) => boolean;
1857
+ startEditable: (recordKey: Key, recordValue?: any) => boolean;
1858
+ saveEditable: (recordKey: Key) => Promise<boolean>;
1859
+ isEditable: (recordKey: Key) => boolean;
1683
1860
  }) => any | RenderedCell;
1684
- editable?: boolean | CellEditorSlot | ((params: EditableValueParams<RecordType>) => boolean | CellEditorSlot);
1685
- editableTrigger?: EditableTrigger | EditableTrigger[];
1861
+ /**
1862
+ * 可编辑单元格配置项,具体属性参考文档 `EditableCellConfig` 描述
1863
+ */
1864
+ edit?: EditableCellConfig<RecordType>;
1686
1865
  valueParser?: ValueParserFunc<RecordType>;
1687
1866
  valueGetter?: ValueGetterFunc<RecordType>;
1688
1867
  valueSetter?: (params: ValueParserParams<RecordType>) => boolean | Promise<any>;
@@ -1700,7 +1879,7 @@ export interface ColumnType<RecordType = DefaultRecordType> extends ColumnShared
1700
1879
  title?: string;
1701
1880
  };
1702
1881
  valueEnum?: ((row: RecordType) => Record<string, ValueEnumType>) | Record<string, ValueEnumType>;
1703
- valueStatus?: ((value: any, row: RecordType) => ValueStatus) | ValueStatus;
1882
+ valueStatus?: ((value: any, row: RecordType, valueEnum?: ValueEnumType) => ValueStatus) | ValueStatus;
1704
1883
  renderText?: (text: any, record: RecordType, rowIndex: number) => string | number;
1705
1884
  /** @name 列设置的 disabled */
1706
1885
  disable?: boolean | {
@@ -1757,6 +1936,12 @@ export interface TableExposeType {
1757
1936
  calcTableHeight: () => Promise<void>;
1758
1937
  formSearchSubmit: () => void;
1759
1938
  getSearchParams: () => Record<string, any>;
1939
+ validateRowData: (rowValue: any) => Promise<TablePromiseErrorData>;
1940
+ validateTableData: () => Promise<TablePromiseErrorData>;
1941
+ addEditRecord: (recordValue?: any, options?: AddLineOptions) => false | undefined;
1942
+ startEditable: (recordKey: Key, recordValue?: any) => boolean;
1943
+ cancelEditable: (recordKey: Key) => boolean;
1944
+ saveEditable: (recordKey: Key) => Promise<boolean>;
1760
1945
  }
1761
1946
  export interface DragRowsHandleInfo {
1762
1947
  y: number;
@@ -1889,3 +2074,103 @@ export type Bordered = boolean | {
1889
2074
  search?: boolean;
1890
2075
  table?: boolean;
1891
2076
  };
2077
+ export interface IsDateOptions {
2078
+ format: string;
2079
+ strictMode: boolean;
2080
+ delimiters: string[];
2081
+ }
2082
+ export type CustomValidator = (val: any) => CustomValidateResolveType | Promise<CustomValidateResolveType>;
2083
+ export type CustomValidateResolveType = boolean | CustomValidateObj;
2084
+ export interface CustomValidateObj {
2085
+ result: boolean;
2086
+ message: string;
2087
+ type?: 'error' | 'warning' | 'success';
2088
+ }
2089
+ export type AddLineOptions = {
2090
+ position?: 'top' | 'bottom';
2091
+ newRecordType?: 'dataSource' | 'cache';
2092
+ };
2093
+ export type TableEditingCell<RecordType = DefaultRecordType> = {
2094
+ recordIndexs: number[];
2095
+ column: ColumnType<RecordType>;
2096
+ rowKey: Key;
2097
+ originRecord: RecordType;
2098
+ rowIndex: number;
2099
+ columnKey: Key;
2100
+ validateEdit: () => Promise<true | AllValidateResult[]>;
2101
+ };
2102
+ export type AllValidateResult = CustomValidateObj | ValidateResultType;
2103
+ export type TableErrorListMap = {
2104
+ [key: string]: AllValidateResult[];
2105
+ };
2106
+ export type ErrorListObjectType = TableEditingCell & {
2107
+ errorList: AllValidateResult[];
2108
+ };
2109
+ export interface TablePromiseErrorData {
2110
+ errors: ErrorListObjectType[];
2111
+ errorMap: TableErrorListMap;
2112
+ data?: DefaultRecordType[];
2113
+ }
2114
+ export interface ValidateResultType extends EditRule {
2115
+ result: boolean;
2116
+ }
2117
+ export interface EditRule {
2118
+ /**
2119
+ * 内置校验方法,校验值类型是否为布尔类型,示例:`{ boolean: true, message: '数据类型必须是布尔类型' }`
2120
+ */
2121
+ boolean?: boolean;
2122
+ /**
2123
+ * 内置校验方法,校验值是否属于枚举值中的值。示例:`{ enum: ['primary', 'info', 'warning'], message: '值只能是 primary/info/warning 中的一种' }`
2124
+ */
2125
+ enum?: Array<string>;
2126
+ /**
2127
+ * 内置校验方法,校验值是否为身份证号码,组件校验正则为 `/^(\\d{18,18}|\\d{15,15}|\\d{17,17}x)$/i`,示例:`{ idcard: true, message: '请输入正确的身份证号码' }`
2128
+ */
2129
+ idcard?: boolean;
2130
+ /**
2131
+ * 内置校验方法,校验值固定长度,如:len: 10 表示值的字符长度只能等于 10 ,中文表示 2 个字符,英文为 1 个字符。示例:`{ len: 10, message: '内容长度不对' }`。<br />如果希望字母和中文都是同样的长度,示例:`{ validator: (val) => val.length === 10, message: '内容文本长度只能是 10 个字' }`
2132
+ */
2133
+ len?: number | boolean;
2134
+ /**
2135
+ * 内置校验方法,校验值最大长度,如:max: 100 表示值最多不能超过 100 个字符,中文表示 2 个字符,英文为 1 个字符。示例:`{ max: 10, message: '内容超出' }`。<br />如果希望字母和中文都是同样的长度,示例:`{ validator: (val) => val.length <= 10, message: '内容文本长度不能超过 10 个字' }`<br />如果数据类型数字(Number),则自动变为数字大小的比对
2136
+ */
2137
+ max?: number | boolean;
2138
+ /**
2139
+ * 校验未通过时呈现的错误信息,值为空则不显示
2140
+ * @default ''
2141
+ */
2142
+ message?: string;
2143
+ /**
2144
+ * 内置校验方法,校验值最小长度,如:min: 10 表示值最多不能少于 10 个字符,中文表示 2 个字符,英文为 1 个字符。示例:`{ min: 10, message: '内容长度不够' }`。<br />如果希望字母和中文都是同样的长度,示例:`{ validator: (val) => val.length >= 10, message: '内容文本长度至少为 10 个字' }`。<br />如果数据类型数字(Number),则自动变为数字大小的比对
2145
+ */
2146
+ min?: number | boolean;
2147
+ /**
2148
+ * 内置校验方法,校验值是否为数字(1.2 、 1e5 都算数字),示例:`{ number: true, message: '请输入数字' }`
2149
+ */
2150
+ number?: boolean;
2151
+ /**
2152
+ * 内置校验方法,校验值是否符合正则表达式匹配结果,示例:`{ pattern: /@qq.com/, message: '请输入 QQ 邮箱' }`
2153
+ */
2154
+ pattern?: RegExp;
2155
+ /**
2156
+ * 内置校验方法,校验值是否已经填写。该值为 true,默认显示必填标记,可通过设置 `requiredMark: false` 隐藏必填标记
2157
+ */
2158
+ required?: boolean;
2159
+ /**
2160
+ * 内置校验方法,校验值是否为手机号码,校验正则为 `/^1[3-9]\d{9}$/`,示例:`{ telnumber: true, message: '请输入正确的手机号码' }`
2161
+ */
2162
+ telnumber?: boolean;
2163
+ /**
2164
+ * 校验未通过时呈现的错误信息类型,有 告警信息提示 和 错误信息提示 等两种
2165
+ * @default error
2166
+ */
2167
+ type?: 'error' | 'warning';
2168
+ /**
2169
+ * 自定义校验规则,示例:`{ validator: (val) => val.length > 0, message: '请输入内容'}`
2170
+ */
2171
+ validator?: CustomValidator;
2172
+ /**
2173
+ * 内置校验方法,校验值是否为空格。示例:`{ whitespace: true, message: '值不能为空' }`
2174
+ */
2175
+ whitespace?: boolean;
2176
+ }
@@ -11,6 +11,10 @@ interface UseCellProps {
11
11
  bodyWidth: Ref<number>;
12
12
  leftWidth: Ref<number>;
13
13
  centerWidth: Ref<number>;
14
+ cancelEditable: (recordKey: Key) => boolean;
15
+ startEditable: (recordKey: Key, recordValue?: any) => boolean;
16
+ saveEditable: (recordKey: Key) => Promise<boolean>;
17
+ isEditable: (recordKey: Key) => boolean;
14
18
  getColumnPosition: (index: number, colSpan?: number) => {
15
19
  width: number;
16
20
  left: number;
@@ -25,5 +29,5 @@ export type UseCellPropsRes = {
25
29
  hasMultiRowSpanInfo: Ref<Record<string, boolean>>;
26
30
  centerRowColumnsMap: Ref<Map<Key, FinallyColumnType[]>>;
27
31
  };
28
- declare const useCellProps: ({ leftColumns, rightColumns, visibleCenterColumns, allColumns, data, mergedRowHeights, getColumnPosition, bodyWidth, leftWidth, centerWidth, getRowHeight, customCell: contextCustomCell, }: UseCellProps) => UseCellPropsRes;
32
+ declare const useCellProps: ({ leftColumns, rightColumns, visibleCenterColumns, allColumns, data, mergedRowHeights, getColumnPosition, bodyWidth, leftWidth, centerWidth, getRowHeight, cancelEditable, startEditable, saveEditable, isEditable, customCell: contextCustomCell, }: UseCellProps) => UseCellPropsRes;
29
33
  export default useCellProps;