X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/fbd2012fa56f6de44dfc4008d70e5a21cfcaf459..900081d75c21b924f4da42a94c1ca4ef7084a3df:/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 f991f62730..d4e23ab5b5 100644 --- a/src/components/data-table/data-column.ts +++ b/src/components/data-table/data-column.ts @@ -2,15 +2,35 @@ // // SPDX-License-Identifier: AGPL-3.0 -export interface DataColumn { +import { DataTableFilterItem } from "../data-table-filters/data-table-filters"; +import * as React from "react"; + +export interface DataColumn { + key?: React.Key; name: string; selected: boolean; - configurable?: boolean; - key?: React.Key; - render: (item: T) => React.ReactElement; - renderHeader?: () => React.ReactElement; + configurable: boolean; + sortDirection: SortDirection; + filters: F[]; + render: (item: T) => React.ReactElement; + renderHeader?: () => React.ReactElement; + width?: string; } -export const isColumnConfigurable = (column: DataColumn) => { - return column.configurable === undefined || column.configurable; -}; \ No newline at end of file +export enum SortDirection { + ASC = "asc", + DESC = "desc", + NONE = "none" +} + +export const toggleSortDirection = (column: DataColumn): DataColumn => { + return column.sortDirection + ? column.sortDirection === SortDirection.ASC + ? { ...column, sortDirection: SortDirection.DESC } + : { ...column, sortDirection: SortDirection.ASC } + : column; +}; + +export const resetSortDirection = (column: DataColumn): DataColumn => { + return column.sortDirection ? { ...column, sortDirection: SortDirection.NONE } : column; +};