@fundamental-ngx/core 0.61.2 → 0.62.0-rc.1

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 (137) hide show
  1. package/fesm2022/fundamental-ngx-core-action-sheet.mjs +3 -2
  2. package/fesm2022/fundamental-ngx-core-action-sheet.mjs.map +1 -1
  3. package/fesm2022/fundamental-ngx-core-avatar-group.mjs +6 -4
  4. package/fesm2022/fundamental-ngx-core-avatar-group.mjs.map +1 -1
  5. package/fesm2022/fundamental-ngx-core-bar.mjs +36 -11
  6. package/fesm2022/fundamental-ngx-core-bar.mjs.map +1 -1
  7. package/fesm2022/fundamental-ngx-core-breadcrumb.mjs +11 -13
  8. package/fesm2022/fundamental-ngx-core-breadcrumb.mjs.map +1 -1
  9. package/fesm2022/fundamental-ngx-core-busy-indicator.mjs +5 -7
  10. package/fesm2022/fundamental-ngx-core-busy-indicator.mjs.map +1 -1
  11. package/fesm2022/fundamental-ngx-core-calendar.mjs +35 -31
  12. package/fesm2022/fundamental-ngx-core-calendar.mjs.map +1 -1
  13. package/fesm2022/fundamental-ngx-core-carousel.mjs +2 -2
  14. package/fesm2022/fundamental-ngx-core-carousel.mjs.map +1 -1
  15. package/fesm2022/fundamental-ngx-core-combobox.mjs +6 -4
  16. package/fesm2022/fundamental-ngx-core-combobox.mjs.map +1 -1
  17. package/fesm2022/fundamental-ngx-core-date-picker.mjs +3 -3
  18. package/fesm2022/fundamental-ngx-core-date-picker.mjs.map +1 -1
  19. package/fesm2022/fundamental-ngx-core-datetime-picker.mjs +3 -3
  20. package/fesm2022/fundamental-ngx-core-datetime-picker.mjs.map +1 -1
  21. package/fesm2022/fundamental-ngx-core-datetime.mjs +7 -13
  22. package/fesm2022/fundamental-ngx-core-datetime.mjs.map +1 -1
  23. package/fesm2022/fundamental-ngx-core-dialog.mjs +19 -22
  24. package/fesm2022/fundamental-ngx-core-dialog.mjs.map +1 -1
  25. package/fesm2022/fundamental-ngx-core-dynamic-page.mjs +13 -13
  26. package/fesm2022/fundamental-ngx-core-dynamic-page.mjs.map +1 -1
  27. package/fesm2022/fundamental-ngx-core-facets.mjs +1 -1
  28. package/fesm2022/fundamental-ngx-core-facets.mjs.map +1 -1
  29. package/fesm2022/fundamental-ngx-core-feed-list-item.mjs +2 -2
  30. package/fesm2022/fundamental-ngx-core-feed-list-item.mjs.map +1 -1
  31. package/fesm2022/fundamental-ngx-core-grid-list.mjs +4 -4
  32. package/fesm2022/fundamental-ngx-core-grid-list.mjs.map +1 -1
  33. package/fesm2022/fundamental-ngx-core-info-label.mjs +2 -2
  34. package/fesm2022/fundamental-ngx-core-info-label.mjs.map +1 -1
  35. package/fesm2022/fundamental-ngx-core-link.mjs +2 -2
  36. package/fesm2022/fundamental-ngx-core-link.mjs.map +1 -1
  37. package/fesm2022/fundamental-ngx-core-list.mjs +47 -12
  38. package/fesm2022/fundamental-ngx-core-list.mjs.map +1 -1
  39. package/fesm2022/fundamental-ngx-core-menu.mjs +5 -5
  40. package/fesm2022/fundamental-ngx-core-menu.mjs.map +1 -1
  41. package/fesm2022/fundamental-ngx-core-message-box.mjs +10 -10
  42. package/fesm2022/fundamental-ngx-core-message-box.mjs.map +1 -1
  43. package/fesm2022/fundamental-ngx-core-message-strip.mjs +44 -49
  44. package/fesm2022/fundamental-ngx-core-message-strip.mjs.map +1 -1
  45. package/fesm2022/fundamental-ngx-core-multi-combobox.mjs +25 -23
  46. package/fesm2022/fundamental-ngx-core-multi-combobox.mjs.map +1 -1
  47. package/fesm2022/fundamental-ngx-core-multi-input.mjs +6 -8
  48. package/fesm2022/fundamental-ngx-core-multi-input.mjs.map +1 -1
  49. package/fesm2022/fundamental-ngx-core-nested-list.mjs +22 -21
  50. package/fesm2022/fundamental-ngx-core-nested-list.mjs.map +1 -1
  51. package/fesm2022/fundamental-ngx-core-notification.mjs +13 -16
  52. package/fesm2022/fundamental-ngx-core-notification.mjs.map +1 -1
  53. package/fesm2022/fundamental-ngx-core-object-identifier.mjs +2 -2
  54. package/fesm2022/fundamental-ngx-core-object-identifier.mjs.map +1 -1
  55. package/fesm2022/fundamental-ngx-core-object-number.mjs +2 -2
  56. package/fesm2022/fundamental-ngx-core-object-number.mjs.map +1 -1
  57. package/fesm2022/fundamental-ngx-core-object-status.mjs +2 -2
  58. package/fesm2022/fundamental-ngx-core-object-status.mjs.map +1 -1
  59. package/fesm2022/fundamental-ngx-core-overflow-layout.mjs +2 -2
  60. package/fesm2022/fundamental-ngx-core-overflow-layout.mjs.map +1 -1
  61. package/fesm2022/fundamental-ngx-core-pagination.mjs +11 -14
  62. package/fesm2022/fundamental-ngx-core-pagination.mjs.map +1 -1
  63. package/fesm2022/fundamental-ngx-core-popover.mjs +5 -5
  64. package/fesm2022/fundamental-ngx-core-popover.mjs.map +1 -1
  65. package/fesm2022/fundamental-ngx-core-product-switch.mjs +8 -4
  66. package/fesm2022/fundamental-ngx-core-product-switch.mjs.map +1 -1
  67. package/fesm2022/fundamental-ngx-core-quick-view.mjs +3 -3
  68. package/fesm2022/fundamental-ngx-core-quick-view.mjs.map +1 -1
  69. package/fesm2022/fundamental-ngx-core-rating-indicator.mjs +4 -7
  70. package/fesm2022/fundamental-ngx-core-rating-indicator.mjs.map +1 -1
  71. package/fesm2022/fundamental-ngx-core-segmented-button.mjs +10 -11
  72. package/fesm2022/fundamental-ngx-core-segmented-button.mjs.map +1 -1
  73. package/fesm2022/fundamental-ngx-core-select.mjs +15 -8
  74. package/fesm2022/fundamental-ngx-core-select.mjs.map +1 -1
  75. package/fesm2022/fundamental-ngx-core-settings.mjs +1 -1
  76. package/fesm2022/fundamental-ngx-core-settings.mjs.map +1 -1
  77. package/fesm2022/fundamental-ngx-core-shellbar.mjs +44 -27
  78. package/fesm2022/fundamental-ngx-core-shellbar.mjs.map +1 -1
  79. package/fesm2022/fundamental-ngx-core-slider.mjs +6 -6
  80. package/fesm2022/fundamental-ngx-core-slider.mjs.map +1 -1
  81. package/fesm2022/fundamental-ngx-core-split-button.mjs +2 -2
  82. package/fesm2022/fundamental-ngx-core-split-button.mjs.map +1 -1
  83. package/fesm2022/fundamental-ngx-core-step-input.mjs +2 -2
  84. package/fesm2022/fundamental-ngx-core-step-input.mjs.map +1 -1
  85. package/fesm2022/fundamental-ngx-core-switch.mjs +2 -2
  86. package/fesm2022/fundamental-ngx-core-switch.mjs.map +1 -1
  87. package/fesm2022/fundamental-ngx-core-tabs.mjs +2 -2
  88. package/fesm2022/fundamental-ngx-core-tabs.mjs.map +1 -1
  89. package/fesm2022/fundamental-ngx-core-text.mjs +6 -4
  90. package/fesm2022/fundamental-ngx-core-text.mjs.map +1 -1
  91. package/fesm2022/fundamental-ngx-core-time-picker.mjs +4 -29
  92. package/fesm2022/fundamental-ngx-core-time-picker.mjs.map +1 -1
  93. package/fesm2022/fundamental-ngx-core-time.mjs +4 -4
  94. package/fesm2022/fundamental-ngx-core-time.mjs.map +1 -1
  95. package/fesm2022/fundamental-ngx-core-timeline.mjs +1 -1
  96. package/fesm2022/fundamental-ngx-core-timeline.mjs.map +1 -1
  97. package/fesm2022/fundamental-ngx-core-title.mjs +7 -4
  98. package/fesm2022/fundamental-ngx-core-title.mjs.map +1 -1
  99. package/fesm2022/fundamental-ngx-core-token.mjs +12 -15
  100. package/fesm2022/fundamental-ngx-core-token.mjs.map +1 -1
  101. package/fesm2022/fundamental-ngx-core-toolbar.mjs +5 -3
  102. package/fesm2022/fundamental-ngx-core-toolbar.mjs.map +1 -1
  103. package/fesm2022/fundamental-ngx-core-tree.mjs +4 -4
  104. package/fesm2022/fundamental-ngx-core-tree.mjs.map +1 -1
  105. package/fesm2022/fundamental-ngx-core-upload-collection.mjs +5 -5
  106. package/fesm2022/fundamental-ngx-core-upload-collection.mjs.map +1 -1
  107. package/fesm2022/fundamental-ngx-core-user-menu.mjs +6 -4
  108. package/fesm2022/fundamental-ngx-core-user-menu.mjs.map +1 -1
  109. package/fesm2022/fundamental-ngx-core-vertical-navigation.mjs +3 -3
  110. package/fesm2022/fundamental-ngx-core-vertical-navigation.mjs.map +1 -1
  111. package/package.json +3 -3
  112. package/types/fundamental-ngx-core-bar.d.ts +14 -4
  113. package/types/fundamental-ngx-core-breadcrumb.d.ts +5 -5
  114. package/types/fundamental-ngx-core-busy-indicator.d.ts +3 -3
  115. package/types/fundamental-ngx-core-combobox.d.ts +4 -2
  116. package/types/fundamental-ngx-core-datetime.d.ts +1 -5
  117. package/types/fundamental-ngx-core-dialog.d.ts +4 -2
  118. package/types/fundamental-ngx-core-dynamic-page.d.ts +1 -2
  119. package/types/fundamental-ngx-core-list.d.ts +24 -5
  120. package/types/fundamental-ngx-core-menu.d.ts +2 -0
  121. package/types/fundamental-ngx-core-message-box.d.ts +1 -1
  122. package/types/fundamental-ngx-core-message-strip.d.ts +3 -12
  123. package/types/fundamental-ngx-core-multi-combobox.d.ts +1 -1
  124. package/types/fundamental-ngx-core-nested-list.d.ts +10 -10
  125. package/types/fundamental-ngx-core-notification.d.ts +5 -7
  126. package/types/fundamental-ngx-core-pagination.d.ts +3 -4
  127. package/types/fundamental-ngx-core-product-switch.d.ts +3 -0
  128. package/types/fundamental-ngx-core-rating-indicator.d.ts +3 -2
  129. package/types/fundamental-ngx-core-segmented-button.d.ts +3 -5
  130. package/types/fundamental-ngx-core-select.d.ts +5 -1
  131. package/types/fundamental-ngx-core-shared.d.ts +21 -20
  132. package/types/fundamental-ngx-core-shellbar.d.ts +7 -1
  133. package/types/fundamental-ngx-core-slider.d.ts +1 -1
  134. package/types/fundamental-ngx-core-text.d.ts +3 -1
  135. package/types/fundamental-ngx-core-time-picker.d.ts +1 -17
  136. package/types/fundamental-ngx-core-title.d.ts +3 -1
  137. package/types/fundamental-ngx-core-token.d.ts +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"fundamental-ngx-core-info-label.mjs","sources":["../../../../libs/core/info-label/info-label.component.ts","../../../../libs/core/info-label/info-label.component.html","../../../../libs/core/info-label/info-label.module.ts","../../../../libs/core/info-label/fundamental-ngx-core-info-label.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n ViewEncapsulation\n} from '@angular/core';\nimport { HasElementRef } from '@fundamental-ngx/cdk/utils';\nimport { IconComponent, IconFont } from '@fundamental-ngx/core/icon';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\n\n/** Display type for the info label. */\nexport type LabelType = 'numeric' | 'icon';\n\nconst labelColorRange = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] as const;\n\nconst defaultColor: InfoLabelColor = 7;\n\n/** Valid accent color values for info labels (1-10). */\nexport type InfoLabelColor = (typeof labelColorRange)[number];\n\n/** Accent color input accepting both number and string representations. */\nexport type InfoLabelColorInput = InfoLabelColor | `${InfoLabelColor}`;\n\n@Component({\n selector: 'fd-info-label',\n templateUrl: './info-label.component.html',\n styleUrl: './info-label.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [IconComponent, FdTranslatePipe],\n host: {\n '[class]': 'cssClass()'\n }\n})\nexport class InfoLabelComponent implements HasElementRef {\n /**\n * The type of the info label.\n * - `'numeric'`: Displays the label as a number with special numeric styling\n * - `'icon'`: Displays an icon alongside the label text\n * - `undefined`: Default text-only label (omit this property for default)\n * @default undefined\n */\n readonly type = input<LabelType>();\n\n /**\n * The icon name to display when `type` is set to `'icon'`.\n * @default null\n */\n readonly glyph = input<string | null>();\n\n /**\n * The icon font family to use for the icon.\n * @default 'SAP-icons'\n */\n readonly font = input<IconFont>('SAP-icons');\n\n /**\n * Accent color of the info label, ranging from 1 to 10.\n * Invalid values default to 7 with a console warning in development mode.\n * @default 7\n */\n readonly color = input<InfoLabelColorInput | null | undefined>(defaultColor);\n\n /**\n * The text content displayed in the info label.\n */\n readonly label = input<string>();\n\n /**\n * Tooltip text displayed on hover.\n * Provides additional context about the label.\n */\n readonly title = input<string>();\n\n /**\n * ARIA label for accessibility.\n * Overrides the visible label for screen readers when provided.\n */\n readonly ariaLabel = input<string | null>();\n\n /**\n * ARIA labelledby for accessibility.\n * Used when the label is provided by another element.\n */\n readonly ariaLabelledBy = input<string | null>();\n\n /**\n * Screen reader only text for additional context.\n * Defaults to translated \"Info Label\" if not provided.\n */\n readonly srText = input<string>();\n\n /** @hidden */\n elementRef: ElementRef<HTMLElement> = inject(ElementRef);\n\n /** @hidden Validated color with fallback to default */\n protected readonly validatedColor = computed(() => {\n const numericColor = Number(this.color() ?? defaultColor);\n\n // Check if it's a valid integer in range 1-10\n if (Number.isInteger(numericColor) && numericColor >= 1 && numericColor <= 10) {\n return numericColor;\n }\n\n return defaultColor; // Default fallback for invalid values\n });\n\n /** @hidden */\n protected readonly cssClass = computed(() =>\n [\n 'fd-info-label',\n this.type() ? `fd-info-label--${this.type()}` : '',\n `fd-info-label--accent-color-${this.validatedColor()}`\n ]\n .filter(Boolean)\n .join(' ')\n );\n}\n","@if (glyph()) {\n <fd-icon\n class=\"fd-info-label__icon\"\n [glyph]=\"glyph()\"\n [font]=\"font()\"\n role=\"presentation\"\n aria-hidden=\"true\"\n ></fd-icon>\n}\n@if (label()) {\n <span\n class=\"fd-info-label__text\"\n [attr.title]=\"title()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-labelledby]=\"ariaLabelledBy()\"\n >{{ label() }}</span\n >\n}\n<span class=\"fd-info-label__sr-only\">{{ srText() || ('coreInfoLabel.srOnlyText' | fdTranslate) }}</span>\n","import { NgModule } from '@angular/core';\nimport { InfoLabelComponent } from './info-label.component';\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n imports: [InfoLabelComponent],\n exports: [InfoLabelComponent]\n})\nexport class InfoLabelModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fundamental-ngx-core-info-label.mjs","sources":["../../../../libs/core/info-label/info-label.component.ts","../../../../libs/core/info-label/info-label.component.html","../../../../libs/core/info-label/info-label.module.ts","../../../../libs/core/info-label/fundamental-ngx-core-info-label.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n ViewEncapsulation\n} from '@angular/core';\nimport { HasElementRef } from '@fundamental-ngx/cdk/utils';\nimport { IconComponent, IconFont } from '@fundamental-ngx/core/icon';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\n\n/** Display type for the info label. */\nexport type LabelType = 'numeric' | 'icon';\n\nconst labelColorRange = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] as const;\n\nconst defaultColor: InfoLabelColor = 7;\n\n/** Valid accent color values for info labels (1-10). */\nexport type InfoLabelColor = (typeof labelColorRange)[number];\n\n/** Accent color input accepting both number and string representations. */\nexport type InfoLabelColorInput = InfoLabelColor | `${InfoLabelColor}`;\n\n@Component({\n selector: 'fd-info-label',\n templateUrl: './info-label.component.html',\n styleUrl: './info-label.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [IconComponent, FdTranslatePipe],\n host: {\n '[class]': 'cssClass()'\n }\n})\nexport class InfoLabelComponent implements HasElementRef {\n /**\n * The type of the info label.\n * - `'numeric'`: Displays the label as a number with special numeric styling\n * - `'icon'`: Displays an icon alongside the label text\n * - `undefined`: Default text-only label (omit this property for default)\n * @default undefined\n */\n readonly type = input<LabelType>();\n\n /**\n * The icon name to display when `type` is set to `'icon'`.\n * @default null\n */\n readonly glyph = input<string | null>();\n\n /**\n * The icon font family to use for the icon.\n * @default 'SAP-icons'\n */\n readonly font = input<IconFont>('SAP-icons');\n\n /**\n * Accent color of the info label, ranging from 1 to 10.\n * Invalid values default to 7 with a console warning in development mode.\n * @default 7\n */\n readonly color = input<InfoLabelColorInput | null | undefined>(defaultColor);\n\n /**\n * The text content displayed in the info label.\n */\n readonly label = input<string>();\n\n /**\n * Tooltip text displayed on hover.\n * Provides additional context about the label.\n */\n readonly title = input<string>();\n\n /**\n * ARIA label for accessibility.\n * Overrides the visible label for screen readers when provided.\n */\n readonly ariaLabel = input<string | null>();\n\n /**\n * ARIA labelledby for accessibility.\n * Used when the label is provided by another element.\n */\n readonly ariaLabelledBy = input<string | null>();\n\n /**\n * Screen reader only text for additional context.\n * Defaults to translated \"Info Label\" if not provided.\n */\n readonly srText = input<string>();\n\n /** @hidden */\n elementRef: ElementRef<HTMLElement> = inject(ElementRef);\n\n /** @hidden Validated color with fallback to default */\n protected readonly validatedColor = computed(() => {\n const numericColor = Number(this.color() ?? defaultColor);\n\n // Check if it's a valid integer in range 1-10\n if (Number.isInteger(numericColor) && numericColor >= 1 && numericColor <= 10) {\n return numericColor;\n }\n\n return defaultColor; // Default fallback for invalid values\n });\n\n /** @hidden */\n protected readonly cssClass = computed(() =>\n [\n 'fd-info-label',\n this.type() ? `fd-info-label--${this.type()}` : '',\n `fd-info-label--accent-color-${this.validatedColor()}`\n ]\n .filter(Boolean)\n .join(' ')\n );\n}\n","@if (glyph()) {\n <fd-icon\n class=\"fd-info-label__icon\"\n [glyph]=\"glyph()\"\n [font]=\"font()\"\n role=\"presentation\"\n aria-hidden=\"true\"\n ></fd-icon>\n}\n@if (label()) {\n <span\n class=\"fd-info-label__text\"\n [attr.title]=\"title()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-labelledby]=\"ariaLabelledBy()\"\n >{{ label() }}</span\n >\n}\n<span class=\"fd-info-label__sr-only\">{{ srText() || ('coreInfoLabel.srOnlyText' | fdTranslate)() }}</span>\n","import { NgModule } from '@angular/core';\nimport { InfoLabelComponent } from './info-label.component';\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n imports: [InfoLabelComponent],\n exports: [InfoLabelComponent]\n})\nexport class InfoLabelModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -110,7 +110,7 @@ class LinkComponent {
110
110
  [new Optional(), new Self(), RouterLink]
111
111
  ]
112
112
  }
