diff --git a/addon/components/ember-popper-base.js b/addon/components/ember-popper-base.js
index dd8da72..4563a67 100644
--- a/addon/components/ember-popper-base.js
+++ b/addon/components/ember-popper-base.js
@@ -126,6 +126,21 @@ export default Component.extend({
*/
_popper: null,
+ /**
+ * Tracks popper element
+ */
+ _popperElement: computed({
+ get() {
+ return null;
+ },
+ set(key, el) {
+ if (el) {
+ this._updatePopper(el);
+ }
+ return el;
+ }
+ }),
+
/**
* Tracks current/previous value of popper target
*/
@@ -201,8 +216,8 @@ export default Component.extend({
// ================== PRIVATE IMPLEMENTATION DETAILS ==================
- _updatePopper() {
- if (this.isDestroying || this.isDestroyed) {
+ _updatePopper(popperElement = this._getPopperElement()) {
+ if (this.isDestroying || this.isDestroyed || !popperElement) {
return;
}
@@ -228,8 +243,6 @@ export default Component.extend({
this._popper.destroy();
}
- const popperElement = this._getPopperElement();
-
// Store current values to check against on updates
this._didRenderInPlace = renderInPlace;
this._eventsEnabled = eventsEnabled;
@@ -269,7 +282,7 @@ export default Component.extend({
* Used to get the popper element
*/
_getPopperElement() {
- return self.document.getElementById(this.id);
+ return this.get('_popperElement');
},
_getPopperTarget() {
diff --git a/addon/templates/components/ember-popper-targeting-parent.hbs b/addon/templates/components/ember-popper-targeting-parent.hbs
index dba7faa..39607fc 100644
--- a/addon/templates/components/ember-popper-targeting-parent.hbs
+++ b/addon/templates/components/ember-popper-targeting-parent.hbs
@@ -1,13 +1,13 @@
-{{unbound _parentFinder}}
+{{unbound this._parentFinder}}
{{!-- Elements that exist deep within the document tree are given an implicitly lower z-index
value than elements that aren't as deep in the tree; this has the effect of hiding our
ember-popper behind less-nested elements. Due to the way z-indexing works, we cannot simply
add a higher z-index value to our ember-popper. To avoid this issue, we render the element
on the document body, giving it the highest default z-index value. --}}
-{{#maybe-in-element _popperContainer renderInPlace}}
+{{#maybe-in-element this._popperContainer this.renderInPlace}}
{{!-- Add a wrapper around the yielded block so we have something for the Popper to target --}}
-
+
{{yield (hash
disableEventListeners=(action 'disableEventListeners')
enableEventListeners=(action 'enableEventListeners')
diff --git a/addon/templates/components/ember-popper.hbs b/addon/templates/components/ember-popper.hbs
index 5b60e56..4e1bf3c 100644
--- a/addon/templates/components/ember-popper.hbs
+++ b/addon/templates/components/ember-popper.hbs
@@ -3,9 +3,9 @@
ember-popper behind less-nested elements. Due to the way z-indexing works, we cannot simply
add a higher z-index value to our ember-popper. To avoid this issue, we render the element
on the document body, giving it the highest default z-index value. --}}
-{{#maybe-in-element _popperContainer renderInPlace}}
+{{#maybe-in-element this._popperContainer this.renderInPlace}}
{{!-- Add a wrapper around the yielded block so we have something for the Popper to target --}}
-
+
{{yield (hash
disableEventListeners=(action 'disableEventListeners')
enableEventListeners=(action 'enableEventListeners')
diff --git a/package.json b/package.json
index 7940426..4af412c 100644
--- a/package.json
+++ b/package.json
@@ -55,6 +55,7 @@
"ember-maybe-import-regenerator": "^0.1.6",
"ember-native-dom-helpers": "^0.6.2",
"ember-qunit": "^3.4.1",
+ "ember-ref-modifier": "^0.1.2",
"ember-resolver": "^5.0.1",
"ember-source": "~3.9.0",
"ember-source-channel-url": "^1.1.0",
diff --git a/yarn.lock b/yarn.lock
index c66683b..5662ea9 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -3839,7 +3839,7 @@ ember-cli@~3.9.0:
watch-detector "^0.1.0"
yam "^1.0.0"
-ember-compatibility-helpers@^1.0.2:
+ember-compatibility-helpers@^1.0.2, ember-compatibility-helpers@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/ember-compatibility-helpers/-/ember-compatibility-helpers-1.2.0.tgz#feee16c5e9ef1b1f1e53903b241740ad4b01097e"
integrity sha512-pUW4MzJdcaQtwGsErYmitFRs0rlCYBAnunVzlFFUBr4xhjlCjgHJo0b53gFnhTgenNM3d3/NqLarzRhDTjXRTg==
@@ -3894,6 +3894,15 @@ ember-maybe-in-element@^0.1.3:
dependencies:
ember-cli-babel "^6.11.0"
+ember-modifier-manager-polyfill@^1.0.1:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/ember-modifier-manager-polyfill/-/ember-modifier-manager-polyfill-1.0.3.tgz#6554b70d09a7d3b80d366b72ed482fb9a3e813c0"
+ integrity sha512-d8Uz0BhAZaqzttF4NXTwJ/A8uPrgd7fMho5jh89BfzJAHu5WZfGewX9cbjh3m6f512ZyxkIeeolw3Z5/Jyaujg==
+ dependencies:
+ ember-cli-babel "^7.4.2"
+ ember-cli-version-checker "^2.1.2"
+ ember-compatibility-helpers "^1.2.0"
+
ember-native-dom-helpers@^0.6.2:
version "0.6.2"
resolved "https://registry.yarnpkg.com/ember-native-dom-helpers/-/ember-native-dom-helpers-0.6.2.tgz#ad1f82d64ac9abdd612022f4f390bdb6653b3d39"
@@ -3922,6 +3931,14 @@ ember-raf-scheduler@^0.1.0:
dependencies:
ember-cli-babel "^6.6.0"
+ember-ref-modifier@^0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/ember-ref-modifier/-/ember-ref-modifier-0.1.2.tgz#96a62ebb30ba9dcf29832e1deb6f500c3d963044"
+ integrity sha512-5zJiQWfnz7XsjsLc3Kp9tXJ7wa+TboJ/EXQ4xesZFqoZjcPvMz++RF5Qc1n9Ki3l4Nzfmb7I61KEvqrgrT9k0Q==
+ dependencies:
+ ember-cli-babel "^7.1.2"
+ ember-modifier-manager-polyfill "^1.0.1"
+
ember-resolver@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/ember-resolver/-/ember-resolver-5.0.1.tgz#21740b92e1e4a65f94018de22aa1c73434dc3b2f"