@sd-angular/core 19.0.3 → 19.0.4

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.
Files changed (47) hide show
  1. package/components/button/src/button.component.d.ts +1 -2
  2. package/components/form-generic/src/components/form-builder/form-builder.component.d.ts +1 -2
  3. package/components/form-generic/src/components/form-render/form-render.component.d.ts +1 -2
  4. package/components/form-generic/src/components/sd-feel-expression/sd-feel-expression.component.d.ts +1 -2
  5. package/components/query-builder/index.d.ts +2 -0
  6. package/components/query-builder/src/query-builder.component.d.ts +98 -22
  7. package/components/query-builder/src/query-builder.model.d.ts +118 -0
  8. package/components/query-builder/src/query-builder.serializer.d.ts +32 -0
  9. package/components/section/src/section.component.d.ts +1 -2
  10. package/components/side-drawer/src/side-drawer.component.d.ts +1 -2
  11. package/components/stepper/src/stepper.component.d.ts +1 -2
  12. package/components/tab/src/tab-group.component.d.ts +1 -2
  13. package/components/table/src/table.component.d.ts +1 -2
  14. package/components/upload-file/src/upload-file.component.d.ts +2 -0
  15. package/fesm2022/sd-angular-core-components-button.mjs +2 -4
  16. package/fesm2022/sd-angular-core-components-button.mjs.map +1 -1
  17. package/fesm2022/sd-angular-core-components-form-generic.mjs +6 -10
  18. package/fesm2022/sd-angular-core-components-form-generic.mjs.map +1 -1
  19. package/fesm2022/sd-angular-core-components-modal-resizable.mjs +5 -5
  20. package/fesm2022/sd-angular-core-components-modal-resizable.mjs.map +1 -1
  21. package/fesm2022/sd-angular-core-components-query-builder.mjs +669 -57
  22. package/fesm2022/sd-angular-core-components-query-builder.mjs.map +1 -1
  23. package/fesm2022/sd-angular-core-components-section.mjs +2 -4
  24. package/fesm2022/sd-angular-core-components-section.mjs.map +1 -1
  25. package/fesm2022/sd-angular-core-components-side-drawer.mjs +2 -4
  26. package/fesm2022/sd-angular-core-components-side-drawer.mjs.map +1 -1
  27. package/fesm2022/sd-angular-core-components-stepper.mjs +2 -4
  28. package/fesm2022/sd-angular-core-components-stepper.mjs.map +1 -1
  29. package/fesm2022/sd-angular-core-components-tab.mjs +2 -4
  30. package/fesm2022/sd-angular-core-components-tab.mjs.map +1 -1
  31. package/fesm2022/sd-angular-core-components-table.mjs +2 -4
  32. package/fesm2022/sd-angular-core-components-table.mjs.map +1 -1
  33. package/fesm2022/sd-angular-core-components-upload-file.mjs +15 -4
  34. package/fesm2022/sd-angular-core-components-upload-file.mjs.map +1 -1
  35. package/fesm2022/sd-angular-core-forms-autocomplete.mjs +7 -2
  36. package/fesm2022/sd-angular-core-forms-autocomplete.mjs.map +1 -1
  37. package/fesm2022/sd-angular-core-forms-input-number.mjs +9 -3
  38. package/fesm2022/sd-angular-core-forms-input-number.mjs.map +1 -1
  39. package/fesm2022/sd-angular-core-forms-input.mjs +2 -2
  40. package/fesm2022/sd-angular-core-forms-input.mjs.map +1 -1
  41. package/fesm2022/sd-angular-core-services-notify.mjs +26 -8
  42. package/fesm2022/sd-angular-core-services-notify.mjs.map +1 -1
  43. package/package.json +64 -64
  44. package/sd-angular-core-19.0.4.tgz +0 -0
  45. package/services/notify/src/components/toast/toast.component.d.ts +12 -1
  46. package/services/notify/src/notify.model.d.ts +17 -0
  47. package/sd-angular-core-19.0.3.tgz +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sd-angular/core",
3
- "version": "19.0.3",
3
+ "version": "19.0.4",
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",
@@ -32,14 +32,14 @@
32
32
  "types": "./index.d.ts",
33
33
  "default": "./fesm2022/sd-angular-core.mjs"
34
34
  },
35
- "./components": {
36
- "types": "./components/index.d.ts",
37
- "default": "./fesm2022/sd-angular-core-components.mjs"
38
- },
39
35
  "./configurations": {
40
36
  "types": "./configurations/index.d.ts",
41
37
  "default": "./fesm2022/sd-angular-core-configurations.mjs"
42
38
  },
