Sha256: b3377381b5470b9c900fd4d995a78a718fd268bd954f22a5c35b3a33a1ddbc24

Contents?: true

Size: 1.43 KB

Versions: 18

Compression:

Stored size: 1.43 KB

Contents

const DEFAULT_ATTRIBUTES = {
  role: "img",
  "aria-hidden": "true"
};

/**
 * Generates a Decidim icon element and returns it as a string.
 * @param {String} iconKey - the key of the icon to be generated
 * @param {Object} attributes - extra attributes to define for the icon SVG
 * @param {int} wait - number of milliseconds to wait before executing the function.
 * @private
 * @returns {Void} - Returns nothing.
 */
export default function icon(iconKey, attributes = {}) {
  const iconAttributes = { ...DEFAULT_ATTRIBUTES, ...attributes };
  const htmlAttributes = { width: "0.75em", height: "0.75em" };

  Object.keys(iconAttributes).forEach((key) => {
    // Convert the key to dash-format.
    const newKey = key.replace(/([A-Z])/g, (ucw) => `-${ucw[0].toLowerCase()}`);
    if (typeof htmlAttributes[key] === "undefined") {
      htmlAttributes[newKey] = iconAttributes[key];
    } else {
      htmlAttributes[newKey] = `${htmlAttributes[newKey]} ${iconAttributes[key]}`;
    }
  });

  const svg = document.createElement("svg")
  const use = document.createElement("use")
  const title = document.createElement("title")

  title.innerHTML = iconAttributes.title || iconAttributes.ariaLabel || iconKey
  use.setAttribute("href", `${window.Decidim.config.get("icons_path")}#ri-${iconKey}`)
  Object.entries(htmlAttributes).forEach(([key, value]) => svg.setAttribute(key, value))

  svg.appendChild(title)
  svg.appendChild(use)

  return svg.outerHTML;
}

Version data entries

18 entries across 18 versions & 1 rubygems

Version Path
decidim-core-0.30.0.rc3 app/packs/src/decidim/icon.js
decidim-core-0.30.0.rc2 app/packs/src/decidim/icon.js
decidim-core-0.30.0.rc1 app/packs/src/decidim/icon.js
decidim-core-0.29.2 app/packs/src/decidim/icon.js
decidim-core-0.28.5 app/packs/src/decidim/icon.js
decidim-core-0.29.1 app/packs/src/decidim/icon.js
decidim-core-0.28.4 app/packs/src/decidim/icon.js
decidim-core-0.29.0 app/packs/src/decidim/icon.js
decidim-core-0.28.3 app/packs/src/decidim/icon.js
decidim-core-0.29.0.rc4 app/packs/src/decidim/icon.js
decidim-core-0.29.0.rc3 app/packs/src/decidim/icon.js
decidim-core-0.29.0.rc2 app/packs/src/decidim/icon.js
decidim-core-0.29.0.rc1 app/packs/src/decidim/icon.js
decidim-core-0.28.2 app/packs/src/decidim/icon.js
decidim-core-0.28.1 app/packs/src/decidim/icon.js
decidim-core-0.28.0 app/packs/src/decidim/icon.js
decidim-core-0.28.0.rc5 app/packs/src/decidim/icon.js
decidim-core-0.28.0.rc4 app/packs/src/decidim/icon.js