discourse/app/assets/javascripts/select-kit/components/single-select.js.es6
Joffrey JAFFEUX 0431942f3d
DEV: select-kit 2 (#7998)
This new iteration of select-kit focuses on following best principales and disallowing mutations inside select-kit components. A best effort has been made to avoid breaking changes, however if you content was a flat array, eg: ["foo", "bar"] You will need to set valueProperty=null and nameProperty=null on the component.

Also almost every component should have an `onChange` handler now to decide what to do with the updated data. **select-kit will not mutate your data by itself anymore**
2020-02-03 14:22:14 +01:00

37 lines
1.0 KiB
JavaScript

import SelectKitComponent from "select-kit/components/select-kit";
import { computed } from "@ember/object";
import { isEmpty } from "@ember/utils";
export default SelectKitComponent.extend({
pluginApiIdentifiers: ["single-select"],
layoutName: "select-kit/templates/components/single-select",
classNames: ["single-select"],
singleSelect: true,
selectKitOptions: {
headerComponent: "select-kit/single-select-header"
},
selectedContent: computed("value", "content.[]", function() {
if (!isEmpty(this.value)) {
let content;
if (this.selectKit.valueProperty) {
content = (this.content || []).findBy(
this.selectKit.valueProperty,
this.value
);
return this.selectKit.modifySelection(
content || this.defaultItem(this.value, this.value)
);
} else {
return this.selectKit.modifySelection(
(this.content || []).filter(c => c === this.value)
);
}
} else {
return this.selectKit.noneItem;
}
})
});