@sd-angular/core 19.0.0-beta.2 → 19.0.0-beta.3
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/fesm2022/sd-angular-core-components-document-builder.mjs +92 -32
- package/fesm2022/sd-angular-core-components-document-builder.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-table.mjs +1 -1
- package/fesm2022/sd-angular-core-components-table.mjs.map +1 -1
- package/fesm2022/sd-angular-core-modules-auth.mjs +137 -0
- package/fesm2022/sd-angular-core-modules-auth.mjs.map +1 -0
- package/fesm2022/sd-angular-core-modules.mjs +1 -0
- package/fesm2022/sd-angular-core-modules.mjs.map +1 -1
- package/fesm2022/sd-angular-core-services-confirm.mjs +4 -7
- package/fesm2022/sd-angular-core-services-confirm.mjs.map +1 -1
- package/fesm2022/sd-angular-core-utilities-models.mjs +11 -2
- package/fesm2022/sd-angular-core-utilities-models.mjs.map +1 -1
- package/modules/auth/configurations/auth.configuration.d.ts +19 -0
- package/modules/auth/configurations/index.d.ts +1 -0
- package/modules/auth/guards/auth.guard.d.ts +11 -0
- package/modules/auth/guards/index.d.ts +2 -0
- package/modules/auth/guards/portal.guard.d.ts +11 -0
- package/modules/auth/index.d.ts +3 -0
- package/modules/auth/services/auth.model.d.ts +8 -0
- package/modules/auth/services/auth.service.d.ts +17 -0
- package/modules/auth/services/index.d.ts +2 -0
- package/modules/index.d.ts +1 -0
- package/package.json +61 -57
- package/utilities/models/src/maybe-async.model.d.ts +1 -0
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { InjectionToken, signal, Optional, Inject, Injectable } from '@angular/core';
|
|
3
|
+
import { Subject } from 'rxjs';
|
|
4
|
+
import { SdNormalizeAsync, SdResolveMaybeAsync } from '@sd-angular/core/utilities';
|
|
5
|
+
import { toSignal } from '@angular/core/rxjs-interop';
|
|
6
|
+
import * as i1 from '@angular/router';
|
|
7
|
+
|
|
8
|
+
const SD_AUTH_CONFIGURATION = new InjectionToken('sd.auth.configuration');
|
|
9
|
+
|
|
10
|
+
class SdAuthService {
|
|
11
|
+
authConfiguration;
|
|
12
|
+
// Đăng nhập
|
|
13
|
+
// #signin = new Subject<void>();
|
|
14
|
+
// signin$?: Observable<void>;
|
|
15
|
+
getAuthInfo;
|
|
16
|
+
// Đăng xuất
|
|
17
|
+
#signout = new Subject();
|
|
18
|
+
signout$;
|
|
19
|
+
// Thay đổi mật khẩu
|
|
20
|
+
#changePassword = new Subject();
|
|
21
|
+
changePassword$;
|
|
22
|
+
constructor(authConfiguration) {
|
|
23
|
+
this.authConfiguration = authConfiguration;
|
|
24
|
+
// this.#handleSignin();
|
|
25
|
+
this.#handleSignout();
|
|
26
|
+
this.#handleChangePassword();
|
|
27
|
+
const defaultUser = {
|
|
28
|
+
id: 'guest-id',
|
|
29
|
+
username: 'guest',
|
|
30
|
+
firstName: 'Guest',
|
|
31
|
+
email: 'guest@gmail.com',
|
|
32
|
+
};
|
|
33
|
+
if (this.authConfiguration?.guard?.authInfo) {
|
|
34
|
+
this.getAuthInfo = toSignal(SdNormalizeAsync(this.authConfiguration.guard?.authInfo()), {
|
|
35
|
+
initialValue: defaultUser,
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
this.getAuthInfo = signal(defaultUser);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
// #handleSignin = () => {
|
|
43
|
+
// this.signin$ = this.#signin.asObservable();
|
|
44
|
+
// };
|
|
45
|
+
#handleSignout = () => {
|
|
46
|
+
this.signout$ = this.#signout.asObservable();
|
|
47
|
+
};
|
|
48
|
+
#handleChangePassword = () => {
|
|
49
|
+
this.changePassword$ = this.#changePassword.asObservable();
|
|
50
|
+
};
|
|
51
|
+
signout = () => {
|
|
52
|
+
if (this.authConfiguration?.action?.signout) {
|
|
53
|
+
SdResolveMaybeAsync(this.authConfiguration.action.signout()).then(() => {
|
|
54
|
+
this.#signout.next();
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
changePassword = () => {
|
|
59
|
+
if (this.authConfiguration?.action?.changePassword) {
|
|
60
|
+
SdResolveMaybeAsync(this.authConfiguration.action.changePassword()).then(() => {
|
|
61
|
+
this.#changePassword.next();
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: SdAuthService, deps: [{ token: SD_AUTH_CONFIGURATION, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
66
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: SdAuthService, providedIn: 'root' });
|
|
67
|
+
}
|
|
68
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: SdAuthService, decorators: [{
|
|
69
|
+
type: Injectable,
|
|
70
|
+
args: [{ providedIn: 'root' }]
|
|
71
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
72
|
+
type: Optional
|
|
73
|
+
}, {
|
|
74
|
+
type: Inject,
|
|
75
|
+
args: [SD_AUTH_CONFIGURATION]
|
|
76
|
+
}] }] });
|
|
77
|
+
|
|
78
|
+
class SdAuthGuard {
|
|
79
|
+
authConfiguration;
|
|
80
|
+
router;
|
|
81
|
+
constructor(authConfiguration, router) {
|
|
82
|
+
this.authConfiguration = authConfiguration;
|
|
83
|
+
this.router = router;
|
|
84
|
+
}
|
|
85
|
+
canActivate = (route, state) => {
|
|
86
|
+
if (this.authConfiguration?.guard?.auth) {
|
|
87
|
+
return this.authConfiguration.guard.auth(route, state);
|
|
88
|
+
}
|
|
89
|
+
// Nếu chưa tích hợp Auth Guard thì pass canActive
|
|
90
|
+
return true;
|
|
91
|
+
};
|
|
92
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: SdAuthGuard, deps: [{ token: SD_AUTH_CONFIGURATION, optional: true }, { token: i1.Router }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
93
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: SdAuthGuard, providedIn: 'root' });
|
|
94
|
+
}
|
|
95
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: SdAuthGuard, decorators: [{
|
|
96
|
+
type: Injectable,
|
|
97
|
+
args: [{ providedIn: 'root' }]
|
|
98
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
99
|
+
type: Optional
|
|
100
|
+
}, {
|
|
101
|
+
type: Inject,
|
|
102
|
+
args: [SD_AUTH_CONFIGURATION]
|
|
103
|
+
}] }, { type: i1.Router }] });
|
|
104
|
+
|
|
105
|
+
class PortalGuard {
|
|
106
|
+
authConfiguration;
|
|
107
|
+
router;
|
|
108
|
+
constructor(authConfiguration, router) {
|
|
109
|
+
this.authConfiguration = authConfiguration;
|
|
110
|
+
this.router = router;
|
|
111
|
+
}
|
|
112
|
+
canActivate = (route, state) => {
|
|
113
|
+
if (this.authConfiguration?.guard?.portal) {
|
|
114
|
+
return this.authConfiguration.guard.portal(route, state);
|
|
115
|
+
}
|
|
116
|
+
// Nếu chưa tích hợp Portal Guard thì pass canActive
|
|
117
|
+
return true;
|
|
118
|
+
};
|
|
119
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: PortalGuard, deps: [{ token: SD_AUTH_CONFIGURATION, optional: true }, { token: i1.Router }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
120
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: PortalGuard, providedIn: 'root' });
|
|
121
|
+
}
|
|
122
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: PortalGuard, decorators: [{
|
|
123
|
+
type: Injectable,
|
|
124
|
+
args: [{ providedIn: 'root' }]
|
|
125
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
126
|
+
type: Optional
|
|
127
|
+
}, {
|
|
128
|
+
type: Inject,
|
|
129
|
+
args: [SD_AUTH_CONFIGURATION]
|
|
130
|
+
}] }, { type: i1.Router }] });
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* Generated bundle index. Do not edit.
|
|
134
|
+
*/
|
|
135
|
+
|
|
136
|
+
export { PortalGuard, SD_AUTH_CONFIGURATION, SdAuthGuard, SdAuthService };
|
|
137
|
+
//# sourceMappingURL=sd-angular-core-modules-auth.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sd-angular-core-modules-auth.mjs","sources":["../../../projects/sd-angular/modules/auth/configurations/auth.configuration.ts","../../../projects/sd-angular/modules/auth/services/auth.service.ts","../../../projects/sd-angular/modules/auth/guards/auth.guard.ts","../../../projects/sd-angular/modules/auth/guards/portal.guard.ts","../../../projects/sd-angular/modules/auth/sd-angular-core-modules-auth.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\r\nimport { CanActivate } from '@angular/router';\r\nimport { SdMaybeAsync } from '@sd-angular/core/utilities';\r\nimport { SdAuthInfo } from '../services';\r\n\r\nexport interface ISdAuthConfiguration {\r\n action?: IAuthConfigurationAction;\r\n guard?: IAuthConfigurationGuard;\r\n}\r\n\r\nexport const SD_AUTH_CONFIGURATION = new InjectionToken<ISdAuthConfiguration>('sd.auth.configuration');\r\n\r\ninterface IAuthConfigurationAction {\r\n signout: () => SdMaybeAsync<void>;\r\n changePassword?: () => SdMaybeAsync<void>;\r\n}\r\n\r\ninterface IAuthConfigurationGuard {\r\n auth?: CanActivate['canActivate'];\r\n portal?: CanActivate['canActivate'];\r\n authInfo: () => SdMaybeAsync<SdAuthInfo>;\r\n}\r\n","import { Inject, Injectable, Optional, signal, Signal } from '@angular/core';\r\nimport { from, Observable, Subject } from 'rxjs';\r\nimport { ISdAuthConfiguration, SD_AUTH_CONFIGURATION } from '../configurations';\r\nimport { SdNormalizeAsync, SdResolveMaybeAsync } from '@sd-angular/core/utilities';\r\nimport { SdAuthInfo } from './auth.model';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class SdAuthService {\r\n // Đăng nhập\r\n // #signin = new Subject<void>();\r\n // signin$?: Observable<void>;\r\n getAuthInfo?: Signal<SdAuthInfo | undefined>;\r\n\r\n // Đăng xuất\r\n #signout = new Subject<void>();\r\n signout$?: Observable<void>;\r\n\r\n // Thay đổi mật khẩu\r\n #changePassword = new Subject<void>();\r\n changePassword$?: Observable<void>;\r\n\r\n constructor(@Optional() @Inject(SD_AUTH_CONFIGURATION) private authConfiguration: ISdAuthConfiguration) {\r\n // this.#handleSignin();\r\n this.#handleSignout();\r\n this.#handleChangePassword();\r\n const defaultUser = {\r\n id: 'guest-id',\r\n username: 'guest',\r\n firstName: 'Guest',\r\n email: 'guest@gmail.com',\r\n };\r\n if (this.authConfiguration?.guard?.authInfo) {\r\n this.getAuthInfo = toSignal(SdNormalizeAsync(this.authConfiguration.guard?.authInfo()), {\r\n initialValue: defaultUser,\r\n });\r\n } else {\r\n this.getAuthInfo = signal(defaultUser);\r\n }\r\n }\r\n\r\n // #handleSignin = () => {\r\n // this.signin$ = this.#signin.asObservable();\r\n // };\r\n\r\n #handleSignout = () => {\r\n this.signout$ = this.#signout.asObservable();\r\n };\r\n\r\n #handleChangePassword = () => {\r\n this.changePassword$ = this.#changePassword.asObservable();\r\n };\r\n signout = () => {\r\n if (this.authConfiguration?.action?.signout) {\r\n SdResolveMaybeAsync(this.authConfiguration.action.signout()).then(() => {\r\n this.#signout.next();\r\n });\r\n }\r\n };\r\n\r\n changePassword = () => {\r\n if (this.authConfiguration?.action?.changePassword) {\r\n SdResolveMaybeAsync(this.authConfiguration.action.changePassword()).then(() => {\r\n this.#changePassword.next();\r\n });\r\n }\r\n };\r\n}\r\n","import { Inject, Injectable, Optional } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot } from '@angular/router';\r\nimport { ISdAuthConfiguration, SD_AUTH_CONFIGURATION } from '../configurations';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class SdAuthGuard implements CanActivate {\r\n constructor(\r\n @Optional() @Inject(SD_AUTH_CONFIGURATION) private authConfiguration: ISdAuthConfiguration,\r\n protected readonly router: Router\r\n ) {}\r\n\r\n canActivate = (route: ActivatedRouteSnapshot, state: RouterStateSnapshot) => {\r\n if (this.authConfiguration?.guard?.auth) {\r\n return this.authConfiguration.guard.auth(route, state);\r\n }\r\n // Nếu chưa tích hợp Auth Guard thì pass canActive\r\n return true;\r\n };\r\n}\r\n","import { Inject, Injectable, Optional } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot } from '@angular/router';\r\nimport { ISdAuthConfiguration, SD_AUTH_CONFIGURATION } from '../configurations';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class PortalGuard implements CanActivate {\r\n constructor(\r\n @Optional() @Inject(SD_AUTH_CONFIGURATION) private authConfiguration: ISdAuthConfiguration,\r\n protected readonly router: Router\r\n ) {}\r\n\r\n canActivate = (route: ActivatedRouteSnapshot, state: RouterStateSnapshot) => {\r\n if (this.authConfiguration?.guard?.portal) {\r\n return this.authConfiguration.guard.portal(route, state);\r\n }\r\n // Nếu chưa tích hợp Portal Guard thì pass canActive\r\n return true;\r\n };\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sd-angular-core-modules.mjs","sources":["../../../projects/sd-angular/modules/sd-angular-core-modules.ts"],"sourcesContent":["/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sd-angular-core-modules.mjs","sources":["../../../projects/sd-angular/modules/sd-angular-core-modules.ts"],"sourcesContent":["/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAAA;;AAEG"}
|
|
@@ -79,14 +79,11 @@ class SdConfirmService {
|
|
|
79
79
|
return new Promise((resolve, reject) => {
|
|
80
80
|
dialogRef.afterClosed().subscribe(result => {
|
|
81
81
|
if (result) {
|
|
82
|
-
if (result === '
|
|
83
|
-
|
|
84
|
-
}
|
|
85
|
-
else if (result === 'CANCEL') {
|
|
86
|
-
reject(result);
|
|
82
|
+
if (result.action === 'CANCEL') {
|
|
83
|
+
reject(result.action);
|
|
87
84
|
}
|
|
88
|
-
else {
|
|
89
|
-
resolve(
|
|
85
|
+
else if (result.action === 'ACCEPT') {
|
|
86
|
+
resolve(result.value);
|
|
90
87
|
}
|
|
91
88
|
}
|
|
92
89
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sd-angular-core-services-confirm.mjs","sources":["../../../projects/sd-angular/services/confirm/src/lib/components/dialog-confirm/dialog-confirm.component.ts","../../../projects/sd-angular/services/confirm/src/lib/components/dialog-confirm/dialog-confirm.component.html","../../../projects/sd-angular/services/confirm/src/lib/confirm.service.ts","../../../projects/sd-angular/services/confirm/src/public-api.ts","../../../projects/sd-angular/services/confirm/sd-angular-core-services-confirm.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\r\nimport { Component, Inject } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatDialogRef, MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { SdButton } from '@sd-angular/core/components/button';\r\nimport { SdDate } from '@sd-angular/core/forms/date';\r\nimport { SdRadio } from '@sd-angular/core/forms/radio';\r\nimport { SdColor } from '@sd-angular/core/utilities/models';\r\nimport * as uuid from 'uuid';\r\n\r\nexport interface DialogData {\r\n icon?: string;\r\n title?: string;\r\n message?: string;\r\n yesTitle?: string;\r\n noTitle?: string;\r\n yesButtonColor?: SdColor;\r\n noButtonColor?: SdColor;\r\n input?: {\r\n placeholder?: string;\r\n minlength?: number;\r\n maxlength?: number;\r\n required?: boolean;\r\n defaultValue?: string;\r\n };\r\n date?: {\r\n required?: boolean;\r\n placeholder?: string;\r\n defaultValue?: string | Date;\r\n min?: string | Date;\r\n max?: string | Date;\r\n };\r\n radio?: {\r\n required?: boolean;\r\n defaultValue?: string | number;\r\n items: any[];\r\n valueField: string;\r\n displayField: string;\r\n display?: 'row' | 'column';\r\n };\r\n}\r\n\r\n@Component({\r\n selector: 'sd-dialog-confirm',\r\n templateUrl: 'dialog-confirm.component.html',\r\n styleUrls: ['./dialog-confirm.component.scss'],\r\n imports: [CommonModule, FormsModule, MatDialogModule, MatFormFieldModule, MatIconModule, SdButton, SdDate, SdRadio],\r\n})\r\nexport class DialogConfirmComponent {\r\n value: any;\r\n required = false;\r\n id = `I${uuid.v4()}`;\r\n constructor(\r\n public dialogRef: MatDialogRef<DialogConfirmComponent>,\r\n @Inject(MAT_DIALOG_DATA) public data: DialogData\r\n ) {\r\n if (data?.input) {\r\n this.value = data?.input?.defaultValue ?? '';\r\n this.required = data?.input?.required || false;\r\n }\r\n if (data?.date) {\r\n this.value = data?.date?.defaultValue ?? '';\r\n this.required = data?.date?.required || false;\r\n }\r\n if (data?.radio) {\r\n this.value = data?.radio?.defaultValue ?? '';\r\n this.required = data?.radio?.required || false;\r\n }\r\n }\r\n\r\n onCancel = () => {\r\n this.dialogRef.close({ action: 'CANCEL', value: null });\r\n };\r\n\r\n onAccept = () => {\r\n // Always return an object with action and value for consistency\r\n if (this.data?.radio || this.data?.input || this.data?.date) {\r\n this.dialogRef.close({ action: 'ACCEPT', value: this.value });\r\n } else {\r\n this.dialogRef.close({ action: 'ACCEPT', value: null });\r\n }\r\n };\r\n}\r\n","<div mat-dialog-title class=\"\">\r\n @if (data.icon) {\r\n <mat-icon>\r\n {{ data.icon }}\r\n </mat-icon>\r\n }\r\n <span class=\"T28M\" [innerHtml]=\"data.title || 'Confirm'\"></span>\r\n</div>\r\n<div mat-dialog-content>\r\n <div class=\"T14R mb-4\" [innerHtml]=\"data.message\"></div>\r\n @if (data.input) {\r\n <mat-form-field appearance=\"outline\">\r\n <textarea\r\n style=\"width: 100%\"\r\n matInput\r\n [placeholder]=\"data.input.placeholder\"\r\n [(ngModel)]=\"value\"\r\n autocomplete=\"off\"\r\n rows=\"5\"\r\n [maxlength]=\"data.input.maxlength!\"></textarea>\r\n </mat-form-field>\r\n }\r\n @if (data.date) {\r\n <sd-date\r\n [placeholder]=\"data.date.placeholder\"\r\n [(model)]=\"value\"\r\n type=\"date\"\r\n [min]=\"data.date.min!\"\r\n [max]=\"data.date.max!\"\r\n [required]=\"data.date.required\">\r\n </sd-date>\r\n }\r\n @if (data.radio) {\r\n <sd-radio\r\n [items]=\"data.radio.items\"\r\n [valueField]=\"data.radio.valueField\"\r\n [displayField]=\"data.radio.displayField\"\r\n [display]=\"data.radio.display || 'column'\"\r\n [(model)]=\"value\"\r\n [required]=\"data.radio.required\">\r\n </sd-radio>\r\n }\r\n</div>\r\n<div mat-dialog-actions align=\"end\">\r\n @if (data.noTitle) {\r\n <sd-button [color]=\"data.noButtonColor || 'secondary'\" [title]=\"data.noTitle\" (click)=\"onCancel()\"></sd-button>\r\n }\r\n @if (data.yesTitle) {\r\n <sd-button\r\n class=\"ml-8\"\r\n type=\"fill\"\r\n [color]=\"data.yesButtonColor || 'primary'\"\r\n [disabled]=\"required && !value\"\r\n cdkFocusInitial\r\n [title]=\"data.yesTitle\"\r\n (click)=\"onAccept()\"></sd-button>\r\n }\r\n</div>\r\n","import { Injectable } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { DialogConfirmComponent } from './components/dialog-confirm/dialog-confirm.component';\r\nimport { SdColor } from '@sd-angular/core/utilities/models';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SdConfirmService {\r\n constructor(private dialog: MatDialog) {}\r\n\r\n confirm = (\r\n message: string,\r\n option: {\r\n title?: string;\r\n yesTitle?: string;\r\n noTitle?: string;\r\n yesButtonColor?: SdColor;\r\n noButtonColor?: SdColor;\r\n } = {}\r\n ) => {\r\n const dialogRef = this.dialog.open(DialogConfirmComponent, {\r\n width: '400px',\r\n data: {\r\n title: option?.title || 'Xác nhận',\r\n message,\r\n yesTitle: option?.yesTitle || 'Đồng ý',\r\n noTitle: option?.noTitle || 'Hủy bỏ',\r\n noButtonColor: option?.noButtonColor || 'secondary',\r\n yesButtonColor: option?.yesButtonColor || 'primary',\r\n },\r\n });\r\n return new Promise((resolve, reject) => {\r\n dialogRef.afterClosed().subscribe(result => {\r\n if (result) {\r\n if (result === 'ACCEPT') {\r\n resolve(null);\r\n } else if (result === 'CANCEL') {\r\n reject(result);\r\n } else {\r\n resolve(null);\r\n }\r\n }\r\n });\r\n });\r\n };\r\n\r\n withInput = (\r\n message?: string,\r\n option?: {\r\n title?: string;\r\n yesTitle?: string;\r\n noTitle?: string;\r\n required?: boolean;\r\n maxlength?: number;\r\n yesButtonColor?: SdColor;\r\n noButtonColor?: SdColor;\r\n defaultValue?: string;\r\n }\r\n ): Promise<string> => {\r\n const dialogRef = this.dialog.open(DialogConfirmComponent, {\r\n width: '400px',\r\n data: {\r\n title: option?.title || 'Xác nhận',\r\n message,\r\n yesTitle: option?.yesTitle || 'Có',\r\n noTitle: option?.noTitle || 'Không',\r\n noButtonColor: option?.noButtonColor || 'secondary',\r\n yesButtonColor: option?.yesButtonColor || 'primary',\r\n input: {\r\n maxlength: option?.maxlength || 255,\r\n required: option?.required,\r\n defaultValue: option?.defaultValue || '',\r\n },\r\n },\r\n });\r\n return new Promise((resolve, reject) => {\r\n dialogRef.afterClosed().subscribe(result => {\r\n if (result) {\r\n if (result.action === 'CANCEL') {\r\n reject(result.action);\r\n } else if (result.action === 'ACCEPT') {\r\n resolve(result.value);\r\n }\r\n }\r\n });\r\n });\r\n };\r\n\r\n withRadio = (\r\n message?: string,\r\n option?: {\r\n title?: string;\r\n yesTitle?: string;\r\n noTitle?: string;\r\n required?: boolean;\r\n yesButtonColor?: SdColor;\r\n noButtonColor?: SdColor;\r\n defaultValue?: string | number;\r\n items: any[];\r\n valueField: string;\r\n displayField: string;\r\n display?: 'row' | 'column';\r\n }\r\n ): Promise<string> => {\r\n const dialogRef = this.dialog.open(DialogConfirmComponent, {\r\n width: '400px',\r\n data: {\r\n title: option?.title || 'Xác nhận',\r\n message,\r\n yesTitle: option?.yesTitle || 'Có',\r\n noTitle: option?.noTitle || 'Không',\r\n noButtonColor: option?.noButtonColor || 'secondary',\r\n yesButtonColor: option?.yesButtonColor || 'primary',\r\n radio: {\r\n items: option?.items || [],\r\n valueField: option?.valueField || 'value',\r\n displayField: option?.displayField || 'label',\r\n display: option?.display || 'row',\r\n required: option?.required,\r\n defaultValue: option?.defaultValue,\r\n },\r\n },\r\n });\r\n return new Promise((resolve, reject) => {\r\n dialogRef.afterClosed().subscribe(result => {\r\n if (result) {\r\n if (result.action === 'CANCEL') {\r\n reject(result.action);\r\n } else if (result.action === 'ACCEPT') {\r\n resolve(result.value);\r\n }\r\n }\r\n });\r\n });\r\n };\r\n\r\n withDate = (\r\n message?: string,\r\n option?: {\r\n title?: string;\r\n\r\n yesTitle?: string;\r\n noTitle?: string;\r\n required?: boolean;\r\n yesButtonColor?: SdColor;\r\n noButtonColor?: SdColor;\r\n defaultValue?: string | Date;\r\n placeholder?: string;\r\n }\r\n ): Promise<string> => {\r\n const dialogRef = this.dialog.open(DialogConfirmComponent, {\r\n width: '400px',\r\n data: {\r\n title: option?.title || 'Xác nhận',\r\n message,\r\n yesTitle: option?.yesTitle || 'Có',\r\n noTitle: option?.noTitle || 'Không',\r\n noButtonColor: option?.noButtonColor || 'secondary',\r\n yesButtonColor: option?.yesButtonColor || 'primary',\r\n date: {\r\n placeholder: option?.placeholder,\r\n required: option?.required,\r\n defaultValue: option?.defaultValue || '',\r\n },\r\n },\r\n });\r\n return new Promise((resolve, reject) => {\r\n dialogRef.afterClosed().subscribe(result => {\r\n if (result) {\r\n if (result.action === 'CANCEL') {\r\n reject(result.action);\r\n } else if (result.action === 'ACCEPT') {\r\n resolve(result.value);\r\n }\r\n }\r\n });\r\n });\r\n };\r\n}\r\n","/*\n * Public API Surface of superdev-angular-core\n */\n\nexport * from './lib/components/dialog-confirm/dialog-confirm.component';\nexport * from './lib/confirm.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sd-angular-core-services-confirm.mjs","sources":["../../../projects/sd-angular/services/confirm/src/lib/components/dialog-confirm/dialog-confirm.component.ts","../../../projects/sd-angular/services/confirm/src/lib/components/dialog-confirm/dialog-confirm.component.html","../../../projects/sd-angular/services/confirm/src/lib/confirm.service.ts","../../../projects/sd-angular/services/confirm/src/public-api.ts","../../../projects/sd-angular/services/confirm/sd-angular-core-services-confirm.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\r\nimport { Component, Inject } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatDialogRef, MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { SdButton } from '@sd-angular/core/components/button';\r\nimport { SdDate } from '@sd-angular/core/forms/date';\r\nimport { SdRadio } from '@sd-angular/core/forms/radio';\r\nimport { SdColor } from '@sd-angular/core/utilities/models';\r\nimport * as uuid from 'uuid';\r\n\r\nexport interface DialogData {\r\n icon?: string;\r\n title?: string;\r\n message?: string;\r\n yesTitle?: string;\r\n noTitle?: string;\r\n yesButtonColor?: SdColor;\r\n noButtonColor?: SdColor;\r\n input?: {\r\n placeholder?: string;\r\n minlength?: number;\r\n maxlength?: number;\r\n required?: boolean;\r\n defaultValue?: string;\r\n };\r\n date?: {\r\n required?: boolean;\r\n placeholder?: string;\r\n defaultValue?: string | Date;\r\n min?: string | Date;\r\n max?: string | Date;\r\n };\r\n radio?: {\r\n required?: boolean;\r\n defaultValue?: string | number;\r\n items: any[];\r\n valueField: string;\r\n displayField: string;\r\n display?: 'row' | 'column';\r\n };\r\n}\r\n\r\n@Component({\r\n selector: 'sd-dialog-confirm',\r\n templateUrl: 'dialog-confirm.component.html',\r\n styleUrls: ['./dialog-confirm.component.scss'],\r\n imports: [CommonModule, FormsModule, MatDialogModule, MatFormFieldModule, MatIconModule, SdButton, SdDate, SdRadio],\r\n})\r\nexport class DialogConfirmComponent {\r\n value: any;\r\n required = false;\r\n id = `I${uuid.v4()}`;\r\n constructor(\r\n public dialogRef: MatDialogRef<DialogConfirmComponent>,\r\n @Inject(MAT_DIALOG_DATA) public data: DialogData\r\n ) {\r\n if (data?.input) {\r\n this.value = data?.input?.defaultValue ?? '';\r\n this.required = data?.input?.required || false;\r\n }\r\n if (data?.date) {\r\n this.value = data?.date?.defaultValue ?? '';\r\n this.required = data?.date?.required || false;\r\n }\r\n if (data?.radio) {\r\n this.value = data?.radio?.defaultValue ?? '';\r\n this.required = data?.radio?.required || false;\r\n }\r\n }\r\n\r\n onCancel = () => {\r\n this.dialogRef.close({ action: 'CANCEL', value: null });\r\n };\r\n\r\n onAccept = () => {\r\n // Always return an object with action and value for consistency\r\n if (this.data?.radio || this.data?.input || this.data?.date) {\r\n this.dialogRef.close({ action: 'ACCEPT', value: this.value });\r\n } else {\r\n this.dialogRef.close({ action: 'ACCEPT', value: null });\r\n }\r\n };\r\n}\r\n","<div mat-dialog-title class=\"\">\r\n @if (data.icon) {\r\n <mat-icon>\r\n {{ data.icon }}\r\n </mat-icon>\r\n }\r\n <span class=\"T28M\" [innerHtml]=\"data.title || 'Confirm'\"></span>\r\n</div>\r\n<div mat-dialog-content>\r\n <div class=\"T14R mb-4\" [innerHtml]=\"data.message\"></div>\r\n @if (data.input) {\r\n <mat-form-field appearance=\"outline\">\r\n <textarea\r\n style=\"width: 100%\"\r\n matInput\r\n [placeholder]=\"data.input.placeholder\"\r\n [(ngModel)]=\"value\"\r\n autocomplete=\"off\"\r\n rows=\"5\"\r\n [maxlength]=\"data.input.maxlength!\"></textarea>\r\n </mat-form-field>\r\n }\r\n @if (data.date) {\r\n <sd-date\r\n [placeholder]=\"data.date.placeholder\"\r\n [(model)]=\"value\"\r\n type=\"date\"\r\n [min]=\"data.date.min!\"\r\n [max]=\"data.date.max!\"\r\n [required]=\"data.date.required\">\r\n </sd-date>\r\n }\r\n @if (data.radio) {\r\n <sd-radio\r\n [items]=\"data.radio.items\"\r\n [valueField]=\"data.radio.valueField\"\r\n [displayField]=\"data.radio.displayField\"\r\n [display]=\"data.radio.display || 'column'\"\r\n [(model)]=\"value\"\r\n [required]=\"data.radio.required\">\r\n </sd-radio>\r\n }\r\n</div>\r\n<div mat-dialog-actions align=\"end\">\r\n @if (data.noTitle) {\r\n <sd-button [color]=\"data.noButtonColor || 'secondary'\" [title]=\"data.noTitle\" (click)=\"onCancel()\"></sd-button>\r\n }\r\n @if (data.yesTitle) {\r\n <sd-button\r\n class=\"ml-8\"\r\n type=\"fill\"\r\n [color]=\"data.yesButtonColor || 'primary'\"\r\n [disabled]=\"required && !value\"\r\n cdkFocusInitial\r\n [title]=\"data.yesTitle\"\r\n (click)=\"onAccept()\"></sd-button>\r\n }\r\n</div>\r\n","import { Injectable } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { DialogConfirmComponent } from './components/dialog-confirm/dialog-confirm.component';\r\nimport { SdColor } from '@sd-angular/core/utilities/models';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SdConfirmService {\r\n constructor(private dialog: MatDialog) {}\r\n\r\n confirm = (\r\n message: string,\r\n option: {\r\n title?: string;\r\n yesTitle?: string;\r\n noTitle?: string;\r\n yesButtonColor?: SdColor;\r\n noButtonColor?: SdColor;\r\n } = {}\r\n ) => {\r\n const dialogRef = this.dialog.open(DialogConfirmComponent, {\r\n width: '400px',\r\n data: {\r\n title: option?.title || 'Xác nhận',\r\n message,\r\n yesTitle: option?.yesTitle || 'Đồng ý',\r\n noTitle: option?.noTitle || 'Hủy bỏ',\r\n noButtonColor: option?.noButtonColor || 'secondary',\r\n yesButtonColor: option?.yesButtonColor || 'primary',\r\n },\r\n });\r\n return new Promise((resolve, reject) => {\r\n dialogRef.afterClosed().subscribe(result => {\r\n if (result) {\r\n if (result.action === 'CANCEL') {\r\n reject(result.action);\r\n } else if (result.action === 'ACCEPT') {\r\n resolve(result.value);\r\n }\r\n }\r\n });\r\n });\r\n };\r\n\r\n withInput = (\r\n message?: string,\r\n option?: {\r\n title?: string;\r\n yesTitle?: string;\r\n noTitle?: string;\r\n required?: boolean;\r\n maxlength?: number;\r\n yesButtonColor?: SdColor;\r\n noButtonColor?: SdColor;\r\n defaultValue?: string;\r\n }\r\n ): Promise<string> => {\r\n const dialogRef = this.dialog.open(DialogConfirmComponent, {\r\n width: '400px',\r\n data: {\r\n title: option?.title || 'Xác nhận',\r\n message,\r\n yesTitle: option?.yesTitle || 'Có',\r\n noTitle: option?.noTitle || 'Không',\r\n noButtonColor: option?.noButtonColor || 'secondary',\r\n yesButtonColor: option?.yesButtonColor || 'primary',\r\n input: {\r\n maxlength: option?.maxlength || 255,\r\n required: option?.required,\r\n defaultValue: option?.defaultValue || '',\r\n },\r\n },\r\n });\r\n return new Promise((resolve, reject) => {\r\n dialogRef.afterClosed().subscribe(result => {\r\n if (result) {\r\n if (result.action === 'CANCEL') {\r\n reject(result.action);\r\n } else if (result.action === 'ACCEPT') {\r\n resolve(result.value);\r\n }\r\n }\r\n });\r\n });\r\n };\r\n\r\n withRadio = (\r\n message?: string,\r\n option?: {\r\n title?: string;\r\n yesTitle?: string;\r\n noTitle?: string;\r\n required?: boolean;\r\n yesButtonColor?: SdColor;\r\n noButtonColor?: SdColor;\r\n defaultValue?: string | number;\r\n items: any[];\r\n valueField: string;\r\n displayField: string;\r\n display?: 'row' | 'column';\r\n }\r\n ): Promise<string> => {\r\n const dialogRef = this.dialog.open(DialogConfirmComponent, {\r\n width: '400px',\r\n data: {\r\n title: option?.title || 'Xác nhận',\r\n message,\r\n yesTitle: option?.yesTitle || 'Có',\r\n noTitle: option?.noTitle || 'Không',\r\n noButtonColor: option?.noButtonColor || 'secondary',\r\n yesButtonColor: option?.yesButtonColor || 'primary',\r\n radio: {\r\n items: option?.items || [],\r\n valueField: option?.valueField || 'value',\r\n displayField: option?.displayField || 'label',\r\n display: option?.display || 'row',\r\n required: option?.required,\r\n defaultValue: option?.defaultValue,\r\n },\r\n },\r\n });\r\n return new Promise((resolve, reject) => {\r\n dialogRef.afterClosed().subscribe(result => {\r\n if (result) {\r\n if (result.action === 'CANCEL') {\r\n reject(result.action);\r\n } else if (result.action === 'ACCEPT') {\r\n resolve(result.value);\r\n }\r\n }\r\n });\r\n });\r\n };\r\n\r\n withDate = (\r\n message?: string,\r\n option?: {\r\n title?: string;\r\n\r\n yesTitle?: string;\r\n noTitle?: string;\r\n required?: boolean;\r\n yesButtonColor?: SdColor;\r\n noButtonColor?: SdColor;\r\n defaultValue?: string | Date;\r\n placeholder?: string;\r\n }\r\n ): Promise<string> => {\r\n const dialogRef = this.dialog.open(DialogConfirmComponent, {\r\n width: '400px',\r\n data: {\r\n title: option?.title || 'Xác nhận',\r\n message,\r\n yesTitle: option?.yesTitle || 'Có',\r\n noTitle: option?.noTitle || 'Không',\r\n noButtonColor: option?.noButtonColor || 'secondary',\r\n yesButtonColor: option?.yesButtonColor || 'primary',\r\n date: {\r\n placeholder: option?.placeholder,\r\n required: option?.required,\r\n defaultValue: option?.defaultValue || '',\r\n },\r\n },\r\n });\r\n return new Promise((resolve, reject) => {\r\n dialogRef.afterClosed().subscribe(result => {\r\n if (result) {\r\n if (result.action === 'CANCEL') {\r\n reject(result.action);\r\n } else if (result.action === 'ACCEPT') {\r\n resolve(result.value);\r\n }\r\n }\r\n });\r\n });\r\n };\r\n}\r\n","/*\n * Public API Surface of superdev-angular-core\n */\n\nexport * from './lib/components/dialog-confirm/dialog-confirm.component';\nexport * from './lib/confirm.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { StringUtilities } from '@sd-angular/core/utilities/extensions';
|
|
2
|
-
import { firstValueFrom } from 'rxjs';
|
|
2
|
+
import { firstValueFrom, from, of } from 'rxjs';
|
|
3
3
|
|
|
4
4
|
const SdPatterns = [
|
|
5
5
|
{
|
|
@@ -33,6 +33,15 @@ const SdResolveMaybeAsync = (value) => {
|
|
|
33
33
|
}
|
|
34
34
|
return Promise.resolve(value);
|
|
35
35
|
};
|
|
36
|
+
const SdNormalizeAsync = (value) => {
|
|
37
|
+
if (isObservable(value)) {
|
|
38
|
+
return value; // Nếu là Observable, giữ nguyên
|
|
39
|
+
}
|
|
40
|
+
if (value instanceof Promise) {
|
|
41
|
+
return from(value); // Nếu là Promise, chuyển sang Observable
|
|
42
|
+
}
|
|
43
|
+
return of(value); // Nếu là giá trị thuần (Object, string...), bọc lại bằng of
|
|
44
|
+
};
|
|
36
45
|
function isObservable(obj) {
|
|
37
46
|
return obj && typeof obj.subscribe === 'function';
|
|
38
47
|
}
|
|
@@ -114,5 +123,5 @@ const SdOperators = [
|
|
|
114
123
|
* Generated bundle index. Do not edit.
|
|
115
124
|
*/
|
|
116
125
|
|
|
117
|
-
export { SD_EMPTY_STR, SdOperators, SdPatterns, SdResolveMaybeAsync };
|
|
126
|
+
export { SD_EMPTY_STR, SdNormalizeAsync, SdOperators, SdPatterns, SdResolveMaybeAsync };
|
|
118
127
|
//# sourceMappingURL=sd-angular-core-utilities-models.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sd-angular-core-utilities-models.mjs","sources":["../../../projects/sd-angular/utilities/models/src/pattern.model.ts","../../../projects/sd-angular/utilities/models/src/empty.model.ts","../../../projects/sd-angular/utilities/models/src/maybe-async.model.ts","../../../projects/sd-angular/utilities/models/src/operator.model.ts","../../../projects/sd-angular/utilities/models/sd-angular-core-utilities-models.ts"],"sourcesContent":["import { StringUtilities } from '@sd-angular/core/utilities/extensions';\r\n\r\nexport type SdPatternType = 'EMAIL' | 'PHONE' | 'PHONE_VN';\r\n\r\nexport interface SdPattern {\r\n type: SdPatternType;\r\n name: string;\r\n regex: string;\r\n errorMessage: string;\r\n}\r\n\r\nexport const SdPatterns: SdPattern[] = [\r\n {\r\n type: 'EMAIL',\r\n name: 'Email',\r\n regex: StringUtilities.REGEX_EMAIL,\r\n errorMessage: 'Email không hợp lệ',\r\n },\r\n {\r\n type: 'PHONE',\r\n name: 'SĐT',\r\n regex: StringUtilities.REGEX_PHONE,\r\n errorMessage: 'Số điện thoại không hợp lệ',\r\n },\r\n {\r\n type: 'PHONE_VN',\r\n name: 'SĐT VN',\r\n regex: StringUtilities.REGEX_PHONE_VN,\r\n errorMessage: 'Số điện thoại không hợp lệ',\r\n },\r\n];\r\n","export const SD_EMPTY_STR = '--';\r\n","import { firstValueFrom, Observable } from 'rxjs';\r\n\r\nexport type SdMaybeAsync<T> = T | Promise<T> | Observable<T>;\r\n\r\nexport const SdResolveMaybeAsync = <T>(value: SdMaybeAsync<T>): Promise<T> => {\r\n if (value instanceof Promise) {\r\n return value;\r\n }\r\n if (isObservable(value)) {\r\n return firstValueFrom(value);\r\n }\r\n return Promise.resolve(value);\r\n};\r\n\r\nfunction isObservable(obj: any): obj is Observable<any> {\r\n return obj && typeof obj.subscribe === 'function';\r\n}
|
|
1
|
+
{"version":3,"file":"sd-angular-core-utilities-models.mjs","sources":["../../../projects/sd-angular/utilities/models/src/pattern.model.ts","../../../projects/sd-angular/utilities/models/src/empty.model.ts","../../../projects/sd-angular/utilities/models/src/maybe-async.model.ts","../../../projects/sd-angular/utilities/models/src/operator.model.ts","../../../projects/sd-angular/utilities/models/sd-angular-core-utilities-models.ts"],"sourcesContent":["import { StringUtilities } from '@sd-angular/core/utilities/extensions';\r\n\r\nexport type SdPatternType = 'EMAIL' | 'PHONE' | 'PHONE_VN';\r\n\r\nexport interface SdPattern {\r\n type: SdPatternType;\r\n name: string;\r\n regex: string;\r\n errorMessage: string;\r\n}\r\n\r\nexport const SdPatterns: SdPattern[] = [\r\n {\r\n type: 'EMAIL',\r\n name: 'Email',\r\n regex: StringUtilities.REGEX_EMAIL,\r\n errorMessage: 'Email không hợp lệ',\r\n },\r\n {\r\n type: 'PHONE',\r\n name: 'SĐT',\r\n regex: StringUtilities.REGEX_PHONE,\r\n errorMessage: 'Số điện thoại không hợp lệ',\r\n },\r\n {\r\n type: 'PHONE_VN',\r\n name: 'SĐT VN',\r\n regex: StringUtilities.REGEX_PHONE_VN,\r\n errorMessage: 'Số điện thoại không hợp lệ',\r\n },\r\n];\r\n","export const SD_EMPTY_STR = '--';\r\n","import { firstValueFrom, from, Observable, of } from 'rxjs';\r\n\r\nexport type SdMaybeAsync<T> = T | Promise<T> | Observable<T>;\r\n\r\nexport const SdResolveMaybeAsync = <T>(value: SdMaybeAsync<T>): Promise<T> => {\r\n if (value instanceof Promise) {\r\n return value;\r\n }\r\n if (isObservable(value)) {\r\n return firstValueFrom(value);\r\n }\r\n return Promise.resolve(value);\r\n};\r\n\r\nexport const SdNormalizeAsync = <T>(value: SdMaybeAsync<T>): Observable<T> => {\r\n if (isObservable(value)) {\r\n return value; // Nếu là Observable, giữ nguyên\r\n }\r\n if (value instanceof Promise) {\r\n return from(value); // Nếu là Promise, chuyển sang Observable\r\n }\r\n return of(value); // Nếu là giá trị thuần (Object, string...), bọc lại bằng of\r\n};\r\n\r\nfunction isObservable(obj: any): obj is Observable<any> {\r\n return obj && typeof obj.subscribe === 'function';\r\n}","export type SdOperator = SdOperatorHasData | SdOperatorNoData;\r\n\r\nexport type SdOperatorHasData =\r\n | 'EQUAL'\r\n | 'NOT_EQUAL'\r\n | 'CONTAIN'\r\n | 'NOT_CONTAIN'\r\n | 'IN'\r\n | 'NOT_IN'\r\n | 'START_WITH'\r\n | 'END_WITH'\r\n | 'GREATER_THAN'\r\n | 'LESS_THAN'\r\n | 'GREATER_OR_EQUAL'\r\n | 'LESS_OR_EQUAL'\r\n | 'BETWEEN';\r\n\r\nexport type SdOperatorNoData = 'NULL' | 'NOT_NULL';\r\n\r\nexport const SdOperators: {\r\n value: SdOperator;\r\n symbol?: string;\r\n display: string;\r\n}[] = [\r\n {\r\n value: 'EQUAL',\r\n symbol: '=',\r\n display: 'Bằng',\r\n },\r\n {\r\n value: 'NOT_EQUAL',\r\n symbol: '≠',\r\n display: 'Không bằng',\r\n },\r\n {\r\n value: 'GREATER_THAN',\r\n symbol: '>',\r\n display: 'Lớn hơn',\r\n },\r\n {\r\n value: 'LESS_THAN',\r\n symbol: '<',\r\n display: 'Nhỏ hơn',\r\n },\r\n {\r\n value: 'GREATER_OR_EQUAL',\r\n symbol: '≥',\r\n display: 'Lớn hơn, hoặc bằng',\r\n },\r\n {\r\n value: 'LESS_OR_EQUAL',\r\n symbol: '≤',\r\n display: 'Nhỏ hơn, hoặc bằng',\r\n },\r\n {\r\n value: 'CONTAIN',\r\n symbol: 'join_inner',\r\n display: 'Chứa',\r\n },\r\n {\r\n value: 'NOT_CONTAIN',\r\n symbol: 'join',\r\n display: 'Không chứa',\r\n },\r\n {\r\n value: 'START_WITH',\r\n symbol: 'line_start_circle',\r\n display: 'Bắt đầu bởi',\r\n },\r\n {\r\n value: 'END_WITH',\r\n symbol: 'line_end_circle',\r\n display: 'Kết thúc bởi',\r\n },\r\n {\r\n value: 'IN',\r\n symbol: 'checklist_rtl',\r\n display: 'Nằm trong',\r\n },\r\n {\r\n value: 'NOT_IN',\r\n symbol: 'event_list',\r\n display: 'Không nằm trong',\r\n },\r\n {\r\n value: 'NULL',\r\n symbol: 'motion_photos_off',\r\n display: 'Là rỗng',\r\n },\r\n {\r\n value: 'NOT_NULL',\r\n symbol: 'adjust',\r\n display: 'Không rỗng',\r\n },\r\n];\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { InjectionToken } from '@angular/core';
|
|
2
|
+
import { CanActivate } from '@angular/router';
|
|
3
|
+
import { SdMaybeAsync } from '@sd-angular/core/utilities';
|
|
4
|
+
import { SdAuthInfo } from '../services';
|
|
5
|
+
export interface ISdAuthConfiguration {
|
|
6
|
+
action?: IAuthConfigurationAction;
|
|
7
|
+
guard?: IAuthConfigurationGuard;
|
|
8
|
+
}
|
|
9
|
+
export declare const SD_AUTH_CONFIGURATION: InjectionToken<ISdAuthConfiguration>;
|
|
10
|
+
interface IAuthConfigurationAction {
|
|
11
|
+
signout: () => SdMaybeAsync<void>;
|
|
12
|
+
changePassword?: () => SdMaybeAsync<void>;
|
|
13
|
+
}
|
|
14
|
+
interface IAuthConfigurationGuard {
|
|
15
|
+
auth?: CanActivate['canActivate'];
|
|
16
|
+
portal?: CanActivate['canActivate'];
|
|
17
|
+
authInfo: () => SdMaybeAsync<SdAuthInfo>;
|
|
18
|
+
}
|
|
19
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './auth.configuration';
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot } from '@angular/router';
|
|
2
|
+
import { ISdAuthConfiguration } from '../configurations';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class SdAuthGuard implements CanActivate {
|
|
5
|
+
private authConfiguration;
|
|
6
|
+
protected readonly router: Router;
|
|
7
|
+
constructor(authConfiguration: ISdAuthConfiguration, router: Router);
|
|
8
|
+
canActivate: (route: ActivatedRouteSnapshot, state: RouterStateSnapshot) => import("@angular/router").MaybeAsync<import("@angular/router").GuardResult>;
|
|
9
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SdAuthGuard, [{ optional: true; }, null]>;
|
|
10
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<SdAuthGuard>;
|
|
11
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot } from '@angular/router';
|
|
2
|
+
import { ISdAuthConfiguration } from '../configurations';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class PortalGuard implements CanActivate {
|
|
5
|
+
private authConfiguration;
|
|
6
|
+
protected readonly router: Router;
|
|
7
|
+
constructor(authConfiguration: ISdAuthConfiguration, router: Router);
|
|
8
|
+
canActivate: (route: ActivatedRouteSnapshot, state: RouterStateSnapshot) => import("@angular/router").MaybeAsync<import("@angular/router").GuardResult>;
|
|
9
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<PortalGuard, [{ optional: true; }, null]>;
|
|
10
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<PortalGuard>;
|
|
11
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Signal } from '@angular/core';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
import { ISdAuthConfiguration } from '../configurations';
|
|
4
|
+
import { SdAuthInfo } from './auth.model';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export declare class SdAuthService {
|
|
7
|
+
#private;
|
|
8
|
+
private authConfiguration;
|
|
9
|
+
getAuthInfo?: Signal<SdAuthInfo | undefined>;
|
|
10
|
+
signout$?: Observable<void>;
|
|
11
|
+
changePassword$?: Observable<void>;
|
|
12
|
+
constructor(authConfiguration: ISdAuthConfiguration);
|
|
13
|
+
signout: () => void;
|
|
14
|
+
changePassword: () => void;
|
|
15
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SdAuthService, [{ optional: true; }]>;
|
|
16
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<SdAuthService>;
|
|
17
|
+
}
|
package/modules/index.d.ts
CHANGED