Jump to content

MediaWiki:Common.js: Difference between revisions

From Consumer_Action_Taskforce
mNo edit summary
No edit summary
Line 5: Line 5:
/*var elementToInvert = document.querySelector(".infobox-image > span");*/
/*var elementToInvert = document.querySelector(".infobox-image > span");*/
/*elementToInvert.classList.add("mw-no-invert");*/
/*elementToInvert.classList.add("mw-no-invert");*/
/* Create Page */
const createPageTargetIdDataSetString = "[data-create-page-target-id]";
if (document.querySelector(createPageTargetIdDataSetString)) {
  /**
  * @type {HTMLElement[]}
  */
  let itemsCreateInputPageGrid = [];
  let itemsCreatePageGrid = [];
  const createPageTargetId = "createPageTargetId";
  const createPageInputHiddenClass = "hidden";
  const createPageInputActiveClass = "pageInputActive";
  /**
  * @param {HTMLElement} element
  */
  function getGridTarget(element) {
    const targetId = element.dataset[createPageTargetId];
    return document.getElementById(targetId);
  }
  /**
  * @this {HTMLDivElement}
  */
  function toggleGridTarget(element, targetElement) {
    for (let index = 0; index < itemsCreateInputPageGrid.length; index += 1) {
      const target = itemsCreateInputPageGrid[index];
      target.classList.add(createPageInputHiddenClass);
      if (target === targetElement) {
        target.classList.remove(createPageInputHiddenClass);
      }
      const clickedElement = itemsCreatePageGrid[index];
     
      clickedElement.classList.remove(createPageInputActiveClass);
      if (clickedElement === element) {
        clickedElement.classList.add(createPageInputActiveClass);
      }
    }
  }
  /**
  * @param {HTMLElement} element
  * @param {HTMLElement} targetElement
  */
  function addToggleGridTargetEvent(element, targetElement) {
    itemsCreatePageGrid.push(element);
    itemsCreateInputPageGrid.push(targetElement);
    element.addEventListener("click", () =>
      toggleGridTarget(element, targetElement)
    );
  }
  const createPageTargetElements = document.querySelectorAll(
    createPageTargetIdDataSetString
  );
  for (let index = 0; index < createPageTargetElements.length; index += 1) {
    const element = createPageTargetElements[index];
    const targetElement = getGridTarget(element);
    if (targetElement) {
      addToggleGridTargetEvent(element, targetElement);
    }
  }
}
/* Create Page */


/* testing */
/* testing */

Revision as of 01:05, 2 February 2025

/* Any JavaScript here will be loaded for all users on every page load. */

/* Hacky solution to invert images with transparent backgrounds in dark mode */

/*var elementToInvert = document.querySelector(".infobox-image > span");*/
/*elementToInvert.classList.add("mw-no-invert");*/

/* Create Page */
const createPageTargetIdDataSetString = "[data-create-page-target-id]";

if (document.querySelector(createPageTargetIdDataSetString)) {
  /**
   * @type {HTMLElement[]}
   */
  let itemsCreateInputPageGrid = [];
  let itemsCreatePageGrid = [];
  const createPageTargetId = "createPageTargetId";
  const createPageInputHiddenClass = "hidden";
  const createPageInputActiveClass = "pageInputActive";

  /**
   * @param {HTMLElement} element
   */
  function getGridTarget(element) {
    const targetId = element.dataset[createPageTargetId];

    return document.getElementById(targetId);
  }

  /**
   * @this {HTMLDivElement}
   */
  function toggleGridTarget(element, targetElement) {
    for (let index = 0; index < itemsCreateInputPageGrid.length; index += 1) {
      const target = itemsCreateInputPageGrid[index];

      target.classList.add(createPageInputHiddenClass);

      if (target === targetElement) {
        target.classList.remove(createPageInputHiddenClass);
      }

      const clickedElement = itemsCreatePageGrid[index];
      
      clickedElement.classList.remove(createPageInputActiveClass);

      if (clickedElement === element) {
        clickedElement.classList.add(createPageInputActiveClass);
      }
    }
  }

  /**
   * @param {HTMLElement} element
   * @param {HTMLElement} targetElement
   */
  function addToggleGridTargetEvent(element, targetElement) {
    itemsCreatePageGrid.push(element);
    itemsCreateInputPageGrid.push(targetElement);

    element.addEventListener("click", () =>
      toggleGridTarget(element, targetElement)
    );
  }

  const createPageTargetElements = document.querySelectorAll(
    createPageTargetIdDataSetString
  );

  for (let index = 0; index < createPageTargetElements.length; index += 1) {
    const element = createPageTargetElements[index];

    const targetElement = getGridTarget(element);

    if (targetElement) {
      addToggleGridTargetEvent(element, targetElement);
    }
  }
}
/* Create Page */

