{"version":3,"file":"novo-elements-elements-expansion.mjs","sources":["../../../projects/novo-elements/src/elements/expansion/accordion.ts","../../../projects/novo-elements/src/elements/expansion/expansion-animations.ts","../../../projects/novo-elements/src/elements/expansion/expansion-panel-content.ts","../../../projects/novo-elements/src/elements/expansion/expansion-panel.ts","../../../projects/novo-elements/src/elements/expansion/expansion-panel.html","../../../projects/novo-elements/src/elements/expansion/expansion-panel-header.ts","../../../projects/novo-elements/src/elements/expansion/expansion-panel-header.html","../../../projects/novo-elements/src/elements/expansion/expansion.module.ts","../../../projects/novo-elements/src/elements/expansion/novo-elements-elements-expansion.ts"],"sourcesContent":["import { CdkAccordion } from '@angular/cdk/accordion';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { Directive, Input } from '@angular/core';\n\n/** NovoAccordion's display modes. */\nexport type NovoAccordionDisplayMode = 'default' | 'flat';\n\n/**\n * Directive for a Material Design Accordion.\n */\n@Directive({\n    selector: 'novo-accordion',\n    exportAs: 'novoAccordion',\n    host: {\n        class: 'novo-accordion',\n    },\n    standalone: false,\n})\nexport class NovoAccordion extends CdkAccordion {\n  /** Whether the expansion indicator should be hidden. */\n  @Input()\n  get hideToggle(): boolean {\n    return this._hideToggle;\n  }\n  set hideToggle(show: boolean) {\n    this._hideToggle = coerceBooleanProperty(show);\n  }\n  private _hideToggle: boolean = false;\n\n  /**\n   * The display mode used for all expansion panels in the accordion. Currently two display\n   * modes exist:\n   *  default - a gutter-like spacing is placed around any expanded panel, placing the expanded\n   *     panel at a different elevation from the reset of the accordion.\n   *  flat - no spacing is placed around expanded panels, showing all panels at the same\n   *     elevation.\n   */\n  @Input()\n  displayMode: NovoAccordionDisplayMode = 'default';\n}\n","import { animate, animateChild, AnimationTriggerMetadata, group, query, state, style, transition, trigger } from '@angular/animations';\n\n/** Time and timing curve for expansion panel animations. */\nexport const EXPANSION_PANEL_ANIMATION_TIMING = '225ms cubic-bezier(0.4,0.0,0.2,1)';\n\n/** Animations used by the Material expansion panel. */\nexport const novoExpansionAnimations: {\n  readonly indicatorRotate: AnimationTriggerMetadata;\n  readonly expansionHeaderHeight: AnimationTriggerMetadata;\n  readonly bodyExpansion: AnimationTriggerMetadata;\n} = {\n  /** Animation that rotates the indicator arrow. */\n  indicatorRotate: trigger('indicatorRotate', [\n    state('collapsed', style({ transform: 'rotate(0deg)' })),\n    state('expanded', style({ transform: 'rotate(90deg)' })),\n    transition('expanded <=> collapsed', animate(EXPANSION_PANEL_ANIMATION_TIMING)),\n  ]),\n\n  /** Animation that expands and collapses the panel header height. */\n  expansionHeaderHeight: trigger('expansionHeight', [\n    state(\n      'collapsed',\n      style({\n        height: '{{collapsedHeight}}',\n      }),\n      {\n        params: { collapsedHeight: '48px' },\n      },\n    ),\n    state(\n      'expanded',\n      style({\n        height: '{{expandedHeight}}',\n      }),\n      {\n        params: { expandedHeight: '56px' },\n      },\n    ),\n    transition(\n      'expanded <=> collapsed',\n      group([query('@indicatorRotate', animateChild(), { optional: true }), animate(EXPANSION_PANEL_ANIMATION_TIMING)]),\n    ),\n  ]),\n\n  /** Animation that expands and collapses the panel content. */\n  bodyExpansion: trigger('bodyExpansion', [\n    state('collapsed', style({ height: '0px', visibility: 'hidden' })),\n    state('expanded', style({ height: '*', visibility: 'visible' })),\n    transition('expanded <=> collapsed', animate(EXPANSION_PANEL_ANIMATION_TIMING)),\n  ]),\n};\n","import { Directive, TemplateRef } from '@angular/core';\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[matExpansionPanelContent]',\n    standalone: false,\n})\nexport class NovoExpansionPanelContent {\n  constructor(public _template: TemplateRef<any>) {}\n}\n","import { AnimationEvent } from '@angular/animations';\nimport { CdkAccordionItem } from '@angular/cdk/accordion';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { UniqueSelectionDispatcher } from '@angular/cdk/collections';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport {\n  AfterContentInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChild,\n  Directive,\n  EventEmitter,\n  Host,\n  Input,\n  OnChanges,\n  OnDestroy,\n  Optional,\n  Output,\n  SimpleChanges,\n  ViewContainerRef,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { filter, startWith, take } from 'rxjs/operators';\nimport { NovoAccordion } from './accordion';\nimport { novoExpansionAnimations } from './expansion-animations';\nimport { NovoExpansionPanelContent } from './expansion-panel-content';\n\n/** NovoExpansionPanel's states. */\nexport type NovoExpansionPanelState = 'expanded' | 'collapsed';\n\n/** Counter for generating unique element ids. */\nlet uniqueId = 0;\n\n/**\n * `<novo-expansion-panel>`\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 NovoAccordion directive attached.\n */\n@Component({\n    styleUrls: ['./expansion-panel.scss'],\n    selector: 'novo-expansion-panel',\n    exportAs: 'novoExpansionPanel',\n    templateUrl: './expansion-panel.html',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    animations: [novoExpansionAnimations.bodyExpansion],\n    host: {\n        class: 'novo-expansion-panel',\n        '[class.novo-expanded]': 'expanded',\n        '[class.novo-expansion-panel-spacing]': '_hasSpacing()',\n        '[class.novo-expansion-panel-padding]': 'padding',\n    },\n    standalone: false,\n})\nexport class NovoExpansionPanel extends CdkAccordionItem implements AfterContentInit, OnChanges, OnDestroy {\n  /** Whether the toggle indicator should be hidden. */\n  @Input()\n  get hideToggle(): boolean {\n    return this._hideToggle;\n  }\n  set hideToggle(value: boolean) {\n    this._hideToggle = coerceBooleanProperty(value);\n  }\n  private _hideToggle = false;\n\n  @Input()\n  get padding(): boolean {\n    return this._padding;\n  }\n  set padding(value: boolean) {\n    this._padding = coerceBooleanProperty(value);\n  }\n  private _padding = true;\n\n  @Output()\n  opened: EventEmitter<void> = new EventEmitter();\n  @Output()\n  closed: EventEmitter<void> = new EventEmitter();\n  @Output()\n  expandedChange: EventEmitter<boolean> = new EventEmitter();\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  accordion: NovoAccordion;\n\n  /** Content that will be rendered lazily. */\n  @ContentChild(NovoExpansionPanelContent)\n  _lazyContent: NovoExpansionPanelContent;\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 = `novo-expansion-panel-header-${uniqueId++}`;\n\n  constructor(\n    @Optional()\n    @Host()\n    accordion: NovoAccordion,\n    _changeDetectorRef: ChangeDetectorRef,\n    _uniqueSelectionDispatcher: UniqueSelectionDispatcher,\n    private _viewContainerRef: ViewContainerRef,\n  ) {\n    super(accordion, _changeDetectorRef, _uniqueSelectionDispatcher);\n    this.accordion = accordion;\n  }\n\n  /** Whether the expansion indicator should be hidden. */\n  _getHideToggle(): boolean {\n    if (this.accordion) {\n      return this.accordion.hideToggle;\n    }\n    return this.hideToggle;\n  }\n\n  /** Determines whether the expansion panel should have spacing between it and its siblings. */\n  _hasSpacing(): boolean {\n    if (this.accordion) {\n      return (this.expanded ? this.accordion.displayMode : this._getExpandedState()) === 'default';\n    }\n    return false;\n  }\n\n  /** Gets the expanded state string. */\n  _getExpandedState(): NovoExpansionPanelState {\n    return this.expanded ? 'expanded' : 'collapsed';\n  }\n\n  ngAfterContentInit() {\n    if (this._lazyContent) {\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\n  ngOnChanges(changes: SimpleChanges) {\n    this._inputChanges.next(changes);\n  }\n\n  ngOnDestroy() {\n    super.ngOnDestroy();\n    this._inputChanges.complete();\n  }\n\n  _bodyAnimation(event: AnimationEvent) {\n    const classList = event.element.classList;\n    const cssClass = 'novo-expanded';\n    const { phaseName, toState } = event;\n\n    // Toggle the body's `overflow: hidden` class when closing starts or when expansion ends in\n    // order to prevent the cases where switching too early would cause the animation to jump.\n    // Note that we do it directly on the DOM element to avoid the slight delay that comes\n    // with doing it via change detection.\n    if (phaseName === 'done' && toState === 'expanded') {\n      classList.add(cssClass);\n    } else if (phaseName === 'start' && toState === 'collapsed') {\n      classList.remove(cssClass);\n    }\n  }\n}\n\n@Directive({\n    selector: 'novo-action-row',\n    host: {\n        class: 'novo-action-row',\n    },\n    standalone: false,\n})\nexport class NovoExpansionPanelActionRow {}\n","<ng-content select=\"novo-expansion-panel-header\"></ng-content>\n<div class=\"novo-expansion-panel-content\"\n     role=\"region\"\n     [@bodyExpansion]=\"_getExpandedState()\"\n     (@bodyExpansion.done)=\"_bodyAnimation($event)\"\n     (@bodyExpansion.start)=\"_bodyAnimation($event)\"\n     [attr.aria-labelledby]=\"_headerId\"\n     [id]=\"id\"\n     #body>\n  <div class=\"novo-expansion-panel-body\">\n    <ng-content></ng-content>\n    <ng-template [cdkPortalOutlet]=\"_portal\"></ng-template>\n  </div>\n  <ng-content select=\"novo-action-row\"></ng-content>\n</div>\n","import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  Directive,\n  ElementRef,\n  Host,\n  Input,\n  OnDestroy,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { merge, Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { Key } from 'novo-elements/utils';\nimport { novoExpansionAnimations } from './expansion-animations';\nimport { NovoExpansionPanel } from './expansion-panel';\n\n/**\n * `<novo-expansion-panel-header>`\n *\n * This component corresponds to the header element of an `<novo-expansion-panel>`.\n */\n@Component({\n    selector: 'novo-expansion-panel-header',\n    styleUrls: ['./expansion-panel-header.scss'],\n    templateUrl: './expansion-panel-header.html',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    animations: [novoExpansionAnimations.indicatorRotate, novoExpansionAnimations.expansionHeaderHeight],\n    host: {\n        class: 'novo-expansion-panel-header',\n        role: 'button',\n        '[attr.id]': 'panel._headerId',\n        '[attr.tabindex]': 'panel.disabled ? -1 : 0',\n        '[attr.aria-controls]': '_getPanelId()',\n        '[attr.aria-expanded]': '_isExpanded()',\n        '[attr.aria-disabled]': 'panel.disabled',\n        '[class.novo-expanded]': '_isExpanded()',\n        '(click)': '_toggle()',\n        '(keydown)': '_keydown($event)',\n        '[@expansionHeight]': `{\n        value: _getExpandedState(),\n        params: {\n          collapsedHeight: collapsedHeight,\n          expandedHeight: expandedHeight\n        }\n    }`,\n    },\n    standalone: false,\n})\nexport class NovoExpansionPanelHeader implements OnDestroy {\n  private _parentChangeSubscription = Subscription.EMPTY;\n\n  constructor(\n    @Host() public panel: NovoExpansionPanel,\n    private _element: ElementRef,\n    private _changeDetectorRef: ChangeDetectorRef,\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      panel._inputChanges.pipe(filter((changes) => !!(changes.hideToggle || changes.disabled))),\n    ).subscribe(() => this._changeDetectorRef.markForCheck());\n  }\n\n  /** Height of the header while the panel is expanded. */\n  @Input()\n  expandedHeight: string = '56px';\n\n  /** Height of the header while the panel is collapsed. */\n  @Input()\n  collapsedHeight: string = '48px';\n\n  /** Toggles the expanded state of the panel. */\n  _toggle(): void {\n    this.panel.toggle();\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  _keydown(event: KeyboardEvent) {\n    switch (event.key) {\n      // Toggle for space and enter keys.\n      case Key.Space:\n      case Key.Enter:\n        event.preventDefault();\n        this._toggle();\n        break;\n      default:\n        return;\n    }\n  }\n\n  ngOnDestroy() {\n    this._parentChangeSubscription.unsubscribe();\n  }\n}\n\n/**\n * `<novo-panel-description>`\n *\n * This direction is to be used inside of the NovoExpansionPanelHeader component.\n */\n@Directive({\n    selector: 'novo-panel-description',\n    host: {\n        class: 'novo-expansion-panel-header-description',\n    },\n    standalone: false,\n})\nexport class NovoExpansionPanelDescription {}\n\n/**\n * `<novo-panel-title>`\n *\n * This direction is to be used inside of the NovoExpansionPanelHeader component.\n */\n@Directive({\n    selector: 'novo-panel-title',\n    host: {\n        class: 'novo-expansion-panel-header-title',\n    },\n    standalone: false,\n})\nexport class NovoExpansionPanelTitle {}\n","<span [@indicatorRotate]=\"_getExpandedState()\" *ngIf=\"_showToggle()\"\n      class=\"novo-expansion-indicator\" size=\"lg\"></span>\n<span class=\"novo-content\">\n  <ng-content select=\"novo-panel-title\"></ng-content>\n  <ng-content select=\"novo-panel-description\"></ng-content>\n  <ng-content></ng-content>\n</span>\n","import { CdkAccordionModule } from '@angular/cdk/accordion';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { NovoAccordion } from './accordion';\nimport { NovoExpansionPanel, NovoExpansionPanelActionRow } from './expansion-panel';\nimport { NovoExpansionPanelContent } from './expansion-panel-content';\nimport { NovoExpansionPanelDescription, NovoExpansionPanelHeader, NovoExpansionPanelTitle } from './expansion-panel-header';\n\n@NgModule({\n  imports: [CommonModule, CdkAccordionModule, PortalModule],\n  exports: [\n    NovoAccordion,\n    NovoExpansionPanel,\n    NovoExpansionPanelActionRow,\n    NovoExpansionPanelHeader,\n    NovoExpansionPanelTitle,\n    NovoExpansionPanelDescription,\n    NovoExpansionPanelContent,\n  ],\n  declarations: [\n    NovoAccordion,\n    NovoExpansionPanel,\n    NovoExpansionPanelActionRow,\n    NovoExpansionPanelHeader,\n    NovoExpansionPanelTitle,\n    NovoExpansionPanelDescription,\n    NovoExpansionPanelContent,\n  ],\n})\nexport class NovoExpansionModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.NovoAccordion","i1.NovoExpansionPanel","i2"],"mappings":"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"}