blob: f75237d2641b333e8ffb3a474dd6934869abffd9 (
plain) (
blame)
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
<?php
namespace MediaWiki\Widget;
use OOUI\DropdownInputWidget;
use OOUI\TextInputWidget;
use OOUI\Widget;
/**
* Select and input widget.
*
* @copyright 2011-2017 MediaWiki Widgets Team and others; see AUTHORS.txt
* @license MIT
*/
class SelectWithInputWidget extends Widget {
/** @var array */
protected $config;
/** @var TextInputWidget */
protected $textinput;
/** @var DropdownInputWidget */
protected $dropdowninput;
/**
* A version of the SelectWithInputWidget, with `or` set to true.
*
* @param array $config Configuration options
* - array $config['textinput'] Configuration for the TextInputWidget
* - array $config['dropdowninput'] Configuration for the DropdownInputWidget
* - bool $config['or'] Configuration for whether the widget is dropdown AND input
* or dropdown OR input
* - bool $config['required'] Configuration for whether the widget is a required input.
*/
public function __construct( array $config = [] ) {
// Configuration initialization
$config = array_merge(
[
'textinput' => [],
'dropdowninput' => [],
'or' => false,
'required' => false,
],
$config
);
if ( isset( $config['disabled'] ) && $config['disabled'] ) {
$config['textinput']['disabled'] = true;
$config['dropdowninput']['disabled'] = true;
}
$config['textinput']['required'] = $config['or'] ? false : $config['required'];
$config['dropdowninput']['required'] = $config['required'];
parent::__construct( $config );
// Properties
$this->config = $config;
$this->textinput = new TextInputWidget( $config['textinput'] );
$this->dropdowninput = new DropdownInputWidget( $config['dropdowninput'] );
// Initialization
$this
->addClasses( [ 'mw-widget-selectWithInputWidget' ] )
->appendContent( $this->dropdowninput, $this->textinput );
}
protected function getJavaScriptClassName() {
return 'mw.widgets.SelectWithInputWidget';
}
public function getConfig( &$config ) {
$config['textinput'] = $this->config['textinput'];
$config['dropdowninput'] = $this->config['dropdowninput'];
$config['dropdowninput']['dropdown']['$overlay'] = true;
$config['or'] = $this->config['or'];
$config['required'] = $this->config['required'];
return parent::getConfig( $config );
}
}
|