@fundamental-ngx/core 0.59.1-rc.9 → 0.59.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 (131) hide show
  1. package/fesm2022/fundamental-ngx-core-avatar-group-legacy.mjs +33 -50
  2. package/fesm2022/fundamental-ngx-core-avatar-group-legacy.mjs.map +1 -1
  3. package/fesm2022/fundamental-ngx-core-avatar-group.mjs +9 -11
  4. package/fesm2022/fundamental-ngx-core-avatar-group.mjs.map +1 -1
  5. package/fesm2022/fundamental-ngx-core-avatar.mjs +206 -293
  6. package/fesm2022/fundamental-ngx-core-avatar.mjs.map +1 -1
  7. package/fesm2022/fundamental-ngx-core-breadcrumb.mjs +25 -12
  8. package/fesm2022/fundamental-ngx-core-breadcrumb.mjs.map +1 -1
  9. package/fesm2022/fundamental-ngx-core-calendar.mjs +11 -14
  10. package/fesm2022/fundamental-ngx-core-calendar.mjs.map +1 -1
  11. package/fesm2022/fundamental-ngx-core-card.mjs +13 -26
  12. package/fesm2022/fundamental-ngx-core-card.mjs.map +1 -1
  13. package/fesm2022/fundamental-ngx-core-carousel.mjs +11 -11
  14. package/fesm2022/fundamental-ngx-core-carousel.mjs.map +1 -1
  15. package/fesm2022/fundamental-ngx-core-combobox.mjs +33 -7
  16. package/fesm2022/fundamental-ngx-core-combobox.mjs.map +1 -1
  17. package/fesm2022/fundamental-ngx-core-dialog.mjs +13 -17
  18. package/fesm2022/fundamental-ngx-core-dialog.mjs.map +1 -1
  19. package/fesm2022/fundamental-ngx-core-dynamic-page.mjs +32 -24
  20. package/fesm2022/fundamental-ngx-core-dynamic-page.mjs.map +1 -1
  21. package/fesm2022/fundamental-ngx-core-fixed-card-layout.mjs +28 -30
  22. package/fesm2022/fundamental-ngx-core-fixed-card-layout.mjs.map +1 -1
  23. package/fesm2022/fundamental-ngx-core-grid-list.mjs +12 -10
  24. package/fesm2022/fundamental-ngx-core-grid-list.mjs.map +1 -1
  25. package/fesm2022/fundamental-ngx-core-illustrated-message.mjs +202 -100
  26. package/fesm2022/fundamental-ngx-core-illustrated-message.mjs.map +1 -1
  27. package/fesm2022/fundamental-ngx-core-layout-panel.mjs +72 -231
  28. package/fesm2022/fundamental-ngx-core-layout-panel.mjs.map +1 -1
  29. package/fesm2022/fundamental-ngx-core-list.mjs +12 -12
  30. package/fesm2022/fundamental-ngx-core-list.mjs.map +1 -1
  31. package/fesm2022/fundamental-ngx-core-menu.mjs +28 -28
  32. package/fesm2022/fundamental-ngx-core-menu.mjs.map +1 -1
  33. package/fesm2022/fundamental-ngx-core-message-strip.mjs +85 -84
  34. package/fesm2022/fundamental-ngx-core-message-strip.mjs.map +1 -1
  35. package/fesm2022/fundamental-ngx-core-micro-process-flow.mjs +21 -24
  36. package/fesm2022/fundamental-ngx-core-micro-process-flow.mjs.map +1 -1
  37. package/fesm2022/fundamental-ngx-core-multi-combobox.mjs +19 -12
  38. package/fesm2022/fundamental-ngx-core-multi-combobox.mjs.map +1 -1
  39. package/fesm2022/fundamental-ngx-core-multi-input.mjs +46 -39
  40. package/fesm2022/fundamental-ngx-core-multi-input.mjs.map +1 -1
  41. package/fesm2022/fundamental-ngx-core-nested-list.mjs +66 -103
  42. package/fesm2022/fundamental-ngx-core-nested-list.mjs.map +1 -1
  43. package/fesm2022/fundamental-ngx-core-notification.mjs +10 -12
  44. package/fesm2022/fundamental-ngx-core-notification.mjs.map +1 -1
  45. package/fesm2022/fundamental-ngx-core-object-marker.mjs +69 -59
  46. package/fesm2022/fundamental-ngx-core-object-marker.mjs.map +1 -1
  47. package/fesm2022/fundamental-ngx-core-object-status.mjs +92 -118
  48. package/fesm2022/fundamental-ngx-core-object-status.mjs.map +1 -1
  49. package/fesm2022/fundamental-ngx-core-overflow-layout.mjs +27 -29
  50. package/fesm2022/fundamental-ngx-core-overflow-layout.mjs.map +1 -1
  51. package/fesm2022/fundamental-ngx-core-pagination.mjs +17 -18
  52. package/fesm2022/fundamental-ngx-core-pagination.mjs.map +1 -1
  53. package/fesm2022/fundamental-ngx-core-panel.mjs +7 -9
  54. package/fesm2022/fundamental-ngx-core-panel.mjs.map +1 -1
  55. package/fesm2022/fundamental-ngx-core-popover.mjs +10 -15
  56. package/fesm2022/fundamental-ngx-core-popover.mjs.map +1 -1
  57. package/fesm2022/fundamental-ngx-core-product-switch.mjs +12 -15
  58. package/fesm2022/fundamental-ngx-core-product-switch.mjs.map +1 -1
  59. package/fesm2022/fundamental-ngx-core-resizable-card-layout.mjs +18 -20
  60. package/fesm2022/fundamental-ngx-core-resizable-card-layout.mjs.map +1 -1
  61. package/fesm2022/fundamental-ngx-core-segmented-button.mjs +8 -11
  62. package/fesm2022/fundamental-ngx-core-segmented-button.mjs.map +1 -1
  63. package/fesm2022/fundamental-ngx-core-select.mjs +6 -8
  64. package/fesm2022/fundamental-ngx-core-select.mjs.map +1 -1
  65. package/fesm2022/fundamental-ngx-core-settings.mjs +9 -12
  66. package/fesm2022/fundamental-ngx-core-settings.mjs.map +1 -1
  67. package/fesm2022/fundamental-ngx-core-shellbar.mjs +48 -34
  68. package/fesm2022/fundamental-ngx-core-shellbar.mjs.map +1 -1
  69. package/fesm2022/fundamental-ngx-core-slider.mjs +30 -31
  70. package/fesm2022/fundamental-ngx-core-slider.mjs.map +1 -1
  71. package/fesm2022/fundamental-ngx-core-status-indicator.mjs +137 -131
  72. package/fesm2022/fundamental-ngx-core-status-indicator.mjs.map +1 -1
  73. package/fesm2022/fundamental-ngx-core-tabs.mjs +21 -17
  74. package/fesm2022/fundamental-ngx-core-tabs.mjs.map +1 -1
  75. package/fesm2022/fundamental-ngx-core-tile.mjs +375 -631
  76. package/fesm2022/fundamental-ngx-core-tile.mjs.map +1 -1
  77. package/fesm2022/fundamental-ngx-core-time.mjs +7 -9
  78. package/fesm2022/fundamental-ngx-core-time.mjs.map +1 -1
  79. package/fesm2022/fundamental-ngx-core-token.mjs +11 -13
  80. package/fesm2022/fundamental-ngx-core-token.mjs.map +1 -1
  81. package/fesm2022/fundamental-ngx-core-toolbar.mjs +2 -2
  82. package/fesm2022/fundamental-ngx-core-toolbar.mjs.map +1 -1
  83. package/fesm2022/fundamental-ngx-core-tree.mjs +2 -2
  84. package/fesm2022/fundamental-ngx-core-tree.mjs.map +1 -1
  85. package/fesm2022/fundamental-ngx-core-user-menu.mjs +63 -21
  86. package/fesm2022/fundamental-ngx-core-user-menu.mjs.map +1 -1
  87. package/fesm2022/fundamental-ngx-core-wizard.mjs +1 -1
  88. package/fesm2022/fundamental-ngx-core-wizard.mjs.map +1 -1
  89. package/package.json +4 -4
  90. package/types/fundamental-ngx-core-avatar-group-legacy.d.ts +15 -17
  91. package/types/fundamental-ngx-core-avatar-group.d.ts +1 -1
  92. package/types/fundamental-ngx-core-avatar.d.ts +66 -86
  93. package/types/fundamental-ngx-core-breadcrumb.d.ts +13 -5
  94. package/types/fundamental-ngx-core-calendar.d.ts +3 -4
  95. package/types/fundamental-ngx-core-card.d.ts +4 -11
  96. package/types/fundamental-ngx-core-carousel.d.ts +3 -3
  97. package/types/fundamental-ngx-core-combobox.d.ts +8 -1
  98. package/types/fundamental-ngx-core-dialog.d.ts +2 -4
  99. package/types/fundamental-ngx-core-dynamic-page.d.ts +0 -6
  100. package/types/fundamental-ngx-core-fixed-card-layout.d.ts +7 -7
  101. package/types/fundamental-ngx-core-grid-list.d.ts +6 -4
  102. package/types/fundamental-ngx-core-illustrated-message.d.ts +165 -31
  103. package/types/fundamental-ngx-core-layout-panel.d.ts +19 -131
  104. package/types/fundamental-ngx-core-list.d.ts +8 -6
  105. package/types/fundamental-ngx-core-menu.d.ts +16 -13
  106. package/types/fundamental-ngx-core-message-strip.d.ts +5 -2
  107. package/types/fundamental-ngx-core-micro-process-flow.d.ts +8 -6
  108. package/types/fundamental-ngx-core-multi-combobox.d.ts +8 -5
  109. package/types/fundamental-ngx-core-multi-input.d.ts +24 -16
  110. package/types/fundamental-ngx-core-nested-list.d.ts +19 -33
  111. package/types/fundamental-ngx-core-notification.d.ts +2 -2
  112. package/types/fundamental-ngx-core-object-marker.d.ts +47 -27
  113. package/types/fundamental-ngx-core-object-status.d.ts +49 -48
  114. package/types/fundamental-ngx-core-overflow-layout.d.ts +10 -10
  115. package/types/fundamental-ngx-core-pagination.d.ts +7 -8
  116. package/types/fundamental-ngx-core-panel.d.ts +2 -4
  117. package/types/fundamental-ngx-core-popover.d.ts +7 -5
  118. package/types/fundamental-ngx-core-product-switch.d.ts +5 -4
  119. package/types/fundamental-ngx-core-resizable-card-layout.d.ts +10 -8
  120. package/types/fundamental-ngx-core-segmented-button.d.ts +5 -4
  121. package/types/fundamental-ngx-core-select.d.ts +4 -5
  122. package/types/fundamental-ngx-core-settings.d.ts +7 -10
  123. package/types/fundamental-ngx-core-shellbar.d.ts +23 -14
  124. package/types/fundamental-ngx-core-slider.d.ts +18 -13
  125. package/types/fundamental-ngx-core-status-indicator.d.ts +42 -58
  126. package/types/fundamental-ngx-core-tabs.d.ts +9 -7
  127. package/types/fundamental-ngx-core-tile.d.ts +114 -243
  128. package/types/fundamental-ngx-core-time.d.ts +5 -4
  129. package/types/fundamental-ngx-core-token.d.ts +5 -4
  130. package/types/fundamental-ngx-core-tree.d.ts +1 -1
  131. package/types/fundamental-ngx-core-user-menu.d.ts +25 -21
