@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-message-strip.mjs","sources":["../../../../libs/core/message-strip/alert/message-strip-alert.ref.ts","../../../../libs/core/message-strip/alert/default-config.ts","../../../../libs/core/message-strip/alert/tokens.ts","../../../../libs/core/message-strip/alert/message-strip-alert-container-footer/message-strip-alert-container-footer.component.ts","../../../../libs/core/message-strip/message-strip-icon.directive.ts","../../../../libs/core/message-strip/message-strip.enum.ts","../../../../libs/core/message-strip/message-strip.component.ts","../../../../libs/core/message-strip/message-strip.component.html","../../../../libs/core/message-strip/auto-dismiss-message-strip.directive.ts","../../../../libs/core/message-strip/alert/message-strip-alert/message-strip-alert.component.ts","../../../../libs/core/message-strip/alert/message-strip-alert/message-strip-alert.component.html","../../../../libs/core/message-strip/alert/message-strip-alert-container/message-strip-alert-container.component.ts","../../../../libs/core/message-strip/alert/message-strip-alert.service.ts","../../../../libs/core/message-strip/message-strip-indication-color.ts","../../../../libs/core/message-strip/message-strip.module.ts","../../../../libs/core/message-strip/fundamental-ngx-core-message-strip.ts"],"sourcesContent":["import { ComponentPortal } from '@angular/cdk/portal';\nimport { Observable } from 'rxjs';\nimport { MessageStripAlert } from './message-strip-alert/message-strip-alert.interface';\n\nexport abstract class MessageStripAlertRef {\n /** Message strip alert component portal which is rendered in the container */\n abstract portal: ComponentPortal<MessageStripAlert>;\n /**\n * Function, which dismisses the alert, it calls the user-provided function\n * after dismissing the actual alert\n */\n abstract dismiss: () => void;\n /** Observable that emits when the alert is dismissed */\n abstract onDismiss$: Observable<void>;\n}\n","import { OpenMessageStripAlertConfig } from './open-message-strip-alert.config';\n\nconst defaultConfig: Required<Omit<OpenMessageStripAlertConfig, 'content'>> = {\n position: 'top-middle',\n messageStrip: {},\n closeOnNavigation: false\n};\n\n/**\n * Applies default config to the given config\n */\nexport function applyDefaultConfig<ComponentType = unknown>(\n config: OpenMessageStripAlertConfig<ComponentType>\n): Required<OpenMessageStripAlertConfig<ComponentType>> {\n return { ...defaultConfig, ...config };\n}\n","import { InjectionToken, TemplateRef, Type } from '@angular/core';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { Observable } from 'rxjs';\nimport { MessageStripAlertPosition } from './message-strip-alert.position';\nimport { MessageStripAlertRef } from './message-strip-alert.ref';\nimport { MessageStripConfiguration } from './message-strip-configuration-type';\n\n/**\n * Injection token for getting the position of the message strip alert container.\n * Is available in any of the message strip alert components and in footer component.\n */\nexport const MessageStripAlertContainerPosition = new InjectionToken<MessageStripAlertPosition>(\n 'MessageStripAlertContainerPosition'\n);\n/**\n * Injection token for getting the list of the message strip alert refs\n * in the given container. Is available in the footer component injection\n * context.\n */\nexport const MessageStripAlertContainerAlertRefs = new InjectionToken<Observable<Nullable<MessageStripAlertRef[]>>>(\n 'MessageStripAlertContainerAlertRefs'\n);\n\nexport const MessageStripAlertComponentData = new InjectionToken<{\n content: string | TemplateRef<any> | Type<any>;\n closeOnNavigation: boolean;\n messageStripConfig: MessageStripConfiguration;\n}>('MessageStripAlertComponentData');\n","import { ComponentPortal, PortalModule } from '@angular/cdk/portal';\nimport { AfterViewInit, Component, DestroyRef, Injector, Input, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { BehaviorSubject, map, tap } from 'rxjs';\nimport { MessageStripAlertRef } from '../message-strip-alert.ref';\nimport { MessageStripAlertService } from '../message-strip-alert.service';\nimport { MessageStripAlertContainerAlertRefs, MessageStripAlertContainerPosition } from '../tokens';\n\n/**\n * The component that represents the footer of the message strip alert container.\n * if user has provided the footer component through service, then this component\n * will render it inside itself.\n * Bear in mind that this component is always created, just sometimes if there is nothing to render\n * it will be empty.\n */\n@Component({\n selector: 'fd-message-strip-alert-container-footer',\n template: ` <ng-template [cdkPortalOutlet]=\"footerComponentPortal\"></ng-template> `,\n styles: [\n `\n :host {\n display: block;\n }\n `\n ],\n imports: [PortalModule]\n})\nexport class MessageStripAlertContainerFooterComponent implements AfterViewInit {\n /** @hidden */\n @Input()\n set alertRefs(alertRefs: Nullable<MessageStripAlertRef[]>) {\n this.alertRefs$.next(alertRefs);\n }\n\n /**\n * Reference to the user provided component's portal.\n */\n footerComponentPortal?: ComponentPortal<any>;\n\n /**\n * Position of the overlay in which this component is rendered.\n */\n private position = inject(MessageStripAlertContainerPosition);\n\n /** @hidden */\n private _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n private messageStripAlertService = inject(MessageStripAlertService);\n\n /**\n * Observable that emits the alert references that are currently rendered in the container.\n */\n private alertRefs$ = new BehaviorSubject<Nullable<MessageStripAlertRef[]>>([]);\n\n /** @hidden */\n ngAfterViewInit(): void {\n this.messageStripAlertService.footerComponents$\n .pipe(\n map((components) => components[this.position]),\n tap((footerComponent) => {\n if (footerComponent) {\n this.footerComponentPortal = new ComponentPortal(\n footerComponent,\n null,\n Injector.create({\n providers: [\n {\n provide: MessageStripAlertContainerAlertRefs,\n useValue: this.alertRefs$.pipe(takeUntilDestroyed(this._destroyRef))\n }\n ]\n })\n );\n } else {\n this.footerComponentPortal = undefined;\n }\n }),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe();\n }\n}\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[fdMessageStripIcon]',\n standalone: true\n})\nexport class MessageStripIconDirective {\n /** @hidden */\n constructor(readonly templateRef: TemplateRef<void>) {}\n}\n","export const enum MessageStripTypeEnum {\n INFORMATION = 'information',\n WARNING = 'warning',\n SUCCESS = 'success',\n ERROR = 'error'\n}\n\nexport const enum MessageStringIconEnum {\n ALERT = 'alert',\n SUCCESS = 'sys-enter-2',\n ERROR = 'error',\n INFORMATION = 'information'\n}\n\nexport const enum MessageStripAnnouncement {\n INFORMATION = 'coreMessageStrip.announcementInfo',\n WARNING = 'coreMessageStrip.announcementWarning',\n SUCCESS = 'coreMessageStrip.announcementSuccess',\n ERROR = 'coreMessageStrip.announcementError'\n}\n\nexport type MessageStripAnnouncementType = `${MessageStripAnnouncement}`;\n\nexport const MESSAGE_STRIP_CLOSABLE = 'coreMessageStrip.closable';\n\nexport const MESSAGE_STRIP_DEFAULT_DISMISS_BUTTON_TEXT = 'coreMessageStrip.dismissLabel';\n\nexport const DEFAULT_HIDDEN_TEXT = 'Message strip';\n\nexport const DEFAULT_DISMISS_BUTTON_TEXT = 'Close';\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { AsyncPipe, NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n DestroyRef,\n ElementRef,\n EventEmitter,\n HostBinding,\n inject,\n Input,\n OnChanges,\n OnInit,\n Output,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { applyCssClass, CssClassBuilder, Nullable } from '@fundamental-ngx/cdk/utils';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { ContentDensityDirective } from '@fundamental-ngx/core/content-density';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { FD_LANGUAGE, FdLanguage, I18nModule, TranslationResolver } from '@fundamental-ngx/i18n';\nimport { map, of, withLatestFrom } from 'rxjs';\nimport { Observable } from 'rxjs/internal/Observable';\nimport { MessageStripIconDirective } from './message-strip-icon.directive';\nimport { MessageStripIndicationColor } from './message-strip-indication-color';\nimport { MessageStripType } from './message-strip-type';\nimport {\n DEFAULT_DISMISS_BUTTON_TEXT,\n DEFAULT_HIDDEN_TEXT,\n MESSAGE_STRIP_CLOSABLE,\n MESSAGE_STRIP_DEFAULT_DISMISS_BUTTON_TEXT,\n MessageStringIconEnum,\n MessageStripAnnouncement,\n MessageStripAnnouncementType,\n MessageStripTypeEnum\n} from './message-strip.enum';\n\nlet messageStripUniqueId = 0;\n\n/**\n * The component that represents a message-strip. It can only be used inline.\n */\n@Component({\n selector: 'fd-message-strip',\n templateUrl: './message-strip.component.html',\n styleUrl: './message-strip.component.scss',\n host: {\n '[attr.aria-label]': 'ariaLabel',\n '[style.width]': 'width',\n '[style.min-width]': 'minWidth',\n '[style.margin-bottom]': 'marginBottom',\n '[attr.id]': 'id',\n role: 'note'\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [ButtonComponent, ContentDensityDirective, I18nModule, NgTemplateOutlet, IconComponent, AsyncPipe]\n})\nexport class MessageStripComponent implements OnInit, OnChanges, CssClassBuilder {\n /** User's custom classes */\n @Input() class = '';\n\n /** Whether the message strip is dismissible. */\n @Input({ transform: booleanAttribute })\n @HostBinding('class.fd-message-strip--dismissible')\n dismissible: BooleanInput = true;\n\n /** Id of the element that labels the message-strip. */\n @Input() ariaLabelledBy: Nullable<string>;\n\n /** Set aria-labelledby for fd-message-strip. */\n @HostBinding('attr.aria-labelledby')\n get hostAriaLabelledBy(): Nullable<string> {\n if (this.ariaLabelledBy) {\n return this.ariaLabelledBy;\n }\n return `${this.id}-hidden-text ${this.id}-content-text`;\n }\n\n /** Title for dismiss button */\n @Input()\n dismissBtnTitle: string;\n\n /** The default message strip does not have an icon.\n * The other types (warning, success, information and error) have icons by default.\n * To remove the icon set the property to true.\n */\n @Input({ transform: booleanAttribute })\n @HostBinding('class.fd-message-strip--no-icon')\n noIcon: BooleanInput = false;\n\n /** The type of the message strip.\n * Can be one of *warning*, *success*, *information*, *error* or null.\n */\n @Input() type: MessageStripType;\n\n /** Id for the message-strip component. If omitted, a unique one is generated. */\n @Input() id: string = 'fd-message-strip-' + messageStripUniqueId++;\n\n /** Aria label for the message-strip component element. */\n @Input() ariaLabel: Nullable<string>;\n\n /** Width of the message-strip. */\n @Input() width: string;\n\n /** Minimum width of the message-strip. */\n @Input() minWidth: string;\n\n /** Margin bottom of the message-strip. */\n @Input() marginBottom: string;\n\n /** indication color of the message-strip. */\n @Input() indicationColor: MessageStripIndicationColor;\n\n /** Event fired when the message-strip is dismissed. */\n @Output() // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n onDismiss: EventEmitter<void> = new EventEmitter<void>();\n\n /** Custom icon component */\n @ContentChild(MessageStripIconDirective)\n icon: MessageStripIconDirective;\n\n /** message strip information read by screen readers */\n messageStripHiddenText$: Observable<string>;\n\n /** default dismiss button text read by screen readers */\n defaultDismissButtonText$: Observable<string>;\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n private readonly _lang$ = inject(FD_LANGUAGE);\n\n /** @hidden */\n private _translationResolver = inject(TranslationResolver);\n\n /** @hidden */\n constructor(public readonly elementRef: ElementRef) {}\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-message-strip',\n this.type ? `fd-message-strip--${this.type}` : '',\n this.dismissible ? 'fd-message-strip--dismissible' : '',\n this.noIcon ? 'fd-message-strip--no-icon' : '',\n this.indicationColor ? `fd-message-strip--indication-color-${this.indicationColor}` : '',\n this.class\n ];\n }\n\n /** @hidden */\n ngOnInit(): void {\n this.buildComponentCssClass();\n this.setScreenReaderTexts();\n }\n\n /** @hidden */\n ngOnChanges(): void {\n this.buildComponentCssClass();\n }\n\n /** Whether icon container should be shown */\n get shouldShowIcon(): boolean {\n if (this.noIcon) {\n return false;\n }\n return !!this.icon || !!this.type;\n }\n\n /** @hidden */\n get typeSpecificIconName(): string {\n switch (this.type) {\n case MessageStripTypeEnum.WARNING:\n return MessageStringIconEnum.ALERT;\n case MessageStripTypeEnum.SUCCESS:\n return MessageStringIconEnum.SUCCESS;\n case MessageStripTypeEnum.ERROR:\n return MessageStringIconEnum.ERROR;\n case MessageStripTypeEnum.INFORMATION:\n return MessageStringIconEnum.INFORMATION;\n default:\n return '';\n }\n }\n\n /**\n * Dismisses the message-strip.\n */\n dismiss(): void {\n this.elementRef.nativeElement.classList.add('fd-has-display-none');\n this.elementRef.nativeElement.classList.remove('fd-has-display-block');\n this.onDismiss.emit();\n }\n\n /** Sets screen reader texts for message strip type announcement and dismiss button */\n private setScreenReaderTexts(): void {\n if (!this.type) {\n return;\n }\n\n const announcementMap: Record<MessageStripTypeEnum, MessageStripAnnouncementType> = {\n [MessageStripTypeEnum.WARNING]: MessageStripAnnouncement.WARNING,\n [MessageStripTypeEnum.SUCCESS]: MessageStripAnnouncement.SUCCESS,\n [MessageStripTypeEnum.ERROR]: MessageStripAnnouncement.ERROR,\n [MessageStripTypeEnum.INFORMATION]: MessageStripAnnouncement.INFORMATION\n };\n\n const announcementType = announcementMap[this.type];\n\n if (announcementType) {\n const announcement$ = this._translateAnnouncement(announcementType);\n this.messageStripHiddenText$ = this._buildMessageStripHiddenText(announcement$);\n this.defaultDismissButtonText$ = this._getHiddenButtonText(announcement$);\n } else {\n this.messageStripHiddenText$ = of(DEFAULT_HIDDEN_TEXT);\n this.defaultDismissButtonText$ = of(DEFAULT_DISMISS_BUTTON_TEXT);\n }\n }\n\n /** @hidden */\n private _translateAnnouncement(announcementType: MessageStripAnnouncementType): Observable<string> {\n return this._lang$.pipe(\n takeUntilDestroyed(this._destroyRef),\n map((lang: FdLanguage) => this._translationResolver.resolve(lang, announcementType))\n );\n }\n\n /** @hidden */\n private _buildMessageStripHiddenText(announcement$: Observable<string>): Observable<string> {\n return this._lang$.pipe(\n takeUntilDestroyed(this._destroyRef),\n withLatestFrom(announcement$),\n map(([lang, announcement]: [FdLanguage, string]) => {\n const closable = this._translationResolver.resolve(lang, MESSAGE_STRIP_CLOSABLE);\n return `${announcement} ${this.dismissible ? closable : ''}`;\n })\n );\n }\n\n /** @hidden **/\n private _getHiddenButtonText(announcement$: Observable<string>): Observable<string> {\n return this._lang$.pipe(\n takeUntilDestroyed(this._destroyRef),\n withLatestFrom(announcement$),\n map(([lang, announcement]: [FdLanguage, string]) => {\n const closeButtonText = this._translationResolver.resolve(\n lang,\n MESSAGE_STRIP_DEFAULT_DISMISS_BUTTON_TEXT\n );\n return `${announcement} ${closeButtonText}`;\n })\n );\n }\n}\n","@if (shouldShowIcon) {\n <div class=\"fd-message-strip__icon-container\" aria-hidden=\"true\">\n @if (icon) {\n <ng-template [ngTemplateOutlet]=\"icon.templateRef\"></ng-template>\n } @else {\n <fd-icon [glyph]=\"typeSpecificIconName\" role=\"presentation\" aria-hidden=\"true\"></fd-icon>\n <span class=\"fd-message-strip__sr-only\" id=\"{{ id }}-hidden-text\">{{\n messageStripHiddenText$ | async\n }}</span>\n }\n </div>\n}\n<p class=\"fd-message-strip__text\" id=\"{{ id }}-content-text\">\n <ng-content></ng-content>\n</p>\n@if (dismissible) {\n <button\n class=\"fd-message-strip__close\"\n fd-button\n glyph=\"decline\"\n fdType=\"transparent\"\n fdCompact\n (click)=\"dismiss()\"\n [attr.aria-controls]=\"id\"\n [attr.aria-label]=\"dismissBtnTitle || (defaultDismissButtonText$ | async)\"\n [attr.title]=\"dismissBtnTitle || (defaultDismissButtonText$ | async)\"\n ></button>\n}\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, DestroyRef, Directive, ElementRef, inject, Input, isDevMode } from '@angular/core';\nimport { destroyObservable } from '@fundamental-ngx/cdk/utils';\nimport { fromEvent, map, merge, Observable, of, startWith, takeUntil } from 'rxjs';\nimport { switchMap } from 'rxjs/operators';\nimport { MessageStripComponent } from './message-strip.component';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'fd-message-strip[mousePersist], fd-message-strip[duration], fd-message-strip[autoDismiss]',\n exportAs: 'fdAutoDismissMessageStrip',\n standalone: true,\n host: {\n '[style.display]': '!opened ? \"none\" : null'\n }\n})\nexport class AutoDismissMessageStripDirective {\n /** Whether the message strip is dismissible */\n @Input({ transform: booleanAttribute })\n dismissible: BooleanInput = true;\n\n /** Whether the alert should be automatically dismissed. */\n @Input({ transform: booleanAttribute })\n autoDismiss: BooleanInput = true;\n\n /** Duration of time *in milliseconds* that the alert will be visible. Set to -1 for indefinite. */\n @Input() duration = 10000;\n\n /** Whether the alert should stay open if the mouse is hovering over it. */\n @Input({ transform: booleanAttribute })\n mousePersist: BooleanInput = false;\n\n /** Whether the message strip is currently opened. */\n opened = false;\n\n /** @hidden */\n private messageStripComponent = inject(MessageStripComponent, { optional: false, host: true });\n\n /** @hidden */\n private autoDismissTimeout?: ReturnType<typeof setTimeout>;\n /** @hidden */\n private elementRef = inject(ElementRef);\n\n /** @hidden */\n private _destroyRef = inject(DestroyRef);\n\n /**\n * Mouse is hovering over the message strip.\n * */\n private mouseIn$ = merge(\n fromEvent(this.elementRef.nativeElement, 'mouseenter').pipe(map(() => true)),\n fromEvent(this.elementRef.nativeElement, 'mouseleave').pipe(map(() => false))\n ).pipe(startWith(false));\n\n /** @hidden */\n open(): void {\n this.opened = true;\n this.elementRef.nativeElement.classList.remove('fd-has-display-block');\n this.elementRef.nativeElement.classList.remove('fd-has-display-none');\n this.stopAutoDismiss();\n if (this.autoDismiss && !this.dismissible && isDevMode()) {\n console.warn(\n 'Auto dismiss is enabled but the message strip is not dismissible. Please set the dismissible input to true.'\n );\n }\n if (this.autoDismiss && this.dismissible) {\n this.startAutoDismiss();\n }\n }\n\n /** @hidden */\n private stopAutoDismiss = (): void => {\n if (this.autoDismissTimeout) {\n clearTimeout(this.autoDismissTimeout);\n this.autoDismissTimeout = undefined;\n }\n };\n\n /** @hidden */\n private startAutoDismiss(): void {\n const startAutoDismissTimer$ = new Observable((res) => {\n this.autoDismissTimeout = setTimeout(() => {\n this.dismiss();\n res.next(null);\n }, this.duration);\n return this.stopAutoDismiss;\n });\n if (this.duration > -1) {\n const source$ = this.mousePersist\n ? this.mouseIn$.pipe(\n switchMap((mouseIn) => {\n if (mouseIn) {\n return of(null);\n }\n return startAutoDismissTimer$;\n })\n )\n : startAutoDismissTimer$;\n source$\n .pipe(takeUntil(merge(destroyObservable(this._destroyRef), this.messageStripComponent.onDismiss)))\n .subscribe();\n }\n }\n\n /** @hidden */\n private dismiss = (): void => this.messageStripComponent.dismiss();\n}\n","import { ComponentPortal, DomPortal, Portal, PortalModule, TemplatePortal } from '@angular/cdk/portal';\nimport {\n AfterViewInit,\n Component,\n OnDestroy,\n Renderer2,\n TemplateRef,\n Type,\n ViewChild,\n ViewContainerRef,\n inject\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { NavigationStart, Router } from '@angular/router';\nimport { filter } from 'rxjs';\nimport { AutoDismissMessageStripDirective } from '../../auto-dismiss-message-strip.directive';\nimport { MessageStripComponent } from '../../message-strip.component';\nimport { MessageStripAlertRef } from '../message-strip-alert.ref';\nimport { MessageStripConfiguration } from '../message-strip-configuration-type';\nimport { MessageStripAlertComponentData } from '../tokens';\nimport { MessageStripAlert } from './message-strip-alert.interface';\n\nexport type MessageStripAlertPortalType<ComponentType> =\n | DomPortal\n | TemplatePortal<{\n $implicit: MessageStripAlertRef;\n }>\n | ComponentPortal<ComponentType>;\n\n/**\n * The wrapper component, which is wrapping the Message Strip and passes\n * configuration to it, also generates the content which will appear in it.\n */\n@Component({\n templateUrl: `./message-strip-alert.component.html`,\n imports: [MessageStripComponent, PortalModule, AutoDismissMessageStripDirective]\n})\nexport class MessageStripAlertComponent<ComponentType = unknown>\n implements MessageStripAlert, OnDestroy, AfterViewInit\n{\n /** @hidden */\n @ViewChild(AutoDismissMessageStripDirective)\n autoDismissMessageStripDirective: AutoDismissMessageStripDirective;\n\n /** User provided data. Full of it */\n data = inject(MessageStripAlertComponentData);\n /** Configuration for the message strip appearance */\n messageStripConfig: MessageStripConfiguration;\n /** Portal, which is responsible for correctly rendering user provided content. It can be any type of the portal */\n contentPortal: Portal<unknown>;\n\n /**\n * Reference to the message strip alert, which is used to close it from the outside, or access the data and/or the component instance\n * */\n readonly alertRef = inject(MessageStripAlertRef);\n /** @hidden */\n private viewContainerRef = inject(ViewContainerRef);\n\n /** @hidden */\n private renderer2 = inject(Renderer2);\n\n /**\n * Timeout, which is responsible for auto-dismissing the message strip.\n * It should be properly cleared on component destroy.\n */\n private autoDismissTimeout: ReturnType<typeof setTimeout>;\n\n /** @hidden */\n constructor() {\n this.messageStripConfig = this.data.messageStripConfig;\n this.contentPortal = this.getPortal(this.data.content);\n if (this.data.closeOnNavigation) {\n inject(Router, { optional: true })\n ?.events.pipe(\n filter((event) => event instanceof NavigationStart),\n takeUntilDestroyed()\n )\n .subscribe(() => this.onDismissHandler());\n }\n }\n\n /**\n * Handler for the dismiss button click.\n * */\n onDismissHandler(): void {\n this.messageStripConfig.onDismiss();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n clearTimeout(this.autoDismissTimeout);\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this.autoDismissMessageStripDirective.open();\n }\n\n /**\n * Method, which is responsible for generating the portal, which will be rendered inside the message strip.\n * It can be any type of the portal, depending on the user provided content.\n * */\n private getPortal(\n content:\n | string\n | TemplateRef<{\n $implicit: MessageStripAlertRef;\n }>\n | Type<ComponentType>\n ): MessageStripAlertPortalType<ComponentType> {\n if (typeof content === 'string') {\n const textEl = this.renderer2.createText(content);\n this.renderer2.appendChild(this.viewContainerRef.element.nativeElement, textEl);\n return new DomPortal(textEl);\n }\n if (content instanceof TemplateRef) {\n return new TemplatePortal(content, this.viewContainerRef, { $implicit: this.alertRef });\n }\n return new ComponentPortal(content);\n }\n}\n","<fd-message-strip\n [class]=\"messageStripConfig.class\"\n [dismissible]=\"messageStripConfig.dismissible\"\n [autoDismiss]=\"messageStripConfig.duration > 0\"\n [mousePersist]=\"messageStripConfig.mousePersist\"\n [duration]=\"messageStripConfig.duration\"\n [noIcon]=\"messageStripConfig.noIcon\"\n [type]=\"messageStripConfig.type\"\n [id]=\"messageStripConfig.id\"\n [ariaLabelledBy]=\"messageStripConfig.ariaLabelledBy\"\n [ariaLabel]=\"messageStripConfig.ariaLabel\"\n (onDismiss)=\"onDismissHandler()\"\n>\n <ng-template [cdkPortalOutlet]=\"contentPortal\"></ng-template>\n</fd-message-strip>\n","import { CdkPortalOutlet, ComponentPortal, PortalModule } from '@angular/cdk/portal';\nimport { AsyncPipe } from '@angular/common';\nimport { AfterViewInit, Component, ComponentRef, QueryList, ViewChildren, ViewEncapsulation } from '@angular/core';\nimport { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar';\nimport { Observable, map, startWith } from 'rxjs';\nimport { MessageStripAlertContainerFooterComponent } from '../message-strip-alert-container-footer/message-strip-alert-container-footer.component';\nimport { MessageStripAlertComponent } from '../message-strip-alert/message-strip-alert.component';\n\nimport { MessageStripAlertRef } from '../message-strip-alert.ref';\nimport { MessageStripAlert } from '../message-strip-alert/message-strip-alert.interface';\n\n/**\n * This will be rendered in the overlay. It is responsible for rendering the alerts and the footer.\n */\n@Component({\n selector: 'fd-message-strip-alert-container',\n template: `\n <div fdScrollbar>\n @for (portal of attachedElements; track portal) {\n <ng-template [cdkPortalOutlet]=\"portal\"></ng-template>\n }\n </div>\n <fd-message-strip-alert-container-footer\n [alertRefs]=\"alertRefs$ | async\"\n ></fd-message-strip-alert-container-footer>\n `,\n styleUrl: './message-strip-alert-container.component.scss',\n encapsulation: ViewEncapsulation.None,\n imports: [PortalModule, ScrollbarDirective, MessageStripAlertContainerFooterComponent, AsyncPipe]\n})\nexport class MessageStripAlertContainerComponent implements AfterViewInit {\n /** @hidden */\n @ViewChildren(CdkPortalOutlet)\n portalOutlets: QueryList<CdkPortalOutlet>;\n\n /** @hidden */\n @ViewChildren(MessageStripAlertComponent)\n alerts: QueryList<MessageStripAlert>;\n\n /**\n * The list of the elements that are attached to the container.\n */\n attachedElements: ComponentPortal<MessageStripAlert>[] = [];\n\n /**\n * List of the rendered message strip alerts. It is used in the footer and is injected into the\n * user-provided footer component portal. This way, user has full control over the container alerts.\n */\n alertRefs$!: Observable<MessageStripAlertRef[]>;\n\n /** @hidden */\n ngAfterViewInit(): void {\n this.alertRefs$ = this.portalOutlets.changes.pipe(\n startWith(this.portalOutlets),\n map(() =>\n this.portalOutlets\n .toArray()\n .map((p) => (p.attachedRef as ComponentRef<MessageStripAlertComponent>)?.instance.alertRef)\n )\n );\n }\n}\n","import { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { ComponentRef, Injectable, Injector, Type, inject } from '@angular/core';\nimport { ResponsiveBreakpoints, ViewportSizeObservable } from '@fundamental-ngx/cdk/utils';\nimport { patchLanguage } from '@fundamental-ngx/i18n';\nimport { BehaviorSubject, Observable, Subject, combineLatest, map, tap } from 'rxjs';\nimport { applyDefaultConfig } from './default-config';\nimport { MessageStripAlertContainerComponent } from './message-strip-alert-container/message-strip-alert-container.component';\nimport { MessageStripAlertPosition } from './message-strip-alert.position';\nimport { MessageStripAlertRef } from './message-strip-alert.ref';\nimport { MessageStripAlertComponent } from './message-strip-alert/message-strip-alert.component';\nimport { MessageStripAlert } from './message-strip-alert/message-strip-alert.interface';\nimport { OpenMessageStripAlertConfig } from './open-message-strip-alert.config';\nimport { MessageStripAlertComponentData, MessageStripAlertContainerPosition } from './tokens';\n\n/**\n * Service that is responsible for opening and closing message strip alerts.\n * This should be only created once in entire application.\n * Service is responsible for creating and managing the overlays for the\n * message strip alerts. This also manages the footer components for any\n * given position.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class MessageStripAlertService {\n /** @hidden */\n footerComponents$: Observable<Partial<Record<MessageStripAlertPosition, Type<any>>>>;\n\n /** @hidden */\n private injector = inject(Injector);\n\n /** @hidden */\n private readonly _overlay: Overlay = inject(Overlay);\n\n /** @hidden */\n private viewportSize$ = inject(ViewportSizeObservable);\n\n /** @hidden */\n private readonly _messageStripAlertService = inject(MessageStripAlertService, { optional: true, skipSelf: true });\n\n /** @hidden */\n private _messageAlerts$ = new BehaviorSubject<\n Array<\n Required<OpenMessageStripAlertConfig> & {\n portal: ComponentPortal<MessageStripAlert>;\n }\n >\n >([]);\n\n /** @hidden */\n private _overlayRefs: Partial<\n Record<\n MessageStripAlertPosition,\n {\n ref: OverlayRef;\n containerRef: ComponentRef<MessageStripAlertContainerComponent>;\n }\n >\n > = {};\n\n /** @hidden */\n private _messageStripAlertContainerFooters$ = new BehaviorSubject<\n Partial<Record<MessageStripAlertPosition, Type<any>>>\n >({});\n /** @hidden */\n constructor() {\n if (this._messageStripAlertService) {\n throw new Error('MessageStripAlertService is already provided');\n }\n this.footerComponents$ = this._messageStripAlertContainerFooters$.asObservable();\n this.listenToItemsChanges();\n }\n\n /**\n * Set the footer component for a given position.\n */\n setFooterComponent(position: MessageStripAlertPosition, component: Type<any>): void {\n this._messageStripAlertContainerFooters$.next({\n ...this._messageStripAlertContainerFooters$.value,\n [position]: component\n });\n }\n\n /**\n * Open a message strip alert with given configuration\n */\n open<ComponentType = unknown>(c: OpenMessageStripAlertConfig<ComponentType>): MessageStripAlertRef {\n const config = applyDefaultConfig<ComponentType>(c);\n const alertRef = this.getMessageStripAlertRef(config);\n this._messageAlerts$.next([{ ...config, portal: alertRef.portal }, ...this._messageAlerts$.value]);\n return alertRef;\n }\n\n /** @hidden */\n private getMessageStripAlertRef<ComponentType = unknown>(\n config: Required<OpenMessageStripAlertConfig<ComponentType>>\n ): MessageStripAlertRef {\n const onDismiss$ = new Subject<void>();\n const alertRef = {\n portal: new ComponentPortal(\n MessageStripAlertComponent<ComponentType>,\n null,\n Injector.create({\n providers: [\n {\n provide: MessageStripAlertComponentData,\n useValue: {\n content: config.content,\n closeOnNavigation: config.closeOnNavigation,\n messageStripConfig: {\n ...config.messageStrip,\n onDismiss: () => {\n this._messageAlerts$.next(\n this._messageAlerts$.value.filter((item) => item.portal !== alertRef.portal)\n );\n config.messageStrip &&\n config.messageStrip.onDismiss &&\n config.messageStrip.onDismiss();\n onDismiss$.next();\n onDismiss$.complete();\n }\n }\n }\n },\n {\n provide: MessageStripAlertRef,\n useFactory: () => alertRef\n },\n patchLanguage((lang) => ({\n coreMessageStrip: {\n dismissLabel: config.messageStrip.dismissLabel || lang.coreMessageStrip.dismissLabel\n }\n }))\n ],\n parent: this.injector\n })\n ),\n dismiss: () => {\n this._messageAlerts$.next(this._messageAlerts$.value.filter((item) => item.portal !== alertRef.portal));\n config.messageStrip && config.messageStrip.onDismiss && config.messageStrip.onDismiss();\n onDismiss$.next();\n onDismiss$.complete();\n },\n onDismiss$: onDismiss$.asObservable()\n };\n return alertRef;\n }\n\n /** @hidden */\n private listenToItemsChanges(): void {\n combineLatest([this.viewportSize$, this._messageAlerts$.asObservable()])\n .pipe(\n map(\n ([viewportSize, messageAlerts]): Record<\n MessageStripAlertPosition,\n Array<ComponentPortal<MessageStripAlert>>\n > => {\n if (viewportSize < ResponsiveBreakpoints.M) {\n return messageAlerts.reduce(\n (acc, next) => {\n const position = next.position?.startsWith('top') ? 'top-middle' : 'bottom-middle';\n acc[position] = [...(acc[position] || []), next.portal];\n return acc;\n },\n {} as Record<MessageStripAlertPosition, Array<ComponentPortal<MessageStripAlert>>>\n );\n }\n return messageAlerts.reduce(\n (acc, next) => {\n acc[next.position] = [...(acc[next.position] || []), next.portal];\n return acc;\n },\n {} as Record<MessageStripAlertPosition, Array<ComponentPortal<MessageStripAlert>>>\n );\n }\n ),\n tap(\n (\n messageAlertsByPosition: Partial<\n Record<MessageStripAlertPosition, Array<ComponentPortal<MessageStripAlert>>>\n >\n ) => {\n let topSectionIsOpened = false;\n let bottomSectionIsOpened = false;\n (\n Object.entries(messageAlertsByPosition) as Array<\n [MessageStripAlertPosition, ComponentPortal<MessageStripAlert>[]]\n >\n ).forEach(([position, portals]) => {\n topSectionIsOpened = topSectionIsOpened || position.startsWith('top');\n bottomSectionIsOpened = bottomSectionIsOpened || position.startsWith('bottom');\n const { containerRef } = this.getOverlayRef(position);\n containerRef.instance.attachedElements = portals;\n containerRef.changeDetectorRef.detectChanges();\n });\n this.syncExistingOverlays(messageAlertsByPosition, bottomSectionIsOpened, topSectionIsOpened);\n }\n )\n )\n .subscribe();\n }\n\n /** @hidden */\n private syncExistingOverlays(\n messageAlertsByPosition: Partial<Record<MessageStripAlertPosition, ComponentPortal<MessageStripAlert>[]>>,\n bottomSectionIsOpened: boolean,\n topSectionIsOpened: boolean\n ): void {\n (Object.keys(this._overlayRefs) as MessageStripAlertPosition[]).forEach((position) => {\n if (!messageAlertsByPosition[position]) {\n this._overlayRefs[position]!.ref.dispose();\n delete this._overlayRefs[position];\n } else {\n const ref = this._overlayRefs[position]!.ref;\n if (position.startsWith('top')) {\n if (bottomSectionIsOpened) {\n ref.overlayElement.classList.add('fd-message-strip-alert-overlay--bottom-opened');\n } else {\n ref.overlayElement.classList.remove('fd-message-strip-alert-overlay--bottom-opened');\n }\n }\n if (position.startsWith('bottom')) {\n if (topSectionIsOpened) {\n ref.overlayElement.classList.add('fd-message-strip-alert-overlay--top-opened');\n } else {\n ref.overlayElement.classList.remove('fd-message-strip-alert-overlay--top-opened');\n }\n }\n }\n });\n }\n\n /** @hidden */\n private getOverlayRef(position: MessageStripAlertPosition): {\n ref: OverlayRef;\n containerRef: ComponentRef<MessageStripAlertContainerComponent>;\n } {\n if (!this._overlayRefs[position]) {\n const [verticalPosition, horizontalPosition] = position.split('-');\n const overlayRef = this.createOverlay(verticalPosition, horizontalPosition);\n const containerRef = overlayRef.attach(\n new ComponentPortal(\n MessageStripAlertContainerComponent,\n null,\n Injector.create({\n parent: this.injector,\n providers: [\n {\n provide: MessageStripAlertContainerPosition,\n useValue: position\n }\n ]\n })\n )\n );\n this._overlayRefs[position] = { ref: overlayRef, containerRef };\n }\n return this._overlayRefs[position]!;\n }\n\n /** @hidden */\n private createOverlay(verticalPosition: string, horizontalPosition: string): OverlayRef {\n return this._overlay.create({\n panelClass: [\n 'fd-message-strip-alert-overlay',\n `fd-message-strip-alert-overlay--${verticalPosition}`,\n `fd-message-strip-alert-overlay--${horizontalPosition}`\n ],\n hasBackdrop: false\n });\n }\n}\n","const messageStripIndicationColors = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10'] as const;\n\nexport type MessageStripIndicationColor =\n | `${(typeof messageStripIndicationColors)[number]}`\n | `${(typeof messageStripIndicationColors)[number]}b`;\n\nexport const _messageStripIndicationColors = messageStripIndicationColors.reduce(\n (acc: MessageStripIndicationColor[], item) => {\n acc.push(item);\n acc.push(`${item}b`);\n return acc;\n },\n []\n) as MessageStripIndicationColor[];\n","import { NgModule } from '@angular/core';\n\nimport { AutoDismissMessageStripDirective } from './auto-dismiss-message-strip.directive';\nimport { MessageStripIconDirective } from './message-strip-icon.directive';\nimport { MessageStripComponent } from './message-strip.component';\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n imports: [MessageStripComponent, AutoDismissMessageStripDirective, MessageStripIconDirective],\n exports: [MessageStripComponent, AutoDismissMessageStripDirective, MessageStripIconDirective]\n})\nexport class MessageStripModule {}\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-message-strip.mjs","sources":["../../../../libs/core/message-strip/alert/message-strip-alert.ref.ts","../../../../libs/core/message-strip/alert/default-config.ts","../../../../libs/core/message-strip/alert/tokens.ts","../../../../libs/core/message-strip/alert/message-strip-alert-container-footer/message-strip-alert-container-footer.component.ts","../../../../libs/core/message-strip/alert/message-strip-alert-container/message-strip-alert-container.component.ts","../../../../libs/core/message-strip/message-strip-icon.directive.ts","../../../../libs/core/message-strip/message-strip.enum.ts","../../../../libs/core/message-strip/message-strip.component.ts","../../../../libs/core/message-strip/message-strip.component.html","../../../../libs/core/message-strip/auto-dismiss-message-strip.directive.ts","../../../../libs/core/message-strip/alert/message-strip-alert/message-strip-alert.component.ts","../../../../libs/core/message-strip/alert/message-strip-alert/message-strip-alert.component.html","../../../../libs/core/message-strip/alert/message-strip-alert.service.ts","../../../../libs/core/message-strip/message-strip-indication-color.ts","../../../../libs/core/message-strip/message-strip.module.ts","../../../../libs/core/message-strip/fundamental-ngx-core-message-strip.ts"],"sourcesContent":["import { ComponentPortal } from '@angular/cdk/portal';\nimport { Observable } from 'rxjs';\nimport { MessageStripAlert } from './message-strip-alert/message-strip-alert.interface';\n\nexport abstract class MessageStripAlertRef {\n /** Message strip alert component portal which is rendered in the container */\n abstract portal: ComponentPortal<MessageStripAlert>;\n /**\n * Function, which dismisses the alert, it calls the user-provided function\n * after dismissing the actual alert\n */\n abstract dismiss: () => void;\n /** Observable that emits when the alert is dismissed */\n abstract onDismiss$: Observable<void>;\n}\n","import { OpenMessageStripAlertConfig } from './open-message-strip-alert.config';\n\nconst defaultConfig: Required<Omit<OpenMessageStripAlertConfig, 'content'>> = {\n position: 'top-middle',\n messageStrip: {},\n closeOnNavigation: false\n};\n\n/**\n * Applies default config to the given config\n */\nexport function applyDefaultConfig<ComponentType = unknown>(\n config: OpenMessageStripAlertConfig<ComponentType>\n): Required<OpenMessageStripAlertConfig<ComponentType>> {\n return { ...defaultConfig, ...config };\n}\n","import { InjectionToken, TemplateRef, Type } from '@angular/core';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { Observable } from 'rxjs';\nimport { MessageStripAlertPosition } from './message-strip-alert.position';\nimport { MessageStripAlertRef } from './message-strip-alert.ref';\nimport { MessageStripConfiguration } from './message-strip-configuration-type';\n\n/**\n * Injection token for getting the position of the message strip alert container.\n * Is available in any of the message strip alert components and in footer component.\n */\nexport const MessageStripAlertContainerPosition = new InjectionToken<MessageStripAlertPosition>(\n 'MessageStripAlertContainerPosition'\n);\n/**\n * Injection token for getting the list of the message strip alert refs\n * in the given container. Is available in the footer component injection\n * context.\n */\nexport const MessageStripAlertContainerAlertRefs = new InjectionToken<Observable<Nullable<MessageStripAlertRef[]>>>(\n 'MessageStripAlertContainerAlertRefs'\n);\n\nexport const MessageStripAlertComponentData = new InjectionToken<{\n content: string | TemplateRef<any> | Type<any>;\n closeOnNavigation: boolean;\n messageStripConfig: MessageStripConfiguration;\n}>('MessageStripAlertComponentData');\n","import { ComponentPortal, PortalModule } from '@angular/cdk/portal';\nimport { Component, DestroyRef, effect, inject, Injector, input, signal } from '@angular/core';\nimport { takeUntilDestroyed, toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { Observable } from 'rxjs';\nimport { MessageStripAlertRef } from '../message-strip-alert.ref';\nimport { MessageStripAlertService } from '../message-strip-alert.service';\nimport { MessageStripAlertContainerAlertRefs, MessageStripAlertContainerPosition } from '../tokens';\n\n/**\n * The component that represents the footer of the message strip alert container.\n * if user has provided the footer component through service, then this component\n * will render it inside itself.\n * Bear in mind that this component is always created, just sometimes if there is nothing to render\n * it will be empty.\n */\n@Component({\n selector: 'fd-message-strip-alert-container-footer',\n template: ` <ng-template [cdkPortalOutlet]=\"_footerComponentPortal()\"></ng-template> `,\n styles: [\n `\n :host {\n display: block;\n }\n `\n ],\n imports: [PortalModule]\n})\nexport class MessageStripAlertContainerFooterComponent {\n /** @hidden */\n readonly alertRefs = input<Nullable<MessageStripAlertRef[]>>([]);\n\n /**\n * Reference to the user provided component's portal.\n * @hidden\n */\n protected readonly _footerComponentPortal = signal<ComponentPortal<any> | undefined>(undefined);\n\n /**\n * Position of the overlay in which this component is rendered.\n */\n private readonly position = inject(MessageStripAlertContainerPosition);\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n private readonly messageStripAlertService = inject(MessageStripAlertService);\n\n /**\n * Observable representation of the alertRefs input for use in injected components.\n */\n private readonly _alertRefs$: Observable<Nullable<MessageStripAlertRef[]>>;\n\n /**\n * Footer component from service as signal.\n */\n private readonly _footerComponent = toSignal(this.messageStripAlertService.footerComponents$, { initialValue: {} });\n\n /** @hidden */\n constructor() {\n // Convert alertRefs signal to observable in injection context\n this._alertRefs$ = toObservable(this.alertRefs).pipe(takeUntilDestroyed(this._destroyRef));\n\n effect(() => {\n const footerComponent = this._footerComponent()[this.position];\n\n if (footerComponent) {\n this._footerComponentPortal.set(\n new ComponentPortal(\n footerComponent,\n null,\n Injector.create({\n providers: [\n {\n provide: MessageStripAlertContainerAlertRefs,\n useValue: this._alertRefs$\n }\n ]\n })\n )\n );\n } else {\n this._footerComponentPortal.set(undefined);\n }\n });\n }\n}\n","import { CdkPortalOutlet, ComponentPortal, PortalModule } from '@angular/cdk/portal';\nimport { Component, ComponentRef, computed, signal, viewChildren, ViewEncapsulation } from '@angular/core';\nimport { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar';\nimport { MessageStripAlertContainerFooterComponent } from '../message-strip-alert-container-footer/message-strip-alert-container-footer.component';\nimport { MessageStripAlertComponent } from '../message-strip-alert/message-strip-alert.component';\n\nimport { MessageStripAlertRef } from '../message-strip-alert.ref';\nimport { MessageStripAlert } from '../message-strip-alert/message-strip-alert.interface';\n\n/**\n * This will be rendered in the overlay. It is responsible for rendering the alerts and the footer.\n */\n@Component({\n selector: 'fd-message-strip-alert-container',\n template: `\n <div fdScrollbar>\n @for (portal of attachedElements(); track portal) {\n <ng-template [cdkPortalOutlet]=\"portal\"></ng-template>\n }\n </div>\n <fd-message-strip-alert-container-footer [alertRefs]=\"_alertRefs()\"></fd-message-strip-alert-container-footer>\n `,\n styleUrl: './message-strip-alert-container.component.scss',\n encapsulation: ViewEncapsulation.None,\n imports: [PortalModule, ScrollbarDirective, MessageStripAlertContainerFooterComponent]\n})\nexport class MessageStripAlertContainerComponent {\n /**\n * The list of the elements that are attached to the container.\n */\n readonly attachedElements = signal<ComponentPortal<MessageStripAlert>[]>([]);\n\n /**\n * List of the rendered message strip alerts. It is used in the footer and is injected into the\n * user-provided footer component portal. This way, user has full control over the container alerts.\n * @hidden\n */\n protected readonly _alertRefs = computed(() =>\n this._portalOutlets()\n .map((p) => (p.attachedRef as ComponentRef<MessageStripAlertComponent>)?.instance?.alertRef)\n .filter((ref): ref is MessageStripAlertRef => !!ref)\n );\n\n /** @hidden */\n private readonly _portalOutlets = viewChildren(CdkPortalOutlet);\n}\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[fdMessageStripIcon]',\n standalone: true\n})\nexport class MessageStripIconDirective {\n /** @hidden */\n constructor(readonly templateRef: TemplateRef<void>) {}\n}\n","export const enum MessageStripTypeEnum {\n INFORMATION = 'information',\n WARNING = 'warning',\n SUCCESS = 'success',\n ERROR = 'error'\n}\n\nexport const enum MessageStringIconEnum {\n ALERT = 'alert',\n SUCCESS = 'sys-enter-2',\n ERROR = 'error',\n INFORMATION = 'information'\n}\n\nexport const enum MessageStripAnnouncement {\n INFORMATION = 'coreMessageStrip.announcementInfo',\n WARNING = 'coreMessageStrip.announcementWarning',\n SUCCESS = 'coreMessageStrip.announcementSuccess',\n ERROR = 'coreMessageStrip.announcementError'\n}\n\nexport type MessageStripAnnouncementType = `${MessageStripAnnouncement}`;\n\nexport const MESSAGE_STRIP_CLOSABLE = 'coreMessageStrip.closable';\n\nexport const MESSAGE_STRIP_DEFAULT_DISMISS_BUTTON_TEXT = 'coreMessageStrip.dismissLabel';\n\nexport const DEFAULT_HIDDEN_TEXT = 'Message strip';\n\nexport const DEFAULT_DISMISS_BUTTON_TEXT = 'Close';\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { AsyncPipe, NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n DestroyRef,\n ElementRef,\n EventEmitter,\n HostBinding,\n inject,\n Input,\n OnChanges,\n OnInit,\n Output,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { applyCssClass, CssClassBuilder, Nullable } from '@fundamental-ngx/cdk/utils';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { ContentDensityDirective } from '@fundamental-ngx/core/content-density';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { FD_LANGUAGE, FdLanguage, I18nModule, TranslationResolver } from '@fundamental-ngx/i18n';\nimport { map, of, withLatestFrom } from 'rxjs';\nimport { Observable } from 'rxjs/internal/Observable';\nimport { MessageStripIconDirective } from './message-strip-icon.directive';\nimport { MessageStripIndicationColor } from './message-strip-indication-color';\nimport { MessageStripType } from './message-strip-type';\nimport {\n DEFAULT_DISMISS_BUTTON_TEXT,\n DEFAULT_HIDDEN_TEXT,\n MESSAGE_STRIP_CLOSABLE,\n MESSAGE_STRIP_DEFAULT_DISMISS_BUTTON_TEXT,\n MessageStringIconEnum,\n MessageStripAnnouncement,\n MessageStripAnnouncementType,\n MessageStripTypeEnum\n} from './message-strip.enum';\n\nlet messageStripUniqueId = 0;\n\n/**\n * The component that represents a message-strip. It can only be used inline.\n */\n@Component({\n selector: 'fd-message-strip',\n templateUrl: './message-strip.component.html',\n styleUrl: './message-strip.component.scss',\n host: {\n '[attr.aria-label]': 'ariaLabel',\n '[style.width]': 'width',\n '[style.min-width]': 'minWidth',\n '[style.margin-bottom]': 'marginBottom',\n '[attr.id]': 'id',\n role: 'note'\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [ButtonComponent, ContentDensityDirective, I18nModule, NgTemplateOutlet, IconComponent, AsyncPipe]\n})\nexport class MessageStripComponent implements OnInit, OnChanges, CssClassBuilder {\n /** User's custom classes */\n @Input() class = '';\n\n /** Whether the message strip is dismissible. */\n @Input({ transform: booleanAttribute })\n @HostBinding('class.fd-message-strip--dismissible')\n dismissible: BooleanInput = true;\n\n /** Id of the element that labels the message-strip. */\n @Input() ariaLabelledBy: Nullable<string>;\n\n /** Set aria-labelledby for fd-message-strip. */\n @HostBinding('attr.aria-labelledby')\n get hostAriaLabelledBy(): Nullable<string> {\n if (this.ariaLabelledBy) {\n return this.ariaLabelledBy;\n }\n return `${this.id}-hidden-text ${this.id}-content-text`;\n }\n\n /** Title for dismiss button */\n @Input()\n dismissBtnTitle: string;\n\n /** The default message strip does not have an icon.\n * The other types (warning, success, information and error) have icons by default.\n * To remove the icon set the property to true.\n */\n @Input({ transform: booleanAttribute })\n @HostBinding('class.fd-message-strip--no-icon')\n noIcon: BooleanInput = false;\n\n /** The type of the message strip.\n * Can be one of *warning*, *success*, *information*, *error* or null.\n */\n @Input() type: MessageStripType;\n\n /** Id for the message-strip component. If omitted, a unique one is generated. */\n @Input() id: string = 'fd-message-strip-' + messageStripUniqueId++;\n\n /** Aria label for the message-strip component element. */\n @Input() ariaLabel: Nullable<string>;\n\n /** Width of the message-strip. */\n @Input() width: string;\n\n /** Minimum width of the message-strip. */\n @Input() minWidth: string;\n\n /** Margin bottom of the message-strip. */\n @Input() marginBottom: string;\n\n /** indication color of the message-strip. */\n @Input() indicationColor: MessageStripIndicationColor;\n\n /** Event fired when the message-strip is dismissed. */\n @Output() // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n onDismiss: EventEmitter<void> = new EventEmitter<void>();\n\n /** Custom icon component */\n @ContentChild(MessageStripIconDirective)\n icon: MessageStripIconDirective;\n\n /** message strip information read by screen readers */\n messageStripHiddenText$: Observable<string>;\n\n /** default dismiss button text read by screen readers */\n defaultDismissButtonText$: Observable<string>;\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n private readonly _lang$ = inject(FD_LANGUAGE);\n\n /** @hidden */\n private _translationResolver = inject(TranslationResolver);\n\n /** @hidden */\n constructor(public readonly elementRef: ElementRef) {}\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-message-strip',\n this.type ? `fd-message-strip--${this.type}` : '',\n this.dismissible ? 'fd-message-strip--dismissible' : '',\n this.noIcon ? 'fd-message-strip--no-icon' : '',\n this.indicationColor ? `fd-message-strip--indication-color-${this.indicationColor}` : '',\n this.class\n ];\n }\n\n /** @hidden */\n ngOnInit(): void {\n this.buildComponentCssClass();\n this.setScreenReaderTexts();\n }\n\n /** @hidden */\n ngOnChanges(): void {\n this.buildComponentCssClass();\n }\n\n /** Whether icon container should be shown */\n get shouldShowIcon(): boolean {\n if (this.noIcon) {\n return false;\n }\n return !!this.icon || !!this.type;\n }\n\n /** @hidden */\n get typeSpecificIconName(): string {\n switch (this.type) {\n case MessageStripTypeEnum.WARNING:\n return MessageStringIconEnum.ALERT;\n case MessageStripTypeEnum.SUCCESS:\n return MessageStringIconEnum.SUCCESS;\n case MessageStripTypeEnum.ERROR:\n return MessageStringIconEnum.ERROR;\n case MessageStripTypeEnum.INFORMATION:\n return MessageStringIconEnum.INFORMATION;\n default:\n return '';\n }\n }\n\n /**\n * Dismisses the message-strip.\n */\n dismiss(): void {\n this.elementRef.nativeElement.classList.add('fd-has-display-none');\n this.elementRef.nativeElement.classList.remove('fd-has-display-block');\n this.onDismiss.emit();\n }\n\n /** Sets screen reader texts for message strip type announcement and dismiss button */\n private setScreenReaderTexts(): void {\n if (!this.type) {\n return;\n }\n\n const announcementMap: Record<MessageStripTypeEnum, MessageStripAnnouncementType> = {\n [MessageStripTypeEnum.WARNING]: MessageStripAnnouncement.WARNING,\n [MessageStripTypeEnum.SUCCESS]: MessageStripAnnouncement.SUCCESS,\n [MessageStripTypeEnum.ERROR]: MessageStripAnnouncement.ERROR,\n [MessageStripTypeEnum.INFORMATION]: MessageStripAnnouncement.INFORMATION\n };\n\n const announcementType = announcementMap[this.type];\n\n if (announcementType) {\n const announcement$ = this._translateAnnouncement(announcementType);\n this.messageStripHiddenText$ = this._buildMessageStripHiddenText(announcement$);\n this.defaultDismissButtonText$ = this._getHiddenButtonText(announcement$);\n } else {\n this.messageStripHiddenText$ = of(DEFAULT_HIDDEN_TEXT);\n this.defaultDismissButtonText$ = of(DEFAULT_DISMISS_BUTTON_TEXT);\n }\n }\n\n /** @hidden */\n private _translateAnnouncement(announcementType: MessageStripAnnouncementType): Observable<string> {\n return this._lang$.pipe(\n takeUntilDestroyed(this._destroyRef),\n map((lang: FdLanguage) => this._translationResolver.resolve(lang, announcementType))\n );\n }\n\n /** @hidden */\n private _buildMessageStripHiddenText(announcement$: Observable<string>): Observable<string> {\n return this._lang$.pipe(\n takeUntilDestroyed(this._destroyRef),\n withLatestFrom(announcement$),\n map(([lang, announcement]: [FdLanguage, string]) => {\n const closable = this._translationResolver.resolve(lang, MESSAGE_STRIP_CLOSABLE);\n return `${announcement} ${this.dismissible ? closable : ''}`;\n })\n );\n }\n\n /** @hidden **/\n private _getHiddenButtonText(announcement$: Observable<string>): Observable<string> {\n return this._lang$.pipe(\n takeUntilDestroyed(this._destroyRef),\n withLatestFrom(announcement$),\n map(([lang, announcement]: [FdLanguage, string]) => {\n const closeButtonText = this._translationResolver.resolve(\n lang,\n MESSAGE_STRIP_DEFAULT_DISMISS_BUTTON_TEXT\n );\n return `${announcement} ${closeButtonText}`;\n })\n );\n }\n}\n","@if (shouldShowIcon) {\n <div class=\"fd-message-strip__icon-container\" aria-hidden=\"true\">\n @if (icon) {\n <ng-template [ngTemplateOutlet]=\"icon.templateRef\"></ng-template>\n } @else {\n <fd-icon [glyph]=\"typeSpecificIconName\" role=\"presentation\" aria-hidden=\"true\"></fd-icon>\n <span class=\"fd-message-strip__sr-only\" id=\"{{ id }}-hidden-text\">{{\n messageStripHiddenText$ | async\n }}</span>\n }\n </div>\n}\n<p class=\"fd-message-strip__text\" id=\"{{ id }}-content-text\">\n <ng-content></ng-content>\n</p>\n@if (dismissible) {\n <button\n class=\"fd-message-strip__close\"\n fd-button\n glyph=\"decline\"\n fdType=\"transparent\"\n fdCompact\n (click)=\"dismiss()\"\n [attr.aria-controls]=\"id\"\n [attr.aria-label]=\"dismissBtnTitle || (defaultDismissButtonText$ | async)\"\n [attr.title]=\"dismissBtnTitle || (defaultDismissButtonText$ | async)\"\n ></button>\n}\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, DestroyRef, Directive, ElementRef, inject, Input, isDevMode, signal } from '@angular/core';\nimport { destroyObservable } from '@fundamental-ngx/cdk/utils';\nimport { fromEvent, map, merge, Observable, of, startWith, takeUntil } from 'rxjs';\nimport { switchMap } from 'rxjs/operators';\nimport { MessageStripComponent } from './message-strip.component';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'fd-message-strip[mousePersist], fd-message-strip[duration], fd-message-strip[autoDismiss]',\n exportAs: 'fdAutoDismissMessageStrip',\n standalone: true,\n host: {\n '[style.display]': '!_opened() ? \"none\" : null'\n }\n})\nexport class AutoDismissMessageStripDirective {\n /** Whether the message strip is dismissible */\n @Input({ transform: booleanAttribute })\n dismissible: BooleanInput = true;\n\n /** Whether the alert should be automatically dismissed. */\n @Input({ transform: booleanAttribute })\n autoDismiss: BooleanInput = true;\n\n /** Duration of time *in milliseconds* that the alert will be visible. Set to -1 for indefinite. */\n @Input() duration = 10000;\n\n /** Whether the alert should stay open if the mouse is hovering over it. */\n @Input({ transform: booleanAttribute })\n mousePersist: BooleanInput = false;\n\n /**\n * Whether the message strip is currently opened.\n * @hidden\n */\n protected readonly _opened = signal(false);\n\n /** @hidden */\n private messageStripComponent = inject(MessageStripComponent, { optional: false, host: true });\n\n /** @hidden */\n private autoDismissTimeout?: ReturnType<typeof setTimeout>;\n /** @hidden */\n private elementRef = inject(ElementRef);\n\n /** @hidden */\n private _destroyRef = inject(DestroyRef);\n\n /**\n * Mouse is hovering over the message strip.\n * */\n private mouseIn$ = merge(\n fromEvent(this.elementRef.nativeElement, 'mouseenter').pipe(map(() => true)),\n fromEvent(this.elementRef.nativeElement, 'mouseleave').pipe(map(() => false))\n ).pipe(startWith(false));\n\n /** @hidden */\n open(): void {\n this._opened.set(true);\n this.elementRef.nativeElement.classList.remove('fd-has-display-block');\n this.elementRef.nativeElement.classList.remove('fd-has-display-none');\n this.stopAutoDismiss();\n if (this.autoDismiss && !this.dismissible && isDevMode()) {\n console.warn(\n 'Auto dismiss is enabled but the message strip is not dismissible. Please set the dismissible input to true.'\n );\n }\n if (this.autoDismiss && this.dismissible) {\n this.startAutoDismiss();\n }\n }\n\n /** @hidden */\n private stopAutoDismiss = (): void => {\n if (this.autoDismissTimeout) {\n clearTimeout(this.autoDismissTimeout);\n this.autoDismissTimeout = undefined;\n }\n };\n\n /** @hidden */\n private startAutoDismiss(): void {\n const startAutoDismissTimer$ = new Observable((res) => {\n this.autoDismissTimeout = setTimeout(() => {\n this.dismiss();\n res.next(null);\n }, this.duration);\n return this.stopAutoDismiss;\n });\n if (this.duration > -1) {\n const source$ = this.mousePersist\n ? this.mouseIn$.pipe(\n switchMap((mouseIn) => {\n if (mouseIn) {\n return of(null);\n }\n return startAutoDismissTimer$;\n })\n )\n : startAutoDismissTimer$;\n source$\n .pipe(takeUntil(merge(destroyObservable(this._destroyRef), this.messageStripComponent.onDismiss)))\n .subscribe();\n }\n }\n\n /** @hidden */\n private dismiss = (): void => this.messageStripComponent.dismiss();\n}\n","import { ComponentPortal, DomPortal, Portal, PortalModule, TemplatePortal } from '@angular/cdk/portal';\nimport {\n AfterViewInit,\n Component,\n OnDestroy,\n Renderer2,\n TemplateRef,\n Type,\n ViewChild,\n ViewContainerRef,\n inject\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { NavigationStart, Router } from '@angular/router';\nimport { filter } from 'rxjs';\nimport { AutoDismissMessageStripDirective } from '../../auto-dismiss-message-strip.directive';\nimport { MessageStripComponent } from '../../message-strip.component';\nimport { MessageStripAlertRef } from '../message-strip-alert.ref';\nimport { MessageStripConfiguration } from '../message-strip-configuration-type';\nimport { MessageStripAlertComponentData } from '../tokens';\nimport { MessageStripAlert } from './message-strip-alert.interface';\n\nexport type MessageStripAlertPortalType<ComponentType> =\n | DomPortal\n | TemplatePortal<{\n $implicit: MessageStripAlertRef;\n }>\n | ComponentPortal<ComponentType>;\n\n/**\n * The wrapper component, which is wrapping the Message Strip and passes\n * configuration to it, also generates the content which will appear in it.\n */\n@Component({\n templateUrl: `./message-strip-alert.component.html`,\n imports: [MessageStripComponent, PortalModule, AutoDismissMessageStripDirective]\n})\nexport class MessageStripAlertComponent<ComponentType = unknown>\n implements MessageStripAlert, OnDestroy, AfterViewInit\n{\n /** @hidden */\n @ViewChild(AutoDismissMessageStripDirective)\n autoDismissMessageStripDirective: AutoDismissMessageStripDirective;\n\n /** User provided data. Full of it */\n data = inject(MessageStripAlertComponentData);\n /** Configuration for the message strip appearance */\n messageStripConfig: MessageStripConfiguration;\n /** Portal, which is responsible for correctly rendering user provided content. It can be any type of the portal */\n contentPortal: Portal<unknown>;\n\n /**\n * Reference to the message strip alert, which is used to close it from the outside, or access the data and/or the component instance\n * */\n readonly alertRef = inject(MessageStripAlertRef);\n /** @hidden */\n private viewContainerRef = inject(ViewContainerRef);\n\n /** @hidden */\n private renderer2 = inject(Renderer2);\n\n /**\n * Timeout, which is responsible for auto-dismissing the message strip.\n * It should be properly cleared on component destroy.\n */\n private autoDismissTimeout: ReturnType<typeof setTimeout>;\n\n /** @hidden */\n constructor() {\n this.messageStripConfig = this.data.messageStripConfig;\n this.contentPortal = this.getPortal(this.data.content);\n if (this.data.closeOnNavigation) {\n inject(Router, { optional: true })\n ?.events.pipe(\n filter((event) => event instanceof NavigationStart),\n takeUntilDestroyed()\n )\n .subscribe(() => this.onDismissHandler());\n }\n }\n\n /**\n * Handler for the dismiss button click.\n * */\n onDismissHandler(): void {\n this.messageStripConfig.onDismiss();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n clearTimeout(this.autoDismissTimeout);\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this.autoDismissMessageStripDirective.open();\n }\n\n /**\n * Method, which is responsible for generating the portal, which will be rendered inside the message strip.\n * It can be any type of the portal, depending on the user provided content.\n * */\n private getPortal(\n content:\n | string\n | TemplateRef<{\n $implicit: MessageStripAlertRef;\n }>\n | Type<ComponentType>\n ): MessageStripAlertPortalType<ComponentType> {\n if (typeof content === 'string') {\n const textEl = this.renderer2.createText(content);\n this.renderer2.appendChild(this.viewContainerRef.element.nativeElement, textEl);\n return new DomPortal(textEl);\n }\n if (content instanceof TemplateRef) {\n return new TemplatePortal(content, this.viewContainerRef, { $implicit: this.alertRef });\n }\n return new ComponentPortal(content);\n }\n}\n","<fd-message-strip\n [class]=\"messageStripConfig.class\"\n [dismissible]=\"messageStripConfig.dismissible\"\n [autoDismiss]=\"messageStripConfig.duration > 0\"\n [mousePersist]=\"messageStripConfig.mousePersist\"\n [duration]=\"messageStripConfig.duration\"\n [noIcon]=\"messageStripConfig.noIcon\"\n [type]=\"messageStripConfig.type\"\n [id]=\"messageStripConfig.id\"\n [ariaLabelledBy]=\"messageStripConfig.ariaLabelledBy\"\n [ariaLabel]=\"messageStripConfig.ariaLabel\"\n (onDismiss)=\"onDismissHandler()\"\n>\n <ng-template [cdkPortalOutlet]=\"contentPortal\"></ng-template>\n</fd-message-strip>\n","import { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { ComponentRef, Injectable, Injector, Type, inject } from '@angular/core';\nimport { ResponsiveBreakpoints, ViewportSizeObservable } from '@fundamental-ngx/cdk/utils';\nimport { patchLanguage } from '@fundamental-ngx/i18n';\nimport { BehaviorSubject, Observable, Subject, combineLatest, map, tap } from 'rxjs';\nimport { applyDefaultConfig } from './default-config';\nimport { MessageStripAlertContainerComponent } from './message-strip-alert-container/message-strip-alert-container.component';\nimport { MessageStripAlertPosition } from './message-strip-alert.position';\nimport { MessageStripAlertRef } from './message-strip-alert.ref';\nimport { MessageStripAlertComponent } from './message-strip-alert/message-strip-alert.component';\nimport { MessageStripAlert } from './message-strip-alert/message-strip-alert.interface';\nimport { OpenMessageStripAlertConfig } from './open-message-strip-alert.config';\nimport { MessageStripAlertComponentData, MessageStripAlertContainerPosition } from './tokens';\n\n/**\n * Service that is responsible for opening and closing message strip alerts.\n * This should be only created once in entire application.\n * Service is responsible for creating and managing the overlays for the\n * message strip alerts. This also manages the footer components for any\n * given position.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class MessageStripAlertService {\n /** @hidden */\n footerComponents$: Observable<Partial<Record<MessageStripAlertPosition, Type<any>>>>;\n\n /** @hidden */\n private injector = inject(Injector);\n\n /** @hidden */\n private readonly _overlay: Overlay = inject(Overlay);\n\n /** @hidden */\n private viewportSize$ = inject(ViewportSizeObservable);\n\n /** @hidden */\n private readonly _messageStripAlertService = inject(MessageStripAlertService, { optional: true, skipSelf: true });\n\n /** @hidden */\n private _messageAlerts$ = new BehaviorSubject<\n Array<\n Required<OpenMessageStripAlertConfig> & {\n portal: ComponentPortal<MessageStripAlert>;\n }\n >\n >([]);\n\n /** @hidden */\n private _overlayRefs: Partial<\n Record<\n MessageStripAlertPosition,\n {\n ref: OverlayRef;\n containerRef: ComponentRef<MessageStripAlertContainerComponent>;\n }\n >\n > = {};\n\n /** @hidden */\n private _messageStripAlertContainerFooters$ = new BehaviorSubject<\n Partial<Record<MessageStripAlertPosition, Type<any>>>\n >({});\n /** @hidden */\n constructor() {\n if (this._messageStripAlertService) {\n throw new Error('MessageStripAlertService is already provided');\n }\n this.footerComponents$ = this._messageStripAlertContainerFooters$.asObservable();\n this.listenToItemsChanges();\n }\n\n /**\n * Set the footer component for a given position.\n */\n setFooterComponent(position: MessageStripAlertPosition, component: Type<any>): void {\n this._messageStripAlertContainerFooters$.next({\n ...this._messageStripAlertContainerFooters$.value,\n [position]: component\n });\n }\n\n /**\n * Open a message strip alert with given configuration\n */\n open<ComponentType = unknown>(c: OpenMessageStripAlertConfig<ComponentType>): MessageStripAlertRef {\n const config = applyDefaultConfig<ComponentType>(c);\n const alertRef = this.getMessageStripAlertRef(config);\n this._messageAlerts$.next([{ ...config, portal: alertRef.portal }, ...this._messageAlerts$.value]);\n return alertRef;\n }\n\n /** @hidden */\n private getMessageStripAlertRef<ComponentType = unknown>(\n config: Required<OpenMessageStripAlertConfig<ComponentType>>\n ): MessageStripAlertRef {\n const onDismiss$ = new Subject<void>();\n const alertRef = {\n portal: new ComponentPortal(\n MessageStripAlertComponent<ComponentType>,\n null,\n Injector.create({\n providers: [\n {\n provide: MessageStripAlertComponentData,\n useValue: {\n content: config.content,\n closeOnNavigation: config.closeOnNavigation,\n messageStripConfig: {\n ...config.messageStrip,\n onDismiss: () => {\n this._messageAlerts$.next(\n this._messageAlerts$.value.filter((item) => item.portal !== alertRef.portal)\n );\n config.messageStrip &&\n config.messageStrip.onDismiss &&\n config.messageStrip.onDismiss();\n onDismiss$.next();\n onDismiss$.complete();\n }\n }\n }\n },\n {\n provide: MessageStripAlertRef,\n useFactory: () => alertRef\n },\n patchLanguage((lang) => ({\n coreMessageStrip: {\n dismissLabel: config.messageStrip.dismissLabel || lang.coreMessageStrip.dismissLabel\n }\n }))\n ],\n parent: this.injector\n })\n ),\n dismiss: () => {\n this._messageAlerts$.next(this._messageAlerts$.value.filter((item) => item.portal !== alertRef.portal));\n config.messageStrip && config.messageStrip.onDismiss && config.messageStrip.onDismiss();\n onDismiss$.next();\n onDismiss$.complete();\n },\n onDismiss$: onDismiss$.asObservable()\n };\n return alertRef;\n }\n\n /** @hidden */\n private listenToItemsChanges(): void {\n combineLatest([this.viewportSize$, this._messageAlerts$.asObservable()])\n .pipe(\n map(\n ([viewportSize, messageAlerts]): Record<\n MessageStripAlertPosition,\n Array<ComponentPortal<MessageStripAlert>>\n > => {\n if (viewportSize < ResponsiveBreakpoints.M) {\n return messageAlerts.reduce(\n (acc, next) => {\n const position = next.position?.startsWith('top') ? 'top-middle' : 'bottom-middle';\n acc[position] = [...(acc[position] || []), next.portal];\n return acc;\n },\n {} as Record<MessageStripAlertPosition, Array<ComponentPortal<MessageStripAlert>>>\n );\n }\n return messageAlerts.reduce(\n (acc, next) => {\n acc[next.position] = [...(acc[next.position] || []), next.portal];\n return acc;\n },\n {} as Record<MessageStripAlertPosition, Array<ComponentPortal<MessageStripAlert>>>\n );\n }\n ),\n tap(\n (\n messageAlertsByPosition: Partial<\n Record<MessageStripAlertPosition, Array<ComponentPortal<MessageStripAlert>>>\n >\n ) => {\n let topSectionIsOpened = false;\n let bottomSectionIsOpened = false;\n (\n Object.entries(messageAlertsByPosition) as Array<\n [MessageStripAlertPosition, ComponentPortal<MessageStripAlert>[]]\n >\n ).forEach(([position, portals]) => {\n topSectionIsOpened = topSectionIsOpened || position.startsWith('top');\n bottomSectionIsOpened = bottomSectionIsOpened || position.startsWith('bottom');\n const { containerRef } = this.getOverlayRef(position);\n containerRef.instance.attachedElements.set(portals);\n });\n this.syncExistingOverlays(messageAlertsByPosition, bottomSectionIsOpened, topSectionIsOpened);\n }\n )\n )\n .subscribe();\n }\n\n /** @hidden */\n private syncExistingOverlays(\n messageAlertsByPosition: Partial<Record<MessageStripAlertPosition, ComponentPortal<MessageStripAlert>[]>>,\n bottomSectionIsOpened: boolean,\n topSectionIsOpened: boolean\n ): void {\n (Object.keys(this._overlayRefs) as MessageStripAlertPosition[]).forEach((position) => {\n const overlayRef = this._overlayRefs[position];\n if (!overlayRef) {\n return;\n }\n if (!messageAlertsByPosition[position]) {\n overlayRef.ref.dispose();\n delete this._overlayRefs[position];\n } else {\n const ref = overlayRef.ref;\n if (position.startsWith('top')) {\n if (bottomSectionIsOpened) {\n ref.overlayElement.classList.add('fd-message-strip-alert-overlay--bottom-opened');\n } else {\n ref.overlayElement.classList.remove('fd-message-strip-alert-overlay--bottom-opened');\n }\n }\n if (position.startsWith('bottom')) {\n if (topSectionIsOpened) {\n ref.overlayElement.classList.add('fd-message-strip-alert-overlay--top-opened');\n } else {\n ref.overlayElement.classList.remove('fd-message-strip-alert-overlay--top-opened');\n }\n }\n }\n });\n }\n\n /** @hidden */\n private getOverlayRef(position: MessageStripAlertPosition): {\n ref: OverlayRef;\n containerRef: ComponentRef<MessageStripAlertContainerComponent>;\n } {\n if (!this._overlayRefs[position]) {\n const [verticalPosition, horizontalPosition] = position.split('-');\n const overlayRef = this.createOverlay(verticalPosition, horizontalPosition);\n const containerRef = overlayRef.attach(\n new ComponentPortal(\n MessageStripAlertContainerComponent,\n null,\n Injector.create({\n parent: this.injector,\n providers: [\n {\n provide: MessageStripAlertContainerPosition,\n useValue: position\n }\n ]\n })\n )\n );\n this._overlayRefs[position] = { ref: overlayRef, containerRef };\n }\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return this._overlayRefs[position]!;\n }\n\n /** @hidden */\n private createOverlay(verticalPosition: string, horizontalPosition: string): OverlayRef {\n return this._overlay.create({\n panelClass: [\n 'fd-message-strip-alert-overlay',\n `fd-message-strip-alert-overlay--${verticalPosition}`,\n `fd-message-strip-alert-overlay--${horizontalPosition}`\n ],\n hasBackdrop: false\n });\n }\n}\n","const messageStripIndicationColors = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10'] as const;\n\nexport type MessageStripIndicationColor =\n | `${(typeof messageStripIndicationColors)[number]}`\n | `${(typeof messageStripIndicationColors)[number]}b`;\n\nexport const _messageStripIndicationColors = messageStripIndicationColors.reduce(\n (acc: MessageStripIndicationColor[], item) => {\n acc.push(item);\n acc.push(`${item}b`);\n return acc;\n },\n []\n) as MessageStripIndicationColor[];\n","import { NgModule } from '@angular/core';\n\nimport { AutoDismissMessageStripDirective } from './auto-dismiss-message-strip.directive';\nimport { MessageStripIconDirective } from './message-strip-icon.directive';\nimport { MessageStripComponent } from './message-strip.component';\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n imports: [MessageStripComponent, AutoDismissMessageStripDirective, MessageStripIconDirective],\n exports: [MessageStripComponent, AutoDismissMessageStripDirective, MessageStripIconDirective]\n})\nexport class MessageStripModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,9 +1,8 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Input, ChangeDetectionStrategy, ViewEncapsulation, Component, InjectionToken, HostListener, Optional, Inject, Directive, ContentChild, inject, ViewChild, ContentChildren, NgModule } from '@angular/core';
2
+ import { Input, ChangeDetectionStrategy, ViewEncapsulation, Component, InjectionToken, HostListener, Optional, Inject, Directive, ContentChild, computed, inject, ChangeDetectorRef, effect, ViewChild, ContentChildren, NgModule } from '@angular/core';
3
3
  import { IconComponent } from '@fundamental-ngx/core/icon';
4
4
  import { LEFT_ARROW, RIGHT_ARROW, SPACE, ENTER } from '@angular/cdk/keycodes';
5
- import * as i1 from '@fundamental-ngx/cdk/utils';
6
- import { KeyUtil } from '@fundamental-ngx/cdk/utils';
5
+ import { RtlService, KeyUtil } from '@fundamental-ngx/cdk/utils';
7
6
  import { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';
8
7
  import { Subject, Subscription } from 'rxjs';
9
8
  import { debounceTime, startWith } from 'rxjs/operators';
@@ -144,12 +143,10 @@ class MicroProcessFlowComponent {
144
143
  }
145
144
  /** @hidden */
146
145
  get _paginationDirection() {
147
- return this._isRtl ? 1 : -1;
146
+ return this._isRtl() ? 1 : -1;
148
147
  }
149
148
  /** @hidden */
150
- constructor(_cd, _rtl) {
151
- this._cd = _cd;
152
- this._rtl = _rtl;
149
+ constructor() {
153
150
  /** Should connector between items be hidden. */
154
151
  this.independentSteps = false;
155
152
  /** Pagination transition speed in milliseconds */
@@ -167,7 +164,7 @@ class MicroProcessFlowComponent {
167
164
  /** Indicating whether or not any element is focused */
168
165
  this.canItemsReceiveFocus = new Subject();
169
166
  /** @hidden */
170
- this._isRtl = false;
167
+ this._isRtl = computed(() => this._rtlService?.rtl() ?? false, ...(ngDevMode ? [{ debugName: "_isRtl" }] : []));
171
168
  /** @hidden */
172
169
  this._subscriptions = new Subscription();
173
170
  /** @hidden */
@@ -176,7 +173,19 @@ class MicroProcessFlowComponent {
176
173
  this._actionKeys = [SPACE, ENTER];
177
174
  /** @hidden */
178
175
  this._focusedElementIndex = -1;
176
+ /** @hidden */
177
+ this._cd = inject(ChangeDetectorRef);
178
+ /** @hidden */
179
+ this._rtlService = inject(RtlService, { optional: true });
179
180
  inject(ContentDensityObserver).subscribe();
181
+ // React to RTL changes - re-paginate to adjust scroll direction
182
+ effect(() => {
183
+ const rtl = this._rtlService?.rtl();
184
+ // Only re-paginate when RTL service exists and content is scrolled
185
+ if (rtl !== undefined && this.showPreviousButton) {
186
+ this._paginate(0);
187
+ }
188
+ });
180
189
  }
181
190
  /** @hidden */
182
191
  handleKeyboardEvent(event) {
@@ -208,14 +217,6 @@ class MicroProcessFlowComponent {
208
217
  this._disableFocusableItems();
209
218
  }
210
219
  }));
211
- if (this._rtl) {
212
- this._subscriptions.add(this._rtl.rtl.subscribe((value) => {
213
- this._isRtl = value;
214
- if (this.showPreviousButton) {
215
- this._paginate(0);
216
- }
217
- }));
218
- }
219
220
  }
220
221
  /** @hidden */
221
222
  ngAfterViewInit() {
@@ -374,7 +375,7 @@ class MicroProcessFlowComponent {
374
375
  _getPreviousItemsCount() {
375
376
  return this._focusedElementIndex === -1 ? this.previousItemsCount : this._focusedElementIndex;
376
377
  }
377
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: MicroProcessFlowComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.RtlService, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
378
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: MicroProcessFlowComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
378
379
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.0", type: MicroProcessFlowComponent, isStandalone: true, selector: "fd-micro-process-flow", inputs: { independentSteps: "independentSteps", transitionSpeed: "transitionSpeed", transitionTimingFunction: "transitionTimingFunction" }, host: { listeners: { "keydown": "handleKeyboardEvent($event)" }, properties: { "class.fd-micro-process-flow--independent-steps": "independentSteps" }, classAttribute: "fd-micro-process-flow" }, providers: [
379
380
  {
380
381
  provide: MICRO_PROCESS_FLOW,
@@ -387,7 +388,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImpor
387
388
  type: Component,
388
389
  args: [{ selector: 'fd-micro-process-flow', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
389
390
  class: 'fd-micro-process-flow',
390
- '[class.fd-micro-process-flow--independent-steps]': 'independentSteps'
391
+ '[class.fd-micro-process-flow--independent-steps]': 'independentSteps',
392
+ '(keydown)': 'handleKeyboardEvent($event)'
391
393
  }, providers: [
392
394
  {
393
395
  provide: MICRO_PROCESS_FLOW,
@@ -395,9 +397,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImpor
395
397
  },
396
398
  contentDensityObserverProviders()
397
399
  ], imports: [], template: "@if (showPreviousButton) {\n <a\n tabindex=\"0\"\n class=\"fd-micro-process-flow__link-previous\"\n role=\"button\"\n type=\"button\"\n (click)=\"goBack()\"\n (keypress)=\"onKeypressHandler(-1, $event)\"\n >\n {{ previousItemsCount }}\n </a>\n}\n<div class=\"fd-micro-process-flow__overflow-container\" #container>\n <div\n class=\"fd-micro-process-flow__wrapper\"\n #wrapperContainer\n [style.transition-duration]=\"transitionSpeed + 'ms'\"\n [style.transition-timing-function]=\"transitionTimingFunction\"\n >\n <ng-content select=\"fd-micro-process-flow-item\"></ng-content>\n </div>\n</div>\n@if (showNextButton) {\n <a\n tabindex=\"0\"\n class=\"fd-micro-process-flow__link-next\"\n role=\"button\"\n type=\"button\"\n (click)=\"goNext()\"\n (keypress)=\"onKeypressHandler(1, $event)\"\n #goNextButton\n >\n {{ nextItemsCount }}\n </a>\n}\n", styles: [":root{--fdMicro_Process_Flow_Item_Background:var(--sapNeutralBackground);--fdMicro_Process_Flow_Item_Border_Color:var(--sapNeutralBorderColor);--fdMicro_Process_Flow_Item_Hover_Background:var(--fdMicro_Process_Flow_Item_Background);--fdMicro_Process_Flow_Item_Hover_Border_Color:var(--fdMicro_Process_Flow_Item_Border_Color);--fdMicro_Process_Flow_Item_Active_Background:var(--sapHighlightColor);--fdMicro_Process_Flow_Item_Active_Border_Color:var(--sapHighlightColor);--fdMicro_Process_Flow_Item_Width:2.75rem;--fdMicro_Process_Flow_Item_Min_Width:1.875rem;--fdMicro_Process_Flow_Compact_Item_Width:2rem;--fdMicro_Process_Flow_Compact_Item_Min_Width:1.375rem;--fdMicro_Process_Flow_Connector_Width:1.125rem;--fdMicro_Process_Flow_Compact_Connector_Width:.625rem;--fdMicro_Process_Flow_Icon_Font_Size:var(--sapFontLargeSize);--fdMicro_Process_Flow_Visible_items:8;--fdMicro_Process_Flow_Max_Container_Width:calc(var(--fdMicro_Process_Flow_Item_Width)*(var(--fdMicro_Process_Flow_Visible_items) + 1) + .0625rem);--fdMicro_Process_Flow_Compact_Max_Container_Width:calc(var(--fdMicro_Process_Flow_Compact_Item_Width)*(var(--fdMicro_Process_Flow_Visible_items) + 1) + .0625rem)}.fd-micro-process-flow{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-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;max-width:var(--fdMicro_Process_Flow_Max_Container_Width)}.fd-micro-process-flow:after,.fd-micro-process-flow:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-micro-process-flow--independent-steps .fd-micro-process-flow__connector:before{border-color:transparent}.fd-micro-process-flow__wrapper{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-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-transition-property:-webkit-transform;transition-property:-webkit-transform;transition-property:transform;transition-property:transform,-webkit-transform}.fd-micro-process-flow__wrapper:after,.fd-micro-process-flow__wrapper:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-micro-process-flow__overflow-container{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-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;overflow:hidden;width:100%}.fd-micro-process-flow__overflow-container:after,.fd-micro-process-flow__overflow-container:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-micro-process-flow__link-next,.fd-micro-process-flow__link-previous{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-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-inline:0;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:var(--sapGroup_TitleTextColor);cursor:pointer;font-size:var(--sapFontSize);padding-block:0;padding-inline:.313rem;text-shadow:var(--sapContent_TextShadow)}.fd-micro-process-flow__link-next:after,.fd-micro-process-flow__link-next:before,.fd-micro-process-flow__link-previous:after,.fd-micro-process-flow__link-previous:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-micro-process-flow__link-next.is-focus,.fd-micro-process-flow__link-next:focus,.fd-micro-process-flow__link-previous.is-focus,.fd-micro-process-flow__link-previous:focus{outline:var(--sapContent_FocusColor) var(--sapContent_FocusStyle) var(--sapContent_FocusWidth);outline-offset:-.1875rem}.fd-micro-process-flow__link-next:after,.fd-micro-process-flow__link-next:before,.fd-micro-process-flow__link-previous:after,.fd-micro-process-flow__link-previous:before{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:var(--sapButton_TextColor);font-family:SAP-icons;text-align:center;text-decoration:inherit;text-rendering:optimizeLegibility;text-transform:none}.fd-micro-process-flow__link-next.is-hover:after,.fd-micro-process-flow__link-next.is-hover:before,.fd-micro-process-flow__link-next:hover:after,.fd-micro-process-flow__link-next:hover:before,.fd-micro-process-flow__link-previous.is-hover:after,.fd-micro-process-flow__link-previous.is-hover:before,.fd-micro-process-flow__link-previous:hover:after,.fd-micro-process-flow__link-previous:hover:before{color:var(--sapButton_Hover_TextColor)}.fd-micro-process-flow__link-previous:before{content:\"\\e067\";-webkit-padding-end:.313rem;padding-inline-end:.313rem}.fd-micro-process-flow__link-previous[dir=rtl]:before,[dir=rtl] .fd-micro-process-flow__link-previous:before{content:\"\\e066\"}.fd-micro-process-flow__link-next{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.fd-micro-process-flow__link-next:after{content:\"\\e066\";-webkit-padding-start:.313rem;padding-inline-start:.313rem}.fd-micro-process-flow__link-next[dir=rtl]:after,[dir=rtl] .fd-micro-process-flow__link-next:after{content:\"\\e067\"}.fd-micro-process-flow .fd-micro-process-flow__item{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;padding-block:0;padding-inline:0;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-padding-start:.1875rem;margin-block:calc(var(--sapContent_FocusWidth) + var(--sapContent_FocusWidth));margin-inline:0;padding-inline-start:.1875rem;position:relative;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.fd-micro-process-flow .fd-micro-process-flow__item:after,.fd-micro-process-flow .fd-micro-process-flow__item:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-micro-process-flow .fd-micro-process-flow__item--positive{--fdMicro_Process_Flow_Item_Background:var(--sapPositiveElementColor);--fdMicro_Process_Flow_Item_Border_Color:var(--sapPositiveElementColor);--fdMicro_Process_Flow_Item_Hover_Background:var(--sapButton_Success_Hover_Background);--fdMicro_Process_Flow_Item_Hover_Border_Color:var(--sapButton_Success_Hover_Background);--fdMicro_Process_Flow_Item_Active_Background:var(--sapHighlightColor);--fdMicro_Process_Flow_Item_Active_Border_Color:var(--sapHighlightColor);--fdMicro_Process_Flow_Icon_Color:var(--fdMicro_Process_Flow_Active_Icon_Color)}.fd-micro-process-flow .fd-micro-process-flow__item--information{--fdMicro_Process_Flow_Item_Background:var(--sapInformativeElementColor);--fdMicro_Process_Flow_Item_Border_Color:var(--sapInformativeElementColor);--fdMicro_Process_Flow_Item_Hover_Background:var(--sapButton_Information_Hover_Background);--fdMicro_Process_Flow_Item_Hover_Border_Color:var(--sapButton_Information_Hover_Background);--fdMicro_Process_Flow_Item_Active_Background:var(--sapHighlightColor);--fdMicro_Process_Flow_Item_Active_Border_Color:var(--sapHighlightColor);--fdMicro_Process_Flow_Icon_Color:var(--fdMicro_Process_Flow_Active_Icon_Color)}.fd-micro-process-flow .fd-micro-process-flow__item--negative{--fdMicro_Process_Flow_Item_Background:var(--sapNegativeElementColor);--fdMicro_Process_Flow_Item_Border_Color:var(--sapNegativeElementColor);--fdMicro_Process_Flow_Item_Hover_Background:var(--sapButton_Negative_Hover_Background);--fdMicro_Process_Flow_Item_Hover_Border_Color:var(--sapButton_Negative_Hover_Background);--fdMicro_Process_Flow_Item_Active_Background:var(--sapHighlightColor);--fdMicro_Process_Flow_Item_Active_Border_Color:var(--sapHighlightColor);--fdMicro_Process_Flow_Icon_Color:var(--fdMicro_Process_Flow_Active_Icon_Color)}.fd-micro-process-flow .fd-micro-process-flow__item--critical{--fdMicro_Process_Flow_Item_Background:var(--sapCriticalElementColor);--fdMicro_Process_Flow_Item_Border_Color:var(--sapCriticalElementColor);--fdMicro_Process_Flow_Item_Hover_Background:var(--sapButton_Critical_Hover_Background);--fdMicro_Process_Flow_Item_Hover_Border_Color:var(--sapButton_Critical_Hover_Background);--fdMicro_Process_Flow_Item_Active_Background:var(--sapHighlightColor);--fdMicro_Process_Flow_Item_Active_Border_Color:var(--sapHighlightColor);--fdMicro_Process_Flow_Icon_Color:var(--fdMicro_Process_Flow_Active_Icon_Color)}.fd-micro-process-flow .fd-micro-process-flow__item--information .fd-micro-process-flow__icon-container.is-hover,.fd-micro-process-flow .fd-micro-process-flow__item--information .fd-micro-process-flow__icon-container:hover{--fdMicro_Process_Flow_Icon_Color:var(--sapButton_Information_Hover_TextColor);--fdMicro_Process_Flow_Item_Border_Color:var(--sapInformationBorderColor)}.fd-micro-process-flow .fd-micro-process-flow__item--information .fd-micro-process-flow__icon-container.is-active,.fd-micro-process-flow .fd-micro-process-flow__item--information .fd-micro-process-flow__icon-container:active{--fdMicro_Process_Flow_Icon_Color:var(--sapContent_ContrastIconColor);--fdMicro_Process_Flow_Item_Border_Color:var(--sapContent_Selected_ForegroundColor)}.fd-micro-process-flow .fd-micro-process-flow__item .fd-status-indicator .fdstatus-indicator__svg{width:auto}.fd-micro-process-flow__focusable-item.is-focus,.fd-micro-process-flow__focusable-item:focus{outline:var(--sapContent_FocusColor) var(--sapContent_FocusStyle) var(--sapContent_FocusWidth);outline-offset:.0625rem}.fd-micro-process-flow .fd-micro-process-flow__icon-container{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-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:var(--fdMicro_Process_Flow_Item_Background);border:.0625rem solid var(--fdMicro_Process_Flow_Item_Border_Color);border-radius:50%;min-height:var(--fdMicro_Process_Flow_Item_Min_Width);min-width:var(--fdMicro_Process_Flow_Item_Min_Width)}.fd-micro-process-flow .fd-micro-process-flow__icon-container:after,.fd-micro-process-flow .fd-micro-process-flow__icon-container:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-micro-process-flow .fd-micro-process-flow__icon-container .fd-micro-process-flow__icon{color:var(--fdMicro_Process_Flow_Icon_Color);font-size:var(--fdMicro_Process_Flow_Icon_Font_Size)}.fd-micro-process-flow .fd-micro-process-flow__icon-container.is-hover,.fd-micro-process-flow .fd-micro-process-flow__icon-container:hover{--fdMicro_Process_Flow_Item_Background:var(--fdMicro_Process_Flow_Item_Hover_Background);--fdMicro_Process_Flow_Item_Border_Color:var(--fdMicro_Process_Flow_Item_Hover_Border_Color)}.fd-micro-process-flow .fd-micro-process-flow__icon-container.is-active,.fd-micro-process-flow .fd-micro-process-flow__icon-container:active{--fdMicro_Process_Flow_Item_Background:var(--fdMicro_Process_Flow_Item_Active_Background);--fdMicro_Process_Flow_Item_Border_Color:var(--fdMicro_Process_Flow_Item_Active_Border_Color);--fdMicro_Process_Flow_Icon_Color:var(--fdMicro_Process_Flow_Active_Icon_Color)}.fd-micro-process-flow__content{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-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:center;-ms-flex-align:center;align-items:center;min-height:var(--fdMicro_Process_Flow_Item_Min_Width);min-width:var(--fdMicro_Process_Flow_Item_Min_Width);width:100%}.fd-micro-process-flow__content:after,.fd-micro-process-flow__content:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-micro-process-flow__connector{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-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;height:100%;min-width:var(--fdMicro_Process_Flow_Connector_Width);position:relative;-webkit-margin-start:.1875rem;margin-inline-start:.1875rem}.fd-micro-process-flow__connector:after,.fd-micro-process-flow__connector:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-micro-process-flow__connector:before{border-bottom:.0625rem solid var(--sapContent_ForegroundBorderColor);content:\"\";display:block;position:absolute;width:100%;z-index:1}.fd-micro-process-flow__connector--intermediate:after{background:var(--sapNegativeElementColor);bottom:0;content:\"\";display:block;left:50%;position:absolute;top:0;width:.25rem;-webkit-margin-start:-.125rem;margin-inline-start:-.125rem;z-index:2}.fd-micro-process-flow__connector--intermediate[dir=rtl]:after,[dir=rtl] .fd-micro-process-flow__connector--intermediate:after{-webkit-margin-end:-.125rem;margin-inline-end:-.125rem}.fd-micro-process-flow__connector .fd-micro-process-flow__intermediary-item{line-height:1;position:relative;z-index:3}.fd-micro-process-flow[class*=-compact],.fd-micro-process-flow[class*=-condensed],[class*=-compact] .fd-micro-process-flow:not([class*=-cozy]),[class*=-condensed] .fd-micro-process-flow:not([class*=-cozy]){--fdMicro_Process_Flow_Item_Min_Width:var(--fdMicro_Process_Flow_Compact_Item_Min_Width);--fdMicro_Process_Flow_Connector_Width:var(--fdMicro_Process_Flow_Compact_Connector_Width);--fdMicro_Process_Flow_Icon_Font_Size:var(--sapFontSmallSize);--fdMicro_Process_Flow_Item_Width:var(--fdMicro_Process_Flow_Compact_Item_Width);--fdMicro_Process_Flow_Max_Container_Width:var(--fdMicro_Process_Flow_Compact_Max_Container_Width)}\n/*! Bundled license information:\n\nfundamental-styles/dist/micro-process-flow.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"] }]
398
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.RtlService, decorators: [{
399
- type: Optional
400
- }] }], propDecorators: { independentSteps: [{
400
+ }], ctorParameters: () => [], propDecorators: { independentSteps: [{
401
401
  type: Input
402
402
  }], transitionSpeed: [{
403
403
  type: Input
@@ -418,9 +418,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImpor
418
418
  }], _goNextButton: [{
419
419
  type: ViewChild,
420
420
  args: ['goNextButton']
421
- }], handleKeyboardEvent: [{
422
- type: HostListener,
423
- args: ['keydown', ['$event']]
424
421
  }] } });
425
422
 
426
423
  class MicroProcessFlowIntermediaryItemDirective {