This repository has been archived on 2023-03-18. You can view files and clone it, but cannot push or open issues or pull requests.
osr-discourse-src/app/assets/javascripts/discourse/components/d-link.js.es6

70 lines
1.5 KiB
JavaScript

import computed from 'ember-addons/ember-computed-decorators';
import { iconHTML } from 'discourse/helpers/fa-icon';
import interceptClick from 'discourse/lib/intercept-click';
export default Ember.Component.extend({
tagName: 'a',
classNames: ['d-link'],
attributeBindings: ['translatedTitle:title', 'translatedTitle:aria-title', 'href'],
@computed('path')
href(path) {
if (path) { return path; }
const route = this.get('route');
if (route) {
const router = this.container.lookup('router:main');
if (router && router.router) {
const params = [route];
const model = this.get('model');
if (model) {
params.push(model);
}
return Discourse.getURL(router.router.generate.apply(router.router, params));
}
}
return '';
},
@computed("title")
translatedTitle(title) {
if (title) return I18n.t(title);
},
click(e) {
const action = this.get('action');
if (action) {
this.sendAction('action');
return false;
}
return interceptClick(e);
},
render(buffer) {
if (!!this.get('template')) {
return this._super(buffer);
}
const icon = this.get('icon');
if (icon) {
buffer.push(iconHTML(icon));
}
const label = this.get('label');
if (label) {
if (icon) { buffer.push(" "); }
if (this.get('translateLabel') === "false") {
buffer.push(label);
} else {
const count = this.get('count');
buffer.push(I18n.t(label, { count }));
}
}
}
});