Typing a search query into the main box on Special:Search
causes the search to be performed for the first autocomplete
result, rather than the typed query. The first autocomplet
result should only be searched for if explicitly selected with
the mouse or arrow key.
This reverts commit 7882e3b660.
Bug: T171112
Change-Id: I1af6ba90542fafe3ed1aeca420e9d6df6612f7d0
74 lines
2.3 KiB
PHP
74 lines
2.3 KiB
PHP
<?php
|
||
/**
|
||
* MediaWiki Widgets – SearchInputWidget class.
|
||
*
|
||
* @copyright 2011-2015 MediaWiki Widgets Team and others; see AUTHORS.txt
|
||
* @license The MIT License (MIT); see LICENSE.txt
|
||
*/
|
||
namespace MediaWiki\Widget;
|
||
|
||
/**
|
||
* Search input widget.
|
||
*/
|
||
class SearchInputWidget extends TitleInputWidget {
|
||
|
||
protected $pushPending = false;
|
||
protected $performSearchOnClick = true;
|
||
protected $validateTitle = false;
|
||
protected $highlightFirst = false;
|
||
protected $dataLocation = 'header';
|
||
|
||
/**
|
||
* @param array $config Configuration options
|
||
* @param int|null $config['pushPending'] Whether the input should be visually marked as
|
||
* "pending", while requesting suggestions (default: false)
|
||
* @param boolean|null $config['performSearchOnClick'] If true, the script will start a search
|
||
* whenever a user hits a suggestion. If false, the text of the suggestion is inserted into the
|
||
* text field only (default: true)
|
||
* @param string $config['dataLocation'] Where the search input field will be
|
||
* used (header or content, default: header)
|
||
*/
|
||
public function __construct( array $config = [] ) {
|
||
$config = array_merge( [
|
||
'maxLength' => null,
|
||
'icon' => 'search',
|
||
], $config );
|
||
|
||
// Parent constructor
|
||
parent::__construct( $config );
|
||
|
||
// Properties, which are ignored in PHP and just shipped back to JS
|
||
if ( isset( $config['pushPending'] ) ) {
|
||
$this->pushPending = $config['pushPending'];
|
||
}
|
||
|
||
if ( isset( $config['performSearchOnClick'] ) ) {
|
||
$this->performSearchOnClick = $config['performSearchOnClick'];
|
||
}
|
||
|
||
if ( isset( $config['dataLocation'] ) ) {
|
||
// identifies the location of the search bar for tracking purposes
|
||
$this->dataLocation = $config['dataLocation'];
|
||
}
|
||
|
||
// Initialization
|
||
$this->addClasses( [ 'mw-widget-searchInputWidget' ] );
|
||
}
|
||
|
||
protected function getInputElement( $config ) {
|
||
return ( new \OOUI\Tag( 'input' ) )->setAttributes( [ 'type' => 'search' ] );
|
||
}
|
||
|
||
protected function getJavaScriptClassName() {
|
||
return 'mw.widgets.SearchInputWidget';
|
||
}
|
||
|
||
public function getConfig( &$config ) {
|
||
$config['pushPending'] = $this->pushPending;
|
||
$config['performSearchOnClick'] = $this->performSearchOnClick;
|
||
if ( $this->dataLocation ) {
|
||
$config['dataLocation'] = $this->dataLocation;
|
||
}
|
||
return parent::getConfig( $config );
|
||
}
|
||
}
|