113
- ], queries: [{ propertyName: "iconComponents", predicate: FD_ICON_COMPONENT, isSignal: true }], viewQueries: [{ propertyName: "contentSpan", first: true, predicate: ["content"], descendants: true, isSignal: true }], ngImport: i0, template: "@if (prefixPortal()) {\n <span class=\"fd-link__icon-container\" role=\"presentation\" aria-hidden=\"true\">\n <ng-container *cdkPortalOutlet=\"prefixPortal()\"></ng-container>\n </span>\n}\n<span class=\"fd-link__content\" #content [class.fd-link__content--icon-line-height]=\"postfixPortal() || prefixPortal()\">\n <ng-content></ng-content>\n</span>\n@if (postfixPortal()) {\n <span class=\"fd-link__icon-container\" role=\"presentation\" aria-hidden=\"true\">\n <ng-container *cdkPortalOutlet=\"postfixPortal()\"></ng-container>\n </span>\n}\n@if (emphasized()) {\n <span class=\"fd-link__sr-only\">{{ 'coreLink.emphasized' | fdTranslate }}</span>\n}\n@if (subtle()) {\n <span class=\"fd-link__sr-only\">{{ 'coreLink.subtle' | fdTranslate }}</span>\n}\n", styles: [".fd-link{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapLinkColor);cursor:pointer;display:var(--fdLink_Display, inline-block);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;text-shadow:var(--sapContent_TextShadow);-webkit-box-align:center;-ms-flex-align:center;align-items:center;line-height:inherit;line-height:var(--fdLink_Line_Height, 1.125rem);-webkit-text-decoration:var(--fdLink_Text_Decoration, none);text-decoration:var(--fdLink_Text_Decoration, none);text-underline-offset:.125rem;-webkit-transition:all .125s ease-in;transition:all .125s ease-in}.fd-link:after,.fd-link:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-link__content{-webkit-text-decoration:var(--fdLink_Text_Content_Decoration, none);text-decoration:var(--fdLink_Text_Content_Decoration, none)}.fd-link.is-hover,.fd-link:hover{--fdLink_Text_Decoration:var(--fdLink_Text_Decoration_Hover,none);--fdLink_Text_Content_Decoration:var(--fdLink_Text_Content_Decoration_Hover,none)}.fd-link.is-focus,.fd-link:focus{--fdLink_Text_Decoration:var(--fdLink_Text_Decoration_Focus,none);--fdLink_Text_Content_Decoration:var(--fdLink_Text_Content_Decoration_Focus,none)}.fd-link.is-active,.fd-link:active{--fdLink_Text_Decoration:var(--fdLink_Text_Decoration_Active,none);--fdLink_Text_Content_Decoration:var(--fdLink_Text_Content_Decoration_Active,none)}.fd-link.is-disabled,.fd-link:disabled,.fd-link[aria-disabled=true]{--fdLink_Text_Decoration:var(--fdLink_Text_Decoration_Disabled,none);--fdLink_Text_Content_Decoration:var(--fdLink_Text_Content_Decoration_Disabled,none)}.fd-link--subtle{--fdLink_Text_Content_Decoration:var(--fdLink_Text_Content_Decoration_Subtle,none);--fdLink_Text_Content_Decoration_Hover:var(--fdLink_Text_Content_Decoration_Subtle_Hover,none);--fdLink_Text_Content_Decoration_Active:var(--fdLink_Text_Content_Decoration_Subtle_Active,none);--fdLink_Text_Decoration:var(--fdLink_Text_Decoration_Subtle,none);--fdLink_Text_Decoration_Hover:var(--fdLink_Text_Decoration_Subtle_Hover,none);--fdLink_Text_Decoration_Active:var(--fdLink_Text_Decoration_Subtle_Active,none)}.fd-link--undecorated{--fdLink_Text_Decoration:none;--fdLink_Text_Decoration_Subtle:none;--fdLink_Text_Decoration_Subtle_Hover:none;--fdLink_Text_Decoration_Subtle_Active:none;--fdLink_Text_Decoration_Hover:none;--fdLink_Text_Decoration_Focus:none;--fdLink_Text_Decoration_Active:none;--fdLink_Text_Decoration_Visited:none;--fdLink_Text_Decoration_Disabled:none;--fdLink_Text_Content_Decoration:none;--fdLink_Text_Content_Decoration_Subtle:none;--fdLink_Text_Content_Decoration_Subtle_Hover:none;--fdLink_Text_Content_Decoration_Subtle_Active:none;--fdLink_Text_Content_Decoration_Hover:none;--fdLink_Text_Content_Decoration_Focus:none;--fdLink_Text_Content_Decoration_Active:none;--fdLink_Text_Content_Decoration_Visited:none;--fdLink_Text_Content_Decoration_Disabled:none}.fd-link--emphasized{font-family:var(--sapFontBoldFamily)}.fd-link:visited{color:var(--sapLink_Visited_Color)}.fd-link.is-hover,.fd-link:hover{color:var(--sapLink_Hover_Color)}.fd-link.is-focus,.fd-link:focus{background-color:var(--fdLink_Focus_Background);border-radius:var(--fdLink_Focus_Border_Radius);-webkit-box-shadow:none;box-shadow:none;color:var(--fdLink_Text_Focus_Color);outline:var(--fdLink_Hover_Outline_Color) var(--fdLink_Hover_Outline_Style) var(--fdLink_Hover_Outline_Width);outline-offset:var(--fdLink_Hover_Outline_Offset);text-shadow:var(--fdLink_Focus_Text_Shadow)}.fd-link.is-active,.fd-link:active{color:var(--sapLink_Active_Color)}.fd-link.is-active.is-focus,.fd-link.is-active:focus,.fd-link:active.is-focus,.fd-link:active:focus{background-color:transparent;z-index:5}.fd-link--inverted{text-shadow:none}.fd-link--inverted,.fd-link--inverted.is-hover,.fd-link--inverted:hover{color:var(--sapLink_InvertedColor)}.fd-link--inverted.is-focus,.fd-link--inverted:focus{outline-color:var(--sapContent_ContrastFocusColor);z-index:5}.fd-link--subtle{color:var(--sapLink_SubtleColor)}.fd-link.is-disabled,.fd-link:disabled,.fd-link[aria-disabled=true]{color:var(--sapLinkColor);opacity:var(--sapContent_DisabledOpacity);pointer-events:none}.fd-link>img{vertical-align:bottom}.fd-link [class*=sap-icon],.fd-link[class*=sap-icon]{color:var(--sapLinkColor);display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;line-height:1;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.fd-link [class*=sap-icon]:first-child,.fd-link[class*=sap-icon]:first-child{-webkit-margin-end:var(--fdLink_Icon_Spacing, 0);margin-inline-end:var(--fdLink_Icon_Spacing, 0)}.fd-link [class*=sap-icon]:last-child,.fd-link[class*=sap-icon]:last-child{-webkit-margin-start:var(--fdLink_Icon_Spacing, 0);margin-inline-start:var(--fdLink_Icon_Spacing, 0)}.fd-link.is-hover [class*=sap-icon],.fd-link.is-hover[class*=sap-icon],.fd-link:hover [class*=sap-icon],.fd-link:hover[class*=sap-icon]{color:var(--sapLink_Hover_Color);-webkit-text-decoration:var(--fdLink_Text_Decoration_Hover);text-decoration:var(--fdLink_Text_Decoration_Hover)}.fd-link.is-focus,.fd-link:focus{z-index:5}.fd-link.is-focus [class*=sap-icon],.fd-link.is-focus[class*=sap-icon],.fd-link:focus [class*=sap-icon],.fd-link:focus[class*=sap-icon]{color:var(--fdLink_Text_Focus_Color);-webkit-text-decoration:var(--fdLink_Text_Decoration_Focus);text-decoration:var(--fdLink_Text_Decoration_Focus)}.fd-link.is-active [class*=sap-icon],.fd-link.is-active[class*=sap-icon],.fd-link:active [class*=sap-icon],.fd-link:active[class*=sap-icon]{color:var(--sapLink_Active_Color);-webkit-text-decoration:var(--fdLink_Text_Decoration_Active);text-decoration:var(--fdLink_Text_Decoration_Active)}.fd-link:visited:not(:focus) [class*=sap-icon],.fd-link:visited:not(:focus)[class*=sap-icon]{color:var(--sapLink_Visited_Color)}.fd-link__content--icon-line-height{line-height:var(--sapContent_LineHeight)}.fd-link__icon-container{display:inline-flex;justify-content:center;align-items:center}.fd-link__icon-container:first-child{margin-inline-end:var(--fdLink_Icon_Spacing, 0)}.fd-link__icon-container:last-child{margin-inline-start:var(--fdLink_Icon_Spacing, 0)}.fd-link--touch-target{--fdLink_Line_Height: 1.5rem}.fd-link__sr-only{position:absolute;clip:rect(0 0 0 0);height:1px;width:1px;border:0;margin-inline:-1px;margin-block:-1px;padding-inline:0;padding-block:0;overflow:hidden;white-space:nowrap}\n/*!\n * Fundamental Library Styles v0.40.1\n * Copyright (c) 2025 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */\n"], dependencies: [{ kind: "ngmodule", type: PortalModule }, { kind: "directive", type: i1.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
113
+ ], queries: [{ propertyName: "iconComponents", predicate: FD_ICON_COMPONENT, isSignal: true }], viewQueries: [{ propertyName: "contentSpan", first: true, predicate: ["content"], descendants: true, isSignal: true }], ngImport: i0, template: "@if (prefixPortal()) {\n <span class=\"fd-link__icon-container\" role=\"presentation\" aria-hidden=\"true\">\n <ng-container *cdkPortalOutlet=\"prefixPortal()\"></ng-container>\n </span>\n}\n<span class=\"fd-link__content\" #content [class.fd-link__content--icon-line-height]=\"postfixPortal() || prefixPortal()\">\n <ng-content></ng-content>\n</span>\n@if (postfixPortal()) {\n <span class=\"fd-link__icon-container\" role=\"presentation\" aria-hidden=\"true\">\n <ng-container *cdkPortalOutlet=\"postfixPortal()\"></ng-container>\n </span>\n}\n@if (emphasized()) {\n <span class=\"fd-link__sr-only\">{{ ('coreLink.emphasized' | fdTranslate)() }}</span>\n}\n@if (subtle()) {\n <span class=\"fd-link__sr-only\">{{ ('coreLink.subtle' | fdTranslate)() }}</span>\n}\n", styles: [".fd-link{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapLinkColor);cursor:pointer;display:var(--fdLink_Display, inline-block);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;text-shadow:var(--sapContent_TextShadow);-webkit-box-align:center;-ms-flex-align:center;align-items:center;line-height:inherit;line-height:var(--fdLink_Line_Height, 1.125rem);-webkit-text-decoration:var(--fdLink_Text_Decoration, none);text-decoration:var(--fdLink_Text_Decoration, none);text-underline-offset:.125rem;-webkit-transition:all .125s ease-in;transition:all .125s ease-in}.fd-link:after,.fd-link:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-link__content{-webkit-text-decoration:var(--fdLink_Text_Content_Decoration, none);text-decoration:var(--fdLink_Text_Content_Decoration, none)}.fd-link.is-hover,.fd-link:hover{--fdLink_Text_Decoration:var(--fdLink_Text_Decoration_Hover,none);--fdLink_Text_Content_Decoration:var(--fdLink_Text_Content_Decoration_Hover,none)}.fd-link.is-focus,.fd-link:focus{--fdLink_Text_Decoration:var(--fdLink_Text_Decoration_Focus,none);--fdLink_Text_Content_Decoration:var(--fdLink_Text_Content_Decoration_Focus,none)}.fd-link.is-active,.fd-link:active{--fdLink_Text_Decoration:var(--fdLink_Text_Decoration_Active,none);--fdLink_Text_Content_Decoration:var(--fdLink_Text_Content_Decoration_Active,none)}.fd-link.is-disabled,.fd-link:disabled,.fd-link[aria-disabled=true]{--fdLink_Text_Decoration:var(--fdLink_Text_Decoration_Disabled,none);--fdLink_Text_Content_Decoration:var(--fdLink_Text_Content_Decoration_Disabled,none)}.fd-link--subtle{--fdLink_Text_Content_Decoration:var(--fdLink_Text_Content_Decoration_Subtle,none);--fdLink_Text_Content_Decoration_Hover:var(--fdLink_Text_Content_Decoration_Subtle_Hover,none);--fdLink_Text_Content_Decoration_Active:var(--fdLink_Text_Content_Decoration_Subtle_Active,none);--fdLink_Text_Decoration:var(--fdLink_Text_Decoration_Subtle,none);--fdLink_Text_Decoration_Hover:var(--fdLink_Text_Decoration_Subtle_Hover,none);--fdLink_Text_Decoration_Active:var(--fdLink_Text_Decoration_Subtle_Active,none)}.fd-link--undecorated{--fdLink_Text_Decoration:none;--fdLink_Text_Decoration_Subtle:none;--fdLink_Text_Decoration_Subtle_Hover:none;--fdLink_Text_Decoration_Subtle_Active:none;--fdLink_Text_Decoration_Hover:none;--fdLink_Text_Decoration_Focus:none;--fdLink_Text_Decoration_Active:none;--fdLink_Text_Decoration_Visited:none;--fdLink_Text_Decoration_Disabled:none;--fdLink_Text_Content_Decoration:none;--fdLink_Text_Content_Decoration_Subtle:none;--fdLink_Text_Content_Decoration_Subtle_Hover:none;--fdLink_Text_Content_Decoration_Subtle_Active:none;--fdLink_Text_Content_Decoration_Hover:none;--fdLink_Text_Content_Decoration_Focus:none;--fdLink_Text_Content_Decoration_Active:none;--fdLink_Text_Content_Decoration_Visited:none;--fdLink_Text_Content_Decoration_Disabled:none}.fd-link--emphasized{font-family:var(--sapFontBoldFamily)}.fd-link:visited{color:var(--sapLink_Visited_Color)}.fd-link.is-hover,.fd-link:hover{color:var(--sapLink_Hover_Color)}.fd-link.is-focus,.fd-link:focus{background-color:var(--fdLink_Focus_Background);border-radius:var(--fdLink_Focus_Border_Radius);-webkit-box-shadow:none;box-shadow:none;color:var(--fdLink_Text_Focus_Color);outline:var(--fdLink_Hover_Outline_Color) var(--fdLink_Hover_Outline_Style) var(--fdLink_Hover_Outline_Width);outline-offset:var(--fdLink_Hover_Outline_Offset);text-shadow:var(--fdLink_Focus_Text_Shadow)}.fd-link.is-active,.fd-link:active{color:var(--sapLink_Active_Color)}.fd-link.is-active.is-focus,.fd-link.is-active:focus,.fd-link:active.is-focus,.fd-link:active:focus{background-color:transparent;z-index:5}.fd-link--inverted{text-shadow:none}.fd-link--inverted,.fd-link--inverted.is-hover,.fd-link--inverted:hover{color:var(--sapLink_InvertedColor)}.fd-link--inverted.is-focus,.fd-link--inverted:focus{outline-color:var(--sapContent_ContrastFocusColor);z-index:5}.fd-link--subtle{color:var(--sapLink_SubtleColor)}.fd-link.is-disabled,.fd-link:disabled,.fd-link[aria-disabled=true]{color:var(--sapLinkColor);opacity:var(--sapContent_DisabledOpacity);pointer-events:none}.fd-link>img{vertical-align:bottom}.fd-link [class*=sap-icon],.fd-link[class*=sap-icon]{color:var(--sapLinkColor);display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;line-height:1;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.fd-link [class*=sap-icon]:first-child,.fd-link[class*=sap-icon]:first-child{-webkit-margin-end:var(--fdLink_Icon_Spacing, 0);margin-inline-end:var(--fdLink_Icon_Spacing, 0)}.fd-link [class*=sap-icon]:last-child,.fd-link[class*=sap-icon]:last-child{-webkit-margin-start:var(--fdLink_Icon_Spacing, 0);margin-inline-start:var(--fdLink_Icon_Spacing, 0)}.fd-link.is-hover [class*=sap-icon],.fd-link.is-hover[class*=sap-icon],.fd-link:hover [class*=sap-icon],.fd-link:hover[class*=sap-icon]{color:var(--sapLink_Hover_Color);-webkit-text-decoration:var(--fdLink_Text_Decoration_Hover);text-decoration:var(--fdLink_Text_Decoration_Hover)}.fd-link.is-focus,.fd-link:focus{z-index:5}.fd-link.is-focus [class*=sap-icon],.fd-link.is-focus[class*=sap-icon],.fd-link:focus [class*=sap-icon],.fd-link:focus[class*=sap-icon]{color:var(--fdLink_Text_Focus_Color);-webkit-text-decoration:var(--fdLink_Text_Decoration_Focus);text-decoration:var(--fdLink_Text_Decoration_Focus)}.fd-link.is-active [class*=sap-icon],.fd-link.is-active[class*=sap-icon],.fd-link:active [class*=sap-icon],.fd-link:active[class*=sap-icon]{color:var(--sapLink_Active_Color);-webkit-text-decoration:var(--fdLink_Text_Decoration_Active);text-decoration:var(--fdLink_Text_Decoration_Active)}.fd-link:visited:not(:focus) [class*=sap-icon],.fd-link:visited:not(:focus)[class*=sap-icon]{color:var(--sapLink_Visited_Color)}.fd-link__content--icon-line-height{line-height:var(--sapContent_LineHeight)}.fd-link__icon-container{display:inline-flex;justify-content:center;align-items:center}.fd-link__icon-container:first-child{margin-inline-end:var(--fdLink_Icon_Spacing, 0)}.fd-link__icon-container:last-child{margin-inline-start:var(--fdLink_Icon_Spacing, 0)}.fd-link--touch-target{--fdLink_Line_Height: 1.5rem}.fd-link__sr-only{position:absolute;clip:rect(0 0 0 0);height:1px;width:1px;border:0;margin-inline:-1px;margin-block:-1px;padding-inline:0;padding-block:0;overflow:hidden;white-space:nowrap}\n/*!\n * Fundamental Library Styles v0.40.1\n * Copyright (c) 2025 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */\n"], dependencies: [{ kind: "ngmodule", type: PortalModule }, { kind: "directive", type: i1.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
114
114
  }
115
115
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: LinkComponent, decorators: [{
116
116
  type: Component,
@@ -136,7 +136,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImpor
136
136
  [new Optional(), new Self(), RouterLink]
137
137
  ]
138
138
  }
139
- ], imports: [PortalModule, FdTranslatePipe], template: "@if (prefixPortal()) {\n <span class=\"fd-link__icon-container\" role=\"presentation\" aria-hidden=\"true\">\n <ng-container *cdkPortalOutlet=\"prefixPortal()\"></ng-container>\n </span>\n}\n<span class=\"fd-link__content\" #content [class.fd-link__content--icon-line-height]=\"postfixPortal() || prefixPortal()\">\n <ng-content></ng-content>\n</span>\n@if (postfixPortal()) {\n <span class=\"fd-link__icon-container\" role=\"presentation\" aria-hidden=\"true\">\n <ng-container *cdkPortalOutlet=\"postfixPortal()\"></ng-container>\n </span>\n}\n@if (emphasized()) {\n <span class=\"fd-link__sr-only\">{{ 'coreLink.emphasized' | fdTranslate }}</span>\n}\n@if (subtle()) {\n <span class=\"fd-link__sr-only\">{{ 'coreLink.subtle' | fdTranslate }}</span>\n}\n", styles: [".fd-link{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapLinkColor);cursor:pointer;display:var(--fdLink_Display, inline-block);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;text-shadow:var(--sapContent_TextShadow);-webkit-box-align:center;-ms-flex-align:center;align-items:center;line-height:inherit;line-height:var(--fdLink_Line_Height, 1.125rem);-webkit-text-decoration:var(--fdLink_Text_Decoration, none);text-decoration:var(--fdLink_Text_Decoration, none);text-underline-offset:.125rem;-webkit-transition:all .125s ease-in;transition:all .125s ease-in}.fd-link:after,.fd-link:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-link__content{-webkit-text-decoration:var(--fdLink_Text_Content_Decoration, none);text-decoration:var(--fdLink_Text_Content_Decoration, none)}.fd-link.is-hover,.fd-link:hover{--fdLink_Text_Decoration:var(--fdLink_Text_Decoration_Hover,none);--fdLink_Text_Content_Decoration:var(--fdLink_Text_Content_Decoration_Hover,none)}.fd-link.is-focus,.fd-link:focus{--fdLink_Text_Decoration:var(--fdLink_Text_Decoration_Focus,none);--fdLink_Text_Content_Decoration:var(--fdLink_Text_Content_Decoration_Focus,none)}.fd-link.is-active,.fd-link:active{--fdLink_Text_Decoration:var(--fdLink_Text_Decoration_Active,none);--fdLink_Text_Content_Decoration:var(--fdLink_Text_Content_Decoration_Active,none)}.fd-link.is-disabled,.fd-link:disabled,.fd-link[aria-disabled=true]{--fdLink_Text_Decoration:var(--fdLink_Text_Decoration_Disabled,none);--fdLink_Text_Content_Decoration:var(--fdLink_Text_Content_Decoration_Disabled,none)}.fd-link--subtle{--fdLink_Text_Content_Decoration:var(--fdLink_Text_Content_Decoration_Subtle,none);--fdLink_Text_Content_Decoration_Hover:var(--fdLink_Text_Content_Decoration_Subtle_Hover,none);--fdLink_Text_Content_Decoration_Active:var(--fdLink_Text_Content_Decoration_Subtle_Active,none);--fdLink_Text_Decoration:var(--fdLink_Text_Decoration_Subtle,none);--fdLink_Text_Decoration_Hover:var(--fdLink_Text_Decoration_Subtle_Hover,none);--fdLink_Text_Decoration_Active:var(--fdLink_Text_Decoration_Subtle_Active,none)}.fd-link--undecorated{--fdLink_Text_Decoration:none;--fdLink_Text_Decoration_Subtle:none;--fdLink_Text_Decoration_Subtle_Hover:none;--fdLink_Text_Decoration_Subtle_Active:none;--fdLink_Text_Decoration_Hover:none;--fdLink_Text_Decoration_Focus:none;--fdLink_Text_Decoration_Active:none;--fdLink_Text_Decoration_Visited:none;--fdLink_Text_Decoration_Disabled:none;--fdLink_Text_Content_Decoration:none;--fdLink_Text_Content_Decoration_Subtle:none;--fdLink_Text_Content_Decoration_Subtle_Hover:none;--fdLink_Text_Content_Decoration_Subtle_Active:none;--fdLink_Text_Content_Decoration_Hover:none;--fdLink_Text_Content_Decoration_Focus:none;--fdLink_Text_Content_Decoration_Active:none;--fdLink_Text_Content_Decoration_Visited:none;--fdLink_Text_Content_Decoration_Disabled:none}.fd-link--emphasized{font-family:var(--sapFontBoldFamily)}.fd-link:visited{color:var(--sapLink_Visited_Color)}.fd-link.is-hover,.fd-link:hover{color:var(--sapLink_Hover_Color)}.fd-link.is-focus,.fd-link:focus{background-color:var(--fdLink_Focus_Background);border-radius:var(--fdLink_Focus_Border_Radius);-webkit-box-shadow:none;box-shadow:none;color:var(--fdLink_Text_Focus_Color);outline:var(--fdLink_Hover_Outline_Color) var(--fdLink_Hover_Outline_Style) var(--fdLink_Hover_Outline_Width);outline-offset:var(--fdLink_Hover_Outline_Offset);text-shadow:var(--fdLink_Focus_Text_Shadow)}.fd-link.is-active,.fd-link:active{color:var(--sapLink_Active_Color)}.fd-link.is-active.is-focus,.fd-link.is-active:focus,.fd-link:active.is-focus,.fd-link:active:focus{background-color:transparent;z-index:5}.fd-link--inverted{text-shadow:none}.fd-link--inverted,.fd-link--inverted.is-hover,.fd-link--inverted:hover{color:var(--sapLink_InvertedColor)}.fd-link--inverted.is-focus,.fd-link--inverted:focus{outline-color:var(--sapContent_ContrastFocusColor);z-index:5}.fd-link--subtle{color:var(--sapLink_SubtleColor)}.fd-link.is-disabled,.fd-link:disabled,.fd-link[aria-disabled=true]{color:var(--sapLinkColor);opacity:var(--sapContent_DisabledOpacity);pointer-events:none}.fd-link>img{vertical-align:bottom}.fd-link [class*=sap-icon],.fd-link[class*=sap-icon]{color:var(--sapLinkColor);display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;line-height:1;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.fd-link [class*=sap-icon]:first-child,.fd-link[class*=sap-icon]:first-child{-webkit-margin-end:var(--fdLink_Icon_Spacing, 0);margin-inline-end:var(--fdLink_Icon_Spacing, 0)}.fd-link [class*=sap-icon]:last-child,.fd-link[class*=sap-icon]:last-child{-webkit-margin-start:var(--fdLink_Icon_Spacing, 0);margin-inline-start:var(--fdLink_Icon_Spacing, 0)}.fd-link.is-hover [class*=sap-icon],.fd-link.is-hover[class*=sap-icon],.fd-link:hover [class*=sap-icon],.fd-link:hover[class*=sap-icon]{color:var(--sapLink_Hover_Color);-webkit-text-decoration:var(--fdLink_Text_Decoration_Hover);text-decoration:var(--fdLink_Text_Decoration_Hover)}.fd-link.is-focus,.fd-link:focus{z-index:5}.fd-link.is-focus [class*=sap-icon],.fd-link.is-focus[class*=sap-icon],.fd-link:focus [class*=sap-icon],.fd-link:focus[class*=sap-icon]{color:var(--fdLink_Text_Focus_Color);-webkit-text-decoration:var(--fdLink_Text_Decoration_Focus);text-decoration:var(--fdLink_Text_Decoration_Focus)}.fd-link.is-active [class*=sap-icon],.fd-link.is-active[class*=sap-icon],.fd-link:active [class*=sap-icon],.fd-link:active[class*=sap-icon]{color:var(--sapLink_Active_Color);-webkit-text-decoration:var(--fdLink_Text_Decoration_Active);text-decoration:var(--fdLink_Text_Decoration_Active)}.fd-link:visited:not(:focus) [class*=sap-icon],.fd-link:visited:not(:focus)[class*=sap-icon]{color:var(--sapLink_Visited_Color)}.fd-link__content--icon-line-height{line-height:var(--sapContent_LineHeight)}.fd-link__icon-container{display:inline-flex;justify-content:center;align-items:center}.fd-link__icon-container:first-child{margin-inline-end:var(--fdLink_Icon_Spacing, 0)}.fd-link__icon-container:last-child{margin-inline-start:var(--fdLink_Icon_Spacing, 0)}.fd-link--touch-target{--fdLink_Line_Height: 1.5rem}.fd-link__sr-only{position:absolute;clip:rect(0 0 0 0);height:1px;width:1px;border:0;margin-inline:-1px;margin-block:-1px;padding-inline:0;padding-block:0;overflow:hidden;white-space:nowrap}\n/*!\n * Fundamental Library Styles v0.40.1\n * Copyright (c) 2025 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */\n"] }]
139
+ ], imports: [PortalModule, FdTranslatePipe], template: "@if (prefixPortal()) {\n <span class=\"fd-link__icon-container\" role=\"presentation\" aria-hidden=\"true\">\n <ng-container *cdkPortalOutlet=\"prefixPortal()\"></ng-container>\n </span>\n}\n<span class=\"fd-link__content\" #content [class.fd-link__content--icon-line-height]=\"postfixPortal() || prefixPortal()\">\n <ng-content></ng-content>\n</span>\n@if (postfixPortal()) {\n <span class=\"fd-link__icon-container\" role=\"presentation\" aria-hidden=\"true\">\n <ng-container *cdkPortalOutlet=\"postfixPortal()\"></ng-container>\n </span>\n}\n@if (emphasized()) {\n <span class=\"fd-link__sr-only\">{{ ('coreLink.emphasized' | fdTranslate)() }}</span>\n}\n@if (subtle()) {\n <span class=\"fd-link__sr-only\">{{ ('coreLink.subtle' | fdTranslate)() }}</span>\n}\n", styles: [".fd-link{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapLinkColor);cursor:pointer;display:var(--fdLink_Display, inline-block);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;text-shadow:var(--sapContent_TextShadow);-webkit-box-align:center;-ms-flex-align:center;align-items:center;line-height:inherit;line-height:var(--fdLink_Line_Height, 1.125rem);-webkit-text-decoration:var(--fdLink_Text_Decoration, none);text-decoration:var(--fdLink_Text_Decoration, none);text-underline-offset:.125rem;-webkit-transition:all .125s ease-in;transition:all .125s ease-in}.fd-link:after,.fd-link:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-link__content{-webkit-text-decoration:var(--fdLink_Text_Content_Decoration, none);text-decoration:var(--fdLink_Text_Content_Decoration, none)}.fd-link.is-hover,.fd-link:hover{--fdLink_Text_Decoration:var(--fdLink_Text_Decoration_Hover,none);--fdLink_Text_Content_Decoration:var(--fdLink_Text_Content_Decoration_Hover,none)}.fd-link.is-focus,.fd-link:focus{--fdLink_Text_Decoration:var(--fdLink_Text_Decoration_Focus,none);--fdLink_Text_Content_Decoration:var(--fdLink_Text_Content_Decoration_Focus,none)}.fd-link.is-active,.fd-link:active{--fdLink_Text_Decoration:var(--fdLink_Text_Decoration_Active,none);--fdLink_Text_Content_Decoration:var(--fdLink_Text_Content_Decoration_Active,none)}.fd-link.is-disabled,.fd-link:disabled,.fd-link[aria-disabled=true]{--fdLink_Text_Decoration:var(--fdLink_Text_Decoration_Disabled,none);--fdLink_Text_Content_Decoration:var(--fdLink_Text_Content_Decoration_Disabled,none)}.fd-link--subtle{--fdLink_Text_Content_Decoration:var(--fdLink_Text_Content_Decoration_Subtle,none);--fdLink_Text_Content_Decoration_Hover:var(--fdLink_Text_Content_Decoration_Subtle_Hover,none);--fdLink_Text_Content_Decoration_Active:var(--fdLink_Text_Content_Decoration_Subtle_Active,none);--fdLink_Text_Decoration:var(--fdLink_Text_Decoration_Subtle,none);--fdLink_Text_Decoration_Hover:var(--fdLink_Text_Decoration_Subtle_Hover,none);--fdLink_Text_Decoration_Active:var(--fdLink_Text_Decoration_Subtle_Active,none)}.fd-link--undecorated{--fdLink_Text_Decoration:none;--fdLink_Text_Decoration_Subtle:none;--fdLink_Text_Decoration_Subtle_Hover:none;--fdLink_Text_Decoration_Subtle_Active:none;--fdLink_Text_Decoration_Hover:none;--fdLink_Text_Decoration_Focus:none;--fdLink_Text_Decoration_Active:none;--fdLink_Text_Decoration_Visited:none;--fdLink_Text_Decoration_Disabled:none;--fdLink_Text_Content_Decoration:none;--fdLink_Text_Content_Decoration_Subtle:none;--fdLink_Text_Content_Decoration_Subtle_Hover:none;--fdLink_Text_Content_Decoration_Subtle_Active:none;--fdLink_Text_Content_Decoration_Hover:none;--fdLink_Text_Content_Decoration_Focus:none;--fdLink_Text_Content_Decoration_Active:none;--fdLink_Text_Content_Decoration_Visited:none;--fdLink_Text_Content_Decoration_Disabled:none}.fd-link--emphasized{font-family:var(--sapFontBoldFamily)}.fd-link:visited{color:var(--sapLink_Visited_Color)}.fd-link.is-hover,.fd-link:hover{color:var(--sapLink_Hover_Color)}.fd-link.is-focus,.fd-link:focus{background-color:var(--fdLink_Focus_Background);border-radius:var(--fdLink_Focus_Border_Radius);-webkit-box-shadow:none;box-shadow:none;color:var(--fdLink_Text_Focus_Color);outline:var(--fdLink_Hover_Outline_Color) var(--fdLink_Hover_Outline_Style) var(--fdLink_Hover_Outline_Width);outline-offset:var(--fdLink_Hover_Outline_Offset);text-shadow:var(--fdLink_Focus_Text_Shadow)}.fd-link.is-active,.fd-link:active{color:var(--sapLink_Active_Color)}.fd-link.is-active.is-focus,.fd-link.is-active:focus,.fd-link:active.is-focus,.fd-link:active:focus{background-color:transparent;z-index:5}.fd-link--inverted{text-shadow:none}.fd-link--inverted,.fd-link--inverted.is-hover,.fd-link--inverted:hover{color:var(--sapLink_InvertedColor)}.fd-link--inverted.is-focus,.fd-link--inverted:focus{outline-color:var(--sapContent_ContrastFocusColor);z-index:5}.fd-link--subtle{color:var(--sapLink_SubtleColor)}.fd-link.is-disabled,.fd-link:disabled,.fd-link[aria-disabled=true]{color:var(--sapLinkColor);opacity:var(--sapContent_DisabledOpacity);pointer-events:none}.fd-link>img{vertical-align:bottom}.fd-link [class*=sap-icon],.fd-link[class*=sap-icon]{color:var(--sapLinkColor);display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;line-height:1;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.fd-link [class*=sap-icon]:first-child,.fd-link[class*=sap-icon]:first-child{-webkit-margin-end:var(--fdLink_Icon_Spacing, 0);margin-inline-end:var(--fdLink_Icon_Spacing, 0)}.fd-link [class*=sap-icon]:last-child,.fd-link[class*=sap-icon]:last-child{-webkit-margin-start:var(--fdLink_Icon_Spacing, 0);margin-inline-start:var(--fdLink_Icon_Spacing, 0)}.fd-link.is-hover [class*=sap-icon],.fd-link.is-hover[class*=sap-icon],.fd-link:hover [class*=sap-icon],.fd-link:hover[class*=sap-icon]{color:var(--sapLink_Hover_Color);-webkit-text-decoration:var(--fdLink_Text_Decoration_Hover);text-decoration:var(--fdLink_Text_Decoration_Hover)}.fd-link.is-focus,.fd-link:focus{z-index:5}.fd-link.is-focus [class*=sap-icon],.fd-link.is-focus[class*=sap-icon],.fd-link:focus [class*=sap-icon],.fd-link:focus[class*=sap-icon]{color:var(--fdLink_Text_Focus_Color);-webkit-text-decoration:var(--fdLink_Text_Decoration_Focus);text-decoration:var(--fdLink_Text_Decoration_Focus)}.fd-link.is-active [class*=sap-icon],.fd-link.is-active[class*=sap-icon],.fd-link:active [class*=sap-icon],.fd-link:active[class*=sap-icon]{color:var(--sapLink_Active_Color);-webkit-text-decoration:var(--fdLink_Text_Decoration_Active);text-decoration:var(--fdLink_Text_Decoration_Active)}.fd-link:visited:not(:focus) [class*=sap-icon],.fd-link:visited:not(:focus)[class*=sap-icon]{color:var(--sapLink_Visited_Color)}.fd-link__content--icon-line-height{line-height:var(--sapContent_LineHeight)}.fd-link__icon-container{display:inline-flex;justify-content:center;align-items:center}.fd-link__icon-container:first-child{margin-inline-end:var(--fdLink_Icon_Spacing, 0)}.fd-link__icon-container:last-child{margin-inline-start:var(--fdLink_Icon_Spacing, 0)}.fd-link--touch-target{--fdLink_Line_Height: 1.5rem}.fd-link__sr-only{position:absolute;clip:rect(0 0 0 0);height:1px;width:1px;border:0;margin-inline:-1px;margin-block:-1px;padding-inline:0;padding-block:0;overflow:hidden;white-space:nowrap}\n/*!\n * Fundamental Library Styles v0.40.1\n * Copyright (c) 2025 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */\n"] }]
140
140
  }], ctorParameters: () => [], propDecorators: { iconComponents: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => FD_ICON_COMPONENT), { ...{ descendants: false }, isSignal: true }] }], contentSpan: [{ type: i0.ViewChild, args: ['content', { isSignal: true }] }], emphasized: [{ type: i0.Input, args: [{ isSignal: true, alias: "emphasized", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], inverted: [{ type: i0.Input, args: [{ isSignal: true, alias: "inverted", required: false }] }], subtle: [{ type: i0.Input, args: [{ isSignal: true, alias: "subtle", required: false }] }], undecorated: [{ type: i0.Input, args: [{ isSignal: true, alias: "undecorated", required: false }] }], touchTarget: [{ type: i0.Input, args: [{ isSignal: true, alias: "touchTarget", required: false }] }] } });
