@lobehub/ui
Version:
Lobe UI is an open-source UI component library for building AIGC web apps
26 lines (25 loc) • 1.38 kB
JavaScript
//#region src/base-ui/Table/toColumnDefs.ts
const getColumnId = (column, index) => String(column.key ?? column.dataIndex ?? `__column_${index}`);
const getCellValue = (record, column) => column.dataIndex ? record[column.dataIndex] : void 0;
const isEmptyFilter = (value) => !Array.isArray(value) || value.length === 0;
const toColumnDefs = (columns) => columns.map((column, index) => {
if ((Boolean(column.sorter) || Boolean(column.filters?.length)) && column.key == null && column.dataIndex == null) throw new Error("[Table] sortable or filterable columns need a `key` or `dataIndex`");
const comparator = typeof column.sorter === "function" ? column.sorter : void 0;
const { onFilter } = column;
const filterFn = onFilter ? Object.assign((row, _columnId, filterValue) => filterValue.some((value) => onFilter(value, row.original)), { autoRemove: isEmptyFilter }) : void 0;
return {
accessorFn: (record) => getCellValue(record, column),
enableColumnFilter: Boolean(column.filters?.length),
enableSorting: Boolean(column.sorter),
filterFn,
id: getColumnId(column, index),
sortDescFirst: column.sortDirections?.[0] === "descend",
...comparator && {
sortFn: (rowA, rowB) => comparator(rowA.original, rowB.original),
sortUndefined: false
}
};
});
//#endregion
export { getCellValue, getColumnId, toColumnDefs };
//# sourceMappingURL=toColumnDefs.mjs.map