Browse Source

fix(BasicTable->useColumns): handle deep colunm hidden (#3561) resolve #3559

xachary 1 năm trước cách đây
mục cha
commit
54af5bb42d
1 tập tin đã thay đổi với 17 bổ sung3 xóa
  1. 17 3
      src/components/Table/src/hooks/useColumns.ts

+ 17 - 3
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