MediaWiki:Common.js: Difference between revisions
Appearance
No edit summary |
No edit summary |
||
| Line 2: | Line 2: | ||
$(function () { | $(function () { | ||
/* ================= | /* ================= TAB SYSTEM ================= */ | ||
document.querySelectorAll('.mw-tab-buttons').forEach(group => { | document.querySelectorAll('.mw-tab-buttons').forEach(group => { | ||
| Line 11: | Line 11: | ||
const tabId = this.dataset.tab; | const tabId = this.dataset.tab; | ||
let container = | let container = | ||
this.closest('.mw-tabs') || | this.closest('.mw-tabs') || | ||
| Line 17: | Line 16: | ||
document; | document; | ||
container.querySelectorAll('.mw-tab-content').forEach(c => { | container.querySelectorAll('.mw-tab-content').forEach(c => { | ||
c.style.display = 'none'; | c.style.display = 'none'; | ||
}); | }); | ||
container.querySelectorAll('.mw-tab-btn').forEach(b => { | container.querySelectorAll('.mw-tab-btn').forEach(b => { | ||
b.classList.remove('active'); | b.classList.remove('active'); | ||
}); | }); | ||
this.classList.add('active'); | this.classList.add('active'); | ||
| Line 35: | Line 31: | ||
}); | }); | ||
if (buttons.length) buttons[0].click(); | if (buttons.length) buttons[0].click(); | ||
}); | }); | ||
/* ================= | /* ================= DROPDOWN FIX (THIS WAS MISSING) ================= */ | ||
document.querySelectorAll('.mw-dropdown-ui').forEach(container => { | document.querySelectorAll('.mw-dropdown-ui').forEach(container => { | ||
const label = container.dataset.label || "Select"; | try { | ||
const label = container.dataset.label || "Select"; | |||
const options = JSON.parse(container.dataset.options || "{}"); | |||
const select = document.createElement('select'); | |||
const first = document.createElement('option'); | |||
first.textContent = label; | |||
first.value = ""; | |||
select.appendChild(first); | |||
Object.keys(options).forEach(key => { | |||
const opt = document.createElement('option'); | |||
opt.value = key; | |||
opt.textContent = options[key].label; | |||
select.appendChild(opt); | |||
}); | |||
const output = document.createElement('div'); | |||
output.className = 'mw-dropdown-output'; | |||
select.onchange = function () { | |||
const selected = options[this.value]; | |||
output.innerHTML = selected ? selected.content : ""; | |||
const | |||
}; | }; | ||
container.appendChild( | container.innerHTML = ''; | ||
container.appendChild(select); | |||
container.appendChild(output); | |||
} catch (e) { | |||
console.error("Dropdown error:", e); | |||
} | } | ||
}); | }); | ||
}); | }); | ||
}); | }); | ||
Revision as of 20:04, 21 April 2026
mw.loader.using('mediawiki.util').then(function () {
$(function () {
/* ================= TAB SYSTEM ================= */
document.querySelectorAll('.mw-tab-buttons').forEach(group => {
const buttons = group.querySelectorAll('.mw-tab-btn');
buttons.forEach(btn => {
btn.onclick = function () {
const tabId = this.dataset.tab;
let container =
this.closest('.mw-tabs') ||
this.closest('.mw-tab-content') ||
document;
container.querySelectorAll('.mw-tab-content').forEach(c => {
c.style.display = 'none';
});
container.querySelectorAll('.mw-tab-btn').forEach(b => {
b.classList.remove('active');
});
this.classList.add('active');
const target = container.querySelector('#' + tabId);
if (target) target.style.display = 'block';
};
});
if (buttons.length) buttons[0].click();
});
/* ================= DROPDOWN FIX (THIS WAS MISSING) ================= */
document.querySelectorAll('.mw-dropdown-ui').forEach(container => {
try {
const label = container.dataset.label || "Select";
const options = JSON.parse(container.dataset.options || "{}");
const select = document.createElement('select');
const first = document.createElement('option');
first.textContent = label;
first.value = "";
select.appendChild(first);
Object.keys(options).forEach(key => {
const opt = document.createElement('option');
opt.value = key;
opt.textContent = options[key].label;
select.appendChild(opt);
});
const output = document.createElement('div');
output.className = 'mw-dropdown-output';
select.onchange = function () {
const selected = options[this.value];
output.innerHTML = selected ? selected.content : "";
};
container.innerHTML = '';
container.appendChild(select);
container.appendChild(output);
} catch (e) {
console.error("Dropdown error:", e);
}
});
});
});