selectedArray = $config['default'] ?? []; $this->inputName = $config['name'] ?? null; $this->inputPlaceholder = $config['placeholder'] ?? null; $this->input = $config['input'] ?? []; $this->tagLimit = $config['tagLimit'] ?? null; $this->allowArbitrary = $config['allowArbitrary'] ?? false; $this->allowedValues = $config['allowedValues'] ?? null; $textarea = new MultilineTextInputWidget( array_merge( [ 'name' => $this->inputName, 'value' => implode( "\n", $this->selectedArray ), 'rows' => min( $this->tagLimit, 10 ) ?? 10, 'classes' => [ 'mw-widgets-tagMultiselectWidget-multilineTextInputWidget' ], ], $this->input ) ); $pending = new PendingTextInputWidget(); $this->appendContent( $textarea, $pending ); $this->addClasses( [ 'mw-widgets-tagMultiselectWidget' ] ); } public function getConfig( &$config ) { if ( $this->selectedArray !== null ) { $config['selected'] = $this->selectedArray; } if ( $this->inputName !== null ) { $config['name'] = $this->inputName; } if ( $this->inputPlaceholder !== null ) { $config['placeholder'] = $this->inputPlaceholder; } if ( $this->input !== null ) { $config['input'] = $this->input; } if ( $this->tagLimit !== null ) { $config['tagLimit'] = $this->tagLimit; } if ( $this->allowArbitrary !== null ) { $config['allowArbitrary'] = $this->allowArbitrary; } if ( $this->allowedValues !== null ) { $config['allowedValues'] = $this->allowedValues; } $config['$overlay'] = true; return parent::getConfig( $config ); } protected function getJavaScriptClassName() { return 'mw.widgets.TagMultiselectWidget'; } }