iter(g294): 数据表格支持列显隐面板
This commit is contained in:
@@ -20,16 +20,17 @@ export function downloadCsv(name: string, header: string[], rows: unknown[][]):
|
||||
URL.revokeObjectURL(url);
|
||||
}
|
||||
|
||||
/*** 导出按钮:取筛选 + 排序后的全量行(不分页),列序与表头一致、单元格走 format ***/
|
||||
/*** 导出按钮:取筛选 + 排序后的全量行(不分页),列序与表头一致、单元格走 format;列可由读取器惰性给出,跟随列显隐 ***/
|
||||
export function exportButton<T>(
|
||||
table: { getAllRows(): RowModel<T>; getCellValue(row: T, key: string): unknown },
|
||||
columns: TableColumn<T>[],
|
||||
columns: TableColumn<T>[] | (() => TableColumn<T>[]),
|
||||
name: string,
|
||||
): HTMLElement {
|
||||
const run = (): void => {
|
||||
const cols = typeof columns === 'function' ? columns() : columns; // 点导出时才取列:隐藏列变化后导出跟着变
|
||||
const rows = table.getAllRows().rows;
|
||||
const header = columns.map((c) => String(c.header ?? c.key));
|
||||
const body = rows.map((row) => columns.map((c) => {
|
||||
const header = cols.map((c) => String(c.header ?? c.key));
|
||||
const body = rows.map((row) => cols.map((c) => {
|
||||
const raw = table.getCellValue(row, c.key);
|
||||
return c.format ? c.format(raw, row) : raw; // 与单元格显示同源,导出内容与看到的一致
|
||||
}));
|
||||
|
||||
Reference in New Issue
Block a user