ui_icons-1.0.x-dev/js/icon.preview.js

js/icon.preview.js
/**
 * @file
 * JavaScript behavior for UI Icons preview in Drupal.
 */
/* eslint-disable no-restricted-syntax, func-names, no-continue */
((Drupal, drupalSettings, once) => {
  /**
   * @namespace
   */
  Drupal.Icon = {};

  Drupal.Icon.loadIconPreview = async function (data) {
    try {
      const iconData = await fetch(Drupal.url('ui-icons/ajax/preview/icons'), {
        method: 'POST',
        body: JSON.stringify(data),
      });
      if (!iconData.ok) {
        // eslint-disable-next-line no-console
        console.error('Cannot retrieve icon data!');
        return;
      }
      const iconsPreview = await iconData.json();
      for (const [iconFullId, iconPreview] of Object.entries(iconsPreview)) {
        // Standard mode, direct replacement.
        if (!data.target_input_label) {
          const iconTarget = document.querySelector(
            `.icon-preview-load[data-icon-id='${iconFullId}']`,
          );
          iconTarget.outerHTML = iconPreview;
          continue;
        }

        // Form with input mode, for icon picker.
        const iconTarget = document.querySelector(
          `.icon-preview-load[value='${iconFullId}']`,
        );
        if (!iconTarget) {
          continue;
        }
        const iconLabel = document.querySelector(
          `label[for='${iconTarget.id}']`,
        );
        iconLabel.innerHTML = iconPreview;
      }
    } catch (err) {
      // eslint-disable-next-line no-console
      console.error(`Something went wrong! ${err.message}`);
    }
  };

  /**
   * UI Icons preview loader.
   *
   * @type {Drupal~behavior}
   */
  Drupal.behaviors.IconPreview = {
    attach(context, settings) {
      once('loadIconPreview', 'body', context).forEach(() => {
        if (!settings.ui_icons_preview_data) {
          return;
        }
        Drupal.Icon.loadIconPreview(settings.ui_icons_preview_data);
      });
    },
  };
})(Drupal, drupalSettings, once);

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

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