@sdcorejs/angular 20.1.3 → 20.1.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.
Files changed (168) hide show
  1. package/README.md +19 -14
  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 +67 -104
  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 +495 -838
  35. package/fesm2022/sdcorejs-angular-components-form-generic.mjs.map +1 -1
  36. package/fesm2022/sdcorejs-angular-components-import-excel.mjs +24 -34
  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 +4 -4
  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 +16 -22
  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 +96 -63
  57. package/fesm2022/sdcorejs-angular-components-table.mjs.map +1 -1
  58. package/fesm2022/sdcorejs-angular-components-tree.mjs +186 -17
  59. package/fesm2022/sdcorejs-angular-components-tree.mjs.map +1 -1
  60. package/fesm2022/sdcorejs-angular-components-upload-file.mjs +15 -22
  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 +7 -7
  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 +6 -3
  71. package/fesm2022/sdcorejs-angular-forms-chip-calendar.mjs.map +1 -1
  72. package/fesm2022/sdcorejs-angular-forms-chip.mjs +6 -3
  73. package/fesm2022/sdcorejs-angular-forms-chip.mjs.map +1 -1
  74. package/fesm2022/sdcorejs-angular-forms-date-range.mjs +16 -13
  75. package/fesm2022/sdcorejs-angular-forms-date-range.mjs.map +1 -1
  76. package/fesm2022/sdcorejs-angular-forms-date.mjs +42 -65
  77. package/fesm2022/sdcorejs-angular-forms-date.mjs.map +1 -1
  78. package/fesm2022/sdcorejs-angular-forms-datetime.mjs +51 -66
  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 +1 -1
  83. package/fesm2022/sdcorejs-angular-forms-input-color.mjs.map +1 -1
  84. package/fesm2022/sdcorejs-angular-forms-input-number.mjs +7 -5
  85. package/fesm2022/sdcorejs-angular-forms-input-number.mjs.map +1 -1
  86. package/fesm2022/sdcorejs-angular-forms-input.mjs +290 -56
  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 +6 -20
  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 +6 -5
  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 +375 -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-layout.mjs +994 -168
  111. package/fesm2022/sdcorejs-angular-modules-layout.mjs.map +1 -1
  112. package/fesm2022/sdcorejs-angular-pipes.mjs +5 -7
  113. package/fesm2022/sdcorejs-angular-pipes.mjs.map +1 -1
  114. package/fesm2022/sdcorejs-angular-services-api.mjs +407 -137
  115. package/fesm2022/sdcorejs-angular-services-api.mjs.map +1 -1
  116. package/fesm2022/sdcorejs-angular-services-cache.mjs +515 -105
  117. package/fesm2022/sdcorejs-angular-services-cache.mjs.map +1 -1
  118. package/fesm2022/sdcorejs-angular-services-confirm.mjs +5 -7
  119. package/fesm2022/sdcorejs-angular-services-confirm.mjs.map +1 -1
  120. package/fesm2022/sdcorejs-angular-services-docx.mjs +7 -10
  121. package/fesm2022/sdcorejs-angular-services-docx.mjs.map +1 -1
  122. package/fesm2022/sdcorejs-angular-services-loading.mjs +339 -74
  123. package/fesm2022/sdcorejs-angular-services-loading.mjs.map +1 -1
  124. package/fesm2022/sdcorejs-angular-services-notify.mjs +7 -10
  125. package/fesm2022/sdcorejs-angular-services-notify.mjs.map +1 -1
  126. package/fesm2022/sdcorejs-angular-services-persistence.mjs +899 -0
  127. package/fesm2022/sdcorejs-angular-services-persistence.mjs.map +1 -0
  128. package/fesm2022/sdcorejs-angular-services-storage.mjs +324 -122
  129. package/fesm2022/sdcorejs-angular-services-storage.mjs.map +1 -1
  130. package/fesm2022/sdcorejs-angular-services-task.mjs +389 -0
  131. package/fesm2022/sdcorejs-angular-services-task.mjs.map +1 -0
  132. package/fesm2022/sdcorejs-angular-services-unsaved-changes.mjs +255 -0
  133. package/fesm2022/sdcorejs-angular-services-unsaved-changes.mjs.map +1 -0
  134. package/fesm2022/sdcorejs-angular-services-viewport.mjs +76 -0
  135. package/fesm2022/sdcorejs-angular-services-viewport.mjs.map +1 -0
  136. package/fesm2022/sdcorejs-angular-services.mjs +4 -0
  137. package/fesm2022/sdcorejs-angular-services.mjs.map +1 -1
  138. package/forms/autocomplete/index.d.ts +3 -4
  139. package/forms/checkbox/index.d.ts +4 -8
  140. package/forms/date/index.d.ts +2 -2
  141. package/forms/date-range/index.d.ts +6 -7
  142. package/forms/datetime/index.d.ts +2 -2
  143. package/forms/entity-picker/index.d.ts +128 -0
  144. package/forms/index.d.ts +15 -5
  145. package/forms/input/index.d.ts +74 -11
  146. package/forms/input-number/index.d.ts +1 -1
  147. package/forms/models/index.d.ts +86 -3
  148. package/forms/radio/index.d.ts +12 -8
  149. package/forms/switch/index.d.ts +4 -7
  150. package/forms/time/index.d.ts +117 -0
  151. package/forms/time-range/index.d.ts +98 -0
  152. package/forms/tree-select/index.d.ts +76 -0
  153. package/i18n/index.d.ts +72 -2
  154. package/interceptors/index.d.ts +5 -6
  155. package/modules/layout/index.d.ts +354 -17
  156. package/package.json +49 -1
  157. package/pipes/index.d.ts +2 -2
  158. package/services/api/index.d.ts +68 -24
  159. package/services/cache/index.d.ts +52 -16
  160. package/services/confirm/index.d.ts +3 -2
  161. package/services/docx/index.d.ts +2 -3
  162. package/services/index.d.ts +4 -0
  163. package/services/loading/index.d.ts +16 -8
  164. package/services/persistence/index.d.ts +159 -0
  165. package/services/storage/index.d.ts +26 -8
  166. package/services/task/index.d.ts +104 -0
  167. package/services/unsaved-changes/index.d.ts +83 -0
  168. package/services/viewport/index.d.ts +42 -0
