@anglr/grid
Version:
Angular module displaying grid
121 lines • 4.88 kB
JavaScript
import { Directive, Inject, Input } from '@angular/core';
import { nameof } from '@jscrpt/common';
import { lastValueFrom } from '@jscrpt/common/rxjs';
import { first } from 'rxjs';
import { GRID_INSTANCE } from '../../misc/tokens';
import * as i0 from "@angular/core";
/**
* Directive used for attaching external plugins to grid
*/
export class AttachPluginsDirective {
//######################### constructor #########################
constructor(grid) {
this.grid = grid;
//######################### public properties - inputs #########################
/**
* Object storing external plugins
*/
this.plugins = {};
/**
* Automatically initialize grid after new instances are set
*/
this.autoInitialize = true;
/**
* Indication whether perform force reinitialization
*/
this.forceReinitialization = false;
}
//######################### public methods - implementation of OnChanges #########################
/**
* Called when input value changes
*/
async ngOnChanges(changes) {
if (nameof('plugins') in changes && this.plugins) {
const plugins = {};
if (this.plugins.contentRenderer) {
plugins.contentRenderer =
{
instance: this.plugins.contentRenderer,
type: null,
};
}
if (this.plugins.dataLoader) {
plugins.dataLoader =
{
instance: this.plugins.dataLoader,
type: null,
};
}
if (this.plugins.gridInitializer) {
plugins.gridInitializer =
{
instance: this.plugins.gridInitializer,
type: null,
};
}
if (this.plugins.metadataSelector) {
plugins.metadataSelector =
{
instance: this.plugins.metadataSelector,
type: null,
};
}
if (this.plugins.noDataRenderer) {
plugins.noDataRenderer =
{
instance: this.plugins.noDataRenderer,
type: null,
};
}
if (this.plugins.ordering) {
plugins.ordering =
{
instance: this.plugins.ordering,
type: null,
};
}
if (this.plugins.paging) {
plugins.paging =
{
instance: this.plugins.paging,
type: null,
};
}
if (this.plugins.rowSelector) {
plugins.rowSelector =
{
instance: this.plugins.rowSelector,
type: null,
};
}
this.grid.gridOptions =
{
plugins
};
if (this.autoInitialize) {
await this.grid.initOptions();
await lastValueFrom(this.grid.pluginsOptionsInitialized.pipe(first(init => init)));
await this.grid.initialize(this.forceReinitialization);
}
}
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.0", ngImport: i0, type: AttachPluginsDirective, deps: [{ token: GRID_INSTANCE }], target: i0.ɵɵFactoryTarget.Directive }); }
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.1.0", type: AttachPluginsDirective, isStandalone: true, selector: "ng-grid[attachPlugins], [ngGrid][attachPlugins]", inputs: { plugins: ["attachPlugins", "plugins"], autoInitialize: "autoInitialize", forceReinitialization: "forceReinitialization" }, usesOnChanges: true, ngImport: i0 }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.0", ngImport: i0, type: AttachPluginsDirective, decorators: [{
type: Directive,
args: [{
selector: 'ng-grid[attachPlugins], [ngGrid][attachPlugins]',
}]
}], ctorParameters: () => [{ type: undefined, decorators: [{
type: Inject,
args: [GRID_INSTANCE]
}] }], propDecorators: { plugins: [{
type: Input,
args: ['attachPlugins']
}], autoInitialize: [{
type: Input
}], forceReinitialization: [{
type: Input
}] } });
//# sourceMappingURL=attachPlugins.directive.js.map