vxe-table 4.7.65 → 4.7.67

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 (108) hide show
  1. package/es/grid/src/grid.js +21 -11
  2. package/es/locale/lang/en-US.js +4 -1
  3. package/es/locale/lang/es-ES.js +4 -1
  4. package/es/locale/lang/hu-HU.js +4 -1
  5. package/es/locale/lang/ja-JP.js +4 -1
  6. package/es/locale/lang/ko-KR.js +4 -1
  7. package/es/locale/lang/pt-BR.js +4 -1
  8. package/es/locale/lang/ru-RU.js +4 -1
  9. package/es/locale/lang/vi-VN.js +4 -1
  10. package/es/locale/lang/zh-CN.js +4 -1
  11. package/es/locale/lang/zh-TC.js +4 -1
  12. package/es/style.css +1 -1
  13. package/es/style.min.css +1 -1
  14. package/es/table/module/custom/panel.js +12 -11
  15. package/es/table/module/edit/hook.js +11 -10
  16. package/es/table/module/export/hook.js +10 -6
  17. package/es/table/render/index.js +95 -84
  18. package/es/table/src/table.js +51 -29
  19. package/es/table/style.css +8 -4
  20. package/es/table/style.min.css +1 -1
  21. package/es/toolbar/src/toolbar.js +7 -7
  22. package/es/ui/index.js +2 -2
  23. package/es/ui/src/log.js +1 -1
  24. package/es/vxe-table/style.css +8 -4
  25. package/es/vxe-table/style.min.css +1 -1
  26. package/lib/grid/src/grid.js +25 -14
  27. package/lib/grid/src/grid.min.js +1 -1
  28. package/lib/index.umd.js +236 -165
  29. package/lib/index.umd.min.js +1 -1
  30. package/lib/locale/lang/en-US.js +4 -1
  31. package/lib/locale/lang/en-US.min.js +1 -1
  32. package/lib/locale/lang/en-US.umd.js +4 -1
  33. package/lib/locale/lang/es-ES.js +4 -1
  34. package/lib/locale/lang/es-ES.min.js +1 -1
  35. package/lib/locale/lang/es-ES.umd.js +4 -1
  36. package/lib/locale/lang/hu-HU.js +4 -1
  37. package/lib/locale/lang/hu-HU.min.js +1 -1
  38. package/lib/locale/lang/ja-JP.js +4 -1
  39. package/lib/locale/lang/ja-JP.min.js +1 -1
  40. package/lib/locale/lang/ja-JP.umd.js +4 -1
  41. package/lib/locale/lang/ko-KR.js +4 -1
  42. package/lib/locale/lang/ko-KR.min.js +1 -1
  43. package/lib/locale/lang/pt-BR.js +4 -1
  44. package/lib/locale/lang/pt-BR.min.js +1 -1
  45. package/lib/locale/lang/pt-BR.umd.js +4 -1
  46. package/lib/locale/lang/ru-RU.js +4 -1
  47. package/lib/locale/lang/ru-RU.min.js +1 -1
  48. package/lib/locale/lang/vi-VN.js +4 -1
  49. package/lib/locale/lang/vi-VN.min.js +1 -1
  50. package/lib/locale/lang/zh-CN.js +4 -1
  51. package/lib/locale/lang/zh-CN.min.js +1 -1
  52. package/lib/locale/lang/zh-CN.umd.js +4 -1
  53. package/lib/locale/lang/zh-HK.min.js +1 -1
  54. package/lib/locale/lang/zh-HK.umd.js +4 -1
  55. package/lib/locale/lang/zh-MO.min.js +1 -1
  56. package/lib/locale/lang/zh-MO.umd.js +4 -1
  57. package/lib/locale/lang/zh-TC.js +4 -1
  58. package/lib/locale/lang/zh-TC.min.js +1 -1
  59. package/lib/locale/lang/zh-TC.umd.js +4 -1
  60. package/lib/locale/lang/zh-TW.min.js +1 -1
  61. package/lib/locale/lang/zh-TW.umd.js +4 -1
  62. package/lib/style.css +1 -1
  63. package/lib/style.min.css +1 -1
  64. package/lib/table/module/custom/panel.js +18 -11
  65. package/lib/table/module/custom/panel.min.js +1 -1
  66. package/lib/table/module/edit/hook.js +11 -13
  67. package/lib/table/module/edit/hook.min.js +1 -1
  68. package/lib/table/module/export/hook.js +12 -6
  69. package/lib/table/module/export/hook.min.js +1 -1
  70. package/lib/table/render/index.js +98 -84
  71. package/lib/table/render/index.min.js +1 -1
  72. package/lib/table/src/table.js +48 -26
  73. package/lib/table/src/table.min.js +1 -1
  74. package/lib/table/style/style.css +8 -4
  75. package/lib/table/style/style.min.css +1 -1
  76. package/lib/toolbar/src/toolbar.js +17 -7
  77. package/lib/toolbar/src/toolbar.min.js +1 -1
  78. package/lib/ui/index.js +2 -2
  79. package/lib/ui/index.min.js +1 -1
  80. package/lib/ui/src/log.js +1 -1
  81. package/lib/ui/src/log.min.js +1 -1
  82. package/lib/vxe-table/style/style.css +8 -4
  83. package/lib/vxe-table/style/style.min.css +1 -1
  84. package/package.json +2 -2
  85. package/packages/grid/src/grid.ts +22 -11
  86. package/packages/locale/lang/en-US.ts +4 -1
  87. package/packages/locale/lang/es-ES.ts +4 -1
  88. package/packages/locale/lang/hu-HU.ts +4 -1
  89. package/packages/locale/lang/ja-JP.ts +4 -1
  90. package/packages/locale/lang/ko-KR.ts +4 -1
  91. package/packages/locale/lang/pt-BR.ts +4 -1
  92. package/packages/locale/lang/ru-RU.ts +4 -1
  93. package/packages/locale/lang/vi-VN.ts +4 -1
  94. package/packages/locale/lang/zh-CN.ts +4 -1
  95. package/packages/locale/lang/zh-TC.ts +4 -1
  96. package/packages/table/module/custom/panel.ts +13 -12
  97. package/packages/table/module/edit/hook.ts +11 -10
  98. package/packages/table/module/export/hook.ts +10 -6
  99. package/packages/table/render/index.ts +95 -84
  100. package/packages/table/src/table.ts +52 -27
  101. package/packages/toolbar/src/toolbar.ts +8 -8
  102. package/styles/components/table.scss +6 -3
  103. /package/es/{iconfont.1723521776225.ttf → iconfont.1724210671876.ttf} +0 -0
  104. /package/es/{iconfont.1723521776225.woff → iconfont.1724210671876.woff} +0 -0
  105. /package/es/{iconfont.1723521776225.woff2 → iconfont.1724210671876.woff2} +0 -0
  106. /package/lib/{iconfont.1723521776225.ttf → iconfont.1724210671876.ttf} +0 -0
  107. /package/lib/{iconfont.1723521776225.woff → iconfont.1724210671876.woff} +0 -0
  108. /package/lib/{iconfont.1723521776225.woff2 → iconfont.1724210671876.woff2} +0 -0
