From 54af5bb42ddd04a56a7da3becf325dd9cfbccc48 Mon Sep 17 00:00:00 2001 From: xachary <179740385@qq.com> Date: Sat, 20 Jan 2024 10:56:16 +0800 Subject: [PATCH] fix(BasicTable->useColumns): handle deep colunm hidden (#3561) resolve #3559 --- src/components/Table/src/hooks/useColumns.ts | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/src/components/Table/src/hooks/useColumns.ts b/src/components/Table/src/hooks/useColumns.ts index 52255466..f3017d3c 100644 --- a/src/components/Table/src/hooks/useColumns.ts +++ b/src/components/Table/src/hooks/useColumns.ts @@ -297,9 +297,23 @@ function sortFixedColumn(columns: BasicColumn[]) { } defColumns.push(column); } - return [...fixedLeftColumns, ...defColumns, ...fixedRightColumns].filter( - (item) => !item.defaultHidden, - ); + // 筛选逻辑 + const filterFunc = (item) => !item.defaultHidden; + // 筛选首层显示列(1级表头) + const viewColumns = [...fixedLeftColumns, ...defColumns, ...fixedRightColumns].filter(filterFunc); + // 筛选>=2级表头(深度优先) + const list = [...viewColumns]; + while (list.length) { + const current = list[0]; + if (Array.isArray(current.children)) { + current.children = current.children.filter(filterFunc); + list.shift(); + list.unshift(...current.children); + } else { + list.shift(); + } + } + return viewColumns; } // format cell