/** * ArrayTable 分组表头(多级表头)。 * * 背景:schema 里的每个 ArrayTable.Column 被抽成「扁平」列定义(buildArrayTableColumns), * 内部一批逻辑(懒挂载列识别、列方案还原、首列拖拽等)都按扁平列取值,不能改。 * 所以分组只在「交给 AG-Grid 的那一份 columnDefs」上做: * 1. buildArrayTableColumns 生成列定义时,用 markHeaderGroup 把列声明的 headerGroup 记下来; * 2. index.tsx 把扁平列定义交给 groupColumnDefs,得到含列组的 columnDefs 传给 AgGridReact。 * * 分组名记在模块内的 WeakMap 里,不往 colDef 上塞自定义字段——AG-Grid 会把未知属性当作错误告警。 * * 只支持一级分组;分组名相同但不相邻的列各自成组。 * * @author nokecy */ import type { ColDef, ColGroupDef } from 'ag-grid-community'; /** * 记下列定义所属的表头分组。 * headerGroup 不是非空字符串(没声明、空串、纯空白)时不做任何事,该列按无分组处理。 * 返回传入的 colDef 本身,方便链式使用。 */ export declare const markHeaderGroup: (colDef: T, headerGroup: unknown) => T; /** * 把扁平列定义按「相邻且 headerGroup 相同」合并成 AG-Grid 列组。 * * - 相邻同名的列 -> 一个 { headerName, groupId, children } 列组; * - 同名但被别的列隔开 -> 各自成组,groupId 各不相同; * - 没声明分组的列原样保留(同一个对象); * - 一个分组也没有时直接返回传入的数组本身,没用到分组的表格行为零变化。 * * groupId 由分组名派生(同名第 N 次出现追加 _N),同样的输入永远得到同样的 id: * columnDefs 因别的原因重建时,AG-Grid 靠 groupId 认出还是那个列组,列组状态不丢。 * * 有意不设 marryChildren:设了以后,任何打破组内相邻的列顺序(用户旧的扁平列方案、 * 列设置面板里跨组拖动的实时预览)都会被 AG-Grid 整体丢弃并报 error #39;不设则顺序照常生效, * 组被隔开时表头显示成多段。 * openByDefault:列组默认展开(只对配了 columnGroupShow 的可折叠列组有意义)。 */ export declare const groupColumnDefs: (colDefs: ColDef[]) => (ColDef | ColGroupDef)[];