wp/wp-includes/js/jquery/ui/selectmenu.js
changeset 19 3d72ae0968f4
parent 18 be944660c56a
child 21 48c4eec2b7e6
equal deleted inserted replaced
18:be944660c56a 19:3d72ae0968f4
     1 /*!
     1 /*!
     2  * jQuery UI Selectmenu 1.12.1
     2  * jQuery UI Selectmenu 1.13.1
     3  * http://jqueryui.com
     3  * http://jqueryui.com
     4  *
     4  *
     5  * Copyright jQuery Foundation and other contributors
     5  * Copyright jQuery Foundation and other contributors
     6  * Released under the MIT license.
     6  * Released under the MIT license.
     7  * http://jquery.org/license
     7  * http://jquery.org/license
     8  */
     8  */
     9 
     9 
    10 //>>label: Selectmenu
    10 //>>label: Selectmenu
    11 //>>group: Widgets
    11 //>>group: Widgets
    12 // jscs:disable maximumLineLength
    12 /* eslint-disable max-len */
    13 //>>description: Duplicates and extends the functionality of a native HTML select element, allowing it to be customizable in behavior and appearance far beyond the limitations of a native select.
    13 //>>description: Duplicates and extends the functionality of a native HTML select element, allowing it to be customizable in behavior and appearance far beyond the limitations of a native select.
    14 // jscs:enable maximumLineLength
    14 /* eslint-enable max-len */
    15 //>>docs: http://api.jqueryui.com/selectmenu/
    15 //>>docs: http://api.jqueryui.com/selectmenu/
    16 //>>demos: http://jqueryui.com/selectmenu/
    16 //>>demos: http://jqueryui.com/selectmenu/
    17 //>>css.structure: ../../themes/base/core.css
    17 //>>css.structure: ../../themes/base/core.css
    18 //>>css.structure: ../../themes/base/selectmenu.css, ../../themes/base/button.css
    18 //>>css.structure: ../../themes/base/selectmenu.css, ../../themes/base/button.css
    19 //>>css.theme: ../../themes/base/theme.css
    19 //>>css.theme: ../../themes/base/theme.css
    20 
    20 
    21 ( function( factory ) {
    21 ( function( factory ) {
       
    22 	"use strict";
       
    23 
    22 	if ( typeof define === "function" && define.amd ) {
    24 	if ( typeof define === "function" && define.amd ) {
    23 
    25 
    24 		// AMD. Register as an anonymous module.
    26 		// AMD. Register as an anonymous module.
    25 		define( [
    27 		define( [
    26 			"jquery",
    28 			"jquery",
    30 	} else {
    32 	} else {
    31 
    33 
    32 		// Browser globals
    34 		// Browser globals
    33 		factory( jQuery );
    35 		factory( jQuery );
    34 	}
    36 	}
    35 }( function( $ ) {
    37 } )( function( $ ) {
       
    38 "use strict";
    36 
    39 
    37 return $.widget( "ui.selectmenu", [ $.ui.formResetMixin, {
    40 return $.widget( "ui.selectmenu", [ $.ui.formResetMixin, {
    38 	version: "1.12.1",
    41 	version: "1.13.1",
    39 	defaultElement: "<select>",
    42 	defaultElement: "<select>",
    40 	options: {
    43 	options: {
    41 		appendTo: null,
    44 		appendTo: null,
    42 		classes: {
    45 		classes: {
    43 			"ui-selectmenu-button-open": "ui-corner-top",
    46 			"ui-selectmenu-button-open": "ui-corner-top",
    88 
    91 
    89 		// Associate existing label with the new button
    92 		// Associate existing label with the new button
    90 		this.labels = this.element.labels().attr( "for", this.ids.button );
    93 		this.labels = this.element.labels().attr( "for", this.ids.button );
    91 		this._on( this.labels, {
    94 		this._on( this.labels, {
    92 			click: function( event ) {
    95 			click: function( event ) {
    93 				this.button.focus();
    96 				this.button.trigger( "focus" );
    94 				event.preventDefault();
    97 				event.preventDefault();
    95 			}
    98 			}
    96 		} );
    99 		} );
    97 
   100 
    98 		// Hide original select element
   101 		// Hide original select element
   222 		this._renderMenu( this.menu, this.items );
   225 		this._renderMenu( this.menu, this.items );
   223 
   226 
   224 		this.menuInstance.refresh();
   227 		this.menuInstance.refresh();
   225 		this.menuItems = this.menu.find( "li" )
   228 		this.menuItems = this.menu.find( "li" )
   226 			.not( ".ui-selectmenu-optgroup" )
   229 			.not( ".ui-selectmenu-optgroup" )
   227 				.find( ".ui-menu-item-wrapper" );
   230 			.find( ".ui-menu-item-wrapper" );
   228 
   231 
   229 		this._rendered = true;
   232 		this._rendered = true;
   230 
   233 
   231 		if ( !options.length ) {
   234 		if ( !options.length ) {
   232 			return;
   235 			return;
   398 		if ( window.getSelection ) {
   401 		if ( window.getSelection ) {
   399 			selection = window.getSelection();
   402 			selection = window.getSelection();
   400 			selection.removeAllRanges();
   403 			selection.removeAllRanges();
   401 			selection.addRange( this.range );
   404 			selection.addRange( this.range );
   402 
   405 
   403 		// Support: IE8
   406 			// Support: IE8
   404 		} else {
   407 		} else {
   405 			this.range.select();
   408 			this.range.select();
   406 		}
   409 		}
   407 
   410 
   408 		// Support: IE
   411 		// Support: IE
   416 			if ( !this.isOpen ) {
   419 			if ( !this.isOpen ) {
   417 				return;
   420 				return;
   418 			}
   421 			}
   419 
   422 
   420 			if ( !$( event.target ).closest( ".ui-selectmenu-menu, #" +
   423 			if ( !$( event.target ).closest( ".ui-selectmenu-menu, #" +
   421 					$.ui.escapeSelector( this.ids.button ) ).length ) {
   424 				$.escapeSelector( this.ids.button ) ).length ) {
   422 				this.close( event );
   425 				this.close( event );
   423 			}
   426 			}
   424 		}
   427 		}
   425 	},
   428 	},
   426 
   429 
   434 				selection = window.getSelection();
   437 				selection = window.getSelection();
   435 				if ( selection.rangeCount ) {
   438 				if ( selection.rangeCount ) {
   436 					this.range = selection.getRangeAt( 0 );
   439 					this.range = selection.getRangeAt( 0 );
   437 				}
   440 				}
   438 
   441 
   439 			// Support: IE8
   442 				// Support: IE8
   440 			} else {
   443 			} else {
   441 				this.range = document.selection.createRange();
   444 				this.range = document.selection.createRange();
   442 			}
   445 			}
   443 		},
   446 		},
   444 
   447 
   448 		},
   451 		},
   449 
   452 
   450 		keydown: function( event ) {
   453 		keydown: function( event ) {
   451 			var preventDefault = true;
   454 			var preventDefault = true;
   452 			switch ( event.keyCode ) {
   455 			switch ( event.keyCode ) {
   453 			case $.ui.keyCode.TAB:
   456 				case $.ui.keyCode.TAB:
   454 			case $.ui.keyCode.ESCAPE:
   457 				case $.ui.keyCode.ESCAPE:
   455 				this.close( event );
   458 					this.close( event );
   456 				preventDefault = false;
   459 					preventDefault = false;
   457 				break;
   460 					break;
   458 			case $.ui.keyCode.ENTER:
   461 				case $.ui.keyCode.ENTER:
   459 				if ( this.isOpen ) {
   462 					if ( this.isOpen ) {
   460 					this._selectFocusedItem( event );
   463 						this._selectFocusedItem( event );
   461 				}
   464 					}
   462 				break;
   465 					break;
   463 			case $.ui.keyCode.UP:
   466 				case $.ui.keyCode.UP:
   464 				if ( event.altKey ) {
   467 					if ( event.altKey ) {
   465 					this._toggle( event );
   468 						this._toggle( event );
   466 				} else {
   469 					} else {
       
   470 						this._move( "prev", event );
       
   471 					}
       
   472 					break;
       
   473 				case $.ui.keyCode.DOWN:
       
   474 					if ( event.altKey ) {
       
   475 						this._toggle( event );
       
   476 					} else {
       
   477 						this._move( "next", event );
       
   478 					}
       
   479 					break;
       
   480 				case $.ui.keyCode.SPACE:
       
   481 					if ( this.isOpen ) {
       
   482 						this._selectFocusedItem( event );
       
   483 					} else {
       
   484 						this._toggle( event );
       
   485 					}
       
   486 					break;
       
   487 				case $.ui.keyCode.LEFT:
   467 					this._move( "prev", event );
   488 					this._move( "prev", event );
   468 				}
   489 					break;
   469 				break;
   490 				case $.ui.keyCode.RIGHT:
   470 			case $.ui.keyCode.DOWN:
       
   471 				if ( event.altKey ) {
       
   472 					this._toggle( event );
       
   473 				} else {
       
   474 					this._move( "next", event );
   491 					this._move( "next", event );
   475 				}
   492 					break;
   476 				break;
   493 				case $.ui.keyCode.HOME:
   477 			case $.ui.keyCode.SPACE:
   494 				case $.ui.keyCode.PAGE_UP:
   478 				if ( this.isOpen ) {
   495 					this._move( "first", event );
   479 					this._selectFocusedItem( event );
   496 					break;
   480 				} else {
   497 				case $.ui.keyCode.END:
   481 					this._toggle( event );
   498 				case $.ui.keyCode.PAGE_DOWN:
   482 				}
   499 					this._move( "last", event );
   483 				break;
   500 					break;
   484 			case $.ui.keyCode.LEFT:
   501 				default:
   485 				this._move( "prev", event );
   502 					this.menu.trigger( event );
   486 				break;
   503 					preventDefault = false;
   487 			case $.ui.keyCode.RIGHT:
       
   488 				this._move( "next", event );
       
   489 				break;
       
   490 			case $.ui.keyCode.HOME:
       
   491 			case $.ui.keyCode.PAGE_UP:
       
   492 				this._move( "first", event );
       
   493 				break;
       
   494 			case $.ui.keyCode.END:
       
   495 			case $.ui.keyCode.PAGE_DOWN:
       
   496 				this._move( "last", event );
       
   497 				break;
       
   498 			default:
       
   499 				this.menu.trigger( event );
       
   500 				preventDefault = false;
       
   501 			}
   504 			}
   502 
   505 
   503 			if ( preventDefault ) {
   506 			if ( preventDefault ) {
   504 				event.preventDefault();
   507 				event.preventDefault();
   505 			}
   508 			}
   647 
   650 
   648 	_parseOptions: function( options ) {
   651 	_parseOptions: function( options ) {
   649 		var that = this,
   652 		var that = this,
   650 			data = [];
   653 			data = [];
   651 		options.each( function( index, item ) {
   654 		options.each( function( index, item ) {
       
   655 			if ( item.hidden ) {
       
   656 				return;
       
   657 			}
       
   658 
   652 			data.push( that._parseOption( $( item ), index ) );
   659 			data.push( that._parseOption( $( item ), index ) );
   653 		} );
   660 		} );
   654 		this.items = data;
   661 		this.items = data;
   655 	},
   662 	},
   656 
   663 
   675 		this.element.removeUniqueId();
   682 		this.element.removeUniqueId();
   676 		this.labels.attr( "for", this.ids.element );
   683 		this.labels.attr( "for", this.ids.element );
   677 	}
   684 	}
   678 } ] );
   685 } ] );
   679 
   686 
   680 } ) );
   687 } );