UNPKG

16.8 kBSource Map (JSON)View Raw
1{"version":3,"sources":["ng://primeng/tabview/tabview.ts"],"names":["idx","TabViewNav","this","orientation","onTabClick","EventEmitter","onTabCloseClick","prototype","getDefaultHeaderClass","tab","styleClass","headerStyleClass","clickTab","event","emit","originalEvent","clickClose","__decorate","Input","Output","Component","selector","host","[class.ui-tabview-nav]","[class.ui-helper-reset]","[class.ui-helper-clearfix]","[class.ui-widget-header]","[class.ui-corner-all]","template","TabPanel","viewContainer","cd","cache","tooltipPosition","tooltipPositionStyle","id","ngAfterContentInit","_this","templates","forEach","item","getType","headerTemplate","contentTemplate","Object","defineProperty","_selected","val","loaded","detectChanges","ngOnDestroy","view","ViewContainerRef","ChangeDetectorRef","ContentChildren","PrimeTemplate","changeDetection","ChangeDetectionStrategy","Default","TabView","el","onChange","onClose","activeIndexChange","initTabs","tabPanels","changes","subscribe","_","tabs","toArray","findSelectedTab","length","activeIndex","selected","open","disabled","preventDefault","selectedTab","selectedTabIndex","findTabIndex","preventActiveIndexPropagation","index","close","controlClose","closeTab","stopPropagation","i","tabPanel","closed","getBlockableElement","nativeElement","children","_activeIndex","ElementRef","TabViewModule","NgModule","imports","CommonModule","SharedModule","TooltipModule","exports","declarations"],"mappings":"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","sourcesContent":["import {NgModule,Component,ElementRef,OnDestroy,Input,Output,EventEmitter,AfterContentInit,\n ContentChildren,QueryList,TemplateRef,EmbeddedViewRef,ViewContainerRef,ChangeDetectorRef,ChangeDetectionStrategy} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {TooltipModule} from 'primeng/tooltip';\nimport {SharedModule,PrimeTemplate} from 'primeng/api';\nimport {BlockableUI} from 'primeng/api';\n\nlet idx: number = 0;\n\n@Component({\n selector: '[p-tabViewNav]',\n host:{\n '[class.ui-tabview-nav]': 'true',\n '[class.ui-helper-reset]': 'true',\n '[class.ui-helper-clearfix]': 'true',\n '[class.ui-widget-header]': 'true',\n '[class.ui-corner-all]': 'true'\n },\n template: `\n <ng-template ngFor let-tab [ngForOf]=\"tabs\">\n <li [class]=\"getDefaultHeaderClass(tab)\" [ngStyle]=\"tab.headerStyle\" role=\"presentation\"\n [ngClass]=\"{'ui-tabview-selected ui-state-active': tab.selected, 'ui-state-disabled': tab.disabled}\"\n (click)=\"clickTab($event,tab)\" *ngIf=\"!tab.closed\" tabindex=\"0\" (keydown.enter)=\"clickTab($event,tab)\">\n <a [attr.id]=\"tab.id + '-label'\" role=\"tab\" [attr.aria-selected]=\"tab.selected\" [attr.aria-controls]=\"tab.id\" [pTooltip]=\"tab.tooltip\" [tooltipPosition]=\"tab.tooltipPosition\"\n [attr.aria-selected]=\"tab.selected\" [positionStyle]=\"tab.tooltipPositionStyle\" [tooltipStyleClass]=\"tab.tooltipStyleClass\">\n <ng-container *ngIf=\"!tab.headerTemplate\" >\n <span class=\"ui-tabview-left-icon\" [ngClass]=\"tab.leftIcon\" *ngIf=\"tab.leftIcon\"></span>\n <span class=\"ui-tabview-title\">{{tab.header}}</span>\n <span class=\"ui-tabview-right-icon\" [ngClass]=\"tab.rightIcon\" *ngIf=\"tab.rightIcon\"></span>\n </ng-container>\n <ng-container *ngIf=\"tab.headerTemplate\">\n <ng-container *ngTemplateOutlet=\"tab.headerTemplate\"></ng-container>\n </ng-container>\n </a>\n <span *ngIf=\"tab.closable\" class=\"ui-tabview-close pi pi-times\" (click)=\"clickClose($event,tab)\"></span>\n </li>\n </ng-template>\n `,\n})\nexport class TabViewNav {\n \n @Input() tabs: TabPanel[];\n\n @Input() orientation: string = 'top';\n\n @Output() onTabClick: EventEmitter<any> = new EventEmitter();\n \n @Output() onTabCloseClick: EventEmitter<any> = new EventEmitter();\n \n getDefaultHeaderClass(tab:TabPanel) {\n let styleClass = 'ui-state-default ui-corner-' + this.orientation;\n if (tab.headerStyleClass) {\n styleClass = styleClass + \" \" + tab.headerStyleClass;\n }\n return styleClass;\n }\n \n clickTab(event, tab: TabPanel) {\n this.onTabClick.emit({\n originalEvent: event,\n tab: tab\n })\n }\n \n clickClose(event, tab: TabPanel) {\n this.onTabCloseClick.emit({\n originalEvent: event,\n tab: tab\n })\n }\n}\n\n@Component({\n selector: 'p-tabPanel',\n template: `\n <div [attr.id]=\"id\" class=\"ui-tabview-panel ui-widget-content\" [ngClass]=\"{'ui-helper-hidden': !selected}\"\n role=\"tabpanel\" [attr.aria-hidden]=\"!selected\" [attr.aria-labelledby]=\"id + '-label'\" *ngIf=\"!closed\">\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 `,\n changeDetection: ChangeDetectionStrategy.Default\n})\nexport class TabPanel implements AfterContentInit,OnDestroy {\n\n @Input() header: string;\n \n @Input() disabled: boolean;\n \n @Input() closable: boolean;\n \n @Input() headerStyle: any;\n \n @Input() headerStyleClass: string;\n \n @Input() leftIcon: string;\n \n @Input() rightIcon: string;\n \n @Input() cache: boolean = true;\n\n @Input() tooltip: any;\n \n @Input() tooltipPosition: string = 'top';\n\n @Input() tooltipPositionStyle: string = 'absolute';\n\n @Input() tooltipStyleClass: string;\n\n @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n \n constructor(public viewContainer: ViewContainerRef, private cd: ChangeDetectorRef) {}\n \n closed: boolean;\n \n view: EmbeddedViewRef<any>;\n \n _selected: boolean;\n \n loaded: boolean;\n \n id: string = `ui-tabpanel-${idx++}`;\n \n contentTemplate: TemplateRef<any>;\n\n headerTemplate: TemplateRef<any>;\n \n ngAfterContentInit() {\n this.templates.forEach((item) => {\n switch(item.getType()) {\n case 'header':\n this.headerTemplate = item.template;\n break;\n\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 @Input() get selected(): boolean {\n return this._selected;\n }\n\n set selected(val: boolean) {\n this._selected = val;\n \n if (!this.loaded) {\n this.cd.detectChanges();\n }\n\n this.loaded = true;\n }\n \n ngOnDestroy() {\n this.view = null;\n }\n}\n\n@Component({\n selector: 'p-tabView',\n template: `\n <div [ngClass]=\"'ui-tabview ui-widget ui-widget-content ui-corner-all ui-tabview-' + orientation\" [ngStyle]=\"style\" [class]=\"styleClass\">\n <ul p-tabViewNav role=\"tablist\" *ngIf=\"orientation!='bottom'\" [tabs]=\"tabs\" [orientation]=\"orientation\"\n (onTabClick)=\"open($event.originalEvent, $event.tab)\" (onTabCloseClick)=\"close($event.originalEvent, $event.tab)\"></ul>\n <div class=\"ui-tabview-panels\">\n <ng-content></ng-content>\n </div>\n <ul p-tabViewNav role=\"tablist\" *ngIf=\"orientation=='bottom'\" [tabs]=\"tabs\" [orientation]=\"orientation\"\n (onTabClick)=\"open($event.originalEvent, $event.tab)\" (onTabCloseClick)=\"close($event.originalEvent, $event.tab)\"></ul>\n </div>\n `,\n})\nexport class TabView implements AfterContentInit,BlockableUI {\n\n @Input() orientation: string = 'top';\n \n @Input() style: any;\n \n @Input() styleClass: string;\n \n @Input() controlClose: boolean;\n \n @ContentChildren(TabPanel) tabPanels: QueryList<TabPanel>;\n\n @Output() onChange: EventEmitter<any> = new EventEmitter();\n\n @Output() onClose: EventEmitter<any> = new EventEmitter();\n\n @Output() activeIndexChange: EventEmitter<number> = new EventEmitter();\n \n initialized: boolean;\n \n tabs: TabPanel[];\n \n _activeIndex: number;\n \n preventActiveIndexPropagation: boolean;\n\n constructor(public el: ElementRef) {}\n \n ngAfterContentInit() {\n this.initTabs();\n \n this.tabPanels.changes.subscribe(_ => {\n this.initTabs();\n });\n }\n \n initTabs(): void {\n this.tabs = this.tabPanels.toArray();\n let selectedTab: TabPanel = this.findSelectedTab();\n if (!selectedTab && this.tabs.length) {\n if (this.activeIndex != null && this.tabs.length > this.activeIndex)\n this.tabs[this.activeIndex].selected = true;\n else\n this.tabs[0].selected = true;\n }\n }\n \n open(event: Event, tab: TabPanel) {\n if (tab.disabled) {\n if (event) {\n event.preventDefault();\n }\n return;\n }\n \n if (!tab.selected) {\n let selectedTab: TabPanel = this.findSelectedTab();\n if (selectedTab) {\n selectedTab.selected = false\n }\n \n tab.selected = true;\n let selectedTabIndex = this.findTabIndex(tab);\n this.preventActiveIndexPropagation = true;\n this.activeIndexChange.emit(selectedTabIndex);\n this.onChange.emit({originalEvent: event, index: selectedTabIndex});\n }\n \n if (event) {\n event.preventDefault();\n }\n }\n \n close(event: Event, tab: TabPanel) {\n if (this.controlClose) {\n this.onClose.emit({\n originalEvent: event,\n index: this.findTabIndex(tab),\n close: () => {\n this.closeTab(tab);\n }}\n );\n }\n else {\n this.closeTab(tab);\n this.onClose.emit({\n originalEvent: event,\n index: this.findTabIndex(tab)\n });\n }\n \n event.stopPropagation();\n }\n \n closeTab(tab: TabPanel) {\n if (tab.disabled) {\n return;\n }\n if (tab.selected) {\n tab.selected = false;\n for(let i = 0; i < this.tabs.length; i++) {\n let tabPanel = this.tabs[i];\n if (!tabPanel.closed&&!tab.disabled) {\n tabPanel.selected = true;\n break;\n }\n }\n }\n \n tab.closed = true;\n }\n \n findSelectedTab() {\n for(let i = 0; i < this.tabs.length; i++) {\n if (this.tabs[i].selected) {\n return this.tabs[i];\n }\n }\n return null;\n }\n \n findTabIndex(tab: TabPanel) {\n let index = -1;\n for(let i = 0; i < this.tabs.length; i++) {\n if (this.tabs[i] == tab) {\n index = i;\n break;\n }\n }\n return index;\n }\n \n getBlockableElement(): HTMLElement {\n return this.el.nativeElement.children[0];\n }\n \n @Input() get activeIndex(): number {\n return this._activeIndex;\n }\n\n set activeIndex(val:number) {\n this._activeIndex = val;\n if (this.preventActiveIndexPropagation) {\n this.preventActiveIndexPropagation = false;\n return;\n }\n\n if (this.tabs && this.tabs.length && this._activeIndex != null && this.tabs.length > this._activeIndex) {\n this.findSelectedTab().selected = false;\n this.tabs[this._activeIndex].selected = true;\n }\n }\n}\n\n\n@NgModule({\n imports: [CommonModule,SharedModule,TooltipModule],\n exports: [TabView,TabPanel,TabViewNav,SharedModule],\n declarations: [TabView,TabPanel,TabViewNav]\n})\nexport class TabViewModule { }\n"]}
\No newline at end of file