mirror of
https://github.com/discourse/discourse.git
synced 2025-02-09 19:35:30 +08:00
58 lines
1.5 KiB
JavaScript
58 lines
1.5 KiB
JavaScript
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")
|
|
});
|
|
}
|
|
});
|