mirror of
https://gitee.com/ulthon/ulthon_admin.git
synced 2026-11-10 04:50:50 +08:00
fix(table): 卡片设置图标归位右侧图标组最左并修复面板悬停透明
- 入口改为 defaultToolbar 头部插入(unshift),图标渲染于筛选列左侧,撤掉左侧 layui-btn 方案 - 面板改挂 .layui-table-tool 并按图标坐标内联定位(右缘对齐图标、向下展开),不再嵌于图标元素内 - 根治悬停透明:原面板挂在 .layui-btn 内,layui .layui-btn:hover 的 opacity:.8 继承到整棵面板子树
This commit is contained in:
@@ -905,18 +905,13 @@ table样式
|
|||||||
|
|
||||||
/* 卡片设置面板(admin-table.js toggleCardSettingPanel 产出;面板骨架复用上方
|
/* 卡片设置面板(admin-table.js toggleCardSettingPanel 产出;面板骨架复用上方
|
||||||
.ul-nav-block 基类,此处补面板本体定位与视觉(与 .table-tpl-container 视图
|
.ul-nav-block 基类,此处补面板本体定位与视觉(与 .table-tpl-container 视图
|
||||||
切换下拉同语言)、配置行与自绘开关)。入口按钮 .ua-card-setting-btn 由受控
|
切换下拉同语言)、配置行与自绘开关)。入口为右侧 defaultToolbar 图标组
|
||||||
接线追加至左侧工具栏容器 .layui-table-tool-temp 末尾,position:relative 供
|
最左侧的 TABLE_CARD_SETTING 图标;面板由受控接线 append 至本表的
|
||||||
面板相对按钮向下展开锚定;按钮不带 lay-event,点击直调开关函数 */
|
.layui-table-tool(layui 已 position:relative),left/top 不在此声明,
|
||||||
.ua-card-setting-btn {
|
打开时经 getBoundingClientRect 差值内联定位(右缘对齐图标右缘、顶边贴
|
||||||
position: relative;
|
图标下沿),向下向左展开 */
|
||||||
margin-left: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.ua-card-setting-panel {
|
.ua-card-setting-panel {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
left: 0;
|
|
||||||
top: 100%;
|
|
||||||
z-index: 999;
|
z-index: 999;
|
||||||
min-width: 200px;
|
min-width: 200px;
|
||||||
border: 1px solid #d2d2d2;
|
border: 1px solid #d2d2d2;
|
||||||
|
|||||||
@@ -928,18 +928,13 @@ table样式
|
|||||||
|
|
||||||
// 卡片设置面板(admin-table.js toggleCardSettingPanel 产出;面板骨架复用上方
|
// 卡片设置面板(admin-table.js toggleCardSettingPanel 产出;面板骨架复用上方
|
||||||
// .ul-nav-block 基类,此处补面板本体定位与视觉(与 .table-tpl-container 视图
|
// .ul-nav-block 基类,此处补面板本体定位与视觉(与 .table-tpl-container 视图
|
||||||
// 切换下拉同语言)、配置行与自绘开关)。入口按钮 .ua-card-setting-btn 由受控
|
// 切换下拉同语言)、配置行与自绘开关)。入口为右侧 defaultToolbar 图标组
|
||||||
// 接线追加至左侧工具栏容器 .layui-table-tool-temp 末尾,position:relative 供
|
// 最左侧的 TABLE_CARD_SETTING 图标;面板由受控接线 append 至本表的
|
||||||
// 面板相对按钮向下展开锚定;按钮不带 lay-event,点击直调开关函数
|
// .layui-table-tool(layui 已 position:relative),left/top 不在此声明,
|
||||||
.ua-card-setting-btn {
|
// 打开时经 getBoundingClientRect 差值内联定位(右缘对齐图标右缘、顶边贴
|
||||||
position: relative;
|
// 图标下沿),向下向左展开
|
||||||
margin-left: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.ua-card-setting-panel {
|
.ua-card-setting-panel {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
left: 0;
|
|
||||||
top: 100%;
|
|
||||||
z-index: 999;
|
z-index: 999;
|
||||||
min-width: 200px;
|
min-width: 200px;
|
||||||
border: 1px solid #d2d2d2;
|
border: 1px solid #d2d2d2;
|
||||||
|
|||||||
@@ -386,16 +386,22 @@
|
|||||||
// 工具栏形态联动:print 仅表格形态有意义;卡片设置仅非表格形态有意义。
|
// 工具栏形态联动:print 仅表格形态有意义;卡片设置仅非表格形态有意义。
|
||||||
// filter(LAYTABLE_COLS)与视图切换(TABLE_LAYOUT)两形态常驻不动
|
// filter(LAYTABLE_COLS)与视图切换(TABLE_LAYOUT)两形态常驻不动
|
||||||
$view.find('[lay-event="LAYTABLE_PRINT"]').toggleClass('layui-hide', !isTable);
|
$view.find('[lay-event="LAYTABLE_PRINT"]').toggleClass('layui-hide', !isTable);
|
||||||
$view.find('.ua-card-setting-btn').toggleClass('layui-hide', isTable);
|
$view.find('[lay-event="TABLE_CARD_SETTING"]').toggleClass('layui-hide', isTable);
|
||||||
};
|
};
|
||||||
|
|
||||||
// 卡片设置面板开关(pro#5 迭代:入口由右侧图标区移至左侧工具栏末尾的
|
// 卡片设置面板开关(pro#5 迭代:入口为右侧 defaultToolbar 图标组最左侧的
|
||||||
// .ua-card-setting-btn 按钮,点击直调本函数;不再走 layui toolbar 事件)。
|
// TABLE_CARD_SETTING 图标,走 layui toolbar 事件)。含面板创建/移除/开关/
|
||||||
// 含面板创建/移除/开关/排序/外点收起全套逻辑,面板 append 在按钮元素内
|
// 排序/外点收起全套逻辑。面板 append 在本表的 .layui-table-tool 容器
|
||||||
//(按钮 position:relative,面板向右向下展开),面板内交互均阻断冒泡
|
//(layui 已 position:relative)而非图标元素内:layui.css 的
|
||||||
|
// .layui-btn:hover{opacity:.8} 会沿祖先链压暗整棵面板子树,断开父子
|
||||||
|
// 关系即根治。打开时用 getBoundingClientRect 内联定位(两 rect 同帧
|
||||||
|
// 相减与滚动无关),面板右缘对齐图标右缘、顶边贴图标下沿,向下向左
|
||||||
|
// 展开。面板内交互均阻断冒泡
|
||||||
var toggleCardSettingPanel = function (tableId) {
|
var toggleCardSettingPanel = function (tableId) {
|
||||||
var cardSettingId = 'ua-card-setting-' + tableId;
|
var cardSettingId = 'ua-card-setting-' + tableId;
|
||||||
var $toolbarSettingElem = $(controlledLayouts[tableId].elem).siblings('.layui-table-view').first().find('.ua-card-setting-btn');
|
var $view = $(controlledLayouts[tableId].elem).siblings('.layui-table-view').first();
|
||||||
|
var $toolbarSettingElem = $view.find('[lay-event="TABLE_CARD_SETTING"]');
|
||||||
|
var $toolElem = $view.find('.layui-table-tool').first();
|
||||||
var $cardSettingElem = $('#' + cardSettingId);
|
var $cardSettingElem = $('#' + cardSettingId);
|
||||||
if ($cardSettingElem.length > 0) {
|
if ($cardSettingElem.length > 0) {
|
||||||
$cardSettingElem.remove();
|
$cardSettingElem.remove();
|
||||||
@@ -430,7 +436,17 @@
|
|||||||
});
|
});
|
||||||
cardSettingHtml += '</div>';
|
cardSettingHtml += '</div>';
|
||||||
|
|
||||||
$cardSettingElem = $(cardSettingHtml).appendTo($toolbarSettingElem);
|
$cardSettingElem = $(cardSettingHtml).appendTo($toolElem);
|
||||||
|
|
||||||
|
// 内联定位:面板右缘对齐图标右缘、顶边贴图标下沿(200px 宽面板
|
||||||
|
// 自图标向左下展开,完全落在视口内)。iconRect/toolRect 同帧相减,
|
||||||
|
// 与页面滚动无关
|
||||||
|
var iconRect = $toolbarSettingElem[0].getBoundingClientRect();
|
||||||
|
var toolRect = $toolElem[0].getBoundingClientRect();
|
||||||
|
$cardSettingElem.css({
|
||||||
|
top: (iconRect.bottom - toolRect.top) + 'px',
|
||||||
|
right: (toolRect.right - iconRect.right) + 'px'
|
||||||
|
});
|
||||||
|
|
||||||
// 面板内条目点击不冒泡(排序段等后续 .item 条目沿用)
|
// 面板内条目点击不冒泡(排序段等后续 .item 条目沿用)
|
||||||
$cardSettingElem.on('click', '.item', function (event) {
|
$cardSettingElem.on('click', '.item', function (event) {
|
||||||
@@ -477,9 +493,11 @@
|
|||||||
$(document).off('click.ua-card-setting');
|
$(document).off('click.ua-card-setting');
|
||||||
});
|
});
|
||||||
|
|
||||||
// 点击面板外区域收起(命名空间事件,收起时解除);判定以入口按钮为界
|
// 点击面板外区域收起(命名空间事件,收起时解除);面板已不在图标
|
||||||
|
// 元素内,判定为「既不在图标内、也不在面板内」才收起,否则点面板
|
||||||
|
// 自身会被误判为外部点立刻收起
|
||||||
$(document).off('click.ua-card-setting').on('click.ua-card-setting', function (event) {
|
$(document).off('click.ua-card-setting').on('click.ua-card-setting', function (event) {
|
||||||
if (!$(event.target).closest($toolbarSettingElem).length) {
|
if (!$(event.target).closest($toolbarSettingElem).length && !$(event.target).closest('#' + cardSettingId).length) {
|
||||||
$('#' + cardSettingId).remove();
|
$('#' + cardSettingId).remove();
|
||||||
$(document).off('click.ua-card-setting');
|
$(document).off('click.ua-card-setting');
|
||||||
}
|
}
|
||||||
@@ -938,6 +956,25 @@
|
|||||||
extend: 'data-table-id="' + options.id + '"'
|
extend: 'data-table-id="' + options.id + '"'
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
// 卡片设置入口(pro#5):存在任何非 table 形态即注入(不依赖
|
||||||
|
// 条目数>1,单形态 card 页也需要打开设置面板)。头部插入使图标
|
||||||
|
// 渲染在工具图标组最左侧(layui.js 按数组序 map 拼 HTML 写入
|
||||||
|
// .layui-table-tool-self)。不写 extend 属性(layui 不渲染该
|
||||||
|
// 属性,面板定位走 lay-table-id 模式)
|
||||||
|
var hasNonTableLayout = false;
|
||||||
|
$.each(layoutEntries, function (i, entry) {
|
||||||
|
if (entry && entry.name !== 'table') {
|
||||||
|
hasNonTableLayout = true;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if (hasNonTableLayout) {
|
||||||
|
defaultToolbar.unshift({
|
||||||
|
title: '卡片设置',
|
||||||
|
layEvent: 'TABLE_CARD_SETTING',
|
||||||
|
icon: 'layui-icon-set'
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (options.defaultToolbar === undefined) {
|
if (options.defaultToolbar === undefined) {
|
||||||
@@ -962,6 +999,23 @@
|
|||||||
extend: 'data-table-id="' + options.id + '"'
|
extend: 'data-table-id="' + options.id + '"'
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
// 卡片设置入口与 TABLE_LAYOUT 同规则去重补投:autoInjected
|
||||||
|
// 即默认注入 card,条件恒成立;已有同名 layEvent 不重复加。
|
||||||
|
// 头部插入保持"图标组最左侧"与主注入一致
|
||||||
|
var hasCardSettingBtn = false;
|
||||||
|
$.each(options.defaultToolbar, function (i, btn) {
|
||||||
|
if (btn && typeof btn === 'object' && btn.layEvent === 'TABLE_CARD_SETTING') {
|
||||||
|
hasCardSettingBtn = true;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if (!hasCardSettingBtn) {
|
||||||
|
options.defaultToolbar.unshift({
|
||||||
|
title: '卡片设置',
|
||||||
|
layEvent: 'TABLE_CARD_SETTING',
|
||||||
|
icon: 'layui-icon-set'
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -1186,33 +1240,6 @@
|
|||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
});
|
});
|
||||||
|
|
||||||
// 卡片设置入口按钮(pro#5 迭代:由右侧图标区 defaultToolbar 移至
|
|
||||||
// 左侧工具栏末尾)。layui 2.10.1 左容器为 .layui-table-tool-temp
|
|
||||||
//(layui.js 工具栏模板 '<div class="layui-table-tool"><div
|
|
||||||
// class="layui-table-tool-temp"></div><div
|
|
||||||
// class="layui-table-tool-self"></div>',左容器经
|
|
||||||
// o.layTool.find(".layui-table-tool-temp").html(t) 渲染现有操作
|
|
||||||
// 按钮)。不带 lay-event(避免 layui toolbar 委托与直绑双触发),
|
|
||||||
// 点击直调 toggleCardSettingPanel。初始 layui-hide,追加在本分支
|
|
||||||
// 内、首次 syncLayoutVisibility 调用之前,由其按当前形态定初始
|
|
||||||
// 显隐(表格形态直开页按钮不会闪现)
|
|
||||||
var $cardSettingView = $(options.elem).siblings('.layui-table-view').first();
|
|
||||||
var hasNonTableLayout = false;
|
|
||||||
$.each(layoutEntries, function (i, entry) {
|
|
||||||
if (entry && entry.name !== 'table') {
|
|
||||||
hasNonTableLayout = true;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
if (hasNonTableLayout && $cardSettingView.find('.ua-card-setting-btn').length === 0) {
|
|
||||||
var $cardSettingBtn = $('<a class="layui-btn layui-btn-sm ua-card-setting-btn layui-hide" title="卡片设置"><i class="layui-icon layui-icon-set"></i>卡片设置</a>')
|
|
||||||
.appendTo($cardSettingView.find('.layui-table-tool-temp'));
|
|
||||||
$cardSettingBtn.on('click', function (event) {
|
|
||||||
toggleCardSettingPanel(options.id);
|
|
||||||
event.stopPropagation();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// 形态注册:layoutList 已在 defaultToolbar 段规范化(视图按钮
|
// 形态注册:layoutList 已在 defaultToolbar 段规范化(视图按钮
|
||||||
// 注入共用)。运行期切形态经 ua.table.setLayoutForm。
|
// 注入共用)。运行期切形态经 ua.table.setLayoutForm。
|
||||||
// options.cols 此时已过 formatCols/renderOperat/renderTrueHide,
|
// options.cols 此时已过 formatCols/renderOperat/renderTrueHide,
|
||||||
@@ -2372,6 +2399,10 @@
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
|
case 'TABLE_CARD_SETTING':
|
||||||
|
// 卡片设置面板(开关/定位/外点收起全套在 toggleCardSettingPanel)
|
||||||
|
toggleCardSettingPanel(tableId);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user