MediaWiki:Gadget-VectorLeftPanel.js:修订间差异

添加2,577字节 、​ 2022年11月10日 (星期四)
// Edit via Wikiplus
(// Edit via Wikiplus)
第6行: 第6行:
License: CC BY-NC-SA 4.0
License: CC BY-NC-SA 4.0
*/
*/
(function () {
(function () {
     // 主过程
     // 主过程
     function main() {
     function main() {
         let panel = document.getElementById('mw-panel');
         var panel = document.getElementById('mw-panel');
         if (!panel /*|| !(panel instanceof HTMLElement)*/) {
         if (!panel /*|| !(panel instanceof HTMLElement)*/) {
            return;
                return;
        }
            }
         let portals = HTMLElementFliter(Array.from(panel.getElementsByClassName('portal')));
         var portals = HTMLElementFliter(Array.from(panel.getElementsByClassName('portal')));
         // let screenHeight = document.documentElement.clientHeight, panelHeight = panel.offsetHeight
         // let screenHeight = document.documentElement.clientHeight, panelHeight = panel.offsetHeight
         /**左侧栏是不是比屏幕高度还要高了 */
         /**左侧栏是不是比屏幕高度还要高了 */
         //let overHeight = document.documentElement.clientHeight < panel.offsetHeight + 36;
         //let overHeight = document.documentElement.clientHeight < panel.offsetHeight + 36;
         /**是的话默认闭合,不是的话默认打开 */
         /**是的话默认闭合,不是的话默认打开 */
         let defaultClass = 'salt-open'; // overHeight ? 'salt-close' : 'salt-open';
         var defaultClass = 'salt-open'; // overHeight ? 'salt-close' : 'salt-open';
         for (let portal of portals) {
         var _iteratorNormalCompletion = true;
            let h3 = portal.querySelector('h1,h2,h3,h4,h5,h6');
        var _didIteratorError = false;
            let body = portal.querySelector('.vector-menu-content');
        var _iteratorError = undefined;
            if (!h3 || !(h3 instanceof HTMLElement)
 
                || !body || !(body instanceof HTMLElement))
        try {
                continue; // 没有的话就算了
            var _loop = function _loop() {
            if (h3.textContent == '导航')
                var portal = _step.value;
                continue; // 这个'导航'的h3是没不显示的
 
            let openHeight = body.offsetHeight; //, closeHeight = h3.offsetTop + h3.offsetHeight
                var h3 = portal.querySelector('h1,h2,h3,h4,h5,h6');
            portal.style.setProperty('--salt-open-height', openHeight + 'px');
                var body = portal.querySelector('.vector-menu-content');
            // portal.style.setProperty('--salt-close-height', closeHeight + 'px')
                if (!h3 || !(h3 instanceof HTMLElement) || !body || !(body instanceof HTMLElement)) return 'continue'; // 没有的话就算了
            portal.classList.add(defaultClass);
                if (h3.textContent == '导航') return 'continue'; // 这个'导航'的h3是没不显示的
            h3.addEventListener('click', () => {
                var openHeight = body.offsetHeight; //, closeHeight = h3.offsetTop + h3.offsetHeight
                portal.toggleClass('salt-open');
                portal.style.setProperty('--salt-open-height', openHeight + 'px');
                portal.toggleClass('salt-close');
                // portal.style.setProperty('--salt-close-height', closeHeight + 'px')
             });
                portal.classList.add(defaultClass);
                h3.addEventListener('click', function () {
                    portal.toggleClass('salt-open');
                    portal.toggleClass('salt-close');
                });
             };
 
            for (var _iterator = portals[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
                var _ret = _loop();
 
                if (_ret === 'continue') continue;
            }
        } catch (err) {
            _didIteratorError = true;
            _iteratorError = err;
        } finally {
            try {
                if (!_iteratorNormalCompletion && _iterator.return) {
                    _iterator.return();
                }
            } finally {
                if (_didIteratorError) {
                    throw _iteratorError;
                }
            }
         }
         }
     }
     }
     function HTMLElementFliter(el) {
     function HTMLElementFliter(el) {
         let hel = [];
         var hel = [];
         for (let e of el)
         var _iteratorNormalCompletion2 = true;
            if (e instanceof HTMLElement)
        var _didIteratorError2 = false;
                hel.push(e);
        var _iteratorError2 = undefined;
 
        try {
            for (var _iterator2 = el[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
                var e = _step2.value;
 
                if (e instanceof HTMLElement) hel.push(e);
            }
        } catch (err) {
            _didIteratorError2 = true;
            _iteratorError2 = err;
        } finally {
            try {
                if (!_iteratorNormalCompletion2 && _iterator2.return) {
                    _iterator2.return();
                }
            } finally {
                if (_didIteratorError2) {
                    throw _iteratorError2;
                }
            }
        }
 
         return hel;
         return hel;
     }
     }
第49行: 第96行:
             HTMLElement.prototype.toggleClass = function (classes) {
             HTMLElement.prototype.toggleClass = function (classes) {
                 var cls = String(classes).replace(/[\s\,\;]+/gm, ',').split(',');
                 var cls = String(classes).replace(/[\s\,\;]+/gm, ',').split(',');
                 for (var c of cls) {
                 var _iteratorNormalCompletion3 = true;
                    if (this.classList.contains(c)) {
                var _didIteratorError3 = false;
                         this.classList.remove(c);
                var _iteratorError3 = undefined;
 
                try {
                    for (var _iterator3 = cls[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
                        var c = _step3.value;
 
                        if (this.classList.contains(c)) {
                            this.classList.remove(c);
                         } else {
                            this.classList.add(c);
                        }
                     }
                     }
                     else {
                } catch (err) {
                         this.classList.add(c);
                    _didIteratorError3 = true;
                     _iteratorError3 = err;
                } finally {
                    try {
                         if (!_iteratorNormalCompletion3 && _iterator3.return) {
                            _iterator3.return();
                        }
                    } finally {
                        if (_didIteratorError3) {
                            throw _iteratorError3;
                        }
                     }
                     }
                 }
                 }
第60行: 第127行:
         }
         }
         if (document.readyState == 'loading') {
         if (document.readyState == 'loading') {
             document.addEventListener('DOMContentLoaded', () => { setTimeout(main, 500); });
             document.addEventListener('DOMContentLoaded', function () {
         }
                setTimeout(main, 500);
        else {
            });
         } else {
             setTimeout(main, 500);
             setTimeout(main, 500);
         }
         }
维护员、​界面管理员、​巡查员、​监督员、​小部件编辑者
3,469

个编辑