39
+ "./components": {
40
+ "types": "./components/index.d.ts",
41
+ "default": "./fesm2022/sd-angular-core-components.mjs"
42
+ },
43
43
  "./directives": {
44
44
  "types": "./directives/index.d.ts",
45
45
  "default": "./fesm2022/sd-angular-core-directives.mjs"
@@ -68,14 +68,14 @@
68
68
  "types": "./modules/index.d.ts",
69
69
  "default": "./fesm2022/sd-angular-core-modules.mjs"
70
70
  },
71
- "./services": {
72
- "types": "./services/index.d.ts",
73
- "default": "./fesm2022/sd-angular-core-services.mjs"
74
- },
75
71
  "./pipes": {
76
72
  "types": "./pipes/index.d.ts",
77
73
  "default": "./fesm2022/sd-angular-core-pipes.mjs"
78
74
  },
75
+ "./services": {
76
+ "types": "./services/index.d.ts",
77
+ "default": "./fesm2022/sd-angular-core-services.mjs"
78
+ },
79
79
  "./utilities": {
80
80
  "types": "./utilities/index.d.ts",
81
81
  "default": "./fesm2022/sd-angular-core-utilities.mjs"
@@ -84,22 +84,22 @@
84
84
  "types": "./components/anchor/index.d.ts",
85
85
  "default": "./fesm2022/sd-angular-core-components-anchor.mjs"
86
86
  },
87
- "./components/avatar": {
88
- "types": "./components/avatar/index.d.ts",
89
- "default": "./fesm2022/sd-angular-core-components-avatar.mjs"
90
- },
91
87
  "./components/autoid-inspector": {
92
88
  "types": "./components/autoid-inspector/index.d.ts",
93
89
  "default": "./fesm2022/sd-angular-core-components-autoid-inspector.mjs"
94
90
  },
