From 9a32923c0a236c54efe488ce0a7a68745925b4d4 Mon Sep 17 00:00:00 2001
From: Diyar-IT <136627746+Diyar-IT@users.noreply.github.com>
Date: Mon, 21 Aug 2023 15:33:41 +0800
Subject: [PATCH 01/22] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E5=BC=82=E6=AD=A5?=
=?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=B2=A1=E6=9C=89=E5=AD=90=E8=8A=82=E7=82=B9?=
=?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=8F=8C=E7=82=B9=E8=A1=8C=E5=B1=95=E5=BC=80?=
=?UTF-8?q?=E5=B7=B2=E5=B1=95=E5=BC=80=E7=9A=84=E6=89=80=E6=9C=89=E8=8A=82?=
=?UTF-8?q?=E7=82=B9=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
解决异步数据没有子节点数据双点行展开已展开的所有节点问题
---
src/modules/treeTable.js | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/modules/treeTable.js b/src/modules/treeTable.js
index a599b553..65ea4531 100644
--- a/src/modules/treeTable.js
+++ b/src/modules/treeTable.js
@@ -576,6 +576,7 @@ layui.define(['table'], function (exports) {
if (trExpand) {
// 展开
if (trExpanded) { // 已经展开过
+ if (!childNodes.length) return ;//异步如果子节点没有数据情况下双点行展开所有已展开的节点问题解决
trsElem.nextAll(childNodes.map(function (value, index, array) {
return 'tr[lay-data-index="' + value[LAY_DATA_INDEX] + '"]'
}).join(',')).removeClass(HIDE);
From c65aabe2b148e54b7dae514eeda6520f83ca0fda Mon Sep 17 00:00:00 2001
From: Diyar-IT <136627746+Diyar-IT@users.noreply.github.com>
Date: Mon, 21 Aug 2023 17:32:27 +0800
Subject: [PATCH 02/22] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/modules/table.js | 179 ++++++++++++++++++++++---------------------
1 file changed, 91 insertions(+), 88 deletions(-)
diff --git a/src/modules/table.js b/src/modules/table.js
index 3f33599f..4013f808 100644
--- a/src/modules/table.js
+++ b/src/modules/table.js
@@ -329,18 +329,18 @@ layui.define(['lay', 'laytpl', 'laypage', 'form', 'util'], function(exports){
//请求参数的自定义格式
options.request = $.extend({
- pageName: 'page'
- ,limitName: 'limit'
+ pageName: 'page',
+ limitName: 'limit'
}, options.request)
// 响应数据的自定义格式
options.response = $.extend({
- statusName: 'code' //规定数据状态的字段名称
- ,statusCode: 0 //规定成功的状态码
- ,msgName: 'msg' //规定状态信息的字段名称
- ,dataName: 'data' //规定数据总数的字段名称
- ,totalRowName: 'totalRow' //规定数据统计的字段名称
- ,countName: 'count'
+ statusName: 'code', //规定数据状态的字段名称
+ statusCode: 0, //规定成功的状态码
+ msgName: 'msg', //规定状态信息的字段名称
+ dataName: 'data', //规定数据总数的字段名称
+ totalRowName: 'totalRow', //规定数据统计的字段名称
+ countName: 'count'
}, options.response);
//如果 page 传入 laypage 对象
@@ -386,11 +386,11 @@ layui.define(['lay', 'laytpl', 'laypage', 'form', 'util'], function(exports){
}
//开始插入替代元素
- var othis = options.elem
- ,hasRender = othis.next('.' + ELEM_VIEW)
+ var othis = options.elem;
+ var hasRender = othis.next('.' + ELEM_VIEW);
//主容器
- ,reElem = that.elem = $('
',
+ ''].join(''));
+ that.layInit = $(['
',
+ '',
+ '
'].join(''));
that.layBox.append(that.layInit);
}
}
@@ -1674,10 +1677,10 @@ layui.define(['lay', 'laytpl', 'laypage', 'form', 'util'], function(exports){
//让表格铺满
Class.prototype.fullSize = function(){
- var that = this
- ,options = that.config
- ,height = options.height
- ,bodyHeight;
+ var that = this;
+ var options = that.config;
+ var height = options.height;
+ var bodyHeight;
if(that.fullHeightGap){
height = _WIN.height() - that.fullHeightGap;
@@ -1898,8 +1901,8 @@ layui.define(['lay', 'laytpl', 'laypage', 'form', 'util'], function(exports){
'
导出 csv 格式文件',
'
导出 xls 格式文件'
].join('')
- }()
- ,done: function(panel, list){
+ }(),
+ done: function(panel, list){
list.on('click', function(){
var type = $(this).data('type')
table.exportFile.call(that, options.id, null, type);
@@ -1944,8 +1947,8 @@ layui.define(['lay', 'laytpl', 'laypage', 'form', 'util'], function(exports){
}
layui.event.call(this, MOD_NAME, 'toolbar('+ filter +')', $.extend({
- event: events
- ,config: options
+ event: events,
+ config: options
},{}));
});
@@ -1970,16 +1973,16 @@ layui.define(['lay', 'laytpl', 'laypage', 'form', 'util'], function(exports){
var events = othis.attr('lay-event');
layui.event.call(this, MOD_NAME, 'pagebar('+ filter +')', $.extend({
- event: events
- ,config: options
+ event: events,
+ config: options
},{}));
});
// 拖拽调整宽度
th.on('mousemove', function(e){
- var othis = $(this)
- ,oLeft = othis.offset().left
- ,pLeft = e.clientX - oLeft;
+ var othis = $(this);
+ var oLeft = othis.offset().left;
+ var pLeft = e.clientX - oLeft;
if(othis.data('unresize') || thisTable.eventMoveElem){
return;
}
@@ -2095,9 +2098,9 @@ layui.define(['lay', 'laytpl', 'laypage', 'form', 'util'], function(exports){
fromEvent: true
});
}).find(ELEM_SORT+' .layui-edge ').on('click', function(e){
- var othis = $(this)
- ,index = othis.index()
- ,field = othis.parents('th').eq(0).data('field')
+ var othis = $(this);
+ var index = othis.index();
+ var field = othis.parents('th').eq(0).data('field');
layui.stope(e);
if(index === 0){
that.sort({
@@ -2652,8 +2655,8 @@ layui.define(['lay', 'laytpl', 'laypage', 'form', 'util'], function(exports){
// 遍历表头
table.eachCols = function(id, callback, cols){
- var config = thisTable.config[id] || {}
- ,arrs = [], index = 0;
+ var config = thisTable.config[id] || {};
+ var arrs = [], index = 0;
cols = $.extend(true, [], cols || config.cols);
@@ -2713,12 +2716,12 @@ layui.define(['lay', 'laytpl', 'laypage', 'form', 'util'], function(exports){
// 获取表格当前页的所有行数据
table.getData = function(id){
- var arr = []
- ,data = table.cache[id] || [];
+ var arr = [];
+ var data = table.cache[id] || [];
layui.each(data, function(i, item){
if(layui.type(item) === 'array'){
return;
- };
+ }
arr.push(table.clearCacheKey(item));
});
return arr;
@@ -2753,8 +2756,8 @@ layui.define(['lay', 'laytpl', 'laypage', 'form', 'util'], function(exports){
var thatTable = thisTable.that[id];
var config = thisTable.config[id] || {};
var textType = ({
- csv: 'text/csv'
- ,xls: 'application/vnd.ms-excel'
+ csv: 'text/csv',
+ xls: 'application/vnd.ms-excel'
})[type];
var alink = document.createElement("a");
@@ -2792,11 +2795,11 @@ layui.define(['lay', 'laytpl', 'laypage', 'form', 'util'], function(exports){
// 解析内容
content = parseTempData.call(thatTable, {
- item3: item3
- ,content: content
- ,tplData: item1
- ,text: 'text'
- ,obj: {
+ item3: item3,
+ content: content,
+ tplData: item1,
+ text: 'text',
+ obj: {
td: function(field){
var td = thatTable.layBody.find('tr[data-index="'+ i1 +'"]>td');
return td.filter('[data-field="'+ field +'"]');
From da00d1ad85fdc302e9d7ec188b0f458e8232ba7e Mon Sep 17 00:00:00 2001
From: Diyar-IT <136627746+Diyar-IT@users.noreply.github.com>
Date: Mon, 21 Aug 2023 18:35:19 +0800
Subject: [PATCH 03/22] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=A4=8D=E9=80=89?=
=?UTF-8?q?=E6=A1=86=E7=8A=B6=E6=80=81=E9=83=BD=E4=B8=BA=E2=80=9C=E7=A6=81?=
=?UTF-8?q?=E7=94=A8=20=E2=80=9D=E6=97=B6=EF=BC=8C=E8=A1=A8=E5=A4=B4?=
=?UTF-8?q?=E7=9A=84=E5=A4=8D=E9=80=89=E6=A1=86=E4=BB=8D=E5=8F=AF=E4=BB=A5?=
=?UTF-8?q?=E7=82=B9=E5=87=BB=E6=93=8D=E4=BD=9C=E3=80=82?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/modules/table.js | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/modules/table.js b/src/modules/table.js
index 3f33599f..6ad22135 100644
--- a/src/modules/table.js
+++ b/src/modules/table.js
@@ -1530,7 +1530,7 @@ layui.define(['lay', 'laytpl', 'laypage', 'form', 'util'], function(exports){
// 设置数据选中属性
layui.each(thisData, function(i, item){
- if(layui.type(item) === 'array') return; // 空项
+ if(layui.type(item) === 'array' || item[options.disabledName]) return; // 空项
if(Number(opts.index) === i || opts.index === 'all'){
var checked = item[options.checkName] = getChecked(item[options.checkName]);
tr[checked ? 'addClass' : 'removeClass'](ELEM_CHECKED); // 标记当前选中行背景色
@@ -1547,7 +1547,7 @@ layui.define(['lay', 'laytpl', 'laypage', 'form', 'util'], function(exports){
var checkedElem = tr.find('input[lay-type="'+ ({
radio: 'layTableRadio',
checkbox: 'layTableCheckbox'
- }[opts.type] || 'checkbox') +'"]');
+ }[opts.type] || 'checkbox') +'"]:not(:disabled)');
checkedElem.prop('checked', getChecked(checkedElem.last().prop('checked')));
@@ -2687,7 +2687,7 @@ layui.define(['lay', 'laytpl', 'laypage', 'form', 'util'], function(exports){
//计算全选个数
layui.each(data, function(i, item){
- if(layui.type(item) === 'array'){
+ if(layui.type(item) === 'array' || item[table.config.disabledName]){
invalidNum++; // 无效数据,或已删除的
return;
}
From d5ff46052ea5ab091c7ce4cde22bbb6ea6b989be Mon Sep 17 00:00:00 2001
From: Diyar-IT <136627746+Diyar-IT@users.noreply.github.com>
Date: Mon, 21 Aug 2023 19:23:45 +0800
Subject: [PATCH 04/22] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?=
=?UTF-8?q?=EF=BC=8C=E4=BF=AE=E5=A4=8D=E8=8A=82=E7=82=B9=E7=A6=81=E6=AD=A2?=
=?UTF-8?q?=E7=8A=B6=E6=80=81=E6=97=B6=E5=8D=8A=E9=80=89=E5=85=A8=E9=80=89?=
=?UTF-8?q?=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/modules/treeTable.js | 14 ++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)
diff --git a/src/modules/treeTable.js b/src/modules/treeTable.js
index a599b553..66d98736 100644
--- a/src/modules/treeTable.js
+++ b/src/modules/treeTable.js
@@ -345,16 +345,14 @@ layui.define(['table'], function (exports) {
var tableId = options.id;
var customName = treeOptions.customName;
- var treeNode = {
+ // 带上一些常用的方法
+ return {
data: data,
dataIndex: data[LAY_DATA_INDEX],
getParentNode: function () {
return that.getNodeByIndex(data[LAY_PARENT_INDEX])
},
- }
- // 带上一些常用的方法
-
- return treeNode;
+ };
}
// 通过 index 返回节点信息
@@ -1568,7 +1566,11 @@ layui.define(['table'], function (exports) {
// 更新全选的状态
var isAll = true;
var isIndeterminate = false;
- layui.each(treeOptions.data.cascade === 'all' ? table.cache[tableId] : treeTable.getData(tableId, true), function (i1, item1) {
+ var data = treeOptions.data.cascade === 'all' ? table.cache[tableId] : treeTable.getData(tableId, true);
+ data = data.filter(function (item) {
+ return !item[options.disabledName];
+ });
+ layui.each(data, function (i1, item1) {
if (item1[checkName] || item1[LAY_CHECKBOX_HALF]) {
isIndeterminate = true;
}
From 0154c99fd8b29476b8ca9aad6184f86082f701b5 Mon Sep 17 00:00:00 2001
From: Diyar-IT <136627746+Diyar-IT@users.noreply.github.com>
Date: Tue, 22 Aug 2023 15:22:03 +0800
Subject: [PATCH 05/22] =?UTF-8?q?=E4=BF=AE=E5=A4=8DtreeTable=E8=AE=BE?=
=?UTF-8?q?=E7=BD=AEcols=E7=9A=84type:=20'numbers'=E6=8A=98=E5=8F=A0?=
=?UTF-8?q?=E6=97=B6=E4=B8=8D=E6=9B=B4=E6=96=B0=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
修复treeTable设置cols的type: 'numbers'折叠时不更新问题
---
src/modules/treeTable.js | 19 +++++++++++++++----
1 file changed, 15 insertions(+), 4 deletions(-)
diff --git a/src/modules/treeTable.js b/src/modules/treeTable.js
index a599b553..38b123a2 100644
--- a/src/modules/treeTable.js
+++ b/src/modules/treeTable.js
@@ -602,7 +602,11 @@ layui.define(['table'], function (exports) {
options: options,
}, true);
}
- })
+ });
+ treeTableThat.updateStatus(childNodes, function (d) {
+ d['LAY_HIDE'] = false;
+ });
+ options.hasNumberCol && formatNumber(tableId);
} else {
var asyncSetting = treeOptions.async || {};
var asyncUrl = asyncSetting.url || options.url;
@@ -760,6 +764,11 @@ layui.define(['table'], function (exports) {
tableViewElem.find(childNodesFlat.map(function (value, index, array) {
return 'tr[lay-data-index="' + value[LAY_DATA_INDEX] + '"]'
}).join(',')).addClass(HIDE);
+
+ treeTableThat.updateStatus(childNodes, function (d) {
+ d['LAY_HIDE'] = true;
+ });
+ options.hasNumberCol && formatNumber(tableId);
}
}
@@ -1029,13 +1038,14 @@ layui.define(['table'], function (exports) {
});
} else {
debounceFn('renderTreeTable-' + tableId, function () {
- options.hasNumberCol && formatNumber(that);
+ options.hasNumberCol && formatNumber(tableId);
form.render($('.layui-table-tree[lay-id="' + tableId + '"]'));
}, 0)();
}
}
- var formatNumber = function (that) {
+ var formatNumber = function (id) {
+ var that = getThisTable(id);
var options = that.getOptions();
var tableViewElem = options.elem.next();
@@ -1044,6 +1054,7 @@ layui.define(['table'], function (exports) {
var trFixedL = tableViewElem.find('.layui-table-fixed-l tbody tr');
var trFixedR = tableViewElem.find('.layui-table-fixed-r tbody tr');
layui.each(that.treeToFlat(table.cache[options.id]), function (i1, item1) {
+ if (item1['LAY_HIDE']) return;
var itemData = that.getNodeDataByIndex(item1[LAY_DATA_INDEX]);
itemData['LAY_NUM'] = ++num;
trMain.eq(i1).find('.laytable-cell-numbers').html(num);
@@ -1242,7 +1253,7 @@ layui.define(['table'], function (exports) {
layui.each(table.cache[id], function (i4, item4) {
tableView.find('tr[data-level="0"][lay-data-index="' + item4[LAY_DATA_INDEX] + '"]').attr('data-index', i4);
})
- options.hasNumberCol && formatNumber(that);
+ options.hasNumberCol && formatNumber(id);
// 重新适配尺寸
treeTable.resize(id);
From 528e8e8c7740ad182b6756e52d280ab8721e413c Mon Sep 17 00:00:00 2001
From: Diyar-IT <136627746+Diyar-IT@users.noreply.github.com>
Date: Tue, 22 Aug 2023 16:11:49 +0800
Subject: [PATCH 06/22] =?UTF-8?q?table.js=E5=A2=9E=E5=8A=A0=E4=BA=86?=
=?UTF-8?q?=E5=B0=8F=E6=8F=90=E7=A4=BA^=5F^?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/modules/table.js | 3 +++
1 file changed, 3 insertions(+)
diff --git a/src/modules/table.js b/src/modules/table.js
index 09cbf755..50525a40 100644
--- a/src/modules/table.js
+++ b/src/modules/table.js
@@ -1845,6 +1845,7 @@ layui.define(['lay', 'laytpl', 'laypage', 'form', 'util'], function(exports){
switch(events){
case 'LAYTABLE_COLS': // 筛选列
+ if (!table.cache[options.id].length) return layer.msg('暂时没有数据,不能使用筛选列功能!', {icon: 5});
openPanel({
list: function(){
var lis = [];
@@ -1890,6 +1891,7 @@ layui.define(['lay', 'laytpl', 'laypage', 'form', 'util'], function(exports){
});
break;
case 'LAYTABLE_EXPORT': // 导出
+ if (!table.cache[options.id].length) return layer.msg('暂时没有数据,不能使用导出功能!', {icon: 5});
if(device.ie){
layer.tips('导出功能不支持 IE,请用 Chrome 等高级浏览器导出', this, {
tips: 3
@@ -1912,6 +1914,7 @@ layui.define(['lay', 'laytpl', 'laypage', 'form', 'util'], function(exports){
}
break;
case 'LAYTABLE_PRINT': // 打印
+ if (!table.cache[options.id].length) return layer.msg('暂时没有数据,不能使用打印功能!', {icon: 5});
var printWin = window.open('about:blank', '_blank');
var style = ['
+
+
+
layer 弹层 - layui
+
+
@@ -224,7 +219,9 @@ layui.use(['layer', 'util'], function(layer, util){
// 相册层
layer.photos({
- photos: '#photos' //$('#photos')
+ photos: '#photos', // $('#photos')
+ // toolbar: false,
+ // footer: false
});
//动态追加
diff --git a/src/css/modules/layer.css b/src/css/modules/layer.css
index 8b9dfb27..937ae235 100644
--- a/src/css/modules/layer.css
+++ b/src/css/modules/layer.css
@@ -238,29 +238,28 @@ html #layuicss-layer{display: none; position: absolute; width: 1989px;}
.layui-layer-tabmain .layui-layer-tabli{display:none;}
.layui-layer-tabmain .layui-layer-tabli.layui-this{display: block;}
-/* photo模式 */
+/* photos */
.layui-layer-photos{background: none; box-shadow: none;}
-.layui-layer-photos .layui-layer-content{overflow:hidden; text-align: center;}
-.layui-layer-photos .layui-layer-phimg img{position: relative; width:100%; display: inline-block; *display:inline; *zoom:1; vertical-align:top;}
-.layui-layer-imgprev, .layui-layer-imgnext{position: fixed; top: 50%; width: 52px; height: 52px; line-height: 52px; margin-top: -26px; cursor: pointer; font-size: 52px; color: #717171;}
-.layui-layer-imgprev{left: 32px;}
-.layui-layer-imgnext{right: 32px;}
-.layui-layer-imgprev:hover,
-.layui-layer-imgnext:hover{color: #959595;}
-.layui-layer-imgbar{position: fixed; left:0; right: 0; bottom:0; width:100%; height: 40px; line-height: 40px; background-color:#000\9; filter:Alpha(opacity=60); background-color: rgba(2,0,0,.35); color: #fff; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; font-size:0;}
-.layui-layer-imgtit{/*position:absolute; left:20px;*/}
-.layui-layer-imgtit *{display:inline-block; *display:inline; *zoom:1; vertical-align:top; padding: 0 5px; font-size:12px; color: #fff;}
-.layui-layer-imgtit h3{max-width:65%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; font-weight: 300;}
-.layui-layer-imgtit a:hover{color: #fff; text-decoration: underline;}
-.layui-layer-imgtit em{font-style: normal;}
+.layui-layer-photos .layui-layer-content{overflow: visible; text-align: center;}
+.layui-layer-photos .layer-layer-photos-main img{position: relative; width:100%; display: inline-block; *display:inline; *zoom:1; vertical-align:top;}
+.layui-layer-photos-prev,
+.layui-layer-photos-next{position: fixed; top: 50%; width: 52px; height: 52px; line-height: 52px; margin-top: -26px; cursor: pointer; font-size: 52px; color: #717171;}
+.layui-layer-photos-prev{left: 32px;}
+.layui-layer-photos-next{right: 32px;}
+.layui-layer-photos-prev:hover,
+.layui-layer-photos-next:hover{color: #959595;}
+
+.layui-layer-photos-toolbar{position: fixed; left: 0; right: 0; bottom: 0; width: 100%; height: 52px; line-height: 52px; background-color: #000\9; filter: Alpha(opacity=60); background-color: rgba(0,0,0,.32); color: #fff; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; font-size:0;}
+.layui-layer-photos-toolbar > *{display:inline-block; vertical-align: top; padding: 0 16px; font-size: 12px; color: #fff; *display:inline; *zoom: 1;}
+.layui-layer-photos-toolbar *{font-size: 12px;}
+.layui-layer-photos-header{top: 0; bottom: auto;}
+.layui-layer-photos-header > span{cursor: pointer;}
+.layui-layer-photos-header > span:hover{background-color: rgba(51,51,51,.32);}
+.layui-layer-photos-header .layui-icon{font-size: 18px;}
+.layui-layer-photos-footer > h3{max-width: 65%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap;}
+.layui-layer-photos-footer a:hover{text-decoration: underline;}
+.layui-layer-photos-footer em{font-style: normal;}
-/*photo工具栏*/
-.layui-layer-images-toolbar{position: fixed;top: 0;left: 0;right: 0;height: 40px;background-color: #000\9;filter: Alpha(opacity=60);background-color: rgba(2,0,0,.35);display: flex;align-items: center;justify-content: center;color: white;}
-.layui-layer-images-toolbar .layer-images-tool-item{position: relative;width: auto;height: 100%;display: flex;align-items: center;}
-.layui-layer-images-toolbar .layer-images-tool-item span{padding: 8px 10px; transition: all .4s;cursor: pointer;}
-.layui-layer-images-toolbar .layer-images-tool-item span:hover{background-color: rgba(64, 64, 64, 0.67);}
-.layui-layer-images-toolbar .layer-images-tool-item span i{font-size: 22px;}
-.layui-layer-photos .layui-layer-content.layui-layer-images-toolbar-mode{overflow: visible !important;}
/* 关闭动画 */
@-webkit-keyframes layer-bounceOut {
diff --git a/src/modules/layer.js b/src/modules/layer.js
index 6c211917..fe2aab1f 100644
--- a/src/modules/layer.js
+++ b/src/modules/layer.js
@@ -1,4 +1,4 @@
-/**
+/**
* layer
* 通用 Web 弹出层组件
*/
@@ -1353,9 +1353,9 @@ layer.prompt = function(options, yes){
layer.tab = function(options){
options = options || {};
- var tab = options.tab || {}
- ,THIS = 'layui-this'
- ,success = options.success;
+ var tab = options.tab || {};
+ var THIS = 'layui-this';
+ var success = options.success;
delete options.success;
@@ -1398,10 +1398,16 @@ layer.tab = function(options){
}, options));
};
-// 相册层
+// 图片层
layer.photos = function(options, loop, key){
var dict = {};
- options = options || {};
+
+ // 默认属性
+ options = $.extend(true, {
+ toolbar: true,
+ footer: true
+ }, options);
+
if(!options.photos) return;
// 若 photos 并非选择器或 jQuery 对象,则为普通 object
@@ -1409,11 +1415,10 @@ layer.photos = function(options, loop, key){
var photos = isObject ? options.photos : {};
var data = photos.data || [];
var start = photos.start || 0;
+ var success = options.success;
dict.imgIndex = (start|0) + 1;
options.img = options.img || 'img';
-
- var success = options.success;
delete options.success;
// 若 options.photos 不是一个对象
@@ -1450,8 +1455,7 @@ layer.photos = function(options, loop, key){
});
// 不直接弹出
- if(!loop) return;
-
+ if (!loop) return;
} else if (data.length === 0){
return layer.msg('没有图片');
}
@@ -1499,103 +1503,88 @@ layer.photos = function(options, loop, key){
}
dict.isNumber = function (n) {
- return typeof n === 'number' && !isNaN(n);
- }
-
- dict.getTransform = function(options){
- var transforms = [];
- var rotate = options.rotate;
- var scaleX = options.scaleX;
-
- if (dict.isNumber(rotate) && rotate !== 0) {
- transforms.push('rotate(' + rotate + 'deg)');
- }
-
- if (dict.isNumber(scaleX) && scaleX !== 1) {
- transforms.push('scaleX(' + scaleX + ')');
- }
-
- return transforms.length ? transforms.join(' ') : 'none';
- }
+ return typeof n === 'number' && !isNaN(n);
+ }
+
+ dict.image = {};
+
+ dict.getTransform = function(opts){
+ var transforms = [];
+ var rotate = opts.rotate;
+ var scaleX = opts.scaleX;
+ var scale = opts.scale;
+
+ if (dict.isNumber(rotate) && rotate !== 0) {
+ transforms.push('rotate(' + rotate + 'deg)');
+ }
+
+ if (dict.isNumber(scaleX) && scaleX !== 1) {
+ transforms.push('scaleX(' + scaleX + ')');
+ }
+
+ if (dict.isNumber(scale)) {
+ transforms.push('scale(' + scale + ')');
+ }
+
+ return transforms.length ? transforms.join(' ') : 'none';
+ }
// 一些动作
- dict.event = function(layero, index){
- /*
- dict.bigimg.hover(function(){
- dict.imgsee.show();
- }, function(){
- dict.imgsee.hide();
- });
- */
-
- dict.bigimg.find('.layui-layer-imgprev').on('click', function(event){
+ dict.event = function(layero, index, that){
+ dict.main.find('.layui-layer-photos-prev').on('click', function(event){
event.preventDefault();
dict.imgprev(true);
});
- dict.bigimg.find('.layui-layer-imgnext').on('click', function(event){
+ dict.main.find('.layui-layer-photos-next').on('click', function(event){
event.preventDefault();
dict.imgnext(true);
});
$(document).on('keyup', dict.keyup);
- var scalexFlag = true;
- //工具栏事件
- layero.off('click').on('click','*[toolbar-event]', function () {
- var othis = $(this), event = othis.attr('toolbar-event');
- switch (event) {
- case 'rotate':
- dict.image.rotate = ((dict.image.rotate || 0) + Number(othis.attr('data-option'))) % 360;
- dict.imgElem.css({
- transform: dict.getTransform(dict.image)
- });
- break;
- case 'scalex':
- if (scalexFlag){
- dict.image.scaleX = -1;
- scalexFlag = false;
- }else {
- dict.image.scaleX = 1;
- scalexFlag = true;
- }
- scalexFlag !== scalexFlag;
- dict.imgElem.css({
- transform: dict.getTransform(dict.image)
- });
- break;
- case 'zoom':
- var ratio = Number(othis.attr('data-option'));
- if (ratio < 0) {
- ratio = 1 / (1 - ratio);
- } else {
- ratio = 1 + ratio;
- }
- dict.image.width = dict.image.width * ratio;
- dict.image.height = dict.image.height * ratio;
- dict.imgElem.css({
- width: dict.image.width,
- height: dict.image.height,
- transform: dict.getTransform(dict.image)
- });
- break;
- case 'reset':
- scalexFlag = true;
- dict.image.scaleX = 1;
- dict.image.rotate = 0;
- dict.image.width = dict.image.oldWidth;
- dict.image.height = dict.image.oldHeight;
- dict.imgElem.css({
- width: dict.image.oldWidth,
- height: dict.image.oldHeight,
- transform: 'none'
- });
- break;
- case 'close':
- layer.close(index);
- break;
- }
- });
+ // 头部工具栏事件
+ layero.off('click').on('click','*[toolbar-event]', function () {
+ var othis = $(this), event = othis.attr('toolbar-event');
+ switch (event) {
+ case 'rotate':
+ dict.image.rotate = ((dict.image.rotate || 0) + Number(othis.attr('data-option'))) % 360;
+ dict.imgElem.css({
+ transform: dict.getTransform(dict.image)
+ });
+ break;
+ case 'scalex':
+ dict.image.scaleX = dict.image.scaleX === -1 ? 1 : -1;
+ dict.imgElem.css({
+ transform: dict.getTransform(dict.image)
+ });
+ break;
+ case 'zoom':
+ var ratio = Number(othis.attr('data-option'));
+ dict.image.scale = (dict.image.scale || 1) + ratio;
+ // 缩小状态最小值
+ if (ratio < 0 && dict.image.scale < 0 - ratio) {
+ dict.image.scale = 0 - ratio;
+ }
+ dict.imgElem.css({
+ transform: dict.getTransform(dict.image)
+ });
+ break;
+ case 'reset':
+ dict.image.scaleX = 1;
+ dict.image.scale = 1;
+ dict.image.rotate = 0;
+ dict.imgElem.css({
+ transform: 'none'
+ });
+ break;
+ case 'close':
+ layer.close(index);
+ break;
+ }
+ that.offset();
+ that.auto(index);
+ });
};
@@ -1648,81 +1637,65 @@ layer.photos = function(options, loop, key){
imgarea[1] = imgarea[1]/wh[1];
}
}
- dict.image = {
- oldWidth : imgarea[0],
- oldHeight : imgarea[1],
- width : imgarea[0],
- height : imgarea[1],
- };
+
return [imgarea[0]+'px', imgarea[1]+'px'];
}(),
title: false,
shade: 0.9,
shadeClose: true,
closeBtn: false,
- move: '.layui-layer-phimg img',
+ move: '.layer-layer-photos-main img',
moveType: 1,
scrollbar: false,
moveOut: true,
anim: 5,
isOutAnim: false,
skin: 'layui-layer-photos' + skin('photos'),
- content: '
'
- + '

'
+ content: '
'
+ + '

'
+ function(){
- var arr = ['
'];
+ var arr = ['
'];
// 左右箭头翻页
- if(data.length > 1){
- arr.push(['
'
- ,''
- ,''
- ,'
'].join(''));
+ if (data.length > 1) {
+ arr.push(['
',
+ '',
+ '',
+ '
'].join(''));
+ }
+
+ // 头部工具栏
+ if (options.toolbar) {
+ arr.push([
+ ''
+ ].join(''));
}
// 底部栏
- if(!options.hideFooter){
- arr.push(['
'
- ,'
'
- ,'
'+ alt +'
'
- ,'
'+ dict.imgIndex +' / '+ data.length +''
- ,'
查看原图'
- ,'
'
- ,'
'].join(''));
- }
- //工具栏
- if (options.toolbar){
- arr.push([
- '
'
- ].join(''));
+ if (options.footer) {
+ arr.push([''].join(''));
}
arr.push('
');
return arr.join('');
}()
+'
',
- success: function(layero, index){
- dict.bigimg = layero.find('.layui-layer-phimg');
- dict.imgsee = layero.find('.layui-layer-imgbar');
- if (options.toolbar){
- layero.find('.layui-layer-content').addClass('layui-layer-images-toolbar-mode');
- dict.imgElem = dict.bigimg.find('img');
- dict.imgElem.css({
- width : dict.image.width,
- height : dict.image.height
- });
- }
- dict.event(layero, index);
+ success: function(layero, index, that){
+ dict.main = layero.find('.layer-layer-photos-main');
+ dict.footer = layero.find('.layui-layer-photos-footer');
+ dict.imgElem = dict.main.children('img');
+ dict.event(layero, index, that);
options.tab && options.tab(data[start], layero);
typeof success === 'function' && success(layero);
}, end: function(){
From 03d53713eaa6800afd87a3cad7808b405c4737ac Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=B4=A4=E5=BF=83?=
<3277200+sentsim@users.noreply.github.com>
Date: Thu, 24 Aug 2023 10:17:09 +0800
Subject: [PATCH 16/22] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20code=20=E6=B5=8B?=
=?UTF-8?q?=E8=AF=95=E7=94=A8=E4=BE=8B?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
examples/code.html | 2 ++
1 file changed, 2 insertions(+)
diff --git a/examples/code.html b/examples/code.html
index b3b30490..d4e40e65 100644
--- a/examples/code.html
+++ b/examples/code.html
@@ -116,6 +116,8 @@ layui.use('code', function(){
// 通用实例,根据元素属性定制化参数
layui.code({
//about: 'code' // 右上角默认显示 code
+ tools: ['tips'],
+ preview: true
});
// custom more about
From 33fb2874a6d55bcf6781e077c9d1365fa490c05f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=B4=A4=E5=BF=83?=
<3277200+sentsim@users.noreply.github.com>
Date: Mon, 28 Aug 2023 11:01:54 +0800
Subject: [PATCH 17/22] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=20`laydate.close()`=20?=
=?UTF-8?q?=E6=96=87=E6=A1=A3=E4=B9=A6=E5=86=99=E9=94=99=E8=AF=AF?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
docs/laydate/index.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/docs/laydate/index.md b/docs/laydate/index.md
index 6768a17b..989c7723 100644
--- a/docs/laydate/index.md
+++ b/docs/laydate/index.md
@@ -34,7 +34,7 @@ toc: true
| [laydate.render(options)](#render) | laydate 组件渲染,核心方法。 |
| [laydate.hint(id, opts)](#hint)
2.8+ | 在对应的 laydate 组件面板上弹出提示层。 |
| [laydate.getInst(id)](#getInst)
2.8+ | 获取组件对应的渲染实例。 |
-| [laydate.unbind(id)](#close)
2.8+ | 对目标元素解除当前实例的绑定。 |
+| [laydate.unbind(id)](#unbind)
2.8+ | 对目标元素解除当前实例的绑定。 |
| [laydate.close(id)](#close)
2.7+ | 关闭日期面板。 |
| [laydate.getEndDate(month, year)](#getEndDate) | 获取某月的最后一天。 |
@@ -160,7 +160,7 @@ laydate.render({
// 其他属性 …
});
// 关闭对应的日期面板
-laydate.cllose('test');
+laydate.close('test');
```
获取某月的最后一天
From a4e2d69774e40816af01aa878f68391888213f8a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=B4=A4=E5=BF=83?=
<3277200+sentsim@users.noreply.github.com>
Date: Mon, 28 Aug 2023 11:02:18 +0800
Subject: [PATCH 18/22] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20layer=20=E6=B5=8B?=
=?UTF-8?q?=E8=AF=95=E7=94=A8=E4=BE=8B?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
examples/layer.html | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/examples/layer.html b/examples/layer.html
index e7ac981a..ab878860 100644
--- a/examples/layer.html
+++ b/examples/layer.html
@@ -25,10 +25,10 @@
-
更多例子
+
更多例子
-
+
content 指向放置在页面的一段隐藏元素
@@ -43,8 +43,8 @@
From 5c9a22f88eb356249c1ff5b541167cb0df98a83e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=B4=A4=E5=BF=83?=
<3277200+sentsim@users.noreply.github.com>
Date: Mon, 28 Aug 2023 11:02:50 +0800
Subject: [PATCH 19/22] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20table=20=E7=A4=BA?=
=?UTF-8?q?=E4=BE=8B=E7=BB=86=E8=8A=82?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
docs/table/detail/demo.md | 3 +--
docs/table/examples/css.md | 2 +-
docs/table/examples/demo.md | 4 ++--
3 files changed, 4 insertions(+), 5 deletions(-)
diff --git a/docs/table/detail/demo.md b/docs/table/detail/demo.md
index f4c32833..ab6b3a82 100644
--- a/docs/table/detail/demo.md
+++ b/docs/table/detail/demo.md
@@ -198,5 +198,4 @@
更多示例
-> - [🎉 分享:在 table 组件中使用 select/dropdown/laydate 等组件实现多样化编辑](https://gitee.com/layui/layui/issues/I5JBUE)
-> - 不定期分享在 [Gitee Issues](https://gitee.com/layui/layui/issues)
\ No newline at end of file
+> - 🎉 不定期分享在 [Gitee Issues](https://gitee.com/layui/layui/issues)
diff --git a/docs/table/examples/css.md b/docs/table/examples/css.md
index aa01f4f3..8a0d6451 100644
--- a/docs/table/examples/css.md
+++ b/docs/table/examples/css.md
@@ -80,4 +80,4 @@
});
-