vpn.email
Version:
vpn.email client
77 lines (62 loc) • 2.41 kB
JavaScript
$.widget("metro.panel", {
version: "3.0.0",
options: {
onExpand: function(panel){},
onCollapse: function(panel){}
},
_create: function(){
var element = this.element, o = this.options;
$.each(element.data(), function(key, value){
if (key in o) {
try {
o[key] = $.parseJSON(value);
} catch (e) {
o[key] = value;
}
}
});
if (!element.hasClass('collapsible')) {element.addClass('collapsible');}
if (element.hasClass("collapsible")) {
var toggle = element.children(".heading");
var content = element.children(".content");
toggle.on("click", function(){
var result;
if (element.hasClass("collapsed")) {
content.slideDown('fast', function(){
element.removeClass('collapsed');
if (typeof o.onExpand === 'function') {
o.onExpand(element);
} else {
if (typeof window[o.onExpand] === 'function') {
window[o.onExpand](element);
} else {
result = eval("(function(){"+o.onExpand+"})");
result.call(element);
}
}
});
} else {
content.slideUp('fast', function(){
element.addClass('collapsed');
if (typeof o.onCollapse === 'function') {
o.onCollapse(element);
} else {
if (typeof window[o.onCollapse] === 'function') {
window[o.onCollapse](element);
} else {
result = eval("(function(){"+o.onCollapse+"})");
result.call(element);
}
}
});
}
});
}
element.data('panel', this);
},
_destroy: function(){
},
_setOption: function(key, value){
this._super('_setOption', key, value);
}
});