From f5cdc6c98f325dda398c58239459a30721299462 Mon Sep 17 00:00:00 2001 From: shenjunjian <40288193@qq.com> Date: Thu, 13 Mar 2025 23:39:03 -0700 Subject: [PATCH] fix(popper): fix popper doms in custom element, cant get zindex --- packages/renderless/src/grid/utils/dom.ts | 8 ++++++-- packages/utils/src/popper/index.ts | 4 ++++ packages/vue-hooks/src/vue-popper.ts | 5 +++++ 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/packages/renderless/src/grid/utils/dom.ts b/packages/renderless/src/grid/utils/dom.ts index 4e96f5d9ac..f8cd4fb266 100644 --- a/packages/renderless/src/grid/utils/dom.ts +++ b/packages/renderless/src/grid/utils/dom.ts @@ -188,11 +188,15 @@ export const colToVisible = ($table, column, move) => { } export const hasDataTag = (el, value) => { - // el可能为shadow-root,shadow-root没有getAttribute方法 - if (!el || !value || !el.getAttribute) { + if (!el || !value) { return false } + // 处理遇到 shadowRoot的情况 + if (el.host) { + el = el.host + } + return (' ' + el.getAttribute('data-tag') + ' ').includes(' ' + value + ' ') } diff --git a/packages/utils/src/popper/index.ts b/packages/utils/src/popper/index.ts index 4ef9a88a66..620fa39717 100644 --- a/packages/utils/src/popper/index.ts +++ b/packages/utils/src/popper/index.ts @@ -76,6 +76,10 @@ const isFixed = (el: HTMLElement) => { return true } + // 处理遇到 shadowRoot的情况 + if (el.host) { + el = el.host + } return el.parentNode ? isFixed(el.parentNode as HTMLElement) : false } diff --git a/packages/vue-hooks/src/vue-popper.ts b/packages/vue-hooks/src/vue-popper.ts index 2342522ccf..f12bc1888e 100644 --- a/packages/vue-hooks/src/vue-popper.ts +++ b/packages/vue-hooks/src/vue-popper.ts @@ -58,6 +58,11 @@ const getReferMaxZIndex = (reference) => { do { reference = reference.parentNode + // 处理遇到shadowRoot的情况 + if (reference && reference instanceof ShadowRoot && reference.host) { + reference = reference.host + } + if (reference) { z = getZIndex(reference) } else {