From 6f52bbefb80505aa500bc0104d66ceac5b12460e Mon Sep 17 00:00:00 2001 From: Osama Sayegh Date: Wed, 5 Feb 2020 21:21:00 +0300 Subject: [PATCH] DEV: Use scheduleOnce correctly (#8865) * DEV: Use scheduleOnce correctly * remove jquery usage here --- .../widgets/component-connector.js.es6 | 54 +++++++++---------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/app/assets/javascripts/discourse/widgets/component-connector.js.es6 b/app/assets/javascripts/discourse/widgets/component-connector.js.es6 index f039d16100d..4f854b38ba5 100644 --- a/app/assets/javascripts/discourse/widgets/component-connector.js.es6 +++ b/app/assets/javascripts/discourse/widgets/component-connector.js.es6 @@ -10,34 +10,13 @@ export default class ComponentConnector { } init() { - const $elem = $( - '
' - ); - const elem = $elem[0]; - const { opts, widget, componentName } = this; + const elem = document.createElement("div"); + elem.style.display = "inline-flex"; + elem.className = "widget-component-connector"; + this.elem = elem; + scheduleOnce("afterRender", this, this.connectComponent); - scheduleOnce("afterRender", this, () => { - const mounted = widget._findView(); - - const view = widget.register - .lookupFactory(`component:${componentName}`) - .create(opts); - - if (setOwner) { - setOwner(view, getOwner(mounted)); - } - - // component connector is not triggering didReceiveAttrs - // we force it for selectKit components - if (view.selectKit) { - view.didReceiveAttrs(); - } - - mounted._connected.push(view); - view.renderer.appendTo(view, $elem[0]); - }); - - return elem; + return this.elem; } update(prev) { @@ -56,6 +35,27 @@ export default class ComponentConnector { return null; } + + connectComponent() { + const { elem, opts, widget, componentName } = this; + + const mounted = widget._findView(); + const view = widget.register + .lookupFactory(`component:${componentName}`) + .create(opts); + + if (setOwner) { + setOwner(view, getOwner(mounted)); + } + + // component connector is not triggering didReceiveAttrs + // we force it for selectKit components + if (view.selectKit) { + view.didReceiveAttrs(); + } + mounted._connected.push(view); + view.renderer.appendTo(view, elem); + } } ComponentConnector.prototype.type = "Widget";