@devopmaat/badaboom 1.3.13 → 1.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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,12 @@
1
1
  {
2
2
  "name": "@devopmaat/badaboom",
3
- "version": "1.3.13",
3
+ "version": "1.4.1",
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
+ "date-fns": "^4.1.0"
9
10
  },
10
11
  "dependencies": {
11
12
  "tslib": "^2.3.0"
@@ -14,7 +15,7 @@
14
15
  "exports": {
15
16
  ".": {
16
17
  "sass": "./_index.scss",
17
- "types": "./index.d.ts",
18
+ "types": "./types/devopmaat-badaboom.d.ts",
18
19
  "default": "./fesm2022/devopmaat-badaboom.mjs"
19
20
  },
20
21
  "./package.json": {
@@ -22,5 +23,5 @@
22
23
  }
23
24
  },
24
25
  "module": "fesm2022/devopmaat-badaboom.mjs",
25
- "typings": "index.d.ts"
26
+ "typings": "types/devopmaat-badaboom.d.ts"
26
27
  }
@@ -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;
@@ -101,6 +102,10 @@ interface BdbRequest {
101
102
  baseFilter?: string;
102
103
  filter?: BdbFilter;
103
104
  }
105
+ interface BdbRequestOptions {
106
+ fromPopState?: boolean;
107
+ replaceUrl?: boolean;
108
+ }
104
109
 
105
110
  interface BdbEntity {
106
111
  id: number;
@@ -135,6 +140,32 @@ declare class BdbDataSource<TEntityRead extends BdbEntityRead> implements DataSo
135
140
  load(): void;
136
141
  }
137
142
 