141
141
 
142
142
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"fundamental-ngx-core-link.mjs","sources":["../../../../libs/core/link/constants.ts","../../../../libs/core/link/tokens.ts","../../../../libs/core/link/link.component.ts","../../../../libs/core/link/link.component.html","../../../../libs/core/link/link.module.ts","../../../../libs/core/link/fundamental-ngx-core-link.ts"],"sourcesContent":["export const LINK_CLASS_NAME = {\n linkContent: 'fd-link__content'\n} as const;\n","import { InjectionToken } from '@angular/core';\n\nexport const FD_LINK_COMPONENT = new InjectionToken('FdLinkComponent');\n","import { DomPortal, Portal, PortalModule } from '@angular/cdk/portal';\nimport {\n afterNextRender,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n contentChildren,\n effect,\n ElementRef,\n inject,\n InjectionToken,\n Injector,\n input,\n Optional,\n Self,\n signal,\n viewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { HasElementRef } from '@fundamental-ngx/cdk';\nimport { FD_ICON_COMPONENT, IconComponent } from '@fundamental-ngx/core/icon';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { FD_LINK_COMPONENT } from './tokens';\n\nconst LINK_ROUTER_TARGET = new InjectionToken<RouterLink | undefined>('linkRouterTarget');\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[fdLink], [fd-link]',\n templateUrl: './link.component.html',\n styleUrl: './link.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.aria-disabled]': 'disabled() ? true : false',\n class: 'fd-link',\n '[class.fd-link--emphasized]': 'emphasized()',\n '[class.is-disabled]': 'disabled()',\n '[class.fd-link--inverted]': 'inverted()',\n '[class.fd-link--subtle]': 'subtle()',\n '[class.fd-link--undecorated]': 'undecorated()',\n '[class.fd-link--touch-target]': 'touchTarget()'\n },\n providers: [\n {\n provide: FD_LINK_COMPONENT,\n useExisting: LinkComponent\n },\n {\n provide: LINK_ROUTER_TARGET,\n useFactory: (withHref?: RouterLink, routerLink?: RouterLink): RouterLink | undefined =>\n withHref || routerLink,\n deps: [\n [new Optional(), new Self(), RouterLink],\n [new Optional(), new Self(), RouterLink]\n ]\n }\n ],\n imports: [PortalModule, FdTranslatePipe]\n})\nexport class LinkComponent implements HasElementRef {\n /** @hidden */\n readonly iconComponents = contentChildren<IconComponent>(FD_ICON_COMPONENT, { descendants: false });\n\n /** @hidden */\n readonly contentSpan = viewChild<ElementRef<HTMLSpanElement>>('content');\n\n /** Whether user wants to use emphasized mode */\n readonly emphasized = input(false, { transform: booleanAttribute });\n\n /** Whether user wants to put disabled mode */\n readonly disabled = input(false, { transform: booleanAttribute });\n\n /** Whether user wants to use inverted mode */\n readonly inverted = input(false, { transform: booleanAttribute });\n\n /** Whether user wants to use subtle mode */\n readonly subtle = input(false, { transform: booleanAttribute });\n\n /** Whether user wants to have a link without underline decoration */\n readonly undecorated = input(false, { transform: booleanAttribute });\n\n /** Whether user wants to have a larger touch target */\n readonly touchTarget = input(false, { transform: booleanAttribute });\n\n /** @hidden */\n readonly elementRef = inject(ElementRef<HTMLElement>);\n\n /** @hidden */\n readonly routerLink = inject<RouterLink>(LINK_ROUTER_TARGET);\n\n /** @hidden */\n protected readonly prefixPortal = signal<Portal<any> | null>(null);\n\n /** @hidden */\n protected readonly postfixPortal = signal<Portal<any> | null>(null);\n\n /** @hidden */\n protected readonly prefixIconName = signal<string>('');\n\n /** @hidden */\n protected readonly postfixIconName = signal<string>('');\n\n /** @hidden */\n private readonly _injector = inject(Injector);\n\n constructor() {\n // Effect that runs when icons or content changes\n effect(() => {\n const icons = this.iconComponents();\n const contentEl = this.contentSpan()?.nativeElement;\n\n if (!contentEl || icons.length === 0) {\n afterNextRender(\n () => {\n this._clearPortals();\n },\n { injector: this._injector }\n );\n return;\n }\n\n afterNextRender(\n () => {\n this._updatePortals(icons, contentEl);\n },\n { injector: this._injector }\n );\n });\n }\n\n /** @hidden */\n private _clearPortals(): void {\n this._detachPortals();\n this.prefixPortal.set(null);\n this.postfixPortal.set(null);\n this.prefixIconName.set('');\n this.postfixIconName.set('');\n }\n\n /** @hidden */\n private _updatePortals(icons: readonly IconComponent[], contentEl: HTMLElement): void {\n // Determine prefix and postfix icons\n const firstIcon = icons[0];\n const lastIcon = icons[icons.length - 1];\n\n const prefix =\n firstIcon.elementRef.nativeElement === contentEl.childNodes[0] ? firstIcon.elementRef.nativeElement : null;\n const postfix =\n lastIcon.elementRef.nativeElement === contentEl.childNodes[contentEl.childNodes.length - 1]\n ? lastIcon.elementRef.nativeElement\n : null;\n\n // Update icon names\n this.prefixIconName.set(prefix ? firstIcon.glyph() : '');\n this.postfixIconName.set(postfix ? lastIcon.glyph() : '');\n\n // Update portals\n this._detachPortals();\n this.prefixPortal.set(prefix ? new DomPortal(prefix) : null);\n this.postfixPortal.set(postfix ? new DomPortal(postfix) : null);\n }\n\n /** @hidden */\n private _detachPortals(): void {\n const prefix = this.prefixPortal();\n const postfix = this.postfixPortal();\n\n if (prefix?.isAttached) {\n prefix.detach();\n }\n if (postfix?.isAttached) {\n postfix.detach();\n }\n }\n}\n","@if (prefixPortal()) {\n <span class=\"fd-link__icon-container\" role=\"presentation\" aria-hidden=\"true\">\n <ng-container *cdkPortalOutlet=\"prefixPortal()\"></ng-container>\n </span>\n}\n<span class=\"fd-link__content\" #content [class.fd-link__content--icon-line-height]=\"postfixPortal() || prefixPortal()\">\n <ng-content></ng-content>\n</span>\n@if (postfixPortal()) {\n <span class=\"fd-link__icon-container\" role=\"presentation\" aria-hidden=\"true\">\n <ng-container *cdkPortalOutlet=\"postfixPortal()\"></ng-container>\n </span>\n}\n@if (emphasized()) {\n <span class=\"fd-link__sr-only\">{{ 'coreLink.emphasized' | fdTranslate }}</span>\n}\n@if (subtle()) {\n <span class=\"fd-link__sr-only\">{{ 'coreLink.subtle' | fdTranslate }}</span>\n}\n","import { NgModule } from '@angular/core';\n\nimport { LinkComponent } from './link.component';\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n imports: [LinkComponent],\n exports: [LinkComponent]\n})\nexport class LinkModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fundamental-ngx-core-link.mjs","sources":["../../../../libs/core/link/constants.ts","../../../../libs/core/link/tokens.ts","../../../../libs/core/link/link.component.ts","../../../../libs/core/link/link.component.html","../../../../libs/core/link/link.module.ts","../../../../libs/core/link/fundamental-ngx-core-link.ts"],"sourcesContent":["export const LINK_CLASS_NAME = {\n linkContent: 'fd-link__content'\n} as const;\n","import { InjectionToken } from '@angular/core';\n\nexport const FD_LINK_COMPONENT = new InjectionToken('FdLinkComponent');\n","import { DomPortal, Portal, PortalModule } from '@angular/cdk/portal';\nimport {\n afterNextRender,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n contentChildren,\n effect,\n ElementRef,\n inject,\n InjectionToken,\n Injector,\n input,\n Optional,\n Self,\n signal,\n viewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { HasElementRef } from '@fundamental-ngx/cdk';\nimport { FD_ICON_COMPONENT, IconComponent } from '@fundamental-ngx/core/icon';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { FD_LINK_COMPONENT } from './tokens';\n\nconst LINK_ROUTER_TARGET = new InjectionToken<RouterLink | undefined>('linkRouterTarget');\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[fdLink], [fd-link]',\n templateUrl: './link.component.html',\n styleUrl: './link.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.aria-disabled]': 'disabled() ? true : false',\n class: 'fd-link',\n '[class.fd-link--emphasized]': 'emphasized()',\n '[class.is-disabled]': 'disabled()',\n '[class.fd-link--inverted]': 'inverted()',\n '[class.fd-link--subtle]': 'subtle()',\n '[class.fd-link--undecorated]': 'undecorated()',\n '[class.fd-link--touch-target]': 'touchTarget()'\n },\n providers: [\n {\n provide: FD_LINK_COMPONENT,\n useExisting: LinkComponent\n },\n {\n provide: LINK_ROUTER_TARGET,\n useFactory: (withHref?: RouterLink, routerLink?: RouterLink): RouterLink | undefined =>\n withHref || routerLink,\n deps: [\n [new Optional(), new Self(), RouterLink],\n [new Optional(), new Self(), RouterLink]\n ]\n }\n ],\n imports: [PortalModule, FdTranslatePipe]\n})\nexport class LinkComponent implements HasElementRef {\n /** @hidden */\n readonly iconComponents = contentChildren<IconComponent>(FD_ICON_COMPONENT, { descendants: false });\n\n /** @hidden */\n readonly contentSpan = viewChild<ElementRef<HTMLSpanElement>>('content');\n\n /** Whether user wants to use emphasized mode */\n readonly emphasized = input(false, { transform: booleanAttribute });\n\n /** Whether user wants to put disabled mode */\n readonly disabled = input(false, { transform: booleanAttribute });\n\n /** Whether user wants to use inverted mode */\n readonly inverted = input(false, { transform: booleanAttribute });\n\n /** Whether user wants to use subtle mode */\n readonly subtle = input(false, { transform: booleanAttribute });\n\n /** Whether user wants to have a link without underline decoration */\n readonly undecorated = input(false, { transform: booleanAttribute });\n\n /** Whether user wants to have a larger touch target */\n readonly touchTarget = input(false, { transform: booleanAttribute });\n\n /** @hidden */\n readonly elementRef = inject(ElementRef<HTMLElement>);\n\n /** @hidden */\n readonly routerLink = inject<RouterLink>(LINK_ROUTER_TARGET);\n\n /** @hidden */\n protected readonly prefixPortal = signal<Portal<any> | null>(null);\n\n /** @hidden */\n protected readonly postfixPortal = signal<Portal<any> | null>(null);\n\n /** @hidden */\n protected readonly prefixIconName = signal<string>('');\n\n /** @hidden */\n protected readonly postfixIconName = signal<string>('');\n\n /** @hidden */\n private readonly _injector = inject(Injector);\n\n constructor() {\n // Effect that runs when icons or content changes\n effect(() => {\n const icons = this.iconComponents();\n const contentEl = this.contentSpan()?.nativeElement;\n\n if (!contentEl || icons.length === 0) {\n afterNextRender(\n () => {\n this._clearPortals();\n },\n { injector: this._injector }\n );\n return;\n }\n\n afterNextRender(\n () => {\n this._updatePortals(icons, contentEl);\n },\n { injector: this._injector }\n );\n });\n }\n\n /** @hidden */\n private _clearPortals(): void {\n this._detachPortals();\n this.prefixPortal.set(null);\n this.postfixPortal.set(null);\n this.prefixIconName.set('');\n this.postfixIconName.set('');\n }\n\n /** @hidden */\n private _updatePortals(icons: readonly IconComponent[], contentEl: HTMLElement): void {\n // Determine prefix and postfix icons\n const firstIcon = icons[0];\n const lastIcon = icons[icons.length - 1];\n\n const prefix =\n firstIcon.elementRef.nativeElement === contentEl.childNodes[0] ? firstIcon.elementRef.nativeElement : null;\n const postfix =\n lastIcon.elementRef.nativeElement === contentEl.childNodes[contentEl.childNodes.length - 1]\n ? lastIcon.elementRef.nativeElement\n : null;\n\n // Update icon names\n this.prefixIconName.set(prefix ? firstIcon.glyph() : '');\n this.postfixIconName.set(postfix ? lastIcon.glyph() : '');\n\n // Update portals\n this._detachPortals();\n this.prefixPortal.set(prefix ? new DomPortal(prefix) : null);\n this.postfixPortal.set(postfix ? new DomPortal(postfix) : null);\n }\n\n /** @hidden */\n private _detachPortals(): void {\n const prefix = this.prefixPortal();\n const postfix = this.postfixPortal();\n\n if (prefix?.isAttached) {\n prefix.detach();\n }\n if (postfix?.isAttached) {\n postfix.detach();\n }\n }\n}\n","@if (prefixPortal()) {\n <span class=\"fd-link__icon-container\" role=\"presentation\" aria-hidden=\"true\">\n <ng-container *cdkPortalOutlet=\"prefixPortal()\"></ng-container>\n </span>\n}\n<span class=\"fd-link__content\" #content [class.fd-link__content--icon-line-height]=\"postfixPortal() || prefixPortal()\">\n <ng-content></ng-content>\n</span>\n@if (postfixPortal()) {\n <span class=\"fd-link__icon-container\" role=\"presentation\" aria-hidden=\"true\">\n <ng-container *cdkPortalOutlet=\"postfixPortal()\"></ng-container>\n </span>\n}\n@if (emphasized()) {\n <span class=\"fd-link__sr-only\">{{ ('coreLink.emphasized' | fdTranslate)() }}</span>\n}\n@if (subtle()) {\n <span class=\"fd-link__sr-only\">{{ ('coreLink.subtle' | fdTranslate)() }}</span>\n}\n","import { NgModule } from '@angular/core';\n\nimport { LinkComponent } from './link.component';\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n imports: [LinkComponent],\n exports: [LinkComponent]\n})\nexport class LinkModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;AAAO,MAAM,eAAe,GAAG;AAC3B,IAAA,WAAW,EAAE;;;MCCJ,iBAAiB,GAAG,IAAI,cAAc,CAAC,iBAAiB;;ACuBrE,MAAM,kBAAkB,GAAG,IAAI,cAAc,CAAyB,kBAAkB,CAAC;MAoC5E,aAAa,CAAA;AA8CtB,IAAA,WAAA,GAAA;;QA5CS,IAAA,CAAA,cAAc,GAAG,eAAe,CAAgB,iBAAiB,2DAAI,WAAW,EAAE,KAAK,EAAA,CAAG;;AAG1F,QAAA,IAAA,CAAA,WAAW,GAAG,SAAS,CAA8B,SAAS,uDAAC;;QAG/D,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,KAAK,uDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;;QAG1D,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,qDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;;QAGxD,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,qDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;;QAGxD,IAAA,CAAA,MAAM,GAAG,KAAK,CAAC,KAAK,mDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;;QAGtD,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,KAAK,wDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;;QAG3D,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,KAAK,wDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;;AAG3D,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,EAAC,UAAuB,EAAC;;AAG5C,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAa,kBAAkB,CAAC;;AAGzC,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAqB,IAAI,wDAAC;;AAG/C,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAqB,IAAI,yDAAC;;AAGhD,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAS,EAAE,0DAAC;;AAGnC,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAS,EAAE,2DAAC;;AAGtC,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;;QAIzC,MAAM,CAAC,MAAK;AACR,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE;YACnC,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE,aAAa;YAEnD,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;gBAClC,eAAe,CACX,MAAK;oBACD,IAAI,CAAC,aAAa,EAAE;gBACxB,CAAC,EACD,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,CAC/B;gBACD;YACJ;YAEA,eAAe,CACX,MAAK;AACD,gBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,CAAC;YACzC,CAAC,EACD,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,CAC/B;AACL,QAAA,CAAC,CAAC;IACN;;IAGQ,aAAa,GAAA;QACjB,IAAI,CAAC,cAAc,EAAE;AACrB,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;AAC3B,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;AAC5B,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;AAC3B,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;IAChC;;IAGQ,cAAc,CAAC,KAA+B,EAAE,SAAsB,EAAA;;AAE1E,QAAA,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC;QAC1B,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QAExC,MAAM,MAAM,GACR,SAAS,CAAC,UAAU,CAAC,aAAa,KAAK,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,UAAU,CAAC,aAAa,GAAG,IAAI;AAC9G,QAAA,MAAM,OAAO,GACT,QAAQ,CAAC,UAAU,CAAC,aAAa,KAAK,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;AACtF,cAAE,QAAQ,CAAC,UAAU,CAAC;cACpB,IAAI;;AAGd,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,GAAG,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC;AACxD,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,GAAG,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC;;QAGzD,IAAI,CAAC,cAAc,EAAE;AACrB,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,SAAS,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;AAC5D,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,SAAS,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACnE;;IAGQ,cAAc,GAAA;AAClB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE;AAClC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE;AAEpC,QAAA,IAAI,MAAM,EAAE,UAAU,EAAE;YACpB,MAAM,CAAC,MAAM,EAAE;QACnB;AACA,QAAA,IAAI,OAAO,EAAE,UAAU,EAAE;YACrB,OAAO,CAAC,MAAM,EAAE;QACpB;IACJ;8GAlHS,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,oBAAA,EAAA,2BAAA,EAAA,2BAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,4BAAA,EAAA,eAAA,EAAA,6BAAA,EAAA,eAAA,EAAA,EAAA,cAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAjBX;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE;AAChB,aAAA;AACD,YAAA;AACI,gBAAA,OAAO,EAAE,kBAAkB;gBAC3B,UAAU,EAAE,CAAC,QAAqB,EAAE,UAAuB,KACvD,QAAQ,IAAI,UAAU;AAC1B,gBAAA,IAAI,EAAE;oBACF,CAAC,IAAI,QAAQ,EAAE,EAAE,IAAI,IAAI,EAAE,EAAE,UAAU,CAAC;oBACxC,CAAC,IAAI,QAAQ,EAAE,EAAE,IAAI,IAAI,EAAE,EAAE,UAAU;AAC1C;AACJ;AACJ,SAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,SAAA,EAKwD,iBAAiB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC/D9E,iyBAmBA,EAAA,MAAA,EAAA,CAAA,0pNAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDwCc,YAAY,6LAAE,eAAe,EAAA,IAAA,EAAA,aAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAE9B,aAAa,EAAA,UAAA,EAAA,CAAA;kBAlCzB,SAAS;+BAEI,qBAAqB,EAAA,aAAA,EAGhB,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACF,wBAAA,sBAAsB,EAAE,2BAA2B;AACnD,wBAAA,KAAK,EAAE,SAAS;AAChB,wBAAA,6BAA6B,EAAE,cAAc;AAC7C,wBAAA,qBAAqB,EAAE,YAAY;AACnC,wBAAA,2BAA2B,EAAE,YAAY;AACzC,wBAAA,yBAAyB,EAAE,UAAU;AACrC,wBAAA,8BAA8B,EAAE,eAAe;AAC/C,wBAAA,+BAA+B,EAAE;qBACpC,EAAA,SAAA,EACU;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAA;AACd,yBAAA;AACD,wBAAA;AACI,4BAAA,OAAO,EAAE,kBAAkB;4BAC3B,UAAU,EAAE,CAAC,QAAqB,EAAE,UAAuB,KACvD,QAAQ,IAAI,UAAU;AAC1B,4BAAA,IAAI,EAAE;gCACF,CAAC,IAAI,QAAQ,EAAE,EAAE,IAAI,IAAI,EAAE,EAAE,UAAU,CAAC;gCACxC,CAAC,IAAI,QAAQ,EAAE,EAAE,IAAI,IAAI,EAAE,EAAE,UAAU;AAC1C;AACJ;AACJ,qBAAA,EAAA,OAAA,EACQ,CAAC,YAAY,EAAE,eAAe,CAAC,EAAA,QAAA,EAAA,iyBAAA,EAAA,MAAA,EAAA,CAAA,0pNAAA,CAAA,EAAA;AAIiB,SAAA,CAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAAA,iBAAiB,QAAE,EAAE,WAAW,EAAE,KAAK,EAAE,mEAGpC,SAAS,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,QAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AE9D3E;;;AAGG;MAKU,UAAU,CAAA;8GAAV,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAV,UAAU,EAAA,OAAA,EAAA,CAHT,aAAa,CAAA,EAAA,OAAA,EAAA,CACb,aAAa,CAAA,EAAA,CAAA,CAAA;AAEd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAU,YAHT,aAAa,CAAA,EAAA,CAAA,CAAA;;2FAGd,UAAU,EAAA,UAAA,EAAA,CAAA;kBAJtB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACN,OAAO,EAAE,CAAC,aAAa,CAAC;oBACxB,OAAO,EAAE,CAAC,aAAa;AAC1B,iBAAA;;;ACXD;;AAEG;;;;"}
@@ -252,6 +252,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImpor
252
252
  args: ['attr.aria-hidden']
253
253
  }], buildComponentCssClass: [] } });
