40 lines
1 KiB
JavaScript
40 lines
1 KiB
JavaScript
import StringBuffer from 'discourse/mixins/string-buffer';
|
|
import { iconHTML } from 'discourse-common/helpers/fa-icon';
|
|
|
|
export default Ember.Component.extend(StringBuffer, {
|
|
tagName: 'th',
|
|
classNames: ['sortable'],
|
|
attributeBindings: ['title'],
|
|
rerenderTriggers: ['order', 'asc'],
|
|
|
|
title: function() {
|
|
const labelKey = 'directory.' + this.get('field');
|
|
return I18n.t(labelKey + '_long', { defaultValue: I18n.t(labelKey) });
|
|
}.property('field'),
|
|
|
|
renderString(buffer) {
|
|
|
|
const icon = this.get('icon');
|
|
if (icon) {
|
|
buffer.push(iconHTML(icon));
|
|
}
|
|
|
|
const field = this.get('field');
|
|
buffer.push(I18n.t('directory.' + field));
|
|
|
|
if (field === this.get('order')) {
|
|
buffer.push(iconHTML(this.get('asc') ? 'chevron-up' : 'chevron-down'));
|
|
}
|
|
},
|
|
|
|
click() {
|
|
const currentOrder = this.get('order'),
|
|
field = this.get('field');
|
|
|
|
if (currentOrder === field) {
|
|
this.set('asc', this.get('asc') ? null : true);
|
|
} else {
|
|
this.setProperties({ order: field, asc: null });
|
|
}
|
|
}
|
|
});
|