@sdcorejs/angular 20.0.10 → 20.1.0

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 (126) hide show
  1. package/README.md +32 -23
  2. package/assets/STYLE-GUIDE.md +58 -72
  3. package/assets/scss/core/_inline-edit.scss +1 -1
  4. package/assets/scss/core/color.scss +56 -45
  5. package/assets/scss/core/form.scss +21 -9
  6. package/assets/scss/core/utilities/_base.scss +3 -3
  7. package/assets/scss/core/utilities/_border.scss +1 -1
  8. package/assets/scss/themes/default.scss +46 -32
  9. package/assets/scss/themes/material-theme.scss +8 -87
  10. package/components/badge/index.d.ts +5 -16
  11. package/components/button/index.d.ts +7 -5
  12. package/components/inform/index.d.ts +2 -8
  13. package/components/modal/index.d.ts +1 -1
  14. package/components/query-builder/index.d.ts +6 -6
  15. package/components/section/index.d.ts +1 -5
  16. package/components/side-drawer/index.d.ts +1 -1
  17. package/components/table/index.d.ts +9 -10
  18. package/components/tree/index.d.ts +3 -2
  19. package/fesm2022/sdcorejs-angular-components-anchor.mjs +5 -6
  20. package/fesm2022/sdcorejs-angular-components-anchor.mjs.map +1 -1
  21. package/fesm2022/sdcorejs-angular-components-autoid-inspector.mjs +10 -11
  22. package/fesm2022/sdcorejs-angular-components-autoid-inspector.mjs.map +1 -1
  23. package/fesm2022/sdcorejs-angular-components-badge.mjs +15 -13
  24. package/fesm2022/sdcorejs-angular-components-badge.mjs.map +1 -1
  25. package/fesm2022/sdcorejs-angular-components-button.mjs +10 -11
  26. package/fesm2022/sdcorejs-angular-components-button.mjs.map +1 -1
  27. package/fesm2022/sdcorejs-angular-components-code-editor.mjs +4 -5
  28. package/fesm2022/sdcorejs-angular-components-code-editor.mjs.map +1 -1
  29. package/fesm2022/sdcorejs-angular-components-document-builder.mjs +3 -3
  30. package/fesm2022/sdcorejs-angular-components-document-builder.mjs.map +1 -1
  31. package/fesm2022/sdcorejs-angular-components-editor.mjs +4 -5
  32. package/fesm2022/sdcorejs-angular-components-editor.mjs.map +1 -1
  33. package/fesm2022/sdcorejs-angular-components-form-generic.mjs +21 -24
  34. package/fesm2022/sdcorejs-angular-components-form-generic.mjs.map +1 -1
  35. package/fesm2022/sdcorejs-angular-components-history.mjs +2 -2
  36. package/fesm2022/sdcorejs-angular-components-history.mjs.map +1 -1
  37. package/fesm2022/sdcorejs-angular-components-import-excel.mjs +5 -7
  38. package/fesm2022/sdcorejs-angular-components-import-excel.mjs.map +1 -1
  39. package/fesm2022/sdcorejs-angular-components-inform.mjs +5 -15
  40. package/fesm2022/sdcorejs-angular-components-inform.mjs.map +1 -1
  41. package/fesm2022/sdcorejs-angular-components-mini-editor.mjs +2 -2
  42. package/fesm2022/sdcorejs-angular-components-mini-editor.mjs.map +1 -1
  43. package/fesm2022/sdcorejs-angular-components-modal-resizable.mjs +5 -6
  44. package/fesm2022/sdcorejs-angular-components-modal-resizable.mjs.map +1 -1
  45. package/fesm2022/sdcorejs-angular-components-modal.mjs +25 -7
  46. package/fesm2022/sdcorejs-angular-components-modal.mjs.map +1 -1
  47. package/fesm2022/sdcorejs-angular-components-org-chart.mjs +4 -5
  48. package/fesm2022/sdcorejs-angular-components-org-chart.mjs.map +1 -1
  49. package/fesm2022/sdcorejs-angular-components-preview.mjs +7 -8
  50. package/fesm2022/sdcorejs-angular-components-preview.mjs.map +1 -1
  51. package/fesm2022/sdcorejs-angular-components-query-bar.mjs +24 -28
  52. package/fesm2022/sdcorejs-angular-components-query-bar.mjs.map +1 -1
  53. package/fesm2022/sdcorejs-angular-components-query-builder.mjs +3 -4
  54. package/fesm2022/sdcorejs-angular-components-query-builder.mjs.map +1 -1
  55. package/fesm2022/sdcorejs-angular-components-section.mjs +8 -13
  56. package/fesm2022/sdcorejs-angular-components-section.mjs.map +1 -1
  57. package/fesm2022/sdcorejs-angular-components-side-drawer.mjs +3 -4
  58. package/fesm2022/sdcorejs-angular-components-side-drawer.mjs.map +1 -1
  59. package/fesm2022/sdcorejs-angular-components-splitter.mjs +2 -2
  60. package/fesm2022/sdcorejs-angular-components-splitter.mjs.map +1 -1
  61. package/fesm2022/sdcorejs-angular-components-stepper.mjs +3 -4
  62. package/fesm2022/sdcorejs-angular-components-stepper.mjs.map +1 -1
  63. package/fesm2022/sdcorejs-angular-components-tab-router.mjs +5 -6
  64. package/fesm2022/sdcorejs-angular-components-tab-router.mjs.map +1 -1
  65. package/fesm2022/sdcorejs-angular-components-tab.mjs +3 -4
  66. package/fesm2022/sdcorejs-angular-components-tab.mjs.map +1 -1
  67. package/fesm2022/sdcorejs-angular-components-table.mjs +23 -27
  68. package/fesm2022/sdcorejs-angular-components-table.mjs.map +1 -1
  69. package/fesm2022/sdcorejs-angular-components-tree.mjs +6 -8
  70. package/fesm2022/sdcorejs-angular-components-tree.mjs.map +1 -1
  71. package/fesm2022/sdcorejs-angular-components-upload-file.mjs +8 -9
  72. package/fesm2022/sdcorejs-angular-components-upload-file.mjs.map +1 -1
  73. package/fesm2022/sdcorejs-angular-components-view.mjs +2 -2
  74. package/fesm2022/sdcorejs-angular-components-view.mjs.map +1 -1
  75. package/fesm2022/sdcorejs-angular-directives.mjs +1 -1
  76. package/fesm2022/sdcorejs-angular-directives.mjs.map +1 -1
  77. package/fesm2022/sdcorejs-angular-forms-autocomplete.mjs +5 -7
  78. package/fesm2022/sdcorejs-angular-forms-autocomplete.mjs.map +1 -1
  79. package/fesm2022/sdcorejs-angular-forms-checkbox.mjs +2 -2
  80. package/fesm2022/sdcorejs-angular-forms-checkbox.mjs.map +1 -1
  81. package/fesm2022/sdcorejs-angular-forms-chip-calendar.mjs +7 -9
  82. package/fesm2022/sdcorejs-angular-forms-chip-calendar.mjs.map +1 -1
  83. package/fesm2022/sdcorejs-angular-forms-chip.mjs +5 -7
  84. package/fesm2022/sdcorejs-angular-forms-chip.mjs.map +1 -1
  85. package/fesm2022/sdcorejs-angular-forms-date-range.mjs +7 -9
  86. package/fesm2022/sdcorejs-angular-forms-date-range.mjs.map +1 -1
  87. package/fesm2022/sdcorejs-angular-forms-date.mjs +7 -9
  88. package/fesm2022/sdcorejs-angular-forms-date.mjs.map +1 -1
  89. package/fesm2022/sdcorejs-angular-forms-datetime.mjs +466 -344
  90. package/fesm2022/sdcorejs-angular-forms-datetime.mjs.map +1 -1
  91. package/fesm2022/sdcorejs-angular-forms-inline-text.mjs +4 -5
  92. package/fesm2022/sdcorejs-angular-forms-inline-text.mjs.map +1 -1
  93. package/fesm2022/sdcorejs-angular-forms-input-number.mjs +5 -7
  94. package/fesm2022/sdcorejs-angular-forms-input-number.mjs.map +1 -1
  95. package/fesm2022/sdcorejs-angular-forms-input.mjs +5 -7
  96. package/fesm2022/sdcorejs-angular-forms-input.mjs.map +1 -1
  97. package/fesm2022/sdcorejs-angular-forms-label.mjs +4 -5
  98. package/fesm2022/sdcorejs-angular-forms-label.mjs.map +1 -1
  99. package/fesm2022/sdcorejs-angular-forms-radio.mjs +2 -4
  100. package/fesm2022/sdcorejs-angular-forms-radio.mjs.map +1 -1
  101. package/fesm2022/sdcorejs-angular-forms-select.mjs +6 -8
  102. package/fesm2022/sdcorejs-angular-forms-select.mjs.map +1 -1
  103. package/fesm2022/sdcorejs-angular-forms-switch.mjs +2 -2
  104. package/fesm2022/sdcorejs-angular-forms-switch.mjs.map +1 -1
  105. package/fesm2022/sdcorejs-angular-forms-textarea.mjs +5 -7
  106. package/fesm2022/sdcorejs-angular-forms-textarea.mjs.map +1 -1
  107. package/fesm2022/sdcorejs-angular-modules-icon.mjs +523 -0
  108. package/fesm2022/sdcorejs-angular-modules-icon.mjs.map +1 -0
  109. package/fesm2022/sdcorejs-angular-modules-layout.mjs +29 -29
  110. package/fesm2022/sdcorejs-angular-modules-layout.mjs.map +1 -1
  111. package/fesm2022/sdcorejs-angular-modules.mjs +1 -0
  112. package/fesm2022/sdcorejs-angular-modules.mjs.map +1 -1
  113. package/fesm2022/sdcorejs-angular-services-confirm.mjs +85 -5
  114. package/fesm2022/sdcorejs-angular-services-confirm.mjs.map +1 -1
  115. package/fesm2022/sdcorejs-angular-services-excel.mjs +22 -14
  116. package/fesm2022/sdcorejs-angular-services-excel.mjs.map +1 -1
  117. package/fesm2022/sdcorejs-angular-services-loading.mjs +1 -1
  118. package/fesm2022/sdcorejs-angular-services-loading.mjs.map +1 -1
  119. package/fesm2022/sdcorejs-angular-utilities-models.mjs +3 -2
  120. package/fesm2022/sdcorejs-angular-utilities-models.mjs.map +1 -1
  121. package/forms/datetime/index.d.ts +4 -4
  122. package/modules/icon/index.d.ts +191 -0
  123. package/modules/index.d.ts +1 -0
  124. package/package.json +6 -1
  125. package/services/confirm/index.d.ts +49 -1
  126. package/utilities/models/index.d.ts +6 -4
