UNPKG

vpn.email

Version:
185 lines (146 loc) 5.79 kB
$.widget( "metro.tabcontrol" , { version: "3.0.0", options: { openTarget: false, saveState: false, onTabClick: function(tab){return true;}, onTabChange: function(tab){}, _current: {tab: false, frame: false} }, _create: function () { var that = this, element = this.element, o = this.options; var tabs = element.children('.tabs').find('li').children('a'); var frames = element.children('.frames').children('div'); var tab, target, frame; $.each(element.data(), function(key, value){ if (key in o) { try { o[key] = $.parseJSON(value); } catch (e) { o[key] = value; } } }); if (o.saveState && element.attr('id') !== undefined && element.attr('id').trim() !== '') { var stored_target = window.localStorage.getItem(element.attr('id')+"-stored-tab"); if (stored_target && stored_target !== 'undefined') { tab = element.find("a[href='"+stored_target+"']"); if (tab) { target = tab.attr('href'); frame = target && target.isUrl() ? false : $(target); o._current.tab = tab; o._current.frame = frame; } } } if (!o._current.tab && o.openTarget !== false) { tab = element.find("a[href='"+ o.openTarget+"']"); if (tab) { target = tab.attr('href'); frame = target && target.isUrl() ? false : $(target); o._current.tab = tab; o._current.frame = frame; } } if (!o._current.tab) { $.each(tabs, function (i, v) { var tab = $(v), target = tab.attr('href'), frame = target.isUrl() ? false : $(target); if (tab.parent().hasClass('active') && !tab.parent().hasClass('disabled') && frame !== false) { o._current.tab = tab; o._current.frame = frame; } }); } if (!o._current.tab) { for(var i = 0; i < tabs.length; i++) { if (!$(tabs[i]).attr('href').isUrl() && !$(tabs[i]).parent().hasClass('disabled')) { o._current.tab = $(tabs[i]); o._current.frame = $($(tabs[i]).attr('href')); break; } } } this._createEvents(); this._openTab(); //this._hideTabs(); // //$(window).on('resize', function(){ // that._hideTabs(); //}); element.data('tabcontrol', this); }, _hideTabs: function(){ var element = this.element; var w = element.outerWidth(); var _tabs = element.children('.tabs').find('li:not(.non-visible-tabs)'); var _nvt = element.children('.tabs').find('.non-visible-tabs').children('.d-menu'); $.each(_tabs, function(){ var $tab = $(this), tab = this; if (tab.offsetLeft + tab.offsetWidth + 30 > w) { var new_tab = $tab.clone(true); new_tab.appendTo(_nvt); $tab.remove(); } }); }, _openTab: function(){ var element = this.element, o = this.options; var tabs = element.children('.tabs').find('li').children('a'); var frames = element.children('.frames').children('div'); tabs.parent().removeClass('active'); frames.hide(); o._current.tab.parent().addClass('active'); o._current.frame.show(); if (o.saveState && element.attr('id') !== undefined && element.attr('id').trim() !== '') { window.localStorage.setItem(element.attr('id')+"-stored-tab", o._current.tab.attr('href')); } }, _createEvents: function(){ var that = this, element = this.element, o = this.options; var tabs = element.children('.tabs').find('li').children('a'); var frames = element.children('.frames').children('div'); element.on('click', '.tabs > li > a', function(e){ var result; var tab = $(this), target = tab.attr('href'), frame = $(target); if (tab.parent().hasClass('disabled')) {return false;} if (typeof o.onTabClick === 'function') { if (!o.onTabClick(tab)) {return false;} } else { if (typeof window[o.onTabClick] === 'function') { if (!window[o.onTabClick](tab)) {return false;} } else { result = eval("(function(){"+o.onTabClick+"})"); if (!result.call(tab)) {return false;} } } if (target.isUrl()) { window.location.href = target; return true; } o._current.tab = tab; o._current.frame = frame; that._openTab(); if (typeof o.onTabChange === 'function') { o.onTabChange(tab); } else { if (typeof window[o.onTabChange] === 'function') { window[o.onTabChange](tab); } else { result = eval("(function(){"+o.onTabChange+"})"); result.call(tab); } } e.preventDefault(); e.stopPropagation(); }); }, hideTab: function(tab){ }, showTab: function(tab){ }, _destroy: function () { }, _setOption: function ( key, value ) { this._super('_setOption', key, value); } });