import { Observable } from "rxjs"; export interface ActionDefinition { label: string; icon?: string; iconColor?: 'primary' | 'accent' | 'warn'; onClick?: (row: T) => void | Promise; onRouterLink?: (row: T) => string; routerLinkQuery?: (row: T) => {}; disabledByRowField?: string; disabledTooltip?: string; } export interface ActionDefinitionBulk { label: string; icon?: string; onClick?: (row: T[]) => void | Promise; } export interface ColumnDefinition { header?: string; template?: any; hide?: boolean; forceWrap?: boolean; filter?: FilterOptions; } export interface FilterOptions { string?: {}; stringArray?: {}; bool?: {}; } export interface ColumnDefinitionMap { [field: string]: ColumnDefinition; } export interface AutoTableConfig { data$: Observable; onDataUpdated?: (rows: T[]) => void; debug?: boolean; cacheId?: string; noItemsFoundPlaceholder?: string; actions?: ActionDefinition[]; actionsBulk?: ActionDefinitionBulk[]; bulkSelectMaxCount?: number; actionsVisibleCount?: number; initialSort?: string; initialSortDir?: "asc" | "desc"; pageSize?: number; searchOnlyVisibleColumns?: boolean; searchByColumnOption?: boolean; dontSearchFields?: Array; onTableFilterStateChanged?: (currentFilter: TableFiltersState) => void; $triggerSetTableFilterState?: Observable; hideFields?: string[]; hideFilter?: boolean; hideHeader?: boolean; hidePaginator?: boolean; hideChooseColumns?: boolean; filterText?: string; exportFilename?: string; exportRowFormat?: (row: T) => void; onSelectItem?: (row: T) => void; onSelectItemDoubleClick?: (row: T) => void; onSelectedBulk?: (row: T[]) => void; disableSelect?: boolean; disableHoverEffect?: boolean; selectFirstOnInit?: boolean; $triggerClearSelected?: Observable; $triggerSelectItem?: Observable; disableMobileScroll?: boolean; mobileFields?: string[]; tabletFields?: string[]; } export interface TableFiltersState { searchText?: string; pageSize?: number; pageIndex?: number; columnsEnabled?: string[]; primaryColumn?: string; primarySortDirection?: string; }