@@ -1,101 +1,22 @@
1
1
  @use '@angular/material' as mat;
2
- @use './default.scss' as default;
3
- @use 'sass:map';
4
2
 
5
- // --------------------------------------------------
6
- // Palette M2 — generated từ hex color
7
- // --------------------------------------------------
8
- $custom-primary-palette: mat.m2-define-palette(
9
- (
10
- 50: #f0f1f5,
11
- 100: #d7dcea,
12
- 200: #abbce3,
13
- 300: #6e90e3,
14
- 400: #346aea,
15
- 500: #2a66f4,
16
- 600: #0645db,
17
- 700: #0131a3,
18
- 800: #00216d,
19
- 900: #001546,
20
- contrast: (
21
- 400: white,
22
- 500: white,
23
- 600: white,
24
- 700: white,
25
- 800: white,
26
- 900: white,
27
- ),
28
- )
29
- );
30
-
31
- $custom-accent-palette: mat.m2-define-palette(
32
- (
33
- 50: #f1f3f1,
34
- 100: #dce5dd,
35
- 200: #bbd3bc,
36
- 300: #8fc291,
37
- 400: #67b76a,
38
- 500: #4caf50,
39
- 600: #3a8c3d,
40
- 700: #29692c,
41
- 800: #1c471e,
42
- 900: #132f14,
43
- contrast: (
44
- 700: white,
45
- 800: white,
46
- 900: white,
47
- ),
48
- )
49
- );
50
-
51
- $custom-warn-palette: mat.m2-define-palette(
52
- (
53
- 50: #f5f0f0,
54
- 100: #ead9d6,
55
- 200: #e4b0aa,
56
- 300: #e6786b,
57
- 400: #ee4430,
58
- 500: #f82c13,
59
- 600: #d11801,
60
- 700: #9a1100,
61
- 800: #680b00,
62
- 900: #440700,
63
- contrast: (
64
- 600: white,
65
- 700: white,
66
- 800: white,
67
- 900: white,
68
- ),
69
- )
70
- );
71
-
72
- // --------------------------------------------------
73
- // Theme
74
- // --------------------------------------------------
75
- $custom-theme: mat.m2-define-light-theme(
76
- (
77
- color: (
78
- primary: $custom-primary-palette,
79
- accent: $custom-accent-palette,
80
- warn: $custom-warn-palette,
81
- ),
82
- density: -3,
83
- )
84
- );
85
-
86
- @include mat.all-component-themes($custom-theme);
87
-
88
- // Fix paginator density riêng về 0 để không bị lệch
89
3
  html {
4
+ color-scheme: light;
5
+
90
6
  @include mat.theme(
91
7
  (
92
8
  color: (
93
9
  theme-type: light,
94
10
  primary: mat.$azure-palette,
95
- tertiary: mat.$blue-palette,
11
+ tertiary: mat.$green-palette,
96
12
  ),
97
13
  typography: Roboto,
98
14
  density: 0,
99
15
  )
100
16
  );
101
17
  }
18
+
19
+ body {
20
+ background: var(--mat-sys-surface);
21
+ color: var(--mat-sys-on-surface);
22
+ }
@@ -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>;
@@ -33,7 +33,7 @@ declare class SdBadge {
33
33
  }>;
