fix(table): 手机端未配置页面自动启用内置卡片形态

This commit is contained in:
augushong
2026-09-11 16:06:27 +00:00
parent 69c8929c43
commit 1c5c284492

View File

@@ -736,7 +736,18 @@
// 受控表形态清单规范化须先于引擎渲染:视图切换按钮的注入条件
// (条目数>1)依赖它,受控分支直接复用。非受控表不 normalize。
var layoutEntries = [];
var mobileLayoutInjected = false;
if (options.controlled === true) {
// 手机端未配置 layoutList 时自动启用内置 card(计划
// table-multiform-rendering Success criteria 2):内置 card
// 无需页面模板(数据全来自渲染上下文),自动注入可行。
// 显式配置优先不注入(含 usercard 示例页等存量配置);桌面端
// 不注入,未配置页桌面恒 table 零变化。注入后条目数>1,手机
// 端工具栏自动出现"视图"按钮,可切回 table。
if ((!options.layoutList || !options.layoutList.length) && ua.checkMobile()) {
options.layoutList = ['table', 'card'];
mobileLayoutInjected = true;
}
layoutEntries = normalizeLayoutList(options.layoutList);
if (layoutEntries.length > 1) {
// 视图切换按钮(任务 15 (b),交互结构参照旧 TABLE_LAYOUT
@@ -752,6 +763,26 @@
if (options.defaultToolbar === undefined) {
options.defaultToolbar = defaultToolbar;
} else if (mobileLayoutInjected) {
// 手机自动注入 card 且页面显式配置了 defaultToolbar 时,上方
// push 视图按钮的 defaultToolbar 数组被整体丢弃,"默认 card
// 且可切回 table"会落空,这里对最终配置去重追加(仅注入场景
// 触发;桌面与显式 layoutList 页均不受影响)
var hasLayoutBtn = false;
$.each(options.defaultToolbar, function (i, btn) {
if (btn && typeof btn === 'object' && btn.layEvent === 'TABLE_LAYOUT') {
hasLayoutBtn = true;
return false;
}
});
if (!hasLayoutBtn) {
options.defaultToolbar.push({
title: '视图',
layEvent: 'TABLE_LAYOUT',
icon: 'layui-icon-template-1',
extend: 'data-table-id="' + options.id + '"'
});
}
}