// Copyright (C) The Arvados Authors. All rights reserved. // // 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; onSortToggle?: () => void; filters?: DataTableFilterItem[]; onFiltersChange?: (filters: DataTableFilterItem[]) => void; render: (item: T) => React.ReactElement; renderHeader?: () => React.ReactElement | null; } export type SortDirection = "asc" | "desc"; export const isColumnConfigurable = (column: DataColumn) => { return column.configurable === undefined || column.configurable; }; export const toggleSortDirection = (column: DataColumn): DataColumn => { const sortDirection = column.sortDirection === undefined || column.sortDirection === "desc" ? "asc" : "desc"; return { ...column, sortDirection }; }; export const resetSortDirection = (column: DataColumn): DataColumn => { return { ...column, sortDirection: undefined }; };