UNPKG

@catull/igniteui-angular

Version:

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

149 lines 16.4 kB
import { __decorate, __metadata } from "tslib"; import { Directive, HostBinding, TemplateRef } from '@angular/core'; import { IgxTabsBase } from './tabs.common'; var ButtonStyle; (function (ButtonStyle) { ButtonStyle["VISIBLE"] = "visible"; ButtonStyle["HIDDEN"] = "hidden"; ButtonStyle["NOT_DISPLAYED"] = "not_displayed"; })(ButtonStyle || (ButtonStyle = {})); let IgxRightButtonStyleDirective = class IgxRightButtonStyleDirective { constructor(tabs) { this.tabs = tabs; } get visibleCSS() { return (this.getRightButtonStyle() === ButtonStyle.VISIBLE) ? true : false; } get hiddenCSS() { return (this.getRightButtonStyle() === ButtonStyle.HIDDEN) ? true : false; } get notDisplayedCSS() { return (this.getRightButtonStyle() === ButtonStyle.NOT_DISPLAYED) ? true : false; } getRightButtonStyle() { const viewPortWidth = this.tabs.viewPort.nativeElement.offsetWidth; // We use this hacky way to get the width of the itemsContainer, // because there is inconsistency in IE we cannot use offsetWidth or scrollOffset. const itemsContainerChildrenCount = this.tabs.itemsContainer.nativeElement.children.length; let itemsContainerWidth = 0; if (itemsContainerChildrenCount > 1) { const lastTab = this.tabs.itemsContainer.nativeElement.children[itemsContainerChildrenCount - 2]; itemsContainerWidth = lastTab.offsetLeft + lastTab.offsetWidth; } const headerContainerWidth = this.tabs.headerContainer.nativeElement.offsetWidth; const offset = this.tabs.offset; const total = offset + viewPortWidth; // Fix for IE 11, a difference is accumulated from the widths calculations. if (itemsContainerWidth - headerContainerWidth <= 1 && offset === 0) { return ButtonStyle.NOT_DISPLAYED; } if (itemsContainerWidth > total) { return ButtonStyle.VISIBLE; } else { return ButtonStyle.HIDDEN; } } }; IgxRightButtonStyleDirective.ctorParameters = () => [ { type: IgxTabsBase } ]; __decorate([ HostBinding('class.igx-tabs__header-button'), __metadata("design:type", Boolean), __metadata("design:paramtypes", []) ], IgxRightButtonStyleDirective.prototype, "visibleCSS", null); __decorate([ HostBinding('class.igx-tabs__header-button--hidden'), __metadata("design:type", Boolean), __metadata("design:paramtypes", []) ], IgxRightButtonStyleDirective.prototype, "hiddenCSS", null); __decorate([ HostBinding('class.igx-tabs__header-button--none'), __metadata("design:type", Boolean), __metadata("design:paramtypes", []) ], IgxRightButtonStyleDirective.prototype, "notDisplayedCSS", null); IgxRightButtonStyleDirective = __decorate([ Directive({ selector: '[igxRightButtonStyle]' }), __metadata("design:paramtypes", [IgxTabsBase]) ], IgxRightButtonStyleDirective); export { IgxRightButtonStyleDirective }; let IgxLeftButtonStyleDirective = class IgxLeftButtonStyleDirective { constructor(tabs) { this.tabs = tabs; } get visibleCSS() { return (this.getLeftButtonStyle() === ButtonStyle.VISIBLE) ? true : false; } get hiddenCSS() { return (this.getLeftButtonStyle() === ButtonStyle.HIDDEN) ? true : false; } get notDisplayedCSS() { return (this.getLeftButtonStyle() === ButtonStyle.NOT_DISPLAYED) ? true : false; } getLeftButtonStyle() { // We use this hacky way to get the width of the itemsContainer, // because there is inconsistency in IE we cannot use offsetWidth or scrollOffset. const itemsContainerChildrenCount = this.tabs.itemsContainer.nativeElement.children.length; let itemsContainerWidth = 0; if (itemsContainerChildrenCount > 1) { const lastTab = this.tabs.itemsContainer.nativeElement.children[itemsContainerChildrenCount - 2]; itemsContainerWidth = lastTab.offsetLeft + lastTab.offsetWidth; } const headerContainerWidth = this.tabs.headerContainer.nativeElement.offsetWidth; const offset = this.tabs.offset; if (offset === 0) { // Fix for IE 11, a difference is accumulated from the widths calculations. if (itemsContainerWidth - headerContainerWidth <= 1) { return ButtonStyle.NOT_DISPLAYED; } return ButtonStyle.HIDDEN; } else { return ButtonStyle.VISIBLE; } } }; IgxLeftButtonStyleDirective.ctorParameters = () => [ { type: IgxTabsBase } ]; __decorate([ HostBinding('class.igx-tabs__header-button'), __metadata("design:type", Boolean), __metadata("design:paramtypes", []) ], IgxLeftButtonStyleDirective.prototype, "visibleCSS", null); __decorate([ HostBinding('class.igx-tabs__header-button--hidden'), __metadata("design:type", Boolean), __metadata("design:paramtypes", []) ], IgxLeftButtonStyleDirective.prototype, "hiddenCSS", null); __decorate([ HostBinding('class.igx-tabs__header-button--none'), __metadata("design:type", Boolean), __metadata("design:paramtypes", []) ], IgxLeftButtonStyleDirective.prototype, "notDisplayedCSS", null); IgxLeftButtonStyleDirective = __decorate([ Directive({ selector: '[igxLeftButtonStyle]' }), __metadata("design:paramtypes", [IgxTabsBase]) ], IgxLeftButtonStyleDirective); export { IgxLeftButtonStyleDirective }; let IgxTabItemTemplateDirective = class IgxTabItemTemplateDirective { constructor(template) { this.template = template; } }; IgxTabItemTemplateDirective.ctorParameters = () => [ { type: TemplateRef } ]; IgxTabItemTemplateDirective = __decorate([ Directive({ selector: '[igxTab]' }), __metadata("design:paramtypes", [TemplateRef]) ], IgxTabItemTemplateDirective); export { IgxTabItemTemplateDirective }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFicy5kaXJlY3RpdmVzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vaWduaXRldWktYW5ndWxhci8iLCJzb3VyY2VzIjpbImxpYi90YWJzL3RhYnMuZGlyZWN0aXZlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxXQUFXLEVBQ1gsV0FBVyxFQUNkLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFNUMsSUFBSyxXQUlKO0FBSkQsV0FBSyxXQUFXO0lBQ1osa0NBQW1CLENBQUE7SUFDbkIsZ0NBQWlCLENBQUE7SUFDakIsOENBQStCLENBQUE7QUFDbkMsQ0FBQyxFQUpJLFdBQVcsS0FBWCxXQUFXLFFBSWY7QUFNRCxJQUFhLDRCQUE0QixHQUF6QyxNQUFhLDRCQUE0QjtJQUNyQyxZQUFtQixJQUFpQjtRQUFqQixTQUFJLEdBQUosSUFBSSxDQUFhO0lBQ3BDLENBQUM7SUFHRCxJQUFJLFVBQVU7UUFDVixPQUFPLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLEtBQUssV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUMvRSxDQUFDO0lBR0QsSUFBSSxTQUFTO1FBQ1QsT0FBTyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxLQUFLLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDOUUsQ0FBQztJQUdELElBQUksZUFBZTtRQUNmLE9BQU8sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsS0FBSyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ3JGLENBQUM7SUFFTyxtQkFBbUI7UUFDdkIsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLElB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bXBvcnQge1xuICAgIERpcmVjdGl2ZSxcbiAgICBIb3N0QmluZGluZyxcbiAgICBUZW1wbGF0ZVJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElneFRhYnNCYXNlIH0gZnJvbSAnLi90YWJzLmNvbW1vbic7XG5cbmVudW0gQnV0dG9uU3R5bGUge1xuICAgIFZJU0lCTEUgPSAndmlzaWJsZScsXG4gICAgSElEREVOID0gJ2hpZGRlbicsXG4gICAgTk9UX0RJU1BMQVlFRCA9ICdub3RfZGlzcGxheWVkJ1xufVxuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tpZ3hSaWdodEJ1dHRvblN0eWxlXSdcbn0pXG5cbmV4cG9ydCBjbGFzcyBJZ3hSaWdodEJ1dHRvblN0eWxlRGlyZWN0aXZlIHtcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgdGFiczogSWd4VGFic0Jhc2UpIHtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC10YWJzX19oZWFkZXItYnV0dG9uJylcbiAgICBnZXQgdmlzaWJsZUNTUygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLmdldFJpZ2h0QnV0dG9uU3R5bGUoKSA9PT0gQnV0dG9uU3R5bGUuVklTSUJMRSkgPyB0cnVlIDogZmFsc2U7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtdGFic19faGVhZGVyLWJ1dHRvbi0taGlkZGVuJylcbiAgICBnZXQgaGlkZGVuQ1NTKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKHRoaXMuZ2V0UmlnaHRCdXR0b25TdHlsZSgpID09PSBCdXR0b25TdHlsZS5ISURERU4pID8gdHJ1ZSA6IGZhbHNlO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LXRhYnNfX2hlYWRlci1idXR0b24tLW5vbmUnKVxuICAgIGdldCBub3REaXNwbGF5ZWRDU1MoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAodGhpcy5nZXRSaWdodEJ1dHRvblN0eWxlKCkgPT09IEJ1dHRvblN0eWxlLk5PVF9ESVNQTEFZRUQpID8gdHJ1ZSA6IGZhbHNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0UmlnaHRCdXR0b25TdHlsZSgpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCB2aWV3UG9ydFdpZHRoID0gdGhpcy50YWJzLnZpZXdQb3J0Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XG5cbiAgICAgICAgLy8gV2UgdXNlIHRoaXMgaGFja3kgd2F5IHRvIGdldCB0aGUgd2lkdGggb2YgdGhlIGl0ZW1zQ29udGFpbmVyLFxuICAgICAgICAvLyBiZWNhdXNlIHRoZXJlIGlzIGluY29uc2lzdGVuY3kgaW4gSUUgd2UgY2Fubm90IHVzZSBvZmZzZXRXaWR0aCBvciBzY3JvbGxPZmZzZXQuXG4gICAgICAgIGNvbnN0IGl0ZW1zQ29udGFpbmVyQ2hpbGRyZW5Db3VudCA9IHRoaXMudGFicy5pdGVtc0NvbnRhaW5lci5uYXRpdmVFbGVtZW50LmNoaWxkcmVuLmxlbmd0aDtcbiAgICAgICAgbGV0IGl0ZW1zQ29udGFpbmVyV2lkdGggPSAwO1xuICAgICAgICBpZiAoaXRlbXNDb250YWluZXJDaGlsZHJlbkNvdW50ID4gMSkge1xuICAgICAgICAgICAgY29uc3QgbGFzdFRhYiA9IHRoaXMudGFicy5pdGVtc0NvbnRhaW5lci5uYXRpdmVFbGVtZW50LmNoaWxkcmVuW2l0ZW1zQ29udGFpbmVyQ2hpbGRyZW5Db3VudCAtIDJdO1xuICAgICAgICAgICAgaXRlbXNDb250YWluZXJXaWR0aCA9IGxhc3RUYWIub2Zmc2V0TGVmdCArIGxhc3RUYWIub2Zmc2V0V2lkdGg7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaGVhZGVyQ29udGFpbmVyV2lkdGggPSB0aGlzLnRhYnMuaGVhZGVyQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IHRoaXMudGFicy5vZmZzZXQ7XG4gICAgICAgIGNvbnN0IHRvdGFsID0gb2Zmc2V0ICsgdmlld1BvcnRXaWR0aDtcblxuICAgICAgICAvLyBGaXggZm9yIElFIDExLCBhIGRpZmZlcmVuY2UgaXMgYWNjdW11bGF0ZWQgZnJvbSB0aGUgd2lkdGhzIGNhbGN1bGF0aW9ucy5cbiAgICAgICAgaWYgKGl0ZW1zQ29udGFpbmVyV2lkdGggLSBoZWFkZXJDb250YWluZXJXaWR0aCA8PSAxICYmIG9mZnNldCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIEJ1dHRvblN0eWxlLk5PVF9ESVNQTEFZRUQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXRlbXNDb250YWluZXJXaWR0aCA+IHRvdGFsKSB7XG4gICAgICAgICAgICByZXR1cm4gQnV0dG9uU3R5bGUuVklTSUJMRTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBCdXR0b25TdHlsZS5ISURERU47XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2lneExlZnRCdXR0b25TdHlsZV0nXG59KVxuXG5leHBvcnQgY2xhc3MgSWd4TGVmdEJ1dHRvblN0eWxlRGlyZWN0aXZlIHtcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgdGFiczogSWd4VGFic0Jhc2UpIHtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC10YWJzX19oZWFkZXItYnV0dG9uJylcbiAgICBnZXQgdmlzaWJsZUNTUygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLmdldExlZnRCdXR0b25TdHlsZSgpID09PSBCdXR0b25TdHlsZS5WSVNJQkxFKSA/IHRydWUgOiBmYWxzZTtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC10YWJzX19oZWFkZXItYnV0dG9uLS1oaWRkZW4nKVxuICAgIGdldCBoaWRkZW5DU1MoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAodGhpcy5nZXRMZWZ0QnV0dG9uU3R5bGUoKSA9PT0gQnV0dG9uU3R5bGUuSElEREVOKSA/IHRydWUgOiBmYWxzZTtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC10YWJzX19oZWFkZXItYnV0dG9uLS1ub25lJylcbiAgICBnZXQgbm90RGlzcGxheWVkQ1NTKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKHRoaXMuZ2V0TGVmdEJ1dHRvblN0eWxlKCkgPT09IEJ1dHRvblN0eWxlLk5PVF9ESVNQTEFZRUQpID8gdHJ1ZSA6IGZhbHNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0TGVmdEJ1dHRvblN0eWxlKCk6IHN0cmluZyB7XG4gICAgICAgIC8vIFdlIHVzZSB0aGlzIGhhY2t5IHdheSB0byBnZXQgdGhlIHdpZHRoIG9mIHRoZSBpdGVtc0NvbnRhaW5lcixcbiAgICAgICAgLy8gYmVjYXVzZSB0aGVyZSBpcyBpbmNvbnNpc3RlbmN5IGluIElFIHdlIGNhbm5vdCB1c2Ugb2Zmc2V0V2lkdGggb3Igc2Nyb2xsT2Zmc2V0LlxuICAgICAgICBjb25zdCBpdGVtc0NvbnRhaW5lckNoaWxkcmVuQ291bnQgPSB0aGlzLnRhYnMuaXRlbXNDb250YWluZXIubmF0aXZlRWxlbWVudC5jaGlsZHJlbi5sZW5ndGg7XG4gICAgICAgIGxldCBpdGVtc0NvbnRhaW5lcldpZHRoID0gMDtcbiAgICAgICAgaWYgKGl0ZW1zQ29udGFpbmVyQ2hpbGRyZW5Db3VudCA+IDEpIHtcbiAgICAgICAgICAgIGNvbnN0IGxhc3RUYWIgPSB0aGlzLnRhYnMuaXRlbXNDb250YWluZXIubmF0aXZlRWxlbWVudC5jaGlsZHJlbltpdGVtc0NvbnRhaW5lckNoaWxkcmVuQ291bnQgLSAyXTtcbiAgICAgICAgICAgIGl0ZW1zQ29udGFpbmVyV2lkdGggPSBsYXN0VGFiLm9mZnNldExlZnQgKyBsYXN0VGFiLm9mZnNldFdpZHRoO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGhlYWRlckNvbnRhaW5lcldpZHRoID0gdGhpcy50YWJzLmhlYWRlckNvbnRhaW5lci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xuICAgICAgICBjb25zdCBvZmZzZXQgPSB0aGlzLnRhYnMub2Zmc2V0O1xuICAgICAgICBpZiAob2Zmc2V0ID09PSAwKSB7XG4gICAgICAgICAgICAvLyBGaXggZm9yIElFIDExLCBhIGRpZmZlcmVuY2UgaXMgYWNjdW11bGF0ZWQgZnJvbSB0aGUgd2lkdGhzIGNhbGN1bGF0aW9ucy5cbiAgICAgICAgICAgIGlmIChpdGVtc0NvbnRhaW5lcldpZHRoIC0gaGVhZGVyQ29udGFpbmVyV2lkdGggPD0gMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBCdXR0b25TdHlsZS5OT1RfRElTUExBWUVEO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIEJ1dHRvblN0eWxlLkhJRERFTjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBCdXR0b25TdHlsZS5WSVNJQkxFO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tpZ3hUYWJdJ1xufSlcbmV4cG9ydCBjbGFzcyBJZ3hUYWJJdGVtVGVtcGxhdGVEaXJlY3RpdmUge1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+KSB7XG4gICAgfVxufVxuIl19