{"version":3,"file":"accordion.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/accordion/accordion-token.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/accordion/expansion-panel-base.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/accordion/expansion-panel-content.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/accordion/expansion-panel.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/accordion/expansion-panel.html","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/accordion/expansion-panel-header.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/accordion/expansion-panel-header.html","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/accordion/accordion.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/accordion/accordion.module.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nimport type { SbbAccordion } from './accordion';\n\n/**\n * Token used to provide a `SbbAccordion` to `SbbExpansionPanel`.\n * Used primarily to avoid circular imports between `SbbAccordion` and `SbbExpansionPanel`.\n */\nexport const SBB_ACCORDION = new InjectionToken<SbbAccordion>('SBB_ACCORDION');\n","import { CdkAccordionItem } from '@angular/cdk/accordion';\nimport { InjectionToken } from '@angular/core';\n\n/**\n * Base interface for a `SbbExpansionPanel`.\n * @docs-private\n */\nexport interface SbbExpansionPanelBase extends CdkAccordionItem {\n  /** Whether the toggle indicator should be hidden. */\n  hideToggle: boolean;\n}\n\n/**\n * Token used to provide a `SbbExpansionPanel` to `SbbExpansionPanelContent`.\n * Used to avoid circular imports between `SbbExpansionPanel` and `SbbExpansionPanelContent`.\n */\nexport const SBB_EXPANSION_PANEL = new InjectionToken<SbbExpansionPanelBase>('SBB_EXPANSION_PANEL');\n","import { Directive, inject, TemplateRef } from '@angular/core';\n\nimport { SbbExpansionPanelBase, SBB_EXPANSION_PANEL } from './expansion-panel-base';\n\n/**\n * Expansion panel content that will be rendered lazily\n * after the panel is opened for the first time.\n */\n@Directive({\n  selector: 'ng-template[sbbExpansionPanelContent]',\n})\nexport class SbbExpansionPanelContent {\n  _template: TemplateRef<any> = inject<TemplateRef<any>>(TemplateRef);\n  _expansionPanel: SbbExpansionPanelBase | null = inject<SbbExpansionPanelBase>(\n    SBB_EXPANSION_PANEL,\n    { optional: true },\n  );\n\n  constructor(...args: unknown[]);\n  constructor() {}\n}\n","import { _IdGenerator } from '@angular/cdk/a11y';\nimport { CdkAccordionItem } from '@angular/cdk/accordion';\nimport { CdkPortalOutlet, TemplatePortal } from '@angular/cdk/portal';\nimport { DOCUMENT } from '@angular/common';\nimport {\n  AfterContentInit,\n  ANIMATION_MODULE_TYPE,\n  booleanAttribute,\n  ChangeDetectionStrategy,\n  Component,\n  ContentChild,\n  ElementRef,\n  EventEmitter,\n  inject,\n  Input,\n  NgZone,\n  OnChanges,\n  OnDestroy,\n  Output,\n  SimpleChanges,\n  ViewChild,\n  ViewContainerRef,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { mixinVariant, TypeRef } from '@sbb-esta/angular/core';\nimport { Subject } from 'rxjs';\nimport { filter, startWith, take } from 'rxjs/operators';\n\nimport type { SbbAccordion } from './accordion';\nimport { SBB_ACCORDION } from './accordion-token';\nimport { SBB_EXPANSION_PANEL } from './expansion-panel-base';\nimport { SbbExpansionPanelContent } from './expansion-panel-content';\n\n/** SbbExpansionPanel's states. */\nexport type SbbExpansionPanelState = 'expanded' | 'collapsed';\n\n// Boilerplate for applying mixins to SbbExpansionPanel.\n/** @docs-private */\nconst _SbbExpansionPanelBase = mixinVariant(CdkAccordionItem);\n\n/**\n * This component can be used as a single element to show expandable content, or as one of\n * multiple children of an element with the SbbAccordion component attached.\n */\n@Component({\n  selector: 'sbb-expansion-panel',\n  exportAs: 'sbbExpansionPanel',\n  templateUrl: './expansion-panel.html',\n  styleUrls: ['./expansion-panel.css'],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  inputs: [\n    { name: 'expanded', transform: booleanAttribute },\n    { name: 'disabled', transform: booleanAttribute },\n  ],\n  outputs: ['expandedChange'],\n  // Provide SbbAccordion as undefined to prevent nested expansion panels from registering\n  // to the same accordion.\n  providers: [\n    {\n      provide: SBB_ACCORDION,\n      useValue: undefined,\n    },\n    { provide: SBB_EXPANSION_PANEL, useExisting: SbbExpansionPanel },\n  ],\n  host: {\n    class: 'sbb-expansion-panel',\n    '[class.sbb-expanded]': 'expanded',\n  },\n  imports: [CdkPortalOutlet],\n})\nexport class SbbExpansionPanel\n  extends _SbbExpansionPanelBase\n  implements AfterContentInit, OnChanges, OnDestroy\n{\n  private _viewContainerRef = inject(ViewContainerRef);\n  private readonly _animationsDisabled =\n    inject(ANIMATION_MODULE_TYPE, { optional: true }) === 'NoopAnimations';\n\n  private _document = inject(DOCUMENT);\n  private _ngZone = inject(NgZone);\n  private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n  /** Whether the toggle indicator should be hidden. */\n  @Input({ transform: booleanAttribute })\n  get hideToggle(): boolean {\n    return this._hideToggle || (this.accordion && this.accordion.hideToggle);\n  }\n\n  set hideToggle(value: boolean) {\n    this._hideToggle = value;\n  }\n\n  private _hideToggle = false;\n\n  /** An event emitted after the body's expansion animation happens. */\n  @Output() afterExpand: EventEmitter<void> = new EventEmitter<void>();\n\n  /** An event emitted after the body's collapse animation happens. */\n  @Output() afterCollapse: EventEmitter<void> = new EventEmitter<void>();\n\n  /** Stream that emits for changes in `@Input` properties. */\n  readonly _inputChanges = new Subject<SimpleChanges>();\n\n  /** Optionally defined accordion the expansion panel belongs to. */\n  override accordion = inject<TypeRef<SbbAccordion>>(SBB_ACCORDION, {\n    optional: true,\n    skipSelf: true,\n  })!;\n\n  /** Content that will be rendered lazily. */\n  @ContentChild(SbbExpansionPanelContent) _lazyContent!: SbbExpansionPanelContent;\n\n  /** Element containing the panel's user-provided content. */\n  @ViewChild('body') _body!: ElementRef<HTMLElement>;\n\n  /** Element wrapping the panel body. */\n  @ViewChild('bodyWrapper')\n  protected _bodyWrapper: ElementRef<HTMLElement> | undefined;\n\n  /** Portal holding the user's content. */\n  _portal!: TemplatePortal;\n\n  /** ID for the associated header element. Used for a11y labelling. */\n  _headerId: string = inject(_IdGenerator).getId('sbb-expansion-panel-header-');\n\n  constructor(...args: unknown[]);\n  constructor() {\n    super();\n  }\n\n  /** Gets the expanded state string. */\n  _getExpandedState(): SbbExpansionPanelState {\n    return this.expanded ? 'expanded' : 'collapsed';\n  }\n\n  /** Toggles the expanded state of the expansion panel. */\n  override toggle(): void {\n    this.expanded = !this.expanded;\n  }\n\n  /** Sets the expanded state of the expansion panel to false. */\n  override close(): void {\n    this.expanded = false;\n  }\n\n  /** Sets the expanded state of the expansion panel to true. */\n  override open(): void {\n    this.expanded = true;\n  }\n\n  ngAfterContentInit() {\n    if (this._lazyContent && this._lazyContent._expansionPanel === this) {\n      // Render the content as soon as the panel becomes open.\n      this.opened\n        .pipe(\n          startWith(null),\n          filter(() => this.expanded && !this._portal),\n          take(1),\n        )\n        .subscribe(() => {\n          this._portal = new TemplatePortal(this._lazyContent._template, this._viewContainerRef);\n        });\n    }\n\n    this._setupAnimationEvents();\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    this._inputChanges.next(changes);\n  }\n\n  override ngOnDestroy() {\n    super.ngOnDestroy();\n    this._bodyWrapper?.nativeElement.removeEventListener(\n      'transitionend',\n      this._transitionEndListener,\n    );\n    this._inputChanges.complete();\n  }\n\n  private _transitionEndListener = ({ target, propertyName }: TransitionEvent) => {\n    if (target === this._bodyWrapper?.nativeElement && propertyName === 'grid-template-rows') {\n      this._ngZone.run(() => {\n        if (this.expanded) {\n          this.afterExpand.emit();\n        } else {\n          this.afterCollapse.emit();\n        }\n      });\n    }\n  };\n\n  protected _setupAnimationEvents() {\n    // This method is defined separately, because we need to\n    // disable this logic in some internal components.\n    this._ngZone.runOutsideAngular(() => {\n      if (this._animationsDisabled) {\n        this.opened.subscribe(() => this._ngZone.run(() => this.afterExpand.emit()));\n        this.closed.subscribe(() => this._ngZone.run(() => this.afterCollapse.emit()));\n      } else {\n        setTimeout(() => {\n          const element = this._elementRef.nativeElement;\n          element.addEventListener('transitionend', this._transitionEndListener);\n          element.classList.add('sbb-expansion-panel-animations-enabled');\n        }, 200);\n      }\n    });\n  }\n\n  /** Checks whether the expansion panel's content contains the currently-focused element. */\n  _containsFocus(): boolean {\n    if (this._body) {\n      const focusedElement = this._document.activeElement;\n      const bodyElement = this._body.nativeElement;\n      return focusedElement === bodyElement || bodyElement.contains(focusedElement);\n    }\n\n    return false;\n  }\n}\n","<ng-content select=\"sbb-expansion-panel-header\"></ng-content>\n<div class=\"sbb-expansion-panel-content-wrapper\" [attr.inert]=\"expanded ? null : ''\" #bodyWrapper>\n  <div\n    class=\"sbb-expansion-panel-content\"\n    role=\"region\"\n    [attr.aria-labelledby]=\"_headerId\"\n    [id]=\"id\"\n    #body\n  >\n    <div class=\"sbb-expansion-panel-body sbb-expansion-panel-horizontal-padding\">\n      <ng-content></ng-content>\n      <ng-template [cdkPortalOutlet]=\"_portal\"></ng-template>\n    </div>\n  </div>\n</div>\n","import { FocusableOption, FocusMonitor, FocusOrigin } from '@angular/cdk/a11y';\nimport { ENTER, hasModifierKey, SPACE } from '@angular/cdk/keycodes';\nimport { AsyncPipe, DOCUMENT } from '@angular/common';\nimport {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  HostAttributeToken,\n  HostListener,\n  inject,\n  Input,\n  numberAttribute,\n  OnDestroy,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { TypeRef } from '@sbb-esta/angular/core';\nimport { SbbIconModule } from '@sbb-esta/angular/icon';\nimport { EMPTY, merge, Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nimport { SbbExpansionPanel } from './expansion-panel';\n\n/**\n * This component corresponds to the header element of an `<sbb-expansion-panel>`.\n */\n@Component({\n  selector: 'sbb-expansion-panel-header',\n  templateUrl: './expansion-panel-header.html',\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  inputs: ['tabIndex'],\n  host: {\n    class: 'sbb-expansion-panel-header sbb-expansion-panel-horizontal-padding',\n    role: 'button',\n    '[attr.id]': 'panel._headerId',\n    '[attr.tabindex]': 'disabled ? -1 : tabIndex',\n    '[attr.aria-controls]': '_getPanelId()',\n    '[attr.aria-expanded]': '_isExpanded()',\n    '[attr.aria-disabled]': 'disabled',\n    '[class.sbb-expanded]': '_isExpanded()',\n    '[class.sbb-disabled]': 'disabled',\n  },\n  imports: [SbbIconModule, AsyncPipe],\n})\nexport class SbbExpansionPanelHeader implements AfterViewInit, OnDestroy, FocusableOption {\n  panel: SbbExpansionPanel = inject(SbbExpansionPanel, { host: true });\n  private _element = inject(ElementRef);\n  private _focusMonitor = inject(FocusMonitor);\n  private _changeDetectorRef = inject(ChangeDetectorRef);\n  private _document = inject<TypeRef<Document>>(DOCUMENT);\n\n  @Input({ transform: (value: unknown) => (value == null ? 0 : numberAttribute(value)) })\n  tabIndex: number = 0;\n\n  private _parentChangeSubscription = Subscription.EMPTY;\n\n  constructor(...args: unknown[]);\n  constructor() {\n    const panel = this.panel;\n    const tabIndex = inject(new HostAttributeToken('tabindex'), { optional: true });\n\n    const accordionHideToggleChange = panel.accordion\n      ? panel.accordion._stateChanges.pipe(filter((changes) => !!changes['hideToggle']))\n      : EMPTY;\n    this.tabIndex = parseInt(tabIndex || '', 10) || 0;\n\n    // Since the toggle state depends on an @Input on the panel, we\n    // need to subscribe and trigger change detection manually.\n    this._parentChangeSubscription = merge(\n      panel.opened,\n      panel.closed,\n      accordionHideToggleChange,\n      panel._inputChanges.pipe(\n        filter((changes) => !!(changes['hideToggle'] || changes['disabled'])),\n      ),\n    ).subscribe(() => this._changeDetectorRef.markForCheck());\n\n    // Avoids focus being lost if the panel contained the focused element and was closed.\n    panel.closed\n      .pipe(filter(() => panel._containsFocus()))\n      .subscribe(() => this._focusMonitor.focusVia(this._element, 'program'));\n  }\n\n  /**\n   * Whether the associated panel is disabled. Implemented as a part of `FocusableOption`.\n   * @docs-private\n   */\n  get disabled() {\n    return this.panel.disabled;\n  }\n\n  /** Toggles the expanded state of the panel. */\n  @HostListener('click')\n  _toggle(): void {\n    if (!this.disabled) {\n      this.panel.toggle();\n    }\n  }\n\n  /** Gets whether the panel is expanded. */\n  _isExpanded(): boolean {\n    return this.panel.expanded;\n  }\n\n  /** Gets the expanded state string of the panel. */\n  _getExpandedState(): string {\n    return this.panel._getExpandedState();\n  }\n\n  /** Gets the panel id. */\n  _getPanelId(): string {\n    return this.panel.id;\n  }\n\n  /** Gets whether the expand indicator should be shown. */\n  _showToggle(): boolean {\n    return !this.panel.hideToggle && !this.panel.disabled;\n  }\n\n  /** Handle keydown event calling to toggle() if appropriate. */\n  @HostListener('keydown', ['$event'])\n  _keydown(event: TypeRef<KeyboardEvent>) {\n    switch (event.keyCode) {\n      // Toggle for space and enter keys.\n      case SPACE:\n      case ENTER:\n        if (!hasModifierKey(event) && this._isFocused()) {\n          // See https://github.com/sbb-design-systems/sbb-angular/issues/377\n          event.preventDefault();\n          this._toggle();\n        }\n        break;\n      default:\n        if (this.panel.accordion) {\n          this.panel.accordion._handleHeaderKeydown(event);\n        }\n\n        return;\n    }\n  }\n\n  /**\n   * Focuses the panel header. Implemented as a part of `FocusableOption`.\n   * @param origin Origin of the action that triggered the focus.\n   * @docs-private\n   */\n  focus(origin?: FocusOrigin, options?: FocusOptions) {\n    if (origin) {\n      this._focusMonitor.focusVia(this._element, origin, options);\n    } else {\n      this._element.nativeElement.focus(options);\n    }\n  }\n\n  ngAfterViewInit() {\n    this._focusMonitor.monitor(this._element).subscribe((origin) => {\n      if (origin && this.panel.accordion) {\n        this.panel.accordion._handleHeaderFocus(this);\n      }\n    });\n  }\n\n  ngOnDestroy() {\n    this._parentChangeSubscription.unsubscribe();\n    this._focusMonitor.stopMonitoring(this._element);\n  }\n\n  private _isFocused() {\n    return this._document?.activeElement === this._element.nativeElement;\n  }\n}\n","<span class=\"sbb-expansion-panel-header-content\">\n  <ng-content></ng-content>\n</span>\n@if (_showToggle()) {\n  <span class=\"sbb-expansion-panel-header-indicator sbb-icon-fit\">\n    @switch (panel.variant | async) {\n      @case ('standard') {\n        @switch (_isExpanded()) {\n          @case (false) {\n            <sbb-icon svgIcon=\"plus-small\"></sbb-icon>\n          }\n          @case (true) {\n            <sbb-icon svgIcon=\"minus-small\"></sbb-icon>\n          }\n        }\n      }\n      @default {\n        <sbb-icon svgIcon=\"chevron-right-small\"></sbb-icon>\n      }\n    }\n  </span>\n}\n","import { FocusKeyManager } from '@angular/cdk/a11y';\nimport { CdkAccordion } from '@angular/cdk/accordion';\nimport {\n  AfterContentInit,\n  booleanAttribute,\n  ContentChildren,\n  Directive,\n  Input,\n  OnDestroy,\n  QueryList,\n} from '@angular/core';\nimport { startWith } from 'rxjs/operators';\n\nimport { SBB_ACCORDION } from './accordion-token';\nimport { SbbExpansionPanelHeader } from './expansion-panel-header';\n\n@Directive({\n  selector: 'sbb-accordion',\n  exportAs: 'sbbAccordion',\n  providers: [\n    {\n      provide: SBB_ACCORDION,\n      useExisting: SbbAccordion,\n    },\n  ],\n  host: {\n    class: 'sbb-accordion',\n  },\n})\nexport class SbbAccordion extends CdkAccordion implements AfterContentInit, OnDestroy {\n  private _keyManager!: FocusKeyManager<SbbExpansionPanelHeader>;\n\n  /** Headers belonging to this accordion. */\n  private _ownHeaders = new QueryList<SbbExpansionPanelHeader>();\n\n  /** All headers inside the accordion. Includes headers inside nested accordions. */\n  @ContentChildren(SbbExpansionPanelHeader, { descendants: true })\n  _headers!: QueryList<SbbExpansionPanelHeader>;\n\n  /** Whether the expansion indicator should be hidden. */\n  @Input({ transform: booleanAttribute })\n  hideToggle: boolean = false;\n\n  ngAfterContentInit() {\n    this._headers.changes\n      .pipe(startWith(this._headers))\n      .subscribe((headers: QueryList<SbbExpansionPanelHeader>) => {\n        this._ownHeaders.reset(headers.filter((header) => header.panel.accordion === this));\n        this._ownHeaders.notifyOnChanges();\n      });\n\n    this._keyManager = new FocusKeyManager(this._ownHeaders).withWrap().withHomeAndEnd();\n  }\n\n  /** Handles keyboard events coming in from the panel headers. */\n  _handleHeaderKeydown(event: KeyboardEvent) {\n    this._keyManager.onKeydown(event);\n  }\n\n  _handleHeaderFocus(header: SbbExpansionPanelHeader) {\n    this._keyManager.updateActiveItem(header);\n  }\n\n  override ngOnDestroy() {\n    super.ngOnDestroy();\n    this._keyManager?.destroy();\n    this._ownHeaders.destroy();\n  }\n}\n","import { CdkAccordionModule } from '@angular/cdk/accordion';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { NgModule } from '@angular/core';\nimport { SbbCommonModule } from '@sbb-esta/angular/core';\nimport { SbbIconModule } from '@sbb-esta/angular/icon';\n\nimport { SbbAccordion } from './accordion';\nimport { SbbExpansionPanel } from './expansion-panel';\nimport { SbbExpansionPanelContent } from './expansion-panel-content';\nimport { SbbExpansionPanelHeader } from './expansion-panel-header';\n\n@NgModule({\n  imports: [\n    CdkAccordionModule,\n    PortalModule,\n    SbbCommonModule,\n    SbbIconModule,\n    SbbAccordion,\n    SbbExpansionPanel,\n    SbbExpansionPanelHeader,\n    SbbExpansionPanelContent,\n  ],\n  exports: [SbbAccordion, SbbExpansionPanel, SbbExpansionPanelHeader, SbbExpansionPanelContent],\n})\nexport class SbbAccordionModule {}\n"],"names":[],"mappings":"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"}