254
254
 
255
+ class ListInfoLabelDirective {
256
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: ListInfoLabelDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
257
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.0", type: ListInfoLabelDirective, isStandalone: true, selector: "[fd-list-info-label], [fdListInfoLabel]", host: { classAttribute: "fd-list__info-label" }, ngImport: i0 }); }
258
+ }
259
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: ListInfoLabelDirective, decorators: [{
260
+ type: Directive,
261
+ args: [{
262
+ selector: '[fd-list-info-label], [fdListInfoLabel]',
263
+ host: {
264
+ class: 'fd-list__info-label'
265
+ }
266
+ }]
267
+ }] });
268
+
255
269
  const FD_LIST_MESSAGE_DIRECTIVE = new InjectionToken('FdListMessageDirective');
256
270
  const FD_LIST_LINK_DIRECTIVE = new InjectionToken('FdListLinkDirective');
257
271
  const FD_LIST_COMPONENT = new InjectionToken('ListComponent');
@@ -449,6 +463,8 @@ class ListTitleDirective {
449
463
  this.wrap = input(false, { ...(ngDevMode ? { debugName: "wrap" } : {}), transform: booleanAttribute });
450
464
  /** Whether the text should truncate with ellipsis. */
451
465
  this.truncate = input(false, { ...(ngDevMode ? { debugName: "truncate" } : {}), transform: booleanAttribute });
466
+ /** Whether this title is used for scope in the shell search results. */
467
+ this.scope = input(false, { ...(ngDevMode ? { debugName: "scope" } : {}), transform: booleanAttribute });
452
468
  /** @hidden */
453
469
  this.elRef = inject(ElementRef);
454
470
  }