package/README.md CHANGED
@@ -79,10 +79,10 @@ Replace the timer with your typed service call and reset `saving` in a `finally`
79
79
 
80
80
  | Area | Representative APIs |
81
81
  | ----------------- | ------------------------------------------------------------------------------------------------------------------------------- |
82
- | UI components | Buttons, badges, avatars, sections, tabs, steppers, modals, drawers, charts, editors, previews, and navigation primitives |
83
- | Data and workflow | Local or server tables, tree data, query bars, query builders, generic forms, document building, file upload, and Excel import |
84
- | Form controls | Text, number, date, date range, datetime, select, autocomplete, checkbox, radio, switch, chip, color, inline text, and textarea |
85
- | Services | Notifications, confirmation dialogs, loading state, API access, storage, cache, Excel, and DOCX helpers |
82
+ | UI components | Navigation/data state, PDF preview, job progress, audit diff, modals, drawers, tabs, charts, editors, and document tooling |
83
+ | Data and workflow | Local/server tables, entity/tree pickers, query builders, unsaved-change guards, background tasks, upload, and Excel import |
84
+ | Form controls | Text/mask, number, time/time range, date/date range, datetime, select, autocomplete, checkbox, radio, switch, chip, and color |
85
+ | Services | Typed API/retry/cancel, ref-counted loading, graph-safe persistence/cache/storage, viewport signals, notifications, and exports |
86
86
  | Portal modules | Auth, Keycloak, permission, layout, and icon modules |
87
87
  | Localization | Built-in `vi`, `en`, `ja`, `ko`, and `zh` catalogs, plus a synchronous custom-catalog provider |
88
88
 
