@elderbyte/ngx-starter 14.5.4 → 14.7.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.
Files changed (87) hide show
  1. package/esm2020/lib/common/data/data-context/data-context-active-page.mjs +1 -1
  2. package/esm2020/lib/common/data/data-context/data-context-base.mjs +2 -2
  3. package/esm2020/lib/common/data/data-context/data-context-continuable-base.mjs +1 -1
  4. package/esm2020/lib/common/data/data-context/data-context.mjs +1 -1
  5. package/esm2020/lib/common/data/datasource/data-source-adapter.mjs +1 -1
  6. package/esm2020/lib/common/data/datasource/data-source-processor.mjs +1 -1
  7. package/esm2020/lib/common/data/datasource/data-source.mjs +1 -1
  8. package/esm2020/lib/common/data/datasource/fetcher/delegate-data-source.mjs +1 -1
  9. package/esm2020/lib/common/data/datasource/local/local-list-data-source.mjs +1 -1
  10. package/esm2020/lib/common/data/datasource/local/local-paged-data-source.mjs +1 -1
  11. package/esm2020/lib/common/data/datasource/rest/rest-client.mjs +2 -2
  12. package/esm2020/lib/common/data/filters/filter-context.mjs +141 -0
  13. package/esm2020/lib/common/data/filters/filter.mjs +109 -0
  14. package/esm2020/lib/common/data/http-params-builder.mjs +2 -2
  15. package/esm2020/lib/common/data/public_api.mjs +3 -3
  16. package/esm2020/lib/common/data/required-filter-evaluator.mjs +1 -1
  17. package/esm2020/lib/common/data/token-chunk-request.mjs +1 -1
  18. package/esm2020/lib/common/utils/filter-util.mjs +1 -1
  19. package/esm2020/lib/components/csv/elder-csv-export-btn/elder-csv-export-btn.component.mjs +1 -1
  20. package/esm2020/lib/components/csv/elder-csv-stream-exporter.mjs +1 -1
  21. package/esm2020/lib/components/data-view/base/data-view-options-provider-binding.mjs +5 -1
  22. package/esm2020/lib/components/data-view/base/elder-data-view-base.mjs +1 -5
  23. package/esm2020/lib/components/data-view/base/elder-data-view-options-provider.mjs +1 -1
  24. package/esm2020/lib/components/data-view/base/elder-data-view-options.mjs +4 -1
  25. package/esm2020/lib/components/forms/search/elder-search-context.directive.mjs +33 -19
  26. package/esm2020/lib/components/forms/search/elder-search-input.directive.mjs +6 -12
  27. package/esm2020/lib/components/http-support/elder-http-client.service.mjs +1 -1
  28. package/esm2020/lib/components/iframes/data-view/data-view-iframe/data-view-iframe.component.mjs +19 -10
  29. package/esm2020/lib/components/iframes/data-view/data-view-iframe-adapter.directive.mjs +3 -4
  30. package/esm2020/lib/components/input/autocomplete/elder-autocomplete/elder-autocomplete-option-selected.mjs +9 -0
  31. package/esm2020/lib/components/input/autocomplete/elder-autocomplete/elder-autocomplete.component.mjs +40 -25
  32. package/esm2020/lib/components/input/autocomplete/elder-autocomplete-many.directive.mjs +197 -0
  33. package/esm2020/lib/components/input/autocomplete/elder-autocomplete.directive.mjs +9 -9
  34. package/esm2020/lib/components/input/autocomplete/elder-autocomplete.module.mjs +19 -8
  35. package/esm2020/lib/components/input/autocomplete/many/word-position-finder.mjs +58 -0
  36. package/esm2020/lib/components/measures/directives/elder-unit-select.directive.mjs +2 -2
  37. package/esm2020/lib/components/public_api.mjs +1 -2
  38. package/esm2020/lib/components/select/elder-select-base.mjs +2 -2
  39. package/esm2020/lib/components/select/popup/selection-model-popup.directive.mjs +1 -1
  40. package/esm2020/lib/components/select/single/elder-select/elder-select.component.mjs +7 -6
  41. package/fesm2015/elderbyte-ngx-starter.mjs +461 -280
  42. package/fesm2015/elderbyte-ngx-starter.mjs.map +1 -1
  43. package/fesm2020/elderbyte-ngx-starter.mjs +458 -280
  44. package/fesm2020/elderbyte-ngx-starter.mjs.map +1 -1
  45. package/lib/common/data/data-context/data-context-active-page.d.ts +1 -1
  46. package/lib/common/data/data-context/data-context-base.d.ts +2 -2
  47. package/lib/common/data/data-context/data-context-continuable-base.d.ts +1 -1
  48. package/lib/common/data/data-context/data-context.d.ts +2 -2
  49. package/lib/common/data/datasource/data-source-adapter.d.ts +1 -1
  50. package/lib/common/data/datasource/data-source-processor.d.ts +1 -1
  51. package/lib/common/data/datasource/data-source.d.ts +1 -1
  52. package/lib/common/data/datasource/fetcher/delegate-data-source.d.ts +1 -1
  53. package/lib/common/data/datasource/local/local-list-data-source.d.ts +1 -1
  54. package/lib/common/data/datasource/local/local-paged-data-source.d.ts +1 -1
  55. package/lib/common/data/datasource/rest/rest-client.d.ts +1 -1
  56. package/lib/common/data/{filter-context.d.ts → filters/filter-context.d.ts} +3 -1
  57. package/lib/common/data/{filter.d.ts → filters/filter.d.ts} +15 -3
  58. package/lib/common/data/http-params-builder.d.ts +1 -1
  59. package/lib/common/data/public_api.d.ts +2 -2
  60. package/lib/common/data/required-filter-evaluator.d.ts +2 -2
  61. package/lib/common/data/token-chunk-request.d.ts +1 -1
  62. package/lib/common/utils/filter-util.d.ts +1 -1
  63. package/lib/components/csv/elder-csv-export-btn/elder-csv-export-btn.component.d.ts +1 -1
  64. package/lib/components/csv/elder-csv-stream-exporter.d.ts +1 -1
  65. package/lib/components/data-view/base/elder-data-view-options.d.ts +2 -1
  66. package/lib/components/forms/search/elder-search-context.directive.d.ts +15 -12
  67. package/lib/components/forms/search/elder-search-input.directive.d.ts +6 -7
  68. package/lib/components/http-support/elder-http-client.service.d.ts +1 -1
  69. package/lib/components/iframes/data-view/data-view-iframe/data-view-iframe.component.d.ts +4 -2
  70. package/lib/components/input/autocomplete/elder-autocomplete/elder-autocomplete-option-selected.d.ts +8 -0
  71. package/lib/components/input/autocomplete/elder-autocomplete/elder-autocomplete.component.d.ts +14 -14
  72. package/lib/components/{multi-autocomplete/elder-multi-autocomplete.component.d.ts → input/autocomplete/elder-autocomplete-many.directive.d.ts} +46 -27
  73. package/lib/components/input/autocomplete/elder-autocomplete.directive.d.ts +2 -2
  74. package/lib/components/input/autocomplete/elder-autocomplete.module.d.ts +11 -7
  75. package/lib/components/{multi-autocomplete/word-position.d.ts → input/autocomplete/many/word-position-finder.d.ts} +0 -0
  76. package/lib/components/public_api.d.ts +0 -1
  77. package/lib/components/select/elder-select-base.d.ts +1 -1
  78. package/lib/components/select/popup/selection-model-popup.directive.d.ts +1 -1
  79. package/lib/components/select/single/elder-select/elder-select.component.d.ts +2 -1
  80. package/package.json +1 -1
  81. package/esm2020/lib/common/data/filter-context.mjs +0 -129
  82. package/esm2020/lib/common/data/filter.mjs +0 -72
  83. package/esm2020/lib/components/multi-autocomplete/elder-multi-auto-complete.module.mjs +0 -30
  84. package/esm2020/lib/components/multi-autocomplete/elder-multi-autocomplete.component.mjs +0 -122
  85. package/esm2020/lib/components/multi-autocomplete/word-position.mjs +0 -38
  86. package/lib/components/multi-autocomplete/elder-multi-auto-complete.module.d.ts +0 -14
  87. package/src/lib/components/multi-autocomplete/elder-multi-autocomplete.component.scss +0 -0
