@sdcorejs/angular 20.1.2 → 20.1.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 (177) hide show
  1. package/README.md +127 -807
  2. package/components/audit-diff/index.d.ts +74 -0
  3. package/components/badge/index.d.ts +1 -1
  4. package/components/breadcrumb/index.d.ts +53 -0
  5. package/components/data-state/index.d.ts +44 -0
  6. package/components/document-builder/index.d.ts +5 -5
  7. package/components/form-generic/index.d.ts +89 -103
  8. package/components/import-excel/index.d.ts +4 -14
  9. package/components/index.d.ts +4 -0
  10. package/components/job-progress/index.d.ts +38 -0
  11. package/components/mini-editor/index.d.ts +9 -9
  12. package/components/modal/index.d.ts +7 -1
  13. package/components/preview/index.d.ts +181 -28
  14. package/components/side-drawer/index.d.ts +7 -1
  15. package/components/tab/index.d.ts +9 -2
  16. package/components/table/index.d.ts +8 -7
  17. package/components/tree/index.d.ts +24 -2
  18. package/components/upload-file/index.d.ts +5 -4
  19. package/directives/index.d.ts +10 -8
  20. package/fesm2022/sdcorejs-angular-components-anchor.mjs +14 -14
  21. package/fesm2022/sdcorejs-angular-components-anchor.mjs.map +1 -1
  22. package/fesm2022/sdcorejs-angular-components-audit-diff.mjs +332 -0
  23. package/fesm2022/sdcorejs-angular-components-audit-diff.mjs.map +1 -0
  24. package/fesm2022/sdcorejs-angular-components-badge.mjs +1 -0
  25. package/fesm2022/sdcorejs-angular-components-badge.mjs.map +1 -1
  26. package/fesm2022/sdcorejs-angular-components-breadcrumb.mjs +121 -0
  27. package/fesm2022/sdcorejs-angular-components-breadcrumb.mjs.map +1 -0
  28. package/fesm2022/sdcorejs-angular-components-data-state.mjs +68 -0
  29. package/fesm2022/sdcorejs-angular-components-data-state.mjs.map +1 -0
  30. package/fesm2022/sdcorejs-angular-components-document-builder.mjs +18 -23
  31. package/fesm2022/sdcorejs-angular-components-document-builder.mjs.map +1 -1
  32. package/fesm2022/sdcorejs-angular-components-editor.mjs +6 -4
  33. package/fesm2022/sdcorejs-angular-components-editor.mjs.map +1 -1
  34. package/fesm2022/sdcorejs-angular-components-form-generic.mjs +633 -886
  35. package/fesm2022/sdcorejs-angular-components-form-generic.mjs.map +1 -1
  36. package/fesm2022/sdcorejs-angular-components-import-excel.mjs +26 -41
  37. package/fesm2022/sdcorejs-angular-components-import-excel.mjs.map +1 -1
  38. package/fesm2022/sdcorejs-angular-components-job-progress.mjs +97 -0
  39. package/fesm2022/sdcorejs-angular-components-job-progress.mjs.map +1 -0
  40. package/fesm2022/sdcorejs-angular-components-mini-editor.mjs +10 -20
  41. package/fesm2022/sdcorejs-angular-components-mini-editor.mjs.map +1 -1
  42. package/fesm2022/sdcorejs-angular-components-modal.mjs +61 -4
  43. package/fesm2022/sdcorejs-angular-components-modal.mjs.map +1 -1
  44. package/fesm2022/sdcorejs-angular-components-preview.mjs +1438 -218
  45. package/fesm2022/sdcorejs-angular-components-preview.mjs.map +1 -1
  46. package/fesm2022/sdcorejs-angular-components-query-bar.mjs +9 -17
  47. package/fesm2022/sdcorejs-angular-components-query-bar.mjs.map +1 -1
  48. package/fesm2022/sdcorejs-angular-components-query-builder.mjs +1 -1
  49. package/fesm2022/sdcorejs-angular-components-query-builder.mjs.map +1 -1
  50. package/fesm2022/sdcorejs-angular-components-side-drawer.mjs +39 -2
  51. package/fesm2022/sdcorejs-angular-components-side-drawer.mjs.map +1 -1
  52. package/fesm2022/sdcorejs-angular-components-tab-router.mjs +76 -52
  53. package/fesm2022/sdcorejs-angular-components-tab-router.mjs.map +1 -1
  54. package/fesm2022/sdcorejs-angular-components-tab.mjs +48 -4
  55. package/fesm2022/sdcorejs-angular-components-tab.mjs.map +1 -1
  56. package/fesm2022/sdcorejs-angular-components-table.mjs +123 -89
  57. package/fesm2022/sdcorejs-angular-components-table.mjs.map +1 -1
  58. package/fesm2022/sdcorejs-angular-components-tree.mjs +188 -18
  59. package/fesm2022/sdcorejs-angular-components-tree.mjs.map +1 -1
  60. package/fesm2022/sdcorejs-angular-components-upload-file.mjs +17 -23
  61. package/fesm2022/sdcorejs-angular-components-upload-file.mjs.map +1 -1
  62. package/fesm2022/sdcorejs-angular-components.mjs +4 -0
  63. package/fesm2022/sdcorejs-angular-components.mjs.map +1 -1
  64. package/fesm2022/sdcorejs-angular-directives.mjs +29 -41
  65. package/fesm2022/sdcorejs-angular-directives.mjs.map +1 -1
  66. package/fesm2022/sdcorejs-angular-forms-autocomplete.mjs +9 -8
  67. package/fesm2022/sdcorejs-angular-forms-autocomplete.mjs.map +1 -1
  68. package/fesm2022/sdcorejs-angular-forms-checkbox.mjs +20 -83
  69. package/fesm2022/sdcorejs-angular-forms-checkbox.mjs.map +1 -1
  70. package/fesm2022/sdcorejs-angular-forms-chip-calendar.mjs +8 -4
  71. package/fesm2022/sdcorejs-angular-forms-chip-calendar.mjs.map +1 -1
  72. package/fesm2022/sdcorejs-angular-forms-chip.mjs +8 -4
  73. package/fesm2022/sdcorejs-angular-forms-chip.mjs.map +1 -1
  74. package/fesm2022/sdcorejs-angular-forms-date-range.mjs +18 -14
  75. package/fesm2022/sdcorejs-angular-forms-date-range.mjs.map +1 -1
  76. package/fesm2022/sdcorejs-angular-forms-date.mjs +48 -70
  77. package/fesm2022/sdcorejs-angular-forms-date.mjs.map +1 -1
  78. package/fesm2022/sdcorejs-angular-forms-datetime.mjs +62 -528
  79. package/fesm2022/sdcorejs-angular-forms-datetime.mjs.map +1 -1
  80. package/fesm2022/sdcorejs-angular-forms-entity-picker.mjs +384 -0
  81. package/fesm2022/sdcorejs-angular-forms-entity-picker.mjs.map +1 -0
  82. package/fesm2022/sdcorejs-angular-forms-input-color.mjs +5 -3
  83. package/fesm2022/sdcorejs-angular-forms-input-color.mjs.map +1 -1
  84. package/fesm2022/sdcorejs-angular-forms-input-number.mjs +16 -11
  85. package/fesm2022/sdcorejs-angular-forms-input-number.mjs.map +1 -1
  86. package/fesm2022/sdcorejs-angular-forms-input.mjs +297 -59
  87. package/fesm2022/sdcorejs-angular-forms-input.mjs.map +1 -1
  88. package/fesm2022/sdcorejs-angular-forms-models.mjs +155 -2
  89. package/fesm2022/sdcorejs-angular-forms-models.mjs.map +1 -1
  90. package/fesm2022/sdcorejs-angular-forms-radio.mjs +44 -78
  91. package/fesm2022/sdcorejs-angular-forms-radio.mjs.map +1 -1
  92. package/fesm2022/sdcorejs-angular-forms-select.mjs +8 -21
  93. package/fesm2022/sdcorejs-angular-forms-select.mjs.map +1 -1
  94. package/fesm2022/sdcorejs-angular-forms-switch.mjs +19 -76
  95. package/fesm2022/sdcorejs-angular-forms-switch.mjs.map +1 -1
  96. package/fesm2022/sdcorejs-angular-forms-textarea.mjs +8 -6
  97. package/fesm2022/sdcorejs-angular-forms-textarea.mjs.map +1 -1
  98. package/fesm2022/sdcorejs-angular-forms-time-range.mjs +280 -0
  99. package/fesm2022/sdcorejs-angular-forms-time-range.mjs.map +1 -0
  100. package/fesm2022/sdcorejs-angular-forms-time.mjs +310 -0
  101. package/fesm2022/sdcorejs-angular-forms-time.mjs.map +1 -0
  102. package/fesm2022/sdcorejs-angular-forms-tree-select.mjs +210 -0
  103. package/fesm2022/sdcorejs-angular-forms-tree-select.mjs.map +1 -0
  104. package/fesm2022/sdcorejs-angular-forms.mjs +73 -4
  105. package/fesm2022/sdcorejs-angular-forms.mjs.map +1 -1
  106. package/fesm2022/sdcorejs-angular-i18n.mjs +355 -10
  107. package/fesm2022/sdcorejs-angular-i18n.mjs.map +1 -1
  108. package/fesm2022/sdcorejs-angular-interceptors.mjs +12 -17
  109. package/fesm2022/sdcorejs-angular-interceptors.mjs.map +1 -1
  110. package/fesm2022/sdcorejs-angular-modules-icon.mjs.map +1 -1
  111. package/fesm2022/sdcorejs-angular-modules-layout.mjs +861 -80
  112. package/fesm2022/sdcorejs-angular-modules-layout.mjs.map +1 -1
  113. package/fesm2022/sdcorejs-angular-modules.mjs +0 -1
  114. package/fesm2022/sdcorejs-angular-modules.mjs.map +1 -1
  115. package/fesm2022/sdcorejs-angular-pipes.mjs +5 -7
  116. package/fesm2022/sdcorejs-angular-pipes.mjs.map +1 -1
  117. package/fesm2022/sdcorejs-angular-services-api.mjs +407 -137
  118. package/fesm2022/sdcorejs-angular-services-api.mjs.map +1 -1
  119. package/fesm2022/sdcorejs-angular-services-cache.mjs +515 -105
  120. package/fesm2022/sdcorejs-angular-services-cache.mjs.map +1 -1
  121. package/fesm2022/sdcorejs-angular-services-confirm.mjs +5 -7
  122. package/fesm2022/sdcorejs-angular-services-confirm.mjs.map +1 -1
  123. package/fesm2022/sdcorejs-angular-services-docx.mjs +7 -10
  124. package/fesm2022/sdcorejs-angular-services-docx.mjs.map +1 -1
  125. package/fesm2022/sdcorejs-angular-services-loading.mjs +340 -66
  126. package/fesm2022/sdcorejs-angular-services-loading.mjs.map +1 -1
  127. package/fesm2022/sdcorejs-angular-services-notify.mjs +7 -10
  128. package/fesm2022/sdcorejs-angular-services-notify.mjs.map +1 -1
  129. package/fesm2022/sdcorejs-angular-services-persistence.mjs +899 -0
  130. package/fesm2022/sdcorejs-angular-services-persistence.mjs.map +1 -0
  131. package/fesm2022/sdcorejs-angular-services-storage.mjs +324 -122
  132. package/fesm2022/sdcorejs-angular-services-storage.mjs.map +1 -1
  133. package/fesm2022/sdcorejs-angular-services-task.mjs +389 -0
  134. package/fesm2022/sdcorejs-angular-services-task.mjs.map +1 -0
  135. package/fesm2022/sdcorejs-angular-services-unsaved-changes.mjs +255 -0
  136. package/fesm2022/sdcorejs-angular-services-unsaved-changes.mjs.map +1 -0
  137. package/fesm2022/sdcorejs-angular-services-viewport.mjs +76 -0
  138. package/fesm2022/sdcorejs-angular-services-viewport.mjs.map +1 -0
  139. package/fesm2022/sdcorejs-angular-services.mjs +4 -0
  140. package/fesm2022/sdcorejs-angular-services.mjs.map +1 -1
  141. package/forms/autocomplete/index.d.ts +3 -4
  142. package/forms/checkbox/index.d.ts +4 -8
  143. package/forms/date/index.d.ts +3 -3
  144. package/forms/date-range/index.d.ts +6 -7
  145. package/forms/datetime/index.d.ts +3 -3
  146. package/forms/entity-picker/index.d.ts +128 -0
  147. package/forms/index.d.ts +15 -5
  148. package/forms/input/index.d.ts +76 -11
  149. package/forms/input-color/index.d.ts +3 -1
  150. package/forms/input-number/index.d.ts +4 -2
  151. package/forms/models/index.d.ts +86 -3
  152. package/forms/radio/index.d.ts +12 -8
  153. package/forms/switch/index.d.ts +4 -7
  154. package/forms/time/index.d.ts +117 -0
  155. package/forms/time-range/index.d.ts +98 -0
  156. package/forms/tree-select/index.d.ts +76 -0
  157. package/i18n/index.d.ts +68 -2
  158. package/interceptors/index.d.ts +5 -6
  159. package/modules/icon/index.d.ts +2 -3
  160. package/modules/index.d.ts +0 -1
  161. package/modules/layout/index.d.ts +288 -15
  162. package/package.json +50 -5
  163. package/pipes/index.d.ts +2 -2
  164. package/services/api/index.d.ts +68 -24
  165. package/services/cache/index.d.ts +52 -16
  166. package/services/confirm/index.d.ts +3 -2
  167. package/services/docx/index.d.ts +2 -3
  168. package/services/index.d.ts +4 -0
  169. package/services/loading/index.d.ts +16 -8
  170. package/services/persistence/index.d.ts +159 -0
  171. package/services/storage/index.d.ts +26 -8
  172. package/services/task/index.d.ts +104 -0
  173. package/services/unsaved-changes/index.d.ts +83 -0
  174. package/services/viewport/index.d.ts +42 -0
  175. package/fesm2022/sdcorejs-angular-modules-authom.mjs +0 -360
  176. package/fesm2022/sdcorejs-angular-modules-authom.mjs.map +0 -1
  177. package/modules/authom/index.d.ts +0 -70
