import { Sort, SortDirection } from '@angular/material/sort'; import { Observable } from 'rxjs'; import { MatDrawerMode } from '@angular/material/sidenav'; import { AcTableLabels } from './ac-table-labels'; import { ThemePalette } from '@angular/material/core'; import { PageEvent } from '@angular/material/paginator'; import { AcTableHeaderItem } from './ac-table-header-item'; import { ComponentType } from '@angular/cdk/portal'; import { AcSubmitButton } from '../../ac-dynamic-form/models/submit-button'; import { AcTableFilterFieldConfig } from './ac-table-filter-field-config'; export interface AcTableOptions { selection?: boolean; externalStore?: boolean; sort?: boolean; sortOptions?: { active?: string; direction?: SortDirection; disabled?: boolean; disableClear?: boolean; start?: 'asc' | 'desc'; sortChange?: (sort: Sort, page?: PageEvent) => void; externalSort?: boolean; sortingDataAccessor?: ((data: any, sortHeaderId: string) => string | number); ignoreCase?: boolean; }; pagination?: boolean; paginationOptions?: { pageSize?: number; pageSizeOptions?: number[]; color?: ThemePalette; hidePageSize?: boolean; showFirstLastButtons?: boolean; pageChange?: (page: PageEvent, sort?: Sort) => void; externalPagination?: boolean; }; addRow?: boolean; addRowOptions?: { action?: (row: any) => Observable; component?: ComponentType; }; editRow?: boolean; editRowOptions?: { action?: (row: any) => Observable; component?: ComponentType; }; deleteRow?: boolean; deleteRowOptions?: { confirmation?: boolean; action?: (row: any) => Observable; }; globalFilter?: boolean; filter?: boolean; columnManagement?: boolean; filterOptions?: { mode?: 'sidenav'; badgeColor?: ThemePalette; externalFilter?: boolean; submitButton?: AcSubmitButton; debounceTime?: number; updateOn?: 'change' | 'blur' | 'submit'; additionalfilters?: AcTableFilterFieldConfig[]; }; sidenavOptions?: { mode?: MatDrawerMode; position?: 'start' | 'end'; opened?: boolean; disableClose?: boolean; }; exportCSV?: { fileName: string; separator?: string; addDoubleQuote?: boolean; formatDate?: string; exportFilteredData?: boolean; externalExport?: () => void; }; labels?: AcTableLabels; headerItems?: AcTableHeaderItem[]; }