@devopmaat/badaboom 1.3.13 → 1.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/devopmaat-badaboom.mjs +1211 -412
- package/fesm2022/devopmaat-badaboom.mjs.map +1 -1
- package/lib/common/field/_bdb-field-theme.scss +1 -1
- package/lib/styles/_core-theme.scss +22 -0
- package/lib/styles/_theme.scss +2 -0
- package/lib/styles/material/_chips-theme.scss +1 -0
- package/lib/styles/material/_dialog-theme.scss +25 -0
- package/package.json +8 -7
- package/{index.d.ts → types/devopmaat-badaboom.d.ts} +308 -28
|
@@ -1,37 +1,40 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { InjectionToken, Input, HostBinding, Component, EventEmitter, Output, inject, Injectable, makeEnvironmentProviders, Directive, Injector, Pipe,
|
|
2
|
+
import { InjectionToken, Input, HostBinding, Component, EventEmitter, Output, inject, Injectable, makeEnvironmentProviders, input, signal, Directive, Injector, Pipe, viewChild, contentChildren, effect, computed, output, Optional, Self, HostListener, LOCALE_ID, Inject, DestroyRef, ChangeDetectorRef, ElementRef } from '@angular/core';
|
|
3
3
|
import { HttpClient, HttpErrorResponse, provideHttpClient, withInterceptors } from '@angular/common/http';
|
|
4
|
-
import
|
|
4
|
+
import * as i2$4 from '@angular/router';
|
|
5
|
+
import { Router, RouterOutlet, provideRouter, ActivatedRoute, NavigationStart, NavigationEnd, RouterModule, RouterLink } from '@angular/router';
|
|
6
|
+
import { BehaviorSubject, of, catchError as catchError$1, throwError, filter as filter$1, take, concatMap as concatMap$1, tap as tap$1, map, Subject, finalize, takeUntil, debounceTime, distinctUntilChanged, switchMap, merge } from 'rxjs';
|
|
5
7
|
import * as i1$1 from '@angular/material/dialog';
|
|
6
|
-
import { MAT_DIALOG_DATA, MatDialogModule, MatDialog } from '@angular/material/dialog';
|
|
7
|
-
import * as i2$3 from '@angular/router';
|
|
8
|
-
import { Router, RouterOutlet, provideRouter, RouterLink } from '@angular/router';
|
|
8
|
+
import { MAT_DIALOG_DATA, MatDialogModule, MatDialog, MatDialogRef } from '@angular/material/dialog';
|
|
9
9
|
import { tap, catchError, filter, concatMap, shareReplay, map as map$1 } from 'rxjs/operators';
|
|
10
10
|
import * as i1 from '@angular/common';
|
|
11
|
-
import { CommonModule, NgTemplateOutlet } from '@angular/common';
|
|
12
|
-
import * as
|
|
11
|
+
import { CommonModule, NgTemplateOutlet, AsyncPipe } from '@angular/common';
|
|
12
|
+
import * as i3 from '@angular/material/button';
|
|
13
13
|
import { MatButtonModule } from '@angular/material/button';
|
|
14
14
|
import * as i2 from '@angular/material/icon';
|
|
15
15
|
import { MatIconModule } from '@angular/material/icon';
|
|
16
|
-
import * as i2$2 from '@angular/material/toolbar';
|
|
17
|
-
import { MatToolbarModule } from '@angular/material/toolbar';
|
|
18
16
|
import * as i1$2 from '@angular/forms';
|
|
19
|
-
import { FormControl,
|
|
17
|
+
import { ReactiveFormsModule, FormControl, Validators, NgControl, ControlContainer, FormGroup } from '@angular/forms';
|
|
18
|
+
import * as i2$2 from '@angular/material/toolbar';
|
|
19
|
+
import { MatToolbarModule, MatToolbar } from '@angular/material/toolbar';
|
|
20
20
|
import * as i1$3 from '@angular/material/paginator';
|
|
21
21
|
import { MatPaginatorModule } from '@angular/material/paginator';
|
|
22
|
-
import * as
|
|
23
|
-
import { MatMenuModule, MatMenuTrigger } from '@angular/material/menu';
|
|
24
|
-
import * as i2$1 from '@angular/material/table';
|
|
25
|
-
import { MatTableModule } from '@angular/material/table';
|
|
26
|
-
import * as i3 from '@angular/material/checkbox';
|
|
22
|
+
import * as i3$1 from '@angular/material/checkbox';
|
|
27
23
|
import { MatCheckboxModule } from '@angular/material/checkbox';
|
|
24
|
+
import * as i5 from '@angular/material/menu';
|
|
25
|
+
import { MatMenuTrigger, MatMenuModule } from '@angular/material/menu';
|
|
28
26
|
import * as i4 from '@angular/material/sort';
|
|
29
27
|
import { MatSortModule } from '@angular/material/sort';
|
|
30
|
-
import * as
|
|
28
|
+
import * as i2$1 from '@angular/material/table';
|
|
29
|
+
import { MatTableModule } from '@angular/material/table';
|
|
30
|
+
import * as i5$1 from '@angular/material/sidenav';
|
|
31
|
+
import { MatSidenavModule } from '@angular/material/sidenav';
|
|
32
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
33
|
+
import * as i2$3 from '@angular/material/autocomplete';
|
|
31
34
|
import { MatAutocompleteModule, MatAutocompleteTrigger } from '@angular/material/autocomplete';
|
|
32
35
|
import * as i4$1 from '@angular/material/form-field';
|
|
33
36
|
import { MatFormFieldModule, MatFormFieldControl } from '@angular/material/form-field';
|
|
34
|
-
import * as i5$
|
|
37
|
+
import * as i5$2 from '@angular/material/input';
|
|
35
38
|
import { MatInputModule } from '@angular/material/input';
|
|
36
39
|
import * as i1$4 from '@angular/youtube-player';
|
|
37
40
|
import { YouTubePlayerModule } from '@angular/youtube-player';
|
|
@@ -40,7 +43,12 @@ import { DragDropModule } from '@angular/cdk/drag-drop';
|
|
|
40
43
|
import * as i1$5 from '@angular/material/core';
|
|
41
44
|
import { MatRippleModule } from '@angular/material/core';
|
|
42
45
|
import { MatProgressBar } from '@angular/material/progress-bar';
|
|
43
|
-
import
|
|
46
|
+
import { parseISO } from 'date-fns';
|
|
47
|
+
import { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';
|
|
48
|
+
import { MatDividerModule } from '@angular/material/divider';
|
|
49
|
+
import * as i6 from '@angular/material/list';
|
|
50
|
+
import { MatListModule } from '@angular/material/list';
|
|
51
|
+
import * as i3$2 from '@angular/material/card';
|
|
44
52
|
import { MatCardModule } from '@angular/material/card';
|
|
45
53
|
|
|
46
54
|
class BdbAuthOptionsBuilder {
|
|
@@ -118,10 +126,10 @@ class BdbAlertComponent {
|
|
|
118
126
|
this.icon = 'task_alt';
|
|
119
127
|
this.inline = false;
|
|
120
128
|
}
|
|
121
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
122
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
129
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbAlertComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
130
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.0", type: BdbAlertComponent, isStandalone: true, selector: "bdb-alert", inputs: { label: "label", icon: "icon", inline: "inline" }, host: { properties: { "class": "this.class" } }, ngImport: i0, template: "<div class=\"bdb-alert-wrapper\" [ngStyle]=\"{ display: inline ? 'inline-flex' : 'flex' }\">\r\n <div class=\"bdb-icon-container\">\r\n <mat-icon>{{ icon }}</mat-icon>\r\n </div>\r\n <div class=\"content-container\">\r\n <div>\r\n <div class=\"label\">\r\n {{ label }}\r\n </div>\r\n <div class=\"content\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".bdb-alert-wrapper{border-radius:4px;border:1px solid}.bdb-alert-wrapper .bdb-icon-container{min-height:100%;min-width:48px;display:flex;justify-content:center;align-items:center}.bdb-alert-wrapper .inline{max-width:100%}.content-container{padding:8px;border-top-right-radius:inherit;border-bottom-right-radius:inherit}.bdb-icon-container{background-color:var(--bdb-alert-container-color);color:var(--bdb-alert-icon-color);border-top-left-radius:inherit;border-bottom-left-radius:inherit}.bdb-alert-wrapper{border-color:var(--bdb-alert-border-color)}.content-container{background-color:var(--bdb-alert-content-container-color);color:var(--bdb-alert-content-color);flex:1}.label{font-weight:500;font-size:1.1rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
|
|
123
131
|
}
|
|
124
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
132
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbAlertComponent, decorators: [{
|
|
125
133
|
type: Component,
|
|
126
134
|
args: [{ selector: 'bdb-alert', imports: [CommonModule, MatIconModule], template: "<div class=\"bdb-alert-wrapper\" [ngStyle]=\"{ display: inline ? 'inline-flex' : 'flex' }\">\r\n <div class=\"bdb-icon-container\">\r\n <mat-icon>{{ icon }}</mat-icon>\r\n </div>\r\n <div class=\"content-container\">\r\n <div>\r\n <div class=\"label\">\r\n {{ label }}\r\n </div>\r\n <div class=\"content\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".bdb-alert-wrapper{border-radius:4px;border:1px solid}.bdb-alert-wrapper .bdb-icon-container{min-height:100%;min-width:48px;display:flex;justify-content:center;align-items:center}.bdb-alert-wrapper .inline{max-width:100%}.content-container{padding:8px;border-top-right-radius:inherit;border-bottom-right-radius:inherit}.bdb-icon-container{background-color:var(--bdb-alert-container-color);color:var(--bdb-alert-icon-color);border-top-left-radius:inherit;border-bottom-left-radius:inherit}.bdb-alert-wrapper{border-color:var(--bdb-alert-border-color)}.content-container{background-color:var(--bdb-alert-content-container-color);color:var(--bdb-alert-content-color);flex:1}.label{font-weight:500;font-size:1.1rem}\n"] }]
|
|
127
135
|
}], ctorParameters: () => [], propDecorators: { class: [{
|
|
@@ -228,10 +236,10 @@ class BdbAlertErrorResponseComponent {
|
|
|
228
236
|
}
|
|
229
237
|
}
|
|
230
238
|
}
|
|
231
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
232
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
239
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbAlertErrorResponseComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
240
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.0", type: BdbAlertErrorResponseComponent, isStandalone: true, selector: "bdb-alert-error-response", inputs: { value: "value", dismissable: "dismissable" }, outputs: { dismiss: "dismiss" }, usesOnChanges: true, ngImport: i0, template: "@if (value) {\r\n <bdb-alert [icon]=\"icon\" [label]=\"label\" [class]=\"alertClass\">\r\n @switch (value.status) {\r\n @case (400) {\r\n @for (message of validationFailures(); track message) {\r\n <div>{{ message }}</div>\r\n }\r\n }\r\n @case (500) {\r\n @if (errorCode) {\r\n Foutcode voor technische ondersteuning: <strong>{{ errorCode }}</strong>\r\n } @else {\r\n <ng-container *ngTemplateOutlet=\"displayMessage\"></ng-container>\r\n }\r\n }\r\n @default {\r\n <ng-container *ngTemplateOutlet=\"displayMessage\"></ng-container>\r\n }\r\n }\r\n @if (dismissable) {\r\n <button mat-icon-button class=\"error dismiss-button\" (click)=\"dismiss.emit()\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n </bdb-alert>\r\n}\r\n\r\n<ng-template #displayMessage>\r\n {{ message }}\r\n</ng-template>\r\n", styles: [".alert{padding:8px;border-radius:4px;border:1px solid}.alert.warn{background-color:#fbe9e7;border-color:#d84315}.alert.danger{background-color:#ffebee;border-color:#c62828}bdb-alert{position:relative}.dismiss-button{position:absolute;z-index:1;top:4px;right:4px;cursor:pointer}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: BdbAlertComponent, selector: "bdb-alert", inputs: ["label", "icon", "inline"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
|
|
233
241
|
}
|
|
234
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
242
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbAlertErrorResponseComponent, decorators: [{
|
|
235
243
|
type: Component,
|
|
236
244
|
args: [{ selector: 'bdb-alert-error-response', imports: [CommonModule, BdbAlertComponent, MatButtonModule, MatIconModule], template: "@if (value) {\r\n <bdb-alert [icon]=\"icon\" [label]=\"label\" [class]=\"alertClass\">\r\n @switch (value.status) {\r\n @case (400) {\r\n @for (message of validationFailures(); track message) {\r\n <div>{{ message }}</div>\r\n }\r\n }\r\n @case (500) {\r\n @if (errorCode) {\r\n Foutcode voor technische ondersteuning: <strong>{{ errorCode }}</strong>\r\n } @else {\r\n <ng-container *ngTemplateOutlet=\"displayMessage\"></ng-container>\r\n }\r\n }\r\n @default {\r\n <ng-container *ngTemplateOutlet=\"displayMessage\"></ng-container>\r\n }\r\n }\r\n @if (dismissable) {\r\n <button mat-icon-button class=\"error dismiss-button\" (click)=\"dismiss.emit()\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n </bdb-alert>\r\n}\r\n\r\n<ng-template #displayMessage>\r\n {{ message }}\r\n</ng-template>\r\n", styles: [".alert{padding:8px;border-radius:4px;border:1px solid}.alert.warn{background-color:#fbe9e7;border-color:#d84315}.alert.danger{background-color:#ffebee;border-color:#c62828}bdb-alert{position:relative}.dismiss-button{position:absolute;z-index:1;top:4px;right:4px;cursor:pointer}\n"] }]
|
|
237
245
|
}], propDecorators: { value: [{
|
|
@@ -246,10 +254,10 @@ class BdbErrorResponseDialogComponent {
|
|
|
246
254
|
constructor() {
|
|
247
255
|
this.data = inject(MAT_DIALOG_DATA);
|
|
248
256
|
}
|
|
249
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
250
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
257
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbErrorResponseDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
258
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.0", type: BdbErrorResponseDialogComponent, isStandalone: true, selector: "bdb-error-response-dialog", ngImport: i0, template: "<h2 mat-dialog-title>{{ data.title }}</h2>\r\n<div mat-dialog-content>\r\n <bdb-alert-error-response [value]=\"data.error\"></bdb-alert-error-response>\r\n</div>\r\n<div mat-dialog-actions align=\"end\">\r\n <button mat-button type=\"button\" mat-dialog-close class=\"warn\"><mat-icon>close</mat-icon> Sluiten</button>\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i1$1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1$1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1$1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1$1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type: BdbAlertErrorResponseComponent, selector: "bdb-alert-error-response", inputs: ["value", "dismissable"], outputs: ["dismiss"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }] }); }
|
|
251
259
|
}
|
|
252
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
260
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbErrorResponseDialogComponent, decorators: [{
|
|
253
261
|
type: Component,
|
|
254
262
|
args: [{ selector: 'bdb-error-response-dialog', imports: [MatDialogModule, BdbAlertErrorResponseComponent, MatIconModule, MatButtonModule], template: "<h2 mat-dialog-title>{{ data.title }}</h2>\r\n<div mat-dialog-content>\r\n <bdb-alert-error-response [value]=\"data.error\"></bdb-alert-error-response>\r\n</div>\r\n<div mat-dialog-actions align=\"end\">\r\n <button mat-button type=\"button\" mat-dialog-close class=\"warn\"><mat-icon>close</mat-icon> Sluiten</button>\r\n</div>\r\n" }]
|
|
255
263
|
}] });
|
|
@@ -281,10 +289,10 @@ class AccountService extends BdbService {
|
|
|
281
289
|
validateResetPasswordToken(value) {
|
|
282
290
|
return this.httpClient.post(`${this.baseUrl}/validate-reset-password-token`, value);
|
|
283
291
|
}
|
|
284
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
285
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
292
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: AccountService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
293
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: AccountService, providedIn: 'root' }); }
|
|
286
294
|
}
|
|
287
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
295
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: AccountService, decorators: [{
|
|
288
296
|
type: Injectable,
|
|
289
297
|
args: [{
|
|
290
298
|
providedIn: 'root',
|
|
@@ -413,10 +421,10 @@ class AuthService {
|
|
|
413
421
|
claims: claims,
|
|
414
422
|
};
|
|
415
423
|
}
|
|
416
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
417
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
424
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: AuthService, deps: [{ token: AccountService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
425
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: AuthService, providedIn: 'root' }); }
|
|
418
426
|
}
|
|
419
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
427
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: AuthService, decorators: [{
|
|
420
428
|
type: Injectable,
|
|
421
429
|
args: [{
|
|
422
430
|
providedIn: 'root',
|
|
@@ -440,11 +448,25 @@ const tokenExpiredInterceptor = (req, next) => {
|
|
|
440
448
|
}));
|
|
441
449
|
};
|
|
442
450
|
|
|
451
|
+
const tokenInterceptor = (req, next) => {
|
|
452
|
+
const authService = inject(AuthService);
|
|
453
|
+
return authService.token$.pipe(take(1), concatMap$1(x => {
|
|
454
|
+
const request = x === null
|
|
455
|
+
? req
|
|
456
|
+
: req.clone({
|
|
457
|
+
setHeaders: {
|
|
458
|
+
Authorization: getAuthorizationHeaderFromToken(x ?? ''),
|
|
459
|
+
},
|
|
460
|
+
});
|
|
461
|
+
return next(request);
|
|
462
|
+
}));
|
|
463
|
+
};
|
|
464
|
+
|
|
443
465
|
class AuthContainerComponent {
|
|
444
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
445
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
466
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: AuthContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
467
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.0", type: AuthContainerComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<router-outlet></router-outlet>\r\n", styles: [":host{width:100%;height:100%;display:flex;justify-content:center;align-items:center}\n"], dependencies: [{ kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }] }); }
|
|
446
468
|
}
|
|
447
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
469
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: AuthContainerComponent, decorators: [{
|
|
448
470
|
type: Component,
|
|
449
471
|
args: [{ imports: [RouterOutlet], template: "<router-outlet></router-outlet>\r\n", styles: [":host{width:100%;height:100%;display:flex;justify-content:center;align-items:center}\n"] }]
|
|
450
472
|
}] });
|
|
@@ -461,6 +483,26 @@ const loggedOutGuard = (_, state) => {
|
|
|
461
483
|
: true;
|
|
462
484
|
};
|
|
463
485
|
|
|
486
|
+
const resetPasswordResolver = route => {
|
|
487
|
+
const authService = inject(AuthService);
|
|
488
|
+
const router = inject(Router);
|
|
489
|
+
const bdbOptions = inject(BDB_OPTIONS);
|
|
490
|
+
const invalidTokenPath = bdbOptions.authOptions?.invalidTokenPath;
|
|
491
|
+
const model = {
|
|
492
|
+
token: route.queryParams['token'],
|
|
493
|
+
email: route.queryParams['email'],
|
|
494
|
+
};
|
|
495
|
+
return of(model).pipe(tap$1(x => {
|
|
496
|
+
if (!x.token || !x.email) {
|
|
497
|
+
throw new Error('Could not obtain token');
|
|
498
|
+
}
|
|
499
|
+
}), concatMap$1(x => authService.validateResetPasswordToken(x)), tap$1(x => {
|
|
500
|
+
if (!x) {
|
|
501
|
+
throw new Error('Token is not valid');
|
|
502
|
+
}
|
|
503
|
+
}), catchError$1(() => router.navigate(['/', invalidTokenPath])), map(() => model));
|
|
504
|
+
};
|
|
505
|
+
|
|
464
506
|
function roleGuard(...roles) {
|
|
465
507
|
return (_, state) => {
|
|
466
508
|
const authService = inject(AuthService);
|
|
@@ -485,40 +527,6 @@ function roleGuard(...roles) {
|
|
|
485
527
|
};
|
|
486
528
|
}
|
|
487
529
|
|
|
488
|
-
const resetPasswordResolver = route => {
|
|
489
|
-
const authService = inject(AuthService);
|
|
490
|
-
const router = inject(Router);
|
|
491
|
-
const bdbOptions = inject(BDB_OPTIONS);
|
|
492
|
-
const invalidTokenPath = bdbOptions.authOptions?.invalidTokenPath;
|
|
493
|
-
const model = {
|
|
494
|
-
token: route.queryParams['token'],
|
|
495
|
-
email: route.queryParams['email'],
|
|
496
|
-
};
|
|
497
|
-
return of(model).pipe(tap$1(x => {
|
|
498
|
-
if (!x.token || !x.email) {
|
|
499
|
-
throw new Error('Could not obtain token');
|
|
500
|
-
}
|
|
501
|
-
}), concatMap$1(x => authService.validateResetPasswordToken(x)), tap$1(x => {
|
|
502
|
-
if (!x) {
|
|
503
|
-
throw new Error('Token is not valid');
|
|
504
|
-
}
|
|
505
|
-
}), catchError$1(() => router.navigate(['/', invalidTokenPath])), map(() => model));
|
|
506
|
-
};
|
|
507
|
-
|
|
508
|
-
const tokenInterceptor = (req, next) => {
|
|
509
|
-
const authService = inject(AuthService);
|
|
510
|
-
return authService.token$.pipe(take(1), concatMap$1(x => {
|
|
511
|
-
const request = x === null
|
|
512
|
-
? req
|
|
513
|
-
: req.clone({
|
|
514
|
-
setHeaders: {
|
|
515
|
-
Authorization: getAuthorizationHeaderFromToken(x ?? ''),
|
|
516
|
-
},
|
|
517
|
-
});
|
|
518
|
-
return next(request);
|
|
519
|
-
}));
|
|
520
|
-
};
|
|
521
|
-
|
|
522
530
|
/**
|
|
523
531
|
* Configures BaDaBoom by providing necessary tokens.
|
|
524
532
|
* Takes root routes and provides the router with these routes, appending routes if specified
|
|
@@ -554,7 +562,7 @@ function provideBaDaBoom(optionsConfigure, routes) {
|
|
|
554
562
|
{
|
|
555
563
|
path: authOptions.resetPasswordPath,
|
|
556
564
|
canActivate: [loggedOutGuard],
|
|
557
|
-
resolve:
|
|
565
|
+
resolve: { resetPasswordToken: resetPasswordResolver },
|
|
558
566
|
loadComponent: () => Promise.resolve().then(function () { return resetPasswordPage_component; }).then(x => x.ResetPasswordPageComponent),
|
|
559
567
|
},
|
|
560
568
|
{
|
|
@@ -617,6 +625,41 @@ class BdbDataSource {
|
|
|
617
625
|
}
|
|
618
626
|
}
|
|
619
627
|
|
|
628
|
+
class BdbFormDialogComponent {
|
|
629
|
+
constructor() {
|
|
630
|
+
this.formGroup = input.required(...(ngDevMode ? [{ debugName: "formGroup" }] : []));
|
|
631
|
+
this.submitFx = input.required(...(ngDevMode ? [{ debugName: "submitFx" }] : []));
|
|
632
|
+
this.title = input('Form', ...(ngDevMode ? [{ debugName: "title" }] : []));
|
|
633
|
+
this.icon = input(undefined, ...(ngDevMode ? [{ debugName: "icon" }] : []));
|
|
634
|
+
this.typeIcon = input(undefined, ...(ngDevMode ? [{ debugName: "typeIcon" }] : []));
|
|
635
|
+
this.cancelLabel = input('Annuleer', ...(ngDevMode ? [{ debugName: "cancelLabel" }] : []));
|
|
636
|
+
this.submitLabel = input('Verwerk', ...(ngDevMode ? [{ debugName: "submitLabel" }] : []));
|
|
637
|
+
this.error = signal(undefined, ...(ngDevMode ? [{ debugName: "error" }] : []));
|
|
638
|
+
this.dialogRef = inject((MatDialogRef));
|
|
639
|
+
}
|
|
640
|
+
formSubmit() {
|
|
641
|
+
this.error.set(undefined);
|
|
642
|
+
if (!this.formGroup().valid) {
|
|
643
|
+
this.formGroup().markAllAsTouched();
|
|
644
|
+
return;
|
|
645
|
+
}
|
|
646
|
+
this.formGroup().disable();
|
|
647
|
+
this.submitFx()().subscribe({
|
|
648
|
+
next: x => this.dialogRef.close(x),
|
|
649
|
+
error: err => {
|
|
650
|
+
this.error.set(err);
|
|
651
|
+
this.formGroup().enable();
|
|
652
|
+
},
|
|
653
|
+
});
|
|
654
|
+
}
|
|
655
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbFormDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
656
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.0", type: BdbFormDialogComponent, isStandalone: true, selector: "bdb-form-dialog", inputs: { formGroup: { classPropertyName: "formGroup", publicName: "formGroup", isSignal: true, isRequired: true, transformFunction: null }, submitFx: { classPropertyName: "submitFx", publicName: "submitFx", isSignal: true, isRequired: true, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, typeIcon: { classPropertyName: "typeIcon", publicName: "typeIcon", isSignal: true, isRequired: false, transformFunction: null }, cancelLabel: { classPropertyName: "cancelLabel", publicName: "cancelLabel", isSignal: true, isRequired: false, transformFunction: null }, submitLabel: { classPropertyName: "submitLabel", publicName: "submitLabel", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<form [formGroup]=\"formGroup()\" (ngSubmit)=\"formSubmit()\">\r\n <div mat-dialog-title style=\"display: flex; align-items: center; gap: 8px\">\r\n @if (icon()) {\r\n <mat-icon>{{ icon() }}</mat-icon>\r\n }\r\n <div style=\"flex-grow: 1\">\r\n {{ title() }}\r\n </div>\r\n @if (typeIcon()) {\r\n <mat-icon class=\"secondary\">{{ typeIcon() }}</mat-icon>\r\n }\r\n </div>\r\n <mat-dialog-content>\r\n <div class=\"content-container\">\r\n <bdb-alert-error-response [value]=\"error()\"></bdb-alert-error-response>\r\n <ng-content></ng-content>\r\n </div>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button type=\"button\" [mat-dialog-close]=\"false\" tabIndex=\"-1\" class=\"warn\">{{ cancelLabel() }}</button>\r\n <button mat-flat-button>{{ submitLabel() }}</button>\r\n </mat-dialog-actions>\r\n</form>\r\n", styles: [".content-container{display:flex;flex-direction:column;gap:8px}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i1$1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1$1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1$1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1$1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: BdbAlertErrorResponseComponent, selector: "bdb-alert-error-response", inputs: ["value", "dismissable"], outputs: ["dismiss"] }] }); }
|
|
657
|
+
}
|
|
658
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbFormDialogComponent, decorators: [{
|
|
659
|
+
type: Component,
|
|
660
|
+
args: [{ selector: 'bdb-form-dialog', imports: [ReactiveFormsModule, MatDialogModule, MatButtonModule, MatIconModule, BdbAlertErrorResponseComponent], template: "<form [formGroup]=\"formGroup()\" (ngSubmit)=\"formSubmit()\">\r\n <div mat-dialog-title style=\"display: flex; align-items: center; gap: 8px\">\r\n @if (icon()) {\r\n <mat-icon>{{ icon() }}</mat-icon>\r\n }\r\n <div style=\"flex-grow: 1\">\r\n {{ title() }}\r\n </div>\r\n @if (typeIcon()) {\r\n <mat-icon class=\"secondary\">{{ typeIcon() }}</mat-icon>\r\n }\r\n </div>\r\n <mat-dialog-content>\r\n <div class=\"content-container\">\r\n <bdb-alert-error-response [value]=\"error()\"></bdb-alert-error-response>\r\n <ng-content></ng-content>\r\n </div>\r\n </mat-dialog-content>\r\n <mat-dialog-actions>\r\n <button mat-button type=\"button\" [mat-dialog-close]=\"false\" tabIndex=\"-1\" class=\"warn\">{{ cancelLabel() }}</button>\r\n <button mat-flat-button>{{ submitLabel() }}</button>\r\n </mat-dialog-actions>\r\n</form>\r\n", styles: [".content-container{display:flex;flex-direction:column;gap:8px}\n"] }]
|
|
661
|
+
}], propDecorators: { formGroup: [{ type: i0.Input, args: [{ isSignal: true, alias: "formGroup", required: true }] }], submitFx: [{ type: i0.Input, args: [{ isSignal: true, alias: "submitFx", required: true }] }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], typeIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "typeIcon", required: false }] }], cancelLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "cancelLabel", required: false }] }], submitLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "submitLabel", required: false }] }] } });
|
|
662
|
+
|
|
620
663
|
class LayoutError extends Error {
|
|
621
664
|
constructor(message) {
|
|
622
665
|
super(message);
|
|
@@ -713,10 +756,10 @@ class BdbFlexDirective {
|
|
|
713
756
|
validateSpacing(spacing) {
|
|
714
757
|
return spacing;
|
|
715
758
|
}
|
|
716
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
717
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
759
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbFlexDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
760
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.0", type: BdbFlexDirective, isStandalone: true, selector: "[bdbFlex], [bdbFlexDirection], [bdbFlexGap], [bdbFlexSpacing]", inputs: { bdbFlex: "bdbFlex", bdbFlexDirection: "bdbFlexDirection", bdbFlexGap: "bdbFlexGap", bdbFlexSpacing: "bdbFlexSpacing" }, ngImport: i0 }); }
|
|
718
761
|
}
|
|
719
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
762
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbFlexDirective, decorators: [{
|
|
720
763
|
type: Directive,
|
|
721
764
|
args: [{
|
|
722
765
|
selector: '[bdbFlex], [bdbFlexDirection], [bdbFlexGap], [bdbFlexSpacing]',
|
|
@@ -732,42 +775,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.3", ngImpor
|
|
|
732
775
|
type: Input
|
|
733
776
|
}] } });
|
|
734
777
|
|
|
735
|
-
class BdbQueryInputComponent {
|
|
736
|
-
constructor() {
|
|
737
|
-
this.class = 'bdb-query-input';
|
|
738
|
-
this._onDestroy = new Subject();
|
|
739
|
-
this.queryFormControl = new FormControl(undefined, { nonNullable: true });
|
|
740
|
-
}
|
|
741
|
-
ngOnInit() {
|
|
742
|
-
this.queryFormControl.valueChanges
|
|
743
|
-
.pipe(debounceTime(100), distinctUntilChanged(), takeUntil(this._onDestroy))
|
|
744
|
-
.subscribe({
|
|
745
|
-
next: x => {
|
|
746
|
-
if (this.dataSource) {
|
|
747
|
-
this.dataSource.request.query = x;
|
|
748
|
-
this.dataSource.request.page = 0;
|
|
749
|
-
this.dataSource.load();
|
|
750
|
-
}
|
|
751
|
-
},
|
|
752
|
-
});
|
|
753
|
-
}
|
|
754
|
-
ngOnDestroy() {
|
|
755
|
-
this._onDestroy.next();
|
|
756
|
-
this._onDestroy.complete();
|
|
757
|
-
}
|
|
758
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: BdbQueryInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
759
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.2.3", type: BdbQueryInputComponent, isStandalone: true, selector: "bdb-query-input[dataSource]", inputs: { dataSource: "dataSource" }, host: { properties: { "class": "this.class" } }, ngImport: i0, template: "<input spellcheck=\"false\" autocomplete=\"false\" [formControl]=\"queryFormControl\" />\r\n@if (queryFormControl.value) {\r\n <mat-icon (click)=\"queryFormControl.patchValue(undefined)\" class=\"warn\">clear</mat-icon>\r\n} @else {\r\n <mat-icon class=\"info\">search</mat-icon>\r\n}\r\n", styles: [":host{display:inline-flex;border-radius:4px;min-height:36px;max-width:100%;flex-direction:row;align-items:center;color:var(--mat-sys-on-surface);background-color:var(--mat-sys-surface);border:1px solid var(--mat-sys-outline-variant)}:host:focus-within{border-color:var(--mat-sys-outline)}input{background:inherit;border:none;outline:none;padding:4px;font-size:1rem;min-width:40px;min-height:auto}.mat-icon{flex:24px 0 0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
|
|
760
|
-
}
|
|
761
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: BdbQueryInputComponent, decorators: [{
|
|
762
|
-
type: Component,
|
|
763
|
-
args: [{ selector: 'bdb-query-input[dataSource]', imports: [CommonModule, ReactiveFormsModule, MatIconModule], template: "<input spellcheck=\"false\" autocomplete=\"false\" [formControl]=\"queryFormControl\" />\r\n@if (queryFormControl.value) {\r\n <mat-icon (click)=\"queryFormControl.patchValue(undefined)\" class=\"warn\">clear</mat-icon>\r\n} @else {\r\n <mat-icon class=\"info\">search</mat-icon>\r\n}\r\n", styles: [":host{display:inline-flex;border-radius:4px;min-height:36px;max-width:100%;flex-direction:row;align-items:center;color:var(--mat-sys-on-surface);background-color:var(--mat-sys-surface);border:1px solid var(--mat-sys-outline-variant)}:host:focus-within{border-color:var(--mat-sys-outline)}input{background:inherit;border:none;outline:none;padding:4px;font-size:1rem;min-width:40px;min-height:auto}.mat-icon{flex:24px 0 0}\n"] }]
|
|
764
|
-
}], propDecorators: { class: [{
|
|
765
|
-
type: HostBinding,
|
|
766
|
-
args: ['class']
|
|
767
|
-
}], dataSource: [{
|
|
768
|
-
type: Input
|
|
769
|
-
}] } });
|
|
770
|
-
|
|
771
778
|
class BdbPaginatorComponent {
|
|
772
779
|
constructor() {
|
|
773
780
|
this._onDestroy = new Subject();
|
|
@@ -790,54 +797,49 @@ class BdbPaginatorComponent {
|
|
|
790
797
|
this.dataSource.request.pageSize = event.pageSize;
|
|
791
798
|
this.dataSource.load();
|
|
792
799
|
}
|
|
793
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
794
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
800
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbPaginatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
801
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.0", type: BdbPaginatorComponent, isStandalone: true, selector: "bdb-paginator", inputs: { dataSource: "dataSource" }, ngImport: i0, template: "<mat-paginator\r\n [pageSize]=\"pageSize\"\r\n [pageIndex]=\"page\"\r\n [length]=\"length\"\r\n (page)=\"changePage($event)\"\r\n [pageSizeOptions]=\"[5, 10, 15, 20, 25]\"\r\n [hidePageSize]=\"true\">\r\n</mat-paginator>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: MatPaginatorModule }, { kind: "component", type: i1$3.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }] }); }
|
|
795
802
|
}
|
|
796
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
803
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbPaginatorComponent, decorators: [{
|
|
797
804
|
type: Component,
|
|
798
805
|
args: [{ selector: 'bdb-paginator', imports: [MatPaginatorModule], template: "<mat-paginator\r\n [pageSize]=\"pageSize\"\r\n [pageIndex]=\"page\"\r\n [length]=\"length\"\r\n (page)=\"changePage($event)\"\r\n [pageSizeOptions]=\"[5, 10, 15, 20, 25]\"\r\n [hidePageSize]=\"true\">\r\n</mat-paginator>\r\n" }]
|
|
799
806
|
}], propDecorators: { dataSource: [{
|
|
800
807
|
type: Input
|
|
801
808
|
}] } });
|
|
802
809
|
|
|
803
|
-
class
|
|
804
|
-
constructor(
|
|
805
|
-
this.
|
|
810
|
+
class BdbQueryInputComponent {
|
|
811
|
+
constructor() {
|
|
812
|
+
this.class = 'bdb-query-input';
|
|
813
|
+
this._onDestroy = new Subject();
|
|
814
|
+
this.queryFormControl = new FormControl(undefined, { nonNullable: true });
|
|
806
815
|
}
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
816
|
+
ngOnInit() {
|
|
817
|
+
this.queryFormControl.valueChanges
|
|
818
|
+
.pipe(debounceTime(100), distinctUntilChanged(), takeUntil(this._onDestroy))
|
|
819
|
+
.subscribe({
|
|
820
|
+
next: x => {
|
|
821
|
+
if (this.dataSource) {
|
|
822
|
+
this.dataSource.request.query = x;
|
|
823
|
+
this.dataSource.request.page = 0;
|
|
824
|
+
this.dataSource.load();
|
|
825
|
+
}
|
|
826
|
+
},
|
|
812
827
|
});
|
|
813
|
-
const pipe = injector.get(requiredPipe);
|
|
814
|
-
return pipe.transform(value, pipeArgs);
|
|
815
828
|
}
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: DynamicPipe, decorators: [{
|
|
820
|
-
type: Pipe,
|
|
821
|
-
args: [{
|
|
822
|
-
name: 'dynamicPipe',
|
|
823
|
-
standalone: true,
|
|
824
|
-
}]
|
|
825
|
-
}], ctorParameters: () => [{ type: i0.Injector }] });
|
|
826
|
-
|
|
827
|
-
class BdbBooleanDisplayComponent {
|
|
828
|
-
constructor() {
|
|
829
|
-
this.class = 'bdb-boolean-display';
|
|
829
|
+
ngOnDestroy() {
|
|
830
|
+
this._onDestroy.next();
|
|
831
|
+
this._onDestroy.complete();
|
|
830
832
|
}
|
|
831
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
832
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
833
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbQueryInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
834
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.0", type: BdbQueryInputComponent, isStandalone: true, selector: "bdb-query-input[dataSource]", inputs: { dataSource: "dataSource" }, host: { properties: { "class": "this.class" } }, ngImport: i0, template: "<input spellcheck=\"false\" autocomplete=\"false\" [formControl]=\"queryFormControl\" />\r\n@if (queryFormControl.value) {\r\n <mat-icon (click)=\"queryFormControl.patchValue(undefined)\" class=\"warn\">clear</mat-icon>\r\n} @else {\r\n <mat-icon class=\"info\">search</mat-icon>\r\n}\r\n", styles: [":host{display:inline-flex;border-radius:4px;min-height:36px;max-width:100%;flex-direction:row;align-items:center;color:var(--mat-sys-on-surface);background-color:var(--mat-sys-surface);border:1px solid var(--mat-sys-outline-variant)}:host:focus-within{border-color:var(--mat-sys-outline)}input{background:inherit;border:none;outline:none;padding:4px;font-size:1rem;min-width:40px;min-height:auto}.mat-icon{flex:24px 0 0}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
|
|
833
835
|
}
|
|
834
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
836
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbQueryInputComponent, decorators: [{
|
|
835
837
|
type: Component,
|
|
836
|
-
args: [{ selector: 'bdb-
|
|
838
|
+
args: [{ selector: 'bdb-query-input[dataSource]', imports: [ReactiveFormsModule, MatIconModule], template: "<input spellcheck=\"false\" autocomplete=\"false\" [formControl]=\"queryFormControl\" />\r\n@if (queryFormControl.value) {\r\n <mat-icon (click)=\"queryFormControl.patchValue(undefined)\" class=\"warn\">clear</mat-icon>\r\n} @else {\r\n <mat-icon class=\"info\">search</mat-icon>\r\n}\r\n", styles: [":host{display:inline-flex;border-radius:4px;min-height:36px;max-width:100%;flex-direction:row;align-items:center;color:var(--mat-sys-on-surface);background-color:var(--mat-sys-surface);border:1px solid var(--mat-sys-outline-variant)}:host:focus-within{border-color:var(--mat-sys-outline)}input{background:inherit;border:none;outline:none;padding:4px;font-size:1rem;min-width:40px;min-height:auto}.mat-icon{flex:24px 0 0}\n"] }]
|
|
837
839
|
}], propDecorators: { class: [{
|
|
838
840
|
type: HostBinding,
|
|
839
841
|
args: ['class']
|
|
840
|
-
}],
|
|
842
|
+
}], dataSource: [{
|
|
841
843
|
type: Input
|
|
842
844
|
}] } });
|
|
843
845
|
|
|
@@ -846,10 +848,10 @@ class BdbCellDirective {
|
|
|
846
848
|
this.templateRef = templateRef;
|
|
847
849
|
this.bdbCellDef = '';
|
|
848
850
|
}
|
|
849
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
850
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
851
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbCellDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
852
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.0", type: BdbCellDirective, isStandalone: true, selector: "ng-template[bdbCellDef]", inputs: { bdbCellDef: "bdbCellDef" }, ngImport: i0 }); }
|
|
851
853
|
}
|
|
852
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
854
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbCellDirective, decorators: [{
|
|
853
855
|
type: Directive,
|
|
854
856
|
args: [{
|
|
855
857
|
selector: 'ng-template[bdbCellDef]',
|
|
@@ -859,6 +861,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.3", ngImpor
|
|
|
859
861
|
type: Input
|
|
860
862
|
}] } });
|
|
861
863
|
|
|
864
|
+
class BdbBooleanDisplayComponent {
|
|
865
|
+
constructor() {
|
|
866
|
+
this.class = 'bdb-boolean-display';
|
|
867
|
+
}
|
|
868
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbBooleanDisplayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
869
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.0", type: BdbBooleanDisplayComponent, isStandalone: true, selector: "bdb-boolean-display", inputs: { value: "value" }, host: { properties: { "class": "this.class" } }, ngImport: i0, template: "@if (value === false) {\r\n <mat-icon class=\"false\">clear</mat-icon>\r\n} @else if (value === true) {\r\n <mat-icon class=\"true\">check</mat-icon>\r\n}\r\n", styles: [".false{display:block;color:var(--mat-sys-error)}.true{display:block;color:var(--bdb-sys-success)}\n"], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
|
|
870
|
+
}
|
|
871
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbBooleanDisplayComponent, decorators: [{
|
|
872
|
+
type: Component,
|
|
873
|
+
args: [{ selector: 'bdb-boolean-display', imports: [MatIconModule], template: "@if (value === false) {\r\n <mat-icon class=\"false\">clear</mat-icon>\r\n} @else if (value === true) {\r\n <mat-icon class=\"true\">check</mat-icon>\r\n}\r\n", styles: [".false{display:block;color:var(--mat-sys-error)}.true{display:block;color:var(--bdb-sys-success)}\n"] }]
|
|
874
|
+
}], propDecorators: { class: [{
|
|
875
|
+
type: HostBinding,
|
|
876
|
+
args: ['class']
|
|
877
|
+
}], value: [{
|
|
878
|
+
type: Input
|
|
879
|
+
}] } });
|
|
880
|
+
|
|
862
881
|
var BdbColumnType;
|
|
863
882
|
(function (BdbColumnType) {
|
|
864
883
|
BdbColumnType["String"] = "String";
|
|
@@ -871,6 +890,30 @@ var BdbColumnType;
|
|
|
871
890
|
BdbColumnType["Custom"] = "Custom";
|
|
872
891
|
})(BdbColumnType || (BdbColumnType = {}));
|
|
873
892
|
|
|
893
|
+
class DynamicPipe {
|
|
894
|
+
constructor(injector) {
|
|
895
|
+
this.injector = injector;
|
|
896
|
+
}
|
|
897
|
+
transform(value, requiredPipe, pipeArgs) {
|
|
898
|
+
const injector = Injector.create({
|
|
899
|
+
name: 'DynamicPipe',
|
|
900
|
+
parent: this.injector,
|
|
901
|
+
providers: [{ provide: requiredPipe }],
|
|
902
|
+
});
|
|
903
|
+
const pipe = injector.get(requiredPipe);
|
|
904
|
+
return pipe.transform(value, pipeArgs);
|
|
905
|
+
}
|
|
906
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: DynamicPipe, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
907
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.1.0", ngImport: i0, type: DynamicPipe, isStandalone: true, name: "dynamicPipe" }); }
|
|
908
|
+
}
|
|
909
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: DynamicPipe, decorators: [{
|
|
910
|
+
type: Pipe,
|
|
911
|
+
args: [{
|
|
912
|
+
name: 'dynamicPipe',
|
|
913
|
+
standalone: true,
|
|
914
|
+
}]
|
|
915
|
+
}], ctorParameters: () => [{ type: i0.Injector }] });
|
|
916
|
+
|
|
874
917
|
class BdbTableComponent {
|
|
875
918
|
constructor() {
|
|
876
919
|
this._onDestroy = new Subject();
|
|
@@ -883,6 +926,8 @@ class BdbTableComponent {
|
|
|
883
926
|
this.isClickable = true;
|
|
884
927
|
this.rowClick = new EventEmitter();
|
|
885
928
|
this.contextAction = new EventEmitter();
|
|
929
|
+
this.contextMenu = viewChild.required(MatMenuTrigger);
|
|
930
|
+
this.cellTemplates = contentChildren(BdbCellDirective, { ...(ngDevMode ? { debugName: "cellTemplates" } : {}), descendants: true });
|
|
886
931
|
this.columnType = BdbColumnType;
|
|
887
932
|
this.contextMenuPosition = { x: '0px', y: '0px' };
|
|
888
933
|
this.trackById = (_, item) => {
|
|
@@ -914,8 +959,8 @@ class BdbTableComponent {
|
|
|
914
959
|
this.dataSource.load();
|
|
915
960
|
}
|
|
916
961
|
setColumnTemplates() {
|
|
917
|
-
const templates = this.cellTemplates;
|
|
918
|
-
if (templates == undefined || !this.cellTemplates?.length) {
|
|
962
|
+
const templates = this.cellTemplates();
|
|
963
|
+
if (templates == undefined || !this.cellTemplates()?.length) {
|
|
919
964
|
return;
|
|
920
965
|
}
|
|
921
966
|
if (this.columns && this.columns.length) {
|
|
@@ -948,11 +993,11 @@ class BdbTableComponent {
|
|
|
948
993
|
if (this.contextActions && this.contextActions.length) {
|
|
949
994
|
this.contextMenuPosition.x = event.clientX + 'px';
|
|
950
995
|
this.contextMenuPosition.y = event.clientY + 'px';
|
|
951
|
-
this.contextMenu.menuData = { row: row };
|
|
952
|
-
if (this.contextMenu.menu) {
|
|
953
|
-
this.contextMenu.menu.focusFirstItem('mouse');
|
|
996
|
+
this.contextMenu().menuData = { row: row };
|
|
997
|
+
if (this.contextMenu().menu) {
|
|
998
|
+
this.contextMenu().menu.focusFirstItem('mouse');
|
|
954
999
|
}
|
|
955
|
-
this.contextMenu.openMenu();
|
|
1000
|
+
this.contextMenu().openMenu();
|
|
956
1001
|
}
|
|
957
1002
|
}
|
|
958
1003
|
onContextMenuAction(action, row) {
|
|
@@ -1000,10 +1045,10 @@ class BdbTableComponent {
|
|
|
1000
1045
|
}
|
|
1001
1046
|
return ret;
|
|
1002
1047
|
}
|
|
1003
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1004
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.2.3", type: BdbTableComponent, isStandalone: true, selector: "bdb-table[dataSource]", inputs: { columns: "columns", dataSource: "dataSource", autoLoad: "autoLoad", displayedColumns: "displayedColumns", contextActions: "contextActions", selection: "selection", selectOnRowClick: "selectOnRowClick", selectedRowClass: "selectedRowClass", isClickable: "isClickable", rowColor: "rowColor" }, outputs: { rowClick: "rowClick", contextAction: "contextAction" }, queries: [{ propertyName: "cellTemplates", predicate: BdbCellDirective, descendants: true }], viewQueries: [{ propertyName: "contextMenu", first: true, predicate: MatMenuTrigger, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"bdb-table-container\">\r\n @if (dataSource) {\r\n <table\r\n mat-table\r\n class=\"bdb-table\"\r\n [class.is-clickable]=\"isClickable\"\r\n [dataSource]=\"dataSource\"\r\n matSort\r\n (matSortChange)=\"sortData($event)\"\r\n [trackBy]=\"trackById\">\r\n <ng-container matColumnDef=\"selection\">\r\n <th mat-header-cell *matHeaderCellDef>\r\n @if (selection) {\r\n <mat-checkbox\r\n (change)=\"$event ? toggleAllRows() : null\"\r\n [checked]=\"selection.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"anySelected() && !isAllSelected()\"\r\n color=\"primary\">\r\n </mat-checkbox>\r\n }\r\n </th>\r\n <td mat-cell *matCellDef=\"let row\">\r\n @if (selection) {\r\n <mat-checkbox\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"$event ? selection.toggle(row) : null\"\r\n [checked]=\"selection.isSelected(row)\"\r\n color=\"accent\">\r\n </mat-checkbox>\r\n }\r\n </td>\r\n </ng-container>\r\n\r\n @for (column of columns; track column) {\r\n <ng-container [matColumnDef]=\"column.id\">\r\n <ng-container>\r\n <th\r\n mat-header-cell\r\n *matHeaderCellDef\r\n mat-sort-header=\"{{ column.id }}\"\r\n [disabled]=\"column.sortDisabled\"\r\n [width]=\"column.width\"\r\n [ngClass]=\"{ 'text-end': column.textAlign && column.textAlign === 'end' }\"\r\n [arrowPosition]=\"column.textAlign && column.textAlign === 'end' ? 'before' : 'after'\">\r\n {{ column.title }}\r\n </th>\r\n </ng-container>\r\n\r\n <td mat-cell *matCellDef=\"let row\" [ngClass]=\"{ 'text-end': column.textAlign && column.textAlign === 'end' }\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n column.template ? column.template : cellTemplate;\r\n context: { $implicit: row, column: column }\r\n \"></ng-container>\r\n </td>\r\n </ng-container>\r\n }\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\r\n <tr\r\n mat-row\r\n *matRowDef=\"let row; columns: displayedColumns\"\r\n (click)=\"onRowClick(row)\"\r\n [ngClass]=\"rowClass(row)\"\r\n (contextmenu)=\"onContextMenu($event, row)\"></tr>\r\n\r\n <tr class=\"mat-row\" *matNoDataRow>\r\n <td class=\"mat-cell\" [colSpan]=\"displayedColumns.length\">\r\n @if (dataSource && (dataSource.error$ | async)) {\r\n <bdb-alert-error-response [value]=\"dataSource.error$ | async\"> </bdb-alert-error-response>\r\n } @else {\r\n <ng-container *ngTemplateOutlet=\"noData\"></ng-container>\r\n }\r\n </td>\r\n </tr>\r\n </table>\r\n }\r\n</div>\r\n\r\n<ng-content></ng-content>\r\n\r\n<ng-template #cellTemplate let-row let-column=\"column\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n column.pipe ? pipedCellTemplate : defaultCellTemplate;\r\n context: { $implicit: row, column: column }\r\n \"></ng-container>\r\n</ng-template>\r\n\r\n<ng-template #pipedCellTemplate let-column=\"column\" let-row>\r\n {{ column.field(row) | dynamicPipe: column.pipe : null }}\r\n</ng-template>\r\n\r\n<ng-template #defaultCellTemplate let-row let-column=\"column\">\r\n @switch (column.type) {\r\n @case (columnType.String) {\r\n {{ column.field(row) }}\r\n }\r\n @case (columnType.Number) {\r\n {{ column.field(row) | number: column.format }}\r\n }\r\n @case (columnType.Percentage) {\r\n {{ column.field(row) | percent: column.digitsInfo : column.locale }}\r\n }\r\n @case (columnType.Currency) {\r\n {{ column.field(row) | currency: column.currencyCode : column.display : column.digitsInfo : column.locale }}\r\n }\r\n @case (columnType.Date) {\r\n {{ column.field(row) | date: column.format }}\r\n }\r\n @case (columnType.Boolean) {\r\n <bdb-boolean-display [value]=\"column.field(row)\"></bdb-boolean-display>\r\n }\r\n @case (columnType.Enum) {\r\n {{ column.field(row) }}\r\n }\r\n @case (columnType.Custom) {\r\n *?*\r\n }\r\n @default {\r\n {{ column.field(row) | json }}\r\n }\r\n }\r\n</ng-template>\r\n\r\n<ng-template #noData>\r\n <div class=\"no-data\"><em>Geen gegevens gevonden</em></div>\r\n</ng-template>\r\n\r\n<div\r\n style=\"visibility: hidden; position: fixed\"\r\n [style.left]=\"contextMenuPosition.x\"\r\n [style.top]=\"contextMenuPosition.y\"\r\n [matMenuTriggerFor]=\"contextMenu\"></div>\r\n<mat-menu #contextMenu=\"matMenu\" #contextMenu2=\"matMenu\">\r\n <ng-template matMenuContent let-row=\"row\">\r\n @for (action of contextActions; track action) {\r\n @if (action.condition === undefined || action.condition(row)) {\r\n <button mat-menu-item (click)=\"onContextMenuAction(action, row)\">\r\n <mat-icon [color]=\"action.color\">{{ action.icon }}</mat-icon> {{ action.label }}\r\n </button>\r\n }\r\n }\r\n </ng-template>\r\n</mat-menu>\r\n", styles: [".bdb-table{width:100%}.bdb-table.is-clickable tr:hover{cursor:pointer}.bdb-table-container{height:100%;overflow:auto}.bdb-table-container::-webkit-scrollbar{width:4px}.bdb-table-container::-webkit-scrollbar-thumb{background-color:#0003}.bdb-table-container::-webkit-scrollbar-track{background-color:#0000001a}.text-end{text-align:end}.no-data{color:#00000080;padding:8px}.mat-mdc-header-row .mat-mdc-header-cell{padding-left:8px;padding-right:8px}.mat-mdc-header-row .mat-mdc-header-cell:first-of-type{padding-left:24px}.mat-mdc-header-row .mat-mdc-header-cell:last-of-type{padding-right:24px}.mat-mdc-row .mat-mdc-cell{padding-left:8px;padding-right:8px}.mat-mdc-row .mat-mdc-cell:first-of-type{padding-left:24px}.mat-mdc-row .mat-mdc-cell:last-of-type{padding-right:24px}.mat-column-selection{width:48px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i2$1.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i2$1.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i2$1.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i2$1.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i2$1.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i2$1.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i2$1.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i2$1.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i2$1.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i2$1.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "directive", type: i2$1.MatNoDataRow, selector: "ng-template[matNoDataRow]" }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i3.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: MatSortModule }, { kind: "directive", type: i4.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i4.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: BdbAlertErrorResponseComponent, selector: "bdb-alert-error-response", inputs: ["value", "dismissable"], outputs: ["dismiss"] }, { kind: "component", type: BdbBooleanDisplayComponent, selector: "bdb-boolean-display", inputs: ["value"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i5.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i5.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i5.MatMenuContent, selector: "ng-template[matMenuContent]" }, { kind: "directive", type: i5.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.JsonPipe, name: "json" }, { kind: "pipe", type: i1.DecimalPipe, name: "number" }, { kind: "pipe", type: i1.PercentPipe, name: "percent" }, { kind: "pipe", type: i1.CurrencyPipe, name: "currency" }, { kind: "pipe", type: i1.DatePipe, name: "date" }, { kind: "pipe", type: DynamicPipe, name: "dynamicPipe" }] }); }
|
|
1048
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1049
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.0", type: BdbTableComponent, isStandalone: true, selector: "bdb-table[dataSource]", inputs: { columns: "columns", dataSource: "dataSource", autoLoad: "autoLoad", displayedColumns: "displayedColumns", contextActions: "contextActions", selection: "selection", selectOnRowClick: "selectOnRowClick", selectedRowClass: "selectedRowClass", isClickable: "isClickable", rowColor: "rowColor" }, outputs: { rowClick: "rowClick", contextAction: "contextAction" }, queries: [{ propertyName: "cellTemplates", predicate: BdbCellDirective, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "contextMenu", first: true, predicate: MatMenuTrigger, descendants: true, isSignal: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"bdb-table-container\">\r\n @if (dataSource) {\r\n <table\r\n mat-table\r\n class=\"bdb-table\"\r\n [class.is-clickable]=\"isClickable\"\r\n [dataSource]=\"dataSource\"\r\n matSort\r\n (matSortChange)=\"sortData($event)\"\r\n [trackBy]=\"trackById\">\r\n <ng-container matColumnDef=\"selection\">\r\n <th mat-header-cell *matHeaderCellDef>\r\n @if (selection) {\r\n <mat-checkbox\r\n (change)=\"$event ? toggleAllRows() : null\"\r\n [checked]=\"selection.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"anySelected() && !isAllSelected()\"\r\n class=\"primary\">\r\n </mat-checkbox>\r\n }\r\n </th>\r\n <td mat-cell *matCellDef=\"let row\">\r\n @if (selection) {\r\n <mat-checkbox\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"$event ? selection.toggle(row) : null\"\r\n [checked]=\"selection.isSelected(row)\"\r\n class=\"accent\">\r\n </mat-checkbox>\r\n }\r\n </td>\r\n </ng-container>\r\n\r\n @for (column of columns; track column) {\r\n <ng-container [matColumnDef]=\"column.id\">\r\n <ng-container>\r\n <th\r\n mat-header-cell\r\n *matHeaderCellDef\r\n mat-sort-header=\"{{ column.id }}\"\r\n [disabled]=\"column.sortDisabled\"\r\n [width]=\"column.width\"\r\n [ngClass]=\"{ 'text-end': column.textAlign && column.textAlign === 'end' }\"\r\n [arrowPosition]=\"column.textAlign && column.textAlign === 'end' ? 'before' : 'after'\">\r\n {{ column.title }}\r\n </th>\r\n </ng-container>\r\n\r\n <td mat-cell *matCellDef=\"let row\" [ngClass]=\"{ 'text-end': column.textAlign && column.textAlign === 'end' }\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n column.template ? column.template : cellTemplate;\r\n context: { $implicit: row, column: column }\r\n \"></ng-container>\r\n </td>\r\n </ng-container>\r\n }\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\r\n <tr\r\n mat-row\r\n *matRowDef=\"let row; columns: displayedColumns\"\r\n (click)=\"onRowClick(row)\"\r\n [ngClass]=\"rowClass(row)\"\r\n (contextmenu)=\"onContextMenu($event, row)\"></tr>\r\n\r\n <tr class=\"mat-row\" *matNoDataRow>\r\n <td class=\"mat-cell\" [colSpan]=\"displayedColumns.length\">\r\n @if (dataSource && (dataSource.error$ | async)) {\r\n <bdb-alert-error-response [value]=\"dataSource.error$ | async\"> </bdb-alert-error-response>\r\n } @else {\r\n <ng-container *ngTemplateOutlet=\"noData\"></ng-container>\r\n }\r\n </td>\r\n </tr>\r\n </table>\r\n }\r\n</div>\r\n\r\n<ng-content></ng-content>\r\n\r\n<ng-template #cellTemplate let-row let-column=\"column\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n column.pipe ? pipedCellTemplate : defaultCellTemplate;\r\n context: { $implicit: row, column: column }\r\n \"></ng-container>\r\n</ng-template>\r\n\r\n<ng-template #pipedCellTemplate let-column=\"column\" let-row>\r\n {{ column.field(row) | dynamicPipe: column.pipe : null }}\r\n</ng-template>\r\n\r\n<ng-template #defaultCellTemplate let-row let-column=\"column\">\r\n @switch (column.type) {\r\n @case (columnType.String) {\r\n {{ column.field(row) }}\r\n }\r\n @case (columnType.Number) {\r\n {{ column.field(row) | number: column.format }}\r\n }\r\n @case (columnType.Percentage) {\r\n {{ column.field(row) | percent: column.digitsInfo : column.locale }}\r\n }\r\n @case (columnType.Currency) {\r\n {{ column.field(row) | currency: column.currencyCode : column.display : column.digitsInfo : column.locale }}\r\n }\r\n @case (columnType.Date) {\r\n {{ column.field(row) | date: column.format }}\r\n }\r\n @case (columnType.Boolean) {\r\n <bdb-boolean-display [value]=\"column.field(row)\"></bdb-boolean-display>\r\n }\r\n @case (columnType.Enum) {\r\n {{ column.field(row) }}\r\n }\r\n @case (columnType.Custom) {\r\n *?*\r\n }\r\n @default {\r\n {{ column.field(row) | json }}\r\n }\r\n }\r\n</ng-template>\r\n\r\n<ng-template #noData>\r\n <div class=\"no-data\"><em>Geen gegevens gevonden</em></div>\r\n</ng-template>\r\n\r\n<div\r\n style=\"visibility: hidden; position: fixed\"\r\n [style.left]=\"contextMenuPosition.x\"\r\n [style.top]=\"contextMenuPosition.y\"\r\n [matMenuTriggerFor]=\"contextMenu\"></div>\r\n<mat-menu #contextMenu=\"matMenu\" #contextMenu2=\"matMenu\">\r\n <ng-template matMenuContent let-row=\"row\">\r\n @for (action of contextActions; track action) {\r\n @if (action.condition === undefined || action.condition(row)) {\r\n <button mat-menu-item (click)=\"onContextMenuAction(action, row)\">\r\n <mat-icon [color]=\"action.color\">{{ action.icon }}</mat-icon> {{ action.label }}\r\n </button>\r\n }\r\n }\r\n </ng-template>\r\n</mat-menu>\r\n", styles: [".bdb-table{width:100%}.bdb-table.is-clickable tr:hover{cursor:pointer}.bdb-table-container{height:100%;overflow:auto}.bdb-table-container::-webkit-scrollbar{width:4px}.bdb-table-container::-webkit-scrollbar-thumb{background-color:#0003}.bdb-table-container::-webkit-scrollbar-track{background-color:#0000001a}.text-end{text-align:end}.no-data{color:#00000080;padding:8px}.mat-mdc-header-row .mat-mdc-header-cell{padding-left:8px;padding-right:8px}.mat-mdc-header-row .mat-mdc-header-cell:first-of-type{padding-left:24px}.mat-mdc-header-row .mat-mdc-header-cell:last-of-type{padding-right:24px}.mat-mdc-row .mat-mdc-cell{padding-left:8px;padding-right:8px}.mat-mdc-row .mat-mdc-cell:first-of-type{padding-left:24px}.mat-mdc-row .mat-mdc-cell:last-of-type{padding-right:24px}.mat-column-selection{width:48px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i2$1.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i2$1.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i2$1.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i2$1.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i2$1.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i2$1.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i2$1.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i2$1.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i2$1.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i2$1.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "directive", type: i2$1.MatNoDataRow, selector: "ng-template[matNoDataRow]" }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i3$1.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: MatSortModule }, { kind: "directive", type: i4.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i4.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: BdbAlertErrorResponseComponent, selector: "bdb-alert-error-response", inputs: ["value", "dismissable"], outputs: ["dismiss"] }, { kind: "component", type: BdbBooleanDisplayComponent, selector: "bdb-boolean-display", inputs: ["value"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i5.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i5.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i5.MatMenuContent, selector: "ng-template[matMenuContent]" }, { kind: "directive", type: i5.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.JsonPipe, name: "json" }, { kind: "pipe", type: i1.DecimalPipe, name: "number" }, { kind: "pipe", type: i1.PercentPipe, name: "percent" }, { kind: "pipe", type: i1.CurrencyPipe, name: "currency" }, { kind: "pipe", type: i1.DatePipe, name: "date" }, { kind: "pipe", type: DynamicPipe, name: "dynamicPipe" }] }); }
|
|
1005
1050
|
}
|
|
1006
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1051
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbTableComponent, decorators: [{
|
|
1007
1052
|
type: Component,
|
|
1008
1053
|
args: [{ selector: 'bdb-table[dataSource]', imports: [
|
|
1009
1054
|
CommonModule,
|
|
@@ -1015,7 +1060,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.3", ngImpor
|
|
|
1015
1060
|
BdbBooleanDisplayComponent,
|
|
1016
1061
|
MatMenuModule,
|
|
1017
1062
|
MatIconModule,
|
|
1018
|
-
], template: "<div class=\"bdb-table-container\">\r\n @if (dataSource) {\r\n <table\r\n mat-table\r\n class=\"bdb-table\"\r\n [class.is-clickable]=\"isClickable\"\r\n [dataSource]=\"dataSource\"\r\n matSort\r\n (matSortChange)=\"sortData($event)\"\r\n [trackBy]=\"trackById\">\r\n <ng-container matColumnDef=\"selection\">\r\n <th mat-header-cell *matHeaderCellDef>\r\n @if (selection) {\r\n <mat-checkbox\r\n (change)=\"$event ? toggleAllRows() : null\"\r\n [checked]=\"selection.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"anySelected() && !isAllSelected()\"\r\n
|
|
1063
|
+
], template: "<div class=\"bdb-table-container\">\r\n @if (dataSource) {\r\n <table\r\n mat-table\r\n class=\"bdb-table\"\r\n [class.is-clickable]=\"isClickable\"\r\n [dataSource]=\"dataSource\"\r\n matSort\r\n (matSortChange)=\"sortData($event)\"\r\n [trackBy]=\"trackById\">\r\n <ng-container matColumnDef=\"selection\">\r\n <th mat-header-cell *matHeaderCellDef>\r\n @if (selection) {\r\n <mat-checkbox\r\n (change)=\"$event ? toggleAllRows() : null\"\r\n [checked]=\"selection.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"anySelected() && !isAllSelected()\"\r\n class=\"primary\">\r\n </mat-checkbox>\r\n }\r\n </th>\r\n <td mat-cell *matCellDef=\"let row\">\r\n @if (selection) {\r\n <mat-checkbox\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"$event ? selection.toggle(row) : null\"\r\n [checked]=\"selection.isSelected(row)\"\r\n class=\"accent\">\r\n </mat-checkbox>\r\n }\r\n </td>\r\n </ng-container>\r\n\r\n @for (column of columns; track column) {\r\n <ng-container [matColumnDef]=\"column.id\">\r\n <ng-container>\r\n <th\r\n mat-header-cell\r\n *matHeaderCellDef\r\n mat-sort-header=\"{{ column.id }}\"\r\n [disabled]=\"column.sortDisabled\"\r\n [width]=\"column.width\"\r\n [ngClass]=\"{ 'text-end': column.textAlign && column.textAlign === 'end' }\"\r\n [arrowPosition]=\"column.textAlign && column.textAlign === 'end' ? 'before' : 'after'\">\r\n {{ column.title }}\r\n </th>\r\n </ng-container>\r\n\r\n <td mat-cell *matCellDef=\"let row\" [ngClass]=\"{ 'text-end': column.textAlign && column.textAlign === 'end' }\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n column.template ? column.template : cellTemplate;\r\n context: { $implicit: row, column: column }\r\n \"></ng-container>\r\n </td>\r\n </ng-container>\r\n }\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\r\n <tr\r\n mat-row\r\n *matRowDef=\"let row; columns: displayedColumns\"\r\n (click)=\"onRowClick(row)\"\r\n [ngClass]=\"rowClass(row)\"\r\n (contextmenu)=\"onContextMenu($event, row)\"></tr>\r\n\r\n <tr class=\"mat-row\" *matNoDataRow>\r\n <td class=\"mat-cell\" [colSpan]=\"displayedColumns.length\">\r\n @if (dataSource && (dataSource.error$ | async)) {\r\n <bdb-alert-error-response [value]=\"dataSource.error$ | async\"> </bdb-alert-error-response>\r\n } @else {\r\n <ng-container *ngTemplateOutlet=\"noData\"></ng-container>\r\n }\r\n </td>\r\n </tr>\r\n </table>\r\n }\r\n</div>\r\n\r\n<ng-content></ng-content>\r\n\r\n<ng-template #cellTemplate let-row let-column=\"column\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n column.pipe ? pipedCellTemplate : defaultCellTemplate;\r\n context: { $implicit: row, column: column }\r\n \"></ng-container>\r\n</ng-template>\r\n\r\n<ng-template #pipedCellTemplate let-column=\"column\" let-row>\r\n {{ column.field(row) | dynamicPipe: column.pipe : null }}\r\n</ng-template>\r\n\r\n<ng-template #defaultCellTemplate let-row let-column=\"column\">\r\n @switch (column.type) {\r\n @case (columnType.String) {\r\n {{ column.field(row) }}\r\n }\r\n @case (columnType.Number) {\r\n {{ column.field(row) | number: column.format }}\r\n }\r\n @case (columnType.Percentage) {\r\n {{ column.field(row) | percent: column.digitsInfo : column.locale }}\r\n }\r\n @case (columnType.Currency) {\r\n {{ column.field(row) | currency: column.currencyCode : column.display : column.digitsInfo : column.locale }}\r\n }\r\n @case (columnType.Date) {\r\n {{ column.field(row) | date: column.format }}\r\n }\r\n @case (columnType.Boolean) {\r\n <bdb-boolean-display [value]=\"column.field(row)\"></bdb-boolean-display>\r\n }\r\n @case (columnType.Enum) {\r\n {{ column.field(row) }}\r\n }\r\n @case (columnType.Custom) {\r\n *?*\r\n }\r\n @default {\r\n {{ column.field(row) | json }}\r\n }\r\n }\r\n</ng-template>\r\n\r\n<ng-template #noData>\r\n <div class=\"no-data\"><em>Geen gegevens gevonden</em></div>\r\n</ng-template>\r\n\r\n<div\r\n style=\"visibility: hidden; position: fixed\"\r\n [style.left]=\"contextMenuPosition.x\"\r\n [style.top]=\"contextMenuPosition.y\"\r\n [matMenuTriggerFor]=\"contextMenu\"></div>\r\n<mat-menu #contextMenu=\"matMenu\" #contextMenu2=\"matMenu\">\r\n <ng-template matMenuContent let-row=\"row\">\r\n @for (action of contextActions; track action) {\r\n @if (action.condition === undefined || action.condition(row)) {\r\n <button mat-menu-item (click)=\"onContextMenuAction(action, row)\">\r\n <mat-icon [color]=\"action.color\">{{ action.icon }}</mat-icon> {{ action.label }}\r\n </button>\r\n }\r\n }\r\n </ng-template>\r\n</mat-menu>\r\n", styles: [".bdb-table{width:100%}.bdb-table.is-clickable tr:hover{cursor:pointer}.bdb-table-container{height:100%;overflow:auto}.bdb-table-container::-webkit-scrollbar{width:4px}.bdb-table-container::-webkit-scrollbar-thumb{background-color:#0003}.bdb-table-container::-webkit-scrollbar-track{background-color:#0000001a}.text-end{text-align:end}.no-data{color:#00000080;padding:8px}.mat-mdc-header-row .mat-mdc-header-cell{padding-left:8px;padding-right:8px}.mat-mdc-header-row .mat-mdc-header-cell:first-of-type{padding-left:24px}.mat-mdc-header-row .mat-mdc-header-cell:last-of-type{padding-right:24px}.mat-mdc-row .mat-mdc-cell{padding-left:8px;padding-right:8px}.mat-mdc-row .mat-mdc-cell:first-of-type{padding-left:24px}.mat-mdc-row .mat-mdc-cell:last-of-type{padding-right:24px}.mat-column-selection{width:48px}\n"] }]
|
|
1019
1064
|
}], propDecorators: { columns: [{
|
|
1020
1065
|
type: Input
|
|
1021
1066
|
}], dataSource: [{
|
|
@@ -1038,13 +1083,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.3", ngImpor
|
|
|
1038
1083
|
type: Output
|
|
1039
1084
|
}], contextAction: [{
|
|
1040
1085
|
type: Output
|
|
1041
|
-
}], contextMenu: [{
|
|
1042
|
-
type: ViewChild,
|
|
1043
|
-
args: [MatMenuTrigger]
|
|
1044
|
-
}], cellTemplates: [{
|
|
1045
|
-
type: ContentChildren,
|
|
1046
|
-
args: [BdbCellDirective, { descendants: true }]
|
|
1047
|
-
}], rowColor: [{
|
|
1086
|
+
}], contextMenu: [{ type: i0.ViewChild, args: [i0.forwardRef(() => MatMenuTrigger), { isSignal: true }] }], cellTemplates: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => BdbCellDirective), { ...{ descendants: true }, isSignal: true }] }], rowColor: [{
|
|
1048
1087
|
type: Input
|
|
1049
1088
|
}] } });
|
|
1050
1089
|
|
|
@@ -1057,93 +1096,477 @@ class BdbFullTableComponent {
|
|
|
1057
1096
|
this.showToolbar = true;
|
|
1058
1097
|
this.rowClick = new EventEmitter();
|
|
1059
1098
|
this.contextAction = new EventEmitter();
|
|
1099
|
+
this.cellTemplates = contentChildren(BdbCellDirective, { ...(ngDevMode ? { debugName: "cellTemplates" } : {}), descendants: true });
|
|
1100
|
+
}
|
|
1101
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbFullTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1102
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.0", type: BdbFullTableComponent, isStandalone: true, selector: "bdb-full-table", inputs: { dataSource: "dataSource", columns: "columns", displayedColumns: "displayedColumns", autoLoad: "autoLoad", selection: "selection", contextActions: "contextActions", rowColor: "rowColor", showToolbar: "showToolbar" }, outputs: { rowClick: "rowClick", contextAction: "contextAction" }, queries: [{ propertyName: "cellTemplates", predicate: BdbCellDirective, descendants: true, isSignal: true }], ngImport: i0, template: "@if (showToolbar) {\r\n <mat-toolbar>\r\n <div bdbFlex=\"row 8px start center\">\r\n <ng-content select=\"toolbar-item\"></ng-content>\r\n </div>\r\n <bdb-query-input [dataSource]=\"dataSource\"></bdb-query-input>\r\n </mat-toolbar>\r\n}\r\n<bdb-table\r\n [columns]=\"columns\"\r\n [dataSource]=\"dataSource\"\r\n [autoLoad]=\"autoLoad\"\r\n [displayedColumns]=\"displayedColumns\"\r\n [selection]=\"selection\"\r\n [rowColor]=\"rowColor\"\r\n [contextActions]=\"contextActions\"\r\n (contextAction)=\"contextAction.emit($event)\"\r\n (rowClick)=\"rowClick.emit($event)\">\r\n @for (cellTemplate of cellTemplates(); track cellTemplate.bdbCellDef) {\r\n <ng-template bdbCellDef=\"{{ cellTemplate.bdbCellDef }}\" let-element>\r\n <ng-container *ngTemplateOutlet=\"cellTemplate.templateRef; context: { $implicit: element }\"></ng-container>\r\n </ng-template>\r\n }\r\n</bdb-table>\r\n<bdb-paginator [dataSource]=\"dataSource\"></bdb-paginator>\r\n", styles: [":host{display:flex;flex-direction:column;justify-content:stretch;flex:0 1 100%}:host mat-toolbar{flex:0 0 auto;display:flex;flex-direction:row;gap:8px;justify-content:space-between;align-items:center}:host bdb-table{display:contents;flex:0 1 100%}:host bdb-query-input{--mdc-filled-text-field-container-color: var(--mat-sys-surface-container-lowest)}:host bdb-paginator{flex:0 0 auto}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: BdbFlexDirective, selector: "[bdbFlex], [bdbFlexDirection], [bdbFlexGap], [bdbFlexSpacing]", inputs: ["bdbFlex", "bdbFlexDirection", "bdbFlexGap", "bdbFlexSpacing"] }, { kind: "ngmodule", type: MatToolbarModule }, { kind: "component", type: i2$2.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "component", type: BdbQueryInputComponent, selector: "bdb-query-input[dataSource]", inputs: ["dataSource"] }, { kind: "component", type: BdbPaginatorComponent, selector: "bdb-paginator", inputs: ["dataSource"] }, { kind: "component", type: BdbTableComponent, selector: "bdb-table[dataSource]", inputs: ["columns", "dataSource", "autoLoad", "displayedColumns", "contextActions", "selection", "selectOnRowClick", "selectedRowClass", "isClickable", "rowColor"], outputs: ["rowClick", "contextAction"] }, { kind: "directive", type: BdbCellDirective, selector: "ng-template[bdbCellDef]", inputs: ["bdbCellDef"] }] }); }
|
|
1103
|
+
}
|
|
1104
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbFullTableComponent, decorators: [{
|
|
1105
|
+
type: Component,
|
|
1106
|
+
args: [{ selector: 'bdb-full-table', imports: [
|
|
1107
|
+
CommonModule,
|
|
1108
|
+
BdbFlexDirective,
|
|
1109
|
+
MatToolbarModule,
|
|
1110
|
+
BdbQueryInputComponent,
|
|
1111
|
+
BdbPaginatorComponent,
|
|
1112
|
+
BdbTableComponent,
|
|
1113
|
+
BdbCellDirective,
|
|
1114
|
+
], template: "@if (showToolbar) {\r\n <mat-toolbar>\r\n <div bdbFlex=\"row 8px start center\">\r\n <ng-content select=\"toolbar-item\"></ng-content>\r\n </div>\r\n <bdb-query-input [dataSource]=\"dataSource\"></bdb-query-input>\r\n </mat-toolbar>\r\n}\r\n<bdb-table\r\n [columns]=\"columns\"\r\n [dataSource]=\"dataSource\"\r\n [autoLoad]=\"autoLoad\"\r\n [displayedColumns]=\"displayedColumns\"\r\n [selection]=\"selection\"\r\n [rowColor]=\"rowColor\"\r\n [contextActions]=\"contextActions\"\r\n (contextAction)=\"contextAction.emit($event)\"\r\n (rowClick)=\"rowClick.emit($event)\">\r\n @for (cellTemplate of cellTemplates(); track cellTemplate.bdbCellDef) {\r\n <ng-template bdbCellDef=\"{{ cellTemplate.bdbCellDef }}\" let-element>\r\n <ng-container *ngTemplateOutlet=\"cellTemplate.templateRef; context: { $implicit: element }\"></ng-container>\r\n </ng-template>\r\n }\r\n</bdb-table>\r\n<bdb-paginator [dataSource]=\"dataSource\"></bdb-paginator>\r\n", styles: [":host{display:flex;flex-direction:column;justify-content:stretch;flex:0 1 100%}:host mat-toolbar{flex:0 0 auto;display:flex;flex-direction:row;gap:8px;justify-content:space-between;align-items:center}:host bdb-table{display:contents;flex:0 1 100%}:host bdb-query-input{--mdc-filled-text-field-container-color: var(--mat-sys-surface-container-lowest)}:host bdb-paginator{flex:0 0 auto}\n"] }]
|
|
1115
|
+
}], propDecorators: { dataSource: [{
|
|
1116
|
+
type: Input
|
|
1117
|
+
}], columns: [{
|
|
1118
|
+
type: Input
|
|
1119
|
+
}], displayedColumns: [{
|
|
1120
|
+
type: Input
|
|
1121
|
+
}], autoLoad: [{
|
|
1122
|
+
type: Input
|
|
1123
|
+
}], selection: [{
|
|
1124
|
+
type: Input
|
|
1125
|
+
}], contextActions: [{
|
|
1126
|
+
type: Input
|
|
1127
|
+
}], rowColor: [{
|
|
1128
|
+
type: Input
|
|
1129
|
+
}], showToolbar: [{
|
|
1130
|
+
type: Input
|
|
1131
|
+
}], rowClick: [{
|
|
1132
|
+
type: Output
|
|
1133
|
+
}], contextAction: [{
|
|
1134
|
+
type: Output
|
|
1135
|
+
}], cellTemplates: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => BdbCellDirective), { ...{ descendants: true }, isSignal: true }] }] } });
|
|
1136
|
+
|
|
1137
|
+
class BdbPaginatorV2Component {
|
|
1138
|
+
constructor() {
|
|
1139
|
+
this.dataSource = input.required(...(ngDevMode ? [{ debugName: "dataSource" }] : []));
|
|
1140
|
+
this._onDestroy = new Subject();
|
|
1141
|
+
this._disabled = false;
|
|
1142
|
+
}
|
|
1143
|
+
set disabled(disabled) {
|
|
1144
|
+
this._disabled = disabled;
|
|
1145
|
+
}
|
|
1146
|
+
get disabled() {
|
|
1147
|
+
return this._disabled;
|
|
1148
|
+
}
|
|
1149
|
+
ngOnInit() {
|
|
1150
|
+
this.dataSource()
|
|
1151
|
+
.response$.pipe(takeUntil(this._onDestroy))
|
|
1152
|
+
.subscribe({
|
|
1153
|
+
next: (x) => {
|
|
1154
|
+
if (x === undefined) {
|
|
1155
|
+
this.disabled = true;
|
|
1156
|
+
}
|
|
1157
|
+
else {
|
|
1158
|
+
this.disabled = false;
|
|
1159
|
+
this.pageSize = x.pageSize;
|
|
1160
|
+
this.page = x.page;
|
|
1161
|
+
this.length = x.count;
|
|
1162
|
+
}
|
|
1163
|
+
},
|
|
1164
|
+
});
|
|
1165
|
+
}
|
|
1166
|
+
ngOnDestroy() {
|
|
1167
|
+
this._onDestroy.next();
|
|
1168
|
+
this._onDestroy.complete();
|
|
1169
|
+
}
|
|
1170
|
+
changePage(event) {
|
|
1171
|
+
this.dataSource().page = event.pageIndex;
|
|
1172
|
+
this.dataSource().pageSize = event.pageSize;
|
|
1173
|
+
this.dataSource().load();
|
|
1174
|
+
}
|
|
1175
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbPaginatorV2Component, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1176
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.1.0", type: BdbPaginatorV2Component, isStandalone: true, selector: "bdb-paginator-v2", inputs: { dataSource: { classPropertyName: "dataSource", publicName: "dataSource", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "<mat-paginator\r\n [pageSize]=\"pageSize\"\r\n [pageIndex]=\"page\"\r\n [length]=\"length\"\r\n [disabled]=\"disabled\"\r\n (page)=\"changePage($event)\"\r\n [pageSizeOptions]=\"[5, 10, 15, 20, 25]\"\r\n [hidePageSize]=\"true\">\r\n</mat-paginator>\r\n", styles: [":host{--mat-paginator-container-background-color: transparent}\n"], dependencies: [{ kind: "ngmodule", type: MatPaginatorModule }, { kind: "component", type: i1$3.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }] }); }
|
|
1177
|
+
}
|
|
1178
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbPaginatorV2Component, decorators: [{
|
|
1179
|
+
type: Component,
|
|
1180
|
+
args: [{ selector: 'bdb-paginator-v2', imports: [MatPaginatorModule], template: "<mat-paginator\r\n [pageSize]=\"pageSize\"\r\n [pageIndex]=\"page\"\r\n [length]=\"length\"\r\n [disabled]=\"disabled\"\r\n (page)=\"changePage($event)\"\r\n [pageSizeOptions]=\"[5, 10, 15, 20, 25]\"\r\n [hidePageSize]=\"true\">\r\n</mat-paginator>\r\n", styles: [":host{--mat-paginator-container-background-color: transparent}\n"] }]
|
|
1181
|
+
}], propDecorators: { dataSource: [{ type: i0.Input, args: [{ isSignal: true, alias: "dataSource", required: true }] }] } });
|
|
1182
|
+
|
|
1183
|
+
class BdbQueryInputV2Component {
|
|
1184
|
+
constructor() {
|
|
1185
|
+
this.class = 'bdb-query-input';
|
|
1186
|
+
this.dataSource = input.required(...(ngDevMode ? [{ debugName: "dataSource" }] : []));
|
|
1187
|
+
this.queryFormControl = new FormControl(undefined, { nonNullable: true });
|
|
1188
|
+
this.queryFormControl.valueChanges.pipe(debounceTime(100), distinctUntilChanged(), takeUntilDestroyed()).subscribe({
|
|
1189
|
+
next: x => {
|
|
1190
|
+
const dataSource = this.dataSource();
|
|
1191
|
+
if (dataSource) {
|
|
1192
|
+
dataSource.query = x;
|
|
1193
|
+
dataSource.page = 0;
|
|
1194
|
+
dataSource.load();
|
|
1195
|
+
}
|
|
1196
|
+
},
|
|
1197
|
+
});
|
|
1198
|
+
effect(() => {
|
|
1199
|
+
const dataSource = this.dataSource();
|
|
1200
|
+
this.queryFormControl.setValue(dataSource.query, { emitEvent: false });
|
|
1201
|
+
});
|
|
1202
|
+
}
|
|
1203
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbQueryInputV2Component, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1204
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.0", type: BdbQueryInputV2Component, isStandalone: true, selector: "bdb-query-input-v2[dataSource]", inputs: { dataSource: { classPropertyName: "dataSource", publicName: "dataSource", isSignal: true, isRequired: true, transformFunction: null } }, host: { properties: { "class": "this.class" } }, ngImport: i0, template: "<input spellcheck=\"false\" autocomplete=\"false\" [formControl]=\"queryFormControl\" />\r\n@if (queryFormControl.value) {\r\n <mat-icon (click)=\"queryFormControl.patchValue(undefined)\" class=\"warn\">clear</mat-icon>\r\n} @else {\r\n <mat-icon class=\"info\">search</mat-icon>\r\n}\r\n", styles: [":host{display:inline-flex;border-radius:4px;min-height:36px;max-width:100%;flex-direction:row;align-items:center;color:var(--mat-sys-on-surface);background-color:var(--mat-sys-surface);border:1px solid var(--mat-sys-outline-variant)}:host:focus-within{border-color:var(--mat-sys-outline)}input{background:inherit;border:none;outline:none;padding:4px;font-size:1rem;min-width:40px;min-height:auto}.mat-icon{flex:24px 0 0}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
|
|
1205
|
+
}
|
|
1206
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbQueryInputV2Component, decorators: [{
|
|
1207
|
+
type: Component,
|
|
1208
|
+
args: [{ selector: 'bdb-query-input-v2[dataSource]', imports: [ReactiveFormsModule, MatIconModule], template: "<input spellcheck=\"false\" autocomplete=\"false\" [formControl]=\"queryFormControl\" />\r\n@if (queryFormControl.value) {\r\n <mat-icon (click)=\"queryFormControl.patchValue(undefined)\" class=\"warn\">clear</mat-icon>\r\n} @else {\r\n <mat-icon class=\"info\">search</mat-icon>\r\n}\r\n", styles: [":host{display:inline-flex;border-radius:4px;min-height:36px;max-width:100%;flex-direction:row;align-items:center;color:var(--mat-sys-on-surface);background-color:var(--mat-sys-surface);border:1px solid var(--mat-sys-outline-variant)}:host:focus-within{border-color:var(--mat-sys-outline)}input{background:inherit;border:none;outline:none;padding:4px;font-size:1rem;min-width:40px;min-height:auto}.mat-icon{flex:24px 0 0}\n"] }]
|
|
1209
|
+
}], ctorParameters: () => [], propDecorators: { class: [{
|
|
1210
|
+
type: HostBinding,
|
|
1211
|
+
args: ['class']
|
|
1212
|
+
}], dataSource: [{ type: i0.Input, args: [{ isSignal: true, alias: "dataSource", required: true }] }] } });
|
|
1213
|
+
|
|
1214
|
+
class BdbTableV2Component {
|
|
1215
|
+
constructor() {
|
|
1216
|
+
this.dataSource = input.required(...(ngDevMode ? [{ debugName: "dataSource" }] : []));
|
|
1217
|
+
this.columns = input.required(...(ngDevMode ? [{ debugName: "columns" }] : []));
|
|
1218
|
+
this.displayedColumns = input([], ...(ngDevMode ? [{ debugName: "displayedColumns" }] : []));
|
|
1219
|
+
this.activeColumns = computed(() => {
|
|
1220
|
+
let ret = [];
|
|
1221
|
+
const columns = this.columns();
|
|
1222
|
+
const displayedColumns = this.displayedColumns();
|
|
1223
|
+
const selection = this.selection();
|
|
1224
|
+
if (columns && !displayedColumns.length) {
|
|
1225
|
+
ret = columns.map(x => x.id);
|
|
1226
|
+
}
|
|
1227
|
+
else {
|
|
1228
|
+
ret = [...displayedColumns];
|
|
1229
|
+
}
|
|
1230
|
+
if (selection && selection.isMultipleSelection() && !(displayedColumns[0] === 'selection')) {
|
|
1231
|
+
ret.unshift('selection');
|
|
1232
|
+
}
|
|
1233
|
+
return ret;
|
|
1234
|
+
}, ...(ngDevMode ? [{ debugName: "activeColumns" }] : []));
|
|
1235
|
+
this.selection = input(...(ngDevMode ? [undefined, { debugName: "selection" }] : []));
|
|
1236
|
+
this.selectOnRowClick = input(true, ...(ngDevMode ? [{ debugName: "selectOnRowClick" }] : []));
|
|
1237
|
+
this.contextActions = input([], ...(ngDevMode ? [{ debugName: "contextActions" }] : []));
|
|
1238
|
+
this.contextAction = output();
|
|
1239
|
+
this.rowColor = input(...(ngDevMode ? [undefined, { debugName: "rowColor" }] : []));
|
|
1240
|
+
this.error = input(undefined, ...(ngDevMode ? [{ debugName: "error" }] : []));
|
|
1241
|
+
this.rowClick = output();
|
|
1242
|
+
this.matSortDisabled = input(false, ...(ngDevMode ? [{ debugName: "matSortDisabled" }] : []));
|
|
1243
|
+
this.sortChange = output();
|
|
1244
|
+
this.contextMenu = viewChild.required(MatMenuTrigger);
|
|
1245
|
+
this.cellTemplates = contentChildren(BdbCellDirective, { ...(ngDevMode ? { debugName: "cellTemplates" } : {}), descendants: true });
|
|
1246
|
+
this.columnType = BdbColumnType;
|
|
1247
|
+
this.contextMenuPosition = { x: '0px', y: '0px' };
|
|
1248
|
+
this.trackBy = input((_, x) => {
|
|
1249
|
+
return x['id'];
|
|
1250
|
+
}, ...(ngDevMode ? [{ debugName: "trackBy" }] : []));
|
|
1251
|
+
}
|
|
1252
|
+
ngAfterContentInit() {
|
|
1253
|
+
this.setColumnTemplates();
|
|
1254
|
+
}
|
|
1255
|
+
setColumnTemplates() {
|
|
1256
|
+
const columns = this.columns();
|
|
1257
|
+
const templates = this.cellTemplates();
|
|
1258
|
+
if (templates == undefined || !templates?.length) {
|
|
1259
|
+
return;
|
|
1260
|
+
}
|
|
1261
|
+
if (columns && columns.length) {
|
|
1262
|
+
columns.forEach(x => {
|
|
1263
|
+
const tpl = templates.filter(y => y.bdbCellDef === x.id)[0];
|
|
1264
|
+
if (tpl) {
|
|
1265
|
+
x.template = tpl.templateRef;
|
|
1266
|
+
}
|
|
1267
|
+
});
|
|
1268
|
+
}
|
|
1269
|
+
}
|
|
1270
|
+
onRowClick(row) {
|
|
1271
|
+
const selection = this.selection();
|
|
1272
|
+
if (selection && this.selectOnRowClick()) {
|
|
1273
|
+
selection.toggle(row);
|
|
1274
|
+
}
|
|
1275
|
+
this.rowClick.emit(row);
|
|
1276
|
+
}
|
|
1277
|
+
// SORT
|
|
1278
|
+
// sortData(event: Sort): void {
|
|
1279
|
+
// const dataSource = this.dataSource();
|
|
1280
|
+
// const column = this.columns.find(x => x.id === event.active);
|
|
1281
|
+
// if (column && dataSource) {
|
|
1282
|
+
// dataSource.sortField = column.id;
|
|
1283
|
+
// dataSource.sortDirection = event.direction === '' ? 'asc' : (event.direction as 'asc' | 'desc');
|
|
1284
|
+
// dataSource.load();
|
|
1285
|
+
// }
|
|
1286
|
+
// }
|
|
1287
|
+
// CONTEXT MENU
|
|
1288
|
+
onContextMenu(event, row) {
|
|
1289
|
+
event.preventDefault();
|
|
1290
|
+
const contextActions = this.contextActions();
|
|
1291
|
+
const contextMenu = this.contextMenu();
|
|
1292
|
+
if (contextActions && contextActions.length && contextMenu) {
|
|
1293
|
+
this.contextMenuPosition.x = event.clientX + 'px';
|
|
1294
|
+
this.contextMenuPosition.y = event.clientY + 'px';
|
|
1295
|
+
contextMenu.menuData = { row: row };
|
|
1296
|
+
if (contextMenu.menu) {
|
|
1297
|
+
contextMenu.menu.focusFirstItem('mouse');
|
|
1298
|
+
}
|
|
1299
|
+
contextMenu.openMenu();
|
|
1300
|
+
}
|
|
1301
|
+
}
|
|
1302
|
+
isAllSelected() {
|
|
1303
|
+
const selection = this.selection();
|
|
1304
|
+
if (!selection) {
|
|
1305
|
+
return false;
|
|
1306
|
+
}
|
|
1307
|
+
return this.dataSource()?.every((x) => selection.isSelected(x)) ?? false;
|
|
1308
|
+
}
|
|
1309
|
+
anySelected() {
|
|
1310
|
+
const selection = this.selection();
|
|
1311
|
+
if (!selection) {
|
|
1312
|
+
return false;
|
|
1313
|
+
}
|
|
1314
|
+
return this.dataSource()?.some((x) => selection.isSelected(x)) ?? false;
|
|
1315
|
+
}
|
|
1316
|
+
toggleAllRows() {
|
|
1317
|
+
const selection = this.selection();
|
|
1318
|
+
if (!(selection && this.dataSource)) {
|
|
1319
|
+
return;
|
|
1320
|
+
}
|
|
1321
|
+
if (this.isAllSelected()) {
|
|
1322
|
+
selection.deselect(...this.dataSource());
|
|
1323
|
+
}
|
|
1324
|
+
else {
|
|
1325
|
+
selection.select(...this.dataSource());
|
|
1326
|
+
}
|
|
1327
|
+
}
|
|
1328
|
+
rowClass(row) {
|
|
1329
|
+
const selection = this.selection();
|
|
1330
|
+
const rowColorFx = this.rowColor();
|
|
1331
|
+
if (!(this.selection || rowColorFx)) {
|
|
1332
|
+
return undefined;
|
|
1333
|
+
}
|
|
1334
|
+
const ret = {};
|
|
1335
|
+
if (selection) {
|
|
1336
|
+
ret['selected'] = selection.isSelected(row);
|
|
1337
|
+
}
|
|
1338
|
+
if (rowColorFx) {
|
|
1339
|
+
const palette = rowColorFx(row);
|
|
1340
|
+
if (palette) {
|
|
1341
|
+
ret['bdb-' + palette] = true;
|
|
1342
|
+
}
|
|
1343
|
+
else if (selection) {
|
|
1344
|
+
return undefined;
|
|
1345
|
+
}
|
|
1346
|
+
}
|
|
1347
|
+
return ret;
|
|
1348
|
+
}
|
|
1349
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbTableV2Component, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1350
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.0", type: BdbTableV2Component, isStandalone: true, selector: "bdb-table-v2", inputs: { dataSource: { classPropertyName: "dataSource", publicName: "dataSource", isSignal: true, isRequired: true, transformFunction: null }, columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: true, transformFunction: null }, displayedColumns: { classPropertyName: "displayedColumns", publicName: "displayedColumns", isSignal: true, isRequired: false, transformFunction: null }, selection: { classPropertyName: "selection", publicName: "selection", isSignal: true, isRequired: false, transformFunction: null }, selectOnRowClick: { classPropertyName: "selectOnRowClick", publicName: "selectOnRowClick", isSignal: true, isRequired: false, transformFunction: null }, contextActions: { classPropertyName: "contextActions", publicName: "contextActions", isSignal: true, isRequired: false, transformFunction: null }, rowColor: { classPropertyName: "rowColor", publicName: "rowColor", isSignal: true, isRequired: false, transformFunction: null }, error: { classPropertyName: "error", publicName: "error", isSignal: true, isRequired: false, transformFunction: null }, matSortDisabled: { classPropertyName: "matSortDisabled", publicName: "matSortDisabled", isSignal: true, isRequired: false, transformFunction: null }, trackBy: { classPropertyName: "trackBy", publicName: "trackBy", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { contextAction: "contextAction", rowClick: "rowClick", sortChange: "sortChange" }, queries: [{ propertyName: "cellTemplates", predicate: BdbCellDirective, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "contextMenu", first: true, predicate: MatMenuTrigger, descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"bdb-table-container\">\r\n @if (dataSource()) {\r\n <table\r\n mat-table\r\n class=\"bdb-table\"\r\n [dataSource]=\"dataSource()\"\r\n matSort\r\n [matSortDisabled]=\"matSortDisabled()\"\r\n disableClear=\"true\"\r\n (matSortChange)=\"sortChange.emit($event)\"\r\n [trackBy]=\"trackBy()\">\r\n <ng-container matColumnDef=\"selection\">\r\n <th mat-header-cell *matHeaderCellDef>\r\n @if (selection()) {\r\n <mat-checkbox\r\n (change)=\"$event ? toggleAllRows() : null\"\r\n [checked]=\"selection()?.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"anySelected() && !isAllSelected()\"\r\n class=\"primary\">\r\n </mat-checkbox>\r\n }\r\n </th>\r\n <td mat-cell *matCellDef=\"let row\">\r\n @if (selection()) {\r\n <mat-checkbox\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"$event ? selection()?.toggle(row) : null\"\r\n [checked]=\"selection()?.isSelected(row)\"\r\n class=\"accent\">\r\n </mat-checkbox>\r\n }\r\n </td>\r\n </ng-container>\r\n\r\n @for (column of columns(); track column) {\r\n <ng-container [matColumnDef]=\"column.id\">\r\n <ng-container>\r\n <th\r\n mat-header-cell\r\n *matHeaderCellDef\r\n mat-sort-header=\"{{ column.id }}\"\r\n [disabled]=\"column.sortDisabled\"\r\n [width]=\"column.width\"\r\n [ngClass]=\"{ 'text-end': column.textAlign && column.textAlign === 'end' }\"\r\n [arrowPosition]=\"column.textAlign && column.textAlign === 'end' ? 'before' : 'after'\">\r\n {{ column.title }}\r\n </th>\r\n </ng-container>\r\n\r\n <td mat-cell *matCellDef=\"let row\" [ngClass]=\"{ 'text-end': column.textAlign && column.textAlign === 'end' }\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n column.template ? column.template : cellTemplate;\r\n context: { $implicit: row, column: column }\r\n \"></ng-container>\r\n </td>\r\n </ng-container>\r\n }\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"activeColumns(); sticky: true\"></tr>\r\n <tr\r\n mat-row\r\n *matRowDef=\"let row; columns: activeColumns()\"\r\n (click)=\"onRowClick(row)\"\r\n [ngClass]=\"rowClass(row)\"\r\n (contextmenu)=\"onContextMenu($event, row)\"></tr>\r\n\r\n <tr class=\"mat-row\" *matNoDataRow>\r\n <td class=\"mat-cell\" [colSpan]=\"activeColumns().length\">\r\n @if (error()) {\r\n <bdb-alert-error-response [value]=\"error()\"> </bdb-alert-error-response>\r\n } @else {\r\n <ng-container *ngTemplateOutlet=\"noData\"></ng-container>\r\n }\r\n </td>\r\n </tr>\r\n </table>\r\n }\r\n</div>\r\n\r\n<ng-content></ng-content>\r\n\r\n<ng-template #cellTemplate let-row let-column=\"column\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n column.pipe ? pipedCellTemplate : defaultCellTemplate;\r\n context: { $implicit: row, column: column }\r\n \"></ng-container>\r\n</ng-template>\r\n\r\n<ng-template #pipedCellTemplate let-column=\"column\" let-row>\r\n {{ column.field(row) | dynamicPipe: column.pipe : null }}\r\n</ng-template>\r\n\r\n<ng-template #defaultCellTemplate let-row let-column=\"column\">\r\n @switch (column.type) {\r\n @case (columnType.String) {\r\n {{ column.field(row) }}\r\n }\r\n @case (columnType.Number) {\r\n {{ column.field(row) | number: column.format }}\r\n }\r\n @case (columnType.Percentage) {\r\n {{ column.field(row) | percent: column.digitsInfo : column.locale }}\r\n }\r\n @case (columnType.Currency) {\r\n {{ column.field(row) | currency: column.currencyCode : column.display : column.digitsInfo : column.locale }}\r\n }\r\n @case (columnType.Date) {\r\n {{ column.field(row) | date: column.format }}\r\n }\r\n @case (columnType.Boolean) {\r\n <bdb-boolean-display [value]=\"column.field(row)\"></bdb-boolean-display>\r\n }\r\n @case (columnType.Enum) {\r\n {{ column.field(row) }}\r\n }\r\n @case (columnType.Custom) {\r\n *?*\r\n }\r\n @default {\r\n {{ column.field(row) | json }}\r\n }\r\n }\r\n</ng-template>\r\n\r\n<ng-template #noData>\r\n <div class=\"no-data\"><em>Geen gegevens gevonden</em></div>\r\n</ng-template>\r\n\r\n<div\r\n style=\"visibility: hidden; position: fixed\"\r\n [style.left]=\"contextMenuPosition.x\"\r\n [style.top]=\"contextMenuPosition.y\"\r\n [matMenuTriggerFor]=\"contextMenu\"></div>\r\n<mat-menu #contextMenu=\"matMenu\" #contextMenu2=\"matMenu\">\r\n <ng-template matMenuContent let-row=\"row\">\r\n @for (action of contextActions(); track action) {\r\n @if (action.condition === undefined || action.condition(row)) {\r\n <button mat-menu-item (click)=\"contextAction.emit({ action, row })\">\r\n <mat-icon [color]=\"action.color\">{{ action.icon }}</mat-icon> {{ action.label }}\r\n </button>\r\n }\r\n }\r\n </ng-template>\r\n</mat-menu>\r\n", styles: [".bdb-table{width:100%}.bdb-table tr:hover{cursor:pointer}.bdb-table-container{height:100%;overflow:auto}.bdb-table-container::-webkit-scrollbar{width:4px}.bdb-table-container::-webkit-scrollbar-thumb{background-color:#0003}.bdb-table-container::-webkit-scrollbar-track{background-color:#0000001a}.text-end{text-align:end}.no-data{color:#00000080;padding:8px}.mat-mdc-header-row .mat-mdc-header-cell{padding-left:8px;padding-right:8px}.mat-mdc-header-row .mat-mdc-header-cell:first-of-type{padding-left:24px}.mat-mdc-header-row .mat-mdc-header-cell:last-of-type{padding-right:24px}.mat-mdc-row .mat-mdc-cell{padding-left:8px;padding-right:8px}.mat-mdc-row .mat-mdc-cell:first-of-type{padding-left:24px}.mat-mdc-row .mat-mdc-cell:last-of-type{padding-right:24px}.mat-column-selection{width:48px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i2$1.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i2$1.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i2$1.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i2$1.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i2$1.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i2$1.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i2$1.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i2$1.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i2$1.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i2$1.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "directive", type: i2$1.MatNoDataRow, selector: "ng-template[matNoDataRow]" }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i3$1.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: MatSortModule }, { kind: "directive", type: i4.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i4.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: BdbAlertErrorResponseComponent, selector: "bdb-alert-error-response", inputs: ["value", "dismissable"], outputs: ["dismiss"] }, { kind: "component", type: BdbBooleanDisplayComponent, selector: "bdb-boolean-display", inputs: ["value"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i5.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i5.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i5.MatMenuContent, selector: "ng-template[matMenuContent]" }, { kind: "directive", type: i5.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: i1.JsonPipe, name: "json" }, { kind: "pipe", type: i1.DecimalPipe, name: "number" }, { kind: "pipe", type: i1.PercentPipe, name: "percent" }, { kind: "pipe", type: i1.CurrencyPipe, name: "currency" }, { kind: "pipe", type: i1.DatePipe, name: "date" }, { kind: "pipe", type: DynamicPipe, name: "dynamicPipe" }] }); }
|
|
1351
|
+
}
|
|
1352
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbTableV2Component, decorators: [{
|
|
1353
|
+
type: Component,
|
|
1354
|
+
args: [{ selector: 'bdb-table-v2', imports: [
|
|
1355
|
+
CommonModule,
|
|
1356
|
+
MatTableModule,
|
|
1357
|
+
MatCheckboxModule,
|
|
1358
|
+
MatSortModule,
|
|
1359
|
+
BdbAlertErrorResponseComponent,
|
|
1360
|
+
DynamicPipe,
|
|
1361
|
+
BdbBooleanDisplayComponent,
|
|
1362
|
+
MatMenuModule,
|
|
1363
|
+
MatIconModule,
|
|
1364
|
+
], template: "<div class=\"bdb-table-container\">\r\n @if (dataSource()) {\r\n <table\r\n mat-table\r\n class=\"bdb-table\"\r\n [dataSource]=\"dataSource()\"\r\n matSort\r\n [matSortDisabled]=\"matSortDisabled()\"\r\n disableClear=\"true\"\r\n (matSortChange)=\"sortChange.emit($event)\"\r\n [trackBy]=\"trackBy()\">\r\n <ng-container matColumnDef=\"selection\">\r\n <th mat-header-cell *matHeaderCellDef>\r\n @if (selection()) {\r\n <mat-checkbox\r\n (change)=\"$event ? toggleAllRows() : null\"\r\n [checked]=\"selection()?.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"anySelected() && !isAllSelected()\"\r\n class=\"primary\">\r\n </mat-checkbox>\r\n }\r\n </th>\r\n <td mat-cell *matCellDef=\"let row\">\r\n @if (selection()) {\r\n <mat-checkbox\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"$event ? selection()?.toggle(row) : null\"\r\n [checked]=\"selection()?.isSelected(row)\"\r\n class=\"accent\">\r\n </mat-checkbox>\r\n }\r\n </td>\r\n </ng-container>\r\n\r\n @for (column of columns(); track column) {\r\n <ng-container [matColumnDef]=\"column.id\">\r\n <ng-container>\r\n <th\r\n mat-header-cell\r\n *matHeaderCellDef\r\n mat-sort-header=\"{{ column.id }}\"\r\n [disabled]=\"column.sortDisabled\"\r\n [width]=\"column.width\"\r\n [ngClass]=\"{ 'text-end': column.textAlign && column.textAlign === 'end' }\"\r\n [arrowPosition]=\"column.textAlign && column.textAlign === 'end' ? 'before' : 'after'\">\r\n {{ column.title }}\r\n </th>\r\n </ng-container>\r\n\r\n <td mat-cell *matCellDef=\"let row\" [ngClass]=\"{ 'text-end': column.textAlign && column.textAlign === 'end' }\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n column.template ? column.template : cellTemplate;\r\n context: { $implicit: row, column: column }\r\n \"></ng-container>\r\n </td>\r\n </ng-container>\r\n }\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"activeColumns(); sticky: true\"></tr>\r\n <tr\r\n mat-row\r\n *matRowDef=\"let row; columns: activeColumns()\"\r\n (click)=\"onRowClick(row)\"\r\n [ngClass]=\"rowClass(row)\"\r\n (contextmenu)=\"onContextMenu($event, row)\"></tr>\r\n\r\n <tr class=\"mat-row\" *matNoDataRow>\r\n <td class=\"mat-cell\" [colSpan]=\"activeColumns().length\">\r\n @if (error()) {\r\n <bdb-alert-error-response [value]=\"error()\"> </bdb-alert-error-response>\r\n } @else {\r\n <ng-container *ngTemplateOutlet=\"noData\"></ng-container>\r\n }\r\n </td>\r\n </tr>\r\n </table>\r\n }\r\n</div>\r\n\r\n<ng-content></ng-content>\r\n\r\n<ng-template #cellTemplate let-row let-column=\"column\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n column.pipe ? pipedCellTemplate : defaultCellTemplate;\r\n context: { $implicit: row, column: column }\r\n \"></ng-container>\r\n</ng-template>\r\n\r\n<ng-template #pipedCellTemplate let-column=\"column\" let-row>\r\n {{ column.field(row) | dynamicPipe: column.pipe : null }}\r\n</ng-template>\r\n\r\n<ng-template #defaultCellTemplate let-row let-column=\"column\">\r\n @switch (column.type) {\r\n @case (columnType.String) {\r\n {{ column.field(row) }}\r\n }\r\n @case (columnType.Number) {\r\n {{ column.field(row) | number: column.format }}\r\n }\r\n @case (columnType.Percentage) {\r\n {{ column.field(row) | percent: column.digitsInfo : column.locale }}\r\n }\r\n @case (columnType.Currency) {\r\n {{ column.field(row) | currency: column.currencyCode : column.display : column.digitsInfo : column.locale }}\r\n }\r\n @case (columnType.Date) {\r\n {{ column.field(row) | date: column.format }}\r\n }\r\n @case (columnType.Boolean) {\r\n <bdb-boolean-display [value]=\"column.field(row)\"></bdb-boolean-display>\r\n }\r\n @case (columnType.Enum) {\r\n {{ column.field(row) }}\r\n }\r\n @case (columnType.Custom) {\r\n *?*\r\n }\r\n @default {\r\n {{ column.field(row) | json }}\r\n }\r\n }\r\n</ng-template>\r\n\r\n<ng-template #noData>\r\n <div class=\"no-data\"><em>Geen gegevens gevonden</em></div>\r\n</ng-template>\r\n\r\n<div\r\n style=\"visibility: hidden; position: fixed\"\r\n [style.left]=\"contextMenuPosition.x\"\r\n [style.top]=\"contextMenuPosition.y\"\r\n [matMenuTriggerFor]=\"contextMenu\"></div>\r\n<mat-menu #contextMenu=\"matMenu\" #contextMenu2=\"matMenu\">\r\n <ng-template matMenuContent let-row=\"row\">\r\n @for (action of contextActions(); track action) {\r\n @if (action.condition === undefined || action.condition(row)) {\r\n <button mat-menu-item (click)=\"contextAction.emit({ action, row })\">\r\n <mat-icon [color]=\"action.color\">{{ action.icon }}</mat-icon> {{ action.label }}\r\n </button>\r\n }\r\n }\r\n </ng-template>\r\n</mat-menu>\r\n", styles: [".bdb-table{width:100%}.bdb-table tr:hover{cursor:pointer}.bdb-table-container{height:100%;overflow:auto}.bdb-table-container::-webkit-scrollbar{width:4px}.bdb-table-container::-webkit-scrollbar-thumb{background-color:#0003}.bdb-table-container::-webkit-scrollbar-track{background-color:#0000001a}.text-end{text-align:end}.no-data{color:#00000080;padding:8px}.mat-mdc-header-row .mat-mdc-header-cell{padding-left:8px;padding-right:8px}.mat-mdc-header-row .mat-mdc-header-cell:first-of-type{padding-left:24px}.mat-mdc-header-row .mat-mdc-header-cell:last-of-type{padding-right:24px}.mat-mdc-row .mat-mdc-cell{padding-left:8px;padding-right:8px}.mat-mdc-row .mat-mdc-cell:first-of-type{padding-left:24px}.mat-mdc-row .mat-mdc-cell:last-of-type{padding-right:24px}.mat-column-selection{width:48px}\n"] }]
|
|
1365
|
+
}], propDecorators: { dataSource: [{ type: i0.Input, args: [{ isSignal: true, alias: "dataSource", required: true }] }], columns: [{ type: i0.Input, args: [{ isSignal: true, alias: "columns", required: true }] }], displayedColumns: [{ type: i0.Input, args: [{ isSignal: true, alias: "displayedColumns", required: false }] }], selection: [{ type: i0.Input, args: [{ isSignal: true, alias: "selection", required: false }] }], selectOnRowClick: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectOnRowClick", required: false }] }], contextActions: [{ type: i0.Input, args: [{ isSignal: true, alias: "contextActions", required: false }] }], contextAction: [{ type: i0.Output, args: ["contextAction"] }], rowColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "rowColor", required: false }] }], error: [{ type: i0.Input, args: [{ isSignal: true, alias: "error", required: false }] }], rowClick: [{ type: i0.Output, args: ["rowClick"] }], matSortDisabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "matSortDisabled", required: false }] }], sortChange: [{ type: i0.Output, args: ["sortChange"] }], contextMenu: [{ type: i0.ViewChild, args: [i0.forwardRef(() => MatMenuTrigger), { isSignal: true }] }], cellTemplates: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => BdbCellDirective), { ...{ descendants: true }, isSignal: true }] }], trackBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "trackBy", required: false }] }] } });
|
|
1366
|
+
|
|
1367
|
+
class BdbGridComponent {
|
|
1368
|
+
constructor() {
|
|
1369
|
+
this.dataSource = input.required(...(ngDevMode ? [{ debugName: "dataSource" }] : []));
|
|
1370
|
+
this.columns = [];
|
|
1371
|
+
this.displayedColumns = [];
|
|
1372
|
+
this.contextActions = input([], ...(ngDevMode ? [{ debugName: "contextActions" }] : []));
|
|
1373
|
+
this.contextAction = output();
|
|
1374
|
+
this.rowColor = input(...(ngDevMode ? [undefined, { debugName: "rowColor" }] : []));
|
|
1375
|
+
this.rowClick = new EventEmitter();
|
|
1376
|
+
this.filterDrawerOpened = output();
|
|
1377
|
+
this.cellTemplates = contentChildren(BdbCellDirective, { ...(ngDevMode ? { debugName: "cellTemplates" } : {}), descendants: true });
|
|
1378
|
+
}
|
|
1379
|
+
onContextAction(action, row) {
|
|
1380
|
+
this.contextAction.emit({ action, row });
|
|
1381
|
+
}
|
|
1382
|
+
sortChange(event) {
|
|
1383
|
+
const dataSource = this.dataSource();
|
|
1384
|
+
const column = this.columns.find(x => x.id === event.active);
|
|
1385
|
+
if (column && dataSource) {
|
|
1386
|
+
dataSource.sortField = column.id;
|
|
1387
|
+
dataSource.sortDirection = event.direction === '' ? 'asc' : event.direction;
|
|
1388
|
+
dataSource.load();
|
|
1389
|
+
}
|
|
1390
|
+
}
|
|
1391
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbGridComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1392
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.0", type: BdbGridComponent, isStandalone: true, selector: "bdb-grid", inputs: { dataSource: { classPropertyName: "dataSource", publicName: "dataSource", isSignal: true, isRequired: true, transformFunction: null }, columns: { classPropertyName: "columns", publicName: "columns", isSignal: false, isRequired: false, transformFunction: null }, displayedColumns: { classPropertyName: "displayedColumns", publicName: "displayedColumns", isSignal: false, isRequired: false, transformFunction: null }, selection: { classPropertyName: "selection", publicName: "selection", isSignal: false, isRequired: false, transformFunction: null }, contextActions: { classPropertyName: "contextActions", publicName: "contextActions", isSignal: true, isRequired: false, transformFunction: null }, rowColor: { classPropertyName: "rowColor", publicName: "rowColor", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { contextAction: "contextAction", rowClick: "rowClick", filterDrawerOpened: "filterDrawerOpened" }, queries: [{ propertyName: "cellTemplates", predicate: BdbCellDirective, descendants: true, isSignal: true }], ngImport: i0, template: "<mat-toolbar>\r\n <button mat-icon-button (click)=\"filterDrawerOpen = !filterDrawerOpen; filterDrawerOpened.emit(filterDrawerOpen)\">\r\n @if (filterDrawerOpen) {\r\n <mat-icon>filter_alt</mat-icon>\r\n } @else {\r\n <mat-icon>filter_arrow_right</mat-icon>\r\n }\r\n </button>\r\n <div style=\"flex: 1; display: flex; align-items: center; gap: 8px\">\r\n <ng-content select=\"toolbar-item\"></ng-content>\r\n </div>\r\n <bdb-paginator-v2 [dataSource]=\"dataSource()\"></bdb-paginator-v2>\r\n <bdb-query-input-v2 [dataSource]=\"dataSource()\"></bdb-query-input-v2>\r\n</mat-toolbar>\r\n\r\n<mat-drawer-container class=\"filter-drawer\">\r\n <mat-drawer mode=\"side\" [opened]=\"filterDrawerOpen\">\r\n <ng-content select=\"filter-drawer\"></ng-content>\r\n </mat-drawer>\r\n <mat-drawer-content>\r\n <bdb-table-v2\r\n [columns]=\"columns\"\r\n [dataSource]=\"dataSource().data\"\r\n [error]=\"dataSource().error()\"\r\n [displayedColumns]=\"displayedColumns\"\r\n [selection]=\"selection\"\r\n [rowColor]=\"rowColor()\"\r\n [contextActions]=\"contextActions()\"\r\n (contextAction)=\"contextAction.emit($event)\"\r\n (rowClick)=\"rowClick.emit($event)\"\r\n (sortChange)=\"sortChange($event)\">\r\n @for (cellTemplate of cellTemplates(); track cellTemplate.bdbCellDef) {\r\n <ng-template bdbCellDef=\"{{ cellTemplate.bdbCellDef }}\" let-element>\r\n <ng-container *ngTemplateOutlet=\"cellTemplate.templateRef; context: { $implicit: element }\"></ng-container>\r\n </ng-template>\r\n }\r\n </bdb-table-v2>\r\n </mat-drawer-content>\r\n</mat-drawer-container>\r\n", styles: [":host{display:flex;flex-direction:column;justify-content:stretch;flex:0 1 100%}:host mat-toolbar{flex:0 0 auto;display:flex;flex-direction:row;gap:8px;justify-content:start;align-items:center}:host bdb-table{display:contents;flex:0 1 100%}:host bdb-query-input{--mdc-filled-text-field-container-color: var(--mat-sys-surface-container-lowest)}:host bdb-paginator{flex:0 0 auto}.filter-drawer{flex-grow:1;--mat-sidenav-content-background-color: var(--mat-sys-surface)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: MatToolbarModule }, { kind: "component", type: i2$2.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatSidenavModule }, { kind: "component", type: i5$1.MatDrawer, selector: "mat-drawer", inputs: ["position", "mode", "disableClose", "autoFocus", "opened"], outputs: ["openedChange", "opened", "openedStart", "closed", "closedStart", "positionChanged"], exportAs: ["matDrawer"] }, { kind: "component", type: i5$1.MatDrawerContainer, selector: "mat-drawer-container", inputs: ["autosize", "hasBackdrop"], outputs: ["backdropClick"], exportAs: ["matDrawerContainer"] }, { kind: "component", type: i5$1.MatDrawerContent, selector: "mat-drawer-content" }, { kind: "component", type: BdbTableV2Component, selector: "bdb-table-v2", inputs: ["dataSource", "columns", "displayedColumns", "selection", "selectOnRowClick", "contextActions", "rowColor", "error", "matSortDisabled", "trackBy"], outputs: ["contextAction", "rowClick", "sortChange"] }, { kind: "directive", type: BdbCellDirective, selector: "ng-template[bdbCellDef]", inputs: ["bdbCellDef"] }, { kind: "component", type: BdbQueryInputV2Component, selector: "bdb-query-input-v2[dataSource]", inputs: ["dataSource"] }, { kind: "component", type: BdbPaginatorV2Component, selector: "bdb-paginator-v2", inputs: ["dataSource"] }] }); }
|
|
1393
|
+
}
|
|
1394
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbGridComponent, decorators: [{
|
|
1395
|
+
type: Component,
|
|
1396
|
+
args: [{ selector: 'bdb-grid', imports: [
|
|
1397
|
+
CommonModule,
|
|
1398
|
+
NgTemplateOutlet,
|
|
1399
|
+
MatToolbarModule,
|
|
1400
|
+
MatIconModule,
|
|
1401
|
+
MatButtonModule,
|
|
1402
|
+
MatSidenavModule,
|
|
1403
|
+
BdbTableV2Component,
|
|
1404
|
+
BdbCellDirective,
|
|
1405
|
+
BdbQueryInputV2Component,
|
|
1406
|
+
BdbPaginatorV2Component,
|
|
1407
|
+
], template: "<mat-toolbar>\r\n <button mat-icon-button (click)=\"filterDrawerOpen = !filterDrawerOpen; filterDrawerOpened.emit(filterDrawerOpen)\">\r\n @if (filterDrawerOpen) {\r\n <mat-icon>filter_alt</mat-icon>\r\n } @else {\r\n <mat-icon>filter_arrow_right</mat-icon>\r\n }\r\n </button>\r\n <div style=\"flex: 1; display: flex; align-items: center; gap: 8px\">\r\n <ng-content select=\"toolbar-item\"></ng-content>\r\n </div>\r\n <bdb-paginator-v2 [dataSource]=\"dataSource()\"></bdb-paginator-v2>\r\n <bdb-query-input-v2 [dataSource]=\"dataSource()\"></bdb-query-input-v2>\r\n</mat-toolbar>\r\n\r\n<mat-drawer-container class=\"filter-drawer\">\r\n <mat-drawer mode=\"side\" [opened]=\"filterDrawerOpen\">\r\n <ng-content select=\"filter-drawer\"></ng-content>\r\n </mat-drawer>\r\n <mat-drawer-content>\r\n <bdb-table-v2\r\n [columns]=\"columns\"\r\n [dataSource]=\"dataSource().data\"\r\n [error]=\"dataSource().error()\"\r\n [displayedColumns]=\"displayedColumns\"\r\n [selection]=\"selection\"\r\n [rowColor]=\"rowColor()\"\r\n [contextActions]=\"contextActions()\"\r\n (contextAction)=\"contextAction.emit($event)\"\r\n (rowClick)=\"rowClick.emit($event)\"\r\n (sortChange)=\"sortChange($event)\">\r\n @for (cellTemplate of cellTemplates(); track cellTemplate.bdbCellDef) {\r\n <ng-template bdbCellDef=\"{{ cellTemplate.bdbCellDef }}\" let-element>\r\n <ng-container *ngTemplateOutlet=\"cellTemplate.templateRef; context: { $implicit: element }\"></ng-container>\r\n </ng-template>\r\n }\r\n </bdb-table-v2>\r\n </mat-drawer-content>\r\n</mat-drawer-container>\r\n", styles: [":host{display:flex;flex-direction:column;justify-content:stretch;flex:0 1 100%}:host mat-toolbar{flex:0 0 auto;display:flex;flex-direction:row;gap:8px;justify-content:start;align-items:center}:host bdb-table{display:contents;flex:0 1 100%}:host bdb-query-input{--mdc-filled-text-field-container-color: var(--mat-sys-surface-container-lowest)}:host bdb-paginator{flex:0 0 auto}.filter-drawer{flex-grow:1;--mat-sidenav-content-background-color: var(--mat-sys-surface)}\n"] }]
|
|
1408
|
+
}], propDecorators: { dataSource: [{ type: i0.Input, args: [{ isSignal: true, alias: "dataSource", required: true }] }], columns: [{
|
|
1409
|
+
type: Input
|
|
1410
|
+
}], displayedColumns: [{
|
|
1411
|
+
type: Input
|
|
1412
|
+
}], selection: [{
|
|
1413
|
+
type: Input
|
|
1414
|
+
}], contextActions: [{ type: i0.Input, args: [{ isSignal: true, alias: "contextActions", required: false }] }], contextAction: [{ type: i0.Output, args: ["contextAction"] }], rowColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "rowColor", required: false }] }], rowClick: [{
|
|
1415
|
+
type: Output
|
|
1416
|
+
}], filterDrawerOpened: [{ type: i0.Output, args: ["filterDrawerOpened"] }], cellTemplates: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => BdbCellDirective), { ...{ descendants: true }, isSignal: true }] }] } });
|
|
1417
|
+
|
|
1418
|
+
class BdbSearchInputComponent {
|
|
1419
|
+
// MatFormFieldControl required properties
|
|
1420
|
+
static { this.nextId = 0; }
|
|
1421
|
+
get required() {
|
|
1422
|
+
return this.ngControl?.control?.hasValidator(Validators.required) ?? false;
|
|
1423
|
+
}
|
|
1424
|
+
get errorState() {
|
|
1425
|
+
// return true;
|
|
1426
|
+
const control = this.ngControl?.control;
|
|
1427
|
+
if (!control) {
|
|
1428
|
+
return false;
|
|
1429
|
+
}
|
|
1430
|
+
return control.invalid && control.touched;
|
|
1431
|
+
}
|
|
1432
|
+
get value() {
|
|
1433
|
+
return this._value;
|
|
1434
|
+
}
|
|
1435
|
+
set value(val) {
|
|
1436
|
+
this._value = val;
|
|
1437
|
+
this.onChange(val);
|
|
1438
|
+
this.stateChanges.next();
|
|
1439
|
+
}
|
|
1440
|
+
get empty() {
|
|
1441
|
+
return !this._value;
|
|
1442
|
+
}
|
|
1443
|
+
get shouldLabelFloat() {
|
|
1444
|
+
return this.focused || !this.empty;
|
|
1445
|
+
}
|
|
1446
|
+
get disabled() {
|
|
1447
|
+
return this._disabled;
|
|
1448
|
+
}
|
|
1449
|
+
set disabled(value) {
|
|
1450
|
+
this._disabled = value;
|
|
1451
|
+
this.stateChanges.next();
|
|
1452
|
+
}
|
|
1453
|
+
constructor(ngControl) {
|
|
1454
|
+
this.ngControl = ngControl;
|
|
1455
|
+
this.dataSource = input.required(...(ngDevMode ? [{ debugName: "dataSource" }] : []));
|
|
1456
|
+
this.displayFn = input.required(...(ngDevMode ? [{ debugName: "displayFn" }] : []));
|
|
1457
|
+
this.placeholder = '';
|
|
1458
|
+
// autofilled?: boolean | undefined;
|
|
1459
|
+
// userAriaDescribedBy?: string | undefined;
|
|
1460
|
+
// disableAutomaticLabeling?: boolean | undefined;
|
|
1461
|
+
// describedByIds?: string[] | undefined;
|
|
1462
|
+
this.searchCtrl = new FormControl('');
|
|
1463
|
+
this.id = `bdb-search-input-${BdbSearchInputComponent.nextId++}`;
|
|
1464
|
+
this.stateChanges = new Subject();
|
|
1465
|
+
this.focused = false;
|
|
1466
|
+
this.controlType = 'bdb-search-input';
|
|
1467
|
+
this.describedBy = '';
|
|
1468
|
+
// ControlValueAccessor
|
|
1469
|
+
this._value = undefined;
|
|
1470
|
+
this.onChange = () => { };
|
|
1471
|
+
this.onTouched = () => { };
|
|
1472
|
+
this._disabled = false;
|
|
1473
|
+
// Replace the provider from above with this.
|
|
1474
|
+
if (this.ngControl != null) {
|
|
1475
|
+
const test = this.ngControl.control != null;
|
|
1476
|
+
// Setting the value accessor directly (instead of using
|
|
1477
|
+
// the providers) to avoid running into a circular import.
|
|
1478
|
+
this.ngControl.valueAccessor = this;
|
|
1479
|
+
}
|
|
1480
|
+
this.searchCtrl.valueChanges
|
|
1481
|
+
.pipe(takeUntilDestroyed(), debounceTime(300), distinctUntilChanged(), filter$1(x => typeof x === 'string'))
|
|
1482
|
+
.subscribe({
|
|
1483
|
+
next: (value) => {
|
|
1484
|
+
this.dataSource().query = value;
|
|
1485
|
+
this.dataSource().load();
|
|
1486
|
+
},
|
|
1487
|
+
});
|
|
1488
|
+
}
|
|
1489
|
+
writeValue(obj) {
|
|
1490
|
+
this._value = obj;
|
|
1491
|
+
this.stateChanges.next();
|
|
1492
|
+
}
|
|
1493
|
+
registerOnChange(fn) {
|
|
1494
|
+
this.onChange = fn;
|
|
1495
|
+
}
|
|
1496
|
+
registerOnTouched(fn) {
|
|
1497
|
+
this.onTouched = fn;
|
|
1498
|
+
}
|
|
1499
|
+
setDisabledState(isDisabled) {
|
|
1500
|
+
this.disabled = isDisabled;
|
|
1501
|
+
}
|
|
1502
|
+
setDescribedByIds(ids) {
|
|
1503
|
+
this.describedBy = ids.join(' ');
|
|
1504
|
+
}
|
|
1505
|
+
onContainerClick(event) {
|
|
1506
|
+
// Focus the input element if needed
|
|
1507
|
+
}
|
|
1508
|
+
selectOption($event) {
|
|
1509
|
+
this.value = $event.option.value;
|
|
1510
|
+
this.onChange(this.value);
|
|
1511
|
+
}
|
|
1512
|
+
clear() {
|
|
1513
|
+
this.searchCtrl.setValue('');
|
|
1514
|
+
this.value = undefined;
|
|
1515
|
+
this.onChange(this.value);
|
|
1516
|
+
this.stateChanges.next();
|
|
1060
1517
|
}
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: BdbFullTableComponent, decorators: [{
|
|
1065
|
-
type: Component,
|
|
1066
|
-
args: [{ selector: 'bdb-full-table', imports: [
|
|
1067
|
-
CommonModule,
|
|
1068
|
-
BdbFlexDirective,
|
|
1069
|
-
MatToolbarModule,
|
|
1070
|
-
BdbQueryInputComponent,
|
|
1071
|
-
BdbPaginatorComponent,
|
|
1072
|
-
BdbTableComponent,
|
|
1073
|
-
BdbCellDirective,
|
|
1074
|
-
], template: "@if (showToolbar) {\r\n <mat-toolbar>\r\n <div bdbFlex=\"row 8px start center\">\r\n <ng-content select=\"toolbar-item\"></ng-content>\r\n </div>\r\n <bdb-query-input [dataSource]=\"dataSource\"></bdb-query-input>\r\n </mat-toolbar>\r\n}\r\n<bdb-table\r\n [columns]=\"columns\"\r\n [dataSource]=\"dataSource\"\r\n [autoLoad]=\"autoLoad\"\r\n [displayedColumns]=\"displayedColumns\"\r\n [selection]=\"selection\"\r\n [rowColor]=\"rowColor\"\r\n [contextActions]=\"contextActions\"\r\n (contextAction)=\"contextAction.emit($event)\"\r\n (rowClick)=\"rowClick.emit($event)\">\r\n @for (cellTemplate of cellTemplates; track cellTemplate.bdbCellDef) {\r\n <ng-template bdbCellDef=\"{{ cellTemplate.bdbCellDef }}\" let-element>\r\n <ng-container *ngTemplateOutlet=\"cellTemplate.templateRef; context: { $implicit: element }\"></ng-container>\r\n </ng-template>\r\n }\r\n</bdb-table>\r\n<bdb-paginator [dataSource]=\"dataSource\"></bdb-paginator>\r\n", styles: [":host{display:flex;flex-direction:column;justify-content:stretch;flex:0 1 100%}:host mat-toolbar{flex:0 0 auto;display:flex;flex-direction:row;gap:8px;justify-content:space-between;align-items:center}:host bdb-table{display:contents;flex:0 1 100%}:host bdb-query-input{--mdc-filled-text-field-container-color: var(--mat-sys-surface-container-lowest)}:host bdb-paginator{flex:0 0 auto}\n"] }]
|
|
1075
|
-
}], propDecorators: { dataSource: [{
|
|
1076
|
-
type: Input
|
|
1077
|
-
}], columns: [{
|
|
1078
|
-
type: Input
|
|
1079
|
-
}], displayedColumns: [{
|
|
1080
|
-
type: Input
|
|
1081
|
-
}], autoLoad: [{
|
|
1082
|
-
type: Input
|
|
1083
|
-
}], selection: [{
|
|
1084
|
-
type: Input
|
|
1085
|
-
}], contextActions: [{
|
|
1086
|
-
type: Input
|
|
1087
|
-
}], rowColor: [{
|
|
1088
|
-
type: Input
|
|
1089
|
-
}], showToolbar: [{
|
|
1090
|
-
type: Input
|
|
1091
|
-
}], rowClick: [{
|
|
1092
|
-
type: Output
|
|
1093
|
-
}], contextAction: [{
|
|
1094
|
-
type: Output
|
|
1095
|
-
}], cellTemplates: [{
|
|
1096
|
-
type: ContentChildren,
|
|
1097
|
-
args: [BdbCellDirective, { descendants: true }]
|
|
1098
|
-
}] } });
|
|
1099
|
-
|
|
1100
|
-
class BdbSearchWrapperBaseComponent {
|
|
1101
|
-
constructor() {
|
|
1102
|
-
this.controlContainer = inject(ControlContainer);
|
|
1518
|
+
onFocus() {
|
|
1519
|
+
this.focused = true;
|
|
1520
|
+
this.stateChanges.next();
|
|
1103
1521
|
}
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
throw 'No FormControl or FormControlName provided';
|
|
1111
|
-
}
|
|
1112
|
-
const ctrl = this.controlContainer.control?.get(this.controlName);
|
|
1113
|
-
if (!ctrl) {
|
|
1114
|
-
throw `FormControl '${this.controlName}' not found`;
|
|
1522
|
+
onBlur() {
|
|
1523
|
+
this.ngControl?.control?.markAsTouched();
|
|
1524
|
+
// this.ngControl?.control?.markAsDirty();
|
|
1525
|
+
if (this.dataSource().data.length === 1) {
|
|
1526
|
+
this.value = this.dataSource().data[0];
|
|
1527
|
+
this.onChange(this.value);
|
|
1115
1528
|
}
|
|
1116
|
-
this.
|
|
1529
|
+
this.focused = false;
|
|
1530
|
+
this.onTouched();
|
|
1531
|
+
this.stateChanges.next();
|
|
1532
|
+
}
|
|
1533
|
+
ngOnDestroy() {
|
|
1534
|
+
this.stateChanges.complete();
|
|
1117
1535
|
}
|
|
1118
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1119
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
1536
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbSearchInputComponent, deps: [{ token: i1$2.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1537
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.0", type: BdbSearchInputComponent, isStandalone: true, selector: "bdb-search-input", inputs: { dataSource: { classPropertyName: "dataSource", publicName: "dataSource", isSignal: true, isRequired: true, transformFunction: null }, displayFn: { classPropertyName: "displayFn", publicName: "displayFn", isSignal: true, isRequired: true, transformFunction: null } }, providers: [{ provide: MatFormFieldControl, useExisting: BdbSearchInputComponent }], ngImport: i0, template: "<input\r\n type=\"text\"\r\n matInput\r\n [formControl]=\"searchCtrl\"\r\n [matAutocomplete]=\"autoComplete\"\r\n [placeholder]=\"placeholder\"\r\n (blur)=\"onBlur()\" />\r\n<mat-autocomplete #autoComplete=\"matAutocomplete\" (optionSelected)=\"selectOption($event)\" [displayWith]=\"displayFn()\">\r\n @for (option of dataSource().data; track option.id) {\r\n <mat-option [value]=\"option\">\r\n {{ displayFn()(option) }}\r\n </mat-option>\r\n }\r\n</mat-autocomplete>\r\n", styles: [":host{--mat-list-list-item-leading-icon-start-space: 16px;--mat-list-list-item-leading-icon-end-space: 32px;--mat-list-list-item-one-line-container-height: 40px;--mat-list-list-item-two-line-container-height: 56px;--mat-list-list-item-three-line-container-height: 80px}:host .mdc-list-item__start,:host .mdc-list-item__end{--mat-radio-state-layer-size: 32px;--mat-radio-touch-target-display: none}:host .mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-one-line,:host .mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-one-line,:host .mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-one-line{height:48px}:host .mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines,:host .mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines,:host .mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines{height:64px}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i2$3.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i2$3.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i2$3.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i5$2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }] }); }
|
|
1120
1538
|
}
|
|
1121
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1539
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbSearchInputComponent, decorators: [{
|
|
1122
1540
|
type: Component,
|
|
1123
|
-
args: [{
|
|
1124
|
-
}],
|
|
1125
|
-
|
|
1126
|
-
|
|
1127
|
-
|
|
1128
|
-
|
|
1541
|
+
args: [{ selector: 'bdb-search-input', imports: [ReactiveFormsModule, MatFormFieldModule, MatAutocompleteModule, MatInputModule], providers: [{ provide: MatFormFieldControl, useExisting: BdbSearchInputComponent }], template: "<input\r\n type=\"text\"\r\n matInput\r\n [formControl]=\"searchCtrl\"\r\n [matAutocomplete]=\"autoComplete\"\r\n [placeholder]=\"placeholder\"\r\n (blur)=\"onBlur()\" />\r\n<mat-autocomplete #autoComplete=\"matAutocomplete\" (optionSelected)=\"selectOption($event)\" [displayWith]=\"displayFn()\">\r\n @for (option of dataSource().data; track option.id) {\r\n <mat-option [value]=\"option\">\r\n {{ displayFn()(option) }}\r\n </mat-option>\r\n }\r\n</mat-autocomplete>\r\n", styles: [":host{--mat-list-list-item-leading-icon-start-space: 16px;--mat-list-list-item-leading-icon-end-space: 32px;--mat-list-list-item-one-line-container-height: 40px;--mat-list-list-item-two-line-container-height: 56px;--mat-list-list-item-three-line-container-height: 80px}:host .mdc-list-item__start,:host .mdc-list-item__end{--mat-radio-state-layer-size: 32px;--mat-radio-touch-target-display: none}:host .mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-one-line,:host .mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-one-line,:host .mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-one-line{height:48px}:host .mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines,:host .mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines,:host .mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines{height:64px}\n"] }]
|
|
1542
|
+
}], ctorParameters: () => [{ type: i1$2.NgControl, decorators: [{
|
|
1543
|
+
type: Optional
|
|
1544
|
+
}, {
|
|
1545
|
+
type: Self
|
|
1546
|
+
}] }], propDecorators: { dataSource: [{ type: i0.Input, args: [{ isSignal: true, alias: "dataSource", required: true }] }], displayFn: [{ type: i0.Input, args: [{ isSignal: true, alias: "displayFn", required: true }] }] } });
|
|
1129
1547
|
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
1548
|
+
class SearchV2Base {
|
|
1549
|
+
get formControl() {
|
|
1550
|
+
return this.ngControl.control;
|
|
1551
|
+
}
|
|
1552
|
+
constructor() {
|
|
1553
|
+
this.dataSource = input.required(...(ngDevMode ? [{ debugName: "dataSource" }] : []));
|
|
1554
|
+
this.ngControl = inject(NgControl, { optional: false, self: true });
|
|
1555
|
+
if (this.ngControl) {
|
|
1556
|
+
this.ngControl.valueAccessor = this;
|
|
1557
|
+
}
|
|
1136
1558
|
}
|
|
1137
|
-
|
|
1138
|
-
|
|
1559
|
+
writeValue(obj) { }
|
|
1560
|
+
registerOnChange(fn) { }
|
|
1561
|
+
registerOnTouched(fn) { }
|
|
1562
|
+
setDisabledState(isDisabled) { }
|
|
1563
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: SearchV2Base, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
1564
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.0", type: SearchV2Base, isStandalone: true, inputs: { dataSource: { classPropertyName: "dataSource", publicName: "dataSource", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 }); }
|
|
1139
1565
|
}
|
|
1140
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1141
|
-
type:
|
|
1142
|
-
args: [{
|
|
1143
|
-
|
|
1144
|
-
standalone: true,
|
|
1145
|
-
}]
|
|
1146
|
-
}] });
|
|
1566
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: SearchV2Base, decorators: [{
|
|
1567
|
+
type: Directive,
|
|
1568
|
+
args: [{}]
|
|
1569
|
+
}], ctorParameters: () => [], propDecorators: { dataSource: [{ type: i0.Input, args: [{ isSignal: true, alias: "dataSource", required: true }] }] } });
|
|
1147
1570
|
|
|
1148
1571
|
const errorMessageMap = new Map([
|
|
1149
1572
|
['required', 'Verplicht'],
|
|
@@ -1203,10 +1626,10 @@ class BdbFormErrorDirective {
|
|
|
1203
1626
|
const errorMessage = getErrorMessage(validationErrorKey, validationErrorValue);
|
|
1204
1627
|
this.renderer.setProperty(this.element.nativeElement, 'innerText', errorMessage);
|
|
1205
1628
|
}
|
|
1206
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1207
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
1629
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbFormErrorDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1$2.ControlContainer }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
1630
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.0", type: BdbFormErrorDirective, isStandalone: true, selector: "[bdbFormError]", inputs: { bdbFormError: "bdbFormError" }, ngImport: i0 }); }
|
|
1208
1631
|
}
|
|
1209
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1632
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbFormErrorDirective, decorators: [{
|
|
1210
1633
|
type: Directive,
|
|
1211
1634
|
args: [{
|
|
1212
1635
|
selector: '[bdbFormError]',
|
|
@@ -1216,12 +1639,110 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.3", ngImpor
|
|
|
1216
1639
|
type: Input
|
|
1217
1640
|
}] } });
|
|
1218
1641
|
|
|
1642
|
+
class BdbSearchV2Component {
|
|
1643
|
+
get formControl() {
|
|
1644
|
+
return this.ngControl?.control;
|
|
1645
|
+
}
|
|
1646
|
+
constructor(ngControl) {
|
|
1647
|
+
this.ngControl = ngControl;
|
|
1648
|
+
this.dataSource = input.required(...(ngDevMode ? [{ debugName: "dataSource" }] : []));
|
|
1649
|
+
this.displayFn = input.required(...(ngDevMode ? [{ debugName: "displayFn" }] : []));
|
|
1650
|
+
this.label = input(...(ngDevMode ? [undefined, { debugName: "label" }] : []));
|
|
1651
|
+
this.isDisabled = false;
|
|
1652
|
+
this.searchInput = viewChild.required('searchInput');
|
|
1653
|
+
ngControl.valueAccessor = this;
|
|
1654
|
+
}
|
|
1655
|
+
writeValue(obj) {
|
|
1656
|
+
this.value = obj;
|
|
1657
|
+
}
|
|
1658
|
+
registerOnChange(fn) {
|
|
1659
|
+
this.onChange = fn;
|
|
1660
|
+
}
|
|
1661
|
+
registerOnTouched(fn) {
|
|
1662
|
+
this.onTouched = fn;
|
|
1663
|
+
}
|
|
1664
|
+
setDisabledState(isDisabled) {
|
|
1665
|
+
this.isDisabled = isDisabled;
|
|
1666
|
+
}
|
|
1667
|
+
clear() {
|
|
1668
|
+
this.searchInput().clear();
|
|
1669
|
+
}
|
|
1670
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbSearchV2Component, deps: [{ token: i1$2.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1671
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.0", type: BdbSearchV2Component, isStandalone: true, selector: "bdb-search-v2", inputs: { dataSource: { classPropertyName: "dataSource", publicName: "dataSource", isSignal: true, isRequired: true, transformFunction: null }, displayFn: { classPropertyName: "displayFn", publicName: "displayFn", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "searchInput", first: true, predicate: ["searchInput"], descendants: true, isSignal: true }], ngImport: i0, template: "<mat-form-field floatLabel=\"always\">\r\n <mat-label>{{ label() }}</mat-label>\r\n <bdb-search-input\r\n #searchInput\r\n [formControl]=\"formControl\"\r\n [dataSource]=\"dataSource()\"\r\n [displayFn]=\"displayFn()\"\r\n [hidden]=\"formControl.value\"></bdb-search-input>\r\n @if (formControl.value) {\r\n {{ displayFn()(formControl.value) }}\r\n }\r\n @if (formControl.value) {\r\n <mat-icon matSuffix (click)=\"clear()\" style=\"cursor: pointer\">clear</mat-icon>\r\n } @else {\r\n <mat-icon matSuffix>search</mat-icon>\r\n }\r\n <mat-error [bdbFormError]=\"formControl\"></mat-error>\r\n</mat-form-field>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i4$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i4$1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: BdbSearchInputComponent, selector: "bdb-search-input", inputs: ["dataSource", "displayFn"] }, { kind: "directive", type: BdbFormErrorDirective, selector: "[bdbFormError]", inputs: ["bdbFormError"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }] }); }
|
|
1672
|
+
}
|
|
1673
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbSearchV2Component, decorators: [{
|
|
1674
|
+
type: Component,
|
|
1675
|
+
args: [{ selector: 'bdb-search-v2', imports: [
|
|
1676
|
+
ReactiveFormsModule,
|
|
1677
|
+
MatFormFieldModule,
|
|
1678
|
+
BdbSearchInputComponent,
|
|
1679
|
+
BdbFormErrorDirective,
|
|
1680
|
+
MatIconModule,
|
|
1681
|
+
MatButtonModule,
|
|
1682
|
+
], template: "<mat-form-field floatLabel=\"always\">\r\n <mat-label>{{ label() }}</mat-label>\r\n <bdb-search-input\r\n #searchInput\r\n [formControl]=\"formControl\"\r\n [dataSource]=\"dataSource()\"\r\n [displayFn]=\"displayFn()\"\r\n [hidden]=\"formControl.value\"></bdb-search-input>\r\n @if (formControl.value) {\r\n {{ displayFn()(formControl.value) }}\r\n }\r\n @if (formControl.value) {\r\n <mat-icon matSuffix (click)=\"clear()\" style=\"cursor: pointer\">clear</mat-icon>\r\n } @else {\r\n <mat-icon matSuffix>search</mat-icon>\r\n }\r\n <mat-error [bdbFormError]=\"formControl\"></mat-error>\r\n</mat-form-field>\r\n" }]
|
|
1683
|
+
}], ctorParameters: () => [{ type: i1$2.NgControl, decorators: [{
|
|
1684
|
+
type: Optional
|
|
1685
|
+
}, {
|
|
1686
|
+
type: Self
|
|
1687
|
+
}] }], propDecorators: { dataSource: [{ type: i0.Input, args: [{ isSignal: true, alias: "dataSource", required: true }] }], displayFn: [{ type: i0.Input, args: [{ isSignal: true, alias: "displayFn", required: true }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], searchInput: [{ type: i0.ViewChild, args: ['searchInput', { isSignal: true }] }] } });
|
|
1688
|
+
|
|
1689
|
+
class BdbSearchWrapperBaseComponent {
|
|
1690
|
+
constructor() {
|
|
1691
|
+
this.controlContainer = inject(ControlContainer);
|
|
1692
|
+
}
|
|
1693
|
+
ngOnInit() {
|
|
1694
|
+
if (this.control) {
|
|
1695
|
+
this.formControl = this.control;
|
|
1696
|
+
return;
|
|
1697
|
+
}
|
|
1698
|
+
if (!this.controlName) {
|
|
1699
|
+
throw 'No FormControl or FormControlName provided';
|
|
1700
|
+
}
|
|
1701
|
+
const ctrl = this.controlContainer.control?.get(this.controlName);
|
|
1702
|
+
if (!ctrl) {
|
|
1703
|
+
throw `FormControl '${this.controlName}' not found`;
|
|
1704
|
+
}
|
|
1705
|
+
this.formControl = ctrl;
|
|
1706
|
+
}
|
|
1707
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbSearchWrapperBaseComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1708
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.0", type: BdbSearchWrapperBaseComponent, isStandalone: true, selector: "ng-component", inputs: { controlName: "controlName", control: "control" }, ngImport: i0, template: '', isInline: true }); }
|
|
1709
|
+
}
|
|
1710
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbSearchWrapperBaseComponent, decorators: [{
|
|
1711
|
+
type: Component,
|
|
1712
|
+
args: [{ template: '', standalone: true }]
|
|
1713
|
+
}], propDecorators: { controlName: [{
|
|
1714
|
+
type: Input
|
|
1715
|
+
}], control: [{
|
|
1716
|
+
type: Input
|
|
1717
|
+
}] } });
|
|
1718
|
+
|
|
1719
|
+
// Opzettelijk geen bdb prefix, aangezien dit een pure util is
|
|
1720
|
+
// Daartoe in eerste instantie ook niet beschikbaar gesteld in public api
|
|
1721
|
+
// Als hier wel reden toe is: heroverwegen bdb prefix toe te voegen
|
|
1722
|
+
class FunctionPipe {
|
|
1723
|
+
transform(value, fn) {
|
|
1724
|
+
return fn(value);
|
|
1725
|
+
}
|
|
1726
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: FunctionPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
1727
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.1.0", ngImport: i0, type: FunctionPipe, isStandalone: true, name: "function" }); }
|
|
1728
|
+
}
|
|
1729
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: FunctionPipe, decorators: [{
|
|
1730
|
+
type: Pipe,
|
|
1731
|
+
args: [{
|
|
1732
|
+
name: 'function',
|
|
1733
|
+
standalone: true,
|
|
1734
|
+
}]
|
|
1735
|
+
}] });
|
|
1736
|
+
|
|
1219
1737
|
class BdbSearchComponent {
|
|
1220
1738
|
constructor(ngControl) {
|
|
1221
1739
|
this.ngControl = ngControl;
|
|
1222
1740
|
this.label = '';
|
|
1223
1741
|
this.hint = '';
|
|
1224
1742
|
this.placeholder = '';
|
|
1743
|
+
this.searchInput = viewChild('searchInput', ...(ngDevMode ? [{ debugName: "searchInput" }] : []));
|
|
1744
|
+
this.clearButton = viewChild('clearButton', ...(ngDevMode ? [{ debugName: "clearButton" }] : []));
|
|
1745
|
+
this.autoCompleteTrigger = viewChild(MatAutocompleteTrigger, ...(ngDevMode ? [{ debugName: "autoCompleteTrigger" }] : []));
|
|
1225
1746
|
this._onDestroy = new Subject();
|
|
1226
1747
|
this.viewChange = new BehaviorSubject({
|
|
1227
1748
|
start: 0,
|
|
@@ -1251,11 +1772,11 @@ class BdbSearchComponent {
|
|
|
1251
1772
|
});
|
|
1252
1773
|
}
|
|
1253
1774
|
ngAfterViewInit() {
|
|
1254
|
-
this.autoCompleteTrigger?.panelClosingActions.pipe(takeUntil(this._onDestroy)).subscribe({
|
|
1775
|
+
this.autoCompleteTrigger()?.panelClosingActions.pipe(takeUntil(this._onDestroy)).subscribe({
|
|
1255
1776
|
next: x => {
|
|
1256
1777
|
if (x === null) {
|
|
1257
1778
|
this.searchCtrl.setValue('');
|
|
1258
|
-
this.searchInput?.nativeElement.blur();
|
|
1779
|
+
this.searchInput()?.nativeElement.blur();
|
|
1259
1780
|
}
|
|
1260
1781
|
},
|
|
1261
1782
|
});
|
|
@@ -1287,9 +1808,9 @@ class BdbSearchComponent {
|
|
|
1287
1808
|
}
|
|
1288
1809
|
onFocus() {
|
|
1289
1810
|
if (this.hasValue) {
|
|
1290
|
-
this.searchInput?.nativeElement.blur();
|
|
1291
|
-
this.autoCompleteTrigger?.closePanel();
|
|
1292
|
-
this.clearButton?.focus();
|
|
1811
|
+
this.searchInput()?.nativeElement.blur();
|
|
1812
|
+
this.autoCompleteTrigger()?.closePanel();
|
|
1813
|
+
this.clearButton()?.focus();
|
|
1293
1814
|
}
|
|
1294
1815
|
}
|
|
1295
1816
|
onBlur() {
|
|
@@ -1304,7 +1825,7 @@ class BdbSearchComponent {
|
|
|
1304
1825
|
}
|
|
1305
1826
|
this.inputTabIndex = -1;
|
|
1306
1827
|
this.hasValue = true;
|
|
1307
|
-
this.searchInput?.nativeElement.blur();
|
|
1828
|
+
this.searchInput()?.nativeElement.blur();
|
|
1308
1829
|
const value = event.option.value;
|
|
1309
1830
|
this.onChange(value);
|
|
1310
1831
|
}
|
|
@@ -1315,13 +1836,13 @@ class BdbSearchComponent {
|
|
|
1315
1836
|
this.hasValue = false;
|
|
1316
1837
|
this.inputTabIndex = 0;
|
|
1317
1838
|
this.searchCtrl.setValue('');
|
|
1318
|
-
this.searchInput?.nativeElement.focus();
|
|
1839
|
+
this.searchInput()?.nativeElement.focus();
|
|
1319
1840
|
this.onChange(null);
|
|
1320
1841
|
}
|
|
1321
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1322
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
1842
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbSearchComponent, deps: [{ token: i1$2.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1843
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.0", type: BdbSearchComponent, isStandalone: true, selector: "bdb-search", inputs: { dataSource: "dataSource", displayFn: "displayFn", label: "label", hint: "hint", placeholder: "placeholder" }, viewQueries: [{ propertyName: "searchInput", first: true, predicate: ["searchInput"], descendants: true, isSignal: true }, { propertyName: "clearButton", first: true, predicate: ["clearButton"], descendants: true, isSignal: true }, { propertyName: "autoCompleteTrigger", first: true, predicate: MatAutocompleteTrigger, descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"search-container\">\r\n @if (hasValue) {\r\n <div class=\"search-disabled-cover\">\r\n <button #clearButton mat-icon-button type=\"button\" [disabled]=\"isDisabled\" (click)=\"clear()\" class=\"danger\">\r\n <mat-icon>clear</mat-icon>\r\n </button>\r\n </div>\r\n }\r\n <mat-form-field class=\"search-form-field\">\r\n <mat-label>{{ label }}</mat-label>\r\n <input\r\n type=\"text\"\r\n matInput\r\n [formControl]=\"searchCtrl\"\r\n [matAutocomplete]=\"autoComplete\"\r\n (focus)=\"onFocus()\"\r\n (blur)=\"onBlur()\"\r\n #searchInput\r\n [tabIndex]=\"inputTabIndex\"\r\n [placeholder]=\"placeholder\" />\r\n <mat-autocomplete #autoComplete=\"matAutocomplete\" (optionSelected)=\"selectOption($event)\" [displayWith]=\"displayFn\">\r\n @for (option of searchOptions | async; track option.id) {\r\n <mat-option [value]=\"option\">\r\n {{ option | function: displayFn }}\r\n </mat-option>\r\n }\r\n </mat-autocomplete>\r\n\r\n @if (!hasValue) {\r\n <mat-icon matSuffix [ngClass]=\"{ 'search-icon-disabled': isDisabled }\">search</mat-icon>\r\n }\r\n <mat-error [bdbFormError]=\"searchCtrl\"> </mat-error>\r\n <mat-hint>{{ hint }}</mat-hint>\r\n </mat-form-field>\r\n</div>\r\n", styles: [".search-container{position:relative}.search-disabled-cover{position:absolute;width:100%;height:100%;z-index:10;display:flex;justify-content:flex-end;align-items:flex-start;padding:4px}.search-form-field{width:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i4$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i4$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i4$1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i5$2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i2$3.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i2$3.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i2$3.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "directive", type: BdbFormErrorDirective, selector: "[bdbFormError]", inputs: ["bdbFormError"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: FunctionPipe, name: "function" }] }); }
|
|
1323
1844
|
}
|
|
1324
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1845
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbSearchComponent, decorators: [{
|
|
1325
1846
|
type: Component,
|
|
1326
1847
|
args: [{ selector: 'bdb-search', imports: [
|
|
1327
1848
|
CommonModule,
|
|
@@ -1333,7 +1854,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.3", ngImpor
|
|
|
1333
1854
|
BdbFormErrorDirective,
|
|
1334
1855
|
FunctionPipe,
|
|
1335
1856
|
MatButtonModule,
|
|
1336
|
-
], template: "<div class=\"search-container\">\r\n @if (hasValue) {\r\n <div class=\"search-disabled-cover\">\r\n <button #clearButton mat-icon-button type=\"button\" [disabled]=\"isDisabled\" (click)=\"clear()\"
|
|
1857
|
+
], template: "<div class=\"search-container\">\r\n @if (hasValue) {\r\n <div class=\"search-disabled-cover\">\r\n <button #clearButton mat-icon-button type=\"button\" [disabled]=\"isDisabled\" (click)=\"clear()\" class=\"danger\">\r\n <mat-icon>clear</mat-icon>\r\n </button>\r\n </div>\r\n }\r\n <mat-form-field class=\"search-form-field\">\r\n <mat-label>{{ label }}</mat-label>\r\n <input\r\n type=\"text\"\r\n matInput\r\n [formControl]=\"searchCtrl\"\r\n [matAutocomplete]=\"autoComplete\"\r\n (focus)=\"onFocus()\"\r\n (blur)=\"onBlur()\"\r\n #searchInput\r\n [tabIndex]=\"inputTabIndex\"\r\n [placeholder]=\"placeholder\" />\r\n <mat-autocomplete #autoComplete=\"matAutocomplete\" (optionSelected)=\"selectOption($event)\" [displayWith]=\"displayFn\">\r\n @for (option of searchOptions | async; track option.id) {\r\n <mat-option [value]=\"option\">\r\n {{ option | function: displayFn }}\r\n </mat-option>\r\n }\r\n </mat-autocomplete>\r\n\r\n @if (!hasValue) {\r\n <mat-icon matSuffix [ngClass]=\"{ 'search-icon-disabled': isDisabled }\">search</mat-icon>\r\n }\r\n <mat-error [bdbFormError]=\"searchCtrl\"> </mat-error>\r\n <mat-hint>{{ hint }}</mat-hint>\r\n </mat-form-field>\r\n</div>\r\n", styles: [".search-container{position:relative}.search-disabled-cover{position:absolute;width:100%;height:100%;z-index:10;display:flex;justify-content:flex-end;align-items:flex-start;padding:4px}.search-form-field{width:100%}\n"] }]
|
|
1337
1858
|
}], ctorParameters: () => [{ type: i1$2.NgControl, decorators: [{
|
|
1338
1859
|
type: Optional
|
|
1339
1860
|
}, {
|
|
@@ -1348,16 +1869,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.3", ngImpor
|
|
|
1348
1869
|
type: Input
|
|
1349
1870
|
}], placeholder: [{
|
|
1350
1871
|
type: Input
|
|
1351
|
-
}], searchInput: [{
|
|
1352
|
-
type: ViewChild,
|
|
1353
|
-
args: ['searchInput']
|
|
1354
|
-
}], clearButton: [{
|
|
1355
|
-
type: ViewChild,
|
|
1356
|
-
args: ['clearButton']
|
|
1357
|
-
}], autoCompleteTrigger: [{
|
|
1358
|
-
type: ViewChild,
|
|
1359
|
-
args: [MatAutocompleteTrigger]
|
|
1360
|
-
}] } });
|
|
1872
|
+
}], searchInput: [{ type: i0.ViewChild, args: ['searchInput', { isSignal: true }] }], clearButton: [{ type: i0.ViewChild, args: ['clearButton', { isSignal: true }] }], autoCompleteTrigger: [{ type: i0.ViewChild, args: [i0.forwardRef(() => MatAutocompleteTrigger), { isSignal: true }] }] } });
|
|
1361
1873
|
|
|
1362
1874
|
class BdbColumnBuilder {
|
|
1363
1875
|
build(...columns) {
|
|
@@ -1446,10 +1958,10 @@ class BdbColumnBuilder {
|
|
|
1446
1958
|
textAlign: options?.textAlign,
|
|
1447
1959
|
};
|
|
1448
1960
|
}
|
|
1449
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1450
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
1961
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbColumnBuilder, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1962
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbColumnBuilder, providedIn: 'root' }); }
|
|
1451
1963
|
}
|
|
1452
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1964
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbColumnBuilder, decorators: [{
|
|
1453
1965
|
type: Injectable,
|
|
1454
1966
|
args: [{
|
|
1455
1967
|
providedIn: 'root',
|
|
@@ -1483,13 +1995,13 @@ class ExceptionLogTableComponent {
|
|
|
1483
1995
|
break;
|
|
1484
1996
|
}
|
|
1485
1997
|
}
|
|
1486
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1487
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
1998
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: ExceptionLogTableComponent, deps: [{ token: BdbColumnBuilder }, { token: i2$4.Router }, { token: i2$4.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1999
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.0", type: ExceptionLogTableComponent, isStandalone: true, selector: "bdb-exception-log-table[dataSource]", inputs: { dataSource: "dataSource", displayedColumns: "displayedColumns", contextActions: "contextActions" }, outputs: { rowClick: "rowClick" }, ngImport: i0, template: "<bdb-table\r\n [columns]=\"columns\"\r\n [dataSource]=\"dataSource\"\r\n [displayedColumns]=\"displayedColumns\"\r\n [contextActions]=\"contextActions\"\r\n (rowClick)=\"onRowClick($event)\"\r\n (contextAction)=\"onContextAction($event)\">\r\n</bdb-table>\r\n", styles: [""], dependencies: [{ kind: "component", type: BdbTableComponent, selector: "bdb-table[dataSource]", inputs: ["columns", "dataSource", "autoLoad", "displayedColumns", "contextActions", "selection", "selectOnRowClick", "selectedRowClass", "isClickable", "rowColor"], outputs: ["rowClick", "contextAction"] }] }); }
|
|
1488
2000
|
}
|
|
1489
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2001
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: ExceptionLogTableComponent, decorators: [{
|
|
1490
2002
|
type: Component,
|
|
1491
|
-
args: [{ selector: 'bdb-exception-log-table[dataSource]', imports: [
|
|
1492
|
-
}], ctorParameters: () => [{ type: BdbColumnBuilder }, { type: i2$
|
|
2003
|
+
args: [{ selector: 'bdb-exception-log-table[dataSource]', imports: [BdbTableComponent], template: "<bdb-table\r\n [columns]=\"columns\"\r\n [dataSource]=\"dataSource\"\r\n [displayedColumns]=\"displayedColumns\"\r\n [contextActions]=\"contextActions\"\r\n (rowClick)=\"onRowClick($event)\"\r\n (contextAction)=\"onContextAction($event)\">\r\n</bdb-table>\r\n" }]
|
|
2004
|
+
}], ctorParameters: () => [{ type: BdbColumnBuilder }, { type: i2$4.Router }, { type: i2$4.ActivatedRoute }], propDecorators: { dataSource: [{
|
|
1493
2005
|
type: Input
|
|
1494
2006
|
}], displayedColumns: [{
|
|
1495
2007
|
type: Input
|
|
@@ -1510,10 +2022,10 @@ class FileSizePipe {
|
|
|
1510
2022
|
const i = Math.floor(Math.log(bytes) / Math.log(1024));
|
|
1511
2023
|
return `${parseFloat((bytes / Math.pow(1024, i)).toFixed(1))} ${sizes[i]}`;
|
|
1512
2024
|
}
|
|
1513
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1514
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "
|
|
2025
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: FileSizePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
2026
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.1.0", ngImport: i0, type: FileSizePipe, isStandalone: true, name: "fileSize" }); }
|
|
1515
2027
|
}
|
|
1516
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2028
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: FileSizePipe, decorators: [{
|
|
1517
2029
|
type: Pipe,
|
|
1518
2030
|
args: [{
|
|
1519
2031
|
name: 'fileSize',
|
|
@@ -1523,6 +2035,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.3", ngImpor
|
|
|
1523
2035
|
class BdbYoutubePlayerComponent {
|
|
1524
2036
|
constructor(changeDetectorRef) {
|
|
1525
2037
|
this.changeDetectorRef = changeDetectorRef;
|
|
2038
|
+
//https://stackoverflow.com/a/72043964
|
|
2039
|
+
this.youTubePlayer = viewChild.required('youTubePlayer');
|
|
1526
2040
|
this.videoHeight = 100;
|
|
1527
2041
|
this.videoWidth = 100;
|
|
1528
2042
|
}
|
|
@@ -1532,21 +2046,18 @@ class BdbYoutubePlayerComponent {
|
|
|
1532
2046
|
}
|
|
1533
2047
|
onResize() {
|
|
1534
2048
|
// you can remove this line if you want to have wider video player than 1200px
|
|
1535
|
-
this.videoWidth = Math.min(this.youTubePlayer.nativeElement.clientWidth, 1200);
|
|
2049
|
+
this.videoWidth = Math.min(this.youTubePlayer().nativeElement.clientWidth, 1200);
|
|
1536
2050
|
// so you keep the ratio
|
|
1537
2051
|
this.videoHeight = this.videoWidth * 0.6;
|
|
1538
2052
|
this.changeDetectorRef.detectChanges();
|
|
1539
2053
|
}
|
|
1540
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1541
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
2054
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbYoutubePlayerComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2055
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.1.0", type: BdbYoutubePlayerComponent, isStandalone: true, selector: "bdb-youtube-player", inputs: { videoId: "videoId" }, viewQueries: [{ propertyName: "youTubePlayer", first: true, predicate: ["youTubePlayer"], descendants: true, isSignal: true }], ngImport: i0, template: "<div #youTubePlayer class=\"bdb-youtube-player\">\r\n <youtube-player [width]=\"videoWidth\" [height]=\"videoHeight\" [videoId]=\"videoId\"></youtube-player>\r\n</div>\r\n", styles: [".bdb-youtube-player-container{display:flex;flex-direction:column;justify-content:center;align-items:center;aspect-ratio:1/1}\n"], dependencies: [{ kind: "ngmodule", type: YouTubePlayerModule }, { kind: "component", type: i1$4.YouTubePlayer, selector: "youtube-player", inputs: ["videoId", "height", "width", "startSeconds", "endSeconds", "suggestedQuality", "playerVars", "disableCookies", "loadApi", "disablePlaceholder", "showBeforeIframeApiLoads", "placeholderButtonLabel", "placeholderImageQuality"], outputs: ["ready", "stateChange", "error", "apiChange", "playbackQualityChange", "playbackRateChange"] }] }); }
|
|
1542
2056
|
}
|
|
1543
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2057
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbYoutubePlayerComponent, decorators: [{
|
|
1544
2058
|
type: Component,
|
|
1545
2059
|
args: [{ selector: 'bdb-youtube-player', imports: [YouTubePlayerModule], template: "<div #youTubePlayer class=\"bdb-youtube-player\">\r\n <youtube-player [width]=\"videoWidth\" [height]=\"videoHeight\" [videoId]=\"videoId\"></youtube-player>\r\n</div>\r\n", styles: [".bdb-youtube-player-container{display:flex;flex-direction:column;justify-content:center;align-items:center;aspect-ratio:1/1}\n"] }]
|
|
1546
|
-
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { youTubePlayer: [{
|
|
1547
|
-
type: ViewChild,
|
|
1548
|
-
args: ['youTubePlayer']
|
|
1549
|
-
}], videoId: [{
|
|
2060
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { youTubePlayer: [{ type: i0.ViewChild, args: ['youTubePlayer', { isSignal: true }] }], videoId: [{
|
|
1550
2061
|
type: Input
|
|
1551
2062
|
}] } });
|
|
1552
2063
|
|
|
@@ -1575,10 +2086,10 @@ class MediaTypeIconPipe {
|
|
|
1575
2086
|
return undefined;
|
|
1576
2087
|
}
|
|
1577
2088
|
}
|
|
1578
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1579
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "
|
|
2089
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: MediaTypeIconPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
2090
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.1.0", ngImport: i0, type: MediaTypeIconPipe, isStandalone: true, name: "mediaTypeIcon" }); }
|
|
1580
2091
|
}
|
|
1581
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2092
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: MediaTypeIconPipe, decorators: [{
|
|
1582
2093
|
type: Pipe,
|
|
1583
2094
|
args: [{
|
|
1584
2095
|
name: 'mediaTypeIcon',
|
|
@@ -1649,10 +2160,10 @@ class BdbMediaDisplayComponent {
|
|
|
1649
2160
|
}
|
|
1650
2161
|
return parts.pop()?.toLocaleLowerCase();
|
|
1651
2162
|
}
|
|
1652
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1653
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
2163
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbMediaDisplayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2164
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.0", type: BdbMediaDisplayComponent, isStandalone: true, selector: "bdb-media-display", inputs: { media: "media", mode: "mode", overlayBehavior: "overlayBehavior", width: "width", height: "height", alt: "alt" }, host: { properties: { "class": "this.class" } }, usesOnChanges: true, ngImport: i0, template: "@if (hasError || !media) {\r\n <ng-container *ngTemplateOutlet=\"noMedia\"></ng-container>\r\n} @else {\r\n <ng-container *ngTemplateOutlet=\"overlay\"></ng-container>\r\n @switch (media.type) {\r\n @case (mediaType.Video) {\r\n <ng-container *ngTemplateOutlet=\"video\"></ng-container>\r\n }\r\n @case (mediaType.File) {\r\n <ng-container *ngTemplateOutlet=\"file\"></ng-container>\r\n }\r\n @default {\r\n <img [src]=\"src\" [alt]=\"alt\" (error)=\"hasError = true\" />\r\n }\r\n }\r\n}\r\n<ng-container *ngTemplateOutlet=\"underlay\"></ng-container>\r\n\r\n<ng-template #overlay>\r\n @if (media && mode === 'details') {\r\n <div class=\"overlay\" [class.on-hover]=\"overlayBehavior === 'hover'\">\r\n <div class=\"media-details\">\r\n <mat-icon>{{ media.type | mediaTypeIcon }}</mat-icon>\r\n <div>\r\n @switch (media.type) {\r\n @case (mediaType.Video) {\r\n {{ media.reference }}\r\n }\r\n @case (mediaType.File) {\r\n {{ media.originalFileName }}, {{ media.fileSize | fileSize }}\r\n }\r\n @case (mediaType.Image) {\r\n @if (media.fileName?.endsWith('.svg')) {\r\n SVG,\r\n } @else {\r\n {{ media.width }} x {{ media.height }} px,\r\n }\r\n {{ media.fileSize | fileSize }}\r\n }\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #underlay>\r\n @if (media && mode === 'details') {\r\n <div class=\"underlay\"></div>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #video>\r\n @if (mode === 'live') {\r\n <bdb-youtube-player [videoId]=\"media?.reference\"></bdb-youtube-player>\r\n } @else {\r\n <div bdbFlex=\"col 0px center center\">\r\n <mat-icon>play_circle_outline</mat-icon>\r\n @if (src) {\r\n <img [src]=\"src\" [alt]=\"alt\" />\r\n } @else {\r\n <ng-container *ngTemplateOutlet=\"noPreviewAvailable\"></ng-container>\r\n }\r\n </div>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #file>\r\n @if (src) {\r\n <img [src]=\"src\" [alt]=\"alt\" />\r\n } @else {\r\n <ng-container *ngTemplateOutlet=\"noPreviewAvailable\"></ng-container>\r\n }\r\n @if (mode === 'live') {\r\n <div class=\"file-overlay\">\r\n <a mat-fab aria-label=\"Download\" [href]=\"getSource(media, true)\" target=\"_blank\" download class=\"primary\">\r\n <mat-icon>save_alt</mat-icon>\r\n </a>\r\n </div>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #noPreviewAvailable>\r\n <div class=\"no-preview-available\">\r\n <em>Geen preview beschikbaar</em>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #noMedia>\r\n <svg version=\"1.1\" viewBox=\"0 0 180 180\" xmlns:svg=\"http://www.w3.org/2000/svg\">\r\n <g transform=\"translate(-2,-6)\">\r\n <rect style=\"fill: #9f9f9f\" width=\"90\" height=\"90\" x=\"-18\" y=\"85\" ry=\"8.4\" transform=\"rotate(-16.3)\" />\r\n <g transform=\"rotate(16.3,229,-1658.3)\">\r\n <rect\r\n ry=\"4.6\"\r\n y=\"1.6\"\r\n x=\"547\"\r\n height=\"110\"\r\n width=\"110\"\r\n style=\"fill: #a2a2a2; stroke: #ffffff; stroke-width: 5.4\" />\r\n <g\r\n style=\"stroke: #ffffff; stroke-width: 13; stroke-miterlimit: 4\"\r\n transform=\"matrix(0.17265471,0,0,0.17265471,512.49324,-6.3296456)\">\r\n <rect style=\"fill: #cccccc\" width=\"491\" height=\"449\" x=\"270\" y=\"107\" />\r\n <rect style=\"fill: #ffffff\" id=\"rect3342\" width=\"491\" height=\"209\" x=\"270\" y=\"107\" />\r\n <path\r\n style=\"fill: #cccccc\"\r\n d=\"m 300,317.36255 38.46147,-53.53818 60.53097,-45.16084 15.88277,18.57394 13.61285,-38.68356 8.20133,-2.98188 13.3106,-28.2093 180,179.99979\" />\r\n <path\r\n style=\"fill: #b3b3b3; stroke: #ffffff; paint-order: stroke\"\r\n d=\"m 180,60 c 4.09311,16.474688 7.71219,33.067277 10.85156,49.75 2.38256,12.66097 4.48857,25.37408 6.31641,38.12695 l -22.06445,-7.16015 -46.11133,-29.41602 5.32422,46.42578 -1.61524,24.78711 10.05274,30.37695 73.18554,-11.75585 L 300,180 252.19922,102.56641 242.5,117.5 215.375,95.375 Z\"\r\n transform=\"translate(270,107.36227)\" />\r\n <path\r\n d=\"m 419.99999,347.36252 81.89918,-74.42959 18.50574,-9.68009 23.6512,-44.18894 25.94388,-21.70121 179.99999,179.99979\"\r\n style=\"fill: #cccccc; stroke: #ffffff; stroke-width: 13.0708; paint-order: stroke\" />\r\n <path\r\n style=\"fill: #b3b3b3; stroke: #ffffff; stroke-width: 13.0708; paint-order: stroke\"\r\n d=\"m 569.99999,197.36269 35.9388,80.91289 v 30.11038 30.11038 l 22.45864,19.46652 c 6.52453,-6.45031 14.14893,-11.78526 22.44431,-15.70477 14.8245,-7.00447 31.33823,-9.35959 47.17057,-13.6217 6.42776,-1.73037 12.90672,-3.85419 18.21343,-7.87277 1.35174,-1.02362 2.61592,-2.16281 3.77424,-3.40107 h -30 l -40.52149,-40.55006 -29.85645,-48.91972 -10.25307,8.83886 z\" />\r\n <path\r\n style=\"fill: #ffffff\"\r\n d=\"m 419.99999,557.36227 c -0.41699,-9.60089 -8.81759,-17.60878 17.1252,-30.66806 31.8318,-16.02389 125.895,-35.88836 152.1537,-59.98434 19.42709,-17.82687 -70.4154,-37.66945 -55.0191,-59.07323 6.981,-9.70528 59.037,-19.96947 82.1463,-30.27386 21.90569,-9.76799 15.14129,-19.80328 31.4046,-29.97507 15.7092,-9.82558 68.3499,-19.77358 72.18929,-30.02516 -10.41359,10.52188 -68.83379,20.40327 -89.99999,30.00026 -22.3377,10.128 -21.4689,19.93018 -49.4313,29.48367 -30.1245,10.29239 -89.142,20.55268 -102.7077,30.51626 -28.4133,20.86858 46.863,42.59995 16.2024,59.99993 C 452.54309,490.92554 344.7219,510.65712 300,527.3626 c -30.9039,11.54369 -28.4079,17.74799 -30,29.99967\" />\r\n </g>\r\n </g>\r\n </g>\r\n </svg>\r\n</ng-template>\r\n", styles: [":host{display:flex;position:relative}:host .overlay{position:absolute;display:flex;flex-direction:column;justify-content:flex-end;inset:0;z-index:1;background-color:#0000004d}:host .overlay button{margin:4px}:host .overlay .media-details{display:flex;justify-content:center;align-items:center;gap:8px;background-color:#000000b3;font-size:11px;color:#fff}:host .underlay{position:absolute;inset:0;background-color:var(--bdb-media-display-container);border:1px dashed var(--bdb-media-display-outline-color);z-index:-1}:host .overlay.on-hover{display:none}:host:hover .overlay.on-hover{display:flex}img{object-fit:contain;max-width:100%;max-height:100%}.file-live{position:relative;display:flex;justify-content:center;align-items:center;width:100%;height:100%}.file-live .file-overlay{position:absolute;inset:0;display:flex;justify-content:center;align-items:center}.no-preview-available{display:flex;align-items:center;justify-content:center;width:100%;height:100%;color:var(--bdb-sys-warn)}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatFabButton, selector: "button[mat-fab], a[mat-fab], button[matFab], a[matFab]", inputs: ["extended"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: BdbYoutubePlayerComponent, selector: "bdb-youtube-player", inputs: ["videoId"] }, { kind: "pipe", type: MediaTypeIconPipe, name: "mediaTypeIcon" }, { kind: "pipe", type: FileSizePipe, name: "fileSize" }] }); }
|
|
1654
2165
|
}
|
|
1655
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2166
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbMediaDisplayComponent, decorators: [{
|
|
1656
2167
|
type: Component,
|
|
1657
2168
|
args: [{ selector: 'bdb-media-display', imports: [
|
|
1658
2169
|
MatButtonModule,
|
|
@@ -1661,7 +2172,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.3", ngImpor
|
|
|
1661
2172
|
BdbYoutubePlayerComponent,
|
|
1662
2173
|
MediaTypeIconPipe,
|
|
1663
2174
|
FileSizePipe,
|
|
1664
|
-
], template: "@if (media) {\r\n
|
|
2175
|
+
], template: "@if (hasError || !media) {\r\n <ng-container *ngTemplateOutlet=\"noMedia\"></ng-container>\r\n} @else {\r\n <ng-container *ngTemplateOutlet=\"overlay\"></ng-container>\r\n @switch (media.type) {\r\n @case (mediaType.Video) {\r\n <ng-container *ngTemplateOutlet=\"video\"></ng-container>\r\n }\r\n @case (mediaType.File) {\r\n <ng-container *ngTemplateOutlet=\"file\"></ng-container>\r\n }\r\n @default {\r\n <img [src]=\"src\" [alt]=\"alt\" (error)=\"hasError = true\" />\r\n }\r\n }\r\n}\r\n<ng-container *ngTemplateOutlet=\"underlay\"></ng-container>\r\n\r\n<ng-template #overlay>\r\n @if (media && mode === 'details') {\r\n <div class=\"overlay\" [class.on-hover]=\"overlayBehavior === 'hover'\">\r\n <div class=\"media-details\">\r\n <mat-icon>{{ media.type | mediaTypeIcon }}</mat-icon>\r\n <div>\r\n @switch (media.type) {\r\n @case (mediaType.Video) {\r\n {{ media.reference }}\r\n }\r\n @case (mediaType.File) {\r\n {{ media.originalFileName }}, {{ media.fileSize | fileSize }}\r\n }\r\n @case (mediaType.Image) {\r\n @if (media.fileName?.endsWith('.svg')) {\r\n SVG,\r\n } @else {\r\n {{ media.width }} x {{ media.height }} px,\r\n }\r\n {{ media.fileSize | fileSize }}\r\n }\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #underlay>\r\n @if (media && mode === 'details') {\r\n <div class=\"underlay\"></div>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #video>\r\n @if (mode === 'live') {\r\n <bdb-youtube-player [videoId]=\"media?.reference\"></bdb-youtube-player>\r\n } @else {\r\n <div bdbFlex=\"col 0px center center\">\r\n <mat-icon>play_circle_outline</mat-icon>\r\n @if (src) {\r\n <img [src]=\"src\" [alt]=\"alt\" />\r\n } @else {\r\n <ng-container *ngTemplateOutlet=\"noPreviewAvailable\"></ng-container>\r\n }\r\n </div>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #file>\r\n @if (src) {\r\n <img [src]=\"src\" [alt]=\"alt\" />\r\n } @else {\r\n <ng-container *ngTemplateOutlet=\"noPreviewAvailable\"></ng-container>\r\n }\r\n @if (mode === 'live') {\r\n <div class=\"file-overlay\">\r\n <a mat-fab aria-label=\"Download\" [href]=\"getSource(media, true)\" target=\"_blank\" download class=\"primary\">\r\n <mat-icon>save_alt</mat-icon>\r\n </a>\r\n </div>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #noPreviewAvailable>\r\n <div class=\"no-preview-available\">\r\n <em>Geen preview beschikbaar</em>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #noMedia>\r\n <svg version=\"1.1\" viewBox=\"0 0 180 180\" xmlns:svg=\"http://www.w3.org/2000/svg\">\r\n <g transform=\"translate(-2,-6)\">\r\n <rect style=\"fill: #9f9f9f\" width=\"90\" height=\"90\" x=\"-18\" y=\"85\" ry=\"8.4\" transform=\"rotate(-16.3)\" />\r\n <g transform=\"rotate(16.3,229,-1658.3)\">\r\n <rect\r\n ry=\"4.6\"\r\n y=\"1.6\"\r\n x=\"547\"\r\n height=\"110\"\r\n width=\"110\"\r\n style=\"fill: #a2a2a2; stroke: #ffffff; stroke-width: 5.4\" />\r\n <g\r\n style=\"stroke: #ffffff; stroke-width: 13; stroke-miterlimit: 4\"\r\n transform=\"matrix(0.17265471,0,0,0.17265471,512.49324,-6.3296456)\">\r\n <rect style=\"fill: #cccccc\" width=\"491\" height=\"449\" x=\"270\" y=\"107\" />\r\n <rect style=\"fill: #ffffff\" id=\"rect3342\" width=\"491\" height=\"209\" x=\"270\" y=\"107\" />\r\n <path\r\n style=\"fill: #cccccc\"\r\n d=\"m 300,317.36255 38.46147,-53.53818 60.53097,-45.16084 15.88277,18.57394 13.61285,-38.68356 8.20133,-2.98188 13.3106,-28.2093 180,179.99979\" />\r\n <path\r\n style=\"fill: #b3b3b3; stroke: #ffffff; paint-order: stroke\"\r\n d=\"m 180,60 c 4.09311,16.474688 7.71219,33.067277 10.85156,49.75 2.38256,12.66097 4.48857,25.37408 6.31641,38.12695 l -22.06445,-7.16015 -46.11133,-29.41602 5.32422,46.42578 -1.61524,24.78711 10.05274,30.37695 73.18554,-11.75585 L 300,180 252.19922,102.56641 242.5,117.5 215.375,95.375 Z\"\r\n transform=\"translate(270,107.36227)\" />\r\n <path\r\n d=\"m 419.99999,347.36252 81.89918,-74.42959 18.50574,-9.68009 23.6512,-44.18894 25.94388,-21.70121 179.99999,179.99979\"\r\n style=\"fill: #cccccc; stroke: #ffffff; stroke-width: 13.0708; paint-order: stroke\" />\r\n <path\r\n style=\"fill: #b3b3b3; stroke: #ffffff; stroke-width: 13.0708; paint-order: stroke\"\r\n d=\"m 569.99999,197.36269 35.9388,80.91289 v 30.11038 30.11038 l 22.45864,19.46652 c 6.52453,-6.45031 14.14893,-11.78526 22.44431,-15.70477 14.8245,-7.00447 31.33823,-9.35959 47.17057,-13.6217 6.42776,-1.73037 12.90672,-3.85419 18.21343,-7.87277 1.35174,-1.02362 2.61592,-2.16281 3.77424,-3.40107 h -30 l -40.52149,-40.55006 -29.85645,-48.91972 -10.25307,8.83886 z\" />\r\n <path\r\n style=\"fill: #ffffff\"\r\n d=\"m 419.99999,557.36227 c -0.41699,-9.60089 -8.81759,-17.60878 17.1252,-30.66806 31.8318,-16.02389 125.895,-35.88836 152.1537,-59.98434 19.42709,-17.82687 -70.4154,-37.66945 -55.0191,-59.07323 6.981,-9.70528 59.037,-19.96947 82.1463,-30.27386 21.90569,-9.76799 15.14129,-19.80328 31.4046,-29.97507 15.7092,-9.82558 68.3499,-19.77358 72.18929,-30.02516 -10.41359,10.52188 -68.83379,20.40327 -89.99999,30.00026 -22.3377,10.128 -21.4689,19.93018 -49.4313,29.48367 -30.1245,10.29239 -89.142,20.55268 -102.7077,30.51626 -28.4133,20.86858 46.863,42.59995 16.2024,59.99993 C 452.54309,490.92554 344.7219,510.65712 300,527.3626 c -30.9039,11.54369 -28.4079,17.74799 -30,29.99967\" />\r\n </g>\r\n </g>\r\n </g>\r\n </svg>\r\n</ng-template>\r\n", styles: [":host{display:flex;position:relative}:host .overlay{position:absolute;display:flex;flex-direction:column;justify-content:flex-end;inset:0;z-index:1;background-color:#0000004d}:host .overlay button{margin:4px}:host .overlay .media-details{display:flex;justify-content:center;align-items:center;gap:8px;background-color:#000000b3;font-size:11px;color:#fff}:host .underlay{position:absolute;inset:0;background-color:var(--bdb-media-display-container);border:1px dashed var(--bdb-media-display-outline-color);z-index:-1}:host .overlay.on-hover{display:none}:host:hover .overlay.on-hover{display:flex}img{object-fit:contain;max-width:100%;max-height:100%}.file-live{position:relative;display:flex;justify-content:center;align-items:center;width:100%;height:100%}.file-live .file-overlay{position:absolute;inset:0;display:flex;justify-content:center;align-items:center}.no-preview-available{display:flex;align-items:center;justify-content:center;width:100%;height:100%;color:var(--bdb-sys-warn)}\n"] }]
|
|
1665
2176
|
}], propDecorators: { media: [{
|
|
1666
2177
|
type: Input
|
|
1667
2178
|
}], mode: [{
|
|
@@ -1686,10 +2197,10 @@ class MediaTypePipe {
|
|
|
1686
2197
|
}
|
|
1687
2198
|
return MediaTypeMap.get(value) ?? '???';
|
|
1688
2199
|
}
|
|
1689
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1690
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "
|
|
2200
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: MediaTypePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
2201
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.1.0", ngImport: i0, type: MediaTypePipe, isStandalone: true, name: "mediaType" }); }
|
|
1691
2202
|
}
|
|
1692
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2203
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: MediaTypePipe, decorators: [{
|
|
1693
2204
|
type: Pipe,
|
|
1694
2205
|
args: [{
|
|
1695
2206
|
name: 'mediaType',
|
|
@@ -1706,10 +2217,10 @@ class MediaFullTableComponent {
|
|
|
1706
2217
|
this.cb = inject((BdbColumnBuilder));
|
|
1707
2218
|
this.columns = this.cb.build(this.cb.enum(x => x.type, 'Type', { pipe: MediaTypePipe, width: 120 }), this.cb.string(x => x.fileName, 'Bestandsnaam'), this.cb.string(x => x.reference, 'Referentie', { width: 200 }), this.cb.number(x => x.fileSize, 'Bestandsgrootte', { pipe: FileSizePipe, width: 200 }), this.cb.number(x => x.height, 'Hoogte', { width: 200 }), this.cb.number(x => x.width, 'Breedte', { width: 200 }));
|
|
1708
2219
|
}
|
|
1709
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1710
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
2220
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: MediaFullTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2221
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.0", type: MediaFullTableComponent, isStandalone: true, selector: "bdb-media-full-table", inputs: { dataSource: "dataSource", displayedColumns: "displayedColumns", selection: "selection", showToolbar: "showToolbar", contextActions: "contextActions" }, outputs: { contextAction: "contextAction", rowClick: "rowClick" }, ngImport: i0, template: "<bdb-full-table\r\n [dataSource]=\"dataSource\"\r\n [columns]=\"columns\"\r\n [displayedColumns]=\"displayedColumns\"\r\n [selection]=\"selection\"\r\n [showToolbar]=\"showToolbar\"\r\n [contextActions]=\"contextActions\"\r\n (rowClick)=\"rowClick.emit($event)\"\r\n (contextAction)=\"contextAction.emit($event)\">\r\n <ng-content select=\"toolbar-item\" ngProjectAs=\"toolbar-item\"></ng-content>\r\n <ng-content></ng-content>\r\n</bdb-full-table>\r\n", styles: [":host{display:contents}\n"], dependencies: [{ kind: "component", type: BdbFullTableComponent, selector: "bdb-full-table", inputs: ["dataSource", "columns", "displayedColumns", "autoLoad", "selection", "contextActions", "rowColor", "showToolbar"], outputs: ["rowClick", "contextAction"] }, { kind: "ngmodule", type: MatButtonModule }] }); }
|
|
1711
2222
|
}
|
|
1712
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2223
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: MediaFullTableComponent, decorators: [{
|
|
1713
2224
|
type: Component,
|
|
1714
2225
|
args: [{ selector: 'bdb-media-full-table', imports: [BdbFullTableComponent, MatButtonModule], template: "<bdb-full-table\r\n [dataSource]=\"dataSource\"\r\n [columns]=\"columns\"\r\n [displayedColumns]=\"displayedColumns\"\r\n [selection]=\"selection\"\r\n [showToolbar]=\"showToolbar\"\r\n [contextActions]=\"contextActions\"\r\n (rowClick)=\"rowClick.emit($event)\"\r\n (contextAction)=\"contextAction.emit($event)\">\r\n <ng-content select=\"toolbar-item\" ngProjectAs=\"toolbar-item\"></ng-content>\r\n <ng-content></ng-content>\r\n</bdb-full-table>\r\n", styles: [":host{display:contents}\n"] }]
|
|
1715
2226
|
}], propDecorators: { dataSource: [{
|
|
@@ -1757,10 +2268,10 @@ class MediaService extends BdbServiceRD {
|
|
|
1757
2268
|
url: url,
|
|
1758
2269
|
});
|
|
1759
2270
|
}
|
|
1760
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1761
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
2271
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: MediaService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
2272
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: MediaService, providedIn: 'root' }); }
|
|
1762
2273
|
}
|
|
1763
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2274
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: MediaService, decorators: [{
|
|
1764
2275
|
type: Injectable,
|
|
1765
2276
|
args: [{
|
|
1766
2277
|
providedIn: 'root',
|
|
@@ -1836,10 +2347,10 @@ class MediaDropDirective {
|
|
|
1836
2347
|
}
|
|
1837
2348
|
}
|
|
1838
2349
|
}
|
|
1839
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1840
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
2350
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: MediaDropDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
2351
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.0", type: MediaDropDirective, isStandalone: true, selector: "[bdbMediaDrop]", outputs: { dropStart: "dropStart", dropComplete: "dropComplete", dropError: "dropError" }, host: { listeners: { "dragover": "dragOver($event)", "dragleave": "dragLeave($event)", "drop": "drop($event)" }, properties: { "class": "this.hostClass" } }, ngImport: i0 }); }
|
|
1841
2352
|
}
|
|
1842
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2353
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: MediaDropDirective, decorators: [{
|
|
1843
2354
|
type: Directive,
|
|
1844
2355
|
args: [{
|
|
1845
2356
|
selector: '[bdbMediaDrop]',
|
|
@@ -1868,6 +2379,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.3", ngImpor
|
|
|
1868
2379
|
class BdbMediaUploadComponent {
|
|
1869
2380
|
constructor() {
|
|
1870
2381
|
this.class = 'bdb-media-upload';
|
|
2382
|
+
this.nativeInputFile = viewChild('inputFile', ...(ngDevMode ? [{ debugName: "nativeInputFile" }] : []));
|
|
1871
2383
|
this.mediaService = inject(MediaService);
|
|
1872
2384
|
this.accept = 'image/bmp,image/jpg,image/jpeg,image/png,image/gif,image/webp,image/svg+xml,application/pdf,text/xml';
|
|
1873
2385
|
this.uploadComplete = new EventEmitter();
|
|
@@ -1898,8 +2410,9 @@ class BdbMediaUploadComponent {
|
|
|
1898
2410
|
}
|
|
1899
2411
|
}
|
|
1900
2412
|
selectFile() {
|
|
1901
|
-
|
|
1902
|
-
|
|
2413
|
+
const nativeInputFile = this.nativeInputFile();
|
|
2414
|
+
if (nativeInputFile) {
|
|
2415
|
+
nativeInputFile.nativeElement.click();
|
|
1903
2416
|
}
|
|
1904
2417
|
}
|
|
1905
2418
|
onDropStart() {
|
|
@@ -1914,19 +2427,16 @@ class BdbMediaUploadComponent {
|
|
|
1914
2427
|
this._pending = false;
|
|
1915
2428
|
this.uploadComplete.emit($event);
|
|
1916
2429
|
}
|
|
1917
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1918
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
2430
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbMediaUploadComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2431
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.0", type: BdbMediaUploadComponent, isStandalone: true, selector: "bdb-media-upload", inputs: { accept: "accept" }, outputs: { uploadComplete: "uploadComplete", uploadError: "uploadError", uploadStart: "uploadStart" }, host: { properties: { "class": "this.class" } }, viewQueries: [{ propertyName: "nativeInputFile", first: true, predicate: ["inputFile"], descendants: true, isSignal: true }], ngImport: i0, template: "<div\r\n class=\"drop-box\"\r\n bdbMediaDrop\r\n matRipple\r\n (dropComplete)=\"onDropComplete($event)\"\r\n (dropError)=\"onDropError($event)\"\r\n (dropStart)=\"onDropStart()\"\r\n (click)=\"selectFile()\">\r\n <ng-content>\r\n <ng-container *ngTemplateOutlet=\"uploadIcon\"></ng-container>\r\n </ng-content>\r\n</div>\r\n<input type=\"file\" [accept]=\"accept\" (change)=\"onNativeInputFileSelect($event)\" #inputFile hidden />\r\n\r\n@if (pending) {\r\n <div class=\"overlay\">\r\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\r\n </div>\r\n}\r\n\r\n<ng-template #uploadIcon>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 640 512\">\r\n <path\r\n d=\"M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4zM393.4 288H328v112c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V288h-65.4c-14.3 0-21.4-17.2-11.3-27.3l105.4-105.4c6.2-6.2 16.4-6.2 22.6 0l105.4 105.4c10.1 10.1 2.9 27.3-11.3 27.3z\" />\r\n </svg>\r\n</ng-template>\r\n", styles: [":host{display:flex;position:relative}:host .overlay{position:absolute;inset:0;background-color:light-dark(rgba(255,255,255,.8),rgba(0,0,0,.8));z-index:1;display:flex;align-items:center;justify-content:start}.drop-box{display:flex;flex:1;flex-direction:column;align-items:center;justify-content:center;background-color:var(--bdb-media-upload-container);border:1px dashed var(--bdb-media-upload-outline-color);cursor:pointer}.drop-box svg{flex:0 0 70%;object-fit:contain;max-width:90%;max-height:90%}.drop-box svg path{fill:var(--bdb-media-upload-fill)}.drop-box.hover svg path{fill:var(--bdb-sys-success-container)}.drop-box:hover{background-color:var(--bdb-media-upload-container-hover)}.upload-icon{height:100%;width:100%}\n"], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: DragDropModule }, { kind: "directive", type: MediaDropDirective, selector: "[bdbMediaDrop]", outputs: ["dropStart", "dropComplete", "dropError"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: MatRippleModule }, { kind: "directive", type: i1$5.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "component", type: MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }] }); }
|
|
1919
2432
|
}
|
|
1920
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2433
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbMediaUploadComponent, decorators: [{
|
|
1921
2434
|
type: Component,
|
|
1922
2435
|
args: [{ selector: 'bdb-media-upload', imports: [MatIconModule, DragDropModule, MediaDropDirective, NgTemplateOutlet, MatRippleModule, MatProgressBar], template: "<div\r\n class=\"drop-box\"\r\n bdbMediaDrop\r\n matRipple\r\n (dropComplete)=\"onDropComplete($event)\"\r\n (dropError)=\"onDropError($event)\"\r\n (dropStart)=\"onDropStart()\"\r\n (click)=\"selectFile()\">\r\n <ng-content>\r\n <ng-container *ngTemplateOutlet=\"uploadIcon\"></ng-container>\r\n </ng-content>\r\n</div>\r\n<input type=\"file\" [accept]=\"accept\" (change)=\"onNativeInputFileSelect($event)\" #inputFile hidden />\r\n\r\n@if (pending) {\r\n <div class=\"overlay\">\r\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\r\n </div>\r\n}\r\n\r\n<ng-template #uploadIcon>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 640 512\">\r\n <path\r\n d=\"M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4zM393.4 288H328v112c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V288h-65.4c-14.3 0-21.4-17.2-11.3-27.3l105.4-105.4c6.2-6.2 16.4-6.2 22.6 0l105.4 105.4c10.1 10.1 2.9 27.3-11.3 27.3z\" />\r\n </svg>\r\n</ng-template>\r\n", styles: [":host{display:flex;position:relative}:host .overlay{position:absolute;inset:0;background-color:light-dark(rgba(255,255,255,.8),rgba(0,0,0,.8));z-index:1;display:flex;align-items:center;justify-content:start}.drop-box{display:flex;flex:1;flex-direction:column;align-items:center;justify-content:center;background-color:var(--bdb-media-upload-container);border:1px dashed var(--bdb-media-upload-outline-color);cursor:pointer}.drop-box svg{flex:0 0 70%;object-fit:contain;max-width:90%;max-height:90%}.drop-box svg path{fill:var(--bdb-media-upload-fill)}.drop-box.hover svg path{fill:var(--bdb-sys-success-container)}.drop-box:hover{background-color:var(--bdb-media-upload-container-hover)}.upload-icon{height:100%;width:100%}\n"] }]
|
|
1923
2436
|
}], propDecorators: { class: [{
|
|
1924
2437
|
type: HostBinding,
|
|
1925
2438
|
args: ['class']
|
|
1926
|
-
}], nativeInputFile: [{
|
|
1927
|
-
type: ViewChild,
|
|
1928
|
-
args: ['inputFile', { static: false }]
|
|
1929
|
-
}], accept: [{
|
|
2439
|
+
}], nativeInputFile: [{ type: i0.ViewChild, args: ['inputFile', { isSignal: true }] }], accept: [{
|
|
1930
2440
|
type: Input
|
|
1931
2441
|
}], uploadComplete: [{
|
|
1932
2442
|
type: Output
|
|
@@ -1978,7 +2488,6 @@ class BdbMediaInputComponent {
|
|
|
1978
2488
|
this.onChange = () => { };
|
|
1979
2489
|
this.onTouched = () => { };
|
|
1980
2490
|
// Replace the provider from above with this.
|
|
1981
|
-
console.log(this.id);
|
|
1982
2491
|
if (this.ngControl != null) {
|
|
1983
2492
|
// const test = (this.ngControl.control as FormControl<Media | undefined>) != null;
|
|
1984
2493
|
// Setting the value accessor directly (instead of using
|
|
@@ -2064,10 +2573,10 @@ class BdbMediaInputComponent {
|
|
|
2064
2573
|
this.onChange(undefined);
|
|
2065
2574
|
this.touched = true;
|
|
2066
2575
|
}
|
|
2067
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2068
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
2576
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbMediaInputComponent, deps: [{ token: i1$2.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2577
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.0", type: BdbMediaInputComponent, isStandalone: true, selector: "bdb-media-input", inputs: { clearOnDragOver: "clearOnDragOver", required: "required", disabled: "disabled", userAriaDescribedBy: ["aria-describedby", "userAriaDescribedBy"] }, host: { properties: { "class": "this.class", "id": "this.id" } }, providers: [{ provide: MatFormFieldControl, useExisting: BdbMediaInputComponent }], ngImport: i0, template: "<div>\r\n @if (value) {\r\n <button mat-mini-fab class=\"error\" (click)=\"clear()\"><mat-icon>clear</mat-icon></button>\r\n <bdb-media-display\r\n [media]=\"value\"\r\n [mode]=\"'details'\"\r\n detailsOverlay=\"always\"\r\n (dragover)=\"clearOnDragOver ? clear() : null\" />\r\n } @else {\r\n @if (error) {\r\n <bdb-alert-error-response\r\n [value]=\"error\"\r\n [dismissable]=\"true\"\r\n (dismiss)=\"error = undefined\"\r\n (dragover)=\"error = undefined\" />\r\n } @else {\r\n <bdb-media-upload (uploadComplete)=\"onUploadComplete($event)\" (uploadError)=\"error = $event\">\r\n <ng-content>\r\n <ng-container *ngTemplateOutlet=\"uploadIcon\"></ng-container>\r\n </ng-content>\r\n </bdb-media-upload>\r\n }\r\n }\r\n</div>\r\n\r\n<ng-template #uploadIcon>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 640 512\">\r\n <path\r\n d=\"M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4zM393.4 288H328v112c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V288h-65.4c-14.3 0-21.4-17.2-11.3-27.3l105.4-105.4c6.2-6.2 16.4-6.2 22.6 0l105.4 105.4c10.1 10.1 2.9 27.3-11.3 27.3z\" />\r\n </svg>\r\n</ng-template>\r\n", styles: [":host{display:flex;flex-direction:row;align-items:stretch;justify-content:stretch;aspect-ratio:1/1;overflow:hidden}:host>div{flex:1;display:flex;align-items:stretch;justify-content:stretch;position:relative}:host>div bdb-media-upload{--bdb-media-upload-container: var(--bdb-media-input-container);--bdb-media-upload-container-hover: var(--bdb-media-input-container-hover);--bdb-media-upload-outline-color: var(--bdb-media-input-outline-color);--bdb-media-upload-fill: var(--bdb-media-input-fill);flex:1}:host>div bdb-media-display{--bdb-media-display-container: var(--bdb-media-input-container);--bdb-media-display-container-hover: var(--bdb-media-input-container-hover);--bdb-media-display-outline-color: var(--bdb-media-input-outline-color);--bdb-media-display-fill: var(--bdb-media-input-fill);flex:1;display:flex;align-items:center;justify-content:center}:host>div>button{position:absolute;visibility:hidden;top:0;right:0;margin:4px;z-index:2}:host>div:hover>button{visibility:visible}:host svg{flex:0 0 70%;object-fit:contain;max-width:90%;max-height:90%}:host svg path{fill:var(--bdb-media-upload-fill)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: BdbMediaUploadComponent, selector: "bdb-media-upload", inputs: ["accept"], outputs: ["uploadComplete", "uploadError", "uploadStart"] }, { kind: "component", type: BdbMediaDisplayComponent, selector: "bdb-media-display", inputs: ["media", "mode", "overlayBehavior", "width", "height", "alt"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatMiniFabButton, selector: "button[mat-mini-fab], a[mat-mini-fab], button[matMiniFab], a[matMiniFab]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: BdbAlertErrorResponseComponent, selector: "bdb-alert-error-response", inputs: ["value", "dismissable"], outputs: ["dismiss"] }] }); }
|
|
2069
2578
|
}
|
|
2070
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2579
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbMediaInputComponent, decorators: [{
|
|
2071
2580
|
type: Component,
|
|
2072
2581
|
args: [{ selector: 'bdb-media-input', imports: [
|
|
2073
2582
|
CommonModule,
|
|
@@ -2106,12 +2615,12 @@ class MediaTableComponent {
|
|
|
2106
2615
|
this.cb = inject((BdbColumnBuilder));
|
|
2107
2616
|
this.columns = this.cb.build(this.cb.enum(x => x.type, 'Type', { pipe: MediaTypePipe, width: 120 }), this.cb.string(x => x.fileName, 'Bestandsnaam'), this.cb.string(x => x.reference, 'Referentie', { width: 200 }), this.cb.number(x => x.fileSize, 'Bestandsgrootte', { pipe: FileSizePipe, width: 200 }), this.cb.number(x => x.height, 'Hoogte', { width: 200 }), this.cb.number(x => x.width, 'Breedte', { width: 200 }));
|
|
2108
2617
|
}
|
|
2109
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2110
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
2618
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: MediaTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2619
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.0", type: MediaTableComponent, isStandalone: true, selector: "bdb-media-table", inputs: { dataSource: "dataSource", displayedColumns: "displayedColumns", contextActions: "contextActions" }, outputs: { contextAction: "contextAction", rowClick: "rowClick" }, ngImport: i0, template: "<bdb-table\r\n [columns]=\"columns\"\r\n [dataSource]=\"dataSource\"\r\n [displayedColumns]=\"displayedColumns\"\r\n [contextActions]=\"contextActions\"\r\n (rowClick)=\"rowClick.emit($event)\"\r\n (contextAction)=\"contextAction.emit($event)\">\r\n</bdb-table>\r\n", styles: [""], dependencies: [{ kind: "component", type: BdbTableComponent, selector: "bdb-table[dataSource]", inputs: ["columns", "dataSource", "autoLoad", "displayedColumns", "contextActions", "selection", "selectOnRowClick", "selectedRowClass", "isClickable", "rowColor"], outputs: ["rowClick", "contextAction"] }] }); }
|
|
2111
2620
|
}
|
|
2112
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2621
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: MediaTableComponent, decorators: [{
|
|
2113
2622
|
type: Component,
|
|
2114
|
-
args: [{ selector: 'bdb-media-table', imports: [
|
|
2623
|
+
args: [{ selector: 'bdb-media-table', imports: [BdbTableComponent], template: "<bdb-table\r\n [columns]=\"columns\"\r\n [dataSource]=\"dataSource\"\r\n [displayedColumns]=\"displayedColumns\"\r\n [contextActions]=\"contextActions\"\r\n (rowClick)=\"rowClick.emit($event)\"\r\n (contextAction)=\"contextAction.emit($event)\">\r\n</bdb-table>\r\n" }]
|
|
2115
2624
|
}], propDecorators: { dataSource: [{
|
|
2116
2625
|
type: Input
|
|
2117
2626
|
}], displayedColumns: [{
|
|
@@ -2147,10 +2656,10 @@ class TaskLogOutcomePipe {
|
|
|
2147
2656
|
}
|
|
2148
2657
|
return TaskLogOutcomeMap.get(value) ?? '???';
|
|
2149
2658
|
}
|
|
2150
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2151
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "
|
|
2659
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: TaskLogOutcomePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
2660
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.1.0", ngImport: i0, type: TaskLogOutcomePipe, isStandalone: true, name: "taskLogOutcome" }); }
|
|
2152
2661
|
}
|
|
2153
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2662
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: TaskLogOutcomePipe, decorators: [{
|
|
2154
2663
|
type: Pipe,
|
|
2155
2664
|
args: [{
|
|
2156
2665
|
name: 'taskLogOutcome',
|
|
@@ -2179,10 +2688,10 @@ class TaskLogStatusPipe {
|
|
|
2179
2688
|
}
|
|
2180
2689
|
return TaskLogStatusMap.get(value) ?? '???';
|
|
2181
2690
|
}
|
|
2182
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2183
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "
|
|
2691
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: TaskLogStatusPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
2692
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.1.0", ngImport: i0, type: TaskLogStatusPipe, isStandalone: true, name: "taskLogStatus" }); }
|
|
2184
2693
|
}
|
|
2185
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2694
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: TaskLogStatusPipe, decorators: [{
|
|
2186
2695
|
type: Pipe,
|
|
2187
2696
|
args: [{
|
|
2188
2697
|
name: 'taskLogStatus',
|
|
@@ -2230,10 +2739,10 @@ class TaskLogParameterValuePipe {
|
|
|
2230
2739
|
}
|
|
2231
2740
|
}
|
|
2232
2741
|
}
|
|
2233
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2234
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "
|
|
2742
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: TaskLogParameterValuePipe, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
2743
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.1.0", ngImport: i0, type: TaskLogParameterValuePipe, isStandalone: true, name: "taskLogParameterValue" }); }
|
|
2235
2744
|
}
|
|
2236
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2745
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: TaskLogParameterValuePipe, decorators: [{
|
|
2237
2746
|
type: Pipe,
|
|
2238
2747
|
args: [{
|
|
2239
2748
|
name: 'taskLogParameterValue',
|
|
@@ -2288,12 +2797,12 @@ class UserTableComponent {
|
|
|
2288
2797
|
// break;
|
|
2289
2798
|
// }
|
|
2290
2799
|
}
|
|
2291
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2292
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
2800
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: UserTableComponent, deps: [{ token: i1$1.MatDialog }, { token: BdbColumnBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2801
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.0", type: UserTableComponent, isStandalone: true, selector: "bdb-user-table[dataSource]", inputs: { dataSource: "dataSource", displayedColumns: "displayedColumns", contextActions: "contextActions" }, outputs: { rowClick: "rowClick" }, ngImport: i0, template: "<bdb-table\r\n [columns]=\"columns\"\r\n [dataSource]=\"dataSource\"\r\n (rowClick)=\"onRowClick($event)\"\r\n [contextActions]=\"contextActions\"\r\n (contextAction)=\"onContextAction($event)\"\r\n [displayedColumns]=\"displayedColumns\">\r\n <ng-template bdbCellDef=\"roles\" let-row>\r\n {{ row.roles }}\r\n </ng-template>\r\n</bdb-table>\r\n", styles: [""], dependencies: [{ kind: "component", type: BdbTableComponent, selector: "bdb-table[dataSource]", inputs: ["columns", "dataSource", "autoLoad", "displayedColumns", "contextActions", "selection", "selectOnRowClick", "selectedRowClass", "isClickable", "rowColor"], outputs: ["rowClick", "contextAction"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: BdbCellDirective, selector: "ng-template[bdbCellDef]", inputs: ["bdbCellDef"] }] }); }
|
|
2293
2802
|
}
|
|
2294
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2803
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: UserTableComponent, decorators: [{
|
|
2295
2804
|
type: Component,
|
|
2296
|
-
args: [{ selector: 'bdb-user-table[dataSource]', imports: [
|
|
2805
|
+
args: [{ selector: 'bdb-user-table[dataSource]', imports: [BdbTableComponent, MatDialogModule, BdbCellDirective], template: "<bdb-table\r\n [columns]=\"columns\"\r\n [dataSource]=\"dataSource\"\r\n (rowClick)=\"onRowClick($event)\"\r\n [contextActions]=\"contextActions\"\r\n (contextAction)=\"onContextAction($event)\"\r\n [displayedColumns]=\"displayedColumns\">\r\n <ng-template bdbCellDef=\"roles\" let-row>\r\n {{ row.roles }}\r\n </ng-template>\r\n</bdb-table>\r\n" }]
|
|
2297
2806
|
}], ctorParameters: () => [{ type: i1$1.MatDialog }, { type: BdbColumnBuilder }], propDecorators: { dataSource: [{
|
|
2298
2807
|
type: Input
|
|
2299
2808
|
}], displayedColumns: [{
|
|
@@ -2313,10 +2822,10 @@ class BdbFlexChildDirective {
|
|
|
2313
2822
|
ngOnInit() {
|
|
2314
2823
|
this.renderer.setStyle(this.element.nativeElement, 'flex', this.bdbFlexChild);
|
|
2315
2824
|
}
|
|
2316
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2317
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
2825
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbFlexChildDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
2826
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.0", type: BdbFlexChildDirective, isStandalone: true, selector: "[bdbFlexChild]", inputs: { bdbFlexChild: "bdbFlexChild" }, ngImport: i0 }); }
|
|
2318
2827
|
}
|
|
2319
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2828
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbFlexChildDirective, decorators: [{
|
|
2320
2829
|
type: Directive,
|
|
2321
2830
|
args: [{
|
|
2322
2831
|
selector: '[bdbFlexChild]',
|
|
@@ -2440,10 +2949,10 @@ class BdbGridChildDirective {
|
|
|
2440
2949
|
}
|
|
2441
2950
|
return [targetList.head.value, targetList.tail.value];
|
|
2442
2951
|
}
|
|
2443
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2444
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
2952
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbGridChildDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
2953
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.0", type: BdbGridChildDirective, isStandalone: true, selector: "[bdbGridChild], [bdbGridColumn], [bdbGridRow]", inputs: { bdbGridChild: "bdbGridChild", bdbGridRow: "bdbGridRow", bdbGridColumn: "bdbGridColumn" }, ngImport: i0 }); }
|
|
2445
2954
|
}
|
|
2446
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2955
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbGridChildDirective, decorators: [{
|
|
2447
2956
|
type: Directive,
|
|
2448
2957
|
args: [{
|
|
2449
2958
|
selector: '[bdbGridChild], [bdbGridColumn], [bdbGridRow]',
|
|
@@ -2542,10 +3051,10 @@ class BdbGridDirective {
|
|
|
2542
3051
|
this.renderer.setStyle(this.element.nativeElement, selector, result.input);
|
|
2543
3052
|
}
|
|
2544
3053
|
}
|
|
2545
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2546
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
3054
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbGridDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
3055
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.0", type: BdbGridDirective, isStandalone: true, selector: "[bdbGrid], [bdbGridColumns], [bdbGridRows], [bdbGridGap]", inputs: { bdbGrid: "bdbGrid", bdbGridColumns: "bdbGridColumns", bdbGridRows: "bdbGridRows", bdbGridGap: "bdbGridGap" }, ngImport: i0 }); }
|
|
2547
3056
|
}
|
|
2548
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
3057
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbGridDirective, decorators: [{
|
|
2549
3058
|
type: Directive,
|
|
2550
3059
|
args: [{
|
|
2551
3060
|
selector: '[bdbGrid], [bdbGridColumns], [bdbGridRows], [bdbGridGap]',
|
|
@@ -2570,10 +3079,10 @@ class BdbCollapseRowComponent {
|
|
|
2570
3079
|
get isCollapsed() {
|
|
2571
3080
|
return this.collapsed;
|
|
2572
3081
|
}
|
|
2573
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2574
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
3082
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbCollapseRowComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3083
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.0", type: BdbCollapseRowComponent, isStandalone: true, selector: "bdb-collapse-row", inputs: { collapsed: "collapsed", canCollapse: "canCollapse" }, host: { properties: { "class": "this.class", "class.collapsed": "this.isCollapsed" } }, ngImport: i0, template: "<div class=\"left\">\r\n <ng-content select=\"left\"></ng-content>\r\n</div>\r\n<div class=\"gap\">\r\n <div class=\"indicator\" (click)=\"collapsed = canCollapse && !collapsed\">\r\n <div class=\"top\"></div>\r\n <div class=\"middle\">\r\n <mat-icon>{{ collapsed ? 'left_panel_open' : 'left_panel_close' }}</mat-icon>\r\n </div>\r\n <div class=\"bottom\"></div>\r\n </div>\r\n</div>\r\n<div class=\"right\">\r\n <ng-content select=\"right\"></ng-content>\r\n</div>\r\n", styles: [":host{height:100%;overflow:hidden;display:flex;flex-direction:row;justify-content:start;align-items:stretch}:host>.gap{flex:0 0 16px;position:relative}:host>.gap .indicator{z-index:101;position:absolute;inset:0 -8px;display:none;flex-direction:column;align-items:stretch;justify-content:center;cursor:pointer}:host>.gap .indicator .top,:host>.gap .indicator .bottom{flex:1;margin:0 12px}:host>.gap .indicator .top{border-radius:4px 4px 0 0}:host>.gap .indicator .bottom{border-radius:0 0 4px 4px}:host>.gap .indicator .middle{flex:0 0 24px;border-radius:4px;padding:4px;display:flex;align-items:center;justify-content:center}:host>.gap:hover .indicator{display:flex}:host>.left,:host>.right{flex:0 0 calc(50% - 8px);overflow:hidden;display:flex;flex-direction:column;justify-content:stretch;align-content:stretch}:host.collapsed>.left{flex:0 0 8px;visibility:hidden}:host.collapsed>.right{flex-grow:1}:host.collapsed>.gap .indicator{display:flex}:host .left{transition:flex .2s ease-in-out}\n"], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
|
|
2575
3084
|
}
|
|
2576
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
3085
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbCollapseRowComponent, decorators: [{
|
|
2577
3086
|
type: Component,
|
|
2578
3087
|
args: [{ selector: 'bdb-collapse-row', imports: [MatIconModule], template: "<div class=\"left\">\r\n <ng-content select=\"left\"></ng-content>\r\n</div>\r\n<div class=\"gap\">\r\n <div class=\"indicator\" (click)=\"collapsed = canCollapse && !collapsed\">\r\n <div class=\"top\"></div>\r\n <div class=\"middle\">\r\n <mat-icon>{{ collapsed ? 'left_panel_open' : 'left_panel_close' }}</mat-icon>\r\n </div>\r\n <div class=\"bottom\"></div>\r\n </div>\r\n</div>\r\n<div class=\"right\">\r\n <ng-content select=\"right\"></ng-content>\r\n</div>\r\n", styles: [":host{height:100%;overflow:hidden;display:flex;flex-direction:row;justify-content:start;align-items:stretch}:host>.gap{flex:0 0 16px;position:relative}:host>.gap .indicator{z-index:101;position:absolute;inset:0 -8px;display:none;flex-direction:column;align-items:stretch;justify-content:center;cursor:pointer}:host>.gap .indicator .top,:host>.gap .indicator .bottom{flex:1;margin:0 12px}:host>.gap .indicator .top{border-radius:4px 4px 0 0}:host>.gap .indicator .bottom{border-radius:0 0 4px 4px}:host>.gap .indicator .middle{flex:0 0 24px;border-radius:4px;padding:4px;display:flex;align-items:center;justify-content:center}:host>.gap:hover .indicator{display:flex}:host>.left,:host>.right{flex:0 0 calc(50% - 8px);overflow:hidden;display:flex;flex-direction:column;justify-content:stretch;align-content:stretch}:host.collapsed>.left{flex:0 0 8px;visibility:hidden}:host.collapsed>.right{flex-grow:1}:host.collapsed>.gap .indicator{display:flex}:host .left{transition:flex .2s ease-in-out}\n"] }]
|
|
2579
3088
|
}], propDecorators: { collapsed: [{
|
|
@@ -2593,12 +3102,12 @@ class BdbFieldComponent {
|
|
|
2593
3102
|
this.class = 'bdb-field';
|
|
2594
3103
|
this.label = '';
|
|
2595
3104
|
}
|
|
2596
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2597
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
3105
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3106
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.0", type: BdbFieldComponent, isStandalone: true, selector: "bdb-field", inputs: { label: "label" }, host: { properties: { "class": "this.class" } }, ngImport: i0, template: "<div class=\"field-label\">{{ label }}</div>\r\n<ng-content></ng-content>\r\n", styles: [":host{padding:8px;box-sizing:border-box;display:flex;flex-direction:column;background-color:var(--bdb-field-container-color);border:1px solid var(--bdb-field-border-color);border-bottom-width:2px;color:var(--bdb-field-color);border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-left-radius:var(--mdc-filled-text-field-container-shape, var(--mat-sys-corner-extra-small));border-top-right-radius:var(--mdc-filled-text-field-container-shape, var(--mat-sys-corner-extra-small));min-height:52px;gap:2px}.field-label{flex:0 0 12px;font-size:12px;line-height:12px;font-variant:italic;color:var(--bdb-field-label-color)}\n"] }); }
|
|
2598
3107
|
}
|
|
2599
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
3108
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbFieldComponent, decorators: [{
|
|
2600
3109
|
type: Component,
|
|
2601
|
-
args: [{ selector: 'bdb-field', imports: [
|
|
3110
|
+
args: [{ selector: 'bdb-field', imports: [], template: "<div class=\"field-label\">{{ label }}</div>\r\n<ng-content></ng-content>\r\n", styles: [":host{padding:8px;box-sizing:border-box;display:flex;flex-direction:column;background-color:var(--bdb-field-container-color);border:1px solid var(--bdb-field-border-color);border-bottom-width:2px;color:var(--bdb-field-color);border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-left-radius:var(--mdc-filled-text-field-container-shape, var(--mat-sys-corner-extra-small));border-top-right-radius:var(--mdc-filled-text-field-container-shape, var(--mat-sys-corner-extra-small));min-height:52px;gap:2px}.field-label{flex:0 0 12px;font-size:12px;line-height:12px;font-variant:italic;color:var(--bdb-field-label-color)}\n"] }]
|
|
2602
3111
|
}], propDecorators: { class: [{
|
|
2603
3112
|
type: HostBinding
|
|
2604
3113
|
}], label: [{
|
|
@@ -2612,10 +3121,10 @@ class PlainNumberPipe {
|
|
|
2612
3121
|
}
|
|
2613
3122
|
return '' + value;
|
|
2614
3123
|
}
|
|
2615
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2616
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "
|
|
3124
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: PlainNumberPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
3125
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.1.0", ngImport: i0, type: PlainNumberPipe, isStandalone: true, name: "bdbPlainNumber" }); }
|
|
2617
3126
|
}
|
|
2618
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
3127
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: PlainNumberPipe, decorators: [{
|
|
2619
3128
|
type: Pipe,
|
|
2620
3129
|
args: [{
|
|
2621
3130
|
name: 'bdbPlainNumber',
|
|
@@ -2623,6 +3132,195 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.3", ngImpor
|
|
|
2623
3132
|
}]
|
|
2624
3133
|
}] });
|
|
2625
3134
|
|
|
3135
|
+
/// <summary>
|
|
3136
|
+
/// A data source that can be used with the BdbTableComponent, that supports persistence of the state (e.g. in queryParameters).
|
|
3137
|
+
/// </summary>
|
|
3138
|
+
class BdbDataSourceV2 {
|
|
3139
|
+
get state() {
|
|
3140
|
+
return {
|
|
3141
|
+
pageSize: this.pageSize == this.defaultPageSize ? undefined : this.pageSize,
|
|
3142
|
+
page: this.page == this.defaultPage ? undefined : this.page,
|
|
3143
|
+
sortField: this.sortField == this.defaultSortField ? undefined : this.sortField,
|
|
3144
|
+
sortDirection: this.sortDirection == this.defaultSortDirection ? undefined : this.sortDirection,
|
|
3145
|
+
query: this.query,
|
|
3146
|
+
};
|
|
3147
|
+
}
|
|
3148
|
+
set state(value) {
|
|
3149
|
+
this.pageSize = value['pageSize'];
|
|
3150
|
+
this.page = value['page'];
|
|
3151
|
+
this.sortField = value['sortField'];
|
|
3152
|
+
this.sortDirection = value['sortDirection'];
|
|
3153
|
+
this.query = value['query'];
|
|
3154
|
+
}
|
|
3155
|
+
isCurrentState(state) {
|
|
3156
|
+
return (this.pageSize === state.pageSize &&
|
|
3157
|
+
this.page === state.page &&
|
|
3158
|
+
this.sortField === state.sortField &&
|
|
3159
|
+
this.sortDirection === state.sortDirection &&
|
|
3160
|
+
this.query === state.query);
|
|
3161
|
+
}
|
|
3162
|
+
get data() {
|
|
3163
|
+
return this.responseSubject.getValue()?.rows ?? [];
|
|
3164
|
+
}
|
|
3165
|
+
get identifier() {
|
|
3166
|
+
return this._identifier;
|
|
3167
|
+
}
|
|
3168
|
+
set identifier(value) {
|
|
3169
|
+
this._identifier = value;
|
|
3170
|
+
this.setPersistence();
|
|
3171
|
+
}
|
|
3172
|
+
constructor() {
|
|
3173
|
+
// abstract service: BdbServiceR<BdbEntity, TEntity>;
|
|
3174
|
+
this.destroyRef = inject(DestroyRef);
|
|
3175
|
+
this.router = inject(Router);
|
|
3176
|
+
this.route = inject(ActivatedRoute);
|
|
3177
|
+
this.persistence = { replaceUrl: true };
|
|
3178
|
+
this.defaultPageSize = 25;
|
|
3179
|
+
this.defaultPage = 0;
|
|
3180
|
+
this.defaultSortField = 'id';
|
|
3181
|
+
this.defaultSortDirection = 'desc';
|
|
3182
|
+
this.requestSubject = new Subject();
|
|
3183
|
+
this.request$ = this.requestSubject.asObservable();
|
|
3184
|
+
this.responseSubject = new BehaviorSubject(undefined);
|
|
3185
|
+
this.response$ = this.responseSubject.asObservable();
|
|
3186
|
+
this._loading = signal(false, ...(ngDevMode ? [{ debugName: "_loading" }] : []));
|
|
3187
|
+
this.loading = this._loading.asReadonly();
|
|
3188
|
+
this._error = signal(undefined, ...(ngDevMode ? [{ debugName: "_error" }] : []));
|
|
3189
|
+
this.error = this._error.asReadonly();
|
|
3190
|
+
this.request$
|
|
3191
|
+
.pipe(tap$1(() => {
|
|
3192
|
+
this._loading.set(true);
|
|
3193
|
+
this._error.set(undefined);
|
|
3194
|
+
}), switchMap((x) => this.loadMethod(x[0]).pipe(catchError$1((err) => {
|
|
3195
|
+
this._error.set(err);
|
|
3196
|
+
return of({ page: 0, count: 0, rows: [], pageSize: 15 });
|
|
3197
|
+
}), tap$1(response => {
|
|
3198
|
+
this.responseSubject.next(response);
|
|
3199
|
+
}), finalize(() => this._loading.set(false)))))
|
|
3200
|
+
.subscribe();
|
|
3201
|
+
}
|
|
3202
|
+
disconnect() {
|
|
3203
|
+
return;
|
|
3204
|
+
}
|
|
3205
|
+
// Connects the data source to the table.
|
|
3206
|
+
connect() {
|
|
3207
|
+
return this.responseSubject.asObservable().pipe(map(x => x?.rows ?? []));
|
|
3208
|
+
}
|
|
3209
|
+
load(loadOptions = {}) {
|
|
3210
|
+
this.requestSubject.next([this.createRequest(), loadOptions]);
|
|
3211
|
+
}
|
|
3212
|
+
// Can be overriden in a child class to create a custom request.
|
|
3213
|
+
createRequest() {
|
|
3214
|
+
const filters = this.createFilters();
|
|
3215
|
+
return {
|
|
3216
|
+
page: this.page ?? this.defaultPage,
|
|
3217
|
+
pageSize: this.pageSize ?? this.defaultPageSize,
|
|
3218
|
+
sortField: this.sortField ?? this.defaultSortField,
|
|
3219
|
+
sortDirection: this.sortDirection ?? this.defaultSortDirection,
|
|
3220
|
+
query: this.query,
|
|
3221
|
+
filter: this.combineFilters(filters),
|
|
3222
|
+
};
|
|
3223
|
+
}
|
|
3224
|
+
// if an identifier is set, this method sets up persistence of the datasource state in query params
|
|
3225
|
+
setPersistence() {
|
|
3226
|
+
// READ
|
|
3227
|
+
if (this._persistenceRead) {
|
|
3228
|
+
this._persistenceRead.unsubscribe();
|
|
3229
|
+
this._persistenceRead = undefined;
|
|
3230
|
+
}
|
|
3231
|
+
if (this.identifier !== undefined) {
|
|
3232
|
+
const identifier = this.identifier;
|
|
3233
|
+
this._persistenceRead = merge(
|
|
3234
|
+
// 0 is the initial load of a datasource state, not a popstate event
|
|
3235
|
+
of(0), this.router.events.pipe(takeUntilDestroyed(this.destroyRef), filter$1(x => x instanceof NavigationStart && x.navigationTrigger === 'popstate'), concatMap$1(navigationStart => this.router.events.pipe(filter$1(event => event instanceof NavigationEnd && event.id === navigationStart.id), take(1))))).subscribe({
|
|
3236
|
+
next: () => {
|
|
3237
|
+
const stateString = this.route.snapshot.queryParams[identifier];
|
|
3238
|
+
let state = {};
|
|
3239
|
+
try {
|
|
3240
|
+
state = JSON.parse(stateString ?? '{}', (k, v) => this.reviveDates(k, v));
|
|
3241
|
+
}
|
|
3242
|
+
catch (e) {
|
|
3243
|
+
console.log('Unable to parse state from query parameters');
|
|
3244
|
+
this.router.navigate([], {
|
|
3245
|
+
relativeTo: this.route,
|
|
3246
|
+
queryParams: {
|
|
3247
|
+
[identifier]: undefined,
|
|
3248
|
+
},
|
|
3249
|
+
queryParamsHandling: 'merge',
|
|
3250
|
+
});
|
|
3251
|
+
}
|
|
3252
|
+
if (this.isCurrentState(state)) {
|
|
3253
|
+
return;
|
|
3254
|
+
}
|
|
3255
|
+
this.state = state;
|
|
3256
|
+
this.load({ fromPopState: true });
|
|
3257
|
+
},
|
|
3258
|
+
});
|
|
3259
|
+
//WRITE
|
|
3260
|
+
if (this._persistenceWrite) {
|
|
3261
|
+
this._persistenceWrite.unsubscribe();
|
|
3262
|
+
this._persistenceWrite = undefined;
|
|
3263
|
+
}
|
|
3264
|
+
this.request$
|
|
3265
|
+
.pipe(takeUntilDestroyed(this.destroyRef), filter$1(([_, loadOptions]) => !loadOptions.fromPopState))
|
|
3266
|
+
.subscribe({
|
|
3267
|
+
next: ([_, loadOptions]) => {
|
|
3268
|
+
let stateString = JSON.stringify(this.state);
|
|
3269
|
+
stateString = stateString === '{}' ? undefined : stateString;
|
|
3270
|
+
const qp = {};
|
|
3271
|
+
qp[this.identifier] = stateString;
|
|
3272
|
+
this.router.navigate([], {
|
|
3273
|
+
relativeTo: this.route,
|
|
3274
|
+
replaceUrl: loadOptions.replaceUrl ?? this.persistence.replaceUrl,
|
|
3275
|
+
queryParams: qp,
|
|
3276
|
+
queryParamsHandling: 'merge',
|
|
3277
|
+
});
|
|
3278
|
+
},
|
|
3279
|
+
});
|
|
3280
|
+
}
|
|
3281
|
+
}
|
|
3282
|
+
// Can be overriden in a child class to create filters based on external elements (e.g. input fields).
|
|
3283
|
+
createFilters() {
|
|
3284
|
+
return undefined;
|
|
3285
|
+
}
|
|
3286
|
+
// Combines filters into a single filter.
|
|
3287
|
+
combineFilters(filters, combine = 'And') {
|
|
3288
|
+
if (!filters || filters.length === 0) {
|
|
3289
|
+
return undefined;
|
|
3290
|
+
}
|
|
3291
|
+
if (filters.length === 1) {
|
|
3292
|
+
return filters[0];
|
|
3293
|
+
}
|
|
3294
|
+
return {
|
|
3295
|
+
type: 'Group',
|
|
3296
|
+
combine: combine,
|
|
3297
|
+
filters: filters,
|
|
3298
|
+
};
|
|
3299
|
+
}
|
|
3300
|
+
//todo: https://angular.dev/guide/signals#signal-equality-functions?
|
|
3301
|
+
arrayEquals(first, second) {
|
|
3302
|
+
if (!first || !second) {
|
|
3303
|
+
return false;
|
|
3304
|
+
}
|
|
3305
|
+
return (first.length === second.length && first.every(firstValue => second.some(secondValue => secondValue == firstValue)));
|
|
3306
|
+
}
|
|
3307
|
+
// JSON.stringify automatically converts Date objects to ISO strings
|
|
3308
|
+
// JSON.parse does _not_ automaticaly convert so we need to convert them back to Date here
|
|
3309
|
+
reviveDates(key, value) {
|
|
3310
|
+
if (typeof value === 'string') {
|
|
3311
|
+
if (/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}/.test(value)) {
|
|
3312
|
+
return parseISO(value);
|
|
3313
|
+
}
|
|
3314
|
+
}
|
|
3315
|
+
return value;
|
|
3316
|
+
}
|
|
3317
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbDataSourceV2, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
3318
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbDataSourceV2 }); }
|
|
3319
|
+
}
|
|
3320
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbDataSourceV2, decorators: [{
|
|
3321
|
+
type: Injectable
|
|
3322
|
+
}], ctorParameters: () => [] });
|
|
3323
|
+
|
|
2626
3324
|
class BdbServiceCR extends BdbServiceR {
|
|
2627
3325
|
create(createModel) {
|
|
2628
3326
|
return this.httpClient.post(this.baseUrl, createModel);
|
|
@@ -2663,10 +3361,10 @@ class ExceptionLogService extends BdbServiceR {
|
|
|
2663
3361
|
constructor() {
|
|
2664
3362
|
super('exception-log');
|
|
2665
3363
|
}
|
|
2666
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2667
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
3364
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: ExceptionLogService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
3365
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: ExceptionLogService, providedIn: 'root' }); }
|
|
2668
3366
|
}
|
|
2669
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
3367
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: ExceptionLogService, decorators: [{
|
|
2670
3368
|
type: Injectable,
|
|
2671
3369
|
args: [{
|
|
2672
3370
|
providedIn: 'root',
|
|
@@ -2677,10 +3375,10 @@ class RoleService extends BdbServiceR {
|
|
|
2677
3375
|
constructor() {
|
|
2678
3376
|
super('role');
|
|
2679
3377
|
}
|
|
2680
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2681
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
3378
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: RoleService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
3379
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: RoleService, providedIn: 'root' }); }
|
|
2682
3380
|
}
|
|
2683
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
3381
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: RoleService, decorators: [{
|
|
2684
3382
|
type: Injectable,
|
|
2685
3383
|
args: [{
|
|
2686
3384
|
providedIn: 'root',
|
|
@@ -2694,10 +3392,10 @@ class TaskLogService extends BdbServiceCR {
|
|
|
2694
3392
|
start(id) {
|
|
2695
3393
|
return this.httpClient.post(`${this.baseUrl}/start`, { id });
|
|
2696
3394
|
}
|
|
2697
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2698
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
3395
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: TaskLogService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
3396
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: TaskLogService, providedIn: 'root' }); }
|
|
2699
3397
|
}
|
|
2700
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
3398
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: TaskLogService, decorators: [{
|
|
2701
3399
|
type: Injectable,
|
|
2702
3400
|
args: [{
|
|
2703
3401
|
providedIn: 'root',
|
|
@@ -2708,10 +3406,10 @@ class TaskLogParameterService extends BdbServiceR {
|
|
|
2708
3406
|
constructor() {
|
|
2709
3407
|
super('task-log-parameter');
|
|
2710
3408
|
}
|
|
2711
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2712
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
3409
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: TaskLogParameterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
3410
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: TaskLogParameterService, providedIn: 'root' }); }
|
|
2713
3411
|
}
|
|
2714
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
3412
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: TaskLogParameterService, decorators: [{
|
|
2715
3413
|
type: Injectable,
|
|
2716
3414
|
args: [{
|
|
2717
3415
|
providedIn: 'root',
|
|
@@ -2722,10 +3420,10 @@ class TaskLogScheduleService extends BdbServiceCRUD {
|
|
|
2722
3420
|
constructor() {
|
|
2723
3421
|
super('task-log-schedule');
|
|
2724
3422
|
}
|
|
2725
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2726
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
3423
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: TaskLogScheduleService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
3424
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: TaskLogScheduleService, providedIn: 'root' }); }
|
|
2727
3425
|
}
|
|
2728
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
3426
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: TaskLogScheduleService, decorators: [{
|
|
2729
3427
|
type: Injectable,
|
|
2730
3428
|
args: [{
|
|
2731
3429
|
providedIn: 'root',
|
|
@@ -2736,10 +3434,10 @@ class UserService extends BdbServiceCRUD {
|
|
|
2736
3434
|
constructor() {
|
|
2737
3435
|
super('user');
|
|
2738
3436
|
}
|
|
2739
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2740
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
3437
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: UserService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
3438
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: UserService, providedIn: 'root' }); }
|
|
2741
3439
|
}
|
|
2742
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
3440
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: UserService, decorators: [{
|
|
2743
3441
|
type: Injectable,
|
|
2744
3442
|
args: [{
|
|
2745
3443
|
providedIn: 'root',
|
|
@@ -2750,10 +3448,10 @@ class UserRoleService extends BdbServiceCRD {
|
|
|
2750
3448
|
constructor() {
|
|
2751
3449
|
super('user-role');
|
|
2752
3450
|
}
|
|
2753
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2754
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
3451
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: UserRoleService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
3452
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: UserRoleService, providedIn: 'root' }); }
|
|
2755
3453
|
}
|
|
2756
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
3454
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: UserRoleService, decorators: [{
|
|
2757
3455
|
type: Injectable,
|
|
2758
3456
|
args: [{
|
|
2759
3457
|
providedIn: 'root',
|
|
@@ -2773,10 +3471,10 @@ class TaskLogSchedulerService extends BdbService {
|
|
|
2773
3471
|
stopScheduler() {
|
|
2774
3472
|
return this.httpClient.get(`${this.baseUrl}/stop`);
|
|
2775
3473
|
}
|
|
2776
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2777
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
3474
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: TaskLogSchedulerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
3475
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: TaskLogSchedulerService, providedIn: 'root' }); }
|
|
2778
3476
|
}
|
|
2779
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
3477
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: TaskLogSchedulerService, decorators: [{
|
|
2780
3478
|
type: Injectable,
|
|
2781
3479
|
args: [{
|
|
2782
3480
|
providedIn: 'root',
|
|
@@ -2812,16 +3510,120 @@ class TaskLogTypeService extends BdbService {
|
|
|
2812
3510
|
}
|
|
2813
3511
|
return of(null);
|
|
2814
3512
|
}
|
|
2815
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2816
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
3513
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: TaskLogTypeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
3514
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: TaskLogTypeService, providedIn: 'root' }); }
|
|
2817
3515
|
}
|
|
2818
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
3516
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: TaskLogTypeService, decorators: [{
|
|
2819
3517
|
type: Injectable,
|
|
2820
3518
|
args: [{
|
|
2821
3519
|
providedIn: 'root',
|
|
2822
3520
|
}]
|
|
2823
3521
|
}], ctorParameters: () => [] });
|
|
2824
3522
|
|
|
3523
|
+
class BdbAppLayoutComponent {
|
|
3524
|
+
constructor() {
|
|
3525
|
+
this.modules = input([], ...(ngDevMode ? [{ debugName: "modules" }] : []));
|
|
3526
|
+
this.appTitle = input('', ...(ngDevMode ? [{ debugName: "appTitle" }] : []));
|
|
3527
|
+
this.version = input('', ...(ngDevMode ? [{ debugName: "version" }] : []));
|
|
3528
|
+
this.opened = true;
|
|
3529
|
+
this.sidenavMode = 'side';
|
|
3530
|
+
this.isHandset = signal(false, ...(ngDevMode ? [{ debugName: "isHandset" }] : []));
|
|
3531
|
+
this.authService = inject(AuthService);
|
|
3532
|
+
this.changeDetectorRef = inject(ChangeDetectorRef);
|
|
3533
|
+
this.breakpointObserver = inject(BreakpointObserver);
|
|
3534
|
+
this.bdbOptions = inject(BDB_OPTIONS);
|
|
3535
|
+
this.logoutRoutePath = this.bdbOptions.authOptions?.logoutPath ?? 'logout';
|
|
3536
|
+
this.appToolbar = viewChild.required('appToolbar', { read: ElementRef });
|
|
3537
|
+
this.appToolbarHeight = 64;
|
|
3538
|
+
effect(() => {
|
|
3539
|
+
if (this.isHandset()) {
|
|
3540
|
+
this.sidenavMode = 'over';
|
|
3541
|
+
this.opened = false;
|
|
3542
|
+
}
|
|
3543
|
+
else {
|
|
3544
|
+
this.sidenavMode = 'side';
|
|
3545
|
+
this.opened = true;
|
|
3546
|
+
}
|
|
3547
|
+
});
|
|
3548
|
+
}
|
|
3549
|
+
ngAfterViewInit() {
|
|
3550
|
+
this.setAppToolbarHeight();
|
|
3551
|
+
this.breakpointObserver.observe([Breakpoints.Handset]).subscribe(result => {
|
|
3552
|
+
this.isHandset.set(result.matches);
|
|
3553
|
+
this.setAppToolbarHeight();
|
|
3554
|
+
});
|
|
3555
|
+
this.changeDetectorRef.detectChanges();
|
|
3556
|
+
}
|
|
3557
|
+
setAppToolbarHeight() {
|
|
3558
|
+
this.appToolbarHeight = this.appToolbar().nativeElement.offsetHeight;
|
|
3559
|
+
}
|
|
3560
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbAppLayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3561
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.0", type: BdbAppLayoutComponent, isStandalone: true, selector: "bdb-app-layout", inputs: { modules: { classPropertyName: "modules", publicName: "modules", isSignal: true, isRequired: false, transformFunction: null }, appTitle: { classPropertyName: "appTitle", publicName: "appTitle", isSignal: true, isRequired: false, transformFunction: null }, version: { classPropertyName: "version", publicName: "version", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "appToolbar", first: true, predicate: ["appToolbar"], descendants: true, read: ElementRef, isSignal: true }], ngImport: i0, template: "<mat-toolbar class=\"primary\" #appToolbar>\r\n <button matIconButton (click)=\"opened = !opened\" class=\"sidenav-toggle\"><mat-icon>menu</mat-icon></button>\r\n @if (!isHandset()) {\r\n <a routerLink=\"/\" style=\"text-decoration: none; color: inherit\">{{ appTitle() }}</a>\r\n <div class=\"version\">{{ version() }}</div>\r\n }\r\n <div style=\"flex: 1 1 auto\"></div>\r\n @for (module of modules(); track module) {\r\n <a mat-flat-button [routerLink]=\"module.path\" [routerLinkActive]=\"'active'\">\r\n <mat-icon>{{ module.icon }}</mat-icon>\r\n @if (!isHandset()) {\r\n {{ module.name }}\r\n }\r\n </a>\r\n }\r\n\r\n <button matIconButton [matMenuTriggerFor]=\"menu\"><mat-icon>account_circle</mat-icon></button>\r\n <mat-menu #menu=\"matMenu\">\r\n <div mat-menu-item disabled>\r\n {{ (authService.account$ | async)?.email }}\r\n </div>\r\n <mat-divider></mat-divider>\r\n <a [routerLink]=\"['/', logoutRoutePath]\" mat-menu-item> <mat-icon>logout</mat-icon> Uitloggen </a>\r\n </mat-menu>\r\n</mat-toolbar>\r\n\r\n<mat-sidenav-container [style]=\"{ height: 'calc(100vh - ' + appToolbarHeight + 'px)' }\">\r\n <mat-sidenav\r\n #sidenav\r\n [mode]=\"sidenavMode\"\r\n [opened]=\"opened\"\r\n [fixedInViewport]=\"true\"\r\n [fixedTopGap]=\"appToolbarHeight\"\r\n style=\"width: 128px\">\r\n <div style=\"height: 100%; display: flex; flex-direction: column\">\r\n <div style=\"flex: 1; padding-top: 16px\">\r\n <router-outlet name=\"sidenav\"></router-outlet>\r\n </div>\r\n <mat-divider style=\"margin: 4px 8px\"></mat-divider>\r\n <div class=\"powered-by\">\r\n Powered by\r\n <a href=\"https://www.devopmaat.nl\" style=\"flex: 0 0 100px; margin: 0; padding: 0; height: 22px\">\r\n <ng-container *ngTemplateOutlet=\"logo\"></ng-container>\r\n </a>\r\n </div>\r\n </div>\r\n </mat-sidenav>\r\n\r\n <mat-sidenav-content style=\"height: 100%; padding: 8px\">\r\n <router-outlet></router-outlet>\r\n </mat-sidenav-content>\r\n</mat-sidenav-container>\r\n\r\n<ng-template #logo>\r\n <svg id=\"Layer_1\" data-name=\"Layer 1\" xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" viewBox=\"0 0 1856.15 409.6\">\r\n <defs>\r\n <style>\r\n .cls-1 {\r\n fill: #ccef29;\r\n stroke-width: 0px;\r\n }\r\n </style>\r\n </defs>\r\n <polygon\r\n class=\"cls-1\"\r\n points=\"1668.43 35.77 1677.3 16.25 1673.72 14.62 1628.59 113.95 1607.4 63.84 1544.56 63.84 1479.16 203.78 1514.32 288.98 1559.76 188.98 1575.49 149.35 1576.55 152.04 1576.7 151.71 1583.07 168.68 1592.63 193.07 1566.72 250.09 1567.43 250.41 1567.4 250.46 1567.53 250.46 1570.29 251.72 1570.87 250.46 1614.18 250.46 1629.9 288.98 1702.57 288.98 1630.66 118.87 1641.05 96.02 1700.36 96.02 1700.36 259.37 1768.01 259.37 1768.01 96.02 1832.74 96.02 1832.74 35.77 1668.43 35.77\" />\r\n <path\r\n class=\"cls-1\"\r\n d=\"M710.82,202.19c-9.43-9.96-15.2-23.91-15.2-39.71,0-30.92,21.98-54.24,51.13-54.24,2.24,0,4.42.18,6.57.44l26.63-58.6c-10.35-2.69-21.23-4.24-32.58-4.24-68.2,0-121.63,51.51-121.63,117.28v.62c0,42.69,22.72,79.24,57.32,99.55l27.76-61.08Z\" />\r\n <path\r\n class=\"cls-1\"\r\n d=\"M1064.99,81.68l-28.98,63.77c-13.73-27.69-44.26-43.85-86.4-43.85h-97.35v1.98c-10.21-17.07-24.79-31.27-42.36-41.33l-27.41,60.32c10.13,9.88,16.33,24.12,16.33,40.53v.62c0,30.93-22.11,54.24-51.44,54.24-2.45,0-4.83-.23-7.18-.58l38.37-84.44-3.58-1.63-107,235.46,3.58,1.63,42-92.42c10.52,2.8,21.62,4.38,33.19,4.38,45.66,0,84.69-23.09,105.51-58.27v105.33h68.32v-62.25h25.92c13.69,0,26.15-1.7,37.3-4.84l-25.81,56.8,3.58,1.63,27.25-59.97c.29-.1.6-.18.89-.28l48.82-107.42c-.12-.29-.24-.58-.36-.87l30.41-66.92-3.58-1.63ZM945.25,209.92h-24.67v-49.65h24.36c14.1,0,30.9,4.28,30.9,25.29,0,15.02-11.72,24.35-30.58,24.35Z\" />\r\n <polygon\r\n class=\"cls-1\"\r\n points=\"1265.53 260.24 1322.12 135.73 1322.12 134.06 1350.72 71.12 1347.15 69.49 1322.12 124.57 1322.12 36.64 1252.81 36.64 1203.53 116.6 1154.26 36.64 1084.95 190.72 1084.95 260.24 1151.37 260.24 1151.37 146.2 1200.18 220.79 1205.66 220.79 1254.78 145.61 1254.78 260.24 1260.46 260.24 1240.14 304.95 1243.72 306.58 1264.78 260.24 1265.53 260.24\" />\r\n <polygon\r\n class=\"cls-1\"\r\n points=\"1363.96 287.03 1387.95 232.64 1370.29 232.64 1388.83 185.93 1398.11 209.61 1433.24 129.98 1420.74 100.41 1357.9 100.41 1262.73 325.56 1334.19 325.56 1349.6 287.03 1363.96 287.03\" />\r\n <polygon\r\n class=\"cls-1\"\r\n points=\"1446.08 159.51 1445.64 159.31 1443.05 153.19 1407.05 232.41 1407.14 232.64 1406.95 232.64 1382.23 287.03 1383.82 287.03 1335.5 393.35 1339.08 394.97 1388.13 287.03 1427.52 287.03 1443.24 325.56 1515.91 325.56 1445.9 159.92 1446.08 159.51\" />\r\n <path\r\n class=\"cls-1\"\r\n d=\"M286.68,240.49h34.46l-6.73,14.81,3.58,1.63L424.99,21.48l-3.58-1.63-37.31,82.1h-154.13c-17.36-40.76-59.5-65.32-116.92-65.32H25.9v223.6h1.81L93.55,115.36v-17.86h20.42c34.79,0,55.56,18.93,55.56,51.24s-20.77,50.62-55.56,50.62h-20.25l41.26-90.8-3.58-1.63L24.41,342.4l3.58,1.63,38.07-83.78h45.75c48.24,0,86.41-18.25,107.83-48.97v114.28h182.92v-58.71h-115.89v-26.35ZM286.68,160.66h70.74l-11.28,24.81h-59.47v-24.81Z\" />\r\n <polygon\r\n class=\"cls-1\"\r\n points=\"462.51 199.44 417.35 73.63 377.42 161.49 431.5 295.75 492.28 295.75 582.98 70.6 508.75 70.6 462.51 199.44\" />\r\n </svg>\r\n</ng-template>\r\n", styles: [":host mat-sidenav-container{height:calc(100vh - 64px)}:host{--mat-sidenav-container-shape: 0;--mat-sidenav-container-elevation-shadow: var(--mat-sys-level2);--mat-sidenav-container-background-color: var(--mat-sys-surface-container-low);--mat-sidenav-content-background-color: var(--mat-sys-surface-container-highest);--mat-sidenav-container-divider-color: var(--mat-sys-outline-variant)}:host .mat-drawer-side{box-shadow:var(--mat-sys-level2)}mat-toolbar{--mat-icon-button-icon-color: var(--mat-sys-on-primary);box-shadow:var(--mat-sys-level2);position:sticky;z-index:2;display:flex;gap:8px}a.active{--mat-button-filled-container-color: var(--mat-sys-secondary)}.content-container{padding:8px;display:flex;flex-direction:column;gap:8px}.powered-by{font-size:10px;color:var(--mat-sys-on-surface-variant);font-style:italic;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:4px;padding:4px}\n"], dependencies: [{ kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i2$4.RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: i2$4.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i2$4.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatSidenavModule }, { kind: "component", type: i5$1.MatSidenav, selector: "mat-sidenav", inputs: ["fixedInViewport", "fixedTopGap", "fixedBottomGap"], exportAs: ["matSidenav"] }, { kind: "component", type: i5$1.MatSidenavContainer, selector: "mat-sidenav-container", exportAs: ["matSidenavContainer"] }, { kind: "component", type: i5$1.MatSidenavContent, selector: "mat-sidenav-content" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i5.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i5.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i5.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatListModule }, { kind: "component", type: i6.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "ngmodule", type: MatDividerModule }, { kind: "pipe", type: AsyncPipe, name: "async" }] }); }
|
|
3562
|
+
}
|
|
3563
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbAppLayoutComponent, decorators: [{
|
|
3564
|
+
type: Component,
|
|
3565
|
+
args: [{ selector: 'bdb-app-layout', imports: [
|
|
3566
|
+
RouterModule,
|
|
3567
|
+
NgTemplateOutlet,
|
|
3568
|
+
MatToolbar,
|
|
3569
|
+
MatButtonModule,
|
|
3570
|
+
MatSidenavModule,
|
|
3571
|
+
MatIconModule,
|
|
3572
|
+
MatMenuModule,
|
|
3573
|
+
MatListModule,
|
|
3574
|
+
MatDividerModule,
|
|
3575
|
+
AsyncPipe,
|
|
3576
|
+
], template: "<mat-toolbar class=\"primary\" #appToolbar>\r\n <button matIconButton (click)=\"opened = !opened\" class=\"sidenav-toggle\"><mat-icon>menu</mat-icon></button>\r\n @if (!isHandset()) {\r\n <a routerLink=\"/\" style=\"text-decoration: none; color: inherit\">{{ appTitle() }}</a>\r\n <div class=\"version\">{{ version() }}</div>\r\n }\r\n <div style=\"flex: 1 1 auto\"></div>\r\n @for (module of modules(); track module) {\r\n <a mat-flat-button [routerLink]=\"module.path\" [routerLinkActive]=\"'active'\">\r\n <mat-icon>{{ module.icon }}</mat-icon>\r\n @if (!isHandset()) {\r\n {{ module.name }}\r\n }\r\n </a>\r\n }\r\n\r\n <button matIconButton [matMenuTriggerFor]=\"menu\"><mat-icon>account_circle</mat-icon></button>\r\n <mat-menu #menu=\"matMenu\">\r\n <div mat-menu-item disabled>\r\n {{ (authService.account$ | async)?.email }}\r\n </div>\r\n <mat-divider></mat-divider>\r\n <a [routerLink]=\"['/', logoutRoutePath]\" mat-menu-item> <mat-icon>logout</mat-icon> Uitloggen </a>\r\n </mat-menu>\r\n</mat-toolbar>\r\n\r\n<mat-sidenav-container [style]=\"{ height: 'calc(100vh - ' + appToolbarHeight + 'px)' }\">\r\n <mat-sidenav\r\n #sidenav\r\n [mode]=\"sidenavMode\"\r\n [opened]=\"opened\"\r\n [fixedInViewport]=\"true\"\r\n [fixedTopGap]=\"appToolbarHeight\"\r\n style=\"width: 128px\">\r\n <div style=\"height: 100%; display: flex; flex-direction: column\">\r\n <div style=\"flex: 1; padding-top: 16px\">\r\n <router-outlet name=\"sidenav\"></router-outlet>\r\n </div>\r\n <mat-divider style=\"margin: 4px 8px\"></mat-divider>\r\n <div class=\"powered-by\">\r\n Powered by\r\n <a href=\"https://www.devopmaat.nl\" style=\"flex: 0 0 100px; margin: 0; padding: 0; height: 22px\">\r\n <ng-container *ngTemplateOutlet=\"logo\"></ng-container>\r\n </a>\r\n </div>\r\n </div>\r\n </mat-sidenav>\r\n\r\n <mat-sidenav-content style=\"height: 100%; padding: 8px\">\r\n <router-outlet></router-outlet>\r\n </mat-sidenav-content>\r\n</mat-sidenav-container>\r\n\r\n<ng-template #logo>\r\n <svg id=\"Layer_1\" data-name=\"Layer 1\" xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" viewBox=\"0 0 1856.15 409.6\">\r\n <defs>\r\n <style>\r\n .cls-1 {\r\n fill: #ccef29;\r\n stroke-width: 0px;\r\n }\r\n </style>\r\n </defs>\r\n <polygon\r\n class=\"cls-1\"\r\n points=\"1668.43 35.77 1677.3 16.25 1673.72 14.62 1628.59 113.95 1607.4 63.84 1544.56 63.84 1479.16 203.78 1514.32 288.98 1559.76 188.98 1575.49 149.35 1576.55 152.04 1576.7 151.71 1583.07 168.68 1592.63 193.07 1566.72 250.09 1567.43 250.41 1567.4 250.46 1567.53 250.46 1570.29 251.72 1570.87 250.46 1614.18 250.46 1629.9 288.98 1702.57 288.98 1630.66 118.87 1641.05 96.02 1700.36 96.02 1700.36 259.37 1768.01 259.37 1768.01 96.02 1832.74 96.02 1832.74 35.77 1668.43 35.77\" />\r\n <path\r\n class=\"cls-1\"\r\n d=\"M710.82,202.19c-9.43-9.96-15.2-23.91-15.2-39.71,0-30.92,21.98-54.24,51.13-54.24,2.24,0,4.42.18,6.57.44l26.63-58.6c-10.35-2.69-21.23-4.24-32.58-4.24-68.2,0-121.63,51.51-121.63,117.28v.62c0,42.69,22.72,79.24,57.32,99.55l27.76-61.08Z\" />\r\n <path\r\n class=\"cls-1\"\r\n d=\"M1064.99,81.68l-28.98,63.77c-13.73-27.69-44.26-43.85-86.4-43.85h-97.35v1.98c-10.21-17.07-24.79-31.27-42.36-41.33l-27.41,60.32c10.13,9.88,16.33,24.12,16.33,40.53v.62c0,30.93-22.11,54.24-51.44,54.24-2.45,0-4.83-.23-7.18-.58l38.37-84.44-3.58-1.63-107,235.46,3.58,1.63,42-92.42c10.52,2.8,21.62,4.38,33.19,4.38,45.66,0,84.69-23.09,105.51-58.27v105.33h68.32v-62.25h25.92c13.69,0,26.15-1.7,37.3-4.84l-25.81,56.8,3.58,1.63,27.25-59.97c.29-.1.6-.18.89-.28l48.82-107.42c-.12-.29-.24-.58-.36-.87l30.41-66.92-3.58-1.63ZM945.25,209.92h-24.67v-49.65h24.36c14.1,0,30.9,4.28,30.9,25.29,0,15.02-11.72,24.35-30.58,24.35Z\" />\r\n <polygon\r\n class=\"cls-1\"\r\n points=\"1265.53 260.24 1322.12 135.73 1322.12 134.06 1350.72 71.12 1347.15 69.49 1322.12 124.57 1322.12 36.64 1252.81 36.64 1203.53 116.6 1154.26 36.64 1084.95 190.72 1084.95 260.24 1151.37 260.24 1151.37 146.2 1200.18 220.79 1205.66 220.79 1254.78 145.61 1254.78 260.24 1260.46 260.24 1240.14 304.95 1243.72 306.58 1264.78 260.24 1265.53 260.24\" />\r\n <polygon\r\n class=\"cls-1\"\r\n points=\"1363.96 287.03 1387.95 232.64 1370.29 232.64 1388.83 185.93 1398.11 209.61 1433.24 129.98 1420.74 100.41 1357.9 100.41 1262.73 325.56 1334.19 325.56 1349.6 287.03 1363.96 287.03\" />\r\n <polygon\r\n class=\"cls-1\"\r\n points=\"1446.08 159.51 1445.64 159.31 1443.05 153.19 1407.05 232.41 1407.14 232.64 1406.95 232.64 1382.23 287.03 1383.82 287.03 1335.5 393.35 1339.08 394.97 1388.13 287.03 1427.52 287.03 1443.24 325.56 1515.91 325.56 1445.9 159.92 1446.08 159.51\" />\r\n <path\r\n class=\"cls-1\"\r\n d=\"M286.68,240.49h34.46l-6.73,14.81,3.58,1.63L424.99,21.48l-3.58-1.63-37.31,82.1h-154.13c-17.36-40.76-59.5-65.32-116.92-65.32H25.9v223.6h1.81L93.55,115.36v-17.86h20.42c34.79,0,55.56,18.93,55.56,51.24s-20.77,50.62-55.56,50.62h-20.25l41.26-90.8-3.58-1.63L24.41,342.4l3.58,1.63,38.07-83.78h45.75c48.24,0,86.41-18.25,107.83-48.97v114.28h182.92v-58.71h-115.89v-26.35ZM286.68,160.66h70.74l-11.28,24.81h-59.47v-24.81Z\" />\r\n <polygon\r\n class=\"cls-1\"\r\n points=\"462.51 199.44 417.35 73.63 377.42 161.49 431.5 295.75 492.28 295.75 582.98 70.6 508.75 70.6 462.51 199.44\" />\r\n </svg>\r\n</ng-template>\r\n", styles: [":host mat-sidenav-container{height:calc(100vh - 64px)}:host{--mat-sidenav-container-shape: 0;--mat-sidenav-container-elevation-shadow: var(--mat-sys-level2);--mat-sidenav-container-background-color: var(--mat-sys-surface-container-low);--mat-sidenav-content-background-color: var(--mat-sys-surface-container-highest);--mat-sidenav-container-divider-color: var(--mat-sys-outline-variant)}:host .mat-drawer-side{box-shadow:var(--mat-sys-level2)}mat-toolbar{--mat-icon-button-icon-color: var(--mat-sys-on-primary);box-shadow:var(--mat-sys-level2);position:sticky;z-index:2;display:flex;gap:8px}a.active{--mat-button-filled-container-color: var(--mat-sys-secondary)}.content-container{padding:8px;display:flex;flex-direction:column;gap:8px}.powered-by{font-size:10px;color:var(--mat-sys-on-surface-variant);font-style:italic;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:4px;padding:4px}\n"] }]
|
|
3577
|
+
}], ctorParameters: () => [], propDecorators: { modules: [{ type: i0.Input, args: [{ isSignal: true, alias: "modules", required: false }] }], appTitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "appTitle", required: false }] }], version: [{ type: i0.Input, args: [{ isSignal: true, alias: "version", required: false }] }], appToolbar: [{ type: i0.ViewChild, args: ['appToolbar', { ...{ read: ElementRef }, isSignal: true }] }] } });
|
|
3578
|
+
|
|
3579
|
+
function BdbEntityResolver(service) {
|
|
3580
|
+
return (route) => {
|
|
3581
|
+
const id = +route.params['id'];
|
|
3582
|
+
const router = inject(Router);
|
|
3583
|
+
return inject(service)
|
|
3584
|
+
.get(id)
|
|
3585
|
+
.pipe(catchError$1(e => {
|
|
3586
|
+
router.navigate(['/', 'niet-gevonden'], {
|
|
3587
|
+
queryParams: { type: `${typeof service}`, id: id },
|
|
3588
|
+
});
|
|
3589
|
+
throw e;
|
|
3590
|
+
}));
|
|
3591
|
+
};
|
|
3592
|
+
}
|
|
3593
|
+
|
|
3594
|
+
class BdbNavListComponent {
|
|
3595
|
+
constructor() {
|
|
3596
|
+
this.routes = input([], ...(ngDevMode ? [{ debugName: "routes" }] : []));
|
|
3597
|
+
this.parentRoute = input(...(ngDevMode ? [undefined, { debugName: "parentRoute" }] : []));
|
|
3598
|
+
}
|
|
3599
|
+
getRouterLink(route) {
|
|
3600
|
+
if (this.parentRoute) {
|
|
3601
|
+
return ['/', this.parentRoute()?.path ?? '', route.path ?? ''];
|
|
3602
|
+
}
|
|
3603
|
+
else {
|
|
3604
|
+
return [route.path ?? ''];
|
|
3605
|
+
}
|
|
3606
|
+
}
|
|
3607
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbNavListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3608
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.0", type: BdbNavListComponent, isStandalone: true, selector: "bdb-nav-list", inputs: { routes: { classPropertyName: "routes", publicName: "routes", isSignal: true, isRequired: false, transformFunction: null }, parentRoute: { classPropertyName: "parentRoute", publicName: "parentRoute", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<!-- <mat-nav-list>\r\n @for (route of routes(); track route) {\r\n <a mat-list-item [routerLink]=\"getRouterLink(route)\" routerLinkActive=\"secondary\">\r\n @if (route.icon) {\r\n <mat-icon matListItemIcon>{{ route.icon }}</mat-icon>\r\n }\r\n <span matListItemTitle> {{ route.name }} </span>\r\n </a>\r\n }\r\n</mat-nav-list> -->\r\n\r\n@for (route of routes(); track route) {\r\n <a class=\"nav-list-item\" [routerLink]=\"getRouterLink(route)\" routerLinkActive=\"active\" matRipple>\r\n <div class=\"icon-container\">\r\n <mat-icon>{{ route.icon }}</mat-icon>\r\n </div>\r\n {{ route.name }}\r\n </a>\r\n}\r\n", styles: [":host{--mat-mdc-focus-indicator-border-radius: 0px;--mdc-list-list-item-leading-avatar-shape: 0px;--mat-list-active-indicator-shape: 0px}.secondary{color:var(--mat-sys-on-secondary);--mdc-list-list-item-leading-icon-color: var(--mat-sys-on-secondary);--mat-list-list-item-container-color: var(--mat-sys-secondary-container);--mat-list-list-item-label-text-color: var(--mat-sys-on-secondary-container);--mat-list-list-item-hover-label-text-color: var(--mat-sys-on-secondary-container);--mat-list-list-item-focus-label-text-color: var(--mat-sys-on-secondary-container);--mat-list-list-item-leading-icon-color: var(--mat-sys-on-secondary-container);--mat-list-list-item-hover-leading-icon-color: var(--mat-sys-on-secondary-container);--mat-list-list-item-disabled-leading-icon-color: var(--mat-sys-on-secondary-container)}:host{display:flex;flex-direction:column;justify-content:center}.nav-list-item{padding:8px 0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-decoration:none;font-size:12px;color:inherit}.nav-list-item .icon-container{padding:2px 16px;border-radius:999px;display:flex;align-items:center;justify-content:center}.nav-list-item.active .icon-container{background-color:var(--mat-sys-secondary)}.nav-list-item.active mat-icon{color:var(--mat-sys-on-secondary)}.nav-list-item:hover{background-color:var(--mat-sys-secondary-container);color:var(--mat-sys-on-secondary-container)}\n"], dependencies: [{ kind: "ngmodule", type: MatListModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i2$4.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i2$4.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "ngmodule", type: MatRippleModule }, { kind: "directive", type: i1$5.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }] }); }
|
|
3609
|
+
}
|
|
3610
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbNavListComponent, decorators: [{
|
|
3611
|
+
type: Component,
|
|
3612
|
+
args: [{ selector: 'bdb-nav-list', imports: [MatListModule, MatIconModule, RouterModule, MatRippleModule], template: "<!-- <mat-nav-list>\r\n @for (route of routes(); track route) {\r\n <a mat-list-item [routerLink]=\"getRouterLink(route)\" routerLinkActive=\"secondary\">\r\n @if (route.icon) {\r\n <mat-icon matListItemIcon>{{ route.icon }}</mat-icon>\r\n }\r\n <span matListItemTitle> {{ route.name }} </span>\r\n </a>\r\n }\r\n</mat-nav-list> -->\r\n\r\n@for (route of routes(); track route) {\r\n <a class=\"nav-list-item\" [routerLink]=\"getRouterLink(route)\" routerLinkActive=\"active\" matRipple>\r\n <div class=\"icon-container\">\r\n <mat-icon>{{ route.icon }}</mat-icon>\r\n </div>\r\n {{ route.name }}\r\n </a>\r\n}\r\n", styles: [":host{--mat-mdc-focus-indicator-border-radius: 0px;--mdc-list-list-item-leading-avatar-shape: 0px;--mat-list-active-indicator-shape: 0px}.secondary{color:var(--mat-sys-on-secondary);--mdc-list-list-item-leading-icon-color: var(--mat-sys-on-secondary);--mat-list-list-item-container-color: var(--mat-sys-secondary-container);--mat-list-list-item-label-text-color: var(--mat-sys-on-secondary-container);--mat-list-list-item-hover-label-text-color: var(--mat-sys-on-secondary-container);--mat-list-list-item-focus-label-text-color: var(--mat-sys-on-secondary-container);--mat-list-list-item-leading-icon-color: var(--mat-sys-on-secondary-container);--mat-list-list-item-hover-leading-icon-color: var(--mat-sys-on-secondary-container);--mat-list-list-item-disabled-leading-icon-color: var(--mat-sys-on-secondary-container)}:host{display:flex;flex-direction:column;justify-content:center}.nav-list-item{padding:8px 0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-decoration:none;font-size:12px;color:inherit}.nav-list-item .icon-container{padding:2px 16px;border-radius:999px;display:flex;align-items:center;justify-content:center}.nav-list-item.active .icon-container{background-color:var(--mat-sys-secondary)}.nav-list-item.active mat-icon{color:var(--mat-sys-on-secondary)}.nav-list-item:hover{background-color:var(--mat-sys-secondary-container);color:var(--mat-sys-on-secondary-container)}\n"] }]
|
|
3613
|
+
}], propDecorators: { routes: [{ type: i0.Input, args: [{ isSignal: true, alias: "routes", required: false }] }], parentRoute: [{ type: i0.Input, args: [{ isSignal: true, alias: "parentRoute", required: false }] }] } });
|
|
3614
|
+
|
|
3615
|
+
class BdbPageHeaderComponent {
|
|
3616
|
+
constructor() {
|
|
3617
|
+
this.pageTitle = input('', ...(ngDevMode ? [{ debugName: "pageTitle" }] : []));
|
|
3618
|
+
}
|
|
3619
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbPageHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3620
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.1.0", type: BdbPageHeaderComponent, isStandalone: true, selector: "bdb-page-header", inputs: { pageTitle: { classPropertyName: "pageTitle", publicName: "pageTitle", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"page-title\">{{ pageTitle() }}</div>\r\n<div style=\"flex: 1\"></div>\r\n<ng-content></ng-content>\r\n\r\n<button mat-icon-button [matMenuTriggerFor]=\"menu\">\r\n <mat-icon>more_vert</mat-icon>\r\n</button>\r\n<mat-menu #menu=\"matMenu\">\r\n <button mat-menu-item>Item 1</button>\r\n <button mat-menu-item>Item 2</button>\r\n</mat-menu>\r\n", styles: [":host{display:flex;gap:8px;align-items:center;font-size:16px;font-weight:500;letter-spacing:.1em}\n"], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i5.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i5.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i5.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }] }); }
|
|
3621
|
+
}
|
|
3622
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbPageHeaderComponent, decorators: [{
|
|
3623
|
+
type: Component,
|
|
3624
|
+
args: [{ selector: 'bdb-page-header', imports: [MatIconModule, MatMenuModule, MatButtonModule], template: "<div class=\"page-title\">{{ pageTitle() }}</div>\r\n<div style=\"flex: 1\"></div>\r\n<ng-content></ng-content>\r\n\r\n<button mat-icon-button [matMenuTriggerFor]=\"menu\">\r\n <mat-icon>more_vert</mat-icon>\r\n</button>\r\n<mat-menu #menu=\"matMenu\">\r\n <button mat-menu-item>Item 1</button>\r\n <button mat-menu-item>Item 2</button>\r\n</mat-menu>\r\n", styles: [":host{display:flex;gap:8px;align-items:center;font-size:16px;font-weight:500;letter-spacing:.1em}\n"] }]
|
|
3625
|
+
}], propDecorators: { pageTitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "pageTitle", required: false }] }] } });
|
|
3626
|
+
|
|
2825
3627
|
class AccessDeniedPageComponent {
|
|
2826
3628
|
constructor(bdbOptions, authService) {
|
|
2827
3629
|
this.authService = authService;
|
|
@@ -2839,20 +3641,19 @@ class AccessDeniedPageComponent {
|
|
|
2839
3641
|
this._onDestroy.next();
|
|
2840
3642
|
this._onDestroy.complete();
|
|
2841
3643
|
}
|
|
2842
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2843
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
3644
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: AccessDeniedPageComponent, deps: [{ token: BDB_OPTIONS }, { token: AuthService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3645
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.0", type: AccessDeniedPageComponent, isStandalone: true, selector: "bdb-access-denied-page", ngImport: i0, template: "<mat-card>\r\n <mat-card-header>\r\n <mat-card-title>Toegang geweigerd</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content class=\"access-denied-card-content\">\r\n <bdb-alert class=\"danger\" label=\"Geen toegang\" icon=\"block\">\r\n U heeft onvoldoende rechten voor de gevraagde toepassing\r\n </bdb-alert>\r\n </mat-card-content>\r\n <mat-card-actions bdbFlex=\"row 0 end center\">\r\n @if (isLoggedIn) {\r\n <a [routerLink]=\"['/', logoutRoutePath]\" mat-button>Uitloggen</a>\r\n } @else {\r\n <a [routerLink]=\"['/', loginRoutePath]\" mat-button>Inloggen</a>\r\n }\r\n </mat-card-actions>\r\n</mat-card>\r\n", styles: [":host{min-width:360px}.access-denied-card-content{padding:8px 16px}\n"], dependencies: [{ kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i3$2.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i3$2.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i3$2.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i3$2.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i3$2.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "component", type: BdbAlertComponent, selector: "bdb-alert", inputs: ["label", "icon", "inline"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "directive", type: BdbFlexDirective, selector: "[bdbFlex], [bdbFlexDirection], [bdbFlexGap], [bdbFlexSpacing]", inputs: ["bdbFlex", "bdbFlexDirection", "bdbFlexGap", "bdbFlexSpacing"] }] }); }
|
|
2844
3646
|
}
|
|
2845
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
3647
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: AccessDeniedPageComponent, decorators: [{
|
|
2846
3648
|
type: Component,
|
|
2847
3649
|
args: [{ selector: 'bdb-access-denied-page', imports: [
|
|
2848
|
-
CommonModule,
|
|
2849
3650
|
MatCardModule,
|
|
2850
3651
|
BdbAlertComponent,
|
|
2851
3652
|
MatButtonModule,
|
|
2852
3653
|
RouterLink,
|
|
2853
3654
|
MatIconModule,
|
|
2854
|
-
BdbFlexDirective
|
|
2855
|
-
], template: "<mat-card>\r\n <mat-card-header>\r\n <mat-card-title>Toegang geweigerd</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content class=\"access-denied-card-content\">\r\n <bdb-alert
|
|
3655
|
+
BdbFlexDirective
|
|
3656
|
+
], template: "<mat-card>\r\n <mat-card-header>\r\n <mat-card-title>Toegang geweigerd</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content class=\"access-denied-card-content\">\r\n <bdb-alert class=\"danger\" label=\"Geen toegang\" icon=\"block\">\r\n U heeft onvoldoende rechten voor de gevraagde toepassing\r\n </bdb-alert>\r\n </mat-card-content>\r\n <mat-card-actions bdbFlex=\"row 0 end center\">\r\n @if (isLoggedIn) {\r\n <a [routerLink]=\"['/', logoutRoutePath]\" mat-button>Uitloggen</a>\r\n } @else {\r\n <a [routerLink]=\"['/', loginRoutePath]\" mat-button>Inloggen</a>\r\n }\r\n </mat-card-actions>\r\n</mat-card>\r\n", styles: [":host{min-width:360px}.access-denied-card-content{padding:8px 16px}\n"] }]
|
|
2856
3657
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
2857
3658
|
type: Inject,
|
|
2858
3659
|
args: [BDB_OPTIONS]
|
|
@@ -2895,13 +3696,12 @@ class ForgotPasswordPageComponent {
|
|
|
2895
3696
|
},
|
|
2896
3697
|
});
|
|
2897
3698
|
}
|
|
2898
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2899
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
3699
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: ForgotPasswordPageComponent, deps: [{ token: AuthService }, { token: BDB_OPTIONS }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3700
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.0", type: ForgotPasswordPageComponent, isStandalone: true, selector: "bdb-forgot-password-page", ngImport: i0, template: "@if (!isComplete) {\r\n <form [formGroup]=\"forgotPasswordForm\" (ngSubmit)=\"forgotPassword()\">\r\n <mat-card>\r\n <mat-card-header>\r\n <mat-card-title>Wachtwoord vergeten</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content class=\"forgot-password-page-card-content\">\r\n <bdb-alert-error-response [value]=\"error\" class=\"login-page-error-response\"></bdb-alert-error-response>\r\n <mat-form-field>\r\n <mat-label>E-mailadres</mat-label>\r\n <input matInput type=\"email\" formControlName=\"email\" />\r\n </mat-form-field>\r\n </mat-card-content>\r\n <mat-card-actions class=\"forgot-password-page-card-actions\">\r\n <a mat-button [routerLink]=\"['/', loginRoutePath]\" [disabled]=\"isPending\">\r\n <mat-icon>login</mat-icon>\r\n <span>Log in</span>\r\n </a>\r\n <button mat-flat-button class=\"primary\">\r\n <mat-icon>lock_reset</mat-icon>\r\n <span>Herstel wachtwoord</span>\r\n </button></mat-card-actions\r\n >\r\n </mat-card>\r\n </form>\r\n} @else {\r\n <bdb-alert class=\"success\" label=\"Wachtwoord herstel gestart\"> Controleer uw e-mail voor instructies </bdb-alert>\r\n}\r\n", styles: [":host{width:360px}.forgot-password-page-card-content{display:flex;flex-direction:column;margin-top:16px}.forgot-password-page-card-actions{gap:8px;justify-content:flex-end}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i3$2.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i3$2.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i3$2.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i3$2.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i3$2.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i4$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4$1.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i5$2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: BdbAlertErrorResponseComponent, selector: "bdb-alert-error-response", inputs: ["value", "dismissable"], outputs: ["dismiss"] }, { kind: "component", type: BdbAlertComponent, selector: "bdb-alert", inputs: ["label", "icon", "inline"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }] }); }
|
|
2900
3701
|
}
|
|
2901
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
3702
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: ForgotPasswordPageComponent, decorators: [{
|
|
2902
3703
|
type: Component,
|
|
2903
3704
|
args: [{ selector: 'bdb-forgot-password-page', imports: [
|
|
2904
|
-
CommonModule,
|
|
2905
3705
|
ReactiveFormsModule,
|
|
2906
3706
|
MatCardModule,
|
|
2907
3707
|
MatFormFieldModule,
|
|
@@ -2910,8 +3710,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.3", ngImpor
|
|
|
2910
3710
|
RouterLink,
|
|
2911
3711
|
BdbAlertErrorResponseComponent,
|
|
2912
3712
|
BdbAlertComponent,
|
|
2913
|
-
MatButtonModule
|
|
2914
|
-
], template: "@if (!isComplete) {\r\n <form [formGroup]=\"forgotPasswordForm\" (ngSubmit)=\"forgotPassword()\">\r\n <mat-card>\r\n <mat-card-header>\r\n <mat-card-title>Wachtwoord vergeten</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content class=\"forgot-password-page-card-content\">\r\n <bdb-alert-error-response [value]=\"error\" class=\"login-page-error-response\"></bdb-alert-error-response>\r\n <mat-form-field>\r\n <mat-label>E-mailadres</mat-label>\r\n <input matInput type=\"email\" formControlName=\"email\" />\r\n </mat-form-field>\r\n </mat-card-content>\r\n <mat-card-actions class=\"forgot-password-page-card-actions\">\r\n <a mat-button [routerLink]=\"['/', loginRoutePath]\" [disabled]=\"isPending\">\r\n <mat-icon>login</mat-icon>\r\n <span>Log in</span>\r\n </a>\r\n <button mat-flat-button
|
|
3713
|
+
MatButtonModule
|
|
3714
|
+
], template: "@if (!isComplete) {\r\n <form [formGroup]=\"forgotPasswordForm\" (ngSubmit)=\"forgotPassword()\">\r\n <mat-card>\r\n <mat-card-header>\r\n <mat-card-title>Wachtwoord vergeten</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content class=\"forgot-password-page-card-content\">\r\n <bdb-alert-error-response [value]=\"error\" class=\"login-page-error-response\"></bdb-alert-error-response>\r\n <mat-form-field>\r\n <mat-label>E-mailadres</mat-label>\r\n <input matInput type=\"email\" formControlName=\"email\" />\r\n </mat-form-field>\r\n </mat-card-content>\r\n <mat-card-actions class=\"forgot-password-page-card-actions\">\r\n <a mat-button [routerLink]=\"['/', loginRoutePath]\" [disabled]=\"isPending\">\r\n <mat-icon>login</mat-icon>\r\n <span>Log in</span>\r\n </a>\r\n <button mat-flat-button class=\"primary\">\r\n <mat-icon>lock_reset</mat-icon>\r\n <span>Herstel wachtwoord</span>\r\n </button></mat-card-actions\r\n >\r\n </mat-card>\r\n </form>\r\n} @else {\r\n <bdb-alert class=\"success\" label=\"Wachtwoord herstel gestart\"> Controleer uw e-mail voor instructies </bdb-alert>\r\n}\r\n", styles: [":host{width:360px}.forgot-password-page-card-content{display:flex;flex-direction:column;margin-top:16px}.forgot-password-page-card-actions{gap:8px;justify-content:flex-end}\n"] }]
|
|
2915
3715
|
}], ctorParameters: () => [{ type: AuthService }, { type: undefined, decorators: [{
|
|
2916
3716
|
type: Inject,
|
|
2917
3717
|
args: [BDB_OPTIONS]
|
|
@@ -2926,12 +3726,12 @@ class InvalidTokenPageComponent {
|
|
|
2926
3726
|
constructor(bdbOptions) {
|
|
2927
3727
|
this.loginRoutePath = bdbOptions.authOptions?.loginPath;
|
|
2928
3728
|
}
|
|
2929
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2930
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
3729
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: InvalidTokenPageComponent, deps: [{ token: BDB_OPTIONS }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3730
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.0", type: InvalidTokenPageComponent, isStandalone: true, selector: "bdb-invalid-token-page", ngImport: i0, template: "<mat-card>\r\n <mat-card-header>\r\n <mat-card-title>Ongeldig token</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content class=\"access-denied-card-content\">\r\n <bdb-alert class=\"warn\" label=\"Verlopen\" icon=\"block\"> Uw wachtwoord herstel link is niet (meer) geldig </bdb-alert>\r\n </mat-card-content>\r\n <mat-card-actions bdbFlex=\"row 0 end center\">\r\n <a [routerLink]=\"['/', loginRoutePath]\" mat-button>Inloggen</a>\r\n </mat-card-actions>\r\n</mat-card>\r\n", styles: [":host{min-width:360px}.access-denied-card-content{padding:8px 16px}\n"], dependencies: [{ kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i3$2.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i3$2.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i3$2.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i3$2.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i3$2.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "component", type: BdbAlertComponent, selector: "bdb-alert", inputs: ["label", "icon", "inline"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: BdbFlexDirective, selector: "[bdbFlex], [bdbFlexDirection], [bdbFlexGap], [bdbFlexSpacing]", inputs: ["bdbFlex", "bdbFlexDirection", "bdbFlexGap", "bdbFlexSpacing"] }] }); }
|
|
2931
3731
|
}
|
|
2932
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
3732
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: InvalidTokenPageComponent, decorators: [{
|
|
2933
3733
|
type: Component,
|
|
2934
|
-
args: [{ selector: 'bdb-invalid-token-page', imports: [
|
|
3734
|
+
args: [{ selector: 'bdb-invalid-token-page', imports: [MatCardModule, BdbAlertComponent, MatButtonModule, RouterLink, BdbFlexDirective], template: "<mat-card>\r\n <mat-card-header>\r\n <mat-card-title>Ongeldig token</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content class=\"access-denied-card-content\">\r\n <bdb-alert class=\"warn\" label=\"Verlopen\" icon=\"block\"> Uw wachtwoord herstel link is niet (meer) geldig </bdb-alert>\r\n </mat-card-content>\r\n <mat-card-actions bdbFlex=\"row 0 end center\">\r\n <a [routerLink]=\"['/', loginRoutePath]\" mat-button>Inloggen</a>\r\n </mat-card-actions>\r\n</mat-card>\r\n", styles: [":host{min-width:360px}.access-denied-card-content{padding:8px 16px}\n"] }]
|
|
2935
3735
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
2936
3736
|
type: Inject,
|
|
2937
3737
|
args: [BDB_OPTIONS]
|
|
@@ -2987,13 +3787,12 @@ class LoginPageComponent {
|
|
|
2987
3787
|
},
|
|
2988
3788
|
});
|
|
2989
3789
|
}
|
|
2990
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2991
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
3790
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: LoginPageComponent, deps: [{ token: i2$4.Router }, { token: AuthService }, { token: i2$4.ActivatedRoute }, { token: BDB_OPTIONS }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3791
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.0", type: LoginPageComponent, isStandalone: true, selector: "bdb-login-page", ngImport: i0, template: "<form [formGroup]=\"loginForm\" (ngSubmit)=\"login()\">\r\n <mat-card>\r\n <mat-card-header>\r\n <mat-card-title>Inloggen</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content bdbFlex=\"col\">\r\n <bdb-alert-error-response [value]=\"error\" class=\"login-form-error-response\"></bdb-alert-error-response>\r\n <mat-form-field>\r\n <mat-label>Gebruikersnaam</mat-label>\r\n <input matInput type=\"email\" formControlName=\"email\" />\r\n <mat-error bdbFormError=\"email\"></mat-error>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>Wachtwoord</mat-label>\r\n <input matInput type=\"password\" formControlName=\"password\" />\r\n <mat-error bdbFormError=\"password\"></mat-error>\r\n </mat-form-field>\r\n </mat-card-content>\r\n <mat-card-actions bdbFlex=\"row 8px end center\">\r\n <a mat-button [routerLink]=\"['/', forgotPasswordRoutePath]\">\r\n <mat-icon>contact_support</mat-icon>\r\n <span>Wachtwoord vergeten</span>\r\n </a>\r\n <button mat-flat-button class=\"primary\">\r\n <mat-icon>login</mat-icon>\r\n <span>Inloggen</span>\r\n </button>\r\n </mat-card-actions>\r\n </mat-card>\r\n</form>\r\n", styles: [":host{width:360px}.login-form-error-response{margin:8px 0}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i4$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i5$2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i3$2.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i3$2.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i3$2.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i3$2.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i3$2.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "component", type: BdbAlertErrorResponseComponent, selector: "bdb-alert-error-response", inputs: ["value", "dismissable"], outputs: ["dismiss"] }, { kind: "directive", type: BdbFlexDirective, selector: "[bdbFlex], [bdbFlexDirection], [bdbFlexGap], [bdbFlexSpacing]", inputs: ["bdbFlex", "bdbFlexDirection", "bdbFlexGap", "bdbFlexSpacing"] }, { kind: "directive", type: BdbFormErrorDirective, selector: "[bdbFormError]", inputs: ["bdbFormError"] }] }); }
|
|
2992
3792
|
}
|
|
2993
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
3793
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: LoginPageComponent, decorators: [{
|
|
2994
3794
|
type: Component,
|
|
2995
3795
|
args: [{ selector: 'bdb-login-page', imports: [
|
|
2996
|
-
CommonModule,
|
|
2997
3796
|
ReactiveFormsModule,
|
|
2998
3797
|
MatFormFieldModule,
|
|
2999
3798
|
MatInputModule,
|
|
@@ -3003,9 +3802,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.3", ngImpor
|
|
|
3003
3802
|
MatCardModule,
|
|
3004
3803
|
BdbAlertErrorResponseComponent,
|
|
3005
3804
|
BdbFlexDirective,
|
|
3006
|
-
BdbFormErrorDirective
|
|
3007
|
-
], template: "<form [formGroup]=\"loginForm\" (ngSubmit)=\"login()\">\r\n <mat-card>\r\n <mat-card-header>\r\n <mat-card-title>Inloggen</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content bdbFlex=\"col\">\r\n <bdb-alert-error-response [value]=\"error\" class=\"login-form-error-response\"></bdb-alert-error-response>\r\n <mat-form-field>\r\n <mat-label>Gebruikersnaam</mat-label>\r\n <input matInput type=\"email\" formControlName=\"email\" />\r\n <mat-error bdbFormError=\"email\"></mat-error>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>Wachtwoord</mat-label>\r\n <input matInput type=\"password\" formControlName=\"password\" />\r\n <mat-error bdbFormError=\"password\"></mat-error>\r\n </mat-form-field>\r\n </mat-card-content>\r\n <mat-card-actions bdbFlex=\"row 8px end center\">\r\n <a mat-button [routerLink]=\"['/', forgotPasswordRoutePath]\">\r\n <mat-icon>contact_support</mat-icon>\r\n <span>Wachtwoord vergeten</span>\r\n </a>\r\n <button mat-flat-button
|
|
3008
|
-
}], ctorParameters: () => [{ type: i2$
|
|
3805
|
+
BdbFormErrorDirective
|
|
3806
|
+
], template: "<form [formGroup]=\"loginForm\" (ngSubmit)=\"login()\">\r\n <mat-card>\r\n <mat-card-header>\r\n <mat-card-title>Inloggen</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content bdbFlex=\"col\">\r\n <bdb-alert-error-response [value]=\"error\" class=\"login-form-error-response\"></bdb-alert-error-response>\r\n <mat-form-field>\r\n <mat-label>Gebruikersnaam</mat-label>\r\n <input matInput type=\"email\" formControlName=\"email\" />\r\n <mat-error bdbFormError=\"email\"></mat-error>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>Wachtwoord</mat-label>\r\n <input matInput type=\"password\" formControlName=\"password\" />\r\n <mat-error bdbFormError=\"password\"></mat-error>\r\n </mat-form-field>\r\n </mat-card-content>\r\n <mat-card-actions bdbFlex=\"row 8px end center\">\r\n <a mat-button [routerLink]=\"['/', forgotPasswordRoutePath]\">\r\n <mat-icon>contact_support</mat-icon>\r\n <span>Wachtwoord vergeten</span>\r\n </a>\r\n <button mat-flat-button class=\"primary\">\r\n <mat-icon>login</mat-icon>\r\n <span>Inloggen</span>\r\n </button>\r\n </mat-card-actions>\r\n </mat-card>\r\n</form>\r\n", styles: [":host{width:360px}.login-form-error-response{margin:8px 0}\n"] }]
|
|
3807
|
+
}], ctorParameters: () => [{ type: i2$4.Router }, { type: AuthService }, { type: i2$4.ActivatedRoute }, { type: undefined, decorators: [{
|
|
3009
3808
|
type: Inject,
|
|
3010
3809
|
args: [BDB_OPTIONS]
|
|
3011
3810
|
}] }] });
|
|
@@ -3025,13 +3824,13 @@ class LogoutPageComponent {
|
|
|
3025
3824
|
this.authService.logout();
|
|
3026
3825
|
this.router.navigate(['/', this.bdbOptions.authOptions?.loginPath]);
|
|
3027
3826
|
}
|
|
3028
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
3029
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
3827
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: LogoutPageComponent, deps: [{ token: i2$4.Router }, { token: AuthService }, { token: BDB_OPTIONS }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3828
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.0", type: LogoutPageComponent, isStandalone: true, selector: "bdb-logout-page", ngImport: i0, template: "<mat-card>\r\n <mat-card-header>\r\n <mat-card-title>Uitloggen</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content class=\"logout-page-card-content\"> Weet u zeker dat u wilt uitloggen? </mat-card-content>\r\n <mat-card-actions class=\"logout-page-card-actions\">\r\n <a mat-button routerLink=\"/\">\r\n <mat-icon>arrow_back</mat-icon>\r\n <span>Blijf ingelogd</span>\r\n </a>\r\n <button (click)=\"logout()\" mat-flat-button class=\"primary\">\r\n <mat-icon>logout</mat-icon>\r\n <span>Log uit</span>\r\n </button></mat-card-actions\r\n >\r\n</mat-card>\r\n", styles: [":host{width:360px}.logout-page-card-content{display:flex;flex-direction:column;padding:16px}.logout-page-card-actions{gap:8px;justify-content:flex-end}\n"], dependencies: [{ kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i3$2.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i3$2.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i3$2.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i3$2.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i3$2.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }] }); }
|
|
3030
3829
|
}
|
|
3031
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
3830
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: LogoutPageComponent, decorators: [{
|
|
3032
3831
|
type: Component,
|
|
3033
|
-
args: [{ selector: 'bdb-logout-page', imports: [MatCardModule, MatButtonModule, MatIconModule, RouterLink], template: "<mat-card>\r\n <mat-card-header>\r\n <mat-card-title>Uitloggen</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content class=\"logout-page-card-content\"> Weet u zeker dat u wilt uitloggen? </mat-card-content>\r\n <mat-card-actions class=\"logout-page-card-actions\">\r\n <a mat-button routerLink=\"/\">\r\n <mat-icon>arrow_back</mat-icon>\r\n <span>Blijf ingelogd</span>\r\n </a>\r\n <button (click)=\"logout()\" mat-flat-button
|
|
3034
|
-
}], ctorParameters: () => [{ type: i2$
|
|
3832
|
+
args: [{ selector: 'bdb-logout-page', imports: [MatCardModule, MatButtonModule, MatIconModule, RouterLink], template: "<mat-card>\r\n <mat-card-header>\r\n <mat-card-title>Uitloggen</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content class=\"logout-page-card-content\"> Weet u zeker dat u wilt uitloggen? </mat-card-content>\r\n <mat-card-actions class=\"logout-page-card-actions\">\r\n <a mat-button routerLink=\"/\">\r\n <mat-icon>arrow_back</mat-icon>\r\n <span>Blijf ingelogd</span>\r\n </a>\r\n <button (click)=\"logout()\" mat-flat-button class=\"primary\">\r\n <mat-icon>logout</mat-icon>\r\n <span>Log uit</span>\r\n </button></mat-card-actions\r\n >\r\n</mat-card>\r\n", styles: [":host{width:360px}.logout-page-card-content{display:flex;flex-direction:column;padding:16px}.logout-page-card-actions{gap:8px;justify-content:flex-end}\n"] }]
|
|
3833
|
+
}], ctorParameters: () => [{ type: i2$4.Router }, { type: AuthService }, { type: undefined, decorators: [{
|
|
3035
3834
|
type: Inject,
|
|
3036
3835
|
args: [BDB_OPTIONS]
|
|
3037
3836
|
}] }] });
|
|
@@ -3104,10 +3903,10 @@ class ResetPasswordPageComponent {
|
|
|
3104
3903
|
},
|
|
3105
3904
|
});
|
|
3106
3905
|
}
|
|
3107
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
3108
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
3906
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: ResetPasswordPageComponent, deps: [{ token: AuthService }, { token: i2$4.ActivatedRoute }, { token: i2$4.Router }, { token: BDB_OPTIONS }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3907
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.0", type: ResetPasswordPageComponent, isStandalone: true, selector: "bdb-reset-password-page", ngImport: i0, template: "<form [formGroup]=\"resetPasswordForm\" (ngSubmit)=\"resetPassword()\">\r\n <mat-card>\r\n <mat-card-header>\r\n <mat-card-title>Wachtwoord herstellen</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content class=\"reset-password-page-card-content\">\r\n <bdb-alert-error-response [value]=\"error\" class=\"login-page-error-response\"></bdb-alert-error-response>\r\n <p>{{ resetPasswordToken?.email }}</p>\r\n\r\n <mat-form-field>\r\n <mat-label>Nieuw wachtwoord</mat-label>\r\n <input matInput type=\"password\" [formControl]=\"passwordCtrl\" />\r\n </mat-form-field>\r\n\r\n <mat-form-field>\r\n <mat-label>Bevestig wachtwoord</mat-label>\r\n <input matInput type=\"password\" [formControl]=\"confirmPasswordCtrl\" />\r\n </mat-form-field>\r\n </mat-card-content>\r\n <mat-card-actions class=\"reset-password-page-card-actions\">\r\n <a mat-button [routerLink]=\"['/', loginRoutePath]\" [disabled]=\"isPending\">\r\n <mat-icon>login</mat-icon>\r\n <span>Log in</span>\r\n </a>\r\n <button mat-flat-button class=\"primary\">\r\n <mat-icon>sync_lock</mat-icon>\r\n <span>Stel wachtwoord in</span>\r\n </button></mat-card-actions\r\n >\r\n </mat-card>\r\n</form>\r\n", styles: [":host{width:360px}.reset-password-page-card-content{display:flex;flex-direction:column;margin-top:16px}.reset-password-page-card-actions{gap:8px;justify-content:flex-end}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i3$2.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i3$2.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i3$2.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i3$2.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i3$2.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "component", type: BdbAlertErrorResponseComponent, selector: "bdb-alert-error-response", inputs: ["value", "dismissable"], outputs: ["dismiss"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i4$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4$1.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i5$2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }] }); }
|
|
3109
3908
|
}
|
|
3110
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
3909
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: ResetPasswordPageComponent, decorators: [{
|
|
3111
3910
|
type: Component,
|
|
3112
3911
|
args: [{ selector: 'bdb-reset-password-page', imports: [
|
|
3113
3912
|
ReactiveFormsModule,
|
|
@@ -3118,8 +3917,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.3", ngImpor
|
|
|
3118
3917
|
MatIconModule,
|
|
3119
3918
|
RouterLink,
|
|
3120
3919
|
MatButtonModule,
|
|
3121
|
-
], template: "<form [formGroup]=\"resetPasswordForm\" (ngSubmit)=\"resetPassword()\">\r\n <mat-card>\r\n <mat-card-header>\r\n <mat-card-title>Wachtwoord herstellen</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content class=\"reset-password-page-card-content\">\r\n <bdb-alert-error-response [value]=\"error\" class=\"login-page-error-response\"></bdb-alert-error-response>\r\n <p>{{ resetPasswordToken?.email }}</p>\r\n\r\n <mat-form-field>\r\n <mat-label>Nieuw wachtwoord</mat-label>\r\n <input matInput type=\"password\" [formControl]=\"passwordCtrl\" />\r\n </mat-form-field>\r\n\r\n <mat-form-field>\r\n <mat-label>Bevestig wachtwoord</mat-label>\r\n <input matInput type=\"password\" [formControl]=\"confirmPasswordCtrl\" />\r\n </mat-form-field>\r\n </mat-card-content>\r\n <mat-card-actions class=\"reset-password-page-card-actions\">\r\n <a mat-button [routerLink]=\"['/', loginRoutePath]\" [disabled]=\"isPending\">\r\n <mat-icon>login</mat-icon>\r\n <span>Log in</span>\r\n </a>\r\n <button mat-flat-button
|
|
3122
|
-
}], ctorParameters: () => [{ type: AuthService }, { type: i2$
|
|
3920
|
+
], template: "<form [formGroup]=\"resetPasswordForm\" (ngSubmit)=\"resetPassword()\">\r\n <mat-card>\r\n <mat-card-header>\r\n <mat-card-title>Wachtwoord herstellen</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content class=\"reset-password-page-card-content\">\r\n <bdb-alert-error-response [value]=\"error\" class=\"login-page-error-response\"></bdb-alert-error-response>\r\n <p>{{ resetPasswordToken?.email }}</p>\r\n\r\n <mat-form-field>\r\n <mat-label>Nieuw wachtwoord</mat-label>\r\n <input matInput type=\"password\" [formControl]=\"passwordCtrl\" />\r\n </mat-form-field>\r\n\r\n <mat-form-field>\r\n <mat-label>Bevestig wachtwoord</mat-label>\r\n <input matInput type=\"password\" [formControl]=\"confirmPasswordCtrl\" />\r\n </mat-form-field>\r\n </mat-card-content>\r\n <mat-card-actions class=\"reset-password-page-card-actions\">\r\n <a mat-button [routerLink]=\"['/', loginRoutePath]\" [disabled]=\"isPending\">\r\n <mat-icon>login</mat-icon>\r\n <span>Log in</span>\r\n </a>\r\n <button mat-flat-button class=\"primary\">\r\n <mat-icon>sync_lock</mat-icon>\r\n <span>Stel wachtwoord in</span>\r\n </button></mat-card-actions\r\n >\r\n </mat-card>\r\n</form>\r\n", styles: [":host{width:360px}.reset-password-page-card-content{display:flex;flex-direction:column;margin-top:16px}.reset-password-page-card-actions{gap:8px;justify-content:flex-end}\n"] }]
|
|
3921
|
+
}], ctorParameters: () => [{ type: AuthService }, { type: i2$4.ActivatedRoute }, { type: i2$4.Router }, { type: undefined, decorators: [{
|
|
3123
3922
|
type: Inject,
|
|
3124
3923
|
args: [BDB_OPTIONS]
|
|
3125
3924
|
}] }] });
|
|
@@ -3134,5 +3933,5 @@ var resetPasswordPage_component = /*#__PURE__*/Object.freeze({
|
|
|
3134
3933
|
* Generated bundle index. Do not edit.
|
|
3135
3934
|
*/
|
|
3136
3935
|
|
|
3137
|
-
export { AccessDeniedPageComponent, AuthContainerComponent, AuthService, BDB_OPTIONS, BdbAlertComponent, BdbAlertErrorResponseComponent, BdbBooleanDisplayComponent, BdbCellDirective, BdbCollapseRowComponent, BdbColumnBuilder, BdbColumnType, BdbDataSource, BdbErrorResponseDialogComponent, BdbFieldComponent, BdbFlexChildDirective, BdbFlexDirective, BdbFormErrorDirective, BdbFullTableComponent, BdbGridChildDirective, BdbGridDirective, BdbMediaDisplayComponent, BdbMediaInputComponent, BdbMediaUploadComponent, BdbOptionsBuilder, BdbPaginatorComponent, BdbQueryInputComponent, BdbSearchComponent, BdbSearchWrapperBaseComponent, BdbService, BdbServiceCR, BdbServiceCRD, BdbServiceCRU, BdbServiceCRUD, BdbServiceR, BdbServiceRD, BdbServiceRU, BdbServiceRUD, BdbTableComponent, ExceptionLogService, ExceptionLogTableComponent, FileSizePipe, ForgotPasswordPageComponent, InvalidTokenPageComponent, LoginPageComponent, LogoutPageComponent, MediaDropDirective, MediaFullTableComponent, MediaService, MediaTableComponent, MediaType, MediaTypeIconPipe, MediaTypeMap, MediaTypePipe, PlainNumberPipe, ResetPasswordPageComponent, RoleService, TaskLogOutcome, TaskLogOutcomeMap, TaskLogOutcomePipe, TaskLogParameterService, TaskLogParameterType, TaskLogParameterValuePipe, TaskLogScheduleService, TaskLogSchedulerService, TaskLogService, TaskLogStatus, TaskLogStatusMap, TaskLogStatusPipe, TaskLogTypeService, UserRoleService, UserService, UserTableComponent, equalValueValidator, getAuthorizationHeaderFromToken, getTokenFromAuthorizationHeader, loggedOutGuard, provideBaDaBoom, resetPasswordResolver, roleGuard, tokenExpiredInterceptor, tokenInterceptor };
|
|
3936
|
+
export { AccessDeniedPageComponent, AuthContainerComponent, AuthService, BDB_OPTIONS, BdbAlertComponent, BdbAlertErrorResponseComponent, BdbAppLayoutComponent, BdbBooleanDisplayComponent, BdbCellDirective, BdbCollapseRowComponent, BdbColumnBuilder, BdbColumnType, BdbDataSource, BdbDataSourceV2, BdbEntityResolver, BdbErrorResponseDialogComponent, BdbFieldComponent, BdbFlexChildDirective, BdbFlexDirective, BdbFormDialogComponent, BdbFormErrorDirective, BdbFullTableComponent, BdbGridChildDirective, BdbGridComponent, BdbGridDirective, BdbMediaDisplayComponent, BdbMediaInputComponent, BdbMediaUploadComponent, BdbNavListComponent, BdbOptionsBuilder, BdbPageHeaderComponent, BdbPaginatorComponent, BdbPaginatorV2Component, BdbQueryInputComponent, BdbQueryInputV2Component, BdbSearchComponent, BdbSearchInputComponent, BdbSearchV2Component, BdbSearchWrapperBaseComponent, BdbService, BdbServiceCR, BdbServiceCRD, BdbServiceCRU, BdbServiceCRUD, BdbServiceR, BdbServiceRD, BdbServiceRU, BdbServiceRUD, BdbTableComponent, BdbTableV2Component, ExceptionLogService, ExceptionLogTableComponent, FileSizePipe, ForgotPasswordPageComponent, InvalidTokenPageComponent, LoginPageComponent, LogoutPageComponent, MediaDropDirective, MediaFullTableComponent, MediaService, MediaTableComponent, MediaType, MediaTypeIconPipe, MediaTypeMap, MediaTypePipe, PlainNumberPipe, ResetPasswordPageComponent, RoleService, SearchV2Base, TaskLogOutcome, TaskLogOutcomeMap, TaskLogOutcomePipe, TaskLogParameterService, TaskLogParameterType, TaskLogParameterValuePipe, TaskLogScheduleService, TaskLogSchedulerService, TaskLogService, TaskLogStatus, TaskLogStatusMap, TaskLogStatusPipe, TaskLogTypeService, UserRoleService, UserService, UserTableComponent, equalValueValidator, getAuthorizationHeaderFromToken, getTokenFromAuthorizationHeader, loggedOutGuard, provideBaDaBoom, resetPasswordResolver, roleGuard, tokenExpiredInterceptor, tokenInterceptor };
|
|
3138
3937
|
//# sourceMappingURL=devopmaat-badaboom.mjs.map
|