From d9022f63880ce039446fba8364f68e656b7bf4cb Mon Sep 17 00:00:00 2001 From: Pierre Schmitz Date: Thu, 3 May 2012 13:01:35 +0200 Subject: Update to MediaWiki 1.19.0 --- resources/jquery/jquery.suggestions.js | 150 ++++++++++++++++----------------- 1 file changed, 75 insertions(+), 75 deletions(-) (limited to 'resources/jquery/jquery.suggestions.js') diff --git a/resources/jquery/jquery.suggestions.js b/resources/jquery/jquery.suggestions.js index 90cf53b2..55c30010 100644 --- a/resources/jquery/jquery.suggestions.js +++ b/resources/jquery/jquery.suggestions.js @@ -4,36 +4,36 @@ * Usage: * * Set options: - * $('#textbox').suggestions( { option1: value1, option2: value2 } ); - * $('#textbox').suggestions( option, value ); + * $( '#textbox' ).suggestions( { option1: value1, option2: value2 } ); + * $( '#textbox' ).suggestions( option, value ); * Get option: - * value = $('#textbox').suggestions( option ); + * value = $( '#textbox' ).suggestions( option ); * Initialize: - * $('#textbox').suggestions(); + * $( '#textbox' ).suggestions(); * * Options: * * fetch(query): Callback that should fetch suggestions and set the suggestions property. Executed in the context of the - * textbox - * Type: Function + * textbox + * Type: Function * cancel: Callback function to call when any pending asynchronous suggestions fetches should be canceled. - * Executed in the context of the textbox + * Executed in the context of the textbox * Type: Function * special: Set of callbacks for rendering and selecting * Type: Object of Functions 'render' and 'select' * result: Set of callbacks for rendering and selecting * Type: Object of Functions 'render' and 'select' * $region: jQuery selection of element to place the suggestions below and match width of - * Type: jQuery Object, Default: $(this) + * Type: jQuery Object, Default: $(this) * suggestions: Suggestions to display - * Type: Array of strings + * Type: Array of strings * maxRows: Maximum number of suggestions to display at one time - * Type: Number, Range: 1 - 100, Default: 7 + * Type: Number, Range: 1 - 100, Default: 7 * delay: Number of ms to wait for the user to stop typing - * Type: Number, Range: 0 - 1200, Default: 120 + * Type: Number, Range: 0 - 1200, Default: 120 * submitOnClick: Whether to submit the form containing the textbox when a suggestion is clicked * Type: Boolean, Default: false - * maxExpandFactor: Maximum suggestions box width relative to the textbox width. If set to e.g. 2, the suggestions box + * maxExpandFactor: Maximum suggestions box width relative to the textbox width. If set to e.g. 2, the suggestions box * will never be grown beyond 2 times the width of the textbox. * Type: Number, Range: 1 - infinity, Default: 3 * positionFromLeft: Whether to position the suggestion box with the left attribute or the right @@ -52,7 +52,7 @@ $.suggestions = { if ( context.data.timerID != null ) { clearTimeout( context.data.timerID ); } - if ( typeof context.config.cancel == 'function' ) { + if ( $.isFunction( context.config.cancel ) ) { context.config.cancel.call( context.data.$textbox ); } }, @@ -66,7 +66,7 @@ $.suggestions = { }, /** * Ask the user-specified callback for new suggestions. Any previous delayed call to this function still pending - * will be canceled. If the value in the textbox is empty or hasn't changed since the last time suggestions were fetched, this + * will be canceled. If the value in the textbox is empty or hasn't changed since the last time suggestions were fetched, this * function does nothing. * @param {Boolean} delayed Whether or not to delay this by the currently configured amount of time */ @@ -74,12 +74,12 @@ $.suggestions = { // Only fetch if the value in the textbox changed and is not empty // if the textbox is empty then clear the result div, but leave other settings intouched function maybeFetch() { - if ( context.data.$textbox.val().length == 0 ) { + if ( context.data.$textbox.val().length === 0 ) { context.data.$container.hide(); context.data.prevText = ''; } else if ( context.data.$textbox.val() !== context.data.prevText ) { - if ( typeof context.config.fetch == 'function' ) { - context.data.prevText = context.data.$textbox.val(); + if ( typeof context.config.fetch === 'function' ) { + context.data.prevText = context.data.$textbox.val(); context.config.fetch.call( context.data.$textbox, context.data.$textbox.val() ); } } @@ -99,7 +99,7 @@ $.suggestions = { }, special: function( context ) { // Allow custom rendering - but otherwise don't do any rendering - if ( typeof context.config.special.render == 'function' ) { + if ( typeof context.config.special.render === 'function' ) { // Wait for the browser to update the value setTimeout( function() { // Render special @@ -126,8 +126,8 @@ $.suggestions = { case 'suggestions': context.config[property] = value; // Update suggestions - if ( typeof context.data !== 'undefined' ) { - if ( context.data.$textbox.val().length == 0 ) { + if ( context.data !== undefined ) { + if ( context.data.$textbox.val().length === 0 ) { // Hide the div when no suggestion exist context.data.$container.hide(); } else { @@ -135,17 +135,17 @@ $.suggestions = { context.data.$container.show(); // Update the size and position of the list var newCSS = { - 'top': context.config.$region.offset().top + context.config.$region.outerHeight(), - 'bottom': 'auto', - 'width': context.config.$region.outerWidth(), - 'height': 'auto' + top: context.config.$region.offset().top + context.config.$region.outerHeight(), + bottom: 'auto', + width: context.config.$region.outerWidth(), + height: 'auto' }; if ( context.config.positionFromLeft ) { - newCSS['left'] = context.config.$region.offset().left; - newCSS['right'] = 'auto'; + newCSS.left = context.config.$region.offset().left; + newCSS.right = 'auto'; } else { - newCSS['left'] = 'auto'; - newCSS['right'] = $( 'body' ).width() - ( context.config.$region.offset().left + context.config.$region.outerWidth() ); + newCSS.left = 'auto'; + newCSS.right = $( 'body' ).width() - ( context.config.$region.offset().left + context.config.$region.outerWidth() ); } context.data.$container.css( newCSS ); var $results = context.data.$container.children( '.suggestions-results' ); @@ -155,7 +155,7 @@ $.suggestions = { var matchedText = null; for ( var i = 0; i < context.config.suggestions.length; i++ ) { var text = context.config.suggestions[i]; - var $result = $( '
' ) + var $result = $( '
' ) .addClass( 'suggestions-result' ) .attr( 'rel', i ) .data( 'text', context.config.suggestions[i] ) @@ -167,18 +167,18 @@ $.suggestions = { } ) .appendTo( $results ); // Allow custom rendering - if ( typeof context.config.result.render == 'function' ) { + if ( typeof context.config.result.render === 'function' ) { context.config.result.render.call( $result, context.config.suggestions[i] ); } else { // Add with text if( context.config.highlightInput ) { matchedText = context.data.prevText; } - $result.append( $( '' ) + $result.append( $( '' ) .css( 'whiteSpace', 'nowrap' ) .text( text ) ); - + // Widen results box if needed // New width is only calculated here, applied later var $span = $result.children( 'span' ); @@ -223,25 +223,25 @@ $.suggestions = { highlight: function( context, result, updateTextbox ) { var selected = context.data.$container.find( '.suggestions-result-current' ); if ( !result.get || selected.get( 0 ) != result.get( 0 ) ) { - if ( result == 'prev' ) { + if ( result === 'prev' ) { if( selected.is( '.suggestions-special' ) ) { - result = context.data.$container.find( '.suggestions-result:last' ) + result = context.data.$container.find( '.suggestions-result:last' ); } else { result = selected.prev(); - if ( selected.length == 0 ) { + if ( selected.length === 0 ) { // we are at the beginning, so lets jump to the last item - if ( context.data.$container.find( '.suggestions-special' ).html() != "" ) { + if ( context.data.$container.find( '.suggestions-special' ).html() !== '' ) { result = context.data.$container.find( '.suggestions-special' ); } else { result = context.data.$container.find( '.suggestions-results div:last' ); } } } - } else if ( result == 'next' ) { - if ( selected.length == 0 ) { + } else if ( result === 'next' ) { + if ( selected.length === 0 ) { // No item selected, go to the first one result = context.data.$container.find( '.suggestions-results div:first' ); - if ( result.length == 0 && context.data.$container.find( '.suggestions-special' ).html() != "" ) { + if ( result.length === 0 && context.data.$container.find( '.suggestions-special' ).html() !== '' ) { // No suggestion exists, go to the special one directly result = context.data.$container.find( '.suggestions-special' ); } @@ -250,8 +250,8 @@ $.suggestions = { if ( selected.is( '.suggestions-special' ) ) { result = $( [] ); } else if ( - result.length == 0 && - context.data.$container.find( '.suggestions-special' ).html() != "" + result.length === 0 && + context.data.$container.find( '.suggestions-special' ).html() !== '' ) { // We were at the last item, jump to the specials! result = context.data.$container.find( '.suggestions-special' ); @@ -262,7 +262,7 @@ $.suggestions = { result.addClass( 'suggestions-result-current' ); } if ( updateTextbox ) { - if ( result.length == 0 || result.is( '.suggestions-special' ) ) { + if ( result.length === 0 || result.is( '.suggestions-special' ) ) { $.suggestions.restore( context ); } else { context.data.$textbox.val( result.data( 'text' ) ); @@ -278,8 +278,8 @@ $.suggestions = { * @param key Integer Code of key pressed */ keypress: function( e, context, key ) { - var wasVisible = context.data.$container.is( ':visible' ); - var preventDefault = false; + var wasVisible = context.data.$container.is( ':visible' ), + preventDefault = false; switch ( key ) { // Arrow down case 40: @@ -312,17 +312,17 @@ $.suggestions = { context.data.$container.hide(); preventDefault = wasVisible; selected = context.data.$container.find( '.suggestions-result-current' ); - if ( selected.size() == 0 || context.data.selectedWithMouse ) { - // if nothing is selected OR if something was selected with the mouse, + if ( selected.length === 0 || context.data.selectedWithMouse ) { + // if nothing is selected OR if something was selected with the mouse, // cancel any current requests and submit the form $.suggestions.cancel( context ); context.config.$region.closest( 'form' ).submit(); } else if ( selected.is( '.suggestions-special' ) ) { - if ( typeof context.config.special.select == 'function' ) { + if ( typeof context.config.special.select === 'function' ) { context.config.special.select.call( selected, context.data.$textbox ); } } else { - if ( typeof context.config.result.select == 'function' ) { + if ( typeof context.config.result.select === 'function' ) { $.suggestions.highlight( context, selected, true ); context.config.result.select.call( selected, context.data.$textbox ); } else { @@ -341,17 +341,17 @@ $.suggestions = { } }; $.fn.suggestions = function() { - + // Multi-context fields var returnValue = null; var args = arguments; - + $(this).each( function() { /* Construction / Loading */ - + var context = $(this).data( 'suggestions-context' ); - if ( typeof context == 'undefined' || context == null ) { + if ( context === undefined || context === null ) { context = { config: { 'fetch' : function() {}, @@ -369,17 +369,17 @@ $.fn.suggestions = function() { } }; } - + /* API */ - + // Handle various calling styles if ( args.length > 0 ) { - if ( typeof args[0] == 'object' ) { + if ( typeof args[0] === 'object' ) { // Apply set of properties for ( var key in args[0] ) { $.suggestions.configure( context, key, args[0][key] ); } - } else if ( typeof args[0] == 'string' ) { + } else if ( typeof args[0] === 'string' ) { if ( args.length > 1 ) { // Set property values $.suggestions.configure( context, args[0], args[1] ); @@ -389,10 +389,10 @@ $.fn.suggestions = function() { } } } - + /* Initialization */ - - if ( typeof context.data == 'undefined' ) { + + if ( context.data === undefined ) { context.data = { // ID of running timer 'timerID': null, @@ -407,23 +407,23 @@ $.fn.suggestions = function() { }; // Setup the css for positioning the results box var newCSS = { - 'top': Math.round( context.data.$textbox.offset().top + context.data.$textbox.outerHeight() ), - 'width': context.data.$textbox.outerWidth(), - 'display': 'none' + top: Math.round( context.data.$textbox.offset().top + context.data.$textbox.outerHeight() ), + width: context.data.$textbox.outerWidth(), + display: 'none' }; if ( context.config.positionFromLeft ) { - newCSS['left'] = context.config.$region.offset().left; - newCSS['right'] = 'auto'; + newCSS.left = context.config.$region.offset().left; + newCSS.right = 'auto'; } else { - newCSS['left'] = 'auto'; - newCSS['right'] = $( 'body' ).width() - ( context.config.$region.offset().left + context.config.$region.outerWidth() ); + newCSS.left = 'auto'; + newCSS.right = $( 'body' ).width() - ( context.config.$region.offset().left + context.config.$region.outerWidth() ); } - - context.data.$container = $( '
' ) + + context.data.$container = $( '
' ) .css( newCSS ) .addClass( 'suggestions' ) .append( - $( '
' ).addClass( 'suggestions-results' ) + $( '
' ).addClass( 'suggestions-results' ) // Can't use click() because the container div is hidden when the textbox loses focus. Instead, // listen for a mousedown followed by a mouseup on the same div .mousedown( function( e ) { @@ -438,14 +438,14 @@ $.fn.suggestions = function() { } $.suggestions.highlight( context, $result, true ); context.data.$container.hide(); - if ( typeof context.config.result.select == 'function' ) { + if ( typeof context.config.result.select === 'function' ) { context.config.result.select.call( $result, context.data.$textbox ); } context.data.$textbox.focus(); } ) ) .append( - $( '
' ).addClass( 'suggestions-special' ) + $( '
' ).addClass( 'suggestions-special' ) // Can't use click() because the container div is hidden when the textbox loses focus. Instead, // listen for a mousedown followed by a mouseup on the same div .mousedown( function( e ) { @@ -459,7 +459,7 @@ $.fn.suggestions = function() { return; } context.data.$container.hide(); - if ( typeof context.config.special.select == 'function' ) { + if ( typeof context.config.special.select === 'function' ) { context.config.special.select.call( $special, context.data.$textbox ); } context.data.$textbox.focus(); @@ -477,9 +477,9 @@ $.fn.suggestions = function() { .attr( 'autocomplete', 'off') .keydown( function( e ) { // Store key pressed to handle later - context.data.keypressed = ( e.keyCode == undefined ) ? e.which : e.keyCode; + context.data.keypressed = ( e.keyCode === undefined ) ? e.which : e.keyCode; context.data.keypressedCount = 0; - + switch ( context.data.keypressed ) { // This preventDefault logic is duplicated from // $.suggestions.keypress(), which sucks @@ -503,7 +503,7 @@ $.fn.suggestions = function() { .keyup( function( e ) { // Some browsers won't throw keypress() for arrow keys. If we got a keydown and a keyup without a // keypress in between, solve it - if ( context.data.keypressedCount == 0 ) { + if ( context.data.keypressedCount === 0 ) { $.suggestions.keypress( e, context, context.data.keypressed ); } } ) -- cgit v1.2.3-54-g00ecf