34
34
  iconColorClasses: _angular_core.Signal<{
35
35
  'c-primary': boolean;
36
- 'c-black400': boolean;
36
+ 'c-secondary': boolean;
37
37
  'c-info': boolean;
38
38
  'c-success': boolean;
39
39
  'c-warning': boolean;
@@ -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;
@@ -81,7 +74,7 @@ declare class SdBadge {
81
74
  }>;
82
75
  iconCombinedClasses: _angular_core.Signal<{
83
76
  'c-primary': boolean;
84
- 'c-black400': boolean;
77
+ 'c-secondary': boolean;
85
78
  'c-info': boolean;
86
79
  'c-success': boolean;
87
80
  'c-warning': 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
- type SdButtonType = 'fill' | 'light' | 'outline' | 'link';
6
+ type SdButtonType = 'fill' | 'light' | 'outline' | 'text';
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,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>;
@@ -27,7 +27,7 @@ declare class SdModal {
27
27
  open: () => void;
28
28
  close: () => void;
29
29
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SdModal, never>;
30
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<SdModal, "sd-modal", never, { "autoIdInput": { "alias": "autoId"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "view": { "alias": "view"; "required": false; "isSignal": true; }; "modalClass": { "alias": "modalClass"; "required": false; "isSignal": true; }; "lazyLoadContent": { "alias": "lazyLoadContent"; "required": false; "isSignal": true; }; "hideClose": { "alias": "hideClose"; "required": false; "isSignal": true; }; "disableBackdropClose": { "alias": "disableBackdropClose"; "required": false; "isSignal": true; }; }, { "sdClosed": "sdClosed"; }, never, ["[sdHeaderLeft]", "[sdHeaderRight]", "[sdHeader]", "*", "[sdFooterLeft]", "[sdFooterRight]", "[sdFooter]"], true, never>;
30
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SdModal, "sd-modal", never, { "autoIdInput": { "alias": "autoId"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "view": { "alias": "view"; "required": false; "isSignal": true; }; "modalClass": { "alias": "modalClass"; "required": false; "isSignal": true; }; "lazyLoadContent": { "alias": "lazyLoadContent"; "required": false; "isSignal": true; }; "hideClose": { "alias": "hideClose"; "required": false; "isSignal": true; }; "disableBackdropClose": { "alias": "disableBackdropClose"; "required": false; "isSignal": true; }; }, { "sdClosed": "sdClosed"; }, never, ["[sdHeaderLeft]", "[sdHeaderRight]", "*", "[sdFooterLeft]", "[sdFooterRight]"], true, never>;
31
31
  }
32
32
 
33
33
  export { SdModal };
@@ -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: readonly 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,9 +159,9 @@ 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: readonly 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: readonly {
164
+ declare const QB_RELATIVE_UNIT_OPTIONS: {
165
165
  value: string;
166
166
  display: string;
167
167
  }[];
@@ -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
  }[];
@@ -9,15 +9,11 @@ declare class SdSection {
9
9
  iconColor: _angular_core.InputSignal<Color>;
10
10
  collapsed: _angular_core.ModelSignal<boolean>;
11
11
  collapsible: _angular_core.InputSignalWithTransform<boolean, unknown>;
12
- /** @deprecated Use `collapsible` instead. */
13
- collapsable: _angular_core.InputSignalWithTransform<boolean, unknown>;
14
- readonly isCollapsible: _angular_core.Signal<boolean>;
15
12
  hideHeader: _angular_core.InputSignalWithTransform<boolean, unknown>;
16
- noPaddingBody: _angular_core.InputSignalWithTransform<boolean, unknown>;
17
13
  constructor();
18
14
  toggleCollapse: () => void;
19
15
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SdSection, never>;
20
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<SdSection, "sd-section", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "subTitle": { "alias": "subTitle"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "iconColor": { "alias": "iconColor"; "required": false; "isSignal": true; }; "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; "collapsible": { "alias": "collapsible"; "required": false; "isSignal": true; }; "collapsable": { "alias": "collapsable"; "required": false; "isSignal": true; }; "hideHeader": { "alias": "hideHeader"; "required": false; "isSignal": true; }; "noPaddingBody": { "alias": "noPaddingBody"; "required": false; "isSignal": true; }; }, { "collapsed": "collapsedChange"; }, never, ["[sdHeaderLeft]", "[sdHeaderRight]", "*"], true, never>;
16
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SdSection, "sd-section", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "subTitle": { "alias": "subTitle"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "iconColor": { "alias": "iconColor"; "required": false; "isSignal": true; }; "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; "collapsible": { "alias": "collapsible"; "required": false; "isSignal": true; }; "hideHeader": { "alias": "hideHeader"; "required": false; "isSignal": true; }; }, { "collapsed": "collapsedChange"; }, never, ["[sdHeaderLeft]", "[sdHeaderRight]", "*", "[sdFooterLeft]", "[sdFooterRight]"], true, never>;
21
17
  }
22
18
 
23
19
  declare class SdSectionItem {
@@ -26,7 +26,7 @@ declare class SdSideDrawer {
26
26
  stopLoading: () => void;
27
27
  preventScroll: (event: Event) => void;
28
28
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SdSideDrawer, never>;
29
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<SdSideDrawer, "sd-side-drawer", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "hideClose": { "alias": "hideClose"; "required": false; "isSignal": true; }; "disableBackdropClose": { "alias": "disableBackdropClose"; "required": false; "isSignal": true; }; "drawerClass": { "alias": "drawerClass"; "required": false; "isSignal": true; }; "autoIdInput": { "alias": "autoId"; "required": false; "isSignal": true; }; }, { "sdClosed": "sdClosed"; }, never, ["[sdHeaderLeft]", "[sdHeaderRight]", "*", "[sdFooter]"], true, never>;
29
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SdSideDrawer, "sd-side-drawer", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "hideClose": { "alias": "hideClose"; "required": false; "isSignal": true; }; "disableBackdropClose": { "alias": "disableBackdropClose"; "required": false; "isSignal": true; }; "drawerClass": { "alias": "drawerClass"; "required": false; "isSignal": true; }; "autoIdInput": { "alias": "autoId"; "required": false; "isSignal": true; }; }, { "sdClosed": "sdClosed"; }, never, ["[sdHeaderLeft]", "[sdHeaderRight]", "*", "[sdFooterLeft]", "[sdFooterRight]"], true, never>;
30
30
  }
31
31
 
32
32
  export { SdSideDrawer };
@@ -3,12 +3,13 @@ import { TemplateRef, Signal, EventEmitter, ChangeDetectorRef, InjectionToken, A
3
3
  import { SdBadge } from '@sdcorejs/angular/components/badge';
4
4
  import { SdSearch } from '@sdcorejs/angular/forms';
5
5
  import { Operator, NestedKeyOf, Order, PagingReq, Color } from '@sdcorejs/utils/models';
6
- import { SdUnwrapSignal, MaterialIconFontSet } from '@sdcorejs/angular/utilities/models';
6
+ import { SdUnwrapSignal } from '@sdcorejs/angular/utilities/models';
7
7
  import { MatPaginatorIntl, MatPaginator } from '@angular/material/paginator';
8
8
  import { MatSort } from '@angular/material/sort';
9
9
  import { MatTable } from '@angular/material/table';
10
10
  import { SdExcelColumn, SdLoadingService, SdExcelService, SdNotifyService, SdConfirmService } from '@sdcorejs/angular/services';
11
11
  import { Observable } from 'rxjs';
12
+ import { SdIconSet } from '@sdcorejs/angular/modules/icon';
12
13
  import { SdButton } from '@sdcorejs/angular/components/button';
13
14
  import { CdkDrag, CdkDropList, CdkDragDrop } from '@angular/cdk/drag-drop';
14
15
  import { SdQuickAction } from '@sdcorejs/angular/components/quick-action';
@@ -341,8 +342,6 @@ interface SdTableOptionFilter<T = any> {
341
342
  manualFilter?: boolean;
342
343
  /** Có thể thu gọn bộ lọc hay không */
343
344
  collapsible?: boolean;
344
- /** @deprecated Use `collapsible` instead. */
345
- collapsable?: boolean;
346
345
  /** Ẩn toolbar (xóa bộ lọc, thiết lập) của external filter, khi có ít external filter user không cần chức năng này */
347
346
  hideExternalFilterToolbar?: boolean;
348
347
  /** Hàm xử lý khi trigger clear filter từ external filter */
@@ -451,7 +450,7 @@ type SdTableCommand<T = any> = SdTableCommandNormal<T> | SdTableCommandChildren<
451
450
  interface SdTableCommandNormal<T = any> {
452
451
  color?: Color;
453
452
  icon?: string | ((rowData: T) => string);
454
- fontSet?: MaterialIconFontSet;
453
+ fontSet?: SdIconSet;
455
454
  title?: string | ((rowData: T) => string);
456
455
  disabled?: boolean | ((rowData: T) => boolean);
457
456
  hidden?: boolean | ((rowData: T) => boolean | Promise<boolean>);
@@ -460,7 +459,7 @@ interface SdTableCommandNormal<T = any> {
460
459
  }
461
460
  interface SdTableCommandChildren<T = any> {
462
461
  icon?: string | ((rowData: T) => string);
463
- fontSet?: MaterialIconFontSet;
462
+ fontSet?: SdIconSet;
464
463
  title?: string | ((rowData: T) => string);
465
464
  disabled?: boolean | ((rowData: T) => boolean);
466
465
  hidden?: boolean | ((rowData: T) => boolean | Promise<boolean>);
@@ -635,13 +634,13 @@ type SdTableAction<T = any> = SdTableActionNormal<T> | SdTableActionChildren<T>;
635
634
  interface SdTableActionNormal<T = any> {
636
635
  /**
637
636
  * Tên icon hiển thị trên action button.
638
- * Giá trị này được render qua `mat-icon`, vì vậy nên dùng đúng tên glyph của Material Icons.
637
+ * Giá trị này được render qua `sd-icon`, vì vậy nên dùng đúng tên glyph của configured icon set.
639
638
  * Tra cứu icon tại: https://fonts.google.com/icons
640
639
  */
641
640
  icon?: string;
642
641
  /**
643
- * Font set của Material icon.
644
- * Kiểu thực tế lấy từ `SdButton['fontSet']` và chỉ hỗ trợ các giá trị thuộc `MaterialIconFontSet`,
642
+ * Font set của icon.
643
+ * Kiểu thực tế lấy từ `SdButton['fontSet']` và chỉ hỗ trợ các giá trị thuộc `SdIconSet`,
645
644
  * ví dụ: `material-icons`, `material-icons-outlined`, `material-icons-round`,
646
645
  * `material-icons-sharp`.
647
646
  * Nếu không truyền, `SdButton` sẽ dùng font set mặc định của nó.
@@ -672,11 +671,11 @@ interface SdTableActionNormal<T = any> {
672
671
  interface SdTableActionChildren<T = any> {
673
672
  /**
674
673
  * Tên icon của action cha (group action).
675
- * Giá trị nên là tên glyph Material Icons: https://fonts.google.com/icons
674
+ * Giá trị nên là tên glyph configured icon set: https://fonts.google.com/icons
676
675
  */
677
676
  icon?: string;
678
677
  /**
679
- * Font set của Material icon cho action cha.
678
+ * Font set của icon cho action cha.
680
679
  * Dùng cùng kiểu dữ liệu với `SdButton['fontSet']`.
681
680
  */
682
681
  fontSet?: SdUnwrapSignal<SdButton['fontSet']>;
@@ -1,7 +1,8 @@
1
1
  import * as _angular_core from '@angular/core';
2
2
  import { Signal, TemplateRef } from '@angular/core';
3
3
  import { SdButton } from '@sdcorejs/angular/components/button';
4
- import { SdUnwrapSignal, MaterialIconFontSet } from '@sdcorejs/angular/utilities/models';
4
+ import { SdIconSet } from '@sdcorejs/angular/modules/icon';
5
+ import { SdUnwrapSignal } from '@sdcorejs/angular/utilities/models';
5
6
  import { Color } from '@sdcorejs/utils/models';
6
7
 
7
8
  type SdTreeDataSource<TItem = any> = TItem[] | Signal<TItem[]> | (() => TItem[] | Promise<TItem[]>);
@@ -60,7 +61,7 @@ interface SdTreeCommand<T = any> {
60
61
  title: string | ((item: T) => string);
61
62
  icon?: string | ((item: T) => string | undefined | null);
62
63
  color?: Color;
63
- fontSet?: MaterialIconFontSet;
64
+ fontSet?: SdIconSet;
64
65
  disabled?: boolean | ((item: T) => boolean);
65
66
  hidden?: boolean | ((item: T) => boolean);
66
67
  click: (item: T) => void;
@@ -1,11 +1,10 @@
1
- import * as i1$1 from '@angular/common';
1
+ import * as i1 from '@angular/common';
2
2
  import { CommonModule } from '@angular/common';
3
3
  import * as i0 from '@angular/core';
4
4
  import { input, inject, ElementRef, effect, Component, computed, output, ChangeDetectionStrategy, viewChild, contentChildren, booleanAttribute, signal, afterNextRender, untracked } from '@angular/core';
5
5
  import { Utilities, BrowserUtilities } from '@sdcorejs/utils/fns';
6
6
  import { Subject, Subscription, debounceTime, fromEvent, take } from 'rxjs';
7
- import * as i1 from '@angular/material/icon';
8
- import { MatIconModule } from '@angular/material/icon';
7
+ import { SdIcon } from '@sdcorejs/angular/modules/icon';
9
8
 
10
9
  class SdAnchorItem {
11
10
  title = input.required(...(ngDevMode ? [{ debugName: "title" }] : []));
@@ -59,11 +58,11 @@ class AnchorNav {
59
58
  this.#subscription.unsubscribe();
60
59
  }
61
60
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: AnchorNav, deps: [], target: i0.ɵɵFactoryTarget.Component });
62
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: AnchorNav, isStandalone: true, selector: "anchor-nav", inputs: { sections: { classPropertyName: "sections", publicName: "sections", isSignal: true, isRequired: true, transformFunction: null }, activeSectionId: { classPropertyName: "activeSectionId", publicName: "activeSectionId", isSignal: true, isRequired: false, transformFunction: null }, ellipsis: { classPropertyName: "ellipsis", publicName: "ellipsis", isSignal: true, isRequired: false, transformFunction: null }, sidebarWidth: { classPropertyName: "sidebarWidth", publicName: "sidebarWidth", isSignal: true, isRequired: false, transformFunction: null }, parentAutoId: { classPropertyName: "parentAutoId", publicName: "parentAutoId", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { clickSection: "clickSection" }, ngImport: i0, template: "<div\n class=\"c-anchor-list\"\n [style.width]=\"sidebarWidth()\"\n [style.--anchor-active-color]=\"cssActiveVar()\">\n @for (section of sections(); track section.id) {\n <div\n class=\"c-anchor-list-item\"\n [class.active]=\"section.id === activeSectionId()\"\n (click)=\"onClickSection(section.id)\"\n (keydown.enter)=\"onClickSection(section.id)\"\n [attr.data-autoId]=\"itemAutoId(section)\"\n tabindex=\"0\">\n @if (section.icon()) {\n <mat-icon class=\"c-anchor-list-item-icon\">{{ section.icon() }}</mat-icon>\n }\n <div class=\"c-anchor-list-item-text\" [class.ellipsis]=\"ellipsis()\">\n {{ section.title() }}\n </div>\n </div>\n }\n</div>\n", styles: [".text-primary{color:var(--sd-primary)!important}.bg-primary{background:var(--sd-primary)!important}.border-primary{border-color:var(--sd-primary)!important}.text-primary-light{color:var(--sd-primary-light)!important}.bg-primary-light{background:var(--sd-primary-light)!important}.border-primary-light{border-color:var(--sd-primary-light)!important}.text-primary-dark{color:var(--sd-primary-dark)!important}.bg-primary-dark{background:var(--sd-primary-dark)!important}.border-primary-dark{border-color:var(--sd-primary-dark)!important}.text-info{color:var(--sd-info)!important}.bg-info{background:var(--sd-info)!important}.border-info{border-color:var(--sd-info)!important}.text-info-light{color:var(--sd-info-light)!important}.bg-info-light{background:var(--sd-info-light)!important}.border-info-light{border-color:var(--sd-info-light)!important}.text-info-dark{color:var(--sd-info-dark)!important}.bg-info-dark{background:var(--sd-info-dark)!important}.border-info-dark{border-color:var(--sd-info-dark)!important}.text-success{color:var(--sd-success)!important}.bg-success{background:var(--sd-success)!important}.border-success{border-color:var(--sd-success)!important}.text-success-light{color:var(--sd-success-light)!important}.bg-success-light{background:var(--sd-success-light)!important}.border-success-light{border-color:var(--sd-success-light)!important}.text-success-dark{color:var(--sd-success-dark)!important}.bg-success-dark{background:var(--sd-success-dark)!important}.border-success-dark{border-color:var(--sd-success-dark)!important}.text-warning{color:var(--sd-warning)!important}.bg-warning{background:var(--sd-warning)!important}.border-warning{border-color:var(--sd-warning)!important}.text-warning-light{color:var(--sd-warning-light)!important}.bg-warning-light{background:var(--sd-warning-light)!important}.border-warning-light{border-color:var(--sd-warning-light)!important}.text-warning-dark{color:var(--sd-warning-dark)!important}.bg-warning-dark{background:var(--sd-warning-dark)!important}.border-warning-dark{border-color:var(--sd-warning-dark)!important}.text-error{color:var(--sd-error)!important}.bg-error{background:var(--sd-error)!important}.border-error{border-color:var(--sd-error)!important}.text-error-light{color:var(--sd-error-light)!important}.bg-error-light{background:var(--sd-error-light)!important}.border-error-light{border-color:var(--sd-error-light)!important}.text-error-dark{color:var(--sd-error-dark)!important}.bg-error-dark{background:var(--sd-error-dark)!important}.border-error-dark{border-color:var(--sd-error-dark)!important}.text-secondary{color:var(--sd-secondary)!important}.bg-secondary{background:var(--sd-secondary)!important}.border-secondary{border-color:var(--sd-secondary)!important}.text-secondary-light{color:var(--sd-secondary-light)!important}.bg-secondary-light{background:var(--sd-secondary-light)!important}.border-secondary-light{border-color:var(--sd-secondary-light)!important}.text-secondary-dark{color:var(--sd-secondary-dark)!important}.bg-secondary-dark{background:var(--sd-secondary-dark)!important}.border-secondary-dark{border-color:var(--sd-secondary-dark)!important}.text-light{color:var(--sd-light)!important}.bg-light{background:var(--sd-light)!important}.border-light{border-color:var(--sd-light)!important}.text-dark{color:var(--sd-dark)!important}.bg-dark{background:var(--sd-dark)!important}.border-dark{border-color:var(--sd-dark)!important}.text-black500{color:var(--sd-black500)!important}.bg-black500{background:var(--sd-black500)!important}.border-black500{border-color:var(--sd-black500)!important}.text-black400{color:var(--sd-black400)!important}.bg-black400{background:var(--sd-black400)!important}.border-black400{border-color:var(--sd-black400)!important}.text-black300{color:var(--sd-black300)!important}.bg-black300{background:var(--sd-black300)!important}.border-black300{border-color:var(--sd-black300)!important}.text-black200{color:var(--sd-black200)!important}.bg-black200{background:var(--sd-black200)!important}.border-black200{border-color:var(--sd-black200)!important}.text-black100{color:var(--sd-black100)!important}.bg-black100{background:var(--sd-black100)!important}.border-black100{border-color:var(--sd-black100)!important}.text-white{color:#fff!important}.bg-white{background:#fff!important}.border-white{border-color:#fff!important}.text-black{color:#000!important}.bg-black{background:#000!important}.border-black{border-color:#000!important}.c-anchor-list{height:100%;display:flex;flex-direction:column}.c-anchor-list .c-anchor-list-item{border-left:2px solid var(--sd-secondary-light);color:var(--sd-black500);padding:.5rem 1.5rem;cursor:pointer;display:flex;align-items:center;gap:.5rem;min-width:0;overflow:hidden}.c-anchor-list .c-anchor-list-item .c-anchor-list-item-icon{flex:0 0 auto}.c-anchor-list .c-anchor-list-item .c-anchor-list-item-text{flex:1 1 0;min-width:0;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.c-anchor-list .c-anchor-list-item .c-anchor-list-item-text.ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.c-anchor-list .c-anchor-list-item.active{border-left:2px solid var(--anchor-active-color, var(--sd-primary));color:var(--anchor-active-color, var(--sd-primary));font-weight:700}.c-anchor-list .c-anchor-list-item.active .c-anchor-list-item-icon{color:var(--anchor-active-color, var(--sd-primary))}.c-anchor-list .c-anchor-list-item:not(.active){border-left:2px solid var(--sd-secondary-light);font-weight:400}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
61
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: AnchorNav, isStandalone: true, selector: "anchor-nav", inputs: { sections: { classPropertyName: "sections", publicName: "sections", isSignal: true, isRequired: true, transformFunction: null }, activeSectionId: { classPropertyName: "activeSectionId", publicName: "activeSectionId", isSignal: true, isRequired: false, transformFunction: null }, ellipsis: { classPropertyName: "ellipsis", publicName: "ellipsis", isSignal: true, isRequired: false, transformFunction: null }, sidebarWidth: { classPropertyName: "sidebarWidth", publicName: "sidebarWidth", isSignal: true, isRequired: false, transformFunction: null }, parentAutoId: { classPropertyName: "parentAutoId", publicName: "parentAutoId", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { clickSection: "clickSection" }, ngImport: i0, template: "<div\n class=\"c-anchor-list\"\n [style.width]=\"sidebarWidth()\"\n [style.--anchor-active-color]=\"cssActiveVar()\">\n @for (section of sections(); track section.id) {\n <div\n class=\"c-anchor-list-item\"\n [class.active]=\"section.id === activeSectionId()\"\n (click)=\"onClickSection(section.id)\"\n (keydown.enter)=\"onClickSection(section.id)\"\n [attr.data-autoId]=\"itemAutoId(section)\"\n tabindex=\"0\">\n @if (section.icon()) {\n <sd-icon class=\"c-anchor-list-item-icon\" [name]=\"section.icon()\"></sd-icon>\n }\n <div class=\"c-anchor-list-item-text\" [class.ellipsis]=\"ellipsis()\">\n {{ section.title() }}\n </div>\n </div>\n }\n</div>\n", styles: [".text-primary{color:var(--sd-primary)!important}.bg-primary{background:var(--sd-primary)!important}.border-primary{border-color:var(--sd-primary)!important}.text-primary-light{color:var(--sd-primary-light)!important}.bg-primary-light{background:var(--sd-primary-light)!important}.border-primary-light{border-color:var(--sd-primary-light)!important}.text-primary-dark{color:var(--sd-primary-dark)!important}.bg-primary-dark{background:var(--sd-primary-dark)!important}.border-primary-dark{border-color:var(--sd-primary-dark)!important}.text-primary-contrast{color:var(--sd-primary-contrast)!important}.bg-primary-contrast{background:var(--sd-primary-contrast)!important}.border-primary-contrast{border-color:var(--sd-primary-contrast)!important}.text-secondary{color:var(--sd-secondary)!important}.bg-secondary{background:var(--sd-secondary)!important}.border-secondary{border-color:var(--sd-secondary)!important}.text-secondary-light{color:var(--sd-secondary-light)!important}.bg-secondary-light{background:var(--sd-secondary-light)!important}.border-secondary-light{border-color:var(--sd-secondary-light)!important}.text-secondary-dark{color:var(--sd-secondary-dark)!important}.bg-secondary-dark{background:var(--sd-secondary-dark)!important}.border-secondary-dark{border-color:var(--sd-secondary-dark)!important}.text-secondary-contrast{color:var(--sd-secondary-contrast)!important}.bg-secondary-contrast{background:var(--sd-secondary-contrast)!important}.border-secondary-contrast{border-color:var(--sd-secondary-contrast)!important}.text-info{color:var(--sd-info)!important}.bg-info{background:var(--sd-info)!important}.border-info{border-color:var(--sd-info)!important}.text-info-light{color:var(--sd-info-light)!important}.bg-info-light{background:var(--sd-info-light)!important}.border-info-light{border-color:var(--sd-info-light)!important}.text-info-dark{color:var(--sd-info-dark)!important}.bg-info-dark{background:var(--sd-info-dark)!important}.border-info-dark{border-color:var(--sd-info-dark)!important}.text-info-contrast{color:var(--sd-info-contrast)!important}.bg-info-contrast{background:var(--sd-info-contrast)!important}.border-info-contrast{border-color:var(--sd-info-contrast)!important}.text-success{color:var(--sd-success)!important}.bg-success{background:var(--sd-success)!important}.border-success{border-color:var(--sd-success)!important}.text-success-light{color:var(--sd-success-light)!important}.bg-success-light{background:var(--sd-success-light)!important}.border-success-light{border-color:var(--sd-success-light)!important}.text-success-dark{color:var(--sd-success-dark)!important}.bg-success-dark{background:var(--sd-success-dark)!important}.border-success-dark{border-color:var(--sd-success-dark)!important}.text-success-contrast{color:var(--sd-success-contrast)!important}.bg-success-contrast{background:var(--sd-success-contrast)!important}.border-success-contrast{border-color:var(--sd-success-contrast)!important}.text-warning{color:var(--sd-warning)!important}.bg-warning{background:var(--sd-warning)!important}.border-warning{border-color:var(--sd-warning)!important}.text-warning-light{color:var(--sd-warning-light)!important}.bg-warning-light{background:var(--sd-warning-light)!important}.border-warning-light{border-color:var(--sd-warning-light)!important}.text-warning-dark{color:var(--sd-warning-dark)!important}.bg-warning-dark{background:var(--sd-warning-dark)!important}.border-warning-dark{border-color:var(--sd-warning-dark)!important}.text-warning-contrast{color:var(--sd-warning-contrast)!important}.bg-warning-contrast{background:var(--sd-warning-contrast)!important}.border-warning-contrast{border-color:var(--sd-warning-contrast)!important}.text-error{color:var(--sd-error)!important}.bg-error{background:var(--sd-error)!important}.border-error{border-color:var(--sd-error)!important}.text-error-light{color:var(--sd-error-light)!important}.bg-error-light{background:var(--sd-error-light)!important}.border-error-light{border-color:var(--sd-error-light)!important}.text-error-dark{color:var(--sd-error-dark)!important}.bg-error-dark{background:var(--sd-error-dark)!important}.border-error-dark{border-color:var(--sd-error-dark)!important}.text-error-contrast{color:var(--sd-error-contrast)!important}.bg-error-contrast{background:var(--sd-error-contrast)!important}.border-error-contrast{border-color:var(--sd-error-contrast)!important}.text-surface{color:var(--sd-surface)!important}.bg-surface{background:var(--sd-surface)!important}.border-surface{border-color:var(--sd-surface)!important}.text-surface-muted{color:var(--sd-surface-muted)!important}.bg-surface-muted{background:var(--sd-surface-muted)!important}.border-surface-muted{border-color:var(--sd-surface-muted)!important}.text-text{color:var(--sd-text)!important}.bg-text{background:var(--sd-text)!important}.border-text{border-color:var(--sd-text)!important}.text-text-secondary{color:var(--sd-text-secondary)!important}.bg-text-secondary{background:var(--sd-text-secondary)!important}.border-text-secondary{border-color:var(--sd-text-secondary)!important}.text-text-muted{color:var(--sd-text-muted)!important}.bg-text-muted{background:var(--sd-text-muted)!important}.border-text-muted{border-color:var(--sd-text-muted)!important}.text-border{color:var(--sd-border)!important}.bg-border{background:var(--sd-border)!important}.border-border{border-color:var(--sd-border)!important}.text-border-strong{color:var(--sd-border-strong)!important}.bg-border-strong{background:var(--sd-border-strong)!important}.border-border-strong{border-color:var(--sd-border-strong)!important}.text-disabled-bg{color:var(--sd-disabled-bg)!important}.bg-disabled-bg{background:var(--sd-disabled-bg)!important}.border-disabled-bg{border-color:var(--sd-disabled-bg)!important}.text-disabled-text{color:var(--sd-disabled-text)!important}.bg-disabled-text{background:var(--sd-disabled-text)!important}.border-disabled-text{border-color:var(--sd-disabled-text)!important}.text-white{color:#fff!important}.bg-white{background:#fff!important}.border-white{border-color:#fff!important}.text-black{color:#000!important}.bg-black{background:#000!important}.border-black{border-color:#000!important}.text-secondary{color:var(--sd-text-secondary)!important}.text-muted{color:var(--sd-text-muted)!important}.text-body{color:var(--sd-text)!important}.bg-muted{background:var(--sd-surface-muted)!important}.c-anchor-list{height:100%;display:flex;flex-direction:column}.c-anchor-list .c-anchor-list-item{border-left:2px solid var(--sd-secondary-light);color:var(--sd-text);padding:.5rem 1.5rem;cursor:pointer;display:flex;align-items:center;gap:.5rem;min-width:0;overflow:hidden}.c-anchor-list .c-anchor-list-item .c-anchor-list-item-icon{flex:0 0 auto}.c-anchor-list .c-anchor-list-item .c-anchor-list-item-text{flex:1 1 0;min-width:0;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.c-anchor-list .c-anchor-list-item .c-anchor-list-item-text.ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.c-anchor-list .c-anchor-list-item.active{border-left:2px solid var(--anchor-active-color, var(--sd-primary));color:var(--anchor-active-color, var(--sd-primary));font-weight:700}.c-anchor-list .c-anchor-list-item.active .c-anchor-list-item-icon{color:var(--anchor-active-color, var(--sd-primary))}.c-anchor-list .c-anchor-list-item:not(.active){border-left:2px solid var(--sd-secondary-light);font-weight:400}\n"], dependencies: [{ kind: "component", type: SdIcon, selector: "sd-icon", inputs: ["name", "fontIcon", "color", "set", "fontSet", "size", "strokeWidth", "absoluteStrokeWidth", "ariaLabel"] }, { kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
63
62
  }
64
63
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: AnchorNav, decorators: [{
65
64
  type: Component,
66
- args: [{ selector: 'anchor-nav', changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule, MatIconModule], standalone: true, template: "<div\n class=\"c-anchor-list\"\n [style.width]=\"sidebarWidth()\"\n [style.--anchor-active-color]=\"cssActiveVar()\">\n @for (section of sections(); track section.id) {\n <div\n class=\"c-anchor-list-item\"\n [class.active]=\"section.id === activeSectionId()\"\n (click)=\"onClickSection(section.id)\"\n (keydown.enter)=\"onClickSection(section.id)\"\n [attr.data-autoId]=\"itemAutoId(section)\"\n tabindex=\"0\">\n @if (section.icon()) {\n <mat-icon class=\"c-anchor-list-item-icon\">{{ section.icon() }}</mat-icon>\n }\n <div class=\"c-anchor-list-item-text\" [class.ellipsis]=\"ellipsis()\">\n {{ section.title() }}\n </div>\n </div>\n }\n</div>\n", styles: [".text-primary{color:var(--sd-primary)!important}.bg-primary{background:var(--sd-primary)!important}.border-primary{border-color:var(--sd-primary)!important}.text-primary-light{color:var(--sd-primary-light)!important}.bg-primary-light{background:var(--sd-primary-light)!important}.border-primary-light{border-color:var(--sd-primary-light)!important}.text-primary-dark{color:var(--sd-primary-dark)!important}.bg-primary-dark{background:var(--sd-primary-dark)!important}.border-primary-dark{border-color:var(--sd-primary-dark)!important}.text-info{color:var(--sd-info)!important}.bg-info{background:var(--sd-info)!important}.border-info{border-color:var(--sd-info)!important}.text-info-light{color:var(--sd-info-light)!important}.bg-info-light{background:var(--sd-info-light)!important}.border-info-light{border-color:var(--sd-info-light)!important}.text-info-dark{color:var(--sd-info-dark)!important}.bg-info-dark{background:var(--sd-info-dark)!important}.border-info-dark{border-color:var(--sd-info-dark)!important}.text-success{color:var(--sd-success)!important}.bg-success{background:var(--sd-success)!important}.border-success{border-color:var(--sd-success)!important}.text-success-light{color:var(--sd-success-light)!important}.bg-success-light{background:var(--sd-success-light)!important}.border-success-light{border-color:var(--sd-success-light)!important}.text-success-dark{color:var(--sd-success-dark)!important}.bg-success-dark{background:var(--sd-success-dark)!important}.border-success-dark{border-color:var(--sd-success-dark)!important}.text-warning{color:var(--sd-warning)!important}.bg-warning{background:var(--sd-warning)!important}.border-warning{border-color:var(--sd-warning)!important}.text-warning-light{color:var(--sd-warning-light)!important}.bg-warning-light{background:var(--sd-warning-light)!important}.border-warning-light{border-color:var(--sd-warning-light)!important}.text-warning-dark{color:var(--sd-warning-dark)!important}.bg-warning-dark{background:var(--sd-warning-dark)!important}.border-warning-dark{border-color:var(--sd-warning-dark)!important}.text-error{color:var(--sd-error)!important}.bg-error{background:var(--sd-error)!important}.border-error{border-color:var(--sd-error)!important}.text-error-light{color:var(--sd-error-light)!important}.bg-error-light{background:var(--sd-error-light)!important}.border-error-light{border-color:var(--sd-error-light)!important}.text-error-dark{color:var(--sd-error-dark)!important}.bg-error-dark{background:var(--sd-error-dark)!important}.border-error-dark{border-color:var(--sd-error-dark)!important}.text-secondary{color:var(--sd-secondary)!important}.bg-secondary{background:var(--sd-secondary)!important}.border-secondary{border-color:var(--sd-secondary)!important}.text-secondary-light{color:var(--sd-secondary-light)!important}.bg-secondary-light{background:var(--sd-secondary-light)!important}.border-secondary-light{border-color:var(--sd-secondary-light)!important}.text-secondary-dark{color:var(--sd-secondary-dark)!important}.bg-secondary-dark{background:var(--sd-secondary-dark)!important}.border-secondary-dark{border-color:var(--sd-secondary-dark)!important}.text-light{color:var(--sd-light)!important}.bg-light{background:var(--sd-light)!important}.border-light{border-color:var(--sd-light)!important}.text-dark{color:var(--sd-dark)!important}.bg-dark{background:var(--sd-dark)!important}.border-dark{border-color:var(--sd-dark)!important}.text-black500{color:var(--sd-black500)!important}.bg-black500{background:var(--sd-black500)!important}.border-black500{border-color:var(--sd-black500)!important}.text-black400{color:var(--sd-black400)!important}.bg-black400{background:var(--sd-black400)!important}.border-black400{border-color:var(--sd-black400)!important}.text-black300{color:var(--sd-black300)!important}.bg-black300{background:var(--sd-black300)!important}.border-black300{border-color:var(--sd-black300)!important}.text-black200{color:var(--sd-black200)!important}.bg-black200{background:var(--sd-black200)!important}.border-black200{border-color:var(--sd-black200)!important}.text-black100{color:var(--sd-black100)!important}.bg-black100{background:var(--sd-black100)!important}.border-black100{border-color:var(--sd-black100)!important}.text-white{color:#fff!important}.bg-white{background:#fff!important}.border-white{border-color:#fff!important}.text-black{color:#000!important}.bg-black{background:#000!important}.border-black{border-color:#000!important}.c-anchor-list{height:100%;display:flex;flex-direction:column}.c-anchor-list .c-anchor-list-item{border-left:2px solid var(--sd-secondary-light);color:var(--sd-black500);padding:.5rem 1.5rem;cursor:pointer;display:flex;align-items:center;gap:.5rem;min-width:0;overflow:hidden}.c-anchor-list .c-anchor-list-item .c-anchor-list-item-icon{flex:0 0 auto}.c-anchor-list .c-anchor-list-item .c-anchor-list-item-text{flex:1 1 0;min-width:0;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.c-anchor-list .c-anchor-list-item .c-anchor-list-item-text.ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.c-anchor-list .c-anchor-list-item.active{border-left:2px solid var(--anchor-active-color, var(--sd-primary));color:var(--anchor-active-color, var(--sd-primary));font-weight:700}.c-anchor-list .c-anchor-list-item.active .c-anchor-list-item-icon{color:var(--anchor-active-color, var(--sd-primary))}.c-anchor-list .c-anchor-list-item:not(.active){border-left:2px solid var(--sd-secondary-light);font-weight:400}\n"] }]
65
+ args: [{ selector: 'anchor-nav', changeDetection: ChangeDetectionStrategy.OnPush, imports: [SdIcon, CommonModule], standalone: true, template: "<div\n class=\"c-anchor-list\"\n [style.width]=\"sidebarWidth()\"\n [style.--anchor-active-color]=\"cssActiveVar()\">\n @for (section of sections(); track section.id) {\n <div\n class=\"c-anchor-list-item\"\n [class.active]=\"section.id === activeSectionId()\"\n (click)=\"onClickSection(section.id)\"\n (keydown.enter)=\"onClickSection(section.id)\"\n [attr.data-autoId]=\"itemAutoId(section)\"\n tabindex=\"0\">\n @if (section.icon()) {\n <sd-icon class=\"c-anchor-list-item-icon\" [name]=\"section.icon()\"></sd-icon>\n }\n <div class=\"c-anchor-list-item-text\" [class.ellipsis]=\"ellipsis()\">\n {{ section.title() }}\n </div>\n </div>\n }\n</div>\n", styles: [".text-primary{color:var(--sd-primary)!important}.bg-primary{background:var(--sd-primary)!important}.border-primary{border-color:var(--sd-primary)!important}.text-primary-light{color:var(--sd-primary-light)!important}.bg-primary-light{background:var(--sd-primary-light)!important}.border-primary-light{border-color:var(--sd-primary-light)!important}.text-primary-dark{color:var(--sd-primary-dark)!important}.bg-primary-dark{background:var(--sd-primary-dark)!important}.border-primary-dark{border-color:var(--sd-primary-dark)!important}.text-primary-contrast{color:var(--sd-primary-contrast)!important}.bg-primary-contrast{background:var(--sd-primary-contrast)!important}.border-primary-contrast{border-color:var(--sd-primary-contrast)!important}.text-secondary{color:var(--sd-secondary)!important}.bg-secondary{background:var(--sd-secondary)!important}.border-secondary{border-color:var(--sd-secondary)!important}.text-secondary-light{color:var(--sd-secondary-light)!important}.bg-secondary-light{background:var(--sd-secondary-light)!important}.border-secondary-light{border-color:var(--sd-secondary-light)!important}.text-secondary-dark{color:var(--sd-secondary-dark)!important}.bg-secondary-dark{background:var(--sd-secondary-dark)!important}.border-secondary-dark{border-color:var(--sd-secondary-dark)!important}.text-secondary-contrast{color:var(--sd-secondary-contrast)!important}.bg-secondary-contrast{background:var(--sd-secondary-contrast)!important}.border-secondary-contrast{border-color:var(--sd-secondary-contrast)!important}.text-info{color:var(--sd-info)!important}.bg-info{background:var(--sd-info)!important}.border-info{border-color:var(--sd-info)!important}.text-info-light{color:var(--sd-info-light)!important}.bg-info-light{background:var(--sd-info-light)!important}.border-info-light{border-color:var(--sd-info-light)!important}.text-info-dark{color:var(--sd-info-dark)!important}.bg-info-dark{background:var(--sd-info-dark)!important}.border-info-dark{border-color:var(--sd-info-dark)!important}.text-info-contrast{color:var(--sd-info-contrast)!important}.bg-info-contrast{background:var(--sd-info-contrast)!important}.border-info-contrast{border-color:var(--sd-info-contrast)!important}.text-success{color:var(--sd-success)!important}.bg-success{background:var(--sd-success)!important}.border-success{border-color:var(--sd-success)!important}.text-success-light{color:var(--sd-success-light)!important}.bg-success-light{background:var(--sd-success-light)!important}.border-success-light{border-color:var(--sd-success-light)!important}.text-success-dark{color:var(--sd-success-dark)!important}.bg-success-dark{background:var(--sd-success-dark)!important}.border-success-dark{border-color:var(--sd-success-dark)!important}.text-success-contrast{color:var(--sd-success-contrast)!important}.bg-success-contrast{background:var(--sd-success-contrast)!important}.border-success-contrast{border-color:var(--sd-success-contrast)!important}.text-warning{color:var(--sd-warning)!important}.bg-warning{background:var(--sd-warning)!important}.border-warning{border-color:var(--sd-warning)!important}.text-warning-light{color:var(--sd-warning-light)!important}.bg-warning-light{background:var(--sd-warning-light)!important}.border-warning-light{border-color:var(--sd-warning-light)!important}.text-warning-dark{color:var(--sd-warning-dark)!important}.bg-warning-dark{background:var(--sd-warning-dark)!important}.border-warning-dark{border-color:var(--sd-warning-dark)!important}.text-warning-contrast{color:var(--sd-warning-contrast)!important}.bg-warning-contrast{background:var(--sd-warning-contrast)!important}.border-warning-contrast{border-color:var(--sd-warning-contrast)!important}.text-error{color:var(--sd-error)!important}.bg-error{background:var(--sd-error)!important}.border-error{border-color:var(--sd-error)!important}.text-error-light{color:var(--sd-error-light)!important}.bg-error-light{background:var(--sd-error-light)!important}.border-error-light{border-color:var(--sd-error-light)!important}.text-error-dark{color:var(--sd-error-dark)!important}.bg-error-dark{background:var(--sd-error-dark)!important}.border-error-dark{border-color:var(--sd-error-dark)!important}.text-error-contrast{color:var(--sd-error-contrast)!important}.bg-error-contrast{background:var(--sd-error-contrast)!important}.border-error-contrast{border-color:var(--sd-error-contrast)!important}.text-surface{color:var(--sd-surface)!important}.bg-surface{background:var(--sd-surface)!important}.border-surface{border-color:var(--sd-surface)!important}.text-surface-muted{color:var(--sd-surface-muted)!important}.bg-surface-muted{background:var(--sd-surface-muted)!important}.border-surface-muted{border-color:var(--sd-surface-muted)!important}.text-text{color:var(--sd-text)!important}.bg-text{background:var(--sd-text)!important}.border-text{border-color:var(--sd-text)!important}.text-text-secondary{color:var(--sd-text-secondary)!important}.bg-text-secondary{background:var(--sd-text-secondary)!important}.border-text-secondary{border-color:var(--sd-text-secondary)!important}.text-text-muted{color:var(--sd-text-muted)!important}.bg-text-muted{background:var(--sd-text-muted)!important}.border-text-muted{border-color:var(--sd-text-muted)!important}.text-border{color:var(--sd-border)!important}.bg-border{background:var(--sd-border)!important}.border-border{border-color:var(--sd-border)!important}.text-border-strong{color:var(--sd-border-strong)!important}.bg-border-strong{background:var(--sd-border-strong)!important}.border-border-strong{border-color:var(--sd-border-strong)!important}.text-disabled-bg{color:var(--sd-disabled-bg)!important}.bg-disabled-bg{background:var(--sd-disabled-bg)!important}.border-disabled-bg{border-color:var(--sd-disabled-bg)!important}.text-disabled-text{color:var(--sd-disabled-text)!important}.bg-disabled-text{background:var(--sd-disabled-text)!important}.border-disabled-text{border-color:var(--sd-disabled-text)!important}.text-white{color:#fff!important}.bg-white{background:#fff!important}.border-white{border-color:#fff!important}.text-black{color:#000!important}.bg-black{background:#000!important}.border-black{border-color:#000!important}.text-secondary{color:var(--sd-text-secondary)!important}.text-muted{color:var(--sd-text-muted)!important}.text-body{color:var(--sd-text)!important}.bg-muted{background:var(--sd-surface-muted)!important}.c-anchor-list{height:100%;display:flex;flex-direction:column}.c-anchor-list .c-anchor-list-item{border-left:2px solid var(--sd-secondary-light);color:var(--sd-text);padding:.5rem 1.5rem;cursor:pointer;display:flex;align-items:center;gap:.5rem;min-width:0;overflow:hidden}.c-anchor-list .c-anchor-list-item .c-anchor-list-item-icon{flex:0 0 auto}.c-anchor-list .c-anchor-list-item .c-anchor-list-item-text{flex:1 1 0;min-width:0;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.c-anchor-list .c-anchor-list-item .c-anchor-list-item-text.ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.c-anchor-list .c-anchor-list-item.active{border-left:2px solid var(--anchor-active-color, var(--sd-primary));color:var(--anchor-active-color, var(--sd-primary));font-weight:700}.c-anchor-list .c-anchor-list-item.active .c-anchor-list-item-icon{color:var(--anchor-active-color, var(--sd-primary))}.c-anchor-list .c-anchor-list-item:not(.active){border-left:2px solid var(--sd-secondary-light);font-weight:400}\n"] }]
67
66
  }], ctorParameters: () => [], propDecorators: { sections: [{ type: i0.Input, args: [{ isSignal: true, alias: "sections", required: true }] }], activeSectionId: [{ type: i0.Input, args: [{ isSignal: true, alias: "activeSectionId", required: false }] }], ellipsis: [{ type: i0.Input, args: [{ isSignal: true, alias: "ellipsis", required: false }] }], sidebarWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "sidebarWidth", required: false }] }], parentAutoId: [{ type: i0.Input, args: [{ isSignal: true, alias: "parentAutoId", required: false }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], clickSection: [{ type: i0.Output, args: ["clickSection"] }] } });
68
67
 
69
68
  class SdAnchor {
@@ -178,7 +177,7 @@ class SdAnchor {
178
177
  this.#cleanIntersectionObserver();
179
178
  }
180
179
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: SdAnchor, deps: [], target: i0.ɵɵFactoryTarget.Component });
181
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: SdAnchor, isStandalone: true, selector: "sd-anchor", inputs: { autoIdInput: { classPropertyName: "autoIdInput", publicName: "autoId", isSignal: true, isRequired: false, transformFunction: null }, sidebarWidth: { classPropertyName: "sidebarWidth", publicName: "sidebarWidth", isSignal: true, isRequired: false, transformFunction: null }, ellipsis: { classPropertyName: "ellipsis", publicName: "ellipsis", isSignal: true, isRequired: false, transformFunction: null }, overScroll: { classPropertyName: "overScroll", publicName: "overScroll", isSignal: true, isRequired: false, transformFunction: null }, hideNav: { classPropertyName: "hideNav", publicName: "hideNav", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "sections", predicate: SdAnchorItem, isSignal: true }], viewQueries: [{ propertyName: "wrapper", first: true, predicate: ["wrapper"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"c-anchor-vertical\" [ngClass]=\"{ 'c-stop-scroll-propagation': !overScroll() }\" #wrapper>\n <div class=\"c-anchor-content\">\n <ng-content></ng-content>\n </div>\n\n @if (!hideNav()) {\n <div class=\"c-anchor-list\" [style.flex-basis]=\"sidebarWidth()\">\n <anchor-nav\n [sections]=\"sections()\"\n [ellipsis]=\"ellipsis()\"\n [sidebarWidth]=\"sidebarWidth()\"\n [activeSectionId]=\"activeSectionId()\"\n [parentAutoId]=\"autoId()\"\n [color]=\"color()\"\n (clickSection)=\"scrollSectionByClick($event)\">\n </anchor-nav>\n </div>\n }\n</div>\n", styles: ["@charset \"UTF-8\";.c-anchor-vertical{position:relative;display:flex;height:100%;width:100%;gap:16px;overflow-y:auto}.c-anchor-vertical.c-stop-scroll-propagation{overscroll-behavior:contain}.c-anchor-vertical .c-anchor-content{flex:1 1 auto;min-width:0}.c-anchor-vertical .c-anchor-list{flex:0 0 auto;position:sticky;top:0;right:6px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: AnchorNav, selector: "anchor-nav", inputs: ["sections", "activeSectionId", "ellipsis", "sidebarWidth", "parentAutoId", "color"], outputs: ["clickSection"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
180
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: SdAnchor, isStandalone: true, selector: "sd-anchor", inputs: { autoIdInput: { classPropertyName: "autoIdInput", publicName: "autoId", isSignal: true, isRequired: false, transformFunction: null }, sidebarWidth: { classPropertyName: "sidebarWidth", publicName: "sidebarWidth", isSignal: true, isRequired: false, transformFunction: null }, ellipsis: { classPropertyName: "ellipsis", publicName: "ellipsis", isSignal: true, isRequired: false, transformFunction: null }, overScroll: { classPropertyName: "overScroll", publicName: "overScroll", isSignal: true, isRequired: false, transformFunction: null }, hideNav: { classPropertyName: "hideNav", publicName: "hideNav", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "sections", predicate: SdAnchorItem, isSignal: true }], viewQueries: [{ propertyName: "wrapper", first: true, predicate: ["wrapper"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"c-anchor-vertical\" [ngClass]=\"{ 'c-stop-scroll-propagation': !overScroll() }\" #wrapper>\n <div class=\"c-anchor-content\">\n <ng-content></ng-content>\n </div>\n\n @if (!hideNav()) {\n <div class=\"c-anchor-list\" [style.flex-basis]=\"sidebarWidth()\">\n <anchor-nav\n [sections]=\"sections()\"\n [ellipsis]=\"ellipsis()\"\n [sidebarWidth]=\"sidebarWidth()\"\n [activeSectionId]=\"activeSectionId()\"\n [parentAutoId]=\"autoId()\"\n [color]=\"color()\"\n (clickSection)=\"scrollSectionByClick($event)\">\n </anchor-nav>\n </div>\n }\n</div>\n", styles: ["@charset \"UTF-8\";.c-anchor-vertical{position:relative;display:flex;height:100%;width:100%;gap:16px;overflow-y:auto}.c-anchor-vertical.c-stop-scroll-propagation{overscroll-behavior:contain}.c-anchor-vertical .c-anchor-content{flex:1 1 auto;min-width:0}.c-anchor-vertical .c-anchor-list{flex:0 0 auto;position:sticky;top:0;right:6px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: AnchorNav, selector: "anchor-nav", inputs: ["sections", "activeSectionId", "ellipsis", "sidebarWidth", "parentAutoId", "color"], outputs: ["clickSection"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
182
181
  }
183
182
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: SdAnchor, decorators: [{
184
183
  type: Component,