@@ -460,7 +476,7 @@ class ListTitleDirective {
460
476
  }
461
477
  }
462
478
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: ListTitleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
463
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.0", type: ListTitleDirective, isStandalone: true, selector: "[fd-list-title], [fdListTitle]", inputs: { wrap: { classPropertyName: "wrap", publicName: "wrap", isSignal: true, isRequired: false, transformFunction: null }, truncate: { classPropertyName: "truncate", publicName: "truncate", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.fd-list__title--truncate": "truncate()", "class.fd-list__title--wrap": "wrap()" }, classAttribute: "fd-list__title" }, ngImport: i0 }); }
479
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.0", type: ListTitleDirective, isStandalone: true, selector: "[fd-list-title], [fdListTitle]", inputs: { wrap: { classPropertyName: "wrap", publicName: "wrap", isSignal: true, isRequired: false, transformFunction: null }, truncate: { classPropertyName: "truncate", publicName: "truncate", isSignal: true, isRequired: false, transformFunction: null }, scope: { classPropertyName: "scope", publicName: "scope", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.fd-list__title--truncate": "truncate()", "class.fd-list__title--scope": "scope()", "class.fd-list__title--wrap": "wrap()" }, classAttribute: "fd-list__title" }, ngImport: i0 }); }
464
480
  }
