@rosoftlab/core 0.0.100 → 0.0.101

Sign up to get free protection for your applications and to get access to all the features.
Files changed (29) hide show
  1. package/esm2020/lib/base-components/base-form-edit.component.mjs +15 -41
  2. package/esm2020/lib/base-components/field-error-display/field-error-display.component.mjs +3 -3
  3. package/esm2020/lib/base-components/generic-table/generic-table.component.mjs +17 -80
  4. package/esm2020/lib/base-components/index.mjs +1 -2
  5. package/esm2020/lib/base-components/page-not-found/page-not-found.component.mjs +3 -3
  6. package/esm2020/lib/base-components/under-construction/under-construction.component.mjs +3 -3
  7. package/esm2020/lib/decorators/attribute.decorator.mjs +1 -4
  8. package/esm2020/lib/interfaces/attribute-decorator-options.interface.mjs +1 -1
  9. package/esm2020/lib/models/base.model.mjs +3 -46
  10. package/esm2020/lib/models/grid-layout-format.enum.mjs +1 -2
  11. package/esm2020/lib/module.mjs +5 -14
  12. package/esm2020/lib/services/base.service.mjs +2 -6
  13. package/fesm2015/rosoftlab-core.mjs +72 -443
  14. package/fesm2015/rosoftlab-core.mjs.map +1 -1
  15. package/fesm2020/rosoftlab-core.mjs +72 -438
  16. package/fesm2020/rosoftlab-core.mjs.map +1 -1
  17. package/lib/base-components/base-form-edit.component.d.ts +4 -9
  18. package/lib/base-components/field-error-display/field-error-display.component.d.ts +1 -1
  19. package/lib/base-components/generic-table/generic-table.component.d.ts +4 -17
  20. package/lib/base-components/index.d.ts +0 -1
  21. package/lib/base-components/page-not-found/page-not-found.component.d.ts +1 -1
  22. package/lib/base-components/under-construction/under-construction.component.d.ts +1 -1
  23. package/lib/interfaces/attribute-decorator-options.interface.d.ts +0 -1
  24. package/lib/models/base.model.d.ts +3 -7
  25. package/lib/models/grid-layout-format.enum.d.ts +1 -2
  26. package/lib/module.d.ts +6 -8
  27. package/package.json +3 -3
  28. package/esm2020/lib/base-components/searchable-dropdown/searchable-dropdown.component.mjs +0 -231
  29. package/lib/base-components/searchable-dropdown/searchable-dropdown.component.d.ts +0 -62
@@ -33,26 +33,21 @@ export declare abstract class BaseFormEditComponent<T extends BaseModel> impleme
33
33
  initForm(customInclude?: string, newModelId?: string, model?: T): void;
34
34
  generateForm(model?: T): void;
35
35
  afterFormGenerated(): void;
36
- private getFromGroup;
37
- validateAllFormFields(formGroup?: FormGroup | string): void;
38
- isFieldValid(field: string, formGroup?: FormGroup | string): boolean;
39
- isFieldValidFromArray(arrayIndex: number, field: string, arrayName?: string): boolean;
40
- displayFieldCss(field: string): {
36
+ validateAllFormFields(formGroup: FormGroup): void;
37
+ isFieldValid(form: FormGroup, field: string): boolean;
38
+ displayFieldCss(form: FormGroup, field: string): {
41
39
  'has-error': boolean;
42
40
  'has-feedback': boolean;
43
41
  };
44
42
  onCancel(): void;
45
43
  onSave(): void;
46
- saveModel(formGroup?: FormGroup | string): void;
47
44
  serverErrors(err: any): void;
48
45
  canDeactivate(): Observable<boolean> | boolean;
49
46
  getFiledName(filedTranslationKey: string): {
50
47
  field: any;
51
48
  };
52
49
  getCustomErrorMessage(error: any, fieldLabel: string): string;
53
- getErrorMessageFromArray(arrayIndex: number, field: string, filedTranslationKey: string, arrayName?: string): string;
54
- getErrorMessage(field: string, filedTranslationKey: string, formGroup?: FormGroup | string): string;
55
- getErrorMessageForField(fieldControl: any, filedTranslationKey: string): string;
50
+ getErrorMessage(field: string, filedTranslationKey: string): string;
56
51
  static ɵfac: i0.ɵɵFactoryDeclaration<BaseFormEditComponent<any>, never>;
57
52
  static ɵcmp: i0.ɵɵComponentDeclaration<BaseFormEditComponent<any>, "app-base.form.edit", never, {}, {}, never, never>;
58
53
  }
@@ -3,5 +3,5 @@ export declare class FieldErrorDisplayComponent {
3
3
  errorMsg: string;
4
4
  displayError: boolean;
5
5
  static ɵfac: i0.ɵɵFactoryDeclaration<FieldErrorDisplayComponent, never>;
6
- static ɵcmp: i0.ɵɵComponentDeclaration<FieldErrorDisplayComponent, "rsl-field-error-display", never, { "errorMsg": "errorMsg"; "displayError": "displayError"; }, {}, never, never>;
6
+ static ɵcmp: i0.ɵɵComponentDeclaration<FieldErrorDisplayComponent, "app-field-error-display", never, { "errorMsg": "errorMsg"; "displayError": "displayError"; }, {}, never, never>;
7
7
  }
@@ -1,6 +1,6 @@
1
1
  import { CdkDragDrop } from '@angular/cdk/drag-drop';
2
2
  import { DatePipe, DecimalPipe, PercentPipe } from '@angular/common';
3
- import { AfterViewInit, ElementRef, EventEmitter, OnChanges, OnInit, Renderer2 } from '@angular/core';
3
+ import { ElementRef, EventEmitter, OnChanges, OnInit } from '@angular/core';
4
4
  import { MatPaginator } from '@angular/material/paginator';
5
5
  import { MatSort, SortDirection } from '@angular/material/sort';
6
6
  import { MatTable, MatTableDataSource } from '@angular/material/table';
@@ -15,13 +15,12 @@ import { BaseService } from '../../services/base.service';
15
15
  import { DialogService } from '../../services/dialog.service';
16
16
  import { GridLayoutService } from '../../services/grid-layout.service';
17
17
  import * as i0 from "@angular/core";
