From 29d488a0f4563b225bc8c5cdc50c90adde66348a Mon Sep 17 00:00:00 2001 From: morning-star <26325820+Sight-wcg@users.noreply.github.com> Date: Sat, 21 Dec 2024 11:57:05 +0800 Subject: [PATCH] =?UTF-8?q?feat(table):=20=E9=87=8D=E6=96=B0=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=20resizeObserver=20(#2411)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * wip(table): auto resize * update code * chore: 移除 object 策略 --- src/modules/table.js | 38 +++++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/src/modules/table.js b/src/modules/table.js index 38eb526f..ae308e8a 100644 --- a/src/modules/table.js +++ b/src/modules/table.js @@ -2823,6 +2823,8 @@ layui.define(['lay', 'laytpl', 'laypage', 'form', 'util'], function(exports){ } rAF(cb); }); + + that.autoResize(); } /** @@ -2891,7 +2893,41 @@ layui.define(['lay', 'laytpl', 'laypage', 'form', 'util'], function(exports){ ? size.width - size.paddingLeft - size.paddingRight - size.borderLeftWidth - size.borderRightWidth : size.width } - }; + } + + Class.prototype.autoResize = function(){ + var that = this; + + that.resizeStrategy(that.elem); + } + + Class.prototype.resizeStrategy = function(){ + // chrome 64+ + if(window.ResizeObserver){ + return function(targetElem){ + var that = this; + if(that.resizeObserver){ + that.resizeObserver.disconnect(); + that.resizeObserver = null; + } + that.resizeObserver = new ResizeObserver(function(){ + that.resize(); + }); + that.resizeObserver.observe(targetElem[0]); + } + } + + // IE8 支持元素 resize 事件 + if(lay.ie === '8'){ + return function(targetElem){ + var that = this; + targetElem.off('resize.lay-table-autoresize') + .on('resize.lay-table-autoresize', function(){ + that.resize(); + }) + } + } + }(); // 全局事件 (function(){