@sdcorejs/angular 20.0.9 → 20.0.11

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 (174) hide show
  1. package/README.md +270 -140
  2. package/assets/STYLE-GUIDE.md +2 -2
  3. package/assets/scss/core/_inline-edit.scss +1 -1
  4. package/assets/scss/core/form.scss +1 -1
  5. package/assets/scss/core/utilities/_grid.scss +25 -19
  6. package/assets/scss/themes/default.scss +2 -2
  7. package/components/badge/index.d.ts +3 -14
  8. package/components/button/index.d.ts +6 -4
  9. package/components/document-builder/index.d.ts +2 -2
  10. package/components/form-generic/index.d.ts +45 -23
  11. package/components/import-excel/index.d.ts +2 -2
  12. package/components/inform/index.d.ts +2 -8
  13. package/components/mini-editor/index.d.ts +4 -4
  14. package/components/modal/index.d.ts +1 -1
  15. package/components/query-builder/index.d.ts +7 -7
  16. package/components/tab-router/index.d.ts +3 -3
  17. package/components/table/index.d.ts +12 -10
  18. package/components/tree/index.d.ts +3 -2
  19. package/components/view/index.d.ts +1 -1
  20. package/fesm2022/sdcorejs-angular-components-anchor.mjs +20 -24
  21. package/fesm2022/sdcorejs-angular-components-anchor.mjs.map +1 -1
  22. package/fesm2022/sdcorejs-angular-components-autoid-inspector.mjs +4 -5
  23. package/fesm2022/sdcorejs-angular-components-autoid-inspector.mjs.map +1 -1
  24. package/fesm2022/sdcorejs-angular-components-avatar.mjs.map +1 -1
  25. package/fesm2022/sdcorejs-angular-components-badge.mjs +14 -13
  26. package/fesm2022/sdcorejs-angular-components-badge.mjs.map +1 -1
  27. package/fesm2022/sdcorejs-angular-components-button.mjs +19 -21
  28. package/fesm2022/sdcorejs-angular-components-button.mjs.map +1 -1
  29. package/fesm2022/sdcorejs-angular-components-chart.mjs.map +1 -1
  30. package/fesm2022/sdcorejs-angular-components-ckeditor-styles.mjs.map +1 -1
  31. package/fesm2022/sdcorejs-angular-components-code-editor.mjs +5 -6
  32. package/fesm2022/sdcorejs-angular-components-code-editor.mjs.map +1 -1
  33. package/fesm2022/sdcorejs-angular-components-document-builder.mjs +17 -26
  34. package/fesm2022/sdcorejs-angular-components-document-builder.mjs.map +1 -1
  35. package/fesm2022/sdcorejs-angular-components-editor.mjs +11 -7
  36. package/fesm2022/sdcorejs-angular-components-editor.mjs.map +1 -1
  37. package/fesm2022/sdcorejs-angular-components-form-generic.mjs +716 -437
  38. package/fesm2022/sdcorejs-angular-components-form-generic.mjs.map +1 -1
  39. package/fesm2022/sdcorejs-angular-components-history.mjs +2 -2
  40. package/fesm2022/sdcorejs-angular-components-history.mjs.map +1 -1
  41. package/fesm2022/sdcorejs-angular-components-import-excel.mjs +38 -23
  42. package/fesm2022/sdcorejs-angular-components-import-excel.mjs.map +1 -1
  43. package/fesm2022/sdcorejs-angular-components-inform.mjs +5 -16
  44. package/fesm2022/sdcorejs-angular-components-inform.mjs.map +1 -1
  45. package/fesm2022/sdcorejs-angular-components-mini-editor.mjs.map +1 -1
  46. package/fesm2022/sdcorejs-angular-components-modal-resizable.mjs +5 -6
  47. package/fesm2022/sdcorejs-angular-components-modal-resizable.mjs.map +1 -1
  48. package/fesm2022/sdcorejs-angular-components-modal.mjs +28 -18
  49. package/fesm2022/sdcorejs-angular-components-modal.mjs.map +1 -1
  50. package/fesm2022/sdcorejs-angular-components-operator.mjs +1 -1
  51. package/fesm2022/sdcorejs-angular-components-operator.mjs.map +1 -1
  52. package/fesm2022/sdcorejs-angular-components-org-chart.mjs +4 -5
  53. package/fesm2022/sdcorejs-angular-components-org-chart.mjs.map +1 -1
  54. package/fesm2022/sdcorejs-angular-components-preview.mjs +40 -37
  55. package/fesm2022/sdcorejs-angular-components-preview.mjs.map +1 -1
  56. package/fesm2022/sdcorejs-angular-components-query-bar.mjs +38 -55
  57. package/fesm2022/sdcorejs-angular-components-query-bar.mjs.map +1 -1
  58. package/fesm2022/sdcorejs-angular-components-query-builder.mjs +5 -7
  59. package/fesm2022/sdcorejs-angular-components-query-builder.mjs.map +1 -1
  60. package/fesm2022/sdcorejs-angular-components-quick-action.mjs.map +1 -1
  61. package/fesm2022/sdcorejs-angular-components-section.mjs +3 -5
  62. package/fesm2022/sdcorejs-angular-components-section.mjs.map +1 -1
  63. package/fesm2022/sdcorejs-angular-components-side-drawer.mjs +6 -7
  64. package/fesm2022/sdcorejs-angular-components-side-drawer.mjs.map +1 -1
  65. package/fesm2022/sdcorejs-angular-components-splitter.mjs +5 -5
  66. package/fesm2022/sdcorejs-angular-components-splitter.mjs.map +1 -1
  67. package/fesm2022/sdcorejs-angular-components-stepper.mjs +3 -4
  68. package/fesm2022/sdcorejs-angular-components-stepper.mjs.map +1 -1
  69. package/fesm2022/sdcorejs-angular-components-tab-router.mjs +36 -37
  70. package/fesm2022/sdcorejs-angular-components-tab-router.mjs.map +1 -1
  71. package/fesm2022/sdcorejs-angular-components-tab.mjs +3 -4
  72. package/fesm2022/sdcorejs-angular-components-tab.mjs.map +1 -1
  73. package/fesm2022/sdcorejs-angular-components-table.mjs +80 -102
  74. package/fesm2022/sdcorejs-angular-components-table.mjs.map +1 -1
  75. package/fesm2022/sdcorejs-angular-components-tree.mjs +6 -8
  76. package/fesm2022/sdcorejs-angular-components-tree.mjs.map +1 -1
  77. package/fesm2022/sdcorejs-angular-components-upload-file.mjs +14 -15
  78. package/fesm2022/sdcorejs-angular-components-upload-file.mjs.map +1 -1
  79. package/fesm2022/sdcorejs-angular-components-view.mjs +3 -9
  80. package/fesm2022/sdcorejs-angular-components-view.mjs.map +1 -1
  81. package/fesm2022/sdcorejs-angular-configurations.mjs.map +1 -1
  82. package/fesm2022/sdcorejs-angular-directives.mjs +2 -7
  83. package/fesm2022/sdcorejs-angular-directives.mjs.map +1 -1
  84. package/fesm2022/sdcorejs-angular-forms-autocomplete.mjs +5 -10
  85. package/fesm2022/sdcorejs-angular-forms-autocomplete.mjs.map +1 -1
  86. package/fesm2022/sdcorejs-angular-forms-checkbox.mjs.map +1 -1
  87. package/fesm2022/sdcorejs-angular-forms-chip-calendar.mjs +9 -11
  88. package/fesm2022/sdcorejs-angular-forms-chip-calendar.mjs.map +1 -1
  89. package/fesm2022/sdcorejs-angular-forms-chip.mjs +7 -9
  90. package/fesm2022/sdcorejs-angular-forms-chip.mjs.map +1 -1
  91. package/fesm2022/sdcorejs-angular-forms-date-range.mjs +8 -12
  92. package/fesm2022/sdcorejs-angular-forms-date-range.mjs.map +1 -1
  93. package/fesm2022/sdcorejs-angular-forms-date.mjs +9 -13
  94. package/fesm2022/sdcorejs-angular-forms-date.mjs.map +1 -1
  95. package/fesm2022/sdcorejs-angular-forms-datetime.mjs +8 -14
  96. package/fesm2022/sdcorejs-angular-forms-datetime.mjs.map +1 -1
  97. package/fesm2022/sdcorejs-angular-forms-inline-text.mjs +4 -5
  98. package/fesm2022/sdcorejs-angular-forms-inline-text.mjs.map +1 -1
  99. package/fesm2022/sdcorejs-angular-forms-input-color.mjs +4 -4
  100. package/fesm2022/sdcorejs-angular-forms-input-color.mjs.map +1 -1
  101. package/fesm2022/sdcorejs-angular-forms-input-number.mjs +6 -8
  102. package/fesm2022/sdcorejs-angular-forms-input-number.mjs.map +1 -1
  103. package/fesm2022/sdcorejs-angular-forms-input.mjs +5 -7
  104. package/fesm2022/sdcorejs-angular-forms-input.mjs.map +1 -1
  105. package/fesm2022/sdcorejs-angular-forms-label.mjs +4 -6
  106. package/fesm2022/sdcorejs-angular-forms-label.mjs.map +1 -1
  107. package/fesm2022/sdcorejs-angular-forms-models.mjs.map +1 -1
  108. package/fesm2022/sdcorejs-angular-forms-radio.mjs +12 -4
  109. package/fesm2022/sdcorejs-angular-forms-radio.mjs.map +1 -1
  110. package/fesm2022/sdcorejs-angular-forms-select.mjs +51 -22
  111. package/fesm2022/sdcorejs-angular-forms-select.mjs.map +1 -1
  112. package/fesm2022/sdcorejs-angular-forms-switch.mjs.map +1 -1
  113. package/fesm2022/sdcorejs-angular-forms-textarea.mjs +8 -10
  114. package/fesm2022/sdcorejs-angular-forms-textarea.mjs.map +1 -1
  115. package/fesm2022/sdcorejs-angular-handlers.mjs +3 -6
  116. package/fesm2022/sdcorejs-angular-handlers.mjs.map +1 -1
  117. package/fesm2022/sdcorejs-angular-i18n.mjs +11 -7
  118. package/fesm2022/sdcorejs-angular-i18n.mjs.map +1 -1
  119. package/fesm2022/sdcorejs-angular-interceptors.mjs +0 -2
  120. package/fesm2022/sdcorejs-angular-interceptors.mjs.map +1 -1
  121. package/fesm2022/sdcorejs-angular-modules-auth.mjs +14 -38
  122. package/fesm2022/sdcorejs-angular-modules-auth.mjs.map +1 -1
  123. package/fesm2022/sdcorejs-angular-modules-authom.mjs +14 -14
  124. package/fesm2022/sdcorejs-angular-modules-authom.mjs.map +1 -1
  125. package/fesm2022/sdcorejs-angular-modules-icon.mjs +523 -0
  126. package/fesm2022/sdcorejs-angular-modules-icon.mjs.map +1 -0
  127. package/fesm2022/sdcorejs-angular-modules-keycloak.mjs +22 -11
  128. package/fesm2022/sdcorejs-angular-modules-keycloak.mjs.map +1 -1
  129. package/fesm2022/sdcorejs-angular-modules-layout.mjs +53 -52
  130. package/fesm2022/sdcorejs-angular-modules-layout.mjs.map +1 -1
  131. package/fesm2022/sdcorejs-angular-modules-permission.mjs +5 -12
  132. package/fesm2022/sdcorejs-angular-modules-permission.mjs.map +1 -1
  133. package/fesm2022/sdcorejs-angular-modules.mjs +1 -0
  134. package/fesm2022/sdcorejs-angular-modules.mjs.map +1 -1
  135. package/fesm2022/sdcorejs-angular-pipes.mjs +71 -17
  136. package/fesm2022/sdcorejs-angular-pipes.mjs.map +1 -1
  137. package/fesm2022/sdcorejs-angular-services-api.mjs +0 -2
  138. package/fesm2022/sdcorejs-angular-services-api.mjs.map +1 -1
  139. package/fesm2022/sdcorejs-angular-services-cache.mjs +5 -11
  140. package/fesm2022/sdcorejs-angular-services-cache.mjs.map +1 -1
  141. package/fesm2022/sdcorejs-angular-services-confirm.mjs +19 -25
  142. package/fesm2022/sdcorejs-angular-services-confirm.mjs.map +1 -1
  143. package/fesm2022/sdcorejs-angular-services-docx.mjs +2 -8
  144. package/fesm2022/sdcorejs-angular-services-docx.mjs.map +1 -1
  145. package/fesm2022/sdcorejs-angular-services-excel.mjs +24 -16
  146. package/fesm2022/sdcorejs-angular-services-excel.mjs.map +1 -1
  147. package/fesm2022/sdcorejs-angular-services-license.mjs +5 -12
  148. package/fesm2022/sdcorejs-angular-services-license.mjs.map +1 -1
  149. package/fesm2022/sdcorejs-angular-services-notify.mjs +70 -87
  150. package/fesm2022/sdcorejs-angular-services-notify.mjs.map +1 -1
  151. package/fesm2022/sdcorejs-angular-services-storage.mjs +6 -15
  152. package/fesm2022/sdcorejs-angular-services-storage.mjs.map +1 -1
  153. package/fesm2022/sdcorejs-angular-utilities-data-state.mjs.map +1 -1
  154. package/fesm2022/sdcorejs-angular-utilities-extensions.mjs +47 -5
  155. package/fesm2022/sdcorejs-angular-utilities-extensions.mjs.map +1 -1
  156. package/fesm2022/sdcorejs-angular-utilities-models.mjs +21 -5
  157. package/fesm2022/sdcorejs-angular-utilities-models.mjs.map +1 -1
  158. package/fesm2022/sdcorejs-angular.mjs.map +1 -1
  159. package/forms/chip/index.d.ts +2 -2
  160. package/forms/chip-calendar/index.d.ts +2 -2
  161. package/forms/input-color/index.d.ts +2 -1
  162. package/forms/select/index.d.ts +10 -2
  163. package/modules/auth/index.d.ts +7 -9
  164. package/modules/icon/index.d.ts +191 -0
  165. package/modules/index.d.ts +1 -0
  166. package/modules/permission/index.d.ts +5 -6
  167. package/package.json +7 -2
  168. package/pipes/index.d.ts +22 -4
  169. package/services/confirm/index.d.ts +3 -3
  170. package/services/license/index.d.ts +2 -3
  171. package/services/notify/index.d.ts +4 -5
  172. package/services/storage/index.d.ts +2 -3
  173. package/utilities/extensions/index.d.ts +9 -1
  174. package/utilities/models/index.d.ts +6 -4
