{"version":3,"file":"notification.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/notification/notification-animations.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/notification/notification-directives.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/notification/notification.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/notification/notification.html","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/notification/notification.module.ts"],"sourcesContent":["import {\n  animate,\n  AnimationTriggerMetadata,\n  state,\n  style,\n  transition,\n  trigger,\n} from '@angular/animations';\n\n/** Animations used by notifications. */\nexport const sbbNotificationAnimations: {\n  readonly showDismiss: AnimationTriggerMetadata;\n} = {\n  /** Animation that apply when showing or dismissing the notification. */\n  showDismiss: trigger('showDismiss', [\n    state(\n      'void, dismissed',\n      style({\n        height: 0,\n        paddingTop: 0,\n        paddingBottom: 0,\n        borderTopWidth: 0,\n        borderBottomWidth: 0,\n      }),\n    ),\n    state(\n      'visible',\n      style({\n        height: '*',\n        paddingTop: '*',\n        paddingBottom: '*',\n        borderTopWidth: '*',\n        borderBottomWidth: '*',\n      }),\n    ),\n    transition('visible => dismissed', animate('0.25s cubic-bezier(0.4,0.0,0.2,1)')),\n  ]),\n};\n","import { Directive } from '@angular/core';\n\n@Directive({\n  selector: 'sbb-notification-icon',\n})\nexport class SbbNotificationIcon {}\n","import { AnimationEvent } from '@angular/animations';\nimport { _IdGenerator } from '@angular/cdk/a11y';\nimport { AsyncPipe } from '@angular/common';\nimport {\n  booleanAttribute,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChild,\n  EventEmitter,\n  HostListener,\n  inject,\n  Input,\n  OnChanges,\n  Output,\n  SimpleChanges,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { mixinVariant } from '@sbb-esta/angular/core';\nimport { SbbIcon } from '@sbb-esta/angular/icon';\nimport { BehaviorSubject, combineLatest, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { sbbNotificationAnimations } from './notification-animations';\nimport { SbbNotificationIcon } from './notification-directives';\n\nexport interface SbbJumpMark {\n  /** Title of an element in jump marks. */\n  title: string;\n  /** Identifier of an element in jump marks. */\n  elementId?: string;\n  /** Callback to be called on click on the jump mark. */\n  callback?: (event$: any, jumpMark: SbbJumpMark) => void;\n}\n\n/** The supported types of notifications. */\nexport type SbbNotificationType = 'success' | 'info' | 'info-light' | 'warn' | 'error';\n\n/** Notification event.  */\nexport interface SbbNotificationEvent {\n  notification: SbbNotification;\n}\n\n// Boilerplate for applying mixins to SbbNotification.\n// tslint:disable-next-line: naming-convention\nconst _SbbNotificationMixinBase = mixinVariant(class {});\n\n@Component({\n  selector: 'sbb-notification',\n  templateUrl: './notification.html',\n  styleUrls: ['./notification.css'],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  animations: [sbbNotificationAnimations.showDismiss],\n  host: {\n    class: 'sbb-notification',\n    '[class.sbb-notification-success]': `type === 'success'`,\n    '[class.sbb-notification-info]': `type === 'info'`,\n    '[class.sbb-notification-info-light]': `type === 'info-light'`,\n    '[class.sbb-notification-error]': `type === 'error'`,\n    '[class.sbb-notification-warn]': `type === 'warn'`,\n    '[class.sbb-notification-has-jump-marks]': 'jumpMarks && jumpMarks.length',\n    '[id]': 'id',\n    '[attr.hidden]': '_closed ? true : null',\n    '[attr.aria-hidden]': '_closed ? true : null',\n    '[@showDismiss]': '_animationState',\n  },\n  imports: [SbbIcon, AsyncPipe],\n})\nexport class SbbNotification extends _SbbNotificationMixinBase implements OnChanges {\n  private _changeDetectorRef = inject(ChangeDetectorRef);\n\n  /** Whether this notification is closed. */\n  _closed: boolean = false;\n\n  /** The animation state of this notification. */\n  _animationState: 'visible' | 'dismissed' = 'visible';\n\n  /** The id of this element. */\n  @Input() id: string = inject(_IdGenerator).getId('sbb-notification-');\n\n  /**\n   * Type of notification.\n   * In standard design, the types 'warn' and 'error' are equal.\n   */\n  @Input() type: SbbNotificationType = 'success';\n\n  /**\n   * Whether the notification is closable.\n   * This only work for lean design, as with standard it is always readonly.\n   */\n  @Input({ transform: booleanAttribute })\n  get readonly() {\n    return this._readonly;\n  }\n  set readonly(value: boolean) {\n    this._readonly = value;\n    this._changeDetectorRef.markForCheck();\n  }\n  private _readonly = false;\n\n  /**\n   * The icon to be used for the notification.\n   * Must be a valid svgIcon input for sbb-icon.\n   */\n  @Input() svgIcon: string | null = null;\n\n  /** List of in page links displayed on the bottom of the notification */\n  @Input() jumpMarks?: SbbJumpMark[];\n\n  /** Observable which emits when the notification was closed */\n  @Output() readonly dismissed: EventEmitter<SbbNotificationEvent> = new EventEmitter();\n\n  /** Provided icon directive, if available. */\n  @ContentChild(SbbNotificationIcon, { static: true }) _notificationIcon?: SbbNotificationIcon;\n\n  /** An observable of the current icon. */\n  _svgIcon: Observable<string>;\n\n  /** Subject for the current indicator icon. */\n  private _svgIconSubject = new BehaviorSubject<string | null>(null);\n\n  constructor(...args: unknown[]);\n  constructor() {\n    super();\n    this._svgIcon = combineLatest([this.variant, this._svgIconSubject]).pipe(\n      map(([variant, icon]) => {\n        if (icon) {\n          return icon;\n        } else if (this.type === 'success') {\n          return 'tick-small';\n        } else if (this.type === 'error') {\n          return variant === 'standard' ? 'sign-exclamation-point-small' : 'sign-x-small';\n        } else if (this.type === 'warn') {\n          return 'sign-exclamation-point-small';\n        } else {\n          return 'circle-information-small';\n        }\n      }),\n    );\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (\n      changes['svgIcon'] &&\n      changes['svgIcon'].currentValue !== changes['svgIcon'].previousValue\n    ) {\n      this._svgIconSubject.next(this.svgIcon);\n    }\n  }\n\n  /**\n   * Used to scroll to an element identified by a jump mark\n   */\n  _scrollTo(event: MouseEvent, jumpMark: SbbJumpMark) {\n    event.preventDefault();\n    if (jumpMark.elementId) {\n      document.querySelector(jumpMark.elementId)?.scrollIntoView({ behavior: 'smooth' });\n    }\n    if (jumpMark.callback) {\n      jumpMark.callback(event, jumpMark);\n    }\n  }\n\n  /** Close notification */\n  dismiss() {\n    this._animationState = 'dismissed';\n  }\n\n  /** @docs-private */\n  @HostListener('@showDismiss.done', ['$event'])\n  _handleAnimation(event: AnimationEvent) {\n    const { phaseName, toState } = event;\n\n    if (phaseName === 'done' && toState === 'dismissed') {\n      this._closed = true;\n      this._changeDetectorRef.markForCheck();\n      this.dismissed.next({ notification: this });\n    }\n  }\n}\n","<span class=\"sbb-notification-icon-wrapper sbb-icon-fit\">\n  @switch (!!_notificationIcon) {\n    @case (false) {\n      <sbb-icon [svgIcon]=\"(_svgIcon | async)!\"></sbb-icon>\n    }\n    @case (true) {\n      <ng-content select=\"sbb-notification-icon\"></ng-content>\n    }\n  }\n</span>\n\n<div class=\"sbb-notification-content\">\n  <div class=\"sbb-notification-content-message\" [class.sbb-notification-content-title]=\"jumpMarks\">\n    <ng-content></ng-content>\n  </div>\n  @if (jumpMarks) {\n    <div>\n      @for (jumpMark of jumpMarks; track jumpMark; let isLast = $last) {\n        <span class=\"sbb-notification-jump-mark\">\n          <a (click)=\"_scrollTo($event, jumpMark)\">{{ jumpMark.title }}</a>\n          @if (!isLast) {\n            /\n          }\n        </span>\n      }\n    </div>\n  }\n</div>\n\n@if ((variant | async) !== 'standard' && !readonly) {\n  <button\n    class=\"sbb-notification-dismiss-icon-button sbb-button-reset-frameless sbb-icon-scaled\"\n    type=\"button\"\n    (click)=\"dismiss()\"\n  >\n    <sbb-icon svgIcon=\"cross-small\"></sbb-icon>\n  </button>\n}\n","import { NgModule } from '@angular/core';\nimport { SbbCommonModule } from '@sbb-esta/angular/core';\nimport { SbbIconModule } from '@sbb-esta/angular/icon';\n\nimport { SbbNotification } from './notification';\nimport { SbbNotificationIcon } from './notification-directives';\n\n@NgModule({\n  imports: [SbbCommonModule, SbbIconModule, SbbNotification, SbbNotificationIcon],\n  exports: [SbbNotification, SbbNotificationIcon],\n})\nexport class SbbNotificationModule {}\n"],"names":[],"mappings":"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"}