// Copyright (C) The Arvados Authors. All rights reserved. // // SPDX-License-Identifier: AGPL-3.0 import * as React from "react"; import { DataTableFilterItem } from "../data-table-filters/data-table-filters"; export interface DataColumn { key?: React.Key; name: string; selected: boolean; configurable: boolean; sortDirection: SortDirection; filters: F[]; render: (item: T) => React.ReactElement; renderHeader?: () => React.ReactElement; width?: string; } 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; }; export const createDataColumn = (dataColumn: Partial>): DataColumn => ({ key: '', name: '', selected: true, configurable: true, sortDirection: SortDirection.NONE, filters: [], render: () => React.createElement('span'), ...dataColumn, });