From a56006ba2d5b54fb633e2dbd34aefb8a96d076f3 Mon Sep 17 00:00:00 2001 From: gimmyhehe <975402925@qq.com> Date: Wed, 2 Jul 2025 14:10:10 +0800 Subject: [PATCH] fix(grid): fix popper edit element blur when set edit-config blurOutside (#3550) --- packages/vue/src/grid/src/table/src/methods.ts | 17 +++++++++++++++++ .../src/grid/src/table/src/utils/updateStyle.ts | 4 ---- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/packages/vue/src/grid/src/table/src/methods.ts b/packages/vue/src/grid/src/table/src/methods.ts index 92ae3f08a..24ca6b82b 100644 --- a/packages/vue/src/grid/src/table/src/methods.ts +++ b/packages/vue/src/grid/src/table/src/methods.ts @@ -1130,6 +1130,11 @@ const Methods = { isScrollY = containerScrollHeight + scrollbarSize > containerHeight } + // 虚拟滚动如果没有height的话,表格滚动到底部表头会发生偏移,将height设置为max-height可避免 + if (!this.height) { + this.bodyWrapperHeight = containerScrollHeight > this.bodyWrapperMaxHeight ? this.bodyWrapperMaxHeight : null + } + Object.assign(this, { overflowX: isScrollX, overflowY: isScrollY, @@ -1179,6 +1184,18 @@ const Methods = { } if (typeof editConfig.blurOutside === 'function') { + const bodyEl = document.body + if ( + getEventTargetNode(event, bodyEl, 'tiny-autocomplete-suggestion').flag || + getEventTargetNode(event, bodyEl, 'tiny-select-dropdown').flag || + getEventTargetNode(event, bodyEl, 'tiny-cascader__dropdown').flag || + getEventTargetNode(event, bodyEl, 'tiny-cascader-menus').flag || + getEventTargetNode(event, bodyEl, 'tiny-picker-panel').flag || + getEventTargetNode(event, bodyEl, 'tiny-popper').flag || + getEventTargetNode(event, bodyEl, 'tiny-dialog-box').flag + ) { + return true + } return Boolean(editConfig.blurOutside({ cell: args.cell, event, $table: this })) } diff --git a/packages/vue/src/grid/src/table/src/utils/updateStyle.ts b/packages/vue/src/grid/src/table/src/utils/updateStyle.ts index 258253fbe..190dc0cab 100644 --- a/packages/vue/src/grid/src/table/src/utils/updateStyle.ts +++ b/packages/vue/src/grid/src/table/src/utils/updateStyle.ts @@ -67,10 +67,6 @@ export function handleLayout(_vm) { _vm.bodyWrapperMinHeight = minHeight } - if (scrollYLoad && !_vm.bodyWrapperHeight) { - _vm.bodyWrapperHeight = maxHeight - } - _vm.bodyTableWidth = scrollXLoad ? tableColumn.reduce((previous, column) => previous + column.renderWidth, 0) : totalWidth