UNPKG

10.4 kBSource Map (JSON)View Raw
1{"version":3,"sources":["../../../../src/collapse/collapse-animations.ts","../../../../src/collapse/collapse.directive.ts","../../../../src/collapse/collapse.module.ts"],"names":["COLLAPSE_ANIMATION_TIMING","expandAnimation","style","height","visibility","animate","collapseAnimation","CollapseDirective","_el","_renderer","_builder","this","collapsed","EventEmitter","collapses","expanded","expands","isExpanded","collapseNewValue","isCollapsed","isCollapse","isCollapsing","isAnimated","_display","_stylesLoaded","_COLLAPSE_ACTION_NAME","_EXPAND_ACTION_NAME","_factoryCollapseAnimation","build","_factoryExpandAnimation","Object","defineProperty","prototype","value","show","hide","setStyle","nativeElement","_player","_isAnimationDone","toggle","ngAfterViewChecked","reset","_this","emit","animationRun","removeStyle","action","callback","addClass","factoryAnimation","destroy","create","play","_a","onDone","Directive","args","selector","exportAs","host","ElementRef","Renderer2","AnimationBuilder","Output","HostBinding","type","Input","CollapseModule","forRoot","ngModule","providers","NgModule","declarations","exports"],"mappings":"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","sourcesContent":["import {\n animate,\n style,\n AnimationMetadata\n} from '@angular/animations';\n\nexport const COLLAPSE_ANIMATION_TIMING = '400ms cubic-bezier(0.4,0.0,0.2,1)';\n\nexport const expandAnimation: AnimationMetadata[] = [\n style({ height: 0, visibility: 'hidden' }),\n animate(\n COLLAPSE_ANIMATION_TIMING,\n style({ height: '*', visibility: 'visible' })\n )\n];\n\nexport const collapseAnimation: AnimationMetadata[] = [\n style({ height: '*', visibility: 'visible' }),\n animate(\n COLLAPSE_ANIMATION_TIMING,\n style({ height: 0, visibility: 'hidden' })\n )\n];\n","import {\n AnimationBuilder,\n AnimationFactory,\n AnimationPlayer\n} from '@angular/animations';\n\nimport {\n AfterViewChecked,\n Directive,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n Output,\n Renderer2\n} from '@angular/core';\n\nimport {\n collapseAnimation,\n expandAnimation\n} from './collapse-animations';\n\n@Directive({\n selector: '[collapse]',\n exportAs: 'bs-collapse',\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n '[class.collapse]': 'true'\n }\n})\nexport class CollapseDirective implements AfterViewChecked {\n /** This event fires as soon as content collapses */\n @Output() collapsed: EventEmitter<CollapseDirective> = new EventEmitter();\n /** This event fires when collapsing is started */\n @Output() collapses: EventEmitter<CollapseDirective> = new EventEmitter();\n /** This event fires as soon as content becomes visible */\n @Output() expanded: EventEmitter<CollapseDirective> = new EventEmitter();\n /** This event fires when expansion is started */\n @Output() expands: EventEmitter<CollapseDirective> = new EventEmitter();\n // shown\n @HostBinding('class.in')\n @HostBinding('class.show')\n @HostBinding('attr.aria-expanded')\n isExpanded = true;\n collapseNewValue = true;\n // hidden\n @HostBinding('attr.aria-hidden') isCollapsed = false;\n // stale state\n @HostBinding('class.collapse') isCollapse = true;\n // animation state\n @HostBinding('class.collapsing') isCollapsing = false;\n\n @Input()\n set display(value: string) {\n if (!this.isAnimated) {\n this._renderer.setStyle(this._el.nativeElement, 'display', value);\n\n return;\n }\n\n this._display = value;\n\n if (value === 'none') {\n this.hide();\n\n return;\n }\n\n this.show();\n }\n /** turn on/off animation */\n @Input() isAnimated = false;\n /** A flag indicating visibility of content (shown or hidden) */\n @Input()\n set collapse(value: boolean) {\n this.collapseNewValue = value;\n if (!this._player || this._isAnimationDone) {\n this.isExpanded = value;\n this.toggle();\n }\n }\n\n get collapse(): boolean {\n return this.isExpanded;\n }\n\n private _display = 'block';\n private _isAnimationDone?: boolean;\n private _player?: AnimationPlayer;\n private _stylesLoaded = false;\n\n private _COLLAPSE_ACTION_NAME = 'collapse';\n private _EXPAND_ACTION_NAME = 'expand';\n\n private readonly _factoryCollapseAnimation: AnimationFactory;\n private readonly _factoryExpandAnimation: AnimationFactory;\n\n constructor(\n private _el: ElementRef,\n private _renderer: Renderer2,\n _builder: AnimationBuilder\n ) {\n this._factoryCollapseAnimation = _builder.build(collapseAnimation);\n this._factoryExpandAnimation = _builder.build(expandAnimation);\n }\n\n ngAfterViewChecked(): void {\n this._stylesLoaded = true;\n\n if (!this._player || !this._isAnimationDone) {\n return;\n }\n\n this._player.reset();\n this._renderer.setStyle(this._el.nativeElement, 'height', '*');\n }\n\n /** allows to manually toggle content visibility */\n toggle(): void {\n if (this.isExpanded) {\n this.hide();\n } else {\n this.show();\n }\n }\n\n /** allows to manually hide content */\n hide(): void {\n this.isCollapsing = true;\n this.isExpanded = false;\n this.isCollapsed = true;\n this.isCollapsing = false;\n\n this.collapses.emit(this);\n\n this._isAnimationDone = false;\n\n this.animationRun(this.isAnimated, this._COLLAPSE_ACTION_NAME)(() => {\n this._isAnimationDone = true;\n if (this.collapseNewValue !== this.isCollapsed && this.isAnimated) {\n this.show();\n\n return;\n }\n this.collapsed.emit(this);\n this._renderer.setStyle(this._el.nativeElement, 'display', 'none');\n });\n }\n /** allows to manually show collapsed content */\n show(): void {\n this._renderer.setStyle(this._el.nativeElement, 'display', this._display);\n\n this.isCollapsing = true;\n this.isExpanded = true;\n this.isCollapsed = false;\n this.isCollapsing = false;\n\n this.expands.emit(this);\n\n this._isAnimationDone = false;\n this.animationRun(this.isAnimated, this._EXPAND_ACTION_NAME)(() => {\n this._isAnimationDone = true;\n if (this.collapseNewValue !== this.isCollapsed && this.isAnimated) {\n this.hide();\n\n return;\n }\n this.expanded.emit(this);\n this._renderer.removeStyle(this._el.nativeElement, 'overflow');\n });\n }\n\n animationRun(isAnimated: boolean, action: string) {\n if (!isAnimated || !this._stylesLoaded) {\n return (callback: () => void) => callback();\n }\n\n this._renderer.setStyle(this._el.nativeElement, 'overflow', 'hidden');\n this._renderer.addClass(this._el.nativeElement, 'collapse');\n\n const factoryAnimation = (action === this._EXPAND_ACTION_NAME)\n ? this._factoryExpandAnimation\n : this._factoryCollapseAnimation;\n\n if (this._player) {\n this._player.destroy();\n }\n\n this._player = factoryAnimation.create(this._el.nativeElement);\n this._player.play();\n\n return (callback: () => void) => this._player?.onDone(callback);\n }\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\n\nimport { CollapseDirective } from './collapse.directive';\n\n@NgModule({\n declarations: [CollapseDirective],\n exports: [CollapseDirective]\n})\nexport class CollapseModule {\n static forRoot(): ModuleWithProviders<CollapseModule> {\n return { ngModule: CollapseModule, providers: [] };\n }\n}\n"]}
\No newline at end of file