wikimedia/mediawiki-extensions-UniversalLanguageSelector

View on GitHub
resources/css/ext.uls.pt.less

Summary

Maintainability
Test Coverage
// TODO: Replace with @import 'mediawiki.skin.variables.less'; with MW core LTS v1.42 dependency.
@import '../../lib/codex-design-tokens/theme-wikimedia-ui-legacy.less';
@import 'mediawiki.mixins';

// Similar to from Vector's 'personalMenu.less' file.
@font-size-browser: 16; // Assumed browser default of `16px`
// ULS personal tool menu
@background-position-menu-uls-icon: left ( 1 / @font-size-browser / @font-size-menu-uls );
@background-size-menu-uls-icon: 16 / @font-size-browser / @font-size-menu-uls;
@padding-top-menu-uls-icon: 4 / @font-size-browser / @font-size-menu-uls;
@padding-left-menu-uls-icon: 20 / @font-size-browser / @font-size-menu-uls;
@font-size-menu-uls: 0.75em;

/*
 * The trigger can be placed in the personal toolbar near the username
 * or near the interlanguage links.
 */

/*
 * A hack to load the icon before the rest of the module is lazy-loaded.
 * Copied from jquery.uls.css with the path changed.
 */
.uls-trigger {
    background: no-repeat url( ../../lib/jquery.uls/images/language.svg ) left center;
    // Let the SVG image fit without cropping or stretch
    background-size: contain;
}

/* stylelint-disable selector-max-id */
#pt-uls {
    padding-top: 0 !important; // stylelint-disable-line declaration-no-important

    .uls-trigger {
        background-image: none;
        // Same values as Vector's `#p-personal li`.
        display: inline-block;
        padding-top: 0.5em !important; // stylelint-disable-line declaration-no-important
        padding-left: 0;

        // Putting the icon in before in order to apply `opacity`.
        &::before {
            content: '';
            background-image: url( ../../lib/jquery.uls/images/language.svg );
            // Same values as Vector's `#pt-userpage a`.
            background-position: @background-position-menu-uls-icon;
            // Support Edge: Can't be `contain`, see T207075.
            background-repeat: no-repeat;
            background-size: @background-size-menu-uls-icon @background-size-menu-uls-icon;
            padding-top: @padding-top-menu-uls-icon;
            padding-left: @padding-left-menu-uls-icon;
            // Equals `#555`, closest to `#54595d` on background-color `#fff`.
            opacity: @opacity-icon-subtle;
        }
    }
}