r2921 - labs: panel
r2921 - labs: panel
Author: idlesign
Date: Tue Jul 14 22:29:24 2009
New Revision: 2921
Modified:
branches/labs/panel/ui.panel.js
Log:
labs: panel
* changed: 'collapsed' ident moved from tag attribute to .data
* new: 'disable' method (& 'disabled' option)
Modified: branches/labs/panel/ui.panel.js
==============================================================================
--- branches/labs/panel/ui.panel.js (original)
+++ branches/labs/panel/ui.panel.js Tue Jul 14 22:29:24 2009
@@ -1,5 +1,5 @@
/*
-* Panel Draft 0.3.2
+* Panel Draft 0.3.4
* for jQuery UI
*
* Copyright (c) 2009 Igor 'idle sign' Starikov
@@ -44,6 +44,8 @@
// suppose 'o.controls' should be a ui.toolbar control
this.rightBox.append('<span></span>');
this.controlsBox =
this.rightBox.children().eq(0).addClass(o.controlsClass).html(o.controls);
+ } else {
+ this.controlsBox = null;
}
// styling
@@ -100,8 +102,8 @@
o.collapsed = true;
}
}
- // store state as attribute
- this.panelBox.attr('collapsed', o.collapsed);
+ // store state as data
+ this.panelBox.data('collapsed', o.collapsed);
// panel collapsed - trigger action
if (o.collapsed) {
@@ -112,6 +114,9 @@
if (!o.accordion && o.draggable && $.fn.draggable){
this._makeDraggable(); }
this.panelBox.show();
+
+ // disabled panel handling
+ this.disable(o.disabled);
}
},
@@ -138,6 +143,26 @@
return false;
},
+ disable: function (disable){
+ var o = this.options;
+
+ if (disable===undefined) disable = true;
+ if (disable) {
+ this.panelBox.children().addClass(o.disableClass);
+ // lock panel controls
+ if (this.controlsBox){
+ this.controlsBox.bind('click', function() { return false; });
+ }
+ } else {
+ this.panelBox.children().removeClass(o.disableClass);
+ if (this.controlsBox){
+ this.controlsBox.unbind('click');
+ }
+ }
+ // save state
+ o.disabled = disable;
+ },
+
toggle: function (collapseSpeed, innerCall){
var self = this,
o = this.options,
@@ -219,7 +244,7 @@
o.collapsed = !o.collapsed;
}
- panelBox.attr('collapsed', o.collapsed);
+ panelBox.data('collapsed', o.collapsed);
// save state in cookie if allowed
if (o.cookie) {
@@ -228,7 +253,7 @@
// inner toggle call to show only one unfolded panel if 'accordion'
option is set
if (o.accordion && !innerCall){
-
$("."+o.accordion+"[role='panel'][collapsed='false'][id!='"+(o.id)+"']").panel('toggle',
collapseSpeed, true);
+
$("."+o.accordion+"[role='panel'][id!='"+(o.id)+"']:not(:data(collapsed))").panel('toggle',
collapseSpeed, true);
}
// css animation for header and button
@@ -251,7 +276,7 @@
.html(o.content);
this.panelBox
.removeAttr('role')
- .removeAttr('collapsed')
+ .removeData('collapsed')
.unbind('.panel')
.removeClass(o.widgetClass);
@@ -269,7 +294,7 @@
});
$.extend($.ui.panel, {
- version: '0.3.2',
+ version: '0.3.4',
defaults: {
event: 'click',
collapsible: true,
@@ -278,6 +303,7 @@
accordion: false,
collapseSpeed: 'fast',
draggable: false,
+ disabled: false,
// true vertical text with svg or filter rendering
trueVerticalText: false,
// neccessary for true vertical text
@@ -297,6 +323,7 @@
titleTextClass: 'ui-panel-title-text',
iconClass: 'ui-icon',
hoverClass: 'ui-state-hover',
+ disableClass: 'ui-state-disabled',
collapsePnlClass: 'ui-panel-clps-pnl',
//icons
headerIconClpsd: 'ui-icon-triangle-1-e',