pro-design-vue 1.3.21 → 1.3.23

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 (127) hide show
  1. package/dist/index.css +1 -1
  2. package/dist/index.full.js +1217 -1585
  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 +1218 -1586
  8. package/es/components/config-provider/src/typing.d.ts +1 -0
  9. package/es/components/table/src/components/Body/Body.vue.d.ts +261 -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 +61 -0
  12. package/es/components/table/src/components/Body/BodyRow.vue.d.ts +261 -15
  13. package/es/components/table/src/components/Body/BodyRows.vue.d.ts +261 -15
  14. package/es/components/table/src/components/Body/{BodyCell.d.ts → BodyTextCell.d.ts} +1 -7
  15. package/es/components/table/src/components/InteralTable.vue.d.ts +314 -19
  16. package/es/components/table/src/components/Table.d.ts +51 -0
  17. package/es/components/table/src/components/context/TableContext.d.ts +4 -0
  18. package/es/components/table/src/components/interface.d.ts +290 -23
  19. package/es/components/table/src/hooks/useCellProps.d.ts +5 -1
  20. package/es/components/table/src/hooks/useEdit.d.ts +24 -7
  21. package/es/components/table/src/utils/form-model.d.ts +25 -0
  22. package/es/components/table/src/utils/util.d.ts +1 -0
  23. package/es/index.d.ts +271 -5
  24. package/es/packages/components/table/src/components/Body/BodyCell.vue.mjs +35 -0
  25. package/es/packages/components/table/src/components/Body/BodyCell.vue.mjs.map +1 -0
  26. package/es/packages/components/table/src/components/Body/BodyCell.vue2.mjs +129 -0
  27. package/es/packages/components/table/src/components/Body/BodyCell.vue2.mjs.map +1 -0
  28. package/es/packages/components/table/src/components/Body/BodyEditCell.mjs +292 -0
  29. package/es/packages/components/table/src/components/Body/BodyEditCell.mjs.map +1 -0
  30. package/es/packages/components/table/src/components/Body/BodyRow.vue.mjs +63 -8
  31. package/es/packages/components/table/src/components/Body/BodyRow.vue.mjs.map +1 -1
  32. package/es/packages/components/table/src/components/Body/BodyRow.vue2.mjs +24 -18
  33. package/es/packages/components/table/src/components/Body/BodyRow.vue2.mjs.map +1 -1
  34. package/es/packages/components/table/src/components/Body/{BodyCell.mjs → BodyTextCell.mjs} +25 -155
  35. package/es/packages/components/table/src/components/Body/BodyTextCell.mjs.map +1 -0
  36. package/es/packages/components/table/src/components/InteralTable.vue.mjs +24 -25
  37. package/es/packages/components/table/src/components/InteralTable.vue.mjs.map +1 -1
  38. package/es/packages/components/table/src/components/InteralTable.vue2.mjs +36 -97
  39. package/es/packages/components/table/src/components/InteralTable.vue2.mjs.map +1 -1
  40. package/es/packages/components/table/src/components/Table.mjs +24 -20
  41. package/es/packages/components/table/src/components/Table.mjs.map +1 -1
  42. package/es/packages/components/table/src/components/context/TableContext.mjs.map +1 -1
  43. package/es/packages/components/table/src/components/interface.mjs +24 -0
  44. package/es/packages/components/table/src/components/interface.mjs.map +1 -1
  45. package/es/packages/components/table/src/hooks/useCellProps.mjs +8 -0
  46. package/es/packages/components/table/src/hooks/useCellProps.mjs.map +1 -1
  47. package/es/packages/components/table/src/hooks/useEdit.mjs +293 -18
  48. package/es/packages/components/table/src/hooks/useEdit.mjs.map +1 -1
  49. package/es/packages/components/table/src/utils/form-model.mjs +98 -0
  50. package/es/packages/components/table/src/utils/form-model.mjs.map +1 -0
  51. package/es/packages/components/table/src/utils/util.mjs +4 -1
  52. package/es/packages/components/table/src/utils/util.mjs.map +1 -1
  53. package/es/packages/utils/dom.mjs +15 -1
  54. package/es/packages/utils/dom.mjs.map +1 -1
  55. package/es/packages/utils/index.mjs +1 -1
  56. package/es/utils/dom.d.ts +2 -0
  57. package/es/version.d.ts +1 -1
  58. package/es/version.mjs +1 -1
  59. package/es/version.mjs.map +1 -1
  60. package/lib/components/config-provider/src/typing.d.ts +1 -0
  61. package/lib/components/table/src/components/Body/Body.vue.d.ts +261 -15
  62. package/lib/components/table/src/components/Body/BodyCell.vue.d.ts +255 -0
  63. package/lib/components/table/src/components/Body/BodyEditCell.d.ts +61 -0
  64. package/lib/components/table/src/components/Body/BodyRow.vue.d.ts +261 -15
  65. package/lib/components/table/src/components/Body/BodyRows.vue.d.ts +261 -15
  66. package/lib/components/table/src/components/Body/{BodyCell.d.ts → BodyTextCell.d.ts} +1 -7
  67. package/lib/components/table/src/components/InteralTable.vue.d.ts +314 -19
  68. package/lib/components/table/src/components/Table.d.ts +51 -0
  69. package/lib/components/table/src/components/context/TableContext.d.ts +4 -0
  70. package/lib/components/table/src/components/interface.d.ts +290 -23
  71. package/lib/components/table/src/hooks/useCellProps.d.ts +5 -1
  72. package/lib/components/table/src/hooks/useEdit.d.ts +24 -7
  73. package/lib/components/table/src/utils/form-model.d.ts +25 -0
  74. package/lib/components/table/src/utils/util.d.ts +1 -0
  75. package/lib/index.d.ts +271 -5
  76. package/lib/packages/components/table/src/components/Body/BodyCell.vue.js +39 -0
  77. package/lib/packages/components/table/src/components/Body/BodyCell.vue.js.map +1 -0
  78. package/lib/packages/components/table/src/components/Body/BodyCell.vue2.js +133 -0
  79. package/lib/packages/components/table/src/components/Body/BodyCell.vue2.js.map +1 -0
  80. package/lib/packages/components/table/src/components/Body/BodyEditCell.js +297 -0
  81. package/lib/packages/components/table/src/components/Body/BodyEditCell.js.map +1 -0
  82. package/lib/packages/components/table/src/components/Body/BodyRow.vue.js +63 -8
  83. package/lib/packages/components/table/src/components/Body/BodyRow.vue.js.map +1 -1
  84. package/lib/packages/components/table/src/components/Body/BodyRow.vue2.js +22 -16
  85. package/lib/packages/components/table/src/components/Body/BodyRow.vue2.js.map +1 -1
  86. package/lib/packages/components/table/src/components/Body/{BodyCell.js → BodyTextCell.js} +24 -154
  87. package/lib/packages/components/table/src/components/Body/BodyTextCell.js.map +1 -0
  88. package/lib/packages/components/table/src/components/InteralTable.vue.js +24 -25
  89. package/lib/packages/components/table/src/components/InteralTable.vue.js.map +1 -1
  90. package/lib/packages/components/table/src/components/InteralTable.vue2.js +36 -97
  91. package/lib/packages/components/table/src/components/InteralTable.vue2.js.map +1 -1
  92. package/lib/packages/components/table/src/components/Table.js +24 -20
  93. package/lib/packages/components/table/src/components/Table.js.map +1 -1
  94. package/lib/packages/components/table/src/components/context/TableContext.js.map +1 -1
  95. package/lib/packages/components/table/src/components/interface.js +24 -0
  96. package/lib/packages/components/table/src/components/interface.js.map +1 -1
  97. package/lib/packages/components/table/src/hooks/useCellProps.js +8 -0
  98. package/lib/packages/components/table/src/hooks/useCellProps.js.map +1 -1
  99. package/lib/packages/components/table/src/hooks/useEdit.js +292 -17
  100. package/lib/packages/components/table/src/hooks/useEdit.js.map +1 -1
  101. package/lib/packages/components/table/src/utils/form-model.js +102 -0
  102. package/lib/packages/components/table/src/utils/form-model.js.map +1 -0
  103. package/lib/packages/components/table/src/utils/util.js +4 -0
  104. package/lib/packages/components/table/src/utils/util.js.map +1 -1
  105. package/lib/packages/utils/dom.js +16 -0
  106. package/lib/packages/utils/dom.js.map +1 -1
  107. package/lib/packages/utils/index.js +2 -0
  108. package/lib/packages/utils/index.js.map +1 -1
  109. package/lib/utils/dom.d.ts +2 -0
  110. package/lib/version.d.ts +1 -1
  111. package/lib/version.js +1 -1
  112. package/lib/version.js.map +1 -1
  113. package/package.json +1 -1
  114. package/theme-chalk/index.css +1 -1
  115. package/theme-chalk/src/table/table.less +40 -2
  116. package/es/components/table/src/components/Body/EditInput.vue.d.ts +0 -102
  117. package/es/packages/components/table/src/components/Body/BodyCell.mjs.map +0 -1
  118. package/es/packages/components/table/src/components/Body/EditInput.vue.mjs +0 -48
  119. package/es/packages/components/table/src/components/Body/EditInput.vue.mjs.map +0 -1
  120. package/es/packages/components/table/src/components/Body/EditInput.vue2.mjs +0 -151
  121. package/es/packages/components/table/src/components/Body/EditInput.vue2.mjs.map +0 -1
  122. package/lib/components/table/src/components/Body/EditInput.vue.d.ts +0 -102
  123. package/lib/packages/components/table/src/components/Body/BodyCell.js.map +0 -1
  124. package/lib/packages/components/table/src/components/Body/EditInput.vue.js +0 -52
  125. package/lib/packages/components/table/src/components/Body/EditInput.vue.js.map +0 -1
  126. package/lib/packages/components/table/src/components/Body/EditInput.vue2.js +0 -155
  127. package/lib/packages/components/table/src/components/Body/EditInput.vue2.js.map +0 -1
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,6 +1967,10 @@ 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;
@@ -2023,6 +2044,14 @@ declare const _default_17: DefineComponent<ExtractPropTypes<{
2023
2044
  }) => Record<string, any>>;
