import { createWidget } from 'discourse/widgets/widget'; import { iconNode } from 'discourse/helpers/fa-icon-node'; export default createWidget('button', { tagName: 'button.widget-button', buildClasses(attrs) { const className = this.attrs.className || ''; if (!attrs.label && !attrs.contents) { return className + ' no-text'; } return className; }, buildAttributes() { const attrs = this.attrs; let title; if (attrs.title) { title = I18n.t(attrs.title, attrs.titleOptions); } else if (attrs.label) { title = I18n.t(attrs.label, attrs.labelOptions); } const attributes = { "aria-label": title, title }; if (attrs.disabled) { attributes.disabled = "true"; } if (attrs.data) { Object.keys(attrs.data).forEach(k => attributes[`data-${k}`] = attrs.data[k]); } return attributes; }, html(attrs) { const contents = []; const left = !attrs.iconRight; if (attrs.icon && left) { contents.push(iconNode(attrs.icon, { class: attrs.iconClass })); } if (attrs.label) { contents.push(I18n.t(attrs.label, attrs.labelOptions)); } if (attrs.contents) { contents.push(attrs.contents); } if (attrs.icon && !left) { contents.push(iconNode(attrs.icon, { class: attrs.iconClass })); } return contents; }, click(e) { const attrs = this.attrs; if (attrs.disabled) { return; } $(`button.widget-button`).removeClass('d-hover').blur(); if (attrs.secondaryAction) { this.sendWidgetAction(attrs.secondaryAction); } if (attrs.sendActionEvent) { return this.sendWidgetAction(attrs.action, e); } return this.sendWidgetAction(attrs.action); } });