import { AnimationEvent } from '@angular/animations'; import { TemplatePortal } from '@angular/cdk/portal'; import { ElementRef, EventEmitter, OnDestroy, OnInit } from '@angular/core'; import { Subject } from 'rxjs'; /** * These position states are used internally as animation states for the tab body. Setting the position state to left, right, or center will * transition the tab body from its current position to its respective state. If there is not current position (void, in the case of a new * tab body), then there will be no transition animation to its state. * * In the case of a new tab body that should immediately be centered with an animating transition, then left-origin-center or * right-origin-center can be used, which will use left or right as its pseudo-prior state. */ export declare type TsTabBodyPositionState = 'left' | 'center' | 'right' | 'left-origin-center' | 'right-origin-center'; /** * The origin state is an internally used state that is set on a new tab body indicating if it began to the left or right of the prior * selected index. For example, if the selected index was set to 1, and a new tab is created and selected at index 2, then the tab body * would have an origin of right because its index was greater than the prior selected index. */ export declare type TsTabBodyOriginState = 'left' | 'right'; /** * A component that displays the tab content. * * NOTE: Only used internally. */ export declare class TsTabBodyComponent implements OnInit, OnDestroy { private elementRef; /** * A unique ID per instance */ protected id: number; /** * Current position of the tab-body in the tab-group. Zero means that the tab is visible. */ private positionIndex; /** * Emits when an animation on the tab is complete */ translateTabComplete: Subject; /** * Computes the position state based on the specified origin position. * This is used if the tab is becoming visible immediately after creation. */ private get computedPositionFromOrigin(); /** * Determine the computed position state that will be used for the tab-body animation trigger */ private get computedPositionAnimationState(); /** * The tab body content to display */ content: TemplatePortal; /** * Position that will be used when the tab is immediately becoming visible after creation */ origin: number | undefined; /** * The shifted index position of the tab body, where zero represents the active center tab. * * @param position */ set position(position: number); /** * Tab body position state. * Used by the animation trigger for the current state. * * NOTE: We cannot use a single getter/setter for position because the types are different */ positionState: TsTabBodyPositionState; /** * Event emitted when the tab begins to animate towards the center as the active tab */ readonly centering: EventEmitter; /** * Event emitted before the centering of the tab begins */ readonly beforeCentering: EventEmitter; /** * Event emitted after the tab has left the center position */ readonly afterLeavingCenter: EventEmitter; /** * Event emitted when the tab completes its animation towards the center */ readonly centered: EventEmitter; constructor(elementRef: ElementRef); /** * After initialized, check if the content is centered and has an origin. If so, set the special position states that transition the tab * from the left or right before centering. */ ngOnInit(): void; ngOnDestroy(): void; /** * Emit events when a tab translation begins * * @param event - The animation event */ onTranslateTabStarted(event: AnimationEvent): void; /** * Determine whether the provided position state is considered center (regardless of origin) * * @param position - The toState of the animation * @returns True if in a center position */ isCenterPosition(position: TsTabBodyPositionState | string): boolean; }