@devopmaat/badaboom 1.3.13 → 1.4.0

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.
@@ -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, ContentChildren, ViewChild, Optional, Self, HostListener, LOCALE_ID, Inject } from '@angular/core';
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 { BehaviorSubject, of, catchError as catchError$1, throwError, filter as filter$1, take, concatMap as concatMap$1, tap as tap$1, map, Subject, finalize, debounceTime, distinctUntilChanged, takeUntil } from 'rxjs';
4
+ import * as i2$4 from '@angular/router';
5
+ import { Router, RouterOutlet, provideRouter, ActivatedRoute, NavigationStart, 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 i7 from '@angular/material/button';
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, ReactiveFormsModule, ControlContainer, Validators, FormGroup } from '@angular/forms';
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 i5 from '@angular/material/menu';
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 i6 from '@angular/material/autocomplete';
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$1 from '@angular/material/input';
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 * as i3$1 from '@angular/material/card';
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: "20.2.3", ngImport: i0, type: BdbAlertComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
122
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.2.3", 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"] }] }); }
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: "20.2.3", ngImport: i0, type: BdbAlertComponent, decorators: [{
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: "20.2.3", ngImport: i0, type: BdbAlertErrorResponseComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
232
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.2.3", 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: i7.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"] }] }); }
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: "20.2.3", ngImport: i0, type: BdbAlertErrorResponseComponent, decorators: [{
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: "20.2.3", ngImport: i0, type: BdbErrorResponseDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
250
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.2.3", 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: i7.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"] }] }); }
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: "20.2.3", ngImport: i0, type: BdbErrorResponseDialogComponent, decorators: [{
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: "20.2.3", ngImport: i0, type: AccountService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
285
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: AccountService, providedIn: 'root' }); }
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: "20.2.3", ngImport: i0, type: AccountService, decorators: [{
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: "20.2.3", ngImport: i0, type: AuthService, deps: [{ token: AccountService }], target: i0.ɵɵFactoryTarget.Injectable }); }
417
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: AuthService, providedIn: 'root' }); }
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: "20.2.3", ngImport: i0, type: AuthService, decorators: [{
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: "20.2.3", ngImport: i0, type: AuthContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
445
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.2.3", 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"] }] }); }
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: "20.2.3", ngImport: i0, type: AuthContainerComponent, decorators: [{
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
@@ -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: "20.2.3", ngImport: i0, type: BdbFlexDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
717
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.2.3", type: BdbFlexDirective, isStandalone: true, selector: "[bdbFlex], [bdbFlexDirection], [bdbFlexGap], [bdbFlexSpacing]", inputs: { bdbFlex: "bdbFlex", bdbFlexDirection: "bdbFlexDirection", bdbFlexGap: "bdbFlexGap", bdbFlexSpacing: "bdbFlexSpacing" }, ngImport: i0 }); }
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: "20.2.3", ngImport: i0, type: BdbFlexDirective, decorators: [{
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: "20.2.3", ngImport: i0, type: BdbPaginatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
794
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.2.3", 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"] }] }); }
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: "20.2.3", ngImport: i0, type: BdbPaginatorComponent, decorators: [{
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 DynamicPipe {
804
- constructor(injector) {
805
- this.injector = injector;
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
- transform(value, requiredPipe, pipeArgs) {
808
- const injector = Injector.create({
809
- name: 'DynamicPipe',
810
- parent: this.injector,
811
- providers: [{ provide: requiredPipe }],
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
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: DynamicPipe, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Pipe }); }
817
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.2.3", ngImport: i0, type: DynamicPipe, isStandalone: true, name: "dynamicPipe" }); }
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: "20.2.3", ngImport: i0, type: BdbBooleanDisplayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
832
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.2.3", 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: CommonModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
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: "20.2.3", ngImport: i0, type: BdbBooleanDisplayComponent, decorators: [{
836
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbQueryInputComponent, decorators: [{
835
837
  type: Component,
836
- args: [{ selector: 'bdb-boolean-display', imports: [CommonModule, 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"] }]
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
- }], value: [{
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: "20.2.3", ngImport: i0, type: BdbCellDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }
850
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.2.3", type: BdbCellDirective, isStandalone: true, selector: "ng-template[bdbCellDef]", inputs: { bdbCellDef: "bdbCellDef" }, ngImport: i0 }); }
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: "20.2.3", ngImport: i0, type: BdbCellDirective, decorators: [{
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: "20.2.3", ngImport: i0, type: BdbTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
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 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$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: "20.2.3", ngImport: i0, type: BdbTableComponent, decorators: [{
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,
@@ -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 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=\"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 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=\"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
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: BdbFullTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1062
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.2.3", 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 }], 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"] }] }); }
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
- ngOnInit() {
1105
- if (this.control) {
1106
- this.formControl = this.control;
1107
- return;
1108
- }
1109
- if (!this.controlName) {
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.formControl = ctrl;
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: "20.2.3", ngImport: i0, type: BdbSearchWrapperBaseComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1119
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.2.3", type: BdbSearchWrapperBaseComponent, isStandalone: true, selector: "ng-component", inputs: { controlName: "controlName", control: "control" }, ngImport: i0, template: '', isInline: true }); }
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: "20.2.3", ngImport: i0, type: BdbSearchWrapperBaseComponent, decorators: [{
1539
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbSearchInputComponent, decorators: [{
1122
1540
  type: Component,
1123
- args: [{ template: '', standalone: true }]
1124
- }], propDecorators: { controlName: [{
1125
- type: Input
1126
- }], control: [{
1127
- type: Input
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
- // Opzettelijk geen bdb prefix, aangezien dit een pure util is
1131
- // Daartoe in eerste instantie ook niet beschikbaar gesteld in public api
1132
- // Als hier wel reden toe is: heroverwegen bdb prefix toe te voegen
1133
- class FunctionPipe {
1134
- transform(value, fn) {
1135
- return fn(value);
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
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: FunctionPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
1138
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.2.3", ngImport: i0, type: FunctionPipe, isStandalone: true, name: "function" }); }
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: "20.2.3", ngImport: i0, type: FunctionPipe, decorators: [{
1141
- type: Pipe,
1142
- args: [{
1143
- name: 'function',
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: "20.2.3", ngImport: i0, type: BdbFormErrorDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1$2.ControlContainer }], target: i0.ɵɵFactoryTarget.Directive }); }
1207
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.2.3", type: BdbFormErrorDirective, isStandalone: true, selector: "[bdbFormError]", inputs: { bdbFormError: "bdbFormError" }, ngImport: i0 }); }
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: "20.2.3", ngImport: i0, type: BdbFormErrorDirective, decorators: [{
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: "20.2.3", ngImport: i0, type: BdbSearchComponent, deps: [{ token: i1$2.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component }); }
1322
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.2.3", 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 }, { propertyName: "clearButton", first: true, predicate: ["clearButton"], descendants: true }, { propertyName: "autoCompleteTrigger", first: true, predicate: MatAutocompleteTrigger, descendants: 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()\" color=\"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) {\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$1.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: i6.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: i6.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i6.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: i7.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" }] }); }
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()\" color=\"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: "20.2.3", ngImport: i0, type: BdbSearchComponent, decorators: [{
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()\" color=\"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) {\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"] }]
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()\" color=\"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: "20.2.3", ngImport: i0, type: BdbColumnBuilder, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1450
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: BdbColumnBuilder, providedIn: 'root' }); }
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: "20.2.3", ngImport: i0, type: BdbColumnBuilder, decorators: [{
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: "20.2.3", ngImport: i0, type: ExceptionLogTableComponent, deps: [{ token: BdbColumnBuilder }, { token: i2$3.Router }, { token: i2$3.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
1487
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.2.3", 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: "ngmodule", type: CommonModule }, { kind: "component", type: BdbTableComponent, selector: "bdb-table[dataSource]", inputs: ["columns", "dataSource", "autoLoad", "displayedColumns", "contextActions", "selection", "selectOnRowClick", "selectedRowClass", "isClickable", "rowColor"], outputs: ["rowClick", "contextAction"] }] }); }
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: "20.2.3", ngImport: i0, type: ExceptionLogTableComponent, decorators: [{
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: [CommonModule, 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" }]
1492
- }], ctorParameters: () => [{ type: BdbColumnBuilder }, { type: i2$3.Router }, { type: i2$3.ActivatedRoute }], propDecorators: { dataSource: [{
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: "20.2.3", ngImport: i0, type: FileSizePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
1514
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.2.3", ngImport: i0, type: FileSizePipe, isStandalone: true, name: "fileSize" }); }
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: "20.2.3", ngImport: i0, type: FileSizePipe, decorators: [{
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: "20.2.3", ngImport: i0, type: BdbYoutubePlayerComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
1541
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.2.3", type: BdbYoutubePlayerComponent, isStandalone: true, selector: "bdb-youtube-player", inputs: { videoId: "videoId" }, viewQueries: [{ propertyName: "youTubePlayer", first: true, predicate: ["youTubePlayer"], descendants: 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"] }] }); }
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: "20.2.3", ngImport: i0, type: BdbYoutubePlayerComponent, decorators: [{
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: "20.2.3", ngImport: i0, type: MediaTypeIconPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
1579
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.2.3", ngImport: i0, type: MediaTypeIconPipe, isStandalone: true, name: "mediaTypeIcon" }); }
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: "20.2.3", ngImport: i0, type: MediaTypeIconPipe, decorators: [{
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: "20.2.3", ngImport: i0, type: BdbMediaDisplayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1653
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.2.3", 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 (media) {\r\n @if (hasError) {\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 <ng-container *ngTemplateOutlet=\"underlay\"></ng-container>\r\n }\r\n}\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: i7.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" }] }); }
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: "20.2.3", ngImport: i0, type: BdbMediaDisplayComponent, decorators: [{
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 @if (hasError) {\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 <ng-container *ngTemplateOutlet=\"underlay\"></ng-container>\r\n }\r\n}\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"] }]
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: "20.2.3", ngImport: i0, type: MediaTypePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
1690
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.2.3", ngImport: i0, type: MediaTypePipe, isStandalone: true, name: "mediaType" }); }
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: "20.2.3", ngImport: i0, type: MediaTypePipe, decorators: [{
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: "20.2.3", ngImport: i0, type: MediaFullTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1710
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.2.3", 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 }] }); }
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: "20.2.3", ngImport: i0, type: MediaFullTableComponent, decorators: [{
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: "20.2.3", ngImport: i0, type: MediaService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1761
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: MediaService, providedIn: 'root' }); }
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: "20.2.3", ngImport: i0, type: MediaService, decorators: [{
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: "20.2.3", ngImport: i0, type: MediaDropDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
1840
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.2.3", 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 }); }
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: "20.2.3", ngImport: i0, type: MediaDropDirective, decorators: [{
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
- if (this.nativeInputFile) {
1902
- this.nativeInputFile.nativeElement.click();
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: "20.2.3", ngImport: i0, type: BdbMediaUploadComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1918
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.2.3", 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 }], 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"] }] }); }
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: "20.2.3", ngImport: i0, type: BdbMediaUploadComponent, decorators: [{
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: "20.2.3", ngImport: i0, type: BdbMediaInputComponent, deps: [{ token: i1$2.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component }); }
2068
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.2.3", 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: i7.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"] }] }); }
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: "20.2.3", ngImport: i0, type: BdbMediaInputComponent, decorators: [{
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: "20.2.3", ngImport: i0, type: MediaTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2110
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.2.3", 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: "ngmodule", type: CommonModule }, { kind: "component", type: BdbTableComponent, selector: "bdb-table[dataSource]", inputs: ["columns", "dataSource", "autoLoad", "displayedColumns", "contextActions", "selection", "selectOnRowClick", "selectedRowClass", "isClickable", "rowColor"], outputs: ["rowClick", "contextAction"] }] }); }
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: "20.2.3", ngImport: i0, type: MediaTableComponent, decorators: [{
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: [CommonModule, 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" }]
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: "20.2.3", ngImport: i0, type: TaskLogOutcomePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
2151
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.2.3", ngImport: i0, type: TaskLogOutcomePipe, isStandalone: true, name: "taskLogOutcome" }); }
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: "20.2.3", ngImport: i0, type: TaskLogOutcomePipe, decorators: [{
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: "20.2.3", ngImport: i0, type: TaskLogStatusPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
2183
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.2.3", ngImport: i0, type: TaskLogStatusPipe, isStandalone: true, name: "taskLogStatus" }); }
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: "20.2.3", ngImport: i0, type: TaskLogStatusPipe, decorators: [{
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: "20.2.3", ngImport: i0, type: TaskLogParameterValuePipe, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Pipe }); }
2234
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.2.3", ngImport: i0, type: TaskLogParameterValuePipe, isStandalone: true, name: "taskLogParameterValue" }); }
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: "20.2.3", ngImport: i0, type: TaskLogParameterValuePipe, decorators: [{
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: "20.2.3", ngImport: i0, type: UserTableComponent, deps: [{ token: i1$1.MatDialog }, { token: BdbColumnBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
2292
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.2.3", 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: "ngmodule", type: CommonModule }, { 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"] }] }); }
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: "20.2.3", ngImport: i0, type: UserTableComponent, decorators: [{
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: [CommonModule, 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" }]
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: "20.2.3", ngImport: i0, type: BdbFlexChildDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
2317
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.2.3", type: BdbFlexChildDirective, isStandalone: true, selector: "[bdbFlexChild]", inputs: { bdbFlexChild: "bdbFlexChild" }, ngImport: i0 }); }
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: "20.2.3", ngImport: i0, type: BdbFlexChildDirective, decorators: [{
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: "20.2.3", ngImport: i0, type: BdbGridChildDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
2444
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.2.3", type: BdbGridChildDirective, isStandalone: true, selector: "[bdbGridChild], [bdbGridColumn], [bdbGridRow]", inputs: { bdbGridChild: "bdbGridChild", bdbGridRow: "bdbGridRow", bdbGridColumn: "bdbGridColumn" }, ngImport: i0 }); }
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: "20.2.3", ngImport: i0, type: BdbGridChildDirective, decorators: [{
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: "20.2.3", ngImport: i0, type: BdbGridDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
2546
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.2.3", type: BdbGridDirective, isStandalone: true, selector: "[bdbGrid], [bdbGridColumns], [bdbGridRows], [bdbGridGap]", inputs: { bdbGrid: "bdbGrid", bdbGridColumns: "bdbGridColumns", bdbGridRows: "bdbGridRows", bdbGridGap: "bdbGridGap" }, ngImport: i0 }); }
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: "20.2.3", ngImport: i0, type: BdbGridDirective, decorators: [{
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: "20.2.3", ngImport: i0, type: BdbCollapseRowComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2574
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.2.3", 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"] }] }); }
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: "20.2.3", ngImport: i0, type: BdbCollapseRowComponent, decorators: [{
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: "20.2.3", ngImport: i0, type: BdbFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2597
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.2.3", 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"], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
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: "20.2.3", ngImport: i0, type: BdbFieldComponent, decorators: [{
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: [CommonModule], 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"] }]
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: "20.2.3", ngImport: i0, type: PlainNumberPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
2616
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.2.3", ngImport: i0, type: PlainNumberPipe, isStandalone: true, name: "bdbPlainNumber" }); }
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: "20.2.3", ngImport: i0, type: PlainNumberPipe, decorators: [{
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,192 @@ 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 persistance 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.defaultPageSize = 25;
3178
+ this.defaultPage = 0;
3179
+ this.defaultSortField = 'id';
3180
+ this.defaultSortDirection = 'desc';
3181
+ this.requestSubject = new Subject();
3182
+ this.request$ = this.requestSubject.asObservable();
3183
+ this.responseSubject = new BehaviorSubject(undefined);
3184
+ this.response$ = this.responseSubject.asObservable();
3185
+ this._loading = signal(false, ...(ngDevMode ? [{ debugName: "_loading" }] : []));
3186
+ this.loading = this._loading.asReadonly();
3187
+ this._error = signal(undefined, ...(ngDevMode ? [{ debugName: "_error" }] : []));
3188
+ this.error = this._error.asReadonly();
3189
+ this.request$
3190
+ .pipe(tap$1(() => {
3191
+ this._loading.set(true);
3192
+ this._error.set(undefined);
3193
+ }), switchMap((x) => this.loadMethod(x).pipe(catchError$1((err) => {
3194
+ this._error.set(err);
3195
+ return of({ page: 0, count: 0, rows: [], pageSize: 15 });
3196
+ }), tap$1(response => {
3197
+ this.responseSubject.next(response);
3198
+ }), finalize(() => this._loading.set(false)))))
3199
+ .subscribe();
3200
+ }
3201
+ disconnect() {
3202
+ return;
3203
+ }
3204
+ // Connects the data source to the table.
3205
+ connect() {
3206
+ return this.responseSubject.asObservable().pipe(map(x => x?.rows ?? []));
3207
+ }
3208
+ load() {
3209
+ this.requestSubject.next(this.createRequest());
3210
+ }
3211
+ // Can be overriden in a child class to create a custom request.
3212
+ createRequest() {
3213
+ const filters = this.createFilters();
3214
+ return {
3215
+ page: this.page ?? this.defaultPage,
3216
+ pageSize: this.pageSize ?? this.defaultPageSize,
3217
+ sortField: this.sortField ?? this.defaultSortField,
3218
+ sortDirection: this.sortDirection ?? this.defaultSortDirection,
3219
+ query: this.query,
3220
+ filter: this.combineFilters(filters),
3221
+ };
3222
+ }
3223
+ // if an identifier is set, this method sets up persistence of the datasource state in query params
3224
+ setPersistence() {
3225
+ // READ
3226
+ if (this._persistenceRead) {
3227
+ this._persistenceRead.unsubscribe();
3228
+ this._persistenceRead = undefined;
3229
+ }
3230
+ if (this.identifier !== undefined) {
3231
+ const identifier = this.identifier;
3232
+ this._persistenceRead = merge(
3233
+ // 0 is the initial load of a datasource state, not a popstate event
3234
+ of(0), this.router.events.pipe(takeUntilDestroyed(this.destroyRef), filter$1(x => x instanceof NavigationStart && x.navigationTrigger === 'popstate'))).subscribe({
3235
+ next: () => {
3236
+ const stateString = this.route.snapshot.queryParams[identifier];
3237
+ let state = {};
3238
+ try {
3239
+ state = JSON.parse(stateString ?? '{}', (k, v) => this.reviveDates(k, v));
3240
+ }
3241
+ catch (e) {
3242
+ console.log('Unable to parse state from query parameters');
3243
+ this.router.navigate([], {
3244
+ relativeTo: this.route,
3245
+ queryParams: {
3246
+ [identifier]: undefined,
3247
+ },
3248
+ queryParamsHandling: 'merge',
3249
+ });
3250
+ }
3251
+ if (this.isCurrentState(state)) {
3252
+ return;
3253
+ }
3254
+ this.state = state;
3255
+ this.load();
3256
+ },
3257
+ });
3258
+ //WRITE
3259
+ if (this._persistenceWrite) {
3260
+ this._persistenceWrite.unsubscribe();
3261
+ this._persistenceWrite = undefined;
3262
+ }
3263
+ this.request$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe({
3264
+ next: () => {
3265
+ let stateString = JSON.stringify(this.state);
3266
+ stateString = stateString === '{}' ? undefined : stateString;
3267
+ const qp = {};
3268
+ qp[this.identifier] = stateString;
3269
+ this.router.navigate([], {
3270
+ relativeTo: this.route,
3271
+ replaceUrl: false,
3272
+ queryParams: qp,
3273
+ queryParamsHandling: 'merge',
3274
+ });
3275
+ },
3276
+ });
3277
+ }
3278
+ }
3279
+ // Can be overriden in a child class to create filters based on external elements (e.g. input fields).
3280
+ createFilters() {
3281
+ return undefined;
3282
+ }
3283
+ // Combines filters into a single filter.
3284
+ combineFilters(filters, combine = 'And') {
3285
+ if (!filters || filters.length === 0) {
3286
+ return undefined;
3287
+ }
3288
+ if (filters.length === 1) {
3289
+ return filters[0];
3290
+ }
3291
+ return {
3292
+ type: 'Group',
3293
+ combine: combine,
3294
+ filters: filters,
3295
+ };
3296
+ }
3297
+ //todo: https://angular.dev/guide/signals#signal-equality-functions?
3298
+ arrayEquals(first, second) {
3299
+ if (!first || !second) {
3300
+ return false;
3301
+ }
3302
+ return (first.length === second.length && first.every(firstValue => second.some(secondValue => secondValue == firstValue)));
3303
+ }
3304
+ // JSON.stringify automatically converts Date objects to ISO strings
3305
+ // JSON.parse does _not_ automaticaly convert so we need to convert them back to Date here
3306
+ reviveDates(key, value) {
3307
+ if (typeof value === 'string') {
3308
+ if (/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}/.test(value)) {
3309
+ return parseISO(value);
3310
+ }
3311
+ }
3312
+ return value;
3313
+ }
3314
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbDataSourceV2, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
3315
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbDataSourceV2 }); }
3316
+ }
3317
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbDataSourceV2, decorators: [{
3318
+ type: Injectable
3319
+ }], ctorParameters: () => [] });
3320
+
2626
3321
  class BdbServiceCR extends BdbServiceR {
2627
3322
  create(createModel) {
2628
3323
  return this.httpClient.post(this.baseUrl, createModel);
@@ -2663,10 +3358,10 @@ class ExceptionLogService extends BdbServiceR {
2663
3358
  constructor() {
2664
3359
  super('exception-log');
2665
3360
  }
2666
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: ExceptionLogService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2667
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: ExceptionLogService, providedIn: 'root' }); }
3361
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: ExceptionLogService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
3362
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: ExceptionLogService, providedIn: 'root' }); }
2668
3363
  }
2669
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: ExceptionLogService, decorators: [{
3364
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: ExceptionLogService, decorators: [{
2670
3365
  type: Injectable,
2671
3366
  args: [{
2672
3367
  providedIn: 'root',
@@ -2677,10 +3372,10 @@ class RoleService extends BdbServiceR {
2677
3372
  constructor() {
2678
3373
  super('role');
2679
3374
  }
2680
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: RoleService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2681
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: RoleService, providedIn: 'root' }); }
3375
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: RoleService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
3376
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: RoleService, providedIn: 'root' }); }
2682
3377
  }
2683
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: RoleService, decorators: [{
3378
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: RoleService, decorators: [{
2684
3379
  type: Injectable,
2685
3380
  args: [{
2686
3381
  providedIn: 'root',
@@ -2694,10 +3389,10 @@ class TaskLogService extends BdbServiceCR {
2694
3389
  start(id) {
2695
3390
  return this.httpClient.post(`${this.baseUrl}/start`, { id });
2696
3391
  }
2697
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: TaskLogService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2698
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: TaskLogService, providedIn: 'root' }); }
3392
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: TaskLogService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
3393
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: TaskLogService, providedIn: 'root' }); }
2699
3394
  }
2700
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: TaskLogService, decorators: [{
3395
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: TaskLogService, decorators: [{
2701
3396
  type: Injectable,
2702
3397
  args: [{
2703
3398
  providedIn: 'root',
@@ -2708,10 +3403,10 @@ class TaskLogParameterService extends BdbServiceR {
2708
3403
  constructor() {
2709
3404
  super('task-log-parameter');
2710
3405
  }
2711
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: TaskLogParameterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2712
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: TaskLogParameterService, providedIn: 'root' }); }
3406
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: TaskLogParameterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
3407
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: TaskLogParameterService, providedIn: 'root' }); }
2713
3408
  }
2714
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: TaskLogParameterService, decorators: [{
3409
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: TaskLogParameterService, decorators: [{
2715
3410
  type: Injectable,
2716
3411
  args: [{
2717
3412
  providedIn: 'root',
@@ -2722,10 +3417,10 @@ class TaskLogScheduleService extends BdbServiceCRUD {
2722
3417
  constructor() {
2723
3418
  super('task-log-schedule');
2724
3419
  }
2725
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: TaskLogScheduleService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2726
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: TaskLogScheduleService, providedIn: 'root' }); }
3420
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: TaskLogScheduleService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
3421
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: TaskLogScheduleService, providedIn: 'root' }); }
2727
3422
  }
2728
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: TaskLogScheduleService, decorators: [{
3423
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: TaskLogScheduleService, decorators: [{
2729
3424
  type: Injectable,
2730
3425
  args: [{
2731
3426
  providedIn: 'root',
@@ -2736,10 +3431,10 @@ class UserService extends BdbServiceCRUD {
2736
3431
  constructor() {
2737
3432
  super('user');
2738
3433
  }
2739
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: UserService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2740
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: UserService, providedIn: 'root' }); }
3434
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: UserService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
3435
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: UserService, providedIn: 'root' }); }
2741
3436
  }
2742
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: UserService, decorators: [{
3437
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: UserService, decorators: [{
2743
3438
  type: Injectable,
2744
3439
  args: [{
2745
3440
  providedIn: 'root',
@@ -2750,10 +3445,10 @@ class UserRoleService extends BdbServiceCRD {
2750
3445
  constructor() {
2751
3446
  super('user-role');
2752
3447
  }
2753
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: UserRoleService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2754
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: UserRoleService, providedIn: 'root' }); }
3448
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: UserRoleService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
3449
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: UserRoleService, providedIn: 'root' }); }
2755
3450
  }
2756
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: UserRoleService, decorators: [{
3451
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: UserRoleService, decorators: [{
2757
3452
  type: Injectable,
2758
3453
  args: [{
2759
3454
  providedIn: 'root',
@@ -2773,10 +3468,10 @@ class TaskLogSchedulerService extends BdbService {
2773
3468
  stopScheduler() {
2774
3469
  return this.httpClient.get(`${this.baseUrl}/stop`);
2775
3470
  }
2776
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: TaskLogSchedulerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2777
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: TaskLogSchedulerService, providedIn: 'root' }); }
3471
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: TaskLogSchedulerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
3472
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: TaskLogSchedulerService, providedIn: 'root' }); }
2778
3473
  }
2779
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: TaskLogSchedulerService, decorators: [{
3474
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: TaskLogSchedulerService, decorators: [{
2780
3475
  type: Injectable,
2781
3476
  args: [{
2782
3477
  providedIn: 'root',
@@ -2812,16 +3507,120 @@ class TaskLogTypeService extends BdbService {
2812
3507
  }
2813
3508
  return of(null);
2814
3509
  }
2815
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: TaskLogTypeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2816
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: TaskLogTypeService, providedIn: 'root' }); }
3510
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: TaskLogTypeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
3511
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: TaskLogTypeService, providedIn: 'root' }); }
2817
3512
  }
2818
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: TaskLogTypeService, decorators: [{
3513
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: TaskLogTypeService, decorators: [{
2819
3514
  type: Injectable,
2820
3515
  args: [{
2821
3516
  providedIn: 'root',
2822
3517
  }]
2823
3518
  }], ctorParameters: () => [] });
2824
3519
 
3520
+ class BdbAppLayoutComponent {
3521
+ constructor() {
3522
+ this.modules = input([], ...(ngDevMode ? [{ debugName: "modules" }] : []));
3523
+ this.appTitle = input('', ...(ngDevMode ? [{ debugName: "appTitle" }] : []));
3524
+ this.version = input('', ...(ngDevMode ? [{ debugName: "version" }] : []));
3525
+ this.opened = true;
3526
+ this.sidenavMode = 'side';
3527
+ this.isHandset = signal(false, ...(ngDevMode ? [{ debugName: "isHandset" }] : []));
3528
+ this.authService = inject(AuthService);
3529
+ this.changeDetectorRef = inject(ChangeDetectorRef);
3530
+ this.breakpointObserver = inject(BreakpointObserver);
3531
+ this.bdbOptions = inject(BDB_OPTIONS);
3532
+ this.logoutRoutePath = this.bdbOptions.authOptions?.logoutPath ?? 'logout';
3533
+ this.appToolbar = viewChild.required('appToolbar', { read: ElementRef });
3534
+ this.appToolbarHeight = 64;
3535
+ effect(() => {
3536
+ if (this.isHandset()) {
3537
+ this.sidenavMode = 'over';
3538
+ this.opened = false;
3539
+ }
3540
+ else {
3541
+ this.sidenavMode = 'side';
3542
+ this.opened = true;
3543
+ }
3544
+ });
3545
+ }
3546
+ ngAfterViewInit() {
3547
+ this.setAppToolbarHeight();
3548
+ this.breakpointObserver.observe([Breakpoints.Handset]).subscribe(result => {
3549
+ this.isHandset.set(result.matches);
3550
+ this.setAppToolbarHeight();
3551
+ });
3552
+ this.changeDetectorRef.detectChanges();
3553
+ }
3554
+ setAppToolbarHeight() {
3555
+ this.appToolbarHeight = this.appToolbar().nativeElement.offsetHeight;
3556
+ }
3557
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbAppLayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3558
+ 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" }] }); }
3559
+ }
3560
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbAppLayoutComponent, decorators: [{
3561
+ type: Component,
3562
+ args: [{ selector: 'bdb-app-layout', imports: [
3563
+ RouterModule,
3564
+ NgTemplateOutlet,
3565
+ MatToolbar,
3566
+ MatButtonModule,
3567
+ MatSidenavModule,
3568
+ MatIconModule,
3569
+ MatMenuModule,
3570
+ MatListModule,
3571
+ MatDividerModule,
3572
+ AsyncPipe,
3573
+ ], 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"] }]
3574
+ }], 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 }] }] } });
3575
+
3576
+ function BdbEntityResolver(service) {
3577
+ return (route) => {
3578
+ const id = +route.params['id'];
3579
+ const router = inject(Router);
3580
+ return inject(service)
3581
+ .get(id)
3582
+ .pipe(catchError$1(e => {
3583
+ router.navigate(['/', 'niet-gevonden'], {
3584
+ queryParams: { type: `${typeof service}`, id: id },
3585
+ });
3586
+ throw e;
3587
+ }));
3588
+ };
3589
+ }
3590
+
3591
+ class BdbNavListComponent {
3592
+ constructor() {
3593
+ this.routes = input([], ...(ngDevMode ? [{ debugName: "routes" }] : []));
3594
+ this.parentRoute = input(...(ngDevMode ? [undefined, { debugName: "parentRoute" }] : []));
3595
+ }
3596
+ getRouterLink(route) {
3597
+ if (this.parentRoute) {
3598
+ return ['/', this.parentRoute()?.path ?? '', route.path ?? ''];
3599
+ }
3600
+ else {
3601
+ return [route.path ?? ''];
3602
+ }
3603
+ }
3604
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbNavListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3605
+ 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"] }] }); }
3606
+ }
3607
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbNavListComponent, decorators: [{
3608
+ type: Component,
3609
+ 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"] }]
3610
+ }], propDecorators: { routes: [{ type: i0.Input, args: [{ isSignal: true, alias: "routes", required: false }] }], parentRoute: [{ type: i0.Input, args: [{ isSignal: true, alias: "parentRoute", required: false }] }] } });
3611
+
3612
+ class BdbPageHeaderComponent {
3613
+ constructor() {
3614
+ this.pageTitle = input('', ...(ngDevMode ? [{ debugName: "pageTitle" }] : []));
3615
+ }
3616
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbPageHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3617
+ 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"] }] }); }
3618
+ }
3619
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BdbPageHeaderComponent, decorators: [{
3620
+ type: Component,
3621
+ 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"] }]
3622
+ }], propDecorators: { pageTitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "pageTitle", required: false }] }] } });
3623
+
2825
3624
  class AccessDeniedPageComponent {
2826
3625
  constructor(bdbOptions, authService) {
2827
3626
  this.authService = authService;
@@ -2839,19 +3638,18 @@ class AccessDeniedPageComponent {
2839
3638
  this._onDestroy.next();
2840
3639
  this._onDestroy.complete();
2841
3640
  }
2842
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: AccessDeniedPageComponent, deps: [{ token: BDB_OPTIONS }, { token: AuthService }], target: i0.ɵɵFactoryTarget.Component }); }
2843
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.2.3", 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 color=\"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: CommonModule }, { kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i3$1.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i3$1.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i3$1.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i3$1.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i3$1.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: i7.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"] }] }); }
3641
+ 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 }); }
3642
+ 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 color=\"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
3643
  }
