Files
prowler/components/users/table/DataTableColumnHeader.tsx
T
Sophia Dao c910167ff6 Users Page - Table Row (#43)
* feat(users): Add in Users page and sidebar

* feat(users): Fix grammar, add in Users action

* feat(users): Add in more API info

* feat(users): Continue work on table, pass data through to table, style skeleton

* feat(users): Format Status column

* feat(users): Style table

* feat(users): Change data, update Users to User
2024-08-23 09:44:48 -05:00

50 lines
1.2 KiB
TypeScript

import { Button } from "@nextui-org/react";
import { Column } from "@tanstack/react-table";
import {
ArrowDownIcon,
ArrowUpIcon,
ChevronsLeftRightIcon,
} from "lucide-react";
import { HTMLAttributes } from "react";
interface DataTableColumnHeaderProps<TData, TValue>
extends HTMLAttributes<HTMLDivElement> {
column: Column<TData, TValue>;
title: string;
}
export const DataTableColumnHeader = <TData, TValue>({
column,
title,
className,
}: DataTableColumnHeaderProps<TData, TValue>) => {
const renderSortIcon = () => {
const sort = column.getIsSorted();
if (!sort) {
return <ChevronsLeftRightIcon className="ml-2 h-4 w-4 rotate-90" />;
}
return sort === "desc" ? (
<ArrowDownIcon className="ml-2 h-4 w-4" />
) : (
<ArrowUpIcon className="ml-2 h-4 w-4" />
);
};
if (!column.getCanSort()) {
return <div className={className}>{title}</div>;
}
return (
<div className={className}>
<Button
variant="ghost"
size="sm"
className="h-8"
onClick={column.getToggleSortingHandler()}
>
<span>{title}</span>
{renderSortIcon()}
</Button>
</div>
);
};