Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
Total | |
0.00% |
0 / 28 |
|
0.00% |
0 / 3 |
CRAP | |
0.00% |
0 / 1 |
SelectWithInputWidget | |
0.00% |
0 / 28 |
|
0.00% |
0 / 3 |
42 | |
0.00% |
0 / 1 |
__construct | |
0.00% |
0 / 21 |
|
0.00% |
0 / 1 |
20 | |||
getJavaScriptClassName | |
0.00% |
0 / 1 |
|
0.00% |
0 / 1 |
2 | |||
getConfig | |
0.00% |
0 / 6 |
|
0.00% |
0 / 1 |
2 |
1 | <?php |
2 | |
3 | namespace MediaWiki\Widget; |
4 | |
5 | use OOUI\DropdownInputWidget; |
6 | use OOUI\TextInputWidget; |
7 | use 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 | */ |
15 | class 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 | } |