5 class WikimediaUITheme extends Theme {
9 public function getElementClasses( Element $element ) {
13 'progressive' => false,
14 'constructive' => false,
15 'destructive' => false
19 $classes = parent::getElementClasses( $element );
21 if ( $element->supports( [ 'hasFlag' ] ) ) {
22 $isFramed = $element->supports( [ 'isFramed' ] ) && $element->isFramed();
23 $isActive = $element->supports( [ 'isActive' ] ) && $element->isActive();
24 if ( $isFramed && ( $isActive || $element->isDisabled() || $element->hasFlag( 'primary' ) ) ) {
25 // Button with a dark background, use white icon
26 $variants['invert'] = true;
27 } elseif ( !$isFramed && $element->isDisabled() ) {
28 // Frameless disabled button, always use black icon regardless of flags
29 $variants['invert'] = false;
30 } elseif ( !$element->isDisabled() ) {
31 // Any other kind of button, use the right colored icon if available
32 $variants['progressive'] = $element->hasFlag( 'progressive' );
33 $variants['constructive'] = $element->hasFlag( 'constructive' );
34 $variants['destructive'] = $element->hasFlag( 'destructive' );
35 $variants['warning'] = $element->hasFlag( 'warning' );
39 foreach ( $variants as $variant => $toggle ) {
40 $classes[$toggle ? 'on' : 'off'][] = 'oo-ui-image-' . $variant;