@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.
@@ -11,7 +11,7 @@
11
11
  @if mat.get-theme-type($theme) == dark {
12
12
  --bdb-field-container-color: var(--mat-sys-surface-container);
13
13
  } @else {
14
- --bdb-field-container-color: var(--mat-sys-surface-container-low);
14
+ --bdb-field-container-color: var(--mat-sys-surface-container-high);
15
15
  }
16
16
  }
17
17
 
@@ -1,6 +1,7 @@
1
1
  @use 'sass:map';
2
2
  @use 'sass:meta';
3
3
  @use 'sass:list';
4
+ @use 'sass:color';
4
5
  @use '@angular/material' as mat;
5
6
 
6
7
  $material-palettes: 'primary', 'secondary', 'tertiary', 'error';
@@ -96,3 +97,24 @@ $hues: 0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 95, 98, 100;
96
97
  }
97
98
  @return var(#{$prefix}-on-#{$palette-name});
98
99
  }
100
+
101
+ @function createPalette($color) {
102
+ @return (
103
+ 0: #000000,
104
+ 10: color.scale($color, $lightness: - (calc(100% / 40) * 30)),
105
+ 20: color.scale($color, $lightness: - (calc(100% / 40) * 20)),
106
+ 25: color.scale($color, $lightness: - (calc(100% / 40) * 15)),
107
+ 30: color.scale($color, $lightness: - (calc(100% / 40) * 10)),
108
+ 35: color.scale($color, $lightness: - (calc(100% / 40) * 5)),
109
+ 40: $color,
110
+ 50: color.scale($color, $lightness: calc((100% / 60) * 10)),
111
+ 60: color.scale($color, $lightness: calc((100% / 60) * 20)),
112
+ 70: color.scale($color, $lightness: calc((100% / 60) * 30)),
113
+ 80: color.scale($color, $lightness: calc((100% / 60) * 40)),
114
+ 90: color.scale($color, $lightness: calc((100% / 60) * 50)),
115
+ 95: color.scale($color, $lightness: calc((100% / 60) * 55)),
116
+ 98: color.scale($color, $lightness: calc((100% / 60) * 58)),
117
+ 99: color.scale($color, $lightness: calc((100% / 60) * 59)),
118
+ 100: #ffffff
119
+ );
120
+ }
@@ -8,6 +8,7 @@
8
8
  @use './material/checkbox-theme';
9
9
  @use './material/chips-theme';
10
10
  @use './material/datepicker-theme';
11
+ @use './material/dialog-theme';
11
12
  @use './material/fab-theme';
12
13
  @use './material/form-field-theme';
13
14
  @use './material/icon-button-theme';
@@ -75,6 +76,7 @@
75
76
  @include checkbox-theme.theme($bdb-theme);
76
77
  @include chips-theme.theme($bdb-theme);
77
78
  @include datepicker-theme.theme($bdb-theme);
79
+ @include dialog-theme.theme($bdb-theme);
78
80
  @include fab-theme.theme($bdb-theme);
79
81
  @include form-field-theme.theme($bdb-theme);
80
82
  @include icon-button-theme.theme($bdb-theme);
