MediaWiki:Common.js: Difference between revisions
Appearance
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");
}