[ Index ] |
PHP Cross Reference of MediaWiki-1.24.0 |
[Summary view] [Print] [Text view]
1 /*! 2 * jQuery UI Dialog 1.9.2 3 * http://jqueryui.com 4 * 5 * Copyright 2012 jQuery Foundation and other contributors 6 * Released under the MIT license. 7 * http://jquery.org/license 8 * 9 * http://api.jqueryui.com/dialog/ 10 * 11 * Depends: 12 * jquery.ui.core.js 13 * jquery.ui.widget.js 14 * jquery.ui.button.js 15 * jquery.ui.draggable.js 16 * jquery.ui.mouse.js 17 * jquery.ui.position.js 18 * jquery.ui.resizable.js 19 */ 20 (function( $, undefined ) { 21 22 var uiDialogClasses = "ui-dialog ui-widget ui-widget-content ui-corner-all ", 23 sizeRelatedOptions = { 24 buttons: true, 25 height: true, 26 maxHeight: true, 27 maxWidth: true, 28 minHeight: true, 29 minWidth: true, 30 width: true 31 }, 32 resizableRelatedOptions = { 33 maxHeight: true, 34 maxWidth: true, 35 minHeight: true, 36 minWidth: true 37 }; 38 39 $.widget("ui.dialog", { 40 version: "1.9.2", 41 options: { 42 autoOpen: true, 43 buttons: {}, 44 closeOnEscape: true, 45 closeText: "close", 46 dialogClass: "", 47 draggable: true, 48 hide: null, 49 height: "auto", 50 maxHeight: false, 51 maxWidth: false, 52 minHeight: 150, 53 minWidth: 150, 54 modal: false, 55 position: { 56 my: "center", 57 at: "center", 58 of: window, 59 collision: "fit", 60 // ensure that the titlebar is never outside the document 61 using: function( pos ) { 62 var topOffset = $( this ).css( pos ).offset().top; 63 if ( topOffset < 0 ) { 64 $( this ).css( "top", pos.top - topOffset ); 65 } 66 } 67 }, 68 resizable: true, 69 show: null, 70 stack: true, 71 title: "", 72 width: 300, 73 zIndex: 1000 74 }, 75 76 _create: function() { 77 this.originalTitle = this.element.attr( "title" ); 78 // #5742 - .attr() might return a DOMElement 79 if ( typeof this.originalTitle !== "string" ) { 80 this.originalTitle = ""; 81 } 82 this.oldPosition = { 83 parent: this.element.parent(), 84 index: this.element.parent().children().index( this.element ) 85 }; 86 this.options.title = this.options.title || this.originalTitle; 87 var that = this, 88 options = this.options, 89 90 title = options.title || " ", 91 uiDialog, 92 uiDialogTitlebar, 93 uiDialogTitlebarClose, 94 uiDialogTitle, 95 uiDialogButtonPane; 96 97 uiDialog = ( this.uiDialog = $( "<div>" ) ) 98 .addClass( uiDialogClasses + options.dialogClass ) 99 .css({ 100 display: "none", 101 outline: 0, // TODO: move to stylesheet 102 zIndex: options.zIndex 103 }) 104 // setting tabIndex makes the div focusable 105 .attr( "tabIndex", -1) 106 .keydown(function( event ) { 107 if ( options.closeOnEscape && !event.isDefaultPrevented() && event.keyCode && 108 event.keyCode === $.ui.keyCode.ESCAPE ) { 109 that.close( event ); 110 event.preventDefault(); 111 } 112 }) 113 .mousedown(function( event ) { 114 that.moveToTop( false, event ); 115 }) 116 .appendTo( "body" ); 117 118 this.element 119 .show() 120 .removeAttr( "title" ) 121 .addClass( "ui-dialog-content ui-widget-content" ) 122 .appendTo( uiDialog ); 123 124 uiDialogTitlebar = ( this.uiDialogTitlebar = $( "<div>" ) ) 125 .addClass( "ui-dialog-titlebar ui-widget-header " + 126 "ui-corner-all ui-helper-clearfix" ) 127 .bind( "mousedown", function() { 128 // Dialog isn't getting focus when dragging (#8063) 129 uiDialog.focus(); 130 }) 131 .prependTo( uiDialog ); 132 133 uiDialogTitlebarClose = $( "<a href='#'></a>" ) 134 .addClass( "ui-dialog-titlebar-close ui-corner-all" ) 135 .attr( "role", "button" ) 136 .click(function( event ) { 137 event.preventDefault(); 138 that.close( event ); 139 }) 140 .appendTo( uiDialogTitlebar ); 141 142 ( this.uiDialogTitlebarCloseText = $( "<span>" ) ) 143 .addClass( "ui-icon ui-icon-closethick" ) 144 .text( options.closeText ) 145 .appendTo( uiDialogTitlebarClose ); 146 147 uiDialogTitle = $( "<span>" ) 148 .uniqueId() 149 .addClass( "ui-dialog-title" ) 150 .html( title ) 151 .prependTo( uiDialogTitlebar ); 152 153 uiDialogButtonPane = ( this.uiDialogButtonPane = $( "<div>" ) ) 154 .addClass( "ui-dialog-buttonpane ui-widget-content ui-helper-clearfix" ); 155 156 ( this.uiButtonSet = $( "<div>" ) ) 157 .addClass( "ui-dialog-buttonset" ) 158 .appendTo( uiDialogButtonPane ); 159 160 uiDialog.attr({ 161 role: "dialog", 162 "aria-labelledby": uiDialogTitle.attr( "id" ) 163 }); 164 165 uiDialogTitlebar.find( "*" ).add( uiDialogTitlebar ).disableSelection(); 166 this._hoverable( uiDialogTitlebarClose ); 167 this._focusable( uiDialogTitlebarClose ); 168 169 if ( options.draggable && $.fn.draggable ) { 170 this._makeDraggable(); 171 } 172 if ( options.resizable && $.fn.resizable ) { 173 this._makeResizable(); 174 } 175 176 this._createButtons( options.buttons ); 177 this._isOpen = false; 178 179 if ( $.fn.bgiframe ) { 180 uiDialog.bgiframe(); 181 } 182 183 // prevent tabbing out of modal dialogs 184 this._on( uiDialog, { keydown: function( event ) { 185 if ( !options.modal || event.keyCode !== $.ui.keyCode.TAB ) { 186 return; 187 } 188 189 var tabbables = $( ":tabbable", uiDialog ), 190 first = tabbables.filter( ":first" ), 191 last = tabbables.filter( ":last" ); 192 193 if ( event.target === last[0] && !event.shiftKey ) { 194 first.focus( 1 ); 195 return false; 196 } else if ( event.target === first[0] && event.shiftKey ) { 197 last.focus( 1 ); 198 return false; 199 } 200 }}); 201 }, 202 203 _init: function() { 204 if ( this.options.autoOpen ) { 205 this.open(); 206 } 207 }, 208 209 _destroy: function() { 210 var next, 211 oldPosition = this.oldPosition; 212 213 if ( this.overlay ) { 214 this.overlay.destroy(); 215 } 216 this.uiDialog.hide(); 217 this.element 218 .removeClass( "ui-dialog-content ui-widget-content" ) 219 .hide() 220 .appendTo( "body" ); 221 this.uiDialog.remove(); 222 223 if ( this.originalTitle ) { 224 this.element.attr( "title", this.originalTitle ); 225 } 226 227 next = oldPosition.parent.children().eq( oldPosition.index ); 228 // Don't try to place the dialog next to itself (#8613) 229 if ( next.length && next[ 0 ] !== this.element[ 0 ] ) { 230 next.before( this.element ); 231 } else { 232 oldPosition.parent.append( this.element ); 233 } 234 }, 235 236 widget: function() { 237 return this.uiDialog; 238 }, 239 240 close: function( event ) { 241 var that = this, 242 maxZ, thisZ; 243 244 if ( !this._isOpen ) { 245 return; 246 } 247 248 if ( false === this._trigger( "beforeClose", event ) ) { 249 return; 250 } 251 252 this._isOpen = false; 253 254 if ( this.overlay ) { 255 this.overlay.destroy(); 256 } 257 258 if ( this.options.hide ) { 259 this._hide( this.uiDialog, this.options.hide, function() { 260 that._trigger( "close", event ); 261 }); 262 } else { 263 this.uiDialog.hide(); 264 this._trigger( "close", event ); 265 } 266 267 $.ui.dialog.overlay.resize(); 268 269 // adjust the maxZ to allow other modal dialogs to continue to work (see #4309) 270 if ( this.options.modal ) { 271 maxZ = 0; 272 $( ".ui-dialog" ).each(function() { 273 if ( this !== that.uiDialog[0] ) { 274 thisZ = $( this ).css( "z-index" ); 275 if ( !isNaN( thisZ ) ) { 276 maxZ = Math.max( maxZ, thisZ ); 277 } 278 } 279 }); 280 $.ui.dialog.maxZ = maxZ; 281 } 282 283 return this; 284 }, 285 286 isOpen: function() { 287 return this._isOpen; 288 }, 289 290 // the force parameter allows us to move modal dialogs to their correct 291 // position on open 292 moveToTop: function( force, event ) { 293 var options = this.options, 294 saveScroll; 295 296 if ( ( options.modal && !force ) || 297 ( !options.stack && !options.modal ) ) { 298 return this._trigger( "focus", event ); 299 } 300 301 if ( options.zIndex > $.ui.dialog.maxZ ) { 302 $.ui.dialog.maxZ = options.zIndex; 303 } 304 if ( this.overlay ) { 305 $.ui.dialog.maxZ += 1; 306 $.ui.dialog.overlay.maxZ = $.ui.dialog.maxZ; 307 this.overlay.$el.css( "z-index", $.ui.dialog.overlay.maxZ ); 308 } 309 310 // Save and then restore scroll 311 // Opera 9.5+ resets when parent z-index is changed. 312 // http://bugs.jqueryui.com/ticket/3193 313 saveScroll = { 314 scrollTop: this.element.scrollTop(), 315 scrollLeft: this.element.scrollLeft() 316 }; 317 $.ui.dialog.maxZ += 1; 318 this.uiDialog.css( "z-index", $.ui.dialog.maxZ ); 319 this.element.attr( saveScroll ); 320 this._trigger( "focus", event ); 321 322 return this; 323 }, 324 325 open: function() { 326 if ( this._isOpen ) { 327 return; 328 } 329 330 var hasFocus, 331 options = this.options, 332 uiDialog = this.uiDialog; 333 334 this._size(); 335 this._position( options.position ); 336 uiDialog.show( options.show ); 337 this.overlay = options.modal ? new $.ui.dialog.overlay( this ) : null; 338 this.moveToTop( true ); 339 340 // set focus to the first tabbable element in the content area or the first button 341 // if there are no tabbable elements, set focus on the dialog itself 342 hasFocus = this.element.find( ":tabbable" ); 343 if ( !hasFocus.length ) { 344 hasFocus = this.uiDialogButtonPane.find( ":tabbable" ); 345 if ( !hasFocus.length ) { 346 hasFocus = uiDialog; 347 } 348 } 349 hasFocus.eq( 0 ).focus(); 350 351 this._isOpen = true; 352 this._trigger( "open" ); 353 354 return this; 355 }, 356 357 _createButtons: function( buttons ) { 358 var that = this, 359 hasButtons = false; 360 361 // if we already have a button pane, remove it 362 this.uiDialogButtonPane.remove(); 363 this.uiButtonSet.empty(); 364 365 if ( typeof buttons === "object" && buttons !== null ) { 366 $.each( buttons, function() { 367 return !(hasButtons = true); 368 }); 369 } 370 if ( hasButtons ) { 371 $.each( buttons, function( name, props ) { 372 var button, click; 373 props = $.isFunction( props ) ? 374 { click: props, text: name } : 375 props; 376 // Default to a non-submitting button 377 props = $.extend( { type: "button" }, props ); 378 // Change the context for the click callback to be the main element 379 click = props.click; 380 props.click = function() { 381 click.apply( that.element[0], arguments ); 382 }; 383 button = $( "<button></button>", props ) 384 .appendTo( that.uiButtonSet ); 385 if ( $.fn.button ) { 386 button.button(); 387 } 388 }); 389 this.uiDialog.addClass( "ui-dialog-buttons" ); 390 this.uiDialogButtonPane.appendTo( this.uiDialog ); 391 } else { 392 this.uiDialog.removeClass( "ui-dialog-buttons" ); 393 } 394 }, 395 396 _makeDraggable: function() { 397 var that = this, 398 options = this.options; 399 400 function filteredUi( ui ) { 401 return { 402 position: ui.position, 403 offset: ui.offset 404 }; 405 } 406 407 this.uiDialog.draggable({ 408 cancel: ".ui-dialog-content, .ui-dialog-titlebar-close", 409 handle: ".ui-dialog-titlebar", 410 containment: "document", 411 start: function( event, ui ) { 412 $( this ) 413 .addClass( "ui-dialog-dragging" ); 414 that._trigger( "dragStart", event, filteredUi( ui ) ); 415 }, 416 drag: function( event, ui ) { 417 that._trigger( "drag", event, filteredUi( ui ) ); 418 }, 419 stop: function( event, ui ) { 420 options.position = [ 421 ui.position.left - that.document.scrollLeft(), 422 ui.position.top - that.document.scrollTop() 423 ]; 424 $( this ) 425 .removeClass( "ui-dialog-dragging" ); 426 that._trigger( "dragStop", event, filteredUi( ui ) ); 427 $.ui.dialog.overlay.resize(); 428 } 429 }); 430 }, 431 432 _makeResizable: function( handles ) { 433 handles = (handles === undefined ? this.options.resizable : handles); 434 var that = this, 435 options = this.options, 436 // .ui-resizable has position: relative defined in the stylesheet 437 // but dialogs have to use absolute or fixed positioning 438 position = this.uiDialog.css( "position" ), 439 resizeHandles = typeof handles === 'string' ? 440 handles : 441 "n,e,s,w,se,sw,ne,nw"; 442 443 function filteredUi( ui ) { 444 return { 445 originalPosition: ui.originalPosition, 446 originalSize: ui.originalSize, 447 position: ui.position, 448 size: ui.size 449 }; 450 } 451 452 this.uiDialog.resizable({ 453 cancel: ".ui-dialog-content", 454 containment: "document", 455 alsoResize: this.element, 456 maxWidth: options.maxWidth, 457 maxHeight: options.maxHeight, 458 minWidth: options.minWidth, 459 minHeight: this._minHeight(), 460 handles: resizeHandles, 461 start: function( event, ui ) { 462 $( this ).addClass( "ui-dialog-resizing" ); 463 that._trigger( "resizeStart", event, filteredUi( ui ) ); 464 }, 465 resize: function( event, ui ) { 466 that._trigger( "resize", event, filteredUi( ui ) ); 467 }, 468 stop: function( event, ui ) { 469 $( this ).removeClass( "ui-dialog-resizing" ); 470 options.height = $( this ).height(); 471 options.width = $( this ).width(); 472 that._trigger( "resizeStop", event, filteredUi( ui ) ); 473 $.ui.dialog.overlay.resize(); 474 } 475 }) 476 .css( "position", position ) 477 .find( ".ui-resizable-se" ) 478 .addClass( "ui-icon ui-icon-grip-diagonal-se" ); 479 }, 480 481 _minHeight: function() { 482 var options = this.options; 483 484 if ( options.height === "auto" ) { 485 return options.minHeight; 486 } else { 487 return Math.min( options.minHeight, options.height ); 488 } 489 }, 490 491 _position: function( position ) { 492 var myAt = [], 493 offset = [ 0, 0 ], 494 isVisible; 495 496 if ( position ) { 497 // deep extending converts arrays to objects in jQuery <= 1.3.2 :-( 498 // if (typeof position == 'string' || $.isArray(position)) { 499 // myAt = $.isArray(position) ? position : position.split(' '); 500 501 if ( typeof position === "string" || (typeof position === "object" && "0" in position ) ) { 502 myAt = position.split ? position.split( " " ) : [ position[ 0 ], position[ 1 ] ]; 503 if ( myAt.length === 1 ) { 504 myAt[ 1 ] = myAt[ 0 ]; 505 } 506 507 $.each( [ "left", "top" ], function( i, offsetPosition ) { 508 if ( +myAt[ i ] === myAt[ i ] ) { 509 offset[ i ] = myAt[ i ]; 510 myAt[ i ] = offsetPosition; 511 } 512 }); 513 514 position = { 515 my: myAt[0] + (offset[0] < 0 ? offset[0] : "+" + offset[0]) + " " + 516 myAt[1] + (offset[1] < 0 ? offset[1] : "+" + offset[1]), 517 at: myAt.join( " " ) 518 }; 519 } 520 521 position = $.extend( {}, $.ui.dialog.prototype.options.position, position ); 522 } else { 523 position = $.ui.dialog.prototype.options.position; 524 } 525 526 // need to show the dialog to get the actual offset in the position plugin 527 isVisible = this.uiDialog.is( ":visible" ); 528 if ( !isVisible ) { 529 this.uiDialog.show(); 530 } 531 this.uiDialog.position( position ); 532 if ( !isVisible ) { 533 this.uiDialog.hide(); 534 } 535 }, 536 537 _setOptions: function( options ) { 538 var that = this, 539 resizableOptions = {}, 540 resize = false; 541 542 $.each( options, function( key, value ) { 543 that._setOption( key, value ); 544 545 if ( key in sizeRelatedOptions ) { 546 resize = true; 547 } 548 if ( key in resizableRelatedOptions ) { 549 resizableOptions[ key ] = value; 550 } 551 }); 552 553 if ( resize ) { 554 this._size(); 555 } 556 if ( this.uiDialog.is( ":data(resizable)" ) ) { 557 this.uiDialog.resizable( "option", resizableOptions ); 558 } 559 }, 560 561 _setOption: function( key, value ) { 562 var isDraggable, isResizable, 563 uiDialog = this.uiDialog; 564 565 switch ( key ) { 566 case "buttons": 567 this._createButtons( value ); 568 break; 569 case "closeText": 570 // ensure that we always pass a string 571 this.uiDialogTitlebarCloseText.text( "" + value ); 572 break; 573 case "dialogClass": 574 uiDialog 575 .removeClass( this.options.dialogClass ) 576 .addClass( uiDialogClasses + value ); 577 break; 578 case "disabled": 579 if ( value ) { 580 uiDialog.addClass( "ui-dialog-disabled" ); 581 } else { 582 uiDialog.removeClass( "ui-dialog-disabled" ); 583 } 584 break; 585 case "draggable": 586 isDraggable = uiDialog.is( ":data(draggable)" ); 587 if ( isDraggable && !value ) { 588 uiDialog.draggable( "destroy" ); 589 } 590 591 if ( !isDraggable && value ) { 592 this._makeDraggable(); 593 } 594 break; 595 case "position": 596 this._position( value ); 597 break; 598 case "resizable": 599 // currently resizable, becoming non-resizable 600 isResizable = uiDialog.is( ":data(resizable)" ); 601 if ( isResizable && !value ) { 602 uiDialog.resizable( "destroy" ); 603 } 604 605 // currently resizable, changing handles 606 if ( isResizable && typeof value === "string" ) { 607 uiDialog.resizable( "option", "handles", value ); 608 } 609 610 // currently non-resizable, becoming resizable 611 if ( !isResizable && value !== false ) { 612 this._makeResizable( value ); 613 } 614 break; 615 case "title": 616 // convert whatever was passed in o a string, for html() to not throw up 617 $( ".ui-dialog-title", this.uiDialogTitlebar ) 618 .html( "" + ( value || " " ) ); 619 break; 620 } 621 622 this._super( key, value ); 623 }, 624 625 _size: function() { 626 /* If the user has resized the dialog, the .ui-dialog and .ui-dialog-content 627 * divs will both have width and height set, so we need to reset them 628 */ 629 var nonContentHeight, minContentHeight, autoHeight, 630 options = this.options, 631 isVisible = this.uiDialog.is( ":visible" ); 632 633 // reset content sizing 634 this.element.show().css({ 635 width: "auto", 636 minHeight: 0, 637 height: 0 638 }); 639 640 if ( options.minWidth > options.width ) { 641 options.width = options.minWidth; 642 } 643 644 // reset wrapper sizing 645 // determine the height of all the non-content elements 646 nonContentHeight = this.uiDialog.css({ 647 height: "auto", 648 width: options.width 649 }) 650 .outerHeight(); 651 minContentHeight = Math.max( 0, options.minHeight - nonContentHeight ); 652 653 if ( options.height === "auto" ) { 654 // only needed for IE6 support 655 if ( $.support.minHeight ) { 656 this.element.css({ 657 minHeight: minContentHeight, 658 height: "auto" 659 }); 660 } else { 661 this.uiDialog.show(); 662 autoHeight = this.element.css( "height", "auto" ).height(); 663 if ( !isVisible ) { 664 this.uiDialog.hide(); 665 } 666 this.element.height( Math.max( autoHeight, minContentHeight ) ); 667 } 668 } else { 669 this.element.height( Math.max( options.height - nonContentHeight, 0 ) ); 670 } 671 672 if (this.uiDialog.is( ":data(resizable)" ) ) { 673 this.uiDialog.resizable( "option", "minHeight", this._minHeight() ); 674 } 675 } 676 }); 677 678 $.extend($.ui.dialog, { 679 uuid: 0, 680 maxZ: 0, 681 682 getTitleId: function($el) { 683 var id = $el.attr( "id" ); 684 if ( !id ) { 685 this.uuid += 1; 686 id = this.uuid; 687 } 688 return "ui-dialog-title-" + id; 689 }, 690 691 overlay: function( dialog ) { 692 this.$el = $.ui.dialog.overlay.create( dialog ); 693 } 694 }); 695 696 $.extend( $.ui.dialog.overlay, { 697 instances: [], 698 // reuse old instances due to IE memory leak with alpha transparency (see #5185) 699 oldInstances: [], 700 maxZ: 0, 701 events: $.map( 702 "focus,mousedown,mouseup,keydown,keypress,click".split( "," ), 703 function( event ) { 704 return event + ".dialog-overlay"; 705 } 706 ).join( " " ), 707 create: function( dialog ) { 708 if ( this.instances.length === 0 ) { 709 // prevent use of anchors and inputs 710 // we use a setTimeout in case the overlay is created from an 711 // event that we're going to be cancelling (see #2804) 712 setTimeout(function() { 713 // handle $(el).dialog().dialog('close') (see #4065) 714 if ( $.ui.dialog.overlay.instances.length ) { 715 $( document ).bind( $.ui.dialog.overlay.events, function( event ) { 716 // stop events if the z-index of the target is < the z-index of the overlay 717 // we cannot return true when we don't want to cancel the event (#3523) 718 if ( $( event.target ).zIndex() < $.ui.dialog.overlay.maxZ ) { 719 return false; 720 } 721 }); 722 } 723 }, 1 ); 724 725 // handle window resize 726 $( window ).bind( "resize.dialog-overlay", $.ui.dialog.overlay.resize ); 727 } 728 729 var $el = ( this.oldInstances.pop() || $( "<div>" ).addClass( "ui-widget-overlay" ) ); 730 731 // allow closing by pressing the escape key 732 $( document ).bind( "keydown.dialog-overlay", function( event ) { 733 var instances = $.ui.dialog.overlay.instances; 734 // only react to the event if we're the top overlay 735 if ( instances.length !== 0 && instances[ instances.length - 1 ] === $el && 736 dialog.options.closeOnEscape && !event.isDefaultPrevented() && event.keyCode && 737 event.keyCode === $.ui.keyCode.ESCAPE ) { 738 739 dialog.close( event ); 740 event.preventDefault(); 741 } 742 }); 743 744 $el.appendTo( document.body ).css({ 745 width: this.width(), 746 height: this.height() 747 }); 748 749 if ( $.fn.bgiframe ) { 750 $el.bgiframe(); 751 } 752 753 this.instances.push( $el ); 754 return $el; 755 }, 756 757 destroy: function( $el ) { 758 var indexOf = $.inArray( $el, this.instances ), 759 maxZ = 0; 760 761 if ( indexOf !== -1 ) { 762 this.oldInstances.push( this.instances.splice( indexOf, 1 )[ 0 ] ); 763 } 764 765 if ( this.instances.length === 0 ) { 766 $( [ document, window ] ).unbind( ".dialog-overlay" ); 767 } 768 769 $el.height( 0 ).width( 0 ).remove(); 770 771 // adjust the maxZ to allow other modal dialogs to continue to work (see #4309) 772 $.each( this.instances, function() { 773 maxZ = Math.max( maxZ, this.css( "z-index" ) ); 774 }); 775 this.maxZ = maxZ; 776 }, 777 778 height: function() { 779 var scrollHeight, 780 offsetHeight; 781 // handle IE 782 if ( $.ui.ie ) { 783 scrollHeight = Math.max( 784 document.documentElement.scrollHeight, 785 document.body.scrollHeight 786 ); 787 offsetHeight = Math.max( 788 document.documentElement.offsetHeight, 789 document.body.offsetHeight 790 ); 791 792 if ( scrollHeight < offsetHeight ) { 793 return $( window ).height() + "px"; 794 } else { 795 return scrollHeight + "px"; 796 } 797 // handle "good" browsers 798 } else { 799 return $( document ).height() + "px"; 800 } 801 }, 802 803 width: function() { 804 var scrollWidth, 805 offsetWidth; 806 // handle IE 807 if ( $.ui.ie ) { 808 scrollWidth = Math.max( 809 document.documentElement.scrollWidth, 810 document.body.scrollWidth 811 ); 812 offsetWidth = Math.max( 813 document.documentElement.offsetWidth, 814 document.body.offsetWidth 815 ); 816 817 if ( scrollWidth < offsetWidth ) { 818 return $( window ).width() + "px"; 819 } else { 820 return scrollWidth + "px"; 821 } 822 // handle "good" browsers 823 } else { 824 return $( document ).width() + "px"; 825 } 826 }, 827 828 resize: function() { 829 /* If the dialog is draggable and the user drags it past the 830 * right edge of the window, the document becomes wider so we 831 * need to stretch the overlay. If the user then drags the 832 * dialog back to the left, the document will become narrower, 833 * so we need to shrink the overlay to the appropriate size. 834 * This is handled by shrinking the overlay before setting it 835 * to the full document size. 836 */ 837 var $overlays = $( [] ); 838 $.each( $.ui.dialog.overlay.instances, function() { 839 $overlays = $overlays.add( this ); 840 }); 841 842 $overlays.css({ 843 width: 0, 844 height: 0 845 }).css({ 846 width: $.ui.dialog.overlay.width(), 847 height: $.ui.dialog.overlay.height() 848 }); 849 } 850 }); 851 852 $.extend( $.ui.dialog.overlay.prototype, { 853 destroy: function() { 854 $.ui.dialog.overlay.destroy( this.$el ); 855 } 856 }); 857 858 }( jQuery ) );
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Fri Nov 28 14:03:12 2014 | Cross-referenced by PHPXref 0.7.1 |