95
- "./components/badge": {
96
- "types": "./components/badge/index.d.ts",
97
- "default": "./fesm2022/sd-angular-core-components-badge.mjs"
91
+ "./components/avatar": {
92
+ "types": "./components/avatar/index.d.ts",
93
+ "default": "./fesm2022/sd-angular-core-components-avatar.mjs"
98
94
  },
99
95
  "./components/base": {
100
96
  "types": "./components/base/index.d.ts",
101
97
  "default": "./fesm2022/sd-angular-core-components-base.mjs"
102
98
  },
99
+ "./components/badge": {
100
+ "types": "./components/badge/index.d.ts",
101
+ "default": "./fesm2022/sd-angular-core-components-badge.mjs"
102
+ },
103
103
  "./components/button": {
104
104
  "types": "./components/button/index.d.ts",
105
105
  "default": "./fesm2022/sd-angular-core-components-button.mjs"
@@ -120,6 +120,10 @@
120
120
  "types": "./components/document-builder/index.d.ts",
121
121
  "default": "./fesm2022/sd-angular-core-components-document-builder.mjs"
122
122
  },
123
+ "./components/editor": {
124
+ "types": "./components/editor/index.d.ts",
125
+ "default": "./fesm2022/sd-angular-core-components-editor.mjs"
126
+ },
123
127
  "./components/form-generic": {
124
128
  "types": "./components/form-generic/index.d.ts",
125
129
  "default": "./fesm2022/sd-angular-core-components-form-generic.mjs"
@@ -128,10 +132,6 @@
128
132
  "types": "./components/history/index.d.ts",
129
133
  "default": "./fesm2022/sd-angular-core-components-history.mjs"
130
134
  },
131
- "./components/editor": {
132
- "types": "./components/editor/index.d.ts",
133
- "default": "./fesm2022/sd-angular-core-components-editor.mjs"
134
- },
135
135
  "./components/import-excel": {
136
136
  "types": "./components/import-excel/index.d.ts",
137
137
  "default": "./fesm2022/sd-angular-core-components-import-excel.mjs"
@@ -140,10 +140,6 @@
140
140
  "types": "./components/mini-editor/index.d.ts",
141
141
  "default": "./fesm2022/sd-angular-core-components-mini-editor.mjs"
142
142
  },
143
- "./components/modal-resizable": {
144
- "types": "./components/modal-resizable/index.d.ts",
145
- "default": "./fesm2022/sd-angular-core-components-modal-resizable.mjs"
146
- },
147
143
  "./components/operator": {
148
144
  "types": "./components/operator/index.d.ts",
149
145
  "default": "./fesm2022/sd-angular-core-components-operator.mjs"
@@ -156,18 +152,22 @@
156
152
  "types": "./components/preview/index.d.ts",
157
153
  "default": "./fesm2022/sd-angular-core-components-preview.mjs"
158
154
  },
159
- "./components/query-bar": {
160
- "types": "./components/query-bar/index.d.ts",
161
- "default": "./fesm2022/sd-angular-core-components-query-bar.mjs"
162
- },
163
155
  "./components/query-builder": {
164
156
  "types": "./components/query-builder/index.d.ts",
165
157
  "default": "./fesm2022/sd-angular-core-components-query-builder.mjs"
166
158
  },
159
+ "./components/query-bar": {
160
+ "types": "./components/query-bar/index.d.ts",
161
+ "default": "./fesm2022/sd-angular-core-components-query-bar.mjs"
162
+ },
167
163
  "./components/quick-action": {
168
164
  "types": "./components/quick-action/index.d.ts",
169
165
  "default": "./fesm2022/sd-angular-core-components-quick-action.mjs"
170
166
  },
167
+ "./components/modal-resizable": {
168
+ "types": "./components/modal-resizable/index.d.ts",
169
+ "default": "./fesm2022/sd-angular-core-components-modal-resizable.mjs"
170
+ },
171
171
  "./components/section": {
172
172
  "types": "./components/section/index.d.ts",
173
173
  "default": "./fesm2022/sd-angular-core-components-section.mjs"
@@ -180,6 +180,10 @@
180
180
  "types": "./components/splitter/index.d.ts",
181
181
  "default": "./fesm2022/sd-angular-core-components-splitter.mjs"
182
182
  },
183
+ "./components/tab": {
184
+ "types": "./components/tab/index.d.ts",
185
+ "default": "./fesm2022/sd-angular-core-components-tab.mjs"
186
+ },
183
187
  "./components/stepper": {
184
188
  "types": "./components/stepper/index.d.ts",
185
189
  "default": "./fesm2022/sd-angular-core-components-stepper.mjs"
@@ -188,22 +192,18 @@
188
192
  "types": "./components/tab-router/index.d.ts",
189
193
  "default": "./fesm2022/sd-angular-core-components-tab-router.mjs"
190
194
  },
191
- "./components/tab": {
192
- "types": "./components/tab/index.d.ts",
193
- "default": "./fesm2022/sd-angular-core-components-tab.mjs"
194
- },
195
195
  "./components/table": {
196
196
  "types": "./components/table/index.d.ts",
197
197
  "default": "./fesm2022/sd-angular-core-components-table.mjs"
198
198
  },
199
- "./components/upload-file": {
200
- "types": "./components/upload-file/index.d.ts",
201
- "default": "./fesm2022/sd-angular-core-components-upload-file.mjs"
202
- },
203
199
  "./components/view": {
204
200
  "types": "./components/view/index.d.ts",
205
201
  "default": "./fesm2022/sd-angular-core-components-view.mjs"
206
202
  },
203
+ "./components/upload-file": {
204
+ "types": "./components/upload-file/index.d.ts",
205
+ "default": "./fesm2022/sd-angular-core-components-upload-file.mjs"
206
+ },
207
207
  "./forms/autocomplete": {
208
208
  "types": "./forms/autocomplete/index.d.ts",
209
209
  "default": "./fesm2022/sd-angular-core-forms-autocomplete.mjs"
@@ -216,18 +216,22 @@
216
216
  "types": "./forms/checkbox/index.d.ts",
217
217
  "default": "./fesm2022/sd-angular-core-forms-checkbox.mjs"
218
218
  },
219
- "./forms/date": {
220
- "types": "./forms/date/index.d.ts",
221
- "default": "./fesm2022/sd-angular-core-forms-date.mjs"
222
- },
223
219
  "./forms/chip-calendar": {
224
220
  "types": "./forms/chip-calendar/index.d.ts",
225
221
  "default": "./fesm2022/sd-angular-core-forms-chip-calendar.mjs"
226
222
  },
223
+ "./forms/date": {
224
+ "types": "./forms/date/index.d.ts",
225
+ "default": "./fesm2022/sd-angular-core-forms-date.mjs"
226
+ },
227
227
  "./forms/date-range": {
228
228
  "types": "./forms/date-range/index.d.ts",
229
229
  "default": "./fesm2022/sd-angular-core-forms-date-range.mjs"
230
230
  },
231
+ "./forms/datetime": {
232
+ "types": "./forms/datetime/index.d.ts",
233
+ "default": "./fesm2022/sd-angular-core-forms-datetime.mjs"
234
+ },
231
235
  "./forms/inline-text": {
232
236
  "types": "./forms/inline-text/index.d.ts",
233
237
  "default": "./fesm2022/sd-angular-core-forms-inline-text.mjs"
@@ -236,22 +240,18 @@
236
240
  "types": "./forms/directives/index.d.ts",
237
241
  "default": "./fesm2022/sd-angular-core-forms-directives.mjs"
238
242
  },
239
- "./forms/datetime": {
240
- "types": "./forms/datetime/index.d.ts",
241
- "default": "./fesm2022/sd-angular-core-forms-datetime.mjs"
242
- },
243
243
  "./forms/input": {
244
244
  "types": "./forms/input/index.d.ts",
245
245
  "default": "./fesm2022/sd-angular-core-forms-input.mjs"
246
246
  },
247
- "./forms/input-color": {
248
- "types": "./forms/input-color/index.d.ts",
249
- "default": "./fesm2022/sd-angular-core-forms-input-color.mjs"
250
- },
251
247
  "./forms/input-number": {
252
248
  "types": "./forms/input-number/index.d.ts",
253
249
  "default": "./fesm2022/sd-angular-core-forms-input-number.mjs"
254
250
  },
251
+ "./forms/input-color": {
252
+ "types": "./forms/input-color/index.d.ts",
253
+ "default": "./fesm2022/sd-angular-core-forms-input-color.mjs"
254
+ },
255
255
  "./forms/label": {
256
256
  "types": "./forms/label/index.d.ts",
257
257
  "default": "./fesm2022/sd-angular-core-forms-label.mjs"
@@ -268,14 +268,14 @@
268
268
  "types": "./forms/select/index.d.ts",
269
269
  "default": "./fesm2022/sd-angular-core-forms-select.mjs"
270
270
  },
271
- "./forms/switch": {
272
- "types": "./forms/switch/index.d.ts",
273
- "default": "./fesm2022/sd-angular-core-forms-switch.mjs"
274
- },
275
271
  "./forms/textarea": {
276
272
  "types": "./forms/textarea/index.d.ts",
277
273
  "default": "./fesm2022/sd-angular-core-forms-textarea.mjs"
278
274
  },
275
+ "./forms/switch": {
276
+ "types": "./forms/switch/index.d.ts",
277
+ "default": "./fesm2022/sd-angular-core-forms-switch.mjs"
278
+ },
279
279
  "./modules/auth": {
280
280
  "types": "./modules/auth/index.d.ts",
281
281
  "default": "./fesm2022/sd-angular-core-modules-auth.mjs"
@@ -284,14 +284,14 @@
284
284
  "types": "./modules/authom/index.d.ts",
285
285
  "default": "./fesm2022/sd-angular-core-modules-authom.mjs"
286
286
  },
287
- "./modules/layout": {
288
- "types": "./modules/layout/index.d.ts",
289
- "default": "./fesm2022/sd-angular-core-modules-layout.mjs"
290
- },
291
287
  "./modules/keycloak": {
292
288
  "types": "./modules/keycloak/index.d.ts",
293
289
  "default": "./fesm2022/sd-angular-core-modules-keycloak.mjs"
294
290
  },
291
+ "./modules/layout": {
292
+ "types": "./modules/layout/index.d.ts",
293
+ "default": "./fesm2022/sd-angular-core-modules-layout.mjs"
294
+ },
295
295
  "./modules/permission": {
296
296
  "types": "./modules/permission/index.d.ts",
297
297
  "default": "./fesm2022/sd-angular-core-modules-permission.mjs"
@@ -316,14 +316,14 @@
316
316
  "types": "./services/excel/index.d.ts",
317
317
  "default": "./fesm2022/sd-angular-core-services-excel.mjs"
318
318
  },
319
- "./services/loading": {
320
- "types": "./services/loading/index.d.ts",
321
- "default": "./fesm2022/sd-angular-core-services-loading.mjs"
322
- },
323
319
  "./services/license": {
324
320
  "types": "./services/license/index.d.ts",
325
321
  "default": "./fesm2022/sd-angular-core-services-license.mjs"
326
322
  },
323
+ "./services/loading": {
324
+ "types": "./services/loading/index.d.ts",
325
+ "default": "./fesm2022/sd-angular-core-services-loading.mjs"
326
+ },
327
327
  "./services/notify": {
328
328
  "types": "./services/notify/index.d.ts",
329
329
  "default": "./fesm2022/sd-angular-core-services-notify.mjs"
@@ -336,6 +336,10 @@
336
336
  "types": "./utilities/data-state/index.d.ts",
337
337
  "default": "./fesm2022/sd-angular-core-utilities-data-state.mjs"
338
338
  },
339
+ "./components/modal": {
340
+ "types": "./components/modal/index.d.ts",
341
+ "default": "./fesm2022/sd-angular-core-components-modal.mjs"
342
+ },
339
343
  "./utilities/extensions": {
340
344
  "types": "./utilities/extensions/index.d.ts",
341
345
  "default": "./fesm2022/sd-angular-core-utilities-extensions.mjs"
@@ -343,10 +347,6 @@
343
347
  "./utilities/models": {
344
348
  "types": "./utilities/models/index.d.ts",
345
349
  "default": "./fesm2022/sd-angular-core-utilities-models.mjs"
346
- },
347
- "./components/modal": {
348
- "types": "./components/modal/index.d.ts",
349
- "default": "./fesm2022/sd-angular-core-components-modal.mjs"
350
350
  }
351
351
  }
352
352
  }
Binary file
@@ -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
  }
Binary file