2845
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: AccessDeniedPageComponent, decorators: [{
3644
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: AccessDeniedPageComponent, decorators: [{
2846
3645
  type: Component,
2847
3646
  args: [{ selector: 'bdb-access-denied-page', imports: [
2848
- CommonModule,
2849
3647
  MatCardModule,
2850
3648
  BdbAlertComponent,
2851
3649
  MatButtonModule,
2852
3650
  RouterLink,
2853
3651
  MatIconModule,
2854
- BdbFlexDirective,
3652
+ BdbFlexDirective
2855
3653
  ], 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 color=\"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
3654
  }], ctorParameters: () => [{ type: undefined, decorators: [{
2857
3655
  type: Inject,
@@ -2895,13 +3693,12 @@ class ForgotPasswordPageComponent {
2895
3693
  },
2896
3694
  });
2897
3695
  }
2898
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: ForgotPasswordPageComponent, deps: [{ token: AuthService }, { token: BDB_OPTIONS }], target: i0.ɵɵFactoryTarget.Component }); }
2899
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.2.3", 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 color=\"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 color=\"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: CommonModule }, { 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],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$1.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i3$1.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i3$1.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i3$1.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i3$1.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$1.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: i7.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"] }] }); }
3696
+ 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 }); }
3697
+ 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 color=\"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 color=\"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
3698
  }