@@ -1,6 +1,6 @@
1
1
  import { DataContextBase } from './data-context-base';
2
2
  import { PageRequest } from '../page';
3
- import { Filter } from '../filter';
3
+ import { Filter } from '../filters/filter';
4
4
  import { Observable } from 'rxjs';
5
5
  import { IDataContextActivePage } from './data-context';
6
6
  import { Sort } from '../sort';
@@ -1,9 +1,9 @@
1
- import { Filter } from '../filter';
1
+ import { Filter } from '../filters/filter';
2
2
  import { Sort } from '../sort';
3
3
  import { CollectionViewer, DataSource } from '@angular/cdk/collections';
4
4
  import { DataContextStatus } from './data-context-status';
5
5
  import { Observable, Subject } from 'rxjs';
6
- import { FilterContext } from '../filter-context';
6
+ import { FilterContext } from '../filters/filter-context';
7
7
  import { DataContextSnapshot, IDataContext } from './data-context';
8
8
  import { SortContext } from '../sort-context';
9
9
  import { IDataSource } from '../datasource/data-source';
@@ -1,6 +1,6 @@
1
1
  import { DataContextBase } from './data-context-base';
2
2
  import { Sort } from '../sort';
3
- import { Filter } from '../filter';
3
+ import { Filter } from '../filters/filter';
4
4
  import { Observable } from 'rxjs';
5
5
  import { IDataContextContinuable } from './data-context';
6
6
  import { IDataSource } from '../datasource/data-source';
@@ -1,8 +1,8 @@
1
1
  import { DataContextStatus } from './data-context-status';
