UNPKG

@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
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==