UNPKG

@controladad/ng-base

Version:
172 lines (171 loc) 7.59 kB
import { EventEmitter, OnChanges, SimpleChanges, AfterViewInit, AfterContentInit, OnDestroy, OnInit, ElementRef, DestroyRef, TrackByFunction, InjectionToken } from '@angular/core'; import { BehaviorSubject, Observable } from 'rxjs'; import { MatMenuTrigger } from '@angular/material/menu'; import { TableAction, TableBulkAction, TableButtonEvent, TableColumn, TableExportOutput, TableOptions, TablePagination } from './table.interfaces'; import { CacTableFormMenuComponent } from './table-form-menu/table-form-menu.component'; import { DataGetRequest, ItemRecord } from '../../../../core'; import { ButtonClickEvent, CacPaginationComponent } from '../../ui'; import { CacPrintableTableComponent } from '../printable-table'; import { CdkTableDataSourceInput } from '@angular/cdk/table'; import { CacTableColActionComponent } from './columns/table-col-action/table-col-action.component'; import * as i0 from "@angular/core"; interface TableRowData { value: any; value$?: Observable<any>; rawValue: any; dynamicClass: string; dynamicClass$?: Observable<string | undefined>; isValueTrue: boolean; isValueTrue$?: Observable<boolean>; getValue: () => any; } interface TableRowAction { disabled$?: Observable<boolean>; disabled?: boolean; permission?: string; } export interface TableRow<T> { id: string | number; mutation: number; data: { [p: string]: TableRowData; }; originalItem: T; actions: { [p: number]: TableRowAction; }; } export interface TableColumnData<T> extends TableColumn<T> { prop: string; isHidden: boolean; } export declare const TABLE_COMPONENT_CONFIG: InjectionToken<Partial<TableOptions<any>>>; export declare class TablePaginationMismatchError extends Error { constructor(); } export declare class TableClass<T extends object> { options?: TableOptions<T> | undefined; private _initFn?; items$: BehaviorSubject<T[] | undefined>; ref?: CacTableComponent<T>; constructor(options?: TableOptions<T> | undefined); onInit(fn: typeof this._initFn): void; setOptions(options: TableOptions<T>): void; setRef(ref: CacTableComponent<T>): void; refresh(): void; } export declare function table<T extends object>(options?: TableOptions<T>): TableClass<T>; export declare class CacTableComponent<T extends object> implements OnInit, OnChanges, AfterViewInit, AfterContentInit, OnDestroy { readonly destroyRef: DestroyRef; private readonly cdr; private readonly dialog; private readonly config; readonly ACTIVE_STRING_VALUE = "Active"; readonly EMPTY_VALUE: string; readonly ADD_TEXT: string; readonly EDIT_TEXT: string; readonly NEW_TEXT: string; readonly TRUE_TEXT: string; readonly FALSE_TEXT: string; readonly ACTIVE_TEXT: string; readonly INACTIVE_TEXT: string; readonly HOURS_TEXT: string; readonly HOURS_AND_TEXT: string; readonly MINUTES_TEXT: string; readonly DATE_TEXT: string; readonly PLATE_COUNTRY_TEXT: string; readonly TABLE_DEFAULTS: TableOptions<any>; pagination?: CacPaginationComponent; tableFormMenu: CacTableFormMenuComponent; menuTriggerAddButton?: MatMenuTrigger; printableTable: CacPrintableTableComponent; tableElement: ElementRef<HTMLElement>; actionCol: CacTableColActionComponent; rawOptions: TableClass<T> | TableOptions<T>; add: EventEmitter<TableButtonEvent>; clickRow: EventEmitter<T>; export: EventEmitter<TableExportOutput>; private _sessionSubs; private _eventSub?; private _printSub?; private _exportSub?; private _fetchSub?; private _refreshTrigger$; private _dataSource$; private _class?; protected trackByProp: (index: number, item: TableColumnData<any>) => string; protected trackByItem: TrackByFunction<any>; protected isFirstLoad: import("@angular/core").WritableSignal<boolean>; dataSource: CdkTableDataSourceInput<TableRow<T> | undefined>; tableRawResponse$: BehaviorSubject<any>; options: import("@angular/core").WritableSignal<TableOptions<T>>; totalItems: import("@angular/core").WritableSignal<number>; lastRequestOptions: import("@angular/core").WritableSignal<DataGetRequest | undefined>; loading: import("@angular/core").WritableSignal<boolean>; initialized: import("@angular/core").WritableSignal<boolean>; hiddenColsArray: import("@angular/core").WritableSignal<(keyof T)[]>; highlightedRowsArray: import("@angular/core").WritableSignal<(string | number)[]>; paginationOptions: import("@angular/core").Signal<TablePagination | undefined>; hiddenCols: import("@angular/core").Signal<{ [key in keyof T]: boolean; }>; highlightedRows: import("@angular/core").Signal<{ [key: string]: boolean; [key: number]: boolean; }>; columns: import("@angular/core").Signal<TableColumnData<T>[]>; actions: import("@angular/core").Signal<TableAction<T>[]>; bulkActions: import("@angular/core").Signal<ItemRecord<TableBulkAction<T>, unknown>[]>; isActionHidden: import("@angular/core").Signal<boolean>; hasFilter: import("@angular/core").Signal<boolean>; columnsLabels: import("@angular/core").Signal<string[]>; constructor(); ngOnInit(): void; ngOnChanges(changes: SimpleChanges): void; ngAfterViewInit(): void; ngAfterContentInit(): void; ngOnDestroy(): void; print(): Observable<null>; getCurrentItems(): TableRow<T>[] | undefined; getCurrentItems$(): BehaviorSubject<TableRow<T>[] | undefined>; scrollToRowById(id: number | string | undefined): void; scrollToRowByIndex(index: number): void; setHighlighted(...ids: (string | number | undefined)[]): void; clearHighlights(): void; refresh(): void; hide(...keys: (keyof T)[]): void; show(...keys: (keyof T)[]): void; setHidden(state: boolean, ...cols: (keyof T)[]): void; getRowsElementList(): HTMLTableRowElement[]; getItem(id: number | string): TableRow<T> | null | undefined; mutateItem(id: number | string, newData: Partial<T>): void; setOptions(): void; protected onAction(item: TableRow<T>, action: TableAction<T>, trigger: MatMenuTrigger, e?: ButtonClickEvent): void; protected onBulkActionApply(bulkAction: any, e: ButtonClickEvent): void; protected onAdd(e: ButtonClickEvent): void; protected onRowClick(row: T): void; protected onExport(e: ButtonClickEvent): void; protected onPaginate(): void; protected onSort(): void; protected onFilter(): void; protected onPrint(e: ButtonClickEvent): void; protected onRefresh(): void; protected onHeaderSelection(checked: boolean): void; protected onItemSelection(item: T, checked: boolean): void; private invokeAdapter; private mapResponseToItems; private mapItemToCol; private mapItemToRow; private _refresh; private actionAutoPermissionize; private getPropertyValue; private transformValue; private isValueTrue; private isValueEmpty; private colToTransformFn; private createTableStateParam; private createTableMenuParam; private createTableDialogParam; private subscribeToEventResult; static ɵfac: i0.ɵɵFactoryDeclaration<CacTableComponent<any>, never>; static ɵcmp: i0.ɵɵComponentDeclaration<CacTableComponent<any>, "cac-table", never, { "rawOptions": { "alias": "options"; "required": false; }; }, { "add": "add"; "clickRow": "clickRow"; "export": "export"; }, never, ["[slot=header-start]", "[slot=header]", "[slot=footer]"], true, never>; } export {};