UNPKG

@lobehub/ui

Version:

Lobe UI is an open-source UI component library for building AIGC web apps

26 lines (25 loc) • 1.38 kB
//#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