fix(layer): height 设置为 auto,恢复大小时内容区高度错误 (#1617)

* fix(layer): height 设置为 auto,恢复大小时内容区高度错误

* fix: 最大化最小化时不应使用 recordHeight

* update code

* chore: 优化魔术字符

---------

Co-authored-by: 贤心 <3277200+sentsim@users.noreply.github.com>
pull/1653/head
morning-star 2024-02-22 11:48:06 +08:00 committed by GitHub
parent c5f2f5261b
commit 289c3b4916
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 19 additions and 4 deletions

View File

@ -259,6 +259,8 @@ doms.SHADE = 'layui-layer-shade';
doms.MOVE = 'layui-layer-move'; doms.MOVE = 'layui-layer-move';
doms.SHADE_KEY = 'LAYUI-LAYER-SHADE-KEY'; doms.SHADE_KEY = 'LAYUI-LAYER-SHADE-KEY';
var RECORD_HEIGHT = 'LAYUI_LAYER_CONTENT_RECORD_HEIGHT';
// 默认配置 // 默认配置
Class.pt.config = { Class.pt.config = {
type: 0, type: 0,
@ -967,6 +969,9 @@ Class.pt.openLayer = function(){
// 记录宽高坐标,用于还原 // 记录宽高坐标,用于还原
ready.record = function(layero){ ready.record = function(layero){
if(!layero[0]) return window.console && console.error('index error'); if(!layero[0]) return window.console && console.error('index error');
var type = layero.attr('type');
var contentElem = layero.find('.layui-layer-content');
var contentRecordHeightElem = type === ready.type[2] ? contentElem.children('iframe') : contentElem;
var area = [ var area = [
layero[0].style.width || layero.width(), layero[0].style.width || layero.width(),
layero[0].style.height || layero.height(), layero[0].style.height || layero.height(),
@ -975,6 +980,7 @@ ready.record = function(layero){
]; ];
layero.find('.layui-layer-max').addClass('layui-layer-maxmin'); layero.find('.layui-layer-max').addClass('layui-layer-maxmin');
layero.attr({area: area}); layero.attr({area: area});
contentElem.data(RECORD_HEIGHT, contentRecordHeightElem.height());
}; };
// 设置页面滚动条 // 设置页面滚动条
@ -1026,7 +1032,7 @@ layer.iframeSrc = function(index, url){
// 设定层的样式 // 设定层的样式
layer.style = function(index, options, limit){ layer.style = function(index, options, limit){
var layero = $('#'+ doms[0] + index); var layero = $('#'+ doms[0] + index);
var contElem = layero.find('.layui-layer-content'); var contentElem = layero.find('.layui-layer-content');
var type = layero.attr('type'); var type = layero.attr('type');
var titHeight = layero.find(doms[1]).outerHeight() || 0; var titHeight = layero.find(doms[1]).outerHeight() || 0;
var btnHeight = layero.find('.'+doms[6]).outerHeight() || 0; var btnHeight = layero.find('.'+doms[6]).outerHeight() || 0;
@ -1054,10 +1060,10 @@ layer.style = function(index, options, limit){
height: (typeof options.height === 'number' ? options.height : layero.height()) - titHeight - btnHeight height: (typeof options.height === 'number' ? options.height : layero.height()) - titHeight - btnHeight
}); });
} else { } else {
contElem.css({ contentElem.css({
height: (typeof options.height === 'number' ? options.height : layero.height()) - titHeight - btnHeight height: (typeof options.height === 'number' ? options.height : layero.height()) - titHeight - btnHeight
- parseFloat(contElem.css('padding-top')) - parseFloat(contentElem.css('padding-top'))
- parseFloat(contElem.css('padding-bottom')) - parseFloat(contentElem.css('padding-bottom'))
}) })
} }
}; };
@ -1128,9 +1134,11 @@ layer.min = function(index, options){
layer.restore = function(index){ layer.restore = function(index){
var layero = $('#'+ doms[0] + index); var layero = $('#'+ doms[0] + index);
var shadeo = $('#'+ doms.SHADE + index); var shadeo = $('#'+ doms.SHADE + index);
var contentElem = layero.find('.layui-layer-content');
var area = layero.attr('area').split(','); var area = layero.attr('area').split(',');
var type = layero.attr('type'); var type = layero.attr('type');
var options = layero.data('config') || {}; var options = layero.data('config') || {};
var contentRecordHeight = contentElem.data(RECORD_HEIGHT);
layero.removeData('maxminStatus'); // 移除最大最小状态 layero.removeData('maxminStatus'); // 移除最大最小状态
@ -1150,6 +1158,13 @@ layer.restore = function(index){
// 恢复页面滚动条弹层打开时的状态 // 恢复页面滚动条弹层打开时的状态
options.scrollbar ? ready.restScrollbar(index) : ready.setScrollbar(index); options.scrollbar ? ready.restScrollbar(index) : ready.setScrollbar(index);
// #1604
if(contentRecordHeight !== undefined){
contentElem.removeData(RECORD_HEIGHT);
var contentRecordHeightElem = type === ready.type[2] ? contentElem.children('iframe') : contentElem;
contentRecordHeightElem.css({height: contentRecordHeight});
}
// 恢复遮罩 // 恢复遮罩
shadeo.show(); shadeo.show();