2901
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: ForgotPasswordPageComponent, decorators: [{
3699
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: ForgotPasswordPageComponent, decorators: [{
2902
3700
  type: Component,
2903
3701
  args: [{ selector: 'bdb-forgot-password-page', imports: [
2904
- CommonModule,
2905
3702
  ReactiveFormsModule,
2906
3703
  MatCardModule,
2907
3704
  MatFormFieldModule,
@@ -2910,7 +3707,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.3", ngImpor
2910
3707
  RouterLink,
2911
3708
  BdbAlertErrorResponseComponent,
2912
3709
  BdbAlertComponent,
2913
- MatButtonModule,
3710
+ MatButtonModule
2914
3711
  ], 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 color=\"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 color=\"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
3712
  }], ctorParameters: () => [{ type: AuthService }, { type: undefined, decorators: [{
2916
3713
  type: Inject,
@@ -2926,12 +3723,12 @@ class InvalidTokenPageComponent {
2926
3723
  constructor(bdbOptions) {
2927
3724
  this.loginRoutePath = bdbOptions.authOptions?.loginPath;
2928
3725
  }
2929
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: InvalidTokenPageComponent, deps: [{ token: BDB_OPTIONS }], target: i0.ɵɵFactoryTarget.Component }); }
2930
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.2.3", 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 color=\"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: CommonModule }, { kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i3$1.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i3$1.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i3$1.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i3$1.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i3$1.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: i7.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"] }] }); }
3726
+ 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 }); }
3727
+ 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 color=\"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
3728
  }
