1 | {"version":3,"file":"tabs.js","sources":["../../../../../../src/material/tabs/ink-bar.ts","../../../../../../src/material/tabs/tab-content.ts","../../../../../../src/material/tabs/tab-label.ts","../../../../../../src/material/tabs/tab.ts","../../../../../../src/material/tabs/tabs-animations.ts","../../../../../../src/material/tabs/tab-body.ts","../../../../../../src/material/tabs/tab-config.ts","../../../../../../src/material/tabs/tab-group.ts","../../../../../../src/material/tabs/tab-label-wrapper.ts","../../../../../../src/material/tabs/paginated-tab-header.ts","../../../../../../src/material/tabs/tab-header.ts","../../../../../../src/material/tabs/tab-nav-bar/tab-nav-bar.ts","../../../../../../src/material/tabs/tabs-module.ts","../../../../../../src/material/tabs/tab-nav-bar/index.ts","../../../../../../src/material/tabs/public-api.ts","../../../../../../src/material/tabs/index.ts"],"names":["observableOf"],"mappings":"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","sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Directive, ElementRef, Inject, InjectionToken, NgZone, Optional} from '@angular/core';\nimport {ANIMATION_MODULE_TYPE} from '@angular/platform-browser/animations';\n\n\n/**\n * Interface for a a MatInkBar positioner method, defining the positioning and width of the ink\n * bar in a set of tabs.\n */\nexport interface _MatInkBarPositioner {\n (element: HTMLElement): { left: string, width: string };\n}\n\n/** Injection token for the MatInkBar's Positioner. */\nexport const _MAT_INK_BAR_POSITIONER =\n new InjectionToken<_MatInkBarPositioner>('MatInkBarPositioner', {\n providedIn: 'root',\n factory: _MAT_INK_BAR_POSITIONER_FACTORY\n });\n\n/**\n * The default positioner function for the MatInkBar.\n * @docs-private\n */\nexport function _MAT_INK_BAR_POSITIONER_FACTORY(): _MatInkBarPositioner {\n const method = (element: HTMLElement) => ({\n left: element ? (element.offsetLeft || 0) + 'px' : '0',\n width: element ? (element.offsetWidth || 0) + 'px' : '0',\n });\n\n return method;\n}\n\n/**\n * The ink-bar is used to display and animate the line underneath the current active tab label.\n * @docs-private\n */\n@Directive({\n selector: 'mat-ink-bar',\n host: {\n 'class': 'mat-ink-bar',\n '[class._mat-animation-noopable]': `_animationMode === 'NoopAnimations'`,\n },\n})\nexport class MatInkBar {\n constructor(\n private _elementRef: ElementRef<HTMLElement>,\n private _ngZone: NgZone,\n @Inject(_MAT_INK_BAR_POSITIONER) private _inkBarPositioner: _MatInkBarPositioner,\n @Optional() @Inject(ANIMATION_MODULE_TYPE) public _animationMode?: string) { }\n\n /**\n * Calculates the styles from the provided element in order to align the ink-bar to that element.\n * Shows the ink bar if previously set as hidden.\n * @param element\n */\n alignToElement(element: HTMLElement) {\n this.show();\n\n if (typeof requestAnimationFrame !== 'undefined') {\n this._ngZone.runOutsideAngular(() => {\n requestAnimationFrame(() => this._setStyles(element));\n });\n } else {\n this._setStyles(element);\n }\n }\n\n /** Shows the ink bar. */\n show(): void {\n this._elementRef.nativeElement.style.visibility = 'visible';\n }\n\n /** Hides the ink bar. */\n hide(): void {\n this._elementRef.nativeElement.style.visibility = 'hidden';\n }\n\n /**\n * Sets the proper styles to the ink bar element.\n * @param element\n */\n private _setStyles(element: HTMLElement) {\n const positions = this._inkBarPositioner(element);\n const inkBar: HTMLElement = this._elementRef.nativeElement;\n\n inkBar.style.left = positions.left;\n inkBar.style.width = positions.width;\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Directive, InjectionToken, TemplateRef} from '@angular/core';\n\n/**\n * Injection token that can be used to reference instances of `MatTabContent`. It serves as\n * alternative token to the actual `MatTabContent` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nexport const MAT_TAB_CONTENT = new InjectionToken<MatTabContent>('MatTabContent');\n\n/** Decorates the `ng-template` tags and reads out the template from it. */\n@Directive({\n selector: '[matTabContent]',\n providers: [{provide: MAT_TAB_CONTENT, useExisting: MatTabContent}],\n})\nexport class MatTabContent {\n constructor(\n /** Content for the tab. */ public template: TemplateRef<any>) {}\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {\n Directive,\n Inject,\n InjectionToken,\n Optional,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\nimport {CdkPortal} from '@angular/cdk/portal';\n\n/**\n * Injection token that can be used to reference instances of `MatTabLabel`. It serves as\n * alternative token to the actual `MatTabLabel` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nexport const MAT_TAB_LABEL = new InjectionToken<MatTabLabel>('MatTabLabel');\n\n/**\n * Used to provide a tab label to a tab without causing a circular dependency.\n * @docs-private\n */\n export const MAT_TAB = new InjectionToken<any>('MAT_TAB');\n\n/** Used to flag tab labels for use with the portal directive */\n@Directive({\n selector: '[mat-tab-label], [matTabLabel]',\n providers: [{provide: MAT_TAB_LABEL, useExisting: MatTabLabel}],\n})\nexport class MatTabLabel extends CdkPortal {\n constructor(\n templateRef: TemplateRef<any>,\n viewContainerRef: ViewContainerRef,\n @Inject(MAT_TAB) @Optional() public _closestTab: any) {\n super(templateRef, viewContainerRef);\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {BooleanInput} from '@angular/cdk/coercion';\nimport {TemplatePortal} from '@angular/cdk/portal';\nimport {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewContainerRef,\n ViewEncapsulation,\n InjectionToken,\n Inject,\n Optional,\n} from '@angular/core';\nimport {CanDisable, mixinDisabled} from '@angular/material/core';\nimport {Subject} from 'rxjs';\nimport {MAT_TAB_CONTENT} from './tab-content';\nimport {MAT_TAB_LABEL, MatTabLabel, MAT_TAB} from './tab-label';\n\n\n// Boilerplate for applying mixins to MatTab.\n/** @docs-private */\nconst _MatTabBase = mixinDisabled(class {});\n\n/**\n * Used to provide a tab group to a tab without causing a circular dependency.\n * @docs-private\n */\nexport const MAT_TAB_GROUP = new InjectionToken<any>('MAT_TAB_GROUP');\n\n@Component({\n selector: 'mat-tab',\n templateUrl: 'tab.html',\n inputs: ['disabled'],\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matTab',\n providers: [{provide: MAT_TAB, useExisting: MatTab}]\n})\nexport class MatTab extends _MatTabBase implements OnInit, CanDisable, OnChanges, OnDestroy {\n /** Content for the tab label given by `<ng-template mat-tab-label>`. */\n @ContentChild(MAT_TAB_LABEL)\n get templateLabel(): MatTabLabel { return this._templateLabel; }\n set templateLabel(value: MatTabLabel) { this._setTemplateLabelInput(value); }\n protected _templateLabel: MatTabLabel;\n\n /**\n * Template provided in the tab content that will be used if present, used to enable lazy-loading\n */\n @ContentChild(MAT_TAB_CONTENT, {read: TemplateRef, static: true})\n _explicitContent: TemplateRef<any>;\n\n /** Template inside the MatTab view that contains an `<ng-content>`. */\n @ViewChild(TemplateRef, {static: true}) _implicitContent: TemplateRef<any>;\n\n /** Plain text label for the tab, used when there is no template label. */\n @Input('label') textLabel: string = '';\n\n /** Aria label for the tab. */\n @Input('aria-label') ariaLabel: string;\n\n /**\n * Reference to the element that the tab is labelled by.\n * Will be cleared if `aria-label` is set at the same time.\n */\n @Input('aria-labelledby') ariaLabelledby: string;\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 /** Emits whenever the internal state of the tab changes. */\n readonly _stateChanges = new Subject<void>();\n\n /**\n * The relatively indexed position where 0 represents the center, negative is left, and positive\n * represents the right.\n */\n position: number | null = null;\n\n /**\n * The initial relatively index origin of the tab if it was created and selected after there\n * was already a selected tab. Provides context of what position the tab should originate from.\n */\n origin: number | null = null;\n\n /**\n * Whether the tab is currently active.\n */\n isActive = false;\n\n constructor(\n private _viewContainerRef: ViewContainerRef,\n @Inject(MAT_TAB_GROUP) @Optional() public _closestTabGroup: any) {\n super();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.hasOwnProperty('textLabel') || changes.hasOwnProperty('disabled')) {\n this._stateChanges.next();\n }\n }\n\n ngOnDestroy(): void {\n this._stateChanges.complete();\n }\n\n ngOnInit(): void {\n this._contentPortal = new TemplatePortal(\n this._explicitContent || this._implicitContent, this._viewContainerRef);\n }\n\n /**\n * This has been extracted to a util because of TS 4 and VE.\n * View Engine doesn't support property rename inheritance.\n * TS 4.0 doesn't allow properties to override accessors or vice-versa.\n * @docs-private\n */\n protected _setTemplateLabelInput(value: MatTabLabel|undefined) {\n // Only update the label if the query managed to find one. This works around an issue where a\n // user may have manually set `templateLabel` during creation mode, which would then get\n // clobbered by `undefined` when the query resolves. Also note that we check that the closest\n // tab matches the current one so that we don't pick up labels from nested tabs.\n if (value && value._closestTab === this) {\n this._templateLabel = value;\n }\n }\n\n static ngAcceptInputType_disabled: BooleanInput;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {\n animate,\n state,\n style,\n transition,\n trigger,\n AnimationTriggerMetadata,\n} from '@angular/animations';\n\n/**\n * Animations used by the Material tabs.\n * @docs-private\n */\nexport const matTabsAnimations: {\n readonly translateTab: AnimationTriggerMetadata;\n} = {\n /** Animation translates a tab along the X axis. */\n translateTab: trigger('translateTab', [\n // Note: transitions to `none` instead of 0, because some browsers might blur the content.\n state('center, void, left-origin-center, right-origin-center', style({transform: 'none'})),\n\n // If the tab is either on the left or right, we additionally add a `min-height` of 1px\n // in order to ensure that the element has a height before its state changes. This is\n // necessary because Chrome does seem to skip the transition in RTL mode if the element does\n // not have a static height and is not rendered. See related issue: #9465\n state('left', style({transform: 'translate3d(-100%, 0, 0)', minHeight: '1px'})),\n state('right', style({transform: 'translate3d(100%, 0, 0)', minHeight: '1px'})),\n\n transition('* => left, * => right, left => center, right => center',\n animate('{{animationDuration}} cubic-bezier(0.35, 0, 0.25, 1)')),\n transition('void => left-origin-center', [\n style({transform: 'translate3d(-100%, 0, 0)'}),\n animate('{{animationDuration}} cubic-bezier(0.35, 0, 0.25, 1)')\n ]),\n transition('void => right-origin-center', [\n style({transform: 'translate3d(100%, 0, 0)'}),\n animate('{{animationDuration}} cubic-bezier(0.35, 0, 0.25, 1)')\n ])\n ])\n};\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {\n Component,\n ChangeDetectorRef,\n Input,\n Inject,\n Output,\n EventEmitter,\n OnDestroy,\n OnInit,\n ElementRef,\n Directive,\n Optional,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n ComponentFactoryResolver,\n ViewContainerRef,\n forwardRef,\n ViewChild,\n} from '@angular/core';\nimport {AnimationEvent} from '@angular/animations';\nimport {TemplatePortal, CdkPortalOutlet} from '@angular/cdk/portal';\nimport {Directionality, Direction} from '@angular/cdk/bidi';\nimport {DOCUMENT} from '@angular/common';\nimport {Subscription, Subject} from 'rxjs';\nimport {matTabsAnimations} from './tabs-animations';\nimport {startWith, distinctUntilChanged} from 'rxjs/operators';\n\n/**\n * These position states are used internally as animation states for the tab body. Setting the\n * position state to left, right, or center will transition the tab body from its current\n * position to its respective state. If there is not current position (void, in the case of a new\n * tab body), then there will be no transition animation to its state.\n *\n * In the case of a new tab body that should immediately be centered with an animating transition,\n * then left-origin-center or right-origin-center can be used, which will use left or right as its\n * psuedo-prior state.\n */\nexport type MatTabBodyPositionState =\n 'left' | 'center' | 'right' | 'left-origin-center' | 'right-origin-center';\n\n/**\n * The origin state is an internally used state that is set on a new tab body indicating if it\n * began to the left or right of the prior selected index. For example, if the selected index was\n * set to 1, and a new tab is created and selected at index 2, then the tab body would have an\n * origin of right because its index was greater than the prior selected index.\n */\nexport type MatTabBodyOriginState = 'left' | 'right';\n\n/**\n * The portal host directive for the contents of the tab.\n * @docs-private\n */\n@Directive({\n selector: '[matTabBodyHost]'\n})\nexport class MatTabBodyPortal extends CdkPortalOutlet implements OnInit, OnDestroy {\n /** Subscription to events for when the tab body begins centering. */\n private _centeringSub = Subscription.EMPTY;\n /** Subscription to events for when the tab body finishes leaving from center position. */\n private _leavingSub = Subscription.EMPTY;\n\n constructor(\n componentFactoryResolver: ComponentFactoryResolver,\n viewContainerRef: ViewContainerRef,\n @Inject(forwardRef(() => MatTabBody)) private _host: MatTabBody,\n @Inject(DOCUMENT) _document: any) {\n super(componentFactoryResolver, viewContainerRef, _document);\n }\n\n /** Set initial visibility or set up subscription for changing visibility. */\n override ngOnInit(): void {\n super.ngOnInit();\n\n this._centeringSub = this._host._beforeCentering\n .pipe(startWith(this._host._isCenterPosition(this._host._position)))\n .subscribe((isCentering: boolean) => {\n if (isCentering && !this.hasAttached()) {\n this.attach(this._host._content);\n }\n });\n\n this._leavingSub = this._host._afterLeavingCenter.subscribe(() => {\n this.detach();\n });\n }\n\n /** Clean up centering subscription. */\n override ngOnDestroy(): void {\n super.ngOnDestroy();\n this._centeringSub.unsubscribe();\n this._leavingSub.unsubscribe();\n }\n}\n\n/**\n * Base class with all of the `MatTabBody` functionality.\n * @docs-private\n */\n@Directive()\nexport abstract class _MatTabBodyBase implements OnInit, OnDestroy {\n /** Current position of the tab-body in the tab-group. Zero means that the tab is visible. */\n private _positionIndex: number;\n\n /** Subscription to the directionality change observable. */\n private _dirChangeSubscription = Subscription.EMPTY;\n\n /** Tab body position state. Used by the animation trigger for the current state. */\n _position: MatTabBodyPositionState;\n\n /** Emits when an animation on the tab is complete. */\n readonly _translateTabComplete = new Subject<AnimationEvent>();\n\n /** Event emitted when the tab begins to animate towards the center as the active tab. */\n @Output() readonly _onCentering: EventEmitter<number> = new EventEmitter<number>();\n\n /** Event emitted before the centering of the tab begins. */\n @Output() readonly _beforeCentering: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n /** Event emitted before the centering of the tab begins. */\n @Output() readonly _afterLeavingCenter: EventEmitter<void> = new EventEmitter<void>();\n\n /** Event emitted when the tab completes its animation towards the center. */\n @Output() readonly _onCentered: EventEmitter<void> = new EventEmitter<void>(true);\n\n /** The portal host inside of this container into which the tab body content will be loaded. */\n abstract _portalHost: CdkPortalOutlet;\n\n /** The tab body content to display. */\n @Input('content') _content: TemplatePortal;\n\n /** Position that will be used when the tab is immediately becoming visible after creation. */\n @Input() origin: number | null;\n\n // Note that the default value will always be overwritten by `MatTabBody`, but we need one\n // anyway to prevent the animations module from throwing an error if the body is used on its own.\n /** Duration for the tab's animation. */\n @Input() animationDuration: string = '500ms';\n\n /** The shifted index position of the tab body, where zero represents the active center tab. */\n @Input()\n set position(position: number) {\n this._positionIndex = position;\n this._computePositionAnimationState();\n }\n\n constructor(private _elementRef: ElementRef<HTMLElement>,\n @Optional() private _dir: Directionality,\n changeDetectorRef: ChangeDetectorRef) {\n\n if (_dir) {\n this._dirChangeSubscription = _dir.change.subscribe((dir: Direction) => {\n this._computePositionAnimationState(dir);\n changeDetectorRef.markForCheck();\n });\n }\n\n // Ensure that we get unique animation events, because the `.done` callback can get\n // invoked twice in some browsers. See https://github.com/angular/angular/issues/24084.\n this._translateTabComplete.pipe(distinctUntilChanged((x, y) => {\n return x.fromState === y.fromState && x.toState === y.toState;\n })).subscribe(event => {\n // If the transition to the center is complete, emit an event.\n if (this._isCenterPosition(event.toState) && this._isCenterPosition(this._position)) {\n this._onCentered.emit();\n }\n\n if (this._isCenterPosition(event.fromState) && !this._isCenterPosition(this._position)) {\n this._afterLeavingCenter.emit();\n }\n });\n }\n\n /**\n * After initialized, check if the content is centered and has an origin. If so, set the\n * special position states that transition the tab from the left or right before centering.\n */\n ngOnInit() {\n if (this._position == 'center' && this.origin != null) {\n this._position = this._computePositionFromOrigin(this.origin);\n }\n }\n\n ngOnDestroy() {\n this._dirChangeSubscription.unsubscribe();\n this._translateTabComplete.complete();\n }\n\n _onTranslateTabStarted(event: AnimationEvent): void {\n const isCentering = this._isCenterPosition(event.toState);\n this._beforeCentering.emit(isCentering);\n if (isCentering) {\n this._onCentering.emit(this._elementRef.nativeElement.clientHeight);\n }\n }\n\n /** The text direction of the containing app. */\n _getLayoutDirection(): Direction {\n return this._dir && this._dir.value === 'rtl' ? 'rtl' : 'ltr';\n }\n\n /** Whether the provided position state is considered center, regardless of origin. */\n _isCenterPosition(position: MatTabBodyPositionState|string): boolean {\n return position == 'center' ||\n position == 'left-origin-center' ||\n position == 'right-origin-center';\n }\n\n /** Computes the position state that will be used for the tab-body animation trigger. */\n private _computePositionAnimationState(dir: Direction = this._getLayoutDirection()) {\n if (this._positionIndex < 0) {\n this._position = dir == 'ltr' ? 'left' : 'right';\n } else if (this._positionIndex > 0) {\n this._position = dir == 'ltr' ? 'right' : 'left';\n } else {\n this._position = 'center';\n }\n }\n\n /**\n * Computes the position state based on the specified origin position. This is used if the\n * tab is becoming visible immediately after creation.\n */\n private _computePositionFromOrigin(origin: number): MatTabBodyPositionState {\n const dir = this._getLayoutDirection();\n\n if ((dir == 'ltr' && origin <= 0) || (dir == 'rtl' && origin > 0)) {\n return 'left-origin-center';\n }\n\n return 'right-origin-center';\n }\n}\n\n/**\n * Wrapper for the contents of a tab.\n * @docs-private\n */\n@Component({\n selector: 'mat-tab-body',\n templateUrl: 'tab-body.html',\n styleUrls: ['tab-body.css'],\n encapsulation: ViewEncapsulation.None,\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n animations: [matTabsAnimations.translateTab],\n host: {\n 'class': 'mat-tab-body',\n }\n})\nexport class MatTabBody extends _MatTabBodyBase {\n @ViewChild(CdkPortalOutlet) _portalHost: CdkPortalOutlet;\n\n constructor(elementRef: ElementRef<HTMLElement>,\n @Optional() dir: Directionality,\n changeDetectorRef: ChangeDetectorRef) {\n super(elementRef, dir, changeDetectorRef);\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {InjectionToken} from '@angular/core';\n\n/** Object that can be used to configure the default options for the tabs module. */\nexport interface MatTabsConfig {\n /** Duration for the tab animation. Must be a valid CSS value (e.g. 600ms). */\n animationDuration?: string;\n\n /**\n * Whether pagination should be disabled. This can be used to avoid unnecessary\n * layout recalculations if it's known that pagination won't be required.\n */\n disablePagination?: boolean;\n\n /**\n * Whether the ink bar should fit its width to the size of the tab label content.\n * This only applies to the MDC-based tabs.\n */\n fitInkBarToContent?: boolean;\n\n /** Whether the tab group should grow to the size of the active tab. */\n dynamicHeight?: boolean;\n\n /** `tabindex` to be set on the inner element that wraps the tab content. */\n contentTabIndex?: number;\n}\n\n/** Injection token that can be used to provide the default options the tabs module. */\nexport const MAT_TABS_CONFIG = new InjectionToken<MatTabsConfig>('MAT_TABS_CONFIG');\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {\n BooleanInput,\n coerceBooleanProperty,\n coerceNumberProperty,\n NumberInput\n} from '@angular/cdk/coercion';\nimport {\n AfterContentChecked,\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n Directive,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n OnDestroy,\n Optional,\n Output,\n QueryList,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {FocusOrigin} from '@angular/cdk/a11y';\nimport {\n CanColor,\n CanDisableRipple,\n mixinColor,\n mixinDisableRipple,\n ThemePalette,\n} from '@angular/material/core';\nimport {ANIMATION_MODULE_TYPE} from '@angular/platform-browser/animations';\nimport {merge, Subscription} from 'rxjs';\nimport {startWith} from 'rxjs/operators';\nimport {MAT_TAB_GROUP, MatTab} from './tab';\nimport {MAT_TABS_CONFIG, MatTabsConfig} from './tab-config';\n\n\n/** Used to generate unique ID's for each tab component */\nlet nextId = 0;\n\n/** A simple change event emitted on focus or selection changes. */\nexport class MatTabChangeEvent {\n /** Index of the currently-selected tab. */\n index: number;\n /** Reference to the currently-selected tab. */\n tab: MatTab;\n}\n\n/** Possible positions for the tab header. */\nexport type MatTabHeaderPosition = 'above' | 'below';\n\n// Boilerplate for applying mixins to MatTabGroup.\n/** @docs-private */\nconst _MatTabGroupMixinBase = mixinColor(mixinDisableRipple(class {\n constructor(public _elementRef: ElementRef) {}\n}), 'primary');\n\ninterface MatTabGroupBaseHeader {\n _alignInkBarToSelectedTab: () => void;\n focusIndex: number;\n}\n\n/**\n * Base class with all of the `MatTabGroupBase` functionality.\n * @docs-private\n */\n@Directive()\nexport abstract class _MatTabGroupBase extends _MatTabGroupMixinBase implements AfterContentInit,\n AfterContentChecked, OnDestroy, CanColor, CanDisableRipple {\n\n /**\n * All tabs inside the tab group. This includes tabs that belong to groups that are nested\n * inside the current one. We filter out only the tabs that belong to this group in `_tabs`.\n */\n abstract _allTabs: QueryList<MatTab>;\n abstract _tabBodyWrapper: ElementRef;\n abstract _tabHeader: MatTabGroupBaseHeader;\n\n /** All of the tabs that belong to the group. */\n _tabs: QueryList<MatTab> = new QueryList<MatTab>();\n\n /** The tab index that should be selected after the content has been checked. */\n private _indexToSelect: number | null = 0;\n\n /** Snapshot of the height of the tab body wrapper before another tab is activated. */\n private _tabBodyWrapperHeight: number = 0;\n\n /** Subscription to tabs being added/removed. */\n private _tabsSubscription = Subscription.EMPTY;\n\n /** Subscription to changes in the tab labels. */\n private _tabLabelSubscription = Subscription.EMPTY;\n\n /** Whether the tab group should grow to the size of the active tab. */\n @Input()\n get dynamicHeight(): boolean { return this._dynamicHeight; }\n set dynamicHeight(value: boolean) { this._dynamicHeight = coerceBooleanProperty(value); }\n private _dynamicHeight: boolean;\n\n /** The index of the active tab. */\n @Input()\n get selectedIndex(): number | null { return this._selectedIndex; }\n set selectedIndex(value: number | null) {\n this._indexToSelect = coerceNumberProperty(value, null);\n }\n private _selectedIndex: number | null = null;\n\n /** Position of the tab header. */\n @Input() headerPosition: MatTabHeaderPosition = 'above';\n\n /** Duration for the tab animation. Will be normalized to milliseconds if no units are set. */\n @Input()\n get animationDuration(): string { return this._animationDuration; }\n set animationDuration(value: string) {\n this._animationDuration = /^\\d+$/.test(value) ? value + 'ms' : value;\n }\n private _animationDuration: string;\n\n /**\n * `tabindex` to be set on the inner element that wraps the tab content. Can be used for improved\n * accessibility when the tab does not have focusable elements or if it has scrollable content.\n * The `tabindex` will be removed automatically for inactive tabs.\n * Read more at https://www.w3.org/TR/wai-aria-practices/examples/tabs/tabs-2/tabs.html\n */\n @Input()\n get contentTabIndex(): number | null { return this._contentTabIndex; }\n set contentTabIndex(value: number | null) {\n this._contentTabIndex = coerceNumberProperty(value, null);\n }\n private _contentTabIndex: number | null;\n\n /**\n * Whether pagination should be disabled. This can be used to avoid unnecessary\n * layout recalculations if it's known that pagination won't be required.\n */\n @Input()\n disablePagination: boolean;\n\n /** Background color of the tab group. */\n @Input()\n get backgroundColor(): ThemePalette { return this._backgroundColor; }\n set backgroundColor(value: ThemePalette) {\n const nativeElement: HTMLElement = this._elementRef.nativeElement;\n\n nativeElement.classList.remove(`mat-background-${this.backgroundColor}`);\n\n if (value) {\n nativeElement.classList.add(`mat-background-${value}`);\n }\n\n this._backgroundColor = value;\n }\n private _backgroundColor: ThemePalette;\n\n /** Output to enable support for two-way binding on `[(selectedIndex)]` */\n @Output() readonly selectedIndexChange: EventEmitter<number> = new EventEmitter<number>();\n\n /** Event emitted when focus has changed within a tab group. */\n @Output() readonly focusChange: EventEmitter<MatTabChangeEvent> =\n new EventEmitter<MatTabChangeEvent>();\n\n /** Event emitted when the body animation has completed */\n @Output() readonly animationDone: EventEmitter<void> = new EventEmitter<void>();\n\n /** Event emitted when the tab selection has changed. */\n @Output() readonly selectedTabChange: EventEmitter<MatTabChangeEvent> =\n new EventEmitter<MatTabChangeEvent>(true);\n\n private _groupId: number;\n\n constructor(elementRef: ElementRef,\n protected _changeDetectorRef: ChangeDetectorRef,\n @Inject(MAT_TABS_CONFIG) @Optional() defaultConfig?: MatTabsConfig,\n @Optional() @Inject(ANIMATION_MODULE_TYPE) public _animationMode?: string) {\n super(elementRef);\n this._groupId = nextId++;\n this.animationDuration = defaultConfig && defaultConfig.animationDuration ?\n defaultConfig.animationDuration : '500ms';\n this.disablePagination = defaultConfig && defaultConfig.disablePagination != null ?\n defaultConfig.disablePagination : false;\n this.dynamicHeight = defaultConfig && defaultConfig.dynamicHeight != null ?\n defaultConfig.dynamicHeight : false;\n this.contentTabIndex = defaultConfig?.contentTabIndex ?? null;\n }\n\n /**\n * After the content is checked, this component knows what tabs have been defined\n * and what the selected index should be. This is where we can know exactly what position\n * each tab should be in according to the new selected index, and additionally we know how\n * a new selected tab should transition in (from the left or right).\n */\n ngAfterContentChecked() {\n // Don't clamp the `indexToSelect` immediately in the setter because it can happen that\n // the amount of tabs changes before the actual change detection runs.\n const indexToSelect = this._indexToSelect = this._clampTabIndex(this._indexToSelect);\n\n // If there is a change in selected index, emit a change event. Should not trigger if\n // the selected index has not yet been initialized.\n if (this._selectedIndex != indexToSelect) {\n const isFirstRun = this._selectedIndex == null;\n\n if (!isFirstRun) {\n this.selectedTabChange.emit(this._createChangeEvent(indexToSelect));\n // Preserve the height so page doesn't scroll up during tab change.\n // Fixes https://stackblitz.com/edit/mat-tabs-scroll-page-top-on-tab-change\n const wrapper = this._tabBodyWrapper.nativeElement;\n wrapper.style.minHeight = wrapper.clientHeight + 'px';\n }\n\n // Changing these values after change detection has run\n // since the checked content may contain references to them.\n Promise.resolve().then(() => {\n this._tabs.forEach((tab, index) => tab.isActive = index === indexToSelect);\n\n if (!isFirstRun) {\n this.selectedIndexChange.emit(indexToSelect);\n // Clear the min-height, this was needed during tab change to avoid\n // unnecessary scrolling.\n this._tabBodyWrapper.nativeElement.style.minHeight = '';\n }\n });\n }\n\n // Setup the position for each tab and optionally setup an origin on the next selected tab.\n this._tabs.forEach((tab: MatTab, index: number) => {\n tab.position = index - indexToSelect;\n\n // If there is already a selected tab, then set up an origin for the next selected tab\n // if it doesn't have one already.\n if (this._selectedIndex != null && tab.position == 0 && !tab.origin) {\n tab.origin = indexToSelect - this._selectedIndex;\n }\n });\n\n if (this._selectedIndex !== indexToSelect) {\n this._selectedIndex = indexToSelect;\n this._changeDetectorRef.markForCheck();\n }\n }\n\n ngAfterContentInit() {\n this._subscribeToAllTabChanges();\n this._subscribeToTabLabels();\n\n // Subscribe to changes in the amount of tabs, in order to be\n // able to re-render the content as new tabs are added or removed.\n this._tabsSubscription = this._tabs.changes.subscribe(() => {\n const indexToSelect = this._clampTabIndex(this._indexToSelect);\n\n // Maintain the previously-selected tab if a new tab is added or removed and there is no\n // explicit change that selects a different tab.\n if (indexToSelect === this._selectedIndex) {\n const tabs = this._tabs.toArray();\n\n for (let i = 0; i < tabs.length; i++) {\n if (tabs[i].isActive) {\n // Assign both to the `_indexToSelect` and `_selectedIndex` so we don't fire a changed\n // event, otherwise the consumer may end up in an infinite loop in some edge cases like\n // adding a tab within the `selectedIndexChange` event.\n this._indexToSelect = this._selectedIndex = i;\n break;\n }\n }\n }\n\n this._changeDetectorRef.markForCheck();\n });\n }\n\n /** Listens to changes in all of the tabs. */\n private _subscribeToAllTabChanges() {\n // Since we use a query with `descendants: true` to pick up the tabs, we may end up catching\n // some that are inside of nested tab groups. We filter them out manually by checking that\n // the closest group to the tab is the current one.\n this._allTabs.changes\n .pipe(startWith(this._allTabs))\n .subscribe((tabs: QueryList<MatTab>) => {\n this._tabs.reset(tabs.filter(tab => {\n return tab._closestTabGroup === this || !tab._closestTabGroup;\n }));\n this._tabs.notifyOnChanges();\n });\n }\n\n ngOnDestroy() {\n this._tabs.destroy();\n this._tabsSubscription.unsubscribe();\n this._tabLabelSubscription.unsubscribe();\n }\n\n /** Re-aligns the ink bar to the selected tab element. */\n realignInkBar() {\n if (this._tabHeader) {\n this._tabHeader._alignInkBarToSelectedTab();\n }\n }\n\n /**\n * Sets focus to a particular tab.\n * @param index Index of the tab to be focused.\n */\n focusTab(index: number) {\n const header = this._tabHeader;\n\n if (header) {\n header.focusIndex = index;\n }\n }\n\n _focusChanged(index: number) {\n this.focusChange.emit(this._createChangeEvent(index));\n }\n\n private _createChangeEvent(index: number): MatTabChangeEvent {\n const event = new MatTabChangeEvent;\n event.index = index;\n if (this._tabs && this._tabs.length) {\n event.tab = this._tabs.toArray()[index];\n }\n return event;\n }\n\n /**\n * Subscribes to changes in the tab labels. This is needed, because the @Input for the label is\n * on the MatTab component, whereas the data binding is inside the MatTabGroup. In order for the\n * binding to be updated, we need to subscribe to changes in it and trigger change detection\n * manually.\n */\n private _subscribeToTabLabels() {\n if (this._tabLabelSubscription) {\n this._tabLabelSubscription.unsubscribe();\n }\n\n this._tabLabelSubscription = merge(...this._tabs.map(tab => tab._stateChanges))\n .subscribe(() => this._changeDetectorRef.markForCheck());\n }\n\n /** Clamps the given index to the bounds of 0 and the tabs length. */\n private _clampTabIndex(index: number | null): number {\n // Note the `|| 0`, which ensures that values like NaN can't get through\n // and which would otherwise throw the component into an infinite loop\n // (since Math.max(NaN, 0) === NaN).\n return Math.min(this._tabs.length - 1, Math.max(index || 0, 0));\n }\n\n /** Returns a unique id for each tab label element */\n _getTabLabelId(i: number): string {\n return `mat-tab-label-${this._groupId}-${i}`;\n }\n\n /** Returns a unique id for each tab content element */\n _getTabContentId(i: number): string {\n return `mat-tab-content-${this._groupId}-${i}`;\n }\n\n /**\n * Sets the height of the body wrapper to the height of the activating tab if dynamic\n * height property is true.\n */\n _setTabBodyWrapperHeight(tabHeight: number): void {\n if (!this._dynamicHeight || !this._tabBodyWrapperHeight) { return; }\n\n const wrapper: HTMLElement = this._tabBodyWrapper.nativeElement;\n\n wrapper.style.height = this._tabBodyWrapperHeight + 'px';\n\n // This conditional forces the browser to paint the height so that\n // the animation to the new height can have an origin.\n if (this._tabBodyWrapper.nativeElement.offsetHeight) {\n wrapper.style.height = tabHeight + 'px';\n }\n }\n\n /** Removes the height of the tab body wrapper. */\n _removeTabBodyWrapperHeight(): void {\n const wrapper = this._tabBodyWrapper.nativeElement;\n this._tabBodyWrapperHeight = wrapper.clientHeight;\n wrapper.style.height = '';\n this.animationDone.emit();\n }\n\n /** Handle click events, setting new selected index if appropriate. */\n _handleClick(tab: MatTab, tabHeader: MatTabGroupBaseHeader, index: number) {\n if (!tab.disabled) {\n this.selectedIndex = tabHeader.focusIndex = index;\n }\n }\n\n /** Retrieves the tabindex for the tab. */\n _getTabIndex(tab: MatTab, idx: number): number | null {\n if (tab.disabled) {\n return null;\n }\n return this.selectedIndex === idx ? 0 : -1;\n }\n\n /** Callback for when the focused state of a tab has changed. */\n _tabFocusChanged(focusOrigin: FocusOrigin, index: number) {\n // Mouse/touch focus happens during the `mousedown`/`touchstart` phase which\n // can cause the tab to be moved out from under the pointer, interrupting the\n // click sequence (see #21898). We don't need to scroll the tab into view for\n // such cases anyway, because it will be done when the tab becomes selected.\n if (focusOrigin && focusOrigin !== 'mouse' && focusOrigin !== 'touch') {\n this._tabHeader.focusIndex = index;\n }\n }\n\n static ngAcceptInputType_dynamicHeight: BooleanInput;\n static ngAcceptInputType_animationDuration: NumberInput;\n static ngAcceptInputType_selectedIndex: NumberInput;\n static ngAcceptInputType_disableRipple: BooleanInput;\n static ngAcceptInputType_contentTabIndex: NumberInput;\n}\n\n/**\n * Material design tab-group component. Supports basic tab pairs (label + content) and includes\n * animated ink-bar, keyboard navigation, and screen reader.\n * See: https://material.io/design/components/tabs.html\n */\n@Component({\n selector: 'mat-tab-group',\n exportAs: 'matTabGroup',\n templateUrl: 'tab-group.html',\n styleUrls: ['tab-group.css'],\n encapsulation: ViewEncapsulation.None,\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n inputs: ['color', 'disableRipple'],\n providers: [{\n provide: MAT_TAB_GROUP,\n useExisting: MatTabGroup\n }],\n host: {\n 'class': 'mat-tab-group',\n '[class.mat-tab-group-dynamic-height]': 'dynamicHeight',\n '[class.mat-tab-group-inverted-header]': 'headerPosition === \"below\"',\n },\n})\nexport class MatTabGroup extends _MatTabGroupBase {\n @ContentChildren(MatTab, {descendants: true}) _allTabs: QueryList<MatTab>;\n @ViewChild('tabBodyWrapper') _tabBodyWrapper: ElementRef;\n @ViewChild('tabHeader') _tabHeader: MatTabGroupBaseHeader;\n\n constructor(elementRef: ElementRef,\n changeDetectorRef: ChangeDetectorRef,\n @Inject(MAT_TABS_CONFIG) @Optional() defaultConfig?: MatTabsConfig,\n @Optional() @Inject(ANIMATION_MODULE_TYPE) animationMode?: string) {\n super(elementRef, changeDetectorRef, defaultConfig, animationMode);\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {BooleanInput} from '@angular/cdk/coercion';\nimport {Directive, ElementRef} from '@angular/core';\nimport {CanDisable, mixinDisabled} from '@angular/material/core';\n\n\n// Boilerplate for applying mixins to MatTabLabelWrapper.\n/** @docs-private */\nconst _MatTabLabelWrapperBase = mixinDisabled(class {});\n\n/**\n * Used in the `mat-tab-group` view to display tab labels.\n * @docs-private\n */\n@Directive({\n selector: '[matTabLabelWrapper]',\n inputs: ['disabled'],\n host: {\n '[class.mat-tab-disabled]': 'disabled',\n '[attr.aria-disabled]': '!!disabled',\n }\n})\nexport class MatTabLabelWrapper extends _MatTabLabelWrapperBase implements CanDisable {\n constructor(public elementRef: ElementRef) {\n super();\n }\n\n /** Sets focus on the wrapper element */\n focus(): void {\n this.elementRef.nativeElement.focus();\n }\n\n getOffsetLeft(): number {\n return this.elementRef.nativeElement.offsetLeft;\n }\n\n getOffsetWidth(): number {\n return this.elementRef.nativeElement.offsetWidth;\n }\n\n static ngAcceptInputType_disabled: BooleanInput;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {\n ChangeDetectorRef,\n ElementRef,\n NgZone,\n Optional,\n QueryList,\n EventEmitter,\n AfterContentChecked,\n AfterContentInit,\n AfterViewInit,\n OnDestroy,\n Directive,\n Inject,\n Input,\n} from '@angular/core';\nimport {Direction, Directionality} from '@angular/cdk/bidi';\nimport {coerceNumberProperty, NumberInput} from '@angular/cdk/coercion';\nimport {ViewportRuler} from '@angular/cdk/scrolling';\nimport {FocusKeyManager, FocusableOption} from '@angular/cdk/a11y';\nimport {ENTER, SPACE, hasModifierKey} from '@angular/cdk/keycodes';\nimport {merge, of as observableOf, Subject, timer, fromEvent} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\nimport {Platform, normalizePassiveListenerOptions} from '@angular/cdk/platform';\nimport {ANIMATION_MODULE_TYPE} from '@angular/platform-browser/animations';\n\n\n/** Config used to bind passive event listeners */\nconst passiveEventListenerOptions =\n normalizePassiveListenerOptions({passive: true}) as EventListenerOptions;\n\n/**\n * The directions that scrolling can go in when the header's tabs exceed the header width. 'After'\n * will scroll the header towards the end of the tabs list and 'before' will scroll towards the\n * beginning of the list.\n */\nexport type ScrollDirection = 'after' | 'before';\n\n/**\n * The distance in pixels that will be overshot when scrolling a tab label into view. This helps\n * provide a small affordance to the label next to it.\n */\nconst EXAGGERATED_OVERSCROLL = 60;\n\n/**\n * Amount of milliseconds to wait before starting to scroll the header automatically.\n * Set a little conservatively in order to handle fake events dispatched on touch devices.\n */\nconst HEADER_SCROLL_DELAY = 650;\n\n/**\n * Interval in milliseconds at which to scroll the header\n * while the user is holding their pointer.\n */\nconst HEADER_SCROLL_INTERVAL = 100;\n\n/** Item inside a paginated tab header. */\nexport type MatPaginatedTabHeaderItem = FocusableOption & {elementRef: ElementRef};\n\n/**\n * Base class for a tab header that supported pagination.\n * @docs-private\n */\n@Directive()\nexport abstract class MatPaginatedTabHeader implements AfterContentChecked, AfterContentInit,\n AfterViewInit, OnDestroy {\n abstract _items: QueryList<MatPaginatedTabHeaderItem>;\n abstract _inkBar: {hide: () => void, alignToElement: (element: HTMLElement) => void};\n abstract _tabListContainer: ElementRef<HTMLElement>;\n abstract _tabList: ElementRef<HTMLElement>;\n abstract _nextPaginator: ElementRef<HTMLElement>;\n abstract _previousPaginator: ElementRef<HTMLElement>;\n\n /** The distance in pixels that the tab labels should be translated to the left. */\n private _scrollDistance = 0;\n\n /** Whether the header should scroll to the selected index after the view has been checked. */\n private _selectedIndexChanged = false;\n\n /** Emits when the component is destroyed. */\n protected readonly _destroyed = new Subject<void>();\n\n /** Whether the controls for pagination should be displayed */\n _showPaginationControls = false;\n\n /** Whether the tab list can be scrolled more towards the end of the tab label list. */\n _disableScrollAfter = true;\n\n /** Whether the tab list can be scrolled more towards the beginning of the tab label list. */\n _disableScrollBefore = true;\n\n /**\n * The number of tab labels that are displayed on the header. When this changes, the header\n * should re-evaluate the scroll position.\n */\n private _tabLabelCount: number;\n\n /** Whether the scroll distance has changed and should be applied after the view is checked. */\n private _scrollDistanceChanged: boolean;\n\n /** Used to manage focus between the tabs. */\n private _keyManager: FocusKeyManager<MatPaginatedTabHeaderItem>;\n\n /** Cached text content of the header. */\n private _currentTextContent: string;\n\n /** Stream that will stop the automated scrolling. */\n private _stopScrolling = new Subject<void>();\n\n /**\n * Whether pagination should be disabled. This can be used to avoid unnecessary\n * layout recalculations if it's known that pagination won't be required.\n */\n @Input()\n disablePagination: boolean = false;\n\n /** The index of the active tab. */\n get selectedIndex(): number { return this._selectedIndex; }\n set selectedIndex(value: number) {\n value = coerceNumberProperty(value);\n\n if (this._selectedIndex != value) {\n this._selectedIndexChanged = true;\n this._selectedIndex = value;\n\n if (this._keyManager) {\n this._keyManager.updateActiveItem(value);\n }\n }\n }\n private _selectedIndex: number = 0;\n\n /** Event emitted when the option is selected. */\n readonly selectFocusedIndex: EventEmitter<number> = new EventEmitter<number>();\n\n /** Event emitted when a label is focused. */\n readonly indexFocused: EventEmitter<number> = new EventEmitter<number>();\n\n constructor(protected _elementRef: ElementRef<HTMLElement>,\n protected _changeDetectorRef: ChangeDetectorRef,\n private _viewportRuler: ViewportRuler,\n @Optional() private _dir: Directionality,\n private _ngZone: NgZone,\n private _platform: Platform,\n @Optional() @Inject(ANIMATION_MODULE_TYPE) public _animationMode?: string) {\n\n // Bind the `mouseleave` event on the outside since it doesn't change anything in the view.\n _ngZone.runOutsideAngular(() => {\n fromEvent(_elementRef.nativeElement, 'mouseleave')\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => {\n this._stopInterval();\n });\n });\n }\n\n /** Called when the user has selected an item via the keyboard. */\n protected abstract _itemSelected(event: KeyboardEvent): void;\n\n ngAfterViewInit() {\n // We need to handle these events manually, because we want to bind passive event listeners.\n fromEvent(this._previousPaginator.nativeElement, 'touchstart', passiveEventListenerOptions)\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => {\n this._handlePaginatorPress('before');\n });\n\n fromEvent(this._nextPaginator.nativeElement, 'touchstart', passiveEventListenerOptions)\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => {\n this._handlePaginatorPress('after');\n });\n }\n\n ngAfterContentInit() {\n const dirChange = this._dir ? this._dir.change : observableOf('ltr');\n const resize = this._viewportRuler.change(150);\n const realign = () => {\n this.updatePagination();\n this._alignInkBarToSelectedTab();\n };\n\n this._keyManager = new FocusKeyManager<MatPaginatedTabHeaderItem>(this._items)\n .withHorizontalOrientation(this._getLayoutDirection())\n .withHomeAndEnd()\n .withWrap();\n\n this._keyManager.updateActiveItem(this._selectedIndex);\n\n // Defer the first call in order to allow for slower browsers to lay out the elements.\n // This helps in cases where the user lands directly on a page with paginated tabs.\n typeof requestAnimationFrame !== 'undefined' ? requestAnimationFrame(realign) : realign();\n\n // On dir change or window resize, realign the ink bar and update the orientation of\n // the key manager if the direction has changed.\n merge(dirChange, resize, this._items.changes).pipe(takeUntil(this._destroyed)).subscribe(() => {\n // We need to defer this to give the browser some time to recalculate\n // the element dimensions. The call has to be wrapped in `NgZone.run`,\n // because the viewport change handler runs outside of Angular.\n this._ngZone.run(() => Promise.resolve().then(realign));\n this._keyManager.withHorizontalOrientation(this._getLayoutDirection());\n });\n\n // If there is a change in the focus key manager we need to emit the `indexFocused`\n // event in order to provide a public event that notifies about focus changes. Also we realign\n // the tabs container by scrolling the new focused tab into the visible section.\n this._keyManager.change.pipe(takeUntil(this._destroyed)).subscribe(newFocusIndex => {\n this.indexFocused.emit(newFocusIndex);\n this._setTabFocus(newFocusIndex);\n });\n }\n\n ngAfterContentChecked(): void {\n // If the number of tab labels have changed, check if scrolling should be enabled\n if (this._tabLabelCount != this._items.length) {\n this.updatePagination();\n this._tabLabelCount = this._items.length;\n this._changeDetectorRef.markForCheck();\n }\n\n // If the selected index has changed, scroll to the label and check if the scrolling controls\n // should be disabled.\n if (this._selectedIndexChanged) {\n this._scrollToLabel(this._selectedIndex);\n this._checkScrollingControls();\n this._alignInkBarToSelectedTab();\n this._selectedIndexChanged = false;\n this._changeDetectorRef.markForCheck();\n }\n\n // If the scroll distance has been changed (tab selected, focused, scroll controls activated),\n // then translate the header to reflect this.\n if (this._scrollDistanceChanged) {\n this._updateTabScrollPosition();\n this._scrollDistanceChanged = false;\n this._changeDetectorRef.markForCheck();\n }\n }\n\n ngOnDestroy() {\n this._destroyed.next();\n this._destroyed.complete();\n this._stopScrolling.complete();\n }\n\n /** Handles keyboard events on the header. */\n _handleKeydown(event: KeyboardEvent) {\n // We don't handle any key bindings with a modifier key.\n if (hasModifierKey(event)) {\n return;\n }\n\n switch (event.keyCode) {\n case ENTER:\n case SPACE:\n if (this.focusIndex !== this.selectedIndex) {\n this.selectFocusedIndex.emit(this.focusIndex);\n this._itemSelected(event);\n }\n break;\n default:\n this._keyManager.onKeydown(event);\n }\n }\n\n /**\n * Callback for when the MutationObserver detects that the content has changed.\n */\n _onContentChanges() {\n const textContent = this._elementRef.nativeElement.textContent;\n\n // We need to diff the text content of the header, because the MutationObserver callback\n // will fire even if the text content didn't change which is inefficient and is prone\n // to infinite loops if a poorly constructed expression is passed in (see #14249).\n if (textContent !== this._currentTextContent) {\n this._currentTextContent = textContent || '';\n\n // The content observer runs outside the `NgZone` by default, which\n // means that we need to bring the callback back in ourselves.\n this._ngZone.run(() => {\n this.updatePagination();\n this._alignInkBarToSelectedTab();\n this._changeDetectorRef.markForCheck();\n });\n }\n }\n\n /**\n * Updates the view whether pagination should be enabled or not.\n *\n * WARNING: Calling this method can be very costly in terms of performance. It should be called\n * as infrequently as possible from outside of the Tabs component as it causes a reflow of the\n * page.\n */\n updatePagination() {\n this._checkPaginationEnabled();\n this._checkScrollingControls();\n this._updateTabScrollPosition();\n }\n\n /** Tracks which element has focus; used for keyboard navigation */\n get focusIndex(): number {\n return this._keyManager ? this._keyManager.activeItemIndex! : 0;\n }\n\n /** When the focus index is set, we must manually send focus to the correct label */\n set focusIndex(value: number) {\n if (!this._isValidIndex(value) || this.focusIndex === value || !this._keyManager) {\n return;\n }\n\n this._keyManager.setActiveItem(value);\n }\n\n /**\n * Determines if an index is valid. If the tabs are not ready yet, we assume that the user is\n * providing a valid index and return true.\n */\n _isValidIndex(index: number): boolean {\n if (!this._items) { return true; }\n\n const tab = this._items ? this._items.toArray()[index] : null;\n return !!tab && !tab.disabled;\n }\n\n /**\n * Sets focus on the HTML element for the label wrapper and scrolls it into the view if\n * scrolling is enabled.\n */\n _setTabFocus(tabIndex: number) {\n if (this._showPaginationControls) {\n this._scrollToLabel(tabIndex);\n }\n\n if (this._items && this._items.length) {\n this._items.toArray()[tabIndex].focus();\n\n // Do not let the browser manage scrolling to focus the element, this will be handled\n // by using translation. In LTR, the scroll left should be 0. In RTL, the scroll width\n // should be the full width minus the offset width.\n const containerEl = this._tabListContainer.nativeElement;\n const dir = this._getLayoutDirection();\n\n if (dir == 'ltr') {\n containerEl.scrollLeft = 0;\n } else {\n containerEl.scrollLeft = containerEl.scrollWidth - containerEl.offsetWidth;\n }\n }\n }\n\n /** The layout direction of the containing app. */\n _getLayoutDirection(): Direction {\n return this._dir && this._dir.value === 'rtl' ? 'rtl' : 'ltr';\n }\n\n /** Performs the CSS transformation on the tab list that will cause the list to scroll. */\n _updateTabScrollPosition() {\n if (this.disablePagination) {\n return;\n }\n\n const scrollDistance = this.scrollDistance;\n const translateX = this._getLayoutDirection() === 'ltr' ? -scrollDistance : scrollDistance;\n\n // Don't use `translate3d` here because we don't want to create a new layer. A new layer\n // seems to cause flickering and overflow in Internet Explorer. For example, the ink bar\n // and ripples will exceed the boundaries of the visible tab bar.\n // See: https://github.com/angular/components/issues/10276\n // We round the `transform` here, because transforms with sub-pixel precision cause some\n // browsers to blur the content of the element.\n this._tabList.nativeElement.style.transform = `translateX(${Math.round(translateX)}px)`;\n\n // Setting the `transform` on IE will change the scroll offset of the parent, causing the\n // position to be thrown off in some cases. We have to reset it ourselves to ensure that\n // it doesn't get thrown off. Note that we scope it only to IE and Edge, because messing\n // with the scroll position throws off Chrome 71+ in RTL mode (see #14689).\n if (this._platform.TRIDENT || this._platform.EDGE) {\n this._tabListContainer.nativeElement.scrollLeft = 0;\n }\n }\n\n /** Sets the distance in pixels that the tab header should be transformed in the X-axis. */\n get scrollDistance(): number { return this._scrollDistance; }\n set scrollDistance(value: number) {\n this._scrollTo(value);\n }\n\n /**\n * Moves the tab list in the 'before' or 'after' direction (towards the beginning of the list or\n * the end of the list, respectively). The distance to scroll is computed to be a third of the\n * length of the tab list view window.\n *\n * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n * should be called sparingly.\n */\n _scrollHeader(direction: ScrollDirection) {\n const viewLength = this._tabListContainer.nativeElement.offsetWidth;\n\n // Move the scroll distance one-third the length of the tab list's viewport.\n const scrollAmount = (direction == 'before' ? -1 : 1) * viewLength / 3;\n\n return this._scrollTo(this._scrollDistance + scrollAmount);\n }\n\n /** Handles click events on the pagination arrows. */\n _handlePaginatorClick(direction: ScrollDirection) {\n this._stopInterval();\n this._scrollHeader(direction);\n }\n\n /**\n * Moves the tab list such that the desired tab label (marked by index) is moved into view.\n *\n * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n * should be called sparingly.\n */\n _scrollToLabel(labelIndex: number) {\n if (this.disablePagination) {\n return;\n }\n\n const selectedLabel = this._items ? this._items.toArray()[labelIndex] : null;\n\n if (!selectedLabel) {\n return;\n }\n\n // The view length is the visible width of the tab labels.\n const viewLength = this._tabListContainer.nativeElement.offsetWidth;\n const {offsetLeft, offsetWidth} = selectedLabel.elementRef.nativeElement;\n\n let labelBeforePos: number, labelAfterPos: number;\n if (this._getLayoutDirection() == 'ltr') {\n labelBeforePos = offsetLeft;\n labelAfterPos = labelBeforePos + offsetWidth;\n } else {\n labelAfterPos = this._tabList.nativeElement.offsetWidth - offsetLeft;\n labelBeforePos = labelAfterPos - offsetWidth;\n }\n\n const beforeVisiblePos = this.scrollDistance;\n const afterVisiblePos = this.scrollDistance + viewLength;\n\n if (labelBeforePos < beforeVisiblePos) {\n // Scroll header to move label to the before direction\n this.scrollDistance -= beforeVisiblePos - labelBeforePos + EXAGGERATED_OVERSCROLL;\n } else if (labelAfterPos > afterVisiblePos) {\n // Scroll header to move label to the after direction\n this.scrollDistance += labelAfterPos - afterVisiblePos + EXAGGERATED_OVERSCROLL;\n }\n }\n\n /**\n * Evaluate whether the pagination controls should be displayed. If the scroll width of the\n * tab list is wider than the size of the header container, then the pagination controls should\n * be shown.\n *\n * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n * should be called sparingly.\n */\n _checkPaginationEnabled() {\n if (this.disablePagination) {\n this._showPaginationControls = false;\n } else {\n const isEnabled =\n this._tabList.nativeElement.scrollWidth > this._elementRef.nativeElement.offsetWidth;\n\n if (!isEnabled) {\n this.scrollDistance = 0;\n }\n\n if (isEnabled !== this._showPaginationControls) {\n this._changeDetectorRef.markForCheck();\n }\n\n this._showPaginationControls = isEnabled;\n }\n }\n\n /**\n * Evaluate whether the before and after controls should be enabled or disabled.\n * If the header is at the beginning of the list (scroll distance is equal to 0) then disable the\n * before button. If the header is at the end of the list (scroll distance is equal to the\n * maximum distance we can scroll), then disable the after button.\n *\n * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n * should be called sparingly.\n */\n _checkScrollingControls() {\n if (this.disablePagination) {\n this._disableScrollAfter = this._disableScrollBefore = true;\n } else {\n // Check if the pagination arrows should be activated.\n this._disableScrollBefore = this.scrollDistance == 0;\n this._disableScrollAfter = this.scrollDistance == this._getMaxScrollDistance();\n this._changeDetectorRef.markForCheck();\n }\n }\n\n /**\n * Determines what is the maximum length in pixels that can be set for the scroll distance. This\n * is equal to the difference in width between the tab list container and tab header container.\n *\n * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n * should be called sparingly.\n */\n _getMaxScrollDistance(): number {\n const lengthOfTabList = this._tabList.nativeElement.scrollWidth;\n const viewLength = this._tabListContainer.nativeElement.offsetWidth;\n return (lengthOfTabList - viewLength) || 0;\n }\n\n /** Tells the ink-bar to align itself to the current label wrapper */\n _alignInkBarToSelectedTab(): void {\n const selectedItem = this._items && this._items.length ?\n this._items.toArray()[this.selectedIndex] : null;\n const selectedLabelWrapper = selectedItem ? selectedItem.elementRef.nativeElement : null;\n\n if (selectedLabelWrapper) {\n this._inkBar.alignToElement(selectedLabelWrapper);\n } else {\n this._inkBar.hide();\n }\n }\n\n /** Stops the currently-running paginator interval. */\n _stopInterval() {\n this._stopScrolling.next();\n }\n\n /**\n * Handles the user pressing down on one of the paginators.\n * Starts scrolling the header after a certain amount of time.\n * @param direction In which direction the paginator should be scrolled.\n */\n _handlePaginatorPress(direction: ScrollDirection, mouseEvent?: MouseEvent) {\n // Don't start auto scrolling for right mouse button clicks. Note that we shouldn't have to\n // null check the `button`, but we do it so we don't break tests that use fake events.\n if (mouseEvent && mouseEvent.button != null && mouseEvent.button !== 0) {\n return;\n }\n\n // Avoid overlapping timers.\n this._stopInterval();\n\n // Start a timer after the delay and keep firing based on the interval.\n timer(HEADER_SCROLL_DELAY, HEADER_SCROLL_INTERVAL)\n // Keep the timer going until something tells it to stop or the component is destroyed.\n .pipe(takeUntil(merge(this._stopScrolling, this._destroyed)))\n .subscribe(() => {\n const {maxScrollDistance, distance} = this._scrollHeader(direction);\n\n // Stop the timer if we've reached the start or the end.\n if (distance === 0 || distance >= maxScrollDistance) {\n this._stopInterval();\n }\n });\n }\n\n /**\n * Scrolls the header to a given position.\n * @param position Position to which to scroll.\n * @returns Information on the current scroll distance and the maximum.\n */\n private _scrollTo(position: number) {\n if (this.disablePagination) {\n return {maxScrollDistance: 0, distance: 0};\n }\n\n const maxScrollDistance = this._getMaxScrollDistance();\n this._scrollDistance = Math.max(0, Math.min(maxScrollDistance, position));\n\n // Mark that the scroll distance has changed so that after the view is checked, the CSS\n // transformation can move the header.\n this._scrollDistanceChanged = true;\n this._checkScrollingControls();\n\n return {maxScrollDistance, distance: this._scrollDistance};\n }\n\n static ngAcceptInputType_selectedIndex: NumberInput;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Directionality} from '@angular/cdk/bidi';\nimport {ViewportRuler} from '@angular/cdk/scrolling';\nimport {\n AfterContentChecked,\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n NgZone,\n OnDestroy,\n Optional,\n QueryList,\n ViewChild,\n ViewEncapsulation,\n AfterViewInit,\n Input,\n Inject,\n Directive,\n} from '@angular/core';\nimport {ANIMATION_MODULE_TYPE} from '@angular/platform-browser/animations';\nimport {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {MatInkBar} from './ink-bar';\nimport {MatTabLabelWrapper} from './tab-label-wrapper';\nimport {Platform} from '@angular/cdk/platform';\nimport {MatPaginatedTabHeader} from './paginated-tab-header';\n\n/**\n * Base class with all of the `MatTabHeader` functionality.\n * @docs-private\n */\n@Directive()\nexport abstract class _MatTabHeaderBase extends MatPaginatedTabHeader implements\n AfterContentChecked, AfterContentInit, AfterViewInit, OnDestroy {\n\n /** Whether the ripple effect is disabled or not. */\n @Input()\n get disableRipple() { return this._disableRipple; }\n set disableRipple(value: any) { this._disableRipple = coerceBooleanProperty(value); }\n private _disableRipple: boolean = false;\n\n constructor(elementRef: ElementRef,\n changeDetectorRef: ChangeDetectorRef,\n viewportRuler: ViewportRuler,\n @Optional() dir: Directionality,\n ngZone: NgZone,\n platform: Platform,\n @Optional() @Inject(ANIMATION_MODULE_TYPE) animationMode?: string) {\n super(elementRef, changeDetectorRef, viewportRuler, dir, ngZone, platform, animationMode);\n }\n\n protected _itemSelected(event: KeyboardEvent) {\n event.preventDefault();\n }\n}\n\n/**\n * The header of the tab group which displays a list of all the tabs in the tab group. Includes\n * an ink bar that follows the currently selected tab. When the tabs list's width exceeds the\n * width of the header container, then arrows will be displayed to allow the user to scroll\n * left and right across the header.\n * @docs-private\n */\n@Component({\n selector: 'mat-tab-header',\n templateUrl: 'tab-header.html',\n styleUrls: ['tab-header.css'],\n inputs: ['selectedIndex'],\n outputs: ['selectFocusedIndex', 'indexFocused'],\n encapsulation: ViewEncapsulation.None,\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n host: {\n 'class': 'mat-tab-header',\n '[class.mat-tab-header-pagination-controls-enabled]': '_showPaginationControls',\n '[class.mat-tab-header-rtl]': \"_getLayoutDirection() == 'rtl'\",\n },\n})\nexport class MatTabHeader extends _MatTabHeaderBase {\n @ContentChildren(MatTabLabelWrapper, {descendants: false}) _items: QueryList<MatTabLabelWrapper>;\n @ViewChild(MatInkBar, {static: true}) _inkBar: MatInkBar;\n @ViewChild('tabListContainer', {static: true}) _tabListContainer: ElementRef;\n @ViewChild('tabList', {static: true}) _tabList: ElementRef;\n @ViewChild('nextPaginator') _nextPaginator: ElementRef<HTMLElement>;\n @ViewChild('previousPaginator') _previousPaginator: ElementRef<HTMLElement>;\n\n constructor(elementRef: ElementRef,\n changeDetectorRef: ChangeDetectorRef,\n viewportRuler: ViewportRuler,\n @Optional() dir: Directionality,\n ngZone: NgZone,\n platform: Platform,\n @Optional() @Inject(ANIMATION_MODULE_TYPE) animationMode?: string) {\n super(elementRef, changeDetectorRef, viewportRuler, dir, ngZone, platform, animationMode);\n }\n\n static ngAcceptInputType_disableRipple: BooleanInput;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {FocusableOption, FocusMonitor} from '@angular/cdk/a11y';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {BooleanInput, coerceBooleanProperty, NumberInput} from '@angular/cdk/coercion';\nimport {Platform} from '@angular/cdk/platform';\nimport {ViewportRuler} from '@angular/cdk/scrolling';\nimport {\n AfterContentChecked,\n AfterContentInit,\n AfterViewInit,\n Attribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n Directive,\n ElementRef,\n forwardRef,\n Inject,\n Input,\n NgZone,\n OnDestroy,\n Optional,\n QueryList,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {\n CanDisable,\n CanDisableRipple,\n HasTabIndex,\n MAT_RIPPLE_GLOBAL_OPTIONS,\n mixinDisabled,\n mixinDisableRipple,\n mixinTabIndex, RippleConfig,\n RippleGlobalOptions,\n RippleRenderer,\n RippleTarget,\n ThemePalette,\n} from '@angular/material/core';\nimport {ANIMATION_MODULE_TYPE} from '@angular/platform-browser/animations';\nimport {startWith, takeUntil} from 'rxjs/operators';\nimport {MatInkBar} from '../ink-bar';\nimport {MatPaginatedTabHeader, MatPaginatedTabHeaderItem} from '../paginated-tab-header';\n\n/**\n * Base class with all of the `MatTabNav` functionality.\n * @docs-private\n */\n@Directive()\nexport abstract class _MatTabNavBase extends MatPaginatedTabHeader implements AfterContentChecked,\n AfterContentInit, OnDestroy {\n\n /** Query list of all tab links of the tab navigation. */\n abstract override _items: QueryList<MatPaginatedTabHeaderItem & {active: boolean}>;\n\n /** Background color of the tab nav. */\n @Input()\n get backgroundColor(): ThemePalette { return this._backgroundColor; }\n set backgroundColor(value: ThemePalette) {\n const classList = this._elementRef.nativeElement.classList;\n classList.remove(`mat-background-${this.backgroundColor}`);\n\n if (value) {\n classList.add(`mat-background-${value}`);\n }\n\n this._backgroundColor = value;\n }\n private _backgroundColor: ThemePalette;\n\n /** Whether the ripple effect is disabled or not. */\n @Input()\n get disableRipple() { return this._disableRipple; }\n set disableRipple(value: any) { this._disableRipple = coerceBooleanProperty(value); }\n private _disableRipple: boolean = false;\n\n /** Theme color of the nav bar. */\n @Input() color: ThemePalette = 'primary';\n\n constructor(elementRef: ElementRef,\n @Optional() dir: Directionality,\n ngZone: NgZone,\n changeDetectorRef: ChangeDetectorRef,\n viewportRuler: ViewportRuler,\n platform: Platform,\n @Optional() @Inject(ANIMATION_MODULE_TYPE) animationMode?: string) {\n super(elementRef, changeDetectorRef, viewportRuler, dir, ngZone, platform, animationMode);\n }\n\n protected _itemSelected() {\n // noop\n }\n\n override ngAfterContentInit() {\n // We need this to run before the `changes` subscription in parent to ensure that the\n // selectedIndex is up-to-date by the time the super class starts looking for it.\n this._items.changes.pipe(startWith(null), takeUntil(this._destroyed)).subscribe(() => {\n this.updateActiveLink();\n });\n\n super.ngAfterContentInit();\n }\n\n /** Notifies the component that the active link has been changed. */\n updateActiveLink() {\n if (!this._items) {\n return;\n }\n\n const items = this._items.toArray();\n\n for (let i = 0; i < items.length; i++) {\n if (items[i].active) {\n this.selectedIndex = i;\n this._changeDetectorRef.markForCheck();\n return;\n }\n }\n\n // The ink bar should hide itself if no items are active.\n this.selectedIndex = -1;\n this._inkBar.hide();\n }\n}\n\n\n/**\n * Navigation component matching the styles of the tab group header.\n * Provides anchored navigation with animated ink bar.\n */\n@Component({\n selector: '[mat-tab-nav-bar]',\n exportAs: 'matTabNavBar, matTabNav',\n inputs: ['color'],\n templateUrl: 'tab-nav-bar.html',\n styleUrls: ['tab-nav-bar.css'],\n host: {\n 'class': 'mat-tab-nav-bar mat-tab-header',\n '[class.mat-tab-header-pagination-controls-enabled]': '_showPaginationControls',\n '[class.mat-tab-header-rtl]': \"_getLayoutDirection() == 'rtl'\",\n '[class.mat-primary]': 'color !== \"warn\" && color !== \"accent\"',\n '[class.mat-accent]': 'color === \"accent\"',\n '[class.mat-warn]': 'color === \"warn\"',\n },\n encapsulation: ViewEncapsulation.None,\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n})\nexport class MatTabNav extends _MatTabNavBase {\n @ContentChildren(forwardRef(() => MatTabLink), {descendants: true}) _items: QueryList<MatTabLink>;\n @ViewChild(MatInkBar, {static: true}) _inkBar: MatInkBar;\n @ViewChild('tabListContainer', {static: true}) _tabListContainer: ElementRef;\n @ViewChild('tabList', {static: true}) _tabList: ElementRef;\n @ViewChild('nextPaginator') _nextPaginator: ElementRef<HTMLElement>;\n @ViewChild('previousPaginator') _previousPaginator: ElementRef<HTMLElement>;\n\n constructor(elementRef: ElementRef,\n @Optional() dir: Directionality,\n ngZone: NgZone,\n changeDetectorRef: ChangeDetectorRef,\n viewportRuler: ViewportRuler,\n platform: Platform,\n @Optional() @Inject(ANIMATION_MODULE_TYPE) animationMode?: string) {\n super(elementRef, dir, ngZone, changeDetectorRef, viewportRuler, platform, animationMode);\n }\n\n static ngAcceptInputType_disableRipple: BooleanInput;\n}\n\n// Boilerplate for applying mixins to MatTabLink.\nconst _MatTabLinkMixinBase = mixinTabIndex(mixinDisableRipple(mixinDisabled(class {})));\n\n/** Base class with all of the `MatTabLink` functionality. */\n@Directive()\nexport class _MatTabLinkBase extends _MatTabLinkMixinBase implements AfterViewInit, OnDestroy,\n CanDisable, CanDisableRipple, HasTabIndex, RippleTarget, FocusableOption {\n\n /** Whether the tab link is active or not. */\n protected _isActive: boolean = false;\n\n /** Whether the link is active. */\n @Input()\n get active(): boolean { return this._isActive; }\n set active(value: boolean) {\n const newValue = coerceBooleanProperty(value);\n\n if (newValue !== this._isActive) {\n this._isActive = value;\n this._tabNavBar.updateActiveLink();\n }\n }\n\n /**\n * Ripple configuration for ripples that are launched on pointer down. The ripple config\n * is set to the global ripple options since we don't have any configurable options for\n * the tab link ripples.\n * @docs-private\n */\n rippleConfig: RippleConfig & RippleGlobalOptions;\n\n /**\n * Whether ripples are disabled on interaction.\n * @docs-private\n */\n get rippleDisabled(): boolean {\n return this.disabled || this.disableRipple || this._tabNavBar.disableRipple ||\n !!this.rippleConfig.disabled;\n }\n\n constructor(\n private _tabNavBar: _MatTabNavBase,\n /** @docs-private */ public elementRef: ElementRef,\n @Optional() @Inject(MAT_RIPPLE_GLOBAL_OPTIONS) globalRippleOptions: RippleGlobalOptions|null,\n @Attribute('tabindex') tabIndex: string, private _focusMonitor: FocusMonitor,\n @Optional() @Inject(ANIMATION_MODULE_TYPE) animationMode?: string) {\n super();\n\n this.rippleConfig = globalRippleOptions || {};\n this.tabIndex = parseInt(tabIndex) || 0;\n\n if (animationMode === 'NoopAnimations') {\n this.rippleConfig.animation = {enterDuration: 0, exitDuration: 0};\n }\n }\n\n /** Focuses the tab link. */\n focus() {\n this.elementRef.nativeElement.focus();\n }\n\n ngAfterViewInit() {\n this._focusMonitor.monitor(this.elementRef);\n }\n\n ngOnDestroy() {\n this._focusMonitor.stopMonitoring(this.elementRef);\n }\n\n _handleFocus() {\n // Since we allow navigation through tabbing in the nav bar, we\n // have to update the focused index whenever the link receives focus.\n this._tabNavBar.focusIndex = this._tabNavBar._items.toArray().indexOf(this);\n }\n\n static ngAcceptInputType_active: BooleanInput;\n static ngAcceptInputType_disabled: BooleanInput;\n static ngAcceptInputType_disableRipple: BooleanInput;\n static ngAcceptInputType_tabIndex: NumberInput;\n}\n\n\n/**\n * Link inside of a `mat-tab-nav-bar`.\n */\n@Directive({\n selector: '[mat-tab-link], [matTabLink]',\n exportAs: 'matTabLink',\n inputs: ['disabled', 'disableRipple', 'tabIndex'],\n host: {\n 'class': 'mat-tab-link mat-focus-indicator',\n '[attr.aria-current]': 'active ? \"page\" : null',\n '[attr.aria-disabled]': 'disabled',\n '[attr.tabIndex]': 'tabIndex',\n '[class.mat-tab-disabled]': 'disabled',\n '[class.mat-tab-label-active]': 'active',\n '(focus)': '_handleFocus()'\n }\n})\nexport class MatTabLink extends _MatTabLinkBase implements OnDestroy {\n /** Reference to the RippleRenderer for the tab-link. */\n private _tabLinkRipple: RippleRenderer;\n\n constructor(\n tabNavBar: MatTabNav, elementRef: ElementRef, ngZone: NgZone,\n platform: Platform,\n @Optional() @Inject(MAT_RIPPLE_GLOBAL_OPTIONS) globalRippleOptions: RippleGlobalOptions|null,\n @Attribute('tabindex') tabIndex: string, focusMonitor: FocusMonitor,\n @Optional() @Inject(ANIMATION_MODULE_TYPE) animationMode?: string) {\n super(tabNavBar, elementRef, globalRippleOptions, tabIndex, focusMonitor, animationMode);\n this._tabLinkRipple = new RippleRenderer(this, ngZone, elementRef, platform);\n this._tabLinkRipple.setupTriggerEvents(elementRef.nativeElement);\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n this._tabLinkRipple._removeTriggerEvents();\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {A11yModule} from '@angular/cdk/a11y';\nimport {ObserversModule} from '@angular/cdk/observers';\nimport {PortalModule} from '@angular/cdk/portal';\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {MatCommonModule, MatRippleModule} from '@angular/material/core';\nimport {MatInkBar} from './ink-bar';\nimport {MatTab} from './tab';\nimport {MatTabBody, MatTabBodyPortal} from './tab-body';\nimport {MatTabContent} from './tab-content';\nimport {MatTabGroup} from './tab-group';\nimport {MatTabHeader} from './tab-header';\nimport {MatTabLabel} from './tab-label';\nimport {MatTabLabelWrapper} from './tab-label-wrapper';\nimport {MatTabLink, MatTabNav} from './tab-nav-bar/tab-nav-bar';\n\n\n@NgModule({\n imports: [\n CommonModule,\n MatCommonModule,\n PortalModule,\n MatRippleModule,\n ObserversModule,\n A11yModule,\n ],\n // Don't export all components because some are only to be used internally.\n exports: [\n MatCommonModule,\n MatTabGroup,\n MatTabLabel,\n MatTab,\n MatTabNav,\n MatTabLink,\n MatTabContent,\n ],\n declarations: [\n MatTabGroup,\n MatTabLabel,\n MatTab,\n MatInkBar,\n MatTabLabelWrapper,\n MatTabNav,\n MatTabLink,\n MatTabBody,\n MatTabBodyPortal,\n MatTabHeader,\n MatTabContent,\n ],\n})\nexport class MatTabsModule {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nexport * from './tab-nav-bar';\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nexport {MatTabsModule} from './tabs-module';\nexport * from './tab-group';\nexport {MatInkBar, _MatInkBarPositioner, _MAT_INK_BAR_POSITIONER} from './ink-bar';\nexport {\n MatTabBody,\n _MatTabBodyBase,\n MatTabBodyOriginState,\n MatTabBodyPositionState,\n MatTabBodyPortal\n} from './tab-body';\nexport {MatTabHeader, _MatTabHeaderBase} from './tab-header';\nexport {MatTabLabelWrapper} from './tab-label-wrapper';\nexport {MatTab, MAT_TAB_GROUP} from './tab';\nexport {MatTabLabel, MAT_TAB} from './tab-label';\nexport {MatTabNav, MatTabLink, _MatTabNavBase, _MatTabLinkBase} from './tab-nav-bar/index';\nexport {MatTabContent} from './tab-content';\nexport {ScrollDirection} from './paginated-tab-header';\nexport * from './tabs-animations';\nexport {MAT_TABS_CONFIG, MatTabsConfig} from './tab-config';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {_MAT_INK_BAR_POSITIONER_FACTORY as ɵangular_material_src_material_tabs_tabs_a} from './ink-bar';\nexport {MatPaginatedTabHeader as ɵangular_material_src_material_tabs_tabs_d} from './paginated-tab-header';\nexport {MAT_TAB_CONTENT as ɵangular_material_src_material_tabs_tabs_c} from './tab-content';\nexport {MAT_TAB_LABEL as ɵangular_material_src_material_tabs_tabs_b} from './tab-label';"]} |
---|