UNPKG

@cauca-911/datagrid

Version:

Run `npm install @cauca-911/datagrid --save` to add this library to your project

400 lines (376 loc) 24 kB
import * as i0 from '@angular/core'; import { OnDestroy, OnInit, EventEmitter, AfterContentInit, OnChanges, QueryList, SimpleChanges, TemplateRef, ModelSignal, InputSignal, Provider, EnvironmentProviders } from '@angular/core'; import { MatTable, MatColumnDef, MatCellDef, MatHeaderCellDef, MatFooterCellDef, MatHeaderRowDef, MatFooterRowDef, MatRowDef, MatNoDataRow, MatTableDataSource } from '@angular/material/table'; import { CdkDragDrop } from '@angular/cdk/drag-drop'; import { MatPaginator } from '@angular/material/paginator'; import { FormControl } from '@angular/forms'; import { Subject, BehaviorSubject, Observable } from 'rxjs'; import { MatSort } from '@angular/material/sort'; import { TranslateService } from '@ngx-translate/core'; import { ODataDataSource, ODataFilter } from 'odata-data-source'; import { TranslateService as TranslateService$1 } from '@cauca-911/core'; import { HttpClient } from '@angular/common/http'; declare class DataGridRowDropEvent { item: unknown; data: unknown[]; fromIndex: number; toIndex: number; constructor(data: { item: unknown; data: unknown[]; fromIndex: number; toIndex: number; }); } declare abstract class BaseGridColumnComponent implements OnDestroy, OnInit { table: MatTable<unknown>; prop: string; showLabel: boolean; label: string | undefined; isInColumnChooser: boolean; width: string; showToolTip: boolean; ariaHidden: true; classes: 'column-template cdk-visually-hidden'; columnDef: MatColumnDef; cellDef: MatCellDef; headerCellDef: MatHeaderCellDef; footerCellDef: MatFooterCellDef; selected: boolean; constructor(table: MatTable<unknown>); ngOnInit(): void; ngOnDestroy(): void; capitalize(value: string): string; static ɵfac: i0.ɵɵFactoryDeclaration<BaseGridColumnComponent, [{ optional: true; }]>; static ɵcmp: i0.ɵɵComponentDeclaration<BaseGridColumnComponent, "ng-component", never, { "prop": { "alias": "prop"; "required": false; }; "showLabel": { "alias": "showLabel"; "required": false; }; "label": { "alias": "label"; "required": false; }; "isInColumnChooser": { "alias": "isInColumnChooser"; "required": false; }; "width": { "alias": "width"; "required": false; }; "showToolTip": { "alias": "showToolTip"; "required": false; }; }, {}, never, never, true, never>; } declare class DataGridHeaderComponent implements OnInit, OnDestroy { filterControl: FormControl<string>; showClearButton: boolean; showAddButton: boolean; showRefreshButton: boolean; addButtonLabel: string; filterChange: EventEmitter<string>; addButtonClick: EventEmitter<void>; refreshRequest: EventEmitter<void>; protected _onDestroy: Subject<void>; ngOnInit(): void; ngOnDestroy(): void; onRefresh(): void; clearSearchValue(): void; onAddButtonClick(): void; static ɵfac: i0.ɵɵFactoryDeclaration<DataGridHeaderComponent, never>; static ɵcmp: i0.ɵɵComponentDeclaration<DataGridHeaderComponent, "cauca-data-grid-header", never, { "showAddButton": { "alias": "showAddButton"; "required": false; }; "showRefreshButton": { "alias": "showRefreshButton"; "required": false; }; "addButtonLabel": { "alias": "addButtonLabel"; "required": false; }; }, { "filterChange": "filterChange"; "addButtonClick": "addButtonClick"; "refreshRequest": "refreshRequest"; }, never, ["[filterRow]"], true, never>; } declare enum Density { Compact = "compact", Standard = "standard", Comfortable = "comfortable" } declare class Preference { gridDensity: Density; } declare class GridConfiguration { name: string; visibleColumns: string[]; } declare class PreferenceService { preference: BehaviorSubject<Preference>; gridConfiguration: GridConfiguration[]; constructor(); getPreference(): Preference; setPreferenceDensity(density: Density): void; addOrUpdatePreference(): void; getPreferenceForGrid(gridName: string): Observable<GridConfiguration>; addOrUpdateGridPreference(gridName: string, visibleColumns: string[]): Observable<void>; private getPreferenceForGridNotObservable; static ɵfac: i0.ɵɵFactoryDeclaration<PreferenceService, never>; static ɵprov: i0.ɵɵInjectableDeclaration<PreferenceService>; } declare abstract class BaseDataGridComponent implements AfterContentInit, OnChanges { private readonly preferenceService; resourceName: string; displayedColumns: string[]; showAddButton: boolean; addButtonLabel: string; searchableColumns: string[]; showTableOptions: boolean; showColumnViewer: boolean; addButtonClick: EventEmitter<void>; showPaginator: i0.InputSignal<boolean>; hidePageSize: i0.InputSignal<boolean>; showExpandButton: i0.InputSignal<boolean>; expandedElement: i0.WritableSignal<any>; header: DataGridHeaderComponent; table: MatTable<unknown>; regularColumns: QueryList<BaseGridColumnComponent>; columnDefs: QueryList<MatColumnDef>; headerRowDef: QueryList<MatHeaderRowDef>; footerRowDef: QueryList<MatFooterRowDef>; rowDefs: QueryList<MatRowDef<unknown>>; noDataRow: MatNoDataRow; paginator: MatPaginator; defaultAddButtonLabel: string; allDisplayedColumns: i0.WritableSignal<string[]>; preference: Preference; protected sort: MatSort; get density(): typeof Density; constructor(translateService: TranslateService, preferenceService: PreferenceService); ngAfterContentInit(): void; ngOnChanges(changes: SimpleChanges): void; onExpand(element: any): void; clearFilter(): void; renderRows(): void; onDensityChanged(density: Density): void; abstract getData(): unknown[]; protected abstract setUpFilterPredicate(): void; protected abstract setUpSort(sort: MatSort): void; protected abstract forceReloadFilter(): void; protected abstract updateDataWhenNeeded(changes: SimpleChanges): void; protected abstract showColumnsWhenTableOptionsIsFalse(): void; protected setUpPaginator(_paginator: MatPaginator, _showPaginator: boolean): void; protected onColumnsChanged(columns: string[]): void; protected applyColumns(): void; protected updateColumnsWhenNeeded(changes: SimpleChanges): void; private removeMandatoryColumns; static ɵfac: i0.ɵɵFactoryDeclaration<BaseDataGridComponent, never>; static ɵcmp: i0.ɵɵComponentDeclaration<BaseDataGridComponent, "ng-component", never, { "resourceName": { "alias": "resourceName"; "required": true; }; "displayedColumns": { "alias": "displayedColumns"; "required": false; }; "showAddButton": { "alias": "showAddButton"; "required": false; }; "addButtonLabel": { "alias": "addButtonLabel"; "required": false; }; "searchableColumns": { "alias": "searchableColumns"; "required": false; }; "showTableOptions": { "alias": "showTableOptions"; "required": false; }; "showColumnViewer": { "alias": "showColumnViewer"; "required": false; }; "showPaginator": { "alias": "showPaginator"; "required": false; "isSignal": true; }; "hidePageSize": { "alias": "hidePageSize"; "required": false; "isSignal": true; }; "showExpandButton": { "alias": "showExpandButton"; "required": false; "isSignal": true; }; }, { "addButtonClick": "addButtonClick"; }, ["headerRowDef", "footerRowDef", "noDataRow", "regularColumns", "columnDefs", "rowDefs"], never, true, never>; } declare class DataGridComponent extends BaseDataGridComponent implements OnChanges, AfterContentInit { data: any[]; showLoadingError: boolean; isLoading: boolean; allowReordering: boolean; searchableColumns: string[]; filterPredicate: (data: unknown, filter: string) => boolean; rowDrop: EventEmitter<DataGridRowDropEvent>; rowDetailTemplate: TemplateRef<any>; showPaginator: i0.InputSignal<boolean>; showFooter: i0.InputSignal<boolean>; showHeader: i0.InputSignal<boolean>; headerColor: i0.InputSignal<string>; showRefreshButton: i0.InputSignal<boolean>; refreshData: i0.OutputEmitterRef<void>; dataSource: MatTableDataSource<unknown[]>; dragDisabled: boolean; currentFilter: string; constructor(translateService: TranslateService, preferenceService: PreferenceService); onRefreshData(): void; applyFilter(filter: string): void; setUpSort(sort: MatSort): void; getData(): unknown[]; getFilteredData(): unknown[]; refreshDisplayedColumns(columns: string[]): void; rowDropped(event: CdkDragDrop<unknown>): void; protected setUpPaginator(paginator: MatPaginator, showPaginator: boolean): void; protected showColumnsWhenTableOptionsIsFalse(): void; protected updateColumnsWhenNeeded(changes: SimpleChanges): void; protected onColumnsChanged(columns: string[]): void; protected setUpFilterPredicate(): void; protected forceReloadFilter(): void; protected updateDataWhenNeeded(changes: SimpleChanges): void; private setData; static ɵfac: i0.ɵɵFactoryDeclaration<DataGridComponent, never>; static ɵcmp: i0.ɵɵComponentDeclaration<DataGridComponent, "cauca-data-grid", never, { "data": { "alias": "data"; "required": false; }; "showLoadingError": { "alias": "showLoadingError"; "required": false; }; "isLoading": { "alias": "isLoading"; "required": false; }; "allowReordering": { "alias": "allowReordering"; "required": false; }; "searchableColumns": { "alias": "searchableColumns"; "required": false; }; "filterPredicate": { "alias": "filterPredicate"; "required": false; }; "showPaginator": { "alias": "showPaginator"; "required": false; "isSignal": true; }; "showFooter": { "alias": "showFooter"; "required": false; "isSignal": true; }; "showHeader": { "alias": "showHeader"; "required": false; "isSignal": true; }; "headerColor": { "alias": "headerColor"; "required": false; "isSignal": true; }; "showRefreshButton": { "alias": "showRefreshButton"; "required": false; "isSignal": true; }; }, { "rowDrop": "rowDrop"; "refreshData": "refreshData"; }, ["rowDetailTemplate"], ["[filterRow]", "[customFilter]", "*"], true, never>; } interface Paginator { pageIndex: number; pageSize: number; length: number; page: EventEmitter<any>; } interface SingleSort { active: string; direction: 'asc' | 'desc' | ''; sortChange: EventEmitter<any>; } interface MultiSort { sortedBy: { id: string; direction: 'asc' | 'desc'; }[]; multiSortChange: EventEmitter<any>; } type Sort = SingleSort | MultiSort; interface Props { baseUrl: string; resourceName: string; paginator: Paginator; sort?: Sort; initialSort?: string[]; filters: ODataFilter[]; } declare class OdataListingService<T = any> { private readonly httpClient; dataSource: ODataDataSource | null; error: i0.WritableSignal<boolean>; loading: i0.WritableSignal<boolean>; private errorSubscription; private loadingSubscription; get data(): T[] | null; constructor(httpClient: HttpClient); initialize({ baseUrl, resourceName, paginator, sort, initialSort, filters }: Props): ODataDataSource; updateFilters(filters: ODataFilter[]): void; forceReloadFilter(): void; isInitialized(): boolean; refresh(): void; destroy(): void; static ɵfac: i0.ɵɵFactoryDeclaration<OdataListingService<any>, never>; static ɵprov: i0.ɵɵInjectableDeclaration<OdataListingService<any>>; } declare class OdataGridComponent extends BaseDataGridComponent implements OnChanges, OnDestroy { readonly listing: OdataListingService; showTableHeader: i0.InputSignal<boolean>; baseSort?: string[]; filterPredicate?: (filter: string) => ODataFilter[]; showHeader: boolean; selectedRowId: any; idField: string; itemClick: EventEmitter<any>; refreshRequested: EventEmitter<void>; showRefreshButton: boolean; rowDetailTemplate: TemplateRef<any>; paginator: MatPaginator; private readonly baseUrl; constructor(translateService: TranslateService$1, preferenceService: PreferenceService, listing: OdataListingService); ngOnDestroy(): void; refreshData(): void; ngOnChanges(changes: SimpleChanges): void; getData(): unknown[]; applyFilter(filter: string): void; refreshFilter(): void; setUpFilterPredicate(): void; setUpSort(sort: MatSort): void; protected updateColumnsWhenNeeded(changes: SimpleChanges): void; protected forceReloadFilter(): void; protected updateDataWhenNeeded(_changes: SimpleChanges): void; protected onColumnsChanged(columns: string[]): void; protected showColumnsWhenTableOptionsIsFalse(): void; static ɵfac: i0.ɵɵFactoryDeclaration<OdataGridComponent, never>; static ɵcmp: i0.ɵɵComponentDeclaration<OdataGridComponent, "cauca-odata-grid", never, { "showTableHeader": { "alias": "showTableHeader"; "required": false; "isSignal": true; }; "baseSort": { "alias": "baseSort"; "required": false; }; "filterPredicate": { "alias": "filterPredicate"; "required": false; }; "showHeader": { "alias": "showHeader"; "required": false; }; "selectedRowId": { "alias": "selectedRowId"; "required": false; }; "idField": { "alias": "idField"; "required": false; }; "showRefreshButton": { "alias": "showRefreshButton"; "required": false; }; }, { "itemClick": "itemClick"; "refreshRequested": "refreshRequested"; }, ["rowDetailTemplate"], ["[filterRow]", "[customHeader]", "[customFilter]", "*"], true, never>; } declare class ColorDataGridColumnComponent extends BaseGridColumnComponent implements OnDestroy, OnInit { readonly odata: OdataGridComponent; readonly grid: DataGridComponent; constructor(odata: OdataGridComponent, grid: DataGridComponent); static ɵfac: i0.ɵɵFactoryDeclaration<ColorDataGridColumnComponent, [{ optional: true; }, { optional: true; }]>; static ɵcmp: i0.ɵɵComponentDeclaration<ColorDataGridColumnComponent, "cauca-color-data-grid-column", never, {}, {}, never, never, true, never>; } declare class DataGridCheckColumnComponent extends BaseGridColumnComponent implements OnDestroy, OnInit { readonly odata: OdataGridComponent; readonly grid: DataGridComponent; checkIcon: string; uncheckIcon: string; constructor(odata: OdataGridComponent, grid: DataGridComponent); static ɵfac: i0.ɵɵFactoryDeclaration<DataGridCheckColumnComponent, [{ optional: true; }, { optional: true; }]>; static ɵcmp: i0.ɵɵComponentDeclaration<DataGridCheckColumnComponent, "cauca-data-grid-check-column", never, { "checkIcon": { "alias": "checkIcon"; "required": false; }; "uncheckIcon": { "alias": "uncheckIcon"; "required": false; }; }, {}, never, never, true, never>; } declare class DataGridColumnComponent extends BaseGridColumnComponent implements OnDestroy, OnInit { showToolTip: boolean; summaryType: i0.InputSignal<"none" | "sum" | "count">; summaryLabel: i0.InputSignal<string>; format: i0.InputSignal<"none" | "phone">; isInitialized: boolean; private readonly grid; constructor(odata: OdataGridComponent, grid: DataGridComponent); calculateSummary(): string; static ɵfac: i0.ɵɵFactoryDeclaration<DataGridColumnComponent, [{ optional: true; }, { optional: true; }]>; static ɵcmp: i0.ɵɵComponentDeclaration<DataGridColumnComponent, "cauca-data-grid-column", never, { "showToolTip": { "alias": "showToolTip"; "required": false; }; "summaryType": { "alias": "summaryType"; "required": false; "isSignal": true; }; "summaryLabel": { "alias": "summaryLabel"; "required": false; "isSignal": true; }; "format": { "alias": "format"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>; } declare class DataGridCommandIconColumnComponent extends BaseGridColumnComponent implements OnDestroy, OnInit { readonly odata: OdataGridComponent; readonly grid: DataGridComponent; checkColor: string; checkIcon: string; uncheckIcon: string; uncheckColor: string; commandClick: EventEmitter<unknown>; constructor(odata: OdataGridComponent, grid: DataGridComponent); static ɵfac: i0.ɵɵFactoryDeclaration<DataGridCommandIconColumnComponent, [{ optional: true; }, { optional: true; }]>; static ɵcmp: i0.ɵɵComponentDeclaration<DataGridCommandIconColumnComponent, "cauca-data-grid-command-icon-column", never, { "checkColor": { "alias": "checkColor"; "required": false; }; "checkIcon": { "alias": "checkIcon"; "required": false; }; "uncheckIcon": { "alias": "uncheckIcon"; "required": false; }; "uncheckColor": { "alias": "uncheckColor"; "required": false; }; }, { "commandClick": "commandClick"; }, never, never, true, never>; } declare class DataGridCommandsColumnComponent extends BaseGridColumnComponent implements OnDestroy, OnInit { readonly odata: OdataGridComponent; readonly grid: DataGridComponent; canDelete: boolean; canEdit: boolean; canDuplicate: boolean; editLinkField: string; menuTemplate: TemplateRef<any>; deleteClick: EventEmitter<unknown>; editClick: EventEmitter<unknown>; duplicateClick: EventEmitter<unknown>; constructor(odata: OdataGridComponent, grid: DataGridComponent); static ɵfac: i0.ɵɵFactoryDeclaration<DataGridCommandsColumnComponent, [{ optional: true; }, { optional: true; }]>; static ɵcmp: i0.ɵɵComponentDeclaration<DataGridCommandsColumnComponent, "cauca-data-grid-commands-column", never, { "canDelete": { "alias": "canDelete"; "required": false; }; "canEdit": { "alias": "canEdit"; "required": false; }; "canDuplicate": { "alias": "canDuplicate"; "required": false; }; "editLinkField": { "alias": "editLinkField"; "required": false; }; }, { "deleteClick": "deleteClick"; "editClick": "editClick"; "duplicateClick": "duplicateClick"; }, ["menuTemplate"], never, true, never>; } declare class DataGridIconColumnComponent extends BaseGridColumnComponent implements OnDestroy, OnInit { readonly odata: OdataGridComponent; readonly grid: DataGridComponent; alignRight: boolean; useMatIcon: boolean; icon: string; constructor(odata: OdataGridComponent, grid: DataGridComponent); static ɵfac: i0.ɵɵFactoryDeclaration<DataGridIconColumnComponent, [{ optional: true; }, { optional: true; }]>; static ɵcmp: i0.ɵɵComponentDeclaration<DataGridIconColumnComponent, "cauca-data-grid-icon-column", never, { "alignRight": { "alias": "alignRight"; "required": false; }; "useMatIcon": { "alias": "useMatIcon"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; }, {}, never, never, true, never>; } declare class DataGridMenuColumnComponent extends BaseGridColumnComponent implements OnDestroy, OnInit { readonly odata: OdataGridComponent; readonly grid: DataGridComponent; canDelete: ModelSignal<boolean>; canDeleteByRow: (row: any) => boolean; canEdit: InputSignal<boolean>; canDuplicate: ModelSignal<boolean>; canDuplicateByRow: (row: any) => boolean; editLinkField: InputSignal<string>; duplicateLinkField: InputSignal<string>; menuTemplate: TemplateRef<any>; deleteClick: i0.OutputEmitterRef<unknown>; editClick: i0.OutputEmitterRef<unknown>; duplicateClick: i0.OutputEmitterRef<unknown>; constructor(odata: OdataGridComponent, grid: DataGridComponent); menuOpened(row: any): void; static ɵfac: i0.ɵɵFactoryDeclaration<DataGridMenuColumnComponent, [{ optional: true; }, { optional: true; }]>; static ɵcmp: i0.ɵɵComponentDeclaration<DataGridMenuColumnComponent, "cauca-data-grid-menu-column", never, { "canDelete": { "alias": "canDelete"; "required": false; "isSignal": true; }; "canDeleteByRow": { "alias": "canDeleteByRow"; "required": false; }; "canEdit": { "alias": "canEdit"; "required": false; "isSignal": true; }; "canDuplicate": { "alias": "canDuplicate"; "required": false; "isSignal": true; }; "canDuplicateByRow": { "alias": "canDuplicateByRow"; "required": false; }; "editLinkField": { "alias": "editLinkField"; "required": false; "isSignal": true; }; "duplicateLinkField": { "alias": "duplicateLinkField"; "required": false; "isSignal": true; }; }, { "canDelete": "canDeleteChange"; "canDuplicate": "canDuplicateChange"; "deleteClick": "deleteClick"; "editClick": "editClick"; "duplicateClick": "duplicateClick"; }, ["menuTemplate"], never, true, never>; } declare class DateGridColumnComponent extends BaseGridColumnComponent implements OnDestroy, OnInit { readonly odata: OdataGridComponent; readonly grid: DataGridComponent; showWithTime: boolean; maxDate: i0.InputSignal<Date>; minDate: i0.InputSignal<Date>; constructor(odata: OdataGridComponent, grid: DataGridComponent); static ɵfac: i0.ɵɵFactoryDeclaration<DateGridColumnComponent, [{ optional: true; }, { optional: true; }]>; static ɵcmp: i0.ɵɵComponentDeclaration<DateGridColumnComponent, "cauca-date-grid-column", never, { "showWithTime": { "alias": "showWithTime"; "required": false; }; "maxDate": { "alias": "maxDate"; "required": false; "isSignal": true; }; "minDate": { "alias": "minDate"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>; } declare class SortableDataGridCheckColumnComponent extends BaseGridColumnComponent implements OnDestroy, OnInit { readonly odata: OdataGridComponent; readonly grid: DataGridComponent; checkIcon: string; uncheckIcon: string; constructor(odata: OdataGridComponent, grid: DataGridComponent); static ɵfac: i0.ɵɵFactoryDeclaration<SortableDataGridCheckColumnComponent, [{ optional: true; }, { optional: true; }]>; static ɵcmp: i0.ɵɵComponentDeclaration<SortableDataGridCheckColumnComponent, "cauca-sortable-data-grid-check-column", never, { "checkIcon": { "alias": "checkIcon"; "required": false; }; "uncheckIcon": { "alias": "uncheckIcon"; "required": false; }; }, {}, never, never, true, never>; } declare class SortableDataGridColumnComponent extends BaseGridColumnComponent implements OnDestroy, OnInit { showToolTip: boolean; summaryType: i0.InputSignal<"none" | "sum" | "count">; summaryLabel: i0.InputSignal<string>; format: i0.InputSignal<"none" | "phone">; isInitialized: boolean; private readonly grid; constructor(odata: OdataGridComponent, grid: DataGridComponent); calculateSummary(): string; static ɵfac: i0.ɵɵFactoryDeclaration<SortableDataGridColumnComponent, [{ optional: true; }, { optional: true; }]>; static ɵcmp: i0.ɵɵComponentDeclaration<SortableDataGridColumnComponent, "cauca-sortable-data-grid-column", never, { "showToolTip": { "alias": "showToolTip"; "required": false; }; "summaryType": { "alias": "summaryType"; "required": false; "isSignal": true; }; "summaryLabel": { "alias": "summaryLabel"; "required": false; "isSignal": true; }; "format": { "alias": "format"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>; } declare class TranslationGridColumnComponent extends BaseGridColumnComponent implements OnDestroy, OnInit { readonly odata: OdataGridComponent; readonly grid: DataGridComponent; prefix: string; constructor(odata: OdataGridComponent, grid: DataGridComponent); static ɵfac: i0.ɵɵFactoryDeclaration<TranslationGridColumnComponent, [{ optional: true; }, { optional: true; }]>; static ɵcmp: i0.ɵɵComponentDeclaration<TranslationGridColumnComponent, "cauca-translation-grid-column", never, { "prefix": { "alias": "prefix"; "required": false; }; }, {}, never, never, true, never>; } declare function provideCaucaGrid(): (Provider | EnvironmentProviders); export { BaseGridColumnComponent, ColorDataGridColumnComponent, DataGridCheckColumnComponent, DataGridColumnComponent, DataGridCommandIconColumnComponent, DataGridCommandsColumnComponent, DataGridComponent, DataGridIconColumnComponent, DataGridMenuColumnComponent, DateGridColumnComponent, OdataGridComponent, SortableDataGridCheckColumnComponent, SortableDataGridColumnComponent, TranslationGridColumnComponent, provideCaucaGrid };