Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 28
0.00% covered (danger)
0.00%
0 / 3
CRAP
0.00% covered (danger)
0.00%
0 / 1
SelectWithInputWidget
0.00% covered (danger)
0.00%
0 / 28
0.00% covered (danger)
0.00%
0 / 3
42
0.00% covered (danger)
0.00%
0 / 1
 __construct
0.00% covered (danger)
0.00%
0 / 21
0.00% covered (danger)
0.00%
0 / 1
20
 getJavaScriptClassName
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getConfig
0.00% covered (danger)
0.00%
0 / 6
0.00% covered (danger)
0.00%
0 / 1
2
1<?php
2
3namespace MediaWiki\Widget;
4
5use OOUI\DropdownInputWidget;
6use OOUI\TextInputWidget;
7use OOUI\Widget;
8
9/**
10 * Select and input widget.
11 *
12 * @copyright 2011-2017 MediaWiki Widgets Team and others; see AUTHORS.txt
13 * @license MIT
14 */
15class SelectWithInputWidget extends Widget {
16    /** @var array */
17    protected $config;
18    /** @var TextInputWidget */
19    protected $textinput;
20    /** @var DropdownInputWidget */
21    protected $dropdowninput;
22
23    /**
24     * A version of the SelectWithInputWidget, with `or` set to true.
25     *
26     * @param array $config Configuration options
27     *   - array $config['textinput'] Configuration for the TextInputWidget
28     *   - array $config['dropdowninput'] Configuration for the DropdownInputWidget
29     *   - bool $config['or'] Configuration for whether the widget is dropdown AND input
30     *       or dropdown OR input
31     *   - bool $config['required'] Configuration for whether the widget is a required input.
32     */
33    public function __construct( array $config = [] ) {
34        // Configuration initialization
35        $config = array_merge(
36            [
37                'textinput' => [],
38                'dropdowninput' => [],
39                'or' => false,
40                'required' => false,
41            ],
42            $config
43        );
44
45        if ( isset( $config['disabled'] ) && $config['disabled'] ) {
46            $config['textinput']['disabled'] = true;
47            $config['dropdowninput']['disabled'] = true;
48        }
49
50        $config['textinput']['required'] = $config['or'] ? false : $config['required'];
51        $config['dropdowninput']['required'] = $config['required'];
52
53        parent::__construct( $config );
54
55        // Properties
56        $this->config = $config;
57        $this->textinput = new TextInputWidget( $config['textinput'] );
58        $this->dropdowninput = new DropdownInputWidget( $config['dropdowninput'] );
59
60        // Initialization
61        $this
62            ->addClasses( [ 'mw-widget-selectWithInputWidget' ] )
63            ->appendContent( $this->dropdowninput, $this->textinput );
64    }
65
66    protected function getJavaScriptClassName() {
67        return 'mw.widgets.SelectWithInputWidget';
68    }
69
70    public function getConfig( &$config ) {
71        $config['textinput'] = $this->config['textinput'];
72        $config['dropdowninput'] = $this->config['dropdowninput'];
73        $config['dropdowninput']['dropdown']['$overlay'] = true;
74        $config['or'] = $this->config['or'];
75        $config['required'] = $this->config['required'];
76        return parent::getConfig( $config );
77    }
78}