From 8339f5447e77ab9173513ed007f377a701f7b1ca Mon Sep 17 00:00:00 2001 From: Volker Schukai <volker.schukai@schukai.com> Date: Mon, 20 Jan 2025 23:26:36 +0100 Subject: [PATCH] fix: update resizeobserver --- source/components/content/copy.mjs | 15 ++++++++++++++- .../components/datatable/filter/date-range.mjs | 13 ++++++++++++- source/components/form/button-bar.mjs | 17 +++++++++++++++-- source/components/form/popper-button.mjs | 15 ++++++++++++++- source/components/form/select.mjs | 15 ++++++++++++++- source/components/layout/popper.mjs | 15 ++++++++++++++- 6 files changed, 83 insertions(+), 7 deletions(-) diff --git a/source/components/content/copy.mjs b/source/components/content/copy.mjs index 6ee6bc632..0f522cf64 100644 --- a/source/components/content/copy.mjs +++ b/source/components/content/copy.mjs @@ -267,7 +267,20 @@ function attachResizeObserver() { }); }); - this[resizeObserverSymbol].observe(this.parentElement); + requestAnimationFrame(() => { + + let parent = this.parentNode; + while(!(parent instanceof HTMLElement) && parent !== null) { + parent = parent.parentNode; + } + + if (parent instanceof HTMLElement) { + this[resizeObserverSymbol].observe(parent); + } + + + }); + } /** diff --git a/source/components/datatable/filter/date-range.mjs b/source/components/datatable/filter/date-range.mjs index 311421494..d18921d45 100644 --- a/source/components/datatable/filter/date-range.mjs +++ b/source/components/datatable/filter/date-range.mjs @@ -689,7 +689,18 @@ function attachResizeObserver() { }); }); - this[resizeObserverSymbol].observe(this.parentElement); + requestAnimationFrame(() => { + + let parent = this.parentNode; + while(!(parent instanceof HTMLElement) && parent !== null) { + parent = parent.parentNode; + } + + if (parent instanceof HTMLElement) { + this[resizeObserverSymbol].observe(parent); + } + }); + } function disconnectResizeObserver() { diff --git a/source/components/form/button-bar.mjs b/source/components/form/button-bar.mjs index 1ff6671bd..ee78be148 100644 --- a/source/components/form/button-bar.mjs +++ b/source/components/form/button-bar.mjs @@ -567,8 +567,21 @@ function updateResizeObserverObservation() { this[resizeObserverSymbol].observe(node); }); - if (this.parentElement === null) return; - this[resizeObserverSymbol].observe(this.parentElement); + requestAnimationFrame(() => { + + let parent = this.parentNode; + while(!(parent instanceof HTMLElement) && parent !== null) { + parent = parent.parentNode; + } + + if (parent instanceof HTMLElement) { + this[resizeObserverSymbol].observe(parent); + } + + + }); + + } /** diff --git a/source/components/form/popper-button.mjs b/source/components/form/popper-button.mjs index 05a38566a..52d8f8979 100644 --- a/source/components/form/popper-button.mjs +++ b/source/components/form/popper-button.mjs @@ -345,7 +345,20 @@ function attachResizeObserver() { }); }); - this[resizeObserverSymbol].observe(this.parentElement); + requestAnimationFrame(() => { + + let parent = this.parentNode; + while(!(parent instanceof HTMLElement) && parent !== null) { + parent = parent.parentNode; + } + + if (parent instanceof HTMLElement) { + this[resizeObserverSymbol].observe(parent); + } + + + }); + } function disconnectResizeObserver() { diff --git a/source/components/form/select.mjs b/source/components/form/select.mjs index c77c1f539..4473fdac0 100644 --- a/source/components/form/select.mjs +++ b/source/components/form/select.mjs @@ -1097,7 +1097,20 @@ function attachResizeObserver() { }); }); - this[resizeObserverSymbol].observe(this.parentElement); + requestAnimationFrame(() => { + + let parent = this.parentNode; + while(!(parent instanceof HTMLElement) && parent !== null) { + parent = parent.parentNode; + } + + if (parent instanceof HTMLElement) { + this[resizeObserverSymbol].observe(parent); + } + + + }); + } /** diff --git a/source/components/layout/popper.mjs b/source/components/layout/popper.mjs index 657c77adf..e90b41b26 100644 --- a/source/components/layout/popper.mjs +++ b/source/components/layout/popper.mjs @@ -357,7 +357,20 @@ function attachResizeObserver() { }); }); - this[resizeObserverSymbol].observe(this.parentElement); + requestAnimationFrame(() => { + + let parent = this.parentNode; + while(!(parent instanceof HTMLElement) && parent !== null) { + parent = parent.parentNode; + } + + if (parent instanceof HTMLElement) { + this[resizeObserverSymbol].observe(parent); + } + + + }); + } function disconnectResizeObserver() { -- GitLab