File: IconWidget.php

package info (click to toggle)
mediawiki 1%3A1.39.13-1~deb12u1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 320,416 kB
  • sloc: php: 815,516; javascript: 601,264; sql: 11,218; python: 4,863; xml: 3,080; sh: 990; ruby: 82; makefile: 78
file content (56 lines) | stat: -rw-r--r-- 1,444 bytes parent folder | download | duplicates (3)
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;
			}
		} );
	}
}