vxe-table 4.20.12 → 4.21.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/README.md +4 -2
  2. package/dist/all.esm.js +241 -119
  3. package/dist/style.css +1 -1
  4. package/dist/style.min.css +1 -1
  5. package/es/index.css +1 -1
  6. package/es/index.min.css +1 -1
  7. package/es/style.css +1 -1
  8. package/es/style.min.css +1 -1
  9. package/es/table/module/edit/hook.js +72 -38
  10. package/es/table/module/keyboard/hook.js +2 -2
  11. package/es/table/render/index.js +111 -26
  12. package/es/table/src/cell.js +12 -21
  13. package/es/table/src/table.js +39 -29
  14. package/es/table/style.css +9 -0
  15. package/es/table/style.min.css +1 -1
  16. package/es/ui/index.js +4 -2
  17. package/es/ui/src/log.js +1 -1
  18. package/es/vxe-table/style.css +9 -0
  19. package/es/vxe-table/style.min.css +1 -1
  20. package/lib/index.css +1 -1
  21. package/lib/index.min.css +1 -1
  22. package/lib/index.umd.js +372 -181
  23. package/lib/index.umd.min.js +1 -1
  24. package/lib/style.css +1 -1
  25. package/lib/style.min.css +1 -1
  26. package/lib/table/module/edit/hook.js +79 -36
  27. package/lib/table/module/edit/hook.min.js +1 -1
  28. package/lib/table/module/keyboard/hook.js +2 -2
  29. package/lib/table/module/keyboard/hook.min.js +1 -1
  30. package/lib/table/render/index.js +161 -30
  31. package/lib/table/render/index.min.js +1 -1
  32. package/lib/table/src/cell.js +8 -17
  33. package/lib/table/src/cell.min.js +1 -1
  34. package/lib/table/src/table.js +17 -17
  35. package/lib/table/src/table.min.js +1 -1
  36. package/lib/table/style/style.css +9 -0
  37. package/lib/table/style/style.min.css +1 -1
  38. package/lib/ui/index.js +4 -2
  39. package/lib/ui/index.min.js +1 -1
  40. package/lib/ui/src/log.js +1 -1
  41. package/lib/ui/src/log.min.js +1 -1
  42. package/lib/vxe-table/style/style.css +9 -0
  43. package/lib/vxe-table/style/style.min.css +1 -1
  44. package/package.json +2 -2
  45. package/packages/table/module/edit/hook.ts +90 -40
  46. package/packages/table/module/keyboard/hook.ts +2 -2
  47. package/packages/table/render/index.ts +138 -28
  48. package/packages/table/src/cell.ts +12 -21
  49. package/packages/table/src/table.ts +39 -29
  50. package/packages/ui/index.ts +3 -1
  51. package/styles/components/table.scss +18 -0
  52. /package/es/{iconfont.1786589186405.ttf → iconfont.1786796867061.ttf} +0 -0
  53. /package/es/{iconfont.1786589186405.woff → iconfont.1786796867061.woff} +0 -0
  54. /package/es/{iconfont.1786589186405.woff2 → iconfont.1786796867061.woff2} +0 -0
  55. /package/lib/{iconfont.1786589186405.ttf → iconfont.1786796867061.ttf} +0 -0
  56. /package/lib/{iconfont.1786589186405.woff → iconfont.1786796867061.woff} +0 -0
  57. /package/lib/{iconfont.1786589186405.woff2 → iconfont.1786796867061.woff2} +0 -0
package/dist/all.esm.js CHANGED
@@ -44,7 +44,7 @@ function eqEmptyValue(cellValue) {
44
44
  return cellValue === '' || XEUtils.eqNull(cellValue);
45
45
  }
46
46
 
47
- const version = "4.20.12";
47
+ const version = "4.21.0-beta.0";
48
48
  VxeUI.version = version;
49
49
  VxeUI.tableVersion = version;