18
- export declare class GenericTableComponent<T extends BaseModel> implements OnInit, OnChanges, AfterViewInit {
18
+ export declare class GenericTableComponent<T extends BaseModel> implements OnInit, OnChanges {
19
19
  dialogService: DialogService;
20
20
  router: Router;
21
21
  private datePipe;
22
22
  private numberPipe;
23
23
  private percentPipe;
24
- private renderer;
25
24
  modelType: new (...args: any[]) => T;
26
25
  baseService: BaseService<T>;
27
26
  gridLayoutService?: GridLayoutService<T>;
@@ -41,7 +40,6 @@ export declare class GenericTableComponent<T extends BaseModel> implements OnIni
41
40
  popupEdit: boolean;
42
41
  customInclude: string;
43
42
  changeItemPosition: (prevItem: T, currentItem: T) => boolean;
44
- infiniteScroll: boolean;
45
43
  dataSource: MatTableDataSource<T>;
46
44
  resultsLength: number;
47
45
  isLoadingResults: boolean;
@@ -53,18 +51,13 @@ export declare class GenericTableComponent<T extends BaseModel> implements OnIni
53
51
  sort: MatSort;
54
52
  filter: ElementRef;
55
53
  table: MatTable<any>;
56
- matTableRef: ElementRef;
57
54
  resizeSubscription: any;
58
55
  selectedItem: T;
59
56
  gridLayout: GridLayoutModel[];
60
57
  selectedObject: EventEmitter<T>;
61
- click: EventEmitter<{
62
- propertyName: string;
63
- model: T;
64
- }>;
65
58
  editModel: EventEmitter<T>;
66
59
  displayedColumns: string[];
67
- constructor(dialogService: DialogService, router: Router, datePipe: DatePipe, numberPipe: DecimalPipe, percentPipe: PercentPipe, renderer: Renderer2);
60
+ constructor(dialogService: DialogService, router: Router, datePipe: DatePipe, numberPipe: DecimalPipe, percentPipe: PercentPipe);
68
61
  ngOnChanges(): void;
69
62
  ngOnInit(): void;
70
63
  getData(): Observable<BaseQueryData<T>>;
@@ -74,9 +67,7 @@ export declare class GenericTableComponent<T extends BaseModel> implements OnIni
74
67
  editObject(model: T): void;
75
68
  getFlexStyle(column: GridLayoutModel): string;
76
69
  getCellTextAlign(column: GridLayoutModel): CellTextAlign;
77
- showPictureCell(column: GridLayoutModel): boolean;
78
70
  deleteDisabled(model: T): boolean;
79
- cellClick(model: T, propertyName: string): void;
80
71
  private evaluateRule;
81
72
  getCelValue(row: any, propertyName: string): any;
82
73
  private getFormatedValue;
@@ -84,10 +75,6 @@ export declare class GenericTableComponent<T extends BaseModel> implements OnIni
84
75
  dropTable(event: CdkDragDrop<any>): void;
85
76
  isColumnSticky(name: string): boolean;
86
77
  updateElement(model: T): void;
87
- ngAfterViewInit(): void;
88
- onTableScroll(e: any): void;
89
- private scrollTo;
90
- getCellClass(model: T, property: string): string;
91
78
  static ɵfac: i0.ɵɵFactoryDeclaration<GenericTableComponent<any>, never>;
92
- static ɵcmp: i0.ɵɵComponentDeclaration<GenericTableComponent<any>, "rsl-generic-table", never, { "modelType": "modelType"; "baseService": "baseService"; "gridLayoutService": "gridLayoutService"; "editLink": "editLink"; "defaultSort": "defaultSort"; "defaultSortDirection": "defaultSortDirection"; "deleteDisableRule": "deleteDisableRule"; "deletePropertyName": "deletePropertyName"; "hasSearch": "hasSearch"; "searchFields": "searchFields"; "defaultFilter": "defaultFilter"; "allowReorderItems": "allowReorderItems"; "stickyColumns": "stickyColumns"; "editOnClick": "editOnClick"; "editOnDblClick": "editOnDblClick"; "allowEdit": "allowEdit"; "popupEdit": "popupEdit"; "customInclude": "customInclude"; "changeItemPosition": "changeItemPosition"; "infiniteScroll": "infiniteScroll"; }, { "selectedObject": "selectedObject"; "click": "click"; "editModel": "editModel"; }, never, never>;
79
+ static ɵcmp: i0.ɵɵComponentDeclaration<GenericTableComponent<any>, "app-generic-table", never, { "modelType": "modelType"; "baseService": "baseService"; "gridLayoutService": "gridLayoutService"; "editLink": "editLink"; "defaultSort": "defaultSort"; "defaultSortDirection": "defaultSortDirection"; "deleteDisableRule": "deleteDisableRule"; "deletePropertyName": "deletePropertyName"; "hasSearch": "hasSearch"; "searchFields": "searchFields"; "defaultFilter": "defaultFilter"; "allowReorderItems": "allowReorderItems"; "stickyColumns": "stickyColumns"; "editOnClick": "editOnClick"; "editOnDblClick": "editOnDblClick"; "allowEdit": "allowEdit"; "popupEdit": "popupEdit"; "customInclude": "customInclude"; "changeItemPosition": "changeItemPosition"; }, { "selectedObject": "selectedObject"; "editModel": "editModel"; }, never, never>;
93
80
  }
@@ -1,4 +1,3 @@
1
1
  export * from './field-error-display/field-error-display.component';
2
2
  export * from './page-not-found/page-not-found.component';
3
- export * from './searchable-dropdown/searchable-dropdown.component';
4
3
  export * from './under-construction/under-construction.component';
@@ -4,5 +4,5 @@ export declare class PageNotFoundComponent implements OnInit {
4
4
  constructor();
5
5
  ngOnInit(): void;
6
6
  static ɵfac: i0.ɵɵFactoryDeclaration<PageNotFoundComponent, never>;
7
- static ɵcmp: i0.ɵɵComponentDeclaration<PageNotFoundComponent, "rsl-page-not-found", never, {}, {}, never, never>;
7
+ static ɵcmp: i0.ɵɵComponentDeclaration<PageNotFoundComponent, "app-page-not-found", never, {}, {}, never, never>;
8
8
  }
@@ -2,5 +2,5 @@ import * as i0 from "@angular/core";
2
2
  export declare class UnderConstructionComponent {
3
3
  constructor();
4
4
  static ɵfac: i0.ɵɵFactoryDeclaration<UnderConstructionComponent, never>;
5
- static ɵcmp: i0.ɵɵComponentDeclaration<UnderConstructionComponent, "rsl-under-construction", never, {}, {}, never, never>;
5
+ static ɵcmp: i0.ɵɵComponentDeclaration<UnderConstructionComponent, "app-under-construction", never, {}, {}, never, never>;
6
6
  }
@@ -4,5 +4,4 @@ export interface AttributeDecoratorOptions {
4
4
  converter?: PropertyConverter;
5
5
  required?: boolean;
6
6
  defaultValue?: any;
7
- formSubGroup?: string;
8
7
  }
@@ -20,14 +20,10 @@ export declare class BaseModel {
20
20
  get modelConfig(): ModelConfig;
21
21
  protected deserializeModel<T extends BaseModel>(modelType: ModelType<T>, data: any): T;
22
22
  protected transformSerializedNamesToPropertyNames<T extends BaseModel>(modelType: ModelType<T>, attributes: any): any;
23
- getModelPropertyNames(model: BaseModel): any;
24
- getModelRequiredPropertyNames(model: BaseModel): any;
25
- getModelDefaultPropertyValues(model: BaseModel): any;
26
- getModelSubGroupPropertyNames(model: BaseModel): any;
23
+ private getModelPropertyNames;
24
+ private getModelRequiredPropertyNames;
25
+ private getModelDefaultPropertyValues;
27
26
  getFromGroup(fb: FormBuilder): FormGroup;
28
- private getSubFromGroup;
29
- getModelFromFormGroup(formGroup: FormGroup, id?: any): void;
30
27
  getGridLayout(): GridLayoutModel[];
31
28
  getSerializedModel(): any;
32
- getCellClass(property: string): string;
33
29
  }
@@ -2,8 +2,7 @@ export declare enum GridLayoutFormat {
2
2
  none = 0,
3
3
  date = 1,
4
4
  number = 2,
5
- percent = 3,
6
- picture = 4
5
+ percent = 3
7
6
  }
8
7
  export declare enum CellTextAlign {
9
8
  left = "left",
package/lib/module.d.ts CHANGED
@@ -1,14 +1,12 @@
1
1
  import * as i0 from "@angular/core";
2
2
  import * as i1 from "./base-components/generic-table/generic-table.component";
3
- import * as i2 from "./base-components/searchable-dropdown/searchable-dropdown.component";
4
- import * as i3 from "@angular/common";
5
- import * as i4 from "@ngx-translate/core";
6
- import * as i5 from "./material";
7
- import * as i6 from "@angular/forms";
8
- import * as i7 from "ng-block-ui";
9
- import * as i8 from "@angular/common/http";
3
+ import * as i2 from "@angular/common";
4
+ import * as i3 from "@ngx-translate/core";
5
+ import * as i4 from "./material";
6
+ import * as i5 from "ng-block-ui";
7
+ import * as i6 from "@angular/common/http";
10
8
  export declare class RslBaseModule {
11
9
  static ɵfac: i0.ɵɵFactoryDeclaration<RslBaseModule, never>;
12
- static ɵmod: i0.ɵɵNgModuleDeclaration<RslBaseModule, [typeof i1.GenericTableComponent, typeof i2.SearchableDropdownComponent], [typeof i3.CommonModule, typeof i4.TranslateModule, typeof i5.MaterialModule, typeof i6.ReactiveFormsModule, typeof i7.BlockUIModule], [typeof i8.HttpClientModule, typeof i1.GenericTableComponent, typeof i2.SearchableDropdownComponent]>;
10
+ static ɵmod: i0.ɵɵNgModuleDeclaration<RslBaseModule, [typeof i1.GenericTableComponent], [typeof i2.CommonModule, typeof i3.TranslateModule, typeof i4.MaterialModule, typeof i5.BlockUIModule], [typeof i6.HttpClientModule, typeof i1.GenericTableComponent]>;
13
11
  static ɵinj: i0.ɵɵInjectorDeclaration<RslBaseModule>;
14
12
  }
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@rosoftlab/core",
3
- "version": "0.0.100",
3
+ "version": "0.0.101",
4
4
  "peerDependencies": {
5
- "@angular/common": "^15.0.0",
6
- "@angular/core": "^15.0.0",
5
+ "@angular/common": "~13.3.0",
6
+ "@angular/core": "~13.3.0",
7
7
  "fast-json-patch": "^3.1.0",
8
8
  "date-fns": "^2.28.0",
9
9
  "@types/qs": "^6.9.7",
@@ -1,231 +0,0 @@
1
- import { coerceBooleanProperty } from '@angular/cdk/coercion';
2
- import { Component, EventEmitter, Input, Optional, Output, Self } from '@angular/core';
3
- import { FormControl } from '@angular/forms';
4
- import { Subject } from 'rxjs';
5
- import { debounceTime, filter, finalize, switchMap, takeUntil, tap } from 'rxjs/operators';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "@angular/cdk/a11y";
8
- import * as i2 from "@angular/forms";
9
- import * as i3 from "@angular/material/form-field";
10
- import * as i4 from "@angular/material/button";
11
- import * as i5 from "@angular/material/icon";
12
- import * as i6 from "@angular/material/autocomplete";
13
- import * as i7 from "@angular/material/core";
14
- import * as i8 from "@angular/material/input";
15
- import * as i9 from "@angular/common";
16
- import * as i10 from "@ngx-translate/core";
17
- export class SearchableDropdownComponent {
18
- constructor(_focusMonitor, _elementRef, ngControl) {
19
- this._focusMonitor = _focusMonitor;
20
- this._elementRef = _elementRef;
21
- this.ngControl = ngControl;
22
- this.onChange = (_) => { };
23
- this.onTouched = () => { };
24
- this.stateChanges = new Subject();
25
- this.focused = false;
26
- this.errorState = false;
27
- this.id = `rsl-searchable-dropdown-${SearchableDropdownComponent.nextId++}`;
28
- // label for the search dropdown
29
- this.label = '';
30
- //Fields for sorting the API data
31
- this.sortFields = '';
32
- // The value used to populate the control value
33
- this.valueField = 'id';
34
- // The minumum char for search
35
- this.minLengthTerm = 3;
36
- this.modelSelected = new EventEmitter();
37
- this._required = false;
38
- this._disabled = false;
39
- this.showSerach = true;
40
- this.isLoading = false;
41
- this.options = [];
42
- this.filteredOptions = [];
43
- /** Subject that emits when the component has been destroyed. */
44
- this._onDestroy = new Subject();
45
- this.searchControl = new FormControl('');
46
- _focusMonitor.monitor(_elementRef, true).subscribe(origin => {
47
- if (this.focused && !origin) {
48
- this.onTouched();
49
- }
50
- this.focused = !!origin;
51
- this.stateChanges.next();
52
- });
53
- if (this.ngControl) {
54
- this.ngControl.valueAccessor = this;
55
- }
56
- }
57
- get empty() {
58
- return !this.value;
59
- }
60
- get required() { return this._required; }
61
- set required(value) {
62
- this._required = coerceBooleanProperty(value);
63
- this.stateChanges.next();
64
- }
65
- get disabled() { return this._disabled; }
66
- set disabled(value) {
67
- this._disabled = coerceBooleanProperty(value);
68
- this.stateChanges.next();
69
- }
70
- get value() {
71
- return this._value;
72
- }
73
- set value(value) {
74
- if (value)
75
- if (this._value !== value) {
76
- this.loadModel(value);
77
- }
78
- this._value = value;
79
- this.stateChanges.next();
80
- }
81
- ngOnInit() {
82
- if (!this.displayFields)
83
- this.displayFields = this.searchFields;
84
- this.loadModel(this.ngControl.value);
85
- if (this.preloadElementsCount) {
86
- this.serviceRef.getAll(1, this.preloadElementsCount).subscribe({
87
- next: (data) => {
88
- this.showSerach = false;
89
- this.options = data.getModels();
90
- this.filteredOptions = this.options;
91
- }
92
- });
93
- }
94
- this.searchControl.valueChanges
95
- .pipe(filter((res) => {
96
- const result = res !== null && res.length >= this.minLengthTerm;
97
- if (!result) {
98
- this.options = [];
99
- this.filteredOptions = [];
100
- }
101
- this.showSerach = !result;
102
- return result;
103
- }), debounceTime(300), tap(() => {
104
- this.filteredOptions = [];
105
- this.isLoading = true;
106
- }), switchMap((value) => this.serviceRef
107
- .getAll(1, 10, this.sortFields, `${this.searchFields.replace(',', '|')}@=*${value}`)
108
- .pipe(finalize(() => {
109
- this.isLoading = false;
110
- }))), takeUntil(this._onDestroy))
111
- .subscribe((options) => {
112
- this.filteredOptions = options.getModels();
113
- });
114
- }
115
- onSelected($event) {
116
- const value = $event.option.value;
117
- this.searchControl.setValue(value);
118
- this.modelSelected.emit(value);
119
- if (this.valueField in value) {
120
- this.setControlValue(value[this.valueField]);
121
- }
122
- }
123
- setControlValue(value) {
124
- this.value = value;
125
- this.ngControl.control.setValue(value);
126
- }
127
- displayWith(value) {
128
- return this.getConcatedFields(value);
129
- }
130
- clearSelection() {
131
- this.modelSelected.emit(null);
132
- this.setControlValue(null);
133
- this.searchControl.setValue(null);
134
- this.filteredOptions = this.options;
135
- }
136
- getConcatedFields(option) {
137
- if (!option)
138
- return null;
139
- const filtersArr = this.displayFields.split(',');
140
- return filtersArr.reduce((acc, cv) => {
141
- return acc.concat(option[cv] + ' ');
142
- }, '');
143
- }
144
- ngOnDestroy() {
145
- this.searchControl = null;
146
- this.stateChanges.complete();
147
- this._focusMonitor.stopMonitoring(this._elementRef);
148
- this._onDestroy.next();
149
- this._onDestroy.complete();
150
- }
151
- getSearchText() {
152
- return `Enter ${this.minLengthTerm} characters to start search`;
153
- }
154
- writeValue(model) {
155
- console.log(model);
156
- this.value = model;
157
- }
158
- registerOnChange(fn) {
159
- this.onChange = fn;
160
- }
161
- registerOnTouched(fn) {
162
- this.onTouched = fn;
163
- }
164
- setDisabledState(isDisabled) {
165
- this.disabled = isDisabled;
166
- }
167
- loadModel(id) {
168
- //Load the model from API to display the value
169
- let needLoad = false;
170
- if (id) {
171
- if (!this.searchControl.value)
172
- needLoad = true;
173
- else {
174
- if (this.searchControl.value[this.valueField] !== id) {
175
- needLoad = true;
176
- }
177
- }
178
- }
179
- if (needLoad) {
180
- this.serviceRef.get(id).subscribe({
181
- next: (model) => {
182
- this.options.push(model);
183
- this.filteredOptions = this.options;
184
- this.searchControl.setValue(model);
185
- }
186
- });
187
- }
188
- }
189
- }
190
- SearchableDropdownComponent.nextId = 0;
191
- SearchableDropdownComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: SearchableDropdownComponent, deps: [{ token: i1.FocusMonitor }, { token: i0.ElementRef }, { token: i2.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component });
192
- SearchableDropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", type: SearchableDropdownComponent, selector: "rsl-searchable-dropdown", inputs: { label: "label", fControlName: "fControlName", serviceRef: "serviceRef", searchFields: "searchFields", displayFields: "displayFields", sortFields: "sortFields", valueField: "valueField", minLengthTerm: "minLengthTerm", preloadElementsCount: "preloadElementsCount", required: "required", disabled: "disabled", value: "value" }, outputs: { modelSelected: "modelSelected" }, host: { properties: { "class.example-floating": "shouldLabelFloat", "id": "id", "attr.aria-describedby": "describedBy" } }, ngImport: i0, template: "<div class=\"form-group\">\r\n <label>{{label | translate}}</label>\r\n <mat-form-field appearance=\"outline\" fxFlex>\r\n <input matInput [matAutocomplete]=\"auto\" [formControl]=\"searchControl\">\r\n <button *ngIf=\"searchControl.value\" matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"clearSelection()\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"onSelected($event)\"\r\n [displayWith]=\"displayWith.bind(this)\">\r\n <mat-option *ngIf=\"isLoading\">Loading...</mat-option>\r\n <mat-option *ngIf=\"!isLoading && filteredOptions.length == 0 && !showSerach\" disabled>Not found</mat-option>\r\n <mat-option *ngIf=\"showSerach\" disabled>{{getSearchText()}}</mat-option>\r\n <ng-container *ngIf=\"!isLoading && filteredOptions.length > 0\">\r\n <mat-option *ngFor=\"let option of filteredOptions\" [value]=\"option\">\r\n <span><b>{{getConcatedFields(option)}}</b></span>\r\n </mat-option>\r\n </ng-container>\r\n\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n</div>", components: [{ type: i3.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i6.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { type: i7.MatOption, selector: "mat-option", exportAs: ["matOption"] }], directives: [{ type: i8.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i6.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.MatSuffix, selector: "[matSuffix]" }, { type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "translate": i10.TranslatePipe } });
193
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: SearchableDropdownComponent, decorators: [{
194
- type: Component,
195
- args: [{ selector: 'rsl-searchable-dropdown', host: {
196
- '[class.example-floating]': 'shouldLabelFloat',
197
- '[id]': 'id',
198
- '[attr.aria-describedby]': 'describedBy',
199
- }, template: "<div class=\"form-group\">\r\n <label>{{label | translate}}</label>\r\n <mat-form-field appearance=\"outline\" fxFlex>\r\n <input matInput [matAutocomplete]=\"auto\" [formControl]=\"searchControl\">\r\n <button *ngIf=\"searchControl.value\" matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"clearSelection()\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"onSelected($event)\"\r\n [displayWith]=\"displayWith.bind(this)\">\r\n <mat-option *ngIf=\"isLoading\">Loading...</mat-option>\r\n <mat-option *ngIf=\"!isLoading && filteredOptions.length == 0 && !showSerach\" disabled>Not found</mat-option>\r\n <mat-option *ngIf=\"showSerach\" disabled>{{getSearchText()}}</mat-option>\r\n <ng-container *ngIf=\"!isLoading && filteredOptions.length > 0\">\r\n <mat-option *ngFor=\"let option of filteredOptions\" [value]=\"option\">\r\n <span><b>{{getConcatedFields(option)}}</b></span>\r\n </mat-option>\r\n </ng-container>\r\n\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n</div>" }]
200
- }], ctorParameters: function () { return [{ type: i1.FocusMonitor }, { type: i0.ElementRef }, { type: i2.NgControl, decorators: [{
201
- type: Optional
202
- }, {
203
- type: Self
204
- }] }]; }, propDecorators: { label: [{
205
- type: Input
206
- }], fControlName: [{
207
- type: Input
208
- }], serviceRef: [{
209
- type: Input
210
- }], searchFields: [{
211
- type: Input
212
- }], displayFields: [{
213
- type: Input
214
- }], sortFields: [{
215
- type: Input
216
- }], valueField: [{
217
- type: Input
218
- }], minLengthTerm: [{
219
- type: Input
220
- }], preloadElementsCount: [{
221
- type: Input
222
- }], modelSelected: [{
223
- type: Output
224
- }], required: [{
225
- type: Input
226
- }], disabled: [{
227
- type: Input
228
- }], value: [{
229
- type: Input
230
- }] } });
231
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoYWJsZS1kcm9wZG93bi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yb3NvZnRsYWIvY29yZS9zcmMvbGliL2Jhc2UtY29tcG9uZW50cy9zZWFyY2hhYmxlLWRyb3Bkb3duL3NlYXJjaGFibGUtZHJvcGRvd24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcm9zb2Z0bGFiL2NvcmUvc3JjL2xpYi9iYXNlLWNvbXBvbmVudHMvc2VhcmNoYWJsZS1kcm9wZG93bi9zZWFyY2hhYmxlLWRyb3Bkb3duLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlELE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBcUIsUUFBUSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEgsT0FBTyxFQUF5QyxXQUFXLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7QUFlM0YsTUFBTSxPQUFPLDJCQUEyQjtJQXFGdEMsWUFDVSxhQUEyQixFQUMzQixXQUFvQyxFQUNqQixTQUFvQjtRQUZ2QyxrQkFBYSxHQUFiLGFBQWEsQ0FBYztRQUMzQixnQkFBVyxHQUFYLFdBQVcsQ0FBeUI7UUFDakIsY0FBUyxHQUFULFNBQVMsQ0FBVztRQXRGakQsYUFBUSxHQUFHLENBQUMsQ0FBTSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDM0IsY0FBUyxHQUFHLEdBQUcs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QXlCLFFBRzdCO3dCQUNKLDBCQUEwQixFQUFFLGtCQUFrQjt3QkFDOUMsTUFBTSxFQUFFLElBQUk7d0JBQ1oseUJBQXlCLEVBQUUsYUFBYTtxQkFDekM7OzBCQTBGRSxRQUFROzswQkFBSSxJQUFJOzRDQTlFVixLQUFLO3NCQUFiLEtBQUs7Z0JBR0csWUFBWTtzQkFBcEIsS0FBSztnQkFHRyxVQUFVO3NCQUFsQixLQUFLO2dCQUdHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBR0csYUFBYTtzQkFBckIsS0FBSztnQkFHRyxVQUFVO3NCQUFsQixLQUFLO2dCQUdHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBR0csYUFBYTtzQkFBckIsS0FBSztnQkFHRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBRUksYUFBYTtzQkFBdEIsTUFBTTtnQkFTSCxRQUFRO3NCQURYLEtBQUs7Z0JBU0YsUUFBUTtzQkFEWCxLQUFLO2dCQVdGLEtBQUs7c0JBRFIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvY3VzTW9uaXRvciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcclxuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3B0aW9uYWwsIE91dHB1dCwgU2VsZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3JtQ29udHJvbCwgTmdDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZmlsdGVyLCBmaW5hbGl6ZSwgc3dpdGNoTWFwLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgQmFzZVF1ZXJ5RGF0YSB9IGZyb20gJy4uLy4uL21vZGVscy9iYXNlLXF1ZXJ5LWRhdGEnO1xyXG5pbXBvcnQgeyBCYXNlTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvYmFzZS5tb2RlbCc7XHJcbmltcG9ydCB7IEJhc2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYmFzZS5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAncnNsLXNlYXJjaGFibGUtZHJvcGRvd24nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWFyY2hhYmxlLWRyb3Bkb3duLmNvbXBvbmVudC5odG1sJyxcclxuICAvLyBzdHlsZVVybHM6IFsnLi9zZWFyY2hhYmxlLWRyb3Bkb3duLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgaG9zdDoge1xyXG4gICAgJ1tjbGFzcy5leGFtcGxlLWZsb2F0aW5nXSc6ICdzaG91bGRMYWJlbEZsb2F0JyxcclxuICAgICdbaWRdJzogJ2lkJyxcclxuICAgICdbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XSc6ICdkZXNjcmliZWRCeScsXHJcbiAgfVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2VhcmNoYWJsZURyb3Bkb3duQ29tcG9uZW50PFQgZXh0ZW5kcyBCYXNlTW9kZWw+IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuICBzdGF0aWMgbmV4dElkID0gMDtcclxuICBvbkNoYW5nZSA9IChfOiBhbnkpID0+IHsgfTtcclxuICBvblRvdWNoZWQgPSAoKSA9PiB7IH07XHJcbiAgc3RhdGVDaGFuZ2VzID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBmb2N1c2VkID0gZmFsc2U7XHJcbiAgZXJyb3JTdGF0ZSA9IGZhbHNlO1xyXG4gIGlkID0gYHJzbC1zZWFyY2hhYmxlLWRyb3Bkb3duLSR7U2VhcmNoYWJsZURyb3Bkb3duQ29tcG9uZW50Lm5leHRJZCsrfWA7XHJcblxyXG4gIC8vIGxhYmVsIGZvciB0aGUgc2VhcmNoIGRyb3Bkb3duXHJcbiAgQElucHV0KCkgbGFiZWw6IHN0cmluZyA9ICcnO1xyXG5cclxuICAvL05hbWUgb2YgdGhlIGZvcm0gY29udHJvbFxyXG4gIEBJbnB1dCgpIGZDb250cm9sTmFtZTogc3RyaW5nO1xyXG5cclxuICAvL1JlZmVyZW5jZSBvZiB0aGUgc2VydmljZVxyXG4gIEBJbnB1dCgpIHNlcnZpY2VSZWY6IEJhc2VTZXJ2aWNlPFQ+O1xyXG5cclxuICAvL0ZpZWxkcyBmb3IgZmlsdGVyaW5nXHJcbiAgQElucHV0KCkgc2VhcmNoRmllbGRzOiBzdHJpbmc7XHJcblxyXG4gIC8vRmllbGRzIGZvciBkaXNwbGF5IFxyXG4gIEBJbnB1dCgpIGRpc3BsYXlGaWVsZHM6IHN0cmluZztcclxuXHJcbiAgLy9GaWVsZHMgZm9yIHNvcnRpbmcgdGhlIEFQSSBkYXRhXHJcbiAgQElucHV0KCkgc29ydEZpZWxkczogc3RyaW5nID0gJyc7XHJcblxyXG4gIC8vIFRoZSB2YWx1ZSB1c2VkIHRvIHBvcHVsYXRlIHRoZSBjb250cm9sIHZhbHVlXHJcbiAgQElucHV0KCkgdmFsdWVGaWVsZDogc3RyaW5nID0gJ2lkJztcclxuXHJcbiAgLy8gVGhlIG1pbnVtdW0gY2hhciBmb3Igc2VhcmNoXHJcbiAgQElucHV0KCkgbWluTGVuZ3RoVGVybTogbnVtYmVyID0gMztcclxuXHJcbiAgLy8gVGhlIHByZWxvYWQgeCBlbGVtZW50c1xyXG4gIEBJbnB1dCgpIHByZWxvYWRFbGVtZW50c0NvdW50OiBudW1iZXI7XHJcblxyXG4gIEBPdXRwdXQoKSBtb2RlbFNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8QmFzZU1vZGVsPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcblxyXG4gIGdldCBlbXB0eSgpIHtcclxuICAgIHJldHVybiAhdGhpcy52YWx1ZTtcclxuICB9XHJcblxyXG5cclxuICBASW5wdXQoKVxyXG4gIGdldCByZXF1aXJlZCgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX3JlcXVpcmVkOyB9XHJcbiAgc2V0IHJlcXVpcmVkKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9yZXF1aXJlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XHJcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX3JlcXVpcmVkID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7IH1cclxuICBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX2Rpc2FibGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcclxuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfZGlzYWJsZWQgPSBmYWxzZTtcclxuXHJcblxyXG5cclxuICBASW5wdXQoKVxyXG4gIGdldCB2YWx1ZSgpOiBhbnkgfCBudWxsIHtcclxuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcclxuICB9XHJcbiAgc2V0IHZhbHVlKHZhbHVlOiBhbnkgfCBudWxsKSB7XHJcbiAgICBpZiAodmFsdWUpXHJcbiAgICAgIGlmICh0aGlzLl92YWx1ZSAhPT0gdmFsdWUpIHtcclxuICAgICAgICB0aGlzLmxvYWRNb2RlbCh2YWx1ZSk7XHJcbiAgICAgIH1cclxuICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XHJcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX3ZhbHVlOiBhbnk7XHJcbiAgLy8gU2VhcmNoIGZvcm0gY29udHJvbFxyXG4gIHNlYXJjaENvbnRyb2w6IEFic3RyYWN0Q29udHJvbDtcclxuXHJcbiAgc2hvd1NlcmFjaCA9IHRydWU7XHJcbiAgaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgb3B0aW9ucyA9IFtdO1xyXG4gIGZpbHRlcmVkT3B0aW9ucyA9IFtdO1xyXG4gIC8qKiBTdWJqZWN0IHRoYXQgZW1pdHMgd2hlbiB0aGUgY29tcG9uZW50IGhhcyBiZWVuIGRlc3Ryb3llZC4gKi9cclxuICBwcm90ZWN0ZWQgX29uRGVzdHJveSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfZm9jdXNNb25pdG9yOiBGb2N1c01vbml0b3IsXHJcbiAgICBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcclxuICAgIEBPcHRpb25hbCgpIEBTZWxmKCkgcHVibGljIG5nQ29udHJvbDogTmdDb250cm9sXHJcbiAgKSB7XHJcblxyXG4gICAgdGhpcy5zZWFyY2hDb250cm9sID0gbmV3IEZvcm1Db250cm9sKCcnKTtcclxuICAgIF9mb2N1c01vbml0b3IubW9uaXRvcihfZWxlbWVudFJlZiwgdHJ1ZSkuc3Vic2NyaWJlKG9yaWdpbiA9PiB7XHJcbiAgICAgIGlmICh0aGlzLmZvY3VzZWQgJiYgIW9yaWdpbikge1xyXG4gICAgICAgIHRoaXMub25Ub3VjaGVkKCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5mb2N1c2VkID0gISFvcmlnaW47XHJcbiAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGlmICh0aGlzLm5nQ29udHJvbCkge1xyXG4gICAgICB0aGlzLm5nQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG5cclxuICAgIGlmICghdGhpcy5kaXNwbGF5RmllbGRzKVxyXG4gICAgICB0aGlzLmRpc3BsYXlGaWVsZHMgPSB0aGlzLnNlYXJjaEZpZWxkcztcclxuXHJcbiAgICB0aGlzLmxvYWRNb2RlbCh0aGlzLm5nQ29udHJvbC52YWx1ZSlcclxuXHJcbiAgICBpZiAodGhpcy5wcmVsb2FkRWxlbWVudHNDb3VudCkge1xyXG4gICAgICB0aGlzLnNlcnZpY2VSZWYuZ2V0QWxsKDEsIHRoaXMucHJlbG9hZEVsZW1lbnRzQ291bnQpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKGRhdGE6IEJhc2VRdWVyeURhdGE8VD4pID0+IHtcclxuICAgICAgICAgIHRoaXMuc2hvd1NlcmFjaCA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5vcHRpb25zID0gZGF0YS5nZXRNb2RlbHMoKTtcclxuICAgICAgICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zID0gdGhpcy5vcHRpb25zO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNlYXJjaENvbnRyb2wudmFsdWVDaGFuZ2VzXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIGZpbHRlcigocmVzKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCByZXN1bHQgPSByZXMgIT09IG51bGwgJiYgcmVzLmxlbmd0aCA+PSB0aGlzLm1pbkxlbmd0aFRlcm07XHJcbiAgICAgICAgICBpZiAoIXJlc3VsdCkge1xyXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMgPSBbXTtcclxuICAgICAgICAgICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMgPSBbXTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuc2hvd1NlcmFjaCA9ICFyZXN1bHQ7XHJcbiAgICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGRlYm91bmNlVGltZSgzMDApLFxyXG4gICAgICAgIHRhcCgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIHN3aXRjaE1hcCgodmFsdWU6IHN0cmluZykgPT5cclxuICAgICAgICAgIHRoaXMuc2VydmljZVJlZlxyXG4gICAgICAgICAgICAuZ2V0QWxsKDEsIDEwLCB0aGlzLnNvcnRGaWVsZHMsIGAke3RoaXMuc2VhcmNoRmllbGRzLnJlcGxhY2UoJywnLCAnfCcpfUA9KiR7dmFsdWV9YClcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgKSxcclxuICAgICAgICB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95KVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKG9wdGlvbnM6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zID0gb3B0aW9ucy5nZXRNb2RlbHMoKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBvblNlbGVjdGVkKCRldmVudCkge1xyXG4gICAgY29uc3QgdmFsdWUgPSAkZXZlbnQub3B0aW9uLnZhbHVlO1xyXG4gICAgdGhpcy5zZWFyY2hDb250cm9sLnNldFZhbHVlKHZhbHVlKTtcclxuICAgIHRoaXMubW9kZWxTZWxlY3RlZC5lbWl0KHZhbHVlKTtcclxuICAgIGlmICh0aGlzLnZhbHVlRmllbGQgaW4gdmFsdWUpIHtcclxuICAgICAgdGhpcy5zZXRDb250cm9sVmFsdWUodmFsdWVbdGhpcy52YWx1ZUZpZWxkXSk7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuICBzZXRDb250cm9sVmFsdWUodmFsdWU6IGFueSkge1xyXG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xyXG4gICAgdGhpcy5uZ0NvbnRyb2wuY29udHJvbC5zZXRWYWx1ZSh2YWx1ZSk7XHJcbiAgfVxyXG4gIGRpc3BsYXlXaXRoKHZhbHVlOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmdldENvbmNhdGVkRmllbGRzKHZhbHVlKTtcclxuICB9XHJcblxyXG4gIGNsZWFyU2VsZWN0aW9uKCkge1xyXG4gICAgdGhpcy5tb2RlbFNlbGVjdGVkLmVtaXQobnVsbCk7XHJcbiAgICB0aGlzLnNldENvbnRyb2xWYWx1ZShudWxsKTtcclxuICAgIHRoaXMuc2VhcmNoQ29udHJvbC5zZXRWYWx1ZShudWxsKTtcclxuICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zID0gdGhpcy5vcHRpb25zO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q29uY2F0ZWRGaWVsZHMob3B0aW9uKTogc3RyaW5nIHtcclxuICAgIGlmICghb3B0aW9uKSByZXR1cm4gbnVsbDtcclxuICAgIGNvbnN0IGZpbHRlcnNBcnIgPSB0aGlzLmRpc3BsYXlGaWVsZHMuc3BsaXQoJywnKTtcclxuICAgIHJldHVybiBmaWx0ZXJzQXJyLnJlZHVjZSgoYWNjLCBjdikgPT4ge1xyXG4gICAgICByZXR1cm4gYWNjLmNvbmNhdChvcHRpb25bY3ZdICsgJyAnKTtcclxuICAgIH0sICcnKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5zZWFyY2hDb250cm9sID0gbnVsbDtcclxuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLmNvbXBsZXRlKCk7XHJcbiAgICB0aGlzLl9mb2N1c01vbml0b3Iuc3RvcE1vbml0b3JpbmcodGhpcy5fZWxlbWVudFJlZik7XHJcbiAgICB0aGlzLl9vbkRlc3Ryb3kubmV4dCgpO1xyXG4gICAgdGhpcy5fb25EZXN0cm95LmNvbXBsZXRlKCk7XHJcbiAgfVxyXG4gIGdldFNlYXJjaFRleHQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBgRW50ZXIgJHt0aGlzLm1pbkxlbmd0aFRlcm19IGNoYXJhY3RlcnMgdG8gc3RhcnQgc2VhcmNoYDtcclxuXHJcbiAgfVxyXG4gIHdyaXRlVmFsdWUobW9kZWw6IFQgfCBudWxsKTogdm9pZCB7XHJcbiAgICBjb25zb2xlLmxvZyhtb2RlbCk7XHJcbiAgICB0aGlzLnZhbHVlID0gbW9kZWw7XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XHJcbiAgfVxyXG5cclxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xyXG4gIH1cclxuICBwcml2YXRlIGxvYWRNb2RlbChpZDogc3RyaW5nKSB7XHJcbiAgICAvL0xvYWQgdGhlIG1vZGVsIGZyb20gQVBJIHRvIGRpc3BsYXkgdGhlIHZhbHVlXHJcbiAgICBsZXQgbmVlZExvYWQgPSBmYWxzZTtcclxuICAgIGlmIChpZCkge1xyXG4gICAgICBpZiAoIXRoaXMuc2VhcmNoQ29udHJvbC52YWx1ZSlcclxuICAgICAgICBuZWVkTG9hZCA9IHRydWVcclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc2VhcmNoQ29udHJvbC52YWx1ZVt0aGlzLnZhbHVlRmllbGRdICE9PSBpZCkge1xyXG4gICAgICAgICAgbmVlZExvYWQgPSB0cnVlXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAobmVlZExvYWQpIHtcclxuICAgICAgdGhpcy5zZXJ2aWNlUmVmLmdldChpZCkuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAobW9kZWw6IFQpID0+IHtcclxuICAgICAgICAgIHRoaXMub3B0aW9ucy5wdXNoKG1vZGVsKTtcclxuICAgICAgICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zID0gdGhpcy5vcHRpb25zO1xyXG4gICAgICAgICAgdGhpcy5zZWFyY2hDb250cm9sLnNldFZhbHVlKG1vZGVsKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgPGxhYmVsPnt7bGFiZWwgfCB0cmFuc2xhdGV9fTwvbGFiZWw+XHJcbiAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgZnhGbGV4PlxyXG4gICAgPGlucHV0IG1hdElucHV0IFttYXRBdXRvY29tcGxldGVdPVwiYXV0b1wiIFtmb3JtQ29udHJvbF09XCJzZWFyY2hDb250cm9sXCI+XHJcbiAgICA8YnV0dG9uICpuZ0lmPVwic2VhcmNoQ29udHJvbC52YWx1ZVwiIG1hdFN1ZmZpeCBtYXQtaWNvbi1idXR0b24gYXJpYS1sYWJlbD1cIkNsZWFyXCIgKGNsaWNrKT1cImNsZWFyU2VsZWN0aW9uKClcIj5cclxuICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPG1hdC1hdXRvY29tcGxldGUgI2F1dG89XCJtYXRBdXRvY29tcGxldGVcIiAob3B0aW9uU2VsZWN0ZWQpPVwib25TZWxlY3RlZCgkZXZlbnQpXCJcclxuICAgICAgW2Rpc3BsYXlXaXRoXT1cImRpc3BsYXlXaXRoLmJpbmQodGhpcylcIj5cclxuICAgICAgPG1hdC1vcHRpb24gKm5nSWY9XCJpc0xvYWRpbmdcIj5Mb2FkaW5nLi4uPC9tYXQtb3B0aW9uPlxyXG4gICAgICA8bWF0LW9wdGlvbiAqbmdJZj1cIiFpc0xvYWRpbmcgJiYgZmlsdGVyZWRPcHRpb25zLmxlbmd0aCA9PSAwICYmICFzaG93U2VyYWNoXCIgZGlzYWJsZWQ+Tm90IGZvdW5kPC9tYXQtb3B0aW9uPlxyXG4gICAgICA8bWF0LW9wdGlvbiAqbmdJZj1cInNob3dTZXJhY2hcIiBkaXNhYmxlZD57e2dldFNlYXJjaFRleHQoKX19PC9tYXQtb3B0aW9uPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzTG9hZGluZyAmJiBmaWx0ZXJlZE9wdGlvbnMubGVuZ3RoID4gMFwiPlxyXG4gICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgZmlsdGVyZWRPcHRpb25zXCIgW3ZhbHVlXT1cIm9wdGlvblwiPlxyXG4gICAgICAgICAgPHNwYW4+PGI+e3tnZXRDb25jYXRlZEZpZWxkcyhvcHRpb24pfX08L2I+PC9zcGFuPlxyXG4gICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPC9tYXQtYXV0b2NvbXBsZXRlPlxyXG4gIDwvbWF0LWZvcm0tZmllbGQ+XHJcbjwvZGl2PiJdfQ==
@@ -1,62 +0,0 @@
1
- import { FocusMonitor } from '@angular/cdk/a11y';
2
- import { ElementRef, EventEmitter, OnDestroy, OnInit } from '@angular/core';
3
- import { AbstractControl, ControlValueAccessor, NgControl } from '@angular/forms';
4
- import { Subject } from 'rxjs';
5
- import { BaseModel } from '../../models/base.model';
6
- import { BaseService } from '../../services/base.service';
7
- import * as i0 from "@angular/core";
8
- export declare class SearchableDropdownComponent<T extends BaseModel> implements OnInit, OnDestroy, ControlValueAccessor {
9
- private _focusMonitor;
10
- private _elementRef;
11
- ngControl: NgControl;
12
- static nextId: number;
13
- onChange: (_: any) => void;
14
- onTouched: () => void;
15
- stateChanges: Subject<void>;
16
- focused: boolean;
17
- errorState: boolean;
18
- id: string;
19
- label: string;
20
- fControlName: string;
21
- serviceRef: BaseService<T>;
22
- searchFields: string;
23
- displayFields: string;
24
- sortFields: string;
25
- valueField: string;
26
- minLengthTerm: number;
27
- preloadElementsCount: number;
28
- modelSelected: EventEmitter<BaseModel>;
29
- get empty(): boolean;
30
- get required(): boolean;
31
- set required(value: boolean);
32
- private _required;
33
- get disabled(): boolean;
34
- set disabled(value: boolean);
35
- private _disabled;
36
- get value(): any | null;
37
- set value(value: any | null);
38
- private _value;
39
- searchControl: AbstractControl;
40
- showSerach: boolean;
41
- isLoading: boolean;
42
- options: any[];
43
- filteredOptions: any[];
44
- /** Subject that emits when the component has been destroyed. */
45
- protected _onDestroy: Subject<void>;
46
- constructor(_focusMonitor: FocusMonitor, _elementRef: ElementRef<HTMLElement>, ngControl: NgControl);
47
- ngOnInit(): void;
48
- onSelected($event: any): void;
49
- setControlValue(value: any): void;
50
- displayWith(value: any): string;
51
- clearSelection(): void;
52
- getConcatedFields(option: any): string;
53
- ngOnDestroy(): void;
54
- getSearchText(): string;
55
- writeValue(model: T | null): void;
56
- registerOnChange(fn: any): void;
57
- registerOnTouched(fn: any): void;
58
- setDisabledState(isDisabled: boolean): void;
59
- private loadModel;
60
- static ɵfac: i0.ɵɵFactoryDeclaration<SearchableDropdownComponent<any>, [null, null, { optional: true; self: true; }]>;
61
- static ɵcmp: i0.ɵɵComponentDeclaration<SearchableDropdownComponent<any>, "rsl-searchable-dropdown", never, { "label": "label"; "fControlName": "fControlName"; "serviceRef": "serviceRef"; "searchFields": "searchFields"; "displayFields": "displayFields"; "sortFields": "sortFields"; "valueField": "valueField"; "minLengthTerm": "minLengthTerm"; "preloadElementsCount": "preloadElementsCount"; "required": "required"; "disabled": "disabled"; "value": "value"; }, { "modelSelected": "modelSelected"; }, never, never>;
62
- }