465
481
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: ListTitleDirective, decorators: [{
466
482
  type: Directive,
@@ -469,10 +485,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImpor
469
485
  host: {
470
486
  class: 'fd-list__title',
471
487
  '[class.fd-list__title--truncate]': 'truncate()',
488
+ '[class.fd-list__title--scope]': 'scope()',
472
489
  '[class.fd-list__title--wrap]': 'wrap()'
473
490
  }
474
491
  }]
475
- }], propDecorators: { wrap: [{ type: i0.Input, args: [{ isSignal: true, alias: "wrap", required: false }] }], truncate: [{ type: i0.Input, args: [{ isSignal: true, alias: "truncate", required: false }] }] } });
492
+ }], propDecorators: { wrap: [{ type: i0.Input, args: [{ isSignal: true, alias: "wrap", required: false }] }], truncate: [{ type: i0.Input, args: [{ isSignal: true, alias: "truncate", required: false }] }], scope: [{ type: i0.Input, args: [{ isSignal: true, alias: "scope", required: false }] }] } });
476
493
 
477
494
  class ListSublineDirective {
478
495
  constructor() {
@@ -621,6 +638,8 @@ class ListItemComponent extends ListFocusItem {
621
638
  });
622
639
  /** Template ref for Settings list item */
623
640
  this.settingsListTpl = input(...(ngDevMode ? [undefined, { debugName: "settingsListTpl" }] : []));
641
+ /** @hidden Whether this is a suggestion type list item. */
642
+ this.suggestion = input(false, { ...(ngDevMode ? { debugName: "suggestion" } : {}), transform: booleanAttribute });
624
643
  /** @hidden */
625
644
  this._role = 'listitem'; // default for li elements
626
645
  /** @hidden An RxJS Subject that will kill the data stream upon component’s destruction (for unsubscribing) */
@@ -718,7 +737,7 @@ class ListItemComponent extends ListFocusItem {
718
737
  event.preventDefault();
719
738
  }
720
739
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: ListItemComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
721
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.0", type: ListItemComponent, isStandalone: true, selector: "[fdListItem] ,[fd-list-item]", inputs: { selected: { classPropertyName: "selected", publicName: "selected", isSignal: false, isRequired: false, transformFunction: null }, noData: { classPropertyName: "noData", publicName: "noData", isSignal: false, isRequired: false, transformFunction: null }, action: { classPropertyName: "action", publicName: "action", isSignal: false, isRequired: false, transformFunction: null }, interactive: { classPropertyName: "interactive", publicName: "interactive", isSignal: false, isRequired: false, transformFunction: null }, growing: { classPropertyName: "growing", publicName: "growing", isSignal: false, isRequired: false, transformFunction: null }, counter: { classPropertyName: "counter", publicName: "counter", isSignal: false, isRequired: false, transformFunction: null }, active: { classPropertyName: "active", publicName: "active", isSignal: false, isRequired: false, transformFunction: null }, unread: { classPropertyName: "unread", publicName: "unread", isSignal: false, isRequired: false, transformFunction: null }, byline: { classPropertyName: "byline", publicName: "byline", isSignal: false, isRequired: false, transformFunction: null }, ariaRole: { classPropertyName: "ariaRole", publicName: "ariaRole", isSignal: false, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: false, isRequired: false, transformFunction: null }, preventClick: { classPropertyName: "preventClick", publicName: "preventClick", isSignal: false, isRequired: false, transformFunction: null }, settingsListTpl: { classPropertyName: "settingsListTpl", publicName: "settingsListTpl", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { keyDown: "keyDown" }, host: { listeners: { "keydown": "keydownHandler($event)", "keyup": "keyupHandler($event)", "click": "onClick($event)", "focus": "_onFocus()" }, properties: { "attr.tabindex": "_normalizedTabIndex$()", "attr.id": "id", "class.is-selected": "this.selected", "attr.aria-selected": "this.selected", "class.fd-list__item--no-data": "this.noData", "class.fd-list__item--action": "this.action", "class.fd-list__item--interractive": "this.interactive", "class.fd-list__item--growing": "this.growing", "class.fd-list__item--unread": "this.unread", "class.fd-list__item--byline": "this.byline", "class.fd-list__item--link": "this.link", "attr.role": "this.roleAttr" }, classAttribute: "fd-list__item" }, providers: [
740
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.0", type: ListItemComponent, isStandalone: true, selector: "[fdListItem] ,[fd-list-item]", inputs: { selected: { classPropertyName: "selected", publicName: "selected", isSignal: false, isRequired: false, transformFunction: null }, noData: { classPropertyName: "noData", publicName: "noData", isSignal: false, isRequired: false, transformFunction: null }, action: { classPropertyName: "action", publicName: "action", isSignal: false, isRequired: false, transformFunction: null }, interactive: { classPropertyName: "interactive", publicName: "interactive", isSignal: false, isRequired: false, transformFunction: null }, growing: { classPropertyName: "growing", publicName: "growing", isSignal: false, isRequired: false, transformFunction: null }, counter: { classPropertyName: "counter", publicName: "counter", isSignal: false, isRequired: false, transformFunction: null }, counterRole: { classPropertyName: "counterRole", publicName: "counterRole", isSignal: false, isRequired: false, transformFunction: null }, counterAriaLabel: { classPropertyName: "counterAriaLabel", publicName: "counterAriaLabel", isSignal: false, isRequired: false, transformFunction: null }, active: { classPropertyName: "active", publicName: "active", isSignal: false, isRequired: false, transformFunction: null }, unread: { classPropertyName: "unread", publicName: "unread", isSignal: false, isRequired: false, transformFunction: null }, byline: { classPropertyName: "byline", publicName: "byline", isSignal: false, isRequired: false, transformFunction: null }, ariaRole: { classPropertyName: "ariaRole", publicName: "ariaRole", isSignal: false, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: false, isRequired: false, transformFunction: null }, preventClick: { classPropertyName: "preventClick", publicName: "preventClick", isSignal: false, isRequired: false, transformFunction: null }, settingsListTpl: { classPropertyName: "settingsListTpl", publicName: "settingsListTpl", isSignal: true, isRequired: false, transformFunction: null }, suggestion: { classPropertyName: "suggestion", publicName: "suggestion", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { keyDown: "keyDown" }, host: { listeners: { "keydown": "keydownHandler($event)", "keyup": "keyupHandler($event)", "click": "onClick($event)", "focus": "_onFocus()" }, properties: { "attr.tabindex": "_normalizedTabIndex$()", "attr.id": "id", "class.fd-list__item--suggestion": "suggestion()", "class.is-selected": "this.selected", "attr.aria-selected": "this.selected", "class.fd-list__item--no-data": "this.noData", "class.fd-list__item--action": "this.action", "class.fd-list__item--interractive": "this.interactive", "class.fd-list__item--growing": "this.growing", "class.fd-list__item--unread": "this.unread", "class.fd-list__item--byline": "this.byline", "class.fd-list__item--link": "this.link", "attr.role": "this.roleAttr" }, classAttribute: "fd-list__item" }, providers: [
722
741
  {
723
742
  provide: LIST_ITEM_COMPONENT,
724
743
  useExisting: forwardRef(() => ListItemComponent)
@@ -727,14 +746,15 @@ class ListItemComponent extends ListFocusItem {
727
746
  provide: ListFocusItem,
728
747
  useExisting: forwardRef(() => ListItemComponent)
729
748
  }
730
- ], queries: [{ propertyName: "radio", first: true, predicate: FD_RADIO_BUTTON_COMPONENT, descendants: true }, { propertyName: "checkbox", first: true, predicate: FD_CHECKBOX_COMPONENT, descendants: true }, { propertyName: "linkDirectives", predicate: FD_LIST_LINK_DIRECTIVE }, { propertyName: "buttons", predicate: FD_BUTTON_COMPONENT, descendants: true }], exportAs: ["fdListItem"], usesInheritance: true, ngImport: i0, template: "@if (checkbox || radio) {\n <div fd-form-item class=\"fd-list__form-item\">\n <ng-content select=\"fd-checkbox\"></ng-content>\n <ng-content select=\"fd-radio-button\"></ng-content>\n </div>\n}\n@if (unread && (!_list || _list.byline)) {\n <fd-icon class=\"fd-list__notification\" glyph=\"circle-task-2\"></fd-icon>\n}\n<ng-content></ng-content>\n@if (counter || counter === 0) {\n <span class=\"fd-list__item-counter\">\n {{ counter | number: '1.0-2' }}\n </span>\n}\n@if (active) {\n <span class=\"fd-list__active-indicator sap-icon--sys-enter-2\"></span>\n}\n", dependencies: [{ kind: "component", type: FormItemComponent, selector: "[fd-form-item]", inputs: ["isInline", "horizontal"] }, { kind: "component", type: IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "color", "background", "class", "ariaLabel", "ariaHidden"], outputs: ["ariaHiddenChange"] }, { kind: "pipe", type: DecimalPipe, name: "number" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
749
+ ], queries: [{ propertyName: "radio", first: true, predicate: FD_RADIO_BUTTON_COMPONENT, descendants: true }, { propertyName: "checkbox", first: true, predicate: FD_CHECKBOX_COMPONENT, descendants: true }, { propertyName: "listTitle", first: true, predicate: ListTitleDirective, descendants: true }, { propertyName: "linkDirectives", predicate: FD_LIST_LINK_DIRECTIVE }, { propertyName: "buttons", predicate: FD_BUTTON_COMPONENT, descendants: true }], exportAs: ["fdListItem"], usesInheritance: true, ngImport: i0, template: "@if (checkbox || radio) {\n <div fd-form-item class=\"fd-list__form-item\">\n <ng-content select=\"fd-checkbox\"></ng-content>\n <ng-content select=\"fd-radio-button\"></ng-content>\n </div>\n}\n@if (unread && (!_list || _list.byline)) {\n <fd-icon class=\"fd-list__notification\" glyph=\"circle-task-2\"></fd-icon>\n}\n<ng-content></ng-content>\n@if (counter || counter === 0) {\n <span class=\"fd-list__item-counter\" [attr.role]=\"counterRole\" [attr.aria-label]=\"counterAriaLabel\">\n {{ counter | number: '1.0-2' }}\n </span>\n}\n@if (active) {\n <span class=\"fd-list__active-indicator sap-icon--sys-enter-2\"></span>\n}\n", dependencies: [{ kind: "component", type: FormItemComponent, selector: "[fd-form-item]", inputs: ["isInline", "horizontal"] }, { kind: "component", type: IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "color", "background", "class", "ariaLabel", "ariaHidden"], outputs: ["ariaHiddenChange"] }, { kind: "pipe", type: DecimalPipe, name: "number" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
731
750
  }
732
751
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: ListItemComponent, decorators: [{
733
752
  type: Component,
734
753
  args: [{ selector: '[fdListItem] ,[fd-list-item]', host: {
735
754
  class: 'fd-list__item',
736
755
  '[attr.tabindex]': '_normalizedTabIndex$()',
737
- '[attr.id]': 'id'
756
+ '[attr.id]': 'id',
757
+ '[class.fd-list__item--suggestion]': 'suggestion()'
738
758
  }, providers: [
739
759
  {
740
760
  provide: LIST_ITEM_COMPONENT,
@@ -744,7 +764,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImpor
744
764
  provide: ListFocusItem,
745
765
  useExisting: forwardRef(() => ListItemComponent)
746
766
  }
747
- ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [FormItemComponent, DecimalPipe, IconComponent], exportAs: 'fdListItem', template: "@if (checkbox || radio) {\n <div fd-form-item class=\"fd-list__form-item\">\n <ng-content select=\"fd-checkbox\"></ng-content>\n <ng-content select=\"fd-radio-button\"></ng-content>\n </div>\n}\n@if (unread && (!_list || _list.byline)) {\n <fd-icon class=\"fd-list__notification\" glyph=\"circle-task-2\"></fd-icon>\n}\n<ng-content></ng-content>\n@if (counter || counter === 0) {\n <span class=\"fd-list__item-counter\">\n {{ counter | number: '1.0-2' }}\n </span>\n}\n@if (active) {\n <span class=\"fd-list__active-indicator sap-icon--sys-enter-2\"></span>\n}\n" }]
767
+ ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [FormItemComponent, DecimalPipe, IconComponent], exportAs: 'fdListItem', template: "@if (checkbox || radio) {\n <div fd-form-item class=\"fd-list__form-item\">\n <ng-content select=\"fd-checkbox\"></ng-content>\n <ng-content select=\"fd-radio-button\"></ng-content>\n </div>\n}\n@if (unread && (!_list || _list.byline)) {\n <fd-icon class=\"fd-list__notification\" glyph=\"circle-task-2\"></fd-icon>\n}\n<ng-content></ng-content>\n@if (counter || counter === 0) {\n <span class=\"fd-list__item-counter\" [attr.role]=\"counterRole\" [attr.aria-label]=\"counterAriaLabel\">\n {{ counter | number: '1.0-2' }}\n </span>\n}\n@if (active) {\n <span class=\"fd-list__active-indicator sap-icon--sys-enter-2\"></span>\n}\n" }]
748
768
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { selected: [{
749
769
  type: Input
750
770
  }, {
@@ -775,6 +795,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImpor
775
795
  args: ['class.fd-list__item--growing']
776
796
  }], counter: [{
777
797
  type: Input
798
+ }], counterRole: [{
799
+ type: Input
800
+ }], counterAriaLabel: [{
801
+ type: Input
778
802
  }], active: [{
779
803
  type: Input
780
804
  }], unread: [{
@@ -802,13 +826,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImpor
802
826
  }], checkbox: [{
803
827
  type: ContentChild,
804
828
  args: [FD_CHECKBOX_COMPONENT]
829
+ }], listTitle: [{
830
+ type: ContentChild,
831
+ args: [ListTitleDirective]
805
832
  }], linkDirectives: [{
806
833
  type: ContentChildren,
807
834
  args: [FD_LIST_LINK_DIRECTIVE]
808
835
  }], buttons: [{
809
836
  type: ContentChildren,
810
837
  args: [FD_BUTTON_COMPONENT, { descendants: true }]
811
- }], keyDown: [{ type: i0.Output, args: ["keyDown"] }], settingsListTpl: [{ type: i0.Input, args: [{ isSignal: true, alias: "settingsListTpl", required: false }] }], roleAttr: [{
838
+ }], keyDown: [{ type: i0.Output, args: ["keyDown"] }], settingsListTpl: [{ type: i0.Input, args: [{ isSignal: true, alias: "settingsListTpl", required: false }] }], suggestion: [{ type: i0.Input, args: [{ isSignal: true, alias: "suggestion", required: false }] }], roleAttr: [{
812
839
  type: HostBinding,
813
840
  args: ['attr.role']
814
841
  }], keydownHandler: [{
@@ -1130,6 +1157,10 @@ class ListComponent {
1130
1157
  this.settingsList = input(false, { ...(ngDevMode ? { debugName: "settingsList" } : {}), transform: booleanAttribute });
1131
1158
  /** Whether the list is used inside Settings Dialog Footer */
1132
1159
  this.settingsListFooter = input(false, { ...(ngDevMode ? { debugName: "settingsListFooter" } : {}), transform: booleanAttribute });
1160
+ /** @hidden Whether the list is the shell search results list. */
1161
+ this.searchResultsList = input(false, ...(ngDevMode ? [{ debugName: "searchResultsList" }] : []));
1162
+ /** @hidden */
1163
+ this.elementRef = inject(ElementRef);
1133
1164
  /**
1134
1165
  * @hidden
1135
1166
  * Default role for lists
@@ -1217,7 +1248,7 @@ class ListComponent {
1217
1248
  /** @hidden */
1218
1249
  _recheckLinks() {
1219
1250
  const items = this.items.filter((item) => item.link);
1220
- this.hasNavigation = items.length > 0;
1251
+ this.hasNavigation = items.length > 0 || this.searchResultsList();
1221
1252
  if (this.selection) {
1222
1253
  this._defaultRole = 'listbox';
1223
1254
  }
@@ -1229,7 +1260,7 @@ class ListComponent {
1229
1260
  .subscribe((direction) => this.focusEscapeList.emit(direction));
1230
1261
  }
1231
1262
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: ListComponent, deps: [{ token: i1$1.KeyboardSupportService }, { token: i2.ContentDensityObserver }], target: i0.ɵɵFactoryTarget.Component }); }
1232
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.1.0", type: ListComponent, isStandalone: true, selector: "[fd-list], [fdList]", inputs: { dropdownMode: { classPropertyName: "dropdownMode", publicName: "dropdownMode", isSignal: false, isRequired: false, transformFunction: null }, multiInputMode: { classPropertyName: "multiInputMode", publicName: "multiInputMode", isSignal: false, isRequired: false, transformFunction: null }, mobileMode: { classPropertyName: "mobileMode", publicName: "mobileMode", isSignal: false, isRequired: false, transformFunction: null }, hasMessage: { classPropertyName: "hasMessage", publicName: "hasMessage", isSignal: false, isRequired: false, transformFunction: null }, noBorder: { classPropertyName: "noBorder", publicName: "noBorder", isSignal: false, isRequired: false, transformFunction: null }, navigationIndicator: { classPropertyName: "navigationIndicator", publicName: "navigationIndicator", isSignal: false, isRequired: false, transformFunction: null }, selection: { classPropertyName: "selection", publicName: "selection", isSignal: false, isRequired: false, transformFunction: null }, keyboardSupport: { classPropertyName: "keyboardSupport", publicName: "keyboardSupport", isSignal: false, isRequired: false, transformFunction: null }, byline: { classPropertyName: "byline", publicName: "byline", isSignal: false, isRequired: false, transformFunction: null }, subline: { classPropertyName: "subline", publicName: "subline", isSignal: false, isRequired: false, transformFunction: null }, theme: { classPropertyName: "theme", publicName: "theme", isSignal: false, isRequired: false, transformFunction: null }, unreadIndicator: { classPropertyName: "unreadIndicator", publicName: "unreadIndicator", isSignal: false, isRequired: false, transformFunction: null }, role: { classPropertyName: "role", publicName: "role", isSignal: false, isRequired: false, transformFunction: null }, settingsList: { classPropertyName: "settingsList", publicName: "settingsList", isSignal: true, isRequired: false, transformFunction: null }, settingsListFooter: { classPropertyName: "settingsListFooter", publicName: "settingsListFooter", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { focusEscapeList: "focusEscapeList" }, host: { listeners: { "keydown": "keyDownHandler($event)" }, properties: { "class.fd-settings__list": "settingsList() || settingsListFooter()", "class.fd-settings__list--footer": "settingsListFooter()", "class.fd-list--dropdown": "this.dropdownMode", "class.fd-list--multi-input": "this.multiInputMode", "class.fd-list--mobile": "this.mobileMode", "class.fd-list--has-message": "this.hasMessage", "class.fd-list--no-border": "this.noBorder", "class.fd-list--navigation-indication": "this.navigationIndicator", "class.fd-list--selection": "this.selection", "class.fd-list--byline": "this.byline", "class.fd-list--subline": "this.subline", "class.fd-list--theme": "this.theme", "class.fd-list--unread-indicator": "this.unreadIndicator", "class.fd-list--navigation": "this.hasNavigation", "attr.role": "this._ariaRole" }, classAttribute: "fd-list" }, providers: [
1263
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.1.0", type: ListComponent, isStandalone: true, selector: "[fd-list], [fdList]", inputs: { dropdownMode: { classPropertyName: "dropdownMode", publicName: "dropdownMode", isSignal: false, isRequired: false, transformFunction: null }, multiInputMode: { classPropertyName: "multiInputMode", publicName: "multiInputMode", isSignal: false, isRequired: false, transformFunction: null }, mobileMode: { classPropertyName: "mobileMode", publicName: "mobileMode", isSignal: false, isRequired: false, transformFunction: null }, hasMessage: { classPropertyName: "hasMessage", publicName: "hasMessage", isSignal: false, isRequired: false, transformFunction: null }, noBorder: { classPropertyName: "noBorder", publicName: "noBorder", isSignal: false, isRequired: false, transformFunction: null }, navigationIndicator: { classPropertyName: "navigationIndicator", publicName: "navigationIndicator", isSignal: false, isRequired: false, transformFunction: null }, selection: { classPropertyName: "selection", publicName: "selection", isSignal: false, isRequired: false, transformFunction: null }, keyboardSupport: { classPropertyName: "keyboardSupport", publicName: "keyboardSupport", isSignal: false, isRequired: false, transformFunction: null }, byline: { classPropertyName: "byline", publicName: "byline", isSignal: false, isRequired: false, transformFunction: null }, subline: { classPropertyName: "subline", publicName: "subline", isSignal: false, isRequired: false, transformFunction: null }, theme: { classPropertyName: "theme", publicName: "theme", isSignal: false, isRequired: false, transformFunction: null }, unreadIndicator: { classPropertyName: "unreadIndicator", publicName: "unreadIndicator", isSignal: false, isRequired: false, transformFunction: null }, role: { classPropertyName: "role", publicName: "role", isSignal: false, isRequired: false, transformFunction: null }, settingsList: { classPropertyName: "settingsList", publicName: "settingsList", isSignal: true, isRequired: false, transformFunction: null }, settingsListFooter: { classPropertyName: "settingsListFooter", publicName: "settingsListFooter", isSignal: true, isRequired: false, transformFunction: null }, searchResultsList: { classPropertyName: "searchResultsList", publicName: "searchResultsList", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { focusEscapeList: "focusEscapeList" }, host: { listeners: { "keydown": "keyDownHandler($event)" }, properties: { "class.fd-settings__list": "settingsList() || settingsListFooter()", "class.fd-settings__list--footer": "settingsListFooter()", "class.fd-list--search-results": "searchResultsList()", "class.fd-list--dropdown": "this.dropdownMode", "class.fd-list--multi-input": "this.multiInputMode", "class.fd-list--mobile": "this.mobileMode", "class.fd-list--has-message": "this.hasMessage", "class.fd-list--no-border": "this.noBorder", "class.fd-list--navigation-indication": "this.navigationIndicator", "class.fd-list--selection": "this.selection", "class.fd-list--byline": "this.byline", "class.fd-list--subline": "this.subline", "class.fd-list--theme": "this.theme", "class.fd-list--unread-indicator": "this.unreadIndicator", "class.fd-list--navigation": "this.hasNavigation", "attr.role": "this._ariaRole" }, classAttribute: "fd-list" }, providers: [
1233
1264
  KeyboardSupportService,
1234
1265
  contentDensityObserverProviders(),
1235
1266
  {
@@ -1247,7 +1278,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImpor
1247
1278
  args: [{ selector: '[fd-list], [fdList]', template: `<ng-content></ng-content>`, host: {
1248
1279
  class: 'fd-list',
1249
1280
  '[class.fd-settings__list]': 'settingsList() || settingsListFooter()',
1250
- '[class.fd-settings__list--footer]': 'settingsListFooter()'
1281
+ '[class.fd-settings__list--footer]': 'settingsListFooter()',
1282
+ '[class.fd-list--search-results]': 'searchResultsList()'
1251
1283
  }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
1252
1284
  KeyboardSupportService,
1253
1285
  contentDensityObserverProviders(),
@@ -1336,7 +1368,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImpor
1336
1368
  }], _ariaRole: [{
1337
1369
  type: HostBinding,
1338
1370
  args: ['attr.role']
1339
- }], settingsList: [{ type: i0.Input, args: [{ isSignal: true, alias: "settingsList", required: false }] }], settingsListFooter: [{ type: i0.Input, args: [{ isSignal: true, alias: "settingsListFooter", required: false }] }], keyDownHandler: [{
1371
+ }], settingsList: [{ type: i0.Input, args: [{ isSignal: true, alias: "settingsList", required: false }] }], settingsListFooter: [{ type: i0.Input, args: [{ isSignal: true, alias: "settingsListFooter", required: false }] }], searchResultsList: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchResultsList", required: false }] }], keyDownHandler: [{
1340
1372
  type: HostListener,
1341
1373
  args: ['keydown', ['$event']]
1342
1374
  }] } });
