angular-slickgrid
Version:
Slickgrid components made available in Angular
210 lines (209 loc) • 13.2 kB
TypeScript
import { AfterViewInit, ApplicationRef, ChangeDetectorRef, ElementRef, EventEmitter, OnDestroy, TemplateRef } from '@angular/core';
import { BackendService, BackendServiceApi, BasePaginationComponent, Column, EventSubscription, ExternalResource, Locale, Metrics, Pagination, PaginationMetadata, RxJsFacade, SlickDataView, SlickEventHandler, SlickGrid } from '@slickgrid-universal/common';
import { ExtensionUtility, SlickGroupItemMetadataProvider, BackendUtilityService, CollectionService, ExtensionService, FilterFactory, FilterService, GridEventService, GridService, GridStateService, HeaderGroupingService, PaginationService, ResizerService, SharedService, SortService, TreeDataService } from '@slickgrid-universal/common';
import { EventPubSubService } from '@slickgrid-universal/event-pub-sub';
import { SlickEmptyWarningComponent } from '@slickgrid-universal/empty-warning-component';
import { SlickFooterComponent } from '@slickgrid-universal/custom-footer-component';
import { TranslateService } from '@ngx-translate/core';
import type { AngularGridInstance, ExternalTestingDependencies, GridOption } from './../models/index';
import { TranslaterService } from '../services/translater.service';
import { AngularUtilService } from '../services/angularUtil.service';
import { SlickRowDetailView } from '../extensions/slickRowDetailView';
import { ContainerService } from '../services/container.service';
import * as i0 from "@angular/core";
export declare class AngularSlickgridComponent<TData = any> implements AfterViewInit, OnDestroy {
protected readonly angularUtilService: AngularUtilService;
protected readonly appRef: ApplicationRef;
protected readonly cd: ChangeDetectorRef;
protected readonly containerService: ContainerService;
protected readonly elm: ElementRef;
protected readonly translate: TranslateService;
protected readonly translaterService: TranslaterService;
protected forRootConfig: GridOption;
protected _dataset?: TData[] | null;
protected _columnDefinitions: Column[];
protected _currentDatasetLength: number;
protected _darkMode: boolean;
protected _eventHandler: SlickEventHandler;
protected _eventPubSubService: EventPubSubService;
protected _angularGridInstances: AngularGridInstance | undefined;
protected _hideHeaderRowAfterPageLoad: boolean;
protected _isAutosizeColsCalled: boolean;
protected _isGridInitialized: boolean;
protected _isDatasetInitialized: boolean;
protected _isDatasetHierarchicalInitialized: boolean;
protected _isPaginationInitialized: boolean;
protected _isLocalGrid: boolean;
protected _paginationOptions: Pagination | undefined;
protected _registeredResources: ExternalResource[];
protected _scrollEndCalled: boolean;
dataView: SlickDataView;
slickGrid: SlickGrid;
groupingDefinition: any;
groupItemMetadataProvider?: SlickGroupItemMetadataProvider;
backendServiceApi?: BackendServiceApi;
locales: Locale;
metrics?: Metrics;
showPagination: boolean;
serviceList: any[];
totalItems: number;
paginationData?: {
gridOptions: GridOption;
paginationService: PaginationService;
};
subscriptions: EventSubscription[];
slickEmptyWarning?: SlickEmptyWarningComponent;
slickFooter?: SlickFooterComponent;
slickPagination?: BasePaginationComponent;
paginationComponent: BasePaginationComponent | undefined;
slickRowDetailView?: SlickRowDetailView;
backendUtilityService: BackendUtilityService;
collectionService: CollectionService;
extensionService: ExtensionService;
extensionUtility: ExtensionUtility;
filterFactory: FilterFactory;
filterService: FilterService;
gridEventService: GridEventService;
gridService: GridService;
gridStateService: GridStateService;
headerGroupingService: HeaderGroupingService;
paginationService: PaginationService;
resizerService: ResizerService;
rxjs?: RxJsFacade;
sharedService: SharedService;
sortService: SortService;
treeDataService: TreeDataService;
customDataView: any;
gridId: string;
gridOptions: GridOption;
get paginationOptions(): Pagination | undefined;
set paginationOptions(newPaginationOptions: Pagination | undefined);
get columnDefinitions(): Column[];
set columnDefinitions(columnDefinitions: Column[]);
columnDefinitionsChange: EventEmitter<any>;
get dataset(): any[];
set dataset(newDataset: any[]);
get datasetHierarchical(): any[] | undefined;
set datasetHierarchical(newHierarchicalDataset: any[] | undefined);
get elementRef(): ElementRef;
get backendService(): BackendService | undefined;
get eventHandler(): SlickEventHandler;
get gridContainerElement(): HTMLElement | null;
/** GETTER to know if dataset was initialized or not */
get isDatasetInitialized(): boolean;
/** SETTER to change if dataset was initialized or not (stringly used for unit testing purposes) */
set isDatasetInitialized(isInitialized: boolean);
set isDatasetHierarchicalInitialized(isInitialized: boolean);
get registeredResources(): ExternalResource[];
slickgridHeader?: TemplateRef<any>;
slickgridFooter?: TemplateRef<any>;
constructor(angularUtilService: AngularUtilService, appRef: ApplicationRef, cd: ChangeDetectorRef, containerService: ContainerService, elm: ElementRef, translate: TranslateService, translaterService: TranslaterService, forRootConfig: GridOption, externalServices: ExternalTestingDependencies);
ngAfterViewInit(): void;
ngOnDestroy(): void;
destroy(shouldEmptyDomElementContainer?: boolean): void;
disposeExternalResources(): void;
emptyGridContainerElm(): void;
/**
* Define our internal Post Process callback, it will execute internally after we get back result from the Process backend call
* Currently ONLY available with the GraphQL Backend Service.
* The behavior is to refresh the Dataset & Pagination without requiring the user to create his own PostProcess every time
*/
createBackendApiInternalPostProcessCallback(gridOptions: GridOption): void;
initialization(eventHandler: SlickEventHandler): void;
/**
* On a Pagination changed, we will trigger a Grid State changed with the new pagination info
* Also if we use Row Selection or the Checkbox Selector with a Backend Service (Odata, GraphQL), we need to reset any selection
*/
paginationChanged(pagination: PaginationMetadata): void;
/**
* When dataset changes, we need to refresh the entire grid UI & possibly resize it as well
* @param dataset
*/
refreshGridData(dataset: any[], totalCount?: number): void;
setData(data: TData[], shouldAutosizeColumns?: boolean): void;
/**
* Check if there's any Pagination Presets defined in the Grid Options,
* if there are then load them in the paginationOptions object
*/
protected setPaginationOptionsWhenPresetDefined(gridOptions: GridOption, paginationOptions: Pagination): Pagination;
setDarkMode(dark?: boolean): void;
/**
* Dynamically change or update the column definitions list.
* We will re-render the grid so that the new header and data shows up correctly.
* If using i18n, we also need to trigger a re-translate of the column headers
*/
updateColumnDefinitionsList(newColumnDefinitions: Column[]): void;
/**
* Show the filter row displayed on first row, we can optionally pass false to hide it.
* @param showing
*/
showHeaderRow(showing?: boolean): boolean;
/**
* Toggle the empty data warning message visibility.
* @param showWarning
*/
displayEmptyDataWarning(showWarning?: boolean): void;
/**
* Loop through all column definitions and copy the original optional `width` properties optionally provided by the user.
* We will use this when doing a resize by cell content, if user provided a `width` it won't override it.
*/
protected copyColumnWidthsReference(columnDefinitions: Column[]): void;
protected bindDifferentHooks(grid: SlickGrid, gridOptions: GridOption, dataView: SlickDataView): void;
protected bindBackendCallbackFunctions(gridOptions: GridOption): void;
protected addBackendInfiniteScrollCallback(): void;
protected bindResizeHook(grid: SlickGrid, options: GridOption): void;
protected executeAfterDataviewCreated(_grid: SlickGrid, gridOptions: GridOption): void;
/** When data changes in the DataView, we'll refresh the metrics and/or display a warning if the dataset is empty */
protected handleOnItemCountChanged(currentPageRowItemCount: number, totalItemCount: number): void;
protected initializePaginationService(paginationOptions: Pagination): void;
/** Load the Editor Collection asynchronously and replace the "collection" property when Observable resolves */
protected loadEditorCollectionAsync(column: Column): void;
protected insertDynamicPresetColumns(columnId: string, gridPresetColumns: Column[]): void;
/** Load any possible Columns Grid Presets */
protected loadColumnPresetsWhenDatasetInitialized(): void;
/** Load any possible Filters Grid Presets */
protected loadFilterPresetsWhenDatasetInitialized(): void;
/**
* local grid, check if we need to show the Pagination
* if so then also check if there's any presets and finally initialize the PaginationService
* a local grid with Pagination presets will potentially have a different total of items, we'll need to get it from the DataView and update our total
*/
protected loadLocalGridPagination(dataset?: any[]): void;
/** Load any Row Selections into the DataView that were presets by the user */
protected loadRowSelectionPresetWhenExists(): void;
hasBackendInfiniteScroll(gridOptions?: GridOption): boolean;
protected mergeGridOptions(gridOptions: GridOption): GridOption;
/** Add a register of a new external resource, user could also optional dispose all previous resources before pushing any new resources to the resources array list. */
registerExternalResources(resources: ExternalResource[], disposePreviousResources?: boolean): void;
resetExternalResources(): void;
/** Pre-Register any Resource that don't require SlickGrid to be instantiated (for example RxJS Resource & RowDetail) */
protected preRegisterResources(): void;
protected initializeExternalResources(resources: ExternalResource[]): void;
protected registerResources(): void;
/** Register the RxJS Resource in all necessary services which uses */
protected registerRxJsResource(resource: RxJsFacade): void;
/**
* Render (or dispose) the Pagination Component, user can optionally provide False (to not show it) which will in term dispose of the Pagination,
* also while disposing we can choose to omit the disposable of the Pagination Service (if we are simply toggling the Pagination, we want to keep the Service alive)
* @param {Boolean} showPagination - show (new render) or not (dispose) the Pagination
* @param {Boolean} shouldDisposePaginationService - when disposing the Pagination, do we also want to dispose of the Pagination Service? (defaults to True)
*/
protected renderPagination(showPagination?: boolean): void;
/**
* Takes a flat dataset with parent/child relationship, sort it (via its tree structure) and return the sorted flat array
* @param {Array<Object>} flatDatasetInput - flat dataset input
* @param {Boolean} forceGridRefresh - optionally force a full grid refresh
* @returns {Array<Object>} sort flat parent/child dataset
*/
protected sortTreeDataset<T>(flatDatasetInput: T[], forceGridRefresh?: boolean): T[];
/** Prepare and load all SlickGrid editors, if an async editor is found then we'll also execute it. */
protected loadSlickGridEditors(columnDefinitions: Column<TData>[]): Column<TData>[];
protected suggestDateParsingWhenHelpful(): void;
/**
* When the Editor(s) has a "editor.collection" property, we'll load the async collection.
* Since this is called after the async call resolves, the pointer will not be the same as the "column" argument passed.
*/
protected updateEditorCollection<T = any>(column: Column<T>, newCollection: T[]): void;
static ɵfac: i0.ɵɵFactoryDeclaration<AngularSlickgridComponent<any>, [null, null, null, null, null, { optional: true; }, { optional: true; }, null, null]>;
static ɵcmp: i0.ɵɵComponentDeclaration<AngularSlickgridComponent<any>, "angular-slickgrid", never, { "customDataView": { "alias": "customDataView"; "required": false; }; "gridId": { "alias": "gridId"; "required": false; }; "gridOptions": { "alias": "gridOptions"; "required": false; }; "paginationOptions": { "alias": "paginationOptions"; "required": false; }; "columnDefinitions": { "alias": "columnDefinitions"; "required": false; }; "dataset": { "alias": "dataset"; "required": false; }; "datasetHierarchical": { "alias": "datasetHierarchical"; "required": false; }; }, { "columnDefinitionsChange": "columnDefinitionsChange"; }, ["slickgridHeader", "slickgridFooter"], never, false, never>;
}