import { SafeHtml } from '@angular/platform-browser';
export interface TableConfig {
tableColumns: ColumnConfig[];
title?: string;
showFilter?: boolean;
filterValue?: string;
selection?: boolean;
hideSelection?: (row: any) => boolean;
filterPlaceholder?: string;
filterWidth?: 'width33' | 'width50' | 'width66' | 'width100';
paginatorOptions?: PaginatorOptions;
actions?: ActionButton[];
rowBgColor?: (row: any) => string | null | undefined;
}
interface ColumnConfig {
key: string;
displayedName: string;
stickyStart?: boolean;
stickyEnd?: boolean;
render?: (row: any, key: string) => string | SafeHtml;
pipe?: PipeType;
isSortable: boolean;
href?: (row: any) => string | null;
button?: ColumnButton;
menu?: {
yPosition?: 'above' | 'below';
xPosition?: 'before' | 'after';
items: {
text: (row: any) => string;
icon?: string;
disabled?: boolean;
onClick: (row: any) => void;
}[];
};
icon?: (row: any) => {
icon: string;
iconColor?: string;
bgColor?: string;
text?: string;
textColor?: string;
tooltip?: string;
badge?: {
text: string;
bgColor?: string;
size?: 'small' | 'medium' | 'large';
};
};
}
interface PipeType {
name: 'date' | 'number' | 'currency' | 'json' | 'lowercase' | 'uppercase' | 'titlecase' | 'percent' | 'decimal' | 'slice';
options?: string;
}
interface PaginatorOptions {
pageIndex: number;
pageSize?: number;
length?: number;
previousPageIndex?: number;
pageSizeOptions?: number[];
}
export declare enum ActionButtonType {
ADD = 0,
EDIT = 1,
DELETE = 2,
DETAILS = 3
}
export interface ActionButton {
type: ActionButtonType;
onClick: (row?: any) => void;
}
interface ColumnButton {
icon?: string;
text?: string;
tooltip?: string;
bgColor?: string;
iconColor?: string;
textColor?: string;
showButton?: (row: any) => boolean;
onClick: (row: any) => void;
}
export {};