From ae856d2e8ed124aa02bf0f3045bec332255d33e8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=B4=A4=E5=BF=83?=
<3277200+sentsim@users.noreply.github.com>
Date: Tue, 25 Apr 2023 15:54:29 +0800
Subject: [PATCH 1/8] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=20grid=20=E7=A4=BA?=
=?UTF-8?q?=E4=BE=8B=E4=B8=AD=E7=9A=84=E9=94=99=E5=88=AB=E5=AD=97?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
docs/layout/grid.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/layout/grid.md b/docs/layout/grid.md
index 28b48903..b6686bc8 100644
--- a/docs/layout/grid.md
+++ b/docs/layout/grid.md
@@ -240,7 +240,7 @@ toc: true
偏移3列
From 2964052efbb711483f469c8edabed636f9601d9d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=B4=A4=E5=BF=83?=
<3277200+sentsim@users.noreply.github.com>
Date: Wed, 26 Apr 2023 00:25:47 +0800
Subject: [PATCH 2/8] =?UTF-8?q?=E4=BC=98=E5=8C=96=20layer=20=E9=94=81?=
=?UTF-8?q?=E5=B1=8F=E7=A4=BA=E4=BE=8B?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
docs/layer/examples/more.md | 22 +++++++++++-----------
1 file changed, 11 insertions(+), 11 deletions(-)
diff --git a/docs/layer/examples/more.md b/docs/layer/examples/more.md
index d8abd312..4b7cc433 100644
--- a/docs/layer/examples/more.md
+++ b/docs/layer/examples/more.md
@@ -78,18 +78,9 @@ layui.use(function(){
form.render(); // 表单组件渲染
input.focus();
- // 回车
- input.on('keyup', function(e){
- var elem = this;
- var keyCode = e.keyCode;
- if(keyCode === 13){
- if(elem.value === PASS){
- layer.close(index);
- }
- }
- });
// 点击解锁按钮
- layero.find('#ID-layer-demo-unlock').on('click', function(){
+ var elemUnlock = layero.find('#ID-layer-demo-unlock');
+ elemUnlock.on('click', function(){
if($.trim(input[0].value) === PASS){
layer.close(index);
layer.closeLast('dialog'); // 关闭最新打开的信息框
@@ -98,6 +89,15 @@ layui.use(function(){
input.focus();
}
});
+
+ // 回车
+ input.on('keyup', function(e){
+ var elem = this;
+ var keyCode = e.keyCode;
+ if(keyCode === 13){
+ elemUnlock.trigger('click');
+ }
+ });
}
})
},
From 3aba3eb2aa99cdeaed760e88bd417b5d36c4be02 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, 27 Apr 2023 09:20:49 +0800
Subject: [PATCH 3/8] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20treeTable=20=E4=B8=AD?=
=?UTF-8?q?=E4=B8=8D=E5=BF=85=E8=A6=81=E7=9A=84=E9=94=99=E8=AF=AF=E6=8F=90?=
=?UTF-8?q?=E7=A4=BA?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/modules/treeTable.js | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/modules/treeTable.js b/src/modules/treeTable.js
index 96404d3b..72ed2b7b 100644
--- a/src/modules/treeTable.js
+++ b/src/modules/treeTable.js
@@ -1421,11 +1421,11 @@ layui.define(['table'], function (exports) {
var options = obj.config;
var tableView = options.elem.next();
var tableId = options.id;
- var that = getThisTable(tableId);
if (tableView.hasClass('layui-table-tree')) {
- updateObjParams(obj);
+ var that = getThisTable(tableId);
var checked = obj.checked;
+ updateObjParams(obj)
obj.isAll = checkNode.call(that, obj.tr, checked);
}
})
From 472bc6f4c1bf5e3f4d63ff596a37066d155e58b3 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, 27 Apr 2023 14:13:46 +0800
Subject: [PATCH 4/8] =?UTF-8?q?=E4=BC=98=E5=8C=96=20`table.hideCol()`=20?=
=?UTF-8?q?=E7=9B=B8=E5=85=B3=E7=9A=84=E6=96=87=E6=A1=A3=E8=AF=B4=E6=98=8E?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
docs/table/index.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/docs/table/index.md b/docs/table/index.md
index 877a82f1..dba21744 100644
--- a/docs/table/index.md
+++ b/docs/table/index.md
@@ -471,8 +471,8 @@ table.hideCol('test', [{
hide: false
}]);
-// 显示或隐藏全部
-table.hideCol('test', false); // `true` or `false` `true` 则隐藏全部一般没有实质的用处,通常会用到的场景是隐藏部分列之后想要重新恢复显示所有的时候会用到这种方式传参 `false`
+// 显示或隐藏全部列
+table.hideCol('test', false); // `true` or `false`
```
事件
From efde5582c7f1769dfa957c2dbcb2c4882201d775 Mon Sep 17 00:00:00 2001
From: morning-star
Date: Thu, 27 Apr 2023 18:10:26 +0800
Subject: [PATCH 5/8] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=96=87=E6=A1=A3?=
=?UTF-8?q?=E5=9B=BE=E6=A0=87=E7=82=B9=E5=87=BB=E5=A4=8D=E5=88=B6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
新增文档图标点击复制
---
docs/icon/index.md | 39 ++++++++++++++++++++++++++++++++++++++-
1 file changed, 38 insertions(+), 1 deletion(-)
diff --git a/docs/icon/index.md b/docs/icon/index.md
index 3e3a852e..338385ea 100644
--- a/docs/icon/index.md
+++ b/docs/icon/index.md
@@ -1171,4 +1171,41 @@ toc: true
跨域处理
-由于浏览器存在同源策略,若 Layui 文件地址与你当前的页面地址*不在同一个域下*,即会出现图标跨域问题。因此,要么将 Layui 文件与网站放在同一服务器,要么对 Layui 文件所在的静态资源服务器的 `Response Headers` 添加:`Access-Control-Allow-Origin: *` 或对跨资源共享指定域名,即可解决图标跨域问题。
\ No newline at end of file
+由于浏览器存在同源策略,若 Layui 文件地址与你当前的页面地址*不在同一个域下*,即会出现图标跨域问题。因此,要么将 Layui 文件与网站放在同一服务器,要么对 Layui 文件所在的静态资源服务器的 `Response Headers` 添加:`Access-Control-Allow-Origin: *` 或对跨资源共享指定域名,即可解决图标跨域问题。
+
+
From 802cd36da826a53416b89d40b494165242b28c87 Mon Sep 17 00:00:00 2001
From: sight <1453017105@qq.com>
Date: Thu, 27 Apr 2023 19:35:07 +0800
Subject: [PATCH 6/8] =?UTF-8?q?=E9=83=A8=E5=88=86=E6=96=87=E6=A1=A3?=
=?UTF-8?q?=E4=BB=A3=E7=A0=81=E9=A3=8E=E6=A0=BC=E7=BB=9F=E4=B8=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
docs/form/examples/form.val.md | 14 +--
docs/laydate/examples/mark.md | 12 +--
docs/table/examples/css.md | 24 ++---
docs/table/examples/data.md | 130 +++++++++++++-------------
docs/table/examples/demo.md | 140 ++++++++++++++--------------
docs/table/examples/editModes.md | 52 +++++------
docs/table/examples/editable.md | 30 +++---
docs/table/examples/filter.md | 26 +++---
docs/table/examples/page.md | 34 +++----
docs/table/examples/parse.md | 34 +++----
docs/table/examples/search.md | 30 +++---
docs/table/examples/templet.md | 26 +++---
docs/transfer/detail/options.md | 6 +-
docs/tree/detail/demo.md | 20 ++--
docs/upload/examples/files.table.md | 2 +-
15 files changed, 290 insertions(+), 290 deletions(-)
diff --git a/docs/form/examples/form.val.md b/docs/form/examples/form.val.md
index 41ba84f5..f22da291 100644
--- a/docs/form/examples/form.val.md
+++ b/docs/form/examples/form.val.md
@@ -79,13 +79,13 @@ layui.use(function(){
// 表单赋值
$('#LAY-component-form-setval').on('click', function(){
form.val('demo-val-filter', {
- "username": "贤心" // "name": "value"
- ,"password": "AAAAAA"
- ,"interest": 1
- ,"like[write]": true // 复选框选中状态
- ,"close": true // 开关状态
- ,"sex": "女"
- ,"desc": "Layui 用于更简单快速地构建网页界面"
+ "username": "贤心", // "name": "value"
+ "password": "AAAAAA",
+ "interest": 1,
+ "like[write]": true, // 复选框选中状态
+ "close": true, // 开关状态
+ "sex": "女",
+ "desc": "Layui 用于更简单快速地构建网页界面"
});
});
// 表单取值
diff --git a/docs/laydate/examples/mark.md b/docs/laydate/examples/mark.md
index 1a97c9f5..0292026b 100644
--- a/docs/laydate/examples/mark.md
+++ b/docs/laydate/examples/mark.md
@@ -36,12 +36,12 @@ layui.use(function(){
laydate.render({
elem: '#ID-laydate-mark',
mark: {
- '0-10-14': '生日'
- ,'0-12-31': '跨年' //每年的日期
- ,'0-0-10': '工资' //每月某天
- ,'0-0-15': '月中'
- ,'2017-8-15': '' //如果为空字符,则默认显示数字+徽章
- ,'2099-10-14': '呵呵'
+ '0-10-14': '生日',
+ '0-12-31': '跨年', //每年的日期
+ '0-0-10': '工资', //每月某天
+ '0-0-15': '月中',
+ '2017-8-15': '', //如果为空字符,则默认显示数字+徽章
+ '2099-10-14': '呵呵'
},
done: function(value, date){
// 点击每年的 10月14日,弹出提示语
diff --git a/docs/table/examples/css.md b/docs/table/examples/css.md
index b45eb097..fded01ec 100644
--- a/docs/table/examples/css.md
+++ b/docs/table/examples/css.md
@@ -48,20 +48,20 @@
// 创建渲染实例
table.render({
- elem: '#ID-table-demo-css'
- ,url:'{{d.root}}/static/json/table/demo1.json' // 此处为静态模拟数据,实际使用时需换成真实接口
- ,page: true
- ,height: 'full-35'
- ,lineStyle: 'height: 151px;' // 定义表格的多行样式
- ,css: [ // 直接给当前表格主容器重置 css 样式
+ elem: '#ID-table-demo-css',
+ url:'{{d.root}}/static/json/table/demo1.json', // 此处为静态模拟数据,实际使用时需换成真实接口
+ page: true,
+ height: 'full-35',
+ lineStyle: 'height: 151px;', // 定义表格的多行样式
+ css: [ // 直接给当前表格主容器重置 css 样式
'.layui-table-page{text-align: center;}' // 让分页栏居中
- ].join('')
- ,className: 'layui-table-testcss' // 用于给表格主容器追加 css 类名
- ,cols: [[
- {field:'username', width:160, title: '用户', templet: '#ID-table-demo-css-user'}
+ ].join(''),
+ className: 'layui-table-testcss', // 用于给表格主容器追加 css 类名
+ cols: [[
+ {field:'username', width:160, title: '用户', templet: '#ID-table-demo-css-user'},
// 设置单元格样式
- ,{field:'sign', minWidth:100, title: '签名', style:'color: #000;'}
- ,{width:160, title: '操作', templet: '#ID-table-demo-css-tool'}
+ {field:'sign', minWidth:100, title: '签名', style:'color: #000;'},
+ {width:160, title: '操作', templet: '#ID-table-demo-css-tool'}
]]
});
diff --git a/docs/table/examples/data.md b/docs/table/examples/data.md
index eec563b5..c61f9bea 100644
--- a/docs/table/examples/data.md
+++ b/docs/table/examples/data.md
@@ -6,78 +6,78 @@ layui.use('table', function(){
// 已知数据渲染
var inst = table.render({
- elem: '#ID-table-demo-data'
- ,cols: [[ //标题栏
- {field: 'id', title: 'ID', width: 80, sort: true}
- ,{field: 'username', title: '用户', width: 120}
- ,{field: 'sign', title: '签名', minWidth: 160}
- ,{field: 'sex', title: '性别', width: 80}
- ,{field: 'city', title: '城市', width: 100}
- ,{field: 'experience', title: '积分', width: 80, sort: true}
- ]]
- ,data: [{ // 赋值已知数据
- "id": "10001"
- ,"username": "张三1"
- ,"sex": "男"
- ,"city": "浙江杭州"
- ,"sign": "人生恰似一场修行"
- ,"experience": "116"
+ elem: '#ID-table-demo-data',
+ cols: [[ //标题栏
+ {field: 'id', title: 'ID', width: 80, sort: true},
+ {field: 'username', title: '用户', width: 120},
+ {field: 'sign', title: '签名', minWidth: 160},
+ {field: 'sex', title: '性别', width: 80},
+ {field: 'city', title: '城市', width: 100},
+ {field: 'experience', title: '积分', width: 80, sort: true}
+ ]],
+ data: [{ // 赋值已知数据
+ "id": "10001",
+ "username": "张三1",
+ "sex": "男",
+ "city": "浙江杭州",
+ "sign": "人生恰似一场修行",
+ "experience": "116"
}, {
- "id": "10002"
- ,"username": "张三2"
- ,"sex": "男"
- ,"city": "浙江杭州"
- ,"sign": "人生恰似一场修行"
- ,"experience": "12"
- ,"LAY_CHECKED": true
+ "id": "10002",
+ "username": "张三2",
+ "sex": "男",
+ "city": "浙江杭州",
+ "sign": "人生恰似一场修行",
+ "experience": "12",
+ "LAY_CHECKED": true
}, {
- "id": "10003"
- ,"username": "张三3"
- ,"sex": "男"
- ,"city": "浙江杭州"
- ,"sign": "人生恰似一场修行"
- ,"experience": "65"
+ "id": "10003",
+ "username": "张三3",
+ "sex": "男",
+ "city": "浙江杭州",
+ "sign": "人生恰似一场修行",
+ "experience": "65"
}, {
- "id": "10004"
- ,"username": "张三4"
- ,"sex": "男"
- ,"city": "浙江杭州"
- ,"sign": "人生恰似一场修行"
- ,"experience": "777"
+ "id": "10004",
+ "username": "张三4",
+ "sex": "男",
+ "city": "浙江杭州",
+ "sign": "人生恰似一场修行",
+ "experience": "777"
}, {
- "id": "10005"
- ,"username": "张三5"
- ,"sex": "男"
- ,"city": "浙江杭州"
- ,"sign": "人生恰似一场修行"
- ,"experience": "86"
+ "id": "10005",
+ "username": "张三5",
+ "sex": "男",
+ "city": "浙江杭州",
+ "sign": "人生恰似一场修行",
+ "experience": "86"
}, {
- "id": "10006"
- ,"username": "张三6"
- ,"sex": "男"
- ,"city": "浙江杭州"
- ,"sign": "人生恰似一场修行"
- ,"experience": "12"
+ "id": "10006",
+ "username": "张三6",
+ "sex": "男",
+ "city": "浙江杭州",
+ "sign": "人生恰似一场修行",
+ "experience": "12"
}, {
- "id": "10007"
- ,"username": "张三7"
- ,"sex": "男"
- ,"city": "浙江杭州"
- ,"sign": "人生恰似一场修行"
- ,"experience": "16"
+ "id": "10007",
+ "username": "张三7",
+ "sex": "男",
+ "city": "浙江杭州",
+ "sign": "人生恰似一场修行",
+ "experience": "16"
}, {
- "id": "10008"
- ,"username": "张三8"
- ,"sex": "男"
- ,"city": "浙江杭州"
- ,"sign": "人生恰似一场修行"
- ,"experience": "106"
- }]
- //,skin: 'line' // 表格风格
- //,even: true
- ,page: true // 是否显示分页
- ,limits: [5, 10, 15]
- ,limit: 5 // 每页默认显示的数量
+ "id": "10008",
+ "username": "张三8",
+ "sex": "男",
+ "city": "浙江杭州",
+ "sign": "人生恰似一场修行",
+ "experience": "106"
+ }],
+ //skin: 'line', // 表格风格
+ //even: true,
+ page: true, // 是否显示分页
+ limits: [5, 10, 15],
+ limit: 5 // 每页默认显示的数量
});
});
diff --git a/docs/table/examples/demo.md b/docs/table/examples/demo.md
index 6b8c9b8f..92976408 100644
--- a/docs/table/examples/demo.md
+++ b/docs/table/examples/demo.md
@@ -63,47 +63,47 @@ layui.use(['table', 'dropdown'], function(){
// 创建渲染实例
table.render({
- elem: '#test'
- ,url:'{{d.root}}/static/json/table/demo1.json' // 此处为静态模拟数据,实际使用时需换成真实接口
- ,toolbar: '#toolbarDemo'
- ,defaultToolbar: ['filter', 'exports', 'print', {
- title: '提示'
- ,layEvent: 'LAYTABLE_TIPS'
- ,icon: 'layui-icon-tips'
- }]
- ,height: 'full-35' // 最大高度减去其他容器已占有的高度差
- ,css: [ // 重设当前表格样式
+ elem: '#test',
+ url:'{{d.root}}/static/json/table/demo1.json', // 此处为静态模拟数据,实际使用时需换成真实接口
+ toolbar: '#toolbarDemo',
+ defaultToolbar: ['filter', 'exports', 'print', {
+ title: '提示',
+ layEvent: 'LAYTABLE_TIPS',
+ icon: 'layui-icon-tips'
+ }],
+ height: 'full-35', // 最大高度减去其他容器已占有的高度差
+ css: [ // 重设当前表格样式
'.layui-table-tool-temp{padding-right: 145px;}'
- ].join('')
- ,cellMinWidth: 80
- ,totalRow: true // 开启合计行
- ,page: true
- ,cols: [[
- {type: 'checkbox', fixed: 'left'}
- ,{field:'id', fixed: 'left', width:80, title: 'ID', sort: true, totalRowText: '合计:'}
- ,{field:'username', width:80, title: '用户'}
- ,{field:'email', title:'邮箱 ', fieldTitle: '邮箱', hide: 0, width:150, edit: 'text'}
- ,{field:'sex', width:80, title: '性别', sort: true}
- ,{field:'city', width:115, title: '城市', minWidth:115, templet: '#cityTpl', exportTemplet: function(d, obj){
+ ].join(''),
+ cellMinWidth: 80,
+ totalRow: true, // 开启合计行
+ page: true,
+ cols: [[
+ {type: 'checkbox', fixed: 'left'},
+ {field:'id', fixed: 'left', width:80, title: 'ID', sort: true, totalRowText: '合计:'},
+ {field:'username', width:80, title: '用户'},
+ {field:'email', title:'邮箱 ', fieldTitle: '邮箱', hide: 0, width:150, edit: 'text'},
+ {field:'sex', width:80, title: '性别', sort: true},
+ {field:'city', width:115, title: '城市', minWidth:115, templet: '#cityTpl', exportTemplet: function(d, obj){
// console.log(obj)
// 处理该字段的导出数据
var td = obj.td(this.field); // 获取当前 td
return td.find('select').val();
- }}
- ,{field:'sign', title: '签名', edit: 'textarea', minWidth: 260, style: '-moz-box-align: start;', totalRow: '{{!人物:唐代:{{= d.TOTAL_ROW.era.tang }} 宋代:{{= d.TOTAL_ROW.era.song }} 现代:{{= d.TOTAL_ROW.era.xian }}!}}'}
- ,{field:'experience', width: 100, title: '积分', sort: true, totalRow: '{{!{{= d.TOTAL_NUMS }} 😊!}}'}
- ,{field:'checkin', title:'打卡', width: 100, sort: true, totalRow: '{{!{{= parseInt(d.TOTAL_NUMS) }} 次!}}'}
- ,{field:'ip', title:'IP', width: 120}
- ,{field:'joinTime', title:'加入时间', width: 120}
- ,{fixed: 'right', title:'操作', width: 134, minWidth: 125, toolbar: '#barDemo'}
- ]]
- ,done: function(){
+ }},
+ {field:'sign', title: '签名', edit: 'textarea', minWidth: 260, style: '-moz-box-align: start;', totalRow: '{{!人物:唐代:{{= d.TOTAL_ROW.era.tang }} 宋代:{{= d.TOTAL_ROW.era.song }} 现代:{{= d.TOTAL_ROW.era.xian }}!}}'},
+ {field:'experience', width: 100, title: '积分', sort: true, totalRow: '{{!{{= d.TOTAL_NUMS }} 😊!}}'},
+ {field:'checkin', title:'打卡', width: 100, sort: true, totalRow: '{{!{{= parseInt(d.TOTAL_NUMS) }} 次!}}'},
+ {field:'ip', title:'IP', width: 120},
+ {field:'joinTime', title:'加入时间', width: 120},
+ {fixed: 'right', title:'操作', width: 134, minWidth: 125, toolbar: '#barDemo'}
+ ]],
+ done: function(){
var id = this.id;
// 下拉按钮测试
dropdown.render({
- elem: '#dropdownButton' // 可绑定在任意元素中,此处以上述按钮为例
- ,data: [{
+ elem: '#dropdownButton', // 可绑定在任意元素中,此处以上述按钮为例
+ data: [{
id: 'add',
title: '添加'
},{
@@ -112,9 +112,9 @@ layui.use(['table', 'dropdown'], function(){
},{
id: 'delete',
title: '删除'
- }]
+ }],
// 菜单被点击的事件
- ,click: function(obj){
+ click: function(obj){
var checkStatus = table.checkStatus(id)
var data = checkStatus.data; // 获取选中的数据
@@ -148,8 +148,8 @@ layui.use(['table', 'dropdown'], function(){
// 重载测试
dropdown.render({
- elem: '#reloadTest' // 可绑定在任意元素中,此处以上述按钮为例
- ,data: [{
+ elem: '#reloadTest', // 可绑定在任意元素中,此处以上述按钮为例
+ data: [{
id: 'reload',
title: '重载'
},{
@@ -161,26 +161,26 @@ layui.use(['table', 'dropdown'], function(){
},{
id: 'reloadData-deep',
title: '仅重载数据 - 参数叠加'
- }]
+ }],
// 菜单被点击的事件
- ,click: function(obj){
+ click: function(obj){
switch(obj.id){
case 'reload':
// 重载 - 默认(参数重置)
table.reload('test', {
where: {
- abc: '123456'
- //,test: '新的 test2'
- //,token: '新的 token2'
- }
+ abc: '123456',
+ //test: '新的 test2',
+ //token: '新的 token2'
+ },
/*{{!
- ,cols: [[ // 重置表头
- {type: 'checkbox', fixed: 'left'}
- ,{field:'id', title:'ID', width:80, fixed: 'left', unresize: true, sort: true, totalRowText: '合计:'}
- ,{field:'sex', title:'性别', width:80, edit: 'text', sort: true}
- ,{field:'experience', title:'积分', width:80, sort: true, totalRow: true, templet: '{{= d.experience }} 分
'}
- ,{field:'logins', title:'登入次数', width:100, sort: true, totalRow: true}
- ,{field:'joinTime', title:'加入时间', width:120}
+ cols: [[ // 重置表头
+ {type: 'checkbox', fixed: 'left'},
+ {field:'id', title:'ID', width:80, fixed: 'left', unresize: true, sort: true, totalRowText: '合计:'},
+ {field:'sex', title:'性别', width:80, edit: 'text', sort: true},
+ {field:'experience', title:'积分', width:80, sort: true, totalRow: true, templet: '{{= d.experience }} 分
'},
+ {field:'logins', title:'登入次数', width:100, sort: true, totalRow: true},
+ {field:'joinTime', title:'加入时间', width:120}
]]
!}}*/
});
@@ -189,33 +189,33 @@ layui.use(['table', 'dropdown'], function(){
// 重载 - 深度(参数叠加)
table.reload('test', {
where: {
- abc: 123
- ,test: '新的 test1'
- }
- //,defaultToolbar: ['print'] // 重载头部工具栏右侧图标
- //,cols: ins1.config.cols
+ abc: 123,
+ test: '新的 test1'
+ },
+ //defaultToolbar: ['print'], // 重载头部工具栏右侧图标
+ //cols: ins1.config.cols
}, true);
break;
case 'reloadData':
// 数据重载 - 参数重置
table.reloadData('test', {
where: {
- abc: '123456'
- //,test: '新的 test2'
- //,token: '新的 token2'
- }
- ,scrollPos: 'fixed' // 保持滚动条位置不变 - v2.7.3 新增
- ,height: 2000 // 测试无效参数(即与数据无关的参数设置无效,此处以 height 设置无效为例)
- //,url: '404'
- //,page: {curr: 1, limit: 30} // 重新指向分页
+ abc: '123456',
+ //test: '新的 test2',
+ //token: '新的 token2'
+ },
+ scrollPos: 'fixed', // 保持滚动条位置不变 - v2.7.3 新增
+ height: 2000, // 测试无效参数(即与数据无关的参数设置无效,此处以 height 设置无效为例)
+ //url: '404',
+ //page: {curr: 1, limit: 30} // 重新指向分页
});
break;
case 'reloadData-deep':
// 数据重载 - 参数叠加
table.reloadData('test', {
where: {
- abc: 123
- ,test: '新的 test1'
+ abc: 123,
+ test: '新的 test1'
}
}, true);
break;
@@ -226,16 +226,16 @@ layui.use(['table', 'dropdown'], function(){
// 行模式
dropdown.render({
- elem: '#rowMode'
- ,data: [{
+ elem: '#rowMode',
+ data: [{
id: 'default-row',
title: '单行模式(默认)'
},{
id: 'multi-row',
title: '多行模式'
- }]
+ }],
// 菜单被点击的事件
- ,click: function(obj){
+ click: function(obj){
var checkStatus = table.checkStatus(id)
var data = checkStatus.data; // 获取选中的数据
@@ -258,8 +258,8 @@ layui.use(['table', 'dropdown'], function(){
}
});
- }
- ,error: function(res, msg){
+ },
+ error: function(res, msg){
console.log(res, msg)
}
});
diff --git a/docs/table/examples/editModes.md b/docs/table/examples/editModes.md
index 7cdccb4e..e0534ee8 100644
--- a/docs/table/examples/editModes.md
+++ b/docs/table/examples/editModes.md
@@ -47,25 +47,25 @@ layui.use(function(){
// 渲染
table.render({
- elem: '#ID-table-demo-editmodes'
- ,url: '{{d.root}}/static/json/table/user.json' // 此处为静态模拟数据,实际使用时需换成真实接口
- ,page: true
- ,css: [ // 设置单元格样式
+ elem: '#ID-table-demo-editmodes',
+ url: '{{d.root}}/static/json/table/user.json', // 此处为静态模拟数据,实际使用时需换成真实接口
+ page: true,
+ css: [ // 设置单元格样式
// 取消默认的溢出隐藏,并设置适当高度
'.layui-table-cell{height: 50px; line-height: 40px; overflow: visible;}',
'.layui-table-cell .layui-colorpicker{width: 38px; height: 38px;}',
'.layui-table-cell select{height: 36px; padding: 0 5px;}'
- ].join('')
- ,cols: [[ // 表头
- {field: 'id', title: 'ID', width:80, align: 'center', fixed: 'left'}
- ,{field: 'city', title: '原生 select', width:150, templet: '#TPL-select-primary'}
- //,{field: 'city', title: 'layui select', width:150, templet: '#TPL-select-city'}
- ,{field: 'sex', title: 'dropdown', width:115, align: 'center', templet: '#TPL-dropdpwn-demo'}
- ,{field: 'date', title: 'laydate', width:150, templet: '#TPL-laydate-demo'}
- ,{field: 'color', title: 'colorpicker', width:100, align: 'center', templet: '#TPL-colorpicker-demo'}
- ,{field: 'sign', title: '文本', edit: 'textarea'}
- ]]
- ,done: function(res, curr, count){
+ ].join(''),
+ cols: [[ // 表头
+ {field: 'id', title: 'ID', width:80, align: 'center', fixed: 'left'},
+ {field: 'city', title: '原生 select', width:150, templet: '#TPL-select-primary'},
+ //{field: 'city', title: 'layui select', width:150, templet: '#TPL-select-city'},
+ {field: 'sex', title: 'dropdown', width:115, align: 'center', templet: '#TPL-dropdpwn-demo'},
+ {field: 'date', title: 'laydate', width:150, templet: '#TPL-laydate-demo'},
+ {field: 'color', title: 'colorpicker', width:100, align: 'center', templet: '#TPL-colorpicker-demo'},
+ {field: 'sign', title: '文本', edit: 'textarea'}
+ ]],
+ done: function(res, curr, count){
var options = this;
// 获取当前行数据
@@ -94,20 +94,20 @@ layui.use(function(){
// dropdown 方式的下拉选择
dropdown.render({
- elem: '.dropdpwn-demo'
- // ,trigger: 'hover'
+ elem: '.dropdpwn-demo',
+ // trigger: 'hover',
// 此处的 data 值,可根据 done 返回的 res 遍历来赋值
- ,data: [{
- title: '男'
- ,id: 100
+ data: [{
+ title: '男',
+ id: 100
},{
- title: '女'
- ,id: 101
+ title: '女',
+ id: 101
},{
- title: '保密'
- ,id: 102
- }]
- ,click: function(obj){
+ title: '保密',
+ id: 102
+ }],
+ click: function(obj){
var data = table.getRowData(this.elem); // 获取当前行数据(如 id 等字段,以作为数据修改的索引)
this.elem.find('span').html(obj.title);
diff --git a/docs/table/examples/editable.md b/docs/table/examples/editable.md
index e8ca5a53..1d7f7ade 100644
--- a/docs/table/examples/editable.md
+++ b/docs/table/examples/editable.md
@@ -12,24 +12,24 @@ layui.use(function(){
// 创建表格实例
table.render({
- elem: '#ID-table-demo-editable'
- ,url: '{{d.root}}/static/json/table/edit.json' // 此处为静态模拟数据,实际使用时需换成真实接口
- ,page: true
+ elem: '#ID-table-demo-editable',
+ url: '{{d.root}}/static/json/table/edit.json', // 此处为静态模拟数据,实际使用时需换成真实接口
+ page: true,
//,editTrigger: 'dblclick' // 触发编辑的事件类型(默认 click )。 v2.7.0 新增,之前版本固定为单击触发
- ,css: [
+ css: [
// 对开启了编辑的单元格追加样式
'.layui-table-view td[data-edit]{color: #16B777;}'
- ].join('')
- ,cols: [[
- {checkbox: true, fixed: true}
- ,{field:'id', title: 'ID', width:80, sort: true, fixed: true}
- ,{field:'username', title: '用户名', width:80, edit: editable}
- ,{field:'sex', title: '性别', width:80, sort: true, edit: editable}
- ,{field:'city', title: '城市', width:80, edit: editable}
- ,{field:'sign', title: '签名', edit: editable}
- ,{field:'experience', title: '积分', sort: true, width:80, edit: editable}
- ]]
- ,height: 310
+ ].join(''),
+ cols: [[
+ {checkbox: true, fixed: true},
+ {field:'id', title: 'ID', width:80, sort: true, fixed: true},
+ {field:'username', title: '用户名', width:80, edit: editable},
+ {field:'sex', title: '性别', width:80, sort: true, edit: editable},
+ {field:'city', title: '城市', width:80, edit: editable},
+ {field:'sign', title: '签名', edit: editable},
+ {field:'experience', title: '积分', sort: true, width:80, edit: editable}
+ ]],
+ height: 310
});
// 单元格编辑后的事件
diff --git a/docs/table/examples/filter.md b/docs/table/examples/filter.md
index 28dcaa9f..fe9273de 100644
--- a/docs/table/examples/filter.md
+++ b/docs/table/examples/filter.md
@@ -7,18 +7,18 @@ layui.use(function(){
// 渲染
table.render({
- elem: '#ID-table-demo-filter'
- ,url:'{{d.root}}/static/json/table/user.json' // 此处为静态模拟数据,实际使用时需换成真实接口
- ,toolbar: 'default'
- ,height: 315
- ,cols: [function(){
+ elem: '#ID-table-demo-filter',
+ url:'{{d.root}}/static/json/table/user.json', // 此处为静态模拟数据,实际使用时需换成真实接口
+ toolbar: 'default',
+ height: 315,
+ cols: [function(){
var arr = [
- {field:'id', title:'ID', width:80, fixed: 'left'}
- ,{field:'username', title:'用户', width:120}
- ,{field:'sex', title:'性别'}
- ,{field:'city', title:'城市'}
- ,{field:'sign', title:'签名'}
- ,{field:'classify', title:'职业'}
+ {field:'id', title:'ID', width:80, fixed: 'left'},
+ {field:'username', title:'用户', width:120},
+ {field:'sex', title:'性别'},
+ {field:'city', title:'城市'},
+ {field:'sign', title:'签名'},
+ {field:'classify', title:'职业'}
];
// 初始化筛选状态
@@ -29,8 +29,8 @@ layui.use(function(){
}
});
return arr;
- }() ]
- ,done: function(){
+ }() ],
+ done: function(){
// 记录筛选状态
var that = this;
that.elem.next().on('mousedown', 'input[lay-filter="LAY_TABLE_TOOL_COLS"]+', function(){
diff --git a/docs/table/examples/page.md b/docs/table/examples/page.md
index 06cbb825..d7a2bd8e 100644
--- a/docs/table/examples/page.md
+++ b/docs/table/examples/page.md
@@ -12,23 +12,23 @@ layui.use('table', function(){
// 创建渲染实例
table.render({
- elem: '#ID-table-demo-page'
- ,url:'{{d.root}}/static/json/table/user.json' // 此处为静态模拟数据,实际使用时需换成真实接口
- ,page: { // 支持传入 laypage 组件的所有参数(某些参数除外,如:jump/elem) - 详见文档
- layout: ['limit', 'count', 'prev', 'page', 'next', 'skip'] //自定义分页布局
- //,curr: 5 //设定初始在第 5 页
- ,groups: 1 //只显示 1 个连续页码
- ,first: false //不显示首页
- ,last: false //不显示尾页
- }
- ,pagebar: '#ID-table-demo-page-pagebar' // 分页栏模板
- ,cols: [[
- {field:'id', width:80, title: 'ID', sort: true}
- ,{field:'username', width:80, title: '用户名'}
- ,{field:'sex', width:80, title: '性别', sort: true}
- ,{field:'city', width:80, title: '城市'}
- ,{field:'sign', title: '签名', minWidth: 150}
- ,{field:'experience', width:80, title: '积分', sort: true}
+ elem: '#ID-table-demo-page',
+ url:'{{d.root}}/static/json/table/user.json', // 此处为静态模拟数据,实际使用时需换成真实接口
+ page: { // 支持传入 laypage 组件的所有参数(某些参数除外,如:jump/elem) - 详见文档
+ layout: ['limit', 'count', 'prev', 'page', 'next', 'skip'], //自定义分页布局
+ //curr: 5, //设定初始在第 5 页
+ groups: 1, //只显示 1 个连续页码
+ first: false, //不显示首页
+ last: false //不显示尾页
+ },
+ pagebar: '#ID-table-demo-page-pagebar', // 分页栏模板
+ cols: [[
+ {field:'id', width:80, title: 'ID', sort: true},
+ {field:'username', width:80, title: '用户名'},
+ {field:'sex', width:80, title: '性别', sort: true},
+ {field:'city', width:80, title: '城市'},
+ {field:'sign', title: '签名', minWidth: 150},
+ {field:'experience', width:80, title: '积分', sort: true}
]]
});
diff --git a/docs/table/examples/parse.md b/docs/table/examples/parse.md
index 90454b60..2d4d8642 100644
--- a/docs/table/examples/parse.md
+++ b/docs/table/examples/parse.md
@@ -9,31 +9,31 @@ layui.use('table', function(){
// 渲染
table.render({
- elem: '#ID-table-demo-parse'
- ,url:'{{d.root}}/static/json/table/demo3.json'
- ,page: true
- ,response: {
+ elem: '#ID-table-demo-parse',
+ url:'{{d.root}}/static/json/table/demo3.json',
+ page: true,
+ response: {
statusCode: 200 // 重新规定成功的状态码为 200,table 组件默认为 0
- }
+ },
// 将原始数据解析成 table 组件所规定的数据格式
- ,parseData: function(res){
+ parseData: function(res){
return {
"code": res.status, //解析接口状态
"msg": res.message, //解析提示文本
"count": res.total, //解析数据长度
"data": res.rows.item //解析数据列表
};
- }
- ,cols: [[
- {field:'id', title:'ID', width:80, fixed: 'left', unresize: true, sort: true}
- ,{field:'username', title:'用户名', width:120}
- ,{field:'email', title:'邮箱', width:150}
- ,{field:'experience', title:'积分', width:100, sort: true}
- ,{field:'sex', title:'性别', width:80, sort: true}
- ,{field:'sign', title:'签名'}
- ,{field:'joinTime', title:'加入时间', width:120}
- ]]
- ,height: 315
+ },
+ cols: [[
+ {field:'id', title:'ID', width:80, fixed: 'left', unresize: true, sort: true},
+ {field:'username', title:'用户名', width:120},
+ {field:'email', title:'邮箱', width:150},
+ {field:'experience', title:'积分', width:100, sort: true},
+ {field:'sex', title:'性别', width:80, sort: true},
+ {field:'sign', title:'签名'},
+ {field:'joinTime', title:'加入时间', width:120}
+ ]],
+ height: 315
});
});
diff --git a/docs/table/examples/search.md b/docs/table/examples/search.md
index 7c6fc5b7..5bb2e258 100644
--- a/docs/table/examples/search.md
+++ b/docs/table/examples/search.md
@@ -36,19 +36,19 @@ layui.use(function(){
// 创建表格实例
table.render({
- elem: '#ID-table-demo-search'
- ,url: '{{d.root}}/static/json/table/user.json' // 此处为静态模拟数据,实际使用时需换成真实接口
- ,cols: [[
- {checkbox: true, fixed: true}
- ,{field:'id', title: 'ID', width:80, sort: true, fixed: true}
- ,{field:'username', title: '用户名', width:80}
- ,{field:'sex', title: '性别', width:80, sort: true}
- ,{field:'city', title: '城市', width:80}
- ,{field:'sign', title: '签名'}
- ,{field:'experience', title: '积分', sort: true, width:80}
- ]]
- ,page: true
- ,height: 310
+ elem: '#ID-table-demo-search',
+ url: '{{d.root}}/static/json/table/user.json', // 此处为静态模拟数据,实际使用时需换成真实接口
+ cols: [[
+ {checkbox: true, fixed: true},
+ {field:'id', title: 'ID', width:80, sort: true, fixed: true},
+ {field:'username', title: '用户名', width:80},
+ {field:'sex', title: '性别', width:80, sort: true},
+ {field:'city', title: '城市', width:80},
+ {field:'sign', title: '签名'},
+ {field:'experience', title: '积分', sort: true, width:80}
+ ]],
+ page: true,
+ height: 310
});
// 日期
@@ -64,8 +64,8 @@ layui.use(function(){
table.reload('ID-table-demo-search', {
page: {
curr: 1 // 重新从第 1 页开始
- }
- ,where: field // 搜索的字段
+ },
+ where: field // 搜索的字段
});
layer.msg('搜索成功
此处为静态模拟数据,实际使用时换成真实接口即可');
diff --git a/docs/table/examples/templet.md b/docs/table/examples/templet.md
index d313dcf6..38806079 100644
--- a/docs/table/examples/templet.md
+++ b/docs/table/examples/templet.md
@@ -25,29 +25,29 @@ layui.use(['table'], function(){
// 创建渲染实例
table.render({
- elem: '#ID-table-demo-templet'
- ,url:'{{d.root}}/static/json/table/user.json' // 此处为静态模拟数据,实际使用时需换成真实接口
- ,page: true
- ,height: '315px'
- ,cols: [[
- {type: 'checkbox', fixed: 'left'}
+ elem: '#ID-table-demo-templet',
+ url:'{{d.root}}/static/json/table/user.json', // 此处为静态模拟数据,实际使用时需换成真实接口
+ page: true,
+ height: '315px',
+ cols: [[
+ {type: 'checkbox', fixed: 'left'},
// 未自定义模板的普通列
- ,{field:'id', fixed: 'left', width:80, title: 'ID', sort: true}
+ {field:'id', fixed: 'left', width:80, title: 'ID', sort: true},
// 模板 - 选择器写法
- ,{field:'username', width:80, title: '用户', templet: '#ID-table-demo-templet-user'}
+ {field:'username', width:80, title: '用户', templet: '#ID-table-demo-templet-user'},
// 模板 - 函数写法
- ,{field:'sex', width:60, title: '性别', templet: function(d){
+ {field:'sex', width:60, title: '性别', templet: function(d){
if(d.sex === '男'){
return '♂';
} else {
return '♀';
}
- }}
+ }},
// 模板 - 普通字符写法
- ,{field:'city', width:115, title: '城市', templet: ' {{!{{= d.city }}!}}
'}
+ {field:'city', width:115, title: '城市', templet: ' {{!{{= d.city }}!}}
'},
// 模板中可包含任意字段、任意内容(如表单等)
- ,{title: '状态', width:85, templet: '#ID-table-demo-templet-switch'}
- ,{title: '其他', minWidth:200, templet: '#ID-table-demo-templet-other'}
+ {title: '状态', width:85, templet: '#ID-table-demo-templet-switch'},
+ {title: '其他', minWidth:200, templet: '#ID-table-demo-templet-other'}
]]
});
diff --git a/docs/transfer/detail/options.md b/docs/transfer/detail/options.md
index 356ab04f..dfb3bee6 100644
--- a/docs/transfer/detail/options.md
+++ b/docs/transfer/detail/options.md
@@ -181,9 +181,9 @@ onchange: function(data, index){
transfer.render({
elem: '',
data: [ // 任意数据
- {"id": "1", "name": "李白"}
- ,{"id": "2", "name": "杜甫"}
- ,{"id": "3", "name": "贤心"}
+ {"id": "1", "name": "李白"},
+ {"id": "2", "name": "杜甫"},
+ {"id": "3", "name": "贤心"}
],
parseData: function(res){ // 解析成规定的 data 格式
return {
diff --git a/docs/tree/detail/demo.md b/docs/tree/detail/demo.md
index e7ae8489..2ae34a75 100644
--- a/docs/tree/detail/demo.md
+++ b/docs/tree/detail/demo.md
@@ -40,11 +40,11 @@ layui.use(function(){
layer.alert(JSON.stringify(checkedData), {shade:0});
console.log(checkedData);
- }
- ,setChecked: function(){
+ },
+ setChecked: function(){
tree.setChecked('demo-id-1', [12, 16]); // 勾选对应 id 值的节点
- }
- ,reload: function(){
+ },
+ reload: function(){
tree.reload('demo-id-1', {}); // 重载实例
}
});
@@ -118,22 +118,22 @@ layui.use(function(){
tree.render({
elem: '#ID-tree-demo-accordion',
data: [{
- title: '优秀'
- ,children: [{
+ title: '优秀',
+ children: [{
title: '80 ~ 90'
},{
title: '90 ~ 100'
}]
},{
- title: '良好'
- ,children: [{
+ title: '良好',
+ children: [{
title: '70 ~ 80'
},{
title: '60 ~ 70'
}]
},{
- title: '一般'
- ,children: [{
+ title: '一般',
+ children: [{
title: '0 ~ 60'
}]
}],
diff --git a/docs/upload/examples/files.table.md b/docs/upload/examples/files.table.md
index 2654801e..5846a1d2 100644
--- a/docs/upload/examples/files.table.md
+++ b/docs/upload/examples/files.table.md
@@ -73,7 +73,7 @@ layui.use(function(){
var that = this;
// if(res.code == 0){ // 上传成功
var tr = that.elemList.find('tr#upload-'+ index)
- ,tds = tr.children();
+ var tds = tr.children();
tds.eq(3).html(''); // 清空操作
delete this.files[index]; // 删除文件队列已经上传成功的文件
return;
From e6d232093e440ce8259f07c176aa743c52d75cb8 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, 27 Apr 2023 20:39:48 +0800
Subject: [PATCH 7/8] =?UTF-8?q?=E4=BC=98=E5=8C=96=20icon=20=E6=96=87?=
=?UTF-8?q?=E6=A1=A3=E4=B8=AD=E7=9A=84=E5=A4=8D=E5=88=B6=E6=8F=90=E7=A4=BA?=
=?UTF-8?q?=EF=BC=8C=E5=B9=B6=E7=A1=AE=E4=BF=9D=E4=BB=A3=E7=A0=81=E6=AD=A3?=
=?UTF-8?q?=E5=B8=B8=E8=BF=90=E8=A1=8C=EF=BC=88=E4=BD=8D=E4=BA=8E=20`layui?=
=?UTF-8?q?.js`=20=E4=B9=8B=E5=89=8D=EF=BC=89?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
docs/icon/index.md | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/docs/icon/index.md b/docs/icon/index.md
index 338385ea..4fe4cdf9 100644
--- a/docs/icon/index.md
+++ b/docs/icon/index.md
@@ -1173,6 +1173,12 @@ toc: true
由于浏览器存在同源策略,若 Layui 文件地址与你当前的页面地址*不在同一个域下*,即会出现图标跨域问题。因此,要么将 Layui 文件与网站放在同一服务器,要么对 Layui 文件所在的静态资源服务器的 `Response Headers` 添加:`Access-Control-Allow-Origin: *` 或对跨资源共享指定域名,即可解决图标跨域问题。
+
+
+
+
+
From edbf24b8ca1f98de4427ec920cade37f3193a520 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, 27 Apr 2023 20:40:15 +0800
Subject: [PATCH 8/8] Add note
---
docs/@note/2.8/news.md | 21 ++++++++++++++++
docs/@note/2.8/upgrade-guide.md | 44 +++++++++++++++++++++++++++++++++
2 files changed, 65 insertions(+)
create mode 100644 docs/@note/2.8/news.md
create mode 100644 docs/@note/2.8/upgrade-guide.md
diff --git a/docs/@note/2.8/news.md b/docs/@note/2.8/news.md
new file mode 100644
index 00000000..4ae89054
--- /dev/null
+++ b/docs/@note/2.8/news.md
@@ -0,0 +1,21 @@
+---
+title: 🚀 Layui 2.8.0 正式发布,朴实归来
+toc: false
+---
+
+# 🚀 Layui 2.8.0 正式发布,朴实归来
+
+我们终于迎来了 Layui `2.8.0` 的正式版本,以及全新的文档站。
+
+在 Layui 过往七年的开源历程中,从未用多达**二十个预览版**去为一个正式版而引路。 显然,`2.8.0` 是 Layui 一次朴实的回归,更是情怀的延续。但却并不是想以此呼吁人们重新去选择它,我们仍然坚持两年前那则《[Layui 原官网下线公告](https://unpkg.com/outeres@0.0.7/img/layui/notice-2021.png)》中的观点, _即仍然推荐大家去拥抱主流,始终保持对前沿技术的无限热爱,是开发者们都应具备的思维属性_。 **而 Layui 所做的,是为填补主流之外的那些略显狭小的空隙**。
+
+Layui 虽然并不是前端主流,但也早已不是作者个人的 Layui,而是所有仍在坚持使用它的人的 Layui,它仍然支撑着许多项目,也代表着许多人的工作,作为开源创作者的我们,应该要为这些坚持者而守望。
+
+### 新文档站
+
+在 2021 年 Layui 原官网下线后,互联网出现了许多第三方的 Layui 文档镜像站点,这在当时,给大家能继续阅读文档确实提供了便利,但原官网的下线,只是单纯一个网站自身生命周期的结束,它并不意味着 Layui 这样一个开源项目的停更,当时的公告其实也说的很清楚了,但或许是由于那则公告的用词过于「悲壮」,使得各大自媒体有所误读,从而让大家都以为是 Layui 停更了。 事实上,自那以后,Layui 仍然在 Github 和 Gitee 保持活跃,并不存在所谓的停止更新,甚至从 `2.6.9` 一直迭代到今天的 `2.8.0`,而现存的第三方文档镜像站点的内容却仍然定格在 Layui `2.6.8` 的版本,已严重滞后于 Layui 的当前版本,显然是不利于开发者们对 Layui 的应用。 两年来,Layui 始终处于没有中心文档的窘迫境地,虽然也一度以 **Gitee Pages** 为文档的承载,但似乎很难形成一个焦点和归属感。 随着 `2.8.0` 正式版本的发布,它所包含的上百项的更新内容,使得全新的文档站点呼之欲出。
+
+此次上线的新版文档站,旨在为朴实归来的 Layui 提供一个新的精神「基站」,它基于 laytpl 和 markdown 驱动,在版面上进行了大量优化,内容重新编写、力求精简,以辅助大家更好地使用 Layui。 同时,Layui 文档也已和 Layui 本身一同开源在项目中,以供大家在线和离线都能阅读以及协同维护。
+
+- **文档协作:** https://github.com/layui/layui/tree/main/docs
+- **文档阅读:** https://layui.dev
diff --git a/docs/@note/2.8/upgrade-guide.md b/docs/@note/2.8/upgrade-guide.md
new file mode 100644
index 00000000..38ac8486
--- /dev/null
+++ b/docs/@note/2.8/upgrade-guide.md
@@ -0,0 +1,44 @@
+---
+title: Layui 2.8 《升级指南》
+toc: false
+---
+
+# Layui 2.8 《升级指南》
+
+Layui `2.8` 总体向下兼容,但仍有以下变更需要注意:
+
+1. `2.8` 剔除了 ~~layedit~~ 组件,若是之前用到该组件的,注意采用第三方成熟富文本组件替换,详见:#I5JSE3
+1. `2.8` 调整了 `table` 的 `page,limit` 属性,当 `page` 未开启时,则默认不再向后端传递这两个参数
+1. `2.8` 调整了 `table` 的特定属性名。序号: `LAY_INDEX` → `LAY_NUM`;下标: `LAY_TABLE_INDEX` → `LAY_INDEX`,若是之前用到这几个特定属性,需更换为新版名称。
+1. `2.8` 调整了 `checkbox` 的 `lay-skin` 属性默认为原始风格,原来的标签风格可通过 `lay-skin="tag"` 来设置。
+1. `2.8` 调整了 `checkbox` 的私有属性 `lay-text`,采用统一的 `title` 属性替代
+1. `2.8` 调整了 `util.fixbar` 的 `showHeight` 属性名称为 `margin`
+
+### 2.7.6 升级到 2.8
+
+`2.8` 对 `2.7.6` 最友好,可直接覆盖升级,只需按照上述提到的几点进行适配即可。
+
+### 2.6.x 升级到 2.8
+
+该跨度相对较大,主要是中间的 `2.6.11` 和 `2.7.x` 的几处调整要适配,包括:
+
+1. **重要**:`2.6.11` 调整了 `laytpl` 的 `{{ d.field }}` 标签的输出为默认开启编码。即与 {{= d.field }} 等同。因此,若输出内容包含 `HTML` 且需要正常渲染的,需采用 `{{- d.field }}` 的标签语句。详细可参考:#I5AXSP
+1. `2.6.11` 调整了 `table` 组件的 `escape` 属性默认为 `true`,即默认开启编码功能(之前默认为 `false`)
+1. `2.7.5` 调整了 `table` 表头的 `edit` 属性,支持函数写法,且单元格是否编辑不再以 `` 标签上的 `data-edit` 属性为准,而是统一以 `cols` 属性中的 `edit` 属性为准,详细可参考新版文档关于 `edit` 的用法:https://layui.dev/docs/table/#cols.edit
+
+### 2.6.0 以下版本 升级到 2.8
+
+若当前用的版本低于 `2.6.0`,一般不建议升级。但如果非升级不可,除了结合上述提到的变更外,还要重点参考 `2.6.0` 的更新日志中提到的「重要提示」进行适配:https://layui.dev/2.7/docs/base/changelog.html#2.6.0
+
+同时,还要特别注意,`2.6.0` 之前的版本是按需加载内置组件,从 `2.6.0` 开始,统一构建到 `layui.js` 中。因此,要注意下之前引入的 `JS` 业务代码的放置位置,若是放在 `` 区域,需调整放置到 `` 标签内部的尾端。
+
+### layuiAdmin 主题升级 Layui 到 2.8
+
+主要还是根据当前主题中所用的 Layui 的版本,进行对应的适配,尤其是单页版中的动态模板,需按照前面提到的 `laytpl` 的调整进行修改。具体也可以参考:#I65D80
+
+### 其他细节
+
+若按照以上调整后仍然存在兼容性问题,也可以详细阅读过往所有版本的更新日志:
+https://layui.dev/docs/versions.html
+
+或新建 `Issue` 进行详细反馈。
|