@sdcorejs/angular 19.0.3 → 19.0.5
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/README.md → STYLE-GUIDE.md} +3 -0
- package/components/button/src/button.component.d.ts +1 -2
- package/components/form-generic/src/components/form-builder/form-builder.component.d.ts +1 -2
- package/components/form-generic/src/components/form-render/form-render.component.d.ts +1 -2
- package/components/form-generic/src/components/sd-feel-expression/sd-feel-expression.component.d.ts +1 -2
- package/components/index.d.ts +2 -0
- package/components/org-chart/index.d.ts +3 -0
- package/components/org-chart/src/org-chart-item-def.directive.d.ts +9 -0
- package/components/org-chart/src/org-chart.component.d.ts +26 -0
- package/components/org-chart/src/org-chart.model.d.ts +32 -0
- package/components/query-bar/src/query-bar.component.d.ts +15 -2
- package/components/query-bar/src/query-bar.model.d.ts +22 -0
- package/components/query-builder/index.d.ts +2 -0
- package/components/query-builder/src/query-builder.component.d.ts +115 -22
- package/components/query-builder/src/query-builder.model.d.ts +166 -0
- package/components/query-builder/src/query-builder.serializer.d.ts +32 -0
- package/components/section/src/section.component.d.ts +5 -3
- package/components/side-drawer/src/side-drawer.component.d.ts +1 -2
- package/components/splitter/src/splitter.component.d.ts +8 -2
- package/components/splitter/src/splitter.models.d.ts +13 -0
- package/components/stepper/src/stepper.component.d.ts +1 -2
- package/components/tab/src/tab-group.component.d.ts +1 -2
- package/components/table/src/services/table-filter/table-filter.model.d.ts +2 -0
- package/components/table/src/table.component.d.ts +1 -2
- package/components/tree/index.d.ts +3 -0
- package/components/tree/src/tree-item-def.directive.d.ts +9 -0
- package/components/tree/src/tree.component.d.ts +102 -0
- package/components/tree/src/tree.model.d.ts +142 -0
- package/components/upload-file/src/upload-file.component.d.ts +2 -0
- package/fesm2022/sdcorejs-angular-components-button.mjs +2 -4
- package/fesm2022/sdcorejs-angular-components-button.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-form-generic.mjs +7 -11
- package/fesm2022/sdcorejs-angular-components-form-generic.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-modal-resizable.mjs +5 -5
- package/fesm2022/sdcorejs-angular-components-modal-resizable.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-org-chart.mjs +110 -0
- package/fesm2022/sdcorejs-angular-components-org-chart.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-components-query-bar.mjs +37 -8
- package/fesm2022/sdcorejs-angular-components-query-bar.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-query-builder.mjs +867 -57
- package/fesm2022/sdcorejs-angular-components-query-builder.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-section.mjs +8 -7
- package/fesm2022/sdcorejs-angular-components-section.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-side-drawer.mjs +2 -4
- package/fesm2022/sdcorejs-angular-components-side-drawer.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-splitter.mjs +23 -12
- package/fesm2022/sdcorejs-angular-components-splitter.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-stepper.mjs +2 -4
- package/fesm2022/sdcorejs-angular-components-stepper.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-tab.mjs +2 -4
- package/fesm2022/sdcorejs-angular-components-tab.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-table.mjs +8 -6
- package/fesm2022/sdcorejs-angular-components-table.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components-tree.mjs +526 -0
- package/fesm2022/sdcorejs-angular-components-tree.mjs.map +1 -0
- package/fesm2022/sdcorejs-angular-components-upload-file.mjs +15 -4
- package/fesm2022/sdcorejs-angular-components-upload-file.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-components.mjs +2 -0
- package/fesm2022/sdcorejs-angular-components.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-autocomplete.mjs +9 -4
- package/fesm2022/sdcorejs-angular-forms-autocomplete.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-input-number.mjs +9 -3
- package/fesm2022/sdcorejs-angular-forms-input-number.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-input.mjs +2 -2
- package/fesm2022/sdcorejs-angular-forms-input.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-forms-select.mjs +33 -3
- package/fesm2022/sdcorejs-angular-forms-select.mjs.map +1 -1
- package/fesm2022/sdcorejs-angular-services-notify.mjs +26 -8
- package/fesm2022/sdcorejs-angular-services-notify.mjs.map +1 -1
- package/forms/select/src/select.component.d.ts +9 -1
- package/package.json +13 -5
- package/services/notify/src/components/toast/toast.component.d.ts +12 -1
- package/services/notify/src/notify.model.d.ts +17 -0
|
@@ -15,6 +15,14 @@ export declare class SdSelect<T extends object | string | number = Record<string
|
|
|
15
15
|
selectRef: Signal<MatSelect | undefined>;
|
|
16
16
|
sdLabelTemplate: Signal<TemplateRef<any> | undefined>;
|
|
17
17
|
sdValueTemplate: Signal<TemplateRef<any> | undefined>;
|
|
18
|
+
/**
|
|
19
|
+
* Custom render for the SELECTED value shown in the editable trigger (`<mat-select-trigger>`).
|
|
20
|
+
* Distinct from `#sdValue`/`sdViewDef` which only drive the read-only `viewed`/`inline` face.
|
|
21
|
+
* Context: `{ $implicit, item, items: selectedItems(), display, multiple }` — `item`/`$implicit`
|
|
22
|
+
* is the single selected item object (single mode) or the selected-item array (multiple mode).
|
|
23
|
+
* Falls back to the plain `display` text when not projected, so existing usages are unaffected.
|
|
24
|
+
*/
|
|
25
|
+
sdSelectedTemplate: Signal<TemplateRef<any> | undefined>;
|
|
18
26
|
itemDef: Signal<SdItemDefDefDirective<any> | undefined>;
|
|
19
27
|
sdViewDef: Signal<SdViewDefDirective<any, any> | undefined>;
|
|
20
28
|
/**
|
|
@@ -107,5 +115,5 @@ export declare class SdSelect<T extends object | string | number = Record<string
|
|
|
107
115
|
open: () => void;
|
|
108
116
|
onOpenedChange: (isOpened: boolean) => void;
|
|
109
117
|
static ɵfac: i0.ɵɵFactoryDeclaration<SdSelect<any>, never>;
|
|
110
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<SdSelect<any>, "sd-select", never, { "autoIdInput": { "alias": "autoId"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "form": { "alias": "form"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "helperText": { "alias": "helperText"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "valueField": { "alias": "valueField"; "required": true; "isSignal": true; }; "displayField": { "alias": "displayField"; "required": true; "isSignal": true; }; "disabledField": { "alias": "disabledField"; "required": false; "isSignal": true; }; "cacheChecksum": { "alias": "cacheChecksum"; "required": false; "isSignal": true; }; "limit": { "alias": "limit"; "required": false; "isSignal": true; }; "hyperlink": { "alias": "hyperlink"; "required": false; "isSignal": true; }; "minWidthPanel": { "alias": "minWidthPanel"; "required": false; "isSignal": true; }; "hideInlineError": { "alias": "hideInlineError"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "viewed": { "alias": "viewed"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "validator": { "alias": "validator"; "required": false; "isSignal": true; }; "inlineError": { "alias": "inlineError"; "required": false; "isSignal": true; }; "appearanceInput": { "alias": "appearance"; "required": false; "isSignal": true; }; "floatLabel": { "alias": "floatLabel"; "required": false; "isSignal": true; }; "items": { "alias": "items"; "required": false; "isSignal": true; }; "valueModel": { "alias": "model"; "required": false; "isSignal": true; }; }, { "valueModel": "modelChange"; "sdChange": "sdChange"; "sdSelection": "sdSelection"; }, ["sdLabelTemplate", "sdValueTemplate", "itemDef", "sdViewDef"], ["[sdLabel]"], true, never>;
|
|
118
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SdSelect<any>, "sd-select", never, { "autoIdInput": { "alias": "autoId"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "form": { "alias": "form"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "helperText": { "alias": "helperText"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "valueField": { "alias": "valueField"; "required": true; "isSignal": true; }; "displayField": { "alias": "displayField"; "required": true; "isSignal": true; }; "disabledField": { "alias": "disabledField"; "required": false; "isSignal": true; }; "cacheChecksum": { "alias": "cacheChecksum"; "required": false; "isSignal": true; }; "limit": { "alias": "limit"; "required": false; "isSignal": true; }; "hyperlink": { "alias": "hyperlink"; "required": false; "isSignal": true; }; "minWidthPanel": { "alias": "minWidthPanel"; "required": false; "isSignal": true; }; "hideInlineError": { "alias": "hideInlineError"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "viewed": { "alias": "viewed"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "validator": { "alias": "validator"; "required": false; "isSignal": true; }; "inlineError": { "alias": "inlineError"; "required": false; "isSignal": true; }; "appearanceInput": { "alias": "appearance"; "required": false; "isSignal": true; }; "floatLabel": { "alias": "floatLabel"; "required": false; "isSignal": true; }; "items": { "alias": "items"; "required": false; "isSignal": true; }; "valueModel": { "alias": "model"; "required": false; "isSignal": true; }; }, { "valueModel": "modelChange"; "sdChange": "sdChange"; "sdSelection": "sdSelection"; }, ["sdLabelTemplate", "sdValueTemplate", "sdSelectedTemplate", "itemDef", "sdViewDef"], ["[sdLabel]"], true, never>;
|
|
111
119
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sdcorejs/angular",
|
|
3
|
-
"version": "19.0.
|
|
3
|
+
"version": "19.0.5",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"peerDependencies": {
|
|
6
6
|
"@angular/common": "^19.0.0 || ^20.0.0 || ^21.0.0",
|
|
@@ -33,14 +33,14 @@
|
|
|
33
33
|
"types": "./index.d.ts",
|
|
34
34
|
"default": "./fesm2022/sdcorejs-angular.mjs"
|
|
35
35
|
},
|
|
36
|
-
"./components": {
|
|
37
|
-
"types": "./components/index.d.ts",
|
|
38
|
-
"default": "./fesm2022/sdcorejs-angular-components.mjs"
|
|
39
|
-
},
|
|
40
36
|
"./configurations": {
|
|
41
37
|
"types": "./configurations/index.d.ts",
|
|
42
38
|
"default": "./fesm2022/sdcorejs-angular-configurations.mjs"
|
|
43
39
|
},
|
|
40
|
+
"./components": {
|
|
41
|
+
"types": "./components/index.d.ts",
|
|
42
|
+
"default": "./fesm2022/sdcorejs-angular-components.mjs"
|
|
43
|
+
},
|
|
44
44
|
"./directives": {
|
|
45
45
|
"types": "./directives/index.d.ts",
|
|
46
46
|
"default": "./fesm2022/sdcorejs-angular-directives.mjs"
|
|
@@ -157,6 +157,10 @@
|
|
|
157
157
|
"types": "./components/operator/index.d.ts",
|
|
158
158
|
"default": "./fesm2022/sdcorejs-angular-components-operator.mjs"
|
|
159
159
|
},
|
|
160
|
+
"./components/org-chart": {
|
|
161
|
+
"types": "./components/org-chart/index.d.ts",
|
|
162
|
+
"default": "./fesm2022/sdcorejs-angular-components-org-chart.mjs"
|
|
163
|
+
},
|
|
160
164
|
"./components/preview": {
|
|
161
165
|
"types": "./components/preview/index.d.ts",
|
|
162
166
|
"default": "./fesm2022/sdcorejs-angular-components-preview.mjs"
|
|
@@ -201,6 +205,10 @@
|
|
|
201
205
|
"types": "./components/table/index.d.ts",
|
|
202
206
|
"default": "./fesm2022/sdcorejs-angular-components-table.mjs"
|
|
203
207
|
},
|
|
208
|
+
"./components/tree": {
|
|
209
|
+
"types": "./components/tree/index.d.ts",
|
|
210
|
+
"default": "./fesm2022/sdcorejs-angular-components-tree.mjs"
|
|
211
|
+
},
|
|
204
212
|
"./components/upload-file": {
|
|
205
213
|
"types": "./components/upload-file/index.d.ts",
|
|
206
214
|
"default": "./fesm2022/sdcorejs-angular-components-upload-file.mjs"
|
|
@@ -1,16 +1,27 @@
|
|
|
1
1
|
import { OnInit, OnDestroy } from '@angular/core';
|
|
2
|
+
import { DomSanitizer } from '@angular/platform-browser';
|
|
2
3
|
import { ToastData } from '../../notify.model';
|
|
3
4
|
import { SdNotifyService } from '../../notify.service';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
5
6
|
export declare class ToastComponent implements OnInit, OnDestroy {
|
|
6
7
|
private notifyService;
|
|
8
|
+
private sanitizer;
|
|
7
9
|
data: ToastData;
|
|
8
10
|
isExpanded: import("@angular/core").WritableSignal<boolean>;
|
|
9
11
|
readonly MAX_SHOW = 2;
|
|
10
12
|
private timer;
|
|
11
13
|
private start;
|
|
12
14
|
private remaining;
|
|
13
|
-
constructor(notifyService: SdNotifyService);
|
|
15
|
+
constructor(notifyService: SdNotifyService, sanitizer: DomSanitizer);
|
|
16
|
+
/**
|
|
17
|
+
* Sanitize HTML tường minh trước khi render qua `[innerHTML]` — strip
|
|
18
|
+
* `<script>`, event handler (`on*`), `javascript:` URL. Chỉ chạy ở nhánh
|
|
19
|
+
* `data.html === true`; nhánh mặc định render text (auto-escape) nên không
|
|
20
|
+
* có sink này. // why: phơi rõ việc sanitize cho review/scanner bảo mật.
|
|
21
|
+
*/
|
|
22
|
+
sanitizeHtml(value: string): string;
|
|
23
|
+
/** Message ở dạng chuỗi đơn (chỉ dùng khi !isMultiMessage). */
|
|
24
|
+
get singleMessage(): string;
|
|
14
25
|
ngOnInit(): void;
|
|
15
26
|
ngOnDestroy(): void;
|
|
16
27
|
pauseTimer(): void;
|
|
@@ -7,10 +7,27 @@ export interface ToastData {
|
|
|
7
7
|
duration: number;
|
|
8
8
|
actionLabel?: string;
|
|
9
9
|
onAction?: () => void;
|
|
10
|
+
/**
|
|
11
|
+
* Render `message` dưới dạng HTML thay vì text.
|
|
12
|
+
* - `false` (mặc định): message render dạng TEXT (auto-escape) — an toàn tuyệt đối.
|
|
13
|
+
* - `true`: message render dạng HTML, đã được `DomSanitizer.sanitize(HTML)`
|
|
14
|
+
* (strip `<script>`, event handler, `javascript:` URL). CHỈ dùng cho markup
|
|
15
|
+
* TIN CẬY (do dev tự viết); KHÔNG truyền data người dùng vào đây.
|
|
16
|
+
*/
|
|
17
|
+
html?: boolean;
|
|
10
18
|
}
|
|
11
19
|
export interface NotifyOption {
|
|
12
20
|
duration?: number;
|
|
13
21
|
title?: string;
|
|
14
22
|
actionLabel?: string;
|
|
23
|
+
/**
|
|
24
|
+
* Callback khi bấm nút action — do APP tự cung cấp (không phải input không tin cậy).
|
|
25
|
+
* Chỉ được gọi khi user bấm `actionLabel`.
|
|
26
|
+
*/
|
|
15
27
|
onAction?: () => void;
|
|
28
|
+
/**
|
|
29
|
+
* Render message dạng HTML đã sanitize (mặc định `false` = text an toàn).
|
|
30
|
+
* Chỉ dùng cho markup tin cậy. Xem `ToastData.html`.
|
|
31
|
+
*/
|
|
32
|
+
html?: boolean;
|
|
16
33
|
}
|