@@ -1 +1 @@
1
- {"version":3,"file":"fundamental-ngx-core-avatar.mjs","sources":["../../../../libs/core/avatar/avatar-icon.pipe.ts","../../../../libs/core/avatar/tokens.ts","../../../../libs/core/avatar/avatar.component.ts","../../../../libs/core/avatar/avatar.component.html","../../../../libs/core/avatar/avatar.module.ts","../../../../libs/core/avatar/fundamental-ngx-core-avatar.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { AvatarValueStates } from './avatar-value-states.type';\n\n@Pipe({\n name: 'fdAvatarIcon',\n pure: true,\n standalone: true\n})\nexport class AvatarIconPipe implements PipeTransform {\n /**\n * Selects appropriate Avatar icon based on Avatar Value state and fallback icon.\n */\n transform(valueState: Nullable<AvatarValueStates>, fallbackIcon: Nullable<string>): string {\n let computedIcon = '';\n if (!valueState) {\n computedIcon = fallbackIcon || '';\n }\n switch (valueState) {\n case 'positive':\n computedIcon = 'sys-enter-2';\n break;\n case 'caution':\n computedIcon = 'warning';\n break;\n case 'negative':\n computedIcon = 'error';\n break;\n case 'information':\n computedIcon = 'information';\n break;\n }\n\n return `sap-icon--${computedIcon} ${valueState ? 'fd-avatar__zoom-icon--' + valueState : ''}`;\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const FD_AVATAR_COMPONENT = new InjectionToken('FdAvatarComponent');\n","import {\n Attribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n OnChanges,\n OnInit,\n Output,\n Renderer2,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport {\n ANY_LANGUAGE_LETTERS_REGEX,\n ColorAccent,\n CssClassBuilder,\n Nullable,\n Size,\n applyCssClass,\n getRandomColorAccent\n} from '@fundamental-ngx/cdk/utils';\nimport { FD_DEFAULT_ICON_FONT_FAMILY, IconComponent, IconFont } from '@fundamental-ngx/core/icon';\nimport { AvatarIconPipe } from './avatar-icon.pipe';\nimport { AvatarValueStates } from './avatar-value-states.type';\nimport { FD_AVATAR_COMPONENT } from './tokens';\n\nlet avatarUniqueId = 0;\n\nconst ALTER_ICON_OPTIONS = {\n CONTENT: 'content',\n ALT: 'alt',\n BACKUP: 'backup',\n DEFAULT_ICON: 'default-icon'\n};\n\nexport type IndicationColor = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10;\n\n@Component({\n selector: 'fd-avatar',\n templateUrl: './avatar.component.html',\n styleUrl: './avatar.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: FD_AVATAR_COMPONENT,\n useExisting: AvatarComponent\n }\n ],\n host: {\n '[attr.tabindex]': '_tabindex'\n },\n imports: [AvatarIconPipe, IconComponent]\n})\nexport class AvatarComponent implements OnChanges, OnInit, CssClassBuilder, OnChanges {\n /** User's custom classes */\n @Input()\n class: string;\n\n /** Id of the Avatar. */\n @Input()\n @HostBinding('attr.id')\n id = `fd-avatar-${avatarUniqueId++}`;\n\n /** Aria-label for Avatar. */\n @Input()\n @HostBinding('attr.aria-label')\n @HostBinding('attr.alt')\n ariaLabel: Nullable<string> = null;\n\n /** Aria-Labelledby for element describing Avatar. */\n @Input()\n @HostBinding('attr.aria-labelledby')\n ariaLabelledby: Nullable<string> = null;\n\n /** Localized text for label */\n @Input()\n set label(value: Nullable<string>) {\n this.ariaLabel = value || null;\n this.abbreviate = this._getAbbreviate(value);\n }\n\n /** The size of the Avatar. Options include: *xs*, *s*, *m*, *l* and *xl*. */\n @Input() size: Size = 'l';\n\n /** Font family of the icon. */\n @Input()\n font: IconFont = FD_DEFAULT_ICON_FONT_FAMILY;\n\n /** The glyph name. */\n @Input() glyph: Nullable<string> = null;\n\n /** The glyph name for zoom icon. */\n @Input() zoomGlyph: Nullable<string> = null;\n\n /** Whether to apply a circle style to the Avatar. */\n @Input() circle = false;\n\n /** Whether the Avatar should be interactive. */\n @Input() interactive = false;\n\n /** Whether to apply a transparent style to the Avatar. */\n @Input() transparent = false;\n\n /** Whether to apply background size contain style to the Avatar */\n @Input() contain = false;\n\n /** Whether to apply a placeholder background style to the Avatar. */\n @Input() placeholder = false;\n\n /** Whether to apply a tile background style to the Avatar. */\n @Input() tile = false;\n\n /** Whether to apply a border to the Avatar. */\n @Input() border = false;\n\n /** A number from 1 to 10 representing the background color of the Avatar.\n * This property will override the colorIndication property.\n */\n @Input() colorAccent: Nullable<ColorAccent> = null;\n\n /** A number from 1 to 10 representing the background color of the Avatar using the Indication Colors. */\n @Input() colorIndication: Nullable<IndicationColor> = null;\n\n /** Whether to apply random background color to the Avatar. */\n @Input() random = false;\n\n /** Whether component should be focusable & clicable */\n @Input() clickable = false;\n\n /** Value state of the Avatar. */\n @Input()\n valueState: Nullable<AvatarValueStates>;\n\n /** Background image resource: url or base64. */\n @Input()\n set image(value: Nullable<string>) {\n this._setImage(value);\n }\n get image(): Nullable<string> {\n return this._image;\n }\n\n /** Backup options to use when image hasn't been loaded successfully.\n * Options separated with \"|\" symbol.\n * Possible options: content, alt, backup, default-icon\n */\n @Input()\n set alterIcon(value: Nullable<string>) {\n this._alterIcon = value;\n }\n get alterIcon(): Nullable<string> {\n return this._alterIcon;\n }\n\n /** Backup image to load when image hasn't been loaded successfully.\n * Only applicable when using alterIcon input property.\n */\n @Input()\n set backupImage(value: Nullable<string>) {\n this._backupImage = value;\n }\n get backupImage(): Nullable<string> {\n return this._backupImage;\n }\n\n /** Event emitted when avatar clicked. Only fires if clickable input property set to true. */\n @Output() avatarClicked = new EventEmitter<Event>();\n\n /** Event emitted when zoom icon clicked. Only fires if zoomGlyph input property is set. */\n @Output() zoomGlyphClicked = new EventEmitter<void>();\n\n /**\n * @hidden\n */\n set bgImage(image: Nullable<string>) {\n this._bgImage = image;\n\n this._renderer.setStyle(this.elementRef.nativeElement, 'background-image', image);\n }\n\n get bgImage(): Nullable<string> {\n return this._bgImage;\n }\n\n /** @hidden */\n @HostBinding('attr.role')\n get role(): string {\n return this.zoomGlyph ? 'button' : 'img';\n }\n\n /** @hidden */\n @ViewChild('content')\n set content(value: ElementRef) {\n this._content = value;\n }\n\n /** @hidden */\n abbreviate: Nullable<string> = null;\n\n /** @hidden */\n private _image: Nullable<string> = null;\n\n /** @hidden */\n private _alterIcon: Nullable<string> = null;\n\n /** @hidden */\n private _content: Nullable<ElementRef> = null;\n\n /** @hidden */\n private _backupImage: Nullable<string> = null;\n\n /** @hidden */\n private _bgImage: Nullable<string> = null;\n\n /** @hidden */\n get _tabindex(): number | null {\n if (this.hostTabindex != null) {\n return this.hostTabindex;\n }\n return this.clickable ? 0 : null;\n }\n\n /** If a default placeholder should be displayed */\n get showDefault(): boolean {\n return !this.abbreviate && !this._image && !this.glyph;\n }\n\n /** @hidden */\n constructor(\n public readonly elementRef: ElementRef,\n private readonly _cdr: ChangeDetectorRef,\n private readonly _renderer: Renderer2,\n @Attribute('tabindex') private hostTabindex: number | null\n ) {}\n\n /** @hidden\n * CssClassBuilder interface implementation\n * function must return single string\n * function is responsible for order which css classes are applied\n */\n @applyCssClass\n buildComponentCssClass(): string[] {\n return [\n 'fd-avatar',\n this.size ? `fd-avatar--${this.size}` : '',\n this.colorAccent && !this.random ? `fd-avatar--accent-color-${this.colorAccent}` : '',\n this.random ? `fd-avatar--accent-color-${getRandomColorAccent()}` : '',\n this.colorIndication && this.colorAccent === null && !this.random\n ? `fd-avatar--indication-color-${this.colorIndication}`\n : '',\n this.circle ? 'fd-avatar--circle' : '',\n this.border ? 'fd-avatar--border' : '',\n this.interactive ? 'fd-avatar--interactive' : '',\n this.transparent ? 'fd-avatar--transparent' : '',\n this.contain ? 'fd-avatar--background-contain' : '',\n this.placeholder ? 'fd-avatar--placeholder' : '',\n this.tile ? 'fd-avatar--tile' : '',\n this.class\n ];\n }\n\n /** @hidden */\n @HostListener('click', ['$event'])\n @HostListener('keydown.enter', ['$event'])\n @HostListener('keydown.space', ['$event'])\n _onClick(event: Event): void {\n if (!this.clickable) {\n return;\n }\n event.preventDefault();\n this.avatarClicked.emit(event);\n if (this.zoomGlyph) {\n this.zoomGlyphClicked.next();\n }\n }\n\n /** @hidden */\n ngOnInit(): void {\n this.buildComponentCssClass();\n }\n\n /** @hidden */\n ngOnChanges(): void {\n if (this.zoomGlyph) {\n this.clickable = true;\n }\n this.buildComponentCssClass();\n }\n\n /** @hidden */\n zoomClicked(event: Event): void {\n event.preventDefault();\n this.elementRef.nativeElement.focus();\n this.zoomGlyphClicked.next();\n }\n\n /** @hidden Get an abbreviate from the label or return null if not fit requirements */\n private _getAbbreviate(label: Nullable<string>): string | null {\n if (!label || this._image) {\n return null;\n }\n\n return this._generateAbbreviation(label);\n }\n\n /** @hidden Get the abbreviation string */\n private _generateAbbreviation(label: Nullable<string>): string | null {\n if (!label) {\n return null;\n }\n const maxLettersCount = 3;\n const firstLetters = label.split(' ').map((word) => word.charAt(0));\n const abbreviate = firstLetters.join('');\n\n if (firstLetters.length > maxLettersCount || !abbreviate.match(ANY_LANGUAGE_LETTERS_REGEX)) {\n return null;\n }\n\n return abbreviate;\n }\n\n /** @hidden */\n private _setImage(value: Nullable<string>): void {\n this._image = value;\n\n if (value) {\n this._verifyImageUrl(value, (): void => {}, this._onErrorCallback);\n } else {\n this.bgImage = null;\n }\n }\n\n /** @hidden */\n private _verifyImageUrl(srcValue: string, onLoadCallback: () => void, onErrorCallback: () => void): void {\n // Don't load the same image all the time check happens\n if (srcValue === this.bgImage) {\n return;\n }\n const img = new Image();\n img.onload = onLoadCallback.bind(this);\n img.onerror = onErrorCallback.bind(this);\n img.src = srcValue;\n this._assignBgImage(srcValue);\n }\n\n /** @hidden */\n private _assignBgImage(srcValue: Nullable<string>): void {\n this.bgImage = srcValue ? `url(${srcValue})` : null;\n }\n\n /** @hidden */\n private _onErrorCallback(): void {\n if (!this._alterIcon) {\n this._showDefaultIcon();\n return;\n }\n\n const options = this._alterIcon.split('|');\n for (let i = 0; i < options.length; i++) {\n const option = options[i];\n\n if (option === ALTER_ICON_OPTIONS.CONTENT) {\n const contentValue = this._content?.nativeElement.textContent;\n if (contentValue) {\n this.abbreviate = this._generateAbbreviation(contentValue);\n break;\n }\n\n continue;\n }\n\n if (option === ALTER_ICON_OPTIONS.ALT) {\n const altValue = this.elementRef.nativeElement.getAttribute('alt');\n if (altValue) {\n this.abbreviate = this._generateAbbreviation(altValue);\n break;\n }\n\n continue;\n }\n\n if (option === ALTER_ICON_OPTIONS.BACKUP) {\n if (this._backupImage && this._backupImage !== '') {\n // Check if backupImage can be loaded successfully\n // If not, set default user icon\n this._verifyImageUrl(\n this._backupImage,\n () => {\n this._assignBgImage(this._backupImage);\n },\n () => {\n this._showDefaultIcon();\n }\n );\n break;\n }\n\n continue;\n }\n\n if (option === ALTER_ICON_OPTIONS.DEFAULT_ICON) {\n this._showDefaultIcon();\n break;\n }\n\n this._showDefaultIcon();\n }\n }\n\n /** @hidden */\n private _showDefaultIcon(): void {\n this.abbreviate = null;\n this._image = null;\n this.glyph = null;\n this._cdr.markForCheck();\n }\n}\n","@if (abbreviate) {\n {{ abbreviate }}\n}\n@if (zoomGlyph || valueState) {\n <i\n role=\"presentation\"\n class=\"fd-avatar__zoom-icon\"\n [class]=\"valueState | fdAvatarIcon: zoomGlyph\"\n (mousedown)=\"zoomClicked($event)\"\n >\n </i>\n}\n@if (glyph || showDefault) {\n <fd-icon\n class=\"fd-avatar__icon\"\n role=\"presentation\"\n [font]=\"font\"\n [glyph]=\"glyph || 'person-placeholder'\"\n ></fd-icon>\n}\n<div #content [style.display]=\"'none'\">\n <ng-content></ng-content>\n</div>\n","import { NgModule } from '@angular/core';\n\nimport { AvatarComponent } from './avatar.component';\n\n/**\n * @deprecated\n * Use `AvatarComponent` import instead.\n */\n@NgModule({\n imports: [AvatarComponent],\n exports: [AvatarComponent]\n})\nexport class AvatarModule {}\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-avatar.mjs","sources":["../../../../libs/core/avatar/avatar-icon.pipe.ts","../../../../libs/core/avatar/tokens.ts","../../../../libs/core/avatar/avatar.component.ts","../../../../libs/core/avatar/avatar.component.html","../../../../libs/core/avatar/avatar.module.ts","../../../../libs/core/avatar/fundamental-ngx-core-avatar.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { AvatarValueStates } from './avatar-value-states.type';\n\n@Pipe({\n name: 'fdAvatarIcon',\n pure: true,\n standalone: true\n})\nexport class AvatarIconPipe implements PipeTransform {\n /**\n * Selects appropriate Avatar icon based on Avatar Value state and fallback icon.\n */\n transform(valueState: Nullable<AvatarValueStates>, fallbackIcon: Nullable<string>): string {\n let computedIcon = '';\n if (!valueState) {\n computedIcon = fallbackIcon || '';\n }\n switch (valueState) {\n case 'positive':\n computedIcon = 'sys-enter-2';\n break;\n case 'caution':\n computedIcon = 'warning';\n break;\n case 'negative':\n computedIcon = 'error';\n break;\n case 'information':\n computedIcon = 'information';\n break;\n }\n\n return `sap-icon--${computedIcon} ${valueState ? 'fd-avatar__zoom-icon--' + valueState : ''}`;\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const FD_AVATAR_COMPONENT = new InjectionToken('FdAvatarComponent');\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n HostAttributeToken,\n inject,\n input,\n output,\n Renderer2,\n signal,\n viewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport {\n ANY_LANGUAGE_LETTERS_REGEX,\n ColorAccent,\n getRandomColorAccent,\n Nullable,\n Size\n} from '@fundamental-ngx/cdk/utils';\nimport { FD_DEFAULT_ICON_FONT_FAMILY, IconComponent, IconFont } from '@fundamental-ngx/core/icon';\nimport { AvatarIconPipe } from './avatar-icon.pipe';\nimport { AvatarValueStates } from './avatar-value-states.type';\nimport { FD_AVATAR_COMPONENT } from './tokens';\n\nlet avatarUniqueId = 0;\n\nconst ALTER_ICON_OPTIONS = {\n CONTENT: 'content',\n ALT: 'alt',\n BACKUP: 'backup',\n DEFAULT_ICON: 'default-icon'\n};\n\nexport type IndicationColor = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10;\n\n@Component({\n selector: 'fd-avatar',\n templateUrl: './avatar.component.html',\n styleUrl: './avatar.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: FD_AVATAR_COMPONENT,\n useExisting: AvatarComponent\n }\n ],\n host: {\n '[class]': 'cssClass()',\n '[attr.tabindex]': 'tabindex()',\n '[attr.id]': 'id()',\n '[attr.aria-label]': 'ariaLabel()',\n '[attr.aria-labelledby]': 'ariaLabelledby()',\n '[attr.alt]': 'ariaLabel()',\n '[attr.role]': 'role()',\n '(click)': 'onClick($event)',\n '(keydown.enter)': 'onClick($event)',\n '(keydown.space)': 'onClick($event)'\n },\n imports: [AvatarIconPipe, IconComponent]\n})\nexport class AvatarComponent {\n /** Id of the Avatar. */\n readonly id = input('fd-avatar-' + ++avatarUniqueId);\n\n /** Aria-label for Avatar. */\n readonly ariaLabel = input<string | null | undefined>(null);\n\n /** Aria-Labelledby for element describing Avatar. */\n readonly ariaLabelledby = input<string | null | undefined>(null);\n\n /** Localized text for label */\n readonly label = input<string | null | undefined>(null);\n\n /** The size of the Avatar. Options include: *xs*, *s*, *m*, *l* and *xl*. */\n readonly size = input<Size>('l');\n\n /** Font family of the icon. */\n readonly font = input<IconFont>(FD_DEFAULT_ICON_FONT_FAMILY);\n\n /** The glyph name. */\n readonly glyph = input<string | null | undefined>(null);\n\n /** The glyph name for zoom icon. */\n readonly zoomGlyph = input<string | null | undefined>(null);\n\n /** Whether to apply a circle style to the Avatar. */\n readonly circle = input(false, { transform: booleanAttribute });\n\n /** Whether the Avatar should be interactive. */\n readonly interactive = input(false, { transform: booleanAttribute });\n\n /** Whether to apply a transparent style to the Avatar. */\n readonly transparent = input(false, { transform: booleanAttribute });\n\n /** Whether to apply background size contain style to the Avatar */\n readonly contain = input(false, { transform: booleanAttribute });\n\n /** Whether to apply a placeholder background style to the Avatar. */\n readonly placeholder = input(false, { transform: booleanAttribute });\n\n /** Whether to apply a tile background style to the Avatar. */\n readonly tile = input(false, { transform: booleanAttribute });\n\n /** Whether to apply a border to the Avatar. */\n readonly border = input(false, { transform: booleanAttribute });\n\n /** A number from 1 to 10 representing the background color of the Avatar.\n * This property will override the colorIndication property.\n */\n readonly colorAccent = input<ColorAccent | null | undefined>(null);\n\n /** A number from 1 to 10 representing the background color of the Avatar using the Indication Colors. */\n readonly colorIndication = input<IndicationColor | null | undefined>(null);\n\n /** Whether to apply random background color to the Avatar. */\n readonly random = input(false, { transform: booleanAttribute });\n\n /** Whether component should be focusable & clicable */\n readonly clickable = input(false, { transform: booleanAttribute });\n\n /** Value state of the Avatar. */\n readonly valueState = input<AvatarValueStates | null | undefined>(null);\n\n /** Background image resource: url or base64. */\n readonly image = input<string | null | undefined>(null);\n\n /** Backup options to use when image hasn't been loaded successfully.\n * Options separated with \"|\" symbol.\n * Possible options: content, alt, backup, default-icon\n */\n readonly alterIcon = input<string | null | undefined>(null);\n\n /** Backup image to load when image hasn't been loaded successfully.\n * Only applicable when using alterIcon input property.\n */\n readonly backupImage = input<string | null | undefined>(null);\n\n /** Event emitted when avatar clicked. Only fires if clickable input property set to true. */\n readonly avatarClicked = output<Event>();\n\n /** Event emitted when zoom icon clicked. Only fires if zoomGlyph input property is set. */\n readonly zoomGlyphClicked = output<void>();\n\n /** @hidden */\n protected readonly content = viewChild<ElementRef>('content');\n\n /** @hidden Internal state for background image */\n protected readonly bgImage = signal<string | null | undefined>(null);\n\n /** @hidden Internal state for computed abbreviation */\n protected readonly abbreviate = signal<string | null | undefined>(null);\n\n /** @hidden Computed tabindex based on clickable state */\n protected readonly tabindex = computed(() => {\n if (this._hostTabindex != null) {\n return this._hostTabindex;\n }\n return this.clickable() ? 0 : null;\n });\n\n /** @hidden Computed role attribute */\n protected readonly role = computed(() => (this.zoomGlyph() || this.clickable() ? 'button' : 'img'));\n\n /** @hidden If a default placeholder should be displayed */\n protected readonly showDefault = computed(\n () =>\n // Show default if explicitly requested OR if no content is available\n this._shouldShowDefaultIcon() ||\n (!this.abbreviate() && !this._imageLoaded() && !this.glyph() && !this.image())\n );\n\n /** @hidden Computed CSS classes */\n protected readonly cssClass = computed(() => {\n const colorAccentValue = this.colorAccent();\n const randomValue = this.random();\n const colorIndicationValue = this.colorIndication();\n\n return [\n 'fd-avatar',\n this.size() ? `fd-avatar--${this.size()}` : '',\n colorAccentValue && !randomValue ? `fd-avatar--accent-color-${colorAccentValue}` : '',\n randomValue ? `fd-avatar--accent-color-${this._randomColorAccent()}` : '',\n colorIndicationValue && colorAccentValue === null && !randomValue\n ? `fd-avatar--indication-color-${colorIndicationValue}`\n : '',\n this.circle() ? 'fd-avatar--circle' : '',\n this.border() ? 'fd-avatar--border' : '',\n this.interactive() ? 'fd-avatar--interactive' : '',\n this.transparent() ? 'fd-avatar--transparent' : '',\n this.contain() ? 'fd-avatar--background-contain' : '',\n this.placeholder() ? 'fd-avatar--placeholder' : '',\n this.tile() ? 'fd-avatar--tile' : ''\n ]\n .filter(Boolean)\n .join(' ');\n });\n\n /** @hidden Internal state tracking if image loaded successfully */\n private readonly _imageLoaded = signal(false);\n\n /** @hidden Explicitly track when to show default icon (for failed images with no fallback) */\n private readonly _shouldShowDefaultIcon = signal(false);\n\n /** @hidden Stored random color accent to prevent regeneration */\n private readonly _randomColorAccent = signal<ColorAccent>(getRandomColorAccent());\n\n /** @hidden */\n private readonly _elementRef = inject(ElementRef);\n\n /** @hidden */\n private readonly _renderer = inject(Renderer2);\n\n /** @hidden */\n private readonly _hostTabindex = inject(new HostAttributeToken('tabindex'), { optional: true });\n\n /** @hidden */\n constructor() {\n // Effect to handle image changes\n effect(() => {\n const imageValue = this.image();\n if (imageValue) {\n this._imageLoaded.set(false);\n this._shouldShowDefaultIcon.set(false); // Reset default icon flag\n this._verifyImageUrl(imageValue, this._onErrorCallback.bind(this));\n } else {\n this._imageLoaded.set(false);\n this._shouldShowDefaultIcon.set(false);\n this._setBgImage(null);\n }\n });\n\n // Effect to handle label changes and compute abbreviation\n effect(() => {\n const labelValue = this.label();\n // Only generate abbreviation from label if there's no successful image\n if (labelValue && !this._imageLoaded()) {\n const abbreviation = this._generateAbbreviation(labelValue);\n this.abbreviate.set(abbreviation);\n } else if (!labelValue && !this._imageLoaded()) {\n // Clear abbreviation when label is removed (if no image)\n this.abbreviate.set(null);\n }\n });\n\n // Effect to regenerate random color when random property changes\n effect(() => {\n if (this.random()) {\n this._randomColorAccent.set(getRandomColorAccent());\n }\n });\n\n // Effect to apply background image to DOM\n effect(() => {\n const bgImage = this.bgImage();\n this._renderer.setStyle(this._elementRef.nativeElement, 'background-image', bgImage);\n });\n }\n\n /** @hidden */\n protected onClick(event: Event): void {\n if (!this.clickable()) {\n return;\n }\n\n event.preventDefault();\n\n this.avatarClicked.emit(event);\n\n if (this.zoomGlyph()) {\n this.zoomGlyphClicked.emit();\n }\n }\n\n /** @hidden */\n protected zoomClicked(event: Event): void {\n event.preventDefault();\n this._elementRef.nativeElement.focus();\n this.zoomGlyphClicked.emit();\n }\n\n /** @hidden Get the abbreviation string */\n private _generateAbbreviation(label: Nullable<string>): string | null {\n if (!label) {\n return null;\n }\n\n const maxLettersCount = 3;\n const words = label.split(' ').filter((word) => word.length > 0);\n\n if (words.length === 0 || words.length > maxLettersCount) {\n return null;\n }\n\n const abbreviate = words.map((word) => word[0]).join('');\n\n return abbreviate.match(ANY_LANGUAGE_LETTERS_REGEX) ? abbreviate : null;\n }\n\n /** @hidden */\n private _setBgImage(srcValue: Nullable<string>): void {\n this.bgImage.set(srcValue ? `url(${srcValue})` : null);\n }\n\n /** @hidden */\n private _verifyImageUrl(srcValue: string, onErrorCallback: () => void): void {\n const newBgImage = `url(${srcValue})`;\n\n // Don't load the same image if it's already loaded successfully\n if (this.bgImage() === newBgImage && this._imageLoaded()) {\n return;\n }\n\n const img = new Image();\n img.onload = () => {\n // Only set background if image loads successfully\n this._setBgImage(srcValue);\n this._imageLoaded.set(true);\n };\n img.onerror = onErrorCallback;\n img.src = srcValue;\n }\n\n /** @hidden */\n private _onErrorCallback(): void {\n const alterIconValue = this.alterIcon();\n if (!alterIconValue) {\n this._showDefaultIcon();\n return;\n }\n\n const options = alterIconValue.split('|');\n for (const option of options) {\n if (option === ALTER_ICON_OPTIONS.CONTENT) {\n const contentValue = this.content()?.nativeElement.textContent;\n if (this._trySetAbbreviation(contentValue)) {\n return;\n }\n } else if (option === ALTER_ICON_OPTIONS.ALT) {\n const altValue = this._elementRef.nativeElement.getAttribute('alt');\n if (this._trySetAbbreviation(altValue)) {\n return;\n }\n } else if (option === ALTER_ICON_OPTIONS.BACKUP) {\n const backupImageValue = this.backupImage();\n if (backupImageValue) {\n this._verifyImageUrl(backupImageValue, () => this._showDefaultIcon());\n return;\n }\n } else if (option === ALTER_ICON_OPTIONS.DEFAULT_ICON) {\n this._showDefaultIcon();\n return;\n }\n }\n\n // Fallback if no valid option matched\n this._showDefaultIcon();\n }\n\n /** @hidden Helper to try setting abbreviation from text */\n private _trySetAbbreviation(text: string | null | undefined): boolean {\n if (!text) {\n return false;\n }\n const trimmedText = text.trim();\n if (!trimmedText) {\n return false;\n }\n const abbreviation = this._generateAbbreviation(trimmedText);\n if (abbreviation) {\n this.abbreviate.set(abbreviation);\n this._setBgImage(null); // Clear background image when using abbreviation\n return true;\n }\n return false;\n }\n\n /** @hidden */\n private _showDefaultIcon(): void {\n this.abbreviate.set(null);\n this._setBgImage(null);\n this._imageLoaded.set(false);\n this._shouldShowDefaultIcon.set(true);\n }\n}\n","@if (abbreviate()) {\n {{ abbreviate() }}\n}\n@if (zoomGlyph() || valueState()) {\n <i\n role=\"presentation\"\n class=\"fd-avatar__zoom-icon\"\n [class]=\"valueState() | fdAvatarIcon: zoomGlyph()\"\n (mousedown)=\"zoomClicked($event)\"\n >\n </i>\n}\n@if (glyph() || showDefault()) {\n <fd-icon\n class=\"fd-avatar__icon\"\n role=\"presentation\"\n [font]=\"font()\"\n [glyph]=\"glyph() || 'person-placeholder'\"\n ></fd-icon>\n}\n<div #content [style.display]=\"'none'\">\n <ng-content></ng-content>\n</div>\n","import { NgModule } from '@angular/core';\n\nimport { AvatarComponent } from './avatar.component';\n\n/**\n * @deprecated\n * Use `AvatarComponent` import instead.\n */\n@NgModule({\n imports: [AvatarComponent],\n exports: [AvatarComponent]\n})\nexport class AvatarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import * as i1 from '@angular/cdk/portal';
2
2
  import { DomPortal, PortalModule } from '@angular/cdk/portal';
3
3
  import * as i0 from '@angular/core';
4
- import { InjectionToken, ContentChild, ChangeDetectionStrategy, ViewEncapsulation, Component, EventEmitter, signal, computed, inject, ElementRef, DestroyRef, ViewChild, ContentChildren, Output, Input, NgModule } from '@angular/core';
4
+ import { InjectionToken, ContentChild, ChangeDetectionStrategy, ViewEncapsulation, Component, EventEmitter, input, signal, inject, ElementRef, computed, DestroyRef, ViewChild, ContentChildren, Output, Input, NgModule } from '@angular/core';
5
5
  import { FD_LINK_COMPONENT, LinkComponent } from '@fundamental-ngx/core/link';
6
6
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
7
7
  import { RtlService } from '@fundamental-ngx/cdk/utils';
@@ -72,13 +72,13 @@ class BreadcrumbItemComponent {
72
72
  provide: FD_BREADCRUMB_ITEM_COMPONENT,
73
73
  useExisting: BreadcrumbItemComponent
74
74
  }
75
- ], queries: [{ propertyName: "breadcrumbLink", first: true, predicate: FD_LINK_COMPONENT, descendants: true }], ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
75
+ ], queries: [{ propertyName: "breadcrumbLink", first: true, predicate: FD_LINK_COMPONENT, descendants: true }], ngImport: i0, template: `<ng-content></ng-content> <span class="fd-breadcrumb__separator" aria-hidden="true"></span>`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
76
76
  }
