@sdcorejs/angular 21.0.1 → 21.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. package/README.md +22 -4
  2. package/assets/scss/core/_inline-edit.scss +105 -0
  3. package/assets/scss/core/form.scss +15 -0
  4. package/fesm2022/sdcorejs-angular-components-anchor.mjs +9 -9
  5. package/fesm2022/sdcorejs-angular-components-autoid-inspector.mjs +111 -24
  6. package/fesm2022/sdcorejs-angular-components-autoid-inspector.mjs.map +1 -1
  7. package/fesm2022/sdcorejs-angular-components-avatar.mjs +4 -4
  8. package/fesm2022/sdcorejs-angular-components-avatar.mjs.map +1 -1
  9. package/fesm2022/sdcorejs-angular-components-badge.mjs +3 -3
  10. package/fesm2022/sdcorejs-angular-components-base.mjs +3 -3
  11. package/fesm2022/sdcorejs-angular-components-button.mjs +5 -7
  12. package/fesm2022/sdcorejs-angular-components-button.mjs.map +1 -1
  13. package/fesm2022/sdcorejs-angular-components-chart.mjs +12 -12
  14. package/fesm2022/sdcorejs-angular-components-ckeditor-styles.mjs +3 -3
  15. package/fesm2022/sdcorejs-angular-components-code-editor.mjs +3 -3
  16. package/fesm2022/sdcorejs-angular-components-document-builder.mjs +6 -6
  17. package/fesm2022/sdcorejs-angular-components-editor.mjs +3 -3
  18. package/fesm2022/sdcorejs-angular-components-form-generic.mjs +291 -382
  19. package/fesm2022/sdcorejs-angular-components-form-generic.mjs.map +1 -1
  20. package/fesm2022/sdcorejs-angular-components-history.mjs +7 -7
  21. package/fesm2022/sdcorejs-angular-components-import-excel.mjs +10 -10
  22. package/fesm2022/sdcorejs-angular-components-inform.mjs +6 -6
  23. package/fesm2022/sdcorejs-angular-components-mini-editor.mjs +3 -3
  24. package/fesm2022/sdcorejs-angular-components-modal-resizable.mjs +158 -0
  25. package/fesm2022/sdcorejs-angular-components-modal-resizable.mjs.map +1 -0
  26. package/fesm2022/sdcorejs-angular-components-modal.mjs +3 -3
  27. package/fesm2022/sdcorejs-angular-components-operator.mjs +6 -4
  28. package/fesm2022/sdcorejs-angular-components-operator.mjs.map +1 -1
  29. package/fesm2022/sdcorejs-angular-components-preview.mjs +8 -8
  30. package/fesm2022/sdcorejs-angular-components-preview.mjs.map +1 -1
  31. package/fesm2022/sdcorejs-angular-components-query-bar.mjs +60 -106
  32. package/fesm2022/sdcorejs-angular-components-query-bar.mjs.map +1 -1
  33. package/fesm2022/sdcorejs-angular-components-query-builder.mjs +671 -59
  34. package/fesm2022/sdcorejs-angular-components-query-builder.mjs.map +1 -1
  35. package/fesm2022/sdcorejs-angular-components-quick-action.mjs +3 -3
  36. package/fesm2022/sdcorejs-angular-components-section.mjs +7 -9
  37. package/fesm2022/sdcorejs-angular-components-section.mjs.map +1 -1
  38. package/fesm2022/sdcorejs-angular-components-side-drawer.mjs +5 -7
  39. package/fesm2022/sdcorejs-angular-components-side-drawer.mjs.map +1 -1
  40. package/fesm2022/sdcorejs-angular-components-splitter.mjs +12 -12
  41. package/fesm2022/sdcorejs-angular-components-stepper.mjs +7 -9
  42. package/fesm2022/sdcorejs-angular-components-stepper.mjs.map +1 -1
  43. package/fesm2022/sdcorejs-angular-components-tab-router.mjs +18 -18
  44. package/fesm2022/sdcorejs-angular-components-tab.mjs +7 -9
  45. package/fesm2022/sdcorejs-angular-components-tab.mjs.map +1 -1
  46. package/fesm2022/sdcorejs-angular-components-table.mjs +336 -211
  47. package/fesm2022/sdcorejs-angular-components-table.mjs.map +1 -1
  48. package/fesm2022/sdcorejs-angular-components-upload-file.mjs +29 -18
  49. package/fesm2022/sdcorejs-angular-components-upload-file.mjs.map +1 -1
  50. package/fesm2022/sdcorejs-angular-components-view.mjs +45 -13
  51. package/fesm2022/sdcorejs-angular-components-view.mjs.map +1 -1
  52. package/fesm2022/sdcorejs-angular-components.mjs +1 -0
  53. package/fesm2022/sdcorejs-angular-components.mjs.map +1 -1
  54. package/fesm2022/sdcorejs-angular-directives.mjs +21 -21
  55. package/fesm2022/sdcorejs-angular-forms-autocomplete.mjs +35 -10
  56. package/fesm2022/sdcorejs-angular-forms-autocomplete.mjs.map +1 -1
  57. package/fesm2022/sdcorejs-angular-forms-checkbox.mjs +11 -6
  58. package/fesm2022/sdcorejs-angular-forms-checkbox.mjs.map +1 -1
  59. package/fesm2022/sdcorejs-angular-forms-chip-calendar.mjs +15 -10
  60. package/fesm2022/sdcorejs-angular-forms-chip-calendar.mjs.map +1 -1
  61. package/fesm2022/sdcorejs-angular-forms-chip.mjs +15 -10
  62. package/fesm2022/sdcorejs-angular-forms-chip.mjs.map +1 -1
  63. package/fesm2022/sdcorejs-angular-forms-date-range.mjs +21 -12
  64. package/fesm2022/sdcorejs-angular-forms-date-range.mjs.map +1 -1
  65. package/fesm2022/sdcorejs-angular-forms-date.mjs +29 -17
  66. package/fesm2022/sdcorejs-angular-forms-date.mjs.map +1 -1
  67. package/fesm2022/sdcorejs-angular-forms-datetime.mjs +34 -22
  68. package/fesm2022/sdcorejs-angular-forms-datetime.mjs.map +1 -1
  69. package/fesm2022/sdcorejs-angular-forms-directives.mjs +12 -12
  70. package/fesm2022/sdcorejs-angular-forms-inline-text.mjs +167 -0
  71. package/fesm2022/sdcorejs-angular-forms-inline-text.mjs.map +1 -0
  72. package/fesm2022/sdcorejs-angular-forms-input-color.mjs +7 -5
  73. package/fesm2022/sdcorejs-angular-forms-input-color.mjs.map +1 -1
  74. package/fesm2022/sdcorejs-angular-forms-input-number.mjs +44 -11
  75. package/fesm2022/sdcorejs-angular-forms-input-number.mjs.map +1 -1
  76. package/fesm2022/sdcorejs-angular-forms-input.mjs +38 -12
  77. package/fesm2022/sdcorejs-angular-forms-input.mjs.map +1 -1
  78. package/fesm2022/sdcorejs-angular-forms-label.mjs +3 -3
  79. package/fesm2022/sdcorejs-angular-forms-models.mjs +32 -2
  80. package/fesm2022/sdcorejs-angular-forms-models.mjs.map +1 -1
  81. package/fesm2022/sdcorejs-angular-forms-radio.mjs +11 -6
  82. package/fesm2022/sdcorejs-angular-forms-radio.mjs.map +1 -1
  83. package/fesm2022/sdcorejs-angular-forms-select.mjs +36 -12
  84. package/fesm2022/sdcorejs-angular-forms-select.mjs.map +1 -1
  85. package/fesm2022/sdcorejs-angular-forms-switch.mjs +11 -6
  86. package/fesm2022/sdcorejs-angular-forms-switch.mjs.map +1 -1
  87. package/fesm2022/sdcorejs-angular-forms-textarea.mjs +17 -7
  88. package/fesm2022/sdcorejs-angular-forms-textarea.mjs.map +1 -1
  89. package/fesm2022/sdcorejs-angular-forms.mjs +4 -4
  90. package/fesm2022/sdcorejs-angular-handlers.mjs +3 -3
  91. package/fesm2022/sdcorejs-angular-i18n.mjs +26 -6
  92. package/fesm2022/sdcorejs-angular-i18n.mjs.map +1 -1
  93. package/fesm2022/sdcorejs-angular-interceptors.mjs +6 -6
  94. package/fesm2022/sdcorejs-angular-modules-auth.mjs +9 -9
  95. package/fesm2022/sdcorejs-angular-modules-authom.mjs +7 -7
  96. package/fesm2022/sdcorejs-angular-modules-keycloak.mjs +7 -7
  97. package/fesm2022/sdcorejs-angular-modules-layout.mjs +73 -73
  98. package/fesm2022/sdcorejs-angular-modules-permission.mjs +9 -9
  99. package/fesm2022/sdcorejs-angular-pipes.mjs +14 -14
  100. package/fesm2022/sdcorejs-angular-services-api.mjs +10 -10
  101. package/fesm2022/sdcorejs-angular-services-cache.mjs +3 -3
  102. package/fesm2022/sdcorejs-angular-services-confirm.mjs +6 -6
  103. package/fesm2022/sdcorejs-angular-services-confirm.mjs.map +1 -1
  104. package/fesm2022/sdcorejs-angular-services-docx.mjs +3 -3
  105. package/fesm2022/sdcorejs-angular-services-excel.mjs +3 -3
  106. package/fesm2022/sdcorejs-angular-services-license.mjs +3 -3
  107. package/fesm2022/sdcorejs-angular-services-loading.mjs +3 -3
  108. package/fesm2022/sdcorejs-angular-services-notify.mjs +47 -16
  109. package/fesm2022/sdcorejs-angular-services-notify.mjs.map +1 -1
  110. package/fesm2022/sdcorejs-angular-services-storage.mjs +3 -3
  111. package/package.json +9 -1
  112. package/types/sdcorejs-angular-components-autoid-inspector.d.ts +53 -4
  113. package/types/sdcorejs-angular-components-button.d.ts +1 -2
  114. package/types/sdcorejs-angular-components-form-generic.d.ts +15 -17
  115. package/types/sdcorejs-angular-components-modal-resizable.d.ts +32 -0
  116. package/types/sdcorejs-angular-components-query-builder.d.ts +247 -23
  117. package/types/sdcorejs-angular-components-section.d.ts +1 -2
  118. package/types/sdcorejs-angular-components-side-drawer.d.ts +1 -2
  119. package/types/sdcorejs-angular-components-stepper.d.ts +1 -2
  120. package/types/sdcorejs-angular-components-tab.d.ts +1 -2
  121. package/types/sdcorejs-angular-components-table.d.ts +100 -12
  122. package/types/sdcorejs-angular-components-upload-file.d.ts +2 -0
  123. package/types/sdcorejs-angular-components-view.d.ts +33 -0
  124. package/types/sdcorejs-angular-components.d.ts +1 -0
  125. package/types/sdcorejs-angular-forms-autocomplete.d.ts +16 -3
  126. package/types/sdcorejs-angular-forms-checkbox.d.ts +5 -1
  127. package/types/sdcorejs-angular-forms-chip-calendar.d.ts +5 -2
  128. package/types/sdcorejs-angular-forms-chip.d.ts +5 -2
  129. package/types/sdcorejs-angular-forms-date-range.d.ts +12 -5
  130. package/types/sdcorejs-angular-forms-date.d.ts +14 -5
  131. package/types/sdcorejs-angular-forms-datetime.d.ts +14 -5
  132. package/types/sdcorejs-angular-forms-inline-text.d.ts +80 -0
  133. package/types/sdcorejs-angular-forms-input-color.d.ts +3 -1
  134. package/types/sdcorejs-angular-forms-input-number.d.ts +14 -2
  135. package/types/sdcorejs-angular-forms-input.d.ts +14 -2
  136. package/types/sdcorejs-angular-forms-models.d.ts +40 -2
  137. package/types/sdcorejs-angular-forms-radio.d.ts +5 -2
  138. package/types/sdcorejs-angular-forms-select.d.ts +23 -5
  139. package/types/sdcorejs-angular-forms-switch.d.ts +5 -2
  140. package/types/sdcorejs-angular-forms-textarea.d.ts +9 -2
  141. package/types/sdcorejs-angular-i18n.d.ts +4 -0
  142. package/types/sdcorejs-angular-services-notify.d.ts +17 -0
