` element. * * Besides the parameters recognized by HTMLTextField, the following are * recognized: * options-messages - As for HTMLSelectField * options - As for HTMLSelectField * options-message - As for HTMLSelectField */ class HTMLComboboxField extends HTMLTextField { // FIXME Ewww, this shouldn't be adding any attributes not requested in $list :( public function getAttributes( array $list, array $mappings = null ) { $attribs = array( 'type' => 'text', 'list' => $this->mName . '-datalist', ) + parent::getAttributes( $list, $mappings ); return $attribs; } function getInputHTML( $value ) { $datalist = new XmlSelect( false, $this->mName . '-datalist' ); $datalist->setTagName( 'datalist' ); $datalist->addOptions( $this->getOptions() ); return parent::getInputHTML( $value ) . $datalist->getHTML(); } function getInputOOUI( $value ) { $disabled = false; $allowedParams = array( 'tabindex' ); $attribs = $this->getAttributes( $allowedParams, array( 'tabindex' => 'tabIndex' ) ); if ( $this->mClass !== '' ) { $attribs['classes'] = array( $this->mClass ); } if ( !empty( $this->mParams['disabled'] ) ) { $disabled = true; } return new OOUI\ComboBoxInputWidget( array( 'name' => $this->mName, 'id' => $this->mID, 'options' => $this->getOptionsOOUI(), 'value' => strval( $value ), 'disabled' => $disabled, ) + $attribs ); } }