/* testing */
document.getElementById("incidentInput").onclick = function() { 
  document.getElementById("incidentCreate").style.display = 'block';
  document.getElementById("productLineCreate").style.display = 'none';
  document.getElementById("productCreate").style.display = 'none';
  document.getElementById("companyCreate").style.display = 'none';
  document.getElementById("themeCreate").style.display = 'none';
  document.getElementById("customCreate").style.display = 'none';

  document.getElementById("incidentInput").classList.add("pageInputActive");
  document.getElementById("productLineInput").classList.remove("pageInputActive");
  document.getElementById("productInput").classList.remove("pageInputActive");
  document.getElementById("companyInput").classList.remove("pageInputActive");
  document.getElementById("themeInput").classList.remove("pageInputActive");
  document.getElementById("customInput").classList.remove("pageInputActive");
}


document.getElementById("productLineInput").onclick = function() { 
  document.getElementById("incidentCreate").style.display = 'none';
  document.getElementById("productLineCreate").style.display = 'block';
  document.getElementById("productCreate").style.display = 'none';
  document.getElementById("companyCreate").style.display = 'none';
  document.getElementById("themeCreate").style.display = 'none';
  document.getElementById("customCreate").style.display = 'none';

  document.getElementById("incidentInput").classList.remove("pageInputActive");
  document.getElementById("productLineInput").classList.add("pageInputActive");
  document.getElementById("productInput").classList.remove("pageInputActive");
  document.getElementById("companyInput").classList.remove("pageInputActive");
  document.getElementById("themeInput").classList.remove("pageInputActive");
  document.getElementById("customInput").classList.remove("pageInputActive");
}

document.getElementById("productInput").onclick = function() { 
  document.getElementById("incidentCreate").style.display = 'none';
  document.getElementById("productLineCreate").style.display = 'none';
  document.getElementById("productCreate").style.display = 'block';
  document.getElementById("companyCreate").style.display = 'none';
  document.getElementById("themeCreate").style.display = 'none';
  document.getElementById("customCreate").style.display = 'none';


  document.getElementById("incidentInput").classList.remove("pageInputActive");
  document.getElementById("productLineInput").classList.remove("pageInputActive");
  document.getElementById("productInput").classList.add("pageInputActive");
  document.getElementById("companyInput").classList.remove("pageInputActive");
  document.getElementById("themeInput").classList.remove("pageInputActive");
  document.getElementById("customInput").classList.remove("pageInputActive");
}

document.getElementById("companyInput").onclick = function() { 
  document.getElementById("incidentCreate").style.display = 'none';
  document.getElementById("productLineCreate").style.display = 'none';
  document.getElementById("productCreate").style.display = 'none';
  document.getElementById("companyCreate").style.display = 'block';
  document.getElementById("themeCreate").style.display = 'none';
  document.getElementById("customCreate").style.display = 'none';

  document.getElementById("incidentInput").classList.remove("pageInputActive");
  document.getElementById("productLineInput").classList.remove("pageInputActive");
  document.getElementById("productInput").classList.remove("pageInputActive");
  document.getElementById("companyInput").classList.add("pageInputActive");
  document.getElementById("themeInput").classList.remove("pageInputActive");
  document.getElementById("customInput").classList.remove("pageInputActive");
}
document.getElementById("themeInput").onclick = function() { 
  document.getElementById("incidentCreate").style.display = 'none';
  document.getElementById("productLineCreate").style.display = 'none';
  document.getElementById("productCreate").style.display = 'none';
  document.getElementById("companyCreate").style.display = 'none';
  document.getElementById("themeCreate").style.display = 'block';
  document.getElementById("customCreate").style.display = 'none';

  
  document.getElementById("incidentInput").classList.remove("pageInputActive");
  document.getElementById("productLineInput").classList.remove("pageInputActive");
  document.getElementById("productInput").classList.remove("pageInputActive");
  document.getElementById("companyInput").classList.remove("pageInputActive");
  document.getElementById("themeInput").classList.add("pageInputActive");
  document.getElementById("customInput").classList.remove("pageInputActive");
}

document.getElementById("customInput").onclick = function() { 
  document.getElementById("incidentCreate").style.display = 'none';
  document.getElementById("productLineCreate").style.display = 'none';
  document.getElementById("productCreate").style.display = 'none';
  document.getElementById("companyCreate").style.display = 'none';
  document.getElementById("themeCreate").style.display = 'none';
  document.getElementById("customCreate").style.display = 'block';

  
  document.getElementById("incidentInput").classList.remove("pageInputActive");
  document.getElementById("productLineInput").classList.remove("pageInputActive");
  document.getElementById("productInput").classList.remove("pageInputActive");
  document.getElementById("companyInput").classList.remove("pageInputActive");
  document.getElementById("themeInput").classList.remove("pageInputActive");
  document.getElementById("customInput").classList.add("pageInputActive");
}