diff --git a/source/components/content/copy.mjs b/source/components/content/copy.mjs
index 6ee6bc6327ee09ae1e7cb5d99129d7641b07181e..0f522cf64352f2234daaaab08247b4f573ed6f5e 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 31142149420540555bc5776d4c12d53c405f05d8..d18921d456b7a1df5db5429467f7437e5d1649ec 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 1ff6671bd0e44fdaaa360a54573d38af20df8548..ee78be148027a3d3fd1032321bd4499387e06039 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 05a38566a9a73518c875acd134e3bc7683918d3d..52d8f8979d7b1bdd773d618bf2f7032655fb7bba 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 c77c1f5393f8250c7ad174f413705fc16b29fedd..4473fdac0ede813fd7f7944e882de35e89e8909d 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 657c77adf3bd56900e7c7071d8e24c93d6fe4652..e90b41b26b4ea6586227d883a4e34c327a3a2749 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() {