headless_cms-1.0.3/modules/headless_cms_preview/js/save-preview-persistence.js

modules/headless_cms_preview/js/save-preview-persistence.js
(function (Drupal) {
  Drupal.behaviors.previewScrollPosition = {
    attach(context) {
      const key = location.pathname;
      const scrollKey = `preview-persistence:scroll:${key}`;

      // Restore scroll position if it exists
      const savedScrollPosition = sessionStorage.getItem(scrollKey);
      if (savedScrollPosition !== null) {
        window.scrollTo(0, parseInt(savedScrollPosition, 10));
        // Clear the stored position after restoring
        sessionStorage.removeItem(scrollKey);
      }

      once("handleSavePreviewScrollPosition", "#edit-save-preview", context).forEach(
        /**
         * @param {HTMLInputElement} element
         */
        (element) => {
          element.addEventListener("click", () => {
            // Save current scroll position
            const scrollPosition = window.scrollY;
            sessionStorage.setItem(scrollKey, scrollPosition.toString());
          });
        }
      )
    }
  };

  Drupal.behaviors.previewTabs = {
    attach(context) {
      const key = location.pathname;
      const tabKey = `preview-persistence:tabs:${key}`;

      once("handleSavePreviewTabs", "#edit-save-preview", context).forEach(
        /**
         * @param {HTMLInputElement} element
         */
        (element) => {
          // Save tabs on preview save.
          element.addEventListener("click", (e) => {
            const activeTabLinks = document.querySelectorAll(".horizontal-tabs-list > .selected > a");
            const ids = Array.from(activeTabLinks).map((link) => {
              return link.getAttribute("href");
            });

            sessionStorage.setItem(tabKey, JSON.stringify(ids));
          });
        }
      )

      once("restoreTabBarOnSubform", ".paragraphs-subform", context).forEach(
        /**
         * @param {HTMLElement} element
         */
        (element) => {
          // Restore tabs if they exist.
          const savedTabs = sessionStorage.getItem(tabKey);
          if (savedTabs !== null) {
            const ids = JSON.parse(savedTabs);
            ids.forEach((id) => {
              const tab = document.querySelector(`a[href="${id}"]`);
              if (tab) {
                tab.click();
              }
            });

            // Clear the stored tabs after restoring.
            sessionStorage.removeItem(tabKey);
          }
        }
      );
    }
  }
})(Drupal);

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

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