Sha256: 23c84a4d5846ca809b5ebb987290313101f86b1facefc1f47d2a2516b2d551a8

Contents?: true

Size: 1.5 KB

Versions: 8

Compression:

Stored size: 1.5 KB

Contents

import icon from "src/decidim/icon"

const EXCLUDE_CLASSES = [
  "card--list__data__icon",
  "footer-social__icon",
  "logo-cityhall"
];
const EXCLUDE_ANCESTOR_CLASSES = [
  "editor-container"
]
const EXCLUDE_REL = ["license", "decidim"];

const DEFAULT_MESSAGES = {
  externalLink: "External link"
};
let MESSAGES = DEFAULT_MESSAGES;

export default class ExternalLink {
  static configureMessages(messages) {
    MESSAGES = $.extend(DEFAULT_MESSAGES, messages);
  }

  constructor(link) {
    this.$link = link;

    this.setup();
  }

  setup() {
    if (EXCLUDE_CLASSES.some((cls) => this.$link.hasClass(cls))) {
      return;
    }
    if (EXCLUDE_ANCESTOR_CLASSES.some((cls) => this.$link.parents().hasClass(cls))) {
      return;
    }
    if (
      EXCLUDE_REL.some((rel) => {
        const linkRels = `${this.$link.attr("rel")}`.split(" ");
        return linkRels.indexOf(rel) > -1;
      })
    ) {
      return;
    }

    this.$link.addClass("external-link-container");
    let spacer = " ";
    if (this.$link.text().trim().length < 1) {
      // Fixes image links extra space
      spacer = "";
    }
    this.$link.append(`${spacer}${this.generateElement()}`);
  }

  generateElement() {
    let content = `${this.generateIcon()}${this.generateScreenReaderLabel()}`;

    return `<span class="external-link-indicator">${content}</span>`;
  }

  generateIcon() {
    return icon("external-link");
  }

  generateScreenReaderLabel() {
    return `<span class="show-for-sr">(${MESSAGES.externalLink})</span>`;
  }
}

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
decidim-core-0.26.10 app/packs/src/decidim/external_link.js
decidim-core-0.26.9 app/packs/src/decidim/external_link.js
decidim-core-0.26.8 app/packs/src/decidim/external_link.js
decidim-core-0.26.7 app/packs/src/decidim/external_link.js
decidim-core-0.26.5 app/packs/src/decidim/external_link.js
decidim-core-0.26.4 app/packs/src/decidim/external_link.js
decidim-core-0.26.3 app/packs/src/decidim/external_link.js
decidim-core-0.26.2 app/packs/src/decidim/external_link.js