@fundamental-ngx/core 0.61.2-rc.8 → 0.61.2

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 (114) hide show
  1. package/fesm2022/fundamental-ngx-core-action-sheet.mjs +2 -3
  2. package/fesm2022/fundamental-ngx-core-action-sheet.mjs.map +1 -1
  3. package/fesm2022/fundamental-ngx-core-avatar-group.mjs +4 -6
  4. package/fesm2022/fundamental-ngx-core-avatar-group.mjs.map +1 -1
  5. package/fesm2022/fundamental-ngx-core-breadcrumb.mjs +13 -11
  6. package/fesm2022/fundamental-ngx-core-breadcrumb.mjs.map +1 -1
  7. package/fesm2022/fundamental-ngx-core-busy-indicator.mjs +7 -5
  8. package/fesm2022/fundamental-ngx-core-busy-indicator.mjs.map +1 -1
  9. package/fesm2022/fundamental-ngx-core-calendar.mjs +31 -35
  10. package/fesm2022/fundamental-ngx-core-calendar.mjs.map +1 -1
  11. package/fesm2022/fundamental-ngx-core-carousel.mjs +2 -2
  12. package/fesm2022/fundamental-ngx-core-carousel.mjs.map +1 -1
  13. package/fesm2022/fundamental-ngx-core-combobox.mjs +3 -5
  14. package/fesm2022/fundamental-ngx-core-combobox.mjs.map +1 -1
  15. package/fesm2022/fundamental-ngx-core-date-picker.mjs +2 -2
  16. package/fesm2022/fundamental-ngx-core-date-picker.mjs.map +1 -1
  17. package/fesm2022/fundamental-ngx-core-datetime-picker.mjs +2 -2
  18. package/fesm2022/fundamental-ngx-core-datetime-picker.mjs.map +1 -1
  19. package/fesm2022/fundamental-ngx-core-datetime.mjs +13 -7
  20. package/fesm2022/fundamental-ngx-core-datetime.mjs.map +1 -1
  21. package/fesm2022/fundamental-ngx-core-dynamic-page.mjs +13 -13
  22. package/fesm2022/fundamental-ngx-core-dynamic-page.mjs.map +1 -1
  23. package/fesm2022/fundamental-ngx-core-feed-list-item.mjs +2 -2
  24. package/fesm2022/fundamental-ngx-core-feed-list-item.mjs.map +1 -1
  25. package/fesm2022/fundamental-ngx-core-form.mjs +1 -1
  26. package/fesm2022/fundamental-ngx-core-form.mjs.map +1 -1
  27. package/fesm2022/fundamental-ngx-core-grid-list.mjs +4 -4
  28. package/fesm2022/fundamental-ngx-core-grid-list.mjs.map +1 -1
  29. package/fesm2022/fundamental-ngx-core-info-label.mjs +2 -2
  30. package/fesm2022/fundamental-ngx-core-info-label.mjs.map +1 -1
  31. package/fesm2022/fundamental-ngx-core-inline-help.mjs +65 -59
  32. package/fesm2022/fundamental-ngx-core-inline-help.mjs.map +1 -1
  33. package/fesm2022/fundamental-ngx-core-link.mjs +2 -2
  34. package/fesm2022/fundamental-ngx-core-link.mjs.map +1 -1
  35. package/fesm2022/fundamental-ngx-core-menu.mjs +1 -3
  36. package/fesm2022/fundamental-ngx-core-menu.mjs.map +1 -1
  37. package/fesm2022/fundamental-ngx-core-message-strip.mjs +49 -44
  38. package/fesm2022/fundamental-ngx-core-message-strip.mjs.map +1 -1
  39. package/fesm2022/fundamental-ngx-core-multi-combobox.mjs +17 -23
  40. package/fesm2022/fundamental-ngx-core-multi-combobox.mjs.map +1 -1
  41. package/fesm2022/fundamental-ngx-core-multi-input.mjs +2 -2
  42. package/fesm2022/fundamental-ngx-core-multi-input.mjs.map +1 -1
  43. package/fesm2022/fundamental-ngx-core-nested-list.mjs +21 -22
  44. package/fesm2022/fundamental-ngx-core-nested-list.mjs.map +1 -1
  45. package/fesm2022/fundamental-ngx-core-notification.mjs +16 -13
  46. package/fesm2022/fundamental-ngx-core-notification.mjs.map +1 -1
  47. package/fesm2022/fundamental-ngx-core-object-identifier.mjs +2 -2
  48. package/fesm2022/fundamental-ngx-core-object-identifier.mjs.map +1 -1
  49. package/fesm2022/fundamental-ngx-core-object-number.mjs +2 -2
  50. package/fesm2022/fundamental-ngx-core-object-number.mjs.map +1 -1
  51. package/fesm2022/fundamental-ngx-core-object-status.mjs +2 -2
  52. package/fesm2022/fundamental-ngx-core-object-status.mjs.map +1 -1
  53. package/fesm2022/fundamental-ngx-core-overflow-layout.mjs +2 -2
  54. package/fesm2022/fundamental-ngx-core-overflow-layout.mjs.map +1 -1
  55. package/fesm2022/fundamental-ngx-core-pagination.mjs +14 -11
  56. package/fesm2022/fundamental-ngx-core-pagination.mjs.map +1 -1
  57. package/fesm2022/fundamental-ngx-core-popover.mjs +6 -0
  58. package/fesm2022/fundamental-ngx-core-popover.mjs.map +1 -1
  59. package/fesm2022/fundamental-ngx-core-product-switch.mjs +2 -2
  60. package/fesm2022/fundamental-ngx-core-product-switch.mjs.map +1 -1
  61. package/fesm2022/fundamental-ngx-core-rating-indicator.mjs +7 -4
  62. package/fesm2022/fundamental-ngx-core-rating-indicator.mjs.map +1 -1
  63. package/fesm2022/fundamental-ngx-core-segmented-button.mjs +11 -10
  64. package/fesm2022/fundamental-ngx-core-segmented-button.mjs.map +1 -1
  65. package/fesm2022/fundamental-ngx-core-select.mjs +6 -7
  66. package/fesm2022/fundamental-ngx-core-select.mjs.map +1 -1
  67. package/fesm2022/fundamental-ngx-core-shellbar.mjs +6 -6
  68. package/fesm2022/fundamental-ngx-core-shellbar.mjs.map +1 -1
  69. package/fesm2022/fundamental-ngx-core-slider.mjs +6 -6
  70. package/fesm2022/fundamental-ngx-core-slider.mjs.map +1 -1
  71. package/fesm2022/fundamental-ngx-core-split-button.mjs +2 -2
  72. package/fesm2022/fundamental-ngx-core-split-button.mjs.map +1 -1
  73. package/fesm2022/fundamental-ngx-core-step-input.mjs +2 -2
  74. package/fesm2022/fundamental-ngx-core-step-input.mjs.map +1 -1
  75. package/fesm2022/fundamental-ngx-core-switch.mjs +2 -2
  76. package/fesm2022/fundamental-ngx-core-switch.mjs.map +1 -1
  77. package/fesm2022/fundamental-ngx-core-tabs.mjs +2 -2
  78. package/fesm2022/fundamental-ngx-core-tabs.mjs.map +1 -1
  79. package/fesm2022/fundamental-ngx-core-text.mjs +2 -2
  80. package/fesm2022/fundamental-ngx-core-text.mjs.map +1 -1
  81. package/fesm2022/fundamental-ngx-core-time-picker.mjs +29 -4
  82. package/fesm2022/fundamental-ngx-core-time-picker.mjs.map +1 -1
  83. package/fesm2022/fundamental-ngx-core-time.mjs +4 -4
  84. package/fesm2022/fundamental-ngx-core-time.mjs.map +1 -1
  85. package/fesm2022/fundamental-ngx-core-token.mjs +15 -12
  86. package/fesm2022/fundamental-ngx-core-token.mjs.map +1 -1
  87. package/fesm2022/fundamental-ngx-core-toolbar.mjs +3 -5
  88. package/fesm2022/fundamental-ngx-core-toolbar.mjs.map +1 -1
  89. package/fesm2022/fundamental-ngx-core-tree.mjs +4 -4
  90. package/fesm2022/fundamental-ngx-core-tree.mjs.map +1 -1
  91. package/fesm2022/fundamental-ngx-core-upload-collection.mjs +4 -4
  92. package/fesm2022/fundamental-ngx-core-upload-collection.mjs.map +1 -1
  93. package/fesm2022/fundamental-ngx-core-user-menu.mjs +3 -5
  94. package/fesm2022/fundamental-ngx-core-user-menu.mjs.map +1 -1
  95. package/fesm2022/fundamental-ngx-core-vertical-navigation.mjs +2 -2
  96. package/fesm2022/fundamental-ngx-core-vertical-navigation.mjs.map +1 -1
  97. package/package.json +3 -3
  98. package/types/fundamental-ngx-core-breadcrumb.d.ts +5 -5
  99. package/types/fundamental-ngx-core-busy-indicator.d.ts +3 -3
  100. package/types/fundamental-ngx-core-combobox.d.ts +2 -4
  101. package/types/fundamental-ngx-core-datetime.d.ts +5 -1
  102. package/types/fundamental-ngx-core-dynamic-page.d.ts +2 -1
  103. package/types/fundamental-ngx-core-inline-help.d.ts +45 -24
  104. package/types/fundamental-ngx-core-menu.d.ts +0 -2
  105. package/types/fundamental-ngx-core-message-strip.d.ts +12 -3
  106. package/types/fundamental-ngx-core-multi-combobox.d.ts +1 -1
  107. package/types/fundamental-ngx-core-nested-list.d.ts +10 -10
  108. package/types/fundamental-ngx-core-notification.d.ts +7 -5
  109. package/types/fundamental-ngx-core-pagination.d.ts +4 -3
  110. package/types/fundamental-ngx-core-rating-indicator.d.ts +2 -3
  111. package/types/fundamental-ngx-core-segmented-button.d.ts +5 -3
  112. package/types/fundamental-ngx-core-slider.d.ts +1 -1
  113. package/types/fundamental-ngx-core-time-picker.d.ts +17 -1
  114. 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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"}
