[], '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 ); } }