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
@@ -1,14 +1,31 @@
1
- import type { Ref, ShallowRef } from 'vue';
1
+ import type { Ref, ShallowRef, ComputedRef } from 'vue';
2
+ import type { AddLineOptions, DefaultRecordType, GetRowKey, Key, ProTableProps, RowEditableType, TableEditingCell, TablePromiseErrorData } from '../components/interface';
2
3
  type EditProps = {
3
4
  editCellKeys: Ref<string[]>;
4
- openEditor: (key: string | string[], values?: Record<string, any>) => void;
5
- closeEditor: (key?: string | string[]) => void;
6
- oldValuesMap: ShallowRef<Record<string, any>>;
5
+ openEditor: (key: string | string[]) => void;
6
+ closeEditor: (key: string) => void;
7
+ editableType: ComputedRef<RowEditableType | undefined>;
8
+ mergedEditableKeys: Ref<Key[] | undefined>;
9
+ isRowEdit: ComputedRef<boolean>;
10
+ editRowsMap: ShallowRef<Record<string, Record<string, any>>>;
11
+ setEditingCell: (params: TableEditingCell, isEdit: boolean) => void;
7
12
  };
8
- export declare const useEditProvider: () => {
13
+ export declare const useEditProvider: (props: ProTableProps, { rawData, getRowKey, getIndexsByKey, getRecordByKey, }: {
14
+ rawData: ShallowRef<DefaultRecordType[]>;
15
+ getRowKey: ComputedRef<GetRowKey>;
16
+ getIndexsByKey: (key: Key) => number[];
17
+ getRecordByKey: (key: Key) => DefaultRecordType;
18
+ }) => {
9
19
  editCellKeys: ShallowRef<string[], string[]>;
10
- openEditor: (key: string | string[], values?: Record<string, any>) => void;
11
- closeEditor: (key?: string | string[]) => void;
20
+ openEditor: (key: string | string[]) => void;
21
+ closeEditor: (key: string) => void;
22
+ cancelEditable: (recordKey: Key) => boolean;
23
+ startEditable: (recordKey: Key, recordValue?: any) => boolean;
24
+ saveEditable: (recordKey: Key) => Promise<boolean>;
25
+ isEditable: (recordKey: Key) => boolean;
26
+ validateTableData: () => Promise<TablePromiseErrorData>;
27
+ validateRowData: (rowValue: any) => Promise<TablePromiseErrorData>;
28
+ addEditRecord: (recordValue: any, options: AddLineOptions) => boolean;
12
29
  };
13
30
  export declare const useEditInject: () => EditProps;
14
31
  export {};
@@ -0,0 +1,25 @@
1
+ export declare function isValueEmpty(val: any): boolean;
2
+ declare const VALIDATE_MAP: {
3
+ required: (val: any) => boolean;
4
+ whitespace: (val: any) => boolean;
5
+ boolean: (val: any) => boolean;
6
+ max: (val: any, num: number) => boolean;
7
+ min: (val: any, num: number) => boolean;
8
+ len: (val: any, num: number) => boolean;
9
+ number: (val: any) => boolean;
10
+ enum: (val: any, strs: Array<string>) => boolean;
11
+ idcard: (val: any) => boolean;
12
+ telnumber: (val: any) => boolean;
13
+ pattern: (val: any, regexp: RegExp) => boolean;
14
+ validator: (val: any, validate: any) => ReturnType<any>;
15
+ };
16
+ export type ValidateFuncType = (typeof VALIDATE_MAP)[keyof typeof VALIDATE_MAP];
17
+ /**
18
+ * 校验某一条数据的某一条规则,一种校验规则不满足则不再进行校验。
19
+ * @param value 值
20
+ * @param rule 校验规则
21
+ * @returns 两种校验结果,一种是内置校验规则的校验结果哦,二种是自定义校验规则(validator)的校验结果
22
+ */
23
+ export declare function validateOneRule(value: any, rule: any): Promise<any>;
24
+ export declare function validate(value: any, rules: Array<any>): Promise<any[]>;
25
+ export {};
@@ -16,6 +16,7 @@ export declare function getColumnKey<RecordType>(column: ColumnType<RecordType>,
16
16
  */
17
17
  export declare const genColumnKey: (key?: string | number, index?: number | string) => string;
18
18
  export declare function getColumnPos(index: number, pos?: string): string;
19
+ export declare function getCellKey(rowKey: Key, colKey: Key): string;
19
20
  export declare function getNewColumnsByWidth<RecordType>(columns: ColumnsType<RecordType>, newWidths: Record<string, number>, pos?: string): ColumnsType<RecordType>;
20
21
  export declare type SortOrder = 'desc' | 'asc' | null;
21
22
  export interface ColumnTitleProps<RecordType> {
package/es/index.d.ts CHANGED
@@ -803,7 +803,12 @@ declare type __VLS_WithSlots_7<T, S> = T & {
803
803
  $slots: S;
804
804
  };
805
805
  };
806
+ declare type AddLineOptions = {
807
+ position?: "top" | "bottom";
808
+ newRecordType?: "dataSource" | "cache";
809
+ };
806
810
  declare type AlignType = "left" | "center" | "right";
811
+ declare type AllValidateResult = CustomValidateObj | ValidateResultType;
807
812
  declare interface AppendCellRange {
808
813
  columnsKey?: ProTableKey[];
809
814
  columnStartKey?: ProTableKey;
@@ -964,7 +969,6 @@ declare interface CellEditorArgs {
964
969
  recordIndexs: number[];
965
970
  record: any;
966
971
  }
967
- declare type CellEditorSlot = "cellEditorSlot";
968
972
  declare type CellEllipsisType = {
969
973
  showTitle?: boolean;
970
974
  line?: number;
@@ -1137,9 +1141,15 @@ declare interface ColumnType<RecordType = DefaultRecordType> extends ColumnShare
1137
1141
  record: RecordType;
1138
1142
  index: number;
1139
1143
  column: ColumnType<RecordType>;
1144
+ cancelEditable: (recordKey: ProTableKey) => boolean;
1145
+ startEditable: (recordKey: ProTableKey, recordValue?: any) => boolean;
1146
+ saveEditable: (recordKey: ProTableKey) => Promise<boolean>;
1147
+ isEditable: (recordKey: ProTableKey) => boolean;
1140
1148
  }) => any | RenderedCell;
1141
- editable?: boolean | CellEditorSlot | ((params: EditableValueParams<RecordType>) => boolean | CellEditorSlot);
1142
- editableTrigger?: EditableTrigger | EditableTrigger[];
1149
+ /**
1150
+ * 可编辑单元格配置项,具体属性参考文档 `EditableCellConfig` 描述
1151
+ */
1152
+ edit?: EditableCellConfig<RecordType>;
1143
1153
  valueParser?: ValueParserFunc<RecordType>;
1144
1154
  valueGetter?: ValueGetterFunc<RecordType>;
1145
1155
  valueSetter?: (params: ValueParserParams<RecordType>) => boolean | Promise<any>;
@@ -1157,7 +1167,7 @@ declare interface ColumnType<RecordType = DefaultRecordType> extends ColumnShare
1157
1167
  title?: string;
1158
1168
  };
1159
1169
  valueEnum?: ((row: RecordType) => Record<string, ProTableValueEnumType>) | Record<string, ProTableValueEnumType>;
1160
- valueStatus?: ((value: any, row: RecordType) => ValueStatus) | ValueStatus;
1170
+ valueStatus?: ((value: any, row: RecordType, valueEnum?: ProTableValueEnumType) => ValueStatus) | ValueStatus;
1161
1171
  renderText?: (text: any, record: RecordType, rowIndex: number) => string | number;
1162
1172
  /** @name 列设置的 disabled */
1163
1173
  disable?: boolean | {
@@ -1312,6 +1322,13 @@ export declare const CSS_VARIABLE_LAYOUT_FOOTER_HEIGHT = "--pro-footer-height";
1312
1322
  /** layout header 组件的高度 */
1313
1323
  export declare const CSS_VARIABLE_LAYOUT_HEADER_HEIGHT = "--pro-header-height";
1314
1324
  declare type CustomSlotsType<T extends Record<string, any>> = SlotsType<T>;
1325
+ declare interface CustomValidateObj {
1326
+ result: boolean;
1327
+ message: string;
1328
+ type?: "error" | "warning" | "success";
1329
+ }
1330
+ declare type CustomValidateResolveType = boolean | CustomValidateObj;
1331
+ declare type CustomValidator = (val: any) => CustomValidateResolveType | Promise<CustomValidateResolveType>;
1315
1332
  declare type DataIndex = string | number | readonly (string | number)[];
1316
1333
  export { dayjs };
1317
1334
  export declare const deDEIntl: IntlType;
@@ -1950,10 +1967,18 @@ declare const _default_17: DefineComponent<ExtractPropTypes<{
1950
1967
  type: BooleanConstructor;
1951
1968
  default: undefined;
1952
1969
  };
1970
+ selectRowByClick: {
1971
+ type: BooleanConstructor;
1972
+ default: undefined;
1973
+ };
1953
1974
  expandIcon: {
1954
1975
  type: PropType<RenderExpandIcon<DefaultRecordType>>;
1955
1976
  default: undefined;
1956
1977
  };
1978
+ expandIconType: {
1979
+ type: PropType<ExpandIconType>;
1980
+ default: undefined;
1981
+ };
1957
1982
  onExpand: {
1958
1983
  type: PropType<(expanded: boolean, record: DefaultRecordType) => void>;
1959
1984
  default: undefined;
@@ -2019,6 +2044,14 @@ declare const _default_17: DefineComponent<ExtractPropTypes<{
2019
2044
  }) => Record<string, any>>;
2020
2045
  default: () => {};
2021
2046
  };
2047
+ editableKeys: {
2048
+ type: PropType<ProTableKey[]>;
2049
+ default: undefined;
2050
+ };
2051
+ rowEditable: {
2052
+ type: PropType<RowEditableConfig<DefaultRecordType>>;
2053
+ default: undefined;
2054
+ };
2022
2055
  showHeader: {
2023
2056
  type: BooleanConstructor;
2024
2057
  default: boolean;
@@ -2191,6 +2224,9 @@ declare const _default_17: DefineComponent<ExtractPropTypes<{
2191
2224
  type: BooleanConstructor;
2192
2225
  default: undefined;
2193
2226
  };
2227
+ editableCellState: {
2228
+ type: PropType<EditableCellType<DefaultRecordType>>;
2229
+ };
2194
2230
  paginationSticky: {
2195
2231
  type: PropType<boolean | BottomSticky>;
2196
2232
  default: boolean;
@@ -2244,6 +2280,15 @@ declare const _default_17: DefineComponent<ExtractPropTypes<{
2244
2280
  type: PropType<(opt: CellRenderArgs) => void>;
2245
2281
  default: undefined;
2246
2282
  };
2283
+ onDataChange: {
2284
+ type: PropType<(dataSource: DefaultRecordType[]) => void>;
2285
+ };
2286
+ onRowValidate: {
2287
+ type: PropType<(TablePromiseErrorData: any) => void>;
2288
+ };
2289
+ onValidate: {
2290
+ type: PropType<(TablePromiseErrorData: any) => void>;
2291
+ };
2247
2292
  "onUpdate:pagination": {
2248
2293
  type: PropType<(info: ProTablePaginationConfig) => void>;
2249
2294
  };
@@ -2445,10 +2490,18 @@ declare const _default_17: DefineComponent<ExtractPropTypes<{
2445
2490
  type: BooleanConstructor;
2446
2491
  default: undefined;
2447
2492
  };
2493
+ selectRowByClick: {
2494
+ type: BooleanConstructor;
2495
+ default: undefined;
2496
+ };
2448
2497
  expandIcon: {
2449
2498
  type: PropType<RenderExpandIcon<DefaultRecordType>>;
2450
2499
  default: undefined;
2451
2500
  };
2501
+ expandIconType: {
2502
+ type: PropType<ExpandIconType>;
2503
+ default: undefined;
2504
+ };
2452
2505
  onExpand: {
2453
2506
  type: PropType<(expanded: boolean, record: DefaultRecordType) => void>;
2454
2507
  default: undefined;
@@ -2514,6 +2567,14 @@ declare const _default_17: DefineComponent<ExtractPropTypes<{
2514
2567
  }) => Record<string, any>>;
2515
2568
  default: () => {};
2516
2569
  };
2570
+ editableKeys: {
2571
+ type: PropType<ProTableKey[]>;
2572
+ default: undefined;
2573
+ };
2574
+ rowEditable: {
2575
+ type: PropType<RowEditableConfig<DefaultRecordType>>;
2576
+ default: undefined;
2577
+ };
2517
2578
  showHeader: {
2518
2579
  type: BooleanConstructor;
2519
2580
  default: boolean;
@@ -2686,6 +2747,9 @@ declare const _default_17: DefineComponent<ExtractPropTypes<{
2686
2747
  type: BooleanConstructor;
2687
2748
  default: undefined;
2688
2749
  };
2750
+ editableCellState: {
2751
+ type: PropType<EditableCellType<DefaultRecordType>>;
2752
+ };
2689
2753
  paginationSticky: {
2690
2754
  type: PropType<boolean | BottomSticky>;
2691
2755
  default: boolean;
@@ -2739,6 +2803,15 @@ declare const _default_17: DefineComponent<ExtractPropTypes<{
2739
2803
  type: PropType<(opt: CellRenderArgs) => void>;
2740
2804
  default: undefined;
2741
2805
  };
2806
+ onDataChange: {
2807
+ type: PropType<(dataSource: DefaultRecordType[]) => void>;
2808
+ };
2809
+ onRowValidate: {
2810
+ type: PropType<(TablePromiseErrorData: any) => void>;
2811
+ };
2812
+ onValidate: {
2813
+ type: PropType<(TablePromiseErrorData: any) => void>;
2814
+ };
2742
2815
  "onUpdate:pagination": {
2743
2816
  type: PropType<(info: ProTablePaginationConfig) => void>;
2744
2817
  };
@@ -2849,7 +2922,9 @@ declare const _default_17: DefineComponent<ExtractPropTypes<{
2849
2922
  defaultExpandedRowKeys: ProTableKey[];
2850
2923
  expandedRowRender: ExpandedRowRender<DefaultRecordType>;
2851
2924
  expandRowByClick: boolean;
2925
+ selectRowByClick: boolean;
2852
2926
  expandIcon: RenderExpandIcon<DefaultRecordType>;
2927
+ expandIconType: ExpandIconType;
2853
2928
  onExpand: (expanded: boolean, record: DefaultRecordType) => void;
2854
2929
  onExpandedRowsChange: (expandedKeys: ProTableKey[]) => void;
2855
2930
  defaultExpandAllRows: boolean;
@@ -2873,6 +2948,8 @@ declare const _default_17: DefineComponent<ExtractPropTypes<{
2873
2948
  column: ColumnType<DefaultRecordType>;
2874
2949
  columnIndex: number;
2875
2950
  }) => Record<string, any>;
2951
+ editableKeys: ProTableKey[];
2952
+ rowEditable: RowEditableConfig<DefaultRecordType>;
2876
2953
  showHeader: boolean;
2877
2954
  showSorterTooltip: boolean | Partial<ExtractPropTypes<{
2878
2955
  title: VueTypeValidableDef_2<any>;
@@ -5117,6 +5194,64 @@ declare const drawerOrModalFormProps: () => {
5117
5194
  };
5118
5195
  name: StringConstructor;
5119
5196
  };
5197
+ declare interface EditableCellConfig<T = DefaultRecordType> {
5198
+ /**
5199
+ * 除了点击非自身元素退出编辑态之外,还有哪些事件退出编辑态。示例:`abortEditOnEvent: ['onChange']`
5200
+ */
5201
+ abortEditOnEvent?: string[];
5202
+ editableTrigger?: EditableTrigger | EditableTrigger[];
5203
+ /**
5204
+ * 组件定义,如:`Input` `Select`。对于完全自定义的组件(非组件库内的组件),组件需要支持 `value` 和 `onChange` ;如果还需要支持校验规则,则组件还需实现 `tips` 和 `status` 两个 API,实现规则可参考 `Input` 组件
5205
+ */
5206
+ component?: any;
5207
+ /**
5208
+ * 单元格默认状态是否为编辑态
5209
+ * @default false
5210
+ */
5211
+ defaultEditable?: boolean;
5212
+ /**
5213
+ * 设置当前列的单元格始终保持为编辑态
5214
+ * @default false
5215
+ */
5216
+ keepEditMode?: boolean;
5217
+ /**
5218
+ * 是否可以编辑
5219
+ */
5220
+ editable?: (context: EditableValueParams<T>) => boolean;
5221
+ valueParser?: ValueParserFunc<T>;
5222
+ valueGetter?: ValueGetterFunc<T>;
5223
+ valueSetter?: (params: EditableValueParams<T>) => boolean | Promise<any>;
5224
+ /**
5225
+ * 透传给编辑组件的事件,参数有({ row, rowIndex, col, colIndex, editedRow, updateEditedCellValue })。可以使用参数 `updateEditedCellValue` 更新当前单元格(或当前行任意编辑状态单元格)的值。<br/>更新当前单元格数据示例:`updateEditedCellValue(value)`;<br/>更新当前行编辑态数据示例:`updateEditedCellValue({ isUpdateCurrentRow: true, column_key: 'test' })`;<br/>更新其他行编辑态数据示例:`updateEditedCellValue({ rowValue: '124', column_key: 'test' })`
5226
+ */
5227
+ on?: (context: EditableValueParams<T>) => {
5228
+ [eventName: string]: Function;
5229
+ };
5230
+ /**
5231
+ * 编辑完成后,退出编辑模式时触发
5232
+ */
5233
+ onEdited?: (context: EditableValueParams<T>) => void;
5234
+ /**
5235
+ * 透传给组件 `edit.component` 的属性,可以使用 `updateEditedCellValue` 更新当前行任意编辑状态单元格的值
5236
+ */
5237
+ props?: EditableCellProps<T>;
5238
+ /**
5239
+ * 校验规则
5240
+ */
5241
+ rules?: EditableCellRules<T>;
5242
+ /**
5243
+ * 是否显示编辑图标
5244
+ * @default true
5245
+ */
5246
+ /**
5247
+ * 触发校验的时机,有 2 种:退出编辑时和数据变化时
5248
+ * @default 'exit'
5249
+ */
5250
+ validateTrigger?: "exit" | "change";
5251
+ }
5252
+ declare type EditableCellProps<T> = PlainObject | ((params: EditableValueParams<T>) => PlainObject);
5253
+ declare type EditableCellRules<T> = EditRule[] | ((params: EditableValueParams<T>) => EditRule[]);
5254
+ declare type EditableCellType<T> = (params: EditableValueParams<T>) => boolean;
5120
5255
  declare type EditableTrigger = "click" | "dblClick" | "contextmenu";
5121
5256
  declare interface EditableValueParams<RecordType = DefaultRecordType, TValue = any> {
5122
5257
  value: TValue;
@@ -5124,11 +5259,74 @@ declare interface EditableValueParams<RecordType = DefaultRecordType, TValue = a
5124
5259
  recordIndexs: number[];
5125
5260
  column: ColumnType<RecordType>;
5126
5261
  }
5262
+ declare interface EditRule {
5263
+ /**
5264
+ * 内置校验方法,校验值类型是否为布尔类型,示例:`{ boolean: true, message: '数据类型必须是布尔类型' }`
5265
+ */
5266
+ boolean?: boolean;
5267
+ /**
5268
+ * 内置校验方法,校验值是否属于枚举值中的值。示例:`{ enum: ['primary', 'info', 'warning'], message: '值只能是 primary/info/warning 中的一种' }`
5269
+ */
5270
+ enum?: Array<string>;
5271
+ /**
5272
+ * 内置校验方法,校验值是否为身份证号码,组件校验正则为 `/^(\\d{18,18}|\\d{15,15}|\\d{17,17}x)$/i`,示例:`{ idcard: true, message: '请输入正确的身份证号码' }`
5273
+ */
5274
+ idcard?: boolean;
5275
+ /**
5276
+ * 内置校验方法,校验值固定长度,如:len: 10 表示值的字符长度只能等于 10 ,中文表示 2 个字符,英文为 1 个字符。示例:`{ len: 10, message: '内容长度不对' }`。<br />如果希望字母和中文都是同样的长度,示例:`{ validator: (val) => val.length === 10, message: '内容文本长度只能是 10 个字' }`
5277
+ */
5278
+ len?: number | boolean;
5279
+ /**
5280
+ * 内置校验方法,校验值最大长度,如:max: 100 表示值最多不能超过 100 个字符,中文表示 2 个字符,英文为 1 个字符。示例:`{ max: 10, message: '内容超出' }`。<br />如果希望字母和中文都是同样的长度,示例:`{ validator: (val) => val.length <= 10, message: '内容文本长度不能超过 10 个字' }`<br />如果数据类型数字(Number),则自动变为数字大小的比对
5281
+ */
5282
+ max?: number | boolean;
5283
+ /**
5284
+ * 校验未通过时呈现的错误信息,值为空则不显示
5285
+ * @default ''
5286
+ */
5287
+ message?: string;
5288
+ /**
5289
+ * 内置校验方法,校验值最小长度,如:min: 10 表示值最多不能少于 10 个字符,中文表示 2 个字符,英文为 1 个字符。示例:`{ min: 10, message: '内容长度不够' }`。<br />如果希望字母和中文都是同样的长度,示例:`{ validator: (val) => val.length >= 10, message: '内容文本长度至少为 10 个字' }`。<br />如果数据类型数字(Number),则自动变为数字大小的比对
5290
+ */
5291
+ min?: number | boolean;
5292
+ /**
5293
+ * 内置校验方法,校验值是否为数字(1.2 、 1e5 都算数字),示例:`{ number: true, message: '请输入数字' }`
5294
+ */
5295
+ number?: boolean;
5296
+ /**
5297
+ * 内置校验方法,校验值是否符合正则表达式匹配结果,示例:`{ pattern: /@qq.com/, message: '请输入 QQ 邮箱' }`
5298
+ */
5299
+ pattern?: RegExp;
5300
+ /**
5301
+ * 内置校验方法,校验值是否已经填写。该值为 true,默认显示必填标记,可通过设置 `requiredMark: false` 隐藏必填标记
5302
+ */
5303
+ required?: boolean;
5304
+ /**
5305
+ * 内置校验方法,校验值是否为手机号码,校验正则为 `/^1[3-9]\d{9}$/`,示例:`{ telnumber: true, message: '请输入正确的手机号码' }`
5306
+ */
5307
+ telnumber?: boolean;
5308
+ /**
5309
+ * 校验未通过时呈现的错误信息类型,有 告警信息提示 和 错误信息提示 等两种
5310
+ * @default error
5311
+ */
5312
+ type?: "error" | "warning";
5313
+ /**
5314
+ * 自定义校验规则,示例:`{ validator: (val) => val.length > 0, message: '请输入内容'}`
5315
+ */
5316
+ validator?: CustomValidator;
5317
+ /**
5318
+ * 内置校验方法,校验值是否为空格。示例:`{ whitespace: true, message: '值不能为空' }`
5319
+ */
5320
+ whitespace?: boolean;
5321
+ }
5127
5322
  /** 内容区域的组件ID */
5128
5323
  export declare const ELEMENT_ID_MAIN_CONTENT = "__pro_main_content";
5129
5324
  export declare const enGBIntl: IntlType;
5130
5325
  export declare type Entity = Record<string, any>;
5131
5326
  export declare const enUSIntl: IntlType;
5327
+ declare type ErrorListObjectType = TableEditingCell & {
5328
+ errorList: AllValidateResult[];
5329
+ };
5132
5330
  export declare const esESIntl: IntlType;
5133
5331
  export declare type EventHandler = (...args: any[]) => void;
5134
5332
  declare type ExpandedRowRender<ValueType> = (opt: {
@@ -5137,6 +5335,7 @@ declare type ExpandedRowRender<ValueType> = (opt: {
5137
5335
  indent: number;
5138
5336
  expanded: boolean;
5139
5337
  }) => any;
5338
+ declare type ExpandIconType = "default" | "arrow";
5140
5339
  export declare type ExtraSItemType = {
5141
5340
  className?: string;
5142
5341
  customUi?: boolean;
@@ -5640,10 +5839,18 @@ declare class Helper<T extends DefaultRecordType> {
5640
5839
  type: BooleanConstructor;
5641
5840
  default: undefined;
5642
5841
  };
5842
+ selectRowByClick: {
5843
+ type: BooleanConstructor;
5844
+ default: undefined;
5845
+ };
5643
5846
  expandIcon: {
5644
5847
  type: PropType<RenderExpandIcon<T>>;
5645
5848
  default: undefined;
5646
5849
  };
5850
+ expandIconType: {
5851
+ type: PropType<ExpandIconType>;
5852
+ default: undefined;
5853
+ };
5647
5854
  onExpand: {
5648
5855
  type: PropType<(expanded: boolean, record: T) => void>;
5649
5856
  default: undefined;
@@ -5707,6 +5914,14 @@ declare class Helper<T extends DefaultRecordType> {
5707
5914
  }) => Record<string, any>>;
5708
5915
  default: () => {};
5709
5916
  };
5917
+ editableKeys: {
5918
+ type: PropType<ProTableKey[]>;
5919
+ default: undefined;
5920
+ };
5921
+ rowEditable: {
5922
+ type: PropType<RowEditableConfig<T>>;
5923
+ default: undefined;
5924
+ };
5710
5925
  showHeader: {
5711
5926
  type: BooleanConstructor;
5712
5927
  default: boolean;
@@ -5877,6 +6092,9 @@ declare class Helper<T extends DefaultRecordType> {
5877
6092
  type: BooleanConstructor;
5878
6093
  default: undefined;
5879
6094
  };
6095
+ editableCellState: {
6096
+ type: PropType<EditableCellType<T>>;
6097
+ };
5880
6098
  paginationSticky: {
5881
6099
  type: PropType<boolean | BottomSticky>;
5882
6100
  default: boolean;
@@ -5930,6 +6148,15 @@ declare class Helper<T extends DefaultRecordType> {
5930
6148
  type: PropType<(opt: CellRenderArgs) => void>;
5931
6149
  default: undefined;
5932
6150
  };
6151
+ onDataChange: {
6152
+ type: PropType<(dataSource: T[]) => void>;
6153
+ };
6154
+ onRowValidate: {
6155
+ type: PropType<(TablePromiseErrorData: any) => void>;
6156
+ };
6157
+ onValidate: {
6158
+ type: PropType<(TablePromiseErrorData: any) => void>;
6159
+ };
5933
6160
  "onUpdate:pagination": {
5934
6161
  type: PropType<(info: ProTablePaginationConfig) => void>;
5935
6162
  };
@@ -6110,6 +6337,9 @@ declare interface PaginationProps {
6110
6337
  role?: string;
6111
6338
  showLessItems?: boolean;
6112
6339
  }
6340
+ declare interface PlainObject {
6341
+ [key: string]: any;
6342
+ }
6113
6343
  export declare const plPLIntl: IntlType;
6114
6344
  export declare const ProButton: SFCWithInstall<DefineComponent<ExtractPropTypes<{
6115
6345
  type: PropType<ButtonProps["type"]>;
@@ -6374,8 +6604,10 @@ export declare interface ProConfigProviderProps extends Omit<ConfigProviderProps
6374
6604
  cardBordered?: Bordered;
6375
6605
  childrenColumnName?: string;
6376
6606
  expandRowByClick?: boolean;
6607
+ selectRowByClick?: boolean;
6377
6608
  rowKey?: string;
6378
6609
  size?: ProTableDensitySize;
6610
+ expandIconType?: ExpandIconType;
6379
6611
  rowHover?: boolean;
6380
6612
  summaryFixed?: boolean;
6381
6613
  columnEmptyText?: string;
@@ -7060,6 +7292,12 @@ export declare interface ProTableExposeType {
7060
7292
  calcTableHeight: () => Promise<void>;
7061
7293
  formSearchSubmit: () => void;
7062
7294
  getSearchParams: () => Record<string, any>;
7295
+ validateRowData: (rowValue: any) => Promise<TablePromiseErrorData>;
7296
+ validateTableData: () => Promise<TablePromiseErrorData>;
7297
+ addEditRecord: (recordValue?: any, options?: AddLineOptions) => false | undefined;
7298
+ startEditable: (recordKey: ProTableKey, recordValue?: any) => boolean;
7299
+ cancelEditable: (recordKey: ProTableKey) => boolean;
7300
+ saveEditable: (recordKey: ProTableKey) => Promise<boolean>;
7063
7301
  }
7064
7302
  export declare type ProTableInstance = InstanceType<typeof _default_17> & ProTableExposeType;
7065
7303
  export declare type ProTableKey = string | number;
@@ -10502,6 +10740,34 @@ declare interface RowDragGhostArg<RecordT, ColumnT> {
10502
10740
  preTargetInfo: DragRowsHandleInfo | null;
10503
10741
  nextTargetInfo: DragRowsHandleInfo | null;
10504
10742
  }
10743
+ declare type RowEditableConfig<DataType> = {
10744
+ /**
10745
+ * @type single | multiple
10746
+ * @name 编辑的类型,支持单选和多选
10747
+ */
10748
+ type?: RowEditableType;
10749
+ /** @name 正在编辑的列 */
10750
+ editableKeys?: ProTableKey[];
10751
+ /** 只能编辑一行的的提示 */
10752
+ onlyOneLineEditorAlertMessage?: string;
10753
+ /** 同时只能新增一行的提示 */
10754
+ onlyAddOneLineAlertMessage?: string | false;
10755
+ /** 正在编辑的列修改的时候 */
10756
+ onChange?: (editableKeys: ProTableKey[], editableRows: DataType[] | DataType) => void;
10757
+ /** 行保存的时候 */
10758
+ onSave?: (
10759
+ /** 行 id,一般是唯一id */
10760
+ key: ProTableKey,
10761
+ /** 当前修改的行的值 */
10762
+ record: DataType & {
10763
+ index?: number;
10764
+ },
10765
+ /** 原始值,可以用于判断是否修改 */
10766
+ originRow: DataType & {
10767
+ index?: number;
10768
+ }) => Promise<any | void> | any | void;
10769
+ };
10770
+ declare type RowEditableType = "single" | "multiple";
10505
10771
  export declare type RowHeight = ((p: Record<any, any>, isExpandRow: boolean, baseHeight: number) => number | undefined) | number;
10506
10772
  declare type RowSelectionType = "checkbox" | "radio";
10507
10773
  export declare const ruRUIntl: IntlType;
@@ -10794,6 +11060,18 @@ declare interface TableCurrentDataSource<RecordType = DefaultRecordType> {
10794
11060
  currentDataSource: RecordType[];
10795
11061
  action: TableAction;
10796
11062
  }
11063
+ declare type TableEditingCell<RecordType = DefaultRecordType> = {
11064
+ recordIndexs: number[];
11065
+ column: ColumnType<RecordType>;
11066
+ rowKey: ProTableKey;
11067
+ originRecord: RecordType;
11068
+ rowIndex: number;
11069
+ columnKey: ProTableKey;
11070
+ validateEdit: () => Promise<true | AllValidateResult[]>;
11071
+ };
11072
+ declare type TableErrorListMap = {
11073
+ [key: string]: AllValidateResult[];
11074
+ };
10797
11075
  declare interface TableLocale {
10798
11076
  filterTitle?: string;
10799
11077
  filterConfirm?: any;
@@ -10812,6 +11090,11 @@ declare interface TableLocale {
10812
11090
  cancelSort?: string;
10813
11091
  }
10814
11092
  declare type TablePaginationPosition = "topLeft" | "topCenter" | "topRight" | "bottomLeft" | "bottomCenter" | "bottomRight";
11093
+ declare interface TablePromiseErrorData {
11094
+ errors: ErrorListObjectType[];
11095
+ errorMap: TableErrorListMap;
11096
+ data?: DefaultRecordType[];
11097
+ }
10815
11098
  export declare type Theme = "default" | "custom";
10816
11099
  export declare type ThemeModeType = "auto" | "dark" | "light";
10817
11100
  declare type ThemeType = "light" | "dark";
@@ -10891,11 +11174,14 @@ export declare function useState<T, R = Ref<T>>(defaultStateValue?: T | (() => T
10891
11174
  (val: T) => void
10892
11175
  ];
10893
11176
  export declare const uzUZIntl: IntlType;
11177
+ declare interface ValidateResultType extends EditRule {
11178
+ result: boolean;
11179
+ }
10894
11180
  declare interface ValueGetterFunc<T = any, TValue = any> {
10895
11181
  (params: EditableValueParams<T, TValue>): string | null | undefined;
10896
11182
  }
10897
11183
  declare interface ValueParserFunc<T = any, TValue = any> {
10898
- (params: ValueParserParams<T, TValue>): TValue | null | undefined;
11184
+ (params: EditableValueParams<T, TValue>): TValue | null | undefined;
10899
11185
  }
10900
11186
  declare interface ValueParserParams<RecordType = DefaultRecordType, TValue = any> {
10901
11187
  newValue: TValue;
@@ -0,0 +1,35 @@
1
+ import _sfc_main from './BodyCell.vue2.mjs';
2
+ import { resolveComponent, createBlock, openBlock, mergeProps, withCtx, renderSlot } from 'vue';
3
+ import _export_sfc from '../../../../../../_virtual/_plugin-vue_export-helper.mjs';
4
+
5
+ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
6
+ const _component_BodyEditCell = resolveComponent("BodyEditCell");
7
+ const _component_BodyTextCell = resolveComponent("BodyTextCell");
8
+ return _ctx.isEditing ? (openBlock(), createBlock(_component_BodyEditCell, {
9
+ key: _ctx.key,
10
+ prefixCls: _ctx.prefixCls,
11
+ rowIndex: _ctx.rowIndex,
12
+ flattenRowIndex: _ctx.flattenRowIndex,
13
+ rowKey: _ctx.rowKey,
14
+ column: _ctx.column,
15
+ item: _ctx.item,
16
+ "edit-row": _ctx.editRow,
17
+ "editable-keys": _ctx.editableKeys,
18
+ "is-row-edit": _ctx.isRowEdit
19
+ }, null, 8, ["prefixCls", "rowIndex", "flattenRowIndex", "rowKey", "column", "item", "edit-row", "editable-keys", "is-row-edit"])) : (openBlock(), createBlock(_component_BodyTextCell, mergeProps({ key: 1 }, _ctx.props, {
20
+ style: { cursor: _ctx.editable ? "poiner" : "" },
21
+ onClick: _cache[0] || (_cache[0] = ($event) => _ctx.onCellEvent($event, "click")),
22
+ onDblClick: _cache[1] || (_cache[1] = ($event) => _ctx.onCellEvent($event, "dblClick")),
23
+ onContextmenu: _cache[2] || (_cache[2] = ($event) => _ctx.onCellEvent($event, "contextmenu"))
24
+ }), {
25
+ appendNode: withCtx(() => [
26
+ renderSlot(_ctx.$slots, "appendNode")
27
+ ]),
28
+ _: 3
29
+ /* FORWARDED */
30
+ }, 16, ["style"]));
31
+ }
32
+ var BodyCell = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
33
+
34
+ export { BodyCell as default };
35
+ //# sourceMappingURL=BodyCell.vue.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BodyCell.vue.mjs","sources":["../../../../../../../../../packages/components/table/src/components/Body/BodyCell.vue"],"sourcesContent":["<!--\n * @Author: shen\n * @Date: 2023-11-09 22:29:52\n * @LastEditors: shen\n * @LastEditTime: 2025-12-02 17:16:19\n * @Description:\n-->\n<script lang=\"ts\">\nimport type { PropType } from 'vue'\nimport type { EditableTrigger, FinallyColumnType, Key, RowType } from '../interface'\nimport { defineComponent, computed, watch, onMounted } from 'vue'\nimport { get } from '@pro-design-vue/utils'\nimport { useInjectTable } from '../context/TableContext'\nimport { getCellKey } from '../../utils/util'\nimport BodyTextCell from './BodyTextCell'\nimport BodyEditCell from './BodyEditCell'\nexport default defineComponent({\n inheritAttrs: false,\n props: {\n prefixCls: String as PropType<string>,\n rowIndex: { type: Number as PropType<number>, required: true },\n flattenRowIndex: { type: Number, required: true },\n rowKey: { type: [Number, String] },\n column: { type: Object as PropType<FinallyColumnType>, default: () => ({}) },\n item: { type: Object as PropType<any>, default: () => ({}) },\n wrapText: { type: Boolean as PropType<boolean>, default: false },\n type: { type: String as PropType<RowType> },\n height: Number as PropType<number>,\n hasAppendNode: Boolean as PropType<boolean>,\n resizeObserver: { type: Object as PropType<ResizeObserver> },\n editRow: { type: Object as PropType<any> },\n calMaxHeight: Function,\n editCellKeys: Array as PropType<string[]>,\n editableKeys: Array as PropType<Key[]>,\n isRowEdit: Boolean as PropType<boolean>,\n tooltipOpen: Boolean as PropType<boolean>,\n getPopupContainer: Function as PropType<() => HTMLElement>,\n onOpenEditor: Function,\n onCloseEditor: Function,\n onCellLeave: Function,\n onMouseenter: Function,\n },\n emits: ['mouseenter', 'cellLeave'],\n components: { BodyTextCell, BodyEditCell },\n setup(props) {\n const tableContext = useInjectTable()\n const isKeepEditMode = computed(() => props.column.edit?.keepEditMode)\n const cellValue = computed(() =>\n props.column!.dataIndex ? get(props.item, props.column!.dataIndex) : undefined,\n )\n\n const key = computed(() => getCellKey(props.rowKey!, props.column.columnKey))\n\n const cellParams = computed(() => ({\n column: props.column,\n record: props.isRowEdit ? props.editRow : props.item,\n recordIndexs: tableContext.getIndexsByKey(props.rowKey!),\n value: cellValue.value,\n }))\n\n const editable = computed(() => {\n if (!props.column.edit?.component) {\n return false\n }\n if (props.isRowEdit && !props.editableKeys?.includes(props.rowKey!)) {\n return false\n }\n if (!props.column.edit?.editable) {\n return true\n }\n const cellEditable = props.column.edit?.editable(cellParams.value)\n return cellEditable\n })\n\n const isEditing = computed(() => {\n if (props.isRowEdit) {\n return editable.value && props.editableKeys?.includes(props.rowKey!)\n }\n if (!editable.value) {\n return false\n }\n if (isKeepEditMode.value) {\n return true\n }\n if (props.editCellKeys?.includes(key.value)) {\n return true\n }\n return false\n })\n\n const editableTrigger = computed(() => {\n let { editableTrigger = ['click'] } = props.column!.edit ?? {}\n editableTrigger = Array.isArray(editableTrigger) ? editableTrigger : [editableTrigger]\n return editableTrigger\n })\n\n const onCellEvent = (e: MouseEvent, trigger: EditableTrigger) => {\n if (editable.value && editableTrigger.value?.includes(trigger) && !props.isRowEdit) {\n openEditor()\n closeEditor()\n e.stopPropagation()\n e.preventDefault()\n }\n }\n\n const openEditor = () => {\n const oldValue = props.column.edit?.valueGetter?.(cellParams.value) ?? cellValue.value\n props.onOpenEditor?.(key.value, { [key.value]: oldValue })\n }\n\n const closeEditor = () => {\n props.onCloseEditor?.(key.value)\n }\n\n watch(key, () => {\n if (props.column.edit?.defaultEditable && !props.isRowEdit) {\n openEditor()\n }\n })\n\n onMounted(() => {\n if (props.column.edit?.defaultEditable && !props.isRowEdit) {\n openEditor()\n }\n })\n\n return {\n props,\n key,\n isEditing,\n editable,\n onCellEvent,\n }\n },\n})\n</script>\n\n<template>\n <template v-if=\"isEditing\">\n <BodyEditCell\n :key=\"key\"\n :prefixCls=\"prefixCls\"\n :rowIndex=\"rowIndex\"\n :flattenRowIndex=\"flattenRowIndex\"\n :rowKey=\"rowKey\"\n :column=\"column\"\n :item=\"item\"\n :edit-row=\"editRow\"\n :editable-keys=\"editableKeys\"\n :is-row-edit=\"isRowEdit\"\n />\n </template>\n <template v-else>\n <BodyTextCell\n v-bind=\"props\"\n :style=\"{ cursor: editable ? 'poiner' : '' }\"\n @click=\"onCellEvent($event, 'click')\"\n @dblClick=\"onCellEvent($event, 'dblClick')\"\n @contextmenu=\"onCellEvent($event, 'contextmenu')\"\n >\n <template #appendNode>\n <slot name=\"appendNode\" />\n </template>\n </BodyTextCell>\n </template>\n</template>\n"],"names":["_openBlock","_createBlock","_mergeProps","_withCtx","_renderSlot"],"mappings":";;;;;;;AA0IkB,EAAA,OAAA,IAAA,CAAA,SAAA,IAAAA,SAAA,EAAA,EACdC,YAWE,uBAAA,EAAA;AAAA,IAVC,KAAK,IAAA,CAAA,GAAA;AAAA,IACL,WAAW,IAAA,CAAA,SAAA;AAAA,IACX,UAAU,IAAA,CAAA,QAAA;AAAA,IACV,iBAAiB,IAAA,CAAA,eAAA;AAAA,IACjB,QAAQ,IAAA,CAAA,MAAA;AAAA,IACR,QAAQ,IAAA,CAAA,MAAA;AAAA,IACR,MAAM,IAAA,CAAA,IAAA;AAAA,IACN,YAAU,IAAA,CAAA,OAAA;AAAA,IACV,iBAAe,IAAA,CAAA,YAAA;AAAA,IACf,eAAa,IAAA,CAAA;AAAA,GAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,WAAA,EAAA,YAAA,iBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,aAAA,CAAA,CAAA,KAAAD,SAAA,EAAA,EAIhBC,WAAA,CAUe,uBAAA,EAVfC,UAAA,CAUe,EAAA,GAAA,EAAA,CAAA,EAAA,EATL,IAAA,CAAA,KAAA,EAAK;AAAA,IACZ,OAAK,UAAY,IAAA,CAAA,QAAA,GAAQ,WAAA,EAAA,EAAA;AAAA,IACzB,OAAA,EAAK,MAAA,CAAA,CAAA,CAAA,KAAA,MAAA,CAAA,CAAA,CAAA,GAAA,CAAA,MAAA,KAAE,IAAA,CAAA,WAAA,CAAY,MAAA,EAAM,OAAA,CAAA,CAAA;AAAA,IACzB,UAAA,EAAQ,MAAA,CAAA,CAAA,CAAA,KAAA,MAAA,CAAA,CAAA,CAAA,GAAA,CAAA,MAAA,KAAE,IAAA,CAAA,WAAA,CAAY,MAAA,EAAM,UAAA,CAAA,CAAA;AAAA,IAC5B,aAAA,EAAW,MAAA,CAAA,CAAA,CAAA,KAAA,MAAA,CAAA,CAAA,CAAA,GAAA,CAAA,MAAA,KAAE,IAAA,CAAA,WAAA,CAAY,MAAA,EAAM,aAAA,CAAA;AAAA,GAAA,CAAA,EAAA;AAAA,IAErB,UAAA,EAAUC,QACnB,MAA0B;AAAA,MAA1BC,UAAA,CAA0B,IAAA,CAAA,MAAA,EAAA,YAAA;AAAA,KAAA,CAAA;AAAA;;;;;;;;"}