Accordion: Add disabled class to headers and panels to fix styling in IE. Fixes #5332 - Accordion: Disabled accordion doesn't look disabled in IE.

This commit is contained in:
Scott González 2010-07-14 11:00:28 -04:00
parent 936a9a6d9c
commit c71e63cb69

View File

@ -144,23 +144,21 @@ $.widget("ui.accordion", {
this.element this.element
.removeClass("ui-accordion ui-widget ui-helper-reset") .removeClass("ui-accordion ui-widget ui-helper-reset")
.removeAttr("role") .removeAttr("role");
.unbind('.accordion')
.removeData('accordion');
this.headers this.headers
.unbind(".accordion") .unbind(".accordion")
.removeClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-corner-top") .removeClass("ui-accordion-header ui-accordion-disabled ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top")
.removeAttr("role").removeAttr("aria-expanded").removeAttr("tabIndex"); .removeAttr("role").removeAttr("aria-expanded").removeAttr("tabIndex");
this.headers.find("a").removeAttr("tabIndex"); this.headers.find("a").removeAttr("tabIndex");
this._destroyIcons(); this._destroyIcons();
var contents = this.headers.next().css("display", "").removeAttr("role").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active"); var contents = this.headers.next().css("display", "").removeAttr("role").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-accordion-disabled ui-state-disabled");
if (o.autoHeight || o.fillHeight) { if (o.autoHeight || o.fillHeight) {
contents.css("height", ""); contents.css("height", "");
} }
return this; return $.Widget.prototype.destroy.call( this );
}, },
_setOption: function(key, value) { _setOption: function(key, value) {
@ -175,7 +173,13 @@ $.widget("ui.accordion", {
this._createIcons(); this._createIcons();
} }
} }
// #5332 - opacity doesn't cascade to positioned elements in IE
// so we need to add the disabled class to the headers and panels
if (key == "disabled") {
this.headers.add(this.headers.next())
[ value ? "addClass" : "removeClass"](
"ui-accordion-disabled ui-state-disabled" );
}
}, },
_keydown: function(event) { _keydown: function(event) {