@@ -1,11 +1,13 @@
1
+ @use "sass:math";
2
+
1
3
  // --------------------------------------------------------------------------
2
- // Grid row/col 12-column flexbox + native CSS Grid container
3
- // Thuần CSS Flexbox / CSS Grid, không phụ thuộc framework ngoài.
4
- // Breakpoint convention (sm/md/lg/xl) trùng Bootstrap để host app dễ migrate.
4
+ // Grid - row/col 12-column flexbox + native CSS Grid container
5
+ // Pure CSS Flexbox / CSS Grid, with no external framework dependency.
6
+ // Breakpoint convention (sm/md/lg/xl) matches Bootstrap to ease host migration.
5
7
  // --------------------------------------------------------------------------
6
8
 
7
9
  // --------------------------------------------------------------------------
8
- // 1. Flexbox row/col (.row, .col-{1-12})
10
+ // 1. Flexbox row/col (.row, .col-{1-12})
9
11
  // --------------------------------------------------------------------------
10
12
  $grid-columns: 12;
11
13
  $grid-gutter: 16px;
@@ -45,13 +47,15 @@ $grid-gutter: 16px;
45
47
  > * { padding-left: 2px; padding-right: 2px; }
46
48
  }
47
49
 
48
- // .col-1 .col-12
50
+ // .col-1 ... .col-12
49
51
  @for $i from 1 through $grid-columns {
52
+ $col-size: math.percentage(math.div($i, $grid-columns));
53
+
50
54
  .col-#{$i} {
51
55
  box-sizing: border-box;
52
- width: percentage(calc($i / $grid-columns));
53
- flex: 0 0 percentage(calc($i / $grid-columns));
54
- max-width: percentage(calc($i / $grid-columns));
56
+ width: $col-size;
57
+ flex: 0 0 $col-size;
58
+ max-width: $col-size;
55
59
  padding-left: calc($grid-gutter / 2);
56
60
  padding-right: calc($grid-gutter / 2);
57
61
  }
