UNPKG

igniteui-angular

Version:

Ignite UI for Angular is a dependency-free Angular toolkit for building modern web apps

215 lines • 15.7 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Component, ElementRef, HostBinding, HostListener, Input } from '@angular/core'; import { IgxTabsGroupComponent } from './tabs-group.component'; import { IgxTabsBase } from './tabs.common'; export class IgxTabItemComponent { // changes and updates accordingly applied to the tab. /** * @param {?} _tabs * @param {?} _element */ constructor(_tabs, _element) { this._tabs = _tabs; this._element = _element; this._changesCount = 0; // changes and updates accordingly applied to the tab. /** * @hidden */ this.role = 'tab'; this._nativeTabItem = _element; } /** * @hidden * @param {?} event * @return {?} */ onClick(event) { this.select(); } /** * @hidden * @param {?} event * @return {?} */ onResize(event) { if (this.isSelected) { this._tabs.selectedIndicator.nativeElement.style.width = `${this.nativeTabItem.nativeElement.offsetWidth}px`; this._tabs.selectedIndicator.nativeElement.style.transform = `translate(${this.nativeTabItem.nativeElement.offsetLeft}px)`; } } /** * @hidden * @param {?} event * @return {?} */ onKeydownArrowRight(event) { this.onKeyDown(false); } /** * @hidden * @param {?} event * @return {?} */ onKeydownArrowLeft(event) { this.onKeyDown(true); } /** * @hidden * @param {?} event * @return {?} */ onKeydownHome(event) { event.preventDefault(); this.onKeyDown(false, 0); } /** * @hidden * @param {?} event * @return {?} */ onKeydownEnd(event) { event.preventDefault(); this.onKeyDown(false, this._tabs.tabs.toArray().length - 1); } /** * @hidden * @return {?} */ get changesCount() { return this._changesCount; } /** * @hidden * @return {?} */ get nativeTabItem() { return this._nativeTabItem; } /** * Gets whether the tab is disabled. * ``` * const disabledItem = this.myTabComponent.tabs.first.disabled; * ``` * @return {?} */ get disabled() { /** @type {?} */ const group = this.relatedGroup; if (group) { return group.disabled; } } /** * Gets whether the tab is selected. * ```typescript * const selectedItem = this.myTabComponent.tabs.first.isSelected; * ``` * @return {?} */ get isSelected() { /** @type {?} */ const group = this.relatedGroup; if (group) { return group.isSelected; } } /** * @hidden * @return {?} */ get index() { return this._tabs.tabs.toArray().indexOf(this); } /** * @hidden * @param {?=} focusDelay * @return {?} */ select(focusDelay = 200) { this.relatedGroup.select(focusDelay); } /** * @private * @param {?} isLeftArrow * @param {?=} index * @return {?} */ onKeyDown(isLeftArrow, index = null) { /** @type {?} */ const tabsArray = this._tabs.tabs.toArray(); if (index === null) { index = (isLeftArrow) ? (this._tabs.selectedIndex === 0) ? tabsArray.length - 1 : this._tabs.selectedIndex - 1 : (this._tabs.selectedIndex === tabsArray.length - 1) ? 0 : this._tabs.selectedIndex + 1; } /** @type {?} */ const tab = tabsArray[index]; tab.select(200); } } IgxTabItemComponent.decorators = [ { type: Component, args: [{ selector: 'igx-tab-item', template: "<ng-template #defaultTabTemplate>\n <div *ngIf=\"relatedGroup.icon\" class=\"igx-tabs__header-menu-item-icon\">\n <igx-icon fontSet=\"material\">{{relatedGroup.icon}}</igx-icon>\n <igx-badge [value]=\"changesCount\" [hidden]=\"changesCount === 0\"></igx-badge>\n </div>\n <div *ngIf=\"relatedGroup.label\" ngClass=\"igx-tabs__item-label\">{{relatedGroup.label}}</div>\n</ng-template>\n<ng-container\n *ngTemplateOutlet=\"relatedGroup.customTabTemplate ? relatedGroup.customTabTemplate : defaultTabTemplate; context: { $implicit: relatedGroup }\">\n</ng-container>" }] } ]; /** @nocollapse */ IgxTabItemComponent.ctorParameters = () => [ { type: IgxTabsBase }, { type: ElementRef } ]; IgxTabItemComponent.propDecorators = { relatedGroup: [{ type: Input }], role: [{ type: HostBinding, args: ['attr.role',] }], tabindex: [{ type: HostBinding, args: ['attr.tabindex',] }], onClick: [{ type: HostListener, args: ['click', ['$event'],] }], onResize: [{ type: HostListener, args: ['window:resize', ['$event'],] }], onKeydownArrowRight: [{ type: HostListener, args: ['keydown.arrowright', ['$event'],] }], onKeydownArrowLeft: [{ type: HostListener, args: ['keydown.arrowleft', ['$event'],] }], onKeydownHome: [{ type: HostListener, args: ['keydown.home', ['$event'],] }], onKeydownEnd: [{ type: HostListener, args: ['keydown.end', ['$event'],] }] }; if (false) { /** * Gets the group associated with the tab. * ```html * const relatedGroup = this.tabbar.tabs.toArray()[1].relatedGroup; * ``` * @type {?} */ IgxTabItemComponent.prototype.relatedGroup; /** * @type {?} * @private */ IgxTabItemComponent.prototype._nativeTabItem; /** * @type {?} * @private */ IgxTabItemComponent.prototype._changesCount; /** * @hidden * @type {?} */ IgxTabItemComponent.prototype.role; /** * @hidden * @type {?} */ IgxTabItemComponent.prototype.tabindex; /** * @type {?} * @private */ IgxTabItemComponent.prototype._tabs; /** * @type {?} * @private */ IgxTabItemComponent.prototype._element; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vaWduaXRldWktYW5ndWxhci8iLCJzb3VyY2VzIjpbImxpYi90YWJzL3RhYi1pdGVtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxVQUFVLEVBQ1YsV0FBVyxFQUNYLFlBQVksRUFDWixLQUFLLEVBQ1IsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDL0QsT0FBTyxFQUFrQixXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFPNUQsTUFBTSxPQUFPLG1CQUFtQjs7Ozs7O0lBYzVCLFlBQW9CLEtBQWtCLEVBQVUsUUFBb0I7UUFBaEQsVUFBSyxHQUFMLEtBQUssQ0FBYTtRQUFVLGFBQVEsR0FBUixRQUFRLENBQVk7UUFGNUQsa0JBQWEsR0FBRyxDQUFDLENBQUMsQ0FBQyxzREFBc0Q7Ozs7UUFVMUUsU0FBSSxHQUFHLEtBQUssQ0FBQztRQVBoQixJQUFJLENBQUMsY0FBYyxHQUFHLFFBQVEsQ0FBQztJQUNuQyxDQUFDOzs7Ozs7SUFrQk0sT0FBTyxDQUFDLEtBQUs7UUFDaEIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2xCLENBQUM7Ozs7OztJQU1NLFFBQVEsQ0FBQyxLQUFLO1FBQ2pCLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNqQixJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsV0FBVyxJQUFJLENBQUM7WUFDN0csSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxhQUFhLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLFVBQVUsS0FBSyxD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WUFBWSxTQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQztrQ0FXeEMsWUFBWSxTQUFDLG9CQUFvQixFQUFFLENBQUMsUUFBUSxDQUFDO2lDQVE3QyxZQUFZLFNBQUMsbUJBQW1CLEVBQUUsQ0FBQyxRQUFRLENBQUM7NEJBUTVDLFlBQVksU0FBQyxjQUFjLEVBQUUsQ0FBQyxRQUFRLENBQUM7MkJBU3ZDLFlBQVksU0FBQyxhQUFhLEVBQUUsQ0FBQyxRQUFRLENBQUM7Ozs7Ozs7Ozs7SUFyRXZDLDJDQUMyQzs7Ozs7SUFFM0MsNkNBQW1DOzs7OztJQUNuQyw0Q0FBMEI7Ozs7O0lBUzFCLG1DQUNvQjs7Ozs7SUFLcEIsdUNBQ2dCOzs7OztJQWRKLG9DQUEwQjs7Ozs7SUFBRSx1Q0FBNEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbnB1dFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgSWd4VGFic0dyb3VwQ29tcG9uZW50IH0gZnJvbSAnLi90YWJzLWdyb3VwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJZ3hUYWJJdGVtQmFzZSwgSWd4VGFic0Jhc2UgfSBmcm9tICcuL3RhYnMuY29tbW9uJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdpZ3gtdGFiLWl0ZW0nLFxuICAgIHRlbXBsYXRlVXJsOiAndGFiLWl0ZW0uY29tcG9uZW50Lmh0bWwnXG59KVxuXG5leHBvcnQgY2xhc3MgSWd4VGFiSXRlbUNvbXBvbmVudCBpbXBsZW1lbnRzIElneFRhYkl0ZW1CYXNlIHtcblxuICAgIC8qKlxuICAgICogR2V0cyB0aGUgZ3JvdXAgYXNzb2NpYXRlZCB3aXRoIHRoZSB0YWIuXG4gICAgKiBgYGBodG1sXG4gICAgKiBjb25zdCByZWxhdGVkR3JvdXAgPSB0aGlzLnRhYmJhci50YWJzLnRvQXJyYXkoKVsxXS5yZWxhdGVkR3JvdXA7XG4gICAgKiBgYGBcbiAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHJlbGF0ZWRHcm91cDogSWd4VGFic0dyb3VwQ29tcG9uZW50O1xuXG4gICAgcHJpdmF0ZSBfbmF0aXZlVGFiSXRlbTogRWxlbWVudFJlZjtcbiAgICBwcml2YXRlIF9jaGFuZ2VzQ291bnQgPSAwOyAvLyBjaGFuZ2VzIGFuZCB1cGRhdGVzIGFjY29yZGluZ2x5IGFwcGxpZWQgdG8gdGhlIHRhYi5cblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX3RhYnM6IElneFRhYnNCYXNlLCBwcml2YXRlIF9lbGVtZW50OiBFbGVtZW50UmVmKSB7XG4gICAgICAgIHRoaXMuX25hdGl2ZVRhYkl0ZW0gPSBfZWxlbWVudDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLnJvbGUnKVxuICAgIHB1YmxpYyByb2xlID0gJ3RhYic7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLnRhYmluZGV4JylcbiAgICBwdWJsaWMgdGFiaW5kZXg7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxuICAgIHB1YmxpYyBvbkNsaWNrKGV2ZW50KSB7XG4gICAgICAgIHRoaXMuc2VsZWN0KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnLCBbJyRldmVudCddKVxuICAgIHB1YmxpYyBvblJlc2l6ZShldmVudCkge1xuICAgICAgICBpZiAodGhpcy5pc1NlbGVjdGVkKSB7XG4gICAgICAgICAgICB0aGlzLl90YWJzLnNlbGVjdGVkSW5kaWNhdG9yLm5hdGl2ZUVsZW1lbnQuc3R5bGUud2lkdGggPSBgJHt0aGlzLm5hdGl2ZVRhYkl0ZW0ubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aH1weGA7XG4gICAgICAgICAgICB0aGlzLl90YWJzLnNlbGVjdGVkSW5kaWNhdG9yLm5hdGl2ZUVsZW1lbnQuc3R5bGUudHJhbnNmb3JtID0gYHRyYW5zbGF0ZSgke3RoaXMubmF0aXZlVGFiSXRlbS5uYXRpdmVFbGVtZW50Lm9mZnNldExlZnR9cHgpYDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmFycm93cmlnaHQnLCBbJyRldmVudCddKVxuICAgIHB1YmxpYyBvbktleWRvd25BcnJvd1JpZ2h0KGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIHRoaXMub25LZXlEb3duKGZhbHNlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5hcnJvd2xlZnQnLCBbJyRldmVudCddKVxuICAgIHB1YmxpYyBvbktleWRvd25BcnJvd0xlZnQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgdGhpcy5vbktleURvd24odHJ1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uaG9tZScsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIG9uS2V5ZG93bkhvbWUoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5vbktleURvd24oZmFsc2UsIDApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmVuZCcsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIG9uS2V5ZG93bkVuZChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLm9uS2V5RG93bihmYWxzZSwgdGhpcy5fdGFicy50YWJzLnRvQXJyYXkoKS5sZW5ndGggLSAxKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgZ2V0IGNoYW5nZXNDb3VudCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2hhbmdlc0NvdW50O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBnZXQgbmF0aXZlVGFiSXRlbSgpOiBFbGVtZW50UmVmIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX25hdGl2ZVRhYkl0ZW07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgKiBcdEdldHMgd2hldGhlciB0aGUgdGFiIGlzIGRpc2FibGVkLlxuICAgICogYGBgXG4gICAgKiBjb25zdCBkaXNhYmxlZEl0ZW0gPSB0aGlzLm15VGFiQ29tcG9uZW50LnRhYnMuZmlyc3QuZGlzYWJsZWQ7XG4gICAgKiBgYGBcbiAgICAqL1xuICAgIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgZ3JvdXAgPSB0aGlzLnJlbGF0ZWRHcm91cDtcblxuICAgICAgICBpZiAoZ3JvdXApIHtcbiAgICAgICAgICAgIHJldHVybiBncm91cC5kaXNhYmxlZDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgd2hldGhlciB0aGUgdGFiIGlzIHNlbGVjdGVkLlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBjb25zdCBzZWxlY3RlZEl0ZW0gPSB0aGlzLm15VGFiQ29tcG9uZW50LnRhYnMuZmlyc3QuaXNTZWxlY3RlZDtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBnZXQgaXNTZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgZ3JvdXAgPSB0aGlzLnJlbGF0ZWRHcm91cDtcblxuICAgICAgICBpZiAoZ3JvdXApIHtcbiAgICAgICAgICAgIHJldHVybiBncm91cC5pc1NlbGVjdGVkO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIGdldCBpbmRleCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFicy50YWJzLnRvQXJyYXkoKS5pbmRleE9mKHRoaXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgc2VsZWN0KGZvY3VzRGVsYXkgPSAyMDApOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZWxhdGVkR3JvdXAuc2VsZWN0KGZvY3VzRGVsYXkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25LZXlEb3duKGlzTGVmdEFycm93OiBib29sZWFuLCBpbmRleCA9IG51bGwpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdGFic0FycmF5ID0gdGhpcy5fdGFicy50YWJzLnRvQXJyYXkoKTtcbiAgICAgICAgaWYgKGluZGV4ID09PSBudWxsKSB7XG4gICAgICAgICAgICBpbmRleCA9IChpc0xlZnRBcnJvdylcbiAgICAgICAgICAgICAgICA/ICh0aGlzLl90YWJzLnNlbGVjdGVkSW5kZXggPT09IDApID8gdGFic0FycmF5Lmxlbmd0aCAtIDEgOiB0aGlzLl90YWJzLnNlbGVjdGVkSW5kZXggLSAxXG4gICAgICAgICAgICAgICAgOiAodGhpcy5fdGFicy5zZWxlY3RlZEluZGV4ID09PSB0YWJzQXJyYXkubGVuZ3RoIC0gMSkgPyAwIDogdGhpcy5fdGFicy5zZWxlY3RlZEluZGV4ICsgMTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB0YWIgPSB0YWJzQXJyYXlbaW5kZXhdO1xuICAgICAgICB0YWIuc2VsZWN0KDIwMCk7XG4gICAgfVxufVxuIl19