import { ReactNode } from 'react'; import { PageTableViewTypeE } from '../PageToolbar/PageTableViewType'; export declare enum ColumnTableOption { description = "description", expanded = "expanded", hidden = "hidden" } export declare enum ColumnListOption { name = "name", subtitle = "subtitle", description = "description", hidden = "hidden", primary = "primary", secondary = "secondary" } export declare enum ColumnCardOption { name = "name", subtitle = "subtitle", description = "description", hidden = "hidden" } export declare enum ColumnModalOption { hidden = "hidden" } export declare enum ColumnDashboardOption { hidden = "hidden" } export declare enum ColumnPriority { last = "last" } interface ITableColumnCommon { id?: string; header: string; helpText?: string; minWidth?: number; maxWidth?: number; fullWidth?: boolean; detailsFullWidth?: boolean; sort?: string; defaultSortDirection?: 'asc' | 'desc'; defaultSort?: boolean; icon?: (item: T) => ReactNode; table?: keyof typeof ColumnTableOption; list?: keyof typeof ColumnListOption; card?: keyof typeof ColumnCardOption; modal?: keyof typeof ColumnModalOption; dashboard?: keyof typeof ColumnDashboardOption; priority?: keyof typeof ColumnPriority; } export interface ITableColumnTypeReactNode extends ITableColumnCommon { type?: undefined; value?: CellFn; cell: CellFn; } export interface ITableColumnTypeText extends ITableColumnCommon { type: 'text'; value: CellFn; to?: (item: T) => string | undefined; } export interface ITableColumnTypeDescription extends ITableColumnCommon { type: 'description'; value: CellFn; } export interface ITableColumnTypeCount extends ITableColumnCommon { type: 'count'; value: CellFn; } export interface ITableColumnTypeLabels extends ITableColumnCommon { type: 'labels'; value: CellFn; } export interface ITableColumnTypeDateTime extends ITableColumnCommon { type: 'datetime'; value: CellFn; } export type ITableColumn = ITableColumnTypeReactNode | ITableColumnTypeText | ITableColumnTypeDescription | ITableColumnTypeDateTime | ITableColumnTypeLabels | ITableColumnTypeCount; export declare function TableColumnCell(props: { item: T; column?: ITableColumn; }): JSX.Element; export declare function useVisibleTableColumns(columns: ITableColumn[]): ITableColumn[]; export declare function useVisibleListColumns(columns: ITableColumn[]): ITableColumn[]; export declare function useVisibleCardColumns(columns: ITableColumn[]): ITableColumn[]; export declare function useVisibleModalColumns(columns: ITableColumn[]): ITableColumn[]; export declare function useDashboardColumns(columns: ITableColumn[]): ITableColumn[]; export declare function useVisibleColumns(columns: ITableColumn[], viewType: PageTableViewTypeE): ITableColumn[]; export declare function useDescriptionColumns(columns: ITableColumn[]): ITableColumn[]; export declare function useExpandedColumns(columns: ITableColumn[]): ITableColumn[]; export type CellFn = (item: T) => R; export declare function useColumnsWithoutSort(columns: ITableColumn[]): ({ sort: undefined; type?: undefined; value?: CellFn | undefined; cell: CellFn; id?: string; header: string; helpText?: string; minWidth?: number; maxWidth?: number; fullWidth?: boolean; detailsFullWidth?: boolean; defaultSortDirection?: "asc" | "desc"; defaultSort?: boolean; icon?: ((item: T) => ReactNode) | undefined; table?: keyof typeof ColumnTableOption; list?: keyof typeof ColumnListOption; card?: keyof typeof ColumnCardOption; modal?: keyof typeof ColumnModalOption; dashboard?: keyof typeof ColumnDashboardOption; priority?: keyof typeof ColumnPriority; } | { sort: undefined; type: "text"; value: CellFn; to?: ((item: T) => string | undefined) | undefined; id?: string; header: string; helpText?: string; minWidth?: number; maxWidth?: number; fullWidth?: boolean; detailsFullWidth?: boolean; defaultSortDirection?: "asc" | "desc"; defaultSort?: boolean; icon?: ((item: T) => ReactNode) | undefined; table?: keyof typeof ColumnTableOption; list?: keyof typeof ColumnListOption; card?: keyof typeof ColumnCardOption; modal?: keyof typeof ColumnModalOption; dashboard?: keyof typeof ColumnDashboardOption; priority?: keyof typeof ColumnPriority; } | { sort: undefined; type: "description"; value: CellFn; id?: string; header: string; helpText?: string; minWidth?: number; maxWidth?: number; fullWidth?: boolean; detailsFullWidth?: boolean; defaultSortDirection?: "asc" | "desc"; defaultSort?: boolean; icon?: ((item: T) => ReactNode) | undefined; table?: keyof typeof ColumnTableOption; list?: keyof typeof ColumnListOption; card?: keyof typeof ColumnCardOption; modal?: keyof typeof ColumnModalOption; dashboard?: keyof typeof ColumnDashboardOption; priority?: keyof typeof ColumnPriority; } | { sort: undefined; type: "datetime"; value: CellFn; id?: string; header: string; helpText?: string; minWidth?: number; maxWidth?: number; fullWidth?: boolean; detailsFullWidth?: boolean; defaultSortDirection?: "asc" | "desc"; defaultSort?: boolean; icon?: ((item: T) => ReactNode) | undefined; table?: keyof typeof ColumnTableOption; list?: keyof typeof ColumnListOption; card?: keyof typeof ColumnCardOption; modal?: keyof typeof ColumnModalOption; dashboard?: keyof typeof ColumnDashboardOption; priority?: keyof typeof ColumnPriority; } | { sort: undefined; type: "labels"; value: CellFn; id?: string; header: string; helpText?: string; minWidth?: number; maxWidth?: number; fullWidth?: boolean; detailsFullWidth?: boolean; defaultSortDirection?: "asc" | "desc"; defaultSort?: boolean; icon?: ((item: T) => ReactNode) | undefined; table?: keyof typeof ColumnTableOption; list?: keyof typeof ColumnListOption; card?: keyof typeof ColumnCardOption; modal?: keyof typeof ColumnModalOption; dashboard?: keyof typeof ColumnDashboardOption; priority?: keyof typeof ColumnPriority; } | { sort: undefined; type: "count"; value: CellFn; id?: string; header: string; helpText?: string; minWidth?: number; maxWidth?: number; fullWidth?: boolean; detailsFullWidth?: boolean; defaultSortDirection?: "asc" | "desc"; defaultSort?: boolean; icon?: ((item: T) => ReactNode) | undefined; table?: keyof typeof ColumnTableOption; list?: keyof typeof ColumnListOption; card?: keyof typeof ColumnCardOption; modal?: keyof typeof ColumnModalOption; dashboard?: keyof typeof ColumnDashboardOption; priority?: keyof typeof ColumnPriority; })[]; export declare function useColumnsWithoutExpandedRow(columns: ITableColumn[]): ({ table: "hidden" | "description" | undefined; type?: undefined; value?: CellFn | undefined; cell: CellFn; id?: string; header: string; helpText?: string; minWidth?: number; maxWidth?: number; fullWidth?: boolean; detailsFullWidth?: boolean; sort?: string; defaultSortDirection?: "asc" | "desc"; defaultSort?: boolean; icon?: ((item: T) => ReactNode) | undefined; list?: keyof typeof ColumnListOption; card?: keyof typeof ColumnCardOption; modal?: keyof typeof ColumnModalOption; dashboard?: keyof typeof ColumnDashboardOption; priority?: keyof typeof ColumnPriority; } | { table: "hidden" | "description" | undefined; type: "text"; value: CellFn; to?: ((item: T) => string | undefined) | undefined; id?: string; header: string; helpText?: string; minWidth?: number; maxWidth?: number; fullWidth?: boolean; detailsFullWidth?: boolean; sort?: string; defaultSortDirection?: "asc" | "desc"; defaultSort?: boolean; icon?: ((item: T) => ReactNode) | undefined; list?: keyof typeof ColumnListOption; card?: keyof typeof ColumnCardOption; modal?: keyof typeof ColumnModalOption; dashboard?: keyof typeof ColumnDashboardOption; priority?: keyof typeof ColumnPriority; } | { table: "hidden" | "description" | undefined; type: "description"; value: CellFn; id?: string; header: string; helpText?: string; minWidth?: number; maxWidth?: number; fullWidth?: boolean; detailsFullWidth?: boolean; sort?: string; defaultSortDirection?: "asc" | "desc"; defaultSort?: boolean; icon?: ((item: T) => ReactNode) | undefined; list?: keyof typeof ColumnListOption; card?: keyof typeof ColumnCardOption; modal?: keyof typeof ColumnModalOption; dashboard?: keyof typeof ColumnDashboardOption; priority?: keyof typeof ColumnPriority; } | { table: "hidden" | "description" | undefined; type: "datetime"; value: CellFn; id?: string; header: string; helpText?: string; minWidth?: number; maxWidth?: number; fullWidth?: boolean; detailsFullWidth?: boolean; sort?: string; defaultSortDirection?: "asc" | "desc"; defaultSort?: boolean; icon?: ((item: T) => ReactNode) | undefined; list?: keyof typeof ColumnListOption; card?: keyof typeof ColumnCardOption; modal?: keyof typeof ColumnModalOption; dashboard?: keyof typeof ColumnDashboardOption; priority?: keyof typeof ColumnPriority; } | { table: "hidden" | "description" | undefined; type: "labels"; value: CellFn; id?: string; header: string; helpText?: string; minWidth?: number; maxWidth?: number; fullWidth?: boolean; detailsFullWidth?: boolean; sort?: string; defaultSortDirection?: "asc" | "desc"; defaultSort?: boolean; icon?: ((item: T) => ReactNode) | undefined; list?: keyof typeof ColumnListOption; card?: keyof typeof ColumnCardOption; modal?: keyof typeof ColumnModalOption; dashboard?: keyof typeof ColumnDashboardOption; priority?: keyof typeof ColumnPriority; } | { table: "hidden" | "description" | undefined; type: "count"; value: CellFn; id?: string; header: string; helpText?: string; minWidth?: number; maxWidth?: number; fullWidth?: boolean; detailsFullWidth?: boolean; sort?: string; defaultSortDirection?: "asc" | "desc"; defaultSort?: boolean; icon?: ((item: T) => ReactNode) | undefined; list?: keyof typeof ColumnListOption; card?: keyof typeof ColumnCardOption; modal?: keyof typeof ColumnModalOption; dashboard?: keyof typeof ColumnDashboardOption; priority?: keyof typeof ColumnPriority; })[]; export {};