{"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":["SBB_ACCORDION","InjectionToken","SBB_EXPANSION_PANEL","SbbExpansionPanelContent","_template","inject","TemplateRef","_expansionPanel","optional","constructor","deps","target","i0","ɵɵFactoryTarget","Directive","isStandalone","selector","ngImport","decorators","args","_SbbExpansionPanelBase","mixinVariant","CdkAccordionItem","SbbExpansionPanel","_viewContainerRef","ViewContainerRef","_animationsDisabled","ANIMATION_MODULE_TYPE","_document","DOCUMENT","_ngZone","NgZone","_elementRef","ElementRef","hideToggle","_hideToggle","accordion","value","afterExpand","EventEmitter","afterCollapse","_inputChanges","Subject","skipSelf","_lazyContent","_body","_bodyWrapper","_portal","_headerId","_IdGenerator","getId","_getExpandedState","expanded","toggle","close","open","ngAfterContentInit","opened","pipe","startWith","filter","take","subscribe","TemplatePortal","_setupAnimationEvents","ngOnChanges","changes","next","ngOnDestroy","nativeElement","removeEventListener","_transitionEndListener","complete","propertyName","run","emit","runOutsideAngular","closed","setTimeout","element","addEventListener","classList","add","_containsFocus","focusedElement","activeElement","bodyElement","contains","Component","ɵcmp","ɵɵngDeclareComponent","minVersion","version","type","booleanAttribute","disabled","outputs","expandedChange","host","properties","classAttribute","providers","provide","useValue","undefined","useExisting","queries","first","predicate","descendants","viewQueries","exportAs","usesInheritance","usesOnChanges","template","styles","dependencies","kind","CdkPortalOutlet","inputs","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","name","transform","class","imports","Input","Output","ContentChild","ViewChild","SbbExpansionPanelHeader","panel","_element","_focusMonitor","FocusMonitor","_changeDetectorRef","ChangeDetectorRef","tabIndex","_parentChangeSubscription","Subscription","EMPTY","HostAttributeToken","accordionHideToggleChange","_stateChanges","parseInt","merge","markForCheck","focusVia","_toggle","_isExpanded","_getPanelId","id","_showToggle","_keydown","event","keyCode","SPACE","ENTER","hasModifierKey","_isFocused","preventDefault","_handleHeaderKeydown","focus","origin","options","ngAfterViewInit","monitor","_handleHeaderFocus","unsubscribe","stopMonitoring","numberAttribute","attributes","listeners","SbbIconModule","i1","SbbIcon","AsyncPipe","role","HostListener","SbbAccordion","CdkAccordion","_keyManager","_ownHeaders","QueryList","_headers","headers","reset","header","notifyOnChanges","FocusKeyManager","withWrap","withHomeAndEnd","onKeydown","updateActiveItem","destroy","ContentChildren","SbbAccordionModule","NgModule","ɵmod","ɵɵngDeclareNgModule","CdkAccordionModule","PortalModule","SbbCommonModule","ɵinj","ɵɵngDeclareInjector","exports"],"mappings":"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"}