@sd-angular/core 1.0.78 → 1.0.79
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-chip.umd.js +197 -43
- package/bundles/sd-angular-core-chip.umd.js.map +1 -1
- package/bundles/sd-angular-core-chip.umd.min.js +2 -2
- package/bundles/sd-angular-core-chip.umd.min.js.map +1 -1
- package/bundles/sd-angular-core-grid-material.umd.js +1 -1
- package/bundles/sd-angular-core-grid-material.umd.js.map +1 -1
- package/bundles/sd-angular-core-grid-material.umd.min.js +1 -1
- package/bundles/sd-angular-core-grid-material.umd.min.js.map +1 -1
- package/bundles/sd-angular-core-loading.umd.js +367 -22
- package/bundles/sd-angular-core-loading.umd.js.map +1 -1
- package/bundles/sd-angular-core-loading.umd.min.js +15 -1
- package/bundles/sd-angular-core-loading.umd.min.js.map +1 -1
- package/bundles/sd-angular-core-radio.umd.js +36 -21
- package/bundles/sd-angular-core-radio.umd.js.map +1 -1
- package/bundles/sd-angular-core-radio.umd.min.js +2 -2
- package/bundles/sd-angular-core-radio.umd.min.js.map +1 -1
- package/bundles/sd-angular-core-select.umd.js +0 -1
- 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/chip/sd-angular-core-chip.metadata.json +1 -1
- package/chip/src/lib/chip.component.d.ts +6 -4
- package/esm2015/chip/src/lib/chip.component.js +156 -33
- package/esm2015/grid-material/src/lib/components/desktop-cell-view/desktop-cell-view.component.js +2 -2
- package/esm2015/loading/src/lib/loading.service.js +49 -14
- package/esm2015/radio/src/lib/radio.component.js +36 -21
- package/esm2015/select/src/lib/select.component.js +1 -2
- package/fesm2015/sd-angular-core-chip.js +155 -32
- package/fesm2015/sd-angular-core-chip.js.map +1 -1
- package/fesm2015/sd-angular-core-grid-material.js +1 -1
- package/fesm2015/sd-angular-core-grid-material.js.map +1 -1
- package/fesm2015/sd-angular-core-loading.js +48 -13
- package/fesm2015/sd-angular-core-loading.js.map +1 -1
- package/fesm2015/sd-angular-core-radio.js +35 -21
- package/fesm2015/sd-angular-core-radio.js.map +1 -1
- package/fesm2015/sd-angular-core-select.js +0 -1
- package/fesm2015/sd-angular-core-select.js.map +1 -1
- package/grid-material/sd-angular-core-grid-material.metadata.json +1 -1
- package/loading/sd-angular-core-loading.metadata.json +1 -1
- package/loading/src/lib/loading.service.d.ts +5 -2
- package/package.json +1 -1
- package/radio/sd-angular-core-radio.metadata.json +1 -1
- package/radio/src/lib/radio.component.d.ts +5 -5
- package/{sd-angular-core-1.0.78.tgz → sd-angular-core-1.0.79.tgz} +0 -0
|
@@ -1,32 +1,67 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
1
|
+
import { __classPrivateFieldGet } from 'tslib';
|
|
2
|
+
import { ɵɵdefineInjectable, ɵɵinject, RendererFactory2, Injectable } from '@angular/core';
|
|
3
3
|
|
|
4
|
+
var _createLoading;
|
|
4
5
|
class SdLoadingService {
|
|
5
|
-
constructor() {
|
|
6
|
+
constructor(rendererFactory) {
|
|
6
7
|
this.loadingId = "L8d556b9b-f6dd-46e9-9710-757e65d82839";
|
|
7
8
|
this.start = (element = "body") => {
|
|
8
|
-
|
|
9
|
+
const ele = document.querySelector(element);
|
|
10
|
+
this.loadingElement = __classPrivateFieldGet(this, _createLoading).call(this);
|
|
11
|
+
ele.append(this.loadingElement);
|
|
9
12
|
};
|
|
10
13
|
this.isLoading = () => {
|
|
11
|
-
return
|
|
14
|
+
return !!this.loadingElement;
|
|
12
15
|
};
|
|
13
16
|
this.stop = (element = "body") => {
|
|
14
|
-
|
|
17
|
+
var _a;
|
|
18
|
+
(_a = this.loadingElement) === null || _a === void 0 ? void 0 : _a.remove();
|
|
19
|
+
this.loadingElement = undefined;
|
|
15
20
|
};
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
+
_createLoading.set(this, () => {
|
|
22
|
+
const renderer = this.renderer;
|
|
23
|
+
const container = this.renderer.createElement('div');
|
|
24
|
+
const icon = this.renderer.createElement('i');
|
|
25
|
+
const containerStyle = {
|
|
26
|
+
position: 'absolute',
|
|
27
|
+
top: 0,
|
|
28
|
+
left: 0,
|
|
29
|
+
height: '100%',
|
|
30
|
+
width: '100%',
|
|
31
|
+
opacity: 0.6,
|
|
32
|
+
background: '#FFFFFF',
|
|
33
|
+
'z-index': 99999
|
|
34
|
+
};
|
|
35
|
+
const iconStyle = {
|
|
36
|
+
position: 'absolute',
|
|
37
|
+
top: 'calc(50% - 2.5rem)',
|
|
38
|
+
left: 'calc(50% - 2.5rem)',
|
|
39
|
+
};
|
|
40
|
+
renderer.addClass(container, 'sd-loading');
|
|
41
|
+
renderer.setAttribute(container, 'id', this.loadingId);
|
|
42
|
+
Object.entries(containerStyle).forEach((entry) => {
|
|
43
|
+
renderer.setStyle(container, entry[0], entry[1]);
|
|
44
|
+
});
|
|
45
|
+
renderer.setAttribute(icon, 'class', 'fa fa-5x fa-spinner fa-pulse');
|
|
46
|
+
Object.entries(iconStyle).forEach((entry) => {
|
|
47
|
+
renderer.setStyle(icon, entry[0], entry[1]);
|
|
48
|
+
});
|
|
49
|
+
container.appendChild(icon);
|
|
50
|
+
return container;
|
|
51
|
+
});
|
|
52
|
+
this.renderer = rendererFactory.createRenderer(null, null);
|
|
21
53
|
}
|
|
22
54
|
}
|
|
23
|
-
|
|
55
|
+
_createLoading = new WeakMap();
|
|
56
|
+
SdLoadingService.ɵprov = ɵɵdefineInjectable({ factory: function SdLoadingService_Factory() { return new SdLoadingService(ɵɵinject(RendererFactory2)); }, token: SdLoadingService, providedIn: "root" });
|
|
24
57
|
SdLoadingService.decorators = [
|
|
25
58
|
{ type: Injectable, args: [{
|
|
26
59
|
providedIn: "root",
|
|
27
60
|
},] }
|
|
28
61
|
];
|
|
29
|
-
SdLoadingService.ctorParameters = () => [
|
|
62
|
+
SdLoadingService.ctorParameters = () => [
|
|
63
|
+
{ type: RendererFactory2 }
|
|
64
|
+
];
|
|
30
65
|
|
|
31
66
|
/*
|
|
32
67
|
* Public API Surface of superdev-angular-core
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sd-angular-core-loading.js","sources":["../../../../projects/sd-core/loading/src/lib/loading.service.ts","../../../../projects/sd-core/loading/src/public-api.ts","../../../../projects/sd-core/loading/sd-angular-core-loading.ts"],"sourcesContent":["import { Injectable } from \"@angular/core\";\r\
|
|
1
|
+
{"version":3,"file":"sd-angular-core-loading.js","sources":["../../../../projects/sd-core/loading/src/lib/loading.service.ts","../../../../projects/sd-core/loading/src/public-api.ts","../../../../projects/sd-core/loading/sd-angular-core-loading.ts"],"sourcesContent":["import { Injectable, Renderer2, RendererFactory2 } from \"@angular/core\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class SdLoadingService {\r\n private loadingId = \"L8d556b9b-f6dd-46e9-9710-757e65d82839\";\r\n\r\n private loadingElement: HTMLElement | undefined;\r\n \r\n private renderer: Renderer2;\r\n constructor(\r\n rendererFactory: RendererFactory2\r\n ) {\r\n this.renderer = rendererFactory.createRenderer(null, null);\r\n }\r\n\r\n start = (element: string = \"body\") => {\r\n const ele = document.querySelector(element);\r\n this.loadingElement = this.#createLoading();\r\n ele.append(this.loadingElement);\r\n };\r\n\r\n isLoading = () => {\r\n return !!this.loadingElement;\r\n };\r\n\r\n stop = (element: string = \"body\") => {\r\n this.loadingElement?.remove();\r\n this.loadingElement = undefined;\r\n };\r\n\r\n #createLoading = (): HTMLElement => {\r\n const renderer = this.renderer;\r\n const container: HTMLElement = this.renderer.createElement('div');\r\n const icon: HTMLElement = this.renderer.createElement('i');\r\n const containerStyle = {\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n height: '100%',\r\n width: '100%',\r\n opacity: 0.6,\r\n background: '#FFFFFF',\r\n 'z-index': 99999\r\n }\r\n const iconStyle = {\r\n position: 'absolute',\r\n top: 'calc(50% - 2.5rem)',\r\n left: 'calc(50% - 2.5rem)',\r\n }\r\n renderer.addClass(container, 'sd-loading');\r\n renderer.setAttribute(container, 'id', this.loadingId);\r\n \r\n Object.entries(containerStyle).forEach((entry) => {\r\n renderer.setStyle(container, entry[0], entry[1]);\r\n });\r\n renderer.setAttribute(icon, 'class', 'fa fa-5x fa-spinner fa-pulse');\r\n Object.entries(iconStyle).forEach((entry) => {\r\n renderer.setStyle(icon, entry[0], entry[1]);\r\n });\r\n\r\n container.appendChild(icon);\r\n return container;\r\n }\r\n}\r\n","/*\r\n * Public API Surface of superdev-angular-core\r\n */\r\n\r\nexport * from './lib/loading.service';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;MAKa,gBAAgB;IAM3B,YACE,eAAiC;QAN3B,cAAS,GAAG,uCAAuC,CAAC;QAW5D,UAAK,GAAG,CAAC,UAAkB,MAAM;YAC/B,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YAC5C,IAAI,CAAC,cAAc,GAAG,kDAAA,IAAI,CAAiB,CAAC;YAC5C,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;SACjC,CAAC;QAEF,cAAS,GAAG;YACV,OAAO,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC;SAC9B,CAAC;QAEF,SAAI,GAAG,CAAC,UAAkB,MAAM;;YAC9B,MAAA,IAAI,CAAC,cAAc,0CAAE,MAAM,GAAG;YAC9B,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;SACjC,CAAC;QAEF,yBAAiB;YACf,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC/B,MAAM,SAAS,GAAgB,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAClE,MAAM,IAAI,GAAgB,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;YAC3D,MAAM,cAAc,GAAG;gBACrB,QAAQ,EAAE,UAAU;gBACpB,GAAG,EAAE,CAAC;gBACN,IAAI,EAAE,CAAC;gBACP,MAAM,EAAE,MAAM;gBACd,KAAK,EAAE,MAAM;gBACb,OAAO,EAAE,GAAG;gBACZ,UAAU,EAAE,SAAS;gBACrB,SAAS,EAAE,KAAK;aACjB,CAAA;YACD,MAAM,SAAS,GAAG;gBAChB,QAAQ,EAAE,UAAU;gBACpB,GAAG,EAAE,oBAAoB;gBACzB,IAAI,EAAE,oBAAoB;aAC3B,CAAA;YACD,QAAQ,CAAC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;YAC3C,QAAQ,CAAC,YAAY,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YAEvD,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK;gBAC3C,QAAQ,CAAC,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;aAClD,CAAC,CAAC;YACH,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,8BAA8B,CAAC,CAAC;YACrE,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK;gBACtC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;aAC7C,CAAC,CAAC;YAEH,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAC5B,OAAO,SAAS,CAAC;SAClB,EAAA;QAlDC,IAAI,CAAC,QAAQ,GAAG,eAAe,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;KAC5D;;;;;YAbF,UAAU,SAAC;gBACV,UAAU,EAAE,MAAM;aACnB;;;YAJ+B,gBAAgB;;;ACAhD;;;;ACAA;;;;;;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import '@sd-angular/core/common';
|
|
2
|
-
import { EventEmitter, Component, ChangeDetectorRef, Input, Output, NgModule } from '@angular/core';
|
|
1
|
+
import { SdFormControl } from '@sd-angular/core/common';
|
|
2
|
+
import { EventEmitter, Component, ChangeDetectionStrategy, ChangeDetectorRef, Input, Output, NgModule } from '@angular/core';
|
|
3
3
|
import { CommonModule } from '@angular/common';
|
|
4
|
-
import {
|
|
4
|
+
import { Validators, NgForm, ReactiveFormsModule } from '@angular/forms';
|
|
5
5
|
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
6
6
|
import { MatIconModule } from '@angular/material/icon';
|
|
7
7
|
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
@@ -11,12 +11,26 @@ import { v4 } from 'uuid';
|
|
|
11
11
|
import { SdTranslateModule } from '@sd-angular/core/translate';
|
|
12
12
|
import { MatRadioModule } from '@angular/material/radio';
|
|
13
13
|
|
|
14
|
-
var _name, _model, _required, _subscription, _updateValidator;
|
|
14
|
+
var _name, _form, _model, _required, _subscription, _updateValidator;
|
|
15
15
|
class SdRadio {
|
|
16
16
|
constructor(ref) {
|
|
17
17
|
this.ref = ref;
|
|
18
18
|
_name.set(this, v4());
|
|
19
|
-
this.formControl = new
|
|
19
|
+
this.formControl = new SdFormControl();
|
|
20
|
+
// get isNumber() {
|
|
21
|
+
// if (this.#model || this.#model === 0) {
|
|
22
|
+
// return typeof (this.#model) === 'number';
|
|
23
|
+
// }
|
|
24
|
+
// if (this.items?.length) {
|
|
25
|
+
// if (this.valueField) {
|
|
26
|
+
// return typeof (this.items[0][this.valueField]) === 'number';
|
|
27
|
+
// } else {
|
|
28
|
+
// return typeof (this.items[0]) === 'number';
|
|
29
|
+
// }
|
|
30
|
+
// }
|
|
31
|
+
// return false;
|
|
32
|
+
// }
|
|
33
|
+
_form.set(this, void 0);
|
|
20
34
|
this.display = 'row';
|
|
21
35
|
// Model
|
|
22
36
|
_model.set(this, void 0);
|
|
@@ -46,20 +60,15 @@ class SdRadio {
|
|
|
46
60
|
__classPrivateFieldSet(this, _name, val);
|
|
47
61
|
}
|
|
48
62
|
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
}
|
|
54
|
-
if ((_a = this.items) === null || _a === void 0 ? void 0 : _a.length) {
|
|
55
|
-
if (this.valueField) {
|
|
56
|
-
return typeof (this.items[0][this.valueField]) === 'number';
|
|
63
|
+
set form(val) {
|
|
64
|
+
if (val) {
|
|
65
|
+
if (val instanceof NgForm) {
|
|
66
|
+
__classPrivateFieldSet(this, _form, val.form);
|
|
57
67
|
}
|
|
58
68
|
else {
|
|
59
|
-
|
|
69
|
+
__classPrivateFieldSet(this, _form, val);
|
|
60
70
|
}
|
|
61
71
|
}
|
|
62
|
-
return false;
|
|
63
72
|
}
|
|
64
73
|
set model(value) {
|
|
65
74
|
__classPrivateFieldSet(this, _model, value);
|
|
@@ -91,15 +100,19 @@ class SdRadio {
|
|
|
91
100
|
}
|
|
92
101
|
}
|
|
93
102
|
ngOnInit() {
|
|
103
|
+
__classPrivateFieldGet(this, _subscription).add(this.formControl.sdChanges.subscribe(() => {
|
|
104
|
+
this.formControl.updateValueAndValidity();
|
|
105
|
+
this.ref.markForCheck();
|
|
106
|
+
}));
|
|
94
107
|
}
|
|
95
108
|
ngAfterViewInit() {
|
|
96
109
|
var _a;
|
|
97
110
|
__classPrivateFieldGet(this, _subscription).add(this.formControl.valueChanges.subscribe(value => {
|
|
98
111
|
var _a;
|
|
99
112
|
let val = value;
|
|
100
|
-
if (this.isNumber && Number.isNumber(value)) {
|
|
101
|
-
|
|
102
|
-
}
|
|
113
|
+
// if (this.isNumber && Number.isNumber(value)) {
|
|
114
|
+
// val = +value;
|
|
115
|
+
// }
|
|
103
116
|
this.modelChange.emit(val);
|
|
104
117
|
this.sdChange.emit(val);
|
|
105
118
|
this.sdSelection.emit({
|
|
@@ -118,19 +131,20 @@ class SdRadio {
|
|
|
118
131
|
}
|
|
119
132
|
});
|
|
120
133
|
}
|
|
121
|
-
(_a = this
|
|
134
|
+
(_a = __classPrivateFieldGet(this, _form)) === null || _a === void 0 ? void 0 : _a.addControl(__classPrivateFieldGet(this, _name), this.formControl);
|
|
122
135
|
}
|
|
123
136
|
ngOnDestroy() {
|
|
124
137
|
var _a;
|
|
125
138
|
__classPrivateFieldGet(this, _subscription).unsubscribe();
|
|
126
|
-
(_a = this
|
|
139
|
+
(_a = __classPrivateFieldGet(this, _form)) === null || _a === void 0 ? void 0 : _a.removeControl(__classPrivateFieldGet(this, _name));
|
|
127
140
|
}
|
|
128
141
|
}
|
|
129
|
-
_name = new WeakMap(), _model = new WeakMap(), _required = new WeakMap(), _subscription = new WeakMap(), _updateValidator = new WeakMap();
|
|
142
|
+
_name = new WeakMap(), _form = new WeakMap(), _model = new WeakMap(), _required = new WeakMap(), _subscription = new WeakMap(), _updateValidator = new WeakMap();
|
|
130
143
|
SdRadio.decorators = [
|
|
131
144
|
{ type: Component, args: [{
|
|
132
145
|
selector: 'sd-radio',
|
|
133
146
|
template: "<section [ngClass]=\"{'c-section': display == 'row'}\">\r\n <label *ngIf=\"label\" class=\"sd-label d-block mr-2\">{{label}} </label>\r\n <mat-radio-group [ngClass]=\"{'c-radio-group-column': display == 'column', 'c-radio-group-row': display == 'row'}\"\r\n [formControl]=\"formControl\">\r\n <mat-radio-button color=\"primary\" [ngClass]=\"{'m-0': display == 'column', 'mr-16': display == 'row'}\"\r\n *ngFor=\"let item of items\" [value]=\"item[valueField]\">\r\n {{item[displayField]}}\r\n </mat-radio-button>\r\n </mat-radio-group>\r\n</section>",
|
|
147
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
134
148
|
styles: [".c-section{align-content:center;align-items:center}.c-radio-group-column{display:flex;flex-direction:column}.c-radio-group-row{display:flex;flex-direction:row}"]
|
|
135
149
|
},] }
|
|
136
150
|
];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sd-angular-core-radio.js","sources":["../../../../projects/sd-core/radio/src/lib/radio.component.ts","../../../../projects/sd-core/radio/src/lib/radio.module.ts","../../../../projects/sd-core/radio/sd-angular-core-radio.ts"],"sourcesContent":["import { Component, Input, Output, EventEmitter, ChangeDetectorRef, AfterViewInit, OnDestroy, OnInit } from '@angular/core';\r\nimport { NgForm,
|
|
1
|
+
{"version":3,"file":"sd-angular-core-radio.js","sources":["../../../../projects/sd-core/radio/src/lib/radio.component.ts","../../../../projects/sd-core/radio/src/lib/radio.module.ts","../../../../projects/sd-core/radio/sd-angular-core-radio.ts"],"sourcesContent":["import { Component, Input, Output, EventEmitter, ChangeDetectorRef, AfterViewInit, OnDestroy, OnInit, ChangeDetectionStrategy } from '@angular/core';\r\nimport { NgForm, Validators, ValidatorFn, FormGroup } from '@angular/forms';\r\nimport { SdFormControl } from '@sd-angular/core/common';\r\nimport { Subscription } from 'rxjs';\r\nimport * as uuid from 'uuid';\r\n\r\n@Component({\r\n selector: 'sd-radio',\r\n templateUrl: './radio.component.html',\r\n styleUrls: ['./radio.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdRadio implements OnInit, AfterViewInit, OnDestroy {\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 formControl = new SdFormControl();\r\n // get isNumber() {\r\n // if (this.#model || this.#model === 0) {\r\n // return typeof (this.#model) === 'number';\r\n // }\r\n // if (this.items?.length) {\r\n // if (this.valueField) {\r\n // return typeof (this.items[0][this.valueField]) === 'number';\r\n // } else {\r\n // return typeof (this.items[0]) === 'number';\r\n // }\r\n // }\r\n // return false;\r\n // }\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 @Input() display: 'row' | 'column' = 'row';\r\n // Model\r\n #model: number | string;\r\n @Input() set model(value: number | string) {\r\n this.#model = value;\r\n const val = (value ?? '') + '';\r\n if (val !== this.formControl.value) {\r\n this.formControl.setValue(val, {\r\n emitEvent: false\r\n });\r\n }\r\n }\r\n // Items\r\n items: any[] = [];\r\n @Input('items') set pItems(items: any[]) {\r\n if (!Array.isArray(items)) {\r\n this.items = [];\r\n }\r\n this.items = items;\r\n }\r\n @Input() valueField: string;\r\n @Input() displayField: string;\r\n\r\n // Validator\r\n #required = false;\r\n @Input() set required(val: boolean | '') {\r\n this.#required = (val === '') || val;\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 @Output() modelChange = new EventEmitter();\r\n @Output() sdChange = new EventEmitter();\r\n @Output() sdSelection = new EventEmitter<{ value: any | any[], item?: any }>();\r\n #subscription = new Subscription();\r\n constructor(\r\n public ref: ChangeDetectorRef\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.#subscription.add(this.formControl.sdChanges.subscribe(() => {\r\n this.formControl.updateValueAndValidity();\r\n this.ref.markForCheck();\r\n }));\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.#subscription.add(this.formControl.valueChanges.subscribe(value => {\r\n let val = value;\r\n // if (this.isNumber && Number.isNumber(value)) {\r\n // val = +value;\r\n // }\r\n this.modelChange.emit(val);\r\n this.sdChange.emit(val);\r\n this.sdSelection.emit({\r\n value: val,\r\n item: this.items?.find(e => val?.toString() === e?.[this.valueField]?.toString())\r\n });\r\n }));\r\n if((this.#model === undefined || this.#model === null) && this.#required) {\r\n setTimeout(() => {\r\n if(this.valueField) {\r\n this.formControl.setValue(this.items[0]?.[this.valueField]);\r\n } else {\r\n this.formControl.setValue(this.items[0]);\r\n }\r\n });\r\n }\r\n this.#form?.addControl(this.#name, this.formControl);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#subscription.unsubscribe();\r\n this.#form?.removeControl(this.#name);\r\n }\r\n\r\n #updateValidator = () => {\r\n this.formControl.clearValidators();\r\n const validators: ValidatorFn[] = [];\r\n if (this.#required) {\r\n validators.push(Validators.required);\r\n }\r\n this.formControl.setValidators(validators);\r\n this.formControl.updateValueAndValidity();\r\n }\r\n\r\n reValidate = () => {\r\n this.formControl.updateValueAndValidity({ emitEvent: true });\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { SdRadio } from './radio.component';\r\nimport { SdTranslateModule } from '@sd-angular/core/translate';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n MatTooltipModule,\r\n MatFormFieldModule,\r\n MatIconModule,\r\n MatRadioModule,\r\n SdTranslateModule\r\n ],\r\n declarations: [\r\n SdRadio\r\n ],\r\n exports: [\r\n SdRadio\r\n ],\r\n providers: [\r\n ]\r\n})\r\nexport class SdRadioModule {\r\n\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["uuid.v4"],"mappings":"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"}
|
|
@@ -295,7 +295,6 @@ class SdSelect {
|
|
|
295
295
|
}
|
|
296
296
|
ngOnInit() {
|
|
297
297
|
__classPrivateFieldGet(this, _subscription).add(this.formControl.sdChanges.subscribe(() => {
|
|
298
|
-
this.formControl.updateValueAndValidity();
|
|
299
298
|
this.ref.markForCheck();
|
|
300
299
|
}));
|
|
301
300
|
__classPrivateFieldSet(this, _allItems, combineLatest([
|
|
@@ -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, Validators, ValidatorFn, AbstractControl, AsyncValidatorFn, FormGroup } from '@angular/forms';\r\nimport * as uuid from 'uuid';\r\nimport { MatSelect, MatSelectChange } from '@angular/material/select';\r\nimport { BehaviorSubject, combineLatest, Observable, of, Subject, Subscription } from 'rxjs';\r\nimport { debounceTime, map, startWith, switchMap } from 'rxjs/operators';\r\nimport { MatInput } from '@angular/material/input';\r\nimport { SdSelectDisplayDefDirective } from './select-display-def.directive';\r\nimport { SdFormControl, SdViewDefDirective } from '@sd-angular/core/common';\r\nimport { MatTooltip } from '@angular/material/tooltip';\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 SdFormControl();\r\n\r\n searchTerm$ = new Subject<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 @Input() set model(value: undefined | boolean | number | string | (number | string)[]) {\r\n this.formControl.setValue(value);\r\n }\r\n // Items\r\n\r\n #itemsChanges = new BehaviorSubject<any[] | SearchFunc>([]);\r\n @Input() set items(items: undefined | any[] | SearchFunc) {\r\n this.#delay = 0;\r\n if (!items) {\r\n this.#itemsChanges.next([]);\r\n } else if (Array.isArray(items)) {\r\n this.#itemsChanges.next(items.filter(e => e !== null && e !== undefined));\r\n } else {\r\n this.#delay = 500;\r\n this.#itemsChanges.next(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 = 200; // 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\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 #subscription = new Subscription();\r\n selectedItems: Observable<any[]>;\r\n #allItems: Observable<any[]>;\r\n filteredItems: Observable<any[]>;\r\n #allItem: {\r\n [key: string]: any\r\n } = {};\r\n allSelected = false;\r\n #cache: {\r\n [key: string]: any[]\r\n } = {};\r\n @ContentChild(SdViewDefDirective) sdView: SdViewDefDirective;\r\n isFocused = false;\r\n\r\n constructor(\r\n private ref: ChangeDetectorRef) { }\r\n\r\n ngOnInit() {\r\n this.#subscription.add(this.formControl.sdChanges.subscribe(() => {\r\n this.formControl.updateValueAndValidity();\r\n this.ref.markForCheck();\r\n }));\r\n this.#allItems = combineLatest([\r\n this.#itemsChanges.asObservable(),\r\n this.searchTerm$.asObservable().pipe(startWith(''), debounceTime(this.#delay)),\r\n this.formControl.valueChanges.pipe(startWith(this.formControl.value))]).pipe(\r\n switchMap(async ([items, val, formValue]) => {\r\n if (typeof (items) === 'function') {\r\n return await this.#loadItems(val, items);\r\n }\r\n this.#allItem = items.toObject(this.valueField);\r\n const isArray = Array.isArray(formValue);\r\n const hasFields = !!this.valueField && !!this.displayField;\r\n const filteredItems = items.filter(item => {\r\n const value = hasFields ? item[this.valueField] : item;\r\n const display = hasFields ? item[this.displayField] : item;\r\n if (String.aliasIncludes(value, val) || String.aliasIncludes(display, val)) {\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 });\r\n if (items.length <= this.limit) {\r\n return filteredItems;\r\n }\r\n // Đưa những selectedItems lên đầu nếu không mat-select-trigger sẽ không work\r\n return filteredItems.sort((current, next) => {\r\n const value1 = hasFields ? current[this.valueField] : current;\r\n const value2 = hasFields ? next[this.valueField] : next;\r\n let flag1 = 0;\r\n let flag2 = 0;\r\n if (isArray) {\r\n flag1 = formValue.some(e => e === value1) ? 1 : 0;\r\n flag2 = formValue.some(e => e === value2) ? 1 : 0;\r\n return flag2 - flag1;\r\n }\r\n flag1 = formValue === value1 ? 1 : 0;\r\n flag2 = formValue === value2 ? 1 : 0;\r\n return flag2 - flag1;\r\n });\r\n }));\r\n this.selectedItems = combineLatest([\r\n this.#itemsChanges.asObservable(),\r\n this.formControl.valueChanges.pipe(startWith(this.formControl.value))])\r\n .pipe(\r\n switchMap(async ([items, val]) => {\r\n // Vì một số lý do chưa xác định mà khi sử dụng sdViewDef thì khi chuyển sang dạng view sẽ trigger val = null\r\n // Nhưng formControl.value vẫn có giá trị đúng nên thực hiện gán val = this.formControl.value;\r\n val = this.formControl.value;\r\n if (!val?.toString()) {\r\n return [];\r\n }\r\n const values = Array.isArray(val) ? val : [val];\r\n if (!this.valueField) {\r\n return values;\r\n }\r\n if (typeof (items) === 'function') {\r\n return await this.#loadSelectedItems(val, items);\r\n }\r\n return values.map(value => {\r\n return items?.find(item => item[this.valueField] === value) || {\r\n [this.valueField]: value,\r\n [this.displayField]: value\r\n };\r\n });\r\n })\r\n );\r\n this.filteredItems = this.#allItems.pipe(map(allItems => allItems.paging(this.limit)));\r\n this.display = this.selectedItems.pipe(\r\n map(selectedItems => selectedItems?.map(item => this.displayField ? item[this.displayField] : item)?.join(', ')));\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 this.#subscription.unsubscribe();\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 #loadSelectedItems = async (value: string | string[], items: SearchFunc) => {\r\n if (!value?.toString()) {\r\n return [];\r\n }\r\n const values = Array.isArray(value) ? value : [value];\r\n if (!this.valueField && !this.displayField) {\r\n return values;\r\n }\r\n this.loading = true;\r\n if (values.some(val => this.#allItem[val] === undefined)) {\r\n const results = await items(value, true).catch(() => []).finally(() => this.loading = false);\r\n const objItem = Array.toObject(results, this.valueField);\r\n const objValue = Array.toObject(\r\n values.map(val => ({ [val?.toString()]: { [this.valueField]: val, [this.displayField]: val } })), this.valueField);\r\n this.#allItem = {\r\n ...objValue,\r\n ...this.#allItem,\r\n ...objItem\r\n };\r\n }\r\n return values.map(val => this.#allItem[val?.toString()] ?? { [this.valueField]: val, [this.displayField]: val });\r\n }\r\n\r\n #loadItems = async (searchText: string, items: SearchFunc) => {\r\n searchText = searchText?.toString() || '';\r\n if (this.#cache[searchText] === undefined) {\r\n this.loading = true;\r\n const results = await items(searchText).catch(() => []).finally(() => this.loading = false);\r\n const objItem = Array.toObject(results, this.valueField);\r\n this.#allItem = {\r\n ...this.#allItem,\r\n ...objItem\r\n };\r\n this.#cache[searchText] = results.union(this.valueField);\r\n }\r\n if (!this.multiple) {\r\n return this.#cache[searchText];\r\n }\r\n const selectedItems = await this.#loadSelectedItems(this.formControl.value, items);\r\n // Đưa những selectedItems lên đầu nếu không mat-select-trigger sẽ không work\r\n return [...selectedItems, ...this.#cache[searchText]].union(this.valueField);\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 = async (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: value.map(val => this.#allItem[val?.toString()])\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.#allItem[value?.toString()]\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 onClick = () => {\r\n if (this.sdView?.templateRef) {\r\n if (!this.formControl.disabled && !this.isFocused) {\r\n this.focus();\r\n }\r\n }\r\n }\r\n\r\n focus = () => {\r\n this.isFocused = true;\r\n setTimeout(() => {\r\n this.select?.focus();\r\n this.select?.open();\r\n }, 100);\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 this.isFocused = true;\r\n if (this.#input) {\r\n this.#input.value = null;\r\n }\r\n this.searchTerm$.next('');\r\n } else {\r\n this.isFocused = false;\r\n }\r\n }\r\n\r\n onOptionChange = (tooltip: MatTooltip) => {\r\n tooltip?.hide();\r\n }\r\n\r\n trackByKey = (index, item) => {\r\n if (this.valueField) {\r\n return item?.[this.valueField];\r\n }\r\n return item;\r\n }\r\n}\r\n\r\ntype SearchFunc = (searchText?: string | string[], isFormValue?: boolean) => Promise<any[]>;","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 { 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\nimport { SdCommonModule } from '@sd-angular/core/common';\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 SdCommonModule\r\n ],\r\n declarations: [\r\n SdSelect,\r\n SdSelectDisplayDefDirective\r\n ],\r\n exports: [\r\n SdSelect,\r\n SdSelectDisplayDefDirective,\r\n SdCommonModule\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, Validators, ValidatorFn, AbstractControl, AsyncValidatorFn, FormGroup } from '@angular/forms';\r\nimport * as uuid from 'uuid';\r\nimport { MatSelect, MatSelectChange } from '@angular/material/select';\r\nimport { BehaviorSubject, combineLatest, Observable, of, Subject, Subscription } from 'rxjs';\r\nimport { debounceTime, map, startWith, switchMap } from 'rxjs/operators';\r\nimport { MatInput } from '@angular/material/input';\r\nimport { SdSelectDisplayDefDirective } from './select-display-def.directive';\r\nimport { SdFormControl, SdViewDefDirective } from '@sd-angular/core/common';\r\nimport { MatTooltip } from '@angular/material/tooltip';\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 SdFormControl();\r\n\r\n searchTerm$ = new Subject<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 @Input() set model(value: undefined | boolean | number | string | (number | string)[]) {\r\n this.formControl.setValue(value);\r\n }\r\n // Items\r\n\r\n #itemsChanges = new BehaviorSubject<any[] | SearchFunc>([]);\r\n @Input() set items(items: undefined | any[] | SearchFunc) {\r\n this.#delay = 0;\r\n if (!items) {\r\n this.#itemsChanges.next([]);\r\n } else if (Array.isArray(items)) {\r\n this.#itemsChanges.next(items.filter(e => e !== null && e !== undefined));\r\n } else {\r\n this.#delay = 500;\r\n this.#itemsChanges.next(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 = 200; // 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\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 #subscription = new Subscription();\r\n selectedItems: Observable<any[]>;\r\n #allItems: Observable<any[]>;\r\n filteredItems: Observable<any[]>;\r\n #allItem: {\r\n [key: string]: any\r\n } = {};\r\n allSelected = false;\r\n #cache: {\r\n [key: string]: any[]\r\n } = {};\r\n @ContentChild(SdViewDefDirective) sdView: SdViewDefDirective;\r\n isFocused = false;\r\n\r\n constructor(\r\n private ref: ChangeDetectorRef) { }\r\n\r\n ngOnInit() {\r\n this.#subscription.add(this.formControl.sdChanges.subscribe(() => {\r\n this.ref.markForCheck();\r\n }));\r\n this.#allItems = combineLatest([\r\n this.#itemsChanges.asObservable(),\r\n this.searchTerm$.asObservable().pipe(startWith(''), debounceTime(this.#delay)),\r\n this.formControl.valueChanges.pipe(startWith(this.formControl.value))]).pipe(\r\n switchMap(async ([items, val, formValue]) => {\r\n if (typeof (items) === 'function') {\r\n return await this.#loadItems(val, items);\r\n }\r\n this.#allItem = items.toObject(this.valueField);\r\n const isArray = Array.isArray(formValue);\r\n const hasFields = !!this.valueField && !!this.displayField;\r\n const filteredItems = items.filter(item => {\r\n const value = hasFields ? item[this.valueField] : item;\r\n const display = hasFields ? item[this.displayField] : item;\r\n if (String.aliasIncludes(value, val) || String.aliasIncludes(display, val)) {\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 });\r\n if (items.length <= this.limit) {\r\n return filteredItems;\r\n }\r\n // Đưa những selectedItems lên đầu nếu không mat-select-trigger sẽ không work\r\n return filteredItems.sort((current, next) => {\r\n const value1 = hasFields ? current[this.valueField] : current;\r\n const value2 = hasFields ? next[this.valueField] : next;\r\n let flag1 = 0;\r\n let flag2 = 0;\r\n if (isArray) {\r\n flag1 = formValue.some(e => e === value1) ? 1 : 0;\r\n flag2 = formValue.some(e => e === value2) ? 1 : 0;\r\n return flag2 - flag1;\r\n }\r\n flag1 = formValue === value1 ? 1 : 0;\r\n flag2 = formValue === value2 ? 1 : 0;\r\n return flag2 - flag1;\r\n });\r\n }));\r\n this.selectedItems = combineLatest([\r\n this.#itemsChanges.asObservable(),\r\n this.formControl.valueChanges.pipe(startWith(this.formControl.value))])\r\n .pipe(\r\n switchMap(async ([items, val]) => {\r\n // Vì một số lý do chưa xác định mà khi sử dụng sdViewDef thì khi chuyển sang dạng view sẽ trigger val = null\r\n // Nhưng formControl.value vẫn có giá trị đúng nên thực hiện gán val = this.formControl.value;\r\n val = this.formControl.value;\r\n if (!val?.toString()) {\r\n return [];\r\n }\r\n const values = Array.isArray(val) ? val : [val];\r\n if (!this.valueField) {\r\n return values;\r\n }\r\n if (typeof (items) === 'function') {\r\n return await this.#loadSelectedItems(val, items);\r\n }\r\n return values.map(value => {\r\n return items?.find(item => item[this.valueField] === value) || {\r\n [this.valueField]: value,\r\n [this.displayField]: value\r\n };\r\n });\r\n })\r\n );\r\n this.filteredItems = this.#allItems.pipe(map(allItems => allItems.paging(this.limit)));\r\n this.display = this.selectedItems.pipe(\r\n map(selectedItems => selectedItems?.map(item => this.displayField ? item[this.displayField] : item)?.join(', ')));\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 this.#subscription.unsubscribe();\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 #loadSelectedItems = async (value: string | string[], items: SearchFunc) => {\r\n if (!value?.toString()) {\r\n return [];\r\n }\r\n const values = Array.isArray(value) ? value : [value];\r\n if (!this.valueField && !this.displayField) {\r\n return values;\r\n }\r\n this.loading = true;\r\n if (values.some(val => this.#allItem[val] === undefined)) {\r\n const results = await items(value, true).catch(() => []).finally(() => this.loading = false);\r\n const objItem = Array.toObject(results, this.valueField);\r\n const objValue = Array.toObject(\r\n values.map(val => ({ [val?.toString()]: { [this.valueField]: val, [this.displayField]: val } })), this.valueField);\r\n this.#allItem = {\r\n ...objValue,\r\n ...this.#allItem,\r\n ...objItem\r\n };\r\n }\r\n return values.map(val => this.#allItem[val?.toString()] ?? { [this.valueField]: val, [this.displayField]: val });\r\n }\r\n\r\n #loadItems = async (searchText: string, items: SearchFunc) => {\r\n searchText = searchText?.toString() || '';\r\n if (this.#cache[searchText] === undefined) {\r\n this.loading = true;\r\n const results = await items(searchText).catch(() => []).finally(() => this.loading = false);\r\n const objItem = Array.toObject(results, this.valueField);\r\n this.#allItem = {\r\n ...this.#allItem,\r\n ...objItem\r\n };\r\n this.#cache[searchText] = results.union(this.valueField);\r\n }\r\n if (!this.multiple) {\r\n return this.#cache[searchText];\r\n }\r\n const selectedItems = await this.#loadSelectedItems(this.formControl.value, items);\r\n // Đưa những selectedItems lên đầu nếu không mat-select-trigger sẽ không work\r\n return [...selectedItems, ...this.#cache[searchText]].union(this.valueField);\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 = async (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: value.map(val => this.#allItem[val?.toString()])\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.#allItem[value?.toString()]\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 onClick = () => {\r\n if (this.sdView?.templateRef) {\r\n if (!this.formControl.disabled && !this.isFocused) {\r\n this.focus();\r\n }\r\n }\r\n }\r\n\r\n focus = () => {\r\n this.isFocused = true;\r\n setTimeout(() => {\r\n this.select?.focus();\r\n this.select?.open();\r\n }, 100);\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 this.isFocused = true;\r\n if (this.#input) {\r\n this.#input.value = null;\r\n }\r\n this.searchTerm$.next('');\r\n } else {\r\n this.isFocused = false;\r\n }\r\n }\r\n\r\n onOptionChange = (tooltip: MatTooltip) => {\r\n tooltip?.hide();\r\n }\r\n\r\n trackByKey = (index, item) => {\r\n if (this.valueField) {\r\n return item?.[this.valueField];\r\n }\r\n return item;\r\n }\r\n}\r\n\r\ntype SearchFunc = (searchText?: string | string[], isFormValue?: boolean) => Promise<any[]>;","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 { 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\nimport { SdCommonModule } from '@sd-angular/core/common';\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 SdCommonModule\r\n ],\r\n declarations: [\r\n SdSelect,\r\n SdSelectDisplayDefDirective\r\n ],\r\n exports: [\r\n SdSelect,\r\n SdSelectDisplayDefDirective,\r\n SdCommonModule\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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"}
|