@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.
- package/fesm2022/elderbyte-ngx-starter.mjs +1898 -1247
- package/fesm2022/elderbyte-ngx-starter.mjs.map +1 -1
- package/lib/common/data/datasource/curated/curated-data-source.d.ts +43 -0
- package/lib/common/data/datasource/curated/curated-list-data-source.d.ts +24 -0
- package/lib/common/data/datasource/curated/curated-paged-data-source.d.ts +30 -0
- package/lib/common/data/datasource/data-source-base.d.ts +3 -2
- package/lib/common/data/datasource/entity-id-util.d.ts +4 -1
- package/lib/common/data/datasource/local/local-list-data-source.d.ts +7 -4
- package/lib/common/data/datasource/public_api.d.ts +4 -0
- package/lib/common/forms/elder-multi-entity-value-accessor.d.ts +4 -20
- package/lib/common/forms/entities-change-event.d.ts +19 -0
- package/lib/common/forms/public_api.d.ts +2 -0
- package/lib/common/forms/value-accessor-base.d.ts +14 -7
- package/lib/common/forms/value-change-event.d.ts +6 -0
- package/lib/common/utils/local-data-filter.d.ts +44 -11
- package/lib/common/utils/object-path-resolver.d.ts +15 -0
- package/lib/components/data-view/table/elder-table/elder-table.component.d.ts +20 -11
- package/lib/components/data-view/table/table-navigation/table-navigation.component.d.ts +47 -0
- package/lib/components/select/filter/elder-chip-filter-style-resolver.d.ts +2 -2
- package/lib/components/select/filter/elder-chips-include-exclude.directive.d.ts +7 -6
- package/lib/components/select/filter/include-exclude-selection-model.d.ts +19 -16
- package/lib/components/select/multi/elder-multi-select-base.d.ts +19 -10
- package/lib/components/select/multi/elder-multi-select-chips/elder-multi-select-chips-options.directive.d.ts +42 -0
- package/lib/components/select/multi/elder-multi-select-chips/elder-multi-select-chips.component.d.ts +3 -2
- package/lib/components/select/multi/public_api.d.ts +1 -0
- package/lib/components/time/elder-local-date-input/elder-local-date-input.component.d.ts +3 -1
- package/lib/components/time/elder-toggle-text-input.directive.d.ts +34 -0
- package/lib/components/time/public_api.d.ts +1 -0
- package/lib/components/time/smart-local-date-parser.service.d.ts +9 -0
- package/package.json +1 -1
- package/src/assets/i18n/de.json +1 -1
- package/src/lib/components/data-view/table/table-navigation/table-navigation.component.scss +0 -0
- 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(
|
|
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
|
|
27
|
+
* @param idPropertyOrExtractor
|
|
25
28
|
* @param localSort
|
|
26
29
|
* @param localFilter
|
|
27
30
|
*/
|
|
28
|
-
static empty<T>(
|
|
29
|
-
static from<T>(localData: 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:
|
|
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>(
|
|
50
|
-
static entityIds$<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
|
|
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
|
|
27
|
+
* fired when a user action explicitly writes a value to the model.
|
|
26
28
|
*/
|
|
27
|
-
|
|
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
|
-
|
|
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
|
}
|
|
@@ -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
|
|
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,
|
|
10
|
-
customFilter(filterKey: string, matcher: (filter: Filter,
|
|
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,
|
|
31
|
+
(filter: Filter, target: TargetValue<TEntity>) => boolean>;
|
|
13
32
|
}
|
|
14
|
-
|
|
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
|
|
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
|
|
50
|
-
private
|
|
80
|
+
private resolveObjectPath;
|
|
81
|
+
private isExclude;
|
|
51
82
|
private matchesResolvedValue;
|
|
52
83
|
private matchesResolvedValueGeneric;
|
|
53
|
-
private
|
|
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,
|
|
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
|
|
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,
|
|
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
|
|
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; }; "
|
|
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
|
|
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
|
}
|