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

мНет описания правки
мНет описания правки
Метка: отменено
Строка 1275: Строка 1275:
// wiki import end
// wiki import end


;(function($, mw){
;(function($, mw) {
     const COOKIE = 'ss14_wikiTheme';
     const COOKIE = 'ss14_wikiTheme';


Строка 1304: Строка 1304:
             class: 'mw-portlet mw-portlet-skin-client-prefs-skin-theme mw-portlet-js theme-menu',
             class: 'mw-portlet mw-portlet-skin-client-prefs-skin-theme mw-portlet-js theme-menu',
             id: 'skin-client-prefs-skin-theme'
             id: 'skin-client-prefs-skin-theme'
         });
         }).append(
        $portlet.append(
             $('<div>', { class: 'theme-menu__heading', text: 'Тема' }),
             $('<div>', { class: 'theme-menu__heading', text: 'Тема' }),
             $('<div>', { class: 'theme-menu__content' })
             $('<div>', { class: 'theme-menu__content' })
Строка 1349: Строка 1348:
     }
     }


     mw.themeUtils = { loadTheme, applyTheme, initThemeMenu };
     function createSettingsDropdown(currentTheme) {
}(jQuery, mediaWiki));
        const $dropdown = $('<div>', { class: 'theme-dropdown' });
 
        const $details = $('<details>', {
;(function($, mw) {
            id: 'theme-preferences-details',
    mw.loader.using('ext.gadget.theme').then(function() {
            class: 'theme-dropdown-details'
         const { loadTheme, initThemeMenu } = mw.themeUtils;
        });
        const $summary = $('<summary>', {
            class: 'theme-dropdown-summary',
            'data-tooltip-initialized': 'true'
        }).append($('<span>', { class: 'theme-icon theme-icon-settings' }));
        const $window = $('<div>', {
            id: 'theme-preferences',
            class: 'theme-window'
        }).hide();
        const $header = $('<div>', {
            class: 'theme-window__header',
            text: 'Параметры'
        });
         const $content = $('<div>', {
            id: 'theme-preferences__content',
            class: 'theme-window__content'
        });


         function createSettingsDropdown(currentTheme) {
         $window.append($header, $content);
            const $dropdown = $('<div>', { class: 'theme-dropdown' });
        $details.append($summary);
            const $details = $('<details>', { id: 'theme-preferences-details', class: 'theme-dropdown-details' });
        $dropdown.append($details, $window);
            const $summary = $('<summary>', { class: 'theme-dropdown-summary', 'data-tooltip-initialized': 'true' })
        $('#user-tools').append($dropdown);
                .append($('<span>', { class: 'theme-icon theme-icon-settings' }));
            $details.append($summary);


            const $window = $('<div>', { id: 'theme-preferences', class: 'theme-window' }).hide();
        initThemeMenu($content, currentTheme);
            const $header = $('<div>', {
                id: 'theme-preferences__header',
                class: 'theme-window__header',
                text: 'Параметры'
            });
            $window.append($header);
 
            const $content = $('<div>', {
                id: 'theme-preferences__content',
                class: 'theme-window__content'
            });
            $window.append($content);
 
            initThemeMenu($content, currentTheme);
 
            $dropdown.append($details, $window);
            $('#user-tools').append($dropdown);
 
            const $cover = $('#menus-cover');
 
            $details.on('toggle', function() {
                const isOpen = $(this).prop('open');
                $window.toggle(isOpen);


        const $cover = $('#menus-cover');
        $details.on('toggle', function() {
            const isOpen = $(this).prop('open');
            $window.toggle(isOpen);
            if ($cover.length) {
                $cover.css('display', isOpen ? 'block' : 'none');
            }
        });
        $(document).on('click', function(e) {
            if (!$(e.target).closest('.theme-window, .theme-dropdown-summary').length && $details.prop('open')) {
                $details.removeAttr('open');
                 if ($cover.length) {
                 if ($cover.length) {
                     $cover.css('display', isOpen ? 'block' : 'none');
                     $cover.css('display', 'none');
                 }
                 }
             });
             }
        });
    }


            $(document).on('click', function(e) {
    function init() {
                const isClickInside = $(e.target).closest('.theme-window, .theme-dropdown-summary').length > 0;
        const theme = loadTheme();
                if (!isClickInside && $details.prop('open')) {
         applyTheme(theme);
                    $details.removeAttr('open');
        createSettingsDropdown(theme);
                    if ($cover.length) {
    }
                        $cover.css('display', 'none');
                    }
                }
            });
         }
 
        function init() {
            const theme = loadTheme();
            createSettingsDropdown(theme);
        }


    mw.loader.using(['jquery.cookie']).then(function() {
         $(init);
         $(init);
     });
     });
}(jQuery, mediaWiki));
}(jQuery, mediaWiki));