@elderbyte/ngx-starter 19.12.0 → 19.13.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.
Files changed (33) hide show
  1. package/fesm2022/elderbyte-ngx-starter.mjs +1898 -1247
  2. package/fesm2022/elderbyte-ngx-starter.mjs.map +1 -1
  3. package/lib/common/data/datasource/curated/curated-data-source.d.ts +43 -0
  4. package/lib/common/data/datasource/curated/curated-list-data-source.d.ts +24 -0
  5. package/lib/common/data/datasource/curated/curated-paged-data-source.d.ts +30 -0
  6. package/lib/common/data/datasource/data-source-base.d.ts +3 -2
  7. package/lib/common/data/datasource/entity-id-util.d.ts +4 -1
  8. package/lib/common/data/datasource/local/local-list-data-source.d.ts +7 -4
  9. package/lib/common/data/datasource/public_api.d.ts +4 -0
  10. package/lib/common/forms/elder-multi-entity-value-accessor.d.ts +4 -20
  11. package/lib/common/forms/entities-change-event.d.ts +19 -0
  12. package/lib/common/forms/public_api.d.ts +2 -0
  13. package/lib/common/forms/value-accessor-base.d.ts +14 -7
  14. package/lib/common/forms/value-change-event.d.ts +6 -0
  15. package/lib/common/utils/local-data-filter.d.ts +44 -11
  16. package/lib/common/utils/object-path-resolver.d.ts +15 -0
  17. package/lib/components/data-view/table/elder-table/elder-table.component.d.ts +20 -11
  18. package/lib/components/data-view/table/table-navigation/table-navigation.component.d.ts +47 -0
  19. package/lib/components/select/filter/elder-chip-filter-style-resolver.d.ts +2 -2
  20. package/lib/components/select/filter/elder-chips-include-exclude.directive.d.ts +7 -6
  21. package/lib/components/select/filter/include-exclude-selection-model.d.ts +19 -16
  22. package/lib/components/select/multi/elder-multi-select-base.d.ts +19 -10
  23. package/lib/components/select/multi/elder-multi-select-chips/elder-multi-select-chips-options.directive.d.ts +42 -0
  24. package/lib/components/select/multi/elder-multi-select-chips/elder-multi-select-chips.component.d.ts +3 -2
  25. package/lib/components/select/multi/public_api.d.ts +1 -0
  26. package/lib/components/time/elder-local-date-input/elder-local-date-input.component.d.ts +3 -1
  27. package/lib/components/time/elder-toggle-text-input.directive.d.ts +34 -0
  28. package/lib/components/time/public_api.d.ts +1 -0
  29. package/lib/components/time/smart-local-date-parser.service.d.ts +9 -0
  30. package/package.json +1 -1
  31. package/src/assets/i18n/de.json +1 -1
  32. package/src/lib/components/data-view/table/table-navigation/table-navigation.component.scss +0 -0
  33. package/theming/components/_elder-table-theme.scss +1 -1
