@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.
- package/esm2020/lib/base-components/base-form-edit.component.mjs +15 -41
- package/esm2020/lib/base-components/field-error-display/field-error-display.component.mjs +3 -3
- package/esm2020/lib/base-components/generic-table/generic-table.component.mjs +17 -80
- package/esm2020/lib/base-components/index.mjs +1 -2
- package/esm2020/lib/base-components/page-not-found/page-not-found.component.mjs +3 -3
- package/esm2020/lib/base-components/under-construction/under-construction.component.mjs +3 -3
- package/esm2020/lib/decorators/attribute.decorator.mjs +1 -4
- package/esm2020/lib/interfaces/attribute-decorator-options.interface.mjs +1 -1
- package/esm2020/lib/models/base.model.mjs +3 -46
- package/esm2020/lib/models/grid-layout-format.enum.mjs +1 -2
- package/esm2020/lib/module.mjs +5 -14
- package/esm2020/lib/services/base.service.mjs +2 -6
- package/fesm2015/rosoftlab-core.mjs +72 -443
- package/fesm2015/rosoftlab-core.mjs.map +1 -1
- package/fesm2020/rosoftlab-core.mjs +72 -438
- package/fesm2020/rosoftlab-core.mjs.map +1 -1
- package/lib/base-components/base-form-edit.component.d.ts +4 -9
- package/lib/base-components/field-error-display/field-error-display.component.d.ts +1 -1
- package/lib/base-components/generic-table/generic-table.component.d.ts +4 -17
- package/lib/base-components/index.d.ts +0 -1
- package/lib/base-components/page-not-found/page-not-found.component.d.ts +1 -1
- package/lib/base-components/under-construction/under-construction.component.d.ts +1 -1
- package/lib/interfaces/attribute-decorator-options.interface.d.ts +0 -1
- package/lib/models/base.model.d.ts +3 -7
- package/lib/models/grid-layout-format.enum.d.ts +1 -2
- package/lib/module.d.ts +6 -8
- package/package.json +3 -3
- package/esm2020/lib/base-components/searchable-dropdown/searchable-dropdown.component.mjs +0 -231
- 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
|
-
|
37
|
-
|
38
|
-
|
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
|
-
|
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, "
|
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 {
|
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
|
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
|
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>, "
|
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
|
}
|
@@ -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, "
|
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, "
|
5
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<UnderConstructionComponent, "app-under-construction", never, {}, {}, never, never>;
|
6
6
|
}
|
@@ -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
|
24
|
-
getModelRequiredPropertyNames
|
25
|
-
getModelDefaultPropertyValues
|
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
|
}
|
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 "
|
4
|
-
import * as i3 from "@
|
5
|
-
import * as i4 from "
|
6
|
-
import * as i5 from "
|
7
|
-
import * as i6 from "@angular/
|
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
|
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.
|
3
|
+
"version": "0.0.101",
|
4
4
|
"peerDependencies": {
|
5
|
-
"@angular/common": "
|
6
|
-
"@angular/core": "
|
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
|
-
}
|