@@ -1,7 +1,6 @@
1
1
  import * as i0 from '@angular/core';
2
- import { input, effect, TemplateRef, Optional, Self, Inject, Directive, NgModule } from '@angular/core';
2
+ import { input, booleanAttribute, computed, inject, ElementRef, Renderer2, ViewContainerRef, effect, TemplateRef, Directive, NgModule } from '@angular/core';
3
3
  import { FD_ICON_COMPONENT } from '@fundamental-ngx/core/icon';
4
- import * as i1 from '@fundamental-ngx/core/popover';
5
4
  import { PopoverService } from '@fundamental-ngx/core/popover';
6
5
 
7
6
  const INLINE_HELP_CLASS = 'fd-popover__body--inline-help fd-inline-help__content';
@@ -20,12 +19,7 @@ let inlineHelpId = 0;
20
19
  */
21
20
  class InlineHelpDirective {
22
21
  /** @hidden */
23
- constructor(_popoverService, _elementRef, _renderer, _viewContainerRef, _icon) {
24
- this._popoverService = _popoverService;
25
- this._elementRef = _elementRef;
26
- this._renderer = _renderer;
27
- this._viewContainerRef = _viewContainerRef;
28
- this._icon = _icon;
22
+ constructor() {
29
23
  /** Inline help text to display inside generated popover */
30
24
  this.inlineHelpContent = input('', { ...(ngDevMode ? { debugName: "inlineHelpContent" } : {}), alias: 'fd-inline-help' });
31
25
  /** Popover placement */
@@ -38,27 +32,64 @@ class InlineHelpDirective {
38
32
  this.triggers = input(DEFAULT_TRIGGERS, ...(ngDevMode ? [{ debugName: "triggers" }] : []));
39
33
  /** Whether the popover should close when a click is made outside its boundaries. */
40
34
  this.closeOnOutsideClick = input(false, ...(ngDevMode ? [{ debugName: "closeOnOutsideClick" }] : []));
35
+ /** Additional CSS class(es) to apply to the popover body. */
36
+ this.additionalBodyClass = input(null, ...(ngDevMode ? [{ debugName: "additionalBodyClass" }] : []));
37
+ /** Whether the inline help is disabled. */
38
+ this.disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : {}), transform: booleanAttribute });
39
+ /** ID for the Inline Help Popover body */
40
+ this.bodyId = input(`fd-inline-help-${inlineHelpId++}`, ...(ngDevMode ? [{ debugName: "bodyId" }] : []));
41
+ /** aria-role for the Inline Help Popover body */
42
+ this.bodyRole = input('tooltip', ...(ngDevMode ? [{ debugName: "bodyRole" }] : []));
43
+ /** @hidden Combined internal + user-provided body classes. */
44
+ this.combinedBodyClass = computed(() => {
45
+ const parts = [this._additionalBodyClass];
46
+ const userClass = this.additionalBodyClass();
47
+ if (userClass) {
48
+ parts.push(userClass);
49
+ }
50
+ return parts.join(' ');
51
+ }, ...(ngDevMode ? [{ debugName: "combinedBodyClass" }] : []));
52
+ /** @hidden Popover configuration computed from all inputs. */
53
+ this.popoverConfig = computed(() => ({
54
+ placement: this.placement() ?? 'bottom',
55
+ triggers: this.triggers(),
56
+ noArrow: false,
57
+ closeOnEscapeKey: false,
58
+ closeOnOutsideClick: this.closeOnOutsideClick(),
59
+ additionalBodyClass: this.combinedBodyClass(),
60
+ disabled: this.disabled(),
61
+ bodyRole: this.bodyRole(),
62
+ bodyId: this.bodyId()
63
+ }), ...(ngDevMode ? [{ debugName: "popoverConfig" }] : []));
64
+ /** @hidden */
65
+ this._popoverService = inject(PopoverService);
41
66
  /** @hidden */
42
- this._describedBy = '';
43
- /** @hidden Internal body ID for ARIA */
44
- this._bodyId = '';
67
+ this._elementRef = inject(ElementRef);
45
68
  /** @hidden */
46
- this._bodyRole = 'tooltip';
69
+ this._renderer = inject(Renderer2);
70
+ /** @hidden */
71
+ this._viewContainerRef = inject(ViewContainerRef);
72
+ /** @hidden */
73
+ this._icon = inject(FD_ICON_COMPONENT, { optional: true, self: true });
47
74
  /** @hidden */
48
75
  this._additionalBodyClass = '';
49
- // Watch for placement changes and sync with popover service
50
- effect(() => {
51
- this._popoverService.placement.set(this.placement() ?? 'bottom');
52
- });
53
- // Watch for triggers changes and sync with popover service
54
- effect(() => {
55
- this._popoverService.triggers.set(this.triggers());
56
- });
57
- // Watch for closeOnOutsideClick changes and sync with popover service
76
+ /** @hidden */
77
+ this._srViewRef = null;
78
+ /** @hidden */
79
+ this._initialised = false;
80
+ this._applyAdditionalInlineHelpClass();
81
+ // Effect to initialise and reactively update the popover config
58
82
  effect(() => {
59
- this._popoverService.closeOnOutsideClick.set(this.closeOnOutsideClick());
83
+ const config = this.popoverConfig();
84
+ if (!this._initialised) {
85
+ this._popoverService.initialise(this._elementRef, config);
86
+ this._initialised = true;
87
+ }
88
+ else {
89
+ this._popoverService.refreshConfiguration(config);
90
+ }
60
91
  });
61
- // Watch for content changes
92
+ // Effect to watch for content changes
62
93
  effect(() => {
63
94
  const content = this.inlineHelpContent();
64
95
  const text = typeof content === 'string' ? content : null;
@@ -66,29 +97,6 @@ class InlineHelpDirective {
66
97
  this._popoverService.updateContent(text, template);
67
98
  this._setupScreenreaderElement(content);
68
99
  });
69
- // Set role and id for ARIA
70
- const bodyId = `fd-inline-help-${inlineHelpId++}`;
71
- this._bodyRole = 'tooltip';
72
- this._bodyId = bodyId;
73
- this._elementRef.nativeElement.setAttribute('aria-describedby', bodyId);
74
- this._describedBy = bodyId;
75
- // Apply additional inline help classes
76
- this._applyAdditionalInlineHelpClass();
77
- }
78
- /** @hidden */
79
- ngOnInit() {
80
- // Initialize popover with element and config
81
- const config = {
82
- placement: this.placement() ?? 'bottom',
83
- triggers: this.triggers(),
84
- noArrow: false,
85
- closeOnEscapeKey: false,
86
- closeOnOutsideClick: this.closeOnOutsideClick(),
87
- additionalBodyClass: this._additionalBodyClass,
88
- bodyRole: this._bodyRole,
89
- bodyId: this._bodyId
90
- };
91
- this._popoverService.initialise(this._elementRef, config);
92
100
  }
93
101
  /** @hidden */
94
102
  _applyAdditionalInlineHelpClass() {
@@ -103,6 +111,11 @@ class InlineHelpDirective {
103
111
  /** @hidden */
104
112
  _setupScreenreaderElement(content) {
105
113
  this._viewContainerRef.clear();
114
+ // Destroy previous embedded view if any
115
+ if (this._srViewRef) {
116
+ this._srViewRef.destroy();
117
+ this._srViewRef = null;
118
+ }
106
119
  let srElement = this._renderer.createElement('span');
107
120
  if (typeof content === 'string') {
108
121
  srElement.innerText = content;
@@ -121,8 +134,8 @@ class InlineHelpDirective {
121
134
  }
122
135
  this._renderer.appendChild(this._elementRef.nativeElement, srElement);
123
136
  }
124
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: InlineHelpDirective, deps: [{ token: i1.PopoverService }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ViewContainerRef }, { token: FD_ICON_COMPONENT, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Directive }); }
125
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.0", type: InlineHelpDirective, isStandalone: true, selector: "[fd-inline-help]:not([fd-inline-help-template]), [fd-inline-help-template]:not([fd-inline-help])", inputs: { inlineHelpContent: { classPropertyName: "inlineHelpContent", publicName: "fd-inline-help", isSignal: true, isRequired: false, transformFunction: null }, placement: { classPropertyName: "placement", publicName: "placement", isSignal: true, isRequired: false, transformFunction: null }, triggers: { classPropertyName: "triggers", publicName: "triggers", isSignal: true, isRequired: false, transformFunction: null }, closeOnOutsideClick: { classPropertyName: "closeOnOutsideClick", publicName: "closeOnOutsideClick", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.fd-inline-help__trigger": "true" } }, providers: [PopoverService], ngImport: i0 }); }
137
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: InlineHelpDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
138
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.0", type: InlineHelpDirective, isStandalone: true, selector: "[fd-inline-help]:not([fd-inline-help-template]), [fd-inline-help-template]:not([fd-inline-help])", inputs: { inlineHelpContent: { classPropertyName: "inlineHelpContent", publicName: "fd-inline-help", isSignal: true, isRequired: false, transformFunction: null }, placement: { classPropertyName: "placement", publicName: "placement", isSignal: true, isRequired: false, transformFunction: null }, triggers: { classPropertyName: "triggers", publicName: "triggers", isSignal: true, isRequired: false, transformFunction: null }, closeOnOutsideClick: { classPropertyName: "closeOnOutsideClick", publicName: "closeOnOutsideClick", isSignal: true, isRequired: false, transformFunction: null }, additionalBodyClass: { classPropertyName: "additionalBodyClass", publicName: "additionalBodyClass", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, bodyId: { classPropertyName: "bodyId", publicName: "bodyId", isSignal: true, isRequired: false, transformFunction: null }, bodyRole: { classPropertyName: "bodyRole", publicName: "bodyRole", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.fd-inline-help__trigger": "true", "attr.aria-describedby": "bodyId()" } }, providers: [PopoverService], ngImport: i0 }); }
126
139
  }
