vxe-table 4.16.9 → 4.16.11

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 (54) hide show
  1. package/README.en.md +1 -1
  2. package/README.ja-JP.md +1 -1
  3. package/README.md +1 -1
  4. package/README.zh-TW.md +1 -1
  5. package/es/grid/src/grid.js +1 -1
  6. package/es/style.css +1 -1
  7. package/es/table/module/menu/hook.js +3 -3
  8. package/es/table/src/body.js +2 -1
  9. package/es/table/src/cell.js +43 -25
  10. package/es/table/src/footer.js +3 -3
  11. package/es/table/src/header.js +2 -1
  12. package/es/table/src/props.js +4 -0
  13. package/es/table/src/table.js +49 -15
  14. package/es/ui/index.js +7 -1
  15. package/es/ui/src/log.js +1 -1
  16. package/lib/grid/src/grid.js +1 -1
  17. package/lib/grid/src/grid.min.js +1 -1
  18. package/lib/index.umd.js +100 -59
  19. package/lib/index.umd.min.js +1 -1
  20. package/lib/style.css +1 -1
  21. package/lib/table/module/menu/hook.js +3 -3
  22. package/lib/table/module/menu/hook.min.js +1 -1
  23. package/lib/table/src/body.js +2 -1
  24. package/lib/table/src/body.min.js +1 -1
  25. package/lib/table/src/cell.js +60 -32
  26. package/lib/table/src/cell.min.js +1 -1
  27. package/lib/table/src/footer.js +3 -3
  28. package/lib/table/src/footer.min.js +1 -1
  29. package/lib/table/src/header.js +2 -1
  30. package/lib/table/src/header.min.js +1 -1
  31. package/lib/table/src/props.js +4 -0
  32. package/lib/table/src/props.min.js +1 -1
  33. package/lib/table/src/table.js +14 -14
  34. package/lib/table/src/table.min.js +1 -1
  35. package/lib/ui/index.js +7 -1
  36. package/lib/ui/index.min.js +1 -1
  37. package/lib/ui/src/log.js +1 -1
  38. package/lib/ui/src/log.min.js +1 -1
  39. package/package.json +2 -2
  40. package/packages/grid/src/grid.ts +1 -1
  41. package/packages/table/module/menu/hook.ts +3 -3
  42. package/packages/table/src/body.ts +2 -1
  43. package/packages/table/src/cell.ts +41 -25
  44. package/packages/table/src/footer.ts +3 -3
  45. package/packages/table/src/header.ts +2 -1
  46. package/packages/table/src/props.ts +4 -0
  47. package/packages/table/src/table.ts +48 -15
  48. package/packages/ui/index.ts +6 -0
  49. /package/es/{iconfont.1757392740800.ttf → iconfont.1757578456216.ttf} +0 -0
  50. /package/es/{iconfont.1757392740800.woff → iconfont.1757578456216.woff} +0 -0
  51. /package/es/{iconfont.1757392740800.woff2 → iconfont.1757578456216.woff2} +0 -0
  52. /package/lib/{iconfont.1757392740800.ttf → iconfont.1757578456216.ttf} +0 -0
  53. /package/lib/{iconfont.1757392740800.woff → iconfont.1757578456216.woff} +0 -0
  54. /package/lib/{iconfont.1757392740800.woff2 → iconfont.1757578456216.woff2} +0 -0