@@ -1357,6 +1389,7 @@ const components = [
1357
1389
  ListContentDirective,
1358
1390
  ListThumbnailDirective,
1359
1391
  ListTitleTextDirective,
1392
+ ListInfoLabelDirective,
1360
1393
  ListNavigationItemComponent,
1361
1394
  ListNavigationItemArrowDirective,
1362
1395
  ListNavigationItemTextDirective,
@@ -1383,6 +1416,7 @@ class ListModule {
1383
1416
  ListContentDirective,
1384
1417
  ListThumbnailDirective,
1385
1418
  ListTitleTextDirective,
1419
+ ListInfoLabelDirective,
1386
1420
  ListNavigationItemComponent,
1387
1421
  ListNavigationItemArrowDirective,
1388
1422
  ListNavigationItemTextDirective,
@@ -1401,6 +1435,7 @@ class ListModule {
1401
1435
  ListContentDirective,
1402
1436
  ListThumbnailDirective,
1403
1437
  ListTitleTextDirective,
1438
+ ListInfoLabelDirective,
1404
1439
  ListNavigationItemComponent,
1405
1440
  ListNavigationItemArrowDirective,
1406
1441
  ListNavigationItemTextDirective,
@@ -1420,5 +1455,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImpor
1420
1455
  * Generated bundle index. Do not edit.
1421
1456
  */
1422
1457
 
1423
- export { FD_LIST_COMPONENT, FD_LIST_LINK_DIRECTIVE, FD_LIST_MESSAGE_DIRECTIVE, FD_LIST_UNREAD_INDICATOR, ListBylineDirective, ListBylineLeftDirective, ListBylineRightDirective, ListComponent, ListContentDirective, ListFocusItem, ListFooterDirective, ListGroupHeaderDirective, ListIconDirective, ListItemComponent, ListLinkDirective, ListMessageDirective, ListModule, ListNavigationItemArrowDirective, ListNavigationItemComponent, ListNavigationItemTextDirective, ListSecondaryDirective, ListSublineDirective, ListThumbnailDirective, ListTitleDirective, ListTitleTextDirective, _secondaryListItemTypes };
1458
+ export { FD_LIST_COMPONENT, FD_LIST_LINK_DIRECTIVE, FD_LIST_MESSAGE_DIRECTIVE, FD_LIST_UNREAD_INDICATOR, ListBylineDirective, ListBylineLeftDirective, ListBylineRightDirective, ListComponent, ListContentDirective, ListFocusItem, ListFooterDirective, ListGroupHeaderDirective, ListIconDirective, ListInfoLabelDirective, ListItemComponent, ListLinkDirective, ListMessageDirective, ListModule, ListNavigationItemArrowDirective, ListNavigationItemComponent, ListNavigationItemTextDirective, ListSecondaryDirective, ListSublineDirective, ListThumbnailDirective, ListTitleDirective, ListTitleTextDirective, _secondaryListItemTypes };
1424
1459
  //# sourceMappingURL=fundamental-ngx-core-list.mjs.map