| | |
| | |
| | |
| | |
| | ( function( factory ) { |
| | "use strict"; |
| |
|
| | if ( typeof define === "function" && define.amd ) { |
| |
|
| | |
| | define( [ "jquery" ], factory ); |
| | } else { |
| |
|
| | |
| | factory( jQuery ); |
| | } |
| | } ( function( $ ) { |
| | "use strict"; |
| |
|
| | |
| | $.ui = $.ui || {}; |
| |
|
| | $.ui.version = "1.13.3"; |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | |
| | |
| | |
| | |
| |
|
| | $.extend( $.expr.pseudos, { |
| | data: $.expr.createPseudo ? |
| | $.expr.createPseudo( function( dataName ) { |
| | return function( elem ) { |
| | return !!$.data( elem, dataName ); |
| | }; |
| | } ) : |
| |
|
| | |
| | function( elem, i, match ) { |
| | return !!$.data( elem, match[ 3 ] ); |
| | } |
| | } ); |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | |
| | |
| | |
| | |
| |
|
| | |
| | $.fn.extend( { |
| | disableSelection: ( function() { |
| | var eventType = "onselectstart" in document.createElement( "div" ) ? |
| | "selectstart" : |
| | "mousedown"; |
| |
|
| | return function() { |
| | return this.on( eventType + ".ui-disableSelection", function( event ) { |
| | event.preventDefault(); |
| | } ); |
| | }; |
| | } )(), |
| |
|
| | enableSelection: function() { |
| | return this.off( ".ui-disableSelection" ); |
| | } |
| | } ); |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | |
| | |
| | |
| | |
| |
|
| | |
| | $.ui.focusable = function( element, hasTabindex ) { |
| | var map, mapName, img, focusableIfVisible, fieldset, |
| | nodeName = element.nodeName.toLowerCase(); |
| |
|
| | if ( "area" === nodeName ) { |
| | map = element.parentNode; |
| | mapName = map.name; |
| | if ( !element.href || !mapName || map.nodeName.toLowerCase() !== "map" ) { |
| | return false; |
| | } |
| | img = $( "img[usemap='#" + mapName + "']" ); |
| | return img.length > 0 && img.is( ":visible" ); |
| | } |
| |
|
| | if ( /^(input|select|textarea|button|object)$/.test( nodeName ) ) { |
| | focusableIfVisible = !element.disabled; |
| |
|
| | if ( focusableIfVisible ) { |
| |
|
| | |
| | |
| | |
| | |
| | fieldset = $( element ).closest( "fieldset" )[ 0 ]; |
| | if ( fieldset ) { |
| | focusableIfVisible = !fieldset.disabled; |
| | } |
| | } |
| | } else if ( "a" === nodeName ) { |
| | focusableIfVisible = element.href || hasTabindex; |
| | } else { |
| | focusableIfVisible = hasTabindex; |
| | } |
| |
|
| | return focusableIfVisible && $( element ).is( ":visible" ) && visible( $( element ) ); |
| | }; |
| |
|
| | |
| | |
| | function visible( element ) { |
| | var visibility = element.css( "visibility" ); |
| | while ( visibility === "inherit" ) { |
| | element = element.parent(); |
| | visibility = element.css( "visibility" ); |
| | } |
| | return visibility === "visible"; |
| | } |
| |
|
| | $.extend( $.expr.pseudos, { |
| | focusable: function( element ) { |
| | return $.ui.focusable( element, $.attr( element, "tabindex" ) != null ); |
| | } |
| | } ); |
| |
|
| | |
| | |
| | |
| | $.fn._form = function() { |
| | return typeof this[ 0 ].form === "string" ? this.closest( "form" ) : $( this[ 0 ].form ); |
| | }; |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | |
| | |
| | |
| | |
| |
|
| | $.ui.formResetMixin = { |
| | _formResetHandler: function() { |
| | var form = $( this ); |
| |
|
| | |
| | setTimeout( function() { |
| | var instances = form.data( "ui-form-reset-instances" ); |
| | $.each( instances, function() { |
| | this.refresh(); |
| | } ); |
| | } ); |
| | }, |
| |
|
| | _bindFormResetHandler: function() { |
| | this.form = this.element._form(); |
| | if ( !this.form.length ) { |
| | return; |
| | } |
| |
|
| | var instances = this.form.data( "ui-form-reset-instances" ) || []; |
| | if ( !instances.length ) { |
| |
|
| | |
| | this.form.on( "reset.ui-form-reset", this._formResetHandler ); |
| | } |
| | instances.push( this ); |
| | this.form.data( "ui-form-reset-instances", instances ); |
| | }, |
| |
|
| | _unbindFormResetHandler: function() { |
| | if ( !this.form.length ) { |
| | return; |
| | } |
| |
|
| | var instances = this.form.data( "ui-form-reset-instances" ); |
| | instances.splice( $.inArray( this, instances ), 1 ); |
| | if ( instances.length ) { |
| | this.form.data( "ui-form-reset-instances", instances ); |
| | } else { |
| | this.form |
| | .removeData( "ui-form-reset-instances" ) |
| | .off( "reset.ui-form-reset" ); |
| | } |
| | } |
| | }; |
| |
|
| | |
| | |
| | $.ui.ie = !!/msie [\w.]+/.exec( navigator.userAgent.toLowerCase() ); |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | |
| | |
| | |
| |
|
| | |
| | |
| | if ( !$.expr.pseudos ) { |
| | $.expr.pseudos = $.expr[ ":" ]; |
| | } |
| |
|
| | |
| | |
| | if ( !$.uniqueSort ) { |
| | $.uniqueSort = $.unique; |
| | } |
| |
|
| | |
| | |
| | |
| | if ( !$.escapeSelector ) { |
| |
|
| | |
| | |
| | var rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g; |
| |
|
| | var fcssescape = function( ch, asCodePoint ) { |
| | if ( asCodePoint ) { |
| |
|
| | |
| | if ( ch === "\0" ) { |
| | return "\uFFFD"; |
| | } |
| |
|
| | |
| | return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; |
| | } |
| |
|
| | |
| | return "\\" + ch; |
| | }; |
| |
|
| | $.escapeSelector = function( sel ) { |
| | return ( sel + "" ).replace( rcssescape, fcssescape ); |
| | }; |
| | } |
| |
|
| | |
| | |
| | if ( !$.fn.even || !$.fn.odd ) { |
| | $.fn.extend( { |
| | even: function() { |
| | return this.filter( function( i ) { |
| | return i % 2 === 0; |
| | } ); |
| | }, |
| | odd: function() { |
| | return this.filter( function( i ) { |
| | return i % 2 === 1; |
| | } ); |
| | } |
| | } ); |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | |
| | |
| | |
| | |
| |
|
| | $.ui.keyCode = { |
| | BACKSPACE: 8, |
| | COMMA: 188, |
| | DELETE: 46, |
| | DOWN: 40, |
| | END: 35, |
| | ENTER: 13, |
| | ESCAPE: 27, |
| | HOME: 36, |
| | LEFT: 37, |
| | PAGE_DOWN: 34, |
| | PAGE_UP: 33, |
| | PERIOD: 190, |
| | RIGHT: 39, |
| | SPACE: 32, |
| | TAB: 9, |
| | UP: 38 |
| | }; |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | |
| | |
| | |
| | |
| |
|
| | $.fn.labels = function() { |
| | var ancestor, selector, id, labels, ancestors; |
| |
|
| | if ( !this.length ) { |
| | return this.pushStack( [] ); |
| | } |
| |
|
| | |
| | if ( this[ 0 ].labels && this[ 0 ].labels.length ) { |
| | return this.pushStack( this[ 0 ].labels ); |
| | } |
| |
|
| | |
| | |
| | |
| | labels = this.eq( 0 ).parents( "label" ); |
| |
|
| | |
| | id = this.attr( "id" ); |
| | if ( id ) { |
| |
|
| | |
| | |
| | ancestor = this.eq( 0 ).parents().last(); |
| |
|
| | |
| | ancestors = ancestor.add( ancestor.length ? ancestor.siblings() : this.siblings() ); |
| |
|
| | |
| | selector = "label[for='" + $.escapeSelector( id ) + "']"; |
| |
|
| | labels = labels.add( ancestors.find( selector ).addBack( selector ) ); |
| |
|
| | } |
| |
|
| | |
| | return this.pushStack( labels ); |
| | }; |
| |
|
| | |
| | |
| | $.ui.plugin = { |
| | add: function( module, option, set ) { |
| | var i, |
| | proto = $.ui[ module ].prototype; |
| | for ( i in set ) { |
| | proto.plugins[ i ] = proto.plugins[ i ] || []; |
| | proto.plugins[ i ].push( [ option, set[ i ] ] ); |
| | } |
| | }, |
| | call: function( instance, name, args, allowDisconnected ) { |
| | var i, |
| | set = instance.plugins[ name ]; |
| |
|
| | if ( !set ) { |
| | return; |
| | } |
| |
|
| | if ( !allowDisconnected && ( !instance.element[ 0 ].parentNode || |
| | instance.element[ 0 ].parentNode.nodeType === 11 ) ) { |
| | return; |
| | } |
| |
|
| | for ( i = 0; i < set.length; i++ ) { |
| | if ( instance.options[ set[ i ][ 0 ] ] ) { |
| | set[ i ][ 1 ].apply( instance.element, args ); |
| | } |
| | } |
| | } |
| | }; |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | |
| | |
| | |
| | |
| | |
| |
|
| | ( function() { |
| | var cachedScrollbarWidth, |
| | max = Math.max, |
| | abs = Math.abs, |
| | rhorizontal = /left|center|right/, |
| | rvertical = /top|center|bottom/, |
| | roffset = /[\+\-]\d+(\.[\d]+)?%?/, |
| | rposition = /^\w+/, |
| | rpercent = /%$/, |
| | _position = $.fn.position; |
| |
|
| | function getOffsets( offsets, width, height ) { |
| | return [ |
| | parseFloat( offsets[ 0 ] ) * ( rpercent.test( offsets[ 0 ] ) ? width / 100 : 1 ), |
| | parseFloat( offsets[ 1 ] ) * ( rpercent.test( offsets[ 1 ] ) ? height / 100 : 1 ) |
| | ]; |
| | } |
| |
|
| | function parseCss( element, property ) { |
| | return parseInt( $.css( element, property ), 10 ) || 0; |
| | } |
| |
|
| | function isWindow( obj ) { |
| | return obj != null && obj === obj.window; |
| | } |
| |
|
| | function getDimensions( elem ) { |
| | var raw = elem[ 0 ]; |
| | if ( raw.nodeType === 9 ) { |
| | return { |
| | width: elem.width(), |
| | height: elem.height(), |
| | offset: { top: 0, left: 0 } |
| | }; |
| | } |
| | if ( isWindow( raw ) ) { |
| | return { |
| | width: elem.width(), |
| | height: elem.height(), |
| | offset: { top: elem.scrollTop(), left: elem.scrollLeft() } |
| | }; |
| | } |
| | if ( raw.preventDefault ) { |
| | return { |
| | width: 0, |
| | height: 0, |
| | offset: { top: raw.pageY, left: raw.pageX } |
| | }; |
| | } |
| | return { |
| | width: elem.outerWidth(), |
| | height: elem.outerHeight(), |
| | offset: elem.offset() |
| | }; |
| | } |
| |
|
| | $.position = { |
| | scrollbarWidth: function() { |
| | if ( cachedScrollbarWidth !== undefined ) { |
| | return cachedScrollbarWidth; |
| | } |
| | var w1, w2, |
| | div = $( "<div style=" + |
| | "'display:block;position:absolute;width:200px;height:200px;overflow:hidden;'>" + |
| | "<div style='height:300px;width:auto;'></div></div>" ), |
| | innerDiv = div.children()[ 0 ]; |
| |
|
| | $( "body" ).append( div ); |
| | w1 = innerDiv.offsetWidth; |
| | div.css( "overflow", "scroll" ); |
| |
|
| | w2 = innerDiv.offsetWidth; |
| |
|
| | if ( w1 === w2 ) { |
| | w2 = div[ 0 ].clientWidth; |
| | } |
| |
|
| | div.remove(); |
| |
|
| | return ( cachedScrollbarWidth = w1 - w2 ); |
| | }, |
| | getScrollInfo: function( within ) { |
| | var overflowX = within.isWindow || within.isDocument ? "" : |
| | within.element.css( "overflow-x" ), |
| | overflowY = within.isWindow || within.isDocument ? "" : |
| | within.element.css( "overflow-y" ), |
| | hasOverflowX = overflowX === "scroll" || |
| | ( overflowX === "auto" && within.width < within.element[ 0 ].scrollWidth ), |
| | hasOverflowY = overflowY === "scroll" || |
| | ( overflowY === "auto" && within.height < within.element[ 0 ].scrollHeight ); |
| | return { |
| | width: hasOverflowY ? $.position.scrollbarWidth() : 0, |
| | height: hasOverflowX ? $.position.scrollbarWidth() : 0 |
| | }; |
| | }, |
| | getWithinInfo: function( element ) { |
| | var withinElement = $( element || window ), |
| | isElemWindow = isWindow( withinElement[ 0 ] ), |
| | isDocument = !!withinElement[ 0 ] && withinElement[ 0 ].nodeType === 9, |
| | hasOffset = !isElemWindow && !isDocument; |
| | return { |
| | element: withinElement, |
| | isWindow: isElemWindow, |
| | isDocument: isDocument, |
| | offset: hasOffset ? $( element ).offset() : { left: 0, top: 0 }, |
| | scrollLeft: withinElement.scrollLeft(), |
| | scrollTop: withinElement.scrollTop(), |
| | width: withinElement.outerWidth(), |
| | height: withinElement.outerHeight() |
| | }; |
| | } |
| | }; |
| |
|
| | $.fn.position = function( options ) { |
| | if ( !options || !options.of ) { |
| | return _position.apply( this, arguments ); |
| | } |
| |
|
| | |
| | options = $.extend( {}, options ); |
| |
|
| | var atOffset, targetWidth, targetHeight, targetOffset, basePosition, dimensions, |
| |
|
| | |
| | target = typeof options.of === "string" ? |
| | $( document ).find( options.of ) : |
| | $( options.of ), |
| |
|
| | within = $.position.getWithinInfo( options.within ), |
| | scrollInfo = $.position.getScrollInfo( within ), |
| | collision = ( options.collision || "flip" ).split( " " ), |
| | offsets = {}; |
| |
|
| | dimensions = getDimensions( target ); |
| | if ( target[ 0 ].preventDefault ) { |
| |
|
| | |
| | options.at = "left top"; |
| | } |
| | targetWidth = dimensions.width; |
| | targetHeight = dimensions.height; |
| | targetOffset = dimensions.offset; |
| |
|
| | |
| | basePosition = $.extend( {}, targetOffset ); |
| |
|
| | |
| | |
| | $.each( [ "my", "at" ], function() { |
| | var pos = ( options[ this ] || "" ).split( " " ), |
| | horizontalOffset, |
| | verticalOffset; |
| |
|
| | if ( pos.length === 1 ) { |
| | pos = rhorizontal.test( pos[ 0 ] ) ? |
| | pos.concat( [ "center" ] ) : |
| | rvertical.test( pos[ 0 ] ) ? |
| | [ "center" ].concat( pos ) : |
| | [ "center", "center" ]; |
| | } |
| | pos[ 0 ] = rhorizontal.test( pos[ 0 ] ) ? pos[ 0 ] : "center"; |
| | pos[ 1 ] = rvertical.test( pos[ 1 ] ) ? pos[ 1 ] : "center"; |
| |
|
| | |
| | horizontalOffset = roffset.exec( pos[ 0 ] ); |
| | verticalOffset = roffset.exec( pos[ 1 ] ); |
| | offsets[ this ] = [ |
| | horizontalOffset ? horizontalOffset[ 0 ] : 0, |
| | verticalOffset ? verticalOffset[ 0 ] : 0 |
| | ]; |
| |
|
| | |
| | options[ this ] = [ |
| | rposition.exec( pos[ 0 ] )[ 0 ], |
| | rposition.exec( pos[ 1 ] )[ 0 ] |
| | ]; |
| | } ); |
| |
|
| | |
| | if ( collision.length === 1 ) { |
| | collision[ 1 ] = collision[ 0 ]; |
| | } |
| |
|
| | if ( options.at[ 0 ] === "right" ) { |
| | basePosition.left += targetWidth; |
| | } else if ( options.at[ 0 ] === "center" ) { |
| | basePosition.left += targetWidth / 2; |
| | } |
| |
|
| | if ( options.at[ 1 ] === "bottom" ) { |
| | basePosition.top += targetHeight; |
| | } else if ( options.at[ 1 ] === "center" ) { |
| | basePosition.top += targetHeight / 2; |
| | } |
| |
|
| | atOffset = getOffsets( offsets.at, targetWidth, targetHeight ); |
| | basePosition.left += atOffset[ 0 ]; |
| | basePosition.top += atOffset[ 1 ]; |
| |
|
| | return this.each( function() { |
| | var collisionPosition, using, |
| | elem = $( this ), |
| | elemWidth = elem.outerWidth(), |
| | elemHeight = elem.outerHeight(), |
| | marginLeft = parseCss( this, "marginLeft" ), |
| | marginTop = parseCss( this, "marginTop" ), |
| | collisionWidth = elemWidth + marginLeft + parseCss( this, "marginRight" ) + |
| | scrollInfo.width, |
| | collisionHeight = elemHeight + marginTop + parseCss( this, "marginBottom" ) + |
| | scrollInfo.height, |
| | position = $.extend( {}, basePosition ), |
| | myOffset = getOffsets( offsets.my, elem.outerWidth(), elem.outerHeight() ); |
| |
|
| | if ( options.my[ 0 ] === "right" ) { |
| | position.left -= elemWidth; |
| | } else if ( options.my[ 0 ] === "center" ) { |
| | position.left -= elemWidth / 2; |
| | } |
| |
|
| | if ( options.my[ 1 ] === "bottom" ) { |
| | position.top -= elemHeight; |
| | } else if ( options.my[ 1 ] === "center" ) { |
| | position.top -= elemHeight / 2; |
| | } |
| |
|
| | position.left += myOffset[ 0 ]; |
| | position.top += myOffset[ 1 ]; |
| |
|
| | collisionPosition = { |
| | marginLeft: marginLeft, |
| | marginTop: marginTop |
| | }; |
| |
|
| | $.each( [ "left", "top" ], function( i, dir ) { |
| | if ( $.ui.position[ collision[ i ] ] ) { |
| | $.ui.position[ collision[ i ] ][ dir ]( position, { |
| | targetWidth: targetWidth, |
| | targetHeight: targetHeight, |
| | elemWidth: elemWidth, |
| | elemHeight: elemHeight, |
| | collisionPosition: collisionPosition, |
| | collisionWidth: collisionWidth, |
| | collisionHeight: collisionHeight, |
| | offset: [ atOffset[ 0 ] + myOffset[ 0 ], atOffset [ 1 ] + myOffset[ 1 ] ], |
| | my: options.my, |
| | at: options.at, |
| | within: within, |
| | elem: elem |
| | } ); |
| | } |
| | } ); |
| |
|
| | if ( options.using ) { |
| |
|
| | |
| | using = function( props ) { |
| | var left = targetOffset.left - position.left, |
| | right = left + targetWidth - elemWidth, |
| | top = targetOffset.top - position.top, |
| | bottom = top + targetHeight - elemHeight, |
| | feedback = { |
| | target: { |
| | element: target, |
| | left: targetOffset.left, |
| | top: targetOffset.top, |
| | width: targetWidth, |
| | height: targetHeight |
| | }, |
| | element: { |
| | element: elem, |
| | left: position.left, |
| | top: position.top, |
| | width: elemWidth, |
| | height: elemHeight |
| | }, |
| | horizontal: right < 0 ? "left" : left > 0 ? "right" : "center", |
| | vertical: bottom < 0 ? "top" : top > 0 ? "bottom" : "middle" |
| | }; |
| | if ( targetWidth < elemWidth && abs( left + right ) < targetWidth ) { |
| | feedback.horizontal = "center"; |
| | } |
| | if ( targetHeight < elemHeight && abs( top + bottom ) < targetHeight ) { |
| | feedback.vertical = "middle"; |
| | } |
| | if ( max( abs( left ), abs( right ) ) > max( abs( top ), abs( bottom ) ) ) { |
| | feedback.important = "horizontal"; |
| | } else { |
| | feedback.important = "vertical"; |
| | } |
| | options.using.call( this, props, feedback ); |
| | }; |
| | } |
| |
|
| | elem.offset( $.extend( position, { using: using } ) ); |
| | } ); |
| | }; |
| |
|
| | $.ui.position = { |
| | fit: { |
| | left: function( position, data ) { |
| | var within = data.within, |
| | withinOffset = within.isWindow ? within.scrollLeft : within.offset.left, |
| | outerWidth = within.width, |
| | collisionPosLeft = position.left - data.collisionPosition.marginLeft, |
| | overLeft = withinOffset - collisionPosLeft, |
| | overRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset, |
| | newOverRight; |
| |
|
| | |
| | if ( data.collisionWidth > outerWidth ) { |
| |
|
| | |
| | if ( overLeft > 0 && overRight <= 0 ) { |
| | newOverRight = position.left + overLeft + data.collisionWidth - outerWidth - |
| | withinOffset; |
| | position.left += overLeft - newOverRight; |
| |
|
| | |
| | } else if ( overRight > 0 && overLeft <= 0 ) { |
| | position.left = withinOffset; |
| |
|
| | |
| | } else { |
| | if ( overLeft > overRight ) { |
| | position.left = withinOffset + outerWidth - data.collisionWidth; |
| | } else { |
| | position.left = withinOffset; |
| | } |
| | } |
| |
|
| | |
| | } else if ( overLeft > 0 ) { |
| | position.left += overLeft; |
| |
|
| | |
| | } else if ( overRight > 0 ) { |
| | position.left -= overRight; |
| |
|
| | |
| | } else { |
| | position.left = max( position.left - collisionPosLeft, position.left ); |
| | } |
| | }, |
| | top: function( position, data ) { |
| | var within = data.within, |
| | withinOffset = within.isWindow ? within.scrollTop : within.offset.top, |
| | outerHeight = data.within.height, |
| | collisionPosTop = position.top - data.collisionPosition.marginTop, |
| | overTop = withinOffset - collisionPosTop, |
| | overBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset, |
| | newOverBottom; |
| |
|
| | |
| | if ( data.collisionHeight > outerHeight ) { |
| |
|
| | |
| | if ( overTop > 0 && overBottom <= 0 ) { |
| | newOverBottom = position.top + overTop + data.collisionHeight - outerHeight - |
| | withinOffset; |
| | position.top += overTop - newOverBottom; |
| |
|
| | |
| | } else if ( overBottom > 0 && overTop <= 0 ) { |
| | position.top = withinOffset; |
| |
|
| | |
| | } else { |
| | if ( overTop > overBottom ) { |
| | position.top = withinOffset + outerHeight - data.collisionHeight; |
| | } else { |
| | position.top = withinOffset; |
| | } |
| | } |
| |
|
| | |
| | } else if ( overTop > 0 ) { |
| | position.top += overTop; |
| |
|
| | |
| | } else if ( overBottom > 0 ) { |
| | position.top -= overBottom; |
| |
|
| | |
| | } else { |
| | position.top = max( position.top - collisionPosTop, position.top ); |
| | } |
| | } |
| | }, |
| | flip: { |
| | left: function( position, data ) { |
| | var within = data.within, |
| | withinOffset = within.offset.left + within.scrollLeft, |
| | outerWidth = within.width, |
| | offsetLeft = within.isWindow ? within.scrollLeft : within.offset.left, |
| | collisionPosLeft = position.left - data.collisionPosition.marginLeft, |
| | overLeft = collisionPosLeft - offsetLeft, |
| | overRight = collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft, |
| | myOffset = data.my[ 0 ] === "left" ? |
| | -data.elemWidth : |
| | data.my[ 0 ] === "right" ? |
| | data.elemWidth : |
| | 0, |
| | atOffset = data.at[ 0 ] === "left" ? |
| | data.targetWidth : |
| | data.at[ 0 ] === "right" ? |
| | -data.targetWidth : |
| | 0, |
| | offset = -2 * data.offset[ 0 ], |
| | newOverRight, |
| | newOverLeft; |
| |
|
| | if ( overLeft < 0 ) { |
| | newOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth - |
| | outerWidth - withinOffset; |
| | if ( newOverRight < 0 || newOverRight < abs( overLeft ) ) { |
| | position.left += myOffset + atOffset + offset; |
| | } |
| | } else if ( overRight > 0 ) { |
| | newOverLeft = position.left - data.collisionPosition.marginLeft + myOffset + |
| | atOffset + offset - offsetLeft; |
| | if ( newOverLeft > 0 || abs( newOverLeft ) < overRight ) { |
| | position.left += myOffset + atOffset + offset; |
| | } |
| | } |
| | }, |
| | top: function( position, data ) { |
| | var within = data.within, |
| | withinOffset = within.offset.top + within.scrollTop, |
| | outerHeight = within.height, |
| | offsetTop = within.isWindow ? within.scrollTop : within.offset.top, |
| | collisionPosTop = position.top - data.collisionPosition.marginTop, |
| | overTop = collisionPosTop - offsetTop, |
| | overBottom = collisionPosTop + data.collisionHeight - outerHeight - offsetTop, |
| | top = data.my[ 1 ] === "top", |
| | myOffset = top ? |
| | -data.elemHeight : |
| | data.my[ 1 ] === "bottom" ? |
| | data.elemHeight : |
| | 0, |
| | atOffset = data.at[ 1 ] === "top" ? |
| | data.targetHeight : |
| | data.at[ 1 ] === "bottom" ? |
| | -data.targetHeight : |
| | 0, |
| | offset = -2 * data.offset[ 1 ], |
| | newOverTop, |
| | newOverBottom; |
| | if ( overTop < 0 ) { |
| | newOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight - |
| | outerHeight - withinOffset; |
| | if ( newOverBottom < 0 || newOverBottom < abs( overTop ) ) { |
| | position.top += myOffset + atOffset + offset; |
| | } |
| | } else if ( overBottom > 0 ) { |
| | newOverTop = position.top - data.collisionPosition.marginTop + myOffset + atOffset + |
| | offset - offsetTop; |
| | if ( newOverTop > 0 || abs( newOverTop ) < overBottom ) { |
| | position.top += myOffset + atOffset + offset; |
| | } |
| | } |
| | } |
| | }, |
| | flipfit: { |
| | left: function() { |
| | $.ui.position.flip.left.apply( this, arguments ); |
| | $.ui.position.fit.left.apply( this, arguments ); |
| | }, |
| | top: function() { |
| | $.ui.position.flip.top.apply( this, arguments ); |
| | $.ui.position.fit.top.apply( this, arguments ); |
| | } |
| | } |
| | }; |
| |
|
| | } )(); |
| |
|
| | |
| | $.ui.safeActiveElement = function( document ) { |
| | var activeElement; |
| |
|
| | |
| | |
| | try { |
| | activeElement = document.activeElement; |
| | } catch ( error ) { |
| | activeElement = document.body; |
| | } |
| |
|
| | |
| | |
| | |
| | if ( !activeElement ) { |
| | activeElement = document.body; |
| | } |
| |
|
| | |
| | |
| | |
| | if ( !activeElement.nodeName ) { |
| | activeElement = document.body; |
| | } |
| |
|
| | return activeElement; |
| | }; |
| |
|
| | |
| | $.ui.safeBlur = function( element ) { |
| |
|
| | |
| | |
| | if ( element && element.nodeName.toLowerCase() !== "body" ) { |
| | $( element ).trigger( "blur" ); |
| | } |
| | }; |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | |
| | |
| | |
| | |
| |
|
| | $.fn.scrollParent = function( includeHidden ) { |
| | var position = this.css( "position" ), |
| | excludeStaticParent = position === "absolute", |
| | overflowRegex = includeHidden ? /(auto|scroll|hidden)/ : /(auto|scroll)/, |
| | scrollParent = this.parents().filter( function() { |
| | var parent = $( this ); |
| | if ( excludeStaticParent && parent.css( "position" ) === "static" ) { |
| | return false; |
| | } |
| | return overflowRegex.test( parent.css( "overflow" ) + parent.css( "overflow-y" ) + |
| | parent.css( "overflow-x" ) ); |
| | } ).eq( 0 ); |
| |
|
| | return position === "fixed" || !scrollParent.length ? |
| | $( this[ 0 ].ownerDocument || document ) : |
| | scrollParent; |
| | }; |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | |
| | |
| | |
| | |
| |
|
| | $.extend( $.expr.pseudos, { |
| | tabbable: function( element ) { |
| | var tabIndex = $.attr( element, "tabindex" ), |
| | hasTabindex = tabIndex != null; |
| | return ( !hasTabindex || tabIndex >= 0 ) && $.ui.focusable( element, hasTabindex ); |
| | } |
| | } ); |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | |
| | |
| | |
| | |
| |
|
| | $.fn.extend( { |
| | uniqueId: ( function() { |
| | var uuid = 0; |
| |
|
| | return function() { |
| | return this.each( function() { |
| | if ( !this.id ) { |
| | this.id = "ui-id-" + ( ++uuid ); |
| | } |
| | } ); |
| | }; |
| | } )(), |
| |
|
| | removeUniqueId: function() { |
| | return this.each( function() { |
| | if ( /^ui-id-\d+$/.test( this.id ) ) { |
| | $( this ).removeAttr( "id" ); |
| | } |
| | } ); |
| | } |
| | } ); |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | |
| | |
| | |
| | |
| | |
| |
|
| | var widgetUuid = 0; |
| | var widgetHasOwnProperty = Array.prototype.hasOwnProperty; |
| | var widgetSlice = Array.prototype.slice; |
| |
|
| | $.cleanData = ( function( orig ) { |
| | return function( elems ) { |
| | var events, elem, i; |
| | for ( i = 0; ( elem = elems[ i ] ) != null; i++ ) { |
| |
|
| | |
| | events = $._data( elem, "events" ); |
| | if ( events && events.remove ) { |
| | $( elem ).triggerHandler( "remove" ); |
| | } |
| | } |
| | orig( elems ); |
| | }; |
| | } )( $.cleanData ); |
| |
|
| | $.widget = function( name, base, prototype ) { |
| | var existingConstructor, constructor, basePrototype; |
| |
|
| | |
| | |
| | var proxiedPrototype = {}; |
| |
|
| | var namespace = name.split( "." )[ 0 ]; |
| | name = name.split( "." )[ 1 ]; |
| | var fullName = namespace + "-" + name; |
| |
|
| | if ( !prototype ) { |
| | prototype = base; |
| | base = $.Widget; |
| | } |
| |
|
| | if ( Array.isArray( prototype ) ) { |
| | prototype = $.extend.apply( null, [ {} ].concat( prototype ) ); |
| | } |
| |
|
| | |
| | $.expr.pseudos[ fullName.toLowerCase() ] = function( elem ) { |
| | return !!$.data( elem, fullName ); |
| | }; |
| |
|
| | $[ namespace ] = $[ namespace ] || {}; |
| | existingConstructor = $[ namespace ][ name ]; |
| | constructor = $[ namespace ][ name ] = function( options, element ) { |
| |
|
| | |
| | if ( !this || !this._createWidget ) { |
| | return new constructor( options, element ); |
| | } |
| |
|
| | |
| | |
| | if ( arguments.length ) { |
| | this._createWidget( options, element ); |
| | } |
| | }; |
| |
|
| | |
| | $.extend( constructor, existingConstructor, { |
| | version: prototype.version, |
| |
|
| | |
| | |
| | _proto: $.extend( {}, prototype ), |
| |
|
| | |
| | |
| | _childConstructors: [] |
| | } ); |
| |
|
| | basePrototype = new base(); |
| |
|
| | |
| | |
| | |
| | basePrototype.options = $.widget.extend( {}, basePrototype.options ); |
| | $.each( prototype, function( prop, value ) { |
| | if ( typeof value !== "function" ) { |
| | proxiedPrototype[ prop ] = value; |
| | return; |
| | } |
| | proxiedPrototype[ prop ] = ( function() { |
| | function _super() { |
| | return base.prototype[ prop ].apply( this, arguments ); |
| | } |
| |
|
| | function _superApply( args ) { |
| | return base.prototype[ prop ].apply( this, args ); |
| | } |
| |
|
| | return function() { |
| | var __super = this._super; |
| | var __superApply = this._superApply; |
| | var returnValue; |
| |
|
| | this._super = _super; |
| | this._superApply = _superApply; |
| |
|
| | returnValue = value.apply( this, arguments ); |
| |
|
| | this._super = __super; |
| | this._superApply = __superApply; |
| |
|
| | return returnValue; |
| | }; |
| | } )(); |
| | } ); |
| | constructor.prototype = $.widget.extend( basePrototype, { |
| |
|
| | |
| | |
| | |
| | widgetEventPrefix: existingConstructor ? ( basePrototype.widgetEventPrefix || name ) : name |
| | }, proxiedPrototype, { |
| | constructor: constructor, |
| | namespace: namespace, |
| | widgetName: name, |
| | widgetFullName: fullName |
| | } ); |
| |
|
| | |
| | |
| | |
| | |
| | if ( existingConstructor ) { |
| | $.each( existingConstructor._childConstructors, function( i, child ) { |
| | var childPrototype = child.prototype; |
| |
|
| | |
| | |
| | $.widget( childPrototype.namespace + "." + childPrototype.widgetName, constructor, |
| | child._proto ); |
| | } ); |
| |
|
| | |
| | |
| | delete existingConstructor._childConstructors; |
| | } else { |
| | base._childConstructors.push( constructor ); |
| | } |
| |
|
| | $.widget.bridge( name, constructor ); |
| |
|
| | return constructor; |
| | }; |
| |
|
| | $.widget.extend = function( target ) { |
| | var input = widgetSlice.call( arguments, 1 ); |
| | var inputIndex = 0; |
| | var inputLength = input.length; |
| | var key; |
| | var value; |
| |
|
| | for ( ; inputIndex < inputLength; inputIndex++ ) { |
| | for ( key in input[ inputIndex ] ) { |
| | value = input[ inputIndex ][ key ]; |
| | if ( widgetHasOwnProperty.call( input[ inputIndex ], key ) && value !== undefined ) { |
| |
|
| | |
| | if ( $.isPlainObject( value ) ) { |
| | target[ key ] = $.isPlainObject( target[ key ] ) ? |
| | $.widget.extend( {}, target[ key ], value ) : |
| |
|
| | |
| | $.widget.extend( {}, value ); |
| |
|
| | |
| | } else { |
| | target[ key ] = value; |
| | } |
| | } |
| | } |
| | } |
| | return target; |
| | }; |
| |
|
| | $.widget.bridge = function( name, object ) { |
| | var fullName = object.prototype.widgetFullName || name; |
| | $.fn[ name ] = function( options ) { |
| | var isMethodCall = typeof options === "string"; |
| | var args = widgetSlice.call( arguments, 1 ); |
| | var returnValue = this; |
| |
|
| | if ( isMethodCall ) { |
| |
|
| | |
| | |
| | if ( !this.length && options === "instance" ) { |
| | returnValue = undefined; |
| | } else { |
| | this.each( function() { |
| | var methodValue; |
| | var instance = $.data( this, fullName ); |
| |
|
| | if ( options === "instance" ) { |
| | returnValue = instance; |
| | return false; |
| | } |
| |
|
| | if ( !instance ) { |
| | return $.error( "cannot call methods on " + name + |
| | " prior to initialization; " + |
| | "attempted to call method '" + options + "'" ); |
| | } |
| |
|
| | if ( typeof instance[ options ] !== "function" || |
| | options.charAt( 0 ) === "_" ) { |
| | return $.error( "no such method '" + options + "' for " + name + |
| | " widget instance" ); |
| | } |
| |
|
| | methodValue = instance[ options ].apply( instance, args ); |
| |
|
| | if ( methodValue !== instance && methodValue !== undefined ) { |
| | returnValue = methodValue && methodValue.jquery ? |
| | returnValue.pushStack( methodValue.get() ) : |
| | methodValue; |
| | return false; |
| | } |
| | } ); |
| | } |
| | } else { |
| |
|
| | |
| | if ( args.length ) { |
| | options = $.widget.extend.apply( null, [ options ].concat( args ) ); |
| | } |
| |
|
| | this.each( function() { |
| | var instance = $.data( this, fullName ); |
| | if ( instance ) { |
| | instance.option( options || {} ); |
| | if ( instance._init ) { |
| | instance._init(); |
| | } |
| | } else { |
| | $.data( this, fullName, new object( options, this ) ); |
| | } |
| | } ); |
| | } |
| |
|
| | return returnValue; |
| | }; |
| | }; |
| |
|
| | $.Widget = function( ) {}; |
| | $.Widget._childConstructors = []; |
| |
|
| | $.Widget.prototype = { |
| | widgetName: "widget", |
| | widgetEventPrefix: "", |
| | defaultElement: "<div>", |
| |
|
| | options: { |
| | classes: {}, |
| | disabled: false, |
| |
|
| | |
| | create: null |
| | }, |
| |
|
| | _createWidget: function( options, element ) { |
| | element = $( element || this.defaultElement || this )[ 0 ]; |
| | this.element = $( element ); |
| | this.uuid = widgetUuid++; |
| | this.eventNamespace = "." + this.widgetName + this.uuid; |
| |
|
| | this.bindings = $(); |
| | this.hoverable = $(); |
| | this.focusable = $(); |
| | this.classesElementLookup = {}; |
| |
|
| | if ( element !== this ) { |
| | $.data( element, this.widgetFullName, this ); |
| | this._on( true, this.element, { |
| | remove: function( event ) { |
| | if ( event.target === element ) { |
| | this.destroy(); |
| | } |
| | } |
| | } ); |
| | this.document = $( element.style ? |
| |
|
| | |
| | element.ownerDocument : |
| |
|
| | |
| | element.document || element ); |
| | this.window = $( this.document[ 0 ].defaultView || this.document[ 0 ].parentWindow ); |
| | } |
| |
|
| | this.options = $.widget.extend( {}, |
| | this.options, |
| | this._getCreateOptions(), |
| | options ); |
| |
|
| | this._create(); |
| |
|
| | if ( this.options.disabled ) { |
| | this._setOptionDisabled( this.options.disabled ); |
| | } |
| |
|
| | this._trigger( "create", null, this._getCreateEventData() ); |
| | this._init(); |
| | }, |
| |
|
| | _getCreateOptions: function() { |
| | return {}; |
| | }, |
| |
|
| | _getCreateEventData: $.noop, |
| |
|
| | _create: $.noop, |
| |
|
| | _init: $.noop, |
| |
|
| | destroy: function() { |
| | var that = this; |
| |
|
| | this._destroy(); |
| | $.each( this.classesElementLookup, function( key, value ) { |
| | that._removeClass( value, key ); |
| | } ); |
| |
|
| | |
| | |
| | this.element |
| | .off( this.eventNamespace ) |
| | .removeData( this.widgetFullName ); |
| | this.widget() |
| | .off( this.eventNamespace ) |
| | .removeAttr( "aria-disabled" ); |
| |
|
| | |
| | this.bindings.off( this.eventNamespace ); |
| | }, |
| |
|
| | _destroy: $.noop, |
| |
|
| | widget: function() { |
| | return this.element; |
| | }, |
| |
|
| | option: function( key, value ) { |
| | var options = key; |
| | var parts; |
| | var curOption; |
| | var i; |
| |
|
| | if ( arguments.length === 0 ) { |
| |
|
| | |
| | return $.widget.extend( {}, this.options ); |
| | } |
| |
|
| | if ( typeof key === "string" ) { |
| |
|
| | |
| | options = {}; |
| | parts = key.split( "." ); |
| | key = parts.shift(); |
| | if ( parts.length ) { |
| | curOption = options[ key ] = $.widget.extend( {}, this.options[ key ] ); |
| | for ( i = 0; i < parts.length - 1; i++ ) { |
| | curOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {}; |
| | curOption = curOption[ parts[ i ] ]; |
| | } |
| | key = parts.pop(); |
| | if ( arguments.length === 1 ) { |
| | return curOption[ key ] === undefined ? null : curOption[ key ]; |
| | } |
| | curOption[ key ] = value; |
| | } else { |
| | if ( arguments.length === 1 ) { |
| | return this.options[ key ] === undefined ? null : this.options[ key ]; |
| | } |
| | options[ key ] = value; |
| | } |
| | } |
| |
|
| | this._setOptions( options ); |
| |
|
| | return this; |
| | }, |
| |
|
| | _setOptions: function( options ) { |
| | var key; |
| |
|
| | for ( key in options ) { |
| | this._setOption( key, options[ key ] ); |
| | } |
| |
|
| | return this; |
| | }, |
| |
|
| | _setOption: function( key, value ) { |
| | if ( key === "classes" ) { |
| | this._setOptionClasses( value ); |
| | } |
| |
|
| | this.options[ key ] = value; |
| |
|
| | if ( key === "disabled" ) { |
| | this._setOptionDisabled( value ); |
| | } |
| |
|
| | return this; |
| | }, |
| |
|
| | _setOptionClasses: function( value ) { |
| | var classKey, elements, currentElements; |
| |
|
| | for ( classKey in value ) { |
| | currentElements = this.classesElementLookup[ classKey ]; |
| | if ( value[ classKey ] === this.options.classes[ classKey ] || |
| | !currentElements || |
| | !currentElements.length ) { |
| | continue; |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | elements = $( currentElements.get() ); |
| | this._removeClass( currentElements, classKey ); |
| |
|
| | |
| | |
| | |
| | |
| | elements.addClass( this._classes( { |
| | element: elements, |
| | keys: classKey, |
| | classes: value, |
| | add: true |
| | } ) ); |
| | } |
| | }, |
| |
|
| | _setOptionDisabled: function( value ) { |
| | this._toggleClass( this.widget(), this.widgetFullName + "-disabled", null, !!value ); |
| |
|
| | |
| | if ( value ) { |
| | this._removeClass( this.hoverable, null, "ui-state-hover" ); |
| | this._removeClass( this.focusable, null, "ui-state-focus" ); |
| | } |
| | }, |
| |
|
| | enable: function() { |
| | return this._setOptions( { disabled: false } ); |
| | }, |
| |
|
| | disable: function() { |
| | return this._setOptions( { disabled: true } ); |
| | }, |
| |
|
| | _classes: function( options ) { |
| | var full = []; |
| | var that = this; |
| |
|
| | options = $.extend( { |
| | element: this.element, |
| | classes: this.options.classes || {} |
| | }, options ); |
| |
|
| | function bindRemoveEvent() { |
| | var nodesToBind = []; |
| |
|
| | options.element.each( function( _, element ) { |
| | var isTracked = $.map( that.classesElementLookup, function( elements ) { |
| | return elements; |
| | } ) |
| | .some( function( elements ) { |
| | return elements.is( element ); |
| | } ); |
| |
|
| | if ( !isTracked ) { |
| | nodesToBind.push( element ); |
| | } |
| | } ); |
| |
|
| | that._on( $( nodesToBind ), { |
| | remove: "_untrackClassesElement" |
| | } ); |
| | } |
| |
|
| | function processClassString( classes, checkOption ) { |
| | var current, i; |
| | for ( i = 0; i < classes.length; i++ ) { |
| | current = that.classesElementLookup[ classes[ i ] ] || $(); |
| | if ( options.add ) { |
| | bindRemoveEvent(); |
| | current = $( $.uniqueSort( current.get().concat( options.element.get() ) ) ); |
| | } else { |
| | current = $( current.not( options.element ).get() ); |
| | } |
| | that.classesElementLookup[ classes[ i ] ] = current; |
| | full.push( classes[ i ] ); |
| | if ( checkOption && options.classes[ classes[ i ] ] ) { |
| | full.push( options.classes[ classes[ i ] ] ); |
| | } |
| | } |
| | } |
| |
|
| | if ( options.keys ) { |
| | processClassString( options.keys.match( /\S+/g ) || [], true ); |
| | } |
| | if ( options.extra ) { |
| | processClassString( options.extra.match( /\S+/g ) || [] ); |
| | } |
| |
|
| | return full.join( " " ); |
| | }, |
| |
|
| | _untrackClassesElement: function( event ) { |
| | var that = this; |
| | $.each( that.classesElementLookup, function( key, value ) { |
| | if ( $.inArray( event.target, value ) !== -1 ) { |
| | that.classesElementLookup[ key ] = $( value.not( event.target ).get() ); |
| | } |
| | } ); |
| |
|
| | this._off( $( event.target ) ); |
| | }, |
| |
|
| | _removeClass: function( element, keys, extra ) { |
| | return this._toggleClass( element, keys, extra, false ); |
| | }, |
| |
|
| | _addClass: function( element, keys, extra ) { |
| | return this._toggleClass( element, keys, extra, true ); |
| | }, |
| |
|
| | _toggleClass: function( element, keys, extra, add ) { |
| | add = ( typeof add === "boolean" ) ? add : extra; |
| | var shift = ( typeof element === "string" || element === null ), |
| | options = { |
| | extra: shift ? keys : extra, |
| | keys: shift ? element : keys, |
| | element: shift ? this.element : element, |
| | add: add |
| | }; |
| | options.element.toggleClass( this._classes( options ), add ); |
| | return this; |
| | }, |
| |
|
| | _on: function( suppressDisabledCheck, element, handlers ) { |
| | var delegateElement; |
| | var instance = this; |
| |
|
| | |
| | if ( typeof suppressDisabledCheck !== "boolean" ) { |
| | handlers = element; |
| | element = suppressDisabledCheck; |
| | suppressDisabledCheck = false; |
| | } |
| |
|
| | |
| | if ( !handlers ) { |
| | handlers = element; |
| | element = this.element; |
| | delegateElement = this.widget(); |
| | } else { |
| | element = delegateElement = $( element ); |
| | this.bindings = this.bindings.add( element ); |
| | } |
| |
|
| | $.each( handlers, function( event, handler ) { |
| | function handlerProxy() { |
| |
|
| | |
| | |
| | |
| | if ( !suppressDisabledCheck && |
| | ( instance.options.disabled === true || |
| | $( this ).hasClass( "ui-state-disabled" ) ) ) { |
| | return; |
| | } |
| | return ( typeof handler === "string" ? instance[ handler ] : handler ) |
| | .apply( instance, arguments ); |
| | } |
| |
|
| | |
| | if ( typeof handler !== "string" ) { |
| | handlerProxy.guid = handler.guid = |
| | handler.guid || handlerProxy.guid || $.guid++; |
| | } |
| |
|
| | var match = event.match( /^([\w:-]*)\s*(.*)$/ ); |
| | var eventName = match[ 1 ] + instance.eventNamespace; |
| | var selector = match[ 2 ]; |
| |
|
| | if ( selector ) { |
| | delegateElement.on( eventName, selector, handlerProxy ); |
| | } else { |
| | element.on( eventName, handlerProxy ); |
| | } |
| | } ); |
| | }, |
| |
|
| | _off: function( element, eventName ) { |
| | eventName = ( eventName || "" ).split( " " ).join( this.eventNamespace + " " ) + |
| | this.eventNamespace; |
| | element.off( eventName ); |
| |
|
| | |
| | this.bindings = $( this.bindings.not( element ).get() ); |
| | this.focusable = $( this.focusable.not( element ).get() ); |
| | this.hoverable = $( this.hoverable.not( element ).get() ); |
| | }, |
| |
|
| | _delay: function( handler, delay ) { |
| | function handlerProxy() { |
| | return ( typeof handler === "string" ? instance[ handler ] : handler ) |
| | .apply( instance, arguments ); |
| | } |
| | var instance = this; |
| | return setTimeout( handlerProxy, delay || 0 ); |
| | }, |
| |
|
| | _hoverable: function( element ) { |
| | this.hoverable = this.hoverable.add( element ); |
| | this._on( element, { |
| | mouseenter: function( event ) { |
| | this._addClass( $( event.currentTarget ), null, "ui-state-hover" ); |
| | }, |
| | mouseleave: function( event ) { |
| | this._removeClass( $( event.currentTarget ), null, "ui-state-hover" ); |
| | } |
| | } ); |
| | }, |
| |
|
| | _focusable: function( element ) { |
| | this.focusable = this.focusable.add( element ); |
| | this._on( element, { |
| | focusin: function( event ) { |
| | this._addClass( $( event.currentTarget ), null, "ui-state-focus" ); |
| | }, |
| | focusout: function( event ) { |
| | this._removeClass( $( event.currentTarget ), null, "ui-state-focus" ); |
| | } |
| | } ); |
| | }, |
| |
|
| | _trigger: function( type, event, data ) { |
| | var prop, orig; |
| | var callback = this.options[ type ]; |
| |
|
| | data = data || {}; |
| | event = $.Event( event ); |
| | event.type = ( type === this.widgetEventPrefix ? |
| | type : |
| | this.widgetEventPrefix + type ).toLowerCase(); |
| |
|
| | |
| | |
| | event.target = this.element[ 0 ]; |
| |
|
| | |
| | orig = event.originalEvent; |
| | if ( orig ) { |
| | for ( prop in orig ) { |
| | if ( !( prop in event ) ) { |
| | event[ prop ] = orig[ prop ]; |
| | } |
| | } |
| | } |
| |
|
| | this.element.trigger( event, data ); |
| | return !( typeof callback === "function" && |
| | callback.apply( this.element[ 0 ], [ event ].concat( data ) ) === false || |
| | event.isDefaultPrevented() ); |
| | } |
| | }; |
| |
|
| | $.each( { show: "fadeIn", hide: "fadeOut" }, function( method, defaultEffect ) { |
| | $.Widget.prototype[ "_" + method ] = function( element, options, callback ) { |
| | if ( typeof options === "string" ) { |
| | options = { effect: options }; |
| | } |
| |
|
| | var hasOptions; |
| | var effectName = !options ? |
| | method : |
| | options === true || typeof options === "number" ? |
| | defaultEffect : |
| | options.effect || defaultEffect; |
| |
|
| | options = options || {}; |
| | if ( typeof options === "number" ) { |
| | options = { duration: options }; |
| | } else if ( options === true ) { |
| | options = {}; |
| | } |
| |
|
| | hasOptions = !$.isEmptyObject( options ); |
| | options.complete = callback; |
| |
|
| | if ( options.delay ) { |
| | element.delay( options.delay ); |
| | } |
| |
|
| | if ( hasOptions && $.effects && $.effects.effect[ effectName ] ) { |
| | element[ method ]( options ); |
| | } else if ( effectName !== method && element[ effectName ] ) { |
| | element[ effectName ]( options.duration, options.easing, callback ); |
| | } else { |
| | element.queue( function( next ) { |
| | $( this )[ method ](); |
| | if ( callback ) { |
| | callback.call( element[ 0 ] ); |
| | } |
| | next(); |
| | } ); |
| | } |
| | }; |
| | } ); |
| |
|
| |
|
| | } ) ); |
| |
|