" ),
- element = $( "#dialog1" ).dialog();
+ element = $( "#dialog1" ).dialog({
+ modal: true
+ });
equal( element.dialog( "widget" ).parent()[0], document.body, "defaults to body" );
+ equal( $( ".ui-widget-overlay" ).parent()[0], document.body, "overlay defaults to body" );
element.dialog( "destroy" );
element.dialog({
- appendTo: ".wrap"
+ appendTo: ".wrap",
+ modal: true
});
equal( element.dialog( "widget" ).parent()[0], $( "#wrap1" )[0], "first found element" );
+ equal( $( ".ui-widget-overlay" ).parent()[0], $( "#wrap1" )[0], "overlay first found element" );
equal( $( "#wrap2 .ui-dialog" ).length, 0, "only appends to one element" );
+ equal( $( "#wrap2 .ui-widget-overlay" ).length, 0, "overlay only appends to one element" );
element.dialog( "destroy" );
element.dialog({
- appendTo: null
+ appendTo: null,
+ modal: true
});
equal( element.dialog( "widget" ).parent()[0], document.body, "null" );
- element.dialog( "destroy" );
-
- element.dialog({ autoOpen: false }).dialog( "option", "appendTo", "#wrap1" ).dialog( "open" );
- equal( element.dialog( "widget" ).parent()[0], $( "#wrap1" )[0], "modified after init" );
+ equal( $( ".ui-widget-overlay" ).parent()[0], document.body, "overlay null" );
element.dialog( "destroy" );
element.dialog({
- appendTo: detached
+ autoOpen: false,
+ modal: true
+ }).dialog( "option", "appendTo", "#wrap1" ).dialog( "open" );
+ equal( element.dialog( "widget" ).parent()[0], $( "#wrap1" )[0], "modified after init" );
+ equal( $( ".ui-widget-overlay" ).parent()[0], $( "#wrap1" )[0], "overlay modified after init" );
+ element.dialog( "destroy" );
+
+ element.dialog({
+ appendTo: detached,
+ modal: true
});
equal( element.dialog( "widget" ).parent()[0], detached[0], "detached jQuery object" );
+ equal( detached.find( ".ui-widget-overlay" ).parent()[0], detached[0], "overlay detached jQuery object" );
element.dialog( "destroy" );
element.dialog({
- appendTo: detached[0]
+ appendTo: detached[0],
+ modal: true
});
equal( element.dialog( "widget" ).parent()[0], detached[0], "detached DOM element" );
+ equal( detached.find( ".ui-widget-overlay" ).parent()[0], detached[0], "overlay detached DOM element" );
element.dialog( "destroy" );
- element.dialog({ autoOpen: false }).dialog( "option", "appendTo", detached );
+ element.dialog({
+ autoOpen: false,
+ modal: true
+ }).dialog( "option", "appendTo", detached );
equal( element.dialog( "widget" ).parent()[0], detached[0], "detached DOM element via option()" );
+ equal( detached.find( ".ui-widget-overlay" ).length, 0, "overlay detached DOM element via option()" );
element.dialog( "destroy" );
});
diff --git a/tests/unit/effects/effects_core.js b/tests/unit/effects/effects_core.js
index 26390b7d34..c9b1e1b4a8 100644
--- a/tests/unit/effects/effects_core.js
+++ b/tests/unit/effects/effects_core.js
@@ -38,6 +38,17 @@ asyncTest( "Parse of null for options", function() {
});
});
+test( "removeClass", function() {
+ expect( 3 );
+
+ var element = $( "
" );
+ equal( "", element[ 0 ].className );
+ element.addClass( "destroyed" );
+ equal( "destroyed", element[ 0 ].className );
+ element.removeClass();
+ equal( "", element[ 0 ].className );
+});
+
/* TODO: Disabled - Can't figure out why this is failing in IE 6/7
test( "createWrapper and removeWrapper retain focused elements (#7595)", function() {
diff --git a/ui/jquery.ui.accordion.js b/ui/jquery.ui.accordion.js
index 8050e55ab4..1afa95cb4b 100644
--- a/ui/jquery.ui.accordion.js
+++ b/ui/jquery.ui.accordion.js
@@ -65,6 +65,7 @@ $.widget( "ui.accordion", {
_getCreateEventData: function() {
return {
header: this.active,
+ panel: !this.active.length ? $() : this.active.next(),
content: !this.active.length ? $() : this.active.next()
};
},
@@ -262,8 +263,8 @@ $.widget( "ui.accordion", {
(this.element.attr( "id" ) || ++uid);
this.active = this._findActive( options.active )
- .addClass( "ui-accordion-header-active ui-state-active" )
- .toggleClass( "ui-corner-all ui-corner-top" );
+ .addClass( "ui-accordion-header-active ui-state-active ui-corner-top" )
+ .removeClass( "ui-corner-all" );
this.active.next()
.addClass( "ui-accordion-content-active" )
.show();
diff --git a/ui/jquery.ui.datepicker.js b/ui/jquery.ui.datepicker.js
index 24f0d54057..e93f596fc5 100644
--- a/ui/jquery.ui.datepicker.js
+++ b/ui/jquery.ui.datepicker.js
@@ -1918,8 +1918,14 @@ $.extend(Datepicker.prototype, {
if (years){
yearSplit = years.split(":");
currentYear = new Date().getFullYear();
- minYear = parseInt(yearSplit[0], 10) + currentYear;
- maxYear = parseInt(yearSplit[1], 10) + currentYear;
+ minYear = parseInt(yearSplit[0], 10);
+ maxYear = parseInt(yearSplit[1], 10);
+ if ( yearSplit[0].match(/[+\-].*/) ) {
+ minYear += currentYear;
+ }
+ if ( yearSplit[1].match(/[+\-].*/) ) {
+ maxYear += currentYear;
+ }
}
return ((!minDate || date.getTime() >= minDate.getTime()) &&
diff --git a/ui/jquery.ui.dialog.js b/ui/jquery.ui.dialog.js
index ef5787ef60..ec4032ff3b 100644
--- a/ui/jquery.ui.dialog.js
+++ b/ui/jquery.ui.dialog.js
@@ -679,7 +679,10 @@ $.widget( "ui.dialog", {
if ( $.ui.dialog.overlayInstances ) {
this._on( this.document, {
focusin: function( event ) {
- if ( !$( event.target ).closest(".ui-dialog").length ) {
+ if ( !$( event.target ).closest(".ui-dialog").length &&
+ // TODO: Remove hack when datepicker implements
+ // the .ui-front logic (#8989)
+ !$( event.target ).closest(".ui-datepicker").length ) {
event.preventDefault();
$(".ui-dialog:visible:last .ui-dialog-content")
.data("ui-dialog")._focusTabbable();
@@ -692,7 +695,7 @@ $.widget( "ui.dialog", {
this.overlay = $("
")
.addClass("ui-widget-overlay ui-front")
- .appendTo( this.document[0].body );
+ .appendTo( this._appendTo() );
this._on( this.overlay, {
mousedown: "_keepFocus"
});
@@ -704,11 +707,15 @@ $.widget( "ui.dialog", {
return;
}
- $.ui.dialog.overlayInstances--;
- if ( !$.ui.dialog.overlayInstances ) {
- this._off( this.document, "focusin" );
+ if ( this.overlay ) {
+ $.ui.dialog.overlayInstances--;
+
+ if ( !$.ui.dialog.overlayInstances ) {
+ this._off( this.document, "focusin" );
+ }
+ this.overlay.remove();
+ this.overlay = null;
}
- this.overlay.remove();
}
});
diff --git a/ui/jquery.ui.effect.js b/ui/jquery.ui.effect.js
index c6623a0a15..97f006ee06 100644
--- a/ui/jquery.ui.effect.js
+++ b/ui/jquery.ui.effect.js
@@ -849,10 +849,10 @@ $.fn.extend({
_removeClass: $.fn.removeClass,
removeClass: function( classNames, speed, easing, callback ) {
- return speed ?
+ return arguments.length > 1 ?
$.effects.animateClass.call( this,
{ remove: classNames }, speed, easing, callback ) :
- this._removeClass( classNames );
+ this._removeClass.apply( this, arguments );
},
_toggleClass: $.fn.toggleClass,
diff --git a/ui/jquery.ui.slider.js b/ui/jquery.ui.slider.js
index 9640361a15..54024af493 100644
--- a/ui/jquery.ui.slider.js
+++ b/ui/jquery.ui.slider.js
@@ -80,7 +80,7 @@ $.widget( "ui.slider", $.ui.mouse, {
.addClass( "ui-slider-range" +
// note: this isn't the most fittingly semantic framework class for this element,
// but worked best visually with a variety of themes
- " ui-widget-header" +
+ " ui-widget-header ui-corner-all" +
( ( o.range === "min" || o.range === "max" ) ? " ui-slider-range-" + o.range : "" ) );
}