@@ -0,0 +1,43 @@
1
+ import { LocalListDataSource, DataSourceChangeEvent, LocalDataSortFn, LocalDataFilterFn, IDataSource } from '../../public_api';
2
+ import { Observable } from 'rxjs';
3
+ export declare class CuratedDataSource<TEntity> implements IDataSource<TEntity> {
4
+ readonly originalSource: IDataSource<TEntity>;
5
+ /***************************************************************************
6
+ * *
7
+ * Fields *
8
+ * *
9
+ **************************************************************************/
10
+ protected readonly curatedData: LocalListDataSource<TEntity>;
11
+ private readonly useCuratedData$;
12
+ private readonly ready$;
13
+ private readonly _dataChanged;
14
+ /***************************************************************************
15
+ * *
16
+ * Constructor *
17
+ * *
18
+ **************************************************************************/
19
+ constructor(originalSource: IDataSource<TEntity>, localSort?: LocalDataSortFn<TEntity>, localFilter?: LocalDataFilterFn<TEntity>);
20
+ /***************************************************************************
21
+ * *
22
+ * Public API *
23
+ * *
24
+ **************************************************************************/
25
+ useCuratedData(data: TEntity[]): void;
26
+ useNonCuratedData(): void;
27
+ /***************************************************************************
28
+ * *
29
+ * IDataSource API *
30
+ * *
31
+ **************************************************************************/
32
+ get dataChanged(): Observable<DataSourceChangeEvent<TEntity, any>>;
33
+ findById(id: any): Observable<TEntity>;
34
+ findByIds(ids: any[]): Observable<TEntity[]>;
35
+ getId(entity: TEntity): any;
36
+ /***************************************************************************
37
+ * *
38
+ * Private methods *
39
+ * *
40
+ **************************************************************************/
41
+ protected get readyUseCurated$(): Observable<boolean>;
42
+ private buildDataChanged;
43
+ }
@@ -0,0 +1,24 @@
1
+ import { Observable } from 'rxjs';
2
+ import { IListDataSource, Sort, Filter, LocalDataSortFn, LocalDataFilterFn } from '../../public_api';
3
+ import { CuratedDataSource } from './curated-data-source';
4
+ /**
5
+ * Wraps a standard IListDataSource, and provides the ability to overwrite
6
+ * the returned data with custom curated data.
7
+ *
8
+ * You need to either invoke useCuratedData(..) or useNonCuratedData() to make data available.
9
+ */
10
+ export declare class CuratedListDataSource<TEntity> extends CuratedDataSource<TEntity> implements IListDataSource<TEntity> {
11
+ private listDataSource;
12
+ /***************************************************************************
13
+ * *
14
+ * Constructor *
15
+ * *
16
+ **************************************************************************/
17
+ constructor(listDataSource: IListDataSource<TEntity>, localSort?: LocalDataSortFn<TEntity>, localFilter?: LocalDataFilterFn<TEntity>);
18
+ /***************************************************************************
19
+ * *
20
+ * Public API *
21
+ * *
22
+ **************************************************************************/
23
+ findAllFiltered(filters?: Filter[], sorts?: Sort[]): Observable<Array<TEntity>>;
24
+ }
@@ -0,0 +1,30 @@
1
+ import { Observable } from 'rxjs';
2
+ import { IPagedDataSource, Page, Pageable, Filter, LocalDataSortFn, LocalDataFilterFn } from '../../public_api';
3
+ import { CuratedDataSource } from './curated-data-source';
4
+ /**
5
+ * Wraps a standard IPagedDataSource, and provides the ability to overwrite
6
+ * the returned data with custom curated data.
7
+ *
8
+ * You need to either invoke useCuratedData(..) or useNonCuratedData() to make data available.
9
+ */
10
+ export declare class CuratedPagedDataSource<TEntity> extends CuratedDataSource<TEntity> implements IPagedDataSource<TEntity> {
11
+ private pagedDataSource;
12
+ /***************************************************************************
13
+ * *
14
+ * Fields *
15
+ * *
16
+ **************************************************************************/
17
+ private readonly curatedDataPaged;
18
+ /***************************************************************************
19
+ * *
20
+ * Constructor *
21
+ * *
22
+ **************************************************************************/
23
+ constructor(pagedDataSource: IPagedDataSource<TEntity>, localSort?: LocalDataSortFn<TEntity>, localFilter?: LocalDataFilterFn<TEntity>);
24
+ /***************************************************************************
25
+ * *
26
+ * Public API *
27
+ * *
28
+ **************************************************************************/
29
+ findAllPaged(pageable: Pageable, filters?: Filter[]): Observable<Page<TEntity>>;
30
+ }
@@ -1,20 +1,21 @@
1
1
  import { IDataSource } from './data-source';
2
2
  import { DataSourceChangeEvent } from './data-source-change-event';
3
3
  import { Observable } from 'rxjs';