package/README.md CHANGED
@@ -380,6 +380,25 @@ option: SdTableOption<Product> = {
380
380
  <sd-table #sdTable [option]="option" />
381
381
  ```
382
382
 
383
+ **Tree rows / Dòng cây:**
384
+
385
+ `tree` là discriminated union theo `loadType`. Icon expand (`chevron_right` / `expand_more`) nằm ở **cột đầu** — cột STT khi bật `index`, ngược lại cột data đầu tiên — thụt lề theo cấp.
386
+
387
+ ```typescript
388
+ // loadType: 'static' — children embedded sẵn trong mỗi row
389
+ tree: { loadType: 'static', childrenKey: 'children', defaultExpanded: 1 }
390
+
391
+ // loadType: 'lazy' — nạp con khi bung (Promise); hasChildren gate icon expand
392
+ tree: {
393
+ loadType: 'lazy',
394
+ hasChildren: (row) => row.type === 'Folder', // chỉ Folder mới có icon expand
395
+ onExpandChildren: (row) => api.getChildren(row.id), // () => Promise<T[]>
396
+ }
397
+ ```
398
+
399
+ - **Child-level search** (`type: 'local'` + `loadType: 'static'`): lọc inline tìm cả **cấp con** — giữ nhánh cha của node khớp, ẩn sibling không khớp, tự bung tới node khớp. Clear filter khôi phục cây.
400
+ - **Lazy loading**: spinner hiện trong ô chevron khi `onExpandChildren` đang chạy; `hasChildren` quyết định dòng nào hiện icon (không truyền = mọi node đều hiện).
401
+
383
402
  ---
384
403
 
385
404
  ### SdAvatar
@@ -703,11 +722,10 @@ ng-packagr -p ng-package.json --watch
703
722
 
704
723
  ### Versioning
705
724
 
706
- Thư viện tuân theo [Semantic Versioning](https://semver.org):
725
+ Scheme: `<angular-major>.0.<release>`. Major digit **khoá theo Angular line** (19.x = Angular 19, 20.x = Angular 20, 21.x = Angular 21) — **KHÔNG** dùng để báo breaking. Mỗi release publish đồng thời 3 major cùng nội dung feature, chỉ khác Angular shim.
707
726
 
708
- - `MAJOR` Breaking changes (thay đổi API không tương thích)
709
- - `MINOR` Tính năng mới (tương thích ngược)
710
- - `PATCH` — Bug fixes
727
+ - Luôn pin theo Angular line của bạn: `npm i @sdcorejs/angular@^19` (hoặc `@^20` / `@^21`).
728
+ - Breaking change được ghi ở `CHANGELOG.md`, mục **Changed (BREAKING for consumers)**, kèm migration.
711
729
 
712
730
  ---
713
731
 
@@ -0,0 +1,105 @@
1
+ // Shared `viewed='inline'` styles for sd-form-controls.
2
+ // why: 1 nguồn cho text-face + editor ẩn (panel control) và input borderless, tránh lặp ~40 dòng/control.
3
+ // Bare-flatten (mat-* internals) KHÔNG nằm ở đây — khác nhau theo control, giữ trong scss riêng.
4
+
5
+ // Clear-× — hover-gated, đặt cuối "mặt". Include BÊN TRONG rule của phần tử hover (face/input).
6
+ @mixin _inline-clear {
7
+ .sd-inline-clear {
8
+ display: none;
9
+ align-items: center;
10
+ margin-left: 4px;
11
+ padding: 0;
12
+ border: 0;
13
+ background: transparent;
14
+ cursor: pointer;
15
+ line-height: 0;
16
+ color: var(--sd-text-secondary, #6b7280);
17
+ transition: color 0.15s ease;
18
+
19
+ mat-icon {
20
+ font-size: 16px;
21
+ width: 16px;
22
+ height: 16px;
23
+ }
24
+
25
+ &:hover {
26
+ color: var(--sd-error, #b32626);
27
+ }
28
+ }
29
+
30
+ &:hover .sd-inline-clear {
31
+ display: inline-flex;
32
+ }
33
+ }
34
+
35
+ // Panel-based controls (select / date / datetime / date-range / autocomplete):
36
+ // `<sd-view>` text là "mặt" + trigger; editor render ẩn (overlay) chỉ để neo + mở panel.
37
+ @mixin sd-inline-panel {
38
+ // Neo cho .sd-inline-editor (absolute). Bare flatten + display nằm ở :host(.sd-bare) riêng của control.
39
+ :host(.sd-bare) {
40
+ position: relative;
41
+ }
42
+
43
+ .sd-inline-view {
44
+ cursor: pointer;
45
+ display: inline-flex;
46
+ align-items: center;
47
+ width: 100%;
48
+ // why: nền nhẹ + đậm hơn khi hover → tín hiệu "viewed có thể bấm để sửa".
49
+ padding: 1px 6px;
50
+ border-radius: 4px;
51
+ background-color: rgba(0, 0, 0, 0.04);
52
+ transition: background-color 0.15s ease;
53
+
54
+ &:hover {
55
+ background-color: rgba(0, 0, 0, 0.08);
56
+ }
57
+
58
+ @include _inline-clear;
59
+ }
60
+
61
+ // why: editor vô hình phủ lên face. Tắt pointer-events CẢ cây con (mat-* tự bật lại ở trigger)
62
+ // để hover/click rơi xuống .sd-inline-view ở mọi chỗ. Panel mở qua enterInlineEdit() → open().
63
+ .sd-inline-editor {
64
+ position: absolute;
65
+ inset: 0;
66
+ opacity: 0;
67
+ pointer-events: none;
68
+
69
+ ::ng-deep * {
70
+ pointer-events: none !important;
71
+ }
72
+ }
73
+ }
74
+
75
+ // NOTE: the former `sd-inline-input` mixin (mat-form-field flatten for the input/input-number
76
+ // inline variant) was removed when those controls moved to the <sd-inline-text> primitive
77
+ // (forms/inline-text), which owns its own borderless styling. The panel mixin above stays.
78
+
79
+ // Multiline input (textarea): no panel, no single-line `<sd-inline-text>` — flatten the
80
+ // mat-form-field so the `<textarea>` reads like text, transparent with a hover/focus affordance.
81
+ @mixin sd-inline-textarea {
82
+ .sd-inline-textarea {
83
+ cursor: text;
84
+ border-radius: 4px;
85
+ background-color: rgba(0, 0, 0, 0.04);
86
+ transition: background-color 0.15s ease;
87
+
88
+ &:hover {
89
+ background-color: rgba(0, 0, 0, 0.08);
90
+ }
91
+
92
+ &:focus-within {
93
+ background-color: rgba(0, 0, 0, 0.06);
94
+ box-shadow: inset 0 0 0 1px var(--sd-primary, #1f6feb);
95
+ }
96
+
97
+ ::ng-deep {
98
+ .mat-mdc-text-field-wrapper { padding: 0 6px; background: transparent; }
99
+ .mat-mdc-form-field-flex { padding: 0; }
100
+ .mdc-notched-outline { display: none; }
101
+ .mat-mdc-form-field-subscript-wrapper { display: none; }
102
+ .mat-mdc-form-field-infix { padding: 4px 0; min-height: 0; border: 0; }
103
+ }
104
+ }
105
+ }
@@ -296,6 +296,21 @@ mat-checkbox {
296
296
  }
297
297
  }
298
298
 
299
+ // why: selector radio của <sd-table> (.c-selection, single mode) hiện một dấu chấm tối thừa
300
+ // nằm cạnh vòng radio. Nguồn gốc THẬT là state-layer padding của Material trên `.mdc-radio`
301
+ // (`padding: calc((var(--mdc-radio-state-layer-size) - 20px) / 2)`): trong cột selector, .c-selection
302
+ // bị scale(0.85) (xem table.component.scss) còn `.mdc-radio` có `will-change: transform` nên lên
303
+ // compositing layer riêng → phần `.mdc-radio__inner-circle` (transform: scale(0), border 10px màu
304
+ // tối) bị render rớt lại ~1px artifact trong dải padding đó, đọc thành "dấu chấm". Bỏ state-layer
305
+ // padding cho radio selector compact là khử sạch (vòng 20px + scale 0.85 vẫn căn giữa). Scope theo
306
+ // `.c-selection` nên KHÔNG ảnh hưởng radio ở nơi khác (giữ nguyên vùng hover/state-layer của chúng).
307
+ //
308
+ // LƯU Ý: cách trước (`label.mdc-label:empty { display:none }`) KHÔNG khử được dot — nó chỉ TÁCH dot
309
+ // thành 2 dấu chấm (label rỗng vốn đang phủ chồng lên artifact). Đã thay bằng fix dưới đây.
310
+ .c-selection.mat-mdc-radio-button .mdc-radio {
311
+ padding: 0;
312
+ }
313
+
299
314
  // Placeholder mặc định 1rem (16px), mong muốn nên là 14px
300
315
  .mat-mdc-floating-label {
301
316
  font-size: 14px !important;
@@ -22,10 +22,10 @@ class SdAnchorItem {
22
22
  }
23
23
  });
24
24
  }
25
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: SdAnchorItem, deps: [], target: i0.ɵɵFactoryTarget.Component });
26
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.15", type: SdAnchorItem, isStandalone: true, selector: "sd-anchor-item", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: true, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, key: { classPropertyName: "key", publicName: "key", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<section>\n <ng-content></ng-content>\n</section>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }] });
25
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: SdAnchorItem, deps: [], target: i0.ɵɵFactoryTarget.Component });
26
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.16", type: SdAnchorItem, isStandalone: true, selector: "sd-anchor-item", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: true, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, key: { classPropertyName: "key", publicName: "key", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<section>\n <ng-content></ng-content>\n</section>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }] });
27
27
  }
28
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: SdAnchorItem, decorators: [{
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: SdAnchorItem, decorators: [{
29
29
  type: Component,
30
30
  args: [{ selector: 'sd-anchor-item', imports: [CommonModule], standalone: true, template: "<section>\n <ng-content></ng-content>\n</section>\n" }]
31
31
  }], ctorParameters: () => [], propDecorators: { title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: true }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], key: [{ type: i0.Input, args: [{ isSignal: true, alias: "key", required: false }] }] } });
@@ -62,10 +62,10 @@ class AnchorNav {
62
62
  ngOnDestroy() {
63
63
  this.#subscription.unsubscribe();
64
64
  }
65
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: AnchorNav, deps: [], target: i0.ɵɵFactoryTarget.Component });
66
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.15", 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 });
65
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: AnchorNav, deps: [], target: i0.ɵɵFactoryTarget.Component });
66
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.16", 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 });
67
67
  }
68
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: AnchorNav, decorators: [{
68
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: AnchorNav, decorators: [{
69
69
  type: Component,
70
70
  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"] }]
71
71
  }], 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"] }] } });
@@ -181,10 +181,10 @@ class SdAnchor {
181
181
  this.#cleanScrollSectionByClickObserver();
182
182
  this.#cleanIntersectionObserver();
183
183
  }
184
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: SdAnchor, deps: [], target: i0.ɵɵFactoryTarget.Component });
185
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.15", 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 });
184
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: SdAnchor, deps: [], target: i0.ɵɵFactoryTarget.Component });
185
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.16", 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 });
186
186
  }
187
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: SdAnchor, decorators: [{
187
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: SdAnchor, decorators: [{
188
188
  type: Component,
189
189
  args: [{ selector: 'sd-anchor', changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule, AnchorNav], standalone: true, 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"] }]
190
190
  }], ctorParameters: () => [], propDecorators: { wrapper: [{ type: i0.ViewChild, args: ['wrapper', { isSignal: true }] }], sections: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => SdAnchorItem), { isSignal: true }] }], autoIdInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "autoId", required: false }] }], sidebarWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "sidebarWidth", required: false }] }], ellipsis: [{ type: i0.Input, args: [{ isSignal: true, alias: "ellipsis", required: false }] }], overScroll: [{ type: i0.Input, args: [{ isSignal: true, alias: "overScroll", required: false }] }], hideNav: [{ type: i0.Input, args: [{ isSignal: true, alias: "hideNav", required: false }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }] } });