igniteui-angular
Version:
Ignite UI for Angular is a dependency-free Angular toolkit for building modern web apps
215 lines • 15.7 kB
JavaScript
/**
* @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