@sd-angular/core 0.0.999 → 0.0.1000
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/sd-angular-core-select.umd.js +12 -73
- package/bundles/sd-angular-core-select.umd.js.map +1 -1
- package/bundles/sd-angular-core-select.umd.min.js +2 -2
- package/bundles/sd-angular-core-select.umd.min.js.map +1 -1
- package/esm2015/select/src/lib/select.component.js +14 -71
- package/fesm2015/sd-angular-core-select.js +13 -70
- package/fesm2015/sd-angular-core-select.js.map +1 -1
- package/package.json +1 -1
- package/{sd-angular-core-0.0.999.tgz → sd-angular-core-0.0.1000.tgz} +0 -0
- package/select/sd-angular-core-select.metadata.json +1 -1
- package/select/src/lib/select.component.d.ts +2 -5
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Directive, TemplateRef, EventEmitter, Component, ChangeDetectionStrategy,
|
|
1
|
+
import { Directive, TemplateRef, EventEmitter, Component, ChangeDetectionStrategy, ViewChild, Input, ContentChild, Output, NgModule } from '@angular/core';
|
|
2
2
|
import { CommonModule } from '@angular/common';
|
|
3
3
|
import { FormControl, Validators, NgForm, FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
4
4
|
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
@@ -30,10 +30,9 @@ SdSelectDisplayDefDirective.ctorParameters = () => [
|
|
|
30
30
|
{ type: TemplateRef }
|
|
31
31
|
];
|
|
32
32
|
|
|
33
|
-
var _input, _name, _form,
|
|
33
|
+
var _input, _name, _form, _items, _currentItems, _allItem, _delay, _validator, _allItems, _updateValidator, _search, _loadItems, _onChange, _customValidator;
|
|
34
34
|
class SdSelect {
|
|
35
|
-
constructor(
|
|
36
|
-
this.ref = ref;
|
|
35
|
+
constructor(utilityService) {
|
|
37
36
|
this.utilityService = utilityService;
|
|
38
37
|
_input.set(this, void 0);
|
|
39
38
|
_name.set(this, v4());
|
|
@@ -41,10 +40,7 @@ class SdSelect {
|
|
|
41
40
|
this.formControl = new FormControl();
|
|
42
41
|
this.searchTerm$ = new Subject();
|
|
43
42
|
_form.set(this, void 0);
|
|
44
|
-
_model.set(this, void 0);
|
|
45
43
|
// Items
|
|
46
|
-
_selectedItem.set(this, void 0);
|
|
47
|
-
_selectedItems.set(this, []);
|
|
48
44
|
_items.set(this, []);
|
|
49
45
|
_currentItems.set(this, []);
|
|
50
46
|
_allItem.set(this, {});
|
|
@@ -58,6 +54,7 @@ class SdSelect {
|
|
|
58
54
|
this.limit = 100;
|
|
59
55
|
this.filtered = false;
|
|
60
56
|
this.selectAll = false;
|
|
57
|
+
_allItems.set(this, void 0);
|
|
61
58
|
this.allSelected = false;
|
|
62
59
|
this.modelChange = new EventEmitter();
|
|
63
60
|
this.sdChange = new EventEmitter();
|
|
@@ -132,38 +129,19 @@ class SdSelect {
|
|
|
132
129
|
_onChange.set(this, (value) => {
|
|
133
130
|
var _a, _b;
|
|
134
131
|
if (Array.isArray(value)) {
|
|
135
|
-
// let vals = value;
|
|
136
|
-
// if (this.dataType === 'number' && value.every(val => Number.isNumber(val))) {
|
|
137
|
-
// vals = value.map(e => +e);
|
|
138
|
-
// }
|
|
139
|
-
__classPrivateFieldSet(this, _selectedItems, (_a = __classPrivateFieldGet(this, _currentItems)) === null || _a === void 0 ? void 0 : _a.filter(e => value.some(e1 => e1 === (e === null || e === void 0 ? void 0 : e[this.valueField]))));
|
|
140
132
|
this.modelChange.emit(value);
|
|
141
133
|
this.sdChange.emit(value);
|
|
142
134
|
this.sdSelection.emit({
|
|
143
135
|
value: value,
|
|
144
|
-
items: __classPrivateFieldGet(this,
|
|
136
|
+
items: (_a = __classPrivateFieldGet(this, _currentItems)) === null || _a === void 0 ? void 0 : _a.filter(e => value.some(e1 => e1 === (e === null || e === void 0 ? void 0 : e[this.valueField])))
|
|
145
137
|
});
|
|
146
138
|
}
|
|
147
139
|
else {
|
|
148
|
-
// let val = value;
|
|
149
|
-
// if (this.dataType === 'number' && Number.isNumber(value)) {
|
|
150
|
-
// val = +value;
|
|
151
|
-
// }
|
|
152
|
-
// if (this.dataType === 'boolean') {
|
|
153
|
-
// if (value === 'true') {
|
|
154
|
-
// val = true;
|
|
155
|
-
// } else if (value === 'false') {
|
|
156
|
-
// val = false;
|
|
157
|
-
// } else {
|
|
158
|
-
// val = !!value;
|
|
159
|
-
// }
|
|
160
|
-
// }
|
|
161
|
-
__classPrivateFieldSet(this, _selectedItem, (_b = __classPrivateFieldGet(this, _currentItems)) === null || _b === void 0 ? void 0 : _b.find(e => value === (e === null || e === void 0 ? void 0 : e[this.valueField])));
|
|
162
140
|
this.modelChange.emit(value);
|
|
163
141
|
this.sdChange.emit(value);
|
|
164
142
|
this.sdSelection.emit({
|
|
165
143
|
value: value,
|
|
166
|
-
item: __classPrivateFieldGet(this,
|
|
144
|
+
item: (_b = __classPrivateFieldGet(this, _currentItems)) === null || _b === void 0 ? void 0 : _b.find(e => value === (e === null || e === void 0 ? void 0 : e[this.valueField]))
|
|
167
145
|
});
|
|
168
146
|
}
|
|
169
147
|
});
|
|
@@ -236,41 +214,6 @@ class SdSelect {
|
|
|
236
214
|
this.disableErrorMessage = (val === '') || val;
|
|
237
215
|
val = (val === '') || val;
|
|
238
216
|
}
|
|
239
|
-
get dataType() {
|
|
240
|
-
var _a;
|
|
241
|
-
if (Array.isArray(__classPrivateFieldGet(this, _model))) {
|
|
242
|
-
if (__classPrivateFieldGet(this, _model).length && typeof (__classPrivateFieldGet(this, _model)[0]) === 'number') {
|
|
243
|
-
return 'number';
|
|
244
|
-
}
|
|
245
|
-
if (__classPrivateFieldGet(this, _model).length && typeof (__classPrivateFieldGet(this, _model)[0]) === 'boolean') {
|
|
246
|
-
return 'boolean';
|
|
247
|
-
}
|
|
248
|
-
return 'string';
|
|
249
|
-
}
|
|
250
|
-
else {
|
|
251
|
-
if ((__classPrivateFieldGet(this, _model) && typeof (__classPrivateFieldGet(this, _model)) === 'number') || __classPrivateFieldGet(this, _model) === 0) {
|
|
252
|
-
return 'number';
|
|
253
|
-
}
|
|
254
|
-
if ((__classPrivateFieldGet(this, _model) && typeof (__classPrivateFieldGet(this, _model)) === 'boolean') || __classPrivateFieldGet(this, _model) === false) {
|
|
255
|
-
return 'boolean';
|
|
256
|
-
}
|
|
257
|
-
}
|
|
258
|
-
if ((_a = __classPrivateFieldGet(this, _currentItems)) === null || _a === void 0 ? void 0 : _a.length) {
|
|
259
|
-
if (this.valueField && typeof (__classPrivateFieldGet(this, _currentItems)[0][this.valueField]) === 'number') {
|
|
260
|
-
return 'number';
|
|
261
|
-
}
|
|
262
|
-
else if (this.valueField && typeof (__classPrivateFieldGet(this, _currentItems)[0][this.valueField]) === 'boolean') {
|
|
263
|
-
return 'boolean';
|
|
264
|
-
}
|
|
265
|
-
else if (typeof (__classPrivateFieldGet(this, _currentItems)[0]) === 'number') {
|
|
266
|
-
return 'number';
|
|
267
|
-
}
|
|
268
|
-
else if (typeof (__classPrivateFieldGet(this, _currentItems)[0]) === 'boolean') {
|
|
269
|
-
return 'boolean';
|
|
270
|
-
}
|
|
271
|
-
}
|
|
272
|
-
return 'string';
|
|
273
|
-
}
|
|
274
217
|
set form(val) {
|
|
275
218
|
if (val) {
|
|
276
219
|
if (val instanceof NgForm) {
|
|
@@ -289,7 +232,7 @@ class SdSelect {
|
|
|
289
232
|
// this.formControl.setValue((value ?? '') + '');
|
|
290
233
|
// }
|
|
291
234
|
// this.ref.detectChanges();
|
|
292
|
-
|
|
235
|
+
// this.#model = value;
|
|
293
236
|
if (Array.isArray(value)) {
|
|
294
237
|
this.formControl.setValue(value);
|
|
295
238
|
}
|
|
@@ -337,7 +280,7 @@ class SdSelect {
|
|
|
337
280
|
this.selectAll = (val === '') || val;
|
|
338
281
|
}
|
|
339
282
|
ngOnInit() {
|
|
340
|
-
this
|
|
283
|
+
__classPrivateFieldSet(this, _allItems, this.searchTerm$.asObservable().pipe(startWith(''), debounceTime(typeof (__classPrivateFieldGet(this, _items)) === 'function' ? __classPrivateFieldGet(this, _delay) : 0), switchMap((val) => __awaiter(this, void 0, void 0, function* () {
|
|
341
284
|
if (typeof (__classPrivateFieldGet(this, _items)) === 'function') {
|
|
342
285
|
return yield __classPrivateFieldGet(this, _loadItems).call(this, val, __classPrivateFieldGet(this, _items));
|
|
343
286
|
}
|
|
@@ -383,11 +326,12 @@ class SdSelect {
|
|
|
383
326
|
}
|
|
384
327
|
return 0;
|
|
385
328
|
});
|
|
386
|
-
})));
|
|
387
|
-
this.filteredItems = this.
|
|
329
|
+
}))));
|
|
330
|
+
this.filteredItems = __classPrivateFieldGet(this, _allItems).pipe(map(allItems => {
|
|
331
|
+
__classPrivateFieldSet(this, _currentItems, allItems);
|
|
388
332
|
return allItems.filter((item, index) => index < this.limit);
|
|
389
333
|
}));
|
|
390
|
-
this.display = combineLatest([this
|
|
334
|
+
this.display = combineLatest([__classPrivateFieldGet(this, _allItems), this.formControl.valueChanges.pipe(startWith(this.formControl.value))]).pipe(map(([items, formValue]) => {
|
|
391
335
|
const isArray = Array.isArray(formValue);
|
|
392
336
|
if (!this.valueField || !this.displayField) {
|
|
393
337
|
return isArray ? formValue === null || formValue === void 0 ? void 0 : formValue.join(', ') : formValue;
|
|
@@ -415,7 +359,7 @@ class SdSelect {
|
|
|
415
359
|
__classPrivateFieldGet(this, _onChange).call(this, this.formControl.value);
|
|
416
360
|
}
|
|
417
361
|
}
|
|
418
|
-
_input = new WeakMap(), _name = new WeakMap(), _form = new WeakMap(),
|
|
362
|
+
_input = new WeakMap(), _name = new WeakMap(), _form = new WeakMap(), _items = new WeakMap(), _currentItems = new WeakMap(), _allItem = new WeakMap(), _delay = new WeakMap(), _validator = new WeakMap(), _allItems = new WeakMap(), _updateValidator = new WeakMap(), _search = new WeakMap(), _loadItems = new WeakMap(), _onChange = new WeakMap(), _customValidator = new WeakMap();
|
|
419
363
|
SdSelect.decorators = [
|
|
420
364
|
{ type: Component, args: [{
|
|
421
365
|
selector: 'sd-select',
|
|
@@ -425,7 +369,6 @@ SdSelect.decorators = [
|
|
|
425
369
|
},] }
|
|
426
370
|
];
|
|
427
371
|
SdSelect.ctorParameters = () => [
|
|
428
|
-
{ type: ChangeDetectorRef },
|
|
429
372
|
{ type: SdUtilityService }
|
|
430
373
|
];
|
|
431
374
|
SdSelect.propDecorators = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sd-angular-core-select.js","sources":["../../../../projects/sd-core/select/src/lib/select-display-def.directive.ts","../../../../projects/sd-core/select/src/lib/select.component.ts","../../../../projects/sd-core/select/src/lib/select.module.ts","../../../../projects/sd-core/select/src/public-api.ts","../../../../projects/sd-core/select/sd-angular-core-select.ts"],"sourcesContent":["import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdSelectDisplayDef]'\r\n})\r\nexport class SdSelectDisplayDefDirective {\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Component, Input, Output, EventEmitter, ChangeDetectorRef, AfterViewInit, OnDestroy, OnInit, ViewChild, ChangeDetectionStrategy, ContentChild } from '@angular/core';\r\nimport { NgForm, FormControl, Validators, ValidatorFn, AbstractControl, AsyncValidatorFn, FormGroup } from '@angular/forms';\r\nimport * as uuid from 'uuid';\r\nimport { MatSelect, MatSelectChange } from '@angular/material/select';\r\nimport { combineLatest, Observable, Subject } from 'rxjs';\r\nimport { debounceTime, map, startWith, switchMap } from 'rxjs/operators';\r\nimport { SdUtilityService } from '@sd-angular/core/utility';\r\nimport { MatInput } from '@angular/material/input';\r\nimport { SdSelectDisplayDefDirective } from './select-display-def.directive';\r\n@Component({\r\n selector: 'sd-select',\r\n templateUrl: './select.component.html',\r\n styleUrls: ['./select.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdSelect implements OnInit, AfterViewInit, OnDestroy {\r\n #input: MatInput;\r\n @ViewChild(MatInput) set input(input: MatInput) {\r\n if (this.#input !== input) {\r\n this.#input = input;\r\n this.#input.value = null;\r\n }\r\n }\r\n @ViewChild('select') select: MatSelect;\r\n #name = uuid.v4();\r\n @Input() set name(val: string) {\r\n if (val) {\r\n this.#name = val;\r\n }\r\n }\r\n disableErrorMessage = false;\r\n @Input('disableErrorMessage') set _disableErrorMessage(val: boolean | '') {\r\n this.disableErrorMessage = (val === '') || val;\r\n val = (val === '') || val;\r\n }\r\n formControl = new FormControl();\r\n\r\n searchTerm$ = new Subject();\r\n\r\n get dataType(): 'boolean' | 'number' | 'string' {\r\n if (Array.isArray(this.#model)) {\r\n if (this.#model.length && typeof (this.#model[0]) === 'number') {\r\n return 'number';\r\n }\r\n if (this.#model.length && typeof (this.#model[0]) === 'boolean') {\r\n return 'boolean';\r\n }\r\n return 'string';\r\n } else {\r\n if ((this.#model && typeof (this.#model) === 'number') || this.#model === 0) {\r\n return 'number';\r\n }\r\n if ((this.#model && typeof (this.#model) === 'boolean') || this.#model === false) {\r\n return 'boolean';\r\n }\r\n }\r\n if (this.#currentItems?.length) {\r\n if (this.valueField && typeof (this.#currentItems[0][this.valueField]) === 'number') {\r\n return 'number';\r\n } else if (this.valueField && typeof (this.#currentItems[0][this.valueField]) === 'boolean') {\r\n return 'boolean';\r\n } else if (typeof (this.#currentItems[0]) === 'number') {\r\n return 'number';\r\n } else if (typeof (this.#currentItems[0]) === 'boolean') {\r\n return 'boolean';\r\n }\r\n }\r\n return 'string';\r\n }\r\n @Input() size: 'sm' | 'lg';\r\n #form: FormGroup;\r\n @Input() set form(val: NgForm | FormGroup) {\r\n if (val) {\r\n if (val instanceof NgForm) {\r\n this.#form = val.form;\r\n } else {\r\n this.#form = val;\r\n }\r\n }\r\n }\r\n @Input() label: string;\r\n @Input() placeholder: string;\r\n\r\n // Model\r\n display: Observable<string>;\r\n #model: boolean | number | string | (number | string)[];\r\n @Input() set model(value: undefined | boolean | number | string | (number | string)[]) {\r\n // this.#model = value;\r\n // if (Array.isArray(value)) {\r\n // this.formControl.setValue(value.map(val => (val ?? '') + ''));\r\n // } else {\r\n // this.formControl.setValue((value ?? '') + '');\r\n // }\r\n // this.ref.detectChanges();\r\n this.#model = value;\r\n if (Array.isArray(value)) {\r\n this.formControl.setValue(value);\r\n } else {\r\n this.formControl.setValue(value);\r\n }\r\n }\r\n // Items\r\n #selectedItem: any;\r\n #selectedItems: any[] = [];\r\n #items: any[] | ((searchText?: string) => Promise<any[]>) = [];\r\n #currentItems: any[] = [];\r\n #allItem: {\r\n [key: string]: any\r\n } = {};\r\n @Input() set items(items: undefined | any[] | ((searchText?: string | string[]) => Promise<any[]>)) {\r\n if (!items) {\r\n this.#items = [];\r\n } else if (Array.isArray(items)) {\r\n this.#items = items.filter(e => e !== null && e !== undefined);\r\n } else {\r\n this.#items = items;\r\n }\r\n this.searchTerm$.next('');\r\n }\r\n @Input() valueField: string;\r\n @Input() displayField: string;\r\n\r\n // Server search\r\n loading = false;\r\n #delay = 500; // Sau khoảng thời gian delay nếu không có thay đổi thì thì mới bắt đầu thực hiện gọi hàm\r\n\r\n // Validator\r\n isRequired = false;\r\n #validator: (value: any) => string | Promise<string>;\r\n @Input() set required(val: boolean | '') {\r\n this.isRequired = (val === '') || val;\r\n this.#updateValidator();\r\n }\r\n @Input() set validator(validator: (value: any) => string | Promise<string>) {\r\n this.#validator = validator;\r\n this.#updateValidator();\r\n }\r\n // Optional\r\n @Input() set disabled(val: boolean | '') {\r\n val = (val === '') || val;\r\n if (val) {\r\n this.formControl.disable();\r\n } else {\r\n this.formControl.enable();\r\n }\r\n }\r\n multiple = false;\r\n @Input('multiple') set _multiple(val: boolean | '') {\r\n this.multiple = (val === '') || val;\r\n }\r\n @Input() limit = 100;\r\n filtered = false;\r\n @Input('filtered') set _filtered(val: boolean | '') {\r\n this.filtered = (val === '') || val;\r\n }\r\n @ContentChild(SdSelectDisplayDefDirective) selectDisplayDef: SdSelectDisplayDefDirective;\r\n selectAll = false;\r\n @Input('selectAll') set _selectAll(val: boolean | '') {\r\n this.selectAll = (val === '') || val;\r\n }\r\n allItems: Observable<any[]>;\r\n filteredItems: Observable<any[]>;\r\n allSelected = false;\r\n @Output() modelChange = new EventEmitter();\r\n @Output() sdChange = new EventEmitter();\r\n @Output() sdSelection = new EventEmitter<{ value: any | any[], item?: any, items?: any[] }>();\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n private utilityService: SdUtilityService) { }\r\n\r\n ngOnInit() {\r\n this.allItems = this.searchTerm$.asObservable().pipe(\r\n startWith(''),\r\n debounceTime(typeof (this.#items) === 'function' ? this.#delay : 0),\r\n switchMap(async (val: string) => {\r\n if (typeof (this.#items) === 'function') {\r\n return await this.#loadItems(val, this.#items);\r\n }\r\n const { changeAliasLowerCase } = this.utilityService;\r\n const searchText = changeAliasLowerCase(val);\r\n const formValue = this.formControl.value;\r\n const isArray = Array.isArray(formValue);\r\n const hasFields = !!this.valueField && !!this.displayField;\r\n return this.#items.filter(item => {\r\n const value = hasFields ? item[this.valueField] : item;\r\n const display = hasFields ? item[this.displayField] : item;\r\n if (changeAliasLowerCase(value).includes(searchText) || changeAliasLowerCase(display).includes(searchText)) {\r\n return true;\r\n }\r\n if (isArray) {\r\n return formValue.some(e => e === value)\r\n }\r\n return formValue === value;\r\n }).sort((a, b) => {\r\n if (!this.multiple) {\r\n return 0;\r\n }\r\n const value1 = hasFields ? a[this.valueField] : a;\r\n const value2 = hasFields ? b[this.valueField] : b;\r\n if (isArray) {\r\n const t1 = formValue.some(e => e === value1);\r\n const t2 = formValue.some(e => e === value2);\r\n if (t1 && !t2) {\r\n return -1;\r\n }\r\n if (!t1 && t2) {\r\n return 1;\r\n }\r\n return 0;\r\n }\r\n const t1 = formValue === value1;\r\n const t2 = formValue === value2;\r\n if (t1 && !t2) {\r\n return -1;\r\n }\r\n if (!t1 && t2) {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n })\r\n );\r\n this.filteredItems = this.allItems.pipe(map(allItems => {\r\n return allItems.filter((item, index) => index < this.limit);\r\n }));\r\n\r\n this.display = combineLatest([this.allItems, this.formControl.valueChanges.pipe(startWith(this.formControl.value))]).pipe(\r\n map(([items, formValue]) => {\r\n const isArray = Array.isArray(formValue);\r\n if (!this.valueField || !this.displayField) {\r\n return isArray ? formValue?.join(', ') : formValue;\r\n }\r\n return items.filter(e => isArray ? formValue.includes(e[this.valueField]) : formValue === e[this.valueField])\r\n .map(e => e[this.displayField]?.toString())\r\n .join(', ');\r\n }),\r\n )\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.#form?.addControl(this.#name, this.formControl);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#form?.removeControl(this.#name);\r\n }\r\n\r\n #updateValidator = () => {\r\n this.formControl.clearValidators();\r\n this.formControl.clearAsyncValidators();\r\n const validators: ValidatorFn[] = [];\r\n const asyncValidators: AsyncValidatorFn[] = [];\r\n if (this.isRequired) {\r\n validators.push(Validators.required);\r\n }\r\n if (this.#validator) {\r\n asyncValidators.push(this.#customValidator(this.#validator));\r\n }\r\n this.formControl.setValidators(validators);\r\n this.formControl.setAsyncValidators(asyncValidators);\r\n this.formControl.updateValueAndValidity();\r\n }\r\n\r\n #search = async (value: any | any[], items: (searchText?: string | string[]) => Promise<any[]>) => {\r\n const results = await items(value).catch(() => []);\r\n if (Array.isArray(value)) {\r\n return results.filter(e => !!e && (value.includes(e) || value.includes(e[this.valueField])));\r\n }\r\n return results.filter(e => !!e && (e === value || e[this.valueField] === value));\r\n }\r\n\r\n #loadItems = async (searchText: string, items: (searchText?: string) => Promise<any[]>) => {\r\n this.loading = true;\r\n const results = await items(searchText).finally(() => this.loading = false);\r\n const objItem = this.valueField ? this.utilityService.arrayToObject(results, this.valueField) : results.forEach(item => objItem[item?.toString()] = item);\r\n Object.assign(this.#allItem, objItem);\r\n if (!this.formControl.value?.toString()) {\r\n return results;\r\n }\r\n const values = Array.isArray(this.formControl.value) ? this.formControl.value : [this.formControl.value];\r\n values.map(val => val?.toString()).forEach(val => {\r\n if (!objItem[val]) {\r\n if (this.#allItem[val]) {\r\n results.push(this.#allItem[val]);\r\n } else {\r\n if (this.valueField && this.displayField) {\r\n results.push({\r\n [this.valueField]: val,\r\n [this.displayField]: val\r\n });\r\n } else {\r\n results.push(val);\r\n }\r\n }\r\n }\r\n });\r\n return results;\r\n }\r\n\r\n onSelectionChange = (change: MatSelectChange) => {\r\n this.allSelected = !this.select.options.some(e => !e.selected);\r\n const value = change?.value ?? '';\r\n if (this.multiple) {\r\n this.#onChange(value || []);\r\n } else {\r\n this.searchTerm$.next('');\r\n this.#onChange(value);\r\n }\r\n }\r\n\r\n onSelectAll() {\r\n if (this.allSelected) {\r\n this.formControl.setValue(this.select.options.map(e => e.value));\r\n } else {\r\n this.formControl.setValue([]);\r\n }\r\n this.#onChange(this.formControl.value);\r\n }\r\n\r\n reValidate = () => {\r\n this.formControl.updateValueAndValidity({ emitEvent: true });\r\n }\r\n\r\n #onChange = (value: boolean | number | string | (number | string)[]) => {\r\n if (Array.isArray(value)) {\r\n // let vals = value;\r\n // if (this.dataType === 'number' && value.every(val => Number.isNumber(val))) {\r\n // vals = value.map(e => +e);\r\n // }\r\n this.#selectedItems = this.#currentItems?.filter(e => value.some(e1 => e1 === e?.[this.valueField]))\r\n this.modelChange.emit(value);\r\n this.sdChange.emit(value);\r\n this.sdSelection.emit({\r\n value: value,\r\n items: this.#selectedItems\r\n });\r\n } else {\r\n // let val = value;\r\n // if (this.dataType === 'number' && Number.isNumber(value)) {\r\n // val = +value;\r\n // }\r\n // if (this.dataType === 'boolean') {\r\n // if (value === 'true') {\r\n // val = true;\r\n // } else if (value === 'false') {\r\n // val = false;\r\n // } else {\r\n // val = !!value;\r\n // }\r\n // }\r\n this.#selectedItem = this.#currentItems?.find(e => value === e?.[this.valueField]);\r\n this.modelChange.emit(value);\r\n this.sdChange.emit(value);\r\n this.sdSelection.emit({\r\n value: value,\r\n item: this.#selectedItem\r\n });\r\n }\r\n }\r\n\r\n clear = ($event?: any) => {\r\n $event?.stopPropagation();\r\n if (this.multiple) {\r\n this.formControl.setValue([]);\r\n this.modelChange.emit([]);\r\n this.sdChange.emit([]);\r\n this.sdSelection.emit({\r\n value: [],\r\n items: []\r\n });\r\n } else {\r\n this.formControl.setValue(null);\r\n this.modelChange.emit(null);\r\n this.sdChange.emit(null);\r\n this.sdSelection.emit({\r\n value: null,\r\n item: null\r\n });\r\n }\r\n }\r\n\r\n #customValidator = (func: (value: any) => string | Promise<string>): AsyncValidatorFn => {\r\n return async (c: AbstractControl): Promise<{ [key: string]: any } | null> => {\r\n const value = c.value || null;\r\n if (func && typeof (func) === 'function') {\r\n const result = func(value);\r\n if (result instanceof Promise) {\r\n const message = await result;\r\n if (message) {\r\n return {\r\n customValidator: message\r\n };\r\n }\r\n return null;\r\n }\r\n if (result) {\r\n return {\r\n customValidator: result\r\n };\r\n }\r\n return null;\r\n }\r\n return null;\r\n };\r\n }\r\n\r\n onOpenChange = (isOpened: boolean) => {\r\n if (isOpened) {\r\n if (this.#input) {\r\n this.#input.value = null;\r\n }\r\n this.searchTerm$.next('');\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport '@sd-angular/core/typing';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { SdSelect } from './select.component';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { SdTranslateModule } from '@sd-angular/core/translate';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { SdSelectDisplayDefDirective } from './select-display-def.directive';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatInputModule,\r\n MatTooltipModule,\r\n MatFormFieldModule,\r\n MatIconModule,\r\n MatSelectModule,\r\n MatProgressSpinnerModule,\r\n MatCheckboxModule,\r\n SdTranslateModule\r\n ],\r\n declarations: [\r\n SdSelect,\r\n SdSelectDisplayDefDirective\r\n ],\r\n exports: [\r\n SdSelect,\r\n SdSelectDisplayDefDirective\r\n ],\r\n providers: [\r\n ]\r\n})\r\nexport class SdSelectModule {\r\n\r\n}\r\n","/*\r\n * Public API Surface of superdev-angular-core\r\n */\r\n\r\nexport * from './lib/select.module';\r\nexport * from './lib/select.component';\r\nexport * from './lib/select-display-def.directive';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["uuid.v4"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sd-angular-core-select.js","sources":["../../../../projects/sd-core/select/src/lib/select-display-def.directive.ts","../../../../projects/sd-core/select/src/lib/select.component.ts","../../../../projects/sd-core/select/src/lib/select.module.ts","../../../../projects/sd-core/select/src/public-api.ts","../../../../projects/sd-core/select/sd-angular-core-select.ts"],"sourcesContent":["import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdSelectDisplayDef]'\r\n})\r\nexport class SdSelectDisplayDefDirective {\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Component, Input, Output, EventEmitter, ChangeDetectorRef, AfterViewInit, OnDestroy, OnInit, ViewChild, ChangeDetectionStrategy, ContentChild } from '@angular/core';\r\nimport { NgForm, FormControl, Validators, ValidatorFn, AbstractControl, AsyncValidatorFn, FormGroup } from '@angular/forms';\r\nimport * as uuid from 'uuid';\r\nimport { MatSelect, MatSelectChange } from '@angular/material/select';\r\nimport { combineLatest, Observable, Subject } from 'rxjs';\r\nimport { debounceTime, map, startWith, switchMap } from 'rxjs/operators';\r\nimport { SdUtilityService } from '@sd-angular/core/utility';\r\nimport { MatInput } from '@angular/material/input';\r\nimport { SdSelectDisplayDefDirective } from './select-display-def.directive';\r\n@Component({\r\n selector: 'sd-select',\r\n templateUrl: './select.component.html',\r\n styleUrls: ['./select.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdSelect implements OnInit, AfterViewInit, OnDestroy {\r\n #input: MatInput;\r\n @ViewChild(MatInput) set input(input: MatInput) {\r\n if (this.#input !== input) {\r\n this.#input = input;\r\n this.#input.value = null;\r\n }\r\n }\r\n @ViewChild('select') select: MatSelect;\r\n #name = uuid.v4();\r\n @Input() set name(val: string) {\r\n if (val) {\r\n this.#name = val;\r\n }\r\n }\r\n disableErrorMessage = false;\r\n @Input('disableErrorMessage') set _disableErrorMessage(val: boolean | '') {\r\n this.disableErrorMessage = (val === '') || val;\r\n val = (val === '') || val;\r\n }\r\n formControl = new FormControl();\r\n\r\n searchTerm$ = new Subject();\r\n\r\n @Input() size: 'sm' | 'lg';\r\n #form: FormGroup;\r\n @Input() set form(val: NgForm | FormGroup) {\r\n if (val) {\r\n if (val instanceof NgForm) {\r\n this.#form = val.form;\r\n } else {\r\n this.#form = val;\r\n }\r\n }\r\n }\r\n @Input() label: string;\r\n @Input() placeholder: string;\r\n\r\n // Model\r\n display: Observable<string>;\r\n @Input() set model(value: undefined | boolean | number | string | (number | string)[]) {\r\n // this.#model = value;\r\n // if (Array.isArray(value)) {\r\n // this.formControl.setValue(value.map(val => (val ?? '') + ''));\r\n // } else {\r\n // this.formControl.setValue((value ?? '') + '');\r\n // }\r\n // this.ref.detectChanges();\r\n // this.#model = value;\r\n if (Array.isArray(value)) {\r\n this.formControl.setValue(value);\r\n } else {\r\n this.formControl.setValue(value);\r\n }\r\n }\r\n // Items\r\n #items: any[] | ((searchText?: string) => Promise<any[]>) = [];\r\n #currentItems: any[] = [];\r\n #allItem: {\r\n [key: string]: any\r\n } = {};\r\n @Input() set items(items: undefined | any[] | ((searchText?: string | string[]) => Promise<any[]>)) {\r\n if (!items) {\r\n this.#items = [];\r\n } else if (Array.isArray(items)) {\r\n this.#items = items.filter(e => e !== null && e !== undefined);\r\n } else {\r\n this.#items = items;\r\n }\r\n this.searchTerm$.next('');\r\n }\r\n @Input() valueField: string;\r\n @Input() displayField: string;\r\n\r\n // Server search\r\n loading = false;\r\n #delay = 500; // Sau khoảng thời gian delay nếu không có thay đổi thì thì mới bắt đầu thực hiện gọi hàm\r\n\r\n // Validator\r\n isRequired = false;\r\n #validator: (value: any) => string | Promise<string>;\r\n @Input() set required(val: boolean | '') {\r\n this.isRequired = (val === '') || val;\r\n this.#updateValidator();\r\n }\r\n @Input() set validator(validator: (value: any) => string | Promise<string>) {\r\n this.#validator = validator;\r\n this.#updateValidator();\r\n }\r\n // Optional\r\n @Input() set disabled(val: boolean | '') {\r\n val = (val === '') || val;\r\n if (val) {\r\n this.formControl.disable();\r\n } else {\r\n this.formControl.enable();\r\n }\r\n }\r\n multiple = false;\r\n @Input('multiple') set _multiple(val: boolean | '') {\r\n this.multiple = (val === '') || val;\r\n }\r\n @Input() limit = 100;\r\n filtered = false;\r\n @Input('filtered') set _filtered(val: boolean | '') {\r\n this.filtered = (val === '') || val;\r\n }\r\n @ContentChild(SdSelectDisplayDefDirective) selectDisplayDef: SdSelectDisplayDefDirective;\r\n selectAll = false;\r\n @Input('selectAll') set _selectAll(val: boolean | '') {\r\n this.selectAll = (val === '') || val;\r\n }\r\n #allItems: Observable<any[]>;\r\n filteredItems: Observable<any[]>;\r\n allSelected = false;\r\n @Output() modelChange = new EventEmitter();\r\n @Output() sdChange = new EventEmitter();\r\n @Output() sdSelection = new EventEmitter<{ value: any | any[], item?: any, items?: any[] }>();\r\n constructor(\r\n private utilityService: SdUtilityService) { }\r\n\r\n ngOnInit() {\r\n this.#allItems = this.searchTerm$.asObservable().pipe(\r\n startWith(''),\r\n debounceTime(typeof (this.#items) === 'function' ? this.#delay : 0),\r\n switchMap(async (val: string) => {\r\n if (typeof (this.#items) === 'function') {\r\n return await this.#loadItems(val, this.#items);\r\n }\r\n const { changeAliasLowerCase } = this.utilityService;\r\n const searchText = changeAliasLowerCase(val);\r\n const formValue = this.formControl.value;\r\n const isArray = Array.isArray(formValue);\r\n const hasFields = !!this.valueField && !!this.displayField;\r\n return this.#items.filter(item => {\r\n const value = hasFields ? item[this.valueField] : item;\r\n const display = hasFields ? item[this.displayField] : item;\r\n if (changeAliasLowerCase(value).includes(searchText) || changeAliasLowerCase(display).includes(searchText)) {\r\n return true;\r\n }\r\n if (isArray) {\r\n return formValue.some(e => e === value)\r\n }\r\n return formValue === value;\r\n }).sort((a, b) => {\r\n if (!this.multiple) {\r\n return 0;\r\n }\r\n const value1 = hasFields ? a[this.valueField] : a;\r\n const value2 = hasFields ? b[this.valueField] : b;\r\n if (isArray) {\r\n const t1 = formValue.some(e => e === value1);\r\n const t2 = formValue.some(e => e === value2);\r\n if (t1 && !t2) {\r\n return -1;\r\n }\r\n if (!t1 && t2) {\r\n return 1;\r\n }\r\n return 0;\r\n }\r\n const t1 = formValue === value1;\r\n const t2 = formValue === value2;\r\n if (t1 && !t2) {\r\n return -1;\r\n }\r\n if (!t1 && t2) {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n })\r\n );\r\n this.filteredItems = this.#allItems.pipe(map(allItems => {\r\n this.#currentItems = allItems;\r\n return allItems.filter((item, index) => index < this.limit);\r\n }));\r\n\r\n this.display = combineLatest([this.#allItems, this.formControl.valueChanges.pipe(startWith(this.formControl.value))]).pipe(\r\n map(([items, formValue]) => {\r\n const isArray = Array.isArray(formValue);\r\n if (!this.valueField || !this.displayField) {\r\n return isArray ? formValue?.join(', ') : formValue;\r\n }\r\n return items.filter(e => isArray ? formValue.includes(e[this.valueField]) : formValue === e[this.valueField])\r\n .map(e => e[this.displayField]?.toString())\r\n .join(', ');\r\n }),\r\n )\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.#form?.addControl(this.#name, this.formControl);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#form?.removeControl(this.#name);\r\n }\r\n\r\n #updateValidator = () => {\r\n this.formControl.clearValidators();\r\n this.formControl.clearAsyncValidators();\r\n const validators: ValidatorFn[] = [];\r\n const asyncValidators: AsyncValidatorFn[] = [];\r\n if (this.isRequired) {\r\n validators.push(Validators.required);\r\n }\r\n if (this.#validator) {\r\n asyncValidators.push(this.#customValidator(this.#validator));\r\n }\r\n this.formControl.setValidators(validators);\r\n this.formControl.setAsyncValidators(asyncValidators);\r\n this.formControl.updateValueAndValidity();\r\n }\r\n\r\n #search = async (value: any | any[], items: (searchText?: string | string[]) => Promise<any[]>) => {\r\n const results = await items(value).catch(() => []);\r\n if (Array.isArray(value)) {\r\n return results.filter(e => !!e && (value.includes(e) || value.includes(e[this.valueField])));\r\n }\r\n return results.filter(e => !!e && (e === value || e[this.valueField] === value));\r\n }\r\n\r\n #loadItems = async (searchText: string, items: (searchText?: string) => Promise<any[]>) => {\r\n this.loading = true;\r\n const results = await items(searchText).finally(() => this.loading = false);\r\n const objItem = this.valueField ? this.utilityService.arrayToObject(results, this.valueField) : results.forEach(item => objItem[item?.toString()] = item);\r\n Object.assign(this.#allItem, objItem);\r\n if (!this.formControl.value?.toString()) {\r\n return results;\r\n }\r\n const values = Array.isArray(this.formControl.value) ? this.formControl.value : [this.formControl.value];\r\n values.map(val => val?.toString()).forEach(val => {\r\n if (!objItem[val]) {\r\n if (this.#allItem[val]) {\r\n results.push(this.#allItem[val]);\r\n } else {\r\n if (this.valueField && this.displayField) {\r\n results.push({\r\n [this.valueField]: val,\r\n [this.displayField]: val\r\n });\r\n } else {\r\n results.push(val);\r\n }\r\n }\r\n }\r\n });\r\n return results;\r\n }\r\n\r\n onSelectionChange = (change: MatSelectChange) => {\r\n this.allSelected = !this.select.options.some(e => !e.selected);\r\n const value = change?.value ?? '';\r\n if (this.multiple) {\r\n this.#onChange(value || []);\r\n } else {\r\n this.searchTerm$.next('');\r\n this.#onChange(value);\r\n }\r\n }\r\n\r\n onSelectAll() {\r\n if (this.allSelected) {\r\n this.formControl.setValue(this.select.options.map(e => e.value));\r\n } else {\r\n this.formControl.setValue([]);\r\n }\r\n this.#onChange(this.formControl.value);\r\n }\r\n\r\n reValidate = () => {\r\n this.formControl.updateValueAndValidity({ emitEvent: true });\r\n }\r\n\r\n #onChange = (value: boolean | number | string | (number | string)[]) => {\r\n if (Array.isArray(value)) {\r\n this.modelChange.emit(value);\r\n this.sdChange.emit(value);\r\n this.sdSelection.emit({\r\n value: value,\r\n items: this.#currentItems?.filter(e => value.some(e1 => e1 === e?.[this.valueField]))\r\n });\r\n } else {\r\n this.modelChange.emit(value);\r\n this.sdChange.emit(value);\r\n this.sdSelection.emit({\r\n value: value,\r\n item: this.#currentItems?.find(e => value === e?.[this.valueField])\r\n });\r\n }\r\n }\r\n\r\n clear = ($event?: any) => {\r\n $event?.stopPropagation();\r\n if (this.multiple) {\r\n this.formControl.setValue([]);\r\n this.modelChange.emit([]);\r\n this.sdChange.emit([]);\r\n this.sdSelection.emit({\r\n value: [],\r\n items: []\r\n });\r\n } else {\r\n this.formControl.setValue(null);\r\n this.modelChange.emit(null);\r\n this.sdChange.emit(null);\r\n this.sdSelection.emit({\r\n value: null,\r\n item: null\r\n });\r\n }\r\n }\r\n\r\n #customValidator = (func: (value: any) => string | Promise<string>): AsyncValidatorFn => {\r\n return async (c: AbstractControl): Promise<{ [key: string]: any } | null> => {\r\n const value = c.value || null;\r\n if (func && typeof (func) === 'function') {\r\n const result = func(value);\r\n if (result instanceof Promise) {\r\n const message = await result;\r\n if (message) {\r\n return {\r\n customValidator: message\r\n };\r\n }\r\n return null;\r\n }\r\n if (result) {\r\n return {\r\n customValidator: result\r\n };\r\n }\r\n return null;\r\n }\r\n return null;\r\n };\r\n }\r\n\r\n onOpenChange = (isOpened: boolean) => {\r\n if (isOpened) {\r\n if (this.#input) {\r\n this.#input.value = null;\r\n }\r\n this.searchTerm$.next('');\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport '@sd-angular/core/typing';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { SdSelect } from './select.component';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { SdTranslateModule } from '@sd-angular/core/translate';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { SdSelectDisplayDefDirective } from './select-display-def.directive';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatInputModule,\r\n MatTooltipModule,\r\n MatFormFieldModule,\r\n MatIconModule,\r\n MatSelectModule,\r\n MatProgressSpinnerModule,\r\n MatCheckboxModule,\r\n SdTranslateModule\r\n ],\r\n declarations: [\r\n SdSelect,\r\n SdSelectDisplayDefDirective\r\n ],\r\n exports: [\r\n SdSelect,\r\n SdSelectDisplayDefDirective\r\n ],\r\n providers: [\r\n ]\r\n})\r\nexport class SdSelectModule {\r\n\r\n}\r\n","/*\r\n * Public API Surface of superdev-angular-core\r\n */\r\n\r\nexport * from './lib/select.module';\r\nexport * from './lib/select.component';\r\nexport * from './lib/select-display-def.directive';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["uuid.v4"],"mappings":"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"}
|
package/package.json
CHANGED
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"__symbolic":"module","version":4,"metadata":{"SdSelectModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":15,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":17,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"FormsModule","line":18,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":19,"character":4},{"__symbolic":"reference","module":"@angular/material/input","name":"MatInputModule","line":20,"character":4},{"__symbolic":"reference","module":"@angular/material/tooltip","name":"MatTooltipModule","line":21,"character":4},{"__symbolic":"reference","module":"@angular/material/form-field","name":"MatFormFieldModule","line":22,"character":4},{"__symbolic":"reference","module":"@angular/material/icon","name":"MatIconModule","line":23,"character":4},{"__symbolic":"reference","module":"@angular/material/select","name":"MatSelectModule","line":24,"character":4},{"__symbolic":"reference","module":"@angular/material/progress-spinner","name":"MatProgressSpinnerModule","line":25,"character":4},{"__symbolic":"reference","module":"@angular/material/checkbox","name":"MatCheckboxModule","line":26,"character":4},{"__symbolic":"reference","module":"@sd-angular/core/translate","name":"SdTranslateModule","line":27,"character":4}],"declarations":[{"__symbolic":"reference","name":"SdSelect"},{"__symbolic":"reference","name":"SdSelectDisplayDefDirective"}],"exports":[{"__symbolic":"reference","name":"SdSelect"},{"__symbolic":"reference","name":"SdSelectDisplayDefDirective"}],"providers":[]}]}],"members":{}},"SdSelect":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":9,"character":1},"arguments":[{"selector":"sd-select","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":13,"character":19},"member":"OnPush"},"template":"<div class=\"d-flex align-items-center\">\r\n <mat-form-field class=\"sd-md\" [ngClass]=\"{'sd-sm': size === 'sm', 'no-padding-wrapper': disableErrorMessage}\"\r\n appearance=\"outline\">\r\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\r\n <mat-select #select [formControl]=\"formControl\" placeholder=\"{{placeholder || label}}\" multiple\r\n (selectionChange)=\"onSelectionChange($event)\" disableOptionCentering=\"true\" panelClass=\"sd-select-panel\"\r\n [ngClass]=\"{'sd-selected': !isRequired && (multiple ? formControl?.value?.length : formControl?.value)}\"\r\n [required]=\"isRequired\" (openedChange)=\"onOpenChange($event)\" *ngIf=\"multiple\">\r\n <mat-select-trigger>\r\n {{display | async }}\r\n </mat-select-trigger>\r\n <mat-option *ngIf=\"filtered\" class=\"sd-filtered-input\" (keyup.Space)=\"$event.stopPropagation()\" disabled=\"true\">\r\n <mat-form-field class=\"sd-md\" appearance=\"outline\">\r\n <mat-icon matPrefix>search</mat-icon>\r\n <input #input placeholder=\"{{'Search' | sdTranslate}}\" matInput autocomplete=\"off\"\r\n (keydown)=\"$event.stopPropagation()\" (keyup)=\"searchTerm$.next($event.target.value)\">\r\n </mat-form-field>\r\n </mat-option>\r\n <ng-container *ngIf=\"multiple && selectAll\">\r\n <mat-checkbox class=\"mat-option\" [(ngModel)]=\"allSelected\" [ngModelOptions]=\"{standalone: true}\"\r\n (change)=\"onSelectAll()\">\r\n Tất cả</mat-checkbox>\r\n </ng-container>\r\n <ng-container *ngIf=\"valueField && displayField\">\r\n <mat-option *ngFor=\"let item of filteredItems | async\" [value]=\"item[valueField]\" matTooltipPosition=\"above\"\r\n [matTooltip]=\"item[displayField]\">\r\n <ng-container *ngIf=\"selectDisplayDef?.templateRef\">\r\n <ng-container *ngTemplateOutlet=\"selectDisplayDef.templateRef;context:{item: item}\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!selectDisplayDef?.templateRef\">\r\n {{ item[displayField] }}\r\n </ng-container>\r\n </mat-option>\r\n </ng-container>\r\n <ng-container *ngIf=\"!valueField && !displayField\">\r\n <mat-option *ngFor=\"let item of filteredItems | async\" [value]=\"item\" matTooltipPosition=\"above\"\r\n [matTooltip]=\"item\">\r\n <ng-container *ngIf=\"selectDisplayDef?.templateRef\">\r\n <ng-container *ngTemplateOutlet=\"selectDisplayDef.templateRef;context:{item: item}\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!selectDisplayDef?.templateRef\">\r\n {{ item }}\r\n </ng-container>\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n <mat-select #select [formControl]=\"formControl\" placeholder=\"{{placeholder || label}}\"\r\n (selectionChange)=\"onSelectionChange($event)\" disableOptionCentering=\"true\" panelClass=\"sd-select-panel\"\r\n [ngClass]=\"{'sd-selected': !isRequired && formControl?.value}\" [required]=\"isRequired\"\r\n (openedChange)=\"onOpenChange($event)\" *ngIf=\"!multiple\">\r\n <mat-select-trigger>\r\n {{display | async }}\r\n </mat-select-trigger>\r\n <mat-option *ngIf=\"filtered\" class=\"sd-filtered-input\" (keyup.Space)=\"$event.stopPropagation()\" disabled=\"true\">\r\n <mat-form-field class=\"sd-md\" appearance=\"outline\">\r\n <mat-icon matPrefix>search</mat-icon>\r\n <input #input placeholder=\"{{'Search' | sdTranslate}}\" matInput autocomplete=\"off\"\r\n (keydown)=\"$event.stopPropagation()\" (keyup)=\"searchTerm$.next($event.target.value)\">\r\n </mat-form-field>\r\n </mat-option>\r\n <ng-container *ngIf=\"valueField && displayField\">\r\n <mat-option *ngFor=\"let item of filteredItems | async\" [value]=\"item[valueField]\" matTooltipPosition=\"above\"\r\n [matTooltip]=\"item[displayField]\">\r\n <ng-container *ngIf=\"selectDisplayDef?.templateRef\">\r\n <ng-container *ngTemplateOutlet=\"selectDisplayDef.templateRef;context:{item: item}\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!selectDisplayDef?.templateRef\">\r\n {{ item[displayField] }}\r\n </ng-container>\r\n </mat-option>\r\n </ng-container>\r\n <ng-container *ngIf=\"!valueField && !displayField\">\r\n <mat-option *ngFor=\"let item of filteredItems | async\" [value]=\"item\" matTooltipPosition=\"above\"\r\n [matTooltip]=\"item\">\r\n <ng-container *ngIf=\"selectDisplayDef?.templateRef\">\r\n <ng-container *ngTemplateOutlet=\"selectDisplayDef.templateRef;context:{item: item}\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!selectDisplayDef?.templateRef\">\r\n {{ item }}\r\n </ng-container>\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n <mat-icon\r\n *ngIf=\"(multiple ? formControl?.value?.length : formControl?.value) && !isRequired && !formControl.disabled\"\r\n class=\"pointer sd-suffix-icon\" (click)=\"clear($event)\" matSuffix>cancel\r\n </mat-icon>\r\n <mat-error *ngIf=\"formControl.errors?.required && !disableErrorMessage\">\r\n {{'This field is required' | sdTranslate}}\r\n </mat-error>\r\n <mat-error *ngIf=\"formControl?.errors?.customValidator && !disableErrorMessage\">\r\n {{formControl?.errors?.customValidator}}\r\n </mat-error>\r\n </mat-form-field>\r\n</div>","styles":[":host{display:block;padding-top:5px}:host ::ng-deep .mat-form-field.mat-form-field-appearance-outline .mat-select-arrow-wrapper{transform:none}:host ::ng-deep .sd-selected .mat-select-arrow{border:none}:host ::ng-deep .mat-form-field.no-padding-wrapper .mat-form-field-wrapper{padding-bottom:0}:host ::ng-deep .mat-form-field.mat-form-field-appearance-outline.mat-form-field-disabled .mat-form-field-outline{background:#f6f6f6;color:#e9e9e9}:host ::ng-deep .mat-form-field mat-select.mat-select-disabled .mat-select-value{color:#4d4d4d!important}:host ::ng-deep .mat-form-field .mat-placeholder-required{color:#f82c13}::ng-deep .sd-select-panel .mat-option.sd-filtered-input{background-color:#fff;position:-webkit-sticky;position:sticky;top:0;z-index:10}::ng-deep .sd-select-panel .mat-option.sd-filtered-input .mat-form-field.mat-form-field-appearance-outline{width:100%}::ng-deep .sd-select-panel .mat-option.sd-filtered-input mat-pseudo-checkbox{display:none}::ng-deep .mat-select-panel .mat-option.sd-filtered-input{height:auto}::ng-deep .sd-select-panel .mat-option.sd-filtered-input input{color:#000}::ng-deep .sd-select-panel .mat-option.sd-filtered-input .mat-form-field-prefix .mat-icon{margin-right:0}::ng-deep .sd-select-panel .mat-option.sd-filtered-input .mat-form-field.mat-form-field-appearance-outline .mat-form-field-wrapper{padding:10px 0}::ng-deep .sd-select-panel .mat-option.sd-filtered-input .mat-form-field.mat-form-field-appearance-outline .mat-form-field-wrapper .mat-form-field-outline{background-color:rgba(0,0,0,.04)}"]}]}],"members":{"input":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":17,"character":3},"arguments":[{"__symbolic":"reference","module":"@angular/material/input","name":"MatInput","line":17,"character":13}]}]}],"select":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":23,"character":3},"arguments":["select"]}]}],"name":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":25,"character":3}}]}],"_disableErrorMessage":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":31,"character":3},"arguments":["disableErrorMessage"]}]}],"size":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":69,"character":3}}]}],"form":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":71,"character":3}}]}],"label":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":80,"character":3}}]}],"placeholder":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":81,"character":3}}]}],"model":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":86,"character":3}}]}],"items":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":109,"character":3}}]}],"valueField":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":119,"character":3}}]}],"displayField":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":120,"character":3}}]}],"required":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":129,"character":3}}]}],"validator":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":133,"character":3}}]}],"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":138,"character":3}}]}],"_multiple":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":147,"character":3},"arguments":["multiple"]}]}],"limit":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":150,"character":3}}]}],"_filtered":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":152,"character":3},"arguments":["filtered"]}]}],"selectDisplayDef":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChild","line":155,"character":3},"arguments":[{"__symbolic":"reference","name":"SdSelectDisplayDefDirective"}]}]}],"_selectAll":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":157,"character":3},"arguments":["selectAll"]}]}],"modelChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":163,"character":3}}]}],"sdChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":164,"character":3}}]}],"sdSelection":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":165,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":167,"character":17},{"__symbolic":"reference","module":"@sd-angular/core/utility","name":"SdUtilityService","line":168,"character":28}]}],"ngOnInit":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"onSelectAll":[{"__symbolic":"method"}]}},"SdSelectDisplayDefDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":2,"character":1},"arguments":[{"selector":"[sdSelectDisplayDef]"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"TemplateRef","module":"@angular/core","arguments":[{"__symbolic":"reference","name":"any"}]}]}]}}},"origins":{"SdSelectModule":"./src/lib/select.module","SdSelect":"./src/lib/select.component","SdSelectDisplayDefDirective":"./src/lib/select-display-def.directive"},"importAs":"@sd-angular/core/select"}
|
|
1
|
+
{"__symbolic":"module","version":4,"metadata":{"SdSelectModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":15,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":17,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"FormsModule","line":18,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":19,"character":4},{"__symbolic":"reference","module":"@angular/material/input","name":"MatInputModule","line":20,"character":4},{"__symbolic":"reference","module":"@angular/material/tooltip","name":"MatTooltipModule","line":21,"character":4},{"__symbolic":"reference","module":"@angular/material/form-field","name":"MatFormFieldModule","line":22,"character":4},{"__symbolic":"reference","module":"@angular/material/icon","name":"MatIconModule","line":23,"character":4},{"__symbolic":"reference","module":"@angular/material/select","name":"MatSelectModule","line":24,"character":4},{"__symbolic":"reference","module":"@angular/material/progress-spinner","name":"MatProgressSpinnerModule","line":25,"character":4},{"__symbolic":"reference","module":"@angular/material/checkbox","name":"MatCheckboxModule","line":26,"character":4},{"__symbolic":"reference","module":"@sd-angular/core/translate","name":"SdTranslateModule","line":27,"character":4}],"declarations":[{"__symbolic":"reference","name":"SdSelect"},{"__symbolic":"reference","name":"SdSelectDisplayDefDirective"}],"exports":[{"__symbolic":"reference","name":"SdSelect"},{"__symbolic":"reference","name":"SdSelectDisplayDefDirective"}],"providers":[]}]}],"members":{}},"SdSelect":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":9,"character":1},"arguments":[{"selector":"sd-select","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":13,"character":19},"member":"OnPush"},"template":"<div class=\"d-flex align-items-center\">\r\n <mat-form-field class=\"sd-md\" [ngClass]=\"{'sd-sm': size === 'sm', 'no-padding-wrapper': disableErrorMessage}\"\r\n appearance=\"outline\">\r\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\r\n <mat-select #select [formControl]=\"formControl\" placeholder=\"{{placeholder || label}}\" multiple\r\n (selectionChange)=\"onSelectionChange($event)\" disableOptionCentering=\"true\" panelClass=\"sd-select-panel\"\r\n [ngClass]=\"{'sd-selected': !isRequired && (multiple ? formControl?.value?.length : formControl?.value)}\"\r\n [required]=\"isRequired\" (openedChange)=\"onOpenChange($event)\" *ngIf=\"multiple\">\r\n <mat-select-trigger>\r\n {{display | async }}\r\n </mat-select-trigger>\r\n <mat-option *ngIf=\"filtered\" class=\"sd-filtered-input\" (keyup.Space)=\"$event.stopPropagation()\" disabled=\"true\">\r\n <mat-form-field class=\"sd-md\" appearance=\"outline\">\r\n <mat-icon matPrefix>search</mat-icon>\r\n <input #input placeholder=\"{{'Search' | sdTranslate}}\" matInput autocomplete=\"off\"\r\n (keydown)=\"$event.stopPropagation()\" (keyup)=\"searchTerm$.next($event.target.value)\">\r\n </mat-form-field>\r\n </mat-option>\r\n <ng-container *ngIf=\"multiple && selectAll\">\r\n <mat-checkbox class=\"mat-option\" [(ngModel)]=\"allSelected\" [ngModelOptions]=\"{standalone: true}\"\r\n (change)=\"onSelectAll()\">\r\n Tất cả</mat-checkbox>\r\n </ng-container>\r\n <ng-container *ngIf=\"valueField && displayField\">\r\n <mat-option *ngFor=\"let item of filteredItems | async\" [value]=\"item[valueField]\" matTooltipPosition=\"above\"\r\n [matTooltip]=\"item[displayField]\">\r\n <ng-container *ngIf=\"selectDisplayDef?.templateRef\">\r\n <ng-container *ngTemplateOutlet=\"selectDisplayDef.templateRef;context:{item: item}\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!selectDisplayDef?.templateRef\">\r\n {{ item[displayField] }}\r\n </ng-container>\r\n </mat-option>\r\n </ng-container>\r\n <ng-container *ngIf=\"!valueField && !displayField\">\r\n <mat-option *ngFor=\"let item of filteredItems | async\" [value]=\"item\" matTooltipPosition=\"above\"\r\n [matTooltip]=\"item\">\r\n <ng-container *ngIf=\"selectDisplayDef?.templateRef\">\r\n <ng-container *ngTemplateOutlet=\"selectDisplayDef.templateRef;context:{item: item}\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!selectDisplayDef?.templateRef\">\r\n {{ item }}\r\n </ng-container>\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n <mat-select #select [formControl]=\"formControl\" placeholder=\"{{placeholder || label}}\"\r\n (selectionChange)=\"onSelectionChange($event)\" disableOptionCentering=\"true\" panelClass=\"sd-select-panel\"\r\n [ngClass]=\"{'sd-selected': !isRequired && formControl?.value}\" [required]=\"isRequired\"\r\n (openedChange)=\"onOpenChange($event)\" *ngIf=\"!multiple\">\r\n <mat-select-trigger>\r\n {{display | async }}\r\n </mat-select-trigger>\r\n <mat-option *ngIf=\"filtered\" class=\"sd-filtered-input\" (keyup.Space)=\"$event.stopPropagation()\" disabled=\"true\">\r\n <mat-form-field class=\"sd-md\" appearance=\"outline\">\r\n <mat-icon matPrefix>search</mat-icon>\r\n <input #input placeholder=\"{{'Search' | sdTranslate}}\" matInput autocomplete=\"off\"\r\n (keydown)=\"$event.stopPropagation()\" (keyup)=\"searchTerm$.next($event.target.value)\">\r\n </mat-form-field>\r\n </mat-option>\r\n <ng-container *ngIf=\"valueField && displayField\">\r\n <mat-option *ngFor=\"let item of filteredItems | async\" [value]=\"item[valueField]\" matTooltipPosition=\"above\"\r\n [matTooltip]=\"item[displayField]\">\r\n <ng-container *ngIf=\"selectDisplayDef?.templateRef\">\r\n <ng-container *ngTemplateOutlet=\"selectDisplayDef.templateRef;context:{item: item}\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!selectDisplayDef?.templateRef\">\r\n {{ item[displayField] }}\r\n </ng-container>\r\n </mat-option>\r\n </ng-container>\r\n <ng-container *ngIf=\"!valueField && !displayField\">\r\n <mat-option *ngFor=\"let item of filteredItems | async\" [value]=\"item\" matTooltipPosition=\"above\"\r\n [matTooltip]=\"item\">\r\n <ng-container *ngIf=\"selectDisplayDef?.templateRef\">\r\n <ng-container *ngTemplateOutlet=\"selectDisplayDef.templateRef;context:{item: item}\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!selectDisplayDef?.templateRef\">\r\n {{ item }}\r\n </ng-container>\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n <mat-icon\r\n *ngIf=\"(multiple ? formControl?.value?.length : formControl?.value) && !isRequired && !formControl.disabled\"\r\n class=\"pointer sd-suffix-icon\" (click)=\"clear($event)\" matSuffix>cancel\r\n </mat-icon>\r\n <mat-error *ngIf=\"formControl.errors?.required && !disableErrorMessage\">\r\n {{'This field is required' | sdTranslate}}\r\n </mat-error>\r\n <mat-error *ngIf=\"formControl?.errors?.customValidator && !disableErrorMessage\">\r\n {{formControl?.errors?.customValidator}}\r\n </mat-error>\r\n </mat-form-field>\r\n</div>","styles":[":host{display:block;padding-top:5px}:host ::ng-deep .mat-form-field.mat-form-field-appearance-outline .mat-select-arrow-wrapper{transform:none}:host ::ng-deep .sd-selected .mat-select-arrow{border:none}:host ::ng-deep .mat-form-field.no-padding-wrapper .mat-form-field-wrapper{padding-bottom:0}:host ::ng-deep .mat-form-field.mat-form-field-appearance-outline.mat-form-field-disabled .mat-form-field-outline{background:#f6f6f6;color:#e9e9e9}:host ::ng-deep .mat-form-field mat-select.mat-select-disabled .mat-select-value{color:#4d4d4d!important}:host ::ng-deep .mat-form-field .mat-placeholder-required{color:#f82c13}::ng-deep .sd-select-panel .mat-option.sd-filtered-input{background-color:#fff;position:-webkit-sticky;position:sticky;top:0;z-index:10}::ng-deep .sd-select-panel .mat-option.sd-filtered-input .mat-form-field.mat-form-field-appearance-outline{width:100%}::ng-deep .sd-select-panel .mat-option.sd-filtered-input mat-pseudo-checkbox{display:none}::ng-deep .mat-select-panel .mat-option.sd-filtered-input{height:auto}::ng-deep .sd-select-panel .mat-option.sd-filtered-input input{color:#000}::ng-deep .sd-select-panel .mat-option.sd-filtered-input .mat-form-field-prefix .mat-icon{margin-right:0}::ng-deep .sd-select-panel .mat-option.sd-filtered-input .mat-form-field.mat-form-field-appearance-outline .mat-form-field-wrapper{padding:10px 0}::ng-deep .sd-select-panel .mat-option.sd-filtered-input .mat-form-field.mat-form-field-appearance-outline .mat-form-field-wrapper .mat-form-field-outline{background-color:rgba(0,0,0,.04)}"]}]}],"members":{"input":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":17,"character":3},"arguments":[{"__symbolic":"reference","module":"@angular/material/input","name":"MatInput","line":17,"character":13}]}]}],"select":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":23,"character":3},"arguments":["select"]}]}],"name":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":25,"character":3}}]}],"_disableErrorMessage":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":31,"character":3},"arguments":["disableErrorMessage"]}]}],"size":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":39,"character":3}}]}],"form":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":41,"character":3}}]}],"label":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":50,"character":3}}]}],"placeholder":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":51,"character":3}}]}],"model":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":55,"character":3}}]}],"items":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":76,"character":3}}]}],"valueField":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":86,"character":3}}]}],"displayField":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":87,"character":3}}]}],"required":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":96,"character":3}}]}],"validator":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":100,"character":3}}]}],"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":105,"character":3}}]}],"_multiple":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":114,"character":3},"arguments":["multiple"]}]}],"limit":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":117,"character":3}}]}],"_filtered":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":119,"character":3},"arguments":["filtered"]}]}],"selectDisplayDef":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChild","line":122,"character":3},"arguments":[{"__symbolic":"reference","name":"SdSelectDisplayDefDirective"}]}]}],"_selectAll":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":124,"character":3},"arguments":["selectAll"]}]}],"modelChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":130,"character":3}}]}],"sdChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":131,"character":3}}]}],"sdSelection":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":132,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@sd-angular/core/utility","name":"SdUtilityService","line":134,"character":28}]}],"ngOnInit":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"onSelectAll":[{"__symbolic":"method"}]}},"SdSelectDisplayDefDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":2,"character":1},"arguments":[{"selector":"[sdSelectDisplayDef]"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"TemplateRef","module":"@angular/core","arguments":[{"__symbolic":"reference","name":"any"}]}]}]}}},"origins":{"SdSelectModule":"./src/lib/select.module","SdSelect":"./src/lib/select.component","SdSelectDisplayDefDirective":"./src/lib/select-display-def.directive"},"importAs":"@sd-angular/core/select"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { EventEmitter,
|
|
1
|
+
import { EventEmitter, AfterViewInit, OnDestroy, OnInit } from '@angular/core';
|
|
2
2
|
import { NgForm, FormControl, FormGroup } from '@angular/forms';
|
|
3
3
|
import { MatSelect, MatSelectChange } from '@angular/material/select';
|
|
4
4
|
import { Observable, Subject } from 'rxjs';
|
|
@@ -7,7 +7,6 @@ import { MatInput } from '@angular/material/input';
|
|
|
7
7
|
import { SdSelectDisplayDefDirective } from './select-display-def.directive';
|
|
8
8
|
export declare class SdSelect implements OnInit, AfterViewInit, OnDestroy {
|
|
9
9
|
#private;
|
|
10
|
-
private ref;
|
|
11
10
|
private utilityService;
|
|
12
11
|
set input(input: MatInput);
|
|
13
12
|
select: MatSelect;
|
|
@@ -16,7 +15,6 @@ export declare class SdSelect implements OnInit, AfterViewInit, OnDestroy {
|
|
|
16
15
|
set _disableErrorMessage(val: boolean | '');
|
|
17
16
|
formControl: FormControl;
|
|
18
17
|
searchTerm$: Subject<unknown>;
|
|
19
|
-
get dataType(): 'boolean' | 'number' | 'string';
|
|
20
18
|
size: 'sm' | 'lg';
|
|
21
19
|
set form(val: NgForm | FormGroup);
|
|
22
20
|
label: string;
|
|
@@ -39,7 +37,6 @@ export declare class SdSelect implements OnInit, AfterViewInit, OnDestroy {
|
|
|
39
37
|
selectDisplayDef: SdSelectDisplayDefDirective;
|
|
40
38
|
selectAll: boolean;
|
|
41
39
|
set _selectAll(val: boolean | '');
|
|
42
|
-
allItems: Observable<any[]>;
|
|
43
40
|
filteredItems: Observable<any[]>;
|
|
44
41
|
allSelected: boolean;
|
|
45
42
|
modelChange: EventEmitter<any>;
|
|
@@ -49,7 +46,7 @@ export declare class SdSelect implements OnInit, AfterViewInit, OnDestroy {
|
|
|
49
46
|
item?: any;
|
|
50
47
|
items?: any[];
|
|
51
48
|
}>;
|
|
52
|
-
constructor(
|
|
49
|
+
constructor(utilityService: SdUtilityService);
|
|
53
50
|
ngOnInit(): void;
|
|
54
51
|
ngAfterViewInit(): void;
|
|
55
52
|
ngOnDestroy(): void;
|