UNPKG

ngx-bootstrap

Version:
1 lines 26.8 kB
{"version":3,"file":"ngx-bootstrap-tabs.mjs","sources":["../../../../src/tabs/ng-transclude.directive.ts","../../../../src/tabs/tabset.config.ts","../../../../src/tabs/tabset.component.ts","../../../../src/tabs/tabset.component.html","../../../../src/tabs/tab.directive.ts","../../../../src/tabs/tab-heading.directive.ts","../../../../src/tabs/tabs.module.ts","../../../../src/tabs/ngx-bootstrap-tabs.ts"],"sourcesContent":["import { Directive, Input, TemplateRef, ViewContainerRef } from '@angular/core';\n\n@Directive({\n selector: '[ngTransclude]',\n standalone: true\n})\nexport class NgTranscludeDirective {\n viewRef: ViewContainerRef;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n protected _ngTransclude?: TemplateRef<any>;\n\n @Input()\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n set ngTransclude(templateRef: TemplateRef<any> | undefined) {\n this._ngTransclude = templateRef;\n if (templateRef) {\n this.viewRef.createEmbeddedView(templateRef);\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n get ngTransclude(): TemplateRef<any> | undefined {\n return this._ngTransclude;\n }\n\n constructor(viewRef: ViewContainerRef) {\n this.viewRef = viewRef;\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TabsetConfig {\n /** provides default navigation context class: 'tabs' or 'pills' */\n type = 'tabs';\n /** provides possibility to set keyNavigations enable or disable, by default is enable */\n isKeysAllowed = true;\n /** aria label for tab list */\n ariaLabel = 'Tabs';\n}\n","import { Component, HostBinding, Input, OnDestroy, Renderer2, ElementRef } from '@angular/core';\n\nimport { TabDirective } from './tab.directive';\nimport { TabsetConfig } from './tabset.config';\nimport { NgTranscludeDirective } from './ng-transclude.directive';\nimport { NgClass, NgFor, NgIf } from '@angular/common';\n// todo: add active event to tab\n// todo: fix? mixing static and dynamic tabs position tabs in order of creation\n@Component({\n selector: 'tabset',\n templateUrl: './tabset.component.html',\n styleUrls: ['./tabs.scss'],\n standalone: true,\n imports: [NgClass, NgFor, NgTranscludeDirective, NgIf]\n})\nexport class TabsetComponent implements OnDestroy {\n /** if true tabs will be placed vertically */\n @Input()\n get vertical(): boolean {\n return this._vertical;\n }\n set vertical(value: boolean) {\n this._vertical = value;\n this.setClassMap();\n }\n\n /** if true tabs fill the container and have a consistent width */\n @Input()\n get justified(): boolean {\n return this._justified;\n }\n set justified(value: boolean) {\n this._justified = value;\n this.setClassMap();\n }\n\n /** navigation context class: 'tabs' or 'pills' */\n @Input()\n get type(): string {\n return this._type;\n }\n set type(value: string) {\n this._type = value;\n this.setClassMap();\n }\n\n get isKeysAllowed(): boolean {\n return this._isKeysAllowed;\n }\n\n set isKeysAllowed(value: boolean) {\n this._isKeysAllowed = value;\n }\n\n @HostBinding('class.tab-container') clazz = true;\n\n tabs: TabDirective[] = [];\n classMap: { [key: string]: boolean } = {};\n\n /** aria label for tab list */\n ariaLabel = 'Tabs';\n\n protected isDestroyed = false;\n protected _vertical = false;\n protected _justified = false;\n protected _type = 'tabs';\n protected _isKeysAllowed = true;\n\n constructor(\n config: TabsetConfig,\n private renderer: Renderer2,\n private elementRef: ElementRef\n ) {\n Object.assign(this, config);\n }\n\n ngOnDestroy(): void {\n this.isDestroyed = true;\n }\n\n addTab(tab: TabDirective): void {\n this.tabs.push(tab);\n tab.active = this.tabs.length === 1 && !tab.active;\n }\n\n removeTab(\n tab: TabDirective,\n options = { reselect: true, emit: true }\n ): void {\n const index = this.tabs.indexOf(tab);\n if (index === -1 || this.isDestroyed) {\n return;\n }\n // Select a new tab if the tab to be removed is selected and not destroyed\n if (options.reselect && tab.active && this.hasAvailableTabs(index)) {\n const newActiveIndex = this.getClosestTabIndex(index);\n this.tabs[newActiveIndex].active = true;\n }\n if (options.emit) {\n tab.removed.emit(tab);\n }\n this.tabs.splice(index, 1);\n if (tab.elementRef.nativeElement.parentNode) {\n this.renderer.removeChild(\n tab.elementRef.nativeElement.parentNode,\n tab.elementRef.nativeElement\n );\n }\n }\n\n keyNavActions(event: KeyboardEvent, index: number) {\n if (!this.isKeysAllowed) {\n return;\n }\n const list: HTMLElement[] = Array.from(this.elementRef.nativeElement.querySelectorAll('.nav-link'));\n // const activeElList = list.filter((el: HTMLElement) => !el.classList.contains('disabled'));\n if (event.keyCode === 13 || event.key === 'Enter' || event.keyCode === 32 || event.key === 'Space') {\n event.preventDefault();\n const currentTab = list[(index) % list.length];\n currentTab.click();\n\n return;\n }\n\n if (event.keyCode === 39 || event.key === 'RightArrow') {\n let nextTab: HTMLElement;\n let shift = 1;\n\n do {\n nextTab = list[(index + shift) % list.length];\n\n shift++;\n } while (nextTab.classList.contains('disabled'));\n\n nextTab.focus();\n\n return;\n }\n\n if (event.keyCode === 37 || event.key === 'LeftArrow') {\n let previousTab: HTMLElement;\n let shift = 1;\n let i = index;\n\n do {\n if ((i - shift) < 0) {\n i = list.length - 1;\n previousTab = list[i];\n shift = 0;\n } else {\n previousTab = list[i - shift];\n }\n\n shift++;\n } while (previousTab.classList.contains('disabled'));\n\n previousTab.focus();\n\n return;\n }\n\n if (event.keyCode === 36 || event.key === 'Home') {\n event.preventDefault();\n\n let firstTab: HTMLElement;\n let shift = 0;\n\n do {\n firstTab = list[shift % list.length];\n\n shift++;\n } while (firstTab.classList.contains('disabled'));\n\n firstTab.focus();\n\n return;\n }\n\n if (event.keyCode === 35 || event.key === 'End') {\n event.preventDefault();\n\n let lastTab: HTMLElement;\n let shift = 1;\n let i = index;\n\n do {\n if ((i - shift) < 0) {\n i = list.length - 1;\n lastTab = list[i];\n shift = 0;\n } else {\n lastTab = list[i - shift];\n }\n\n shift++;\n } while (lastTab.classList.contains('disabled'));\n\n lastTab.focus();\n\n return;\n }\n\n if (event.keyCode === 46 || event.key === 'Delete') {\n if (this.tabs[index].removable) {\n this.removeTab(this.tabs[index]);\n\n if (list[index + 1]) {\n list[(index + 1) % list.length].focus();\n\n return;\n }\n\n if (list[list.length - 1]) {\n list[0].focus();\n }\n }\n }\n }\n\n protected getClosestTabIndex(index: number): number {\n const tabsLength = this.tabs.length;\n if (!tabsLength) {\n return -1;\n }\n\n for (let step = 1; step <= tabsLength; step += 1) {\n const prevIndex = index - step;\n const nextIndex = index + step;\n if (this.tabs[prevIndex] && !this.tabs[prevIndex].disabled) {\n return prevIndex;\n }\n if (this.tabs[nextIndex] && !this.tabs[nextIndex].disabled) {\n return nextIndex;\n }\n }\n\n return -1;\n }\n\n protected hasAvailableTabs(index: number): boolean {\n const tabsLength = this.tabs.length;\n if (!tabsLength) {\n return false;\n }\n\n for (let i = 0; i < tabsLength; i += 1) {\n if (!this.tabs[i].disabled && i !== index) {\n return true;\n }\n }\n\n return false;\n }\n\n protected setClassMap(): void {\n this.classMap = {\n 'nav-stacked': this.vertical,\n 'flex-column': this.vertical,\n 'nav-justified': this.justified,\n [`nav-${this.type}`]: true\n };\n }\n}\n","<ul class=\"nav\" [ngClass]=\"classMap\"\n (click)=\"$event.preventDefault()\"\n [attr.aria-label]=\"ariaLabel\"\n role=\"tablist\">\n <li *ngFor=\"let tabz of tabs; let i = index\" [ngClass]=\"['nav-item', tabz.customClass || '']\"\n [class.active]=\"tabz.active\" [class.disabled]=\"tabz.disabled\" (keydown)=\"keyNavActions($event, i)\">\n <a href=\"javascript:void(0);\" class=\"nav-link\" role=\"tab\"\n [attr.aria-controls]=\"tabz.id ? tabz.id : ''\"\n [attr.aria-selected]=\"!!tabz.active\"\n [attr.id]=\"tabz.id ? tabz.id + '-link' : ''\"\n [class.active]=\"tabz.active\" [class.disabled]=\"tabz.disabled\"\n (click)=\"tabz.active = true\">\n <span [ngTransclude]=\"tabz.headingRef\">{{ tabz.heading }}</span>\n <span *ngIf=\"tabz.removable\" (click)=\"$event.preventDefault(); removeTab(tabz);\" class=\"bs-remove-tab\"> &#10060;</span>\n </a>\n </li>\n</ul>\n<div class=\"tab-content\">\n <ng-content></ng-content>\n</div>\n","import {\n Directive,\n EventEmitter,\n HostBinding,\n Input,\n Output,\n TemplateRef,\n OnInit,\n OnDestroy,\n ElementRef,\n Renderer2\n} from '@angular/core';\nimport { TabsetComponent } from './tabset.component';\n\n@Directive({\n selector: 'tab, [tab]', exportAs: 'tab',\n standalone: true\n})\nexport class TabDirective implements OnInit, OnDestroy {\n /** tab header text */\n @Input() heading?: string;\n /** tab id. The same id with suffix '-link' will be added to the corresponding &lt;li&gt; element */\n @HostBinding('attr.id')\n @Input() id?: string;\n /** if true tab can not be activated */\n @Input() disabled = false;\n /** if true tab can be removable, additional button will appear */\n @Input() removable = false;\n /** if set, will be added to the tab's class attribute. Multiple classes are supported. */\n @Input()\n get customClass(): string | undefined {\n return this._customClass;\n }\n\n set customClass(customClass: string | undefined) {\n if (this.customClass) {\n this.customClass.split(' ').forEach((cssClass: string) => {\n this.renderer.removeClass(this.elementRef.nativeElement, cssClass);\n });\n }\n\n this._customClass = customClass ? customClass.trim() : '';\n\n if (this.customClass) {\n this.customClass.split(' ').forEach((cssClass: string) => {\n this.renderer.addClass(this.elementRef.nativeElement, cssClass);\n });\n }\n }\n\n /** tab active state toggle */\n @HostBinding('class.active')\n @Input()\n get active(): boolean | undefined {\n return this._active;\n }\n\n set active(active: boolean | undefined) {\n if (this._active === active) {\n return;\n }\n if ((this.disabled && active) || !active) {\n if (this._active && !active) {\n this.deselect.emit(this);\n this._active = active;\n }\n\n return;\n }\n\n this._active = active;\n this.selectTab.emit(this);\n this.tabset.tabs.forEach((tab: TabDirective) => {\n if (tab !== this) {\n tab.active = false;\n }\n });\n }\n\n /** fired when tab became active, $event:Tab equals to selected instance of Tab component */\n @Output() selectTab: EventEmitter<TabDirective> = new EventEmitter();\n /** fired when tab became inactive, $event:Tab equals to deselected instance of Tab component */\n @Output() deselect: EventEmitter<TabDirective> = new EventEmitter();\n /** fired before tab will be removed, $event:Tab equals to instance of removed tab */\n @Output() removed: EventEmitter<TabDirective> = new EventEmitter();\n\n @HostBinding('class.tab-pane') addClass = true;\n @HostBinding('attr.role') role = 'tabpanel';\n @HostBinding('attr.aria-labelledby') get ariaLabelledby(): string {\n return this.id ? `${this.id}-link` : '';\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n headingRef?: TemplateRef<any>;\n tabset: TabsetComponent;\n protected _active? = false;\n protected _customClass = '';\n\n constructor(\n tabset: TabsetComponent,\n public elementRef: ElementRef,\n public renderer: Renderer2\n ) {\n this.tabset = tabset;\n this.tabset.addTab(this);\n }\n\n ngOnInit(): void {\n this.removable = !!this.removable;\n }\n\n ngOnDestroy(): void {\n this.tabset.removeTab(this, { reselect: false, emit: false });\n }\n}\n","import { Directive, TemplateRef } from '@angular/core';\n\nimport { TabDirective } from './tab.directive';\n\n/** Should be used to mark <ng-template> element as a template for tab heading */\n@Directive({\n selector: '[tabHeading]',\n standalone: true\n})\nexport class TabHeadingDirective {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n templateRef?: TemplateRef<any>;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n constructor(templateRef: TemplateRef<any>, tab: TabDirective) {\n tab.headingRef = templateRef;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule, ModuleWithProviders } from '@angular/core';\n\nimport { NgTranscludeDirective } from './ng-transclude.directive';\nimport { TabHeadingDirective } from './tab-heading.directive';\nimport { TabDirective } from './tab.directive';\nimport { TabsetComponent } from './tabset.component';\n\n@NgModule({\n imports: [CommonModule, NgTranscludeDirective,\n TabDirective,\n TabsetComponent,\n TabHeadingDirective],\n exports: [\n TabDirective,\n TabsetComponent,\n TabHeadingDirective,\n NgTranscludeDirective\n ]\n})\nexport class TabsModule {\n // @deprecated method not required anymore, will be deleted in v19.0.0\n static forRoot(): ModuleWithProviders<TabsModule> {\n return {\n ngModule: TabsModule,\n providers: []\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.TabsetConfig","i1.TabsetComponent","i1.TabDirective"],"mappings":"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"}