X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/e70279bebea915b5ddbef11357ab7a36201d6d85..3eaf143e04107bf25e15aaef4d1b4d5d7ef68f86:/src/components/data-table/data-column.ts diff --git a/src/components/data-table/data-column.ts b/src/components/data-table/data-column.ts index f991f627..bbfea7ac 100644 --- a/src/components/data-table/data-column.ts +++ b/src/components/data-table/data-column.ts @@ -2,15 +2,34 @@ // // SPDX-License-Identifier: AGPL-3.0 +import { DataTableFilterItem } from "../data-table-filters/data-table-filters"; + export interface DataColumn { name: string; selected: boolean; configurable?: boolean; key?: React.Key; + sortDirection?: SortDirection; + filters?: DataTableFilterItem[]; render: (item: T) => React.ReactElement; - renderHeader?: () => React.ReactElement; + renderHeader?: () => React.ReactElement | null; + width?: string; } +export type SortDirection = "asc" | "desc" | "none"; + export const isColumnConfigurable = (column: DataColumn) => { return column.configurable === undefined || column.configurable; -}; \ No newline at end of file +}; + +export const toggleSortDirection = (column: DataColumn): DataColumn => { + return column.sortDirection + ? column.sortDirection === "asc" + ? { ...column, sortDirection: "desc" } + : { ...column, sortDirection: "asc" } + : column; +}; + +export const resetSortDirection = (column: DataColumn): DataColumn => { + return column.sortDirection ? { ...column, sortDirection: "none" } : column; +};