@alyle/ui
Version:
Minimal Design, a set of components for Angular
1 lines • 58.8 kB
Source Map (JSON)
{"version":3,"file":"alyle-ui-tabs.mjs","sources":["../../../lib/tabs/tab-content.directive.ts","../../../lib/tabs/tabs.ts","../../../lib/tabs/tabs.html","../../../lib/tabs/tab.html","../../../lib/tabs/tab-label.html","../../../lib/tabs/tabs.module.ts","../../../lib/tabs/alyle-ui-tabs.ts"],"sourcesContent":["import {Directive, TemplateRef} from '@angular/core';\n\n@Directive({selector: '[ly-tab-content]',\n standalone: false\n})\nexport class LyTabContent {\n constructor(public template: TemplateRef<any>) { }\n}\n","import {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostListener,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n Renderer2,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n Optional,\n ViewChildren,\n ViewContainerRef\n } from '@angular/core';\nimport {\n LyTheme2,\n mixinBg,\n mixinColor,\n mixinDisabled,\n mixinDisableRipple,\n mixinElevation,\n mixinOutlined,\n mixinRaised,\n mixinShadowColor,\n mixinStyleUpdater,\n ThemeVariables,\n AlignAlias,\n YPosition,\n XPosition,\n Dir,\n LyRippleService,\n scrollWithAnimation,\n st2c,\n LY_COMMON_STYLES,\n ThemeRef,\n StyleCollection,\n LyClasses,\n StyleTemplate,\n StyleRenderer,\n Style } from '@alyle/ui';\nimport { LyButton } from '@alyle/ui/button';\nimport { LyTabContent } from './tab-content.directive';\nimport { Subscription, Subject } from 'rxjs';\nimport { ViewportRuler } from '@angular/cdk/scrolling';\nimport { Platform } from '@angular/cdk/platform';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { takeUntil, take, switchMapTo } from 'rxjs/operators';\nimport { FocusMonitor } from '@angular/cdk/a11y';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\n\nexport interface LyTabTheme {\n /** Styles for Tab Component */\n root?: StyleCollection<((classes: LyClasses<typeof STYLES>) => StyleTemplate)>\n | ((classes: LyClasses<typeof STYLES>) => StyleTemplate);\n}\n\nexport interface LyTabVariables {\n tab?: LyTabTheme;\n}\n\nconst DEFAULT_DISABLE_RIPPLE = false;\nconst STYLE_PRIORITY = -2;\nconst DEFAULT_BG = 'primary';\nconst DEFAULT_INDICATOR_COLOR = 'accent';\nconst DEFAULT_ELEVATION = 4;\nconst DEFAULT_HEADER_PLACEMENT = 'above';\nexport type AlignTabs = 'start' | 'center' | 'end' | 'stretch' | 'baseline';\nexport type LyTabsHeaderPlacement = 'before' | 'after' | 'above' | 'below';\n\nexport const STYLES = (theme: ThemeVariables & LyTabVariables, ref: ThemeRef) => {\n const __ = ref.selectorsOf(STYLES);\n return {\n $name: LyTabs.и,\n $priority: STYLE_PRIORITY,\n root: () => (_className: string) => `${_className}{display:flex;}${st2c((\n (theme.tab\n && theme.tab.root\n && (theme.tab.root instanceof StyleCollection\n ? theme.tab.root.setTransformer(fn => fn(__)).css\n : theme.tab.root(__))\n )), `${_className}`)}`,\n tab: (_className: string) => `${_className}{position:relative;display:inline-flex;}`,\n /** Tab container */\n contentContainer: (_className: string) => `${_className}{display:flex;overflow:hidden;flex-grow:1;width:100%;position:relative;}`,\n /** Tab header */\n labels: (_className: string) => `${_className}{display:flex;position:relative;height:100%;}`,\n labelsContainer: () => (_className: string) => `${_className}{overflow:hidden;flex-shrink:0;}@media (hover: none){${__.scrollable} ${_className}{overflow:auto;}}`,\n label: (_className: string) => `${_className}{-webkit-tap-highlight-color:transparent;-webkit-appearance:none;background-color:transparent;user-select:none;border:0;min-width:72px;padding:0 24px;cursor:pointer;height:48px;display:inline-flex;justify-content:center;align-items:center;position:relative;overflow:hidden;font-family:${theme.typography.fontFamily};font-size:${theme.pxToRem(theme.typography.fontSize)};letter-spacing:0.02857em;color:currentColor;outline:none;width:100%;font-weight:500;opacity:.7;}@media ${theme.breakpoints['XSmall']}{${_className}{padding:0 12px;}}`,\n labelActive: (_className: string) => `${_className}{opacity:1;}`,\n contents: (_className: string) => `${_className}{display:flex;width:100%;}`,\n content: (_className: string) => `${st2c((LY_COMMON_STYLES.fill), `${_className}`)}${_className}{width:100%;height:100%;position:absolute;overflow:auto;}`,\n contentActive: (_className: string) => `${_className}{position:relative;z-index:1;}`,\n contentInner: null,\n indicator: (_className: string) => `${_className}{position:absolute;height:2px;transition:450ms cubic-bezier(.1,1,0.5,1);background:currentColor;}`,\n indicatorForServer: (_className: string) => `${_className}{position:absolute;background:currentColor;}`,\n rippleContainer: (_className: string) => `${st2c((LY_COMMON_STYLES.fill), `${_className}`)}${_className}{overflow:hidden;}`,\n scrollable: null,\n hiddenContent: () => (_className: string) => `${_className}{visibility:hidden;}`,\n column: null,\n row: null\n };\n};\n\n/** @docs-private */\nexport class LyTabsBase {\n constructor(\n public _theme: LyTheme2\n ) { }\n}\n\n/** @docs-private */\nexport const LyTabsMixinBase = mixinStyleUpdater(mixinBg(mixinElevation(mixinShadowColor(LyTabsBase))));\n\n/** @docs-private */\nexport class LyTabLabelBase {\n constructor(\n public _theme: LyTheme2,\n public _ngZone: NgZone,\n public _platform: Platform\n ) { }\n}\n\n/** @docs-private */\nexport const LyTabLabelMixinBase = mixinStyleUpdater(\nmixinBg(\n mixinColor(\n mixinRaised(\n mixinDisabled(\n mixinOutlined(\n mixinElevation(\n mixinShadowColor(\n mixinDisableRipple(LyTabLabelBase)))))))));\n\n/**\n * @dynamic\n */\n@Component({\n selector: 'ly-tabs',\n templateUrl: './tabs.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'lyTabs',\n inputs: [\n 'bg', 'elevation', 'shadowColor'\n ],\n providers: [\n StyleRenderer\n ],\n standalone: false\n})\nexport class LyTabs extends LyTabsMixinBase implements OnChanges, OnInit, AfterViewInit, AfterContentInit, OnDestroy {\n /** @docs-private */\n static и = 'LyTabs';\n /** @docs-private */\n $priority = STYLE_PRIORITY;\n /** @docs-private */\n readonly classes = this.sRenderer.renderSheet(STYLES, true);\n _selectedIndex: number;\n _selectedBeforeIndex: number;\n _selectedTab: LyTab | null;\n _selectedBeforeTab: LyTab | null;\n _isViewInitLoaded: boolean;\n private _tabsSubscription = Subscription.EMPTY;\n private _headerPlacement: LyTabsHeaderPlacement;\n private _headerPlacementClass: string;\n private _alignTabs: AlignTabs;\n private _alignTabsClass: string;\n private _textColor: string;\n private _textColorClass: string;\n private _tabResizeSub: Subscription;\n private _scrollable: boolean;\n private _timeoutIds: { [index: number]: number } = {};\n /** Emits whenever the component is destroyed. */\n private readonly _destroy = new Subject<void>();\n\n @ViewChild('tabs', { static: true }) tabsRef: ElementRef;\n @ViewChild('tabContents', { static: true }) tabContents: ElementRef<HTMLDivElement>;\n @ViewChild('tabsIndicator', { static: true, read: ElementRef }) tabsIndicator?: ElementRef;\n @Input() selectedIndexOnChange: 'auto' | number = 'auto';\n /**\n * Keep the content.\n * By default, when changing a tab, the previous one is created and deleted.\n * With this, the content will only be hidden instead of deleting it.\n */\n @Input()\n set keepContent(val: BooleanInput) {\n const newVal = coerceBooleanProperty(val);\n this._keepContent = newVal;\n }\n get keepContent() {\n return this._keepContent;\n }\n private _keepContent: boolean;\n\n /** Animation duration in milliseconds */\n @Input()\n set animationDuration(val: number) {\n this._animationDuration = val;\n Promise.resolve().then(() => {\n this.tabContents.nativeElement.style.transitionDuration = `${val}ms`;\n });\n }\n get animationDuration() {\n return this._animationDuration;\n }\n private _animationDuration: number;\n\n /**\n * Whether the tab group should grow to the size of the active tab.\n */\n @Input()\n set dynamicHeight(val: BooleanInput) {\n const newVal = coerceBooleanProperty(val);\n this._dynamicHeight = newVal;\n }\n get dynamicHeight() {\n return this._dynamicHeight;\n }\n private _dynamicHeight: boolean;\n\n @Input()\n set scrollable(val: BooleanInput) {\n const newVal = coerceBooleanProperty(val);\n if (newVal) {\n this.renderer.addClass(this.el.nativeElement, this.classes.scrollable);\n } else if (this._scrollable != null) {\n this.renderer.removeClass(this.el.nativeElement, this.classes.scrollable);\n }\n this._scrollable = newVal;\n }\n get scrollable() {\n return this._scrollable;\n }\n\n @Input()\n @Style<string | null>(\n val => (theme, ref: ThemeRef) => {\n const __ = ref.selectorsOf(STYLES);\n return (_className: string) => `${_className} ${__.indicator}{color:${theme.colorOf(val)};}`;\n }\n ) indicatorColor: string;\n\n @Input()\n set headerPlacement(val: LyTabsHeaderPlacement) {\n if (val !== this.headerPlacement) {\n this._headerPlacement = val;\n this.sRenderer.toggleClass(this.classes.column, val === 'above' || val === 'below');\n this.sRenderer.toggleClass(this.classes.row, val === 'before' || val === 'after');\n this._headerPlacementClass = this.theme.addStyle(`lyTabs.headerPlacement:${val}`,\n () => {\n let flexDirectionContainer: string;\n let flexDirection = this._getFlexDirection(val);\n let position: string;\n let height: string | null = null;\n let width: string | null = null;\n let heightServer: string | null = null;\n let widthServer: string | null = null;\n switch (val) {\n case YPosition.above:\n flexDirectionContainer = 'column';\n position = YPosition.below;\n height = '2px';\n widthServer = '100%';\n break;\n case YPosition.below:\n flexDirectionContainer = 'column-reverse';\n position = YPosition.above;\n height = '2px';\n widthServer = '100%';\n break;\n case XPosition.before:\n flexDirectionContainer = 'row';\n position = XPosition.after;\n width = '2px';\n heightServer = '100%';\n break;\n case XPosition.after:\n flexDirectionContainer = 'row-reverse';\n position = XPosition.before;\n width = '2px';\n heightServer = '100%';\n break;\n\n default:\n throw new Error(`LyTabs: value:${val} do not is valid for \\`headerPlacement\\``);\n }\n if (val === YPosition.above || val === YPosition.below) {\n flexDirection = 'row';\n } else {\n flexDirection = 'column';\n }\n return {\n [`&`]: {\n flexDirection: flexDirectionContainer\n },\n [`& .${this.classes.indicator},& .${this.classes.indicatorForServer}`]: {\n [position]: 0,\n height,\n width\n },\n [`.${this.classes.indicatorForServer}`]: {\n width: widthServer,\n height: heightServer\n },\n [`& .${this.classes.labels},& .${this.classes.contents}`]: { flexDirection },\n [`.${this.classes.contents}`]: { flexDirection }\n };\n },\n this.el.nativeElement,\n this._headerPlacementClass,\n STYLE_PRIORITY);\n }\n }\n get headerPlacement() {\n return this._headerPlacement;\n }\n\n @Input()\n set alignTabs(val: AlignTabs) {\n this._alignTabs = val;\n this._alignTabsClass = this.theme.addStyle(`lyAlignTabs: ${val}`,\n (\n val === 'stretch' ? {\n [`& .${this.classes.labels} .${this.classes.tab}`]: {\n flexBasis: 0,\n flexGrow: 1\n }\n } : {\n [`& .${this.classes.labels}`]: {\n justifyContent: val in AlignAlias ? AlignAlias[val] : val\n }\n }\n ),\n this.el.nativeElement,\n this._alignTabsClass,\n STYLE_PRIORITY);\n }\n get alignTabs() {\n return this._alignTabs;\n }\n\n @Input()\n set textColor(val: string) {\n this._textColor = val;\n this._textColorClass = this.theme.addStyle(`lyTabs.textColor:${val}`,\n (theme: ThemeVariables) => ({\n [`& .${this.classes.labelActive}`]: {\n color: theme.colorOf(val)\n }\n }),\n this.el.nativeElement,\n this._textColorClass,\n STYLE_PRIORITY);\n }\n get textColor() {\n return this._textColor;\n }\n\n @Input()\n set selectedIndex(val: number) {\n if (val !== this.selectedIndex) {\n this._selectedBeforeIndex = this._selectedIndex as number;\n this._selectedIndex = this._findIndex(val, 'auto');\n this._selectedBeforeTab = this._selectedTab!;\n if (this._isViewInitLoaded) {\n this._updateTabs();\n } else {\n Promise.resolve(null).then(() => this._updateTabs());\n }\n this.selectedIndexChange.emit(this._selectedIndex);\n this._markForCheck();\n }\n }\n get selectedIndex() {\n return this._selectedIndex;\n }\n\n @Output() selectedIndexChange: EventEmitter<any> = new EventEmitter();\n @ContentChildren(forwardRef(() => LyTab)) tabsList: QueryList<LyTab>;\n @ViewChildren('tabContent') tabContentList: QueryList<ElementRef<HTMLDivElement>>;\n\n constructor(\n private theme: LyTheme2,\n private renderer: Renderer2,\n private el: ElementRef,\n private cd: ChangeDetectorRef,\n private _viewportRuler: ViewportRuler,\n readonly sRenderer: StyleRenderer,\n private _platform: Platform,\n private _ngZone: NgZone\n ) {\n super(theme);\n this.setAutoContrast();\n this.animationDuration = 500;\n }\n\n ngOnChanges() {\n if (this._isViewInitLoaded) {\n this.updateStyle(this.tabsRef.nativeElement);\n }\n }\n\n ngOnInit() {\n if (this.selectedIndex == null) {\n this.selectedIndex = 0;\n }\n this.renderer.addClass(this.el.nativeElement, this.classes.root);\n const tabsIndicatorEl = this.tabsIndicator!.nativeElement;\n this.renderer.addClass(tabsIndicatorEl, this.classes.indicator);\n /** Set default Color */\n if (!this.indicatorColor && !this.bg && !this.textColor && !this.elevation) {\n this.indicatorColor = DEFAULT_INDICATOR_COLOR;\n this.bg = DEFAULT_BG;\n this.elevation = DEFAULT_ELEVATION;\n }\n if (!this.headerPlacement) {\n this.headerPlacement = DEFAULT_HEADER_PLACEMENT;\n }\n }\n\n ngAfterContentInit() {\n this._tabsSubscription = this.tabsList.changes.subscribe(() => {\n if (this._selectedIndex !== this.selectedIndexOnChange) {\n this.selectedIndex = this._findIndex(this.selectedIndex, this.selectedIndexOnChange);\n }\n this.cd.markForCheck();\n });\n }\n\n ngAfterViewInit() {\n this._isViewInitLoaded = true;\n this.tabsList.changes\n .pipe(\n switchMapTo(this._ngZone.onStable.asObservable().pipe(take(1))),\n takeUntil(this._destroy)\n )\n .subscribe(() => {\n this._updateTabs();\n });\n this._updateTabs();\n\n this.updateStyle(this.tabsRef.nativeElement);\n if (this._platform.isBrowser) {\n this._tabResizeSub = this._viewportRuler.change().subscribe(() => {\n if (this._selectedTab) {\n this._updateIndicator(this._selectedTab);\n this._selectedTab._tabLabel._updateTabScroll();\n }\n });\n }\n }\n\n ngOnDestroy() {\n this._destroy.next();\n this._destroy.complete();\n this._tabsSubscription.unsubscribe();\n if (this._tabResizeSub) {\n this._tabResizeSub.unsubscribe();\n }\n this._clearTimeouts();\n }\n\n private _findIndex(selectedIndex: number, index: string | number) {\n if (!this.tabsList) {\n return selectedIndex;\n }\n const indexOfLastTab = this.tabsList.length - 1;\n const currentIndex = typeof index === 'number' ? index : selectedIndex;\n return currentIndex < 0 ? 0 : currentIndex > indexOfLastTab ? indexOfLastTab : currentIndex;\n }\n\n _updateIndicator(currentTab: LyTab, beforeTab?: LyTab): void {\n if (currentTab) {\n if (beforeTab) {\n beforeTab._renderer.removeAttribute(beforeTab._tabIndicator.nativeElement, 'class');\n }\n const el = currentTab._el.nativeElement as HTMLElement;\n const rects = el.getBoundingClientRect();\n\n if (this.headerPlacement === XPosition.after || this.headerPlacement === XPosition.before) {\n this.renderer.setStyle(this.tabsIndicator!.nativeElement, 'height', `${rects.height}px`);\n this.renderer.setStyle(this.tabsIndicator!.nativeElement, 'top', `${el.offsetTop}px`);\n this.renderer.removeStyle(this.tabsIndicator!.nativeElement, 'width');\n this.renderer.removeStyle(this.tabsIndicator!.nativeElement, 'left');\n } else {\n this.renderer.setStyle(this.tabsIndicator!.nativeElement, 'width', `${rects.width}px`);\n this.renderer.setStyle(this.tabsIndicator!.nativeElement, 'left', `${el.offsetLeft}px`);\n this.renderer.removeStyle(this.tabsIndicator!.nativeElement, 'height');\n this.renderer.removeStyle(this.tabsIndicator!.nativeElement, 'top');\n }\n }\n }\n\n _markForCheck() {\n this.cd.markForCheck();\n }\n\n private _updateTabs() {\n if (!this._isViewInitLoaded) {\n return;\n }\n const tabsContents = this.tabContentList.toArray();\n const tabsForUpdate: [LyTab, HTMLDivElement, number][] = [];\n this.tabsList.forEach((tab, index) => {\n const tabContent = tabsContents[index].nativeElement;\n if (this.selectedIndex === index || this._selectedBeforeIndex === index) {\n tab._activeContent = true;\n tabsForUpdate.push([tab, tabContent, index]);\n } else {\n if (this.keepContent) {\n this.renderer.addClass(tabContent, this.classes.hiddenContent);\n }\n }\n });\n this._ngZone.run(() => {\n this._markForCheck();\n });\n this._ngZone.onStable.asObservable()\n .pipe(\n take(1),\n takeUntil(this._destroy)\n )\n .subscribe(() =>\n tabsForUpdate.forEach(parms =>\n this._updateContentStyle(...parms)));\n }\n\n\n loadTemplate(tab: LyTab, index: number): TemplatePortal<any> | null {\n tab.index = index;\n if (this.selectedIndex === tab.index) {\n // set 0 if is null\n this._selectedTab = tab;\n Promise.resolve(null).then(() => {\n // this._updateDynamicHeight(tabContent, index);\n if (this._platform.isBrowser) {\n this._updateIndicator(tab);\n } else {\n // for server\n const selectedBeforeTab = this._selectedBeforeTab;\n if (selectedBeforeTab) {\n this.renderer.removeClass(selectedBeforeTab._tabIndicator.nativeElement, this.classes.indicatorForServer);\n }\n this.renderer.addClass(this._selectedTab!._tabIndicator.nativeElement, this.classes.indicatorForServer);\n }\n });\n } else if (this._selectedBeforeIndex === index) {\n // Promise.resolve(null).then(() => this._updateDynamicHeight(tabContent, index));\n }\n tab._tabLabel._updateTabState();\n if (this.keepContent) {\n return tab.content;\n }\n if (tab._activeContent) {\n return tab.content;\n }\n return null;\n }\n\n private _getFlexDirection(val: LyTabsHeaderPlacement) {\n let flexDirection: string;\n if (val === YPosition.above || val === YPosition.below) {\n flexDirection = 'row';\n } else {\n flexDirection = 'column';\n }\n return flexDirection;\n }\n\n private _updateContentStyle(tab: LyTab, tabContent: HTMLDivElement, index: number) {\n if (this.selectedIndex === index || this._selectedBeforeIndex === index) {\n const prevIndex = this._selectedBeforeIndex;\n const currentIndex = this.selectedIndex;\n const dynamicHeight = this.dynamicHeight && this._platform.isBrowser && prevIndex != null;\n const contentInner = tabContent.firstElementChild as HTMLDivElement;\n const contentHeight = dynamicHeight ? contentInner.getBoundingClientRect().height : null;\n const contentHeightPrev = dynamicHeight\n ? this.tabContentList.toArray()[prevIndex].nativeElement.firstElementChild!.getBoundingClientRect().height\n : null;\n if (currentIndex === index) {\n this.renderer.addClass(tabContent, this.classes.contentActive);\n if (this.keepContent) {\n this.renderer.removeClass(tabContent, this.classes.hiddenContent);\n }\n } else {\n this.renderer.removeClass(tabContent, this.classes.contentActive);\n }\n\n if (prevIndex == null || !this._platform.isBrowser || prevIndex === currentIndex) {\n return;\n }\n\n this._clearTimeouts(index);\n const { before } = this._theme.variables;\n const isDirRow = this.headerPlacement === XPosition.after\n || this.headerPlacement === XPosition.before;\n const x = before === 'left'\n ? 100\n : isDirRow\n ? 100\n : -100;\n if (currentIndex === index) {\n const sign = prevIndex < index ? 1 : -1;\n const pos = isDirRow ? `0,${x * sign}%` : `${x * sign}%, 0`;\n tabContent.style.overflow = 'hidden';\n if (dynamicHeight) {\n tabContent.style.height = `${contentHeightPrev}px`;\n }\n tabContent.style.transform = `translate3d(${pos}, 0)`;\n enforceStyleRecalculation(tabContent);\n tabContent.style.transition = `${this.animationDuration}ms cubic-bezier(0.35, 0, 0.25, 1)`;\n tabContent.style.transform = `translate3d(0%, 0, 0)`;\n if (dynamicHeight) {\n tabContent.style.height = `${contentHeight}px`;\n }\n } else {\n const sign = currentIndex < index ? 1 : -1;\n const pos = isDirRow ? `0,${x * sign}%` : `${x * sign}%, 0`;\n tabContent.style.overflow = 'hidden';\n tabContent.style.transform = `translate3d(0%, 0, 0)`;\n enforceStyleRecalculation(tabContent);\n tabContent.style.transition = `${this.animationDuration}ms cubic-bezier(0.35, 0, 0.25, 1)`;\n tabContent.style.transform = `translate3d(${pos}, 0)`;\n }\n this._runTimeoutOutsideZone(index, () => {\n tabContent.style.transform = ``;\n tabContent.style.transition = ``;\n tabContent.style.overflow = ``;\n if (dynamicHeight) {\n tabContent.style.height = ``;\n }\n if (currentIndex !== index) {\n if (this.keepContent) {\n this.renderer.addClass(tabContent, this.classes.hiddenContent);\n }\n tab._activeContent = false;\n this._ngZone.run(() => this._markForCheck());\n }\n }, this.animationDuration);\n }\n }\n\n /** Runs a timeout outside of the Angular zone to avoid triggering the change detection. */\n private _runTimeoutOutsideZone(index: number, fn: () => void, delay = 0) {\n this._ngZone.runOutsideAngular(() => this._timeoutIds[`_${index}`] = window.setTimeout(fn, delay));\n }\n\n private _clearTimeouts(tabIndex?: number) {\n if (tabIndex != null) {\n const key = `_${tabIndex}`;\n if (this._timeoutIds[key] != null) {\n window.clearTimeout(this._timeoutIds[key]);\n delete this._timeoutIds[key];\n }\n } else {\n Object.keys(this._timeoutIds)\n .forEach(key => window.clearTimeout(this._timeoutIds[`_${key}`]));\n }\n }\n}\n\n@Component({\n selector: 'ly-tab',\n templateUrl: './tab.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n StyleRenderer\n ],\n standalone: false\n})\nexport class LyTab implements OnInit {\n /** Current tab index */\n index: number;\n _isBrowser = this._platform.isBrowser;\n @ContentChild(LyTabContent, { read: TemplateRef, static: true }) _templateRefLazy: TemplateRef<LyTabContent>;\n @ViewChild('_templateNgContent', { static: true }) _templateRef: TemplateRef<any>;\n @ViewChild('tabIndicator') _tabIndicator: ElementRef;\n @ContentChild(forwardRef(() => LyTabLabel), { static: true }) _tabLabel: LyTabLabel & { };\n\n /** Portal that will be the hosted content of the tab */\n private _contentPortal: TemplatePortal | null = null;\n\n /** @docs-private */\n get content(): TemplatePortal | null {\n return this._contentPortal;\n }\n\n _activeContent: boolean;\n\n constructor(\n private _tabs: LyTabs,\n public _renderer: Renderer2,\n public _el: ElementRef,\n readonly sRenderer: StyleRenderer,\n private _platform: Platform,\n private _viewContainerRef: ViewContainerRef,\n ) { }\n\n ngOnInit() {\n this._renderer.addClass(this._el.nativeElement, this._tabs.classes.tab);\n this._contentPortal = new TemplatePortal(\n this._templateRefLazy || this._templateRef,\n this._viewContainerRef\n );\n }\n}\n\n@Component({\n selector: 'button[ly-tab-label], a[ly-tab-label]',\n templateUrl: 'tab-label.html',\n inputs: [\n 'bg',\n 'color',\n 'raised',\n 'disabled',\n 'outlined',\n 'elevation',\n 'shadowColor',\n 'disableRipple'\n ],\n providers: [\n StyleRenderer\n ],\n standalone: false\n})\nexport class LyTabLabel extends LyButton implements OnInit, AfterViewInit {\n private _activeTabStyle: boolean;\n private _active: boolean;\n _isBrowser: boolean;\n disableRipple: boolean;\n disabled: boolean;\n\n @Input()\n get active() {\n return this._active;\n }\n set active(val: BooleanInput) {\n const newVal = coerceBooleanProperty(val);\n if (newVal && val !== this.active) {\n Promise.resolve(null).then(() => this._tabs.selectedIndex = this._tab.index);\n }\n }\n\n @ViewChild('rippleContainer') _rippleContainer: ElementRef;\n @HostListener('click') _onClickTab() {\n if (!this.disabled) {\n this._tabs.selectedIndex = this._tab.index;\n }\n }\n\n constructor(\n _el: ElementRef,\n _renderer: Renderer2,\n _theme: LyTheme2,\n _ngZone: NgZone,\n _rippleService: LyRippleService,\n _focusMonitor: FocusMonitor,\n readonly sRenderer: StyleRenderer,\n @Optional() private _tab: LyTab,\n @Optional() private _tabs: LyTabs,\n platform: Platform\n ) {\n super(_el, _renderer, _theme, _ngZone, _rippleService, _focusMonitor, sRenderer, platform, null as any);\n this._isBrowser = platform.isBrowser;\n }\n\n ngOnInit() {\n this._renderer.addClass(this._el.nativeElement, this._tabs.classes.label);\n // set default disable ripple\n if (this.disableRipple == null) {\n this.disableRipple = DEFAULT_DISABLE_RIPPLE;\n }\n }\n\n _updateTabState() {\n // update styles for active tab\n if (this._tabs._selectedIndex === this._tab.index) {\n if (!this._activeTabStyle) {\n this._activeTabStyle = true;\n this._renderer.addClass(this._el.nativeElement, this._tabs.classes.labelActive);\n this._updateTabScroll();\n }\n } else if (this._activeTabStyle) {\n this._activeTabStyle = false;\n this._renderer.removeClass(this._el.nativeElement, this._tabs.classes.labelActive);\n }\n }\n\n _updateTabScroll() {\n if (this._isBrowser && this._tabs.scrollable) {\n const tab = this._tab._el.nativeElement as HTMLElement;\n const tabContainer = this._tabs.tabsRef.nativeElement as HTMLElement;\n if (tabContainer.scrollWidth !== tabContainer.offsetWidth) {\n const dir = (this as any)._theme.variables.direction;\n const max = tabContainer.scrollWidth - tabContainer.offsetWidth;\n const offsetBefore = dir === Dir.rtl\n ? max + tab.offsetLeft\n : tab.offsetLeft;\n const l = offsetBefore + tab.offsetWidth / 2 - tabContainer.offsetWidth / 2;\n const newVal = l >= max ? max : l <= 0 ? 0 : l;\n scrollWithAnimation(this._tabs.tabsRef.nativeElement, newVal, 350, 'x');\n }\n }\n }\n\n ngAfterViewInit() { }\n}\n\n/** Enforces a style recalculation of a DOM element by computing its styles. */\nfunction enforceStyleRecalculation(element: HTMLElement) {\n window.getComputedStyle(element).getPropertyValue('opacity');\n}\n","<div #tabs [className]=\"classes.labelsContainer\">\n <div [className]=\"classes.labels\">\n <ng-content></ng-content>\n <span #tabsIndicator></span>\n </div>\n</div>\n<div [className]=\"classes.contentContainer\">\n <div [className]=\"classes.contents\" #tabContents>\n <div #tabContent *ngFor=\"let item of tabsList; index as x\" [className]=\"classes.content\">\n <div [className]=\"classes.contentInner\">\n <ng-template\n [cdkPortalOutlet]=\"loadTemplate(item, x)\"\n ></ng-template>\n </div>\n </div>\n </div>\n</div>\n","<ng-content select=\"ly-tab-label\"></ng-content>\n<ng-content select=\"[ly-tab-label]\"></ng-content>\n<ng-content select=\"[ly-tab-label-native]\"></ng-content>\n<div></div>\n<span *ngIf=\"!_isBrowser\" #tabIndicator></span>\n<ng-template #_templateNgContent>\n <ng-content></ng-content>\n</ng-template>","<span [className]=\"classes.content\">\n <ng-content></ng-content>\n</span>\n<div *ngIf=\"_isBrowser\" #rippleContainer [className]=\"_rippleService.classes.container\"></div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NgTranscludeModule, LyCommonModule, LyThemeModule } from '@alyle/ui';\nimport { LyTabs, LyTabLabel, LyTab } from './tabs';\nimport { LyTabContent } from './tab-content.directive';\nimport { PortalModule } from '@angular/cdk/portal';\n\n@NgModule({\n imports: [\n LyThemeModule,\n CommonModule,\n LyCommonModule,\n NgTranscludeModule,\n PortalModule\n ],\n exports: [LyCommonModule, LyTabs, LyTab, LyTabLabel, LyTabContent],\n declarations: [LyTabs, LyTab, LyTabLabel, LyTabContent]\n})\nexport class LyTabsModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}