143
+ declare class BdbFormDialogComponent {
144
+ formGroup: i0.InputSignal<FormGroup<any>>;
145
+ submitFx: i0.InputSignal<() => Observable<any>>;
146
+ title: i0.InputSignal<string>;
147
+ icon: i0.InputSignal<string | undefined>;
148
+ typeIcon: i0.InputSignal<string | undefined>;
149
+ cancelLabel: i0.InputSignal<string>;
150
+ submitLabel: i0.InputSignal<string>;
151
+ error: i0.WritableSignal<HttpErrorResponse | undefined>;
152
+ dialogRef: MatDialogRef<any, any>;
153
+ formSubmit(): void;
154
+ static ɵfac: i0.ɵɵFactoryDeclaration<BdbFormDialogComponent, never>;
155
+ 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>;
156
+ }
157
+
158
+ type BdbPalette = 'primary' | 'accent' | 'danger' | 'warn' | 'success' | 'info' | undefined;
159
+ type BdbM3Palette = 'primary' | 'secondary' | 'tertiary' | 'error' | 'warn' | 'success' | 'info' | undefined;
160
+
161
+ declare class BdbCellDirective {
162
+ templateRef: TemplateRef<never>;
163
+ bdbCellDef: string;
164
+ constructor(templateRef: TemplateRef<never>);
165
+ static ɵfac: i0.ɵɵFactoryDeclaration<BdbCellDirective, never>;
166
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BdbCellDirective, "ng-template[bdbCellDef]", never, { "bdbCellDef": { "alias": "bdbCellDef"; "required": false; }; }, {}, never, never, true, never>;
167
+ }
168
+
138
169
  declare enum BdbColumnType {
139
170
  String = "String",
140
171
  Number = "Number",
@@ -172,17 +203,6 @@ interface BdbContextAction<TRead> {
172
203
  condition?: (x: TRead) => boolean;
173
204
  }
174
205
 
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
206
  declare class BdbFullTableComponent<TEntityRead extends BdbEntity> {
187
207
  dataSource: BdbDataSource<TEntityRead>;
188
208
  columns: BdbColumn<TEntityRead, unknown>[];
@@ -197,11 +217,103 @@ declare class BdbFullTableComponent<TEntityRead extends BdbEntity> {
197
217
  action: BdbContextAction<TEntityRead>;
198
218
  row: TEntityRead;
199
219
  }>;
200
- cellTemplates: QueryList<BdbCellDirective> | undefined;
220
+ readonly cellTemplates: i0.Signal<readonly BdbCellDirective[]>;
201
221
  static ɵfac: i0.ɵɵFactoryDeclaration<BdbFullTableComponent<any>, never>;
202
222
  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
223
  }
204
224
 
225
+ interface DataSourceState {
226
+ pageSize?: number;
227
+ page?: number;
228
+ sortField?: string;
229
+ sortDirection?: 'asc' | 'desc';
230
+ query?: string;
231
+ }
232
+ declare abstract class BdbDataSourceV2<TEntity extends BdbEntity, TState extends DataSourceState = DataSourceState> implements DataSource<TEntity> {
233
+ private destroyRef;
234
+ private router;
235
+ private route;
236
+ persistence: {
237
+ replaceUrl: boolean;
238
+ };
239
+ get state(): Partial<TState>;
240
+ set state(value: TState);
241
+ isCurrentState(state: TState): boolean;
242
+ pageSize?: number;
243
+ defaultPageSize: number;
244
+ page?: number;
245
+ defaultPage: number;
246
+ sortField?: string;
247
+ defaultSortField: string;
248
+ sortDirection?: 'asc' | 'desc';
249
+ defaultSortDirection: 'asc' | 'desc';
250
+ query?: string;
251
+ private requestSubject;
252
+ request$: Observable<[BdbRequest, BdbRequestOptions]>;
253
+ private responseSubject;
254
+ response$: Observable<BdbResponse<TEntity> | undefined>;
255
+ private _loading;
256
+ loading: i0.Signal<boolean>;
257
+ private _error;
258
+ error: i0.Signal<HttpErrorResponse | undefined>;
259
+ get data(): readonly TEntity[];
260
+ private _persistenceRead?;
261
+ private _persistenceWrite?;
262
+ private _identifier;
263
+ get identifier(): string | undefined;
264
+ set identifier(value: string | undefined);
265
+ constructor();
266
+ disconnect(): void;
267
+ connect(): Observable<TEntity[] | readonly TEntity[]>;
268
+ load(loadOptions?: BdbRequestOptions): void;
269
+ abstract loadMethod(request: BdbRequest): Observable<BdbResponse<TEntity>>;
270
+ createRequest(): BdbRequest;
271
+ private setPersistence;
272
+ createFilters(): BdbFilter[] | undefined;
273
+ combineFilters(filters: BdbFilter[] | undefined, combine?: 'And' | 'Or'): BdbFilter | undefined;
274
+ arrayEquals(first?: unknown[], second?: unknown[]): boolean;
275
+ reviveDates(key: string, value: unknown): unknown;
276
+ static ɵfac: i0.ɵɵFactoryDeclaration<BdbDataSourceV2<any, any>, never>;
277
+ static ɵprov: i0.ɵɵInjectableDeclaration<BdbDataSourceV2<any, any>>;
278
+ }
279
+
280
+ declare class BdbGridComponent<TEntityRead extends BdbEntity> {
281
+ dataSource: i0.InputSignal<BdbDataSourceV2<TEntityRead, _devopmaat_badaboom.DataSourceState>>;
282
+ columns: BdbColumn<TEntityRead, unknown>[];
283
+ displayedColumns: string[];
284
+ selection?: SelectionModel<TEntityRead>;
285
+ contextActions: i0.InputSignal<BdbContextAction<TEntityRead>[]>;
286
+ contextAction: i0.OutputEmitterRef<{
287
+ action: BdbContextAction<TEntityRead>;
288
+ row: TEntityRead;
289
+ }>;
290
+ rowColor: i0.InputSignal<((x: TEntityRead) => BdbM3Palette) | undefined>;
291
+ rowClick: EventEmitter<TEntityRead>;
292
+ filterDrawerOpen: any;
293
+ filterDrawerOpened: i0.OutputEmitterRef<boolean>;
294
+ onContextAction(action: BdbContextAction<TEntityRead>, row: TEntityRead): void;
295
+ readonly cellTemplates: i0.Signal<readonly BdbCellDirective[]>;
296
+ sortChange(event: Sort): void;
297
+ static ɵfac: i0.ɵɵFactoryDeclaration<BdbGridComponent<any>, never>;
298
+ 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>;
299
+ }
300
+
301
+ declare class BdbPaginatorV2Component<TEntity extends BdbEntity> implements OnInit, OnDestroy {
302
+ dataSource: i0.InputSignal<BdbDataSourceV2<TEntity, _devopmaat_badaboom.DataSourceState>>;
303
+ private _onDestroy;
304
+ set disabled(disabled: boolean);
305
+ get disabled(): boolean;
306
+ private _disabled;
307
+ pageSize?: number;
308
+ page?: number;
309
+ length?: number;
310
+ ngOnInit(): void;
311
+ ngOnDestroy(): void;
312
+ changePage(event: PageEvent): void;
313
+ static ɵfac: i0.ɵɵFactoryDeclaration<BdbPaginatorV2Component<any>, never>;
314
+ static ɵcmp: i0.ɵɵComponentDeclaration<BdbPaginatorV2Component<any>, "bdb-paginator-v2", never, { "dataSource": { "alias": "dataSource"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
315
+ }
316
+
205
317
  declare class BdbPaginatorComponent<TEntityRead extends BdbEntityRead> implements OnInit, OnDestroy {
206
318
  dataSource: BdbDataSource<TEntityRead>;
207
319
  private _onDestroy;
@@ -215,6 +327,15 @@ declare class BdbPaginatorComponent<TEntityRead extends BdbEntityRead> implement
215
327
  static ɵcmp: i0.ɵɵComponentDeclaration<BdbPaginatorComponent<any>, "bdb-paginator", never, { "dataSource": { "alias": "dataSource"; "required": false; }; }, {}, never, never, true, never>;
216
328
  }
217
329
 
330
+ declare class BdbQueryInputV2Component<TEntityRead extends BdbEntity> {
331
+ class: string;
332
+ dataSource: i0.InputSignal<BdbDataSourceV2<TEntityRead, _devopmaat_badaboom.DataSourceState>>;
333
+ queryFormControl: FormControl<string | undefined>;
334
+ constructor();
335
+ static ɵfac: i0.ɵɵFactoryDeclaration<BdbQueryInputV2Component<any>, never>;
336
+ static ɵcmp: i0.ɵɵComponentDeclaration<BdbQueryInputV2Component<any>, "bdb-query-input-v2[dataSource]", never, { "dataSource": { "alias": "dataSource"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
337
+ }
338
+
218
339
  declare class BdbQueryInputComponent<TEntityRead extends BdbEntityRead> implements OnInit, OnDestroy {
219
340
  class: string;
220
341
  dataSource: BdbDataSource<TEntityRead>;
@@ -226,6 +347,80 @@ declare class BdbQueryInputComponent<TEntityRead extends BdbEntityRead> implemen
226
347
  static ɵcmp: i0.ɵɵComponentDeclaration<BdbQueryInputComponent<any>, "bdb-query-input[dataSource]", never, { "dataSource": { "alias": "dataSource"; "required": false; }; }, {}, never, never, true, never>;
227
348
  }
228
349
 
350
+ declare class BdbSearchInputComponent<TEntity extends BdbEntity> implements ControlValueAccessor, MatFormFieldControl<TEntity | undefined> {
351
+ ngControl: NgControl;
352
+ dataSource: i0.InputSignal<BdbDataSourceV2<TEntity, _devopmaat_badaboom.DataSourceState>>;
353
+ displayFn: i0.InputSignal<(x: TEntity) => string>;
354
+ placeholder: string;
355
+ searchCtrl: FormControl<string | TEntity | null>;
356
+ static nextId: number;
357
+ id: string;
358
+ stateChanges: Subject<void>;
359
+ focused: boolean;
360
+ get required(): boolean;
361
+ get errorState(): boolean;
362
+ controlType: string;
363
+ describedBy: string;
364
+ private _value;
365
+ private onChange;
366
+ onTouched: () => void;
367
+ private _disabled;
368
+ get value(): TEntity | undefined;
369
+ set value(val: TEntity | undefined);
370
+ get empty(): boolean;
371
+ get shouldLabelFloat(): boolean;
372
+ get disabled(): boolean;
373
+ set disabled(value: boolean);
374
+ constructor(ngControl: NgControl);
375
+ writeValue(obj: TEntity | undefined): void;
376
+ registerOnChange(fn: (value: TEntity | undefined) => void): void;
377
+ registerOnTouched(fn: () => void): void;
378
+ setDisabledState(isDisabled: boolean): void;
379
+ setDescribedByIds(ids: string[]): void;
380
+ onContainerClick(event: MouseEvent): void;
381
+ selectOption($event: MatAutocompleteSelectedEvent): void;
382
+ clear(): void;
383
+ onFocus(): void;
384
+ onBlur(): void;
385
+ ngOnDestroy(): void;
386
+ static ɵfac: i0.ɵɵFactoryDeclaration<BdbSearchInputComponent<any>, [{ optional: true; self: true; }]>;
387
+ 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>;
388
+ }
389
+
390
+ declare abstract class SearchV2Base<T extends BdbEntity> implements ControlValueAccessor {
391
+ dataSource: i0.InputSignal<BdbDataSourceV2<T, _devopmaat_badaboom.DataSourceState>>;
392
+ get formControl(): FormControl<T | undefined>;
393
+ ngControl: NgControl;
394
+ constructor();
395
+ writeValue(obj: any): void;
396
+ registerOnChange(fn: any): void;
397
+ registerOnTouched(fn: any): void;
398
+ setDisabledState?(isDisabled: boolean): void;
399
+ static ɵfac: i0.ɵɵFactoryDeclaration<SearchV2Base<any>, never>;
400
+ static ɵdir: i0.ɵɵDirectiveDeclaration<SearchV2Base<any>, never, never, { "dataSource": { "alias": "dataSource"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
401
+ }
402
+
403
+ declare class BdbSearchV2Component<TEntity extends BdbEntity> implements ControlValueAccessor {
404
+ ngControl: NgControl;
405
+ dataSource: i0.InputSignal<BdbDataSourceV2<TEntity, _devopmaat_badaboom.DataSourceState>>;
406
+ displayFn: i0.InputSignal<(x: TEntity) => string>;
407
+ label: i0.InputSignal<string | undefined>;
408
+ isDisabled: boolean;
409
+ onTouched: any;
410
+ onChange: any;
411
+ value?: TEntity;
412
+ searchInput: i0.Signal<BdbSearchInputComponent<TEntity>>;
413
+ get formControl(): FormControl;
414
+ constructor(ngControl: NgControl);
415
+ writeValue(obj: TEntity | undefined): void;
416
+ registerOnChange(fn: any): void;
417
+ registerOnTouched(fn: any): void;
418
+ setDisabledState?(isDisabled: boolean): void;
419
+ clear(): void;
420
+ static ɵfac: i0.ɵɵFactoryDeclaration<BdbSearchV2Component<any>, [{ optional: true; self: true; }]>;
421
+ 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>;
422
+ }
423
+
229
424
  declare abstract class BdbSearchWrapperBaseComponent<TEntityRead extends BdbEntityRead> implements OnInit {
230
425
  controlName?: string;
231
426
  control?: FormControl<TEntityRead | null>;
@@ -243,9 +438,9 @@ declare class BdbSearchComponent<TEntityRead extends BdbEntityRead> implements C
243
438
  label: string;
244
439
  hint: string;
245
440
  placeholder: string;
246
- searchInput?: ElementRef<HTMLInputElement>;
247
- clearButton?: MatIconButton;
248
- autoCompleteTrigger?: MatAutocompleteTrigger;
441
+ readonly searchInput: i0.Signal<ElementRef<HTMLInputElement> | undefined>;
442
+ readonly clearButton: i0.Signal<MatIconButton | undefined>;
443
+ readonly autoCompleteTrigger: i0.Signal<MatAutocompleteTrigger | undefined>;
249
444
  private readonly _onDestroy;
250
445
  viewChange: BehaviorSubject<ListRange>;
251
446
  searchOptions?: Observable<TEntityRead[] | readonly TEntityRead[]>;
@@ -271,6 +466,45 @@ declare class BdbSearchComponent<TEntityRead extends BdbEntityRead> implements C
271
466
  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
467
  }
273
468
 
469
+ declare class BdbTableV2Component<TEntity extends BdbEntity> {
470
+ dataSource: i0.InputSignal<readonly TEntity[]>;
471
+ columns: i0.InputSignal<BdbColumn<TEntity, unknown>[]>;
472
+ displayedColumns: i0.InputSignal<string[]>;
473
+ activeColumns: Signal<string[]>;
474
+ selection: i0.InputSignal<SelectionModel<TEntity> | undefined>;
475
+ selectOnRowClick: i0.InputSignal<boolean>;
476
+ contextActions: i0.InputSignal<BdbContextAction<TEntity>[]>;
477
+ contextAction: i0.OutputEmitterRef<{
478
+ action: BdbContextAction<TEntity>;
479
+ row: TEntity;
480
+ }>;
481
+ rowColor: i0.InputSignal<((x: TEntity) => BdbM3Palette) | undefined>;
482
+ error: i0.InputSignal<HttpErrorResponse | undefined>;
483
+ rowClick: i0.OutputEmitterRef<TEntity>;
484
+ matSortDisabled: i0.InputSignal<boolean>;
485
+ sortChange: i0.OutputEmitterRef<Sort>;
486
+ readonly contextMenu: Signal<MatMenuTrigger>;
487
+ readonly cellTemplates: Signal<readonly BdbCellDirective[]>;
488
+ columnType: typeof BdbColumnType;
489
+ contextMenuPosition: {
490
+ x: string;
491
+ y: string;
492
+ };
493
+ trackBy: i0.InputSignal<TrackByFunction<never>>;
494
+ ngAfterContentInit(): void;
495
+ setColumnTemplates(): void;
496
+ onRowClick(row: TEntity): void;
497
+ onContextMenu(event: MouseEvent, row: TEntity): void;
498
+ isAllSelected(): boolean;
499
+ anySelected(): boolean;
500
+ toggleAllRows(): void;
501
+ rowClass(row: TEntity): {
502
+ [klass: string]: unknown;
503
+ } | undefined;
504
+ static ɵfac: i0.ɵɵFactoryDeclaration<BdbTableV2Component<any>, never>;
505
+ 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>;
506
+ }
507
+
274
508
  interface BdbColumnOptions {
275
509
  id?: string;
276
510
  sortDisabled?: boolean;
@@ -335,8 +569,8 @@ declare class BdbTableComponent<TRead extends BdbEntity> implements OnInit, OnCh
335
569
  action: BdbContextAction<TRead>;
336
570
  row: TRead;
337
571
  }>;
338
- contextMenu: MatMenuTrigger;
339
- cellTemplates: QueryList<BdbCellDirective> | undefined;
572
+ readonly contextMenu: i0.Signal<MatMenuTrigger>;
573
+ readonly cellTemplates: i0.Signal<readonly BdbCellDirective[]>;
340
574
  error: HttpErrorResponse | undefined;
341
575
  columnType: typeof BdbColumnType;
342
576
  contextMenuPosition: {
@@ -552,7 +786,7 @@ declare class MediaDropDirective {
552
786
 
553
787
  declare class BdbMediaUploadComponent {
554
788
  class: string;
555
- nativeInputFile?: ElementRef;
789
+ readonly nativeInputFile: i0.Signal<ElementRef<any> | undefined>;
556
790
  private mediaService;
557
791
  accept: string;
558
792
  uploadComplete: EventEmitter<Media>;
@@ -1125,12 +1359,58 @@ declare class TaskLogTypeService extends BdbService {
1125
1359
  static ɵprov: i0.ɵɵInjectableDeclaration<TaskLogTypeService>;
1126
1360
  }
1127
1361
 
1362
+ interface BdbRoute extends Route {
1363
+ icon: string;
1364
+ name: string;
1365
+ }
1366
+ interface BbdEntitySettings<TEntity extends BdbEntity> extends BdbRoute {
1367
+ single: string;
1368
+ label: (entity: TEntity) => string;
1369
+ }
1370
+
1128
1371
  declare const loggedOutGuard: CanActivateFn;
1129
1372
 
1130
1373
  declare const resetPasswordResolver: ResolveFn<ResetPasswordToken>;
1131
1374
 
1132
1375
  declare function roleGuard(...roles: string[]): CanActivateFn;
1133
1376
 
1377
+ declare class BdbAppLayoutComponent {
1378
+ modules: InputSignal<BdbRoute[]>;
1379
+ appTitle: InputSignal<string>;
1380
+ version: InputSignal<string>;
1381
+ opened: boolean;
1382
+ sidenavMode: 'side' | 'over';
1383
+ isHandset: i0.WritableSignal<boolean>;
1384
+ authService: AuthService;
1385
+ changeDetectorRef: ChangeDetectorRef;
1386
+ breakpointObserver: BreakpointObserver;
1387
+ bdbOptions: _devopmaat_badaboom.BdbOptions;
1388
+ logoutRoutePath: string;
1389
+ appToolbar: i0.Signal<ElementRef<any>>;
1390
+ appToolbarHeight: number;
1391
+ constructor();
1392
+ ngAfterViewInit(): void;
1393
+ private setAppToolbarHeight;
1394
+ static ɵfac: i0.ɵɵFactoryDeclaration<BdbAppLayoutComponent, never>;
1395
+ 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>;
1396
+ }
1397
+
1398
+ declare function BdbEntityResolver<TEntity extends BdbEntity, TEntityRead extends BdbEntityRead, TEntityService extends BdbServiceR<TEntity, TEntityRead>>(service: ProviderToken<TEntityService>): ResolveFn<TEntity>;
1399
+
1400
+ declare class BdbNavListComponent {
1401
+ routes: i0.InputSignal<BdbRoute[]>;
1402
+ parentRoute: i0.InputSignal<BdbRoute | undefined>;
1403
+ getRouterLink(route: BdbRoute): string[];
1404
+ static ɵfac: i0.ɵɵFactoryDeclaration<BdbNavListComponent, never>;
1405
+ 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>;
1406
+ }
1407
+
1408
+ declare class BdbPageHeaderComponent {
1409
+ pageTitle: i0.InputSignal<string>;
1410
+ static ɵfac: i0.ɵɵFactoryDeclaration<BdbPageHeaderComponent, never>;
1411
+ static ɵcmp: i0.ɵɵComponentDeclaration<BdbPageHeaderComponent, "bdb-page-header", never, { "pageTitle": { "alias": "pageTitle"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
1412
+ }
1413
+
1134
1414
  declare class AccessDeniedPageComponent implements OnInit, OnDestroy {
1135
1415
  private authService;
1136
1416
  private readonly _onDestroy;
@@ -1227,5 +1507,5 @@ declare class ResetPasswordPageComponent implements OnInit {
1227
1507
  static ɵcmp: i0.ɵɵComponentDeclaration<ResetPasswordPageComponent, "bdb-reset-password-page", never, {}, {}, never, never, true, never>;
1228
1508
  }
1229
1509
 
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 };
1510
+ 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 };
1511
+ export type { AccountInfo, BbdEntitySettings, BdbBooleanColumnOptions, BdbColumn, BdbColumnOptions, BdbContextAction, BdbCurrencyColumnOptions, BdbDateColumnOptions, BdbEntity, BdbEntityRead, BdbEntityUpdate, BdbEnumColumnOptions, BdbFilter, BdbM3Palette, BdbNumberColumnOptions, BdbOptions, BdbOptionsConfigure, BdbPalette, BdbPercentageColumnOptions, BdbRequest, BdbRequestOptions, 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 };