UNPKG

primeng

Version:

PrimeNG is a premium UI library for Angular featuring a rich set of 90+ components, a theme designer, various theme alternatives such as Material, Bootstrap, Tailwind, premium templates and professional support. In addition, it integrates with PrimeBlock,

1 lines 60 kB
{"version":3,"file":"primeng-tabs.mjs","sources":["../../src/tabs/style/tabsstyle.ts","../../src/tabs/tabs.ts","../../src/tabs/style/tabstyle.ts","../../src/tabs/style/tabliststyle.ts","../../src/tabs/tablist.ts","../../src/tabs/tab.ts","../../src/tabs/style/tabpanelstyle.ts","../../src/tabs/tabpanel.ts","../../src/tabs/style/tabpanelsstyle.ts","../../src/tabs/tabpanels.ts","../../src/tabs/tabs.module.ts","../../src/tabs/primeng-tabs.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { style } from '@primeuix/styles/tabs';\nimport { BaseStyle } from 'primeng/base';\n\nconst classes = {\n root: 'p-tabs p-component'\n};\n\n@Injectable()\nexport class TabsStyle extends BaseStyle {\n name = 'tabs';\n\n style = style;\n\n classes = classes;\n}\n\n/**\n *\n * Tabs facilitates seamless switching between different views.\n *\n * [Live Demo](https://www.primeng.org/tabs/)\n *\n * @module tabsstyle\n *\n */\n\nexport enum TabsClasses {\n /**\n * Class name of the root element\n */\n root = 'p-tabs',\n /**\n * Class name of the wrapper element\n */\n list = 'p-tablist',\n /**\n * Class name of the content element\n */\n content = 'p-tablist-content',\n /**\n * Class name of the tab list element\n */\n tablist = 'p-tablist-tab-list',\n /**\n * Class name of the tab list element\n */\n tab = 'p-tab',\n /**\n * Class name of the inkbar element\n */\n inkbar = 'p-tablist-active-bar',\n /**\n * Class name of the navigation buttons\n */\n button = 'p-tablist-nav-button',\n /**\n * Class name of the tab panels wrapper\n */\n tabpanels = 'p-tabpanels',\n /**\n * Class name of the tab panel element\n */\n tabpanel = 'p-tabs-panel'\n}\n\nexport interface TabsStyle extends BaseStyle {}\n","import { booleanAttribute, ChangeDetectionStrategy, Component, inject, InjectionToken, input, model, numberAttribute, signal, ViewEncapsulation } from '@angular/core';\nimport { uuid } from '@primeuix/utils';\nimport { BaseComponent, PARENT_INSTANCE } from 'primeng/basecomponent';\nimport { Bind, BindModule } from 'primeng/bind';\nimport { TabsPassThrough, TabsScrollStrategy } from 'primeng/types/tabs';\nimport { TabsStyle } from './style/tabsstyle';\n\nconst TABS_INSTANCE = new InjectionToken<Tabs>('TABS_INSTANCE');\n\n/**\n * Tabs facilitates seamless switching between different views.\n * @group Components\n */\n@Component({\n selector: 'p-tabs',\n standalone: true,\n imports: [BindModule],\n template: ` <ng-content></ng-content>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [TabsStyle, { provide: TABS_INSTANCE, useExisting: Tabs }, { provide: PARENT_INSTANCE, useExisting: Tabs }],\n host: {\n '[class]': 'cx(\"root\")',\n '[attr.id]': 'id()'\n },\n hostDirectives: [Bind]\n})\nexport class Tabs extends BaseComponent<TabsPassThrough> {\n componentName = 'Tabs';\n\n $pcTabs: Tabs | undefined = inject(TABS_INSTANCE, { optional: true, skipSelf: true }) ?? undefined;\n\n bindDirectiveInstance = inject(Bind, { self: true });\n\n onAfterViewChecked(): void {\n this.bindDirectiveInstance.setAttrs(this.ptms(['host', 'root']));\n }\n\n /**\n * Value of the active tab.\n * @defaultValue undefined\n * @group Props\n */\n value = model<string | number | undefined>(undefined);\n /**\n * Scrolling is enabled by default. This property is no longer needed.\n * @defaultValue false\n * @group Props\n * @deprecated Scrolling is now the default behavior. This property will be removed in a future version.\n */\n scrollable = input(false, { transform: booleanAttribute });\n /**\n * When enabled, tabs are not rendered until activation.\n * @type boolean\n * @defaultValue false\n * @group Props\n */\n lazy = input(false, { transform: booleanAttribute });\n /**\n * When enabled, the focused tab is activated.\n * @type boolean\n * @defaultValue false\n * @group Props\n */\n selectOnFocus = input(false, { transform: booleanAttribute });\n /**\n * Whether to display navigation buttons in container when scrollable is enabled.\n * @type boolean\n * @defaultValue true\n * @group Props\n */\n showNavigators = input(true, { transform: booleanAttribute });\n /**\n * Tabindex of the tab buttons.\n * @type number\n * @defaultValue 0\n * @group Props\n */\n tabindex = input(0, { transform: numberAttribute });\n /**\n * Defines the scrolling behavior when the active tab changes. Use 'nearest' to scroll only if the tab is not fully visible, 'center' to always center the active tab, or false to disable auto-scrolling.\n * @defaultValue 'nearest'\n * @group Props\n */\n scrollStrategy = input<TabsScrollStrategy>('nearest');\n\n id = signal<string>(uuid('pn_id_'));\n\n _componentStyle = inject(TabsStyle);\n\n updateValue(newValue: string | number | undefined) {\n this.value.update(() => newValue);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BaseStyle } from 'primeng/base';\n\nconst classes = {\n root: ({ instance }) => [\n 'p-tab',\n {\n 'p-tab-active': instance.active(),\n 'p-disabled': instance.disabled()\n }\n ]\n};\n\n@Injectable()\nexport class TabStyle extends BaseStyle {\n name = 'tab';\n\n classes = classes;\n}\n\n/**\n *\n * Tabs facilitates seamless switching between different views.\n *\n * [Live Demo](https://www.primeng.org/tabs/)\n *\n * @module tabsstyle\n *\n */\n\nexport enum TabClasses {\n /**\n * Class name of the tab list element\n */\n tab = 'p-tab'\n}\n\nexport interface TabStyle extends BaseStyle {}\n","import { Injectable } from '@angular/core';\nimport { BaseStyle } from 'primeng/base';\n\nconst classes = {\n root: 'p-tablist',\n content: 'p-tablist-content',\n activeBar: 'p-tablist-active-bar',\n prevButton: 'p-tablist-prev-button p-tablist-nav-button',\n nextButton: 'p-tablist-next-button p-tablist-nav-button'\n};\n\n@Injectable()\nexport class TabListStyle extends BaseStyle {\n name = 'tablist';\n\n classes = classes;\n}\n\n/**\n *\n * Tabs facilitates seamless switching between different views.\n *\n * [Live Demo](https://www.primeng.org/tabs/)\n *\n * @module tabliststyle\n *\n */\n\nexport enum TabListClasses {\n /**\n * Class name of the root element\n */\n root = 'p-tablist',\n /**\n * Class name of the content element\n */\n content = 'p-tablist-content',\n /**\n * Class name of the activebar element\n */\n activeBar = 'p-tablist-active-bar',\n /**\n * Class name of the previous button element\n */\n prevButton = 'p-tablist-prev-button',\n /**\n * Class name of the next button element\n */\n nextButton = 'p-tablist-next-button'\n}\n\nexport interface TabListStyle extends BaseStyle {}\n","import { isPlatformBrowser, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, contentChild, effect, ElementRef, forwardRef, inject, InjectionToken, signal, TemplateRef, viewChild, ViewEncapsulation } from '@angular/core';\nimport { findSingle, getWidth, isRTL } from '@primeuix/utils';\nimport { SharedModule } from 'primeng/api';\nimport { BaseComponent, PARENT_INSTANCE } from 'primeng/basecomponent';\nimport { Bind, BindModule } from 'primeng/bind';\nimport { ChevronLeft as ChevronLeftIcon } from '@primeicons/angular/chevron-left';\nimport { ChevronRight as ChevronRightIcon } from '@primeicons/angular/chevron-right';\nimport { RippleModule } from 'primeng/ripple';\nimport { TabListStyle } from './style/tabliststyle';\nimport { Tabs } from './tabs';\nimport { TabListPassThrough } from 'primeng/types/tabs';\n\nconst TABLIST_INSTANCE = new InjectionToken<TabList>('TABLIST_INSTANCE');\n\n/**\n * TabList is a helper component for Tabs component.\n * @group Components\n */\n@Component({\n selector: 'p-tablist',\n standalone: true,\n imports: [NgTemplateOutlet, ChevronLeftIcon, ChevronRightIcon, RippleModule, SharedModule, BindModule],\n template: `\n @if (showNavigators() && isPrevButtonEnabled()) {\n <button\n type=\"button\"\n #prevButton\n pRipple\n [pBind]=\"ptm('prevButton')\"\n [class]=\"cx('prevButton')\"\n [attr.aria-label]=\"prevButtonAriaLabel\"\n [attr.tabindex]=\"tabindex()\"\n [attr.data-pc-group-section]=\"'navigator'\"\n (click)=\"onPrevButtonClick()\"\n >\n @if (prevIconTemplate()) {\n <ng-container *ngTemplateOutlet=\"prevIconTemplate()\" />\n } @else {\n <svg data-p-icon=\"chevron-left\" />\n }\n </button>\n }\n <div #content [pBind]=\"ptm('content')\" [class]=\"cx('content')\" role=\"tablist\" (scroll)=\"onScroll($event)\">\n <ng-content />\n <span #inkbar [pBind]=\"ptm('activeBar')\" role=\"presentation\" [class]=\"cx('activeBar')\"></span>\n </div>\n @if (showNavigators() && isNextButtonEnabled()) {\n <button\n type=\"button\"\n #nextButton\n pRipple\n [pBind]=\"ptm('nextButton')\"\n [class]=\"cx('nextButton')\"\n [attr.aria-label]=\"nextButtonAriaLabel\"\n [attr.tabindex]=\"tabindex()\"\n [attr.data-pc-group-section]=\"'navigator'\"\n (click)=\"onNextButtonClick()\"\n >\n @if (nextIconTemplate()) {\n <ng-container *ngTemplateOutlet=\"nextIconTemplate()\" />\n } @else {\n <svg data-p-icon=\"chevron-right\" />\n }\n </button>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class]': 'cx(\"root\")'\n },\n providers: [TabListStyle, { provide: TABLIST_INSTANCE, useExisting: TabList }, { provide: PARENT_INSTANCE, useExisting: TabList }],\n hostDirectives: [Bind]\n})\nexport class TabList extends BaseComponent<TabListPassThrough> {\n componentName = 'TabList';\n\n $pcTabList: TabList | undefined = inject(TABLIST_INSTANCE, { optional: true, skipSelf: true }) ?? undefined;\n\n bindDirectiveInstance = inject(Bind, { self: true });\n onAfterViewChecked(): void {\n this.bindDirectiveInstance.setAttrs(this.ptms(['host', 'root']));\n }\n\n /**\n * A template reference variable that represents the previous icon in a UI component.\n * @type {TemplateRef<any> | undefined}\n * @group Templates\n */\n prevIconTemplate = contentChild<TemplateRef<any>>('previcon', { descendants: false });\n /**\n * A template reference variable that represents the next icon in a UI component.\n * @type {TemplateRef<any> | undefined}\n * @group Templates\n */\n nextIconTemplate = contentChild<TemplateRef<any>>('nexticon', { descendants: false });\n\n content = viewChild<ElementRef<HTMLDivElement>>('content');\n\n prevButton = viewChild<ElementRef<HTMLButtonElement>>('prevButton');\n\n nextButton = viewChild<ElementRef<HTMLButtonElement>>('nextButton');\n\n inkbar = viewChild<ElementRef<HTMLSpanElement>>('inkbar');\n\n pcTabs = inject(forwardRef(() => Tabs));\n\n isPrevButtonEnabled = signal<boolean>(false);\n\n isNextButtonEnabled = signal<boolean>(false);\n\n resizeObserver!: ResizeObserver;\n\n showNavigators = computed(() => this.pcTabs.showNavigators());\n\n tabindex = computed(() => this.pcTabs.tabindex());\n\n scrollable = computed(() => this.pcTabs.scrollable());\n\n _componentStyle = inject(TabListStyle);\n\n constructor() {\n super();\n effect(() => {\n this.pcTabs.value();\n if (isPlatformBrowser(this.platformId)) {\n setTimeout(() => {\n this.updateInkBar();\n this.scrollToActiveTab();\n });\n }\n });\n }\n\n get prevButtonAriaLabel() {\n return this.config?.translation?.aria?.previous;\n }\n\n get nextButtonAriaLabel() {\n return this.config?.translation?.aria?.next;\n }\n\n onAfterViewInit() {\n if (this.showNavigators() && isPlatformBrowser(this.platformId)) {\n this.updateButtonState();\n this.bindResizeObserver();\n }\n }\n\n onDestroy() {\n this.unbindResizeObserver();\n }\n\n onScroll(event: Event) {\n this.showNavigators() && this.updateButtonState();\n\n event.preventDefault();\n }\n\n onPrevButtonClick() {\n const _content = this.content()?.nativeElement;\n if (!_content) return;\n const width = getWidth(_content);\n const pos = Math.abs(_content.scrollLeft) - width;\n const scrollLeft = pos <= 0 ? 0 : pos;\n\n _content.scrollLeft = isRTL(_content) ? -1 * scrollLeft : scrollLeft;\n }\n\n onNextButtonClick() {\n const _content = this.content()?.nativeElement;\n if (!_content) return;\n const width = getWidth(_content) - this.getVisibleButtonWidths();\n const pos = _content.scrollLeft + width;\n const lastPos = _content.scrollWidth - width;\n const scrollLeft = pos >= lastPos ? lastPos : pos;\n\n _content.scrollLeft = isRTL(_content) ? -1 * scrollLeft : scrollLeft;\n }\n\n updateButtonState() {\n const _content = this.content()?.nativeElement;\n const _list = this.el?.nativeElement;\n if (!_content) return;\n\n const { scrollWidth, offsetWidth } = _content;\n const scrollLeft = Math.abs(_content.scrollLeft);\n const width = getWidth(_content);\n\n this.isPrevButtonEnabled.set(scrollLeft !== 0);\n this.isNextButtonEnabled.set(_list.offsetWidth >= offsetWidth && Math.abs(scrollLeft - scrollWidth + width) > 1);\n }\n\n updateInkBar() {\n const _content = this.content()?.nativeElement;\n const _inkbar = this.inkbar()?.nativeElement;\n if (!_content || !_inkbar) return;\n\n const activeTab = findSingle(_content, '[data-pc-name=\"tab\"][data-p-active=\"true\"]') as HTMLElement | null;\n if (!activeTab) return;\n\n _inkbar.style.setProperty('--px-active-bar-width', activeTab.offsetWidth + 'px');\n _inkbar.style.setProperty('--px-active-bar-height', activeTab.offsetHeight + 'px');\n _inkbar.style.setProperty('--px-active-bar-left', activeTab.offsetLeft + 'px');\n _inkbar.style.setProperty('--px-active-bar-top', activeTab.offsetTop + 'px');\n }\n\n scrollToActiveTab() {\n const _content = this.content()?.nativeElement;\n const scrollStrategy = this.pcTabs.scrollStrategy();\n if (!_content || scrollStrategy === false) return;\n\n const activeTab = findSingle(_content, '[data-pc-name=\"tab\"][data-p-active=\"true\"]') as HTMLElement | null;\n if (!activeTab) return;\n\n const contentWidth = _content.clientWidth;\n const currentScrollLeft = Math.abs(_content.scrollLeft);\n const tabLeft = activeTab.offsetLeft;\n const tabWidth = activeTab.offsetWidth;\n const tabRight = tabLeft + tabWidth;\n\n let targetScrollLeft: number;\n\n if (scrollStrategy === 'center') {\n targetScrollLeft = tabLeft - (contentWidth - tabWidth) / 2;\n } else {\n const padding = contentWidth * 0.1;\n\n if (tabLeft < currentScrollLeft + padding) {\n targetScrollLeft = tabLeft - padding;\n } else if (tabRight > currentScrollLeft + contentWidth - padding) {\n targetScrollLeft = tabRight - contentWidth + padding;\n } else {\n return;\n }\n }\n\n const maxScrollLeft = _content.scrollWidth - contentWidth;\n const clampedScrollLeft = Math.max(0, Math.min(targetScrollLeft, maxScrollLeft));\n\n _content.scrollTo({ left: isRTL(_content) ? -clampedScrollLeft : clampedScrollLeft, behavior: 'smooth' });\n }\n\n getVisibleButtonWidths() {\n const _prevBtn = this.prevButton()?.nativeElement;\n const _nextBtn = this.nextButton()?.nativeElement;\n\n return [_prevBtn, _nextBtn].reduce((acc, el) => (el ? acc + getWidth(el) : acc), 0);\n }\n\n bindResizeObserver() {\n this.resizeObserver = new ResizeObserver(() => this.updateButtonState());\n this.resizeObserver.observe(this.el.nativeElement);\n }\n\n unbindResizeObserver() {\n if (this.resizeObserver) {\n this.resizeObserver.unobserve(this.el.nativeElement);\n this.resizeObserver = null!;\n }\n }\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport { booleanAttribute, ChangeDetectionStrategy, Component, computed, ElementRef, forwardRef, HostListener, inject, InjectionToken, input, model, ViewEncapsulation } from '@angular/core';\nimport { equals, focus, getAttribute } from '@primeuix/utils';\nimport { SharedModule } from 'primeng/api';\nimport { BaseComponent, PARENT_INSTANCE } from 'primeng/basecomponent';\nimport { Bind, BindModule } from 'primeng/bind';\nimport { Ripple } from 'primeng/ripple';\nimport { TabPassThrough } from 'primeng/types/tabs';\nimport { TabStyle } from './style/tabstyle';\nimport { TabList } from './tablist';\nimport { Tabs } from './tabs';\n\nconst TAB_INSTANCE = new InjectionToken<Tab>('TAB_INSTANCE');\n\n/**\n * Defines valid properties in Tab component.\n * @group Components\n */\n@Component({\n selector: 'p-tab',\n standalone: true,\n imports: [SharedModule, BindModule],\n template: ` <ng-content></ng-content>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class]': 'cx(\"root\")',\n '[attr.id]': 'id()',\n '[attr.aria-controls]': 'ariaControls()',\n '[attr.role]': '\"tab\"',\n '[attr.aria-selected]': 'active()',\n '[attr.aria-disabled]': 'disabled()',\n '[attr.data-p-disabled]': 'disabled()',\n '[attr.data-p-active]': 'active()',\n '[attr.tabindex]': 'tabindex()'\n },\n hostDirectives: [Ripple, Bind],\n providers: [TabStyle, { provide: TAB_INSTANCE, useExisting: Tab }, { provide: PARENT_INSTANCE, useExisting: Tab }]\n})\nexport class Tab extends BaseComponent<TabPassThrough> {\n componentName = 'Tab';\n\n $pcTab: Tab | undefined = inject(TAB_INSTANCE, { optional: true, skipSelf: true }) ?? undefined;\n\n bindDirectiveInstance = inject(Bind, { self: true });\n\n onAfterViewChecked(): void {\n this.bindDirectiveInstance.setAttrs(this.ptms(['host', 'root']));\n }\n\n /**\n * Value of tab.\n * @defaultValue undefined\n * @group Props\n */\n value = model<number | string | undefined>();\n /**\n * Whether the tab is disabled.\n * @defaultValue false\n * @group Props\n */\n disabled = input(false, { transform: booleanAttribute });\n\n pcTabs = inject(forwardRef(() => Tabs));\n\n pcTabList = inject(forwardRef(() => TabList));\n\n el = inject(ElementRef);\n\n _componentStyle = inject(TabStyle);\n\n ripple = computed(() => this.config.ripple());\n\n id = computed(() => `${this.pcTabs.id()}_tab_${this.value()}`);\n\n ariaControls = computed(() => `${this.pcTabs.id()}_tabpanel_${this.value()}`);\n\n active = computed(() => equals(this.pcTabs.value(), this.value()));\n\n tabindex = computed(() => (this.disabled() ? -1 : this.active() ? this.pcTabs.tabindex() : -1));\n\n mutationObserver: MutationObserver | undefined;\n\n @HostListener('focus', ['$event']) onFocus(event: FocusEvent) {\n if (!this.disabled()) {\n this.pcTabs.selectOnFocus() && this.changeActiveValue();\n }\n }\n\n @HostListener('click', ['$event']) onClick(event: MouseEvent) {\n if (!this.disabled()) {\n this.changeActiveValue();\n }\n }\n\n @HostListener('keydown', ['$event']) onKeyDown(event: KeyboardEvent) {\n switch (event.code) {\n case 'ArrowRight':\n this.onArrowRightKey(event);\n break;\n\n case 'ArrowLeft':\n this.onArrowLeftKey(event);\n break;\n\n case 'Home':\n this.onHomeKey(event);\n break;\n\n case 'End':\n this.onEndKey(event);\n break;\n\n case 'PageDown':\n this.onPageDownKey(event);\n break;\n\n case 'PageUp':\n this.onPageUpKey(event);\n break;\n\n case 'Enter':\n case 'NumpadEnter':\n case 'Space':\n this.onEnterKey(event);\n break;\n\n default:\n break;\n }\n\n event.stopPropagation();\n }\n\n onAfterViewInit(): void {\n this.bindMutationObserver();\n }\n\n onArrowRightKey(event: KeyboardEvent) {\n const nextTab = this.findNextTab(event.currentTarget as HTMLElement);\n nextTab ? this.changeFocusedTab(nextTab) : this.onHomeKey(event);\n event.preventDefault();\n }\n\n onArrowLeftKey(event: KeyboardEvent) {\n const prevTab = this.findPrevTab(event.currentTarget as HTMLElement);\n\n prevTab ? this.changeFocusedTab(prevTab) : this.onEndKey(event);\n event.preventDefault();\n }\n\n onHomeKey(event: KeyboardEvent) {\n const firstTab = this.findFirstTab();\n\n this.changeFocusedTab(firstTab);\n event.preventDefault();\n }\n\n onEndKey(event: KeyboardEvent) {\n const lastTab = this.findLastTab();\n\n this.changeFocusedTab(lastTab);\n event.preventDefault();\n }\n\n onPageDownKey(event: KeyboardEvent) {\n this.scrollInView(this.findLastTab());\n event.preventDefault();\n }\n\n onPageUpKey(event: KeyboardEvent) {\n this.scrollInView(this.findFirstTab());\n event.preventDefault();\n }\n\n onEnterKey(event: KeyboardEvent) {\n if (!this.disabled()) {\n this.changeActiveValue();\n }\n event.preventDefault();\n }\n\n findNextTab(tabElement: Element | null, selfCheck = false): Element | null {\n const element = selfCheck ? tabElement : tabElement?.nextElementSibling;\n\n return element ? (getAttribute(element, 'data-p-disabled') || getAttribute(element, 'data-pc-section') === 'activebar' ? this.findNextTab(element) : element) : null;\n }\n\n findPrevTab(tabElement: Element | null, selfCheck = false): Element | null {\n const element = selfCheck ? tabElement : tabElement?.previousElementSibling;\n\n return element ? (getAttribute(element, 'data-p-disabled') || getAttribute(element, 'data-pc-section') === 'activebar' ? this.findPrevTab(element) : element) : null;\n }\n\n findFirstTab() {\n return this.findNextTab(this.pcTabList?.content()?.nativeElement?.firstElementChild, true);\n }\n\n findLastTab() {\n return this.findPrevTab(this.pcTabList?.content()?.nativeElement?.lastElementChild, true);\n }\n\n changeActiveValue() {\n this.pcTabs.updateValue(this.value());\n }\n\n changeFocusedTab(element: Element | null) {\n if (element) {\n focus(element as HTMLElement);\n }\n this.scrollInView(element);\n }\n\n scrollInView(element: Element | null) {\n element?.scrollIntoView?.({ block: 'nearest' });\n }\n\n bindMutationObserver() {\n if (isPlatformBrowser(this.platformId)) {\n this.mutationObserver = new MutationObserver((mutations) => {\n mutations.forEach(() => {\n if (this.active()) {\n this.pcTabList?.updateInkBar();\n }\n });\n });\n this.mutationObserver.observe(this.el.nativeElement, { childList: true, characterData: true, subtree: true });\n }\n }\n\n unbindMutationObserver() {\n this.mutationObserver?.disconnect();\n }\n\n onDestroy() {\n if (this.mutationObserver) {\n this.unbindMutationObserver();\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BaseStyle } from 'primeng/base';\n\nconst classes = {\n root: ({ instance }) => [\n 'p-tabpanel',\n {\n 'p-tabpanel-active': instance.active()\n }\n ]\n};\n\n@Injectable()\nexport class TabPanelStyle extends BaseStyle {\n name = 'tabpanel';\n\n classes = classes;\n}\n\n/**\n *\n * Tab is a helper component for Tabs component.\n *\n * [Live Demo](https://www.primeng.org/tabs/)\n *\n * @module tabstyle\n *\n */\n\nexport enum TabPanelClasses {\n /**\n * Class name of the root element\n */\n root = 'p-tabpanel'\n}\n\nexport interface TabPanelStyle extends BaseStyle {}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { booleanAttribute, ChangeDetectionStrategy, Component, computed, contentChild, forwardRef, inject, InjectionToken, input, model, ViewEncapsulation } from '@angular/core';\nimport { equals } from '@primeuix/utils';\nimport { BaseComponent, PARENT_INSTANCE } from 'primeng/basecomponent';\nimport { Bind, BindModule } from 'primeng/bind';\nimport { TabPanelStyle } from './style/tabpanelstyle';\nimport { Tabs } from './tabs';\nimport { TabPanelPassThrough } from 'primeng/types/tabs';\n\nconst TABPANEL_INSTANCE = new InjectionToken<TabPanel>('TABPANEL_INSTANCE');\n\n/**\n * TabPanel is a helper component for Tabs component.\n * @group Components\n */\n@Component({\n selector: 'p-tabpanel',\n standalone: true,\n imports: [NgTemplateOutlet, BindModule],\n template: `\n <ng-template #defaultContent>\n <ng-content />\n </ng-template>\n\n @if (shouldRender()) {\n <ng-container *ngTemplateOutlet=\"content() ? content() : defaultContent\" />\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [TabPanelStyle, { provide: TABPANEL_INSTANCE, useExisting: TabPanel }, { provide: PARENT_INSTANCE, useExisting: TabPanel }],\n host: {\n '[class]': 'cx(\"root\")',\n '[attr.id]': 'id()',\n '[attr.role]': '\"tabpanel\"',\n '[attr.aria-labelledby]': 'ariaLabelledby()',\n '[attr.data-p-active]': 'active()',\n '[hidden]': '!active()'\n },\n hostDirectives: [Bind]\n})\nexport class TabPanel extends BaseComponent<TabPanelPassThrough> {\n componentName = 'TabPanel';\n\n $pcTabPanel: TabPanel | undefined = inject(TABPANEL_INSTANCE, { optional: true, skipSelf: true }) ?? undefined;\n\n bindDirectiveInstance = inject(Bind, { self: true });\n\n pcTabs = inject<Tabs>(forwardRef(() => Tabs));\n\n onAfterViewChecked(): void {\n this.bindDirectiveInstance.setAttrs(this.ptms(['host', 'root']));\n }\n\n /**\n * When enabled, tab is not rendered until activation.\n * @type boolean\n * @defaultValue false\n * @group Props\n */\n lazy = input(false, { transform: booleanAttribute });\n /**\n * Value of the active tab.\n * @defaultValue undefined\n * @group Props\n */\n value = model<string | number | undefined>(undefined);\n /**\n * Template for initializing complex content when lazy is enabled.\n * @group Templates\n */\n content = contentChild('content', { descendants: false });\n\n id = computed(() => `${this.pcTabs.id()}_tabpanel_${this.value()}`);\n\n ariaLabelledby = computed(() => `${this.pcTabs.id()}_tab_${this.value()}`);\n\n active = computed(() => equals(this.pcTabs.value(), this.value()));\n\n isLazyEnabled = computed(() => this.pcTabs.lazy() || this.lazy());\n\n private hasBeenRendered = false;\n\n shouldRender = computed(() => {\n if (!this.isLazyEnabled() || this.hasBeenRendered) {\n return true;\n }\n\n if (this.active()) {\n this.hasBeenRendered = true;\n return true;\n }\n\n return false;\n });\n\n _componentStyle = inject(TabPanelStyle);\n}\n","import { Injectable } from '@angular/core';\nimport { BaseStyle } from 'primeng/base';\n\nconst classes = {\n root: 'p-tabpanels'\n};\n\n@Injectable()\nexport class TabPanelsStyle extends BaseStyle {\n name = 'tabpanels';\n\n classes = classes;\n}\n\n/**\n *\n * Tab is a helper component for Tabs component.\n *\n * [Live Demo](https://www.primeng.org/tabs/)\n *\n * @module tabpanelstyle\n *\n */\n\nexport enum TabPanelsClasses {\n /**\n * Class name of the root element\n */\n root = 'p-tabpanels'\n}\n\nexport interface TabPanelsStyle extends BaseStyle {}\n","import { ChangeDetectionStrategy, Component, inject, InjectionToken, ViewEncapsulation } from '@angular/core';\nimport { BaseComponent, PARENT_INSTANCE } from 'primeng/basecomponent';\nimport { Bind, BindModule } from 'primeng/bind';\nimport { TabPanelsStyle } from './style/tabpanelsstyle';\nimport { TabPanelsPassThrough } from 'primeng/types/tabs';\n\nconst TABPANELS_INSTANCE = new InjectionToken<TabPanels>('TABPANELS_INSTANCE');\n\n/**\n * TabPanels is a helper component for Tabs component.\n * @group Components\n */\n@Component({\n selector: 'p-tabpanels',\n standalone: true,\n imports: [BindModule],\n template: ` <ng-content></ng-content>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class]': 'cx(\"root\")',\n '[attr.role]': '\"presentation\"'\n },\n providers: [TabPanelsStyle, { provide: TABPANELS_INSTANCE, useExisting: TabPanels }, { provide: PARENT_INSTANCE, useExisting: TabPanels }],\n hostDirectives: [Bind]\n})\nexport class TabPanels extends BaseComponent<TabPanelsPassThrough> {\n componentName = 'TabPanels';\n\n $pcTabPanels: TabPanels | undefined = inject(TABPANELS_INSTANCE, { optional: true, skipSelf: true }) ?? undefined;\n\n bindDirectiveInstance = inject(Bind, { self: true });\n\n _componentStyle = inject(TabPanelsStyle);\n\n onAfterViewChecked(): void {\n this.bindDirectiveInstance.setAttrs(this.ptms(['host', 'root']));\n }\n}\n","import { NgModule } from '@angular/core';\nimport { BindModule } from 'primeng/bind';\nimport { Tab } from './tab';\nimport { TabList } from './tablist';\nimport { TabPanel } from './tabpanel';\nimport { TabPanels } from './tabpanels';\nimport { Tabs } from './tabs';\n\n@NgModule({\n imports: [Tabs, TabPanels, TabPanel, TabList, Tab, BindModule],\n exports: [Tabs, TabPanels, TabPanel, TabList, Tab, BindModule]\n})\nexport class TabsModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["classes","ChevronLeftIcon","ChevronRightIcon","i1","i2"],"mappings":"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