digitinary-ui
Version:
Digitinary UI Library
135 lines (134 loc) • 4.2 kB
TypeScript
/// <reference types="react" />
import { TablePaginationProps } from '../../types';
export interface SingleSortIconProps {
columnName: string;
sortable: boolean;
onClick: () => void;
currentHeadCell: string;
sort: '' | 'asc' | 'desc';
}
export interface MaltiSortIconProps {
columnName: string;
sortable: boolean;
onClick: () => void;
sort: Record<string, 'asc' | 'desc' | ''>;
}
export interface TaskTableProps {
columns: TableColoumn[];
setColumns: (columns: TableColoumn[]) => void;
data: TableData;
setData: (data: TableRow) => void;
selectable?: boolean;
expandable?: boolean;
expandComponent: React.ComponentType<{
rowData: TableRow;
}>;
resizable?: boolean;
selectedRows: Set<number>;
setSelectedRows: (rows: Set<number>) => void;
isDragAndDropEnabled?: boolean;
paginationOptions?: TablePaginationProps;
sort?: '' | 'asc' | 'desc' | Record<string, '' | 'asc' | 'desc'>;
setSort?: React.Dispatch<React.SetStateAction<'' | 'asc' | 'desc' | Record<string, '' | 'asc' | 'desc'>>>;
currentHeadCell?: string;
setCurrentHeadCell?: React.Dispatch<React.SetStateAction<string>>;
maltiSort: boolean;
}
export interface setSingleSortProps {
headCell: {
id: string;
};
currentHeadCell: string;
setCurrentHeadCell: (value: string) => void;
sort: '' | 'asc' | 'desc';
setSort: (value: '' | 'asc' | 'desc') => void;
}
export interface setMaltiSortProps {
headCell: {
id: string;
};
sort: Record<string, 'asc' | 'desc' | ''>;
setSort: (value: Record<string, 'asc' | 'desc' | ''>) => void;
}
export type HeaderType = {
getResizeHandler: () => (event: React.MouseEvent<HTMLDivElement> | React.TouchEvent<HTMLDivElement>) => void;
column: {
getIsResizing: () => boolean;
id: string;
};
};
export interface ResizableColumnProps {
header: HeaderType;
resizable: boolean;
}
export interface SortableHeaderProps {
header: HeaderType;
currentHeadCell: string;
setCurrentHeadCell: (value: string) => void;
sort: '' | 'asc' | 'desc' | Record<string, '' | 'asc' | 'desc'>;
setSort: (value: '' | 'asc' | 'desc' | Record<string, '' | 'asc' | 'desc'>) => void;
sortable: boolean;
maltiSort: boolean;
}
export interface DraggableColumnProps {
index: number;
moveColumn: (fromIndex: number, toIndex: number) => void;
children: React.ReactNode;
isDragAndDropEnabled: boolean;
header: HeaderType;
resizable: boolean;
currentHeadCell?: string;
setCurrentHeadCell?: (value: string) => void;
sortable: boolean;
sort?: '' | 'asc' | 'desc' | Record<string, '' | 'asc' | 'desc'>;
setSort?: (value: '' | 'asc' | 'desc' | Record<string, '' | 'asc' | 'desc'>) => void;
maltiSort: boolean;
}
type CellProps = {
getValue: () => void;
row: {
original: Record<string, string | number | boolean | Record<string, string | number | boolean>>;
};
};
export type TableColoumn = {
accessorKey: string | number;
header: string;
cell: (props: CellProps) => React.ReactNode;
size?: number;
sortable?: boolean;
[key: string]: string | boolean | number | object | undefined;
};
export type TableRow = Record<string, string | number | boolean | Object | Record<string, string | number | boolean | Object>> | any;
export type TableData = TableRow[] | any;
export interface SelectAllRowsProps {
selectable: boolean;
data: TableData;
selectedRows: Set<number>;
setSelectedRows: (rows: TableData) => void;
}
export interface SelectRowProps {
rowIndex: number;
selectable: boolean;
selectedRows: Set<number>;
setSelectedRows: (rows: TableData) => void;
}
export type Column = {
accessorKey: string;
header: string;
cell: (props: {
getValue: () => void;
}) => React.ReactNode;
};
export interface ExpandableSectionProps<TData extends {
id: string;
}> {
expandedRows: Set<string>;
selectable: boolean;
columns: TableColoumn[];
expandable: boolean;
row: TData;
ExpandComponent: React.ComponentType<{
rowData: TData;
}>;
}
export {};