discourse/app/assets/javascripts/discourse/widgets/component_connector.js.es6
Joffrey JAFFEUX ccf5005feb FEATURE: uses select-box for topic-notifications-button component
- Introduces ComponentConnector to use a component inside a widget
- Use css to set size of components instead of properties
- Smarted positionning
- Style tweaks
2017-09-06 16:58:00 +02:00

36 lines
832 B
JavaScript

export default class ComponentConnector {
constructor(widget, componentName, opts) {
this.widget = widget;
this.opts = opts;
this.componentName = componentName;
}
init() {
const $elem = $('<div style="display: inline-block;" class="widget-component-connector"></div>');
const elem = $elem[0];
const { opts, widget, componentName } = this;
Ember.run.next(() => {
const mounted = widget._findView();
const view = widget
.register
.lookupFactory(`component:${componentName}`)
.create(opts);
if (Ember.setOwner) {
Ember.setOwner(view, Ember.getOwner(mounted));
}
mounted._connected.push(view);
view.renderer.appendTo(view, $elem[0]);
});
return elem;
}
update() { }
}
ComponentConnector.prototype.type = 'Widget';