2024
2045
  default: () => {};
2025
2046
  };
2047
+ editableKeys: {
2048
+ type: PropType<ProTableKey[]>;
2049
+ default: undefined;
2050
+ };
2051
+ rowEditable: {
2052
+ type: PropType<RowEditableConfig<DefaultRecordType>>;
2053
+ default: undefined;
2054
+ };
2026
2055
  showHeader: {
2027
2056
  type: BooleanConstructor;
2028
2057
  default: boolean;
@@ -2195,6 +2224,9 @@ declare const _default_17: DefineComponent<ExtractPropTypes<{
2195
2224
  type: BooleanConstructor;
2196
2225
  default: undefined;
2197
2226
  };
2227
+ editableCellState: {
2228
+ type: PropType<EditableCellType<DefaultRecordType>>;
2229
+ };
2198
2230
  paginationSticky: {
2199
2231
  type: PropType<boolean | BottomSticky>;
2200
2232
  default: boolean;
@@ -2248,6 +2280,15 @@ declare const _default_17: DefineComponent<ExtractPropTypes<{
2248
2280
  type: PropType<(opt: CellRenderArgs) => void>;
2249
2281
  default: undefined;
2250
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
+ };
2251
2292
  "onUpdate:pagination": {
2252
2293
  type: PropType<(info: ProTablePaginationConfig) => void>;
2253
2294
  };
@@ -2449,6 +2490,10 @@ declare const _default_17: DefineComponent<ExtractPropTypes<{
2449
2490
  type: BooleanConstructor;
2450
2491
  default: undefined;
2451
2492
  };
2493
+ selectRowByClick: {
2494
+ type: BooleanConstructor;
2495
+ default: undefined;
2496
+ };
2452
2497
  expandIcon: {
2453
2498
  type: PropType<RenderExpandIcon<DefaultRecordType>>;
2454
2499
  default: undefined;
@@ -2522,6 +2567,14 @@ declare const _default_17: DefineComponent<ExtractPropTypes<{
2522
2567
  }) => Record<string, any>>;
2523
2568
  default: () => {};
2524
2569
  };
2570
+ editableKeys: {
2571
+ type: PropType<ProTableKey[]>;
2572
+ default: undefined;
2573
+ };
2574
+ rowEditable: {
2575
+ type: PropType<RowEditableConfig<DefaultRecordType>>;
2576
+ default: undefined;
2577
+ };
2525
2578
  showHeader: {
2526
2579
  type: BooleanConstructor;
2527
2580
  default: boolean;
@@ -2694,6 +2747,9 @@ declare const _default_17: DefineComponent<ExtractPropTypes<{
2694
2747
  type: BooleanConstructor;
2695
2748
  default: undefined;
2696
2749
  };
2750
+ editableCellState: {
2751
+ type: PropType<EditableCellType<DefaultRecordType>>;
2752
+ };
2697
2753
  paginationSticky: {
2698
2754
  type: PropType<boolean | BottomSticky>;
2699
2755
  default: boolean;
@@ -2747,6 +2803,15 @@ declare const _default_17: DefineComponent<ExtractPropTypes<{
2747
2803
  type: PropType<(opt: CellRenderArgs) => void>;
2748
2804
  default: undefined;
2749
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
+ };
2750
2815
  "onUpdate:pagination": {
2751
2816
  type: PropType<(info: ProTablePaginationConfig) => void>;
2752
2817
  };
@@ -2857,6 +2922,7 @@ declare const _default_17: DefineComponent<ExtractPropTypes<{
2857
2922
  defaultExpandedRowKeys: ProTableKey[];
2858
2923
  expandedRowRender: ExpandedRowRender<DefaultRecordType>;
2859
2924
  expandRowByClick: boolean;
2925
+ selectRowByClick: boolean;
2860
2926
  expandIcon: RenderExpandIcon<DefaultRecordType>;
2861
2927
  expandIconType: ExpandIconType;
2862
2928
  onExpand: (expanded: boolean, record: DefaultRecordType) => void;
@@ -2882,6 +2948,8 @@ declare const _default_17: DefineComponent<ExtractPropTypes<{
2882
2948
  column: ColumnType<DefaultRecordType>;
2883
2949
  columnIndex: number;
2884
2950
  }) => Record<string, any>;
2951
+ editableKeys: ProTableKey[];
2952
+ rowEditable: RowEditableConfig<DefaultRecordType>;
2885
2953
  showHeader: boolean;
2886
2954
  showSorterTooltip: boolean | Partial<ExtractPropTypes<{
2887
2955
  title: VueTypeValidableDef_2<any>;
@@ -5126,6 +5194,59 @@ declare const drawerOrModalFormProps: () => {
5126
5194
  };
5127
5195
  name: StringConstructor;
5128
5196
  };
5197
+ declare interface EditableCellConfig<T = DefaultRecordType> {
5198
+ /**
5199
+ * 触发编辑的事件
5200
+ */
5201
+ editableTrigger?: EditableTrigger | EditableTrigger[];
5202
+ /**
5203
+ * 组件定义,如:`Input` `Select`。对于完全自定义的组件(非组件库内的组件),组件需要支持 `value` 和 `onChange` ;如果还需要支持校验规则,则组件还需实现 `tips` 和 `status` 两个 API,实现规则可参考 `Input` 组件
5204
+ */
5205
+ component?: any;
5206
+ /**
5207
+ * 单元格默认状态是否为编辑态
5208
+ * @default false
5209
+ */
5210
+ defaultEditable?: boolean;
5211
+ /**
5212
+ * 设置当前列的单元格始终保持为编辑态
5213
+ * @default false
5214
+ */
5215
+ keepEditMode?: boolean;
5216
+ /**
5217
+ * 行内错误提示
5218
+ * @default false
5219
+ */
5220
+ inlineError?: boolean;
5221
+ /**
5222
+ * 是否可以编辑
5223
+ */
5224
+ editable?: (context: EditableValueParams<T>) => boolean;
5225
+ valueParser?: ValueParserFunc<T>;
5226
+ valueGetter?: ValueGetterFunc<T>;
5227
+ valueSetter?: (params: EditableValueParams<T>) => boolean | Promise<any>;
5228
+ /**
5229
+ * 透传给编辑组件的事件,参数有({ row, rowIndex, col, colIndex, editedRow, updateEditedCellValue })。可以使用参数 `updateEditedCellValue` 更新当前单元格(或当前行任意编辑状态单元格)的值。<br/>更新当前单元格数据示例:`updateEditedCellValue(value)`;<br/>更新当前行编辑态数据示例:`updateEditedCellValue({ isUpdateCurrentRow: true, column_key: 'test' })`;<br/>更新其他行编辑态数据示例:`updateEditedCellValue({ rowValue: '124', column_key: 'test' })`
5230
+ */
5231
+ on?: (context: EditableValueParams<T>) => {
5232
+ [eventName: string]: Function;
5233
+ };
5234
+ /**
5235
+ * 编辑完成后,退出编辑模式时触发
5236
+ */
5237
+ onEdited?: (context: EditableValueParams<T>) => void;
5238
+ /**
5239
+ * 透传给组件 `edit.component` 的属性,可以使用 `updateEditedCellValue` 更新当前行任意编辑状态单元格的值
5240
+ */
5241
+ props?: EditableCellProps<T>;
5242
+ /**
5243
+ * 校验规则
5244
+ */
5245
+ rules?: EditableCellRules<T>;
5246
+ }
5247
+ declare type EditableCellProps<T> = PlainObject | ((params: EditableValueParams<T>) => PlainObject);
5248
+ declare type EditableCellRules<T> = EditRule[] | ((params: EditableValueParams<T>) => EditRule[]);
5249
+ declare type EditableCellType<T> = (params: EditableValueParams<T>) => boolean;
5129
5250
  declare type EditableTrigger = "click" | "dblClick" | "contextmenu";
5130
5251
  declare interface EditableValueParams<RecordType = DefaultRecordType, TValue = any> {
5131
5252
  value: TValue;
@@ -5133,11 +5254,74 @@ declare interface EditableValueParams<RecordType = DefaultRecordType, TValue = a
5133
5254
  recordIndexs: number[];
5134
5255
  column: ColumnType<RecordType>;
5135
5256
  }
5257
+ declare interface EditRule {
5258
+ /**
5259
+ * 内置校验方法,校验值类型是否为布尔类型,示例:`{ boolean: true, message: '数据类型必须是布尔类型' }`
5260
+ */
5261
+ boolean?: boolean;
5262
+ /**
5263
+ * 内置校验方法,校验值是否属于枚举值中的值。示例:`{ enum: ['primary', 'info', 'warning'], message: '值只能是 primary/info/warning 中的一种' }`
5264
+ */
5265
+ enum?: Array<string>;
5266
+ /**
5267
+ * 内置校验方法,校验值是否为身份证号码,组件校验正则为 `/^(\\d{18,18}|\\d{15,15}|\\d{17,17}x)$/i`,示例:`{ idcard: true, message: '请输入正确的身份证号码' }`
5268
+ */
5269
+ idcard?: boolean;
5270
+ /**
5271
+ * 内置校验方法,校验值固定长度,如:len: 10 表示值的字符长度只能等于 10 ,中文表示 2 个字符,英文为 1 个字符。示例:`{ len: 10, message: '内容长度不对' }`。<br />如果希望字母和中文都是同样的长度,示例:`{ validator: (val) => val.length === 10, message: '内容文本长度只能是 10 个字' }`
5272
+ */
5273
+ len?: number | boolean;
5274
+ /**
5275
+ * 内置校验方法,校验值最大长度,如:max: 100 表示值最多不能超过 100 个字符,中文表示 2 个字符,英文为 1 个字符。示例:`{ max: 10, message: '内容超出' }`。<br />如果希望字母和中文都是同样的长度,示例:`{ validator: (val) => val.length <= 10, message: '内容文本长度不能超过 10 个字' }`<br />如果数据类型数字(Number),则自动变为数字大小的比对
5276
+ */
5277
+ max?: number | boolean;
5278
+ /**
5279
+ * 校验未通过时呈现的错误信息,值为空则不显示
5280
+ * @default ''
5281
+ */
5282
+ message?: string;
5283
+ /**
5284
+ * 内置校验方法,校验值最小长度,如:min: 10 表示值最多不能少于 10 个字符,中文表示 2 个字符,英文为 1 个字符。示例:`{ min: 10, message: '内容长度不够' }`。<br />如果希望字母和中文都是同样的长度,示例:`{ validator: (val) => val.length >= 10, message: '内容文本长度至少为 10 个字' }`。<br />如果数据类型数字(Number),则自动变为数字大小的比对
5285
+ */
5286
+ min?: number | boolean;
5287
+ /**
5288
+ * 内置校验方法,校验值是否为数字(1.2 、 1e5 都算数字),示例:`{ number: true, message: '请输入数字' }`
5289
+ */
5290
+ number?: boolean;
5291
+ /**
5292
+ * 内置校验方法,校验值是否符合正则表达式匹配结果,示例:`{ pattern: /@qq.com/, message: '请输入 QQ 邮箱' }`
5293
+ */
5294
+ pattern?: RegExp;
5295
+ /**
5296
+ * 内置校验方法,校验值是否已经填写。该值为 true,默认显示必填标记,可通过设置 `requiredMark: false` 隐藏必填标记
5297
+ */
5298
+ required?: boolean;
5299
+ /**
5300
+ * 内置校验方法,校验值是否为手机号码,校验正则为 `/^1[3-9]\d{9}$/`,示例:`{ telnumber: true, message: '请输入正确的手机号码' }`
5301
+ */
5302
+ telnumber?: boolean;
5303
+ /**
5304
+ * 校验未通过时呈现的错误信息类型,有 告警信息提示 和 错误信息提示 等两种
5305
+ * @default error
5306
+ */
5307
+ type?: "error" | "warning";
5308
+ /**
5309
+ * 自定义校验规则,示例:`{ validator: (val) => val.length > 0, message: '请输入内容'}`
5310
+ */
5311
+ validator?: CustomValidator;
5312
+ /**
5313
+ * 内置校验方法,校验值是否为空格。示例:`{ whitespace: true, message: '值不能为空' }`
5314
+ */
5315
+ whitespace?: boolean;
5316
+ }
5136
5317
  /** 内容区域的组件ID */
5137
5318
  export declare const ELEMENT_ID_MAIN_CONTENT = "__pro_main_content";
5138
5319
  export declare const enGBIntl: IntlType;
5139
5320
  export declare type Entity = Record<string, any>;
5140
5321
  export declare const enUSIntl: IntlType;
5322
+ declare type ErrorListObjectType = TableEditingCell & {
5323
+ errorList: AllValidateResult[];
5324
+ };
5141
5325
  export declare const esESIntl: IntlType;
5142
5326
  export declare type EventHandler = (...args: any[]) => void;
5143
5327
  declare type ExpandedRowRender<ValueType> = (opt: {
@@ -5650,6 +5834,10 @@ declare class Helper<T extends DefaultRecordType> {
5650
5834
  type: BooleanConstructor;
5651
5835
  default: undefined;
5652
5836
  };
5837
+ selectRowByClick: {
5838
+ type: BooleanConstructor;
5839
+ default: undefined;
5840
+ };
5653
5841
  expandIcon: {
5654
5842
  type: PropType<RenderExpandIcon<T>>;
5655
5843
  default: undefined;
@@ -5721,6 +5909,14 @@ declare class Helper<T extends DefaultRecordType> {
5721
5909
  }) => Record<string, any>>;
5722
5910
  default: () => {};
5723
5911
  };
5912
+ editableKeys: {
5913
+ type: PropType<ProTableKey[]>;
5914
+ default: undefined;
5915
+ };
5916
+ rowEditable: {
5917
+ type: PropType<RowEditableConfig<T>>;
5918
+ default: undefined;
5919
+ };
5724
5920
  showHeader: {
5725
5921
  type: BooleanConstructor;
5726
5922
  default: boolean;
@@ -5891,6 +6087,9 @@ declare class Helper<T extends DefaultRecordType> {
5891
6087
  type: BooleanConstructor;
5892
6088
  default: undefined;
5893
6089
  };
6090
+ editableCellState: {
6091
+ type: PropType<EditableCellType<T>>;
6092
+ };
5894
6093
  paginationSticky: {
5895
6094
  type: PropType<boolean | BottomSticky>;
5896
6095
  default: boolean;
@@ -5944,6 +6143,15 @@ declare class Helper<T extends DefaultRecordType> {
5944
6143
  type: PropType<(opt: CellRenderArgs) => void>;
5945
6144
  default: undefined;
5946
6145
  };
6146
+ onDataChange: {
6147
+ type: PropType<(dataSource: T[]) => void>;
6148
+ };
6149
+ onRowValidate: {
6150
+ type: PropType<(TablePromiseErrorData: any) => void>;
6151
+ };
6152
+ onValidate: {
6153
+ type: PropType<(TablePromiseErrorData: any) => void>;
6154
+ };
5947
6155
  "onUpdate:pagination": {
5948
6156
  type: PropType<(info: ProTablePaginationConfig) => void>;
5949
6157
  };
@@ -6124,6 +6332,9 @@ declare interface PaginationProps {
6124
6332
  role?: string;
6125
6333
  showLessItems?: boolean;
6126
6334
  }
6335
+ declare interface PlainObject {
6336
+ [key: string]: any;
6337
+ }
6127
6338
  export declare const plPLIntl: IntlType;
6128
6339
  export declare const ProButton: SFCWithInstall<DefineComponent<ExtractPropTypes<{
6129
6340
  type: PropType<ButtonProps["type"]>;
@@ -6388,6 +6599,7 @@ export declare interface ProConfigProviderProps extends Omit<ConfigProviderProps
6388
6599
  cardBordered?: Bordered;
6389
6600
  childrenColumnName?: string;
6390
6601
  expandRowByClick?: boolean;
6602
+ selectRowByClick?: boolean;
6391
6603
  rowKey?: string;
6392
6604
  size?: ProTableDensitySize;
6393
6605
  expandIconType?: ExpandIconType;
@@ -7075,6 +7287,12 @@ export declare interface ProTableExposeType {
7075
7287
  calcTableHeight: () => Promise<void>;
7076
7288
  formSearchSubmit: () => void;
7077
7289
  getSearchParams: () => Record<string, any>;
7290
+ validateRowData: (rowValue: any) => Promise<TablePromiseErrorData>;
7291
+ validateTableData: () => Promise<TablePromiseErrorData>;
7292
+ addEditRecord: (recordValue?: any, options?: AddLineOptions) => false | undefined;
7293
+ startEditable: (recordKey: ProTableKey, recordValue?: any) => boolean;
7294
+ cancelEditable: (recordKey: ProTableKey) => boolean;
7295
+ saveEditable: (recordKey: ProTableKey) => Promise<boolean>;
7078
7296
  }
7079
7297
  export declare type ProTableInstance = InstanceType<typeof _default_17> & ProTableExposeType;
7080
7298
  export declare type ProTableKey = string | number;
@@ -10517,6 +10735,34 @@ declare interface RowDragGhostArg<RecordT, ColumnT> {
10517
10735
  preTargetInfo: DragRowsHandleInfo | null;
10518
10736
  nextTargetInfo: DragRowsHandleInfo | null;
10519
10737
  }
10738
+ declare type RowEditableConfig<DataType> = {
10739
+ /**
10740
+ * @type single | multiple
10741
+ * @name 编辑的类型,支持单选和多选
10742
+ */
10743
+ type?: RowEditableType;
10744
+ /** @name 正在编辑的列 */
10745
+ editableKeys?: ProTableKey[];
10746
+ /** 只能编辑一行的的提示 */
10747
+ onlyOneLineEditorAlertMessage?: string;
10748
+ /** 同时只能新增一行的提示 */
10749
+ onlyAddOneLineAlertMessage?: string | false;
10750
+ /** 正在编辑的列修改的时候 */
10751
+ onChange?: (editableKeys: ProTableKey[], editableRows: DataType[] | DataType) => void;
10752
+ /** 行保存的时候 */
10753
+ onSave?: (
10754
+ /** 行 id,一般是唯一id */
10755
+ key: ProTableKey,
10756
+ /** 当前修改的行的值 */
10757
+ record: DataType & {
10758
+ index?: number;
10759
+ },
10760
+ /** 原始值,可以用于判断是否修改 */
10761
+ originRow: DataType & {
10762
+ index?: number;
10763
+ }) => Promise<any | void> | any | void;
10764
+ };
10765
+ declare type RowEditableType = "single" | "multiple";
10520
10766
  export declare type RowHeight = ((p: Record<any, any>, isExpandRow: boolean, baseHeight: number) => number | undefined) | number;
10521
10767
  declare type RowSelectionType = "checkbox" | "radio";
10522
10768
  export declare const ruRUIntl: IntlType;
@@ -10809,6 +11055,18 @@ declare interface TableCurrentDataSource<RecordType = DefaultRecordType> {
10809
11055
  currentDataSource: RecordType[];
10810
11056
  action: TableAction;
10811
11057
  }
11058
+ declare type TableEditingCell<RecordType = DefaultRecordType> = {
11059
+ recordIndexs: number[];
11060
+ column: ColumnType<RecordType>;
11061
+ rowKey: ProTableKey;
11062
+ originRecord: RecordType;
11063
+ rowIndex: number;
11064
+ columnKey: ProTableKey;
11065
+ validateEdit: () => Promise<true | AllValidateResult[]>;
11066
+ };
11067
+ declare type TableErrorListMap = {
11068
+ [key: string]: AllValidateResult[];
11069
+ };
10812
11070
  declare interface TableLocale {
10813
11071
  filterTitle?: string;
10814
11072
  filterConfirm?: any;
@@ -10827,6 +11085,11 @@ declare interface TableLocale {
10827
11085
  cancelSort?: string;
10828
11086
  }
10829
11087
  declare type TablePaginationPosition = "topLeft" | "topCenter" | "topRight" | "bottomLeft" | "bottomCenter" | "bottomRight";
11088
+ declare interface TablePromiseErrorData {
11089
+ errors: ErrorListObjectType[];
11090
+ errorMap: TableErrorListMap;
11091
+ data?: DefaultRecordType[];
11092
+ }
10830
11093
  export declare type Theme = "default" | "custom";
10831
11094
  export declare type ThemeModeType = "auto" | "dark" | "light";
10832
11095
  declare type ThemeType = "light" | "dark";
@@ -10906,11 +11169,14 @@ export declare function useState<T, R = Ref<T>>(defaultStateValue?: T | (() => T
10906
11169
  (val: T) => void
10907
11170
  ];
10908
11171
  export declare const uzUZIntl: IntlType;
11172
+ declare interface ValidateResultType extends EditRule {
11173
+ result: boolean;
11174
+ }
10909
11175
  declare interface ValueGetterFunc<T = any, TValue = any> {
10910
11176
  (params: EditableValueParams<T, TValue>): string | null | undefined;
10911
11177
  }
10912
11178
  declare interface ValueParserFunc<T = any, TValue = any> {
10913
- (params: ValueParserParams<T, TValue>): TValue | null | undefined;
11179
+ (params: EditableValueParams<T, TValue>): TValue | null | undefined;
10914
11180
  }
10915
11181
  declare interface ValueParserParams<RecordType = DefaultRecordType, TValue = any> {
10916
11182
  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;;;;;;;;"}
@@ -0,0 +1,129 @@
1
+ import { defineComponent, computed, watch, onMounted } from 'vue';
2
+ import { useInjectTable } from '../context/TableContext.mjs';
3
+ import { getCellKey } from '../../utils/util.mjs';
4
+ import BodyCell from './BodyTextCell.mjs';
5
+ import BodyEditCell from './BodyEditCell.mjs';
6
+ import { get } from 'lodash-unified';
7
+
8
+ var _sfc_main = defineComponent({
9
+ inheritAttrs: false,
10
+ props: {
11
+ prefixCls: String,
12
+ rowIndex: { type: Number, required: true },
13
+ flattenRowIndex: { type: Number, required: true },
14
+ rowKey: { type: [Number, String] },
15
+ column: { type: Object, default: () => ({}) },
16
+ item: { type: Object, default: () => ({}) },
17
+ wrapText: { type: Boolean, default: false },
18
+ type: { type: String },
19
+ height: Number,
20
+ hasAppendNode: Boolean,
21
+ resizeObserver: { type: Object },
22
+ editRow: { type: Object },
23
+ calMaxHeight: Function,
24
+ editCellKeys: Array,
25
+ editableKeys: Array,
26
+ isRowEdit: Boolean,
27
+ tooltipOpen: Boolean,
28
+ getPopupContainer: Function,
29
+ onOpenEditor: Function,
30
+ onCloseEditor: Function,
31
+ onCellLeave: Function,
32
+ onMouseenter: Function
33
+ },
34
+ emits: ["mouseenter", "cellLeave"],
35
+ components: { BodyTextCell: BodyCell, BodyEditCell },
36
+ setup(props) {
37
+ const tableContext = useInjectTable();
38
+ const isKeepEditMode = computed(() => {
39
+ var _a;
40
+ return (_a = props.column.edit) == null ? void 0 : _a.keepEditMode;
41
+ });
42
+ const cellValue = computed(
43
+ () => props.column.dataIndex ? get(props.item, props.column.dataIndex) : void 0
44
+ );
45
+ const key = computed(() => getCellKey(props.rowKey, props.column.columnKey));
46
+ const cellParams = computed(() => ({
47
+ column: props.column,
48
+ record: props.isRowEdit ? props.editRow : props.item,
49
+ recordIndexs: tableContext.getIndexsByKey(props.rowKey),
50
+ value: cellValue.value
51
+ }));
52
+ const editable = computed(() => {
53
+ var _a, _b, _c, _d;
54
+ if (!((_a = props.column.edit) == null ? void 0 : _a.component)) {
55
+ return false;
56
+ }
57
+ if (props.isRowEdit && !((_b = props.editableKeys) == null ? void 0 : _b.includes(props.rowKey))) {
58
+ return false;
59
+ }
60
+ if (!((_c = props.column.edit) == null ? void 0 : _c.editable)) {
61
+ return true;
62
+ }
63
+ const cellEditable = (_d = props.column.edit) == null ? void 0 : _d.editable(cellParams.value);
64
+ return cellEditable;
65
+ });
66
+ const isEditing = computed(() => {
67
+ var _a, _b;
68
+ if (props.isRowEdit) {
69
+ return editable.value && ((_a = props.editableKeys) == null ? void 0 : _a.includes(props.rowKey));
70
+ }
71
+ if (!editable.value) {
72
+ return false;
73
+ }
74
+ if (isKeepEditMode.value) {
75
+ return true;
76
+ }
77
+ if ((_b = props.editCellKeys) == null ? void 0 : _b.includes(key.value)) {
78
+ return true;
79
+ }
80
+ return false;
81
+ });
82
+ const editableTrigger = computed(() => {
83
+ var _a;
84
+ let { editableTrigger: editableTrigger2 = ["click"] } = (_a = props.column.edit) != null ? _a : {};
85
+ editableTrigger2 = Array.isArray(editableTrigger2) ? editableTrigger2 : [editableTrigger2];
86
+ return editableTrigger2;
87
+ });
88
+ const onCellEvent = (e, trigger) => {
89
+ var _a;
90
+ if (editable.value && ((_a = editableTrigger.value) == null ? void 0 : _a.includes(trigger)) && !props.isRowEdit) {
91
+ openEditor();
92
+ closeEditor();
93
+ e.stopPropagation();
94
+ e.preventDefault();
95
+ }
96
+ };
97
+ const openEditor = () => {
98
+ var _a, _b, _c, _d;
99
+ const oldValue = (_c = (_b = (_a = props.column.edit) == null ? void 0 : _a.valueGetter) == null ? void 0 : _b.call(_a, cellParams.value)) != null ? _c : cellValue.value;
100
+ (_d = props.onOpenEditor) == null ? void 0 : _d.call(props, key.value, { [key.value]: oldValue });
101
+ };
102
+ const closeEditor = () => {
103
+ var _a;
104
+ (_a = props.onCloseEditor) == null ? void 0 : _a.call(props, key.value);
105
+ };
106
+ watch(key, () => {
107
+ var _a;
108
+ if (((_a = props.column.edit) == null ? void 0 : _a.defaultEditable) && !props.isRowEdit) {
109
+ openEditor();
110
+ }
111
+ });
112
+ onMounted(() => {
113
+ var _a;
114
+ if (((_a = props.column.edit) == null ? void 0 : _a.defaultEditable) && !props.isRowEdit) {
115
+ openEditor();
116
+ }
117
+ });
118
+ return {
119
+ props,
120
+ key,
121
+ isEditing,
122
+ editable,
123
+ onCellEvent
124
+ };
125
+ }
126
+ });
127
+
128
+ export { _sfc_main as default };
129
+ //# sourceMappingURL=BodyCell.vue2.mjs.map