77
77
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BreadcrumbItemComponent, decorators: [{
78
78
  type: Component,
79
79
  args: [{
80
80
  selector: 'fd-breadcrumb-item',
81
- template: '<ng-content></ng-content>',
81
+ template: `<ng-content></ng-content> <span class="fd-breadcrumb__separator" aria-hidden="true"></span>`,
82
82
  host: {
83
83
  class: 'fd-breadcrumb__item'
84
84
  },
@@ -122,22 +122,35 @@ class BreadcrumbComponent {
122
122
  * Event emitted when hidden items count is changed.
123
123
  */
124
124
  this.hiddenItemsCount = new EventEmitter();
125
+ /**
126
+ * Separator style for the breadcrumb items.
127
+ * Can be 'backslash' | 'double-slash' | 'double-backslash' | 'greater-than' | 'double-greater-than'
128
+ * Omit for default (slash)
129
+ */
130
+ this.separatorStyle = input('', ...(ngDevMode ? [{ debugName: "separatorStyle" }] : []));
125
131
  /**
126
132
  * @hidden
127
133
  * Array of breadcrumb items.
128
134
  */
129
135
  this._items$ = signal([], ...(ngDevMode ? [{ debugName: "_items$" }] : []));
130
136
  /** @hidden */
131
- this._placement$ = computed(() => (this._rtl$() ? 'bottom-end' : 'bottom-start'), ...(ngDevMode ? [{ debugName: "_placement$" }] : []));
132
- /** Element reference. */
133
137
  this.elementRef = inject(ElementRef);
134
138
  /** @hidden */
139
+ this.placement = computed(() => (this._rtlService?.rtl() ? 'bottom-end' : 'bottom-start'), ...(ngDevMode ? [{ debugName: "placement" }] : []));
140
+ /** @hidden */
141
+ this._cssClass = computed(() => {
142
+ const classes = ['fd-breadcrumb'];
143
+ const style = this.separatorStyle();
144
+ if (style) {
145
+ classes.push(`fd-breadcrumb--${style}`);
146
+ }
147
+ return classes.join(' ');
148
+ }, ...(ngDevMode ? [{ debugName: "_cssClass" }] : []));
149
+ /** @hidden */
135
150
  this._rtlService = inject(RtlService, {
136
151
  optional: true
137
152
  });
138
153
  /** @hidden */
139
- this._rtl$ = computed(() => !!this._rtlService?.rtlSignal(), ...(ngDevMode ? [{ debugName: "_rtl$" }] : []));
140
- /** @hidden */
141
154
  this._lang$ = inject(FD_LANGUAGE);
142
155
  /** @hidden */
143
156
  this._translationResolver = new TranslationResolver();
@@ -196,18 +209,18 @@ class BreadcrumbComponent {
196
209
  this._items$.set(this._contentItems.toArray());
197
210
  }
198
211
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BreadcrumbComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
199
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.0", type: BreadcrumbComponent, isStandalone: true, selector: "fd-breadcrumb", inputs: { reverse: "reverse", tabIndex: "tabIndex" }, outputs: { visibleItemsCount: "visibleItemsCount", hiddenItemsCount: "hiddenItemsCount" }, host: { attributes: { "role": "navigation" }, properties: { "attr.aria-label": "_ariaLabel" }, classAttribute: "fd-breadcrumb" }, providers: [
212
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.0", type: BreadcrumbComponent, isStandalone: true, selector: "fd-breadcrumb", inputs: { reverse: { classPropertyName: "reverse", publicName: "reverse", isSignal: false, isRequired: false, transformFunction: null }, tabIndex: { classPropertyName: "tabIndex", publicName: "tabIndex", isSignal: false, isRequired: false, transformFunction: null }, separatorStyle: { classPropertyName: "separatorStyle", publicName: "separatorStyle", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { visibleItemsCount: "visibleItemsCount", hiddenItemsCount: "hiddenItemsCount" }, host: { attributes: { "role": "navigation" }, properties: { "class": "_cssClass()", "attr.aria-label": "_ariaLabel" } }, providers: [
200
213
  {
201
214
  provide: FD_BREADCRUMB_COMPONENT,
202
215
  useExisting: BreadcrumbComponent
203
216
  }
204
- ], queries: [{ propertyName: "_contentItems", predicate: FD_BREADCRUMB_ITEM_COMPONENT }], viewQueries: [{ propertyName: "_menuComponent", first: true, predicate: MenuComponent, descendants: true }, { propertyName: "_overflowLayout", first: true, predicate: OverflowLayoutComponent, descendants: true }], ngImport: i0, template: "<fd-overflow-layout\n [reverseHiddenItems]=\"!reverse\"\n showMorePosition=\"left\"\n [enableKeyboardNavigation]=\"false\"\n (visibleItemsCount)=\"_onVisibleItemsCountChange($event)\"\n (hiddenItemsCount)=\"_onHiddenItemsCountChange($event)\"\n ariaRole=\"list\"\n>\n @for (breadcrumb of _items$(); track breadcrumb) {\n <div\n *fdOverflowItemRef=\"breadcrumb; let hidden\"\n fdOverflowLayoutItem\n (hiddenChange)=\"_onHiddenChange($event, breadcrumb)\"\n >\n <ng-template [cdkPortalOutlet]=\"breadcrumb.portal\"></ng-template>\n </div>\n }\n <ng-container *fdOverflowExpand=\"let breadcrumbs; items: _items$()\">\n <fd-menu #menu [closeOnEscapeKey]=\"true\" [focusAutoCapture]=\"true\" [placement]=\"_placement$()\">\n @for (breadcrumbItem of breadcrumbs; track breadcrumbItem) {\n <li\n fd-menu-item\n [disabled]=\"\n breadcrumbItem.item.breadcrumbLink ? breadcrumbItem.item.breadcrumbLink.disabled : false\n \"\n >\n <a fd-menu-interactive (click)=\"itemClicked(breadcrumbItem.item, $event)\">\n @if (breadcrumbItem?.item.breadcrumbLink) {\n @if (breadcrumbItem.item.breadcrumbLink._prefixIconName) {\n <fd-menu-addon\n position=\"before\"\n [glyph]=\"breadcrumbItem.item.breadcrumbLink._prefixIconName\"\n ></fd-menu-addon>\n }\n <span fd-menu-title>\n <ng-container [cdkPortalOutlet]=\"breadcrumbItem.item.linkContentPortal\"></ng-container>\n </span>\n @if (breadcrumbItem.item.breadcrumbLink._postfixIconName) {\n <fd-menu-addon\n [glyph]=\"breadcrumbItem.item.breadcrumbLink._postfixIconName\"\n ></fd-menu-addon>\n }\n } @else {\n <span fd-menu-title>\n <ng-container\n [cdkPortalOutlet]=\"breadcrumbItem.item.breadcrumbItemPortal\"\n ></ng-container>\n </span>\n }\n </a>\n </li>\n }\n </fd-menu>\n @if (breadcrumbs.length > 0) {\n <span class=\"fd-breadcrumb__item\" [fdMenuTrigger]=\"menu\">\n <a\n fd-link\n [attr.aria-label]=\"'coreBreadcrumb.overflowTitleMore' | fdTranslate\"\n aria-haspopup=\"menu\"\n tabindex=\"0\"\n class=\"fd-breadcrumb__collapsed\"\n (keydown.enter)=\"_keyDownHandle($event)\"\n (keydown.space)=\"_keyDownHandle($event)\"\n >\n <fd-icon\n glyph=\"overflow\"\n [title]=\"'coreBreadcrumb.overflowTitleMore' | fdTranslate\"\n [ariaLabel]=\"'coreBreadcrumb.overflowTitleMore' | fdTranslate\"\n ></fd-icon>\n <fd-icon glyph=\"slim-arrow-down\"></fd-icon>\n </a>\n </span>\n }\n </ng-container>\n</fd-overflow-layout>\n<ng-content></ng-content>\n", styles: [".fd-breadcrumb{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);display:-webkit-box;display:-ms-flexbox;display:flex;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;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;--fdLink_Line_Height:1.5rem;list-style:none;-webkit-margin-after:.5rem;margin-block-end:.5rem}.fd-breadcrumb:after,.fd-breadcrumb:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-breadcrumb__item{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapContent_LabelColor);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-block:.0625rem;padding-inline:0}.fd-breadcrumb__item:after,.fd-breadcrumb__item:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-breadcrumb__item:after{color:var(--sapTextColor);content:var(--fdBreadcrumb_Separator,\"/\");margin-inline:.25rem}.fd-breadcrumb__item:last-child:not(:has(a)){--fdBreadcrumb_Separator:none}.fd-breadcrumb__item .fd-breadcrumb__popover-body{border:none;border-top-left-radius:.125rem;border-top-right-radius:.125rem}.fd-breadcrumb--backslash{--fdBreadcrumb_Separator:\"\\\\\"}.fd-breadcrumb--double-slash{--fdBreadcrumb_Separator:\"//\"}.fd-breadcrumb--double-backslash{--fdBreadcrumb_Separator:\"\\\\\\\\\"}.fd-breadcrumb--greater-than{--fdBreadcrumb_Separator:\">\"}.fd-breadcrumb--double-greater-than{--fdBreadcrumb_Separator:\">>\"}.fd-breadcrumb{display:flex;white-space:nowrap}.fd-breadcrumb .fd-breadcrumb__collapsed{cursor:pointer}.fd-breadcrumb .fd-overflow-layout{justify-content:start}.fd-breadcrumb .fd-breadcrumb__item:last-child:after{content:\"/\"}.fd-breadcrumb .fd-overflow-layout__item--last .fd-breadcrumb__item:after{content:none}\n/*! Bundled license information:\n\nfundamental-styles/dist/breadcrumb.css:\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*/\n"], dependencies: [{ kind: "component", type: OverflowLayoutComponent, selector: "fd-overflow-layout", inputs: ["maxVisibleItems", "navigationTrigger", "showMorePosition", "renderShowMoreButton", "reverseHiddenItems", "enableKeyboardNavigation", "ariaRole", "moreItemsButtonText"], outputs: ["visibleItemsCount", "hiddenItemsCount", "hiddenItemsChange"] }, { kind: "directive", type: OverflowItemRefDirective, selector: "[fdOverflowItemRef]", inputs: ["fdOverflowItemRef"] }, { kind: "directive", type: OverflowLayoutItemDirective, selector: "[fdOverflowLayoutItem]", inputs: ["forceVisibility"], outputs: ["hiddenChange"] }, { kind: "ngmodule", type: PortalModule }, { kind: "directive", type: i1.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "directive", type: OverflowExpandDirective, selector: "[fdOverflowExpand]", inputs: ["fdOverflowExpandItems"] }, { kind: "component", type: MenuComponent, selector: "fd-menu", inputs: ["mobile", "disabled", "focusTrapped", "focusAutoCapture", "openOnHoverTime", "mobileConfig", "ariaLabel", "ariaLabelledby", "id"], outputs: ["activePath"] }, { kind: "component", type: MenuItemComponent, selector: "li[fd-menu-item]", inputs: ["disabled", "itemId", "submenu", "parentSubmenu", "hasSeparator"], outputs: ["onSelect"], exportAs: ["fd-menu-item"] }, { kind: "component", type: MenuInteractiveComponent, selector: "[fd-menu-interactive]" }, { kind: "component", type: MenuAddonDirective, selector: "fd-menu-addon", inputs: ["position", "submenuIndicator", "ariaHidden"] }, { kind: "directive", type: MenuTitleDirective, selector: "[fd-menu-title]" }, { kind: "directive", type: MenuTriggerDirective, selector: "[fdMenuTrigger]", inputs: ["fdMenuTrigger"] }, { kind: "component", type: LinkComponent, selector: "[fdLink], [fd-link]", inputs: ["class", "emphasized", "disabled", "inverted", "subtle", "undecorated"] }, { kind: "component", type: IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "color", "background", "class", "ariaLabel", "ariaHidden"], outputs: ["ariaHiddenChange"] }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
217
+ ], queries: [{ propertyName: "_contentItems", predicate: FD_BREADCRUMB_ITEM_COMPONENT }], viewQueries: [{ propertyName: "_menuComponent", first: true, predicate: MenuComponent, descendants: true }, { propertyName: "_overflowLayout", first: true, predicate: OverflowLayoutComponent, descendants: true }], ngImport: i0, template: "<fd-overflow-layout\n [reverseHiddenItems]=\"!reverse\"\n showMorePosition=\"left\"\n [enableKeyboardNavigation]=\"false\"\n (visibleItemsCount)=\"_onVisibleItemsCountChange($event)\"\n (hiddenItemsCount)=\"_onHiddenItemsCountChange($event)\"\n ariaRole=\"list\"\n>\n @for (breadcrumb of _items$(); track breadcrumb) {\n <div\n *fdOverflowItemRef=\"breadcrumb; let hidden\"\n fdOverflowLayoutItem\n (hiddenChange)=\"_onHiddenChange($event, breadcrumb)\"\n >\n <ng-template [cdkPortalOutlet]=\"breadcrumb.portal\"></ng-template>\n </div>\n }\n <ng-container *fdOverflowExpand=\"let breadcrumbs; items: _items$()\">\n <fd-menu #menu [closeOnEscapeKey]=\"true\" [focusAutoCapture]=\"true\" [placement]=\"placement()\">\n @for (breadcrumbItem of breadcrumbs; track breadcrumbItem) {\n <li\n fd-menu-item\n [disabled]=\"\n breadcrumbItem.item.breadcrumbLink ? breadcrumbItem.item.breadcrumbLink.disabled : false\n \"\n >\n <a fd-menu-interactive (click)=\"itemClicked(breadcrumbItem.item, $event)\">\n @if (breadcrumbItem?.item.breadcrumbLink) {\n @if (breadcrumbItem.item.breadcrumbLink._prefixIconName) {\n <fd-menu-addon\n position=\"before\"\n [glyph]=\"breadcrumbItem.item.breadcrumbLink._prefixIconName\"\n ></fd-menu-addon>\n }\n <span fd-menu-title>\n <ng-container [cdkPortalOutlet]=\"breadcrumbItem.item.linkContentPortal\"></ng-container>\n </span>\n @if (breadcrumbItem.item.breadcrumbLink._postfixIconName) {\n <fd-menu-addon\n [glyph]=\"breadcrumbItem.item.breadcrumbLink._postfixIconName\"\n ></fd-menu-addon>\n }\n } @else {\n <span fd-menu-title>\n <ng-container\n [cdkPortalOutlet]=\"breadcrumbItem.item.breadcrumbItemPortal\"\n ></ng-container>\n </span>\n }\n </a>\n </li>\n }\n </fd-menu>\n @if (breadcrumbs.length > 0) {\n <span class=\"fd-breadcrumb__item\" [fdMenuTrigger]=\"menu\">\n <a\n fd-link\n [attr.aria-label]=\"'coreBreadcrumb.overflowTitleMore' | fdTranslate\"\n aria-haspopup=\"menu\"\n tabindex=\"0\"\n class=\"fd-breadcrumb__collapsed\"\n (keydown.enter)=\"_keyDownHandle($event)\"\n (keydown.space)=\"_keyDownHandle($event)\"\n >\n <fd-icon\n glyph=\"overflow\"\n [title]=\"'coreBreadcrumb.overflowTitleMore' | fdTranslate\"\n [ariaLabel]=\"'coreBreadcrumb.overflowTitleMore' | fdTranslate\"\n ></fd-icon>\n <fd-icon glyph=\"slim-arrow-down\"></fd-icon>\n </a>\n <span class=\"fd-breadcrumb__separator\" aria-hidden=\"true\"></span>\n </span>\n }\n </ng-container>\n</fd-overflow-layout>\n<ng-content></ng-content>\n", styles: [".fd-breadcrumb{font-size:var(--sapFontSize);line-height:normal;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;-webkit-box-sizing:border-box;box-sizing:border-box;forced-color-adjust:none;padding-inline:0;padding-block:0;margin-inline:0;margin-block:0;border:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;--fdLink_Line_Height: 1.5rem;list-style:none;-webkit-margin-after:.5rem;margin-block-end:.5rem}.fd-breadcrumb:before,.fd-breadcrumb:after{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-breadcrumb__item{font-size:var(--sapFontSize);line-height:normal;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;-webkit-box-sizing:border-box;box-sizing:border-box;forced-color-adjust:none;padding-inline:0;padding-block:0;margin-inline:0;margin-block:0;border:0;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding-block:.0625rem;color:var(--sapContent_LabelColor)}.fd-breadcrumb__item:before,.fd-breadcrumb__item:after{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-breadcrumb__item:last-child:not(:has(a)){--fdBreadcrumb_Separator: none}.fd-breadcrumb__item .fd-breadcrumb__popover-body{border:none;border-top-left-radius:.125rem;border-top-right-radius:.125rem}.fd-breadcrumb__separator{font-size:var(--sapFontSize);line-height:normal;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;-webkit-box-sizing:border-box;box-sizing:border-box;forced-color-adjust:none;padding-inline:0;padding-block:0;margin-inline:0;margin-block:0;border:0}.fd-breadcrumb__separator:before,.fd-breadcrumb__separator:after{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-breadcrumb__separator:after{margin-inline:.25rem;color:var(--sapTextColor);content:var(--fdBreadcrumb_Separator, \"/\")}.fd-breadcrumb--backslash{--fdBreadcrumb_Separator: \"\\\\\"}.fd-breadcrumb--double-slash{--fdBreadcrumb_Separator: \"//\"}.fd-breadcrumb--double-backslash{--fdBreadcrumb_Separator: \"\\\\\\\\\"}.fd-breadcrumb--greater-than{--fdBreadcrumb_Separator: \">\"}.fd-breadcrumb--double-greater-than{--fdBreadcrumb_Separator: \">>\"}.fd-breadcrumb{display:flex;white-space:nowrap}.fd-breadcrumb .fd-breadcrumb__collapsed{cursor:pointer}.fd-breadcrumb .fd-overflow-layout{justify-content:start}.fd-breadcrumb .fd-overflow-layout .fd-overflow-layout__more .fd-breadcrumb__item{height:26px;vertical-align:text-top}.fd-breadcrumb .fd-overflow-layout__item--last .fd-breadcrumb__item:after{content:none}\n"], dependencies: [{ kind: "component", type: OverflowLayoutComponent, selector: "fd-overflow-layout", inputs: ["maxVisibleItems", "navigationTrigger", "showMorePosition", "renderShowMoreButton", "reverseHiddenItems", "enableKeyboardNavigation", "ariaRole", "moreItemsButtonText"], outputs: ["visibleItemsCount", "hiddenItemsCount", "hiddenItemsChange"] }, { kind: "directive", type: OverflowItemRefDirective, selector: "[fdOverflowItemRef]", inputs: ["fdOverflowItemRef"] }, { kind: "directive", type: OverflowLayoutItemDirective, selector: "[fdOverflowLayoutItem]", inputs: ["forceVisibility"], outputs: ["hiddenChange"] }, { kind: "ngmodule", type: PortalModule }, { kind: "directive", type: i1.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "directive", type: OverflowExpandDirective, selector: "[fdOverflowExpand]", inputs: ["fdOverflowExpandItems"] }, { kind: "component", type: MenuComponent, selector: "fd-menu", inputs: ["mobile", "disabled", "focusTrapped", "focusAutoCapture", "openOnHoverTime", "mobileConfig", "ariaLabel", "ariaLabelledby", "id"], outputs: ["activePath"] }, { kind: "component", type: MenuItemComponent, selector: "li[fd-menu-item]", inputs: ["disabled", "itemId", "submenu", "parentSubmenu", "hasSeparator"], outputs: ["onSelect"], exportAs: ["fd-menu-item"] }, { kind: "component", type: MenuInteractiveComponent, selector: "[fd-menu-interactive]" }, { kind: "component", type: MenuAddonDirective, selector: "fd-menu-addon", inputs: ["position", "submenuIndicator", "ariaHidden"] }, { kind: "directive", type: MenuTitleDirective, selector: "[fd-menu-title]" }, { kind: "directive", type: MenuTriggerDirective, selector: "[fdMenuTrigger]", inputs: ["fdMenuTrigger"] }, { kind: "component", type: LinkComponent, selector: "[fdLink], [fd-link]", inputs: ["class", "emphasized", "disabled", "inverted", "subtle", "undecorated"] }, { kind: "component", type: IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "color", "background", "class", "ariaLabel", "ariaHidden"], outputs: ["ariaHiddenChange"] }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
205
218
  }
206
219
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: BreadcrumbComponent, decorators: [{
207
220
  type: Component,
208
221
  args: [{ selector: 'fd-breadcrumb', host: {
209
- class: 'fd-breadcrumb',
210
222
  role: 'navigation',
223
+ '[class]': '_cssClass()',
211
224
  '[attr.aria-label]': '_ariaLabel'
212
225
  }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
213
226
  {
@@ -230,7 +243,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImpor
230
243
  LinkComponent,
231
244
  IconComponent,
232
245
  FdTranslatePipe
233
- ], template: "<fd-overflow-layout\n [reverseHiddenItems]=\"!reverse\"\n showMorePosition=\"left\"\n [enableKeyboardNavigation]=\"false\"\n (visibleItemsCount)=\"_onVisibleItemsCountChange($event)\"\n (hiddenItemsCount)=\"_onHiddenItemsCountChange($event)\"\n ariaRole=\"list\"\n>\n @for (breadcrumb of _items$(); track breadcrumb) {\n <div\n *fdOverflowItemRef=\"breadcrumb; let hidden\"\n fdOverflowLayoutItem\n (hiddenChange)=\"_onHiddenChange($event, breadcrumb)\"\n >\n <ng-template [cdkPortalOutlet]=\"breadcrumb.portal\"></ng-template>\n </div>\n }\n <ng-container *fdOverflowExpand=\"let breadcrumbs; items: _items$()\">\n <fd-menu #menu [closeOnEscapeKey]=\"true\" [focusAutoCapture]=\"true\" [placement]=\"_placement$()\">\n @for (breadcrumbItem of breadcrumbs; track breadcrumbItem) {\n <li\n fd-menu-item\n [disabled]=\"\n breadcrumbItem.item.breadcrumbLink ? breadcrumbItem.item.breadcrumbLink.disabled : false\n \"\n >\n <a fd-menu-interactive (click)=\"itemClicked(breadcrumbItem.item, $event)\">\n @if (breadcrumbItem?.item.breadcrumbLink) {\n @if (breadcrumbItem.item.breadcrumbLink._prefixIconName) {\n <fd-menu-addon\n position=\"before\"\n [glyph]=\"breadcrumbItem.item.breadcrumbLink._prefixIconName\"\n ></fd-menu-addon>\n }\n <span fd-menu-title>\n <ng-container [cdkPortalOutlet]=\"breadcrumbItem.item.linkContentPortal\"></ng-container>\n </span>\n @if (breadcrumbItem.item.breadcrumbLink._postfixIconName) {\n <fd-menu-addon\n [glyph]=\"breadcrumbItem.item.breadcrumbLink._postfixIconName\"\n ></fd-menu-addon>\n }\n } @else {\n <span fd-menu-title>\n <ng-container\n [cdkPortalOutlet]=\"breadcrumbItem.item.breadcrumbItemPortal\"\n ></ng-container>\n </span>\n }\n </a>\n </li>\n }\n </fd-menu>\n @if (breadcrumbs.length > 0) {\n <span class=\"fd-breadcrumb__item\" [fdMenuTrigger]=\"menu\">\n <a\n fd-link\n [attr.aria-label]=\"'coreBreadcrumb.overflowTitleMore' | fdTranslate\"\n aria-haspopup=\"menu\"\n tabindex=\"0\"\n class=\"fd-breadcrumb__collapsed\"\n (keydown.enter)=\"_keyDownHandle($event)\"\n (keydown.space)=\"_keyDownHandle($event)\"\n >\n <fd-icon\n glyph=\"overflow\"\n [title]=\"'coreBreadcrumb.overflowTitleMore' | fdTranslate\"\n [ariaLabel]=\"'coreBreadcrumb.overflowTitleMore' | fdTranslate\"\n ></fd-icon>\n <fd-icon glyph=\"slim-arrow-down\"></fd-icon>\n </a>\n </span>\n }\n </ng-container>\n</fd-overflow-layout>\n<ng-content></ng-content>\n", styles: [".fd-breadcrumb{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);display:-webkit-box;display:-ms-flexbox;display:flex;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;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;--fdLink_Line_Height:1.5rem;list-style:none;-webkit-margin-after:.5rem;margin-block-end:.5rem}.fd-breadcrumb:after,.fd-breadcrumb:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-breadcrumb__item{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapContent_LabelColor);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-block:.0625rem;padding-inline:0}.fd-breadcrumb__item:after,.fd-breadcrumb__item:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-breadcrumb__item:after{color:var(--sapTextColor);content:var(--fdBreadcrumb_Separator,\"/\");margin-inline:.25rem}.fd-breadcrumb__item:last-child:not(:has(a)){--fdBreadcrumb_Separator:none}.fd-breadcrumb__item .fd-breadcrumb__popover-body{border:none;border-top-left-radius:.125rem;border-top-right-radius:.125rem}.fd-breadcrumb--backslash{--fdBreadcrumb_Separator:\"\\\\\"}.fd-breadcrumb--double-slash{--fdBreadcrumb_Separator:\"//\"}.fd-breadcrumb--double-backslash{--fdBreadcrumb_Separator:\"\\\\\\\\\"}.fd-breadcrumb--greater-than{--fdBreadcrumb_Separator:\">\"}.fd-breadcrumb--double-greater-than{--fdBreadcrumb_Separator:\">>\"}.fd-breadcrumb{display:flex;white-space:nowrap}.fd-breadcrumb .fd-breadcrumb__collapsed{cursor:pointer}.fd-breadcrumb .fd-overflow-layout{justify-content:start}.fd-breadcrumb .fd-breadcrumb__item:last-child:after{content:\"/\"}.fd-breadcrumb .fd-overflow-layout__item--last .fd-breadcrumb__item:after{content:none}\n/*! Bundled license information:\n\nfundamental-styles/dist/breadcrumb.css:\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*/\n"] }]
246
+ ], template: "<fd-overflow-layout\n [reverseHiddenItems]=\"!reverse\"\n showMorePosition=\"left\"\n [enableKeyboardNavigation]=\"false\"\n (visibleItemsCount)=\"_onVisibleItemsCountChange($event)\"\n (hiddenItemsCount)=\"_onHiddenItemsCountChange($event)\"\n ariaRole=\"list\"\n>\n @for (breadcrumb of _items$(); track breadcrumb) {\n <div\n *fdOverflowItemRef=\"breadcrumb; let hidden\"\n fdOverflowLayoutItem\n (hiddenChange)=\"_onHiddenChange($event, breadcrumb)\"\n >\n <ng-template [cdkPortalOutlet]=\"breadcrumb.portal\"></ng-template>\n </div>\n }\n <ng-container *fdOverflowExpand=\"let breadcrumbs; items: _items$()\">\n <fd-menu #menu [closeOnEscapeKey]=\"true\" [focusAutoCapture]=\"true\" [placement]=\"placement()\">\n @for (breadcrumbItem of breadcrumbs; track breadcrumbItem) {\n <li\n fd-menu-item\n [disabled]=\"\n breadcrumbItem.item.breadcrumbLink ? breadcrumbItem.item.breadcrumbLink.disabled : false\n \"\n >\n <a fd-menu-interactive (click)=\"itemClicked(breadcrumbItem.item, $event)\">\n @if (breadcrumbItem?.item.breadcrumbLink) {\n @if (breadcrumbItem.item.breadcrumbLink._prefixIconName) {\n <fd-menu-addon\n position=\"before\"\n [glyph]=\"breadcrumbItem.item.breadcrumbLink._prefixIconName\"\n ></fd-menu-addon>\n }\n <span fd-menu-title>\n <ng-container [cdkPortalOutlet]=\"breadcrumbItem.item.linkContentPortal\"></ng-container>\n </span>\n @if (breadcrumbItem.item.breadcrumbLink._postfixIconName) {\n <fd-menu-addon\n [glyph]=\"breadcrumbItem.item.breadcrumbLink._postfixIconName\"\n ></fd-menu-addon>\n }\n } @else {\n <span fd-menu-title>\n <ng-container\n [cdkPortalOutlet]=\"breadcrumbItem.item.breadcrumbItemPortal\"\n ></ng-container>\n </span>\n }\n </a>\n </li>\n }\n </fd-menu>\n @if (breadcrumbs.length > 0) {\n <span class=\"fd-breadcrumb__item\" [fdMenuTrigger]=\"menu\">\n <a\n fd-link\n [attr.aria-label]=\"'coreBreadcrumb.overflowTitleMore' | fdTranslate\"\n aria-haspopup=\"menu\"\n tabindex=\"0\"\n class=\"fd-breadcrumb__collapsed\"\n (keydown.enter)=\"_keyDownHandle($event)\"\n (keydown.space)=\"_keyDownHandle($event)\"\n >\n <fd-icon\n glyph=\"overflow\"\n [title]=\"'coreBreadcrumb.overflowTitleMore' | fdTranslate\"\n [ariaLabel]=\"'coreBreadcrumb.overflowTitleMore' | fdTranslate\"\n ></fd-icon>\n <fd-icon glyph=\"slim-arrow-down\"></fd-icon>\n </a>\n <span class=\"fd-breadcrumb__separator\" aria-hidden=\"true\"></span>\n </span>\n }\n </ng-container>\n</fd-overflow-layout>\n<ng-content></ng-content>\n", styles: [".fd-breadcrumb{font-size:var(--sapFontSize);line-height:normal;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;-webkit-box-sizing:border-box;box-sizing:border-box;forced-color-adjust:none;padding-inline:0;padding-block:0;margin-inline:0;margin-block:0;border:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;--fdLink_Line_Height: 1.5rem;list-style:none;-webkit-margin-after:.5rem;margin-block-end:.5rem}.fd-breadcrumb:before,.fd-breadcrumb:after{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-breadcrumb__item{font-size:var(--sapFontSize);line-height:normal;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;-webkit-box-sizing:border-box;box-sizing:border-box;forced-color-adjust:none;padding-inline:0;padding-block:0;margin-inline:0;margin-block:0;border:0;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding-block:.0625rem;color:var(--sapContent_LabelColor)}.fd-breadcrumb__item:before,.fd-breadcrumb__item:after{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-breadcrumb__item:last-child:not(:has(a)){--fdBreadcrumb_Separator: none}.fd-breadcrumb__item .fd-breadcrumb__popover-body{border:none;border-top-left-radius:.125rem;border-top-right-radius:.125rem}.fd-breadcrumb__separator{font-size:var(--sapFontSize);line-height:normal;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;-webkit-box-sizing:border-box;box-sizing:border-box;forced-color-adjust:none;padding-inline:0;padding-block:0;margin-inline:0;margin-block:0;border:0}.fd-breadcrumb__separator:before,.fd-breadcrumb__separator:after{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-breadcrumb__separator:after{margin-inline:.25rem;color:var(--sapTextColor);content:var(--fdBreadcrumb_Separator, \"/\")}.fd-breadcrumb--backslash{--fdBreadcrumb_Separator: \"\\\\\"}.fd-breadcrumb--double-slash{--fdBreadcrumb_Separator: \"//\"}.fd-breadcrumb--double-backslash{--fdBreadcrumb_Separator: \"\\\\\\\\\"}.fd-breadcrumb--greater-than{--fdBreadcrumb_Separator: \">\"}.fd-breadcrumb--double-greater-than{--fdBreadcrumb_Separator: \">>\"}.fd-breadcrumb{display:flex;white-space:nowrap}.fd-breadcrumb .fd-breadcrumb__collapsed{cursor:pointer}.fd-breadcrumb .fd-overflow-layout{justify-content:start}.fd-breadcrumb .fd-overflow-layout .fd-overflow-layout__more .fd-breadcrumb__item{height:26px;vertical-align:text-top}.fd-breadcrumb .fd-overflow-layout__item--last .fd-breadcrumb__item:after{content:none}\n"] }]
234
247
  }], propDecorators: { reverse: [{
235
248
  type: Input
236
249
  }], tabIndex: [{
@@ -248,7 +261,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImpor
248
261
  }], _overflowLayout: [{
249
262
  type: ViewChild,
250
263
  args: [OverflowLayoutComponent]
251
- }] } });
264
+ }], separatorStyle: [{ type: i0.Input, args: [{ isSignal: true, alias: "separatorStyle", required: false }] }] } });
252
265
 
