dsfr4drupal-1.x-dev/js/messages.js

js/messages.js
/**
 * @file
 * Overriding core's message functions to add DSFR style.
 */

((Drupal) => {
  /**
   * Overrides message theme function.
   *
   * @param {object} message
   *   The message object.
   * @param {string} message.text
   *   The message text.
   * @param {object} options
   *   The message context.
   * @param {string} options.type
   *   The message type.
   * @param {string} options.id
   *   ID of the message, for reference.
   *
   * @return {HTMLElement}
   *   A DOM Node.
   */
  Drupal.theme.message = ({ text }, { type, id }) => {
    const messageWrapper = document.createElement("div");

    messageWrapper.setAttribute(
      "class",
      `fr-alert fr-alert--${type === "status" ? "success" : type}`,
    );
    messageWrapper.setAttribute(
      "role",
      type === "error" || type === "warning" ? "alert" : "status",
    );
    messageWrapper.setAttribute("aria-labelledby", `${id}-title`);
    messageWrapper.setAttribute("data-drupal-message-id", id);
    messageWrapper.setAttribute("data-drupal-message-type", type);

    messageWrapper.innerHTML = `
      ${text}
      <button class="fr-btn--close fr-btn" title="${Drupal.t("Hide message")}">
        ${Drupal.t("Hide message")}
      </button>
  `;

    messageWrapper.querySelector(".fr-btn--close").addEventListener("click", () => {
      messageWrapper.remove();
    });

    return messageWrapper;
  };
})(Drupal);

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc