29 lines
819 B
JavaScript
29 lines
819 B
JavaScript
import Component from '@ember/component';
|
|
import { get, set } from '@ember/object';
|
|
import { inject as service } from '@ember/service';
|
|
import Slotted from 'block-slots';
|
|
|
|
export default Component.extend(Slotted, {
|
|
tagName: '',
|
|
dom: service('dom'),
|
|
init: function() {
|
|
this._super(...arguments);
|
|
this._listeners = this.dom.listeners();
|
|
},
|
|
willDestroyElement: function() {
|
|
this._listeners.remove();
|
|
this._super(...arguments);
|
|
},
|
|
didReceiveAttrs: function() {
|
|
this._super(...arguments);
|
|
if (this.items !== this.dispatcher.data) {
|
|
this._listeners.remove();
|
|
this._listeners.add(this.dispatcher, {
|
|
change: e => set(this, 'items', e.target.data),
|
|
});
|
|
set(this, 'items', get(this.dispatcher, 'data'));
|
|
}
|
|
this.dispatcher.search(this.terms);
|
|
},
|
|
});
|