253
266
  const components = [BreadcrumbComponent, BreadcrumbItemComponent, LinkComponent, ContentDensityModule];
254
267
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"fundamental-ngx-core-breadcrumb.mjs","sources":["../../../../libs/core/breadcrumb/tokens.ts","../../../../libs/core/breadcrumb/breadcrumb-item.component.ts","../../../../libs/core/breadcrumb/breadcrumb.component.ts","../../../../libs/core/breadcrumb/breadcrumb.component.html","../../../../libs/core/breadcrumb/breadcrumb.module.ts","../../../../libs/core/breadcrumb/fundamental-ngx-core-breadcrumb.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport const FD_BREADCRUMB_ITEM_COMPONENT = new InjectionToken('FdBreadcrumbItemComponent');\nexport const FD_BREADCRUMB_COMPONENT = new InjectionToken('FdBreadcrumbComponent');\n","import { DomPortal } from '@angular/cdk/portal';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ElementRef,\n ViewEncapsulation\n} from '@angular/core';\nimport { FD_LINK_COMPONENT, LinkComponent } from '@fundamental-ngx/core/link';\nimport { FD_BREADCRUMB_ITEM_COMPONENT } from './tokens';\n\n/**\n * Breadcrumb item directive. Must have child breadcrumb link directives.\n *\n * ```html\n * <fd-breadcrumb-item>\n * <a fd-link [routerLink]=\"'#'\">Breadcrumb Link</a>\n * </fd-breadcrumb-item>\n * ```\n */\n@Component({\n selector: 'fd-breadcrumb-item',\n template: '<ng-content></ng-content>',\n host: {\n class: 'fd-breadcrumb__item'\n },\n providers: [\n {\n provide: FD_BREADCRUMB_ITEM_COMPONENT,\n useExisting: BreadcrumbItemComponent\n }\n ],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\n})\nexport class BreadcrumbItemComponent implements AfterViewInit {\n /** @hidden */\n @ContentChild(FD_LINK_COMPONENT)\n breadcrumbLink: LinkComponent;\n\n /** In case there is no link in Item and breadcrumb item is non-interactive, we move whole item content to menu item title */\n breadcrumbItemPortal: DomPortal<Element>;\n\n /** When breadcrumb item has link in it, we are moving link content to menu item title */\n linkContentPortal: DomPortal;\n\n /**\n * Breadcrumb item dom portal.\n */\n portal: DomPortal;\n\n /** @hidden */\n private _attached = false;\n\n /** @hidden */\n constructor(public readonly elementRef: ElementRef<HTMLElement>) {}\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._attach();\n }\n\n /**\n * Sets breadcrumb item dom portal.\n */\n setPortal(): void {\n if (!this.portal) {\n this.portal = new DomPortal(this.elementRef);\n }\n }\n\n /** @hidden */\n _detach(): void {\n if (!this._attached) {\n return;\n }\n\n if (this.linkContentPortal?.isAttached) {\n this.linkContentPortal?.detach();\n }\n\n if (this.breadcrumbItemPortal?.isAttached) {\n this.breadcrumbItemPortal?.detach();\n }\n\n this._attached = false;\n }\n\n /** @hidden */\n _attach(): void {\n if (this._attached) {\n return;\n }\n\n if (this.breadcrumbLink && this.breadcrumbLink.contentSpan) {\n this.linkContentPortal = new DomPortal<HTMLElement>(this.breadcrumbLink.contentSpan.nativeElement);\n }\n\n this.breadcrumbItemPortal = new DomPortal(this.elementRef.nativeElement.firstElementChild as Element);\n this._attached = true;\n }\n}\n","import { PortalModule } from '@angular/cdk/portal';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n DestroyRef,\n ElementRef,\n EventEmitter,\n Input,\n OnInit,\n Output,\n QueryList,\n ViewChild,\n ViewEncapsulation,\n computed,\n inject,\n signal\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { HasElementRef, RtlService } from '@fundamental-ngx/cdk/utils';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { LinkComponent } from '@fundamental-ngx/core/link';\nimport {\n GlyphMenuAddonDirective,\n MenuAddonDirective,\n MenuComponent,\n MenuInteractiveComponent,\n MenuItemComponent,\n MenuTitleDirective,\n MenuTriggerDirective\n} from '@fundamental-ngx/core/menu';\nimport {\n OverflowExpandDirective,\n OverflowItemRefDirective,\n OverflowLayoutComponent,\n OverflowLayoutItemDirective\n} from '@fundamental-ngx/core/overflow-layout';\nimport { Placement } from '@fundamental-ngx/core/shared';\nimport { FD_LANGUAGE, FdLanguage, FdTranslatePipe, TranslationResolver } from '@fundamental-ngx/i18n';\nimport { BreadcrumbItemComponent } from './breadcrumb-item.component';\nimport { FD_BREADCRUMB_COMPONENT, FD_BREADCRUMB_ITEM_COMPONENT } from './tokens';\n\n/**\n * Breadcrumb parent wrapper directive. Must have breadcrumb item child directives.\n *\n * ```html\n * <fd-breadcrumb>\n * <fd-breadcrumb-item>\n * <a fd-link [routerLink]=\"'#'\">Breadcrumb Link</a>\n * </fd-breadcrumb-item>\n * </fd-breadcrumb>\n * ```\n */\n@Component({\n selector: 'fd-breadcrumb',\n host: {\n class: 'fd-breadcrumb',\n role: 'navigation',\n '[attr.aria-label]': '_ariaLabel'\n },\n templateUrl: './breadcrumb.component.html',\n styleUrl: './breadcrumb.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: FD_BREADCRUMB_COMPONENT,\n useExisting: BreadcrumbComponent\n }\n ],\n imports: [\n OverflowLayoutComponent,\n OverflowItemRefDirective,\n OverflowLayoutItemDirective,\n PortalModule,\n OverflowExpandDirective,\n MenuComponent,\n MenuItemComponent,\n MenuInteractiveComponent,\n GlyphMenuAddonDirective,\n MenuAddonDirective,\n MenuTitleDirective,\n MenuTriggerDirective,\n LinkComponent,\n IconComponent,\n FdTranslatePipe\n ]\n})\nexport class BreadcrumbComponent implements OnInit, AfterViewInit, HasElementRef {\n /** Whether to append items to the overflow dropdown in reverse order. Default is true. */\n @Input()\n reverse = false;\n\n /** Tabindex of the breadcrumb. */\n @Input()\n tabIndex = '0';\n\n /**\n * Event emitted when visible items count is changed.\n */\n @Output()\n visibleItemsCount = new EventEmitter<number>();\n\n /**\n * Event emitted when hidden items count is changed.\n */\n @Output()\n hiddenItemsCount = new EventEmitter<number>();\n\n /** @hidden */\n @ContentChildren(FD_BREADCRUMB_ITEM_COMPONENT)\n private readonly _contentItems: QueryList<BreadcrumbItemComponent>;\n\n /** @hidden */\n @ViewChild(MenuComponent)\n private readonly _menuComponent: MenuComponent;\n\n /** @hidden */\n @ViewChild(OverflowLayoutComponent)\n private readonly _overflowLayout: OverflowLayoutComponent;\n\n /** @hidden */\n _ariaLabel: string;\n\n /**\n * @hidden\n * Array of breadcrumb items.\n */\n _items$ = signal<BreadcrumbItemComponent[]>([]);\n\n /** @hidden */\n _placement$ = computed<Placement>(() => (this._rtl$() ? 'bottom-end' : 'bottom-start'));\n\n /** Element reference. */\n readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /** @hidden */\n private readonly _rtlService = inject(RtlService, {\n optional: true\n });\n\n /** @hidden */\n private readonly _rtl$ = computed<boolean>(() => !!this._rtlService?.rtlSignal());\n\n /** @hidden */\n private readonly _lang$ = inject(FD_LANGUAGE);\n\n /** @hidden */\n private readonly _translationResolver = new TranslationResolver();\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n onResize(): void {\n this._overflowLayout.triggerRecalculation();\n }\n\n /**\n * Function that handles click, touch, enter and space events.\n */\n itemClicked(breadcrumbItem: BreadcrumbItemComponent, $event: Event): void {\n $event.preventDefault();\n breadcrumbItem.breadcrumbLink.elementRef.nativeElement.click();\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._lang$.pipe(takeUntilDestroyed(this._destroyRef)).subscribe((lang: FdLanguage) => {\n this._ariaLabel = this._translationResolver.resolve(lang, 'coreBreadcrumb.breadcrumbTrailLabel');\n });\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._setItems();\n\n this._contentItems.changes.subscribe(() => this._setItems());\n\n this._menuComponent._navContainerRole = 'dialog';\n this._menuComponent._menuListContainerRole = 'menu';\n }\n\n /** @hidden */\n _keyDownHandle(event: Event): void {\n this._menuComponent.toggle();\n event.preventDefault();\n }\n\n /** @hidden */\n _onHiddenChange(isHidden: boolean, breadcrumb: BreadcrumbItemComponent): void {\n if (!isHidden) {\n breadcrumb._detach();\n } else {\n breadcrumb._attach();\n }\n }\n\n /** @hidden */\n _onVisibleItemsCountChange(visibleItemsCount: number): void {\n this.visibleItemsCount.emit(visibleItemsCount);\n }\n\n /** @hidden */\n _onHiddenItemsCountChange(hiddenItemsCount: number): void {\n this.hiddenItemsCount.emit(hiddenItemsCount);\n }\n\n /** @hidden */\n private _setItems(): void {\n this._contentItems.forEach((item) => item.setPortal());\n this._items$.set(this._contentItems.toArray());\n }\n}\n","<fd-overflow-layout\n [reverseHiddenItems]=\"!reverse\"\n showMorePosition=\"left\"\n [enableKeyboardNavigation]=\"false\"\n (visibleItemsCount)=\"_onVisibleItemsCountChange($event)\"\n (hiddenItemsCount)=\"_onHiddenItemsCountChange($event)\"\n ariaRole=\"list\"\n>\n @for (breadcrumb of _items$(); track breadcrumb) {\n <div\n *fdOverflowItemRef=\"breadcrumb; let hidden\"\n fdOverflowLayoutItem\n (hiddenChange)=\"_onHiddenChange($event, breadcrumb)\"\n >\n <ng-template [cdkPortalOutlet]=\"breadcrumb.portal\"></ng-template>\n </div>\n }\n <ng-container *fdOverflowExpand=\"let breadcrumbs; items: _items$()\">\n <fd-menu #menu [closeOnEscapeKey]=\"true\" [focusAutoCapture]=\"true\" [placement]=\"_placement$()\">\n @for (breadcrumbItem of breadcrumbs; track breadcrumbItem) {\n <li\n fd-menu-item\n [disabled]=\"\n breadcrumbItem.item.breadcrumbLink ? breadcrumbItem.item.breadcrumbLink.disabled : false\n \"\n >\n <a fd-menu-interactive (click)=\"itemClicked(breadcrumbItem.item, $event)\">\n @if (breadcrumbItem?.item.breadcrumbLink) {\n @if (breadcrumbItem.item.breadcrumbLink._prefixIconName) {\n <fd-menu-addon\n position=\"before\"\n [glyph]=\"breadcrumbItem.item.breadcrumbLink._prefixIconName\"\n ></fd-menu-addon>\n }\n <span fd-menu-title>\n <ng-container [cdkPortalOutlet]=\"breadcrumbItem.item.linkContentPortal\"></ng-container>\n </span>\n @if (breadcrumbItem.item.breadcrumbLink._postfixIconName) {\n <fd-menu-addon\n [glyph]=\"breadcrumbItem.item.breadcrumbLink._postfixIconName\"\n ></fd-menu-addon>\n }\n } @else {\n <span fd-menu-title>\n <ng-container\n [cdkPortalOutlet]=\"breadcrumbItem.item.breadcrumbItemPortal\"\n ></ng-container>\n </span>\n }\n </a>\n </li>\n }\n </fd-menu>\n @if (breadcrumbs.length > 0) {\n <span class=\"fd-breadcrumb__item\" [fdMenuTrigger]=\"menu\">\n <a\n fd-link\n [attr.aria-label]=\"'coreBreadcrumb.overflowTitleMore' | fdTranslate\"\n aria-haspopup=\"menu\"\n tabindex=\"0\"\n class=\"fd-breadcrumb__collapsed\"\n (keydown.enter)=\"_keyDownHandle($event)\"\n (keydown.space)=\"_keyDownHandle($event)\"\n >\n <fd-icon\n glyph=\"overflow\"\n [title]=\"'coreBreadcrumb.overflowTitleMore' | fdTranslate\"\n [ariaLabel]=\"'coreBreadcrumb.overflowTitleMore' | fdTranslate\"\n ></fd-icon>\n <fd-icon glyph=\"slim-arrow-down\"></fd-icon>\n </a>\n </span>\n }\n </ng-container>\n</fd-overflow-layout>\n<ng-content></ng-content>\n","import { NgModule } from '@angular/core';\n\nimport { ContentDensityModule } from '@fundamental-ngx/core/content-density';\nimport { LinkComponent } from '@fundamental-ngx/core/link';\nimport { BreadcrumbItemComponent } from './breadcrumb-item.component';\nimport { BreadcrumbComponent } from './breadcrumb.component';\n\nconst components = [BreadcrumbComponent, BreadcrumbItemComponent, LinkComponent, ContentDensityModule];\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n imports: [...components],\n exports: [...components]\n})\nexport class BreadcrumbModule {}\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-breadcrumb.mjs","sources":["../../../../libs/core/breadcrumb/tokens.ts","../../../../libs/core/breadcrumb/breadcrumb-item.component.ts","../../../../libs/core/breadcrumb/breadcrumb.component.ts","../../../../libs/core/breadcrumb/breadcrumb.component.html","../../../../libs/core/breadcrumb/breadcrumb.module.ts","../../../../libs/core/breadcrumb/fundamental-ngx-core-breadcrumb.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport const FD_BREADCRUMB_ITEM_COMPONENT = new InjectionToken('FdBreadcrumbItemComponent');\nexport const FD_BREADCRUMB_COMPONENT = new InjectionToken('FdBreadcrumbComponent');\n","import { DomPortal } from '@angular/cdk/portal';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ElementRef,\n ViewEncapsulation\n} from '@angular/core';\nimport { FD_LINK_COMPONENT, LinkComponent } from '@fundamental-ngx/core/link';\nimport { FD_BREADCRUMB_ITEM_COMPONENT } from './tokens';\n\n/**\n * Breadcrumb item directive. Must have child breadcrumb link directives.\n *\n * ```html\n * <fd-breadcrumb-item>\n * <a fd-link [routerLink]=\"'#'\">Breadcrumb Link</a>\n * </fd-breadcrumb-item>\n * ```\n */\n@Component({\n selector: 'fd-breadcrumb-item',\n template: `<ng-content></ng-content> <span class=\"fd-breadcrumb__separator\" aria-hidden=\"true\"></span>`,\n host: {\n class: 'fd-breadcrumb__item'\n },\n providers: [\n {\n provide: FD_BREADCRUMB_ITEM_COMPONENT,\n useExisting: BreadcrumbItemComponent\n }\n ],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\n})\nexport class BreadcrumbItemComponent implements AfterViewInit {\n /** @hidden */\n @ContentChild(FD_LINK_COMPONENT)\n breadcrumbLink: LinkComponent;\n\n /** In case there is no link in Item and breadcrumb item is non-interactive, we move whole item content to menu item title */\n breadcrumbItemPortal: DomPortal<Element>;\n\n /** When breadcrumb item has link in it, we are moving link content to menu item title */\n linkContentPortal: DomPortal;\n\n /**\n * Breadcrumb item dom portal.\n */\n portal: DomPortal;\n\n /** @hidden */\n private _attached = false;\n\n /** @hidden */\n constructor(public readonly elementRef: ElementRef<HTMLElement>) {}\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._attach();\n }\n\n /**\n * Sets breadcrumb item dom portal.\n */\n setPortal(): void {\n if (!this.portal) {\n this.portal = new DomPortal(this.elementRef);\n }\n }\n\n /** @hidden */\n _detach(): void {\n if (!this._attached) {\n return;\n }\n\n if (this.linkContentPortal?.isAttached) {\n this.linkContentPortal?.detach();\n }\n\n if (this.breadcrumbItemPortal?.isAttached) {\n this.breadcrumbItemPortal?.detach();\n }\n\n this._attached = false;\n }\n\n /** @hidden */\n _attach(): void {\n if (this._attached) {\n return;\n }\n\n if (this.breadcrumbLink && this.breadcrumbLink.contentSpan) {\n this.linkContentPortal = new DomPortal<HTMLElement>(this.breadcrumbLink.contentSpan.nativeElement);\n }\n\n this.breadcrumbItemPortal = new DomPortal(this.elementRef.nativeElement.firstElementChild as Element);\n this._attached = true;\n }\n}\n","import { PortalModule } from '@angular/cdk/portal';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n DestroyRef,\n ElementRef,\n EventEmitter,\n Input,\n OnInit,\n Output,\n QueryList,\n ViewChild,\n ViewEncapsulation,\n computed,\n inject,\n input,\n signal\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { HasElementRef, RtlService } from '@fundamental-ngx/cdk/utils';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { LinkComponent } from '@fundamental-ngx/core/link';\nimport {\n GlyphMenuAddonDirective,\n MenuAddonDirective,\n MenuComponent,\n MenuInteractiveComponent,\n MenuItemComponent,\n MenuTitleDirective,\n MenuTriggerDirective\n} from '@fundamental-ngx/core/menu';\nimport {\n OverflowExpandDirective,\n OverflowItemRefDirective,\n OverflowLayoutComponent,\n OverflowLayoutItemDirective\n} from '@fundamental-ngx/core/overflow-layout';\nimport { Placement } from '@fundamental-ngx/core/shared';\nimport { FD_LANGUAGE, FdLanguage, FdTranslatePipe, TranslationResolver } from '@fundamental-ngx/i18n';\nimport { BreadcrumbItemComponent } from './breadcrumb-item.component';\nimport { FD_BREADCRUMB_COMPONENT, FD_BREADCRUMB_ITEM_COMPONENT } from './tokens';\n\nexport type BreadcrumbSeparatorStyle =\n | ''\n | 'backslash'\n | 'double-slash'\n | 'double-backslash'\n | 'greater-than'\n | 'double-greater-than';\n\n/**\n * Breadcrumb parent wrapper directive. Must have breadcrumb item child directives.\n *\n * ```html\n * <fd-breadcrumb>\n * <fd-breadcrumb-item>\n * <a fd-link [routerLink]=\"'#'\">Breadcrumb Link</a>\n * </fd-breadcrumb-item>\n * </fd-breadcrumb>\n * ```\n */\n@Component({\n selector: 'fd-breadcrumb',\n host: {\n role: 'navigation',\n '[class]': '_cssClass()',\n '[attr.aria-label]': '_ariaLabel'\n },\n templateUrl: './breadcrumb.component.html',\n styleUrl: './breadcrumb.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: FD_BREADCRUMB_COMPONENT,\n useExisting: BreadcrumbComponent\n }\n ],\n imports: [\n OverflowLayoutComponent,\n OverflowItemRefDirective,\n OverflowLayoutItemDirective,\n PortalModule,\n OverflowExpandDirective,\n MenuComponent,\n MenuItemComponent,\n MenuInteractiveComponent,\n GlyphMenuAddonDirective,\n MenuAddonDirective,\n MenuTitleDirective,\n MenuTriggerDirective,\n LinkComponent,\n IconComponent,\n FdTranslatePipe\n ]\n})\nexport class BreadcrumbComponent implements OnInit, AfterViewInit, HasElementRef {\n /** Whether to append items to the overflow dropdown in reverse order. Default is true. */\n @Input()\n reverse = false;\n\n /** Tabindex of the breadcrumb. */\n @Input()\n tabIndex = '0';\n\n /**\n * Event emitted when visible items count is changed.\n */\n @Output()\n visibleItemsCount = new EventEmitter<number>();\n\n /**\n * Event emitted when hidden items count is changed.\n */\n @Output()\n hiddenItemsCount = new EventEmitter<number>();\n\n /** @hidden */\n @ContentChildren(FD_BREADCRUMB_ITEM_COMPONENT)\n private readonly _contentItems: QueryList<BreadcrumbItemComponent>;\n\n /** @hidden */\n @ViewChild(MenuComponent)\n private readonly _menuComponent: MenuComponent;\n\n /** @hidden */\n @ViewChild(OverflowLayoutComponent)\n private readonly _overflowLayout: OverflowLayoutComponent;\n\n /**\n * Separator style for the breadcrumb items.\n * Can be 'backslash' | 'double-slash' | 'double-backslash' | 'greater-than' | 'double-greater-than'\n * Omit for default (slash)\n */\n separatorStyle = input<BreadcrumbSeparatorStyle>('');\n\n /** @hidden */\n _ariaLabel: string;\n\n /**\n * @hidden\n * Array of breadcrumb items.\n */\n _items$ = signal<BreadcrumbItemComponent[]>([]);\n\n /** @hidden */\n readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /** @hidden */\n protected readonly placement = computed<Placement>(() => (this._rtlService?.rtl() ? 'bottom-end' : 'bottom-start'));\n\n /** @hidden */\n protected readonly _cssClass = computed(() => {\n const classes = ['fd-breadcrumb'];\n const style = this.separatorStyle();\n if (style) {\n classes.push(`fd-breadcrumb--${style}`);\n }\n return classes.join(' ');\n });\n\n /** @hidden */\n private readonly _rtlService = inject(RtlService, {\n optional: true\n });\n\n /** @hidden */\n private readonly _lang$ = inject(FD_LANGUAGE);\n\n /** @hidden */\n private readonly _translationResolver = new TranslationResolver();\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n onResize(): void {\n this._overflowLayout.triggerRecalculation();\n }\n\n /**\n * Function that handles click, touch, enter and space events.\n */\n itemClicked(breadcrumbItem: BreadcrumbItemComponent, $event: Event): void {\n $event.preventDefault();\n breadcrumbItem.breadcrumbLink.elementRef.nativeElement.click();\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._lang$.pipe(takeUntilDestroyed(this._destroyRef)).subscribe((lang: FdLanguage) => {\n this._ariaLabel = this._translationResolver.resolve(lang, 'coreBreadcrumb.breadcrumbTrailLabel');\n });\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._setItems();\n\n this._contentItems.changes.subscribe(() => this._setItems());\n\n this._menuComponent._navContainerRole = 'dialog';\n this._menuComponent._menuListContainerRole = 'menu';\n }\n\n /** @hidden */\n _keyDownHandle(event: Event): void {\n this._menuComponent.toggle();\n event.preventDefault();\n }\n\n /** @hidden */\n _onHiddenChange(isHidden: boolean, breadcrumb: BreadcrumbItemComponent): void {\n if (!isHidden) {\n breadcrumb._detach();\n } else {\n breadcrumb._attach();\n }\n }\n\n /** @hidden */\n _onVisibleItemsCountChange(visibleItemsCount: number): void {\n this.visibleItemsCount.emit(visibleItemsCount);\n }\n\n /** @hidden */\n _onHiddenItemsCountChange(hiddenItemsCount: number): void {\n this.hiddenItemsCount.emit(hiddenItemsCount);\n }\n\n /** @hidden */\n private _setItems(): void {\n this._contentItems.forEach((item) => item.setPortal());\n this._items$.set(this._contentItems.toArray());\n }\n}\n","<fd-overflow-layout\n [reverseHiddenItems]=\"!reverse\"\n showMorePosition=\"left\"\n [enableKeyboardNavigation]=\"false\"\n (visibleItemsCount)=\"_onVisibleItemsCountChange($event)\"\n (hiddenItemsCount)=\"_onHiddenItemsCountChange($event)\"\n ariaRole=\"list\"\n>\n @for (breadcrumb of _items$(); track breadcrumb) {\n <div\n *fdOverflowItemRef=\"breadcrumb; let hidden\"\n fdOverflowLayoutItem\n (hiddenChange)=\"_onHiddenChange($event, breadcrumb)\"\n >\n <ng-template [cdkPortalOutlet]=\"breadcrumb.portal\"></ng-template>\n </div>\n }\n <ng-container *fdOverflowExpand=\"let breadcrumbs; items: _items$()\">\n <fd-menu #menu [closeOnEscapeKey]=\"true\" [focusAutoCapture]=\"true\" [placement]=\"placement()\">\n @for (breadcrumbItem of breadcrumbs; track breadcrumbItem) {\n <li\n fd-menu-item\n [disabled]=\"\n breadcrumbItem.item.breadcrumbLink ? breadcrumbItem.item.breadcrumbLink.disabled : false\n \"\n >\n <a fd-menu-interactive (click)=\"itemClicked(breadcrumbItem.item, $event)\">\n @if (breadcrumbItem?.item.breadcrumbLink) {\n @if (breadcrumbItem.item.breadcrumbLink._prefixIconName) {\n <fd-menu-addon\n position=\"before\"\n [glyph]=\"breadcrumbItem.item.breadcrumbLink._prefixIconName\"\n ></fd-menu-addon>\n }\n <span fd-menu-title>\n <ng-container [cdkPortalOutlet]=\"breadcrumbItem.item.linkContentPortal\"></ng-container>\n </span>\n @if (breadcrumbItem.item.breadcrumbLink._postfixIconName) {\n <fd-menu-addon\n [glyph]=\"breadcrumbItem.item.breadcrumbLink._postfixIconName\"\n ></fd-menu-addon>\n }\n } @else {\n <span fd-menu-title>\n <ng-container\n [cdkPortalOutlet]=\"breadcrumbItem.item.breadcrumbItemPortal\"\n ></ng-container>\n </span>\n }\n </a>\n </li>\n }\n </fd-menu>\n @if (breadcrumbs.length > 0) {\n <span class=\"fd-breadcrumb__item\" [fdMenuTrigger]=\"menu\">\n <a\n fd-link\n [attr.aria-label]=\"'coreBreadcrumb.overflowTitleMore' | fdTranslate\"\n aria-haspopup=\"menu\"\n tabindex=\"0\"\n class=\"fd-breadcrumb__collapsed\"\n (keydown.enter)=\"_keyDownHandle($event)\"\n (keydown.space)=\"_keyDownHandle($event)\"\n >\n <fd-icon\n glyph=\"overflow\"\n [title]=\"'coreBreadcrumb.overflowTitleMore' | fdTranslate\"\n [ariaLabel]=\"'coreBreadcrumb.overflowTitleMore' | fdTranslate\"\n ></fd-icon>\n <fd-icon glyph=\"slim-arrow-down\"></fd-icon>\n </a>\n <span class=\"fd-breadcrumb__separator\" aria-hidden=\"true\"></span>\n </span>\n }\n </ng-container>\n</fd-overflow-layout>\n<ng-content></ng-content>\n","import { NgModule } from '@angular/core';\n\nimport { ContentDensityModule } from '@fundamental-ngx/core/content-density';\nimport { LinkComponent } from '@fundamental-ngx/core/link';\nimport { BreadcrumbItemComponent } from './breadcrumb-item.component';\nimport { BreadcrumbComponent } from './breadcrumb.component';\n\nconst components = [BreadcrumbComponent, BreadcrumbItemComponent, LinkComponent, ContentDensityModule];\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n imports: [...components],\n exports: [...components]\n})\nexport class BreadcrumbModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}