build: Update eslint-config-wikimedia to 0.10.0
[lhc/web/wiklou.git] / resources / src / mediawiki.special.search / search.js
1 /*!
2 * JavaScript for Special:Search
3 */
4 ( function () {
5 $( function () {
6 var $checkboxes, $headerLinks, updateHeaderLinks, searchWidget;
7
8 // Emulate HTML5 autofocus behavior in non HTML5 compliant browsers
9 if ( !( 'autofocus' in document.createElement( 'input' ) ) ) {
10 $( 'input[autofocus]' ).eq( 0 ).trigger( 'focus' );
11 }
12
13 // Attach handler for check all/none buttons
14 $checkboxes = $( '#powersearch input[id^=mw-search-ns]' );
15 $( '#mw-search-toggleall' ).on( 'click', function () {
16 $checkboxes.prop( 'checked', true );
17 } );
18 $( '#mw-search-togglenone' ).on( 'click', function () {
19 $checkboxes.prop( 'checked', false );
20 } );
21
22 // Change the header search links to what user entered
23 $headerLinks = $( '.search-types a' );
24 searchWidget = OO.ui.infuse( $( '#searchText' ) );
25 updateHeaderLinks = function ( value ) {
26 $headerLinks.each( function () {
27 var parts = $( this ).attr( 'href' ).split( 'search=' ),
28 lastpart = '',
29 prefix = 'search=';
30 if ( parts.length > 1 && parts[ 1 ].indexOf( '&' ) !== -1 ) {
31 lastpart = parts[ 1 ].slice( parts[ 1 ].indexOf( '&' ) );
32 } else {
33 prefix = '&search=';
34 }
35 this.href = parts[ 0 ] + prefix + encodeURIComponent( value ) + lastpart;
36 } );
37 };
38 searchWidget.on( 'change', updateHeaderLinks );
39 updateHeaderLinks( searchWidget.getValue() );
40
41 // When saving settings, use the proper request method (POST instead of GET).
42 $( '#mw-search-powersearch-remember' ).on( 'change', function () {
43 this.form.method = this.checked ? 'post' : 'get';
44 } ).trigger( 'change' );
45
46 } );
47
48 }() );