2
2
  import { Observable } from 'rxjs';
3
3
  import { Sort } from '../sort';
4
- import { Filter } from '../filter';
5
- import { FilterContext } from '../filter-context';
4
+ import { Filter } from '../filters/filter';
5
+ import { FilterContext } from '../filters/filter-context';
6
6
  import { PageRequest } from '../page';
7
7
  import { SortContext } from '../sort-context';
8
8
  import { IDataSource } from '../datasource/data-source';
@@ -1,6 +1,6 @@
1
1
  import { IDataSource } from './data-source';
2
2
  import { Observable } from 'rxjs';
3
- import { Filter } from '../filter';
3
+ import { Filter } from '../filters/filter';
4
4
  import { Sort } from '../sort';
5
5
  export declare class DataSourceAdapter<T> {
6
6
  private readonly dataSource;
@@ -1,6 +1,6 @@
1
1
  import { IContinuableDataSource, IDataSource, IListDataSource, IPagedDataSource } from './data-source';
2
2
  import { Page } from '../page';
3
- import { Filter } from '../filter';
3
+ import { Filter } from '../filters/filter';
4
4
  import { ContinuableListing } from '../continuable-listing';
5
5
  import { Sort } from '../sort';
6
6
  import { Observable } from 'rxjs/internal/Observable';
@@ -1,6 +1,6 @@
1
1
  import { Observable } from 'rxjs';
2
2
  import { Sort } from '../sort';
3
- import { Filter } from '../filter';
3
+ import { Filter } from '../filters/filter';
4
4
  import { Page, Pageable } from '../page';
5
5
  import { TokenChunkRequest } from '../token-chunk-request';
6
6
  import { ContinuableListing } from '../continuable-listing';
@@ -1,6 +1,6 @@
1
1
  import { IContinuableDataSource, IDataSource, IListDataSource, IPagedDataSource } from '../data-source';
2
2
  import { Observable } from 'rxjs';
3
- import { Filter } from '../../filter';
3
+ import { Filter } from '../../filters/filter';
4
4
  import { Sort } from '../../sort';
5
5
  import { Page, Pageable } from '../../page';
6
6
  import { TokenChunkRequest } from '../../token-chunk-request';
@@ -1,4 +1,4 @@
1
- import { Filter } from '../../filter';
1
+ import { Filter } from '../../filters/filter';
2
2
  import { Sort } from '../../sort';
3
3
  import { Observable } from 'rxjs';
4
4
  import { IListDataSource } from '../data-source';
@@ -1,5 +1,5 @@
1
1
  import { Page, Pageable } from '../../page';
2
- import { Filter } from '../../filter';
2
+ import { Filter } from '../../filters/filter';
3
3
  import { Observable } from 'rxjs';
4
4
  import { Sort } from '../../sort';
5
5
  import { IPagedDataSource } from '../data-source';
@@ -1,7 +1,7 @@
1
1
  import { HttpClient, HttpParams } from '@angular/common/http';
2
2
  import { Observable } from 'rxjs';
3
3
  import { Sort } from '../../sort';
4
- import { Filter } from '../../filter';
4
+ import { Filter } from '../../filters/filter';
5
5
  import { Page, Pageable } from '../../page';
6
6
  import { ContinuableListing } from '../../continuable-listing';
7
7
  import { TokenChunkRequest } from '../../token-chunk-request';
@@ -6,7 +6,7 @@ export declare class FilterContext {
6
6
  * Fields *
7
7
  * *
8
8
  **************************************************************************/
9
- private readonly _filters;
9
+ private readonly _filters$;
10
10
  /***************************************************************************
11
11
  * *
12
12
  * Static Utilities *
@@ -52,6 +52,8 @@ export declare class FilterContext {
52
52
  */
53
53
  replaceFilters(newFilters?: Filter[]): void;
54
54
  clear(): void;
55
+ mergeFilters(filters: Filter[]): void;
56
+ mergeFilter(filter: Filter): void;
55
57
  /***************************************************************************
56
58
  * *
57
59
  * Private methods *
@@ -22,13 +22,19 @@ export declare class Filter {
22
22
  constructor(key: string, value: string | string[] | null);
23
23
  /***************************************************************************
24
24
  * *
25
- * Properties *
25
+ * Public API *
26
26
  * *
27
27
  **************************************************************************/
28
+ static merge(current: Filter, forcedFilter: Filter): Filter;
29
+ /**
30
+ * Checks if this filter supports multiple values.
31
+ * @param filter
32
+ */
33
+ static isMulti(filter: Filter): boolean;
28
34
  /**
29
35
  * Checks if this filter has a value.
30
- * This is the case when the value is non null and
31
- * in case its an array, also non empty.
36
+ * This is the case when the value is non-null and
37
+ * in case it's an array, also non-empty.
32
38
  */
33
39
  static hasValue(self: Filter): boolean;
34
40
  /**
@@ -37,4 +43,10 @@ export declare class Filter {
37
43
  * @param other
38
44
  */
39
45
  static equals(self: Filter, other: Filter): boolean;
46
+ /***************************************************************************
47
+ * *
48
+ * Private methods *
49
+ * *
50
+ **************************************************************************/
51
+ private static addValuesToSet;
40
52
  }
@@ -1,5 +1,5 @@
1
1
  import { HttpParams } from '@angular/common/http';
2
- import { Filter } from './filter';
2
+ import { Filter } from './filters/filter';
3
3
  import { Sort } from './sort';
4
4
  import { Pageable } from './page';
5
5
  import { TokenChunkRequest } from './token-chunk-request';
@@ -1,5 +1,5 @@
1
- export * from './filter';
2
- export * from './filter-context';
1
+ export * from './filters/filter';
2
+ export * from './filters/filter-context';
3
3
  export * from './sort';
4
4
  export * from './page';
5
5
  export * from './entity-set-patch';
@@ -1,6 +1,6 @@
1
- import { Filter } from './filter';
1
+ import { Filter } from './filters/filter';
2
2
  import { Observable } from 'rxjs';
3
- import { FilterContext } from './filter-context';
3
+ import { FilterContext } from './filters/filter-context';
4
4
  export declare class RequiredFilterContextChangedEvent {
5
5
  readonly requiredFilters: Array<string[]>;
6
6
  readonly currentFilters: Filter[];
@@ -1,5 +1,5 @@
1
1
  import { Sort } from './sort';
2
- import { Filter } from './filter';
2
+ import { Filter } from './filters/filter';
3
3
  export declare class TokenChunkRequest {
4
4
  readonly nextContinuationToken: string | null | undefined;
5
5
  readonly filters: Filter[];
@@ -1,4 +1,4 @@
1
- import { Filter } from '../data/filter';
1
+ import { Filter } from '../data/filters/filter';
2
2
  export declare class FilterUtil {
3
3
  private static readonly logger;
4
4
  static filterData<T>(data: T[], filters: Filter[]): T[];
@@ -1,6 +1,6 @@
1
1
  import { OnInit } from '@angular/core';
2
2
  import { IDataSource } from '../../../common/data/datasource/data-source';
3
- import { Filter } from '../../../common/data/filter';
3
+ import { Filter } from '../../../common/data/filters/filter';
4
4
  import { Sort } from '../../../common/data/sort';
5
5
  import { CsvSpec } from '../../../common/csv/csv-spec';
6
6
  import { CsvStreamExporterBuilderService } from '../elder-csv-stream-exporter-builder.service';
@@ -1,5 +1,5 @@
1
1
  import { IDataSource } from '../../common/data/datasource/data-source';
2
- import { Filter } from '../../common/data/filter';
2
+ import { Filter } from '../../common/data/filters/filter';
3
3
  import { Sort } from '../../common/data/sort';
4
4
  import { CsvSpec } from '../../common/csv/csv-spec';
5
5
  import { TranslateService } from '@ngx-translate/core';
@@ -1,5 +1,5 @@
1
1
  import { Sort } from '../../../common/data/sort';
2
- import { Filter } from '../../../common/data/filter';
2
+ import { Filter } from '../../../common/data/filters/filter';
3
3
  import { ElderDataViewInteractionMode } from '../elder-data-view-interaction-mode';
4
4
  /**
5
5
  * Options for supporting data view components.
@@ -30,4 +30,5 @@ export declare class ElderDataViewOptions {
30
30
  withFilters(filters: Filter[]): ElderDataViewOptions;
31
31
  withSelectionMultiEnabled(selectionMultiEnabled: boolean): ElderDataViewOptions;
32
32
  withInteractionMode(interactionMode: ElderDataViewInteractionMode): ElderDataViewOptions;
33
+ withOptions(options: ElderDataViewOptions): ElderDataViewOptions;
33
34
  }
@@ -1,38 +1,32 @@
1
- import { AfterViewInit, OnDestroy, OnInit } from '@angular/core';
1
+ import { AfterViewInit, OnDestroy } from '@angular/core';
2
2
  import { Observable } from 'rxjs/internal/Observable';
3
3
  import { SearchInput } from './model/search-input';
4
- import { Filter } from '../../../common/data/filter';
5
- import { FilterContext } from '../../../common/data/filter-context';
4
+ import { Filter } from '../../../common/data/filters/filter';
5
+ import { FilterContext } from '../../../common/data/filters/filter-context';
6
6
  import { SearchInputState } from './model/search-input-state';
7
7
  import * as i0 from "@angular/core";
8
8
  /**
9
9
  * The search container manages a group of search-inputs
10
10
  * and holds their values in a central search model.
11
11
  */
12
- export declare class ElderSearchContextDirective implements OnInit, AfterViewInit, OnDestroy {
12
+ export declare class ElderSearchContextDirective implements AfterViewInit, OnDestroy {
13
13
  /***************************************************************************
14
14
  * *
15
15
  * Fields *
16
16
  * *
17
17
  **************************************************************************/
18
+ private forcedFilters$;
18
19
  private readonly log;
19
20
  private readonly unsubscribe$;
20
21
  private readonly _searchInputs;
21
22
  private readonly _searchStates;
22
23
  private readonly _filters;
23
24
  private _filterContext;
24
- /***************************************************************************
25
- * *
26
- * Constructor *
27
- * *
28
- **************************************************************************/
29
- constructor();
30
25
  /***************************************************************************
31
26
  * *
32
27
  * Life Cycle *
33
28
  * *
34
29
  **************************************************************************/
35
- ngOnInit(): void;
36
30
  ngAfterViewInit(): void;
37
31
  ngOnDestroy(): void;
38
32
  /***************************************************************************
@@ -42,6 +36,14 @@ export declare class ElderSearchContextDirective implements OnInit, AfterViewIni
42
36
  **************************************************************************/
43
37
  set filterContext(value: FilterContext);
44
38
  get filterContext(): FilterContext;
39
+ /**
40
+ * Forced filters are always merged into the final FilterContext.
41
+ *
42
+ * This means they override user defined filters, but attempt
43
+ * to also keep the users intent (by merging) them.
44
+ */
45
+ set forcedFilters(filters: Filter[]);
46
+ get forcedFilters(): Filter[];
45
47
  get attributes(): Observable<SearchInput[]>;
46
48
  get attributesSnapshot(): SearchInput[];
47
49
  get states$(): Observable<SearchInputState[]>;
@@ -71,6 +73,7 @@ export declare class ElderSearchContextDirective implements OnInit, AfterViewIni
71
73
  * *
72
74
  **************************************************************************/
73
75
  private convertToFilters;
76
+ private applyFilters;
74
77
  static ɵfac: i0.ɵɵFactoryDeclaration<ElderSearchContextDirective, never>;
75
- static ɵdir: i0.ɵɵDirectiveDeclaration<ElderSearchContextDirective, "[elderSearchContext]", ["elderSearchContext"], { "filterContext": "elderSearchContext"; }, {}, never, never, false>;
78
+ static ɵdir: i0.ɵɵDirectiveDeclaration<ElderSearchContextDirective, "[elderSearchContext]", ["elderSearchContext"], { "filterContext": "elderSearchContext"; "forcedFilters": "forcedFilters"; }, {}, never, never, false>;
76
79
  }
@@ -1,4 +1,4 @@
1
- import { AfterViewInit, OnDestroy, OnInit } from '@angular/core';
1
+ import { AfterViewInit, OnDestroy } from '@angular/core';
2
2
  import { ElderSearchContextDirective } from './elder-search-context.directive';
3
3
  import { Observable } from 'rxjs/internal/Observable';
4
4
  import { NgModel } from '@angular/forms';
@@ -8,7 +8,7 @@ import * as i0 from "@angular/core";
8
8
  /**
9
9
  * Search name adapter for input controls.
10
10
  */
11
- export declare class ElderSearchInputDirective implements OnInit, OnDestroy, AfterViewInit, SearchInput {
11
+ export declare class ElderSearchInputDirective implements OnDestroy, AfterViewInit, SearchInput {
12
12
  private searchContext;
13
13
  private ngModel;
14
14
  /***************************************************************************
@@ -16,10 +16,6 @@ export declare class ElderSearchInputDirective implements OnInit, OnDestroy, Aft
16
16
  * Fields *
17
17
  * *
18
18
  **************************************************************************/
19
- private readonly logger;
20
- private readonly _state;
21
- private _extractedName;
22
- private readonly unsubscribe$;
23
19
  /**
24
20
  * (Optional) Usually the control name is used, this allows a custom query key
25
21
  */
@@ -37,6 +33,10 @@ export declare class ElderSearchInputDirective implements OnInit, OnDestroy, Aft
37
33
  * (Optional) Use this value for the query if none is provided.
38
34
  */
39
35
  fallbackValue: string | string[];
36
+ private readonly _state;
37
+ private _extractedName;
38
+ private readonly destroy$;
39
+ private readonly log;
40
40
  /***************************************************************************
41
41
  * *
42
42
  * Constructor *
@@ -48,7 +48,6 @@ export declare class ElderSearchInputDirective implements OnInit, OnDestroy, Aft
48
48
  * Life Cycle *
49
49
  * *
50
50
  **************************************************************************/
51
- ngOnInit(): void;
52
51
  ngAfterViewInit(): void;
53
52
  ngOnDestroy(): void;
54
53
  /***************************************************************************
@@ -1,5 +1,5 @@
1
1
  import { Page, Pageable } from '../../common/data/page';
2
- import { Filter } from '../../common/data/filter';
2
+ import { Filter } from '../../common/data/filters/filter';
3
3
  import { HttpClient, HttpParams } from '@angular/common/http';
4
4
  import { Observable } from 'rxjs';
5
5
  import * as i0 from "@angular/core";
@@ -3,6 +3,7 @@ import { IframeHostComponent } from '../../iframe-host/iframe-host.component';
3
3
  import { SelectionModel } from '../../../../common/selection/selection-model';
4
4
  import { Observable } from 'rxjs';
5
5
  import { DataViewMessage, TypedEventMessage } from '../../typed-event-message';
6
+ import { ElderDataViewOptionsProvider } from '../../../data-view/base/elder-data-view-options-provider';
6
7
  import { ElderDataViewOptions } from '../../../data-view/base/elder-data-view-options';
7
8
  import * as i0 from "@angular/core";
8
9
  /**
@@ -11,6 +12,7 @@ import * as i0 from "@angular/core";
11
12
  * and iframe parent.
12
13
  */
13
14
  export declare class DataViewIframeComponent implements OnInit, OnDestroy, AfterViewInit {
15
+ private dataViewOptionsProvider;
14
16
  private selectionModel;
15
17
  /***************************************************************************
16
18
  * *
@@ -29,7 +31,7 @@ export declare class DataViewIframeComponent implements OnInit, OnDestroy, After
29
31
  * Constructor *
30
32
  * *
31
33
  **************************************************************************/
32
- constructor(selectionModel: SelectionModel<any>);
34
+ constructor(dataViewOptionsProvider: ElderDataViewOptionsProvider, selectionModel: SelectionModel<any>);
33
35
  /***************************************************************************
34
36
  * *
35
37
  * Life Cycle *
@@ -61,6 +63,6 @@ export declare class DataViewIframeComponent implements OnInit, OnDestroy, After
61
63
  private handleSelectionMessage;
62
64
  private setupDataViewOptionsBridge;
63
65
  private buildDataViewInitMessage;
64
- static ɵfac: i0.ɵɵFactoryDeclaration<DataViewIframeComponent, [{ optional: true; }]>;
66
+ static ɵfac: i0.ɵɵFactoryDeclaration<DataViewIframeComponent, [{ optional: true; }, { optional: true; }]>;
65
67
  static ɵcmp: i0.ɵɵComponentDeclaration<DataViewIframeComponent, "elder-data-view-iframe", never, { "srcUrl": "srcUrl"; "idField": "idField"; "initialSelection": "initialSelection"; "dataViewOptions": "dataViewOptions"; }, {}, never, never, false>;
66
68
  }
@@ -0,0 +1,8 @@
1
+ import { ElderAutocompleteComponent } from './elder-autocomplete.component';
2
+ export declare class ElderAutocompleteOptionSelected<T = any, TId = any> {
3
+ readonly source: ElderAutocompleteComponent<T, TId>;
4
+ readonly entityId: TId;
5
+ readonly entity: T;
6
+ readonly optionValue: any;
7
+ constructor(source: ElderAutocompleteComponent<T, TId>, entityId: TId, entity: T, optionValue: any);
8
+ }
@@ -1,11 +1,12 @@
1
- import { OnInit, TemplateRef, NgZone } from '@angular/core';
1
+ import { NgZone, TemplateRef } from '@angular/core';
2
2
  import { BehaviorSubject, Observable, Subject } from 'rxjs';
3
3
  import { IDataContext } from '../../../../common/data/data-context/data-context';
4
4
  import { DataContextStatus } from '../../../../common/data/data-context/data-context-status';
5
5
  import { MatAutocomplete, MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';
6
+ import { ElderAutocompleteOptionSelected } from './elder-autocomplete-option-selected';
6
7
  import * as i0 from "@angular/core";
7
8
  declare type TextResolverFn = (value: any) => string;
8
- export declare class ElderAutocompleteComponent<T = any, TId = any> implements OnInit {
9
+ export declare class ElderAutocompleteComponent<T = any, TId = any> {
9
10
  private readonly zone;
10
11
  /***************************************************************************
11
12
  * *
@@ -29,25 +30,22 @@ export declare class ElderAutocompleteComponent<T = any, TId = any> implements O
29
30
  set matAutocomplete(auto: MatAutocomplete);
30
31
  isOptionDisabledFn: (option: T) => boolean;
31
32
  isOptionHiddenFn: (option: T) => boolean;
32
- /** Underlying data context. */
33
- readonly suggestionsDc$: BehaviorSubject<IDataContext<T>>;
33
+ optionValueConverterFn: (option: T) => any;
34
+ /**
35
+ * The DataContext which holds the autocomplete suggestions.
36
+ */
37
+ readonly dataContext$: BehaviorSubject<IDataContext<T>>;
34
38
  readonly triggerReload$: Subject<any>;
35
39
  readonly displayPropertyResolver$: BehaviorSubject<TextResolverFn>;
36
40
  readonly dataState$: Observable<DataContextStatus>;
37
41
  readonly availableSuggestions$: Observable<T[]>;
38
- readonly optionSelected: Subject<unknown>;
42
+ readonly optionSelected: Subject<ElderAutocompleteOptionSelected<any, any>>;
39
43
  /***************************************************************************
40
44
  * *
41
45
  * Constructor *
42
46
  * *
43
47
  **************************************************************************/
44
48
  constructor(zone: NgZone);
45
- /***************************************************************************
46
- * *
47
- * Life Cycle *
48
- * *
49
- **************************************************************************/
50
- ngOnInit(): void;
51
49
  /***************************************************************************
52
50
  * *
53
51
  * Properties *
@@ -57,8 +55,8 @@ export declare class ElderAutocompleteComponent<T = any, TId = any> implements O
57
55
  get enabled(): boolean;
58
56
  set valueTemplate(template: TemplateRef<any>);
59
57
  get valueTemplate(): TemplateRef<any>;
60
- set suggestionsDc(data: IDataContext<T>);
61
- get suggestionsDc(): IDataContext<T>;
58
+ set dataContext(data: IDataContext<T>);
59
+ get dataContext(): IDataContext<T>;
62
60
  set displayPropertyResolver(resolver: TextResolverFn);
63
61
  /***************************************************************************
64
62
  * *
@@ -66,12 +64,14 @@ export declare class ElderAutocompleteComponent<T = any, TId = any> implements O
66
64
  * *
67
65
  **************************************************************************/
68
66
  onOptionSelected(event: MatAutocompleteSelectedEvent): void;
67
+ private getEntityById;
69
68
  onAutocompleteOpened(event: any): void;
70
69
  onAutoCompleteCloseToEnd(event: UIEvent): void;
71
70
  getIdAsString(value: T): string;
72
71
  getId(value: T): TId;
73
72
  isOptionAvailable(option: T): boolean;
74
73
  isOptionVisible(option: T): boolean;
74
+ toOptionValue(option: T): any;
75
75
  /***************************************************************************
76
76
  * *
77
77
  * Private methods *
@@ -82,6 +82,6 @@ export declare class ElderAutocompleteComponent<T = any, TId = any> implements O
82
82
  */
83
83
  private propertyStringValue;
84
84
  static ɵfac: i0.ɵɵFactoryDeclaration<ElderAutocompleteComponent<any, any>, never>;
85
- static ɵcmp: i0.ɵɵComponentDeclaration<ElderAutocompleteComponent<any, any>, "elder-autocomplete", ["elderAutocomplete"], { "isOptionDisabledFn": "isOptionDisabledFn"; "isOptionHiddenFn": "isOptionHiddenFn"; "enabled": "enabled"; "valueTemplate": "valueTemplate"; "suggestionsDc": "suggestionsDc"; "displayPropertyResolver": "displayPropertyResolver"; }, { "optionSelected": "optionSelected"; }, ["valueTemplateQuery"], never, false>;
85
+ static ɵcmp: i0.ɵɵComponentDeclaration<ElderAutocompleteComponent<any, any>, "elder-autocomplete", ["elderAutocomplete"], { "isOptionDisabledFn": "isOptionDisabledFn"; "isOptionHiddenFn": "isOptionHiddenFn"; "optionValueConverterFn": "optionValueConverterFn"; "enabled": "enabled"; "valueTemplate": "valueTemplate"; "dataContext": "dataContext"; "displayPropertyResolver": "displayPropertyResolver"; }, { "optionSelected": "optionSelected"; }, ["valueTemplateQuery"], never, false>;
86
86
  }
87
87
  export {};
@@ -1,59 +1,78 @@
1
- import { ElementRef, EventEmitter, OnDestroy, OnInit } from '@angular/core';
2
- import { UntypedFormControl } from '@angular/forms';
3
- import { Observable } from 'rxjs';
4
- import { ISuggestionProvider } from '../../common/suggestion-provider';
1
+ import { ElementRef, OnDestroy, OnInit } from '@angular/core';
2
+ import { Subject } from 'rxjs';
3
+ import { ElderAutocompleteComponent } from './elder-autocomplete/elder-autocomplete.component';
4
+ import { MatAutocompleteTrigger } from '@angular/material/autocomplete';
5
+ import { Filter } from '../../../common/data/filters/filter';
6
+ import { Sort } from '../../../common/data/sort';
7
+ import { TextResolverFn } from '../../select/elder-select-base';
5
8
  import * as i0 from "@angular/core";
6
- export declare class ElderMultiAutocompleteComponent implements OnInit, OnDestroy {
9
+ export declare class ElderAutocompleteManyDirective<T> implements OnInit, OnDestroy {
10
+ private readonly autoCompleteTrigger;
11
+ private readonly inputRef;
7
12
  /***************************************************************************
8
13
  * *
9
14
  * Fields *
10
15
  * *
11
16
  **************************************************************************/
12
- private readonly logger;
13
- private _sub;
14
- placeholder: string;
15
- suggestionProvider: ISuggestionProvider<string>;
17
+ queryFilter: string;
18
+ filters: Filter[];
19
+ sorts: Sort[];
16
20
  /**
17
- * Occurs when the value has been changed and committed
21
+ * The property on a suggestion object which is used
22
+ * as the display and insert value.
18
23
  */
19
- valueChanged: EventEmitter<string>;
20
- suggestionInput: ElementRef<HTMLInputElement>;
21
- formControl: UntypedFormControl;
22
- availableSuggestions: Observable<string[]>;
23
- private wordFinder;
24
+ textProperty: string;
25
+ textPropertyResolverFn: TextResolverFn;
26
+ readonly inputKeyup$: Subject<KeyboardEvent>;
27
+ private readonly ignoreKeys;
28
+ private readonly log;
29
+ private readonly wordFinder;
30
+ private _elderAutocomplete;
31
+ private readonly destroy$;
32
+ private readonly destroyAutocompleteBinding$;
24
33
  /***************************************************************************
25
34
  * *
26
35
  * Constructor *
27
36
  * *
28
37
  **************************************************************************/
29
- constructor();
38
+ constructor(autoCompleteTrigger: MatAutocompleteTrigger, inputRef: ElementRef<HTMLInputElement>);
30
39
  /***************************************************************************
31
40
  * *
32
- * Life-Cycle *
41
+ * Properties *
33
42
  * *
34
43
  **************************************************************************/
35
- ngOnInit(): void;
36
- ngOnDestroy(): void;
44
+ set autocomplete(auto: ElderAutocompleteComponent);
45
+ get autocomplete(): ElderAutocompleteComponent;
46
+ private get cursorPosition();
47
+ private set cursorPosition(value);
48
+ private get dataContext();
37
49
  /***************************************************************************
38
50
  * *
39
- * Properties *
51
+ * Host Listener *
40
52
  * *
41
53
  **************************************************************************/
54
+ onKeyUp(event: KeyboardEvent): void;
42
55
  /***************************************************************************
43
56
  * *
44
- * Public API *
57
+ * Life Cycle *
45
58
  * *
46
59
  **************************************************************************/
47
- onValueChanged(value: string): void;
48
- insertSuggestion(suggestion: string): string;
60
+ ngOnInit(): void;
61
+ ngOnDestroy(): void;
49
62
  /***************************************************************************
50
63
  * *
51
64
  * Private methods *
52
65
  * *
53
66
  **************************************************************************/
54
- private getSuggestions;
55
- private get cursorPosition();
67
+ private extractWordAtCursor;
68
+ private cursorBeforeAutocomplete;
69
+ private rememberCursorPosition;
56
70
  private extractWordFrom;
57
- static ɵfac: i0.ɵɵFactoryDeclaration<ElderMultiAutocompleteComponent, never>;
58
- static ɵcmp: i0.ɵɵComponentDeclaration<ElderMultiAutocompleteComponent, "elder-multi-autocomplete", never, { "placeholder": "placeholder"; "suggestionProvider": "suggestionProvider"; }, { "valueChanged": "modify"; }, never, never, false>;
71
+ private updateSuggestions;
72
+ private insertSuggestion;
73
+ private currentInputValue;
74
+ private resolveSuggestionText;
75
+ private onOptionSelected;
76
+ static ɵfac: i0.ɵɵFactoryDeclaration<ElderAutocompleteManyDirective<any>, never>;
77
+ static ɵdir: i0.ɵɵDirectiveDeclaration<ElderAutocompleteManyDirective<any>, "[elderAutocompleteMany]", never, { "queryFilter": "queryFilter"; "filters": "filters"; "sorts": "sorts"; "textProperty": "textProperty"; "textPropertyResolverFn": "textPropertyResolverFn"; "autocomplete": "elderAutocompleteMany"; }, {}, never, never, false>;
59
78
  }
@@ -2,7 +2,7 @@ import { OnDestroy, OnInit } from '@angular/core';
2
2
  import { MatAutocompleteTrigger } from '@angular/material/autocomplete';
3
3
  import { ElderAutocompleteComponent } from './elder-autocomplete/elder-autocomplete.component';
4
4
  import { Subject } from 'rxjs';
5
- import { Filter } from '../../../common/data/filter';
5
+ import { Filter } from '../../../common/data/filters/filter';
6
6
  import { IDataContext } from '../../../common/data/data-context/data-context';
7
7
  import { Sort } from '../../../common/data/sort';
8
8
  import * as i0 from "@angular/core";
@@ -28,7 +28,6 @@ export declare class ElderAutocompleteDirective implements OnInit, OnDestroy {
28
28
  * *
29
29
  **************************************************************************/
30
30
  constructor(autoCompleteTrigger: MatAutocompleteTrigger);
31
- ngOnDestroy(): void;
32
31
  /***************************************************************************
33
32
  * *
34
33
  * Host Listener *
@@ -41,6 +40,7 @@ export declare class ElderAutocompleteDirective implements OnInit, OnDestroy {
41
40
  * *
42
41
  **************************************************************************/
43
42
  ngOnInit(): void;
43
+ ngOnDestroy(): void;
44
44
  /***************************************************************************
45
45
  * *
46
46
  * Properties *