2932
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: InvalidTokenPageComponent, decorators: [{
3729
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: InvalidTokenPageComponent, decorators: [{
2933
3730
  type: Component,
2934
- args: [{ selector: 'bdb-invalid-token-page', imports: [CommonModule, 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 color=\"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"] }]
3731
+ 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 color=\"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
3732
  }], ctorParameters: () => [{ type: undefined, decorators: [{
2936
3733
  type: Inject,
2937
3734
  args: [BDB_OPTIONS]
@@ -2987,13 +3784,12 @@ class LoginPageComponent {
2987
3784
  },
2988
3785
  });
2989
3786
  }
2990
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: LoginPageComponent, deps: [{ token: i2$3.Router }, { token: AuthService }, { token: i2$3.ActivatedRoute }, { token: BDB_OPTIONS }], target: i0.ɵɵFactoryTarget.Component }); }
2991
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.2.3", 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 color=\"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: CommonModule }, { 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],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$1.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: i7.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$1.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i3$1.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i3$1.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i3$1.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i3$1.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"] }] }); }
3787
+ 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 }); }
3788
+ 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 color=\"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
3789
  }
2993
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: LoginPageComponent, decorators: [{
3790
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: LoginPageComponent, decorators: [{
2994
3791
  type: Component,
2995
3792
  args: [{ selector: 'bdb-login-page', imports: [
2996
- CommonModule,
2997
3793
  ReactiveFormsModule,
2998
3794
  MatFormFieldModule,
2999
3795
  MatInputModule,
@@ -3003,9 +3799,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.3", ngImpor
3003
3799
  MatCardModule,
3004
3800
  BdbAlertErrorResponseComponent,
3005
3801
  BdbFlexDirective,
3006
- BdbFormErrorDirective,
3802
+ BdbFormErrorDirective
3007
3803
  ], 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 color=\"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"] }]
3008
- }], ctorParameters: () => [{ type: i2$3.Router }, { type: AuthService }, { type: i2$3.ActivatedRoute }, { type: undefined, decorators: [{
3804
+ }], ctorParameters: () => [{ type: i2$4.Router }, { type: AuthService }, { type: i2$4.ActivatedRoute }, { type: undefined, decorators: [{
3009
3805
  type: Inject,
3010
3806
  args: [BDB_OPTIONS]
3011
3807
  }] }] });
@@ -3025,13 +3821,13 @@ class LogoutPageComponent {
3025
3821
  this.authService.logout();
3026
3822
  this.router.navigate(['/', this.bdbOptions.authOptions?.loginPath]);
3027
3823
  }
3028
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: LogoutPageComponent, deps: [{ token: i2$3.Router }, { token: AuthService }, { token: BDB_OPTIONS }], target: i0.ɵɵFactoryTarget.Component }); }
3029
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.2.3", 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 color=\"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$1.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i3$1.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i3$1.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i3$1.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i3$1.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i7.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"] }] }); }
3824
+ 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 }); }
3825
+ 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 color=\"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
3826
  }
