48 lines
1.2 KiB
JavaScript
48 lines
1.2 KiB
JavaScript
import computed from 'ember-addons/ember-computed-decorators';
|
|
import { iconHTML } from "discourse-common/lib/icon-library";
|
|
|
|
export default Ember.Component.extend({
|
|
layoutName: "components/select-box/select-box-row",
|
|
|
|
classNames: "select-box-row",
|
|
|
|
tagName: "li",
|
|
|
|
attributeBindings: ["title", "id:data-id"],
|
|
|
|
classNameBindings: ["isHighlighted:is-highlighted", "isSelected:is-selected"],
|
|
|
|
@computed("titleForRow")
|
|
title(titleForRow) { return titleForRow(this); },
|
|
|
|
@computed("idForRow")
|
|
id(idForRow) { return idForRow(this); },
|
|
|
|
@computed("templateForRow")
|
|
template(templateForRow) { return templateForRow(this); },
|
|
|
|
@computed("shouldHighlightRow", "highlightedValue")
|
|
isHighlighted(shouldHighlightRow) { return shouldHighlightRow(this); },
|
|
|
|
@computed("shouldSelectRow", "value")
|
|
isSelected(shouldSelectRow) { return shouldSelectRow(this); },
|
|
|
|
icon() {
|
|
if (this.get("content.icon")) {
|
|
const iconName = this.get("content.icon");
|
|
const iconClass = this.get("content.iconClass");
|
|
return iconHTML(iconName, { class: iconClass });
|
|
}
|
|
|
|
return null;
|
|
},
|
|
|
|
mouseEnter() {
|
|
this.sendAction("onHover", this.get("content"));
|
|
},
|
|
|
|
click() {
|
|
this.sendAction("onSelect", this.get("content"));
|
|
}
|
|
});
|