This commit is contained in:
2025-03-25 14:15:42 +08:00
parent 7dffc94035
commit da612380e0
845 changed files with 5330 additions and 5153 deletions

View File

@@ -1,11 +1,11 @@
layui.define(['jquery', 'element'], function(exports) {
layui.define(['jquery', 'element'], function (exports) {
"use strict";
var MOD_NAME = 'tab',
$ = layui.jquery,
element = layui.element;
var pearTab = function(opt) {
var pearTab = function (opt) {
this.option = opt;
};
@@ -13,7 +13,7 @@ layui.define(['jquery', 'element'], function(exports) {
var tabDataCurrent = 0;
var contextTabDOM;
pearTab.prototype.render = function(opt) {
pearTab.prototype.render = function (opt) {
var option = {
elem: opt.elem,
@@ -27,7 +27,7 @@ layui.define(['jquery', 'element'], function(exports) {
session: opt.session ? opt.session : false,
preload: opt.preload ? opt.preload : false,
closeEvent: opt.closeEvent,
success: opt.success ? opt.success : function(id) {}
success: opt.success ? opt.success : function (id) { }
}
if (option.session) {
@@ -35,7 +35,7 @@ layui.define(['jquery', 'element'], function(exports) {
tabData = JSON.parse(sessionStorage.getItem(option.elem + "-pear-tab-data"));
option.data = JSON.parse(sessionStorage.getItem(option.elem + "-pear-tab-data"));
tabDataCurrent = sessionStorage.getItem(option.elem + "-pear-tab-data-current");
tabData.forEach(function(item, index) {
tabData.forEach(function (item, index) {
if (item.id == tabDataCurrent) {
option.index = index;
}
@@ -48,10 +48,10 @@ layui.define(['jquery', 'element'], function(exports) {
var lastIndex;
var tab = createTab(option);
$("#" + option.elem).html(tab);
$(".layui-tab[lay-filter='" + option.elem + "'] .layui-tab-prev").click(function() {
$(".layui-tab[lay-filter='" + option.elem + "'] .layui-tab-prev").click(function () {
rollPage("left", option);
})
$(".layui-tab[lay-filter='" + option.elem + "'] .layui-tab-next").click(function() {
$(".layui-tab[lay-filter='" + option.elem + "'] .layui-tab-next").click(function () {
rollPage("right", option);
})
element.init();
@@ -66,7 +66,7 @@ layui.define(['jquery', 'element'], function(exports) {
option.success(sessionStorage.getItem(option.elem + "-pear-tab-data-current"));
$("body .layui-tab[lay-filter='" + option.elem + "'] .layui-tab-title").on("contextmenu", "li",
function(e) {
function (e) {
// 获取当前元素位置
var top = e.clientY;
var left = e.clientX;
@@ -95,23 +95,23 @@ layui.define(['jquery', 'element'], function(exports) {
isOutAnim: false,
offset: [top, left],
content: menu, //iframe的url,
success: function(layero, index) {
success: function (layero, index) {
layer.close(lastIndex);
lastIndex = index;
menuEvent(option, index);
var timer;
$(layero).on('mouseout', function() {
timer = setTimeout(function() {
$(layero).on('mouseout', function () {
timer = setTimeout(function () {
layer.close(index);
}, 30)
});
$(layero).on('mouseover', function() {
$(layero).on('mouseover', function () {
clearTimeout(timer);
});
// 清除 item 右击
$(layero).on('contextmenu', function() {
$(layero).on('contextmenu', function () {
return false;
})
@@ -124,10 +124,10 @@ layui.define(['jquery', 'element'], function(exports) {
return new pearTab(option);
}
pearTab.prototype.click = function(callback) {
pearTab.prototype.click = function (callback) {
var elem = this.option.elem;
var option = this.option;
element.on('tab(' + this.option.elem + ')', function(data) {
element.on('tab(' + this.option.elem + ')', function (data) {
var id = $("#" + elem + " .layui-tab-title .layui-this").attr("lay-id");
sessionStorage.setItem(option.elem + "-pear-tab-data-current", id);
if (!option.preload) {
@@ -136,7 +136,7 @@ layui.define(['jquery', 'element'], function(exports) {
var iframeUrl = $iframe.attr("src");
if (!iframeUrl || iframeUrl === "about:blank") {
// 获取 url 并重载
tabData.forEach(function(item, index) {
tabData.forEach(function (item, index) {
if (item.id === id) {
iframeUrl = item.url;
}
@@ -149,10 +149,10 @@ layui.define(['jquery', 'element'], function(exports) {
});
}
pearTab.prototype.positionTab = function() {
pearTab.prototype.positionTab = function () {
var $tabTitle = $('.layui-tab[lay-filter=' + this.option.elem + '] .layui-tab-title');
var autoLeft = 0;
$tabTitle.children("li").each(function() {
$tabTitle.children("li").each(function () {
if ($(this).hasClass('layui-this')) {
return false;
} else {
@@ -164,12 +164,12 @@ layui.define(['jquery', 'element'], function(exports) {
}, 200);
}
pearTab.prototype.clear = function() {
pearTab.prototype.clear = function () {
sessionStorage.removeItem(this.option.elem + "-pear-tab-data");
sessionStorage.removeItem(this.option.elem + "-pear-tab-data-current");
}
pearTab.prototype.addTab = function(opt) {
pearTab.prototype.addTab = function (opt) {
var title = '';
if (opt.close) {
title += '<span class="pear-tab-active"></span><span class="able-close title">' + opt.title +
@@ -193,25 +193,25 @@ layui.define(['jquery', 'element'], function(exports) {
var index = 0;
// 根据过滤 fliter 标识, 重置选项卡标题
pearTab.prototype.changeTabTitleById = function(elem, id, title) {
pearTab.prototype.changeTabTitleById = function (elem, id, title) {
var currentTab = $(".layui-tab[lay-filter='" + elem + "'] .layui-tab-title [lay-id='" + id +
"'] .title");
currentTab.html(title);
}
// 根据过滤 filter 标识, 删除指定选项卡
pearTab.prototype.delTabByElem = function(elem, id, callback) {
pearTab.prototype.delTabByElem = function (elem, id, callback) {
var currentTab = $(".layui-tab[lay-filter='" + elem + "'] .layui-tab-title [lay-id='" + id + "']");
if (currentTab.find("span").is(".able-close")) {
tabDelete(elem, id, callback);
}
}
// 根据过滤 filter 标识, 删除其他选项卡
pearTab.prototype.delOtherTabByElem = function(elem, callback) {
pearTab.prototype.delOtherTabByElem = function (elem, callback) {
var currentId = $(".layui-tab[lay-filter='" + elem + "'] .layui-tab-title .layui-this").attr(
"lay-id");
var tabtitle = $(".layui-tab[lay-filter='" + elem + "'] .layui-tab-title li");
$.each(tabtitle, function(i) {
$.each(tabtitle, function (i) {
if ($(this).attr("lay-id") != currentId) {
if ($(this).find("span").is(".able-close")) {
tabDelete(elem, $(this).attr("lay-id"), callback);
@@ -221,18 +221,18 @@ layui.define(['jquery', 'element'], function(exports) {
}
// 根据过滤 filter 标识, 删除全部选项卡
pearTab.prototype.delAllTabByElem = function(elem, callback) {
pearTab.prototype.delAllTabByElem = function (elem, callback) {
var currentId = $(".layui-tab[lay-filter='" + elem + "'] .layui-tab-title .layui-this").attr(
"lay-id");
var tabtitle = $(".layui-tab[lay-filter='" + elem + "'] .layui-tab-title li");
$.each(tabtitle, function(i) {
$.each(tabtitle, function (i) {
if ($(this).find("span").is(".able-close")) {
tabDelete(elem, $(this).attr("lay-id"), callback);
}
})
}
// 根据过滤 filter 标识, 删除当前选项卡
pearTab.prototype.delCurrentTabByElem = function(elem, callback) {
pearTab.prototype.delCurrentTabByElem = function (elem, callback) {
var currentTab = $(".layui-tab[lay-filter='" + elem + "'] .layui-tab-title .layui-this");
if (currentTab.find("span").is(".able-close")) {
var currentId = currentTab.attr("lay-id");
@@ -241,7 +241,7 @@ layui.define(['jquery', 'element'], function(exports) {
}
// 通过过滤 filter 标识, 新增标签页
pearTab.prototype.addTabOnlyByElem = function(elem, opt, time) {
pearTab.prototype.addTabOnlyByElem = function (elem, opt, time) {
var title = '';
if (opt.close) {
title += '<span class="pear-tab-active"></span><span class="able-close title">' + opt.title +
@@ -265,7 +265,7 @@ layui.define(['jquery', 'element'], function(exports) {
sessionStorage.setItem(elem + "-pear-tab-data", JSON.stringify(tabData));
} else {
var isData = false;
$.each($(".layui-tab[lay-filter='" + elem + "'] .layui-tab-title li[lay-id]"), function() {
$.each($(".layui-tab[lay-filter='" + elem + "'] .layui-tab-title li[lay-id]"), function () {
if ($(this).attr("lay-id") == opt.id) {
isData = true;
}
@@ -292,7 +292,7 @@ layui.define(['jquery', 'element'], function(exports) {
}
/** 添 加 唯 一 选 项 卡 */
pearTab.prototype.addTabOnly = function(opt, time) {
pearTab.prototype.addTabOnly = function (opt, time) {
var title = '';
if (opt.close) {
title += '<span class="pear-tab-active"></span><span class="able-close title">' + opt.title +
@@ -319,7 +319,7 @@ layui.define(['jquery', 'element'], function(exports) {
} else {
var isData = false;
$.each($(".layui-tab[lay-filter='" + this.option.elem + "'] .layui-tab-title li[lay-id]"),
function() {
function () {
if ($(this).attr("lay-id") == opt.id) {
isData = true;
}
@@ -358,7 +358,7 @@ layui.define(['jquery', 'element'], function(exports) {
}
// 刷 新 指 定 的 选 项 卡
pearTab.prototype.refresh = function(time) {
pearTab.prototype.refresh = function (time) {
// 刷 新 指 定 的 选 项 卡
var $iframe = $(".layui-tab[lay-filter='" + this.option.elem + "'] .layui-tab-content .layui-show")
.find("iframe");
@@ -385,8 +385,8 @@ layui.define(['jquery', 'element'], function(exports) {
display: "block"
});
index++;
$iframe.on("load", function() {
pearLoad.fadeOut(1000, function() {
$iframe.on("load", function () {
pearLoad.fadeOut(1000, function () {
pearLoad.remove();
});
})
@@ -402,12 +402,12 @@ layui.define(['jquery', 'element'], function(exports) {
if (!removeTab.hasClass("layui-this")) {
removeTab.remove();
var tabContent = $(".layui-tab[lay-filter='" + elem + "']").find("iframe[id='" + id + "']")
.parent();
.parent();
tabContent.remove();
tabData = JSON.parse(sessionStorage.getItem(elem + "-pear-tab-data"));
tabDataCurrent = sessionStorage.getItem(elem + "-pear-tab-data-current");
tabData = tabData.filter(function(item) {
tabData = tabData.filter(function (item) {
return item.id != id;
})
sessionStorage.setItem(elem + "-pear-tab-data", JSON.stringify(tabData));
@@ -428,7 +428,7 @@ layui.define(['jquery', 'element'], function(exports) {
callback(currId);
tabData = JSON.parse(sessionStorage.getItem(elem + "-pear-tab-data"));
tabDataCurrent = sessionStorage.getItem(elem + "-pear-tab-data-current");
tabData = tabData.filter(function(item) {
tabData = tabData.filter(function (item) {
return item.id != id;
})
sessionStorage.setItem(elem + "-pear-tab-data", JSON.stringify(tabData));
@@ -463,7 +463,7 @@ layui.define(['jquery', 'element'], function(exports) {
// 处 理 选 项 卡 头 部
var index = 0;
$.each(option.data, function(i, item) {
$.each(option.data, function (i, item) {
var TitleItem = '';
if (option.index == index) {
TitleItem += '<li lay-id="' + item.id +
@@ -531,7 +531,7 @@ layui.define(['jquery', 'element'], function(exports) {
}
function closeEvent(option) {
$(".layui-tab[lay-filter='" + option.elem + "']").on("click", ".layui-tab-close", function() {
$(".layui-tab[lay-filter='" + option.elem + "']").on("click", ".layui-tab-close", function () {
var layid = $(this).parent().attr("lay-id");
tabDelete(option.elem, layid, option.closeEvent, option);
})
@@ -539,7 +539,7 @@ layui.define(['jquery', 'element'], function(exports) {
function menuEvent(option, index) {
$("#" + option.elem + "closeThis").click(function() {
$("#" + option.elem + "closeThis").click(function () {
var currentTab = contextTabDOM;
if (currentTab.find("span").is(".able-close")) {
@@ -554,10 +554,10 @@ layui.define(['jquery', 'element'], function(exports) {
layer.close(index);
})
$("#" + option.elem + "closeOther").click(function() {
$("#" + option.elem + "closeOther").click(function () {
var currentId = contextTabDOM.attr("lay-id");
var tabtitle = $(".layui-tab[lay-filter='" + option.elem + "'] .layui-tab-title li");
$.each(tabtitle, function(i) {
$.each(tabtitle, function (i) {
if ($(this).attr("lay-id") != currentId) {
if ($(this).find("span").is(".able-close")) {
tabDelete(option.elem, $(this).attr("lay-id"), option.closeEvent,
@@ -568,10 +568,10 @@ layui.define(['jquery', 'element'], function(exports) {
layer.close(index);
})
$("#" + option.elem + "closeAll").click(function() {
$("#" + option.elem + "closeAll").click(function () {
var currentId = contextTabDOM.attr("lay-id");
var tabtitle = $(".layui-tab[lay-filter='" + option.elem + "'] .layui-tab-title li");
$.each(tabtitle, function(i) {
$.each(tabtitle, function (i) {
if ($(this).find("span").is(".able-close")) {
tabDelete(option.elem, $(this).attr("lay-id"), option.closeEvent, option);
}
@@ -581,7 +581,7 @@ layui.define(['jquery', 'element'], function(exports) {
}
function toolEvent(option) {
$("body .layui-tab[lay-filter='" + option.elem + "']").on("click", "#closeThis", function() {
$("body .layui-tab[lay-filter='" + option.elem + "']").on("click", "#closeThis", function () {
var currentTab = $(".layui-tab[lay-filter='" + option.elem +
"'] .layui-tab-title .layui-this");
if (currentTab.find("span").is(".able-close")) {
@@ -595,11 +595,11 @@ layui.define(['jquery', 'element'], function(exports) {
}
})
$("body .layui-tab[lay-filter='" + option.elem + "']").on("click", "#closeOther", function() {
$("body .layui-tab[lay-filter='" + option.elem + "']").on("click", "#closeOther", function () {
var currentId = $(".layui-tab[lay-filter='" + option.elem +
"'] .layui-tab-title .layui-this").attr("lay-id");
var tabtitle = $(".layui-tab[lay-filter='" + option.elem + "'] .layui-tab-title li");
$.each(tabtitle, function(i) {
$.each(tabtitle, function (i) {
if ($(this).attr("lay-id") != currentId) {
if ($(this).find("span").is(".able-close")) {
tabDelete(option.elem, $(this).attr("lay-id"), option.closeEvent,
@@ -609,11 +609,11 @@ layui.define(['jquery', 'element'], function(exports) {
})
})
$("body .layui-tab[lay-filter='" + option.elem + "']").on("click", "#closeAll", function() {
$("body .layui-tab[lay-filter='" + option.elem + "']").on("click", "#closeAll", function () {
var currentId = $(".layui-tab[lay-filter='" + option.elem +
"'] .layui-tab-title .layui-this").attr("lay-id");
var tabtitle = $(".layui-tab[lay-filter='" + option.elem + "'] .layui-tab-title li");
$.each(tabtitle, function(i) {
$.each(tabtitle, function (i) {
if ($(this).find("span").is(".able-close")) {
tabDelete(option.elem, $(this).attr("lay-id"), option.closeEvent, option);
}
@@ -626,10 +626,10 @@ layui.define(['jquery', 'element'], function(exports) {
var $tabTitle = $('#' + option.elem + ' .layui-tab-title');
var mouseScrollStep = 100
// 鼠标滚轮
$bodyTab.on("mousewheel DOMMouseScroll", function(e) {
$bodyTab.on("mousewheel DOMMouseScroll", function (e) {
e.originalEvent.preventDefault()
var delta = (e.originalEvent.wheelDelta && (e.originalEvent.wheelDelta > 0 ? "top" :
"down")) || // chrome & ie
"down")) || // chrome & ie
(e.originalEvent.detail && (e.originalEvent.detail > 0 ? "down" : "top")); // firefox
var scrollLeft = $tabTitle.scrollLeft();
@@ -643,11 +643,11 @@ layui.define(['jquery', 'element'], function(exports) {
// 触摸移动
var touchX = 0;
$bodyTab.on("touchstart", function(e) {
$bodyTab.on("touchstart", function (e) {
var touch = e.originalEvent.targetTouches[0];
touchX = touch.pageX
})
$bodyTab.on("touchmove", function(e) {
$bodyTab.on("touchmove", function (e) {
var event = e.originalEvent;
if (event.targetTouches.length > 1) return;
event.preventDefault();