@@ -364,13 +364,13 @@ function oldFilterRender(renderOpts, params) {
364
364
  }
365
365
  function handleFilterMethod({ option, row, column }) {
366
366
  const { data } = option;
367
- const cellValue = XEUtils.get(row, column.property);
367
+ const cellValue = XEUtils.get(row, column.field);
368
368
  /* eslint-disable eqeqeq */
369
369
  return cellValue == data;
370
370
  }
371
371
  function handleInputFilterMethod({ option, row, column }) {
372
372
  const { data } = option;
373
- const cellValue = XEUtils.get(row, column.property);
373
+ const cellValue = XEUtils.get(row, column.field);
374
374
  /* eslint-disable eqeqeq */
375
375
  return XEUtils.toValueString(cellValue).indexOf(data) > -1;
376
376
  }
@@ -409,7 +409,7 @@ function oldSelectEditRender(renderOpts, params) {
409
409
  }
410
410
  function getSelectCellValue(renderOpts, { row, column }) {
411
411
  const { options, optionGroups, optionProps = {}, optionGroupProps = {} } = renderOpts;
412
- const cellValue = XEUtils.get(row, column.property);
412
+ const cellValue = XEUtils.get(row, column.field);
413
413
  let selectItem;
414
414
  const labelProp = optionProps.label || 'label';
415
415
  const valueProp = optionProps.value || 'value';
@@ -440,7 +440,7 @@ function handleExportSelectMethod(params) {
440
440
  }
441
441
  function getTreeSelectCellValue(renderOpts, { row, column }) {
442
442
  const { options, optionProps = {} } = renderOpts;
443
- const cellValue = XEUtils.get(row, column.property);
443
+ const cellValue = XEUtils.get(row, column.field);
444
444
  const labelProp = optionProps.label || 'label';
445
445
  const valueProp = optionProps.value || 'value';
446
446
  const childrenProp = optionProps.children || 'children';
@@ -465,40 +465,40 @@ function handleExportTreeSelectMethod(params) {
465
465
  */
466
466
  renderer.mixin({
467
467
  input: {
468
- autofocus: 'input',
469
- renderEdit: nativeEditRender,
470
- renderDefault: nativeEditRender,
471
- renderFilter: nativeFilterRender,
472
- defaultFilterMethod: handleInputFilterMethod
468
+ tableAutoFocus: 'input',
469
+ renderTableEdit: nativeEditRender,
470
+ renderTableDefault: nativeEditRender,
471
+ renderTableFilter: nativeFilterRender,
472
+ tableFilterDefaultMethod: handleInputFilterMethod
473
473
  },
474
474
  textarea: {
475
- autofocus: 'textarea',
476
- renderEdit: nativeEditRender
475
+ tableAutoFocus: 'textarea',
476
+ renderTableEdit: nativeEditRender
477
477
  },
478
478
  select: {
479
- renderEdit: nativeSelectEditRender,
480
- renderDefault: nativeSelectEditRender,
481
- renderCell(renderOpts, params) {
479
+ renderTableEdit: nativeSelectEditRender,
480
+ renderTableDefault: nativeSelectEditRender,
481
+ renderTableCell(renderOpts, params) {
482
482
  return getCellLabelVNs(renderOpts, params, getSelectCellValue(renderOpts, params));
483
483
  },
484
- renderFilter(renderOpts, params) {
484
+ renderTableFilter(renderOpts, params) {
485
485
  const { column } = params;
486
486
  return column.filters.map((option, oIndex) => {
487
487
  return h('select', Object.assign(Object.assign({ key: oIndex, class: 'vxe-default-select' }, getNativeAttrs(renderOpts)), getNativeFilterOns(renderOpts, params, option)), renderOpts.optionGroups ? renderNativeOptgroups(renderOpts, params, renderNativeOptions) : renderNativeOptions(renderOpts.options, renderOpts, params));
488
488
  });
489
489
  },
490
- defaultFilterMethod: handleFilterMethod,
491
- exportMethod: handleExportSelectMethod
490
+ tableFilterDefaultMethod: handleFilterMethod,
491
+ tableExportMethod: handleExportSelectMethod
492
492
  },
493
493
  VxeInput: {
494
- autofocus: 'input',
495
- renderEdit: defaultEditRender,
496
- renderCell(renderOpts, params) {
494
+ tableAutoFocus: 'input',
495
+ renderTableEdit: defaultEditRender,
496
+ renderTableCell(renderOpts, params) {
497
497
  var _a;
498
498
  const { props = {} } = renderOpts;
499
499
  const { row, column } = params;
500
500
  const digits = props.digits || ((_a = getConfig().input) === null || _a === void 0 ? void 0 : _a.digits) || 2;
501
- let cellValue = XEUtils.get(row, column.property);
501
+ let cellValue = XEUtils.get(row, column.field);
502
502
  if (cellValue) {
503
503
  switch (props.type) {
504
504
  case 'date':
@@ -515,19 +515,19 @@ renderer.mixin({
515
515
  }
516
516
  return getCellLabelVNs(renderOpts, params, cellValue);
517
517
  },
518
- renderDefault: defaultEditRender,
519
- renderFilter: defaultFilterRender,
520
- defaultFilterMethod: handleInputFilterMethod
518
+ renderTableDefault: defaultEditRender,
519
+ renderTableFilter: defaultFilterRender,
520
+ tableFilterDefaultMethod: handleInputFilterMethod
521
521
  },
522
522
  VxeNumberInput: {
523
- autofocus: 'input',
524
- renderEdit: defaultEditRender,
525
- renderCell(renderOpts, params) {
523
+ tableAutoFocus: 'input',
524
+ renderTableEdit: defaultEditRender,
525
+ renderTableCell(renderOpts, params) {
526
526
  var _a;
527
527
  const { props = {} } = renderOpts;
528
528
  const { row, column } = params;
529
529
  const digits = props.digits || ((_a = getConfig().numberInput) === null || _a === void 0 ? void 0 : _a.digits) || 2;
530
- let cellValue = XEUtils.get(row, column.property);
530
+ let cellValue = XEUtils.get(row, column.field);
531
531
  if (cellValue) {
532
532
  switch (props.type) {
533
533
  case 'float':
@@ -537,17 +537,17 @@ renderer.mixin({
537
537
  }
538
538
  return getCellLabelVNs(renderOpts, params, cellValue);
539
539
  },
540
- renderDefault: defaultEditRender,
541
- renderFilter: defaultFilterRender,
542
- defaultFilterMethod: handleInputFilterMethod
540
+ renderTableDefault: defaultEditRender,
541
+ renderTableFilter: defaultFilterRender,
542
+ tableFilterDefaultMethod: handleInputFilterMethod
543
543
  },
544
544
  VxeDatePicker: {
545
- autofocus: 'input',
546
- renderEdit: defaultEditRender,
547
- renderCell(renderOpts, params) {
545
+ tableAutoFocus: 'input',
546
+ renderTableEdit: defaultEditRender,
547
+ renderTableCell(renderOpts, params) {
548
548
  const { props = {} } = renderOpts;
549
549
  const { row, column } = params;
550
- let cellValue = XEUtils.get(row, column.property);
550
+ let cellValue = XEUtils.get(row, column.field);
551
551
  if (cellValue) {
552
552
  switch (props.type) {
553
553
  case 'date':
@@ -561,18 +561,18 @@ renderer.mixin({
561
561
  }
562
562
  return getCellLabelVNs(renderOpts, params, cellValue);
563
563
  },
564
- renderDefault: defaultEditRender,
565
- renderFilter: defaultFilterRender,
566
- defaultFilterMethod: handleFilterMethod
564
+ renderTableDefault: defaultEditRender,
565
+ renderTableFilter: defaultFilterRender,
566
+ tableFilterDefaultMethod: handleFilterMethod
567
567
  },
568
568
  VxeTextarea: {
569
- autofocus: 'VxeTextarea'
569
+ tableAutoFocus: 'VxeTextarea'
570
570
  },
571
571
  VxeButton: {
572
- renderDefault: buttonCellRender
572
+ renderTableDefault: buttonCellRender
573
573
  },
574
574
  VxeButtonGroup: {
575
- renderDefault(renderOpts, params) {
575
+ renderTableDefault(renderOpts, params) {
576
576
  const { options } = renderOpts;
577
577
  return [
578
578
  h(getDefaultComponent(renderOpts), Object.assign(Object.assign({ options }, getCellEditProps(renderOpts, params, null)), getComponentOns(renderOpts, params)))
@@ -580,13 +580,13 @@ renderer.mixin({
580
580
  }
581
581
  },
582
582
  VxeSelect: {
583
- autofocus: 'input',
584
- renderEdit: defaultSelectEditRender,
585
- renderDefault: defaultSelectEditRender,
586
- renderCell(renderOpts, params) {
583
+ tableAutoFocus: 'input',
584
+ renderTableEdit: defaultSelectEditRender,
585
+ renderTableDefault: defaultSelectEditRender,
586
+ renderTableCell(renderOpts, params) {
587
587
  return getCellLabelVNs(renderOpts, params, getSelectCellValue(renderOpts, params));
588
588
  },
589
- renderFilter(renderOpts, params) {
589
+ renderTableFilter(renderOpts, params) {
590
590
  const { column } = params;
591
591
  const { options, optionProps, optionGroups, optionGroupProps } = renderOpts;
592
592
  return column.filters.map((option, oIndex) => {
@@ -594,35 +594,46 @@ renderer.mixin({
594
594
  return h(getDefaultComponent(renderOpts), Object.assign(Object.assign({ key: oIndex }, getCellEditFilterProps(renderOpts, params, optionValue, { options, optionProps, optionGroups, optionGroupProps })), getFilterOns(renderOpts, params, option)));
595
595
  });
596
596
  },
597
- defaultFilterMethod: handleFilterMethod,
598
- exportMethod: handleExportSelectMethod
597
+ tableFilterDefaultMethod: handleFilterMethod,
598
+ tableExportMethod: handleExportSelectMethod
599
599
  },
600
600
  VxeTreeSelect: {
601
- autofocus: 'input',
602
- renderEdit: defaultTreeSelectEditRender,
603
- renderCell(renderOpts, params) {
601
+ tableAutoFocus: 'input',
602
+ renderTableEdit: defaultTreeSelectEditRender,
603
+ renderTableCell(renderOpts, params) {
604
604
  return getCellLabelVNs(renderOpts, params, getTreeSelectCellValue(renderOpts, params));
605
605
  },
606
- exportMethod: handleExportTreeSelectMethod
606
+ tableExportMethod: handleExportTreeSelectMethod
607
+ },
608
+ VxeIconPicker: {
609
+ tableAutoFocus: 'input',
610
+ renderTableEdit: defaultEditRender,
611
+ renderTableCell(renderOpts, params) {
612
+ const { row, column } = params;
613
+ const cellValue = XEUtils.get(row, column.field);
614
+ return h('i', {
615
+ class: cellValue
616
+ });
617
+ }
607
618
  },
608
619
  VxeRadioGroup: {
609
- renderDefault: radioAndCheckboxEditRender
620
+ renderTableDefault: radioAndCheckboxEditRender
610
621
  },
611
622
  VxeCheckboxGroup: {
612
- renderDefault: radioAndCheckboxEditRender
623
+ renderTableDefault: radioAndCheckboxEditRender
613
624
  },
614
625
  VxeSwitch: {
615
- autofocus: 'button',
616
- renderEdit: defaultEditRender,
617
- renderDefault: defaultEditRender
626
+ tableAutoFocus: 'button',
627
+ renderTableEdit: defaultEditRender,
628
+ renderTableDefault: defaultEditRender
618
629
  },
619
630
  VxeUpload: {
620
- renderEdit: defaultEditRender,
621
- renderCell: defaultEditRender,
622
- renderDefault: defaultEditRender
631
+ renderTableEdit: defaultEditRender,
632
+ renderTableCell: defaultEditRender,
633
+ renderTableDefault: defaultEditRender
623
634
  },
624
635
  VxeImage: {
625
- renderDefault(renderOpts, params) {
636
+ renderTableDefault(renderOpts, params) {
626
637
  const { row, column } = params;
627
638
  const { props } = renderOpts;
628
639
  const cellValue = getCellValue(row, column);
@@ -632,7 +643,7 @@ renderer.mixin({
632
643
  }
633
644
  },
634
645
  VxeImageGroup: {
635
- renderDefault(renderOpts, params) {
646
+ renderTableDefault(renderOpts, params) {
636
647
  const { row, column } = params;
637
648
  const { props } = renderOpts;
638
649
  const cellValue = getCellValue(row, column);
@@ -643,14 +654,14 @@ renderer.mixin({
643
654
  },
644
655
  // 以下已废弃
645
656
  $input: {
646
- autofocus: '.vxe-input--inner',
647
- renderEdit: oldEditRender,
648
- renderCell(renderOpts, params) {
657
+ tableAutoFocus: '.vxe-input--inner',
658
+ renderTableEdit: oldEditRender,
659
+ renderTableCell(renderOpts, params) {
649
660
  var _a;
650
661
  const { props = {} } = renderOpts;
651
662
  const { row, column } = params;
652
663
  const digits = props.digits || ((_a = getConfig().input) === null || _a === void 0 ? void 0 : _a.digits) || 2;
653
- let cellValue = XEUtils.get(row, column.property);
664
+ let cellValue = XEUtils.get(row, column.field);
654
665
  if (cellValue) {
655
666
  switch (props.type) {
656
667
  case 'date':
@@ -666,27 +677,27 @@ renderer.mixin({
666
677
  }
667
678
  return getCellLabelVNs(renderOpts, params, cellValue);
668
679
  },
669
- renderDefault: oldEditRender,
670
- renderFilter: oldFilterRender,
671
- defaultFilterMethod: handleInputFilterMethod
680
+ renderTableDefault: oldEditRender,
681
+ renderTableFilter: oldFilterRender,
682
+ tableFilterDefaultMethod: handleInputFilterMethod
672
683
  },
673
684
  $textarea: {
674
- autofocus: '.vxe-textarea--inner'
685
+ tableAutoFocus: '.vxe-textarea--inner'
675
686
  },
676
687
  $button: {
677
- renderDefault: oldButtonEditRender
688
+ renderTableDefault: oldButtonEditRender
678
689
  },
679
690
  $buttons: {
680
- renderDefault: oldButtonsEditRender
691
+ renderTableDefault: oldButtonsEditRender
681
692
  },
682
693
  $select: {
683
- autofocus: '.vxe-input--inner',
684
- renderEdit: oldSelectEditRender,
685
- renderDefault: oldSelectEditRender,
686
- renderCell(renderOpts, params) {
694
+ tableAutoFocus: '.vxe-input--inner',
695
+ renderTableEdit: oldSelectEditRender,
696
+ renderTableDefault: oldSelectEditRender,
697
+ renderTableCell(renderOpts, params) {
687
698
  return getCellLabelVNs(renderOpts, params, getSelectCellValue(renderOpts, params));
688
699
  },
689
- renderFilter(renderOpts, params) {
700
+ renderTableFilter(renderOpts, params) {
690
701
  const { column } = params;
691
702
  const { options, optionProps, optionGroups, optionGroupProps } = renderOpts;
692
703
  return column.filters.map((option, oIndex) => {
@@ -694,19 +705,19 @@ renderer.mixin({
694
705
  return h(getOldComponent(renderOpts), Object.assign(Object.assign({ key: oIndex }, getCellEditFilterProps(renderOpts, params, optionValue, { options, optionProps, optionGroups, optionGroupProps })), getFilterOns(renderOpts, params, option)));
695
706
  });
696
707
  },
697
- defaultFilterMethod: handleFilterMethod,
698
- exportMethod: handleExportSelectMethod
708
+ tableFilterDefaultMethod: handleFilterMethod,
709
+ tableExportMethod: handleExportSelectMethod
699
710
  },
700
711
  $radio: {
701
- autofocus: '.vxe-radio--input'
712
+ tableAutoFocus: '.vxe-radio--input'
702
713
  },
703
714
  $checkbox: {
704
- autofocus: '.vxe-checkbox--input'
715
+ tableAutoFocus: '.vxe-checkbox--input'
705
716
  },
706
717
  $switch: {
707
- autofocus: '.vxe-switch--button',
708
- renderEdit: oldEditRender,
709
- renderDefault: oldEditRender
718
+ tableAutoFocus: '.vxe-switch--button',
719
+ renderTableEdit: oldEditRender,
720
+ renderTableDefault: oldEditRender
710
721
  }
711
722
  // 以上已废弃
712
723
  });
@@ -30,6 +30,7 @@ export default defineComponent({
30
30
  // 使用已安装的组件,如果未安装则不渲染
31
31
  const VxeUILoadingComponent = VxeUI.getComponent('VxeLoading');
32
32
  const VxeUITooltipComponent = VxeUI.getComponent('VxeTooltip');
33
+ const $xeTabs = inject('$xeTabs', null);
33
34
  const { computeSize } = useFns.useSize(props);
34
35
  const reactData = reactive({
35
36
  isCalcColumn: false,
@@ -3188,6 +3189,11 @@ export default defineComponent({
3188
3189
  const fullColumnFieldData = internalData.fullColumnFieldData;
3189
3190
  return field && fullColumnFieldData[field] ? fullColumnFieldData[field].column : null;
3190
3191
  },
3192
+ getParentColumn(fieldOrColumn) {
3193
+ const fullColumnIdData = internalData.fullColumnIdData;
3194
+ const column = handleFieldOrColumn($xeTable, fieldOrColumn);
3195
+ return column && column.parentId && fullColumnIdData[column.parentId] ? fullColumnIdData[column.parentId].column : null;
3196
+ },
3191
3197
  /**
3192
3198
  * 获取当前表格的列
3193
3199
  * 收集到的全量列、全量表头列、处理条件之后的全量表头列、当前渲染中的表头列
@@ -3470,10 +3476,14 @@ export default defineComponent({
3470
3476
  * 计算单元格列宽,动态分配可用剩余空间
3471
3477
  * 支持 width=? width=?px width=?% min-width=? min-width=?px min-width=?%
3472
3478
  */
3473
- recalculate(refull) {
3479
+ recalculate(reFull) {
3480
+ const el = refElem.value;
3481
+ if (!el || !el.clientWidth) {
3482
+ return nextTick();
3483
+ }
3474
3484
  calcCellWidth();
3475
3485
  autoCellWidth();
3476
- if (refull === true) {
3486
+ if (reFull === true) {
3477
3487
  // 初始化时需要在列计算之后再执行优化运算,达到最优显示效果
3478
3488
  return computeScrollLoad().then(() => {
3479
3489
  autoCellWidth();
@@ -4907,6 +4917,7 @@ export default defineComponent({
4907
4917
  const operArrow = isLeftArrow || isUpArrow || isRightArrow || isDwArrow;
4908
4918
  const operCtxMenu = isMenu && ctxMenuStore.visible && (isEnter || isSpacebar || operArrow);
4909
4919
  const isEditStatus = isEnableConf(editConfig) && actived.column && actived.row;
4920
+ const beforeEditMethod = editOpts.beforeEditMethod || editOpts.activeMethod;
4910
4921
  let params;
4911
4922
  if (operCtxMenu) {
4912
4923
  // 如果配置了右键菜单; 支持方向键操作、回车
@@ -5051,20 +5062,23 @@ export default defineComponent({
5051
5062
  columnIndex: tableMethods.getColumnIndex(selected.column),
5052
5063
  $table: $xeTable
5053
5064
  };
5054
- if (delMethod) {
5055
- delMethod(delPaqrams);
5056
- }
5057
- else {
5058
- setCellValue(selected.row, selected.column, null);
5065
+ // 是否被禁用
5066
+ if (!beforeEditMethod || beforeEditMethod(params)) {
5067
+ if (delMethod) {
5068
+ delMethod(delPaqrams);
5069
+ }
5070
+ else {
5071
+ setCellValue(selected.row, selected.column, null);
5072
+ }
5073
+ // 如果按下 del 键,更新表尾数据
5074
+ tableMethods.updateFooter();
5075
+ $xeTable.dispatchEvent('cell-delete-value', delPaqrams, evnt);
5059
5076
  }
5060
- // 如果按下 del 键,更新表尾数据
5061
- tableMethods.updateFooter();
5062
- $xeTable.dispatchEvent('cell-delete-value', delPaqrams, evnt);
5063
5077
  }
5064
5078
  }
5065
5079
  else if (hasBackspaceKey && keyboardConfig && keyboardOpts.isBack && isEnableConf(editConfig) && (selected.row || selected.column)) {
5066
5080
  if (!isEditStatus) {
5067
- const { delMethod, backMethod } = keyboardOpts;
5081
+ const { backMethod } = keyboardOpts;
5068
5082
  // 如果是删除键
5069
5083
  if (keyboardOpts.isDel && isEnableConf(editConfig) && (selected.row || selected.column)) {
5070
5084
  const delPaqrams = {
@@ -5074,25 +5088,23 @@ export default defineComponent({
5074
5088
  columnIndex: tableMethods.getColumnIndex(selected.column),
5075
5089
  $table: $xeTable
5076
5090
  };
5077
- if (delMethod) {
5078
- delMethod(delPaqrams);
5079
- }
5080
- else {
5081
- setCellValue(selected.row, selected.column, null);
5082
- }
5083
- if (backMethod) {
5084
- backMethod({
5085
- row: selected.row,
5086
- rowIndex: tableMethods.getRowIndex(selected.row),
5087
- column: selected.column,
5088
- columnIndex: tableMethods.getColumnIndex(selected.column),
5089
- $table: $xeTable
5090
- });
5091
- }
5092
- else {
5093
- $xeTable.handleActived(selected.args, evnt);
5091
+ // 是否被禁用
5092
+ if (!beforeEditMethod || beforeEditMethod(params)) {
5093
+ if (backMethod) {
5094
+ backMethod({
5095
+ row: selected.row,
5096
+ rowIndex: tableMethods.getRowIndex(selected.row),
5097
+ column: selected.column,
5098
+ columnIndex: tableMethods.getColumnIndex(selected.column),
5099
+ $table: $xeTable
5100
+ });
5101
+ }
5102
+ else {
5103
+ setCellValue(selected.row, selected.column, null);
5104
+ $xeTable.handleActived(selected.args, evnt);
5105
+ }
5106
+ $xeTable.dispatchEvent('cell-backspace-value', delPaqrams, evnt);
5094
5107
  }
5095
- $xeTable.dispatchEvent('cell-backspace-value', delPaqrams, evnt);
5096
5108
  }
5097
5109
  }
5098
5110
  }
@@ -5208,6 +5220,10 @@ export default defineComponent({
5208
5220
  if ($xeTable.closeMenu) {
5209
5221
  $xeTable.closeMenu();
5210
5222
  }
5223
+ const el = refElem.value;
5224
+ if (!el || !el.clientWidth) {
5225
+ return nextTick();
5226
+ }
5211
5227
  tableMethods.updateCellAreas();
5212
5228
  tableMethods.recalculate(true);
5213
5229
  };
@@ -6657,6 +6673,11 @@ export default defineComponent({
6657
6673
  }
6658
6674
  });
6659
6675
  });
6676
+ if ($xeTabs) {
6677
+ watch(() => $xeTabs ? $xeTabs.reactData.resizeFlag : null, () => {
6678
+ handleGlobalResizeEvent();
6679
+ });
6680
+ }
6660
6681
  hooks.forEach((options) => {
6661
6682
  const { setupTable } = options;
6662
6683
  if (setupTable) {
@@ -6928,6 +6949,7 @@ export default defineComponent({
6928
6949
  'is--virtual-x': scrollXLoad,
6929
6950
  'is--virtual-y': scrollYLoad
6930
6951
  }],
6952
+ spellcheck: false,
6931
6953
  onKeydown: keydownEvent
6932
6954
  }, [
6933
6955
  /**
@@ -1734,13 +1734,14 @@
1734
1734
  resize: none;
1735
1735
  vertical-align: middle;
1736
1736
  }
1737
- .vxe-cell > .vxe-input, .vxe-cell > .vxe-textarea, .vxe-cell > .vxe-select, .vxe-cell > .vxe-tree-select, .vxe-cell > .vxe-date-picker, .vxe-cell > .vxe-number-input,
1737
+ .vxe-cell > .vxe-input, .vxe-cell > .vxe-textarea, .vxe-cell > .vxe-select, .vxe-cell > .vxe-tree-select, .vxe-cell > .vxe-date-picker, .vxe-cell > .vxe-number-input, .vxe-cell > .vxe-ico-picker,
1738
1738
  .vxe-table--filter-template > .vxe-input,
1739
1739
  .vxe-table--filter-template > .vxe-textarea,
1740
1740
  .vxe-table--filter-template > .vxe-select,
1741
1741
  .vxe-table--filter-template > .vxe-tree-select,
1742
1742
  .vxe-table--filter-template > .vxe-date-picker,
1743
- .vxe-table--filter-template > .vxe-number-input {
1743
+ .vxe-table--filter-template > .vxe-number-input,
1744
+ .vxe-table--filter-template > .vxe-ico-picker {
1744
1745
  width: 100%;
1745
1746
  }
1746
1747
  .vxe-cell > .vxe-input > .vxe-input--inner, .vxe-cell > .vxe-textarea > .vxe-textarea--inner,
@@ -1759,12 +1760,14 @@
1759
1760
  .vxe-cell > .vxe-cell--tree-node .vxe-tree-select,
1760
1761
  .vxe-cell > .vxe-cell--tree-node .vxe-date-picker,
1761
1762
  .vxe-cell > .vxe-cell--tree-node .vxe-number-input,
1763
+ .vxe-cell > .vxe-cell--tree-node .vxe-ico-picker,
1762
1764
  .vxe-table--filter-template > .vxe-cell--tree-node .vxe-input,
1763
1765
  .vxe-table--filter-template > .vxe-cell--tree-node .vxe-textarea,
1764
1766
  .vxe-table--filter-template > .vxe-cell--tree-node .vxe-select,
1765
1767
  .vxe-table--filter-template > .vxe-cell--tree-node .vxe-tree-select,
1766
1768
  .vxe-table--filter-template > .vxe-cell--tree-node .vxe-date-picker,
1767
- .vxe-table--filter-template > .vxe-cell--tree-node .vxe-number-input {
1769
+ .vxe-table--filter-template > .vxe-cell--tree-node .vxe-number-input,
1770
+ .vxe-table--filter-template > .vxe-cell--tree-node .vxe-ico-picker {
1768
1771
  width: 100%;
1769
1772
  }
1770
1773
  .vxe-cell > .vxe-cell--tree-node .vxe-input > .vxe-input--inner,
@@ -2660,7 +2663,8 @@
2660
2663
  .vxe-table--render-default .vxe-body--column.col--valid-error .vxe-default-select {
2661
2664
  border-color: var(--vxe-ui-table-validate-error-color);
2662
2665
  }
2663
- .vxe-table--render-default .vxe-body--column.col--valid-error .vxe-input {
2666
+ .vxe-table--render-default .vxe-body--column.col--valid-error .vxe-input,
2667
+ .vxe-table--render-default .vxe-body--column.col--valid-error .vxe-ico-picker {
2664
2668
  border-color: var(--vxe-ui-table-validate-error-color);
2665
2669
  }
2666
2670
  .vxe-table--render-default.valid-msg--single .vxe-body--row:last-child .vxe-cell--valid-error-hint {