3031
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: LogoutPageComponent, decorators: [{
3827
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: LogoutPageComponent, decorators: [{
3032
3828
  type: Component,
3033
3829
  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 color=\"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"] }]
3034
- }], ctorParameters: () => [{ type: i2$3.Router }, { type: AuthService }, { type: undefined, decorators: [{
3830
+ }], ctorParameters: () => [{ type: i2$4.Router }, { type: AuthService }, { type: undefined, decorators: [{
3035
3831
  type: Inject,
3036
3832
  args: [BDB_OPTIONS]
3037
3833
  }] }] });
@@ -3104,10 +3900,10 @@ class ResetPasswordPageComponent {
3104
3900
  },
3105
3901
  });
3106
3902
  }
3107
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: ResetPasswordPageComponent, deps: [{ token: AuthService }, { token: i2$3.ActivatedRoute }, { token: i2$3.Router }, { token: BDB_OPTIONS }], target: i0.ɵɵFactoryTarget.Component }); }
3108
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.2.3", 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 color=\"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],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$1.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i3$1.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i3$1.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i3$1.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i3$1.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$1.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: i7.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"] }] }); }
3903
+ 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 }); }
3904
+ 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 color=\"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
3905
  }
3110
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: ResetPasswordPageComponent, decorators: [{
3906
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: ResetPasswordPageComponent, decorators: [{
3111
3907
  type: Component,
3112
3908
  args: [{ selector: 'bdb-reset-password-page', imports: [
3113
3909
  ReactiveFormsModule,
@@ -3119,7 +3915,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.3", ngImpor
3119
3915
  RouterLink,
3120
3916
  MatButtonModule,
3121
3917
  ], 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 color=\"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"] }]
3122
- }], ctorParameters: () => [{ type: AuthService }, { type: i2$3.ActivatedRoute }, { type: i2$3.Router }, { type: undefined, decorators: [{
3918
+ }], ctorParameters: () => [{ type: AuthService }, { type: i2$4.ActivatedRoute }, { type: i2$4.Router }, { type: undefined, decorators: [{
3123
3919
  type: Inject,
3124
3920
  args: [BDB_OPTIONS]
3125
3921
  }] }] });
@@ -3134,5 +3930,5 @@ var resetPasswordPage_component = /*#__PURE__*/Object.freeze({
3134
3930
  * Generated bundle index. Do not edit.
3135
3931
  */
3136
3932
 
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 };
3933
+ 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
3934
  //# sourceMappingURL=devopmaat-badaboom.mjs.map