Merge remote-tracking branch 'origin/main'

pull/1224/head
sunxiaobin89 2023-03-11 14:42:38 +08:00
commit 10c0783bc1
4 changed files with 66 additions and 56 deletions

2
dist/layui.js vendored

File diff suppressed because one or more lines are too long

View File

@ -1,6 +1,6 @@
{ {
"name": "layui", "name": "layui",
"version": "2.8.0-rc.11", "version": "2.8.0-rc.12",
"description": "Classic modular Front-End UI library", "description": "Classic modular Front-End UI library",
"main": "dist/layui.js", "main": "dist/layui.js",
"license": "MIT", "license": "MIT",

View File

@ -15,7 +15,7 @@
} }
,Layui = function(){ ,Layui = function(){
this.v = '2.8.0-rc.11'; // Layui 版本号 this.v = '2.8.0-rc.12'; // Layui 版本号
} }
//识别预先可能定义的指定全局对象 //识别预先可能定义的指定全局对象

View File

@ -10,7 +10,10 @@ layui.define('jquery', function(exports){
var hint = layui.hint(); var hint = layui.hint();
var device = layui.device(); var device = layui.device();
var MOD_NAME = 'element', THIS = 'layui-this', SHOW = 'layui-show'; var MOD_NAME = 'element';
var THIS = 'layui-this';
var SHOW = 'layui-show';
var TITLE = '.layui-tab-title';
var Element = function(){ var Element = function(){
this.config = {}; this.config = {};
@ -30,12 +33,11 @@ layui.define('jquery', function(exports){
// 外部 Tab 新增 // 外部 Tab 新增
Element.prototype.tabAdd = function(filter, options){ Element.prototype.tabAdd = function(filter, options){
var TITLE = '.layui-tab-title' var tabElem = $('.layui-tab[lay-filter='+ filter +']');
,tabElem = $('.layui-tab[lay-filter='+ filter +']') var titElem = tabElem.children(TITLE);
,titElem = tabElem.children(TITLE) var barElem = titElem.children('.layui-tab-bar');
,barElem = titElem.children('.layui-tab-bar') var contElem = tabElem.children('.layui-tab-content');
,contElem = tabElem.children('.layui-tab-content') var li = '<li'+ function(){
,li = '<li'+ function(){
var layAttr = []; var layAttr = [];
layui.each(options, function(key, value){ layui.each(options, function(key, value){
if(/^(title|content)$/.test(key)) return; if(/^(title|content)$/.test(key)) return;
@ -54,21 +56,22 @@ layui.define('jquery', function(exports){
// 外部 Tab 删除 // 外部 Tab 删除
Element.prototype.tabDelete = function(filter, layid){ Element.prototype.tabDelete = function(filter, layid){
var TITLE = '.layui-tab-title' var tabElem = $('.layui-tab[lay-filter='+ filter +']');
,tabElem = $('.layui-tab[lay-filter='+ filter +']') var titElem = tabElem.children(TITLE);
,titElem = tabElem.children(TITLE) var liElem = titElem.find('>li[lay-id="'+ layid +'"]');
,liElem = titElem.find('>li[lay-id="'+ layid +'"]');
call.tabDelete(null, liElem); call.tabDelete(null, liElem);
return this; return this;
}; };
// 外部 Tab 切换 // 外部 Tab 切换
Element.prototype.tabChange = function(filter, layid){ Element.prototype.tabChange = function(filter, layid){
var TITLE = '.layui-tab-title' var tabElem = $('.layui-tab[lay-filter='+ filter +']');
,tabElem = $('.layui-tab[lay-filter='+ filter +']') var titElem = tabElem.children(TITLE);
,titElem = tabElem.children(TITLE) var liElem = titElem.find('>li[lay-id="'+ layid +'"]');
,liElem = titElem.find('>li[lay-id="'+ layid +'"]');
call.tabClick.call(liElem[0], null, null, liElem); call.tabClick.call(liElem[0], {
liElem: liElem
});
return this; return this;
}; };
@ -77,7 +80,10 @@ layui.define('jquery', function(exports){
options = options || {}; options = options || {};
dom.on('click', options.headerElem, function(e){ dom.on('click', options.headerElem, function(e){
var index = $(this).index(); var index = $(this).index();
call.tabClick.call(this, e, index, null, options); call.tabClick.call(this, {
index: index,
options: options
});
}); });
}; };
@ -111,9 +117,10 @@ layui.define('jquery', function(exports){
// 基础事件体 // 基础事件体
var call = { var call = {
// Tab 点击 // Tab 点击
tabClick: function(e, index, liElem, options){ tabClick: function(obj){
options = options || {}; obj = obj || {};
var othis = liElem || $(this); var options = obj.options || {};
var othis = obj.liElem || $(this);
var parents = options.headerElem var parents = options.headerElem
? othis.parent() ? othis.parent()
: othis.parents('.layui-tab').eq(0); : othis.parents('.layui-tab').eq(0);
@ -126,9 +133,9 @@ layui.define('jquery', function(exports){
var filter = parents.attr('lay-filter'); var filter = parents.attr('lay-filter');
// 下标 // 下标
index = index === undefined var index = 'index' in obj
? othis.parent().children('li').index(othis) ? obj.index
: index; : othis.parent().children('li').index(othis);
// 执行切换 // 执行切换
if(!(isJump || unselect)){ if(!(isJump || unselect)){
@ -137,21 +144,24 @@ layui.define('jquery', function(exports){
} }
layui.event.call(this, MOD_NAME, 'tab('+ filter +')', { layui.event.call(this, MOD_NAME, 'tab('+ filter +')', {
elem: parents elem: parents,
,index: index index: index
}); });
} }
// Tab 删除 // Tab 删除
,tabDelete: function(e, othis){ ,tabDelete: function(e, othis){
var li = othis || $(this).parent(), index = li.index() var li = othis || $(this).parent();
,parents = li.parents('.layui-tab').eq(0) var index = li.index();
,item = parents.children('.layui-tab-content').children('.layui-tab-item') var parents = li.parents('.layui-tab').eq(0);
,filter = parents.attr('lay-filter'); var item = parents.children('.layui-tab-content>.layui-tab-item');
var filter = parents.attr('lay-filter');
if(li.hasClass(THIS)){ if(li.hasClass(THIS)){
if (li.next()[0] && li.next().is('li')){ if (li.next()[0] && li.next().is('li')){
call.tabClick.call(li.next()[0], null, index + 1); call.tabClick.call(li.next()[0], {
index: index + 1
});
} else if (li.prev()[0] && li.prev().is('li')){ } else if (li.prev()[0] && li.prev().is('li')){
call.tabClick.call(li.prev()[0], null, index - 1); call.tabClick.call(li.prev()[0], null, index - 1);
} }
@ -164,8 +174,8 @@ layui.define('jquery', function(exports){
}, 50); }, 50);
layui.event.call(this, MOD_NAME, 'tabDelete('+ filter +')', { layui.event.call(this, MOD_NAME, 'tabDelete('+ filter +')', {
elem: parents elem: parents,
,index: index index: index
}); });
} }
@ -512,14 +522,14 @@ layui.define('jquery', function(exports){
Element.prototype.render = Element.prototype.init; Element.prototype.render = Element.prototype.init;
var element = new Element(), dom = $(document); var element = new Element();
var dom = $(document);
$(function(){ $(function(){
element.render(); element.render();
}); });
var TITLE = '.layui-tab-title li'; dom.on('click', '.layui-tab-title li', call.tabClick); // Tab 切换
dom.on('click', TITLE, call.tabClick); //Tab切换
dom.on('click', call.hideTabMore); // 隐藏展开的 Tab dom.on('click', call.hideTabMore); // 隐藏展开的 Tab
$(window).on('resize', call.tabAuto); // 自适应 $(window).on('resize', call.tabAuto); // 自适应