@sd-angular/core 19.0.0-beta.70 → 19.0.0-beta.72
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/assets/scss/ckeditor5.scss +1 -2
- package/components/modal/index.d.ts +1 -1
- package/components/modal/src/modal.component.d.ts +24 -0
- package/components/upload-file/src/configurations/upload-file.configuration.d.ts +33 -0
- package/components/upload-file/src/upload-file.component.d.ts +5 -2
- package/fesm2022/sd-angular-core-components-document-builder.mjs +1 -1
- package/fesm2022/sd-angular-core-components-document-builder.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-import-excel.mjs +1 -1
- package/fesm2022/sd-angular-core-components-import-excel.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-modal.mjs +57 -91
- package/fesm2022/sd-angular-core-components-modal.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-preview.mjs +1 -1
- package/fesm2022/sd-angular-core-components-preview.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-side-drawer.mjs +2 -2
- package/fesm2022/sd-angular-core-components-side-drawer.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-table.mjs +9 -7
- package/fesm2022/sd-angular-core-components-table.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-upload-file.mjs +62 -10
- package/fesm2022/sd-angular-core-components-upload-file.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-workflow.mjs +13 -13
- package/fesm2022/sd-angular-core-components-workflow.mjs.map +1 -1
- package/fesm2022/sd-angular-core-forms-chip-calendar.mjs +158 -197
- package/fesm2022/sd-angular-core-forms-chip-calendar.mjs.map +1 -1
- package/fesm2022/sd-angular-core-forms-chip.mjs +173 -203
- package/fesm2022/sd-angular-core-forms-chip.mjs.map +1 -1
- package/fesm2022/sd-angular-core-modules-layout.mjs +2 -3
- package/fesm2022/sd-angular-core-modules-layout.mjs.map +1 -1
- package/fesm2022/sd-angular-core-modules-permission.mjs +160 -74
- package/fesm2022/sd-angular-core-modules-permission.mjs.map +1 -1
- package/fesm2022/sd-angular-core.mjs +0 -1
- package/fesm2022/sd-angular-core.mjs.map +1 -1
- package/forms/chip/src/chip.component.d.ts +35 -44
- package/forms/chip-calendar/src/chip-calendar.component.d.ts +35 -42
- package/modules/layout/services/menu/menu.model.d.ts +1 -0
- package/modules/permission/src/configurations/permission.configuration.d.ts +56 -2
- package/modules/permission/src/directives/permission.directive.d.ts +5 -8
- package/modules/permission/src/guards/permission.guard.d.ts +2 -1
- package/modules/permission/src/services/permission.service.d.ts +6 -9
- package/package.json +44 -52
- package/public-api.d.ts +0 -1
- package/sd-angular-core-19.0.0-beta.72.tgz +0 -0
- package/components/modal/src/modal/modal.component.d.ts +0 -31
- package/fesm2022/sd-angular-core-guards-permission.mjs +0 -155
- package/fesm2022/sd-angular-core-guards-permission.mjs.map +0 -1
- package/fesm2022/sd-angular-core-guards.mjs +0 -6
- package/fesm2022/sd-angular-core-guards.mjs.map +0 -1
- package/guards/index.d.ts +0 -1
- package/guards/permission/index.d.ts +0 -4
- package/guards/permission/src/configurations/index.d.ts +0 -1
- package/guards/permission/src/configurations/permission.configuration.d.ts +0 -8
- package/guards/permission/src/directives/index.d.ts +0 -1
- package/guards/permission/src/directives/permission.directive.d.ts +0 -12
- package/guards/permission/src/guards/index.d.ts +0 -1
- package/guards/permission/src/guards/permission.guard.d.ts +0 -13
- package/guards/permission/src/services/index.d.ts +0 -1
- package/guards/permission/src/services/permission.service.d.ts +0 -15
- package/sd-angular-core-19.0.0-beta.70.tgz +0 -0
|
@@ -1,9 +1,63 @@
|
|
|
1
1
|
import { InjectionToken } from '@angular/core';
|
|
2
2
|
import { SdMaybeAsync } from '@sd-angular/core/utilities';
|
|
3
|
+
/**
|
|
4
|
+
* Cấu hình trung tâm cho module permission.
|
|
5
|
+
*
|
|
6
|
+
* Luồng hoạt động chính:
|
|
7
|
+
* 1. `loadPermissions(key?)` ở service được gọi để lấy danh sách mã quyền theo từng `key` cấu hình.
|
|
8
|
+
* 2. Guard/service đối chiếu mã quyền theo route metadata.
|
|
9
|
+
* 3. Khi không đủ quyền, callback `onForbiden()` sẽ được gọi (nếu có).
|
|
10
|
+
*
|
|
11
|
+
* Lưu ý:
|
|
12
|
+
* - `SD_PERMISSION_CONFIGURATION` hỗ trợ cả cấu hình đơn và mảng cấu hình (`multi: true`).
|
|
13
|
+
* - Nếu cần tạm bỏ qua kiểm tra quyền (POC/UAT cục bộ), đặt `disabled = true`.
|
|
14
|
+
*/
|
|
3
15
|
export interface ISdPermissionConfiguration {
|
|
16
|
+
/**
|
|
17
|
+
* Khóa định danh cấu hình.
|
|
18
|
+
* Dùng để phân biệt khi hệ thống mở rộng theo nhiều profile permission.
|
|
19
|
+
*
|
|
20
|
+
* Lưu ý: `undefined` cũng được xem là một key hợp lệ (cấu hình mặc định).
|
|
21
|
+
*/
|
|
22
|
+
key?: string;
|
|
23
|
+
/**
|
|
24
|
+
* Bật/tắt kiểm tra permission toàn cục.
|
|
25
|
+
* - `true`: bỏ qua kiểm tra quyền.
|
|
26
|
+
* - `false | undefined`: kiểm tra quyền theo cấu hình route.
|
|
27
|
+
*/
|
|
4
28
|
disabled?: boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Trả về danh sách mã quyền của user hiện tại.
|
|
31
|
+
* Có thể đồng bộ hoặc bất đồng bộ.
|
|
32
|
+
*
|
|
33
|
+
* Ví dụ giá trị trả về:
|
|
34
|
+
* - `['PRODUCT_C_EMPLOYEE_VIEW', 'PRODUCT_C_EMPLOYEE_UPDATE']`
|
|
35
|
+
*/
|
|
5
36
|
loadPermissions: () => SdMaybeAsync<string[]>;
|
|
37
|
+
/**
|
|
38
|
+
* Callback xử lý khi user không có quyền truy cập URL hiện tại.
|
|
39
|
+
* Thường dùng để điều hướng sang trang forbidden hoặc hiển thị thông báo.
|
|
40
|
+
*
|
|
41
|
+
* Giữ nguyên tên `onForbiden` để tương thích API hiện tại.
|
|
42
|
+
*/
|
|
6
43
|
onForbiden?: () => void;
|
|
7
|
-
|
|
44
|
+
/**
|
|
45
|
+
* Cung cấp access token hiện tại cho các tác vụ liên quan permission.
|
|
46
|
+
* Hỗ trợ trả về đồng bộ, Promise hoặc Observable.
|
|
47
|
+
*/
|
|
48
|
+
getToken?: () => SdMaybeAsync<string | undefined | null>;
|
|
8
49
|
}
|
|
9
|
-
|
|
50
|
+
/**
|
|
51
|
+
* InjectionToken cho cấu hình permission.
|
|
52
|
+
*
|
|
53
|
+
* Ví dụ provider:
|
|
54
|
+
* {
|
|
55
|
+
* provide: SD_PERMISSION_CONFIGURATION,
|
|
56
|
+
* useValue: {
|
|
57
|
+
* disabled: false,
|
|
58
|
+
* loadPermissions: () => ['SAMPLE_C_EMPLOYEE_VIEW'],
|
|
59
|
+
* onForbiden: () => router.navigateByUrl('/layout/forbidden')
|
|
60
|
+
* }
|
|
61
|
+
* }
|
|
62
|
+
*/
|
|
63
|
+
export declare const SD_PERMISSION_CONFIGURATION: InjectionToken<ISdPermissionConfiguration | ISdPermissionConfiguration[]>;
|
|
@@ -1,12 +1,9 @@
|
|
|
1
|
-
import { TemplateRef, ViewContainerRef } from '@angular/core';
|
|
2
|
-
import { SdPermissionService } from '../services';
|
|
3
1
|
import * as i0 from "@angular/core";
|
|
4
2
|
export declare class SdPermissionDirective {
|
|
5
|
-
private
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
constructor(templateRef: TemplateRef<any>, viewContainerRef: ViewContainerRef, permissionService: SdPermissionService);
|
|
3
|
+
#private;
|
|
4
|
+
readonly sdPermission: import("@angular/core").InputSignal<string | string[] | null | undefined>;
|
|
5
|
+
readonly sdPermissionKey: import("@angular/core").InputSignal<string | undefined>;
|
|
6
|
+
constructor();
|
|
10
7
|
static ɵfac: i0.ɵɵFactoryDeclaration<SdPermissionDirective, never>;
|
|
11
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<SdPermissionDirective, "[sdPermission]", never, { "sdPermission": { "alias": "sdPermission"; "required": false; }; }, {}, never, never, true, never>;
|
|
8
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<SdPermissionDirective, "[sdPermission]", never, { "sdPermission": { "alias": "sdPermission"; "required": false; "isSignal": true; }; "sdPermissionKey": { "alias": "sdPermissionKey"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
12
9
|
}
|
|
@@ -3,9 +3,10 @@ import { ISdPermissionConfiguration } from '../configurations';
|
|
|
3
3
|
import { SdPermissionService } from '../services';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
export declare class SdPermissionGuard implements CanActivate, CanActivateChild {
|
|
6
|
+
#private;
|
|
6
7
|
private configuration;
|
|
7
8
|
private permissionService;
|
|
8
|
-
constructor(configuration: ISdPermissionConfiguration, permissionService: SdPermissionService);
|
|
9
|
+
constructor(configuration: ISdPermissionConfiguration | ISdPermissionConfiguration[], permissionService: SdPermissionService);
|
|
9
10
|
canActivate: (next: ActivatedRouteSnapshot, state: RouterStateSnapshot) => Promise<boolean>;
|
|
10
11
|
canActivateChild: (activatedRoute: ActivatedRouteSnapshot, state: RouterStateSnapshot) => Promise<boolean>;
|
|
11
12
|
static ɵfac: i0.ɵɵFactoryDeclaration<SdPermissionGuard, never>;
|
|
@@ -1,15 +1,12 @@
|
|
|
1
|
-
import { SdCacheService } from '@sd-angular/core/services/cache';
|
|
2
|
-
import { ISdPermissionConfiguration } from '../configurations';
|
|
3
1
|
import * as i0 from "@angular/core";
|
|
4
2
|
export declare class SdPermissionService {
|
|
5
3
|
#private;
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
decodeToken: <T>() => Promise<T | null>;
|
|
4
|
+
constructor();
|
|
5
|
+
loadPermissions: (key?: string) => Promise<string[]>;
|
|
6
|
+
loadAllPermissions: () => Promise<void>;
|
|
7
|
+
hasPermission: (permission: string | string[], key?: string) => boolean;
|
|
8
|
+
getToken: (key?: string) => Promise<string | null | undefined>;
|
|
9
|
+
decodeToken: <T>(key?: string) => Promise<T | null>;
|
|
13
10
|
static ɵfac: i0.ɵɵFactoryDeclaration<SdPermissionService, never>;
|
|
14
11
|
static ɵprov: i0.ɵɵInjectableDeclaration<SdPermissionService>;
|
|
15
12
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sd-angular/core",
|
|
3
|
-
"version": "19.0.0-beta.
|
|
3
|
+
"version": "19.0.0-beta.72",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"@angular/common": "^19.0.0 || ^20.0.0 || ^21.0.0",
|
|
6
6
|
"@angular/core": "^19.0.0 || ^20.0.0 || ^21.0.0",
|
|
@@ -8,9 +8,9 @@
|
|
|
8
8
|
"@angular/material-moment-adapter": "^19.0.0 || ^20.0.0 || ^21.0.0"
|
|
9
9
|
},
|
|
10
10
|
"dependencies": {
|
|
11
|
-
"@ckeditor/ckeditor5-angular": "
|
|
11
|
+
"@ckeditor/ckeditor5-angular": "11.1.2",
|
|
12
12
|
"@omer-go/docx-parser-converter-ts": "^1.0.0",
|
|
13
|
-
"ckeditor5": "
|
|
13
|
+
"ckeditor5": "48.0.0",
|
|
14
14
|
"exceljs": "^4.4.0",
|
|
15
15
|
"export-to-csv": "^1.4.0",
|
|
16
16
|
"mammoth": "^1.11.0",
|
|
@@ -46,10 +46,6 @@
|
|
|
46
46
|
"types": "./forms/index.d.ts",
|
|
47
47
|
"default": "./fesm2022/sd-angular-core-forms.mjs"
|
|
48
48
|
},
|
|
49
|
-
"./guards": {
|
|
50
|
-
"types": "./guards/index.d.ts",
|
|
51
|
-
"default": "./fesm2022/sd-angular-core-guards.mjs"
|
|
52
|
-
},
|
|
53
49
|
"./handlers": {
|
|
54
50
|
"types": "./handlers/index.d.ts",
|
|
55
51
|
"default": "./fesm2022/sd-angular-core-handlers.mjs"
|
|
@@ -86,6 +82,10 @@
|
|
|
86
82
|
"types": "./components/avatar/index.d.ts",
|
|
87
83
|
"default": "./fesm2022/sd-angular-core-components-avatar.mjs"
|
|
88
84
|
},
|
|
85
|
+
"./components/button": {
|
|
86
|
+
"types": "./components/button/index.d.ts",
|
|
87
|
+
"default": "./fesm2022/sd-angular-core-components-button.mjs"
|
|
88
|
+
},
|
|
89
89
|
"./components/base": {
|
|
90
90
|
"types": "./components/base/index.d.ts",
|
|
91
91
|
"default": "./fesm2022/sd-angular-core-components-base.mjs"
|
|
@@ -94,10 +94,6 @@
|
|
|
94
94
|
"types": "./components/badge/index.d.ts",
|
|
95
95
|
"default": "./fesm2022/sd-angular-core-components-badge.mjs"
|
|
96
96
|
},
|
|
97
|
-
"./components/button": {
|
|
98
|
-
"types": "./components/button/index.d.ts",
|
|
99
|
-
"default": "./fesm2022/sd-angular-core-components-button.mjs"
|
|
100
|
-
},
|
|
101
97
|
"./components/code-editor": {
|
|
102
98
|
"types": "./components/code-editor/index.d.ts",
|
|
103
99
|
"default": "./fesm2022/sd-angular-core-components-code-editor.mjs"
|
|
@@ -110,6 +106,10 @@
|
|
|
110
106
|
"types": "./components/history/index.d.ts",
|
|
111
107
|
"default": "./fesm2022/sd-angular-core-components-history.mjs"
|
|
112
108
|
},
|
|
109
|
+
"./components/mini-editor": {
|
|
110
|
+
"types": "./components/mini-editor/index.d.ts",
|
|
111
|
+
"default": "./fesm2022/sd-angular-core-components-mini-editor.mjs"
|
|
112
|
+
},
|
|
113
113
|
"./components/modal": {
|
|
114
114
|
"types": "./components/modal/index.d.ts",
|
|
115
115
|
"default": "./fesm2022/sd-angular-core-components-modal.mjs"
|
|
@@ -118,41 +118,45 @@
|
|
|
118
118
|
"types": "./components/import-excel/index.d.ts",
|
|
119
119
|
"default": "./fesm2022/sd-angular-core-components-import-excel.mjs"
|
|
120
120
|
},
|
|
121
|
-
"./components/mini-editor": {
|
|
122
|
-
"types": "./components/mini-editor/index.d.ts",
|
|
123
|
-
"default": "./fesm2022/sd-angular-core-components-mini-editor.mjs"
|
|
124
|
-
},
|
|
125
121
|
"./components/query-builder": {
|
|
126
122
|
"types": "./components/query-builder/index.d.ts",
|
|
127
123
|
"default": "./fesm2022/sd-angular-core-components-query-builder.mjs"
|
|
128
124
|
},
|
|
129
|
-
"./components/preview": {
|
|
130
|
-
"types": "./components/preview/index.d.ts",
|
|
131
|
-
"default": "./fesm2022/sd-angular-core-components-preview.mjs"
|
|
132
|
-
},
|
|
133
125
|
"./components/quick-action": {
|
|
134
126
|
"types": "./components/quick-action/index.d.ts",
|
|
135
127
|
"default": "./fesm2022/sd-angular-core-components-quick-action.mjs"
|
|
136
128
|
},
|
|
137
|
-
"./components/
|
|
138
|
-
"types": "./components/
|
|
139
|
-
"default": "./fesm2022/sd-angular-core-components-
|
|
129
|
+
"./components/preview": {
|
|
130
|
+
"types": "./components/preview/index.d.ts",
|
|
131
|
+
"default": "./fesm2022/sd-angular-core-components-preview.mjs"
|
|
140
132
|
},
|
|
141
133
|
"./components/side-drawer": {
|
|
142
134
|
"types": "./components/side-drawer/index.d.ts",
|
|
143
135
|
"default": "./fesm2022/sd-angular-core-components-side-drawer.mjs"
|
|
144
136
|
},
|
|
137
|
+
"./components/section": {
|
|
138
|
+
"types": "./components/section/index.d.ts",
|
|
139
|
+
"default": "./fesm2022/sd-angular-core-components-section.mjs"
|
|
140
|
+
},
|
|
145
141
|
"./components/tab-router": {
|
|
146
142
|
"types": "./components/tab-router/index.d.ts",
|
|
147
143
|
"default": "./fesm2022/sd-angular-core-components-tab-router.mjs"
|
|
148
144
|
},
|
|
145
|
+
"./components/upload-file": {
|
|
146
|
+
"types": "./components/upload-file/index.d.ts",
|
|
147
|
+
"default": "./fesm2022/sd-angular-core-components-upload-file.mjs"
|
|
148
|
+
},
|
|
149
|
+
"./components/view": {
|
|
150
|
+
"types": "./components/view/index.d.ts",
|
|
151
|
+
"default": "./fesm2022/sd-angular-core-components-view.mjs"
|
|
152
|
+
},
|
|
149
153
|
"./components/table": {
|
|
150
154
|
"types": "./components/table/index.d.ts",
|
|
151
155
|
"default": "./fesm2022/sd-angular-core-components-table.mjs"
|
|
152
156
|
},
|
|
153
|
-
"./
|
|
154
|
-
"types": "./
|
|
155
|
-
"default": "./fesm2022/sd-angular-core-
|
|
157
|
+
"./forms/checkbox": {
|
|
158
|
+
"types": "./forms/checkbox/index.d.ts",
|
|
159
|
+
"default": "./fesm2022/sd-angular-core-forms-checkbox.mjs"
|
|
156
160
|
},
|
|
157
161
|
"./components/workflow": {
|
|
158
162
|
"types": "./components/workflow/index.d.ts",
|
|
@@ -162,10 +166,6 @@
|
|
|
162
166
|
"types": "./forms/autocomplete/index.d.ts",
|
|
163
167
|
"default": "./fesm2022/sd-angular-core-forms-autocomplete.mjs"
|
|
164
168
|
},
|
|
165
|
-
"./forms/checkbox": {
|
|
166
|
-
"types": "./forms/checkbox/index.d.ts",
|
|
167
|
-
"default": "./fesm2022/sd-angular-core-forms-checkbox.mjs"
|
|
168
|
-
},
|
|
169
169
|
"./forms/chip": {
|
|
170
170
|
"types": "./forms/chip/index.d.ts",
|
|
171
171
|
"default": "./fesm2022/sd-angular-core-forms-chip.mjs"
|
|
@@ -174,10 +174,6 @@
|
|
|
174
174
|
"types": "./forms/chip-calendar/index.d.ts",
|
|
175
175
|
"default": "./fesm2022/sd-angular-core-forms-chip-calendar.mjs"
|
|
176
176
|
},
|
|
177
|
-
"./forms/date": {
|
|
178
|
-
"types": "./forms/date/index.d.ts",
|
|
179
|
-
"default": "./fesm2022/sd-angular-core-forms-date.mjs"
|
|
180
|
-
},
|
|
181
177
|
"./forms/date-range": {
|
|
182
178
|
"types": "./forms/date-range/index.d.ts",
|
|
183
179
|
"default": "./fesm2022/sd-angular-core-forms-date-range.mjs"
|
|
@@ -186,6 +182,10 @@
|
|
|
186
182
|
"types": "./forms/datetime/index.d.ts",
|
|
187
183
|
"default": "./fesm2022/sd-angular-core-forms-datetime.mjs"
|
|
188
184
|
},
|
|
185
|
+
"./forms/date": {
|
|
186
|
+
"types": "./forms/date/index.d.ts",
|
|
187
|
+
"default": "./fesm2022/sd-angular-core-forms-date.mjs"
|
|
188
|
+
},
|
|
189
189
|
"./forms/directives": {
|
|
190
190
|
"types": "./forms/directives/index.d.ts",
|
|
191
191
|
"default": "./fesm2022/sd-angular-core-forms-directives.mjs"
|
|
@@ -194,14 +194,14 @@
|
|
|
194
194
|
"types": "./forms/input/index.d.ts",
|
|
195
195
|
"default": "./fesm2022/sd-angular-core-forms-input.mjs"
|
|
196
196
|
},
|
|
197
|
-
"./forms/input-number": {
|
|
198
|
-
"types": "./forms/input-number/index.d.ts",
|
|
199
|
-
"default": "./fesm2022/sd-angular-core-forms-input-number.mjs"
|
|
200
|
-
},
|
|
201
197
|
"./forms/label": {
|
|
202
198
|
"types": "./forms/label/index.d.ts",
|
|
203
199
|
"default": "./fesm2022/sd-angular-core-forms-label.mjs"
|
|
204
200
|
},
|
|
201
|
+
"./forms/input-number": {
|
|
202
|
+
"types": "./forms/input-number/index.d.ts",
|
|
203
|
+
"default": "./fesm2022/sd-angular-core-forms-input-number.mjs"
|
|
204
|
+
},
|
|
205
205
|
"./forms/models": {
|
|
206
206
|
"types": "./forms/models/index.d.ts",
|
|
207
207
|
"default": "./fesm2022/sd-angular-core-forms-models.mjs"
|
|
@@ -222,10 +222,6 @@
|
|
|
222
222
|
"types": "./forms/textarea/index.d.ts",
|
|
223
223
|
"default": "./fesm2022/sd-angular-core-forms-textarea.mjs"
|
|
224
224
|
},
|
|
225
|
-
"./guards/permission": {
|
|
226
|
-
"types": "./guards/permission/index.d.ts",
|
|
227
|
-
"default": "./fesm2022/sd-angular-core-guards-permission.mjs"
|
|
228
|
-
},
|
|
229
225
|
"./modules/auth": {
|
|
230
226
|
"types": "./modules/auth/index.d.ts",
|
|
231
227
|
"default": "./fesm2022/sd-angular-core-modules-auth.mjs"
|
|
@@ -270,29 +266,25 @@
|
|
|
270
266
|
"types": "./services/license/index.d.ts",
|
|
271
267
|
"default": "./fesm2022/sd-angular-core-services-license.mjs"
|
|
272
268
|
},
|
|
273
|
-
"./services/loading": {
|
|
274
|
-
"types": "./services/loading/index.d.ts",
|
|
275
|
-
"default": "./fesm2022/sd-angular-core-services-loading.mjs"
|
|
276
|
-
},
|
|
277
269
|
"./services/notify": {
|
|
278
270
|
"types": "./services/notify/index.d.ts",
|
|
279
271
|
"default": "./fesm2022/sd-angular-core-services-notify.mjs"
|
|
280
272
|
},
|
|
273
|
+
"./services/loading": {
|
|
274
|
+
"types": "./services/loading/index.d.ts",
|
|
275
|
+
"default": "./fesm2022/sd-angular-core-services-loading.mjs"
|
|
276
|
+
},
|
|
281
277
|
"./services/storage": {
|
|
282
278
|
"types": "./services/storage/index.d.ts",
|
|
283
279
|
"default": "./fesm2022/sd-angular-core-services-storage.mjs"
|
|
284
280
|
},
|
|
285
|
-
"./utilities/extensions": {
|
|
286
|
-
"types": "./utilities/extensions/index.d.ts",
|
|
287
|
-
"default": "./fesm2022/sd-angular-core-utilities-extensions.mjs"
|
|
288
|
-
},
|
|
289
281
|
"./utilities/models": {
|
|
290
282
|
"types": "./utilities/models/index.d.ts",
|
|
291
283
|
"default": "./fesm2022/sd-angular-core-utilities-models.mjs"
|
|
292
284
|
},
|
|
293
|
-
"./
|
|
294
|
-
"types": "./
|
|
295
|
-
"default": "./fesm2022/sd-angular-core-
|
|
285
|
+
"./utilities/extensions": {
|
|
286
|
+
"types": "./utilities/extensions/index.d.ts",
|
|
287
|
+
"default": "./fesm2022/sd-angular-core-utilities-extensions.mjs"
|
|
296
288
|
}
|
|
297
289
|
}
|
|
298
290
|
}
|
package/public-api.d.ts
CHANGED
|
@@ -2,7 +2,6 @@ import '@sd-angular/core/configurations';
|
|
|
2
2
|
import '@sd-angular/core/utilities';
|
|
3
3
|
import '@sd-angular/core/pipes';
|
|
4
4
|
import '@sd-angular/core/directives';
|
|
5
|
-
import '@sd-angular/core/guards';
|
|
6
5
|
import '@sd-angular/core/services';
|
|
7
6
|
import '@sd-angular/core/interceptors';
|
|
8
7
|
import '@sd-angular/core/handlers';
|
|
Binary file
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectorRef, ElementRef, EventEmitter, OnDestroy, OnInit, TemplateRef } from '@angular/core';
|
|
2
|
-
import { MatBottomSheet } from '@angular/material/bottom-sheet';
|
|
3
|
-
import { MatDialog } from '@angular/material/dialog';
|
|
4
|
-
import { SdColor, SdSize } from '@sd-angular/core/utilities/models';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
export declare class SdModal implements OnInit, OnDestroy {
|
|
7
|
-
#private;
|
|
8
|
-
private ref;
|
|
9
|
-
private dialog;
|
|
10
|
-
private bottomSheet;
|
|
11
|
-
static index: number;
|
|
12
|
-
templateRef: TemplateRef<any>;
|
|
13
|
-
title?: string;
|
|
14
|
-
color: SdColor;
|
|
15
|
-
width: SdSize | string;
|
|
16
|
-
height: string;
|
|
17
|
-
view?: 'dialog' | 'bottom-sheet';
|
|
18
|
-
lazyLoadContent: boolean;
|
|
19
|
-
sdClosed: EventEmitter<any>;
|
|
20
|
-
modal: ElementRef;
|
|
21
|
-
isOpened: boolean;
|
|
22
|
-
alreadyOpened: boolean;
|
|
23
|
-
private subcription;
|
|
24
|
-
constructor(ref: ChangeDetectorRef, dialog: MatDialog, bottomSheet: MatBottomSheet);
|
|
25
|
-
ngOnInit(): void;
|
|
26
|
-
ngOnDestroy(): void;
|
|
27
|
-
open: () => void;
|
|
28
|
-
close: () => void;
|
|
29
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<SdModal, never>;
|
|
30
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<SdModal, "sd-modal", never, { "title": { "alias": "title"; "required": false; }; "color": { "alias": "color"; "required": false; }; "width": { "alias": "width"; "required": false; }; "height": { "alias": "height"; "required": false; }; "view": { "alias": "view"; "required": false; }; "lazyLoadContent": { "alias": "lazyLoadContent"; "required": false; }; }, { "sdClosed": "sdClosed"; }, never, ["[sdHeader]", "*", "[sdFooterLeft]", "[sdFooter]"], true, never>;
|
|
31
|
-
}
|
|
@@ -1,155 +0,0 @@
|
|
|
1
|
-
import * as i0 from '@angular/core';
|
|
2
|
-
import { InjectionToken, Inject, Injectable, Input, Directive } from '@angular/core';
|
|
3
|
-
import { ArrayUtilities } from '@sd-angular/core/utilities/extensions';
|
|
4
|
-
import * as i1 from '@sd-angular/core/services/cache';
|
|
5
|
-
|
|
6
|
-
const SD_PERMISSION_CONFIGURATION = new InjectionToken('sd-permission.configuration');
|
|
7
|
-
|
|
8
|
-
class SdPermissionService {
|
|
9
|
-
configuration;
|
|
10
|
-
cacheService;
|
|
11
|
-
#permission = {};
|
|
12
|
-
#permissions;
|
|
13
|
-
#loaded = false;
|
|
14
|
-
constructor(configuration, cacheService) {
|
|
15
|
-
this.configuration = configuration;
|
|
16
|
-
this.cacheService = cacheService;
|
|
17
|
-
this.#permissions = this.cacheService.create('212a51fa-38d5-43b2-bd46-922d85950ba3', {
|
|
18
|
-
type: 'session',
|
|
19
|
-
default: [],
|
|
20
|
-
});
|
|
21
|
-
}
|
|
22
|
-
loadPermissions = async () => {
|
|
23
|
-
if (!this.#loaded) {
|
|
24
|
-
const permissions = await this.configuration.loadPermissions().catch(err => {
|
|
25
|
-
console.error(err);
|
|
26
|
-
return [];
|
|
27
|
-
});
|
|
28
|
-
this.#permissions.set(ArrayUtilities.distinct(permissions));
|
|
29
|
-
// Chuyển thành Object để đảm bảo kiểm tra permisison không cần phải loop array
|
|
30
|
-
this.#permission = {};
|
|
31
|
-
permissions.forEach(permission => (this.#permission[permission] = true));
|
|
32
|
-
this.#loaded = true;
|
|
33
|
-
}
|
|
34
|
-
};
|
|
35
|
-
hasPermission = (permission) => {
|
|
36
|
-
if (!permission?.toString()) {
|
|
37
|
-
return true;
|
|
38
|
-
}
|
|
39
|
-
if (this.configuration.disabled) {
|
|
40
|
-
return true;
|
|
41
|
-
}
|
|
42
|
-
const permissions = Array.isArray(permission) ? permission : [permission];
|
|
43
|
-
return permissions.some(permission => this.#permission[permission]);
|
|
44
|
-
};
|
|
45
|
-
getToken = async () => {
|
|
46
|
-
if (!this.configuration.getToken) {
|
|
47
|
-
throw new Error('[Permission] Method getToken');
|
|
48
|
-
}
|
|
49
|
-
const token = this.configuration.getToken();
|
|
50
|
-
if (token instanceof Promise) {
|
|
51
|
-
return await token;
|
|
52
|
-
}
|
|
53
|
-
return token;
|
|
54
|
-
};
|
|
55
|
-
decodeToken = async () => {
|
|
56
|
-
const token = await this.getToken();
|
|
57
|
-
if (!token) {
|
|
58
|
-
return null;
|
|
59
|
-
}
|
|
60
|
-
try {
|
|
61
|
-
const payload = token.split('.')[1];
|
|
62
|
-
const base64 = payload.replace(/-/g, '+').replace(/_/g, '/');
|
|
63
|
-
const jsonPayload = decodeURIComponent(atob(base64)
|
|
64
|
-
.split('')
|
|
65
|
-
.map(c => '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2))
|
|
66
|
-
.join(''));
|
|
67
|
-
return JSON.parse(jsonPayload);
|
|
68
|
-
}
|
|
69
|
-
catch (error) {
|
|
70
|
-
console.error('Invalid token', error);
|
|
71
|
-
return null;
|
|
72
|
-
}
|
|
73
|
-
};
|
|
74
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: SdPermissionService, deps: [{ token: SD_PERMISSION_CONFIGURATION }, { token: i1.SdCacheService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
75
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: SdPermissionService, providedIn: 'root' });
|
|
76
|
-
}
|
|
77
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: SdPermissionService, decorators: [{
|
|
78
|
-
type: Injectable,
|
|
79
|
-
args: [{ providedIn: 'root' }]
|
|
80
|
-
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
81
|
-
type: Inject,
|
|
82
|
-
args: [SD_PERMISSION_CONFIGURATION]
|
|
83
|
-
}] }, { type: i1.SdCacheService }] });
|
|
84
|
-
|
|
85
|
-
class SdPermissionDirective {
|
|
86
|
-
templateRef;
|
|
87
|
-
viewContainerRef;
|
|
88
|
-
permissionService;
|
|
89
|
-
// Nếu là mảng thì chỉ cần có 1 permission trong mảng đó xem như có quyền
|
|
90
|
-
set sdPermission(permission) {
|
|
91
|
-
// Nếu không gắn permisison thì render
|
|
92
|
-
if (!permission?.toString()) {
|
|
93
|
-
this.viewContainerRef.createEmbeddedView(this.templateRef);
|
|
94
|
-
return;
|
|
95
|
-
}
|
|
96
|
-
// Kiểm tra permisison
|
|
97
|
-
if (this.permissionService.hasPermission(permission)) {
|
|
98
|
-
this.viewContainerRef.createEmbeddedView(this.templateRef);
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
constructor(templateRef, viewContainerRef, permissionService) {
|
|
102
|
-
this.templateRef = templateRef;
|
|
103
|
-
this.viewContainerRef = viewContainerRef;
|
|
104
|
-
this.permissionService = permissionService;
|
|
105
|
-
}
|
|
106
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: SdPermissionDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: SdPermissionService }], target: i0.ɵɵFactoryTarget.Directive });
|
|
107
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.17", type: SdPermissionDirective, isStandalone: true, selector: "[sdPermission]", inputs: { sdPermission: "sdPermission" }, ngImport: i0 });
|
|
108
|
-
}
|
|
109
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: SdPermissionDirective, decorators: [{
|
|
110
|
-
type: Directive,
|
|
111
|
-
args: [{
|
|
112
|
-
selector: '[sdPermission]',
|
|
113
|
-
}]
|
|
114
|
-
}], ctorParameters: () => [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: SdPermissionService }], propDecorators: { sdPermission: [{
|
|
115
|
-
type: Input
|
|
116
|
-
}] } });
|
|
117
|
-
|
|
118
|
-
class SdPermissionGuard {
|
|
119
|
-
configuration;
|
|
120
|
-
permissionService;
|
|
121
|
-
constructor(configuration, permissionService) {
|
|
122
|
-
this.configuration = configuration;
|
|
123
|
-
this.permissionService = permissionService;
|
|
124
|
-
}
|
|
125
|
-
canActivate = async (next, state) => {
|
|
126
|
-
// Đảm bảo permission đã được loaded
|
|
127
|
-
await this.permissionService.loadPermissions().catch(console.error);
|
|
128
|
-
return true;
|
|
129
|
-
};
|
|
130
|
-
canActivateChild = async (activatedRoute, state) => {
|
|
131
|
-
const permission = activatedRoute.data['permission'];
|
|
132
|
-
if (this.permissionService.hasPermission(permission)) {
|
|
133
|
-
return true;
|
|
134
|
-
}
|
|
135
|
-
//
|
|
136
|
-
this.configuration?.onForbiden?.();
|
|
137
|
-
return false;
|
|
138
|
-
};
|
|
139
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: SdPermissionGuard, deps: [{ token: SD_PERMISSION_CONFIGURATION }, { token: SdPermissionService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
140
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: SdPermissionGuard, providedIn: 'root' });
|
|
141
|
-
}
|
|
142
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: SdPermissionGuard, decorators: [{
|
|
143
|
-
type: Injectable,
|
|
144
|
-
args: [{ providedIn: 'root' }]
|
|
145
|
-
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
146
|
-
type: Inject,
|
|
147
|
-
args: [SD_PERMISSION_CONFIGURATION]
|
|
148
|
-
}] }, { type: SdPermissionService }] });
|
|
149
|
-
|
|
150
|
-
/**
|
|
151
|
-
* Generated bundle index. Do not edit.
|
|
152
|
-
*/
|
|
153
|
-
|
|
154
|
-
export { SD_PERMISSION_CONFIGURATION, SdPermissionDirective, SdPermissionGuard, SdPermissionService };
|
|
155
|
-
//# sourceMappingURL=sd-angular-core-guards-permission.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sd-angular-core-guards-permission.mjs","sources":["../../../projects/sd-angular/guards/permission/src/configurations/permission.configuration.ts","../../../projects/sd-angular/guards/permission/src/services/permission.service.ts","../../../projects/sd-angular/guards/permission/src/directives/permission.directive.ts","../../../projects/sd-angular/guards/permission/src/guards/permission.guard.ts","../../../projects/sd-angular/guards/permission/sd-angular-core-guards-permission.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\r\n\r\nexport interface ISdPermissionConfiguration {\r\n disabled?: boolean; // Vô hiệu việc kiểm tra permission, mục đích để test chức năng khi chưa có permisison\r\n loadPermissions: () => Promise<string[]>;\r\n onForbiden?: () => void; // Xử lý khi không có quyền truy cập vào URL\r\n getToken?: () => Promise<string | undefined | null> | string | undefined | null; // Lấy thông tin token\r\n}\r\n\r\nexport const SD_PERMISSION_CONFIGURATION = new InjectionToken<ISdPermissionConfiguration>('sd-permission.configuration');\r\n","import { Inject, Injectable } from '@angular/core';\r\nimport { SdCache, SdCacheService } from '@sd-angular/core/services/cache';\r\nimport { ArrayUtilities } from '@sd-angular/core/utilities/extensions';\r\nimport { ISdPermissionConfiguration, SD_PERMISSION_CONFIGURATION } from '../configurations';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class SdPermissionService {\r\n #permission: Record<string, boolean> = {};\r\n #permissions: SdCache<string[]>;\r\n #loaded = false;\r\n constructor(\r\n @Inject(SD_PERMISSION_CONFIGURATION) private configuration: ISdPermissionConfiguration,\r\n private cacheService: SdCacheService\r\n ) {\r\n this.#permissions = this.cacheService.create<string[]>('212a51fa-38d5-43b2-bd46-922d85950ba3', {\r\n type: 'session',\r\n default: [],\r\n });\r\n }\r\n\r\n loadPermissions = async () => {\r\n if (!this.#loaded) {\r\n const permissions: string[] = await this.configuration.loadPermissions().catch(err => {\r\n console.error(err);\r\n return [];\r\n });\r\n this.#permissions.set(ArrayUtilities.distinct(permissions));\r\n // Chuyển thành Object để đảm bảo kiểm tra permisison không cần phải loop array\r\n this.#permission = {};\r\n permissions.forEach(permission => (this.#permission[permission] = true));\r\n this.#loaded = true;\r\n }\r\n };\r\n\r\n hasPermission = (permission: string | string[]) => {\r\n if (!permission?.toString()) {\r\n return true;\r\n }\r\n if (this.configuration.disabled) {\r\n return true;\r\n }\r\n const permissions = Array.isArray(permission) ? permission : [permission];\r\n return permissions.some(permission => this.#permission[permission]);\r\n };\r\n\r\n getToken = async () => {\r\n if (!this.configuration.getToken) {\r\n throw new Error('[Permission] Method getToken');\r\n }\r\n const token = this.configuration.getToken();\r\n if (token instanceof Promise) {\r\n return await token;\r\n }\r\n return token;\r\n };\r\n\r\n decodeToken = async <T>(): Promise<T | null> => {\r\n const token = await this.getToken();\r\n if (!token) {\r\n return null;\r\n }\r\n try {\r\n const payload = token.split('.')[1];\r\n const base64 = payload.replace(/-/g, '+').replace(/_/g, '/');\r\n const jsonPayload = decodeURIComponent(\r\n atob(base64)\r\n .split('')\r\n .map(c => '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2))\r\n .join('')\r\n );\r\n return JSON.parse(jsonPayload);\r\n } catch (error) {\r\n console.error('Invalid token', error);\r\n return null;\r\n }\r\n };\r\n}\r\n","import { Directive, Input, TemplateRef, ViewContainerRef } from '@angular/core';\r\nimport { SdPermissionService } from '../services';\r\n\r\n@Directive({\r\n selector: '[sdPermission]',\r\n})\r\nexport class SdPermissionDirective {\r\n // Nếu là mảng thì chỉ cần có 1 permission trong mảng đó xem như có quyền\r\n @Input() set sdPermission(permission: string | string[] | undefined | null) {\r\n // Nếu không gắn permisison thì render\r\n if (!permission?.toString()) {\r\n this.viewContainerRef.createEmbeddedView(this.templateRef);\r\n return;\r\n }\r\n // Kiểm tra permisison\r\n if (this.permissionService.hasPermission(permission)) {\r\n this.viewContainerRef.createEmbeddedView(this.templateRef);\r\n }\r\n }\r\n\r\n constructor(\r\n private templateRef: TemplateRef<any>,\r\n private viewContainerRef: ViewContainerRef,\r\n private permissionService: SdPermissionService\r\n ) {}\r\n}\r\n","import { Inject, Injectable } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, CanActivate, CanActivateChild, RouterStateSnapshot } from '@angular/router';\r\nimport { ISdPermissionConfiguration, SD_PERMISSION_CONFIGURATION } from '../configurations';\r\nimport { SdPermissionService } from '../services';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class SdPermissionGuard implements CanActivate, CanActivateChild {\r\n constructor(\r\n @Inject(SD_PERMISSION_CONFIGURATION)\r\n private configuration: ISdPermissionConfiguration,\r\n private permissionService: SdPermissionService\r\n ) {}\r\n\r\n canActivate = async (next: ActivatedRouteSnapshot, state: RouterStateSnapshot) => {\r\n // Đảm bảo permission đã được loaded\r\n await this.permissionService.loadPermissions().catch(console.error);\r\n return true;\r\n };\r\n\r\n canActivateChild = async (activatedRoute: ActivatedRouteSnapshot, state: RouterStateSnapshot) => {\r\n const permission = activatedRoute.data['permission'];\r\n if (this.permissionService.hasPermission(permission)) {\r\n return true;\r\n }\r\n //\r\n this.configuration?.onForbiden?.();\r\n return false;\r\n };\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.SdPermissionService"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sd-angular-core-guards.mjs","sources":["../../../projects/sd-angular/guards/sd-angular-core-guards.ts"],"sourcesContent":["/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;AAAA;;AAEG"}
|
package/guards/index.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@sd-angular/core/guards/permission';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './permission.configuration';
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { InjectionToken } from '@angular/core';
|
|
2
|
-
export interface ISdPermissionConfiguration {
|
|
3
|
-
disabled?: boolean;
|
|
4
|
-
loadPermissions: () => Promise<string[]>;
|
|
5
|
-
onForbiden?: () => void;
|
|
6
|
-
getToken?: () => Promise<string | undefined | null> | string | undefined | null;
|
|
7
|
-
}
|
|
8
|
-
export declare const SD_PERMISSION_CONFIGURATION: InjectionToken<ISdPermissionConfiguration>;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './permission.directive';
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { TemplateRef, ViewContainerRef } from '@angular/core';
|
|
2
|
-
import { SdPermissionService } from '../services';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export declare class SdPermissionDirective {
|
|
5
|
-
private templateRef;
|
|
6
|
-
private viewContainerRef;
|
|
7
|
-
private permissionService;
|
|
8
|
-
set sdPermission(permission: string | string[] | undefined | null);
|
|
9
|
-
constructor(templateRef: TemplateRef<any>, viewContainerRef: ViewContainerRef, permissionService: SdPermissionService);
|
|
10
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<SdPermissionDirective, never>;
|
|
11
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<SdPermissionDirective, "[sdPermission]", never, { "sdPermission": { "alias": "sdPermission"; "required": false; }; }, {}, never, never, true, never>;
|
|
12
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './permission.guard';
|