UNPKG

15.3 kBSource Map (JSON)View Raw
1{"version":3,"sources":["ng://primeng/accordion/accordion.ts"],"names":["idx","AccordionTab","accordion","changeDetector","this","cache","selectedChange","EventEmitter","transitionOptions","id","Object","defineProperty","prototype","_selected","val","loaded","detectChanges","_animating","destroyed","ngAfterContentInit","_this","templates","forEach","item","getType","contentTemplate","template","toggle","event","disabled","animating","index","findTabIndex","selected","onClose","emit","originalEvent","multiple","i","tabs","length","onOpen","updateActiveIndex","preventDefault","headerFacet","onToggleDone","onKeydown","which","ngOnDestroy","splice","Inject","args","forwardRef","Accordion","ChangeDetectorRef","__decorate","Input","Output","ContentChildren","Header","PrimeTemplate","Component","selector","animations","trigger","state","style","height","params","transition","animate","changeDetection","ChangeDetectionStrategy","Default","__param","el","expandIcon","collapseIcon","activeIndexChange","initTabs","tabListSubscription","tabList","changes","subscribe","_","markForCheck","toArray","updateSelectionState","getBlockableElement","nativeElement","children","_activeIndex","preventActiveIndexPropagation","includes","tab","push","unsubscribe","ElementRef","AccordionModule","NgModule","imports","CommonModule","exports","SharedModule","declarations"],"mappings":"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","sourcesContent":["import { NgModule, Component, ElementRef, AfterContentInit, OnDestroy, Input, Output, EventEmitter, \n ContentChildren, QueryList, ChangeDetectorRef, Inject, forwardRef, TemplateRef, ViewRef, ChangeDetectionStrategy} from '@angular/core';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\nimport { CommonModule } from '@angular/common';\nimport { SharedModule, Header, PrimeTemplate } from 'primeng/api';\nimport { BlockableUI } from 'primeng/api';\nimport { Subscription } from 'rxjs';\n\nlet idx: number = 0;\n\n@Component({\n selector: 'p-accordionTab',\n template: `\n <div class=\"ui-accordion-header ui-state-default ui-corner-all\" [ngClass]=\"{'ui-state-active': selected,'ui-state-disabled':disabled}\">\n <a [attr.tabindex]=\"disabled ? -1 : 0\" [attr.id]=\"id\" [attr.aria-controls]=\"id + '-content'\" role=\"tab\" [attr.aria-expanded]=\"selected\" (click)=\"toggle($event)\" \n (keydown)=\"onKeydown($event)\">\n <span class=\"ui-accordion-toggle-icon\" [ngClass]=\"selected ? accordion.collapseIcon : accordion.expandIcon\"></span>\n <span class=\"ui-accordion-header-text\" *ngIf=\"!hasHeaderFacet\">\n {{header}}\n </span>\n <ng-content select=\"p-header\" *ngIf=\"hasHeaderFacet\"></ng-content>\n </a>\n </div>\n <div [attr.id]=\"id + '-content'\" class=\"ui-accordion-content-wrapper\" [@tabContent]=\"selected ? {value: 'visible', params: {transitionParams: animating ? transitionOptions : '0ms', height: '*'}} : {value: 'hidden', params: {transitionParams: transitionOptions, height: '0'}}\" (@tabContent.done)=\"onToggleDone($event)\"\n [ngClass]=\"{'ui-accordion-content-wrapper-overflown': !selected||animating}\" \n role=\"region\" [attr.aria-hidden]=\"!selected\" [attr.aria-labelledby]=\"id\">\n <div class=\"ui-accordion-content ui-widget-content\">\n <ng-content></ng-content>\n <ng-container *ngIf=\"contentTemplate && (cache ? loaded : selected)\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n </ng-container>\n </div>\n </div>\n `,\n animations: [\n trigger('tabContent', [\n state('hidden', style({\n height: '0'\n })),\n state('void', style({\n height: '{{height}}'\n }), {params: {height: '0'}}),\n state('visible', style({\n height: '*'\n })),\n transition('visible <=> hidden', animate('{{transitionParams}}')),\n transition('void => hidden', animate('{{transitionParams}}')),\n transition('void => visible', animate('{{transitionParams}}'))\n ])\n ],\n changeDetection: ChangeDetectionStrategy.Default\n})\nexport class AccordionTab implements OnDestroy {\n\n @Input() header: string;\n\n @Input() disabled: boolean;\n\n @Input() cache: boolean = true;\n\n @Output() selectedChange: EventEmitter<any> = new EventEmitter();\n\n @Input() transitionOptions: string = '400ms cubic-bezier(0.86, 0, 0.07, 1)';\n\n @ContentChildren(Header) headerFacet: QueryList<Header>;\n\n @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n private _selected: boolean;\n\n private _animating: boolean;\n\n @Input() get selected(): any {\n return this._selected;\n }\n\n set selected(val: any) {\n this._selected = val;\n \n if (!this.loaded) {\n this.changeDetector.detectChanges();\n }\n }\n\n get animating(): boolean {\n return this._animating;\n }\n set animating(val: boolean) {\n this._animating = val;\n\n if (!(this.changeDetector as ViewRef).destroyed) {\n this.changeDetector.detectChanges();\n }\n }\n\n contentTemplate: TemplateRef<any>;\n\n id: string = `ui-accordiontab-${idx++}`;\n\n loaded: boolean;\n\n accordion: Accordion;\n\n constructor(@Inject(forwardRef(() => Accordion)) accordion, public changeDetector: ChangeDetectorRef) {\n this.accordion = accordion as Accordion;\n }\n\n ngAfterContentInit() {\n this.templates.forEach((item) => {\n switch(item.getType()) {\n case 'content':\n this.contentTemplate = item.template;\n break;\n \n default:\n this.contentTemplate = item.template;\n break;\n }\n });\n }\n\n toggle(event) {\n if (this.disabled || this.animating) {\n return false;\n }\n\n this.animating = true;\n let index = this.findTabIndex();\n\n if (this.selected) {\n this.selected = false;\n this.accordion.onClose.emit({ originalEvent: event, index: index });\n }\n else {\n if (!this.accordion.multiple) {\n for (var i = 0; i < this.accordion.tabs.length; i++) {\n this.accordion.tabs[i].selected = false;\n this.accordion.tabs[i].selectedChange.emit(false);\n }\n }\n\n this.selected = true;\n this.loaded = true;\n this.accordion.onOpen.emit({ originalEvent: event, index: index });\n }\n\n this.selectedChange.emit(this.selected);\n this.accordion.updateActiveIndex();\n\n event.preventDefault();\n }\n\n findTabIndex() {\n let index = -1;\n for (var i = 0; i < this.accordion.tabs.length; i++) {\n if (this.accordion.tabs[i] == this) {\n index = i;\n break;\n }\n }\n return index;\n }\n\n get hasHeaderFacet(): boolean {\n return this.headerFacet && this.headerFacet.length > 0;\n }\n\n onToggleDone(event: Event) {\n this.animating = false;\n }\n\n onKeydown(event: KeyboardEvent) {\n if (event.which === 32 || event.which === 13) {\n this.toggle(event);\n event.preventDefault();\n }\n }\n\n ngOnDestroy() {\n this.accordion.tabs.splice(this.findTabIndex(), 1);\n }\n}\n\n@Component({\n selector: 'p-accordion',\n template: `\n <div [ngClass]=\"'ui-accordion ui-widget ui-helper-reset'\" [ngStyle]=\"style\" [class]=\"styleClass\" role=\"tablist\">\n <ng-content></ng-content>\n </div>\n `\n})\nexport class Accordion implements BlockableUI, AfterContentInit, OnDestroy {\n \n @Input() multiple: boolean;\n \n @Output() onClose: EventEmitter<any> = new EventEmitter();\n\n @Output() onOpen: EventEmitter<any> = new EventEmitter();\n\n @Input() style: any;\n \n @Input() styleClass: string;\n\n @Input() expandIcon: string = 'pi pi-fw pi-chevron-right';\n\n @Input() collapseIcon: string = 'pi pi-fw pi-chevron-down';\n\n @Output() activeIndexChange: EventEmitter<any> = new EventEmitter();\n \n @ContentChildren(AccordionTab) tabList: QueryList<AccordionTab>;\n\n tabListSubscription: Subscription;\n \n private _activeIndex: any;\n\n preventActiveIndexPropagation: boolean;\n \n public tabs: AccordionTab[] = [];\n\n constructor(public el: ElementRef, public changeDetector: ChangeDetectorRef) {}\n\n ngAfterContentInit() {\n this.initTabs();\n\n this.tabListSubscription = this.tabList.changes.subscribe(_ => {\n this.initTabs();\n this.changeDetector.markForCheck();\n });\n }\n\n initTabs(): any {\n this.tabs = this.tabList.toArray();\n this.updateSelectionState();\n }\n \n getBlockableElement(): HTMLElement {\n return this.el.nativeElement.children[0];\n } \n \n @Input() get activeIndex(): any {\n return this._activeIndex;\n }\n\n set activeIndex(val: any) {\n this._activeIndex = val;\n if (this.preventActiveIndexPropagation) {\n this.preventActiveIndexPropagation = false;\n return;\n }\n\n this.updateSelectionState();\n }\n\n updateSelectionState() {\n if (this.tabs && this.tabs.length && this._activeIndex != null) {\n for (let i = 0; i < this.tabs.length; i++) {\n let selected = this.multiple ? this._activeIndex.includes(i) : (i === this._activeIndex);\n let changed = selected !== this.tabs[i].selected;\n\n if (changed) {\n this.tabs[i].animating = true;\n this.tabs[i].selected = selected;\n this.tabs[i].selectedChange.emit(selected);\n }\n }\n }\n }\n\n updateActiveIndex() {\n let index: any = this.multiple ? [] : null;\n this.tabs.forEach((tab, i) => {\n if (tab.selected) {\n if (this.multiple) {\n index.push(i);\n }\n else {\n index = i;\n return;\n }\n }\n });\n\n this.preventActiveIndexPropagation = true;\n this.activeIndexChange.emit(index);\n }\n\n ngOnDestroy() {\n if (this.tabListSubscription) {\n this.tabListSubscription.unsubscribe();\n }\n }\n}\n\n@NgModule({\n imports: [CommonModule],\n exports: [Accordion,AccordionTab,SharedModule],\n declarations: [Accordion,AccordionTab]\n})\nexport class AccordionModule { }\n"]}
\No newline at end of file