/** * YourTeam 上方 Tab 頁籤 * * 使用方式: * * * *
*
* */ var YT = YT || {}; $(function () { initNavBarByEle(); }) /** * 初始全頁面 yt tab * */ function initNavBarByEle() { /*_ytTabInited = [];*/ $(".yt-navbar").each(function (index, value) { let type = null; if ($(value).hasClass("yt-left-navbar")) { type = "left"; } let option = { element: value, type: type }; let navbar = new YourTeamNavbar(option); }) } class YourTeamNavbar { constructor(option = {}) { this.element = option.element; this.type = option.type ?? "left"; this.isOpen = false; this.init(); } init = function () { this.initClose(); this.checkIsOpen(); $(this.element)[0]._ytNavbar = this; this.chkTrigger(); } checkIsOpen = function () { if ($(this.element).is(":visible")) { this.isOpen = true; } else { this.isOpen = false; } } open = function () { if (this.type == "left") { let curLeft = parseInt($(this.element).css("left").split("px")[0]); if (curLeft >= 0) { $(this.element).css("opacity", 0); $(this.element).show(); let width = $(this.element)[0].offsetWidth; $(this.element).css("left",0 - width); $(this.element).hide(); $(this.element).css("opacity", 1); } $(this.element).show(); $(this.element).animate({ left: 0}, 200, () => { this.checkIsOpen(); }) } } close = function () { let width = $(this.element)[0].offsetWidth; if (this.type == "left") { $(this.element).animate({ left: 0 - width }, 200, () => { $(this.element).hide(); this.checkIsOpen(); }) } } initClose = function () { let width = $(this.element)[0].offsetWidth; if (this.type == "left") { $(this.element).css("left", 0 - width); $(this.element).hide(); } } toggle = function () { if (this.isOpen) { this.close(); } else { this.open(); } } chkTrigger = function () { $("[data-toggle=navbar]").each((idx, ele) => { let target = $(ele).data("target"); if ($(this.element)[0] == $(target)[0]) { $(ele).on("click", () => { this.toggle(); }) } }) } } $.fn.YTNavbar = function (method) { let nbObj = $(this)[0]._ytNavbar; let target = $(this).data("target"); if (!nbObj && $(target).length != 0) { nbObj = $(target)[0]._ytNavbar; } if (!nbObj) return this; if (method == "show") { nbObj.open(); } else if (method == "hide") { nbObj.close(); } else if (method == "init") { nbObj.init(); } return nbObj; } function getTogNavbar() { $("[data-toggle=navbar]").each((idx, ele) => { let target = $(ele).data("target"); $(ele).off("click").on("click", function () { let ngObj = $(target)[0]._ytNavbar; ngObj.toggle(); }) }) } YT.NavBar = YT.NavBar || YourTeamNavbar;