@@ -165,22 +165,27 @@ export const appConfig: ApplicationConfig = {
165
165
 
166
166
  ## Documentation and examples
167
167
 
168
- | Resource | Purpose |
169
- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------- |
170
- | [Live showcase](https://sdcorejs.github.io/sdcorejs-angular/) | Interactive component, form, and service demos |
171
- | [Button example source](https://github.com/sdcorejs/sdcorejs-angular/blob/main/versions/v19/projects/showcase/src/app/pages/components/button/button-demo.component.ts) | Action variants, icons, disabled state, and loading state |
172
- | [Input example source](https://github.com/sdcorejs/sdcorejs-angular/blob/main/versions/v19/projects/showcase/src/app/pages/forms/input/input-demo.component.ts) | Model binding, validation, and viewed states |
173
- | [Table example source](https://github.com/sdcorejs/sdcorejs-angular/blob/main/versions/v19/projects/showcase/src/app/pages/components/table/table-demo.component.ts) | Data, selection, filters, grouping, paging, and tree workflows |
174
- | [Latest API manifest](https://sdcorejs.github.io/sdcorejs-angular/docs/latest/index.json) | Discover all Markdown docs for the latest release |
175
- | [Versions registry](https://sdcorejs.github.io/sdcorejs-angular/docs/versions.json) | Select docs matching an installed package version |
176
- | [Machine-readable catalog](https://sdcorejs.github.io/sdcorejs-angular/docs/catalog.json) | Discover documentation across maintained package lines |
177
- | [E2E attributes](https://github.com/sdcorejs/sdcorejs-angular/blob/main/versions/v19/projects/sdcorejs-angular/docs/E2E-ATTRIBUTES.md) | Stable runtime selectors and state attributes |
168
+ | Resource | Purpose |
169
+ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------- |
170
+ | [Live showcase](https://sdcorejs.github.io/sdcorejs-angular/) | Interactive component, form, and service demos |
171
+ | [Button example source](https://github.com/sdcorejs/sdcorejs-angular/blob/main/versions/v19/projects/showcase/src/app/pages/components/button/button-demo.component.ts) | Action variants, icons, disabled state, and loading state |
172
+ | [Input example source](https://github.com/sdcorejs/sdcorejs-angular/blob/main/versions/v19/projects/showcase/src/app/pages/forms/input/input-demo.component.ts) | Model binding, validation, and viewed states |
173
+ | [Table example source](https://github.com/sdcorejs/sdcorejs-angular/blob/main/versions/v19/projects/showcase/src/app/pages/components/table/table-demo.component.ts) | Data, selection, filters, grouping, paging, and tree workflows |
174
+ | [Persistence example source](https://github.com/sdcorejs/sdcorejs-angular/blob/main/versions/v19/projects/showcase/src/app/pages/services/persistence/persistence-demo.component.ts) | Graph round-trip, identity, envelopes, and error containment |
175
+ | [Latest API manifest](https://sdcorejs.github.io/sdcorejs-angular/docs/latest/index.json) | Discover all Markdown docs for the latest release |
176
+ | [Versions registry](https://sdcorejs.github.io/sdcorejs-angular/docs/versions.json) | Select docs matching an installed package version |
177
+ | [Machine-readable catalog](https://sdcorejs.github.io/sdcorejs-angular/docs/catalog.json) | Discover documentation across maintained package lines |
178
+ | [E2E attributes](https://github.com/sdcorejs/sdcorejs-angular/blob/main/versions/v19/projects/sdcorejs-angular/docs/E2E-ATTRIBUTES.md) | Stable runtime selectors and state attributes |
179
+ | [1.5 migration guide](https://github.com/sdcorejs/sdcorejs-angular/blob/main/docs/migrations/1.5.md) | Layout account actions, V2/V3 navigation, containment, and versioned docs |
180
+ | [1.4 migration guide](https://github.com/sdcorejs/sdcorejs-angular/blob/main/docs/migrations/1.4.md) | Dedupe, loading, persistence, connector, responsive, and signal migrations |
178
181
 
179
182
  ## Versioning
180
183
 
181
184
  - Use `@sdcorejs/angular@^19`, `@^20`, or `@^21` to match the application's Angular major.
182
185
  - Maintained package lines are released from the same feature surface with required Angular-major adaptations.
183
186
  - Consumer-breaking changes and migration notes are recorded in the [changelog](https://github.com/sdcorejs/sdcorejs-angular/blob/main/CHANGELOG.md).
187
+ - Before adopting the `1.5` suffix, follow the [1.5 migration guide](https://github.com/sdcorejs/sdcorejs-angular/blob/main/docs/migrations/1.5.md).
188
+ - Before adopting the `1.4` suffix, follow the [1.4 migration guide](https://github.com/sdcorejs/sdcorejs-angular/blob/main/docs/migrations/1.4.md).
184
189
  - Version-pinned reference docs remain available under `https://sdcorejs.github.io/sdcorejs-angular/docs/<package-version>/`.
185
190
 
186
191
  ## Contributing
@@ -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,5 +1,5 @@
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';
@@ -12,7 +12,6 @@ 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;
@@ -772,23 +725,23 @@ type PaletteDropTarget = {
772
725
  };
773
726
  declare class SdFormBuilder implements OnInit, OnDestroy {
774
727
  #private;
775
- readonly popupViewJSON: i0.Signal<SdModal | undefined>;
776
- readonly popupConfigureVariables: i0.Signal<SdModal | undefined>;
777
- readonly configureValidation: i0.Signal<ConfigureValidationComponent | undefined>;
778
- 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>;
779
732
  private readonly canvasDropZone;
780
- readonly rowDropLists: i0.Signal<readonly CdkDropList<any>[]>;
781
- readonly connectedRowDropLists: i0.Signal<CdkDropList<any>[]>;
733
+ readonly rowDropLists: _angular_core.Signal<readonly CdkDropList<any>[]>;
734
+ readonly connectedRowDropLists: _angular_core.Signal<CdkDropList<any>[]>;
782
735
  form: FormGroup<{}>;
783
736
  /** Input chính: schema form. Mỗi lần ref thay đổi → effect sẽ clone về local arrays. */
784
- readonly formGeneric: i0.InputSignal<SdFormGeneric | undefined>;
737
+ readonly formGeneric: _angular_core.InputSignal<SdFormGeneric | undefined>;
785
738
  readonly formBuilderComponents: FormBuilderComponent[];
786
739
  readonly componentIcons: Record<string, {
787
740
  symbol: string;
788
741
  label: string;
789
742
  }>;
790
- readonly paletteSearch: i0.WritableSignal<string>;
791
- readonly paletteGroups: i0.Signal<{
743
+ readonly paletteSearch: _angular_core.WritableSignal<string>;
744
+ readonly paletteGroups: _angular_core.Signal<{
792
745
  key: FormBuilderComponentGroup;
793
746
  label: string;
794
747
  items: FormBuilderComponent[];
@@ -798,23 +751,23 @@ declare class SdFormBuilder implements OnInit, OnDestroy {
798
751
  validations: Required<SdFormGeneric>['validations'];
799
752
  /** Cloned variables — dùng cho modal "Configure variables" (huỷ thì discard, ok thì gán ngược). */
800
753
  clonedVariables: SdFormGenericVariable[];
801
- readonly selectedComponent: i0.WritableSignal<SdFormGenericComponent | SdFormGenericGroup | undefined>;
802
- readonly isPreview: i0.WritableSignal<boolean>;
803
- 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>;
804
757
  /** Group đang được Detail (tìm ở TOP-LEVEL theo id), undefined = đang ở canvas chính. */
805
- readonly editingGroup: i0.Signal<SdFormGenericGroup | undefined>;
758
+ readonly editingGroup: _angular_core.Signal<SdFormGenericGroup | undefined>;
806
759
  /** Signal toàn cục: TRUE khi BẤT KỲ cdkDrag nào đang active (palette, canvas, group, resize).
807
760
  * Trigger class `.fb-shell--dragging` để ẩn hover/actions/resize toàn diện, không phụ thuộc :has(). */
808
- readonly isAnyDragging: i0.WritableSignal<boolean>;
809
- readonly dragSource: i0.WritableSignal<"row" | "palette" | "canvas" | "resize" | undefined>;
810
- readonly draggedPaletteItem: i0.WritableSignal<FormBuilderComponent | undefined>;
811
- readonly paletteDropTarget: i0.WritableSignal<PaletteDropTarget | undefined>;
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>;
812
765
  /** @deprecated Internal drag-preview compatibility mirror; use no application code. */
813
- readonly rowInsertionEdge: i0.WritableSignal<RowInsertionEdge>;
766
+ readonly rowInsertionEdge: _angular_core.WritableSignal<RowInsertionEdge>;
814
767
  /** @deprecated Internal drag-preview compatibility mirror; use no application code. */
815
- readonly inlineDropTargetRow: i0.WritableSignal<DragDropRowItem | undefined>;
816
- readonly resizeState: i0.WritableSignal<ResizeState | undefined>;
817
- readonly isResizing: i0.Signal<boolean>;
768
+ readonly inlineDropTargetRow: _angular_core.WritableSignal<DragDropRowItem | undefined>;
769
+ readonly resizeState: _angular_core.WritableSignal<ResizeState | undefined>;
770
+ readonly isResizing: _angular_core.Signal<boolean>;
818
771
  expand: boolean;
819
772
  dragDropRows: DragDropRowItem[];
820
773
  isDragging: boolean;
@@ -902,8 +855,8 @@ declare class SdFormBuilder implements OnInit, OnDestroy {
902
855
  openConfigureValidation: () => void;
903
856
  onUpdateValidations: (validations: SdFormGenericValidation[]) => void;
904
857
  onValidate: () => Promise<void>;
905
- static ɵfac: i0.ɵɵFactoryDeclaration<SdFormBuilder, never>;
906
- 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>;
907
860
  }
908
861
 
909
862
  declare class SdFeelExpression implements OnInit {
@@ -920,26 +873,36 @@ declare class SdFeelExpression implements OnInit {
920
873
  }[]>;
921
874
  attributes: Attribute[];
922
875
  attribute: Record<string, Attribute>;
923
- components: (SdFormGenericComponent | SdFormGenericGroup)[];
876
+ readonly components: _angular_core.InputSignal<(SdFormGenericComponent | SdFormGenericGroup)[]>;
924
877
  expression?: SdFormGenericExpression;
925
878
  set _expression(expression: SdFormGenericExpression | undefined);
926
- expressionChange: EventEmitter<SdFormGenericExpression>;
879
+ readonly expressionChange: _angular_core.OutputEmitterRef<SdFormGenericExpression>;
927
880
  model?: string;
928
881
  set _model(model: string | undefined);
929
- modelChange: EventEmitter<string>;
930
- sdChange: EventEmitter<{
882
+ readonly modelChange: _angular_core.OutputEmitterRef<string | undefined>;
883
+ readonly sdChange: _angular_core.OutputEmitterRef<{
931
884
  model?: string;
932
885
  expression?: SdFormGenericExpression;
933
886
  }>;
934
- constructor(ref: ChangeDetectorRef, expressionFeelPipe: ExpressionFeelPipe, formGenericService: FormGenericService);
887
+ /** Inserted by Angular inject() migration for backwards compatibility */
888
+ constructor(...args: unknown[]);
935
889
  ngOnInit(): void;
936
890
  edit: () => Promise<void>;
937
891
  addCondition: (conditions: SdFormGenericExpression["conditions"]) => void;
938
892
  addCombinator: (conditions: SdFormGenericExpression["conditions"]) => void;
939
893
  remove: (conditions: SdFormGenericExpression["conditions"], idx: number) => void;
940
894
  onAccept: () => void;
941
- static ɵfac: i0.ɵɵFactoryDeclaration<SdFeelExpression, never>;
942
- 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>;
943
906
  }
944
907
 
945
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 };