UNPKG

vpn.email

Version:
115 lines (96 loc) 3.52 kB
$.widget( "metro.fluentmenu" , { version: "3.0.0", options: { onSpecialClick: function(a, li){}, onTabClick: function(a, li){}, onTabChange: function(a, li){} }, _create: function () { var that = this, 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; } } }); this._createMenu(); element.data('fluentmenu', this); }, _createMenu: function(){ var that = this, element = this.element, o = this.options; var active_tab = $(element.find(".tabs-holder > li.active")[0]); this.openTab(active_tab); element.on("click", ".tabs-holder > li > a", function(e){ var a = $(this); var li = a.parent('li'); var result; if (li.hasClass('special')) { if (typeof o.onSpecialClick === 'function') { o.onSpecialClick(a, li); } else { if (typeof window[o.onSpecialClick] === 'function') { window[o.onSpecialClick](a, li); } else { result = eval("(function(){"+o.onSpecialClick+"})"); result.call(a, li); } } } else { var panel = $(a.attr('href')); that._hidePanels(); that._showPanel(panel); element.find('.tabs-holder > li').removeClass('active'); a.parent('li').addClass('active'); if (typeof o.onTabClick === 'function') { o.onTabClick(a, li); } else { if (typeof window[o.onTabClick] === 'function') { window[o.onTabClick](a, li); } else { result = eval("(function(){"+o.onTabClick+"})"); result.call(a, li); } } if (typeof o.onTabChange === 'function') { o.onTabChange(a, li); } else { if (typeof window[o.onTabChange] === 'function') { window[o.onTabChange](a, li); } else { result = eval("(function(){"+o.onTabChange+"})"); result.call(a, li); } } } e.preventDefault(); }); }, _hidePanels: function(){ this.element.find('.tab-panel').hide(); }, _showPanel: function(panel){ if (panel == undefined) { panel = this.element.find('.tabs-holder li.active a').attr('href'); } $(panel).show(); }, openTab: function(tab){ var that = this, element = this.element, o = this.options; var target_panel = $(tab.children('a').attr('href')); if (target_panel.length === 0) { return false; } this._hidePanels(); this._showPanel(target_panel); element.find('.tabs-holder > li').removeClass('active'); tab.addClass('active'); }, _destroy: function () { }, _setOption: function ( key, value ) { this._super('_setOption', key, value); } });