mirror of https://github.com/layui/layui
优化 code 渲染逻辑
parent
fe96883ab5
commit
23202137e1
|
@ -14,6 +14,7 @@ layui.define(['lay', 'util', 'element', 'form'], function(exports){
|
||||||
// 常量
|
// 常量
|
||||||
var CONST = {
|
var CONST = {
|
||||||
ELEM_VIEW: 'layui-code-view',
|
ELEM_VIEW: 'layui-code-view',
|
||||||
|
ELEM_TAB: 'layui-tab',
|
||||||
ELEM_TITLE: 'layui-code-title',
|
ELEM_TITLE: 'layui-code-title',
|
||||||
ELEM_FULL: 'layui-code-full',
|
ELEM_FULL: 'layui-code-full',
|
||||||
ELEM_PREVIEW: 'layui-code-preview',
|
ELEM_PREVIEW: 'layui-code-preview',
|
||||||
|
@ -24,11 +25,11 @@ layui.define(['lay', 'util', 'element', 'form'], function(exports){
|
||||||
// 默认参数项
|
// 默认参数项
|
||||||
var config = {
|
var config = {
|
||||||
elem: '.layui-code', // 元素选择器
|
elem: '.layui-code', // 元素选择器
|
||||||
title: '</>', // 标题
|
title: '</>', // 代码栏标题
|
||||||
about: '', // 右上角信息
|
about: '', // 代码栏右上角信息
|
||||||
ln: true, // 是否显示行号
|
ln: true, // 代码区域是否显示行号
|
||||||
header: false, // 是否显示头部区域
|
header: false, // 是否显示代码栏头部区域
|
||||||
|
// 默认文本
|
||||||
text: {
|
text: {
|
||||||
code: util.escape('</>'),
|
code: util.escape('</>'),
|
||||||
preview: 'Preview'
|
preview: 'Preview'
|
||||||
|
@ -50,7 +51,6 @@ layui.define(['lay', 'util', 'element', 'form'], function(exports){
|
||||||
// 从内至外渲染
|
// 从内至外渲染
|
||||||
layui.each(options.elem.get().reverse(), function(index, item){
|
layui.each(options.elem.get().reverse(), function(index, item){
|
||||||
var othis = $(item);
|
var othis = $(item);
|
||||||
var html = trim(othis.html());
|
|
||||||
|
|
||||||
// 合并属性上的参数,并兼容旧版本属性写法 lay-*
|
// 合并属性上的参数,并兼容旧版本属性写法 lay-*
|
||||||
var options = $.extend(true, {}, opts, lay.options(item), function(obj){
|
var options = $.extend(true, {}, opts, lay.options(item), function(obj){
|
||||||
|
@ -65,7 +65,7 @@ layui.define(['lay', 'util', 'element', 'form'], function(exports){
|
||||||
}({}));
|
}({}));
|
||||||
|
|
||||||
// 获得代码
|
// 获得代码
|
||||||
var codes = function(){
|
var codes = othis.data('code') || function(){
|
||||||
var arr = [];
|
var arr = [];
|
||||||
var textarea = othis.children('textarea');
|
var textarea = othis.children('textarea');
|
||||||
|
|
||||||
|
@ -74,10 +74,6 @@ layui.define(['lay', 'util', 'element', 'form'], function(exports){
|
||||||
arr.push(trim(this.value));
|
arr.push(trim(this.value));
|
||||||
});
|
});
|
||||||
|
|
||||||
if(textarea[0]){
|
|
||||||
html = util.escape(arr.join(''));
|
|
||||||
}
|
|
||||||
|
|
||||||
// 内容直接放置在元素外层
|
// 内容直接放置在元素外层
|
||||||
if(arr.length === 0){
|
if(arr.length === 0){
|
||||||
arr.push(trim(othis.html()));
|
arr.push(trim(othis.html()));
|
||||||
|
@ -86,6 +82,8 @@ layui.define(['lay', 'util', 'element', 'form'], function(exports){
|
||||||
return arr;
|
return arr;
|
||||||
}();
|
}();
|
||||||
|
|
||||||
|
othis.data('code', codes);
|
||||||
|
|
||||||
// 是否开启预览
|
// 是否开启预览
|
||||||
if(options.preview){
|
if(options.preview){
|
||||||
var FILTER_VALUE = 'LAY-CODE-DF-'+ index;
|
var FILTER_VALUE = 'LAY-CODE-DF-'+ index;
|
||||||
|
@ -102,7 +100,8 @@ layui.define(['lay', 'util', 'element', 'form'], function(exports){
|
||||||
'layui-border'
|
'layui-border'
|
||||||
].join(' ') +'">');
|
].join(' ') +'">');
|
||||||
var elemToolbar = $('<div class="layui-code-tools"></div>');
|
var elemToolbar = $('<div class="layui-code-tools"></div>');
|
||||||
var elemViewHas = othis.prev('.' + CONST.ELEM_PREVIEW);
|
var elemViewHas = othis.parent('.' + CONST.ELEM_PREVIEW);
|
||||||
|
var elemTabHas = othis.prev('.'+ CONST.ELEM_TAB);
|
||||||
var elemPreviewViewHas = othis.next('.' + CONST.ELEM_ITEM +'-preview');
|
var elemPreviewViewHas = othis.next('.' + CONST.ELEM_ITEM +'-preview');
|
||||||
|
|
||||||
if(options.id) elemView.attr('id', options.id);
|
if(options.id) elemView.attr('id', options.id);
|
||||||
|
@ -168,8 +167,9 @@ layui.define(['lay', 'util', 'element', 'form'], function(exports){
|
||||||
});
|
});
|
||||||
|
|
||||||
// 移除旧结构
|
// 移除旧结构
|
||||||
if(elemViewHas[0]) elemViewHas.remove();
|
if(elemTabHas[0]) elemTabHas.remove(); // 移除 tab
|
||||||
if(elemPreviewViewHas[0]) elemPreviewViewHas.remove();
|
if(elemPreviewViewHas[0]) elemPreviewViewHas.remove(); // 移除预览区域
|
||||||
|
if(elemViewHas[0]) othis.unwrap(); // 移除外层容器
|
||||||
|
|
||||||
elemTabView.append(elemHeaderView); // 追加标签头
|
elemTabView.append(elemHeaderView); // 追加标签头
|
||||||
options.tools && elemTabView.append(elemToolbar); // 追加工具栏
|
options.tools && elemTabView.append(elemToolbar); // 追加工具栏
|
||||||
|
@ -247,9 +247,14 @@ layui.define(['lay', 'util', 'element', 'form'], function(exports){
|
||||||
// 自定义风格
|
// 自定义风格
|
||||||
if(options.skin){
|
if(options.skin){
|
||||||
if(options.skin === 'notepad') options.skin = 'dark';
|
if(options.skin === 'notepad') options.skin = 'dark';
|
||||||
|
othis.removeClass('layui-code-dark layui-code-light');
|
||||||
othis.addClass('layui-code-'+ options.skin);
|
othis.addClass('layui-code-'+ options.skin);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// code
|
||||||
|
var html = util.escape(codes.join(''));
|
||||||
|
|
||||||
// 转义 HTML 标签
|
// 转义 HTML 标签
|
||||||
if(options.encode) html = util.escape(html);
|
if(options.encode) html = util.escape(html);
|
||||||
html = html.replace(/[\r\t\n]+/g, '</li><li>'); // 转义换行符
|
html = html.replace(/[\r\t\n]+/g, '</li><li>'); // 转义换行符
|
||||||
|
|
Loading…
Reference in New Issue