es-grid-template
Version:
es-grid-template
28 lines (27 loc) • 794 B
JavaScript
import { createColumnHelper } from '@tanstack/react-table';
const columnHelper = createColumnHelper();
export function convertColumns(columns) {
return columns.map(col => {
if (col.columns) {
// Group column
return columnHelper.group({
...col,
columns: convertColumns(col.columns) // đệ quy
});
} else {
// Accessor column
let accessor;
// Ưu tiên accessorKey nếu có, nếu không thì dùng hàm row => row[col.id]
if (col.accessorKey) {
accessor = col.accessorKey;
} else if (col.id) {
accessor = row => row[col.id];
} else {
throw new Error('Column không có accessorKey hoặc id');
}
return columnHelper.accessor(accessor, {
...col
});
}
});
}