4
+ import { IdExtractor } from './entity-id-util';
4
5
  export declare abstract class DataSourceBase<T> implements IDataSource<T> {
5
- protected readonly idProperty: string | null;
6
6
  /***************************************************************************
7
7
  * *
8
8
  * Fields *
9
9
  * *
10
10
  **************************************************************************/
11
11
  private readonly dataChangeEvents$;
12
+ private readonly extractIdFn;
12
13
  /***************************************************************************
13
14
  * *
14
15
  * Constructor *
15
16
  * *
16
17
  **************************************************************************/
17
- constructor(idProperty: string | null);
18
+ protected constructor(propertyOrIdExtractor: string | IdExtractor<T>);
18
19
  /***************************************************************************
19
20
  * *
20
21
  * Properties *
@@ -1,3 +1,6 @@
1
+ export type IdExtractor<T> = (entity: T) => any;
1
2
  export declare class EntityIdUtil {
2
- static getId<T>(entity: T, idProperty: string): any;
3
+ static getId<T>(entity: T, idProperty: string | null): any;
4
+ static extractIdFnOrProperty<T>(idPropertyOrExtractFn: string | null | IdExtractor<T>): IdExtractor<T>;
5
+ static extractIdFn<T>(idProperty: string | null): IdExtractor<T>;
3
6
  }
@@ -3,6 +3,9 @@ import { Sort } from '../../sort';
3
3
  import { Observable } from 'rxjs';
4
4
  import { IListDataSource } from '../data-source';
5
5
  import { DataSourceBase } from '../data-source-base';
6
+ import { IdExtractor } from '../entity-id-util';
7
+ export type LocalDataSortFn<T> = (data: T[], sorts: Sort[]) => T[];
8
+ export type LocalDataFilterFn<T> = (data: T[], filters: Filter[]) => T[];
6
9
  export declare class LocalListDataSource<T> extends DataSourceBase<T> implements IListDataSource<T> {
7
10
  /***************************************************************************
8
11
  * *
@@ -21,18 +24,18 @@ export declare class LocalListDataSource<T> extends DataSourceBase<T> implements
21
24
  /**
22
25
  * Creates an empty local list data-source.
23
26
  * You can set / modify data by using the data property.
24
- * @param idProperty
27
+ * @param idPropertyOrExtractor
25
28
  * @param localSort
26
29
  * @param localFilter
27
30
  */
28
- static empty<T>(idProperty: string | null, localSort?: (data: T[], sorts: Sort[]) => T[], localFilter?: (data: T[], filters: Filter[]) => T[]): LocalListDataSource<T>;
29
- static from<T>(localData: T[], idProperty: string | null, localSort?: (data: T[], sorts: Sort[]) => T[], localFilter?: (data: T[], filters: Filter[]) => T[]): LocalListDataSource<T>;
31
+ static empty<T>(idPropertyOrExtractor: string | null | IdExtractor<T>, localSort?: LocalDataSortFn<T>, localFilter?: LocalDataFilterFn<T>): LocalListDataSource<T>;
32
+ static from<T>(localData: T[], idPropertyOrExtractor: string | null | IdExtractor<T>, localSort?: LocalDataSortFn<T>, localFilter?: LocalDataFilterFn<T>): LocalListDataSource<T>;
30
33
  /***************************************************************************
31
34
  * *
32
35
  * Constructor *
33
36
  * *
34
37
  **************************************************************************/
35
- constructor(localData: T[], localSort: (data: T[], sorts: Sort[]) => T[], localFilter: (data: T[], filters: Filter[]) => T[], idProperty: string | null);
38
+ constructor(localData: T[], localSort: LocalDataSortFn<T>, localFilter: LocalDataFilterFn<T>, idPropertyOrExtractor: string | null | IdExtractor<T>);
36
39
  /***************************************************************************
37
40
  * *
38
41
  * Properties *
@@ -7,3 +7,7 @@ export * from './local/local-list-data-source';
7
7
  export * from './local/local-paged-data-source';
8
8
  export * from './fetcher/delegate-data-source';
9
9
  export * from './data-source-change-event';
10
+ export * from './entity-id-util';
11
+ export * from './curated/curated-data-source';
12
+ export * from './curated/curated-list-data-source';
13
+ export * from './curated/curated-paged-data-source';
@@ -1,4 +1,5 @@
1
1
  import { Observable } from 'rxjs';
2
+ import { EntitiesChangeEvent } from './entities-change-event';
2
3
  /**
3
4
  * Represents a control which is backed by entities (along values).
4
5
  *
@@ -14,24 +15,7 @@ export interface IElderMultiEntityValueAccessor<TEntity, TId, TValue> {
14
15
  * Gets or sets the entity id
15
16
  */
16
17
  entityIds: TId[];
17
- /**
18
- * Emits when the entity id has changed.
19
- */
20
- readonly entityIdsChange: Observable<TId[]>;
21
- /**
22
- * Emits when the entity has changed.
23
- */
24
- readonly entitiesChange: Observable<TEntity[]>;
25
- /**
26
- * Similar to entity-id change, but emits only when the user
27
- * has updated the value.
28
- */
29
- readonly entityIdsUpdated: Observable<TId[]>;
30
- /**
31
- * Similar to entity change, but emits only when the user
32
- * has updated the value.
33
- */
34
- readonly entitiesUpdated: Observable<TEntity[]>;
18
+ readonly entitiesChangeEvent: Observable<EntitiesChangeEvent<TId, TEntity>>;
35
19
  /**
36
20
  * Update the control value by the given entity
37
21
  * and emit a value-updated event which simulates
@@ -46,7 +30,7 @@ export interface IElderMultiEntityValueAccessor<TEntity, TId, TValue> {
46
30
  entityToValue(entity: TEntity): TValue;
47
31
  }
48
32
  export declare class ElderMultiEntityValueAccessorUtil {
49
- static entities$<TEntity>(vac: IElderMultiEntityValueAccessor<TEntity, any, any>): Observable<TEntity[]>;
50
- static entityIds$<TId>(vac: IElderMultiEntityValueAccessor<any, TId, any>): Observable<TId[]>;
33
+ static entities$<TEntity>(multiAccessor: IElderMultiEntityValueAccessor<TEntity, any, any>): Observable<TEntity[]>;
34
+ static entityIds$<TId>(multiAccessor: IElderMultiEntityValueAccessor<any, TId, any>): Observable<TId[]>;
51
35
  }
52
36
  export declare function isElderMultiEntityValueAccessor(object: any): object is IElderMultiEntityValueAccessor<any, any, any>;
@@ -0,0 +1,19 @@
1
+ export declare class EntitiesChangeEvent<TId, TEntity> {
2
+ readonly idSetBefore: Set<TId>;
3
+ readonly afterById: Map<TId, TEntity>;
4
+ readonly userInitiated: boolean;
5
+ readonly delta: EntityDelta<TId, TEntity>;
6
+ constructor(idSetBefore: Set<TId>, afterById: Map<TId, TEntity>, userInitiated: boolean);
7
+ get idsBefore(): TId[];
8
+ get idsAfter(): TId[];
9
+ get entitiesAfter(): TEntity[];
10
+ }
11
+ export declare class EntityDelta<TId, TEntity> {
12
+ readonly added: Map<TId, TEntity>;
13
+ readonly removed: Set<TId>;
14
+ static buildDelta<TId, TEntity>(idSetBefore: Set<TId>, afterById: Map<TId, TEntity>): EntityDelta<TId, TEntity>;
15
+ private constructor();
16
+ get addedIds(): TId[];
17
+ get removedIds(): TId[];
18
+ get addedEntities(): TEntity[];
19
+ }
@@ -1,6 +1,7 @@
1
1
  export * from './view-providers';
2
2
  export * from './elder-entity-value-accessor';
3
3
  export * from './elder-multi-entity-value-accessor';
4
+ export * from './entities-change-event';
4
5
  export * from './template-composite-control';
5
6
  export * from './value-accessor-base';
6
7
  export * from './form-field-base.component';
@@ -9,3 +10,4 @@ export * from './multi-model-base.component';
9
10
  export * from './elder-from-field-base';
10
11
  export * from './elder-from-field-entity-base';
11
12
  export * from './elder-from-field-multi-entity-base';
13
+ export * from './value-change-event';
@@ -1,5 +1,6 @@
1
1
  import { ControlValueAccessor } from '@angular/forms';
2
2
  import { Observable } from 'rxjs';
3
+ import { ValueChangeEvent } from './value-change-event';
3
4
  import * as i0 from "@angular/core";
4
5
  /**
5
6
  * Manages the control value event handlers
@@ -13,23 +14,23 @@ export declare abstract class ValueAccessorBase<T> implements ControlValueAccess
13
14
  private readonly _value$;
14
15
  private _changed;
15
16
  private _touched;
16
- private readonly _valueUpdateSub;
17
+ private readonly _valueChangeEvent;
17
18
  /***************************************************************************
18
19
  * *
19
20
  * Properties *
20
21
  * *
21
22
  **************************************************************************/
23
+ readonly valueChangeEvent: Observable<ValueChangeEvent<T>>;
22
24
  /**
23
25
  * Emits the updated value.
24
26
  * In contrast to the valueChange, this event is only
25
- * fired when a control explicitly writes a value to the model.
27
+ * fired when a user action explicitly writes a value to the model.
26
28
  */
27
- get valueUpdated(): Observable<T>;
29
+ readonly valueUpdated: Observable<T>;
28
30
  /**
29
- * Get a value change event every time the value is changed,
30
- * except the initial value which is skipped.
31
+ * Get a value change event every time the value is changed.
31
32
  */
32
- get valueChange(): Observable<T>;
33
+ valueChange: Observable<T>;
33
34
  /**
34
35
  * Gets the current value as observable stream.
35
36
  */
@@ -93,6 +94,12 @@ export declare abstract class ValueAccessorBase<T> implements ControlValueAccess
93
94
  protected emitOnTouch(): void;
94
95
  protected emitOnChanged(value: T): void;
95
96
  protected abstract writeToControl(value: T): void;
97
+ /***************************************************************************
98
+ * *
99
+ * Private methods *
100
+ * *
101
+ **************************************************************************/
102
+ private writeValueAndEmit;
96
103
  static ɵfac: i0.ɵɵFactoryDeclaration<ValueAccessorBase<any>, never>;
97
- static ɵdir: i0.ɵɵDirectiveDeclaration<ValueAccessorBase<any>, never, never, { "value": { "alias": "value"; "required": false; }; }, { "valueUpdated": "valueUpdated"; "valueChange": "valueChange"; }, never, never, true, never>;
104
+ static ɵdir: i0.ɵɵDirectiveDeclaration<ValueAccessorBase<any>, never, never, { "value": { "alias": "value"; "required": false; }; }, { "valueChangeEvent": "valueChangeEvent"; "valueUpdated": "valueUpdated"; "valueChange": "valueChange"; }, never, never, true, never>;
98
105
  }