@@ -65,12 +69,12 @@ $grid-gutter: 16px;
65
69
 
66
70
  // --------------------------------------------------------------------------
67
71
  // 1b. Responsive columns
68
- // col-sm-{1-12} : 576px
69
- // col-md-{1-12} : 768px
70
- // col-lg-{1-12} : 992px
71
- // col-xl-{1-12} : 1200px
72
+ // col-sm-{1-12}: >= 576px
73
+ // col-md-{1-12}: >= 768px
74
+ // col-lg-{1-12}: >= 992px
75
+ // col-xl-{1-12}: >= 1200px
72
76
  //
73
- // Mobile-first: mặc định width: 100%, áp dụng kích thước khi đủ rộng.
77
+ // Mobile-first: default width is 100%; column size applies from breakpoint up.
74
78
  // --------------------------------------------------------------------------
75
79
  $grid-breakpoints: (
76
80
  'sm': 576px,
@@ -79,7 +83,7 @@ $grid-breakpoints: (
79
83
  'xl': 1200px,
80
84
  );
81
85
 
82
- // col-{bp} chiếm hết chiều rộng tại breakpoint đó
86
+ // col-{bp} - full-width flexible column at the breakpoint
83
87
  @each $bp, $min-width in $grid-breakpoints {
84
88
  @media (min-width: $min-width) {
85
89
  .col-#{$bp} {
@@ -90,15 +94,17 @@ $grid-breakpoints: (
90
94
  }
91
95
  }
92
96
 
93
- // col-{bp}-{1-12} chiếm n/12 chiều rộng tại breakpoint đó
97
+ // col-{bp}-{1-12} - n/12 column width at the breakpoint
94
98
  @each $bp, $min-width in $grid-breakpoints {
95
99
  @media (min-width: $min-width) {
96
100
  @for $i from 1 through $grid-columns {
101
+ $col-size: math.percentage(math.div($i, $grid-columns));
102
+
97
103
  .col-#{$bp}-#{$i} {
98
104
  box-sizing: border-box;
99
- width: percentage(calc($i / $grid-columns));
100
- flex: 0 0 percentage(calc($i / $grid-columns));
101
- max-width: percentage(calc($i / $grid-columns));
105
+ width: $col-size;
106
+ flex: 0 0 $col-size;
107
+ max-width: $col-size;
102
108
  padding-left: calc($grid-gutter / 2);
103
109
  padding-right: calc($grid-gutter / 2);
104
110
  }
@@ -107,7 +113,7 @@ $grid-breakpoints: (
107
113
  }
108
114
 
109
115
  // --------------------------------------------------------------------------
110
- // 2. CSS Grid container (.grid-container)
116
+ // 2. CSS Grid container (.grid-container)
111
117
  // grid-container + grid-cols-{1-12} + col-span-{1-12}
112
118
  // --------------------------------------------------------------------------
113
119
  .grid-container {
@@ -17,8 +17,8 @@ $default-theme: (
17
17
  error: #F82C13,
18
18
  error-light: #FED5D0,
19
19
  error-dark: #BA200E,
20
- secondary: #212121,
21
- secondary-light: #E9E9E9,
20
+ secondary: #757575,
21
+ secondary-light: #F2F2F2,
22
22
  secondary-dark: #000000,
23
23
  light: #f8f9fa,
24
24
  dark: #343a40,
@@ -1,7 +1,7 @@
1
1
  import * as _angular_core from '@angular/core';
2
2
  import { EventEmitter } from '@angular/core';
3
+ import { SdIconSet } from '@sdcorejs/angular/modules/icon';
3
4
  import { Color, Size } from '@sdcorejs/utils/models';
4
- import { MaterialIconFontSet } from '@sdcorejs/angular/utilities/models';
5
5
 
6
6
  type SdBadgeType = 'tag' | 'round' | 'icon';
7
7
  declare class SdBadge {
@@ -14,7 +14,7 @@ declare class SdBadge {
14
14
  info: _angular_core.InputSignalWithTransform<boolean, unknown>;
15
15
  warning: _angular_core.InputSignalWithTransform<boolean, unknown>;
16
16
  error: _angular_core.InputSignalWithTransform<boolean, unknown>;
17
- fontSet: _angular_core.InputSignalWithTransform<MaterialIconFontSet, MaterialIconFontSet | null | undefined>;
17
+ fontSet: _angular_core.InputSignalWithTransform<SdIconSet | undefined, SdIconSet | null | undefined>;
18
18
  title: _angular_core.InputSignal<string | number | null | undefined>;
19
19
  description: _angular_core.InputSignal<string | null | undefined>;
20
20
  tooltip: _angular_core.InputSignal<string | null | undefined>;
@@ -43,11 +43,8 @@ declare class SdBadge {
43
43
  'c-sm': boolean;
44
44
  'c-md': boolean;
45
45
  'c-lg': boolean;
46
- 'material-icons': boolean;
47
- 'material-icons-outlined': boolean;
48
- 'material-icons-round': boolean;
49
- 'material-icons-sharp': boolean;
50
46
  }>;
47
+ iconCssSize: _angular_core.Signal<"18px" | "24px" | "16px">;
51
48
  containerSizeClasses: _angular_core.Signal<{
52
49
  'c-badge--sm': boolean;
53
50
  'c-badge--md': boolean;
@@ -63,10 +60,6 @@ declare class SdBadge {
63
60
  'c-sm': boolean;
64
61
  'c-md': boolean;
65
62
  'c-lg': boolean;
66
- 'material-icons': boolean;
67
- 'material-icons-outlined': boolean;
68
- 'material-icons-round': boolean;
69
- 'material-icons-sharp': boolean;
70
63
  }>;
71
64
  containerCombinedClasses: _angular_core.Signal<{
72
65
  'c-badge--sm': boolean;
@@ -89,10 +82,6 @@ declare class SdBadge {
89
82
  'c-sm': boolean;
90
83
  'c-md': boolean;
91
84
  'c-lg': boolean;
92
- 'material-icons': boolean;
93
- 'material-icons-outlined': boolean;
94
- 'material-icons-round': boolean;
95
- 'material-icons-sharp': boolean;
96
85
  }>;
97
86
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SdBadge, never>;
98
87
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<SdBadge, "sd-badge", never, { "type": { "alias": "type"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "primary": { "alias": "primary"; "required": false; "isSignal": true; }; "secondary": { "alias": "secondary"; "required": false; "isSignal": true; }; "success": { "alias": "success"; "required": false; "isSignal": true; }; "info": { "alias": "info"; "required": false; "isSignal": true; }; "warning": { "alias": "warning"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "fontSet": { "alias": "fontSet"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "tooltip": { "alias": "tooltip"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, { "click": "click"; }, never, never, true, never>;
@@ -1,19 +1,20 @@
1
1
  import * as _angular_core from '@angular/core';
2
2
  import { OnInit, OnDestroy } from '@angular/core';
3
3
  import { Color } from '@sdcorejs/utils/models';
4
- import { MaterialIconFontSet } from '@sdcorejs/angular/utilities/models';
4
+ import { SdIconSet } from '@sdcorejs/angular/modules/icon';
5
5
 
6
6
  type SdButtonType = 'fill' | 'light' | 'outline' | 'link';
7
7
  type SdButtonSize = 'sm' | 'md' | 'lg';
8
8
  type SdButtonHtmlType = 'button' | 'submit' | 'reset';
9
+ type SdButtonColor = Color | 'black';
9
10
  declare class SdButton implements OnInit, OnDestroy {
10
11
  #private;
11
12
  private el;
12
13
  autoIdInput: _angular_core.InputSignal<string | null | undefined>;
13
14
  type: _angular_core.InputSignalWithTransform<SdButtonType, SdButtonType | null | undefined>;
14
- color: _angular_core.InputSignalWithTransform<Color, Color | null | undefined>;
15
+ color: _angular_core.InputSignalWithTransform<SdButtonColor, SdButtonColor | null | undefined>;
15
16
  size: _angular_core.InputSignalWithTransform<SdButtonSize, SdButtonSize | null | undefined>;
16
- fontSet: _angular_core.InputSignalWithTransform<MaterialIconFontSet, MaterialIconFontSet | null | undefined>;
17
+ fontSet: _angular_core.InputSignalWithTransform<SdIconSet | undefined, SdIconSet | null | undefined>;
17
18
  title: _angular_core.InputSignal<string | null | undefined>;
18
19
  width: _angular_core.InputSignal<string | null | undefined>;
19
20
  tooltip: _angular_core.InputSignal<string | null | undefined>;
@@ -29,6 +30,7 @@ declare class SdButton implements OnInit, OnDestroy {
29
30
  'c-sm': boolean;
30
31
  'c-md': boolean;
31
32
  'c-lg': boolean;
33
+ 'c-black': boolean;
32
34
  'c-disabled': boolean;
33
35
  'c-block': boolean;
34
36
  }>;
@@ -42,4 +44,4 @@ declare class SdButton implements OnInit, OnDestroy {
42
44
  }
43
45
 
44
46
  export { SdButton };
45
- export type { SdButtonHtmlType, SdButtonSize, SdButtonType };
47
+ export type { SdButtonColor, SdButtonHtmlType, SdButtonSize, SdButtonType };
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { EventEmitter } from '@angular/core';
2
+ import { EventEmitter, 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
 
@@ -199,7 +199,7 @@ declare class CkCommentPlugin extends Plugin {
199
199
  clearPendingSelection(): void;
200
200
  }
201
201
 
202
- declare class SdDocumentBuilder {
202
+ declare class SdDocumentBuilder implements OnInit, OnDestroy {
203
203
  #private;
204
204
  option: SdDocumentBuilderOption;
205
205
  disabled: boolean;
@@ -1,11 +1,11 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, PipeTransform, OnDestroy, ChangeDetectorRef, AfterViewInit, QueryList, EventEmitter } from '@angular/core';
2
+ import { InjectionToken, PipeTransform, OnDestroy, OnInit, ChangeDetectorRef, AfterViewInit, QueryList, EventEmitter } 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 } from '@angular/cdk/drag-drop';
8
+ import { CdkDragMove, CdkDragDrop, CdkDrag, CdkDropList } 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';
@@ -458,14 +458,14 @@ interface SdFormGenericHtml {
458
458
  type FormBuilderComponentGroup = 'basic' | 'choice' | 'advanced' | 'layout';
459
459
  interface FormBuilderComponent {
460
460
  type: string;
461
- /** Material Symbols Rounded icon name. Rendered via <span class="msi">{symbol}</span>. */
461
+ /** Material Icons Outlined icon name. Rendered via the builder icon alias. */
462
462
  symbol: string;
463
463
  /** Category group for the left palette grouping. */
464
464
  group: FormBuilderComponentGroup;
465
465
  name: string;
466
466
  }
467
467
  declare const FormBuilderComponents: FormBuilderComponent[];
468
- /** Lookup: component type → Material Symbol + label, used by attribute panel header. */
468
+ /** Lookup: component type → Material icon + label, used by attribute panel header. */
469
469
  declare const COMPONENT_ICONS: Record<string, {
470
470
  symbol: string;
471
471
  label: string;
@@ -530,7 +530,7 @@ interface IWorkflowConfigurationForm<TSelectionArgs = any> {
530
530
  templates: SdFormGenericTemplate[];
531
531
  selections: SdFormGenericDefinitionSelection<any, TSelectionArgs>[] | (() => SdFormGenericDefinitionSelection<any, TSelectionArgs>[]) | (() => Promise<SdFormGenericDefinitionSelection[]>);
532
532
  getValues?: (key: string, selectionArgs?: TSelectionArgs) => Promise<SdFormGenericSelectionItem[]>;
533
- getLazyValues?: (key: string, selectionArgs?: TSelectionArgs) => ((searchArgs: Parameters<SdSearch>[0], args: SdFormGenericArgs) => Promise<SdFormGenericSelectionItem[]>);
533
+ getLazyValues?: (key: string, selectionArgs?: TSelectionArgs) => (searchArgs: Parameters<SdSearch>[0], args: SdFormGenericArgs) => Promise<SdFormGenericSelectionItem[]>;
534
534
  tables: SdFormGenericDefinitionTable[];
535
535
  htmls: SdFormGenericDefinitionHtml[] | (() => SdFormGenericDefinitionHtml[]) | (() => Promise<SdFormGenericDefinitionHtml[]>);
536
536
  validation?: SdFormGenericValidationConfiguration;
@@ -544,7 +544,6 @@ declare const SD_FORM_GENERIC_CONFIGURATION: InjectionToken<ISdFormGenericConfig
544
544
  declare class FormGenericService {
545
545
  #private;
546
546
  private readonly configuration;
547
- constructor(configuration: ISdFormGenericConfiguration);
548
547
  get selections(): (() => Promise<SdFormGenericDefinitionSelection[]>) | SdFormGenericDefinitionSelection<any, any>[] | (() => SdFormGenericDefinitionSelection<any, any>[]);
549
548
  get tables(): _sdcorejs_angular_components_form_generic.SdFormGenericDefinitionTable<any>[];
550
549
  getSelection: (valuesKey: string | undefined | null) => Promise<SdFormGenericDefinitionSelection | undefined>;
@@ -560,7 +559,7 @@ declare class FormGenericService {
560
559
  definitions: () => Promise<SdFormGenericDefinitionHtml[]>;
561
560
  getContent: (template: string, query?: Record<string, any>) => Promise<string>;
562
561
  };
563
- static ɵfac: i0.ɵɵFactoryDeclaration<FormGenericService, [{ optional: true; }]>;
562
+ static ɵfac: i0.ɵɵFactoryDeclaration<FormGenericService, never>;
564
563
  static ɵprov: i0.ɵɵInjectableDeclaration<FormGenericService>;
565
564
  }
566
565
 
@@ -590,7 +589,7 @@ declare class SdFormRenderService {
590
589
  static ɵprov: i0.ɵɵInjectableDeclaration<SdFormRenderService>;
591
590
  }
592
591
 
593
- declare class UploadComponent implements OnDestroy {
592
+ declare class UploadComponent implements OnDestroy, OnInit {
594
593
  #private;
595
594
  private readonly ref;
596
595
  setVariables: Subject<{
@@ -620,7 +619,7 @@ declare class UploadComponent implements OnDestroy {
620
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>;
621
620
  }
622
621
 
623
- declare class TableComponent implements AfterViewInit, OnDestroy {
622
+ declare class TableComponent implements AfterViewInit, OnDestroy, OnInit {
624
623
  #private;
625
624
  private ref;
626
625
  private readonly formGenericService;
@@ -691,8 +690,6 @@ declare class LibItemComponent {
691
690
 
692
691
  declare class SdFormRender implements OnDestroy, AfterViewInit {
693
692
  #private;
694
- private ref;
695
- private formGenericConfiguration;
696
693
  formRenderItems: QueryList<LibItemComponent>;
697
694
  form: FormGroup;
698
695
  configuration: SdFormRenderConfiguration;
@@ -711,18 +708,17 @@ declare class SdFormRender implements OnDestroy, AfterViewInit {
711
708
  key: string;
712
709
  value: any;
713
710
  }>;
714
- constructor(ref: ChangeDetectorRef, formGenericConfiguration: ISdFormGenericConfiguration | null);
711
+ private readonly ref;
712
+ private readonly formGenericConfiguration;
715
713
  ngAfterViewInit(): void;
716
714
  ngOnDestroy(): void;
717
715
  upload: () => Promise<void>;
718
716
  getValidationMessages: (alert: SdFormGenericValidation["alert"]) => Promise<string[] | undefined>;
719
- static ɵfac: i0.ɵɵFactoryDeclaration<SdFormRender, [null, { optional: true; }]>;
717
+ static ɵfac: i0.ɵɵFactoryDeclaration<SdFormRender, never>;
720
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>;
721
719
  }
722
720
 
723
- declare class ConfigureValidationComponent {
724
- private ref;
725
- private formGenericConfiguration;
721
+ declare class ConfigureValidationComponent implements AfterViewInit, OnDestroy {
726
722
  modal?: SdModal;
727
723
  form: FormGroup<{}>;
728
724
  attributes: Attribute[];
@@ -733,22 +729,35 @@ declare class ConfigureValidationComponent {
733
729
  display: string;
734
730
  }[];
735
731
  accept: EventEmitter<SdFormGenericValidation[]>;
736
- constructor(ref: ChangeDetectorRef, formGenericConfiguration: ISdFormGenericConfiguration | null);
732
+ private readonly ref;
733
+ private readonly formGenericConfiguration;
734
+ constructor();
737
735
  ngAfterViewInit(): void;
738
736
  ngOnDestroy(): void;
739
737
  open: (formGeneric: SdFormGeneric) => void;
740
738
  addValidation: (type: SdFormGenericValidation["type"]) => void;
741
739
  removaValidation: (index: number) => void;
742
740
  updateValidations: () => void;
743
- static ɵfac: i0.ɵɵFactoryDeclaration<ConfigureValidationComponent, [null, { optional: true; }]>;
741
+ static ɵfac: i0.ɵɵFactoryDeclaration<ConfigureValidationComponent, never>;
744
742
  static ɵcmp: i0.ɵɵComponentDeclaration<ConfigureValidationComponent, "configure-validation", never, {}, { "accept": "accept"; }, never, never, true, never>;
745
743
  }
746
744
 
747
- interface DragDropRowItem {
748
- items: (SdFormGenericComponent | SdFormGenericGroup)[];
745
+ type FormBuilderLayoutItem = SdFormGenericComponent | SdFormGenericGroup;
746
+ interface FormBuilderLayoutRow {
747
+ id: string;
748
+ items: FormBuilderLayoutItem[];
749
+ columns: number;
750
+ }
751
+
752
+ interface DragDropRowItem extends FormBuilderLayoutRow {
749
753
  rowIndex?: number;
750
754
  }
751
- declare class SdFormBuilder {
755
+ interface ResizeState {
756
+ itemId: string;
757
+ rowId: string;
758
+ columns: string;
759
+ }
760
+ declare class SdFormBuilder implements OnInit, OnDestroy {
752
761
  #private;
753
762
  readonly popupViewJSON: i0.Signal<SdModal | undefined>;
754
763
  readonly popupConfigureVariables: i0.Signal<SdModal | undefined>;
@@ -781,6 +790,9 @@ declare class SdFormBuilder {
781
790
  /** Signal toàn cục: TRUE khi BẤT KỲ cdkDrag nào đang active (palette, canvas, group, resize).
782
791
  * Trigger class `.fb-shell--dragging` để ẩn hover/actions/resize toàn diện, không phụ thuộc :has(). */
783
792
  readonly isAnyDragging: i0.WritableSignal<boolean>;
793
+ readonly dragSource: i0.WritableSignal<"row" | "palette" | "canvas" | "resize" | undefined>;
794
+ readonly resizeState: i0.WritableSignal<ResizeState | undefined>;
795
+ readonly isResizing: i0.Signal<boolean>;
784
796
  expand: boolean;
785
797
  dragDropRows: DragDropRowItem[];
786
798
  isDragging: boolean;
@@ -788,18 +800,25 @@ declare class SdFormBuilder {
788
800
  private lastDragPointer?;
789
801
  /** Handler chung cho mọi cdkDragStarted — set signal global true. */
790
802
  onAnyDragStarted: () => void;
803
+ onPaletteDragStarted: () => void;
804
+ onRowDragStarted: () => void;
791
805
  onAnyDragMoved: (event: CdkDragMove<any>) => void;
792
806
  /** Handler chung cho mọi cdkDragEnded — set signal global false (dùng setTimeout 0
793
807
  * để chờ CDK xử lý xong drop event trước khi UI re-enable). */
794
808
  onAnyDragEnded: () => void;
809
+ startResizeControl: (item: SdFormGenericComponent | SdFormGenericGroup, row: DragDropRowItem) => void;
810
+ endResizeControl: (event: any) => void;
795
811
  constructor();
796
812
  ngOnInit(): void;
797
813
  ngOnDestroy(): void;
798
- addComponent: (item: FormBuilderComponent, index?: number) => void;
814
+ addComponent: (item: FormBuilderComponent, index?: number, layoutColumns?: string) => void;
799
815
  /** Symbol Material để render trên canvas item / attribute header. */
800
816
  symbolFor: (item: SdFormGenericComponent | SdFormGenericGroup) => string;
801
817
  /** Human-readable type label (e.g. "Text field", "Date"). */
802
818
  typeLabelFor: (item: SdFormGenericComponent | SdFormGenericGroup) => string;
819
+ placeholderSymbolFor: (item: FormBuilderComponent | SdFormGenericComponent | SdFormGenericGroup | DragDropRowItem | undefined) => string;
820
+ placeholderTitleFor: (item: FormBuilderComponent | SdFormGenericComponent | SdFormGenericGroup | DragDropRowItem | undefined) => string;
821
+ placeholderMetaFor: (item: FormBuilderComponent | SdFormGenericComponent | SdFormGenericGroup | DragDropRowItem | undefined) => string;
803
822
  /** True nếu component có expression điều kiện — drives the "conditional" status chip. */
804
823
  hasConditional: (item: SdFormGenericComponent | SdFormGenericGroup) => boolean;
805
824
  /** Map SdColor preset → 2 CSS var names cho header-bg và header-fg của group card. */
@@ -828,6 +847,9 @@ declare class SdFormBuilder {
828
847
  dragStartComponentItem: (event: any) => void;
829
848
  dragEndComponentItem: (event: any) => void;
830
849
  onMouseover: (event: MouseEvent, rowItem: DragDropRowItem) => void;
850
+ isRowFull: (row: DragDropRowItem) => boolean;
851
+ isRowInlineDropLocked: (row: DragDropRowItem) => boolean;
852
+ canEnterRowDropList: (drag: CdkDrag<FormBuilderComponent | SdFormGenericComponent | SdFormGenericGroup>, drop: CdkDropList<(SdFormGenericComponent | SdFormGenericGroup)[]>) => boolean;
831
853
  onFocus: (event: FocusEvent) => void;
832
854
  xuLyKeoCheo: (dragItem?: SdFormGenericComponent | SdFormGenericGroup) => void;
833
855
  noReturnPredicate: () => boolean;
@@ -853,7 +875,7 @@ declare class SdFormBuilder {
853
875
  static ɵcmp: i0.ɵɵComponentDeclaration<SdFormBuilder, "sd-form-builder", never, { "formGeneric": { "alias": "formGeneric"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
854
876
  }
855
877
 
856
- declare class SdFeelExpression {
878
+ declare class SdFeelExpression implements OnInit {
857
879
  #private;
858
880
  private ref;
859
881
  private expressionFeelPipe;
@@ -97,7 +97,7 @@ interface SdUploadExcelColumnStringArray<T = any> extends SdUploadExcelBaseColum
97
97
  minlength?: number;
98
98
  maxlength?: number;
99
99
  }
100
- type SdImportExcelItem<T = any> = {
100
+ interface SdImportExcelItem<T = any> {
101
101
  data: T;
102
102
  meta: {
103
103
  excelIndex: number;
@@ -107,7 +107,7 @@ type SdImportExcelItem<T = any> = {
107
107
  warning: Record<string, string>;
108
108
  warningMessages: string[];
109
109
  };
110
- };
110
+ }
111
111
 
112
112
  declare class ColumnHiddenPipe implements PipeTransform {
113
113
  constructor();
@@ -1,7 +1,7 @@
1
1
  import * as _angular_core from '@angular/core';
2
2
  import { ElementRef } from '@angular/core';
3
3
  import { Color } from '@sdcorejs/utils/models';
4
- import { MaterialIconFontSet } from '@sdcorejs/angular/utilities/models';
4
+ import { SdIconSet } from '@sdcorejs/angular/modules/icon';
5
5
 
6
6
  /**
7
7
  * Marker cho vùng action custom chiếu vào <sd-inform>.
@@ -25,7 +25,7 @@ declare class SdInform {
25
25
  description: _angular_core.InputSignal<string | undefined>;
26
26
  icon: _angular_core.InputSignal<string | undefined>;
27
27
  hideIcon: _angular_core.InputSignalWithTransform<boolean, unknown>;
28
- fontSet: _angular_core.InputSignalWithTransform<MaterialIconFontSet, MaterialIconFontSet | null | undefined>;
28
+ fontSet: _angular_core.InputSignalWithTransform<SdIconSet | undefined, SdIconSet | null | undefined>;
29
29
  closable: _angular_core.InputSignalWithTransform<boolean, unknown>;
30
30
  actionLabel: _angular_core.InputSignal<string | undefined>;
31
31
  lineClamp: _angular_core.InputSignal<number | undefined>;
@@ -47,12 +47,6 @@ declare class SdInform {
47
47
  'c-error': boolean;
48
48
  }>;
49
49
  effectiveIcon: _angular_core.Signal<string | null>;
50
- fontSetClasses: _angular_core.Signal<{
51
- 'material-icons': boolean;
52
- 'material-icons-outlined': boolean;
53
- 'material-icons-round': boolean;
54
- 'material-icons-sharp': boolean;
55
- }>;
56
50
  hasActionSlot: _angular_core.Signal<boolean>;
57
51
  clampLines: _angular_core.Signal<number | null>;
58
52
  showToggle: _angular_core.Signal<boolean>;
@@ -1,7 +1,7 @@
1
1
  import { MentionFeed, MentionFeedObjectItem, EditorConfig, ClassicEditor } from 'ckeditor5';
2
2
  export { MentionFeedObjectItem } from 'ckeditor5';
3
3
  import * as i0 from '@angular/core';
4
- import { EventEmitter } from '@angular/core';
4
+ import { OnDestroy, EventEmitter } from '@angular/core';
5
5
  import { ControlValueAccessor } from '@angular/forms';
6
6
 
7
7
  type SdMiniEditorOutputFormat = 'html' | 'markdown';
@@ -62,7 +62,7 @@ type SdMiniEditorConfig = EditorConfig & {
62
62
  * </sd-mini-editor>
63
63
  * ```
64
64
  */
65
- declare class SdMiniEditor implements ControlValueAccessor {
65
+ declare class SdMiniEditor implements ControlValueAccessor, OnDestroy {
66
66
  #private;
67
67
  /** Cấu hình option cho editor */
68
68
  option: SdMiniEditorOption;
@@ -113,11 +113,11 @@ declare class SdMiniEditor implements ControlValueAccessor {
113
113
  /**
114
114
  * Get danh sách mentions trong nội dung
115
115
  */
116
- getMentions(): Array<{
116
+ getMentions(): {
117
117
  id: string;
118
118
  name: string;
119
119
  marker: string;
120
- }>;
120
+ }[];
121
121
  /**
122
122
  * ControlValueAccessor: Write value
123
123
  */
@@ -16,7 +16,7 @@ declare class SdModal {
16
16
  width: _angular_core.InputSignalWithTransform<string, string | null | undefined>;
17
17
  height: _angular_core.InputSignalWithTransform<string, string | null | undefined>;
18
18
  view: _angular_core.InputSignalWithTransform<"dialog" | "bottom-sheet" | undefined, "dialog" | "bottom-sheet" | null | undefined>;
19
- modalClass: _angular_core.InputSignalWithTransform<string | string[] | Record<string, boolean>, string | string[] | Record<string, boolean> | null | undefined>;
19
+ modalClass: _angular_core.InputSignalWithTransform<string | Record<string, boolean> | string[], string | Record<string, boolean> | string[] | null | undefined>;
20
20
  lazyLoadContent: _angular_core.InputSignalWithTransform<boolean, unknown>;
21
21
  hideClose: _angular_core.InputSignalWithTransform<boolean, boolean | "">;
22
22
  disableBackdropClose: _angular_core.InputSignalWithTransform<boolean, boolean | "">;
@@ -150,7 +150,7 @@ interface QbDateModeOption {
150
150
  icon: string;
151
151
  }
152
152
  /** Stable option list for the date-mode select (module ref — never reallocated). */
153
- declare const QB_DATE_MODES: ReadonlyArray<QbDateModeOption>;
153
+ declare const QB_DATE_MODES: QbDateModeOption[];
154
154
  /** One value-source option for field-to-field comparison UI. */
155
155
  interface QbValueSourceOption {
156
156
  value: QbValueSource;
@@ -159,12 +159,12 @@ interface QbValueSourceOption {
159
159
  icon: string;
160
160
  }
161
161
  /** Stable option list for choosing between a literal value and another field. */
162
- declare const QB_VALUE_SOURCE_OPTIONS: ReadonlyArray<QbValueSourceOption>;
162
+ declare const QB_VALUE_SOURCE_OPTIONS: QbValueSourceOption[];
163
163
  /** Stable combined direction×unit option list (token `'unit:direction'`). */
164
- declare const QB_RELATIVE_UNIT_OPTIONS: ReadonlyArray<{
164
+ declare const QB_RELATIVE_UNIT_OPTIONS: {
165
165
  value: string;
166
166
  display: string;
167
- }>;
167
+ }[];
168
168
  /** Shared empty option array — stable ref for fallbacks (avoids per-call allocation). */
169
169
  declare const QB_EMPTY_OPTIONS: SdQueryBuilderFieldOption[];
170
170
 
@@ -204,11 +204,11 @@ declare class SdQueryBuilder {
204
204
  readonly resolvedAutoId: _angular_core.Signal<string | undefined>;
205
205
  readonly fieldByKey: _angular_core.Signal<Record<string, SdQueryBuilderField>>;
206
206
  /** Stable option list for the date-mode select. */
207
- readonly dateModes: readonly _sdcorejs_angular_components_query_builder.QbDateModeOption[];
207
+ readonly dateModes: _sdcorejs_angular_components_query_builder.QbDateModeOption[];
208
208
  /** Stable option list for the literal-vs-field operand select. */
209
- readonly valueSourceOptions: readonly _sdcorejs_angular_components_query_builder.QbValueSourceOption[];
209
+ readonly valueSourceOptions: _sdcorejs_angular_components_query_builder.QbValueSourceOption[];
210
210
  /** Stable combined unit×direction option list for the relative select. */
211
- readonly relativeUnitOptions: readonly {
211
+ readonly relativeUnitOptions: {
212
212
  value: string;
213
213
  display: string;
214
214
  }[];
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Type, ElementRef, ChangeDetectorRef, OnDestroy } from '@angular/core';
2
+ import { InjectionToken, Type, ElementRef, ChangeDetectorRef, OnDestroy } from '@angular/core';
3
3
  import { Color } from '@sdcorejs/utils/models';
4
4
  import { Subject, BehaviorSubject } from 'rxjs';
5
5
  import { CdkDragDrop } from '@angular/cdk/drag-drop';
@@ -22,6 +22,7 @@ interface SdTab {
22
22
  tabInfoChanges: Subject<SdTabInfo>;
23
23
  beforeClose?: () => boolean | Promise<boolean>;
24
24
  }
25
+ declare const SD_TAB: InjectionToken<SdTab>;
25
26
 
26
27
  declare class SdTabRouterNavComponent {
27
28
  tabRouterNav: i0.Signal<ElementRef<any> | undefined>;
@@ -87,7 +88,6 @@ declare class SdTabRouterService {
87
88
  currentTabChanges: BehaviorSubject<SdTab | undefined>;
88
89
  newTabs: BehaviorSubject<SdTab | undefined>;
89
90
  updateTabs: BehaviorSubject<SdTab | undefined>;
90
- constructor();
91
91
  addBuilder: (builder: SdTabComponentBuilder) => void;
92
92
  get currentTab(): SdTab | undefined;
93
93
  get currentKey(): string | null;
@@ -100,5 +100,5 @@ declare class SdTabRouterService {
100
100
  static ɵprov: i0.ɵɵInjectableDeclaration<SdTabRouterService>;
101
101
  }
102
102
 
103
- export { SdTabComponent, SdTabRouterOutletComponent, SdTabRouterService };
103
+ export { SD_TAB, SdTabComponent, SdTabRouterOutletComponent, SdTabRouterService };
104
104
  export type { SdTab, SdTabComponentArgs, SdTabComponentBuilder, SdTabInfo };