discourse-adplugin/admin/assets/javascripts/discourse/components/house-ads-chooser.js

42 lines
1.1 KiB
JavaScript
Raw Permalink Normal View History

2020-02-07 04:34:58 -05:00
import { computed } from "@ember/object";
2024-01-15 06:24:24 -05:00
import { makeArray } from "discourse-common/lib/helpers";
import MultiSelectComponent from "select-kit/components/multi-select";
export default MultiSelectComponent.extend({
2020-02-07 04:34:58 -05:00
classNames: ["house-ads-chooser"],
filterable: true,
filterPlaceholder: "admin.adplugin.house_ads.filter_placeholder",
tokenSeparator: "|",
allowCreate: false,
allowAny: false,
settingValue: "",
2020-02-07 04:34:58 -05:00
valueAttribute: null,
nameProperty: null,
2020-09-04 07:24:14 -04:00
value: computed("settingValue", function () {
2020-02-07 04:34:58 -05:00
return this.settingValue
.toString()
.split(this.tokenSeparator)
.filter(Boolean);
}),
2020-02-07 04:34:58 -05:00
// TODO: kept for legacy, remove when Discourse is 2.5
mutateValues(values) {
2020-02-07 04:34:58 -05:00
this.set("settingValue", values.join(this.tokenSeparator));
},
computeValues() {
2020-02-07 04:34:58 -05:00
return this.settingValue.split(this.tokenSeparator).filter(Boolean);
},
2020-09-04 07:24:14 -04:00
content: computed("choices", function () {
2020-02-07 04:34:58 -05:00
return makeArray(this.choices);
}),
actions: {
onChange(value) {
const settingValue = makeArray(value).join(this.tokenSeparator);
2024-01-15 06:24:24 -05:00
this.onChange?.(settingValue);
2020-09-04 07:24:14 -04:00
},
},
});