@@ -9,7 +9,7 @@ hooks.add('tableMenuModule', {
9
9
  setupTable($xeTable) {
10
10
  const { xID, props, reactData, internalData } = $xeTable;
11
11
  const { refElem, refTableFilter, refTableMenu } = $xeTable.getRefMaps();
12
- const { computeMouseOpts, computeIsMenu, computeMenuOpts } = $xeTable.getComputeMaps();
12
+ const { computeMouseOpts, computeIsContentMenu, computeMenuOpts } = $xeTable.getComputeMaps();
13
13
  let menuMethods = {};
14
14
  let menuPrivateMethods = {};
15
15
  /**
@@ -17,7 +17,7 @@ hooks.add('tableMenuModule', {
17
17
  */
18
18
  const handleOpenMenuEvent = (evnt, type, params) => {
19
19
  const { ctxMenuStore } = reactData;
20
- const isMenu = computeIsMenu.value;
20
+ const isContentMenu = computeIsContentMenu.value;
21
21
  const menuOpts = computeMenuOpts.value;
22
22
  const config = menuOpts[type];
23
23
  const visibleMethod = menuOpts.visibleMethod;
@@ -26,7 +26,7 @@ hooks.add('tableMenuModule', {
26
26
  if (disabled) {
27
27
  evnt.preventDefault();
28
28
  }
29
- else if (isMenu && options && options.length) {
29
+ else if (isContentMenu && options && options.length) {
30
30
  params.options = options;
31
31
  $xeTable.preventEvent(evnt, 'event.showMenu', params, () => {
32
32
  if (!visibleMethod || visibleMethod(params)) {
@@ -783,7 +783,8 @@ export default defineVxeComponent({
783
783
  }),
784
784
  mouseConfig && mouseOpts.area
785
785
  ? h('div', {
786
- class: 'vxe-table--cell-area'
786
+ class: 'vxe-table--cell-area',
787
+ xid: xID
787
788
  }, [
788
789
  h('span', {
789
790
  class: 'vxe-table--cell-main-area'
@@ -161,12 +161,12 @@ function renderTitleContent(params, content) {
161
161
  const { $table, column } = params;
162
162
  const tableProps = $table.props;
163
163
  const tableReactData = $table.reactData;
164
- const { computeTooltipOpts } = $table.getComputeMaps();
164
+ const { computeHeaderTooltipOpts } = $table.getComputeMaps();
165
165
  const { showHeaderOverflow: allColumnHeaderOverflow } = tableProps;
166
166
  const { isRowGroupStatus } = tableReactData;
167
167
  const { showHeaderOverflow } = column;
168
- const tooltipOpts = computeTooltipOpts.value;
169
- const showAllTip = tooltipOpts.showAll;
168
+ const headerTooltipOpts = computeHeaderTooltipOpts.value;
169
+ const showAllTip = headerTooltipOpts.showAll;
170
170
  const headOverflow = XEUtils.eqNull(showHeaderOverflow) ? allColumnHeaderOverflow : showHeaderOverflow;
171
171
  const showTitle = headOverflow === 'title';
172
172
  const showTooltip = headOverflow === true || headOverflow === 'tooltip';
@@ -759,7 +759,9 @@ export const Cell = {
759
759
  const { treeConfig } = tableProps;
760
760
  const { updateCheckboxFlag, isRowGroupStatus } = tableReactData;
761
761
  const { selectCheckboxMaps, treeIndeterminateRowMaps } = tableInternalData;
762
- const { computeCheckboxOpts } = $table.getComputeMaps();
762
+ const { computeCheckboxOpts, computeAggregateOpts } = $table.getComputeMaps();
763
+ const aggregateOpts = computeAggregateOpts.value;
764
+ const { mapChildrenField } = aggregateOpts;
763
765
  const checkboxOpts = computeCheckboxOpts.value;
764
766
  const { labelField, checkMethod, visibleMethod } = checkboxOpts;
765
767
  const { slots } = column;
@@ -767,23 +769,30 @@ export const Cell = {
767
769
  const checkboxSlot = slots ? slots.checkbox : null;
768
770
  let indeterminate = false;
769
771
  let isChecked = false;
770
- const isVisible = !visibleMethod || visibleMethod({ $table, row });
771
- let isDisabled = !!checkMethod;
772
+ let isVisible = true;
773
+ let isDisabled = false;
772
774
  const ons = {};
773
775
  if (!isHidden) {
774
776
  const rowid = getRowid($table, row);
775
777
  isChecked = !!updateCheckboxFlag && !!selectCheckboxMaps[rowid];
776
- ons.onClick = (evnt) => {
777
- if (!isDisabled && isVisible) {
778
- $table.triggerCheckRowEvent(evnt, params, !isChecked);
778
+ if (checkMethod && isRowGroupStatus && $table.isAggregateRecord(row)) {
779
+ const childList = row[mapChildrenField || ''];
780
+ if (!childList || !childList.length || childList.every(item => !checkMethod({ $table, row: item }))) {
781
+ isDisabled = true;
779
782
  }
780
- };
781
- if (checkMethod) {
782
- isDisabled = !checkMethod({ $table, row });
783
+ }
784
+ else {
785
+ isVisible = !visibleMethod || visibleMethod({ $table, row });
786
+ isDisabled = checkMethod ? !checkMethod({ $table, row }) : !!checkMethod;
783
787
  }
784
788
  if (treeConfig || isRowGroupStatus) {
785
789
  indeterminate = !!treeIndeterminateRowMaps[rowid];
786
790
  }
791
+ ons.onClick = (evnt) => {
792
+ if (!isDisabled && isVisible) {
793
+ $table.triggerCheckRowEvent(evnt, params, !isChecked);
794
+ }
795
+ };
787
796
  }
788
797
  const checkboxParams = Object.assign(Object.assign({}, params), { checked: isChecked, disabled: isDisabled, visible: isVisible, indeterminate });
789
798
  if (checkboxSlot) {
@@ -820,41 +829,50 @@ export const Cell = {
820
829
  const { treeConfig } = tableProps;
821
830
  const { updateCheckboxFlag, isRowGroupStatus } = tableReactData;
822
831
  const { treeIndeterminateRowMaps } = tableInternalData;
823
- const { computeCheckboxOpts } = $table.getComputeMaps();
832
+ const { computeCheckboxOpts, computeAggregateOpts } = $table.getComputeMaps();
833
+ const aggregateOpts = computeAggregateOpts.value;
834
+ const { mapChildrenField } = aggregateOpts;
824
835
  const checkboxOpts = computeCheckboxOpts.value;
825
836
  const { labelField, checkField, checkMethod, visibleMethod } = checkboxOpts;
826
837
  const indeterminateField = checkboxOpts.indeterminateField || checkboxOpts.halfField;
827
838
  const { slots } = column;
828
839
  const defaultSlot = slots ? slots.default : null;
829
840
  const checkboxSlot = slots ? slots.checkbox : null;
830
- let isIndeterminate = false;
841
+ let indeterminate = false;
831
842
  let isChecked = false;
832
- const isVisible = !visibleMethod || visibleMethod({ $table, row });
833
- let isDisabled = !!checkMethod;
843
+ let isVisible = true;
844
+ let isDisabled = false;
834
845
  const ons = {};
835
846
  if (!isHidden) {
836
847
  const rowid = getRowid($table, row);
837
848
  isChecked = !!updateCheckboxFlag && XEUtils.get(row, checkField);
849
+ if (checkMethod && isRowGroupStatus && $table.isAggregateRecord(row)) {
850
+ const childList = row[mapChildrenField || ''];
851
+ if (!childList || !childList.length || childList.every(item => !checkMethod({ $table, row: item }))) {
852
+ isDisabled = true;
853
+ }
854
+ }
855
+ else {
856
+ isVisible = !visibleMethod || visibleMethod({ $table, row });
857
+ isDisabled = checkMethod ? !checkMethod({ $table, row }) : !!checkMethod;
858
+ }
859
+ if (treeConfig || isRowGroupStatus) {
860
+ indeterminate = !!treeIndeterminateRowMaps[rowid];
861
+ }
838
862
  ons.onClick = (evnt) => {
839
863
  if (!isDisabled && isVisible) {
840
864
  $table.triggerCheckRowEvent(evnt, params, !isChecked);
841
865
  }
842
866
  };
843
- if (checkMethod) {
844
- isDisabled = !checkMethod({ $table, row });
845
- }
846
- if (treeConfig || isRowGroupStatus) {
847
- isIndeterminate = !!treeIndeterminateRowMaps[rowid];
848
- }
849
867
  }
850
- const checkboxParams = Object.assign(Object.assign({}, params), { checked: isChecked, disabled: isDisabled, visible: isVisible, indeterminate: isIndeterminate });
868
+ const checkboxParams = Object.assign(Object.assign({}, params), { checked: isChecked, disabled: isDisabled, visible: isVisible, indeterminate });
851
869
  if (checkboxSlot) {
852
870
  return renderCellBaseVNs(params, $table.callSlot(checkboxSlot, checkboxParams));
853
871
  }
854
872
  const checkVNs = [];
855
873
  if (isVisible) {
856
874
  checkVNs.push(h('span', {
857
- class: ['vxe-checkbox--icon', isIndeterminate ? getIcon().TABLE_CHECKBOX_INDETERMINATE : (isChecked ? getIcon().TABLE_CHECKBOX_CHECKED : (isDisabled ? getIcon().TABLE_CHECKBOX_DISABLED_UNCHECKED : getIcon().TABLE_CHECKBOX_UNCHECKED))]
875
+ class: ['vxe-checkbox--icon', indeterminate ? getIcon().TABLE_CHECKBOX_INDETERMINATE : (isChecked ? getIcon().TABLE_CHECKBOX_CHECKED : (isDisabled ? getIcon().TABLE_CHECKBOX_DISABLED_UNCHECKED : getIcon().TABLE_CHECKBOX_UNCHECKED))]
858
876
  }));
859
877
  if (defaultSlot || labelField) {
860
878
  checkVNs.push(h('span', {
@@ -866,7 +884,7 @@ export const Cell = {
866
884
  h('span', Object.assign({ class: ['vxe-cell--checkbox', {
867
885
  'is--checked': isChecked,
868
886
  'is--disabled': isDisabled,
869
- 'is--indeterminate': indeterminateField && !isChecked ? row[indeterminateField] : isIndeterminate,
887
+ 'is--indeterminate': indeterminateField && !isChecked ? row[indeterminateField] : indeterminate,
870
888
  'is--hidden': !isVisible
871
889
  }] }, ons), checkVNs)
872
890
  ]);
@@ -29,7 +29,7 @@ export default defineVxeComponent({
29
29
  setup(props) {
30
30
  const $xeTable = inject('$xeTable', {});
31
31
  const { xID, props: tableProps, reactData: tableReactData, internalData: tableInternalData } = $xeTable;
32
- const { computeTooltipOpts, computeColumnOpts, computeCellOpts, computeFooterCellOpts, computeDefaultRowHeight, computeResizableOpts, computeVirtualXOpts } = $xeTable.getComputeMaps();
32
+ const { computeFooterTooltipOpts, computeColumnOpts, computeCellOpts, computeFooterCellOpts, computeDefaultRowHeight, computeResizableOpts, computeVirtualXOpts } = $xeTable.getComputeMaps();
33
33
  const refElem = ref();
34
34
  const refFooterScroll = ref();
35
35
  const refFooterTable = ref();
@@ -44,7 +44,7 @@ export default defineVxeComponent({
44
44
  const { scrollXLoad, scrollYLoad, overflowX, currentColumn, mergeFootFlag } = tableReactData;
45
45
  const { fullColumnIdData, mergeFooterList, mergeFooterCellMaps, scrollXStore } = tableInternalData;
46
46
  const virtualXOpts = computeVirtualXOpts.value;
47
- const tooltipOpts = computeTooltipOpts.value;
47
+ const footerTooltipOpts = computeFooterTooltipOpts.value;
48
48
  const resizableOpts = computeResizableOpts.value;
49
49
  const { isAllColumnDrag } = resizableOpts;
50
50
  const columnOpts = computeColumnOpts.value;
@@ -58,7 +58,7 @@ export default defineVxeComponent({
58
58
  const colRest = fullColumnIdData[colid] || {};
59
59
  const renderOpts = editRender || cellRender;
60
60
  const compConf = renderOpts ? renderer.get(renderOpts.name) : null;
61
- const showAllTip = tooltipOpts.showAll;
61
+ const showAllTip = footerTooltipOpts.showAll;
62
62
  const fixedHiddenColumn = overflowX && (fixedType ? column.fixed !== fixedType : !!column.fixed);
63
63
  const isPadding = XEUtils.isBoolean(footerCellOpts.padding) ? footerCellOpts.padding : cellOpts.padding;
64
64
  const footOverflow = XEUtils.eqNull(showFooterOverflow) ? allColumnFooterOverflow : showFooterOverflow;
@@ -360,7 +360,8 @@ export default defineVxeComponent({
360
360
  ]),
361
361
  mouseConfig && mouseOpts.area
362
362
  ? h('div', {
363
- class: 'vxe-table--cell-area'
363
+ class: 'vxe-table--cell-area',
364
+ xid: xID
364
365
  }, [
365
366
  h('span', {
366
367
  class: 'vxe-table--cell-main-area'
@@ -241,6 +241,10 @@ export const tableProps = {
241
241
  checkboxConfig: Object,
242
242
  // tooltip 配置项
243
243
  tooltipConfig: Object,
244
+ // 表头 tooltip 配置项
245
+ headerTooltipConfig: Object,
246
+ // 表尾 tooltip 配置项
247
+ footerTooltipConfig: Object,
244
248
  // 导出配置项
245
249
  exportConfig: Object,
246
250
  // 导入配置项
@@ -509,6 +509,12 @@ export default defineVxeComponent({
509
509
  const computeTooltipOpts = computed(() => {
510
510
  return Object.assign({}, getConfig().tooltip, getConfig().table.tooltipConfig, props.tooltipConfig);
511
511
  });
512
+ const computeHeaderTooltipOpts = computed(() => {
513
+ return Object.assign({}, getConfig().tooltip, getConfig().table.headerTooltipConfig, props.headerTooltipConfig);
514
+ });
515
+ const computeFooterTooltipOpts = computed(() => {
516
+ return Object.assign({}, getConfig().tooltip, getConfig().table.footerTooltipConfig, props.footerTooltipConfig);
517
+ });
512
518
  const computeTableTipConfig = computed(() => {
513
519
  const { tooltipStore } = reactData;
514
520
  const tooltipOpts = computeTooltipOpts.value;
@@ -585,6 +591,10 @@ export default defineVxeComponent({
585
591
  return footerOpts && footerOpts.options ? footerOpts.options : [];
586
592
  });
587
593
  const computeIsMenu = computed(() => {
594
+ const isContentMenu = computeIsContentMenu.value;
595
+ return isContentMenu;
596
+ });
597
+ const computeIsContentMenu = computed(() => {
588
598
  const menuOpts = computeMenuOpts.value;
589
599
  const headerMenu = computeHeaderMenu.value;
590
600
  const bodyMenu = computeBodyMenu.value;
@@ -781,6 +791,8 @@ export default defineVxeComponent({
781
791
  computeRadioOpts,
782
792
  computeCheckboxOpts,
783
793
  computeTooltipOpts,
794
+ computeHeaderTooltipOpts,
795
+ computeFooterTooltipOpts,
784
796
  computeEditOpts,
785
797
  computeSortOpts,
786
798
  computeFilterOpts,
@@ -793,6 +805,7 @@ export default defineVxeComponent({
793
805
  computeBodyMenu,
794
806
  computeFooterMenu,
795
807
  computeIsMenu,
808
+ computeIsContentMenu,
796
809
  computeMenuList,
797
810
  computeMenuOpts,
798
811
  computeExportOpts,
@@ -7459,7 +7472,7 @@ export default defineVxeComponent({
7459
7472
  const { mouseConfig, keyboardConfig, treeConfig, editConfig, highlightCurrentRow, highlightCurrentColumn } = props;
7460
7473
  const { ctxMenuStore, editStore, currentRow } = reactData;
7461
7474
  const { afterFullData } = internalData;
7462
- const isMenu = computeIsMenu.value;
7475
+ const isContentMenu = computeIsContentMenu.value;
7463
7476
  const bodyMenu = computeBodyMenu.value;
7464
7477
  const keyboardOpts = computeKeyboardOpts.value;
7465
7478
  const mouseOpts = computeMouseOpts.value;
@@ -7487,7 +7500,7 @@ export default defineVxeComponent({
7487
7500
  const hasShiftKey = evnt.shiftKey;
7488
7501
  const isAltKey = evnt.altKey;
7489
7502
  const operArrow = isLeftArrow || isUpArrow || isRightArrow || isDwArrow;
7490
- const operCtxMenu = isMenu && ctxMenuStore.visible && (isEnter || isSpacebar || operArrow);
7503
+ const operCtxMenu = isContentMenu && ctxMenuStore.visible && (isEnter || isSpacebar || operArrow);
7491
7504
  const isEditStatus = isEnableConf(editConfig) && actived.column && actived.row;
7492
7505
  const beforeEditMethod = editOpts.beforeEditMethod || editOpts.activeMethod;
7493
7506
  if (operCtxMenu) {
@@ -8063,16 +8076,15 @@ export default defineVxeComponent({
8063
8076
  * @param {Event} evnt 事件
8064
8077
  * @param {Row} row 行对象
8065
8078
  */
8066
- const handleTooltip = (evnt, type, tdEl, overflowElem, tipElem, params) => {
8079
+ const handleTooltip = (evnt, tipOpts, type, tdEl, overflowElem, tipElem, params) => {
8067
8080
  const tipOverEl = overflowElem || tdEl;
8068
8081
  if (!tipOverEl) {
8069
8082
  return nextTick();
8070
8083
  }
8071
8084
  params.cell = tdEl;
8072
8085
  const { tooltipStore } = reactData;
8073
- const tooltipOpts = computeTooltipOpts.value;
8074
8086
  const { column, row } = params;
8075
- const { showAll, contentMethod } = tooltipOpts;
8087
+ const { showAll, contentMethod } = tipOpts;
8076
8088
  const customContent = contentMethod ? contentMethod(params) : null;
8077
8089
  const useCustom = contentMethod && !XEUtils.eqNull(customContent);
8078
8090
  const content = useCustom ? customContent : XEUtils.toString(column.type === 'html' ? tipOverEl.innerText : tipOverEl.textContent).trim();
@@ -8085,7 +8097,7 @@ export default defineVxeComponent({
8085
8097
  visible: true,
8086
8098
  content: tipContent,
8087
8099
  type,
8088
- currOpts: {}
8100
+ currOpts: tipOpts
8089
8101
  });
8090
8102
  nextTick(() => {
8091
8103
  const $tooltip = refTooltip.value;
@@ -8141,8 +8153,11 @@ export default defineVxeComponent({
8141
8153
  const parentPaddingSize = height === '100%' || height === 'auto' ? getPaddingTopBottomSize(parentElem) : 0;
8142
8154
  let parentWrapperHeight = 0;
8143
8155
  if (parentElem) {
8144
- if ($xeGGWrapper && hasClass(parentElem, 'vxe-grid--table-wrapper')) {
8145
- parentWrapperHeight = $xeGGWrapper.getParentHeight();
8156
+ if ($xeGantt && hasClass(parentElem, 'vxe-gantt--table-wrapper')) {
8157
+ parentWrapperHeight = $xeGantt.getParentHeight();
8158
+ }
8159
+ else if ($xeGrid && hasClass(parentElem, 'vxe-grid--table-wrapper')) {
8160
+ parentWrapperHeight = $xeGrid.getParentHeight();
8146
8161
  }
8147
8162
  else {
8148
8163
  parentWrapperHeight = parentElem.clientHeight;
@@ -8989,6 +9004,8 @@ export default defineVxeComponent({
8989
9004
  const { treeConfig } = props;
8990
9005
  const { isRowGroupStatus } = reactData;
8991
9006
  const { afterFullData, afterTreeFullData, afterGroupFullData, checkboxReserveRowMap, selectCheckboxMaps, treeIndeterminateRowMaps } = internalData;
9007
+ const aggregateOpts = computeAggregateOpts.value;
9008
+ const { mapChildrenField } = aggregateOpts;
8992
9009
  const checkboxOpts = computeCheckboxOpts.value;
8993
9010
  const { checkField, checkMethod, showReserveStatus } = checkboxOpts;
8994
9011
  const { handleGetRowId } = createHandleGetRowId($xeTable);
@@ -9002,7 +9019,21 @@ export default defineVxeComponent({
9002
9019
  ? row => {
9003
9020
  const childRowid = handleGetRowId(row);
9004
9021
  const selected = checkField ? XEUtils.get(row, checkField) : selectCheckboxMaps[childRowid];
9005
- if (checkMethod({ $table: $xeTable, row })) {
9022
+ if (isRowGroupStatus && $xeTable.isAggregateRecord(row)) {
9023
+ const childList = row[mapChildrenField || ''];
9024
+ if (selected) {
9025
+ vLen++;
9026
+ sLen++;
9027
+ }
9028
+ else if (treeIndeterminateRowMaps[childRowid]) {
9029
+ vLen++;
9030
+ hLen++;
9031
+ }
9032
+ else if (childList && childList.length && childList.some(item => checkMethod({ $table: $xeTable, row: item }))) {
9033
+ vLen++;
9034
+ }
9035
+ }
9036
+ else if (checkMethod({ $table: $xeTable, row })) {
9006
9037
  if (selected) {
9007
9038
  sLen++;
9008
9039
  }
@@ -9199,6 +9230,7 @@ export default defineVxeComponent({
9199
9230
  */
9200
9231
  triggerHeaderTooltipEvent(evnt, params) {
9201
9232
  const { tooltipStore } = reactData;
9233
+ const headerTooltipOpts = computeHeaderTooltipOpts.value;
9202
9234
  const { column } = params;
9203
9235
  handleTargetEnterEvent(true);
9204
9236
  const titleElem = evnt.currentTarget;
@@ -9219,7 +9251,7 @@ export default defineVxeComponent({
9219
9251
  }
9220
9252
  if (tooltipStore.column !== column || !tooltipStore.visible) {
9221
9253
  const ctEl = thEl.querySelector('.vxe-cell--title');
9222
- handleTooltip(evnt, 'header', thEl, (hasClass(thEl, 'col--ellipsis') ? ctEl : cWrapperEl) || cWrapperEl, ctEl || cellEl, params);
9254
+ handleTooltip(evnt, headerTooltipOpts, 'header', thEl, (hasClass(thEl, 'col--ellipsis') ? ctEl : cWrapperEl) || cWrapperEl, ctEl || cellEl, params);
9223
9255
  }
9224
9256
  },
9225
9257
  /**
@@ -9229,6 +9261,7 @@ export default defineVxeComponent({
9229
9261
  const { editConfig } = props;
9230
9262
  const { editStore } = reactData;
9231
9263
  const { tooltipStore } = reactData;
9264
+ const tooltipOpts = computeTooltipOpts.value;
9232
9265
  const editOpts = computeEditOpts.value;
9233
9266
  const { actived } = editStore;
9234
9267
  const { row, column } = params;
@@ -9255,7 +9288,7 @@ export default defineVxeComponent({
9255
9288
  if (!tipEl) {
9256
9289
  tipEl = ctEl;
9257
9290
  }
9258
- handleTooltip(evnt, 'body', tdEl, ovEl || ctEl, tipEl, params);
9291
+ handleTooltip(evnt, tooltipOpts, 'body', tdEl, ovEl || ctEl, tipEl, params);
9259
9292
  }
9260
9293
  },
9261
9294
  /**
@@ -9264,6 +9297,7 @@ export default defineVxeComponent({
9264
9297
  triggerFooterTooltipEvent(evnt, params) {
9265
9298
  const { column } = params;
9266
9299
  const { tooltipStore } = reactData;
9300
+ const footerTooltipOpts = computeFooterTooltipOpts.value;
9267
9301
  const tdEl = evnt.currentTarget;
9268
9302
  handleTargetEnterEvent(tooltipStore.column !== column || !!tooltipStore.row);
9269
9303
  if (tooltipStore.column !== column || !tooltipStore.visible) {
@@ -9276,7 +9310,7 @@ export default defineVxeComponent({
9276
9310
  if (!tipEl) {
9277
9311
  tipEl = ctEl;
9278
9312
  }
9279
- handleTooltip(evnt, 'footer', tdEl, ovEl || ctEl, tipEl, params);
9313
+ handleTooltip(evnt, footerTooltipOpts, 'footer', tdEl, ovEl || ctEl, tipEl, params);
9280
9314
  }
9281
9315
  },
9282
9316
  handleTargetLeaveEvent() {
@@ -9516,7 +9550,7 @@ export default defineVxeComponent({
9516
9550
  }
9517
9551
  }
9518
9552
  }
9519
- if (!checkMethod || checkMethod({ $table: $xeTable, row })) {
9553
+ if (isRowGroupStatus || !checkMethod || checkMethod({ $table: $xeTable, row })) {
9520
9554
  $xeTable.handleBatchSelectRows([row], checked);
9521
9555
  $xeTable.checkSelectionStatus();
9522
9556
  dispatchEvent('checkbox-change', Object.assign({
@@ -12070,7 +12104,7 @@ export default defineVxeComponent({
12070
12104
  const mouseOpts = computeMouseOpts.value;
12071
12105
  const areaOpts = computeAreaOpts.value;
12072
12106
  const loadingOpts = computeLoadingOpts.value;
12073
- const isMenu = computeIsMenu.value;
12107
+ const isContentMenu = computeIsContentMenu.value;
12074
12108
  const currLoading = reactData.isColLoading || reactData.isRowLoading || loading;
12075
12109
  const resizableOpts = computeResizableOpts.value;
12076
12110
  const isArea = mouseConfig && mouseOpts.area;
@@ -12279,7 +12313,7 @@ export default defineVxeComponent({
12279
12313
  /**
12280
12314
  * 快捷菜单
12281
12315
  */
12282
- isMenu
12316
+ isContentMenu
12283
12317
  ? h(TableMenuPanelComponent, {
12284
12318
  key: 'tm',
12285
12319
  ref: refTableMenu
package/es/ui/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { VxeUI } from '@vxe-ui/core';
2
2
  import { getFuncText } from './src/utils';
3
- export const version = "4.16.9";
3
+ export const version = "4.16.11";
4
4
  VxeUI.version = version;
5
5
  VxeUI.tableVersion = version;
6
6
  VxeUI.setConfig({
@@ -62,6 +62,12 @@ VxeUI.setConfig({
62
62
  tooltipConfig: {
63
63
  enterable: true
64
64
  },
65
+ headerTooltipConfig: {
66
+ enterable: true
67
+ },
68
+ footerTooltipConfig: {
69
+ enterable: true
70
+ },
65
71
  validConfig: {
66
72
  showMessage: true,
67
73
  autoClear: true,
package/es/ui/src/log.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { VxeUI } from '@vxe-ui/core';
2
2
  const { log } = VxeUI;
3
- const version = `table v${"4.16.9"}`;
3
+ const version = `table v${"4.16.11"}`;
4
4
  export const warnLog = log.create('warn', version);
5
5
  export const errLog = log.create('error', version);
@@ -31,7 +31,7 @@ const {
31
31
  renderEmptyElement
32
32
  } = _ui.VxeUI;
33
33
  const tableComponentPropKeys = Object.keys(_props2.tableProps);
34
- const tableComponentMethodKeys = ['clearAll', 'syncData', 'updateData', 'loadData', 'reloadData', 'reloadRow', 'loadColumn', 'reloadColumn', 'getRowNode', 'getColumnNode', 'getRowIndex', 'getVTRowIndex', 'getVMRowIndex', 'getColumnIndex', 'getVTColumnIndex', 'getVMColumnIndex', 'setRow', 'createData', 'createRow', 'revertData', 'clearData', 'isRemoveByRow', 'isInsertByRow', 'isUpdateByRow', 'getColumns', 'getColumnById', 'getColumnByField', 'getTableColumn', 'getFullColumns', 'getData', 'getCheckboxRecords', 'getParentRow', 'getTreeRowChildren', 'getTreeParentRow', 'getRowSeq', 'getRowById', 'getRowid', 'getTableData', 'getFullData', 'setColumnFixed', 'clearColumnFixed', 'setColumnWidth', 'getColumnWidth', 'recalcRowHeight', 'setRowHeightConf', 'getRowHeightConf', 'setRowHeight', 'getRowHeight', 'hideColumn', 'showColumn', 'resetColumn', 'refreshColumn', 'refreshScroll', 'recalculate', 'closeTooltip', 'isAllCheckboxChecked', 'isAllCheckboxIndeterminate', 'getCheckboxIndeterminateRecords', 'setCheckboxRow', 'setCheckboxRowKey', 'isCheckedByCheckboxRow', 'isCheckedByCheckboxRowKey', 'isIndeterminateByCheckboxRow', 'isIndeterminateByCheckboxRowKey', 'toggleCheckboxRow', 'setAllCheckboxRow', 'getRadioReserveRecord', 'clearRadioReserve', 'getCheckboxReserveRecords', 'clearCheckboxReserve', 'toggleAllCheckboxRow', 'clearCheckboxRow', 'setCurrentRow', 'isCheckedByRadioRow', 'isCheckedByRadioRowKey', 'setRadioRow', 'setRadioRowKey', 'clearCurrentRow', 'clearRadioRow', 'getCurrentRecord', 'getRadioRecord', 'getCurrentColumn', 'setCurrentColumn', 'clearCurrentColumn', 'setPendingRow', 'togglePendingRow', 'hasPendingByRow', 'isPendingByRow', 'getPendingRecords', 'clearPendingRow', 'setFilterByEvent', 'sort', 'setSort', 'setSortByEvent', 'clearSort', 'clearSortByEvent', 'isSort', 'getSortColumns', 'closeFilter', 'isFilter', 'clearFilterByEvent', 'isActiveFilterByColumn', 'isRowExpandLoaded', 'clearRowExpandLoaded', 'reloadRowExpand', 'reloadRowExpand', 'toggleRowExpand', 'setAllRowExpand', 'setRowExpand', 'isExpandByRow', 'isRowExpandByRow', 'clearRowExpand', 'clearRowExpandReserve', 'getRowExpandRecords', 'getTreeExpandRecords', 'isTreeExpandLoaded', 'clearTreeExpandLoaded', 'reloadTreeExpand', 'reloadTreeChilds', 'toggleTreeExpand', 'setAllTreeExpand', 'setTreeExpand', 'isTreeExpandByRow', 'clearTreeExpand', 'clearTreeExpandReserve', 'getScroll', 'scrollTo', 'scrollToRow', 'scrollToColumn', 'clearScroll', 'updateFooter', 'updateStatus', 'setMergeCells', 'removeInsertRow', 'removeMergeCells', 'getMergeCells', 'setMergeHeaderCells', 'removeMergeHeaderCells', 'getMergeHeaderCells', 'clearMergeHeaderCells', 'clearMergeCells', 'setMergeFooterItems', 'removeMergeFooterItems', 'getMergeFooterItems', 'clearMergeFooterItems', 'getCustomStoreData', 'setRowGroupExpand', 'setRowGroupExpandByField', 'setAllRowGroupExpand', 'clearRowGroupExpand', 'isRowGroupExpandByRow', 'isRowGroupRecord', 'isAggregateRecord', 'isAggregateExpandByRow', 'getAggregateContentByRow', 'getAggregateRowChildren', 'setRowGroups', 'clearRowGroups', 'openTooltip', 'moveColumnTo', 'moveRowTo', 'getCellLabel', 'getCellElement', 'focus', 'blur', 'connect', 'connectToolbar'];
34
+ const tableComponentMethodKeys = ['clearAll', 'syncData', 'updateData', 'loadData', 'reloadData', 'reloadRow', 'loadColumn', 'reloadColumn', 'getRowNode', 'getColumnNode', 'getRowIndex', 'getVTRowIndex', 'getVMRowIndex', 'getColumnIndex', 'getVTColumnIndex', 'getVMColumnIndex', 'setRow', 'createData', 'createRow', 'revertData', 'clearData', 'isRemoveByRow', 'isInsertByRow', 'isUpdateByRow', 'getColumns', 'getColumnById', 'getColumnByField', 'getTableColumn', 'getFullColumns', 'getData', 'getCheckboxRecords', 'getParentRow', 'getTreeRowChildren', 'getTreeRowLevel', 'getTreeParentRow', 'getRowSeq', 'getRowById', 'getRowid', 'getTableData', 'getFullData', 'setColumnFixed', 'clearColumnFixed', 'setColumnWidth', 'getColumnWidth', 'recalcRowHeight', 'setRowHeightConf', 'getRowHeightConf', 'setRowHeight', 'getRowHeight', 'hideColumn', 'showColumn', 'resetColumn', 'refreshColumn', 'refreshScroll', 'recalculate', 'closeTooltip', 'isAllCheckboxChecked', 'isAllCheckboxIndeterminate', 'getCheckboxIndeterminateRecords', 'setCheckboxRow', 'setCheckboxRowKey', 'isCheckedByCheckboxRow', 'isCheckedByCheckboxRowKey', 'isIndeterminateByCheckboxRow', 'isIndeterminateByCheckboxRowKey', 'toggleCheckboxRow', 'setAllCheckboxRow', 'getRadioReserveRecord', 'clearRadioReserve', 'getCheckboxReserveRecords', 'clearCheckboxReserve', 'toggleAllCheckboxRow', 'clearCheckboxRow', 'setCurrentRow', 'isCheckedByRadioRow', 'isCheckedByRadioRowKey', 'setRadioRow', 'setRadioRowKey', 'clearCurrentRow', 'clearRadioRow', 'getCurrentRecord', 'getRadioRecord', 'getCurrentColumn', 'setCurrentColumn', 'clearCurrentColumn', 'setPendingRow', 'togglePendingRow', 'hasPendingByRow', 'isPendingByRow', 'getPendingRecords', 'clearPendingRow', 'setFilterByEvent', 'sort', 'setSort', 'setSortByEvent', 'clearSort', 'clearSortByEvent', 'isSort', 'getSortColumns', 'closeFilter', 'isFilter', 'clearFilterByEvent', 'isActiveFilterByColumn', 'isRowExpandLoaded', 'clearRowExpandLoaded', 'reloadRowExpand', 'reloadRowExpand', 'toggleRowExpand', 'setAllRowExpand', 'setRowExpand', 'isExpandByRow', 'isRowExpandByRow', 'clearRowExpand', 'clearRowExpandReserve', 'getRowExpandRecords', 'getTreeExpandRecords', 'isTreeExpandLoaded', 'clearTreeExpandLoaded', 'reloadTreeExpand', 'reloadTreeChilds', 'toggleTreeExpand', 'setAllTreeExpand', 'setTreeExpand', 'isTreeExpandByRow', 'clearTreeExpand', 'clearTreeExpandReserve', 'getScroll', 'scrollTo', 'scrollToRow', 'scrollToColumn', 'clearScroll', 'updateFooter', 'updateStatus', 'setMergeCells', 'removeInsertRow', 'removeMergeCells', 'getMergeCells', 'setMergeHeaderCells', 'removeMergeHeaderCells', 'getMergeHeaderCells', 'clearMergeHeaderCells', 'clearMergeCells', 'setMergeFooterItems', 'removeMergeFooterItems', 'getMergeFooterItems', 'clearMergeFooterItems', 'getCustomStoreData', 'setRowGroupExpand', 'setRowGroupExpandByField', 'setAllRowGroupExpand', 'clearRowGroupExpand', 'isRowGroupExpandByRow', 'isRowGroupRecord', 'isAggregateRecord', 'isAggregateExpandByRow', 'getAggregateContentByRow', 'getAggregateRowChildren', 'setRowGroups', 'clearRowGroups', 'openTooltip', 'moveColumnTo', 'moveRowTo', 'getCellLabel', 'getCellElement', 'focus', 'blur', 'connect', 'connectToolbar'];
35
35
  function createInternalData() {
36
36
  return {};
37
37
  }