미디어위키:NationsPanel.js: 두 판 사이의 차이

(새 문서: (function (mw, $) { 'use strict'; function activate(shell, key) { if (!shell || !key) return; var tabs = shell.querySelectorAll('.clbi-nations-state-tab[data-continent]'); var panels = shell.querySelectorAll('.clbi-nations-state-continent[data-continent-panel]'); var matched = false; Array.prototype.forEach.call(tabs, function (tab) { var active = tab.getAttribute('data-continent') === key; tab.classList....)
 
편집 요약 없음
태그: 되돌려진 기여
1번째 줄: 1번째 줄:
(function (mw, $) {
(function (mw, $) {
    'use strict';
'use strict';
 
function setActive(panel, key) {
    function activate(shell, key) {
if (!panel || !key) return;
        if (!shell || !key) return;
var tabs = panel.querySelectorAll('.clbi-nations-state-tab[data-continent]');
 
var panes = panel.querySelectorAll('.clbi-nations-state-continent[data-continent-panel]');
        var tabs = shell.querySelectorAll('.clbi-nations-state-tab[data-continent]');
Array.prototype.forEach.call(tabs, function (tab) {
        var panels = shell.querySelectorAll('.clbi-nations-state-continent[data-continent-panel]');
var active = tab.getAttribute('data-continent') === key;
        var matched = false;
tab.classList.toggle('is-active', active);
 
tab.setAttribute('aria-selected', active ? 'true' : 'false');
        Array.prototype.forEach.call(tabs, function (tab) {
});
            var active = tab.getAttribute('data-continent') === key;
Array.prototype.forEach.call(panes, function (pane) {
            tab.classList.toggle('is-active', active);
var active = pane.getAttribute('data-continent-panel') === key;
            tab.setAttribute('aria-selected', active ? 'true' : 'false');
pane.classList.toggle('is-active', active);
            tab.setAttribute('tabindex', active ? '0' : '0');
if (active) {
            if (active) matched = true;
pane.removeAttribute('hidden');
        });
} else {
 
pane.setAttribute('hidden', 'hidden');
        if (!matched && tabs.length) {
}
            key = tabs[0].getAttribute('data-continent');
});
            tabs[0].classList.add('is-active');
}
            tabs[0].setAttribute('aria-selected', 'true');
function init(root) {
        }
root = root && root.jquery ? root[0] : (root || document);
 
var panels = root.querySelectorAll ? root.querySelectorAll('.clbi-nations-state-shell') : [];
        Array.prototype.forEach.call(panels, function (panel) {
Array.prototype.forEach.call(panels, function (panel) {
            var active = panel.getAttribute('data-continent-panel') === key;
if (panel.getAttribute('data-nations-panel-ready') === '1') return;
            panel.classList.toggle('is-active', active);
panel.setAttribute('data-nations-panel-ready', '1');
            if (active) {
var activeTab = panel.querySelector('.clbi-nations-state-tab.is-active[data-continent]') || panel.querySelector('.clbi-nations-state-tab[data-continent]');
                panel.removeAttribute('hidden');
if (activeTab) setActive(panel, activeTab.getAttribute('data-continent'));
            } else {
panel.addEventListener('click', function (event) {
                panel.setAttribute('hidden', 'hidden');
var tab = event.target.closest ? event.target.closest('.clbi-nations-state-tab[data-continent]') : null;
            }
if (!tab || !panel.contains(tab)) return;
        });
event.preventDefault();
    }
setActive(panel, tab.getAttribute('data-continent'));
 
});
    function initOne(shell) {
panel.addEventListener('keydown', function (event) {
        if (!shell || shell.getAttribute('data-nations-panel-ready') === '1') return;
if (event.key !== 'Enter' && event.key !== ' ') return;
        shell.setAttribute('data-nations-panel-ready', '1');
var tab = event.target.closest ? event.target.closest('.clbi-nations-state-tab[data-continent]') : null;
 
if (!tab || !panel.contains(tab)) return;
        var tabs = shell.querySelectorAll('.clbi-nations-state-tab[data-continent]');
event.preventDefault();
        var initial = shell.querySelector('.clbi-nations-state-tab.is-active[data-continent]') || tabs[0];
setActive(panel, tab.getAttribute('data-continent'));
 
});
        Array.prototype.forEach.call(tabs, function (tab) {
});
            tab.addEventListener('click', function (event) {
}
                event.preventDefault();
window.CLBI_NationsPanel = { init: init, setActive: setActive };
                activate(shell, tab.getAttribute('data-continent'));
$(init);
            });
if (mw && mw.hook) {
 
mw.hook('wikipage.content').add(function ($content) {
            tab.addEventListener('keydown', function (event) {
init($content && $content[0] ? $content[0] : document);
                if (event.key === 'Enter' || event.key === ' ') {
});
                    event.preventDefault();
}
                    activate(shell, tab.getAttribute('data-continent'));
}(window.mediaWiki, window.jQuery));
                }
            });
        });
 
        if (initial) {
            activate(shell, initial.getAttribute('data-continent'));
        }
    }
 
    function init(root) {
        root = root && root.jquery ? root[0] : (root || document);
        var shells = root.querySelectorAll
            ? root.querySelectorAll('.clbi-nations-state-shell')
            : [];
 
        Array.prototype.forEach.call(shells, initOne);
    }
 
    window.CLBI_NATIONS_PANEL = {
        init: init,
        activate: activate
    };
 
    $(function () {
        init(document);
    });
 
    if (mw && mw.hook) {
        mw.hook('wikipage.content').add(function ($content) {
            init($content);
        });
    }
})(mediaWiki, jQuery);

2026년 6월 30일 (화) 04:20 판

(function (mw, $) {
'use strict';
function setActive(panel, key) {
if (!panel || !key) return;
var tabs = panel.querySelectorAll('.clbi-nations-state-tab[data-continent]');
var panes = panel.querySelectorAll('.clbi-nations-state-continent[data-continent-panel]');
Array.prototype.forEach.call(tabs, function (tab) {
var active = tab.getAttribute('data-continent') === key;
tab.classList.toggle('is-active', active);
tab.setAttribute('aria-selected', active ? 'true' : 'false');
});
Array.prototype.forEach.call(panes, function (pane) {
var active = pane.getAttribute('data-continent-panel') === key;
pane.classList.toggle('is-active', active);
if (active) {
pane.removeAttribute('hidden');
} else {
pane.setAttribute('hidden', 'hidden');
}
});
}
function init(root) {
root = root && root.jquery ? root[0] : (root || document);
var panels = root.querySelectorAll ? root.querySelectorAll('.clbi-nations-state-shell') : [];
Array.prototype.forEach.call(panels, function (panel) {
if (panel.getAttribute('data-nations-panel-ready') === '1') return;
panel.setAttribute('data-nations-panel-ready', '1');
var activeTab = panel.querySelector('.clbi-nations-state-tab.is-active[data-continent]') || panel.querySelector('.clbi-nations-state-tab[data-continent]');
if (activeTab) setActive(panel, activeTab.getAttribute('data-continent'));
panel.addEventListener('click', function (event) {
var tab = event.target.closest ? event.target.closest('.clbi-nations-state-tab[data-continent]') : null;
if (!tab || !panel.contains(tab)) return;
event.preventDefault();
setActive(panel, tab.getAttribute('data-continent'));
});
panel.addEventListener('keydown', function (event) {
if (event.key !== 'Enter' && event.key !== ' ') return;
var tab = event.target.closest ? event.target.closest('.clbi-nations-state-tab[data-continent]') : null;
if (!tab || !panel.contains(tab)) return;
event.preventDefault();
setActive(panel, tab.getAttribute('data-continent'));
});
});
}
window.CLBI_NationsPanel = { init: init, setActive: setActive };
$(init);
if (mw && mw.hook) {
mw.hook('wikipage.content').add(function ($content) {
init($content && $content[0] ? $content[0] : document);
});
}
}(window.mediaWiki, window.jQuery));