mirror of
https://github.com/pierre42100/comunic
synced 2024-11-16 18:41:13 +00:00
97 lines
2.9 KiB
JavaScript
97 lines
2.9 KiB
JavaScript
|
(function( $ ) {
|
||
|
$.widget("metro.tabcontrol", {
|
||
|
|
||
|
version: "1.0.0",
|
||
|
|
||
|
options: {
|
||
|
effect: 'none',
|
||
|
activateStoredTab: false,
|
||
|
tabclick: function(tab){},
|
||
|
tabchange: function(tab){}
|
||
|
},
|
||
|
|
||
|
_create: function(){
|
||
|
var that = this,
|
||
|
element = this.element,
|
||
|
tabs = $(element.children(".tabs")).children("li"),
|
||
|
frames = $(element.children(".frames")).children(".frame"),
|
||
|
element_id = element.attr("id");
|
||
|
|
||
|
if (element.data('effect') != undefined) {
|
||
|
this.options.effect = element.data('effect');
|
||
|
}
|
||
|
|
||
|
this.init(tabs, frames);
|
||
|
|
||
|
tabs.each(function(){
|
||
|
|
||
|
var tab = $(this).children("a");
|
||
|
|
||
|
tab.on('click', function(e){
|
||
|
e.preventDefault();
|
||
|
|
||
|
that.options.tabclick(this);
|
||
|
|
||
|
if ($(this).parent().hasClass('disabled')) {
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
tabs.removeClass("active");
|
||
|
tab.parent("li").addClass("active");
|
||
|
|
||
|
frames.hide();
|
||
|
var current_frame = $(tab.attr("href"));
|
||
|
switch (that.options.effect) {
|
||
|
case 'slide': current_frame.slideDown(); break;
|
||
|
case 'fade': current_frame.fadeIn(); break;
|
||
|
default: current_frame.show();
|
||
|
}
|
||
|
|
||
|
that._trigger('change', null, current_frame);
|
||
|
that.options.tabchange(this);
|
||
|
|
||
|
if (element_id != undefined) window.localStorage.setItem(element_id+"-current-tab", $(this).attr("href"));
|
||
|
});
|
||
|
});
|
||
|
|
||
|
if (this.options.activateStoredTab) this._activateStoredTab(tabs);
|
||
|
},
|
||
|
|
||
|
init: function(tabs, frames){
|
||
|
var that = this;
|
||
|
tabs.each(function(){
|
||
|
if ($(this).hasClass("active")) {
|
||
|
var current_frame = $($($(this).children("a")).attr("href"));
|
||
|
frames.hide();
|
||
|
current_frame.show();
|
||
|
that._trigger('change', null, current_frame);
|
||
|
}
|
||
|
});
|
||
|
},
|
||
|
|
||
|
_activateStoredTab: function(tabs){
|
||
|
var current_stored_tab = window.localStorage.getItem(this.element.attr('id')+'-current-tab');
|
||
|
|
||
|
if (current_stored_tab != undefined) {
|
||
|
tabs.each(function(){
|
||
|
var a = $(this).children("a");
|
||
|
if (a.attr("href") == current_stored_tab) {
|
||
|
a.click();
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
},
|
||
|
|
||
|
_destroy: function(){
|
||
|
|
||
|
},
|
||
|
|
||
|
_setOption: function(key, value){
|
||
|
this._super('_setOption', key, value);
|
||
|
}
|
||
|
})
|
||
|
})( jQuery );
|
||
|
|
||
|
|
||
|
|