import icon from "src/decidim/icon" /** * Appends an icon to distinguish those links pointing out of decidim. * It will apply to all a[target="_blank"] found in the document * * This behaviour can be omitted adding data-external-link="false" attribute to the anchor tag * e.g. ... */ export default class ExternalLink { static configureMessages(messages) { this.MESSAGES = { ...this.MESSAGES, ...messages }; } constructor(node) { this.MESSAGES = { externalLink: "External link" }; if (node.closest(".editor-container")) { return; } if (!node.querySelector("span[data-external-link]")) { this.setup(node); } } setup(node) { const span = document.createElement("span"); span.dataset.externalLink = true; span.innerHTML = `${this.generateIcon()}${this.generateScreenReaderLabel()}` span.classList.add("inline-block", "mx-0.5"); return node.appendChild(span); } generateIcon() { return icon("external-link-line", { class: "fill-current" }); } generateScreenReaderLabel() { return `(${this.MESSAGES.externalLink})`; } }