# all files / src/themes/wikimediaui/ WikimediaUITheme.js

95.65% Statements 22/23
87.5% Branches 21/24
66.67% Functions 2/3
95.65% Lines 22/23

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74

    1×

    2×

    1×

    1×

    99926×

    99926×
    89637×
    89637×
    89637×

    2288×
    87349×

    2070×
    85279×

    85279×
    85279×
    85279×
    85279×

    99926×
    499630×

    99926×

    1×

    1×
     /**
     * @class
     * @extends OO.ui.Theme
     *
     * @constructor
     */
    OO.ui.WikimediaUITheme = function OoUiWikimediaUITheme() {
    	// Parent constructor
    	OO.ui.WikimediaUITheme.parent.call( this );
    };

    /* Setup */

    OO.inheritClass( OO.ui.WikimediaUITheme, OO.ui.Theme );

    /* Methods */

    /**
     * @inheritdoc
     */
    OO.ui.WikimediaUITheme.prototype.getElementClasses = function ( element ) {
    	// Parent method
    	var variant, isFramed, isActive,
    		variants = {
    			warning: false,
    			invert: false,
    			progressive: false,
    			constructive: false,
    			destructive: false
    		},
    		// Parent method
    		classes = OO.ui.WikimediaUITheme.parent.prototype.getElementClasses.call( this, element );

    	if ( element.supports( [ 'hasFlag' ] ) ) {
    		isFramed = element.supports( [ 'isFramed' ] ) && element.isFramed();
    		isActive = element.supports( [ 'isActive' ] ) && element.isActive();
    		if (
    			// Button with a dark background
    			isFramed && ( isActive || element.isDisabled() || element.hasFlag( 'primary' ) ) ||
    			// Toolbar with a dark background
    			OO.ui.ToolGroup && element instanceof OO.ui.ToolGroup && ( isActive || element.hasFlag( 'primary' ) )
    		) {
    			// … use white icon / indicator, regardless of other flags
    			variants.invert = true;
    		} else if ( !isFramed && element.isDisabled() ) {
    			// Frameless disabled button, always use black icon / indicator regardless of other flags
    			variants.invert = false;
    		} else Eif ( !element.isDisabled() ) {
    			// Any other kind of button, use the right colored icon / indicator if available
    			variants.progressive = element.hasFlag( 'progressive' );
    			variants.constructive = element.hasFlag( 'constructive' );
    			variants.destructive = element.hasFlag( 'destructive' );
    			variants.warning = element.hasFlag( 'warning' );
    		}
    	}

    	for ( variant in variants ) {
    		classes[ variants[ variant ] ? 'on' : 'off' ].push( 'oo-ui-image-' + variant );
    	}

    	return classes;
    };

    /**
     * @inheritdoc
     */
    OO.ui.WikimediaUITheme.prototype.getDialogTransitionDuration = function () {
    	return 250;
    };

    /* Instantiation */

    OO.ui.theme = new OO.ui.WikimediaUITheme();