@edugouvfr/ngx-dsfr-ext
Version:
NgxDsfrExt est une extension au package @edugouvfr/ngx-dsfr (portage Angular des éléments DSFR)
59 lines • 7.19 kB
JavaScript
import { Directive, EventEmitter, HostListener, Output } from '@angular/core';
import { EMPTY } from 'rxjs';
import * as i0 from "@angular/core";
import * as i1 from "../interfaces/remote-ag-grid-api";
/**
* Directive pour l'implémentation de la pagination coté backend de Ag-grid community
* cf: https://medium.com/weekly-webtips/tech-building-reusable-server-side-pagination-for-ag-grid-in-angular-c8127e2da346
*/
export class EduRemoteAgGridDirective {
constructor(host, zone) {
this.host = host;
this.zone = zone;
this.remoteGridReady = new EventEmitter();
// DOC: https://www.ag-grid.com/javascript-data-grid/infinite-scrolling/#datasource-interface
this.dataSource = {
getRows: (params) => {
this.zone.run(() => {
// force event to run inside angular zone for detection (#fix 31.0.2)
this.host.prepareUpdateData(params);
});
this.host.result$.subscribe({
next: (e) => {
params.successCallback(e.data, e.totalRecords);
},
error: (error) => {
this.handleError(error);
},
});
},
};
}
// https://www.ag-grid.com/angular-data-grid/grid-events/
/**
* Initialisation grid
* @param grid
*/
gridReady(grid) {
grid.api.setGridOption('datasource', this.dataSource);
this.remoteGridReady.emit(grid);
}
handleError(err) {
this.host.getDataError && this.host.getDataError(err);
return EMPTY;
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: EduRemoteAgGridDirective, deps: [{ token: i1.EduRemoteAgGridApi }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive }); }
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: EduRemoteAgGridDirective, selector: "[remoteAgGridBinding]", outputs: { remoteGridReady: "remoteGridReady" }, host: { listeners: { "gridReady": "gridReady($event)" } }, ngImport: i0 }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: EduRemoteAgGridDirective, decorators: [{
type: Directive,
args: [{
selector: '[remoteAgGridBinding]',
}]
}], ctorParameters: () => [{ type: i1.EduRemoteAgGridApi }, { type: i0.NgZone }], propDecorators: { remoteGridReady: [{
type: Output
}], gridReady: [{
type: HostListener,
args: ['gridReady', ['$event']]
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3RlLWFnLWdyaWQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWRzZnItZXh0L2dyaWQvc3JjL2xpYi9kaXJlY3RpdmVzL3JlbW90ZS1hZy1ncmlkLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3RGLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7OztBQUc3Qjs7O0dBR0c7QUFJSCxNQUFNLE9BQU8sd0JBQXdCO0lBc0JuQyxZQUNVLElBQXdCLEVBQ3hCLElBQVk7UUFEWixTQUFJLEdBQUosSUFBSSxDQUFvQjtRQUN4QixTQUFJLEdBQUosSUFBSSxDQUFRO1FBdEJ0QixvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFckMsNkZBQTZGO1FBQzdGLGVBQVUsR0FBZ0I7WUFDeEIsT0FBTyxFQUFFLENBQUMsTUFBc0IsRUFBRSxFQUFFO2dCQUNsQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7b0JBQ2pCLHFFQUFxRTtvQkFDckUsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDdEMsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDO29CQUMxQixJQUFJLEVBQUUsQ0FBQyxDQUF1QixFQUFFLEVBQUU7d0JBQ2hDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUM7b0JBQ2pELENBQUM7b0JBQ0QsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7d0JBQ2YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDMUIsQ0FBQztpQkFDRixDQUFDLENBQUM7WUFDTCxDQUFDO1NBQ0YsQ0FBQztJQUtDLENBQUM7SUFFSix5REFBeUQ7SUFDekQ7OztPQUdHO0lBRUgsU0FBUyxDQUFDLElBQW1CO1FBQzNCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELFdBQVcsQ0FBQyxHQUFRO1FBQ2xCLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3RELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzsrR0F6Q1Usd0JBQXdCO21HQUF4Qix3QkFBd0I7OzRGQUF4Qix3QkFBd0I7a0JBSHBDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHVCQUF1QjtpQkFDbEM7NEdBR0MsZUFBZTtzQkFEZCxNQUFNO2dCQWdDUCxTQUFTO3NCQURSLFlBQVk7dUJBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgTmdab25lLCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFnR3JpZEFuZ3VsYXIgfSBmcm9tICdhZy1ncmlkLWFuZ3VsYXInO1xuaW1wb3J0IHsgSURhdGFzb3VyY2UsIElHZXRSb3dzUGFyYW1zIH0gZnJvbSAnYWctZ3JpZC1jb21tdW5pdHknO1xuaW1wb3J0IHsgRU1QVFkgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IERzZnJSZW1vdGVHcmlkUmVzdWx0LCBFZHVSZW1vdGVBZ0dyaWRBcGkgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3JlbW90ZS1hZy1ncmlkLWFwaSc7XG5cbi8qKlxuICogRGlyZWN0aXZlIHBvdXIgbCdpbXBsw6ltZW50YXRpb24gZGUgbGEgcGFnaW5hdGlvbiBjb3TDqSBiYWNrZW5kIGRlIEFnLWdyaWQgY29tbXVuaXR5XG4gKiBjZjogaHR0cHM6Ly9tZWRpdW0uY29tL3dlZWtseS13ZWJ0aXBzL3RlY2gtYnVpbGRpbmctcmV1c2FibGUtc2VydmVyLXNpZGUtcGFnaW5hdGlvbi1mb3ItYWctZ3JpZC1pbi1hbmd1bGFyLWM4MTI3ZTJkYTM0NlxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbcmVtb3RlQWdHcmlkQmluZGluZ10nLFxufSlcbmV4cG9ydCBjbGFzcyBFZHVSZW1vdGVBZ0dyaWREaXJlY3RpdmUge1xuICBAT3V0cHV0KClcbiAgcmVtb3RlR3JpZFJlYWR5ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8vIERPQzogaHR0cHM6Ly93d3cuYWctZ3JpZC5jb20vamF2YXNjcmlwdC1kYXRhLWdyaWQvaW5maW5pdGUtc2Nyb2xsaW5nLyNkYXRhc291cmNlLWludGVyZmFjZVxuICBkYXRhU291cmNlOiBJRGF0YXNvdXJjZSA9IHtcbiAgICBnZXRSb3dzOiAocGFyYW1zOiBJR2V0Um93c1BhcmFtcykgPT4ge1xuICAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB7XG4gICAgICAgIC8vIGZvcmNlIGV2ZW50IHRvIHJ1biBpbnNpZGUgYW5ndWxhciB6b25lIGZvciBkZXRlY3Rpb24gKCNmaXggMzEuMC4yKVxuICAgICAgICB0aGlzLmhvc3QucHJlcGFyZVVwZGF0ZURhdGEocGFyYW1zKTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5ob3N0LnJlc3VsdCQuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKGU6IERzZnJSZW1vdGVHcmlkUmVzdWx0KSA9PiB7XG4gICAgICAgICAgcGFyYW1zLnN1Y2Nlc3NDYWxsYmFjayhlLmRhdGEsIGUudG90YWxSZWNvcmRzKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xuICAgICAgICAgIHRoaXMuaGFuZGxlRXJyb3IoZXJyb3IpO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSxcbiAgfTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGhvc3Q6IEVkdVJlbW90ZUFnR3JpZEFwaSxcbiAgICBwcml2YXRlIHpvbmU6IE5nWm9uZSxcbiAgKSB7fVxuXG4gIC8vIGh0dHBzOi8vd3d3LmFnLWdyaWQuY29tL2FuZ3VsYXItZGF0YS1ncmlkL2dyaWQtZXZlbnRzL1xuICAvKipcbiAgICogSW5pdGlhbGlzYXRpb24gZ3JpZFxuICAgKiBAcGFyYW0gZ3JpZFxuICAgKi9cbiAgQEhvc3RMaXN0ZW5lcignZ3JpZFJlYWR5JywgWyckZXZlbnQnXSlcbiAgZ3JpZFJlYWR5KGdyaWQ6IEFnR3JpZEFuZ3VsYXIpIHtcbiAgICBncmlkLmFwaS5zZXRHcmlkT3B0aW9uKCdkYXRhc291cmNlJywgdGhpcy5kYXRhU291cmNlKTtcbiAgICB0aGlzLnJlbW90ZUdyaWRSZWFkeS5lbWl0KGdyaWQpO1xuICB9XG5cbiAgaGFuZGxlRXJyb3IoZXJyOiBhbnkpIHtcbiAgICB0aGlzLmhvc3QuZ2V0RGF0YUVycm9yICYmIHRoaXMuaG9zdC5nZXREYXRhRXJyb3IoZXJyKTtcbiAgICByZXR1cm4gRU1QVFk7XG4gIH1cbn1cbiJdfQ==