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