127
140
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: InlineHelpDirective, decorators: [{
128
141
  type: Directive,
@@ -131,18 +144,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImpor
131
144
  selector: '[fd-inline-help]:not([fd-inline-help-template]), [fd-inline-help-template]:not([fd-inline-help])',
132
145
  providers: [PopoverService],
133
146
  host: {
134
- '[class.fd-inline-help__trigger]': 'true'
135
- },
136
- standalone: true
147
+ '[class.fd-inline-help__trigger]': 'true',
148
+ '[attr.aria-describedby]': 'bodyId()'
149
+ }
137
150
  }]
138
- }], ctorParameters: () => [{ type: i1.PopoverService }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ViewContainerRef }, { type: i0.Type, decorators: [{
139
- type: Optional
140
- }, {
141
- type: Self
142
- }, {
143
- type: Inject,
144
- args: [FD_ICON_COMPONENT]
145
- }] }], propDecorators: { inlineHelpContent: [{ type: i0.Input, args: [{ isSignal: true, alias: "fd-inline-help", required: false }] }], placement: [{ type: i0.Input, args: [{ isSignal: true, alias: "placement", required: false }] }], triggers: [{ type: i0.Input, args: [{ isSignal: true, alias: "triggers", required: false }] }], closeOnOutsideClick: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeOnOutsideClick", required: false }] }] } });
151
+ }], ctorParameters: () => [], propDecorators: { inlineHelpContent: [{ type: i0.Input, args: [{ isSignal: true, alias: "fd-inline-help", required: false }] }], placement: [{ type: i0.Input, args: [{ isSignal: true, alias: "placement", required: false }] }], triggers: [{ type: i0.Input, args: [{ isSignal: true, alias: "triggers", required: false }] }], closeOnOutsideClick: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeOnOutsideClick", required: false }] }], additionalBodyClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "additionalBodyClass", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], bodyId: [{ type: i0.Input, args: [{ isSignal: true, alias: "bodyId", required: false }] }], bodyRole: [{ type: i0.Input, args: [{ isSignal: true, alias: "bodyRole", required: false }] }] } });
146
152
 
147
153
  /**
148
154
  * @deprecated
@@ -1 +1 @@
1
- {"version":3,"file":"fundamental-ngx-core-inline-help.mjs","sources":["../../../../libs/core/inline-help/inline-help.directive.ts","../../../../libs/core/inline-help/inline-help.module.ts","../../../../libs/core/inline-help/fundamental-ngx-core-inline-help.ts"],"sourcesContent":["import {\n Directive,\n effect,\n ElementRef,\n EmbeddedViewRef,\n Inject,\n input,\n OnInit,\n Optional,\n Renderer2,\n Self,\n TemplateRef,\n Type,\n ViewContainerRef\n} from '@angular/core';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { FD_ICON_COMPONENT } from '@fundamental-ngx/core/icon';\nimport { PopoverConfig, PopoverService, TriggerConfig } from '@fundamental-ngx/core/popover';\nimport { Placement } from '@fundamental-ngx/core/shared';\n\nconst INLINE_HELP_CLASS = 'fd-popover__body--inline-help fd-inline-help__content';\nconst INLINE_HELP_ICON_CLASS = 'fd-popover__body--inline-help-with-icon';\n\n/** Default trigger configuration for inline help */\nconst DEFAULT_TRIGGERS: TriggerConfig[] = [\n { trigger: 'mouseenter', openAction: true, closeAction: false },\n { trigger: 'mouseleave', openAction: false, closeAction: true },\n { trigger: 'focusin', openAction: true, closeAction: false },\n { trigger: 'focusout', openAction: false, closeAction: true }\n];\n\nlet inlineHelpId = 0;\n\n/**\n * The component that represents an inline-help.\n * Inline help is used to display help text in a popover, often inline with headers, body text and form labels.\n */\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-inline-help]:not([fd-inline-help-template]), [fd-inline-help-template]:not([fd-inline-help])',\n providers: [PopoverService],\n host: {\n '[class.fd-inline-help__trigger]': 'true'\n },\n standalone: true\n})\nexport class InlineHelpDirective implements OnInit {\n /** Inline help text to display inside generated popover */\n readonly inlineHelpContent = input<string | TemplateRef<any>>('', { alias: 'fd-inline-help' });\n\n /** Popover placement */\n readonly placement = input<Placement | null>(null);\n\n /**\n * The trigger events that will open/close the inline help component.\n * Accepts any HTML DOM Events or TriggerConfig objects.\n * @default mouseenter/mouseleave and focusin/focusout\n */\n readonly triggers = input<(string | TriggerConfig)[]>(DEFAULT_TRIGGERS);\n\n /** Whether the popover should close when a click is made outside its boundaries. */\n readonly closeOnOutsideClick = input(false);\n\n /** @hidden */\n _describedBy = '';\n\n /** @hidden Internal body ID for ARIA */\n protected _bodyId = '';\n\n /** @hidden */\n protected _bodyRole = 'tooltip';\n\n /** @hidden */\n private _additionalBodyClass = '';\n\n /** @hidden */\n private _srViewRef: EmbeddedViewRef<any>;\n\n /** @hidden */\n constructor(\n private _popoverService: PopoverService,\n private _elementRef: ElementRef,\n private _renderer: Renderer2,\n private readonly _viewContainerRef: ViewContainerRef,\n @Optional() @Self() @Inject(FD_ICON_COMPONENT) private _icon: Type<any>\n ) {\n // Watch for placement changes and sync with popover service\n effect(() => {\n this._popoverService.placement.set(this.placement() ?? 'bottom');\n });\n\n // Watch for triggers changes and sync with popover service\n effect(() => {\n this._popoverService.triggers.set(this.triggers());\n });\n\n // Watch for closeOnOutsideClick changes and sync with popover service\n effect(() => {\n this._popoverService.closeOnOutsideClick.set(this.closeOnOutsideClick());\n });\n\n // Watch for content changes\n effect(() => {\n const content = this.inlineHelpContent();\n const text = typeof content === 'string' ? content : null;\n const template = content instanceof TemplateRef ? content : null;\n\n this._popoverService.updateContent(text, template);\n this._setupScreenreaderElement(content);\n });\n\n // Set role and id for ARIA\n const bodyId = `fd-inline-help-${inlineHelpId++}`;\n this._bodyRole = 'tooltip';\n this._bodyId = bodyId;\n this._elementRef.nativeElement.setAttribute('aria-describedby', bodyId);\n this._describedBy = bodyId;\n\n // Apply additional inline help classes\n this._applyAdditionalInlineHelpClass();\n }\n\n /** @hidden */\n ngOnInit(): void {\n // Initialize popover with element and config\n const config: PopoverConfig = {\n placement: this.placement() ?? 'bottom',\n triggers: this.triggers(),\n noArrow: false,\n closeOnEscapeKey: false,\n closeOnOutsideClick: this.closeOnOutsideClick(),\n additionalBodyClass: this._additionalBodyClass,\n bodyRole: this._bodyRole,\n bodyId: this._bodyId\n };\n\n this._popoverService.initialise(this._elementRef, config);\n }\n\n /** @hidden */\n private _applyAdditionalInlineHelpClass(): void {\n let classes = INLINE_HELP_CLASS;\n\n // If connected to the icon, but not button, then apply additional class\n // That will change the arrow's position a bit\n if (this._icon) {\n classes += ' ' + INLINE_HELP_ICON_CLASS;\n }\n\n this._additionalBodyClass = classes;\n }\n\n /** @hidden */\n private _setupScreenreaderElement(content: string | Nullable<TemplateRef<any>>): void {\n this._viewContainerRef.clear();\n let srElement = this._renderer.createElement('span');\n if (typeof content === 'string') {\n srElement.innerText = content;\n } else if (content) {\n this._srViewRef = content.createEmbeddedView(null);\n if (this._srViewRef.rootNodes[0] instanceof Text) {\n srElement.innerText = this._srViewRef.rootNodes[0].textContent;\n } else {\n srElement = this._srViewRef.rootNodes[0];\n }\n }\n\n if (srElement.style) {\n srElement.style.cssText = `position: absolute !important; height: 1px; width: 1px; overflow: hidden; clip: rect(1px, 1px, 1px, 1px);`;\n }\n this._renderer.appendChild(this._elementRef.nativeElement, srElement);\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { InlineHelpDirective } from './inline-help.directive';\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n imports: [InlineHelpDirective],\n exports: [InlineHelpDirective]\n})\nexport class InlineHelpModule {}\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-inline-help.mjs","sources":["../../../../libs/core/inline-help/inline-help.directive.ts","../../../../libs/core/inline-help/inline-help.module.ts","../../../../libs/core/inline-help/fundamental-ngx-core-inline-help.ts"],"sourcesContent":["import {\n booleanAttribute,\n computed,\n Directive,\n effect,\n ElementRef,\n EmbeddedViewRef,\n inject,\n input,\n Renderer2,\n TemplateRef,\n ViewContainerRef\n} from '@angular/core';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { FD_ICON_COMPONENT } from '@fundamental-ngx/core/icon';\nimport { PopoverService, TriggerConfig } from '@fundamental-ngx/core/popover';\nimport { Placement } from '@fundamental-ngx/core/shared';\n\nconst INLINE_HELP_CLASS = 'fd-popover__body--inline-help fd-inline-help__content';\nconst INLINE_HELP_ICON_CLASS = 'fd-popover__body--inline-help-with-icon';\n\n/** Default trigger configuration for inline help */\nconst DEFAULT_TRIGGERS: TriggerConfig[] = [\n { trigger: 'mouseenter', openAction: true, closeAction: false },\n { trigger: 'mouseleave', openAction: false, closeAction: true },\n { trigger: 'focusin', openAction: true, closeAction: false },\n { trigger: 'focusout', openAction: false, closeAction: true }\n];\n\nlet inlineHelpId = 0;\n\n/**\n * The component that represents an inline-help.\n * Inline help is used to display help text in a popover, often inline with headers, body text and form labels.\n */\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-inline-help]:not([fd-inline-help-template]), [fd-inline-help-template]:not([fd-inline-help])',\n providers: [PopoverService],\n host: {\n '[class.fd-inline-help__trigger]': 'true',\n '[attr.aria-describedby]': 'bodyId()'\n }\n})\nexport class InlineHelpDirective {\n /** Inline help text to display inside generated popover */\n readonly inlineHelpContent = input<string | TemplateRef<any>>('', { alias: 'fd-inline-help' });\n\n /** Popover placement */\n readonly placement = input<Placement | null>(null);\n\n /**\n * The trigger events that will open/close the inline help component.\n * Accepts any HTML DOM Events or TriggerConfig objects.\n * @default mouseenter/mouseleave and focusin/focusout\n */\n readonly triggers = input<(string | TriggerConfig)[]>(DEFAULT_TRIGGERS);\n\n /** Whether the popover should close when a click is made outside its boundaries. */\n readonly closeOnOutsideClick = input(false);\n\n /** Additional CSS class(es) to apply to the popover body. */\n readonly additionalBodyClass = input<string | null>(null);\n\n /** Whether the inline help is disabled. */\n readonly disabled = input(false, { transform: booleanAttribute });\n\n /** ID for the Inline Help Popover body */\n readonly bodyId = input(`fd-inline-help-${inlineHelpId++}`);\n\n /** aria-role for the Inline Help Popover body */\n readonly bodyRole = input('tooltip');\n\n /** @hidden Combined internal + user-provided body classes. */\n readonly combinedBodyClass = computed(() => {\n const parts = [this._additionalBodyClass];\n const userClass = this.additionalBodyClass();\n if (userClass) {\n parts.push(userClass);\n }\n return parts.join(' ');\n });\n\n /** @hidden Popover configuration computed from all inputs. */\n readonly popoverConfig = computed(() => ({\n placement: this.placement() ?? 'bottom',\n triggers: this.triggers(),\n noArrow: false,\n closeOnEscapeKey: false,\n closeOnOutsideClick: this.closeOnOutsideClick(),\n additionalBodyClass: this.combinedBodyClass(),\n disabled: this.disabled(),\n bodyRole: this.bodyRole(),\n bodyId: this.bodyId()\n }));\n\n /** @hidden */\n private readonly _popoverService = inject(PopoverService);\n\n /** @hidden */\n private readonly _elementRef = inject(ElementRef);\n\n /** @hidden */\n private readonly _renderer = inject(Renderer2);\n\n /** @hidden */\n private readonly _viewContainerRef = inject(ViewContainerRef);\n\n /** @hidden */\n private readonly _icon = inject(FD_ICON_COMPONENT, { optional: true, self: true });\n\n /** @hidden */\n private _additionalBodyClass = '';\n\n /** @hidden */\n private _srViewRef: EmbeddedViewRef<any> | null = null;\n\n /** @hidden */\n private _initialised = false;\n\n /** @hidden */\n constructor() {\n this._applyAdditionalInlineHelpClass();\n\n // Effect to initialise and reactively update the popover config\n effect(() => {\n const config = this.popoverConfig();\n if (!this._initialised) {\n this._popoverService.initialise(this._elementRef, config);\n this._initialised = true;\n } else {\n this._popoverService.refreshConfiguration(config);\n }\n });\n\n // Effect to watch for content changes\n effect(() => {\n const content = this.inlineHelpContent();\n const text = typeof content === 'string' ? content : null;\n const template = content instanceof TemplateRef ? content : null;\n\n this._popoverService.updateContent(text, template);\n this._setupScreenreaderElement(content);\n });\n }\n\n /** @hidden */\n private _applyAdditionalInlineHelpClass(): void {\n let classes = INLINE_HELP_CLASS;\n\n // If connected to the icon, but not button, then apply additional class\n // That will change the arrow's position a bit\n if (this._icon) {\n classes += ' ' + INLINE_HELP_ICON_CLASS;\n }\n\n this._additionalBodyClass = classes;\n }\n\n /** @hidden */\n private _setupScreenreaderElement(content: string | Nullable<TemplateRef<any>>): void {\n this._viewContainerRef.clear();\n\n // Destroy previous embedded view if any\n if (this._srViewRef) {\n this._srViewRef.destroy();\n this._srViewRef = null;\n }\n\n let srElement = this._renderer.createElement('span');\n if (typeof content === 'string') {\n srElement.innerText = content;\n } else if (content) {\n this._srViewRef = content.createEmbeddedView(null);\n if (this._srViewRef.rootNodes[0] instanceof Text) {\n srElement.innerText = this._srViewRef.rootNodes[0].textContent;\n } else {\n srElement = this._srViewRef.rootNodes[0];\n }\n }\n\n if (srElement.style) {\n srElement.style.cssText = `position: absolute !important; height: 1px; width: 1px; overflow: hidden; clip: rect(1px, 1px, 1px, 1px);`;\n }\n this._renderer.appendChild(this._elementRef.nativeElement, srElement);\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { InlineHelpDirective } from './inline-help.directive';\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n imports: [InlineHelpDirective],\n exports: [InlineHelpDirective]\n})\nexport class InlineHelpModule {}\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":"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"}
@@ -1067,8 +1067,6 @@ class SegmentedButtonOptionDirective {
1067
1067
  this._viewInit$ = new Subject();
1068
1068
  /** @hidden */
1069
1069
  this._selected$ = new BehaviorSubject(false);
1070
- /** @hidden */
1071
- this._destroyRef = inject(DestroyRef);
1072
1070
  this.clicked = this._clicked.asObservable();
1073
1071
  const ngZone = inject(NgZone);
1074
1072
  combineLatest([this._viewInit$.pipe(delayWhen(() => ngZone.onStable.asObservable())), this._selected$])
@@ -1078,7 +1076,7 @@ class SegmentedButtonOptionDirective {
1078
1076
  }
1079
1077
  }), tap(([, selected]) => {
1080
1078
  selected ? this._showDot() : this._hideDot();
1081
- }), takeUntilDestroyed(this._destroyRef))
1079
+ }), takeUntilDestroyed())
1082
1080
  .subscribe();
1083
1081
  }
1084
1082
  /** @hidden */