mirror of
https://github.com/hanzoai/sentinel.git
synced 2026-09-29 22:34:33 +00:00
35 lines
1.1 KiB
TypeScript
35 lines
1.1 KiB
TypeScript
import type {LocationDescriptorObject} from 'history';
|
|
|
|
import type {GridColumnOrder, GridColumnSortBy} from 'sentry/components/gridEditable';
|
|
import SortLink from 'sentry/components/gridEditable/sortLink';
|
|
|
|
interface TableHeadProps<K> {
|
|
currentSort?: GridColumnSortBy<K> | null;
|
|
generateSortLink?: (column: K) => () => LocationDescriptorObject | undefined;
|
|
onClick?(column: GridColumnOrder<K>, e: React.MouseEvent<HTMLAnchorElement>): void;
|
|
rightAlignedColumns?: Set<K>;
|
|
sortableColumns?: Set<K>;
|
|
}
|
|
|
|
export function renderTableHead<K>({
|
|
currentSort,
|
|
generateSortLink,
|
|
rightAlignedColumns,
|
|
sortableColumns,
|
|
onClick,
|
|
}: TableHeadProps<K>) {
|
|
return function (column: GridColumnOrder<K>, _columnIndex: number) {
|
|
return (
|
|
<SortLink
|
|
onClick={e => onClick?.(column, e)}
|
|
align={rightAlignedColumns?.has(column.key) ? 'right' : 'left'}
|
|
title={column.name}
|
|
direction={currentSort?.key === column.key ? currentSort?.order : undefined}
|
|
canSort={sortableColumns?.has(column.key) || false}
|
|
generateSortLink={generateSortLink?.(column.key) ?? (() => undefined)}
|
|
replace
|
|
/>
|
|
);
|
|
};
|
|
}
|