@sdcorejs/angular 20.1.5 → 20.2.0
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/README.md +12 -4
- package/assets/scss/core/menu.scss +18 -0
- package/assets/scss/core/utilities/_misc.scss +15 -0
- package/assets/scss/sd-core.scss +1 -0
- package/components/anchor/index.d.ts +3 -1
- package/components/badge/index.d.ts +1 -0
- package/components/ckeditor-styles/index.d.ts +1 -1
- package/components/form-generic/index.d.ts +44 -33
- package/components/import-excel/index.d.ts +1 -0
- package/components/index.d.ts +6 -1
- package/components/mini-editor/index.d.ts +1 -1
- package/components/modal/index.d.ts +3 -2
- package/components/modal-resizable/index.d.ts +92 -0
- package/components/org-chart/index.d.ts +6 -0
- package/components/preview/index.d.ts +1 -0
- package/components/query-bar/index.d.ts +55 -17
- package/components/query-builder/index.d.ts +150 -98
- package/components/section/index.d.ts +3 -0
- package/components/tab-router/index.d.ts +19 -19
- package/components/table/index.d.ts +252 -110
- package/components/tree/index.d.ts +48 -30
- package/components/upload-file/index.d.ts +6 -3
- package/configurations/index.d.ts +1 -2
- package/fesm2022/sdcorejs-angular-components-anchor.mjs +37 -13
- package/fesm2022/sdcorejs-angular-components-anchor.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-autoid-inspector.mjs +2 -2
- package/fesm2022/sdcorejs-angular-components-autoid-inspector.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-badge.mjs +15 -2
- package/fesm2022/sdcorejs-angular-components-badge.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-button.mjs +2 -2
- package/fesm2022/sdcorejs-angular-components-button.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-ckeditor-styles.mjs +1 -1
- package/fesm2022/sdcorejs-angular-components-ckeditor-styles.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-code-editor.mjs +3 -3
- package/fesm2022/sdcorejs-angular-components-code-editor.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-data-state.mjs +3 -3
- package/fesm2022/sdcorejs-angular-components-data-state.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-editor.mjs +2 -2
- package/fesm2022/sdcorejs-angular-components-editor.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-form-generic.mjs +324 -192
- package/fesm2022/sdcorejs-angular-components-form-generic.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-history.mjs +4 -4
- package/fesm2022/sdcorejs-angular-components-history.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-import-excel.mjs +13 -5
- package/fesm2022/sdcorejs-angular-components-import-excel.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-inform.mjs +3 -3
- package/fesm2022/sdcorejs-angular-components-inform.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-modal-resizable.mjs +164 -8
- package/fesm2022/sdcorejs-angular-components-modal-resizable.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-modal.mjs +30 -18
- package/fesm2022/sdcorejs-angular-components-modal.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-org-chart.mjs +60 -13
- package/fesm2022/sdcorejs-angular-components-org-chart.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-preview.mjs +58 -19
- package/fesm2022/sdcorejs-angular-components-preview.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-query-bar.mjs +192 -30
- package/fesm2022/sdcorejs-angular-components-query-bar.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-query-builder.mjs +187 -127
- package/fesm2022/sdcorejs-angular-components-query-builder.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-section.mjs +16 -2
- package/fesm2022/sdcorejs-angular-components-section.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-side-drawer.mjs +83 -24
- package/fesm2022/sdcorejs-angular-components-side-drawer.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-splitter.mjs +57 -21
- package/fesm2022/sdcorejs-angular-components-splitter.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-stepper.mjs +2 -2
- package/fesm2022/sdcorejs-angular-components-stepper.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-tab-router.mjs +68 -20
- package/fesm2022/sdcorejs-angular-components-tab-router.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-tab.mjs +3 -2
- package/fesm2022/sdcorejs-angular-components-tab.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-table.mjs +557 -255
- package/fesm2022/sdcorejs-angular-components-table.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-tree.mjs +80 -17
- package/fesm2022/sdcorejs-angular-components-tree.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-upload-file.mjs +48 -13
- package/fesm2022/sdcorejs-angular-components-upload-file.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components.mjs +6 -1
- package/fesm2022/sdcorejs-angular-components.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-configurations.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-directives.mjs +45 -8
- package/fesm2022/sdcorejs-angular-directives.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-autocomplete.mjs +40 -29
- package/fesm2022/sdcorejs-angular-forms-autocomplete.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-checkbox.mjs +5 -5
- package/fesm2022/sdcorejs-angular-forms-checkbox.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-chip-calendar.mjs +67 -50
- package/fesm2022/sdcorejs-angular-forms-chip-calendar.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-chip.mjs +57 -43
- package/fesm2022/sdcorejs-angular-forms-chip.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-date-range.mjs +234 -64
- package/fesm2022/sdcorejs-angular-forms-date-range.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-date.mjs +209 -42
- package/fesm2022/sdcorejs-angular-forms-date.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-datetime.mjs +131 -27
- package/fesm2022/sdcorejs-angular-forms-datetime.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-entity-picker.mjs +40 -16
- package/fesm2022/sdcorejs-angular-forms-entity-picker.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-input-color.mjs +16 -5
- package/fesm2022/sdcorejs-angular-forms-input-color.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-input-number.mjs +24 -9
- package/fesm2022/sdcorejs-angular-forms-input-number.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-input.mjs +58 -10
- package/fesm2022/sdcorejs-angular-forms-input.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-models.mjs +279 -6
- package/fesm2022/sdcorejs-angular-forms-models.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-radio.mjs +4 -4
- package/fesm2022/sdcorejs-angular-forms-radio.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-select.mjs +136 -38
- package/fesm2022/sdcorejs-angular-forms-select.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-switch.mjs +18 -3
- package/fesm2022/sdcorejs-angular-forms-switch.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-textarea.mjs +51 -62
- package/fesm2022/sdcorejs-angular-forms-textarea.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-time-range.mjs +57 -12
- package/fesm2022/sdcorejs-angular-forms-time-range.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-time.mjs +16 -5
- package/fesm2022/sdcorejs-angular-forms-time.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-tree-select.mjs +100 -9
- package/fesm2022/sdcorejs-angular-forms-tree-select.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms.mjs +91 -46
- package/fesm2022/sdcorejs-angular-forms.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-handlers.mjs +18 -3
- package/fesm2022/sdcorejs-angular-handlers.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-i18n.mjs +510 -68
- package/fesm2022/sdcorejs-angular-i18n.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-interceptors.mjs +87 -29
- package/fesm2022/sdcorejs-angular-interceptors.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-modules-auth.mjs +25 -15
- package/fesm2022/sdcorejs-angular-modules-auth.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-modules-icon.mjs +2 -2
- package/fesm2022/sdcorejs-angular-modules-icon.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-modules-keycloak.mjs +32 -3
- package/fesm2022/sdcorejs-angular-modules-keycloak.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-modules-layout.mjs +441 -135
- package/fesm2022/sdcorejs-angular-modules-layout.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-modules-permission.mjs +177 -40
- package/fesm2022/sdcorejs-angular-modules-permission.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-pipes.mjs +62 -28
- package/fesm2022/sdcorejs-angular-pipes.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-services-api.mjs +123 -13
- package/fesm2022/sdcorejs-angular-services-api.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-services-cache.mjs +53 -3
- package/fesm2022/sdcorejs-angular-services-cache.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-services-confirm.mjs +25 -73
- package/fesm2022/sdcorejs-angular-services-confirm.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-services-excel.mjs +12 -10
- package/fesm2022/sdcorejs-angular-services-excel.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-services-loading.mjs +75 -84
- package/fesm2022/sdcorejs-angular-services-loading.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-services-notify.mjs +46 -5
- package/fesm2022/sdcorejs-angular-services-notify.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-services-storage.mjs +4 -0
- package/fesm2022/sdcorejs-angular-services-storage.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-services.mjs +0 -1
- package/fesm2022/sdcorejs-angular-services.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-utilities-extensions.mjs +225 -80
- package/fesm2022/sdcorejs-angular-utilities-extensions.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-utilities-models.mjs +1 -63
- package/fesm2022/sdcorejs-angular-utilities-models.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular.mjs +17 -10
- package/fesm2022/sdcorejs-angular.mjs.map +1 -1
- package/forms/autocomplete/index.d.ts +5 -2
- package/forms/chip-calendar/index.d.ts +10 -0
- package/forms/date/index.d.ts +21 -3
- package/forms/date-range/index.d.ts +14 -2
- package/forms/datetime/index.d.ts +13 -2
- package/forms/entity-picker/index.d.ts +9 -3
- package/forms/index.d.ts +22 -13
- package/forms/input/index.d.ts +3 -0
- package/forms/input-color/index.d.ts +4 -0
- package/forms/input-number/index.d.ts +3 -0
- package/forms/models/index.d.ts +146 -5
- package/forms/select/index.d.ts +27 -4
- package/forms/switch/index.d.ts +7 -1
- package/forms/textarea/index.d.ts +5 -3
- package/forms/time-range/index.d.ts +22 -1
- package/forms/tree-select/index.d.ts +36 -5
- package/i18n/index.d.ts +99 -16
- package/index.d.ts +11 -2
- package/interceptors/index.d.ts +13 -3
- package/modules/auth/index.d.ts +1 -1
- package/modules/keycloak/index.d.ts +1 -0
- package/modules/layout/index.d.ts +103 -28
- package/modules/permission/index.d.ts +66 -4
- package/package.json +40 -25
- package/pipes/index.d.ts +27 -5
- package/services/api/index.d.ts +21 -1
- package/services/cache/index.d.ts +11 -1
- package/services/index.d.ts +0 -1
- package/services/notify/index.d.ts +1 -1
- package/utilities/extensions/index.d.ts +83 -61
- package/utilities/models/index.d.ts +2 -76
- package/components/base/index.d.ts +0 -11
- package/components/document-builder/index.d.ts +0 -252
- package/fesm2022/sdcorejs-angular-components-base.mjs +0 -23
- package/fesm2022/sdcorejs-angular-components-base.mjs.map +0 -1
- package/fesm2022/sdcorejs-angular-components-document-builder.mjs +0 -5038
- package/fesm2022/sdcorejs-angular-components-document-builder.mjs.map +0 -1
- package/fesm2022/sdcorejs-angular-models.mjs +0 -6
- package/fesm2022/sdcorejs-angular-models.mjs.map +0 -1
- package/fesm2022/sdcorejs-angular-services-docx.mjs +0 -291
- package/fesm2022/sdcorejs-angular-services-docx.mjs.map +0 -1
- package/fesm2022/sdcorejs-angular-services-license.mjs +0 -97
- package/fesm2022/sdcorejs-angular-services-license.mjs.map +0 -1
- package/models/index.d.ts +0 -2
- package/services/docx/index.d.ts +0 -27
- package/services/license/index.d.ts +0 -12
package/package.json
CHANGED
|
@@ -1,20 +1,49 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sdcorejs/angular",
|
|
3
|
-
"version": "20.
|
|
3
|
+
"version": "20.2.0",
|
|
4
|
+
"description": "Angular component library: data table, query bar/builder, 20+ signal-based form controls, layout, auth and workflow services. Standalone, OnPush, signals-first. Published in parallel lines for Angular 19, 20 and 21.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"angular",
|
|
7
|
+
"angular-components",
|
|
8
|
+
"component-library",
|
|
9
|
+
"ui-components",
|
|
10
|
+
"angular-material",
|
|
11
|
+
"signals",
|
|
12
|
+
"standalone-components",
|
|
13
|
+
"data-table",
|
|
14
|
+
"forms",
|
|
15
|
+
"query-builder"
|
|
16
|
+
],
|
|
17
|
+
"author": "SDCoreJS",
|
|
4
18
|
"license": "MIT",
|
|
19
|
+
"engines": {
|
|
20
|
+
"node": ">=20.11.0"
|
|
21
|
+
},
|
|
22
|
+
"repository": {
|
|
23
|
+
"type": "git",
|
|
24
|
+
"url": "git+https://github.com/sdcorejs/sdcorejs-angular.git"
|
|
25
|
+
},
|
|
26
|
+
"homepage": "https://sdcorejs.github.io/sdcorejs-angular/",
|
|
27
|
+
"bugs": {
|
|
28
|
+
"url": "https://github.com/sdcorejs/sdcorejs-angular/issues"
|
|
29
|
+
},
|
|
5
30
|
"peerDependencies": {
|
|
31
|
+
"@angular/animations": "^19.0.0 || ^20.0.0 || ^21.0.0",
|
|
32
|
+
"@angular/cdk": "^19.0.0 || ^20.0.0 || ^21.0.0",
|
|
6
33
|
"@angular/common": "^19.0.0 || ^20.0.0 || ^21.0.0",
|
|
7
34
|
"@angular/core": "^19.0.0 || ^20.0.0 || ^21.0.0",
|
|
35
|
+
"@angular/forms": "^19.0.0 || ^20.0.0 || ^21.0.0",
|
|
8
36
|
"@angular/material": "^19.0.0 || ^20.0.0 || ^21.0.0",
|
|
9
|
-
"@angular/material-date-fns-adapter": "^19.0.0 || ^20.0.0 || ^21.0.0"
|
|
37
|
+
"@angular/material-date-fns-adapter": "^19.0.0 || ^20.0.0 || ^21.0.0",
|
|
38
|
+
"@angular/platform-browser": "^19.0.0 || ^20.0.0 || ^21.0.0",
|
|
39
|
+
"@angular/router": "^19.0.0 || ^20.0.0 || ^21.0.0",
|
|
40
|
+
"rxjs": "^7.8.0"
|
|
10
41
|
},
|
|
11
42
|
"dependencies": {
|
|
12
43
|
"@sdcorejs/angular-material-datetime": "1.0.3",
|
|
13
44
|
"@sdcorejs/utils": "1.1.4",
|
|
14
45
|
"@lucide/angular": "^1.22.0",
|
|
15
46
|
"@ckeditor/ckeditor5-angular": "11.1.2",
|
|
16
|
-
"@omer-go/docx-parser-converter-ts": "^1.0.0",
|
|
17
|
-
"@bjorn3/browser_wasi_shim": "^0.4.2",
|
|
18
47
|
"ckeditor5": "48.0.0",
|
|
19
48
|
"chart.js": "^4.5.1",
|
|
20
49
|
"date-fns": "^3.6.0",
|
|
@@ -24,7 +53,13 @@
|
|
|
24
53
|
"prismjs": "^1.30.0",
|
|
25
54
|
"tslib": "^2.8.0"
|
|
26
55
|
},
|
|
27
|
-
"sideEffects":
|
|
56
|
+
"sideEffects": [
|
|
57
|
+
"**/*.css",
|
|
58
|
+
"**/*.scss",
|
|
59
|
+
"./fesm2022/sdcorejs-angular-components-chart.mjs",
|
|
60
|
+
"./fesm2022/sdcorejs-angular-components-code-editor.mjs",
|
|
61
|
+
"./fesm2022/sdcorejs-angular-components-ckeditor-styles.mjs"
|
|
62
|
+
],
|
|
28
63
|
"module": "fesm2022/sdcorejs-angular.mjs",
|
|
29
64
|
"typings": "index.d.ts",
|
|
30
65
|
"exports": {
|
|
@@ -59,10 +94,6 @@
|
|
|
59
94
|
"types": "./components/badge/index.d.ts",
|
|
60
95
|
"default": "./fesm2022/sdcorejs-angular-components-badge.mjs"
|
|
61
96
|
},
|
|
62
|
-
"./components/base": {
|
|
63
|
-
"types": "./components/base/index.d.ts",
|
|
64
|
-
"default": "./fesm2022/sdcorejs-angular-components-base.mjs"
|
|
65
|
-
},
|
|
66
97
|
"./components/breadcrumb": {
|
|
67
98
|
"types": "./components/breadcrumb/index.d.ts",
|
|
68
99
|
"default": "./fesm2022/sdcorejs-angular-components-breadcrumb.mjs"
|
|
@@ -87,10 +118,6 @@
|
|
|
87
118
|
"types": "./components/data-state/index.d.ts",
|
|
88
119
|
"default": "./fesm2022/sdcorejs-angular-components-data-state.mjs"
|
|
89
120
|
},
|
|
90
|
-
"./components/document-builder": {
|
|
91
|
-
"types": "./components/document-builder/index.d.ts",
|
|
92
|
-
"default": "./fesm2022/sdcorejs-angular-components-document-builder.mjs"
|
|
93
|
-
},
|
|
94
121
|
"./components/editor": {
|
|
95
122
|
"types": "./components/editor/index.d.ts",
|
|
96
123
|
"default": "./fesm2022/sdcorejs-angular-components-editor.mjs"
|
|
@@ -303,10 +330,6 @@
|
|
|
303
330
|
"types": "./interceptors/index.d.ts",
|
|
304
331
|
"default": "./fesm2022/sdcorejs-angular-interceptors.mjs"
|
|
305
332
|
},
|
|
306
|
-
"./models": {
|
|
307
|
-
"types": "./models/index.d.ts",
|
|
308
|
-
"default": "./fesm2022/sdcorejs-angular-models.mjs"
|
|
309
|
-
},
|
|
310
333
|
"./modules": {
|
|
311
334
|
"types": "./modules/index.d.ts",
|
|
312
335
|
"default": "./fesm2022/sdcorejs-angular-modules.mjs"
|
|
@@ -351,18 +374,10 @@
|
|
|
351
374
|
"types": "./services/confirm/index.d.ts",
|
|
352
375
|
"default": "./fesm2022/sdcorejs-angular-services-confirm.mjs"
|
|
353
376
|
},
|
|
354
|
-
"./services/docx": {
|
|
355
|
-
"types": "./services/docx/index.d.ts",
|
|
356
|
-
"default": "./fesm2022/sdcorejs-angular-services-docx.mjs"
|
|
357
|
-
},
|
|
358
377
|
"./services/excel": {
|
|
359
378
|
"types": "./services/excel/index.d.ts",
|
|
360
379
|
"default": "./fesm2022/sdcorejs-angular-services-excel.mjs"
|
|
361
380
|
},
|
|
362
|
-
"./services/license": {
|
|
363
|
-
"types": "./services/license/index.d.ts",
|
|
364
|
-
"default": "./fesm2022/sdcorejs-angular-services-license.mjs"
|
|
365
|
-
},
|
|
366
381
|
"./services/loading": {
|
|
367
382
|
"types": "./services/loading/index.d.ts",
|
|
368
383
|
"default": "./fesm2022/sdcorejs-angular-services-loading.mjs"
|
package/pipes/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { PipeTransform } from '@angular/core';
|
|
3
|
-
import
|
|
3
|
+
import { SafeHtml } from '@angular/platform-browser';
|
|
4
4
|
import { Observable } from 'rxjs';
|
|
5
5
|
|
|
6
6
|
declare class SdFormatDatePipe implements PipeTransform {
|
|
@@ -25,17 +25,39 @@ declare class SdFormatNumberPipe implements PipeTransform {
|
|
|
25
25
|
static ɵprov: i0.ɵɵInjectableDeclaration<SdFormatNumberPipe>;
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
+
/**
|
|
29
|
+
* Render an HTML string through `[innerHTML]`.
|
|
30
|
+
*
|
|
31
|
+
* why: this pipe used to call `bypassSecurityTrustHtml()` unconditionally, on every value, with no
|
|
32
|
+
* sanitize step. That turned every call site into a stored-XSS sink — and the library itself pipes
|
|
33
|
+
* server-supplied table cell data through it
|
|
34
|
+
* (`components/table/src/components/desktop-cell/view/view.component.html`), while
|
|
35
|
+
* `components/table/sd-table.md` already described the value as "sanitized via sdSafeHtml".
|
|
36
|
+
*
|
|
37
|
+
* Now it **sanitizes by default** and the bypass is an explicit, per-call-site opt-in:
|
|
38
|
+
*
|
|
39
|
+
* ```html
|
|
40
|
+
* <!-- untrusted / server-supplied: script, on* handlers and javascript: urls are stripped -->
|
|
41
|
+
* <div [innerHTML]="row.note | sdSafeHtml"></div>
|
|
42
|
+
*
|
|
43
|
+
* <!-- app-authored markup you control, e.g. an inline SVG sprite -->
|
|
44
|
+
* <span [innerHTML]="iconSvg | sdSafeHtml: true"></span>
|
|
45
|
+
* ```
|
|
46
|
+
*
|
|
47
|
+
* This mirrors the decision already taken for the toast in `services/notify`: text-safe by default,
|
|
48
|
+
* opt-in HTML. Auto-detecting "this looks like HTML" is deliberately NOT done — it would escalate
|
|
49
|
+
* untrusted text that merely contains `<` straight back into the unsanitized sink.
|
|
50
|
+
*/
|
|
28
51
|
declare class SdSafeHtmlPipe implements PipeTransform {
|
|
29
|
-
private
|
|
30
|
-
|
|
31
|
-
constructor(...args: unknown[]);
|
|
32
|
-
transform(html: string | number | undefined | null): _angular_platform_browser.SafeHtml | undefined;
|
|
52
|
+
#private;
|
|
53
|
+
transform(html: string | number | undefined | null, trusted?: boolean): SafeHtml | string | number | undefined;
|
|
33
54
|
static ɵfac: i0.ɵɵFactoryDeclaration<SdSafeHtmlPipe, never>;
|
|
34
55
|
static ɵpipe: i0.ɵɵPipeDeclaration<SdSafeHtmlPipe, "sdSafeHtml", true>;
|
|
35
56
|
static ɵprov: i0.ɵɵInjectableDeclaration<SdSafeHtmlPipe>;
|
|
36
57
|
}
|
|
37
58
|
|
|
38
59
|
declare class SdTimeDifferentPipe implements PipeTransform {
|
|
60
|
+
#private;
|
|
39
61
|
private maxSecond;
|
|
40
62
|
private maxMinute;
|
|
41
63
|
private maxHour;
|
package/services/api/index.d.ts
CHANGED
|
@@ -75,6 +75,20 @@ interface ISdApiConfiguration {
|
|
|
75
75
|
declare const SD_API_CONFIG: InjectionToken<ISdApiConfiguration>;
|
|
76
76
|
/** @deprecated Use `SD_API_CONFIG`. This is the same injection token. */
|
|
77
77
|
declare const SD_API_CONFIGURATION: InjectionToken<ISdApiConfiguration>;
|
|
78
|
+
/**
|
|
79
|
+
* Lỗi nghiệp vụ: HTTP 200 nhưng body envelope báo thất bại (`{ ok: false, ... }`).
|
|
80
|
+
*
|
|
81
|
+
* why: trước đây `SdApiService` `throw body` — một plain object. Hệ quả: `error instanceof Error`
|
|
82
|
+
* là `false`, `error.message` là `undefined`, nên mọi `catch` của consumer và predicate
|
|
83
|
+
* `retry.retryWhen` đều bỏ sót nhánh này. Bọc vào một Error thật để envelope lỗi đi chung
|
|
84
|
+
* đường với lỗi HTTP; body gốc vẫn giữ nguyên ở `.body`.
|
|
85
|
+
*/
|
|
86
|
+
declare class SdApiError<TBody = unknown> extends Error {
|
|
87
|
+
readonly name = "SdApiError";
|
|
88
|
+
/** Body nguyên bản của response (đúng object server trả về). */
|
|
89
|
+
readonly body: TBody;
|
|
90
|
+
constructor(body: TBody, message?: string);
|
|
91
|
+
}
|
|
78
92
|
|
|
79
93
|
/**
|
|
80
94
|
* Response generics intentionally default to `unknown` for type safety.
|
|
@@ -105,11 +119,17 @@ declare class SdHttpInterceptor implements HttpInterceptor {
|
|
|
105
119
|
static ɵprov: i0.ɵɵInjectableDeclaration<SdHttpInterceptor>;
|
|
106
120
|
}
|
|
107
121
|
|
|
122
|
+
/**
|
|
123
|
+
* Thông điệp của assertion dev-mode ở constructor. Export ra để spec khẳng định đúng nội dung,
|
|
124
|
+
* và để consumer grep được khi thấy nó trong console.
|
|
125
|
+
*/
|
|
126
|
+
declare const SD_API_MISSING_HTTP_CLIENT_MESSAGE: string;
|
|
108
127
|
declare class SdApiModule {
|
|
128
|
+
constructor();
|
|
109
129
|
static ɵfac: i0.ɵɵFactoryDeclaration<SdApiModule, never>;
|
|
110
130
|
static ɵmod: i0.ɵɵNgModuleDeclaration<SdApiModule, never, never, never>;
|
|
111
131
|
static ɵinj: i0.ɵɵInjectorDeclaration<SdApiModule>;
|
|
112
132
|
}
|
|
113
133
|
|
|
114
|
-
export { SD_API_CONFIG, SD_API_CONFIGURATION, SdApiModule, SdApiService, SdHttpInterceptor };
|
|
134
|
+
export { SD_API_CONFIG, SD_API_CONFIGURATION, SD_API_MISSING_HTTP_CLIENT_MESSAGE, SdApiError, SdApiModule, SdApiService, SdHttpInterceptor };
|
|
115
135
|
export type { ISdApiConfiguration, SdApiHandler, SdApiHttpOption, SdApiOption, SdApiRequestUpdate, SdApiResponseType, SdApiRetryOption, SdDeleteOption, SdGetOption, SdPatchOption, SdPostOption, SdPutOption };
|
|
@@ -43,12 +43,22 @@ interface SdCacheStoredValue<T = unknown> {
|
|
|
43
43
|
type SdCacheSetCallback = (key: string, value: SdCacheStoredValue<unknown>, option?: SdCacheOption<unknown>) => Promise<void> | void;
|
|
44
44
|
type SdCacheGetCallback = (key: string, option?: SdCacheOption<unknown>) => Promise<SdCacheStoredValue<unknown> | undefined>;
|
|
45
45
|
type SdCacheRemoveCallback = (key: string, option?: SdCacheOption<unknown>) => Promise<void> | void;
|
|
46
|
+
/**
|
|
47
|
+
* Số entry `type: 'memory'` tối đa được giữ trước khi LRU đẩy entry cũ nhất ra.
|
|
48
|
+
* Ghi đè bằng `maxMemoryEntries` trên `SD_CACHE_CONFIG`.
|
|
49
|
+
*/
|
|
50
|
+
declare const SD_CACHE_DEFAULT_MAX_MEMORY_ENTRIES = 500;
|
|
46
51
|
interface ISdCacheConfiguration {
|
|
47
52
|
convertKey?: (key: string) => string;
|
|
48
53
|
namespace?: string;
|
|
49
54
|
version?: string | number;
|
|
50
55
|
serializer?: SdPersistenceSerializer;
|
|
51
56
|
identityCanonicalizer?: SdPersistenceIdentityCanonicalizer;
|
|
57
|
+
/**
|
|
58
|
+
* Trần LRU cho cache `type: 'memory'`. Mặc định `SD_CACHE_DEFAULT_MAX_MEMORY_ENTRIES` (500).
|
|
59
|
+
* Giá trị không hợp lệ (không hữu hạn, < 1) sẽ rơi về mặc định.
|
|
60
|
+
*/
|
|
61
|
+
maxMemoryEntries?: number;
|
|
52
62
|
set?: SdCacheSetCallback;
|
|
53
63
|
get?: SdCacheGetCallback;
|
|
54
64
|
remove?: SdCacheRemoveCallback;
|
|
@@ -75,5 +85,5 @@ declare class SdCacheService {
|
|
|
75
85
|
static ɵprov: i0.ɵɵInjectableDeclaration<SdCacheService>;
|
|
76
86
|
}
|
|
77
87
|
|
|
78
|
-
export { SD_CACHE_CONFIG, SdCacheService, adaptLegacySdCacheCallbacks };
|
|
88
|
+
export { SD_CACHE_CONFIG, SD_CACHE_DEFAULT_MAX_MEMORY_ENTRIES, SdCacheService, adaptLegacySdCacheCallbacks };
|
|
79
89
|
export type { ISdCacheConfiguration, SdCache, SdCacheGetCallback, SdCacheOption, SdCacheRemoveCallback, SdCacheSetCallback, SdCacheSnapshot, SdCacheStoredValue, SdCacheWithDefault, SdLegacyCacheCallbacks };
|
package/services/index.d.ts
CHANGED
|
@@ -6,7 +6,6 @@ export * from '@sdcorejs/angular/services/confirm';
|
|
|
6
6
|
export * from '@sdcorejs/angular/services/api';
|
|
7
7
|
export * from '@sdcorejs/angular/services/loading';
|
|
8
8
|
export * from '@sdcorejs/angular/services/excel';
|
|
9
|
-
export * from '@sdcorejs/angular/services/docx';
|
|
10
9
|
export * from '@sdcorejs/angular/services/viewport';
|
|
11
10
|
export * from '@sdcorejs/angular/services/unsaved-changes';
|
|
12
11
|
export * from '@sdcorejs/angular/services/task';
|
|
@@ -1,58 +1,12 @@
|
|
|
1
|
-
export { ArrayUtilities, BrowserUtilities, ColorUtilities, DateUtilities, NumberUtilities, Utilities, ValidationUtilities } from '@sdcorejs/utils/fns';
|
|
2
|
-
|
|
3
|
-
declare const StringUtilities: {
|
|
4
|
-
/** @deprecated Use REGEX_VN_PHONE instead */
|
|
5
|
-
REGEX_PHONE_VN: string;
|
|
6
|
-
/** @deprecated Use REGEX_VN_ID instead */
|
|
7
|
-
REGEX_IDVN: string;
|
|
8
|
-
/** @deprecated Use REGEX_VN_ID_OR_PASSPORT instead */
|
|
9
|
-
REGEX_IDVN_OR_PASSPORT: string;
|
|
10
|
-
/** @deprecated Use {@link ValidationUtilities.isEmail} instead */
|
|
11
|
-
isValidEmail: (value: any) => boolean;
|
|
12
|
-
/** @deprecated Use {@link ValidationUtilities.isPhone} instead */
|
|
13
|
-
isValidPhone: (value: any) => boolean;
|
|
14
|
-
/** @deprecated Use {@link ValidationUtilities.isCode} instead */
|
|
15
|
-
isValidCode: (value: any) => boolean;
|
|
16
|
-
REGEX_EMAIL: string;
|
|
17
|
-
REGEX_PHONE: string;
|
|
18
|
-
REGEX_VN_PHONE: string;
|
|
19
|
-
REGEX_VN_ID: string;
|
|
20
|
-
REGEX_PASSPORT: string;
|
|
21
|
-
REGEX_VN_ID_OR_PASSPORT: string;
|
|
22
|
-
REGEX_TIME: string;
|
|
23
|
-
REGEX_URL: string;
|
|
24
|
-
REGEX_DOMAIN: string;
|
|
25
|
-
REGEX_IPV4: string;
|
|
26
|
-
REGEX_IPV6: string;
|
|
27
|
-
REGEX_IMAGE_URL: string;
|
|
28
|
-
REGEX_SLUG: string;
|
|
29
|
-
REGEX_NUMBER: string;
|
|
30
|
-
REGEX_INTEGER: string;
|
|
31
|
-
REGEX_DECIMAL: string;
|
|
32
|
-
REGEX_POSITIVE_NUMBER: string;
|
|
33
|
-
REGEX_UUID: string;
|
|
34
|
-
REGEX_CODE_16: string;
|
|
35
|
-
REGEX_CODE_32: string;
|
|
36
|
-
REGEX_HEX_COLOR: string;
|
|
37
|
-
REGEX_BASE64: string;
|
|
38
|
-
changeAliasLowerCase: (alias: any) => string;
|
|
39
|
-
aliasIncludes: (alias: any, searchText: any) => boolean;
|
|
40
|
-
format: (template: string, ...arr: any[]) => string;
|
|
41
|
-
templateToDisplay: (template: string, entity: Record<string, any>) => string;
|
|
42
|
-
parseExpression: (template: string, entity: Record<string, any>) => any;
|
|
43
|
-
encrypt: (obj: any) => string;
|
|
44
|
-
decrypt: (encripted: string) => any;
|
|
45
|
-
isNullOrEmpty: (value: any) => boolean;
|
|
46
|
-
isNullOrWhiteSpace: (value: any) => boolean;
|
|
47
|
-
convertToSnakeCaseCode: (name: string) => string;
|
|
48
|
-
generateUniqueCode: (name: string, existingCodes: string[]) => string;
|
|
49
|
-
sha256: (input: string) => Promise<string>;
|
|
50
|
-
};
|
|
51
|
-
|
|
52
1
|
/**
|
|
53
|
-
*
|
|
54
|
-
*
|
|
55
|
-
*
|
|
2
|
+
* Facade tiện ích chung của `@sdcorejs/angular` (upload/download, clipboard, paging, hash, uuid…).
|
|
3
|
+
*
|
|
4
|
+
* why: khối này TỪNG bị đánh dấu `@deprecated` như thể chỉ là alias mỏng của `Utilities` /
|
|
5
|
+
* `BrowserUtilities` bên `@sdcorejs/utils/fns` — điều đó SAI. Cả 14 member dưới đây là cài đặt
|
|
6
|
+
* cục bộ trong chính file này (xem phần trên), có hành vi riêng cho môi trường Angular (interceptor,
|
|
7
|
+
* i18n, DOM). Xoá nó theo diện "dead alias" sẽ mất code thật, nên marker `@deprecated` đã được gỡ
|
|
8
|
+
* trong đợt breaking rename thay vì gỡ implementation. Các alias thật sự chết ở `utilities/**`
|
|
9
|
+
* (`SdColor`, `SD_EMPTY_STR`, `SdFilter*`, `SdPatternCommons`, `hslToHex`/`rgbToHex`…) đã bị xoá hẳn.
|
|
56
10
|
*/
|
|
57
11
|
declare const SdUtilities: {
|
|
58
12
|
upload: (option?: {
|
|
@@ -74,16 +28,11 @@ declare const SdUtilities: {
|
|
|
74
28
|
randomId: (prefix?: string | null) => string;
|
|
75
29
|
hash: (obj: any) => string;
|
|
76
30
|
parseQueryParams: (queryString?: string) => Record<string, string>;
|
|
77
|
-
getClientPublicIp: () => Promise<string | null>;
|
|
31
|
+
getClientPublicIp: (endpoint: string) => Promise<string | null>;
|
|
78
32
|
generateUuid: () => string;
|
|
79
33
|
getNestedValue: (obj: any, path: string) => any;
|
|
80
34
|
};
|
|
81
35
|
|
|
82
|
-
/** @deprecated Use {@link ColorUtilities.hslToHex} from `@sdcorejs/utils/fns` instead */
|
|
83
|
-
declare const hslToHex: (h: number, s: number, l: number) => string;
|
|
84
|
-
/** @deprecated Use {@link ColorUtilities.rgbToHex} from `@sdcorejs/utils/fns` instead */
|
|
85
|
-
declare const rgbToHex: (r: number, g: number, b: number) => string;
|
|
86
|
-
|
|
87
36
|
type PlainObject = Record<PropertyKey, unknown>;
|
|
88
37
|
declare const ObjectUtilities: {
|
|
89
38
|
isPlainObject: (value: unknown) => value is PlainObject;
|
|
@@ -92,4 +41,77 @@ declare const ObjectUtilities: {
|
|
|
92
41
|
deepMerge: <T extends PlainObject>(...sources: T[]) => T;
|
|
93
42
|
};
|
|
94
43
|
|
|
95
|
-
|
|
44
|
+
/**
|
|
45
|
+
* URL safety helpers.
|
|
46
|
+
*
|
|
47
|
+
* why: this library used to decide "is this an external link?" and "should this request carry the
|
|
48
|
+
* bearer token?" with plain substring tests — `path.includes('http')` and `url.includes(route)`.
|
|
49
|
+
* Both are unsound:
|
|
50
|
+
*
|
|
51
|
+
* - `'javascript:fetch(...)//http'.includes('http')` is `true`, so a menu entry could be opened
|
|
52
|
+
* with `window.open()` and execute script in the app origin.
|
|
53
|
+
* - With `secureRoutes: ['/api/v1']`, `'https://evil.example.com/api/v1/collect'.includes('/api/v1')`
|
|
54
|
+
* is `true`, so a third-party host received the `Authorization: Bearer <token>` header.
|
|
55
|
+
*
|
|
56
|
+
* Everything here parses the URL instead of pattern-matching the string, and fails closed.
|
|
57
|
+
*/
|
|
58
|
+
/**
|
|
59
|
+
* Stand-in origin used when there is no `window.location` (SSR, prerender, unit tests).
|
|
60
|
+
*
|
|
61
|
+
* why: without a base, a relative route entry like `'/api/v1'` cannot be parsed, so every
|
|
62
|
+
* origin-aware check would silently answer `false` on the server — e.g. the keycloak interceptor
|
|
63
|
+
* would stop attaching the bearer token to every server-rendered request. Resolving BOTH the route
|
|
64
|
+
* entry and the request URL against one fixed synthetic origin keeps relative-vs-relative matching
|
|
65
|
+
* consistent across environments, while an ABSOLUTE route entry still has to match a real origin,
|
|
66
|
+
* so nothing is loosened.
|
|
67
|
+
*/
|
|
68
|
+
declare const SD_NON_BROWSER_ORIGIN = "http://sdcorejs.invalid";
|
|
69
|
+
/** Resolve the origin that relative URLs should be interpreted against. */
|
|
70
|
+
declare function sdResolveBaseOrigin(explicit?: string): string;
|
|
71
|
+
/**
|
|
72
|
+
* Parse `value` into a URL. Relative values are resolved against `base` when one is supplied.
|
|
73
|
+
* Returns `undefined` instead of throwing so callers can fail closed with a simple null check.
|
|
74
|
+
*/
|
|
75
|
+
declare function sdParseUrl(value: string | null | undefined, base?: string): URL | undefined;
|
|
76
|
+
/**
|
|
77
|
+
* True only when `value` is an ABSOLUTE `http:`/`https:` URL.
|
|
78
|
+
*
|
|
79
|
+
* Replaces `url.startsWith('http')` / `path.includes('http')`. Note that `startsWith('http')` also
|
|
80
|
+
* accepts nonsense like `'httpfoo'`, and `includes('http')` accepts any string that merely mentions
|
|
81
|
+
* it — including `javascript:` payloads.
|
|
82
|
+
*/
|
|
83
|
+
declare function sdIsExternalHttpUrl(value: string | null | undefined): boolean;
|
|
84
|
+
/**
|
|
85
|
+
* Open an external link in a new browsing context.
|
|
86
|
+
*
|
|
87
|
+
* Refuses anything that is not absolute `http:`/`https:` (returns `null` without opening), and
|
|
88
|
+
* always passes `noopener,noreferrer` so the opened page cannot reach back through `window.opener`
|
|
89
|
+
* (reverse tabnabbing).
|
|
90
|
+
*/
|
|
91
|
+
declare function sdOpenExternal(value: string | null | undefined, target?: string): Window | null;
|
|
92
|
+
/**
|
|
93
|
+
* True when `url` is same-origin, or its origin is in `allowedOrigins`.
|
|
94
|
+
*
|
|
95
|
+
* Relative URLs (`/api/v1/users`) always count as same-origin. Outside a browser they resolve
|
|
96
|
+
* against {@link SD_NON_BROWSER_ORIGIN} unless `baseOrigin` is supplied.
|
|
97
|
+
*/
|
|
98
|
+
declare function sdIsAllowedOrigin(url: string | null | undefined, allowedOrigins: readonly string[], baseOrigin?: string): boolean;
|
|
99
|
+
/**
|
|
100
|
+
* Decide whether an outgoing request matches one of the configured secure routes, i.e. whether it
|
|
101
|
+
* is allowed to carry credentials.
|
|
102
|
+
*
|
|
103
|
+
* A route entry is either:
|
|
104
|
+
* - a path prefix (`'/api/v1'`) — matches ONLY same-origin requests under that path, or
|
|
105
|
+
* - an absolute URL (`'https://api.example.com/v1'`) — matches that exact origin, under that path.
|
|
106
|
+
*
|
|
107
|
+
* Path matching is segment-aware: `'/api/v1'` matches `/api/v1` and `/api/v1/users`, but NOT
|
|
108
|
+
* `/api/v1beta`. Anything that fails to parse returns `false`.
|
|
109
|
+
*/
|
|
110
|
+
declare function sdMatchesSecureRoute(url: string | null | undefined, routes: readonly string[] | undefined, baseOrigin?: string): boolean;
|
|
111
|
+
/**
|
|
112
|
+
* Segment-aware path prefix test: `/api/v1` covers `/api/v1` and `/api/v1/users`, but not
|
|
113
|
+
* `/api/v1beta`. A bare `/` prefix covers everything on that origin.
|
|
114
|
+
*/
|
|
115
|
+
declare function sdIsPathPrefix(prefix: string, pathname: string): boolean;
|
|
116
|
+
|
|
117
|
+
export { ObjectUtilities, SD_NON_BROWSER_ORIGIN, SdUtilities, sdIsAllowedOrigin, sdIsExternalHttpUrl, sdIsPathPrefix, sdMatchesSecureRoute, sdOpenExternal, sdParseUrl, sdResolveBaseOrigin };
|
|
@@ -1,89 +1,15 @@
|
|
|
1
|
-
import { Color, Size, MaybeAsync, NestedKeyOf, Operator, OperatorHasData, OperatorNoData, Filter, FilterAndOr, FilterBetween, FilterHasData, FilterNoData, Order, PagingReq, PagingRes, QueryReq } from '@sdcorejs/utils/models';
|
|
2
|
-
export { Color, Filter, FilterAndOr, FilterBetween, FilterHasData, FilterNoData, MaybeAsync, NestedKeyOf, Operator, OperatorHasData, OperatorNoData, Order, PagingReq, PagingRes, QueryReq, Size, ValidationPattern, ValidationPatternType, normalizeAsync, resolveMaybeAsync } from '@sdcorejs/utils/models';
|
|
3
|
-
import * as rxjs from 'rxjs';
|
|
4
1
|
import { InputSignalWithTransform, InputSignal, ModelSignal } from '@angular/core';
|
|
5
|
-
export { EMPTY_STR, VALIDATION_PATTERNS } from '@sdcorejs/utils/constants';
|
|
6
|
-
|
|
7
|
-
/** @deprecated Use {@link Color} from `@sdcorejs/utils/models` instead */
|
|
8
|
-
type SdColor = Color;
|
|
9
|
-
|
|
10
|
-
/** @deprecated Use {@link Size} from `@sdcorejs/utils/models` instead */
|
|
11
|
-
type SdSize = Size;
|
|
12
2
|
|
|
13
3
|
type SdIconSet = 'material-icons' | 'material-icons-outlined' | 'material-icons-round' | 'material-icons-sharp' | 'lucide';
|
|
14
4
|
type SdMaterialIconSet = Exclude<SdIconSet, 'lucide'>;
|
|
15
5
|
declare const DefaultSdIconSet: SdIconSet;
|
|
16
6
|
declare const DefaultSdMaterialIconSet: SdMaterialIconSet;
|
|
17
7
|
|
|
18
|
-
/**
|
|
19
|
-
* @deprecated Use {@link ValidationPatternType} from `@sdcorejs/utils/models` instead.
|
|
20
|
-
* Note: member names changed — PHONE_VN → VN_PHONE, IDVN → VN_ID, IDVN_OR_PASSPORT → VN_ID_OR_PASSPORT.
|
|
21
|
-
*/
|
|
22
|
-
type SdPatternType = 'EMAIL' | 'PHONE' | 'PHONE_VN' | 'IDVN' | 'PASSPORT' | 'IDVN_OR_PASSPORT' | 'TIME';
|
|
23
|
-
/**
|
|
24
|
-
* @deprecated Use {@link ValidationPattern} from `@sdcorejs/utils/models` instead.
|
|
25
|
-
* Note: `regex` field renamed to `pattern` to align with Angular `Validators.pattern()`.
|
|
26
|
-
*/
|
|
27
|
-
interface SdPatternCommon {
|
|
28
|
-
type: SdPatternType;
|
|
29
|
-
name: string;
|
|
30
|
-
regex: string;
|
|
31
|
-
errorMessage: string;
|
|
32
|
-
}
|
|
33
|
-
/** @deprecated Use `VALIDATION_PATTERNS` from `@sdcorejs/utils/constants` instead. */
|
|
34
|
-
declare const SdPatternCommons: SdPatternCommon[];
|
|
35
|
-
|
|
36
|
-
/** @deprecated Use {@link EMPTY_STR} from `@sdcorejs/utils/constants` instead */
|
|
37
|
-
declare const SD_EMPTY_STR = "--";
|
|
38
|
-
|
|
39
|
-
/** @deprecated Use {@link MaybeAsync} from `@sdcorejs/utils/models` instead */
|
|
40
|
-
type SdMaybeAsync<T> = MaybeAsync<T>;
|
|
41
|
-
/** @deprecated Use {@link resolveMaybeAsync} from `@sdcorejs/utils/models` instead */
|
|
42
|
-
declare const SdResolveMaybeAsync: <T>(value: MaybeAsync<T>) => Promise<T>;
|
|
43
|
-
/** @deprecated Use {@link normalizeAsync} from `@sdcorejs/utils/models` instead */
|
|
44
|
-
declare const SdNormalizeAsync: <T>(value: MaybeAsync<T>) => rxjs.Observable<T>;
|
|
45
|
-
|
|
46
|
-
/** @deprecated Use {@link NestedKeyOf} from `@sdcorejs/utils/models` instead */
|
|
47
|
-
type SdNestedKeyOf<T> = NestedKeyOf<T>;
|
|
48
|
-
|
|
49
8
|
/**
|
|
50
9
|
* Utility Type: Bóc tách kiểu dữ liệu gốc từ Angular Signal Inputs & Models
|
|
51
10
|
*/
|
|
52
11
|
type SdUnwrapSignal<T> = T extends InputSignalWithTransform<any, infer WriteT> ? WriteT : T extends InputSignal<infer ReadT> ? ReadT : T extends ModelSignal<infer ModelT> ? ModelT : T;
|
|
53
12
|
type SdUnwrapSafe<T> = SdUnwrapSignal<NonNullable<T>>;
|
|
54
13
|
|
|
55
|
-
|
|
56
|
-
type
|
|
57
|
-
/** @deprecated Use {@link OperatorHasData} from `@sdcorejs/utils/models` instead */
|
|
58
|
-
type SdOperatorHasData = OperatorHasData;
|
|
59
|
-
/** @deprecated Use {@link OperatorNoData} from `@sdcorejs/utils/models` instead */
|
|
60
|
-
type SdOperatorNoData = OperatorNoData;
|
|
61
|
-
declare const SdOperators: {
|
|
62
|
-
value: Operator;
|
|
63
|
-
symbol?: string;
|
|
64
|
-
display: string;
|
|
65
|
-
}[];
|
|
66
|
-
|
|
67
|
-
/** @deprecated Use {@link Filter} from `@sdcorejs/utils/models` instead */
|
|
68
|
-
type SdFilter<T = any> = Filter<T>;
|
|
69
|
-
/** @deprecated Use {@link FilterHasData} from `@sdcorejs/utils/models` instead */
|
|
70
|
-
type SdFilterHasData<T = any> = FilterHasData<T>;
|
|
71
|
-
/** @deprecated Use {@link FilterBetween} from `@sdcorejs/utils/models` instead */
|
|
72
|
-
type SdFilterBetween<T = any> = FilterBetween<T>;
|
|
73
|
-
/** @deprecated Use {@link FilterNoData} from `@sdcorejs/utils/models` instead */
|
|
74
|
-
type SdFilterNoData<T = any> = FilterNoData<T>;
|
|
75
|
-
/** @deprecated Use {@link FilterAndOr} from `@sdcorejs/utils/models` instead */
|
|
76
|
-
type SdFilterAndOr<T = any> = FilterAndOr<T>;
|
|
77
|
-
|
|
78
|
-
/** @deprecated Use {@link Order} from `@sdcorejs/utils/models` instead */
|
|
79
|
-
type SdOrder<T = any> = Order<T>;
|
|
80
|
-
|
|
81
|
-
/** @deprecated Use {@link QueryReq} from `@sdcorejs/utils/models` instead */
|
|
82
|
-
type SdQueryReq<T = any> = QueryReq<T>;
|
|
83
|
-
/** @deprecated Use {@link PagingReq} from `@sdcorejs/utils/models` instead */
|
|
84
|
-
type SdPagingReq<T = any> = PagingReq<T>;
|
|
85
|
-
/** @deprecated Use {@link PagingRes} from `@sdcorejs/utils/models` instead */
|
|
86
|
-
type SdPagingRes<T = any> = PagingRes<T>;
|
|
87
|
-
|
|
88
|
-
export { DefaultSdIconSet, DefaultSdMaterialIconSet, SD_EMPTY_STR, SdNormalizeAsync, SdOperators, SdPatternCommons, SdResolveMaybeAsync };
|
|
89
|
-
export type { SdColor, SdFilter, SdFilterAndOr, SdFilterBetween, SdFilterHasData, SdFilterNoData, SdIconSet, SdMaterialIconSet, SdMaybeAsync, SdNestedKeyOf, SdOperator, SdOperatorHasData, SdOperatorNoData, SdOrder, SdPagingReq, SdPagingRes, SdPatternCommon, SdPatternType, SdQueryReq, SdSize, SdUnwrapSafe, SdUnwrapSignal };
|
|
14
|
+
export { DefaultSdIconSet, DefaultSdMaterialIconSet };
|
|
15
|
+
export type { SdIconSet, SdMaterialIconSet, SdUnwrapSafe, SdUnwrapSignal };
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { SdLicenseService } from '@sdcorejs/angular/services/license';
|
|
2
|
-
import * as i0 from '@angular/core';
|
|
3
|
-
|
|
4
|
-
declare abstract class SdBaseSecureComponent {
|
|
5
|
-
protected licenseService: SdLicenseService;
|
|
6
|
-
constructor();
|
|
7
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<SdBaseSecureComponent, never>;
|
|
8
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<SdBaseSecureComponent, never, never, {}, {}, never, never, true, never>;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
export { SdBaseSecureComponent };
|