MediaWiki:Common.js: различия между версиями

Нет описания правки
Метка: отменено
Нет описания правки
 
(не показано 9 промежуточных версий этого же участника)
Строка 33: Строка 33:
});
});


function getPageImage(title, size = 200) {
// Автоскролл после открытия спойлера в меню Citizen
    return fetch(
$(document).on('click', '.dropdown .dropbtn', function () {
        mw.util.wikiScript('api') +
        `?action=query&titles=${encodeURIComponent(title)}&prop=pageimages&piprop=thumbnail&pithumbsize=${size}&format=json`
    )
    .then(res => res.json())
    .then(data => {
        const pages = data.query.pages;
        const page = Object.values(pages)[0];
        return page.thumbnail ? page.thumbnail.source : null;
    });
}


mw.hook('ext.popups.render').add(function(popup, data) {
    var $dropdown = $(this).closest('.dropdown');
     const title = data.title;
    var $content = $dropdown.find('.dropdown-content');
     getPageImage(title, 200).then(imgUrl => {
 
         if (imgUrl) {
     // Даем CSS-анимации завершиться, если она есть
             const imgElem = document.createElement('img');
     setTimeout(function () {
            imgElem.className = 'pageimage';
 
            imgElem.src = imgUrl;
        // Если блок теперь виден — скроллим к нему
             popup.querySelector('.mwe-popups-container').prepend(imgElem);
         if ($content.is(':visible')) {
             var top = $dropdown.offset().top - 80; // отступ сверху (регулируется)
             $('html, body').animate({ scrollTop: top }, 300);
         }
         }
     });
 
     }, 200);
});
});