@@ -10,6 +10,7 @@
10
10
  @include mat.chips-overrides(
11
11
  (
12
12
  outline-color: $bg,
13
+ elevated-container-color: $bg,
13
14
  elevated-selected-container-color: $bg,
14
15
  selected-hover-state-layer-color: $bg,
15
16
  selected-focus-state-layer-color: $bg,
@@ -0,0 +1,25 @@
1
+ @use 'sass:map';
2
+ @use 'sass:list';
3
+ @use '@angular/material' as mat;
4
+ @use '../core-theme' as bdb;
5
+
6
+ @mixin color($theme) {
7
+ @include mat.dialog-overrides(
8
+ (
9
+ container-shape: 8px,
10
+ )
11
+ );
12
+ }
13
+
14
+ @mixin typography($theme) {
15
+ }
16
+
17
+ @mixin theme($theme) {
18
+ @if mat.theme-has($theme, color) {
19
+ @include color($theme);
20
+ }
21
+
22
+ @if mat.theme-has($theme, typography) {
23
+ @include typography($theme);
24
+ }
25
+ }
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@devopmaat/badaboom",
3
- "version": "1.3.13",
3
+ "version": "1.4.0",
4
4
  "peerDependencies": {
5
- "@angular/common": "^20.0.0",
6
- "@angular/core": "^20.0.0",
7
- "@angular/material": "^20.0.0",
8
- "@angular/youtube-player": "^20.0.0"
5
+ "@angular/common": "^21.1.0",
6
+ "@angular/core": "^21.1.0",
7
+ "@angular/material": "^21.1.0",
8
+ "@angular/youtube-player": "^21.1.0"
9
9
  },
10
10
  "dependencies": {
11
11
  "tslib": "^2.3.0"
@@ -14,7 +14,7 @@
14
14
  "exports": {
15
15
  ".": {
16
16
  "sass": "./_index.scss",
17
- "types": "./index.d.ts",
17
+ "types": "./types/devopmaat-badaboom.d.ts",
18
18
  "default": "./fesm2022/devopmaat-badaboom.mjs"
19
19
  },
20
20
  "./package.json": {
@@ -22,5 +22,5 @@
22
22
  }
23
23
  },
24
24
  "module": "fesm2022/devopmaat-badaboom.mjs",
25
- "typings": "index.d.ts"
25
+ "typings": "types/devopmaat-badaboom.d.ts"
26
26
  }
@@ -1,19 +1,20 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, EnvironmentProviders, TemplateRef, Type, PipeTransform, EventEmitter, QueryList, OnInit, OnDestroy, AfterViewInit, ElementRef, OnChanges, AfterContentInit, TrackByFunction, Renderer2 } from '@angular/core';
3
- import { Routes, Router, ActivatedRoute, CanActivateFn, ResolveFn } from '@angular/router';
2
+ import { InjectionToken, EnvironmentProviders, TemplateRef, Type, PipeTransform, EventEmitter, OnInit, OnDestroy, AfterViewInit, ElementRef, Signal, TrackByFunction, OnChanges, AfterContentInit, Renderer2, InputSignal, ChangeDetectorRef, ProviderToken } from '@angular/core';
3
+ import { Routes, Router, ActivatedRoute, Route, CanActivateFn, ResolveFn } from '@angular/router';
4
4
  import { DataSource, SelectionModel, CollectionViewer, ListRange } from '@angular/cdk/collections';
5
5
  import { Observable, BehaviorSubject, Subject } from 'rxjs';
6
6
  import { HttpClient, HttpErrorResponse, HttpInterceptorFn } from '@angular/common/http';
7
+ import { FormGroup, FormControl, ControlValueAccessor, NgControl, ControlContainer, AbstractControl, ValidatorFn } from '@angular/forms';
8
+ import { MatDialogRef, MatDialog } from '@angular/material/dialog';
9
+ import * as _devopmaat_badaboom from '@devopmaat/badaboom';
10
+ import { Sort } from '@angular/material/sort';
7
11
  import { PageEvent } from '@angular/material/paginator';
8
- import { FormControl, ControlContainer, ControlValueAccessor, NgControl, AbstractControl, FormGroup, ValidatorFn } from '@angular/forms';
9
- import { MatAutocompleteTrigger, MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';
12
+ import { MatAutocompleteSelectedEvent, MatAutocompleteTrigger } from '@angular/material/autocomplete';
13
+ import { MatFormFieldControl } from '@angular/material/form-field';
10
14
  import { MatIconButton } from '@angular/material/button';
11
15
  import { MatMenuTrigger } from '@angular/material/menu';
12
- import { Sort } from '@angular/material/sort';
13
- import * as _devopmaat_badaboom from '@devopmaat/badaboom';
14
16
  import { BooleanInput } from '@angular/cdk/coercion';
15
- import { MatFormFieldControl } from '@angular/material/form-field';
16
- import { MatDialog } from '@angular/material/dialog';
17
+ import { BreakpointObserver } from '@angular/cdk/layout';
17
18
 
18
19
  interface BdbAuthOptions {
19
20
  loginPath: string;
@@ -135,6 +136,32 @@ declare class BdbDataSource<TEntityRead extends BdbEntityRead> implements DataSo
135
136
  load(): void;
136
137
  }
137
138
 
139
+ declare class BdbFormDialogComponent {
140
+ formGroup: i0.InputSignal<FormGroup<any>>;
141
+ submitFx: i0.InputSignal<() => Observable<any>>;
142
+ title: i0.InputSignal<string>;
143
+ icon: i0.InputSignal<string | undefined>;
144
+ typeIcon: i0.InputSignal<string | undefined>;
145
+ cancelLabel: i0.InputSignal<string>;
146
+ submitLabel: i0.InputSignal<string>;
147
+ error: i0.WritableSignal<HttpErrorResponse | undefined>;
148
+ dialogRef: MatDialogRef<any, any>;
149
+ formSubmit(): void;
150
+ static ɵfac: i0.ɵɵFactoryDeclaration<BdbFormDialogComponent, never>;
151
+ static ɵcmp: i0.ɵɵComponentDeclaration<BdbFormDialogComponent, "bdb-form-dialog", never, { "formGroup": { "alias": "formGroup"; "required": true; "isSignal": true; }; "submitFx": { "alias": "submitFx"; "required": true; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "typeIcon": { "alias": "typeIcon"; "required": false; "isSignal": true; }; "cancelLabel": { "alias": "cancelLabel"; "required": false; "isSignal": true; }; "submitLabel": { "alias": "submitLabel"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
152
+ }
153
+
154
+ type BdbPalette = 'primary' | 'accent' | 'danger' | 'warn' | 'success' | 'info' | undefined;
155
+ type BdbM3Palette = 'primary' | 'secondary' | 'tertiary' | 'error' | 'warn' | 'success' | 'info' | undefined;
156
+
157
+ declare class BdbCellDirective {
158
+ templateRef: TemplateRef<never>;
159
+ bdbCellDef: string;
160
+ constructor(templateRef: TemplateRef<never>);
161
+ static ɵfac: i0.ɵɵFactoryDeclaration<BdbCellDirective, never>;
162
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BdbCellDirective, "ng-template[bdbCellDef]", never, { "bdbCellDef": { "alias": "bdbCellDef"; "required": false; }; }, {}, never, never, true, never>;
163
+ }
164
+
138
165
  declare enum BdbColumnType {
139
166
  String = "String",
140
167
  Number = "Number",
@@ -172,17 +199,6 @@ interface BdbContextAction<TRead> {
172
199
  condition?: (x: TRead) => boolean;
173
200
  }
174
201
 
175
- type BdbPalette = 'primary' | 'accent' | 'danger' | 'warn' | 'success' | 'info' | undefined;
176
- type BdbM3Palette = 'primary' | 'secondary' | 'tertiary' | 'error' | 'warn' | 'success' | 'info' | undefined;
177
-
178
- declare class BdbCellDirective {
179
- templateRef: TemplateRef<never>;
180
- bdbCellDef: string;
181
- constructor(templateRef: TemplateRef<never>);
182
- static ɵfac: i0.ɵɵFactoryDeclaration<BdbCellDirective, never>;
183
- static ɵdir: i0.ɵɵDirectiveDeclaration<BdbCellDirective, "ng-template[bdbCellDef]", never, { "bdbCellDef": { "alias": "bdbCellDef"; "required": false; }; }, {}, never, never, true, never>;
184
- }
185
-
186
202
  declare class BdbFullTableComponent<TEntityRead extends BdbEntity> {
187
203
  dataSource: BdbDataSource<TEntityRead>;
188
204
  columns: BdbColumn<TEntityRead, unknown>[];
@@ -197,11 +213,100 @@ declare class BdbFullTableComponent<TEntityRead extends BdbEntity> {
197
213
  action: BdbContextAction<TEntityRead>;
198
214
  row: TEntityRead;
199
215
  }>;
200
- cellTemplates: QueryList<BdbCellDirective> | undefined;
216
+ readonly cellTemplates: i0.Signal<readonly BdbCellDirective[]>;
201
217
  static ɵfac: i0.ɵɵFactoryDeclaration<BdbFullTableComponent<any>, never>;
202
218
  static ɵcmp: i0.ɵɵComponentDeclaration<BdbFullTableComponent<any>, "bdb-full-table", never, { "dataSource": { "alias": "dataSource"; "required": false; }; "columns": { "alias": "columns"; "required": false; }; "displayedColumns": { "alias": "displayedColumns"; "required": false; }; "autoLoad": { "alias": "autoLoad"; "required": false; }; "selection": { "alias": "selection"; "required": false; }; "contextActions": { "alias": "contextActions"; "required": false; }; "rowColor": { "alias": "rowColor"; "required": false; }; "showToolbar": { "alias": "showToolbar"; "required": false; }; }, { "rowClick": "rowClick"; "contextAction": "contextAction"; }, ["cellTemplates"], ["toolbar-item"], true, never>;
203
219
  }
204
220
 
221
+ interface DataSourceState {
222
+ pageSize?: number;
223
+ page?: number;
224
+ sortField?: string;
225
+ sortDirection?: 'asc' | 'desc';
226
+ query?: string;
227
+ }
228
+ declare abstract class BdbDataSourceV2<TEntity extends BdbEntity, TState extends DataSourceState = DataSourceState> implements DataSource<TEntity> {
229
+ private destroyRef;
230
+ private router;
231
+ private route;
232
+ get state(): Partial<TState>;
233
+ set state(value: TState);
234
+ isCurrentState(state: TState): boolean;
235
+ pageSize?: number;
236
+ defaultPageSize: number;
237
+ page?: number;
238
+ defaultPage: number;
239
+ sortField?: string;
240
+ defaultSortField: string;
241
+ sortDirection?: 'asc' | 'desc';
242
+ defaultSortDirection: 'asc' | 'desc';
243
+ query?: string;
244
+ private requestSubject;
245
+ request$: Observable<BdbRequest>;
246
+ private responseSubject;
247
+ response$: Observable<BdbResponse<TEntity> | undefined>;
248
+ private _loading;
249
+ loading: i0.Signal<boolean>;
250
+ private _error;
251
+ error: i0.Signal<HttpErrorResponse | undefined>;
252
+ get data(): readonly TEntity[];
253
+ private _persistenceRead?;
254
+ private _persistenceWrite?;
255
+ private _identifier;
256
+ get identifier(): string | undefined;
257
+ set identifier(value: string | undefined);
258
+ constructor();
259
+ disconnect(): void;
260
+ connect(): Observable<TEntity[] | readonly TEntity[]>;
261
+ load(): void;
262
+ abstract loadMethod(request: BdbRequest): Observable<BdbResponse<TEntity>>;
263
+ createRequest(): BdbRequest;
264
+ private setPersistence;
265
+ createFilters(): BdbFilter[] | undefined;
266
+ combineFilters(filters: BdbFilter[] | undefined, combine?: 'And' | 'Or'): BdbFilter | undefined;
267
+ arrayEquals(first?: unknown[], second?: unknown[]): boolean;
268
+ reviveDates(key: string, value: unknown): unknown;
269
+ static ɵfac: i0.ɵɵFactoryDeclaration<BdbDataSourceV2<any, any>, never>;
270
+ static ɵprov: i0.ɵɵInjectableDeclaration<BdbDataSourceV2<any, any>>;
271
+ }
272
+
273
+ declare class BdbGridComponent<TEntityRead extends BdbEntity> {
274
+ dataSource: i0.InputSignal<BdbDataSourceV2<TEntityRead, _devopmaat_badaboom.DataSourceState>>;
275
+ columns: BdbColumn<TEntityRead, unknown>[];
276
+ displayedColumns: string[];
277
+ selection?: SelectionModel<TEntityRead>;
278
+ contextActions: i0.InputSignal<BdbContextAction<TEntityRead>[]>;
279
+ contextAction: i0.OutputEmitterRef<{
280
+ action: BdbContextAction<TEntityRead>;
281
+ row: TEntityRead;
282
+ }>;
283
+ rowColor: i0.InputSignal<((x: TEntityRead) => BdbM3Palette) | undefined>;
284
+ rowClick: EventEmitter<TEntityRead>;
285
+ filterDrawerOpen: any;
286
+ filterDrawerOpened: i0.OutputEmitterRef<boolean>;
287
+ onContextAction(action: BdbContextAction<TEntityRead>, row: TEntityRead): void;
288
+ readonly cellTemplates: i0.Signal<readonly BdbCellDirective[]>;
289
+ sortChange(event: Sort): void;
290
+ static ɵfac: i0.ɵɵFactoryDeclaration<BdbGridComponent<any>, never>;
291
+ static ɵcmp: i0.ɵɵComponentDeclaration<BdbGridComponent<any>, "bdb-grid", never, { "dataSource": { "alias": "dataSource"; "required": true; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; }; "displayedColumns": { "alias": "displayedColumns"; "required": false; }; "selection": { "alias": "selection"; "required": false; }; "contextActions": { "alias": "contextActions"; "required": false; "isSignal": true; }; "rowColor": { "alias": "rowColor"; "required": false; "isSignal": true; }; }, { "contextAction": "contextAction"; "rowClick": "rowClick"; "filterDrawerOpened": "filterDrawerOpened"; }, ["cellTemplates"], ["toolbar-item", "filter-drawer"], true, never>;
292
+ }
293
+
294
+ declare class BdbPaginatorV2Component<TEntity extends BdbEntity> implements OnInit, OnDestroy {
295
+ dataSource: i0.InputSignal<BdbDataSourceV2<TEntity, _devopmaat_badaboom.DataSourceState>>;
296
+ private _onDestroy;
297
+ set disabled(disabled: boolean);
298
+ get disabled(): boolean;
299
+ private _disabled;
300
+ pageSize?: number;
301
+ page?: number;
302
+ length?: number;
303
+ ngOnInit(): void;
304
+ ngOnDestroy(): void;
305
+ changePage(event: PageEvent): void;
306
+ static ɵfac: i0.ɵɵFactoryDeclaration<BdbPaginatorV2Component<any>, never>;
307
+ static ɵcmp: i0.ɵɵComponentDeclaration<BdbPaginatorV2Component<any>, "bdb-paginator-v2", never, { "dataSource": { "alias": "dataSource"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
308
+ }
309
+
205
310
  declare class BdbPaginatorComponent<TEntityRead extends BdbEntityRead> implements OnInit, OnDestroy {
206
311
  dataSource: BdbDataSource<TEntityRead>;
207
312
  private _onDestroy;
@@ -215,6 +320,15 @@ declare class BdbPaginatorComponent<TEntityRead extends BdbEntityRead> implement
215
320
  static ɵcmp: i0.ɵɵComponentDeclaration<BdbPaginatorComponent<any>, "bdb-paginator", never, { "dataSource": { "alias": "dataSource"; "required": false; }; }, {}, never, never, true, never>;
216
321
  }
217
322
 
323
+ declare class BdbQueryInputV2Component<TEntityRead extends BdbEntity> {
324
+ class: string;
325
+ dataSource: i0.InputSignal<BdbDataSourceV2<TEntityRead, _devopmaat_badaboom.DataSourceState>>;
326
+ queryFormControl: FormControl<string | undefined>;
327
+ constructor();
328
+ static ɵfac: i0.ɵɵFactoryDeclaration<BdbQueryInputV2Component<any>, never>;
329
+ static ɵcmp: i0.ɵɵComponentDeclaration<BdbQueryInputV2Component<any>, "bdb-query-input-v2[dataSource]", never, { "dataSource": { "alias": "dataSource"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
330
+ }
331
+
218
332
  declare class BdbQueryInputComponent<TEntityRead extends BdbEntityRead> implements OnInit, OnDestroy {
219
333
  class: string;
220
334
  dataSource: BdbDataSource<TEntityRead>;
@@ -226,6 +340,80 @@ declare class BdbQueryInputComponent<TEntityRead extends BdbEntityRead> implemen
226
340
  static ɵcmp: i0.ɵɵComponentDeclaration<BdbQueryInputComponent<any>, "bdb-query-input[dataSource]", never, { "dataSource": { "alias": "dataSource"; "required": false; }; }, {}, never, never, true, never>;
227
341
  }
228
342
 
343
+ declare class BdbSearchInputComponent<TEntity extends BdbEntity> implements ControlValueAccessor, MatFormFieldControl<TEntity | undefined> {
344
+ ngControl: NgControl;
345
+ dataSource: i0.InputSignal<BdbDataSourceV2<TEntity, _devopmaat_badaboom.DataSourceState>>;
346
+ displayFn: i0.InputSignal<(x: TEntity) => string>;
347
+ placeholder: string;
348
+ searchCtrl: FormControl<string | TEntity | null>;
349
+ static nextId: number;
350
+ id: string;
351
+ stateChanges: Subject<void>;
352
+ focused: boolean;
353
+ get required(): boolean;
354
+ get errorState(): boolean;
355
+ controlType: string;
356
+ describedBy: string;
357
+ private _value;
358
+ private onChange;
359
+ onTouched: () => void;
360
+ private _disabled;
361
+ get value(): TEntity | undefined;
362
+ set value(val: TEntity | undefined);
363
+ get empty(): boolean;
364
+ get shouldLabelFloat(): boolean;
365
+ get disabled(): boolean;
366
+ set disabled(value: boolean);
367
+ constructor(ngControl: NgControl);
368
+ writeValue(obj: TEntity | undefined): void;
369
+ registerOnChange(fn: (value: TEntity | undefined) => void): void;
370
+ registerOnTouched(fn: () => void): void;
371
+ setDisabledState(isDisabled: boolean): void;
372
+ setDescribedByIds(ids: string[]): void;
373
+ onContainerClick(event: MouseEvent): void;
374
+ selectOption($event: MatAutocompleteSelectedEvent): void;
375
+ clear(): void;
376
+ onFocus(): void;
377
+ onBlur(): void;
378
+ ngOnDestroy(): void;
379
+ static ɵfac: i0.ɵɵFactoryDeclaration<BdbSearchInputComponent<any>, [{ optional: true; self: true; }]>;
380
+ static ɵcmp: i0.ɵɵComponentDeclaration<BdbSearchInputComponent<any>, "bdb-search-input", never, { "dataSource": { "alias": "dataSource"; "required": true; "isSignal": true; }; "displayFn": { "alias": "displayFn"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
381
+ }
382
+
383
+ declare abstract class SearchV2Base<T extends BdbEntity> implements ControlValueAccessor {
384
+ dataSource: i0.InputSignal<BdbDataSourceV2<T, _devopmaat_badaboom.DataSourceState>>;
385
+ get formControl(): FormControl<T | undefined>;
386
+ ngControl: NgControl;
387
+ constructor();
388
+ writeValue(obj: any): void;
389
+ registerOnChange(fn: any): void;
390
+ registerOnTouched(fn: any): void;
391
+ setDisabledState?(isDisabled: boolean): void;
392
+ static ɵfac: i0.ɵɵFactoryDeclaration<SearchV2Base<any>, never>;
393
+ static ɵdir: i0.ɵɵDirectiveDeclaration<SearchV2Base<any>, never, never, { "dataSource": { "alias": "dataSource"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
394
+ }
395
+
396
+ declare class BdbSearchV2Component<TEntity extends BdbEntity> implements ControlValueAccessor {
397
+ ngControl: NgControl;
398
+ dataSource: i0.InputSignal<BdbDataSourceV2<TEntity, _devopmaat_badaboom.DataSourceState>>;
399
+ displayFn: i0.InputSignal<(x: TEntity) => string>;
400
+ label: i0.InputSignal<string | undefined>;
401
+ isDisabled: boolean;
402
+ onTouched: any;
403
+ onChange: any;
404
+ value?: TEntity;
405
+ searchInput: i0.Signal<BdbSearchInputComponent<TEntity>>;
406
+ get formControl(): FormControl;
407
+ constructor(ngControl: NgControl);
408
+ writeValue(obj: TEntity | undefined): void;
409
+ registerOnChange(fn: any): void;
410
+ registerOnTouched(fn: any): void;
411
+ setDisabledState?(isDisabled: boolean): void;
412
+ clear(): void;
413
+ static ɵfac: i0.ɵɵFactoryDeclaration<BdbSearchV2Component<any>, [{ optional: true; self: true; }]>;
414
+ static ɵcmp: i0.ɵɵComponentDeclaration<BdbSearchV2Component<any>, "bdb-search-v2", never, { "dataSource": { "alias": "dataSource"; "required": true; "isSignal": true; }; "displayFn": { "alias": "displayFn"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
415
+ }
416
+
229
417
  declare abstract class BdbSearchWrapperBaseComponent<TEntityRead extends BdbEntityRead> implements OnInit {
230
418
  controlName?: string;
231
419
  control?: FormControl<TEntityRead | null>;
@@ -243,9 +431,9 @@ declare class BdbSearchComponent<TEntityRead extends BdbEntityRead> implements C
243
431
  label: string;
244
432
  hint: string;
245
433
  placeholder: string;
246
- searchInput?: ElementRef<HTMLInputElement>;
247
- clearButton?: MatIconButton;
248
- autoCompleteTrigger?: MatAutocompleteTrigger;
434
+ readonly searchInput: i0.Signal<ElementRef<HTMLInputElement> | undefined>;
435
+ readonly clearButton: i0.Signal<MatIconButton | undefined>;
436
+ readonly autoCompleteTrigger: i0.Signal<MatAutocompleteTrigger | undefined>;
249
437
  private readonly _onDestroy;
250
438
  viewChange: BehaviorSubject<ListRange>;
251
439
  searchOptions?: Observable<TEntityRead[] | readonly TEntityRead[]>;
@@ -271,6 +459,45 @@ declare class BdbSearchComponent<TEntityRead extends BdbEntityRead> implements C
271
459
  static ɵcmp: i0.ɵɵComponentDeclaration<BdbSearchComponent<any>, "bdb-search", never, { "dataSource": { "alias": "dataSource"; "required": false; }; "displayFn": { "alias": "displayFn"; "required": false; }; "label": { "alias": "label"; "required": false; }; "hint": { "alias": "hint"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; }, {}, never, never, true, never>;
272
460
  }
273
461
 
462
+ declare class BdbTableV2Component<TEntity extends BdbEntity> {
463
+ dataSource: i0.InputSignal<readonly TEntity[]>;
464
+ columns: i0.InputSignal<BdbColumn<TEntity, unknown>[]>;
465
+ displayedColumns: i0.InputSignal<string[]>;
466
+ activeColumns: Signal<string[]>;
467
+ selection: i0.InputSignal<SelectionModel<TEntity> | undefined>;
468
+ selectOnRowClick: i0.InputSignal<boolean>;
469
+ contextActions: i0.InputSignal<BdbContextAction<TEntity>[]>;
470
+ contextAction: i0.OutputEmitterRef<{
471
+ action: BdbContextAction<TEntity>;
472
+ row: TEntity;
473
+ }>;
474
+ rowColor: i0.InputSignal<((x: TEntity) => BdbM3Palette) | undefined>;
475
+ error: i0.InputSignal<HttpErrorResponse | undefined>;
476
+ rowClick: i0.OutputEmitterRef<TEntity>;
477
+ matSortDisabled: i0.InputSignal<boolean>;
478
+ sortChange: i0.OutputEmitterRef<Sort>;
479
+ readonly contextMenu: Signal<MatMenuTrigger>;
480
+ readonly cellTemplates: Signal<readonly BdbCellDirective[]>;
481
+ columnType: typeof BdbColumnType;
482
+ contextMenuPosition: {
483
+ x: string;
484
+ y: string;
485
+ };
486
+ trackBy: i0.InputSignal<TrackByFunction<never>>;
487
+ ngAfterContentInit(): void;
488
+ setColumnTemplates(): void;
489
+ onRowClick(row: TEntity): void;
490
+ onContextMenu(event: MouseEvent, row: TEntity): void;
491
+ isAllSelected(): boolean;
492
+ anySelected(): boolean;
493
+ toggleAllRows(): void;
494
+ rowClass(row: TEntity): {
495
+ [klass: string]: unknown;
496
+ } | undefined;
497
+ static ɵfac: i0.ɵɵFactoryDeclaration<BdbTableV2Component<any>, never>;
498
+ static ɵcmp: i0.ɵɵComponentDeclaration<BdbTableV2Component<any>, "bdb-table-v2", never, { "dataSource": { "alias": "dataSource"; "required": true; "isSignal": true; }; "columns": { "alias": "columns"; "required": true; "isSignal": true; }; "displayedColumns": { "alias": "displayedColumns"; "required": false; "isSignal": true; }; "selection": { "alias": "selection"; "required": false; "isSignal": true; }; "selectOnRowClick": { "alias": "selectOnRowClick"; "required": false; "isSignal": true; }; "contextActions": { "alias": "contextActions"; "required": false; "isSignal": true; }; "rowColor": { "alias": "rowColor"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "matSortDisabled": { "alias": "matSortDisabled"; "required": false; "isSignal": true; }; "trackBy": { "alias": "trackBy"; "required": false; "isSignal": true; }; }, { "contextAction": "contextAction"; "rowClick": "rowClick"; "sortChange": "sortChange"; }, ["cellTemplates"], ["*"], true, never>;
499
+ }
500
+
274
501
  interface BdbColumnOptions {
275
502
  id?: string;
276
503
  sortDisabled?: boolean;
@@ -335,8 +562,8 @@ declare class BdbTableComponent<TRead extends BdbEntity> implements OnInit, OnCh
335
562
  action: BdbContextAction<TRead>;
336
563
  row: TRead;
337
564
  }>;
338
- contextMenu: MatMenuTrigger;
339
- cellTemplates: QueryList<BdbCellDirective> | undefined;
565
+ readonly contextMenu: i0.Signal<MatMenuTrigger>;
566
+ readonly cellTemplates: i0.Signal<readonly BdbCellDirective[]>;
340
567
  error: HttpErrorResponse | undefined;
341
568
  columnType: typeof BdbColumnType;
342
569
  contextMenuPosition: {
@@ -552,7 +779,7 @@ declare class MediaDropDirective {
552
779
 
553
780
  declare class BdbMediaUploadComponent {
554
781
  class: string;
555
- nativeInputFile?: ElementRef;
782
+ readonly nativeInputFile: i0.Signal<ElementRef<any> | undefined>;
556
783
  private mediaService;
557
784
  accept: string;
558
785
  uploadComplete: EventEmitter<Media>;
@@ -1125,12 +1352,58 @@ declare class TaskLogTypeService extends BdbService {
1125
1352
  static ɵprov: i0.ɵɵInjectableDeclaration<TaskLogTypeService>;
1126
1353
  }
1127
1354
 
1355
+ interface BdbRoute extends Route {
1356
+ icon: string;
1357
+ name: string;
1358
+ }
1359
+ interface BbdEntitySettings<TEntity extends BdbEntity> extends BdbRoute {
1360
+ single: string;
1361
+ label: (entity: TEntity) => string;
1362
+ }
1363
+
1128
1364
  declare const loggedOutGuard: CanActivateFn;
1129
1365
 
1130
1366
  declare const resetPasswordResolver: ResolveFn<ResetPasswordToken>;
1131
1367
 
1132
1368
  declare function roleGuard(...roles: string[]): CanActivateFn;
1133
1369
 
1370
+ declare class BdbAppLayoutComponent {
1371
+ modules: InputSignal<BdbRoute[]>;
1372
+ appTitle: InputSignal<string>;
1373
+ version: InputSignal<string>;
1374
+ opened: boolean;
1375
+ sidenavMode: 'side' | 'over';
1376
+ isHandset: i0.WritableSignal<boolean>;
1377
+ authService: AuthService;
1378
+ changeDetectorRef: ChangeDetectorRef;
1379
+ breakpointObserver: BreakpointObserver;
1380
+ bdbOptions: _devopmaat_badaboom.BdbOptions;
1381
+ logoutRoutePath: string;
1382
+ appToolbar: i0.Signal<ElementRef<any>>;
1383
+ appToolbarHeight: number;
1384
+ constructor();
1385
+ ngAfterViewInit(): void;
1386
+ private setAppToolbarHeight;
1387
+ static ɵfac: i0.ɵɵFactoryDeclaration<BdbAppLayoutComponent, never>;
1388
+ static ɵcmp: i0.ɵɵComponentDeclaration<BdbAppLayoutComponent, "bdb-app-layout", never, { "modules": { "alias": "modules"; "required": false; "isSignal": true; }; "appTitle": { "alias": "appTitle"; "required": false; "isSignal": true; }; "version": { "alias": "version"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1389
+ }
1390
+
1391
+ declare function BdbEntityResolver<TEntity extends BdbEntity, TEntityRead extends BdbEntityRead, TEntityService extends BdbServiceR<TEntity, TEntityRead>>(service: ProviderToken<TEntityService>): ResolveFn<TEntity>;
1392
+
1393
+ declare class BdbNavListComponent {
1394
+ routes: i0.InputSignal<BdbRoute[]>;
1395
+ parentRoute: i0.InputSignal<BdbRoute | undefined>;
1396
+ getRouterLink(route: BdbRoute): string[];
1397
+ static ɵfac: i0.ɵɵFactoryDeclaration<BdbNavListComponent, never>;
1398
+ static ɵcmp: i0.ɵɵComponentDeclaration<BdbNavListComponent, "bdb-nav-list", never, { "routes": { "alias": "routes"; "required": false; "isSignal": true; }; "parentRoute": { "alias": "parentRoute"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1399
+ }
1400
+
1401
+ declare class BdbPageHeaderComponent {
1402
+ pageTitle: i0.InputSignal<string>;
1403
+ static ɵfac: i0.ɵɵFactoryDeclaration<BdbPageHeaderComponent, never>;
1404
+ static ɵcmp: i0.ɵɵComponentDeclaration<BdbPageHeaderComponent, "bdb-page-header", never, { "pageTitle": { "alias": "pageTitle"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
1405
+ }
1406
+
1134
1407
  declare class AccessDeniedPageComponent implements OnInit, OnDestroy {
1135
1408
  private authService;
1136
1409
  private readonly _onDestroy;
@@ -1227,5 +1500,5 @@ declare class ResetPasswordPageComponent implements OnInit {
1227
1500
  static ɵcmp: i0.ɵɵComponentDeclaration<ResetPasswordPageComponent, "bdb-reset-password-page", never, {}, {}, never, never, true, never>;
1228
1501
  }
1229
1502
 
1230
- 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 };
1231
- export type { AccountInfo, BdbBooleanColumnOptions, BdbColumn, BdbColumnOptions, BdbContextAction, BdbCurrencyColumnOptions, BdbDateColumnOptions, BdbEntity, BdbEntityRead, BdbEntityUpdate, BdbEnumColumnOptions, BdbFilter, BdbM3Palette, BdbNumberColumnOptions, BdbOptions, BdbOptionsConfigure, BdbPalette, BdbPercentageColumnOptions, BdbRequest, BdbResponse, BdbStringColumnOptions, ExceptionLog, ExceptionLogRead, ImageFile, Media, MediaPreview, ResetPasswordToken, Role, RoleRead, TaskLog, TaskLogCreate, TaskLogParameter, TaskLogParameterCreate, TaskLogParameterRead, TaskLogRead, TaskLogSchedule, TaskLogScheduleCreate, TaskLogScheduleRead, TaskLogScheduleUpdate, TaskLogType, TaskLogTypeParameter, TokenResponse, User, UserCreate, UserRead, UserRole, UserRoleCreate, UserRoleRead, UserUpdate };
1503
+ 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 };
1504
+ export type { AccountInfo, BbdEntitySettings, BdbBooleanColumnOptions, BdbColumn, BdbColumnOptions, BdbContextAction, BdbCurrencyColumnOptions, BdbDateColumnOptions, BdbEntity, BdbEntityRead, BdbEntityUpdate, BdbEnumColumnOptions, BdbFilter, BdbM3Palette, BdbNumberColumnOptions, BdbOptions, BdbOptionsConfigure, BdbPalette, BdbPercentageColumnOptions, BdbRequest, BdbResponse, BdbRoute, BdbStringColumnOptions, DataSourceState, ExceptionLog, ExceptionLogRead, ImageFile, Media, MediaPreview, ResetPasswordToken, Role, RoleRead, TaskLog, TaskLogCreate, TaskLogParameter, TaskLogParameterCreate, TaskLogParameterRead, TaskLogRead, TaskLogSchedule, TaskLogScheduleCreate, TaskLogScheduleRead, TaskLogScheduleUpdate, TaskLogType, TaskLogTypeParameter, TokenResponse, User, UserCreate, UserRead, UserRole, UserRoleCreate, UserRoleRead, UserUpdate };