FIX: wraps popper call in afterRender and uses createPopper (#10621)

Before this fix, popper was sometimes not applied.
This commit is contained in:
Joffrey JAFFEUX
2020-09-07 13:33:52 +02:00
committed by GitHub
parent 27751ca69f
commit 0b8e7d88fe

View File

@@ -1,6 +1,8 @@
import I18n from "I18n"; import I18n from "I18n";
import { createWidget } from "discourse/widgets/widget"; import { createWidget } from "discourse/widgets/widget";
import hbs from "discourse/widgets/hbs-compiler"; import hbs from "discourse/widgets/hbs-compiler";
import { schedule } from "@ember/runloop";
import { createPopper } from "@popperjs/core";
/* /*
@@ -244,33 +246,34 @@ export const WidgetDropdownClass = {
didRenderWidget() { didRenderWidget() {
if (this.state.opened) { if (this.state.opened) {
const dropdownHeader = document.querySelector( schedule("afterRender", () => {
`#${this.attrs.id} .widget-dropdown-header` const dropdownHeader = document.querySelector(
); `#${this.attrs.id} .widget-dropdown-header`
);
if (!dropdownHeader) return; if (!dropdownHeader) return;
const dropdownBody = document.querySelector( const dropdownBody = document.querySelector(
`#${this.attrs.id} .widget-dropdown-body` `#${this.attrs.id} .widget-dropdown-body`
); );
if (!dropdownBody) return; if (!dropdownBody) return;
/* global Popper:true */ this._popper = createPopper(dropdownHeader, dropdownBody, {
this._popper = Popper.createPopper(dropdownHeader, dropdownBody, { strategy: "fixed",
strategy: "fixed", placement: "bottom-start",
placement: "bottom-start", modifiers: [
modifiers: [ {
{ name: "preventOverflow",
name: "preventOverflow",
},
{
name: "offset",
options: {
offset: [0, 5],
}, },
}, {
], name: "offset",
options: {
offset: [0, 5],
},
},
],
});
}); });
} }
}, },