summaryrefslogtreecommitdiff
blob: 6cceec2d3a0cb42a1aa3bfac1300f759f6f89b20 (plain)
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
<?php

namespace EchoOOUI;

use OOUI\IconElement;
use OOUI\LabelElement;
use OOUI\TitledElement;
use OOUI\Tag;
use OOUI\Widget;

/**
 * Widget combining a label and icon
 */
class LabelIconWidget extends Widget {
	use IconElement;
	use LabelElement;
	use TitledElement;

	/**
	 * @param array $config Configuration options
	 *  - string|HtmlSnippet $config['label'] Label text
	 *  - string $config['title'] Title text
	 *  - string $config['icon'] Icon key
	 */
	public function __construct( $config ) {
		parent::__construct( $config );

		$this->tableRow = new Tag( 'div' );
		$this->tableRow->setAttributes( [
			'class' => 'oo-ui-labelIconWidget-row',
		] );

		$this->icon = new Tag( 'div' );
		$this->label = new Tag( 'div' );

		$this->initializeIconElement( array_merge( $config, [ 'iconElement' => $this->icon ] ) );
		$this->initializeLabelElement( array_merge( $config, [ 'labelElement' => $this->label ] ) );
		$this->initializeTitledElement( $config );

		$this->addClasses( [ 'oo-ui-labelIconWidget' ] );
		$this->tableRow->appendContent( $this->icon, $this->label );
		$this->appendContent( $this->tableRow );
	}
}