@@ -0,0 +1,6 @@
1
+ export declare class ValueChangeEvent<T> {
2
+ readonly valueBefore: T | undefined;
3
+ readonly valueAfter: T | undefined;
4
+ readonly userInitiated: boolean;
5
+ constructor(valueBefore: T | undefined, valueAfter: T | undefined, userInitiated: boolean);
6
+ }
@@ -2,16 +2,47 @@ import { Filter } from '../data/filters/filter';
2
2
  export interface GenericMatcherOptions {
3
3
  mode: 'start' | 'full' | 'anywhere';
4
4
  caseSensitive: boolean;
5
+ excludeSuffix?: string;
5
6
  }
6
- export declare class CustomMatcherSpec {
7
+ export declare class TargetValue<TEntity> {
8
+ readonly entity: TEntity;
9
+ readonly resolvedValue: unknown;
10
+ constructor(entity: TEntity, resolvedValue: unknown);
11
+ }
12
+ /**
13
+ * Allows defining custom filter matchers.
14
+ *
15
+ * @example
16
+ *
17
+ * const customFilterMatchers = CustomMatcherSpec.start()
18
+ * .customFilterWildcard((filter, target) => {
19
+ * return target.resolvedValue.indexOf(filter.value) >= 0
20
+ * })
21
+ * .customFilter('name', (filter, target) => {
22
+ * return target.resolvedValue.indexOf(filter.value) >= 0
23
+ })
24
+ */
25
+ export declare class CustomMatcherSpec<TEntity> {
7
26
  private readonly customFilterMatchers;
8
- static start(): CustomMatcherSpec;
9
- customFilterWildcard(matcher: (filter: Filter, resolvedValue: any) => boolean): this;
10
- customFilter(filterKey: string, matcher: (filter: Filter, resolvedValue: any) => boolean): this;
27
+ static start<TEntity>(): CustomMatcherSpec<TEntity>;
28
+ customFilterWildcard(matcher: (filter: Filter, target: TargetValue<TEntity>) => boolean): this;
29
+ customFilter(filterKey: string, matcher: (filter: Filter, target: TargetValue<TEntity>) => boolean): this;
11
30
  toMap(): Map<string, // Filter Key
12
- (filter: Filter, resolvedValue: any) => boolean>;
31
+ (filter: Filter, target: TargetValue<TEntity>) => boolean>;
13
32
  }
14
- export declare class LocalDataFilter {
33
+ /**
34
+ * Filters data based on a set of filters.
35
+ *
36
+ * @example
37
+ *
38
+ * const filter = new LocalDataFilter.generic({
39
+ * mode: 'start',
40
+ * caseSensitive: false
41
+ * })
42
+ *
43
+ * const filtered = filter.filterData(data, [])
44
+ */
45
+ export declare class LocalDataFilter<TEntity> {
15
46
  private readonly genericOptions;
16
47
  private readonly customFilterMatchers;
17
48
  /***************************************************************************
@@ -19,8 +50,8 @@ export declare class LocalDataFilter {
19
50
  * Static Builder *
20
51
  * *
21
52
  **************************************************************************/
22
- static generic(options: GenericMatcherOptions): LocalDataFilter;
23
- static custom(customMatcher: CustomMatcherSpec, options: GenericMatcherOptions): LocalDataFilter;
53
+ static generic<TEntity = any>(options: GenericMatcherOptions): LocalDataFilter<TEntity>;
54
+ static custom<TEntity>(customMatcher: CustomMatcherSpec<TEntity>, options: GenericMatcherOptions): LocalDataFilter<TEntity>;
24
55
  /***************************************************************************
25
56
  * *
26
57
  * Fields *
@@ -46,9 +77,11 @@ export declare class LocalDataFilter {
46
77
  * *
47
78
  **************************************************************************/
48
79
  private matches;
49
- private resolveValue;
50
- private resolveObjectValue;
80
+ private resolveObjectPath;
81
+ private isExclude;
51
82
  private matchesResolvedValue;
52
83
  private matchesResolvedValueGeneric;
53
- private matchesGeneric;
84
+ private matchesGenericInclude;
85
+ private matchesGenericExclude;
86
+ private matchesSingleValue;
54
87
  }
@@ -0,0 +1,15 @@
1
+ export declare class ObjectPathResolver {
2
+ private static readonly log;
3
+ /***************************************************************************
4
+ * *
5
+ * Public API *
6
+ * *
7
+ **************************************************************************/
8
+ static resolveValue(entity: unknown, fieldPath: string): unknown;
9
+ /***************************************************************************
10
+ * *
11
+ * Private methods *
12
+ * *
13
+ **************************************************************************/
14
+ private static resolveObjectValue;
15
+ }
@@ -1,5 +1,4 @@
1
- import { AfterContentInit, AfterViewInit, ChangeDetectorRef, NgZone, OnInit, QueryList, Signal, TemplateRef, TrackByFunction } from '@angular/core';
2
- import { MatPaginator } from '@angular/material/paginator';
1
+ import { AfterContentInit, AfterViewInit, NgZone, OnInit, QueryList, Signal, TemplateRef, TrackByFunction, ViewContainerRef } from '@angular/core';
3
2
  import { MatSort } from '@angular/material/sort';
4
3
  import { IDataContext } from '../../../../common/data/data-context/data-context';
5
4
  import { SelectionModel } from '../../../../common/selection/selection-model';
@@ -12,12 +11,22 @@ import { ElderTableModel } from '../model/elder-table-model';
12
11
  import { ElderTableExtensionDirective } from '../elder-table-extension.directive';
13
12
  import { ElderTableColumnDirective } from '../elder-table-column.directive';
14
13
  import { ElderDataViewOptionsProvider } from '../../base/elder-data-view-options-provider';
15
- import { ElderContinuatorComponent } from '../../common/elder-continuator/elder-continuator.component';
16
14
  import * as i0 from "@angular/core";
15
+ /**
16
+ * The table navigation bar, typically located below the table,
17
+ * containing the pagination control and other table controls.
18
+ * If omitted, the default template is used.
19
+ */
20
+ export declare class ElderTableNavigationBarDirective {
21
+ templateRef: TemplateRef<any>;
22
+ viewContainer: ViewContainerRef;
23
+ constructor(templateRef: TemplateRef<any>, viewContainer: ViewContainerRef);
24
+ static ɵfac: i0.ɵɵFactoryDeclaration<ElderTableNavigationBarDirective, never>;
25
+ static ɵdir: i0.ɵɵDirectiveDeclaration<ElderTableNavigationBarDirective, "[elderTableNavigationBar]", never, {}, {}, never, never, true, never>;
26
+ }
17
27
  export declare class ElderTableComponent<T = any> extends ElderDataViewBaseComponent<T> implements OnInit, AfterContentInit, AfterViewInit {
18
28
  readonly tableModel: ElderTableModel;
19
29
  private readonly parentExtension;
20
- private cdr;
21
30
  private zone;
22
31
  /***************************************************************************
23
32
  * *
@@ -31,14 +40,12 @@ export declare class ElderTableComponent<T = any> extends ElderDataViewBaseCompo
31
40
  private loadNextQueued;
32
41
  matTable: CdkTable<any>;
33
42
  readonly pageSizeOptions: import("@angular/core").InputSignal<number[]>;
34
- matPaginator: MatPaginator;
35
- elderContinuator: ElderContinuatorComponent;
36
43
  private readonly _matSort;
37
44
  columnDefs: QueryList<CdkColumnDef>;
38
45
  elderColumns: QueryList<ElderTableColumnDirective>;
39
46
  rowDefs: QueryList<CdkRowDef<any>>;
40
47
  /**
41
- * ID of table component.
48
+ * ID of the table component.
42
49
  */
43
50
  readonly id: import("@angular/core").InputSignal<string>;
44
51
  /**
@@ -65,13 +72,15 @@ export declare class ElderTableComponent<T = any> extends ElderDataViewBaseCompo
65
72
  */
66
73
  hiddenField: string;
67
74
  readonly keepSelection: import("@angular/core").InputSignalWithTransform<boolean, import("@angular/cdk/coercion").BooleanInput>;
68
- readonly showFooter: import("@angular/core").InputSignalWithTransform<boolean, import("@angular/cdk/coercion").BooleanInput>;
75
+ readonly showFooterRow: import("@angular/core").InputSignalWithTransform<boolean, import("@angular/cdk/coercion").BooleanInput>;
69
76
  readonly denseHorizontal: import("@angular/core").InputSignalWithTransform<boolean, import("@angular/cdk/coercion").BooleanInput>;
77
+ readonly hideHeaderRow: import("@angular/core").InputSignalWithTransform<boolean, import("@angular/cdk/coercion").BooleanInput>;
70
78
  /**
71
79
  * The table toolbar
72
80
  */
73
81
  toolbarRowTemplateQuery: QueryList<TemplateRef<any>>;
74
82
  readonly toolbarRowTemplates: import("@angular/core").WritableSignal<TemplateRef<any>[]>;
83
+ readonly navigationBar: Signal<TemplateRef<any>>;
75
84
  /**
76
85
  * Selection model life cycle
77
86
  */
@@ -92,7 +101,7 @@ export declare class ElderTableComponent<T = any> extends ElderDataViewBaseCompo
92
101
  * Constructor *
93
102
  * *
94
103
  **************************************************************************/
95
- constructor(tableModel: ElderTableModel, selectionModel: SelectionModel<T>, dataViewOptionsProvider: ElderDataViewOptionsProvider, matSort: MatSort, parentExtension: ElderTableExtensionDirective, cdr: ChangeDetectorRef, zone: NgZone);
104
+ constructor(tableModel: ElderTableModel, selectionModel: SelectionModel<T>, dataViewOptionsProvider: ElderDataViewOptionsProvider, matSort: MatSort, parentExtension: ElderTableExtensionDirective, zone: NgZone);
96
105
  /***************************************************************************
97
106
  * *
98
107
  * Life Cycle *
@@ -133,6 +142,6 @@ export declare class ElderTableComponent<T = any> extends ElderDataViewBaseCompo
133
142
  **************************************************************************/
134
143
  private setupSelectionLifeCycle;
135
144
  private getRowForItem;
136
- static ɵfac: i0.ɵɵFactoryDeclaration<ElderTableComponent<any>, [null, { optional: true; }, { optional: true; skipSelf: true; }, { optional: true; }, { optional: true; skipSelf: true; }, null, null]>;
137
- static ɵcmp: i0.ɵɵComponentDeclaration<ElderTableComponent<any>, "elder-table", ["elderTable"], { "pageSizeOptions": { "alias": "pageSizeOptions"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "idField": { "alias": "idField"; "required": false; }; "removingField": { "alias": "removingField"; "required": false; }; "hiddenField": { "alias": "hiddenField"; "required": false; }; "keepSelection": { "alias": "keepSelection"; "required": false; "isSignal": true; }; "showFooter": { "alias": "showFooter"; "required": false; "isSignal": true; }; "denseHorizontal": { "alias": "denseHorizontal"; "required": false; "isSignal": true; }; "toolbarTemplate": { "alias": "toolbarTemplate"; "required": false; }; "data": { "alias": "data"; "required": false; }; "displayedColumns": { "alias": "displayedColumns"; "required": false; }; "selectionVisible": { "alias": "selectionVisible"; "required": false; }; }, {}, ["columnDefs", "elderColumns", "rowDefs", "toolbarRowTemplateQuery"], never, true, never>;
145
+ static ɵfac: i0.ɵɵFactoryDeclaration<ElderTableComponent<any>, [null, { optional: true; }, { optional: true; skipSelf: true; }, { optional: true; }, { optional: true; skipSelf: true; }, null]>;
146
+ static ɵcmp: i0.ɵɵComponentDeclaration<ElderTableComponent<any>, "elder-table", ["elderTable"], { "pageSizeOptions": { "alias": "pageSizeOptions"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "idField": { "alias": "idField"; "required": false; }; "removingField": { "alias": "removingField"; "required": false; }; "hiddenField": { "alias": "hiddenField"; "required": false; }; "keepSelection": { "alias": "keepSelection"; "required": false; "isSignal": true; }; "showFooterRow": { "alias": "showFooterRow"; "required": false; "isSignal": true; }; "denseHorizontal": { "alias": "denseHorizontal"; "required": false; "isSignal": true; }; "hideHeaderRow": { "alias": "hideHeaderRow"; "required": false; "isSignal": true; }; "toolbarTemplate": { "alias": "toolbarTemplate"; "required": false; }; "data": { "alias": "data"; "required": false; }; "displayedColumns": { "alias": "displayedColumns"; "required": false; }; "selectionVisible": { "alias": "selectionVisible"; "required": false; }; }, {}, ["navigationBar", "columnDefs", "elderColumns", "rowDefs", "toolbarRowTemplateQuery"], never, true, never>;
138
147
  }
@@ -0,0 +1,47 @@
1
+ import { AfterViewInit, OnDestroy, Signal } from '@angular/core';
2
+ import { MatPaginator } from '@angular/material/paginator';
3
+ import { ElderContinuatorComponent, ElderTableComponent } from '../../public_api';
4
+ import { PageRequest } from '../../../../common/data/public_api';
5
+ import * as i0 from "@angular/core";
6
+ export declare class TableNavigationComponent implements AfterViewInit, OnDestroy {
7
+ protected readonly elderTable: ElderTableComponent;
8
+ /***************************************************************************
9
+ * *
10
+ * Fields *
11
+ * *
12
+ **************************************************************************/
13
+ protected readonly matPaginator: Signal<MatPaginator>;
14
+ private readonly matPaginator$;
15
+ protected readonly elderContinuator: Signal<ElderContinuatorComponent>;
16
+ private readonly elderContinuator$;
17
+ private readonly destroy$;
18
+ /***************************************************************************
19
+ * *
20
+ * Constructor *
21
+ * *
22
+ **************************************************************************/
23
+ constructor(elderTable: ElderTableComponent);
24
+ /***************************************************************************
25
+ * *
26
+ * Life Cycle *
27
+ * *
28
+ **************************************************************************/
29
+ ngAfterViewInit(): void;
30
+ ngOnDestroy(): void;
31
+ /***************************************************************************
32
+ * *
33
+ * Properties *
34
+ * *
35
+ **************************************************************************/
36
+ get isContinuable(): boolean;
37
+ get isActivePaged(): boolean;
38
+ get total(): Signal<string>;
39
+ get viewData(): Signal<any[]>;
40
+ get canLoadMore(): Signal<boolean>;
41
+ get pageSizeOptions(): Signal<number[]>;
42
+ get currentChunkSize(): Signal<number>;
43
+ get currentPage(): Signal<PageRequest>;
44
+ loadMore(): void;
45
+ static ɵfac: i0.ɵɵFactoryDeclaration<TableNavigationComponent, never>;
46
+ static ɵcmp: i0.ɵɵComponentDeclaration<TableNavigationComponent, "elder-table-navigation", never, {}, {}, never, never, true, never>;
47
+ }
@@ -14,6 +14,6 @@ export default class ElderChipFilterStyleResolver {
14
14
  * Public API *
15
15
  * *
16
16
  **************************************************************************/
17
- resolveChipSpec(filterEntity: IncludeExcludeState): SelectChipSpec;
18
- resolveAvatarIcon(filterEntity: IncludeExcludeState): string;
17
+ resolveChipSpec(filterEntity: IncludeExcludeState<any>): SelectChipSpec;
18
+ resolveAvatarIcon(filterEntity: IncludeExcludeState<any>): string;
19
19
  }
@@ -6,9 +6,9 @@ import * as i0 from "@angular/core";
6
6
  * Adds the ability to toggle select chips of a ElderMultiSelectChipsComponent by
7
7
  * binding it to a IncludeExcludeSelectionModel.
8
8
  */
9
- export declare class ElderChipsIncludeExcludeDirective<T = any> {
10
- readonly elderMultiSelectChips: ElderMultiSelectChipsComponent;
11
- readonly selectionModel: IncludeExcludeSelectionModel;
9
+ export declare class ElderChipsIncludeExcludeDirective<T = any, TId = string> {
10
+ readonly elderMultiSelectChips: ElderMultiSelectChipsComponent<TId, T>;
11
+ readonly selectionModel: IncludeExcludeSelectionModel<TId>;
12
12
  readonly vcr: ViewContainerRef;
13
13
  private readonly destroyRef;
14
14
  /***************************************************************************
@@ -23,7 +23,7 @@ export declare class ElderChipsIncludeExcludeDirective<T = any> {
23
23
  * Constructor *
24
24
  * *
25
25
  **************************************************************************/
26
- constructor(elderMultiSelectChips: ElderMultiSelectChipsComponent, selectionModel: IncludeExcludeSelectionModel, vcr: ViewContainerRef, destroyRef: DestroyRef);
26
+ constructor(elderMultiSelectChips: ElderMultiSelectChipsComponent<TId, T>, selectionModel: IncludeExcludeSelectionModel<TId>, vcr: ViewContainerRef, destroyRef: DestroyRef);
27
27
  /***************************************************************************
28
28
  * *
29
29
  * Properties *
@@ -38,6 +38,7 @@ export declare class ElderChipsIncludeExcludeDirective<T = any> {
38
38
  private setupFilterChips;
39
39
  private createFilterChipTemplate;
40
40
  private setupElderMultiSelectChipsListeners;
41
+ private applyOptionChipsChangeEvent;
41
42
  private resolveChipSpec;
42
43
  private resolveAvatarIcon;
43
44
  private handleChipClick;
@@ -45,6 +46,6 @@ export declare class ElderChipsIncludeExcludeDirective<T = any> {
45
46
  private ensureChipsNoChanges;
46
47
  private findFilterEntityByEntity;
47
48
  private findFilterEntityById;
48
- static ɵfac: i0.ɵɵFactoryDeclaration<ElderChipsIncludeExcludeDirective<any>, never>;
49
- static ɵdir: i0.ɵɵDirectiveDeclaration<ElderChipsIncludeExcludeDirective<any>, "[elderChipsIncludeExclude]", ["elderChipsIncludeExclude"], { "cycleStrategy": { "alias": "cycleStrategy"; "required": false; }; }, {}, never, never, true, never>;
49
+ static ɵfac: i0.ɵɵFactoryDeclaration<ElderChipsIncludeExcludeDirective<any, any>, never>;
50
+ static ɵdir: i0.ɵɵDirectiveDeclaration<ElderChipsIncludeExcludeDirective<any, any>, "[elderChipsIncludeExclude]", ["elderChipsIncludeExclude"], { "cycleStrategy": { "alias": "cycleStrategy"; "required": false; }; }, {}, never, never, true, never>;
50
51
  }