50
50
  VxeUI.setConfig({
@@ -242,9 +242,11 @@ VxeUI.setConfig({
242
242
  },
243
243
  editConfig: {
244
244
  // mode: 'cell',
245
+ // cache: true,
245
246
  showIcon: true,
246
247
  showAsterisk: true,
247
- autoFocus: true
248
+ autoFocus: true,
249
+ isReuseKeep: true
248
250
  },
249
251
  importConfig: {
250
252
  _typeMaps: {
@@ -758,7 +760,7 @@ function wheelScrollTopTo(diffNum, cb) {
758
760
  }
759
761
 
760
762
  const { log } = VxeUI;
761
- const tableVersion = `table v${"4.20.12"}`;
763
+ const tableVersion = `table v${"4.21.0-beta.0"}`;
762
764
  function createComponentLog(name) {
763
765
  const uiVersion = VxeUI.uiVersion ? `ui v${VxeUI.uiVersion}` : '';
764
766
  const ganttVersion = VxeUI.ganttVersion ? `gantt v${VxeUI.ganttVersion}` : '';
@@ -2344,7 +2346,11 @@ function renderHeaderHandle(params) {
2344
2346
  const { column, $table } = params;
2345
2347
  const tableProps = $table.props;
2346
2348
  const { editConfig } = tableProps;
2347
- const { type, filters, sortable, editRender } = column;
2349
+ const { type, filters, sortable, editRender, slots } = column;
2350
+ const headerSlot = slots ? slots.header : null;
2351
+ if (headerSlot) {
2352
+ return renderTitleContent(params, $table.callSlot(headerSlot, params));
2353
+ }
2348
2354
  switch (type) {
2349
2355
  case 'seq':
2350
2356
  return Cell.renderSeqHeader(params);
@@ -2403,11 +2409,7 @@ const Cell = {
2403
2409
  const { $table, column } = params;
2404
2410
  const tableProps = $table.props;
2405
2411
  const { editConfig } = tableProps;
2406
- const { slots, editRender, cellRender } = column;
2407
- const headerSlot = slots ? slots.header : null;
2408
- if (headerSlot) {
2409
- return renderTitleContent(params, $table.callSlot(headerSlot, params));
2410
- }
2412
+ const { editRender, cellRender } = column;
2411
2413
  const isEnableEdit = editConfig && isEnableConf(editConfig);
2412
2414
  const editRenderOpts = isEnableEdit && isEnableConf(editRender) ? editRender : null;
2413
2415
  const cellRenderOpts = isEnableConf(cellRender) ? cellRender : null;
@@ -2680,9 +2682,7 @@ const Cell = {
2680
2682
  */
2681
2683
  renderSeqHeader(params) {
2682
2684
  const { $table, column } = params;
2683
- const { slots } = column;
2684
- const headerSlot = slots ? slots.header : null;
2685
- return renderHeaderCellBaseVNs(params, renderTitleContent(params, headerSlot ? $table.callSlot(headerSlot, params) : $table.getHeaderCellLabel(column)));
2685
+ return renderHeaderCellBaseVNs(params, renderTitleContent(params, $table.getHeaderCellLabel(column)));
2686
2686
  },
2687
2687
  renderSeqCell(params) {
2688
2688
  const { $table, column } = params;
@@ -2710,15 +2710,12 @@ const Cell = {
2710
2710
  renderRadioHeader(params) {
2711
2711
  const { $table, column } = params;
2712
2712
  const { slots } = column;
2713
- const headerSlot = slots ? slots.header : null;
2714
2713
  const titleSlot = slots ? slots.title : null;
2715
- return renderHeaderCellBaseVNs(params, renderTitleContent(params, headerSlot
2716
- ? $table.callSlot(headerSlot, params)
2717
- : [
2718
- h('span', {
2719
- class: 'vxe-radio--label'
2720
- }, titleSlot ? $table.callSlot(titleSlot, params) : $table.getHeaderCellLabel(column))
2721
- ]));
2714
+ return renderHeaderCellBaseVNs(params, renderTitleContent(params, [
2715
+ h('span', {
2716
+ class: 'vxe-radio--label'
2717
+ }, titleSlot ? $table.callSlot(titleSlot, params) : $table.getHeaderCellLabel(column))
2718
+ ]));
2722
2719
  },
2723
2720
  renderRadioCell(params) {
2724
2721
  const { $table, column, isHidden } = params;
@@ -2782,7 +2779,6 @@ const Cell = {
2782
2779
  const { isAllSelected: isAllCheckboxSelected, isIndeterminate: isAllCheckboxIndeterminate } = tableReactData;
2783
2780
  const isAllCheckboxDisabled = computeIsAllCheckboxDisabled.value;
2784
2781
  const { slots } = column;
2785
- const headerSlot = slots ? slots.header : null;
2786
2782
  const titleSlot = slots ? slots.title : null;
2787
2783
  const checkboxOpts = computeCheckboxOpts.value;
2788
2784
  const { checkStrictly, showHeader, headerTitle } = checkboxOpts;
@@ -2796,9 +2792,6 @@ const Cell = {
2796
2792
  };
2797
2793
  }
2798
2794
  const checkboxParams = Object.assign(Object.assign({}, params), { checked: isAllCheckboxSelected, disabled: isAllCheckboxDisabled, indeterminate: isAllCheckboxIndeterminate });
2799
- if (headerSlot) {
2800
- return renderHeaderCellBaseVNs(params, renderTitleContent(checkboxParams, $table.callSlot(headerSlot, checkboxParams)));
2801
- }
2802
2795
  if (checkStrictly ? !showHeader : showHeader === false) {
2803
2796
  return renderHeaderCellBaseVNs(params, renderTitleContent(checkboxParams, [
2804
2797
  h('span', {
@@ -9778,14 +9771,14 @@ hooks$5.add('tableEditModule', {
9778
9771
  const { isFocus, isPos, isClear } = options;
9779
9772
  const cell = (params.cell || $xeTable.getCellElement(row, column));
9780
9773
  const beforeEditMethod = editOpts.beforeEditMethod || editOpts.activeMethod;
9781
- params.cell = cell;
9774
+ const editParams = Object.assign(Object.assign({}, params), { cell });
9782
9775
  if (cell && isEnableConf(editConfig) && isEnableConf(editRender)) {
9783
9776
  // 激活编辑
9784
9777
  if (!$xeTable.isPendingByRow(row) && !$xeTable.isAggregateRecord(row)) {
9785
9778
  if (actived.row !== row || (mode === 'cell' ? actived.column !== column : false)) {
9786
9779
  // 判断是否禁用编辑
9787
9780
  let type = 'edit-disabled';
9788
- if (!beforeEditMethod || beforeEditMethod(Object.assign(Object.assign({}, params), { $table: $xeTable, $grid: $xeGrid, $gantt: $xeGantt }))) {
9781
+ if (!beforeEditMethod || beforeEditMethod(Object.assign(Object.assign({}, editParams), { $table: $xeTable, $grid: $xeGrid, $gantt: $xeGantt }))) {
9789
9782
  if (mouseConfig) {
9790
9783
  $xeTable.clearSelected();
9791
9784
  if ($xeTable.clearCellAreas) {
@@ -9799,7 +9792,7 @@ hooks$5.add('tableEditModule', {
9799
9792
  }
9800
9793
  type = 'edit-activated';
9801
9794
  column.renderHeight = cell.offsetHeight;
9802
- actived.args = params;
9795
+ actived.args = editParams;
9803
9796
  actived.row = row;
9804
9797
  actived.column = column;
9805
9798
  $xeTable.handlePushStack();
@@ -9815,10 +9808,10 @@ hooks$5.add('tableEditModule', {
9815
9808
  const afterEditMethod = editOpts.afterEditMethod;
9816
9809
  nextTick(() => {
9817
9810
  if (isFocus) {
9818
- $xeTable.handleFocus(params, evnt);
9811
+ $xeTable.handleFocus(editParams, evnt);
9819
9812
  }
9820
9813
  if (afterEditMethod) {
9821
- afterEditMethod(Object.assign(Object.assign({}, params), { $table: $xeTable, $grid: $xeGrid, $gantt: $xeGantt }));
9814
+ afterEditMethod(Object.assign(Object.assign({}, editParams), { $table: $xeTable, $grid: $xeGrid, $gantt: $xeGantt }));
9822
9815
  }
9823
9816
  });
9824
9817
  }
@@ -9861,11 +9854,11 @@ hooks$5.add('tableEditModule', {
9861
9854
  }
9862
9855
  }
9863
9856
  column.renderHeight = cell.offsetHeight;
9864
- actived.args = params;
9857
+ actived.args = editParams;
9865
9858
  actived.column = column;
9866
9859
  if (isPos) {
9867
9860
  setTimeout(() => {
9868
- $xeTable.handleFocus(params, evnt);
9861
+ $xeTable.handleFocus(editParams, evnt);
9869
9862
  });
9870
9863
  }
9871
9864
  }
@@ -9887,8 +9880,12 @@ hooks$5.add('tableEditModule', {
9887
9880
  handleEditActive({
9888
9881
  row,
9889
9882
  rowIndex: $xeTable.getRowIndex(row),
9883
+ $rowIndex: $xeTable.getVMRowIndex(row),
9884
+ _rowIndex: $xeTable.getVTRowIndex(row),
9890
9885
  column,
9891
9886
  columnIndex: $xeTable.getColumnIndex(column),
9887
+ $columnIndex: $xeTable.getVMColumnIndex(column),
9888
+ _columnIndex: $xeTable.getVTColumnIndex(column),
9892
9889
  cell,
9893
9890
  $table: $xeTable
9894
9891
  }, null, {
@@ -10298,18 +10295,62 @@ hooks$5.add('tableEditModule', {
10298
10295
  if (rowIndex > -1 && column) {
10299
10296
  const cell = $xeTable.getCellElement(row, column);
10300
10297
  const params = {
10298
+ $table: $xeTable,
10301
10299
  row,
10302
10300
  rowIndex,
10301
+ $rowIndex: $xeTable.getVMRowIndex(row),
10302
+ _rowIndex: $xeTable.getVTRowIndex(row),
10303
10303
  column,
10304
10304
  columnIndex: $xeTable.getColumnIndex(column),
10305
+ $columnIndex: $xeTable.getVMColumnIndex(column),
10306
+ _columnIndex: $xeTable.getVTColumnIndex(column),
10305
10307
  cell
10306
10308
  };
10307
- $xeTable.handleSelected(params, {});
10309
+ $xeTable.handleSelected(params, null);
10308
10310
  }
10309
10311
  }
10310
10312
  return nextTick();
10311
10313
  }
10312
10314
  };
10315
+ const handleCellFocus = (cell, params) => {
10316
+ const { editConfig } = props;
10317
+ const { column } = params;
10318
+ const { editRender } = column;
10319
+ const editOpts = computeEditOpts.value;
10320
+ if (editConfig && isEnableConf(editRender)) {
10321
+ const compRender = renderer$4.get(editRender.name);
10322
+ let autoFocus = editRender.autofocus || editRender.autoFocus;
10323
+ let autoSelect = editRender.autoSelect || editRender.autoselect;
10324
+ let inputElem = null;
10325
+ // 是否启用聚焦
10326
+ if (editOpts.autoFocus) {
10327
+ if (!autoFocus && compRender) {
10328
+ autoFocus = compRender.tableAutoFocus || compRender.tableAutofocus || compRender.autofocus;
10329
+ }
10330
+ if (!autoSelect && compRender) {
10331
+ autoSelect = compRender.tableAutoSelect || compRender.autoselect;
10332
+ }
10333
+ // 如果指定了聚焦 class
10334
+ if (XEUtils.isFunction(autoFocus)) {
10335
+ inputElem = autoFocus(params);
10336
+ }
10337
+ else if (autoFocus) {
10338
+ if (autoFocus === true) {
10339
+ // 自动匹配模式,会自动匹配第一个可输入元素
10340
+ inputElem = cell.querySelector('input,textarea');
10341
+ }
10342
+ else {
10343
+ inputElem = cell.querySelector(autoFocus);
10344
+ }
10345
+ if (inputElem) {
10346
+ inputElem.focus();
10347
+ }
10348
+ }
10349
+ }
10350
+ return inputElem;
10351
+ }
10352
+ return null;
10353
+ };
10313
10354
  editPrivateMethods = {
10314
10355
  /**
10315
10356
  * 处理激活编辑
@@ -10332,6 +10373,7 @@ hooks$5.add('tableEditModule', {
10332
10373
  * @returns
10333
10374
  */
10334
10375
  handleClearEdit,
10376
+ handleCellFocus,
10335
10377
  /**
10336
10378
  * 处理聚焦
10337
10379
  */
@@ -10340,35 +10382,8 @@ hooks$5.add('tableEditModule', {
10340
10382
  const { editRender } = column;
10341
10383
  const editOpts = computeEditOpts.value;
10342
10384
  if (isEnableConf(editRender)) {
10343
- const compRender = renderer$4.get(editRender.name);
10344
- let autoFocus = editRender.autofocus || editRender.autoFocus;
10345
- let autoSelect = editRender.autoSelect || editRender.autoselect;
10346
- let inputElem;
10347
- // 是否启用聚焦
10348
- if (editOpts.autoFocus) {
10349
- if (!autoFocus && compRender) {
10350
- autoFocus = compRender.tableAutoFocus || compRender.tableAutofocus || compRender.autofocus;
10351
- }
10352
- if (!autoSelect && compRender) {
10353
- autoSelect = compRender.tableAutoSelect || compRender.autoselect;
10354
- }
10355
- // 如果指定了聚焦 class
10356
- if (XEUtils.isFunction(autoFocus)) {
10357
- inputElem = autoFocus(params);
10358
- }
10359
- else if (autoFocus) {
10360
- if (autoFocus === true) {
10361
- // 自动匹配模式,会自动匹配第一个可输入元素
10362
- inputElem = cell.querySelector('input,textarea');
10363
- }
10364
- else {
10365
- inputElem = cell.querySelector(autoFocus);
10366
- }
10367
- if (inputElem) {
10368
- inputElem.focus();
10369
- }
10370
- }
10371
- }
10385
+ const autoSelect = editRender.autoSelect || editRender.autoselect;
10386
+ const inputElem = handleCellFocus(cell, params);
10372
10387
  if (inputElem) {
10373
10388
  if (autoSelect) {
10374
10389
  inputElem.select();
@@ -10397,7 +10412,7 @@ hooks$5.add('tableEditModule', {
10397
10412
  * 处理选中源
10398
10413
  */
10399
10414
  handleSelected(params, evnt) {
10400
- const { mouseConfig } = props;
10415
+ const { mouseConfig, editConfig } = props;
10401
10416
  const { editStore } = reactData;
10402
10417
  const mouseOpts = computeMouseOpts.value;
10403
10418
  const editOpts = computeEditOpts.value;
@@ -10420,6 +10435,18 @@ hooks$5.add('tableEditModule', {
10420
10435
  editPrivateMethods.addCellSelectedClass();
10421
10436
  }
10422
10437
  $xeTable.focus();
10438
+ // 如果是支持可复用控件
10439
+ if (editConfig && editOpts.isReuseKeep && isEnableConf(editOpts) && isEnableConf(column.editRender)) {
10440
+ setTimeout(() => {
10441
+ const cell = $xeTable.getCellElement(row, column);
10442
+ if (cell) {
10443
+ const hasReusekeep = cell.querySelector('.vxe-reusekeep-control');
10444
+ if (hasReusekeep) {
10445
+ handleCellFocus(cell, params);
10446
+ }
10447
+ }
10448
+ }, 0);
10449
+ }
10423
10450
  if (evnt) {
10424
10451
  $xeTable.dispatchEvent('cell-selected', params, evnt);
10425
10452
  }
@@ -12616,8 +12643,8 @@ hooks$3.add('tableKeyboardModule', {
12616
12643
  const checkboxOpts = computeCheckboxOpts.value;
12617
12644
  const mouseOpts = computeMouseOpts.value;
12618
12645
  const editOpts = computeEditOpts.value;
12619
- if (mouseConfig && mouseOpts.area && $xeTable.triggerCelllAreaMnEvent) {
12620
- return $xeTable.triggerCelllAreaMnEvent(evnt, params);
12646
+ if (mouseConfig && mouseOpts.area && $xeTable.triggerClAreaMnEvent) {
12647
+ return $xeTable.triggerClAreaMnEvent(evnt, params);
12621
12648
  }
12622
12649
  else {
12623
12650
  if (checkboxConfig && checkboxOpts.range) {
@@ -14032,6 +14059,7 @@ function getCellLabelVNs(renderOpts, params, cellLabel, opts) {
14032
14059
  const { placeholder } = renderOpts;
14033
14060
  return [
14034
14061
  h('span', {
14062
+ key: 1,
14035
14063
  class: ['vxe-cell--label', opts ? opts.class : '']
14036
14064
  }, placeholder && isEmptyValue(cellLabel)
14037
14065
  ? [
@@ -14297,16 +14325,26 @@ function getNativeFilterOns(renderOpts, params, option) {
14297
14325
  }
14298
14326
  });
14299
14327
  }
14328
+ function nativeInputCellRender(renderOpts, renderParams) {
14329
+ const { row, column } = renderParams;
14330
+ const cellValue = XEUtils.get(row, column.field);
14331
+ const cellVNs = [
14332
+ h('span', {
14333
+ key: 1
14334
+ }, cellValue)
14335
+ ];
14336
+ return getNativeInputRenderCellVNs(cellValue, cellVNs, renderOpts, renderParams);
14337
+ }
14300
14338
  /**
14301
14339
  * 单元格可编辑渲染-原生的标签
14302
- * input、textarea、select
14340
+ * input、textarea
14303
14341
  */
14304
- function nativeEditRender(renderOpts, params) {
14305
- const { row, column } = params;
14342
+ function nativeInputEditRender(renderOpts, renderParams) {
14343
+ const { row, column } = renderParams;
14306
14344
  const { name } = renderOpts;
14307
- const cellValue = isImmediateCell(renderOpts, params) ? getCellValue(row, column) : column.model.value;
14345
+ const cellValue = isImmediateCell(renderOpts, renderParams) ? getCellValue(row, column) : column.model.value;
14308
14346
  return [
14309
- h(`${name}`, Object.assign(Object.assign(Object.assign({ class: `vxe-default-${name}` }, getNativeAttrs(renderOpts)), { value: cellValue }), getNativeEditOns(renderOpts, params)))
14347
+ h('' + name, Object.assign(Object.assign(Object.assign({ key: 2, class: `vxe-default-${name}` }, getNativeAttrs(renderOpts)), { value: cellValue }), getNativeEditOns(renderOpts, renderParams)))
14310
14348
  ];
14311
14349
  }
14312
14350
  function buttonCellRender(renderOpts, params) {
@@ -14314,6 +14352,13 @@ function buttonCellRender(renderOpts, params) {
14314
14352
  h(getDefaultComponent(renderOpts), Object.assign(Object.assign({}, getCellEditProps(renderOpts, params, null)), getComponentOns(renderOpts, params)))
14315
14353
  ];
14316
14354
  }
14355
+ function defaultInputEditRender(renderOpts, params) {
14356
+ const { row, column } = params;
14357
+ const cellValue = getCellValue(row, column);
14358
+ return [
14359
+ h(getDefaultComponent(renderOpts), Object.assign(Object.assign({ key: 2 }, getCellEditProps(renderOpts, params, cellValue)), getEditOns(renderOpts, params)))
14360
+ ];
14361
+ }
14317
14362
  function defaultEditRender(renderOpts, params) {
14318
14363
  const { row, column } = params;
14319
14364
  const cellValue = getCellValue(row, column);
@@ -14555,11 +14600,9 @@ function handleExportTreeSelectMethod(params) {
14555
14600
  const { row, column, options } = params;
14556
14601
  return options.original ? getCellValue(row, column) : getTreeSelectCellValue(column.editRender || column.cellRender, params);
14557
14602
  }
14558
- function handleNumberCell(renderOpts, params) {
14603
+ function handleNumberCell(cellValue, renderOpts, params) {
14559
14604
  const { props = {}, showNegativeStatus } = renderOpts;
14560
- const { row, column } = params;
14561
14605
  const { type } = props;
14562
- let cellValue = XEUtils.get(row, column.field);
14563
14606
  let isNegative = false;
14564
14607
  if (!isEmptyValue(cellValue)) {
14565
14608
  const numberInputConfig = getConfig$3().numberInput || {};
@@ -14710,21 +14753,79 @@ function handleSetTreeSelectValue(renderOpts, params) {
14710
14753
  XEUtils.set(row, field, cellValue);
14711
14754
  }
14712
14755
  }
14756
+ function getNativeInputRenderCellVNs(cellValue, labelVNs, renderOpts, renderParams) {
14757
+ const { $table, row, column } = renderParams;
14758
+ const { name } = renderOpts;
14759
+ const tableProps = $table.props;
14760
+ const { editConfig, mouseConfig } = tableProps;
14761
+ let isColSelected = false;
14762
+ let isActiveCellArea = false;
14763
+ if (editConfig && mouseConfig) {
14764
+ const tableReactData = $table.reactData;
14765
+ const { editStore } = tableReactData;
14766
+ const { selected } = editStore;
14767
+ isColSelected = row === selected.row && column === selected.column;
14768
+ if ($table.getActiveCellArea) {
14769
+ const activeCellArea = $table.getActiveCellArea();
14770
+ if (activeCellArea) {
14771
+ isActiveCellArea = row === activeCellArea.row && column === activeCellArea.column;
14772
+ }
14773
+ }
14774
+ }
14775
+ const cellVNs = labelVNs;
14776
+ if (isActiveCellArea || isColSelected) {
14777
+ cellVNs.push(h('' + name, Object.assign(Object.assign({ key: 2, class: `vxe-default-${name} vxe-reusekeep-control`, value: cellValue }, getNativeAttrs(renderOpts)), getNativeEditOns(renderOpts, renderParams))));
14778
+ }
14779
+ return cellVNs;
14780
+ }
14781
+ function getInputRenderCellVNs(cellValue, labelVNs, renderOpts, renderParams) {
14782
+ const { $table, row, column } = renderParams;
14783
+ const tableProps = $table.props;
14784
+ const { editConfig, mouseConfig } = tableProps;
14785
+ let isColSelected = false;
14786
+ let isActiveCellArea = false;
14787
+ if (editConfig && mouseConfig) {
14788
+ const tableReactData = $table.reactData;
14789
+ const { editStore } = tableReactData;
14790
+ const { computeEditOpts } = $table.getComputeMaps();
14791
+ const editOpts = computeEditOpts.value;
14792
+ if (editOpts.isReuseKeep) {
14793
+ const { selected } = editStore;
14794
+ isColSelected = row === selected.row && column === selected.column;
14795
+ if ($table.getActiveCellArea) {
14796
+ const activeCellArea = $table.getActiveCellArea();
14797
+ if (activeCellArea) {
14798
+ isActiveCellArea = row === activeCellArea.row && column === activeCellArea.column;
14799
+ }
14800
+ }
14801
+ }
14802
+ }
14803
+ const cellVNs = labelVNs;
14804
+ if (isActiveCellArea || isColSelected) {
14805
+ const compProps = getCellEditProps(renderOpts, renderParams, cellValue);
14806
+ const { className, inputClassName } = compProps;
14807
+ cellVNs.push(h(getDefaultComponent(renderOpts), Object.assign(Object.assign(Object.assign({ key: 2 }, compProps), { className: 'vxe-reusekeep-control' + (className ? (' ' + className) : ''), inputClassName: 'vxe-reusekeep-control' + (inputClassName ? (' ' + inputClassName) : '') }), getEditOns(renderOpts, renderParams))));
14808
+ }
14809
+ return cellVNs;
14810
+ }
14713
14811
  /**
14714
14812
  * 表格 - 渲染器
14715
14813
  */
14716
14814
  renderer$2.mixin({
14717
14815
  input: {
14718
14816
  tableAutoFocus: true,
14719
- renderTableEdit: nativeEditRender,
14720
- renderTableDefault: nativeEditRender,
14817
+ renderTableEdit: nativeInputEditRender,
14818
+ renderTableCell: nativeInputCellRender,
14819
+ renderTableDefault: nativeInputEditRender,
14721
14820
  createTableFilterOptions: defaultFilterOptions,
14722
14821
  renderTableFilter: nativeFilterRender,
14723
14822
  tableFilterDefaultMethod: handleInputFilterMethod
14724
14823
  },
14725
14824
  textarea: {
14726
14825
  tableAutoFocus: true,
14727
- renderTableEdit: nativeEditRender
14826
+ renderTableEdit: nativeInputEditRender,
14827
+ renderTableCell: nativeInputCellRender,
14828
+ renderTableDefault: nativeInputEditRender
14728
14829
  },
14729
14830
  select: {
14730
14831
  renderTableEdit: nativeSelectEditRender,
@@ -14764,10 +14865,10 @@ renderer$2.mixin({
14764
14865
  },
14765
14866
  VxeInput: {
14766
14867
  tableAutoFocus: true,
14767
- renderTableEdit: defaultEditRender,
14768
- renderTableCell(renderOpts, params) {
14868
+ renderTableEdit: defaultInputEditRender,
14869
+ renderTableCell(renderOpts, renderParams) {
14769
14870
  const { props = {} } = renderOpts;
14770
- const { row, column } = params;
14871
+ const { row, column } = renderParams;
14771
14872
  const inputConfig = getConfig$3().input || {};
14772
14873
  const digits = props.digits || inputConfig.digits || 2;
14773
14874
  let cellValue = XEUtils.get(row, column.field);
@@ -14785,16 +14886,21 @@ renderer$2.mixin({
14785
14886
  break;
14786
14887
  }
14787
14888
  }
14788
- return getCellLabelVNs(renderOpts, params, cellValue);
14889
+ const cellVNs = getCellLabelVNs(renderOpts, renderParams, cellValue);
14890
+ return getInputRenderCellVNs(cellValue, cellVNs, renderOpts, renderParams);
14789
14891
  },
14790
- renderTableDefault: defaultEditRender,
14892
+ renderTableDefault: defaultInputEditRender,
14791
14893
  createTableFilterOptions: defaultFilterOptions,
14792
14894
  renderTableFilter: defaultFilterRender,
14793
14895
  renderTableFloatingFilter: defaultFloatingFilterRender,
14794
14896
  tableFilterDefaultMethod: handleInputFilterMethod
14795
14897
  },
14796
14898
  FormatNumberInput: {
14797
- renderTableDefault: handleNumberCell,
14899
+ renderTableDefault(renderOpts, renderParams) {
14900
+ const { row, column } = renderParams;
14901
+ const cellValue = XEUtils.get(row, column.field);
14902
+ return handleNumberCell(cellValue, renderOpts, renderParams);
14903
+ },
14798
14904
  tableFilterDefaultMethod({ option, row, column }) {
14799
14905
  const { data } = option;
14800
14906
  const cellValue = XEUtils.get(row, column.field);
@@ -14809,8 +14915,13 @@ renderer$2.mixin({
14809
14915
  },
14810
14916
  VxeNumberInput: {
14811
14917
  tableAutoFocus: true,
14812
- renderTableEdit: defaultEditRender,
14813
- renderTableCell: handleNumberCell,
14918
+ renderTableEdit: defaultInputEditRender,
14919
+ renderTableCell(renderOpts, renderParams) {
14920
+ const { row, column } = renderParams;
14921
+ const cellValue = XEUtils.get(row, column.field);
14922
+ const cellVNs = handleNumberCell(cellValue, renderOpts, renderParams);
14923
+ return getInputRenderCellVNs(cellValue, cellVNs, renderOpts, renderParams);
14924
+ },
14814
14925
  renderTableFooter(renderOpts, params) {
14815
14926
  const { props = {} } = renderOpts;
14816
14927
  const { row, column, _columnIndex } = params;
@@ -14848,7 +14959,7 @@ renderer$2.mixin({
14848
14959
  }
14849
14960
  return getFuncText(itemValue, 1);
14850
14961
  },
14851
- renderTableDefault: defaultEditRender,
14962
+ renderTableDefault: defaultInputEditRender,
14852
14963
  createTableFilterOptions: defaultFilterOptions,
14853
14964
  renderTableFilter: defaultFilterRender,
14854
14965
  renderTableFloatingFilter: defaultFloatingFilterRender,
@@ -14992,13 +15103,14 @@ renderer$2.mixin({
14992
15103
  },
14993
15104
  VxeTextarea: {
14994
15105
  tableAutoFocus: true,
14995
- renderTableDefault: defaultEditRender,
14996
- renderTableEdit: defaultEditRender,
14997
- renderTableCell(renderOpts, params) {
14998
- const { row, column } = params;
15106
+ renderTableDefault: defaultInputEditRender,
15107
+ renderTableCell(renderOpts, renderParams) {
15108
+ const { row, column } = renderParams;
14999
15109
  const cellValue = XEUtils.get(row, column.field);
15000
- return getCellLabelVNs(renderOpts, params, cellValue);
15001
- }
15110
+ const cellVNs = getCellLabelVNs(renderOpts, renderParams, cellValue);
15111
+ return getInputRenderCellVNs(cellValue, cellVNs, renderOpts, renderParams);
15112
+ },
15113
+ renderTableEdit: defaultInputEditRender
15002
15114
  },
15003
15115
  VxeButton: {
15004
15116
  renderTableDefault: buttonCellRender
@@ -23773,8 +23885,8 @@ var VxeTableComponent = defineVxeComponent({
23773
23885
  if (isEsc) {
23774
23886
  $xeTable.preventEvent(evnt, 'event.keydown', null, () => {
23775
23887
  dispatchEvent('keydown-start', {}, evnt);
23776
- if (keyboardConfig && mouseConfig && mouseOpts.area && $xeTable.handleKeyboardCellAreaEvent) {
23777
- $xeTable.handleKeyboardCellAreaEvent(evnt);
23888
+ if (keyboardConfig && mouseConfig && mouseOpts.area && $xeTable.handleKdClAreaEvent) {
23889
+ $xeTable.handleKdClAreaEvent(evnt);
23778
23890
  }
23779
23891
  else if (actived.row || filterStore.visible || ctxMenuStore.visible) {
23780
23892
  evnt.stopPropagation();
@@ -23826,6 +23938,7 @@ var VxeTableComponent = defineVxeComponent({
23826
23938
  const { selected, actived } = editStore;
23827
23939
  const childrenField = treeOpts.children || treeOpts.childrenField;
23828
23940
  const keyCode = evnt.keyCode;
23941
+ const isProcess = globalEvents$1.hasKey(evnt, GLOBAL_EVENT_KEYS$1.PROCESS);
23829
23942
  const isEsc = globalEvents$1.hasKey(evnt, GLOBAL_EVENT_KEYS$1.ESCAPE);
23830
23943
  const hasBackspaceKey = globalEvents$1.hasKey(evnt, GLOBAL_EVENT_KEYS$1.BACKSPACE);
23831
23944
  const isTab = globalEvents$1.hasKey(evnt, GLOBAL_EVENT_KEYS$1.TAB);
@@ -23847,6 +23960,7 @@ var VxeTableComponent = defineVxeComponent({
23847
23960
  const operCtxMenu = isContentMenu && ctxMenuStore.visible && (isEnter || isSpacebar || operArrow);
23848
23961
  const isEditStatus = isEnableConf(editConfig) && actived.column && actived.row;
23849
23962
  const beforeEditMethod = editOpts.beforeEditMethod || editOpts.activeMethod;
23963
+ const selectRow = selected.row;
23850
23964
  const selectColumn = selected.column;
23851
23965
  if (operCtxMenu) {
23852
23966
  // 如果配置了右键菜单; 支持方向键操作、回车
@@ -23858,8 +23972,8 @@ var VxeTableComponent = defineVxeComponent({
23858
23972
  $xeTable.moveCtxMenu(evnt, ctxMenuStore, 'selected', isRightArrow, true, menuList);
23859
23973
  }
23860
23974
  }
23861
- else if (keyboardConfig && mouseConfig && mouseOpts.area && $xeTable.handleKeyboardCellAreaEvent) {
23862
- $xeTable.handleKeyboardCellAreaEvent(evnt);
23975
+ else if (keyboardConfig && mouseConfig && mouseOpts.area && $xeTable.handleKdClAreaEvent) {
23976
+ $xeTable.handleKdClAreaEvent(evnt);
23863
23977
  }
23864
23978
  else if (isEsc) {
23865
23979
  // 如果按下了 Esc 键,关闭快捷菜单、筛选
@@ -23879,7 +23993,7 @@ var VxeTableComponent = defineVxeComponent({
23879
23993
  }
23880
23994
  }
23881
23995
  }
23882
- else if (isSpacebar && keyboardConfig && keyboardOpts.isChecked && selected.row && selectColumn && (selectColumn.type === 'checkbox' || selectColumn.type === 'radio')) {
23996
+ else if (isSpacebar && keyboardConfig && keyboardOpts.isChecked && selectRow && selectColumn && (selectColumn.type === 'checkbox' || selectColumn.type === 'radio')) {
23883
23997
  // 空格键支持选中复选框
23884
23998
  evnt.preventDefault();
23885
23999
  if (selectColumn.type === 'checkbox') {
@@ -23892,7 +24006,7 @@ var VxeTableComponent = defineVxeComponent({
23892
24006
  else if (isF2 && isEnableConf(editConfig)) {
23893
24007
  if (!isEditStatus) {
23894
24008
  // 如果按下了 F2 键
23895
- if (selected.row && selectColumn) {
24009
+ if (selectRow && selectColumn) {
23896
24010
  evnt.preventDefault();
23897
24011
  $xeTable.handleEdit(selected.args, evnt);
23898
24012
  }
@@ -23900,13 +24014,13 @@ var VxeTableComponent = defineVxeComponent({
23900
24014
  }
23901
24015
  else if (isContextMenu) {
23902
24016
  // 如果按下上下文键
23903
- internalData._keyCtx = selected.row && selectColumn && bodyMenu.length;
24017
+ internalData._keyCtx = selectRow && selectColumn && bodyMenu.length;
23904
24018
  clearTimeout(internalData.keyCtxTimeout);
23905
24019
  internalData.keyCtxTimeout = setTimeout(() => {
23906
24020
  internalData._keyCtx = false;
23907
24021
  }, 1000);
23908
24022
  }
23909
- else if (isEnter && !isAltKey && keyboardConfig && keyboardOpts.isEnter && (selected.row || actived.row || (treeConfig && (rowOpts.isCurrent || highlightCurrentRow) && currentRow))) {
24023
+ else if (isEnter && !isAltKey && keyboardConfig && keyboardOpts.isEnter && (selectRow || actived.row || (treeConfig && (rowOpts.isCurrent || highlightCurrentRow) && currentRow))) {
23910
24024
  // 退出选中
23911
24025
  if (isControlKey) {
23912
24026
  // 如果是激活编辑状态,则取消编辑
@@ -23923,11 +24037,11 @@ var VxeTableComponent = defineVxeComponent({
23923
24037
  }
23924
24038
  else {
23925
24039
  // 如果是激活状态,退则出到上一行/下一行
23926
- if (selected.row || actived.row) {
23927
- const activeRow = selected.row || actived.row;
24040
+ if (selectRow || actived.row) {
24041
+ const activeRow = selectRow || actived.row;
23928
24042
  const activeColumn = selectColumn || actived.column;
23929
24043
  if (activeColumn) {
23930
- const activeParams = selected.row ? selected.args : actived.args;
24044
+ const activeParams = selectRow ? selected.args : actived.args;
23931
24045
  if (hasShiftKey) {
23932
24046
  if (keyboardOpts.enterToTab) {
23933
24047
  $xeTable.moveTabSelected(activeParams, hasShiftKey, evnt);
@@ -24037,7 +24151,7 @@ var VxeTableComponent = defineVxeComponent({
24037
24151
  else if (operArrow && keyboardConfig && keyboardOpts.isArrow) {
24038
24152
  if (!isEditStatus) {
24039
24153
  // 如果按下了方向键
24040
- if (mouseOpts.selected && selected.row && selectColumn) {
24154
+ if (mouseOpts.selected && selectRow && selectColumn) {
24041
24155
  $xeTable.moveArrowSelected(selected.args, isLeftArrow, isUpArrow, isRightArrow, isDwArrow, evnt);
24042
24156
  }
24043
24157
  else {
@@ -24054,11 +24168,11 @@ var VxeTableComponent = defineVxeComponent({
24054
24168
  }
24055
24169
  else if (isTab && keyboardConfig && keyboardOpts.isTab) {
24056
24170
  // 如果按下了 Tab 键切换
24057
- if (selected.row || actived.row) {
24058
- const activeRow = selected.row || actived.row;
24171
+ if (selectRow || actived.row) {
24172
+ const activeRow = selectRow || actived.row;
24059
24173
  const activeColumn = selectColumn || actived.column;
24060
24174
  if (activeColumn) {
24061
- const activeParams = selected.row ? selected.args : actived.args;
24175
+ const activeParams = selectRow ? selected.args : actived.args;
24062
24176
  const _rowIndex = $xeTable.getVTRowIndex(activeRow);
24063
24177
  const _columnIndex = $xeTable.getVTColumnIndex(activeColumn);
24064
24178
  const ttrParams = {
@@ -24102,13 +24216,13 @@ var VxeTableComponent = defineVxeComponent({
24102
24216
  }
24103
24217
  }
24104
24218
  }
24105
- else if (keyboardConfig && keyboardOpts.isDel && hasDeleteKey && isEnableConf(editConfig) && (selected.row || selectColumn)) {
24219
+ else if (keyboardConfig && keyboardOpts.isDel && hasDeleteKey && isEnableConf(editConfig) && (selectRow || selectColumn)) {
24106
24220
  // 如果是删除键
24107
24221
  if (!isEditStatus) {
24108
24222
  const { delMethod } = keyboardOpts;
24109
24223
  const params = {
24110
- row: selected.row,
24111
- rowIndex: $xeTable.getRowIndex(selected.row),
24224
+ row: selectRow,
24225
+ rowIndex: $xeTable.getRowIndex(selectRow),
24112
24226
  column: selectColumn,
24113
24227
  columnIndex: $xeTable.getColumnIndex(selectColumn),
24114
24228
  $table: $xeTable,
@@ -24121,10 +24235,10 @@ var VxeTableComponent = defineVxeComponent({
24121
24235
  delMethod(params);
24122
24236
  }
24123
24237
  else {
24124
- const selectCellValue = getCellValue(selected.row, selectColumn);
24238
+ const selectCellValue = getCellValue(selectRow, selectColumn);
24125
24239
  if (selectCellValue !== null) {
24126
24240
  $xeTable.handlePushStack();
24127
- setCellValue(selected.row, selectColumn, null);
24241
+ setCellValue(selectRow, selectColumn, null);
24128
24242
  }
24129
24243
  }
24130
24244
  // 如果按下 del 键,更新表尾数据
@@ -24133,16 +24247,20 @@ var VxeTableComponent = defineVxeComponent({
24133
24247
  }
24134
24248
  }
24135
24249
  }
24136
- else if (hasBackspaceKey && keyboardConfig && keyboardOpts.isBack && isEnableConf(editConfig) && (selected.row || selectColumn)) {
24250
+ else if (hasBackspaceKey && keyboardConfig && keyboardOpts.isBack && isEnableConf(editConfig) && (selectRow || selectColumn)) {
24137
24251
  if (!isEditStatus) {
24138
24252
  const { backMethod } = keyboardOpts;
24139
24253
  // 如果是删除键
24140
- if (keyboardOpts.isDel && isEnableConf(editConfig) && (selected.row || selectColumn)) {
24254
+ if (keyboardOpts.isDel && isEnableConf(editConfig) && (selectRow || selectColumn)) {
24141
24255
  const params = {
24142
- row: selected.row,
24143
- rowIndex: $xeTable.getRowIndex(selected.row),
24256
+ row: selectRow,
24257
+ rowIndex: $xeTable.getRowIndex(selectRow),
24258
+ $rowIndex: $xeTable.getVMRowIndex(selectRow),
24259
+ _rowIndex: $xeTable.getVTRowIndex(selectRow),
24144
24260
  column: selectColumn,
24145
24261
  columnIndex: $xeTable.getColumnIndex(selectColumn),
24262
+ $columnIndex: $xeTable.getVMColumnIndex(selectColumn),
24263
+ _columnIndex: $xeTable.getVTColumnIndex(selectColumn),
24146
24264
  $table: $xeTable,
24147
24265
  $grid: $xeGrid,
24148
24266
  $gantt: $xeGantt
@@ -24194,20 +24312,24 @@ var VxeTableComponent = defineVxeComponent({
24194
24312
  }
24195
24313
  }
24196
24314
  }
24197
- else if (keyboardConfig && isEnableConf(editConfig) && keyboardOpts.isEdit && !isControlKey && (isSpacebar || (keyCode >= 48 && keyCode <= 57) || (keyCode >= 65 && keyCode <= 90) || (keyCode >= 96 && keyCode <= 111) || (keyCode >= 186 && keyCode <= 192) || (keyCode >= 219 && keyCode <= 222))) {
24315
+ else if (keyboardConfig && isEnableConf(editConfig) && keyboardOpts.isEdit && !isControlKey && (isSpacebar || isProcess || evnt.key === 'Process' || (keyCode >= 48 && keyCode <= 57) || (keyCode >= 65 && keyCode <= 90) || (keyCode >= 96 && keyCode <= 111) || (keyCode >= 186 && keyCode <= 192) || (keyCode >= 219 && keyCode <= 222))) {
24198
24316
  const { editMode, editMethod } = keyboardOpts;
24199
24317
  // 启用编辑后,空格键功能将失效
24200
24318
  // if (isSpacebar) {
24201
24319
  // evnt.preventDefault()
24202
24320
  // }
24203
24321
  // 如果是按下非功能键之外允许直接编辑
24204
- if (selectColumn && selected.row && isEnableConf(selectColumn.editRender)) {
24322
+ if (selectColumn && selectRow && isEnableConf(selectColumn.editRender)) {
24205
24323
  const beforeEditMethod = editOpts.beforeEditMethod || editOpts.activeMethod;
24206
24324
  const params = {
24207
- row: selected.row,
24208
- rowIndex: $xeTable.getRowIndex(selected.row),
24325
+ row: selectRow,
24326
+ rowIndex: $xeTable.getRowIndex(selectRow),
24327
+ $rowIndex: $xeTable.getVMRowIndex(selectRow),
24328
+ _rowIndex: $xeTable.getVTRowIndex(selectRow),
24209
24329
  column: selectColumn,
24210
24330
  columnIndex: $xeTable.getColumnIndex(selectColumn),
24331
+ $columnIndex: $xeTable.getVMColumnIndex(selectColumn),
24332
+ _columnIndex: $xeTable.getVTColumnIndex(selectColumn),
24211
24333
  $table: $xeTable,
24212
24334
  $grid: $xeGrid,
24213
24335
  $gantt: $xeGantt
@@ -29852,7 +29974,7 @@ var VxeTableComponent = defineVxeComponent({
29852
29974
  if (rowOpts.height && !props.showOverflow) {
29853
29975
  warnLog$2('vxe.error.notProp', ['table.show-overflow']);
29854
29976
  }
29855
- if (!$xeTable.triggerCelllAreaMnEvent) {
29977
+ if (!$xeTable.triggerClAreaMnEvent) {
29856
29978
  if (props.areaConfig) {
29857
29979
  warnLog$2('vxe.error.notProp', ['area-config']);
29858
29980
  }