igniteui-angular
Version:
Ignite UI for Angular is a dependency-free Angular toolkit for building modern web apps
1 lines • 55.5 kB
Source Map (JSON)
{"version":3,"file":"igniteui-angular-expansion-panel.mjs","sources":["../../../projects/igniteui-angular/expansion-panel/src/expansion-panel/expansion-panel.common.ts","../../../projects/igniteui-angular/expansion-panel/src/expansion-panel/expansion-panel-body.component.ts","../../../projects/igniteui-angular/expansion-panel/src/expansion-panel/expansion-panel.directives.ts","../../../projects/igniteui-angular/expansion-panel/src/expansion-panel/expansion-panel-header.component.ts","../../../projects/igniteui-angular/expansion-panel/src/expansion-panel/expansion-panel-header.component.html","../../../projects/igniteui-angular/expansion-panel/src/expansion-panel/toggle-animation-component.ts","../../../projects/igniteui-angular/expansion-panel/src/expansion-panel/expansion-panel.component.ts","../../../projects/igniteui-angular/expansion-panel/src/expansion-panel/expansion-panel.component.html","../../../projects/igniteui-angular/expansion-panel/src/expansion-panel/public_api.ts","../../../projects/igniteui-angular/expansion-panel/src/expansion-panel/expansion-panel.module.ts","../../../projects/igniteui-angular/expansion-panel/src/igniteui-angular-expansion-panel.ts"],"sourcesContent":["import { Directive, ElementRef, EventEmitter, inject, InjectionToken } from '@angular/core';\nimport { AnimationReferenceMetadata } from '@angular/animations';\nimport { CancelableEventArgs, IBaseEventArgs } from 'igniteui-angular/core';\n\nexport interface IgxExpansionPanelBase {\n id: string;\n cssClass: string;\n /** @hidden @internal */\n headerId: string;\n collapsed: boolean;\n animationSettings: { openAnimation: AnimationReferenceMetadata; closeAnimation: AnimationReferenceMetadata };\n contentCollapsed: EventEmitter<any>;\n contentCollapsing: EventEmitter<any>;\n contentExpanded: EventEmitter<any>;\n contentExpanding: EventEmitter<any>;\n collapse(evt?: Event);\n expand(evt?: Event);\n toggle(evt?: Event);\n}\n\n/** @hidden */\nexport const IGX_EXPANSION_PANEL_COMPONENT = /*@__PURE__*/new InjectionToken<IgxExpansionPanelBase>('IgxExpansionPanelToken');\n\nexport interface IExpansionPanelEventArgs extends IBaseEventArgs {\n event: Event;\n}\n\nexport interface IExpansionPanelCancelableEventArgs extends IExpansionPanelEventArgs, CancelableEventArgs {}\n\n@Directive()\nexport abstract class HeaderContentBaseDirective {\n protected element = inject(ElementRef);\n\n /**\n * Returns the `textContent` of an element\n *\n * ```html\n * <igx-expansion-panel-title>\n * Tooltip content\n * </igx-expansion-panel-title>\n * ```\n *\n * or the `title` content\n *\n * ```html\n * <igx-expansion-panel-title [title]=\"'Tooltip content'\">\n * </igx-expansion-panel-title>\n * ```\n *\n * If both are provided, returns the `title` content.\n *\n * @param element\n * @returns tooltip content for an element\n */\n public getTooltipContent = (element: ElementRef): string => {\n if (element.nativeElement.title) {\n return element.nativeElement.title;\n }\n if (element.nativeElement.textContent) {\n return element.nativeElement.textContent.trim();\n }\n\n return null;\n };\n}\n","import { Component, HostBinding, ElementRef, Input, ChangeDetectorRef, inject } from '@angular/core';\nimport { IgxExpansionPanelBase, IGX_EXPANSION_PANEL_COMPONENT } from './expansion-panel.common';\n\n@Component({\n selector: 'igx-expansion-panel-body',\n template: `<ng-content></ng-content>`,\n standalone: true\n})\nexport class IgxExpansionPanelBodyComponent {\n public panel = inject<IgxExpansionPanelBase>(IGX_EXPANSION_PANEL_COMPONENT);\n public element = inject(ElementRef);\n public cdr = inject(ChangeDetectorRef);\n\n /**\n * @hidden\n */\n @HostBinding('class.igx-expansion-panel__body')\n public cssClass = `igx-expansion-panel__body`;\n\n /**\n * Gets/sets the `role` attribute of the panel body\n * Default is 'region';\n * Get\n * ```typescript\n * const currentRole = this.panel.body.role;\n * ```\n * Set\n * ```typescript\n * this.panel.body.role = 'content';\n * ```\n * ```html\n * <igx-expansion-panel-body [role]=\"'custom'\"></igx-expansion-panel-body>\n * ```\n */\n @Input()\n @HostBinding('attr.role')\n public role = 'region';\n\n private _labelledBy = '';\n private _label = '';\n\n /**\n * Gets the `aria-label` attribute of the panel body\n * Defaults to the panel id with '-region' in the end;\n * Get\n * ```typescript\n * const currentLabel = this.panel.body.label;\n * ```\n */\n @Input()\n @HostBinding('attr.aria-label')\n public get label(): string {\n return this._label || this.panel.id + '-region';\n }\n /**\n * Sets the `aria-label` attribute of the panel body\n * ```typescript\n * this.panel.body.label = 'my-custom-label';\n * ```\n * ```html\n * <igx-expansion-panel-body [label]=\"'my-custom-label'\"></igx-expansion-panel-body>\n * ```\n */\n public set label(val: string) {\n this._label = val;\n }\n\n /**\n * Gets the `aria-labelledby` attribute of the panel body\n * Defaults to the panel header id;\n * Get\n * ```typescript\n * const currentLabel = this.panel.body.labelledBy;\n * ```\n */\n @Input()\n @HostBinding('attr.aria-labelledby')\n public get labelledBy(): string {\n return this._labelledBy;\n }\n /**\n * Sets the `aria-labelledby` attribute of the panel body\n * ```typescript\n * this.panel.body.labelledBy = 'my-custom-id';\n * ```\n * ```html\n * <igx-expansion-panel-body [labelledBy]=\"'my-custom-id'\"></igx-expansion-panel-body>\n * ```\n */\n public set labelledBy(val: string) {\n this._labelledBy = val;\n }\n}\n","import { Directive, HostBinding } from '@angular/core';\nimport { HeaderContentBaseDirective } from './expansion-panel.common';\n\n/** @hidden @internal */\n@Directive({\n selector: 'igx-expansion-panel-title',\n standalone: true\n})\nexport class IgxExpansionPanelTitleDirective extends HeaderContentBaseDirective {\n @HostBinding('class.igx-expansion-panel__header-title')\n public cssClass = `igx-expansion-panel__header-title`;\n\n @HostBinding('attr.title')\n private get title(): string {\n return this.getTooltipContent(this.element);\n }\n}\n\n/** @hidden @internal */\n@Directive({\n selector: 'igx-expansion-panel-description',\n standalone: true\n})\nexport class IgxExpansionPanelDescriptionDirective extends HeaderContentBaseDirective {\n @HostBinding('class.igx-expansion-panel__header-description')\n public cssClass = `igx-expansion-panel__header-description`;\n\n @HostBinding('attr.title')\n private get title(): string {\n return this.getTooltipContent(this.element);\n }\n}\n\n/** @hidden @internal */\n@Directive({\n selector: 'igx-expansion-panel-icon',\n standalone: true\n})\nexport class IgxExpansionPanelIconDirective { }\n","import { Component, ChangeDetectorRef, ElementRef, HostBinding, HostListener, Input, EventEmitter, Output, ContentChild, ViewChild, booleanAttribute, inject } from '@angular/core';\nimport { IgxExpansionPanelIconDirective } from './expansion-panel.directives';\nimport { IGX_EXPANSION_PANEL_COMPONENT, IgxExpansionPanelBase, IExpansionPanelCancelableEventArgs } from './expansion-panel.common';\nimport { IgxIconComponent } from 'igniteui-angular/icon';\n\n/**\n * @hidden\n */\nexport const ExpansionPanelHeaderIconPosition = {\n LEFT: 'left',\n NONE: 'none',\n RIGHT: 'right'\n} as const;\nexport type ExpansionPanelHeaderIconPosition = (typeof ExpansionPanelHeaderIconPosition)[keyof typeof ExpansionPanelHeaderIconPosition];\n\n\n@Component({\n selector: 'igx-expansion-panel-header',\n templateUrl: 'expansion-panel-header.component.html',\n imports: [IgxIconComponent]\n})\nexport class IgxExpansionPanelHeaderComponent {\n public panel = inject<IgxExpansionPanelBase>(IGX_EXPANSION_PANEL_COMPONENT, { host: true });\n public cdr = inject(ChangeDetectorRef);\n public elementRef = inject(ElementRef);\n\n /**\n * Returns a reference to the `igx-expansion-panel-icon` element;\n * If `iconPosition` is `NONE` - return null;\n */\n public get iconRef(): ElementRef {\n const renderedTemplate = this.customIconRef ?? this.defaultIconRef;\n return this.iconPosition !== ExpansionPanelHeaderIconPosition.NONE ? renderedTemplate : null;\n }\n\n /**\n * @hidden\n */\n @ContentChild(IgxExpansionPanelIconDirective)\n public set iconTemplate(val: boolean) {\n this._iconTemplate = val;\n }\n\n /**\n * @hidden\n */\n public get iconTemplate(): boolean {\n return this._iconTemplate;\n }\n\n /**\n * Gets/sets the `aria-level` attribute of the header\n * Get\n * ```typescript\n * const currentAriaLevel = this.panel.header.lv;\n * ```\n * Set\n * ```typescript\n * this.panel.header.lv = '5';\n * ```\n * ```html\n * <igx-expansion-panel-header [lv]=\"myCustomLevel\"></igx-expansion-panel-header>\n * ```\n */\n @HostBinding('attr.aria-level')\n @Input()\n public lv = '3';\n\n /**\n * Gets/sets the `role` attribute of the header\n * Get\n * ```typescript\n * const currentRole = this.panel.header.role;\n * ```\n * Set\n * ```typescript\n * this.panel.header.role = '5';\n * ```\n * ```html\n * <igx-expansion-panel-header [role]=\"'custom'\"></igx-expansion-panel-header>\n * ```\n */\n @HostBinding('attr.role')\n @Input()\n public role = 'heading';\n\n /**\n * @hidden\n */\n public get controls(): string {\n return this.panel.id;\n }\n\n /**\n * @hidden @internal\n */\n public get innerElement() {\n return this.elementRef.nativeElement.children[0];\n }\n\n /**\n * Gets/sets the position of the expansion-panel-header expand/collapse icon\n * Accepts `left`, `right` or `none`\n * ```typescript\n * const currentIconPosition = this.panel.header.iconPosition;\n * ```\n * Set\n * ```typescript\n * this.panel.header.iconPosition = 'left';\n * ```\n * ```html\n * <igx-expansion-panel-header [iconPosition]=\"'right'\"></igx-expansion-panel-header>\n * ```\n */\n @Input()\n public iconPosition: ExpansionPanelHeaderIconPosition = ExpansionPanelHeaderIconPosition.LEFT;\n\n /**\n * Emitted whenever a user interacts with the header host\n * ```typescript\n * handleInteraction(event: IExpansionPanelCancelableEventArgs) {\n * ...\n * }\n * ```\n * ```html\n * <igx-expansion-panel-header (interaction)=\"handleInteraction($event)\">\n * ...\n * </igx-expansion-panel-header>\n * ```\n */\n @Output()\n public interaction = new EventEmitter<IExpansionPanelCancelableEventArgs>();\n\n /**\n * @hidden\n */\n @HostBinding('class.igx-expansion-panel__header')\n public cssClass = 'igx-expansion-panel__header';\n\n /**\n * @hidden\n */\n @HostBinding('class.igx-expansion-panel__header--expanded')\n public get isExpanded() {\n return !this.panel.collapsed;\n }\n\n /**\n * Gets/sets the whether the header is disabled\n * When disabled, the header will not handle user events and will stop their propagation\n *\n * ```typescript\n * const isDisabled = this.panel.header.disabled;\n * ```\n * Set\n * ```typescript\n * this.panel.header.disabled = true;\n * ```\n * ```html\n * <igx-expansion-panel-header [disabled]=\"true\">\n * ...\n * </igx-expansion-panel-header>\n * ```\n */\n @Input({ transform: booleanAttribute })\n @HostBinding('class.igx-expansion-panel--disabled')\n public get disabled(): boolean {\n return this._disabled;\n }\n\n public set disabled(val: boolean) {\n this._disabled = val;\n if (val) {\n // V.S. June 11th, 2021: #9696 TabIndex should be removed when panel is disabled\n delete this.tabIndex;\n } else {\n this.tabIndex = 0;\n }\n }\n\n /** @hidden @internal */\n @ContentChild(IgxExpansionPanelIconDirective, { read: ElementRef })\n private customIconRef: ElementRef;\n\n /** @hidden @internal */\n @ViewChild(IgxIconComponent, { read: ElementRef })\n private defaultIconRef: ElementRef;\n\n /**\n * Sets/gets the `id` of the expansion panel header.\n * ```typescript\n * let panelHeaderId = this.panel.header.id;\n * ```\n *\n * @memberof IgxExpansionPanelComponent\n */\n public id = '';\n\n /** @hidden @internal */\n public tabIndex = 0;\n\n // properties section\n private _iconTemplate = false;\n private _disabled = false;\n\n constructor() {\n this.id = `${this.panel.id}-header`;\n }\n\n /**\n * @hidden\n */\n @HostListener('keydown.Enter', ['$event'])\n @HostListener('keydown.Space', ['$event'])\n @HostListener('keydown.Spacebar', ['$event'])\n @HostListener('click', ['$event'])\n public onAction(evt?: Event) {\n if (this.disabled) {\n evt.stopPropagation();\n return;\n }\n const eventArgs: IExpansionPanelCancelableEventArgs = { event: evt, owner: this.panel, cancel: false };\n this.interaction.emit(eventArgs);\n if (eventArgs.cancel === true) {\n return;\n }\n this.panel.toggle(evt);\n evt.preventDefault();\n }\n\n /** @hidden @internal */\n @HostListener('keydown.alt.arrowdown', ['$event'])\n public openPanel(event: KeyboardEvent) {\n if (event.altKey) {\n const eventArgs: IExpansionPanelCancelableEventArgs = { event, owner: this.panel, cancel: false };\n this.interaction.emit(eventArgs);\n if (eventArgs.cancel === true) {\n return;\n }\n this.panel.expand(event);\n }\n }\n\n /** @hidden @internal */\n @HostListener('keydown.alt.arrowup', ['$event'])\n public closePanel(event: KeyboardEvent) {\n if (event.altKey) {\n const eventArgs: IExpansionPanelCancelableEventArgs = { event, owner: this.panel, cancel: false };\n this.interaction.emit(eventArgs);\n if (eventArgs.cancel === true) {\n return;\n }\n this.panel.collapse(event);\n }\n }\n\n /**\n * @hidden\n */\n public get iconPositionClass(): string {\n switch (this.iconPosition) {\n case (ExpansionPanelHeaderIconPosition.LEFT):\n return `igx-expansion-panel__header-icon--start`;\n case (ExpansionPanelHeaderIconPosition.RIGHT):\n return `igx-expansion-panel__header-icon--end`;\n case (ExpansionPanelHeaderIconPosition.NONE):\n return `igx-expansion-panel__header-icon--none`;\n default:\n return '';\n }\n }\n}\n","<div class=\"igx-expansion-panel__header-inner\" [attr.tabindex]=\"tabIndex\" role=\"button\" [attr.id]=\"id\"\n[attr.aria-disabled]=\"disabled\" [attr.aria-expanded]=\"isExpanded\" [attr.aria-controls]=\"controls\">\n <div class=\"igx-expansion-panel__title-wrapper\">\n <ng-content select=\"igx-expansion-panel-title\"></ng-content>\n <ng-content select=\"igx-expansion-panel-description\"></ng-content>\n </div>\n <ng-content></ng-content>\n <div [class]=\"iconPositionClass\">\n @if (iconTemplate) {\n <ng-content select=\"igx-expansion-panel-icon\"></ng-content>\n }\n @if (!iconTemplate) {\n <igx-icon\n family=\"default\"\n [name]=\"panel.collapsed ? 'expand' : 'collapse'\">\n </igx-icon>\n }\n </div>\n</div>\n","import { AnimationReferenceMetadata } from '@angular/animations';\nimport { Directive, ElementRef, EventEmitter, inject, OnDestroy } from '@angular/core';\nimport { noop, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { IgxAngularAnimationService } from 'igniteui-angular/core';\nimport { AnimationPlayer, AnimationService } from 'igniteui-angular/core';\nimport { growVerIn, growVerOut } from 'igniteui-angular/animations';\n\n/**@hidden @internal */\nexport interface ToggleAnimationSettings {\n openAnimation: AnimationReferenceMetadata;\n closeAnimation: AnimationReferenceMetadata;\n}\n\nexport interface ToggleAnimationOwner {\n animationSettings: ToggleAnimationSettings;\n openAnimationStart: EventEmitter<void>;\n openAnimationDone: EventEmitter<void>;\n closeAnimationStart: EventEmitter<void>;\n closeAnimationDone: EventEmitter<void>;\n openAnimationPlayer: AnimationPlayer;\n closeAnimationPlayer: AnimationPlayer;\n playOpenAnimation(element: ElementRef, onDone: () => void): void;\n playCloseAnimation(element: ElementRef, onDone: () => void): void;\n}\n\n/** @hidden @internal */\nexport enum ANIMATION_TYPE {\n OPEN = 'open',\n CLOSE = 'close',\n}\n\n/**@hidden @internal */\n@Directive()\nexport abstract class ToggleAnimationPlayer implements ToggleAnimationOwner, OnDestroy {\n protected animationService = inject<AnimationService>(IgxAngularAnimationService);\n\n /** @hidden @internal */\n public openAnimationDone: EventEmitter<void> = new EventEmitter();\n /** @hidden @internal */\n public closeAnimationDone: EventEmitter<void> = new EventEmitter();\n /** @hidden @internal */\n public openAnimationStart: EventEmitter<void> = new EventEmitter();\n /** @hidden @internal */\n public closeAnimationStart: EventEmitter<void> = new EventEmitter();\n\n public get animationSettings(): ToggleAnimationSettings {\n return this._animationSettings;\n }\n public set animationSettings(value: ToggleAnimationSettings) {\n this._animationSettings = value;\n }\n\n /** @hidden @internal */\n public openAnimationPlayer: AnimationPlayer = null;\n\n /** @hidden @internal */\n public closeAnimationPlayer: AnimationPlayer = null;\n\n protected destroy$: Subject<void> = new Subject();\n protected players: Map<string, AnimationPlayer> = new Map();\n protected _animationSettings: ToggleAnimationSettings = {\n openAnimation: growVerIn,\n closeAnimation: growVerOut\n };\n\n private closeInterrupted = false;\n private openInterrupted = false;\n\n private _defaultClosedCallback = noop;\n private _defaultOpenedCallback = noop;\n private onClosedCallback: () => any = this._defaultClosedCallback;\n private onOpenedCallback: () => any = this._defaultOpenedCallback;\n\n /** @hidden @internal */\n public playOpenAnimation(targetElement: ElementRef, onDone?: () => void): void {\n this.startPlayer(ANIMATION_TYPE.OPEN, targetElement, onDone || this._defaultOpenedCallback);\n }\n\n /** @hidden @internal */\n public playCloseAnimation(targetElement: ElementRef, onDone?: () => void): void {\n this.startPlayer(ANIMATION_TYPE.CLOSE, targetElement, onDone || this._defaultClosedCallback);\n }\n\n /** @hidden @internal */\n public ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n private startPlayer(type: ANIMATION_TYPE, targetElement: ElementRef, callback: () => void): void {\n if (!targetElement) { // if no element is passed, there is nothing to animate\n return;\n }\n let target = this.getPlayer(type);\n if (!target) {\n target = this.initializePlayer(type, targetElement, callback);\n }\n // V.S. Jun 28th, 2021 #9783: player will NOT be initialized w/ null settings\n // events will already be emitted\n if (!target || target.hasStarted()) {\n return;\n }\n const targetEmitter = type === ANIMATION_TYPE.OPEN ? this.openAnimationStart : this.closeAnimationStart;\n targetEmitter.emit();\n if (target) {\n target.play();\n }\n }\n\n private initializePlayer(type: ANIMATION_TYPE, targetElement: ElementRef, callback: () => void): AnimationPlayer {\n const oppositeType = type === ANIMATION_TYPE.OPEN ? ANIMATION_TYPE.CLOSE : ANIMATION_TYPE.OPEN;\n // V.S. Jun 28th, 2021 #9783: Treat falsy animation settings as disabled animations\n const targetAnimationSettings = this.animationSettings || { closeAnimation: null, openAnimation: null };\n const animationSettings = type === ANIMATION_TYPE.OPEN ?\n targetAnimationSettings.openAnimation : targetAnimationSettings.closeAnimation;\n // V.S. Jun 28th, 2021 #9783: When no animation in target direction, emit start and done events and return\n if (!animationSettings) {\n this.setCallback(type, callback);\n const targetEmitter = type === ANIMATION_TYPE.OPEN ? this.openAnimationStart : this.closeAnimationStart;\n targetEmitter.emit();\n this.onDoneHandler(type);\n return;\n }\n const opposite = this.getPlayer(oppositeType);\n let oppositePosition = 1;\n if (opposite) {\n oppositePosition = opposite.position;\n this.cleanUpPlayer(oppositeType);\n }\n if (type === ANIMATION_TYPE.OPEN) {\n this.openAnimationPlayer = this.animationService.buildAnimation(animationSettings, targetElement.nativeElement);\n } else if (type === ANIMATION_TYPE.CLOSE) {\n this.closeAnimationPlayer = this.animationService.buildAnimation(animationSettings, targetElement.nativeElement);\n }\n const target = this.getPlayer(type);\n target.init();\n this.getPlayer(type).position = 1 - oppositePosition;\n this.setCallback(type, callback);\n target.animationEnd.pipe(takeUntil(this.destroy$)).subscribe(() => {\n this.onDoneHandler(type);\n });\n return target;\n }\n\n private onDoneHandler(type) {\n const targetEmitter = type === ANIMATION_TYPE.OPEN ? this.openAnimationDone : this.closeAnimationDone;\n const targetCallback = type === ANIMATION_TYPE.OPEN ? this.onOpenedCallback : this.onClosedCallback;\n targetCallback();\n if (!(type === ANIMATION_TYPE.OPEN ? this.openInterrupted : this.closeInterrupted)) {\n targetEmitter.emit();\n }\n this.cleanUpPlayer(type);\n }\n\n private setCallback(type: ANIMATION_TYPE, callback: () => void) {\n if (type === ANIMATION_TYPE.OPEN) {\n this.onOpenedCallback = callback;\n this.openInterrupted = false;\n } else if (type === ANIMATION_TYPE.CLOSE) {\n this.onClosedCallback = callback;\n this.closeInterrupted = false;\n }\n }\n\n private cleanUpPlayer(target: ANIMATION_TYPE) {\n switch (target) {\n case ANIMATION_TYPE.CLOSE:\n if (this.closeAnimationPlayer != null) {\n this.closeAnimationPlayer.reset();\n this.closeAnimationPlayer.destroy();\n this.closeAnimationPlayer = null;\n }\n this.closeInterrupted = true;\n this.onClosedCallback = this._defaultClosedCallback;\n break;\n case ANIMATION_TYPE.OPEN:\n if (this.openAnimationPlayer != null) {\n this.openAnimationPlayer.reset();\n this.openAnimationPlayer.destroy();\n this.openAnimationPlayer = null;\n }\n this.openInterrupted = true;\n this.onOpenedCallback = this._defaultOpenedCallback;\n break;\n default:\n break;\n }\n }\n\n private getPlayer(type: ANIMATION_TYPE): AnimationPlayer {\n switch (type) {\n case ANIMATION_TYPE.OPEN:\n return this.openAnimationPlayer;\n case ANIMATION_TYPE.CLOSE:\n return this.closeAnimationPlayer;\n default:\n return null;\n }\n }\n}\n","import {\n AfterContentInit,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n HostBinding,\n inject,\n Input,\n Output,\n booleanAttribute\n} from '@angular/core';\nimport { IgxExpansionPanelBodyComponent } from './expansion-panel-body.component';\nimport { IgxExpansionPanelHeaderComponent } from './expansion-panel-header.component';\nimport {\n IExpansionPanelCancelableEventArgs,\n IExpansionPanelEventArgs,\n IgxExpansionPanelBase,\n IGX_EXPANSION_PANEL_COMPONENT\n} from './expansion-panel.common';\nimport { ToggleAnimationPlayer, ToggleAnimationSettings } from './toggle-animation-component';\n\nlet NEXT_ID = 0;\n\n@Component({\n selector: 'igx-expansion-panel',\n templateUrl: 'expansion-panel.component.html',\n providers: [{ provide: IGX_EXPANSION_PANEL_COMPONENT, useExisting: IgxExpansionPanelComponent }],\n imports: []\n})\nexport class IgxExpansionPanelComponent extends ToggleAnimationPlayer implements IgxExpansionPanelBase, AfterContentInit {\n private cdr = inject(ChangeDetectorRef);\n private elementRef = inject(ElementRef);\n\n /**\n * Sets/gets the animation settings of the expansion panel component\n * Open and Close animation should be passed\n *\n * Get\n * ```typescript\n * const currentAnimations = this.panel.animationSettings;\n * ```\n * Set\n * ```typescript\n * import { slideInLeft, slideOutRight } from 'igniteui-angular';\n * ...\n * this.panel.animationsSettings = {\n * openAnimation: slideInLeft,\n * closeAnimation: slideOutRight\n * };\n * ```\n * or via template\n * ```typescript\n * import { slideInLeft, slideOutRight } from 'igniteui-angular';\n * ...\n * myCustomAnimationObject = {\n * openAnimation: slideInLeft,\n * closeAnimation: slideOutRight\n * };\n * ```html\n * <igx-expansion-panel [animationSettings]='myCustomAnimationObject'>\n * ...\n * </igx-expansion-panel>\n * ```\n */\n @Input()\n public override get animationSettings(): ToggleAnimationSettings {\n return this._animationSettings;\n }\n public override set animationSettings(value: ToggleAnimationSettings) {\n this._animationSettings = value;\n }\n\n /**\n * Sets/gets the `id` of the expansion panel component.\n * If not set, `id` will have value `\"igx-expansion-panel-0\"`;\n * ```html\n * <igx-expansion-panel id = \"my-first-expansion-panel\"></igx-expansion-panel>\n * ```\n * ```typescript\n * let panelId = this.panel.id;\n * ```\n *\n * @memberof IgxExpansionPanelComponent\n */\n @HostBinding('attr.id')\n @Input()\n public id = `igx-expansion-panel-${NEXT_ID++}`;\n\n /**\n * @hidden\n */\n @HostBinding('class.igx-expansion-panel')\n public cssClass = 'igx-expansion-panel';\n\n /**\n * @hidden\n */\n @HostBinding('class.igx-expansion-panel--expanded')\n protected opened = false;\n\n /**\n * @hidden @internal\n */\n @HostBinding('attr.aria-expanded')\n public get panelExpanded() {\n return !this.collapsed;\n }\n\n /**\n * Gets/sets whether the component is collapsed (its content is hidden)\n * Get\n * ```typescript\n * const myPanelState: boolean = this.panel.collapsed;\n * ```\n * Set\n * ```html\n * this.panel.collapsed = true;\n * ```\n *\n * Two-way data binding:\n * ```html\n * <igx-expansion-panel [(collapsed)]=\"model.isCollapsed\"></igx-expansion-panel>\n * ```\n */\n @Input({ transform: booleanAttribute })\n public collapsed = true;\n\n /**\n * @hidden\n */\n @Output()\n public collapsedChange = new EventEmitter<boolean>();\n\n /**\n * Emitted when the expansion panel starts collapsing\n * ```typescript\n * handleCollapsing(event: IExpansionPanelCancelableEventArgs)\n * ```\n * ```html\n * <igx-expansion-panel (contentCollapsing)=\"handleCollapsing($event)\">\n * ...\n * </igx-expansion-panel>\n * ```\n */\n @Output()\n public contentCollapsing = new EventEmitter<IExpansionPanelCancelableEventArgs>();\n\n /**\n * Emitted when the expansion panel finishes collapsing\n * ```typescript\n * handleCollapsed(event: IExpansionPanelEventArgs)\n * ```\n * ```html\n * <igx-expansion-panel (contentCollapsed)=\"handleCollapsed($event)\">\n * ...\n * </igx-expansion-panel>\n * ```\n */\n @Output()\n public contentCollapsed = new EventEmitter<IExpansionPanelEventArgs>();\n\n /**\n * Emitted when the expansion panel starts expanding\n * ```typescript\n * handleExpanding(event: IExpansionPanelCancelableEventArgs)\n * ```\n * ```html\n * <igx-expansion-panel (contentExpanding)=\"handleExpanding($event)\">\n * ...\n * </igx-expansion-panel>\n * ```\n */\n @Output()\n public contentExpanding = new EventEmitter<IExpansionPanelCancelableEventArgs>();\n\n /**\n * Emitted when the expansion panel finishes expanding\n * ```typescript\n * handleExpanded(event: IExpansionPanelEventArgs)\n * ```\n * ```html\n * <igx-expansion-panel (contentExpanded)=\"handleExpanded($event)\">\n * ...\n * </igx-expansion-panel>\n * ```\n */\n @Output()\n public contentExpanded = new EventEmitter<IExpansionPanelEventArgs>();\n\n /**\n * @hidden\n */\n public get headerId() {\n return this.header ? `${this.id}-header` : '';\n }\n\n /**\n * @hidden @internal\n */\n public get nativeElement() {\n return this.elementRef.nativeElement;\n }\n\n /**\n * @hidden\n */\n @ContentChild(IgxExpansionPanelBodyComponent, { read: IgxExpansionPanelBodyComponent })\n public body: IgxExpansionPanelBodyComponent;\n\n /**\n * @hidden\n */\n @ContentChild(IgxExpansionPanelHeaderComponent, { read: IgxExpansionPanelHeaderComponent })\n public header: IgxExpansionPanelHeaderComponent;\n\n /** @hidden */\n public ngAfterContentInit(): void {\n if (this.body && this.header) {\n // schedule at end of turn:\n Promise.resolve().then(() => {\n this.body.labelledBy = this.body.labelledBy || this.headerId;\n this.body.label = this.body.label || this.id + '-region';\n });\n }\n }\n\n /**\n * Collapses the panel\n *\n * ```html\n * <igx-expansion-panel #myPanel>\n * ...\n * </igx-expansion-panel>\n * <button type=\"button\" igxButton (click)=\"myPanel.collapse($event)\">Collpase Panel</button>\n * ```\n */\n public collapse(evt?: Event) {\n // If expansion panel is already collapsed or is collapsing, do nothing\n if (this.collapsed || this.closeAnimationPlayer) {\n return;\n }\n const args = { event: evt, panel: this, owner: this, cancel: false };\n this.contentCollapsing.emit(args);\n if (args.cancel === true) {\n return;\n }\n this.opened = false;\n this.playCloseAnimation(\n this.body?.element,\n () => {\n this.contentCollapsed.emit({ event: evt, owner: this });\n this.collapsed = true;\n this.collapsedChange.emit(true);\n this.cdr.markForCheck();\n }\n );\n }\n\n /**\n * Expands the panel\n *\n * ```html\n * <igx-expansion-panel #myPanel>\n * ...\n * </igx-expansion-panel>\n * <button type=\"button\" igxButton (click)=\"myPanel.expand($event)\">Expand Panel</button>\n * ```\n */\n public expand(evt?: Event) {\n if (!this.collapsed && !this.closeAnimationPlayer) { // Check if the panel is currently collapsing or already expanded\n return;\n }\n const args = { event: evt, panel: this, owner: this, cancel: false };\n this.contentExpanding.emit(args);\n if (args.cancel === true) {\n return;\n }\n this.collapsed = false;\n this.opened = true;\n this.collapsedChange.emit(false);\n this.cdr.detectChanges();\n this.playOpenAnimation(\n this.body?.element,\n () => {\n this.contentExpanded.emit({ event: evt, owner: this });\n }\n );\n }\n\n /**\n * Toggles the panel\n *\n * ```html\n * <igx-expansion-panel #myPanel>\n * ...\n * </igx-expansion-panel>\n * <button type=\"button\" igxButton (click)=\"myPanel.toggle($event)\">Expand Panel</button>\n * ```\n */\n public toggle(evt?: Event) {\n if (this.collapsed) {\n this.open(evt);\n } else {\n this.close(evt);\n }\n }\n\n public open(evt?: Event) {\n this.expand(evt);\n }\n\n public close(evt?: Event) {\n this.collapse(evt);\n }\n}\n","<ng-content select=\"igx-expansion-panel-header\"></ng-content>\n@if (!collapsed) {\n <ng-content select=\"igx-expansion-panel-body\"></ng-content>\n}\n","import { IgxExpansionPanelBodyComponent } from './expansion-panel-body.component';\nimport { IgxExpansionPanelHeaderComponent } from './expansion-panel-header.component';\nimport { IgxExpansionPanelComponent } from './expansion-panel.component';\nimport { IgxExpansionPanelDescriptionDirective, IgxExpansionPanelIconDirective, IgxExpansionPanelTitleDirective } from './expansion-panel.directives';\n\nexport { IExpansionPanelEventArgs, IExpansionPanelCancelableEventArgs, IgxExpansionPanelBase } from './expansion-panel.common';\nexport { IgxExpansionPanelHeaderComponent } from './expansion-panel-header.component';\nexport { IgxExpansionPanelBodyComponent } from './expansion-panel-body.component';\nexport { IgxExpansionPanelComponent } from './expansion-panel.component';\nexport {\n IgxExpansionPanelDescriptionDirective,\n IgxExpansionPanelIconDirective,\n IgxExpansionPanelTitleDirective\n} from './expansion-panel.directives';\nexport { ExpansionPanelHeaderIconPosition } from './expansion-panel-header.component';\nexport { ToggleAnimationSettings, ToggleAnimationPlayer } from './toggle-animation-component';\n\n/* NOTE: Expansion panel directives collection for ease-of-use import in standalone components scenario */\nexport const IGX_EXPANSION_PANEL_DIRECTIVES = [\n IgxExpansionPanelComponent,\n IgxExpansionPanelHeaderComponent,\n IgxExpansionPanelBodyComponent,\n IgxExpansionPanelDescriptionDirective,\n IgxExpansionPanelTitleDirective,\n IgxExpansionPanelIconDirective\n] as const;\n","import { NgModule } from '@angular/core';\nimport { IGX_EXPANSION_PANEL_DIRECTIVES } from './public_api';\n\n/**\n * @hidden\n * IMPORTANT: The following is NgModule exported for backwards-compatibility before standalone components\n */\n@NgModule({\n imports: [\n ...IGX_EXPANSION_PANEL_DIRECTIVES\n ],\n exports: [\n ...IGX_EXPANSION_PANEL_DIRECTIVES\n ]\n})\nexport class IgxExpansionPanelModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.IgxExpansionPanelComponent","i2.IgxExpansionPanelHeaderComponent","i3.IgxExpansionPanelBodyComponent","i4.IgxExpansionPanelDescriptionDirective","i4.IgxExpansionPanelTitleDirective","i4.IgxExpansionPanelIconDirective"],"mappings":"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