import { on, observes, default as computed } from 'ember-addons/ember-computed-decorators'; import { findRawTemplate } from 'discourse/lib/raw-templates'; export default Ember.Component.extend({ @computed('placeholderKey') placeholder(placeholderKey) { return placeholderKey ? I18n.t(placeholderKey) : ''; }, @observes('badgeNames') _update() { if (this.get('canReceiveUpdates') === 'true') this._initializeAutocomplete({updateData: true}); }, @on('didInsertElement') _initializeAutocomplete(opts) { var self = this; var selectedBadges; self.$('input').autocomplete({ allowAny: false, items: _.isArray(this.get('badgeNames')) ? this.get('badgeNames') : [this.get('badgeNames')], single: this.get('single'), updateData: (opts && opts.updateData) ? opts.updateData : false, onChangeItems: function(items){ selectedBadges = items; self.set("badgeNames", items.join(",")); }, transformComplete: function(g) { return g.name; }, dataSource: function(term) { return self.get("badgeFinder")(term).then(function(badges){ if(!selectedBadges){ return badges; } return badges.filter(function(badge){ return !selectedBadges.any(function(s){return s === badge.name;}); }); }); }, template: findRawTemplate('badge-selector-autocomplete') }); } });