@controladad/ng-base
Version:
Everything you need for Angular
172 lines (171 loc) • 7.59 kB
TypeScript
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 {};