UNPKG

ngx-bootstrap

Version:
1 lines 33.7 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, TemplateRef, ViewContainerRef, input, effect } 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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ngTransclude = input<TemplateRef<any> | undefined>();\n\n constructor(viewRef: ViewContainerRef) {\n this.viewRef = viewRef;\n \n effect(() => {\n const templateRef = this.ngTransclude();\n this._ngTransclude = templateRef;\n if (templateRef) {\n this.viewRef.createEmbeddedView(templateRef);\n }\n });\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, OnDestroy, Renderer2, ElementRef, input, effect } from '@angular/core';\n\nimport { TabDirective } from './tab.directive';\nimport { TabsetConfig } from './tabset.config';\nimport { NgTranscludeDirective } from './ng-transclude.directive';\nimport { NgClass } 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, NgTranscludeDirective]\n})\nexport class TabsetComponent implements OnDestroy {\n /** if true tabs will be placed vertically */\n vertical = input<boolean>(false);\n\n /** if true tabs fill the container and have a consistent width */\n justified = input<boolean>(false);\n\n /** navigation context class: 'tabs' or 'pills' */\n type = input<string>(this._config.type);\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 _isKeysAllowed = true;\n private defaultActivationScheduled = false;\n\n constructor(\n private _config: TabsetConfig,\n private renderer: Renderer2,\n private elementRef: ElementRef\n ) {\n this._isKeysAllowed = _config.isKeysAllowed;\n this.ariaLabel = _config.ariaLabel;\n\n // Watch for input changes and update class map\n effect(() => {\n const _ = [this.vertical(), this.justified(), this.type()];\n this.setClassMap();\n });\n }\n\n ngOnDestroy(): void {\n this.isDestroyed = true;\n }\n\n addTab(tab: TabDirective): void {\n // If tab has a tabOrder, insert it in the correct position\n if (tab.tabOrder !== undefined) {\n this.insertTabByOrder(tab);\n } else {\n // Default behavior - add to end\n this.tabs.push(tab);\n }\n\n // Activation logic\n // - If the newly added tab is already active, set it active again to leverage\n // TabDirective's setter which will deactivate others.\n // - Otherwise, schedule a single deferred default-first activation if none active.\n if (tab.active) {\n tab.active = true;\n return;\n }\n\n if (!this.defaultActivationScheduled) {\n this.defaultActivationScheduled = true;\n // Defer default activation to avoid racing template-driven [active] inputs\n Promise.resolve().then(() => {\n this.defaultActivationScheduled = false;\n // Guard in case the tabset changed meanwhile\n if (!this.tabs.length) {\n return;\n }\n if (this.tabs.some((t: TabDirective) => !!t.active)) {\n return;\n }\n const firstEnabled = this.tabs.find((t: TabDirective) => !t.disabled);\n if (firstEnabled) {\n firstEnabled.active = true;\n }\n });\n }\n }\n\n private insertTabByOrder(tab: TabDirective): void {\n let insertIndex = this.tabs.length; // Default to end\n\n // Find the correct position to insert the ordered tab\n for (let i = 0; i < this.tabs.length; i++) {\n const existingTab = this.tabs[i];\n\n // If the existing tab has an order and the new tab's order is less than it\n if (existingTab.tabOrder !== undefined &&\n tab.tabOrder !== undefined &&\n tab.tabOrder < existingTab.tabOrder) {\n insertIndex = i;\n break;\n }\n\n // If we reach an unordered tab, we want to insert before it\n // (ordered tabs should come before unordered tabs)\n if (existingTab.tabOrder === undefined) {\n insertIndex = i;\n break;\n }\n }\n\n // Insert at the found position\n this.tabs.splice(insertIndex, 0, tab);\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 @for (tabz of tabs; track tabz; let i = $index) {\n <li [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 @if (tabz.removable) {\n <span (click)=\"$event.preventDefault(); removeTab(tabz);\" class=\"bs-remove-tab\"> &#10060;</span>\n }\n </a>\n </li>\n }\n</ul>\n<div class=\"tab-content\">\n <ng-content></ng-content>\n</div>\n","import {\n ChangeDetectorRef,\n Directive,\n HostBinding,\n TemplateRef,\n OnInit,\n OnDestroy,\n ElementRef,\n Renderer2,\n input,\n output,\n effect\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 heading = input<string | undefined>();\n /** tab id. The same id with suffix '-link' will be added to the corresponding &lt;li&gt; element */\n @HostBinding('attr.id')\n id?: string;\n\n // eslint-disable-next-line @angular-eslint/no-input-rename\n idInput = input<string | undefined>(undefined, { alias: 'id' });\n /** if true tab can not be activated */\n disabled = false;\n // eslint-disable-next-line @angular-eslint/no-input-rename\n disabledInput = input<boolean>(false, { alias: 'disabled' });\n /** if true tab can be removable, additional button will appear */\n removable = false;\n // eslint-disable-next-line @angular-eslint/no-input-rename\n removableInput = input<boolean>(false, { alias: 'removable' });\n /** tab order for sorting when using dynamic tabs with *ngIf */\n tabOrder?: number;\n // eslint-disable-next-line @angular-eslint/no-input-rename\n tabOrderInput = input<number | undefined>(undefined, { alias: 'tabOrder' });\n /** if set, will be added to the tab's class attribute. Multiple classes are supported. */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n customClassInput = input<string | undefined>(undefined, { alias: 'customClass' });\n /** tab active state - can be set via input */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n activeInput = input<boolean | undefined>(undefined, { alias: 'active' });\n\n /** tab active state toggle */\n @HostBinding('class.active')\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 this._cdr.markForCheck();\n }\n\n return;\n }\n\n this._active = active;\n this._cdr.markForCheck();\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 selectTab = output<TabDirective>();\n /** fired when tab became inactive, $event:Tab equals to deselected instance of Tab component */\n deselect = output<TabDirective>();\n /** fired before tab will be removed, $event:Tab equals to instance of removed tab */\n removed = output<TabDirective>();\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 _customClass = '';\n\n constructor(\n tabset: TabsetComponent,\n public elementRef: ElementRef,\n public renderer: Renderer2,\n private _cdr: ChangeDetectorRef\n ) {\n this.tabset = tabset;\n\n // Watch for id input changes\n effect(() => {\n const idValue = this.idInput();\n if (idValue !== undefined) {\n this.id = idValue;\n }\n });\n\n // Watch for disabled input changes\n effect(() => {\n this.disabled = this.disabledInput();\n });\n\n // Watch for removable input changes\n effect(() => {\n this.removable = this.removableInput();\n });\n\n // Watch for tabOrder input changes\n effect(() => {\n this.tabOrder = this.tabOrderInput();\n });\n\n // Watch for customClass input changes\n effect(() => {\n const customClass = this.customClassInput();\n\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 // Watch for active input changes\n effect(() => {\n const activeValue = this.activeInput();\n if (activeValue !== undefined) {\n this.active = activeValue;\n }\n });\n }\n\n ngOnInit(): void {\n this.removable = !!this.removableInput();\n this.tabOrder = this.tabOrderInput();\n this.disabled = this.disabledInput();\n // Add tab to tabset after input properties are set\n this.tabset.addTab(this);\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 } 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","/**\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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"}