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
|
<?php
namespace OOUI;
/**
* Icon widget.
*
* See IconElement for more information.
*/
class IconWidget extends Widget {
use IconElement;
use TitledElement;
use LabelElement;
use FlaggedElement;
/* Static Properties */
/** @var string */
public static $tagName = 'span';
/**
* @param array $config Configuration options
*/
public function __construct( array $config = [] ) {
// Parent constructor
parent::__construct( $config );
// Traits
$this->initializeIconElement(
array_merge( [ 'iconElement' => $this ], $config )
);
$this->initializeTitledElement(
array_merge( [ 'titled' => $this ], $config )
);
$this->initializeLabelElement(
array_merge( [ 'labelElement' => $this, 'invisibleLabel' => true ], $config )
);
$this->initializeFlaggedElement(
array_merge( [ 'flagged' => $this ], $config )
);
// Initialization
$this->addClasses( [ 'oo-ui-iconWidget' ] );
// Remove class added by LabelElement initialization. It causes unexpected CSS to apply when
// nested in other widgets, because this widget used to not mix in LabelElement.
$this->removeClasses( [ 'oo-ui-labelElement-label' ] );
$this->registerConfigCallback( function ( &$config ) {
// We have changed the default value, so change when it is outputted.
unset( $config['invisibleLabel'] );
if ( $this->invisibleLabel !== true ) {
$config['invisibleLabel'] = $this->invisibleLabel;
}
} );
}
}
|