@@ -0,0 +1,74 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { TemplateRef } from '@angular/core';
3
+
4
+ type SdAuditDiffKind = 'added' | 'removed' | 'changed' | 'unchanged';
5
+ type SdAuditDiffSide = 'before' | 'after';
6
+ type SdAuditDiffArrayKey = string | ((item: unknown) => unknown);
7
+ interface SdAuditDiffFormatContext {
8
+ readonly path: string;
9
+ readonly configPath: string;
10
+ readonly side: SdAuditDiffSide;
11
+ readonly kind: SdAuditDiffKind;
12
+ readonly before: unknown;
13
+ readonly after: unknown;
14
+ }
15
+ interface SdAuditDiffField {
16
+ readonly path: string;
17
+ readonly label?: string;
18
+ readonly order?: number;
19
+ readonly hidden?: boolean;
20
+ readonly redacted?: boolean;
21
+ readonly arrayKey?: SdAuditDiffArrayKey;
22
+ readonly enumMap?: Readonly<Record<string, unknown>>;
23
+ readonly format?: (value: unknown, context: SdAuditDiffFormatContext) => unknown;
24
+ }
25
+ interface SdAuditDiffOptions {
26
+ readonly fields?: readonly SdAuditDiffField[];
27
+ readonly includeUnchanged?: boolean;
28
+ readonly redactedValue?: unknown;
29
+ readonly rootLabel?: string;
30
+ }
31
+ interface SdAuditDiffRow {
32
+ readonly id: string;
33
+ readonly path: string;
34
+ readonly configPath: string;
35
+ readonly label: string;
36
+ readonly kind: SdAuditDiffKind;
37
+ readonly before: unknown;
38
+ readonly after: unknown;
39
+ readonly beforePresent: boolean;
40
+ readonly afterPresent: boolean;
41
+ readonly redacted: boolean;
42
+ }
43
+ declare function sdBuildAuditDiff(before: unknown, after: unknown, options?: SdAuditDiffOptions): SdAuditDiffRow[];
44
+
45
+ type SdAuditDiffMode = 'table' | 'detail-list';
46
+ interface SdAuditDiffValueTemplateContext {
47
+ readonly $implicit: unknown;
48
+ readonly row: SdAuditDiffRow;
49
+ readonly side: SdAuditDiffSide;
50
+ }
51
+ declare class SdAuditDiffValueTemplateDirective {
52
+ readonly template: TemplateRef<SdAuditDiffValueTemplateContext>;
53
+ static ngTemplateContextGuard(_directive: SdAuditDiffValueTemplateDirective, _context: unknown): _context is SdAuditDiffValueTemplateContext;
54
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SdAuditDiffValueTemplateDirective, never>;
55
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SdAuditDiffValueTemplateDirective, "ng-template[sdAuditDiffValue]", never, {}, {}, never, never, true, never>;
56
+ }
57
+ declare class SdAuditDiff {
58
+ #private;
59
+ readonly before: _angular_core.InputSignal<unknown>;
60
+ readonly after: _angular_core.InputSignal<unknown>;
61
+ readonly options: _angular_core.InputSignal<SdAuditDiffOptions>;
62
+ readonly mode: _angular_core.InputSignal<SdAuditDiffMode>;
63
+ readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
64
+ readonly rows: _angular_core.Signal<SdAuditDiffRow[]>;
65
+ protected readonly valueTemplate: _angular_core.Signal<SdAuditDiffValueTemplateDirective | undefined>;
66
+ protected text(key: string): string;
67
+ protected valueContext(row: SdAuditDiffRow, side: SdAuditDiffSide): SdAuditDiffValueTemplateContext;
68
+ protected displayValue(row: SdAuditDiffRow, side: SdAuditDiffSide): string;
69
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SdAuditDiff, never>;
70
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SdAuditDiff, "sd-audit-diff", never, { "before": { "alias": "before"; "required": false; "isSignal": true; }; "after": { "alias": "after"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, {}, ["valueTemplate"], never, true, never>;
71
+ }
72
+
73
+ export { SdAuditDiff, SdAuditDiffValueTemplateDirective, sdBuildAuditDiff };
74
+ export type { SdAuditDiffArrayKey, SdAuditDiffField, SdAuditDiffFormatContext, SdAuditDiffKind, SdAuditDiffMode, SdAuditDiffOptions, SdAuditDiffRow, SdAuditDiffSide, SdAuditDiffValueTemplateContext };
@@ -20,7 +20,7 @@ declare class SdBadge {
20
20
  tooltip: _angular_core.InputSignal<string | null | undefined>;
21
21
  icon: _angular_core.InputSignal<string | null | undefined>;
22
22
  size: _angular_core.InputSignalWithTransform<Size, Size | null | undefined>;
23
- click: EventEmitter<Event>;
23
+ readonly click: EventEmitter<Event>;
24
24
  onClick: (event: Event) => void;
25
25
  effectiveColor: _angular_core.Signal<Color>;
26
26
  baseColorClasses: _angular_core.Signal<{
@@ -0,0 +1,53 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { TemplateRef } from '@angular/core';
3
+ import { ActivatedRouteSnapshot } from '@angular/router';
4
+ import { MaybeAsync } from '@sdcorejs/utils/models';
5
+ import { SdIconSet } from '@sdcorejs/angular/modules/icon';
6
+
7
+ type SdBreadcrumbLabel = MaybeAsync<string | null | undefined> | ((route?: ActivatedRouteSnapshot) => MaybeAsync<string | null | undefined>);
8
+ interface SdBreadcrumbItem {
9
+ readonly label: SdBreadcrumbLabel;
10
+ readonly url?: string | unknown[];
11
+ readonly icon?: string;
12
+ readonly fontSet?: SdIconSet;
13
+ readonly disabled?: boolean;
14
+ readonly clickable?: boolean;
15
+ }
16
+ interface SdBreadcrumbRouteConfig extends Omit<SdBreadcrumbItem, 'url'> {
17
+ readonly url?: string | unknown[];
18
+ }
19
+ interface SdBreadcrumbResolvedItem extends Omit<SdBreadcrumbItem, 'label'> {
20
+ readonly label: string;
21
+ readonly source: SdBreadcrumbItem;
22
+ }
23
+ interface SdBreadcrumbItemTemplateContext {
24
+ readonly $implicit: SdBreadcrumbResolvedItem;
25
+ readonly item: SdBreadcrumbResolvedItem;
26
+ }
27
+ interface SdBreadcrumbItemEntry {
28
+ readonly kind: 'item';
29
+ readonly item: SdBreadcrumbResolvedItem;
30
+ }
31
+ interface SdBreadcrumbEllipsisEntry {
32
+ readonly kind: 'ellipsis';
33
+ }
34
+ type SdBreadcrumbEntry = SdBreadcrumbItemEntry | SdBreadcrumbEllipsisEntry;
35
+ declare class SdBreadcrumb {
36
+ #private;
37
+ readonly items: _angular_core.InputSignal<readonly SdBreadcrumbItem[] | null | undefined>;
38
+ readonly maxItems: _angular_core.InputSignalWithTransform<number, string | number | null | undefined>;
39
+ readonly ariaLabel: _angular_core.InputSignal<string>;
40
+ readonly separator: _angular_core.InputSignal<string>;
41
+ readonly sdItemActivate: _angular_core.OutputEmitterRef<SdBreadcrumbItem>;
42
+ protected readonly itemTemplate: _angular_core.Signal<TemplateRef<SdBreadcrumbItemTemplateContext> | undefined>;
43
+ protected readonly visibleEntries: _angular_core.Signal<readonly SdBreadcrumbEntry[]>;
44
+ constructor();
45
+ protected activate(item: SdBreadcrumbResolvedItem, event: Event): void;
46
+ protected href(item: SdBreadcrumbResolvedItem): string | null;
47
+ protected templateContext(item: SdBreadcrumbResolvedItem): SdBreadcrumbItemTemplateContext;
48
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SdBreadcrumb, never>;
49
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SdBreadcrumb, "sd-breadcrumb", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "maxItems": { "alias": "maxItems"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "separator": { "alias": "separator"; "required": false; "isSignal": true; }; }, { "sdItemActivate": "sdItemActivate"; }, ["itemTemplate"], never, true, never>;
50
+ }
51
+
52
+ export { SdBreadcrumb };
53
+ export type { SdBreadcrumbItem, SdBreadcrumbItemTemplateContext, SdBreadcrumbLabel, SdBreadcrumbResolvedItem, SdBreadcrumbRouteConfig };
@@ -0,0 +1,44 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { TemplateRef } from '@angular/core';
3
+ import { SdIconSet } from '@sdcorejs/angular/modules/icon';
4
+
5
+ type SdDataStateKind = 'loading' | 'empty' | 'error' | 'forbidden' | 'success';
6
+ interface SdDataStateTemplateContext {
7
+ readonly $implicit: SdDataStateKind;
8
+ readonly state: SdDataStateKind;
9
+ readonly retry: () => void;
10
+ readonly action: () => void;
11
+ }
12
+ declare class SdDataStateTemplateDirective {
13
+ readonly template: TemplateRef<SdDataStateTemplateContext>;
14
+ static ngTemplateContextGuard(_directive: SdDataStateTemplateDirective, _context: unknown): _context is SdDataStateTemplateContext;
15
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SdDataStateTemplateDirective, never>;
16
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SdDataStateTemplateDirective, "ng-template[sdDataStateTemplate]", never, {}, {}, never, never, true, never>;
17
+ }
18
+ declare class SdDataState {
19
+ readonly state: _angular_core.InputSignal<SdDataStateKind>;
20
+ readonly title: _angular_core.InputSignal<string | null | undefined>;
21
+ readonly message: _angular_core.InputSignal<string | null | undefined>;
22
+ readonly icon: _angular_core.InputSignal<string | null | undefined>;
23
+ readonly fontSet: _angular_core.InputSignal<SdIconSet | undefined>;
24
+ readonly retryable: _angular_core.InputSignalWithTransform<boolean, unknown>;
25
+ readonly retryLabel: _angular_core.InputSignal<string | null | undefined>;
26
+ readonly actionLabel: _angular_core.InputSignal<string | null | undefined>;
27
+ readonly compact: _angular_core.InputSignalWithTransform<boolean, unknown>;
28
+ readonly fullPage: _angular_core.InputSignalWithTransform<boolean, unknown>;
29
+ readonly sdRetry: _angular_core.OutputEmitterRef<void>;
30
+ readonly sdAction: _angular_core.OutputEmitterRef<void>;
31
+ protected readonly customTemplate: _angular_core.Signal<SdDataStateTemplateDirective | undefined>;
32
+ protected readonly effectiveIcon: _angular_core.Signal<string | null>;
33
+ protected readonly titleKey: _angular_core.Signal<string>;
34
+ protected readonly messageKey: _angular_core.Signal<string>;
35
+ protected readonly role: _angular_core.Signal<"alert" | "status">;
36
+ protected readonly retry: () => void;
37
+ protected readonly action: () => void;
38
+ protected readonly templateContext: _angular_core.Signal<SdDataStateTemplateContext>;
39
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SdDataState, never>;
40
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SdDataState, "sd-data-state", never, { "state": { "alias": "state"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "message": { "alias": "message"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "fontSet": { "alias": "fontSet"; "required": false; "isSignal": true; }; "retryable": { "alias": "retryable"; "required": false; "isSignal": true; }; "retryLabel": { "alias": "retryLabel"; "required": false; "isSignal": true; }; "actionLabel": { "alias": "actionLabel"; "required": false; "isSignal": true; }; "compact": { "alias": "compact"; "required": false; "isSignal": true; }; "fullPage": { "alias": "fullPage"; "required": false; "isSignal": true; }; }, { "sdRetry": "sdRetry"; "sdAction": "sdAction"; }, ["customTemplate"], ["*"], true, never>;
41
+ }
42
+
43
+ export { SdDataState, SdDataStateTemplateDirective };
44
+ export type { SdDataStateKind, SdDataStateTemplateContext };
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { EventEmitter, OnInit, OnDestroy } from '@angular/core';
2
+ import { OnInit, OnDestroy } from '@angular/core';
3
3
  import { ModelRange, EditorConfig, ModelDocumentSelection, EventInfo, ViewDataTransfer, ClassicEditor, Plugin, Widget, ContextualBalloon } from 'ckeditor5';
4
4
  import { I18nParams } from '@sdcorejs/angular/i18n';
5
5
 
@@ -103,7 +103,7 @@ declare class SdHeaderFooterBuilder {
103
103
  #private;
104
104
  Editor: typeof ClassicEditor;
105
105
  set model(value: string | undefined | null);
106
- modelChange: EventEmitter<string>;
106
+ readonly modelChange: i0.OutputEmitterRef<string>;
107
107
  config: EditorConfig & {
108
108
  _i18n?: DocumentBuilderI18n;
109
109
  };
@@ -201,10 +201,10 @@ declare class CkCommentPlugin extends Plugin {
201
201
 
202
202
  declare class SdDocumentBuilder implements OnInit, OnDestroy {
203
203
  #private;
204
- option: SdDocumentBuilderOption;
204
+ readonly option: i0.InputSignal<SdDocumentBuilderOption>;
205
205
  disabled: boolean;
206
206
  set _disabled(val: boolean | '' | undefined | null);
207
- contentChange: EventEmitter<string>;
207
+ readonly contentChange: i0.OutputEmitterRef<string>;
208
208
  Editor: typeof ClassicEditor;
209
209
  config: DocumentBuilderOption;
210
210
  ngOnInit(): void;
@@ -245,7 +245,7 @@ declare class SdDocumentBuilder implements OnInit, OnDestroy {
245
245
  hightSelectRange: (range: ModelRange) => void;
246
246
  removeHighlightSeclectRange: () => void;
247
247
  static ɵfac: i0.ɵɵFactoryDeclaration<SdDocumentBuilder, never>;
248
- static ɵcmp: i0.ɵɵComponentDeclaration<SdDocumentBuilder, "sd-document-builder", never, { "option": { "alias": "option"; "required": true; }; "_disabled": { "alias": "disabled"; "required": false; }; }, { "contentChange": "contentChange"; }, never, never, true, never>;
248
+ static ɵcmp: i0.ɵɵComponentDeclaration<SdDocumentBuilder, "sd-document-builder", never, { "option": { "alias": "option"; "required": true; "isSignal": true; }; "_disabled": { "alias": "disabled"; "required": false; }; }, { "contentChange": "contentChange"; }, never, never, true, never>;
249
249
  }
250
250
 
251
251
  export { SdDocumentBuilder, SdHeaderFooterBuilder };
@@ -1,18 +1,17 @@
1
- import * as i0 from '@angular/core';
2
- import { InjectionToken, PipeTransform, OnDestroy, OnInit, ChangeDetectorRef, AfterViewInit, QueryList, EventEmitter } from '@angular/core';
1
+ import * as _angular_core from '@angular/core';
2
+ import { InjectionToken, OnDestroy, OnInit, AfterViewInit, QueryList } from '@angular/core';
3
3
  import { SdSearch, SdCustomValidator } from '@sdcorejs/angular/forms/models';
4
4
  import { SdTableColumn, SdTableOption, SdTable } from '@sdcorejs/angular/components/table';
5
5
  import { SdUploadFile } from '@sdcorejs/angular/components/upload-file';
6
6
  import { Operator as Operator$1, ValidationPatternType, Color } from '@sdcorejs/utils/models';
7
7
  import { SdUnwrapSignal } from '@sdcorejs/angular/utilities/models';
8
- import { CdkDragMove, CdkDragDrop, CdkDrag, CdkDropList } from '@angular/cdk/drag-drop';
8
+ import { CdkDropList, CdkDragMove, CdkDragDrop, CdkDragEnter, CdkDragSortEvent, CdkDrag } from '@angular/cdk/drag-drop';
9
9
  import { FormGroup } from '@angular/forms';
10
10
  import { SdModal } from '@sdcorejs/angular/components/modal';
11
11
  import { Subject } from 'rxjs';
12
12
  import { SdSideDrawer } from '@sdcorejs/angular/components/side-drawer';
13
13
  import { SdSearch as SdSearch$1 } from '@sdcorejs/angular/forms';
14
14
  import * as _sdcorejs_angular_components_form_generic from '@sdcorejs/angular/components/form-generic';
15
- import { SdFormatNumberPipe } from '@sdcorejs/angular/pipes';
16
15
 
17
16
  type SdFormRenderEntity = Record<string, any> & {
18
17
  sdRaw?: Record<string, any>;
@@ -541,63 +540,15 @@ interface ISdFormGenericConfiguration {
541
540
  }
542
541
  declare const SD_FORM_GENERIC_CONFIGURATION: InjectionToken<ISdFormGenericConfiguration>;
543
542
 
544
- declare class FormGenericService {
545
- #private;
546
- private readonly configuration;
547
- get selections(): (() => Promise<SdFormGenericDefinitionSelection[]>) | SdFormGenericDefinitionSelection<any, any>[] | (() => SdFormGenericDefinitionSelection<any, any>[]);
548
- get tables(): _sdcorejs_angular_components_form_generic.SdFormGenericDefinitionTable<any>[];
549
- getSelection: (valuesKey: string | undefined | null) => Promise<SdFormGenericDefinitionSelection | undefined>;
550
- selection: {
551
- definitions: () => Promise<SdFormGenericDefinitionSelection[]>;
552
- getDefinition: (valuesKey: string | undefined | null) => Promise<SdFormGenericDefinitionSelection | undefined>;
553
- items: (valuesKey: string | undefined | null, args: SdFormGenericArgs) => Promise<SdFormGenericSelectionItem[] | SdSearch$1<SdFormGenericSelectionItem>>;
554
- variables: {
555
- detail: (valuesKey: string, values: string | number | string[] | number[], args: SdFormGenericArgs) => Promise<any>;
556
- };
557
- };
558
- html: {
559
- definitions: () => Promise<SdFormGenericDefinitionHtml[]>;
560
- getContent: (template: string, query?: Record<string, any>) => Promise<string>;
561
- };
562
- static ɵfac: i0.ɵɵFactoryDeclaration<FormGenericService, never>;
563
- static ɵprov: i0.ɵɵInjectableDeclaration<FormGenericService>;
564
- }
565
-
566
- declare class ComponentViewedPipe implements PipeTransform {
567
- private readonly formatNumberPipe;
568
- private readonly formGenericService;
569
- constructor(formatNumberPipe: SdFormatNumberPipe, formGenericService: FormGenericService);
570
- transform: (value: any, entity: Record<string, any>, component: Exclude<SdFormGenericComponent, SdFormGenericHtml>) => Promise<string>;
571
- static ɵfac: i0.ɵɵFactoryDeclaration<ComponentViewedPipe, never>;
572
- static ɵpipe: i0.ɵɵPipeDeclaration<ComponentViewedPipe, "componentViewed", true>;
573
- static ɵprov: i0.ɵɵInjectableDeclaration<ComponentViewedPipe>;
574
- }
575
-
576
- declare class ExpressionFeelPipe implements PipeTransform {
577
- #private;
578
- transform(condition: SdFormGenericExpression | SdFormGenericExpressionCondition): string | undefined;
579
- static ɵfac: i0.ɵɵFactoryDeclaration<ExpressionFeelPipe, never>;
580
- static ɵpipe: i0.ɵɵPipeDeclaration<ExpressionFeelPipe, "expressionFeel", true>;
581
- static ɵprov: i0.ɵɵInjectableDeclaration<ExpressionFeelPipe>;
582
- }
583
-
584
- declare class SdFormRenderService {
585
- private readonly componentViewedPipe;
586
- constructor(componentViewedPipe: ComponentViewedPipe);
587
- viewEntities: (form: SdFormGeneric, entities: Record<string, any>[]) => Promise<Record<string, any>[]>;
588
- static ɵfac: i0.ɵɵFactoryDeclaration<SdFormRenderService, never>;
589
- static ɵprov: i0.ɵɵInjectableDeclaration<SdFormRenderService>;
590
- }
591
-
592
543
  declare class UploadComponent implements OnDestroy, OnInit {
593
544
  #private;
594
545
  private readonly ref;
595
- setVariables: Subject<{
546
+ readonly setVariables: _angular_core.InputSignal<Subject<{
596
547
  key: string;
597
548
  value: any;
598
- }>;
549
+ }>>;
599
550
  sdUploadFile?: SdUploadFile;
600
- form: FormGroup<{}>;
551
+ readonly form: _angular_core.InputSignal<FormGroup<{}>>;
601
552
  value: any;
602
553
  entity: Record<string, any>;
603
554
  set _entity(val: Record<string, any>);
@@ -611,12 +562,13 @@ declare class UploadComponent implements OnDestroy, OnInit {
611
562
  set _viewed(val: boolean | '' | undefined | null);
612
563
  validator?: SdCustomValidator;
613
564
  set _validator(validator: SdCustomValidator | undefined | null);
614
- constructor(ref: ChangeDetectorRef);
565
+ /** Inserted by Angular inject() migration for backwards compatibility */
566
+ constructor(...args: unknown[]);
615
567
  ngOnDestroy(): void;
616
568
  ngOnInit(): void;
617
569
  upload: () => Promise<void | undefined>;
618
- static ɵfac: i0.ɵɵFactoryDeclaration<UploadComponent, never>;
619
- static ɵcmp: i0.ɵɵComponentDeclaration<UploadComponent, "lib-upload", never, { "setVariables": { "alias": "setVariables"; "required": true; }; "form": { "alias": "form"; "required": false; }; "_entity": { "alias": "entity"; "required": true; }; "_component": { "alias": "component"; "required": true; }; "_disabled": { "alias": "disabled"; "required": false; }; "_required": { "alias": "required"; "required": false; }; "_viewed": { "alias": "viewed"; "required": false; }; "_validator": { "alias": "validator"; "required": false; }; }, {}, never, never, true, never>;
570
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<UploadComponent, never>;
571
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UploadComponent, "lib-upload", never, { "setVariables": { "alias": "setVariables"; "required": true; "isSignal": true; }; "form": { "alias": "form"; "required": false; "isSignal": true; }; "_entity": { "alias": "entity"; "required": true; }; "_component": { "alias": "component"; "required": true; }; "_disabled": { "alias": "disabled"; "required": false; }; "_required": { "alias": "required"; "required": false; }; "_viewed": { "alias": "viewed"; "required": false; }; "_validator": { "alias": "validator"; "required": false; }; }, {}, never, never, true, never>;
620
572
  }
621
573
 
622
574
  declare class TableComponent implements AfterViewInit, OnDestroy, OnInit {
@@ -626,11 +578,11 @@ declare class TableComponent implements AfterViewInit, OnDestroy, OnInit {
626
578
  uploadFiles?: QueryList<SdUploadFile>;
627
579
  table?: SdTable;
628
580
  sideDrawer?: SdSideDrawer;
629
- setVariables: Subject<{
581
+ readonly setVariables: _angular_core.InputSignal<Subject<{
630
582
  key: string;
631
583
  value: any;
632
- }>;
633
- form: FormGroup<{}>;
584
+ }>>;
585
+ readonly form: _angular_core.InputSignal<FormGroup<{}>>;
634
586
  component?: SdFormGenericTable;
635
587
  col: string;
636
588
  set _component(val: SdFormGenericTable);
@@ -640,14 +592,15 @@ declare class TableComponent implements AfterViewInit, OnDestroy, OnInit {
640
592
  set _viewed(val: boolean | '' | undefined | null);
641
593
  model: any[];
642
594
  set _model(val: any[] | undefined | null);
643
- modelChange: EventEmitter<any[]>;
595
+ readonly modelChange: _angular_core.OutputEmitterRef<any[]>;
644
596
  tableOption?: SdTableOption;
645
597
  row: any;
646
598
  columnValues: Record<string, SdFormGenericSelectionItem[] | SdSearch$1>;
647
599
  formRenderColumn: Record<string, SdFormGenericTableColumn>;
648
600
  fileKeys: string[];
649
601
  imageKeys: string[];
650
- constructor(ref: ChangeDetectorRef, formGenericService: FormGenericService);
602
+ /** Inserted by Angular inject() migration for backwards compatibility */
603
+ constructor(...args: unknown[]);
651
604
  ngOnInit(): void;
652
605
  ngAfterViewInit(): void;
653
606
  ngOnDestroy(): void;
@@ -657,18 +610,18 @@ declare class TableComponent implements AfterViewInit, OnDestroy, OnInit {
657
610
  onFileUploadChange(item: any, key: string, newValue: any): void;
658
611
  getArgs(key: string): Record<string, any> | undefined;
659
612
  upload: () => Promise<void>;
660
- static ɵfac: i0.ɵɵFactoryDeclaration<TableComponent, never>;
661
- static ɵcmp: i0.ɵɵComponentDeclaration<TableComponent, "lib-table", never, { "setVariables": { "alias": "setVariables"; "required": true; }; "form": { "alias": "form"; "required": false; }; "_component": { "alias": "component"; "required": true; }; "_required": { "alias": "required"; "required": false; }; "_viewed": { "alias": "viewed"; "required": false; }; "_model": { "alias": "model"; "required": false; }; }, { "modelChange": "modelChange"; }, never, never, true, never>;
613
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TableComponent, never>;
614
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TableComponent, "lib-table", never, { "setVariables": { "alias": "setVariables"; "required": true; "isSignal": true; }; "form": { "alias": "form"; "required": false; "isSignal": true; }; "_component": { "alias": "component"; "required": true; }; "_required": { "alias": "required"; "required": false; }; "_viewed": { "alias": "viewed"; "required": false; }; "_model": { "alias": "model"; "required": false; }; }, { "modelChange": "modelChange"; }, never, never, true, never>;
662
615
  }
663
616
 
664
617
  declare class LibItemComponent {
665
618
  itemUpload?: UploadComponent;
666
619
  itemTable?: TableComponent;
667
- setVariables: Subject<{
620
+ readonly setVariables: _angular_core.InputSignal<Subject<{
668
621
  key: string;
669
622
  value: any;
670
- }>;
671
- form: FormGroup<{}>;
623
+ }>>;
624
+ readonly form: _angular_core.InputSignal<FormGroup<{}>>;
672
625
  value: any;
673
626
  entity: Record<string, any>;
674
627
  set _entity(val: Record<string, any>);
@@ -684,8 +637,8 @@ declare class LibItemComponent {
684
637
  validator?: SdCustomValidator;
685
638
  set _validator(validator: SdCustomValidator);
686
639
  upload: () => Promise<void>;
687
- static ɵfac: i0.ɵɵFactoryDeclaration<LibItemComponent, never>;
688
- static ɵcmp: i0.ɵɵComponentDeclaration<LibItemComponent, "lib-item", never, { "setVariables": { "alias": "setVariables"; "required": true; }; "form": { "alias": "form"; "required": false; }; "_entity": { "alias": "entity"; "required": true; }; "_component": { "alias": "component"; "required": true; }; "_disabled": { "alias": "disabled"; "required": false; }; "_required": { "alias": "required"; "required": false; }; "_viewed": { "alias": "viewed"; "required": false; }; "_validator": { "alias": "validator"; "required": false; }; }, {}, never, never, true, never>;
640
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<LibItemComponent, never>;
641
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<LibItemComponent, "lib-item", never, { "setVariables": { "alias": "setVariables"; "required": true; "isSignal": true; }; "form": { "alias": "form"; "required": false; "isSignal": true; }; "_entity": { "alias": "entity"; "required": true; }; "_component": { "alias": "component"; "required": true; }; "_disabled": { "alias": "disabled"; "required": false; }; "_required": { "alias": "required"; "required": false; }; "_viewed": { "alias": "viewed"; "required": false; }; "_validator": { "alias": "validator"; "required": false; }; }, {}, never, never, true, never>;
689
642
  }
690
643
 
691
644
  declare class SdFormRender implements OnDestroy, AfterViewInit {
@@ -714,8 +667,8 @@ declare class SdFormRender implements OnDestroy, AfterViewInit {
714
667
  ngOnDestroy(): void;
715
668
  upload: () => Promise<void>;
716
669
  getValidationMessages: (alert: SdFormGenericValidation["alert"]) => Promise<string[] | undefined>;
717
- static ɵfac: i0.ɵɵFactoryDeclaration<SdFormRender, never>;
718
- static ɵcmp: i0.ɵɵComponentDeclaration<SdFormRender, "sd-form-render", never, { "form": { "alias": "form"; "required": false; }; "_configuration": { "alias": "configuration"; "required": true; }; "_default": { "alias": "defaultEntity"; "required": false; }; "_entity": { "alias": "entity"; "required": false; }; "_properties": { "alias": "properties"; "required": false; }; "_viewed": { "alias": "viewed"; "required": false; }; }, {}, never, never, true, never>;
670
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SdFormRender, never>;
671
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SdFormRender, "sd-form-render", never, { "form": { "alias": "form"; "required": false; }; "_configuration": { "alias": "configuration"; "required": true; }; "_default": { "alias": "defaultEntity"; "required": false; }; "_entity": { "alias": "entity"; "required": false; }; "_properties": { "alias": "properties"; "required": false; }; "_viewed": { "alias": "viewed"; "required": false; }; }, {}, never, never, true, never>;
719
672
  }
720
673
 
721
674
  declare class ConfigureValidationComponent implements AfterViewInit, OnDestroy {
@@ -728,7 +681,7 @@ declare class ConfigureValidationComponent implements AfterViewInit, OnDestroy {
728
681
  value: string;
729
682
  display: string;
730
683
  }[];
731
- accept: EventEmitter<SdFormGenericValidation[]>;
684
+ readonly accept: _angular_core.OutputEmitterRef<SdFormGenericValidation[]>;
732
685
  private readonly ref;
733
686
  private readonly formGenericConfiguration;
734
687
  constructor();
@@ -738,8 +691,8 @@ declare class ConfigureValidationComponent implements AfterViewInit, OnDestroy {
738
691
  addValidation: (type: SdFormGenericValidation["type"]) => void;
739
692
  removaValidation: (index: number) => void;
740
693
  updateValidations: () => void;
741
- static ɵfac: i0.ɵɵFactoryDeclaration<ConfigureValidationComponent, never>;
742
- static ɵcmp: i0.ɵɵComponentDeclaration<ConfigureValidationComponent, "configure-validation", never, {}, { "accept": "accept"; }, never, never, true, never>;
694
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ConfigureValidationComponent, never>;
695
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ConfigureValidationComponent, "configure-validation", never, {}, { "accept": "accept"; }, never, never, true, never>;
743
696
  }
744
697
 
745
698
  type FormBuilderLayoutItem = SdFormGenericComponent | SdFormGenericGroup;
@@ -758,22 +711,37 @@ interface ResizeState {
758
711
  columns: string;
759
712
  }
760
713
  type RowInsertionEdge = 'before' | 'after';
714
+ type PaletteDropTarget = {
715
+ kind: 'empty';
716
+ } | {
717
+ kind: 'inline';
718
+ rowId: string;
719
+ index: number;
720
+ columns: string;
721
+ } | {
722
+ kind: 'edge';
723
+ rowId: string;
724
+ edge: RowInsertionEdge;
725
+ };
761
726
  declare class SdFormBuilder implements OnInit, OnDestroy {
762
727
  #private;
763
- readonly popupViewJSON: i0.Signal<SdModal | undefined>;
764
- readonly popupConfigureVariables: i0.Signal<SdModal | undefined>;
765
- readonly configureValidation: i0.Signal<ConfigureValidationComponent | undefined>;
766
- readonly formRender: i0.Signal<SdFormRender | undefined>;
728
+ readonly popupViewJSON: _angular_core.Signal<SdModal | undefined>;
729
+ readonly popupConfigureVariables: _angular_core.Signal<SdModal | undefined>;
730
+ readonly configureValidation: _angular_core.Signal<ConfigureValidationComponent | undefined>;
731
+ readonly formRender: _angular_core.Signal<SdFormRender | undefined>;
732
+ private readonly canvasDropZone;
733
+ readonly rowDropLists: _angular_core.Signal<readonly CdkDropList<any>[]>;
734
+ readonly connectedRowDropLists: _angular_core.Signal<CdkDropList<any>[]>;
767
735
  form: FormGroup<{}>;
768
736
  /** Input chính: schema form. Mỗi lần ref thay đổi → effect sẽ clone về local arrays. */
769
- readonly formGeneric: i0.InputSignal<SdFormGeneric | undefined>;
737
+ readonly formGeneric: _angular_core.InputSignal<SdFormGeneric | undefined>;
770
738
  readonly formBuilderComponents: FormBuilderComponent[];
771
739
  readonly componentIcons: Record<string, {
772
740
  symbol: string;
773
741
  label: string;
774
742
  }>;
775
- readonly paletteSearch: i0.WritableSignal<string>;
776
- readonly paletteGroups: i0.Signal<{
743
+ readonly paletteSearch: _angular_core.WritableSignal<string>;
744
+ readonly paletteGroups: _angular_core.Signal<{
777
745
  key: FormBuilderComponentGroup;
778
746
  label: string;
779
747
  items: FormBuilderComponent[];
@@ -783,20 +751,23 @@ declare class SdFormBuilder implements OnInit, OnDestroy {
783
751
  validations: Required<SdFormGeneric>['validations'];
784
752
  /** Cloned variables — dùng cho modal "Configure variables" (huỷ thì discard, ok thì gán ngược). */
785
753
  clonedVariables: SdFormGenericVariable[];
786
- readonly selectedComponent: i0.WritableSignal<SdFormGenericComponent | SdFormGenericGroup | undefined>;
787
- readonly isPreview: i0.WritableSignal<boolean>;
788
- readonly editingGroupId: i0.WritableSignal<string | undefined>;
754
+ readonly selectedComponent: _angular_core.WritableSignal<SdFormGenericComponent | SdFormGenericGroup | undefined>;
755
+ readonly isPreview: _angular_core.WritableSignal<boolean>;
756
+ readonly editingGroupId: _angular_core.WritableSignal<string | undefined>;
789
757
  /** Group đang được Detail (tìm ở TOP-LEVEL theo id), undefined = đang ở canvas chính. */
790
- readonly editingGroup: i0.Signal<SdFormGenericGroup | undefined>;
758
+ readonly editingGroup: _angular_core.Signal<SdFormGenericGroup | undefined>;
791
759
  /** Signal toàn cục: TRUE khi BẤT KỲ cdkDrag nào đang active (palette, canvas, group, resize).
792
760
  * Trigger class `.fb-shell--dragging` để ẩn hover/actions/resize toàn diện, không phụ thuộc :has(). */
793
- readonly isAnyDragging: i0.WritableSignal<boolean>;
794
- readonly dragSource: i0.WritableSignal<"row" | "palette" | "canvas" | "resize" | undefined>;
795
- readonly draggedPaletteItem: i0.WritableSignal<FormBuilderComponent | undefined>;
796
- readonly rowInsertionEdge: i0.WritableSignal<RowInsertionEdge>;
797
- readonly inlineDropTargetRow: i0.WritableSignal<DragDropRowItem | undefined>;
798
- readonly resizeState: i0.WritableSignal<ResizeState | undefined>;
799
- readonly isResizing: i0.Signal<boolean>;
761
+ readonly isAnyDragging: _angular_core.WritableSignal<boolean>;
762
+ readonly dragSource: _angular_core.WritableSignal<"row" | "palette" | "canvas" | "resize" | undefined>;
763
+ readonly draggedPaletteItem: _angular_core.WritableSignal<FormBuilderComponent | undefined>;
764
+ readonly paletteDropTarget: _angular_core.WritableSignal<PaletteDropTarget | undefined>;
765
+ /** @deprecated Internal drag-preview compatibility mirror; use no application code. */
766
+ readonly rowInsertionEdge: _angular_core.WritableSignal<RowInsertionEdge>;
767
+ /** @deprecated Internal drag-preview compatibility mirror; use no application code. */
768
+ readonly inlineDropTargetRow: _angular_core.WritableSignal<DragDropRowItem | undefined>;
769
+ readonly resizeState: _angular_core.WritableSignal<ResizeState | undefined>;
770
+ readonly isResizing: _angular_core.Signal<boolean>;
800
771
  expand: boolean;
801
772
  dragDropRows: DragDropRowItem[];
802
773
  isDragging: boolean;
@@ -855,8 +826,13 @@ declare class SdFormBuilder implements OnInit, OnDestroy {
855
826
  isRowFull: (row: DragDropRowItem) => boolean;
856
827
  isRowInlineDropLocked: (row: DragDropRowItem) => boolean;
857
828
  shouldShowRowInsertionPlaceholder: (row: DragDropRowItem, edge?: RowInsertionEdge) => boolean;
858
- onRowItemsDropEntered: (row: DragDropRowItem) => void;
829
+ shouldShowInlinePalettePlaceholder: (row: DragDropRowItem, index: number) => boolean;
830
+ isPaletteEmptyDropTarget: () => boolean;
831
+ palettePlaceholderColumnsFor: (row?: DragDropRowItem) => number;
832
+ onRowItemsDropEntered: (row: DragDropRowItem, event?: CdkDragEnter<any[]>) => void;
833
+ onRowItemsDropSorted: (row: DragDropRowItem, event: CdkDragSortEvent<any[]>) => void;
859
834
  onRowItemsDropExited: (row: DragDropRowItem) => void;
835
+ canEnterCanvasDropList: (drag: CdkDrag<FormBuilderComponent | SdFormGenericComponent | SdFormGenericGroup | DragDropRowItem>) => boolean;
860
836
  canEnterRowDropList: (drag: CdkDrag<FormBuilderComponent | SdFormGenericComponent | SdFormGenericGroup>, drop: CdkDropList<(SdFormGenericComponent | SdFormGenericGroup)[]>) => boolean;
861
837
  onFocus: (event: FocusEvent) => void;
862
838
  xuLyKeoCheo: (dragItem?: SdFormGenericComponent | SdFormGenericGroup) => void;
@@ -879,8 +855,8 @@ declare class SdFormBuilder implements OnInit, OnDestroy {
879
855
  openConfigureValidation: () => void;
880
856
  onUpdateValidations: (validations: SdFormGenericValidation[]) => void;
881
857
  onValidate: () => Promise<void>;
882
- static ɵfac: i0.ɵɵFactoryDeclaration<SdFormBuilder, never>;
883
- static ɵcmp: i0.ɵɵComponentDeclaration<SdFormBuilder, "sd-form-builder", never, { "formGeneric": { "alias": "formGeneric"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
858
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SdFormBuilder, never>;
859
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SdFormBuilder, "sd-form-builder", never, { "formGeneric": { "alias": "formGeneric"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
884
860
  }
885
861
 
886
862
  declare class SdFeelExpression implements OnInit {
@@ -897,26 +873,36 @@ declare class SdFeelExpression implements OnInit {
897
873
  }[]>;
898
874
  attributes: Attribute[];
899
875
  attribute: Record<string, Attribute>;
900
- components: (SdFormGenericComponent | SdFormGenericGroup)[];
876
+ readonly components: _angular_core.InputSignal<(SdFormGenericComponent | SdFormGenericGroup)[]>;
901
877
  expression?: SdFormGenericExpression;
902
878
  set _expression(expression: SdFormGenericExpression | undefined);
903
- expressionChange: EventEmitter<SdFormGenericExpression>;
879
+ readonly expressionChange: _angular_core.OutputEmitterRef<SdFormGenericExpression>;
904
880
  model?: string;
905
881
  set _model(model: string | undefined);
906
- modelChange: EventEmitter<string>;
907
- sdChange: EventEmitter<{
882
+ readonly modelChange: _angular_core.OutputEmitterRef<string | undefined>;
883
+ readonly sdChange: _angular_core.OutputEmitterRef<{
908
884
  model?: string;
909
885
  expression?: SdFormGenericExpression;
910
886
  }>;
911
- constructor(ref: ChangeDetectorRef, expressionFeelPipe: ExpressionFeelPipe, formGenericService: FormGenericService);
887
+ /** Inserted by Angular inject() migration for backwards compatibility */
888
+ constructor(...args: unknown[]);
912
889
  ngOnInit(): void;
913
890
  edit: () => Promise<void>;
914
891
  addCondition: (conditions: SdFormGenericExpression["conditions"]) => void;
915
892
  addCombinator: (conditions: SdFormGenericExpression["conditions"]) => void;
916
893
  remove: (conditions: SdFormGenericExpression["conditions"], idx: number) => void;
917
894
  onAccept: () => void;
918
- static ɵfac: i0.ɵɵFactoryDeclaration<SdFeelExpression, never>;
919
- static ɵcmp: i0.ɵɵComponentDeclaration<SdFeelExpression, "sd-feel-expression", never, { "components": { "alias": "components"; "required": true; }; "_expression": { "alias": "expression"; "required": true; }; "_model": { "alias": "model"; "required": true; }; }, { "expressionChange": "expressionChange"; "modelChange": "modelChange"; "sdChange": "sdChange"; }, never, never, true, never>;
895
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SdFeelExpression, never>;
896
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SdFeelExpression, "sd-feel-expression", never, { "components": { "alias": "components"; "required": true; "isSignal": true; }; "_expression": { "alias": "expression"; "required": true; }; "_model": { "alias": "model"; "required": true; }; }, { "expressionChange": "expressionChange"; "modelChange": "modelChange"; "sdChange": "sdChange"; }, never, never, true, never>;
897
+ }
898
+
899
+ declare class SdFormRenderService {
900
+ private readonly componentViewedPipe;
901
+ /** Inserted by Angular inject() migration for backwards compatibility */
902
+ constructor(...args: unknown[]);
903
+ viewEntities: (form: SdFormGeneric, entities: Record<string, any>[]) => Promise<Record<string, any>[]>;
904
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SdFormRenderService, never>;
905
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<SdFormRenderService>;
920
906
  }
921
907
 
922
908
  export { AttributeOperators, COMPONENT_ICONS, DayInfoPreviouses, DayInfoTypes, EvaluateExpression, ExpressionToJavascriptExpression, FormBuilderComponents, GenerateId, GenerateKey, GetAttributes, GetComponentAttributes, GetDatetimeValue, GetVariableAttributes, Operators, SD_FORM_GENERIC_CONFIGURATION, SdFeelExpression, SdFormBuilder, SdFormRender, SdFormRenderService, SdFormatComponent, TableColumnTypes, TemplateToCondition };
@@ -1,10 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
- import { PipeTransform, OnInit, OnDestroy, EventEmitter, ChangeDetectorRef } from '@angular/core';
2
+ import { OnInit, OnDestroy } from '@angular/core';
3
3
  import { MatPaginator } from '@angular/material/paginator';
4
4
  import { SdModal } from '@sdcorejs/angular/components/modal';
5
- import { SdExcelService } from '@sdcorejs/angular/services/excel';
6
- import { SdNotifyService } from '@sdcorejs/angular/services/notify';
7
- import { SdLoadingService } from '@sdcorejs/angular/services/loading';
8
5
 
9
6
  interface SdImportExcelValidation {
10
7
  idx: number;
@@ -109,14 +106,6 @@ interface SdImportExcelItem<T = any> {
109
106
  };
110
107
  }
111
108
 
112
- declare class ColumnHiddenPipe implements PipeTransform {
113
- constructor();
114
- transform(column: SdUploadExcelColumn): boolean;
115
- static ɵfac: i0.ɵɵFactoryDeclaration<ColumnHiddenPipe, never>;
116
- static ɵpipe: i0.ɵɵPipeDeclaration<ColumnHiddenPipe, "columnHidden", true>;
117
- static ɵprov: i0.ɵɵInjectableDeclaration<ColumnHiddenPipe>;
118
- }
119
-
120
109
  declare class SdImportExcel implements OnInit, OnDestroy {
121
110
  #private;
122
111
  private ref;
@@ -139,8 +128,9 @@ declare class SdImportExcel implements OnInit, OnDestroy {
139
128
  uploading: boolean;
140
129
  isUploaded: boolean;
141
130
  isDownloadTemplate: boolean;
142
- sdClosed: EventEmitter<any>;
143
- constructor(ref: ChangeDetectorRef, excelService: SdExcelService, notifyService: SdNotifyService, columnHiddenPipe: ColumnHiddenPipe, loadingService: SdLoadingService);
131
+ readonly sdClosed: i0.OutputEmitterRef<void>;
132
+ /** Inserted by Angular inject() migration for backwards compatibility */
133
+ constructor(...args: unknown[]);
144
134
  ngOnInit(): void;
145
135
  ngOnDestroy(): void;
146
136
  open: () => void;
@@ -25,3 +25,7 @@ export * from '@sdcorejs/angular/components/editor';
25
25
  export * from '@sdcorejs/angular/components/splitter';
26
26
  export * from '@sdcorejs/angular/components/preview';
27
27
  export * from '@sdcorejs/angular/components/autoid-inspector';
28
+ export * from '@sdcorejs/angular/components/breadcrumb';
29
+ export * from '@sdcorejs/angular/components/data-state';
30
+ export * from '@sdcorejs/angular/components/job-progress';
31
+ export * from '@sdcorejs/angular/components/audit-diff';