UNPKG

@catull/igniteui-angular

Version:

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

176 lines 17.9 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 = {})); var IgxRightButtonStyleDirective = /** @class */ (function () { function IgxRightButtonStyleDirective(tabs) { this.tabs = tabs; } Object.defineProperty(IgxRightButtonStyleDirective.prototype, "visibleCSS", { get: function () { return (this.getRightButtonStyle() === ButtonStyle.VISIBLE) ? true : false; }, enumerable: true, configurable: true }); Object.defineProperty(IgxRightButtonStyleDirective.prototype, "hiddenCSS", { get: function () { return (this.getRightButtonStyle() === ButtonStyle.HIDDEN) ? true : false; }, enumerable: true, configurable: true }); Object.defineProperty(IgxRightButtonStyleDirective.prototype, "notDisplayedCSS", { get: function () { return (this.getRightButtonStyle() === ButtonStyle.NOT_DISPLAYED) ? true : false; }, enumerable: true, configurable: true }); IgxRightButtonStyleDirective.prototype.getRightButtonStyle = function () { var 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. var itemsContainerChildrenCount = this.tabs.itemsContainer.nativeElement.children.length; var itemsContainerWidth = 0; if (itemsContainerChildrenCount > 1) { var lastTab = this.tabs.itemsContainer.nativeElement.children[itemsContainerChildrenCount - 2]; itemsContainerWidth = lastTab.offsetLeft + lastTab.offsetWidth; } var headerContainerWidth = this.tabs.headerContainer.nativeElement.offsetWidth; var offset = this.tabs.offset; var 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 = function () { return [ { 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); return IgxRightButtonStyleDirective; }()); export { IgxRightButtonStyleDirective }; var IgxLeftButtonStyleDirective = /** @class */ (function () { function IgxLeftButtonStyleDirective(tabs) { this.tabs = tabs; } Object.defineProperty(IgxLeftButtonStyleDirective.prototype, "visibleCSS", { get: function () { return (this.getLeftButtonStyle() === ButtonStyle.VISIBLE) ? true : false; }, enumerable: true, configurable: true }); Object.defineProperty(IgxLeftButtonStyleDirective.prototype, "hiddenCSS", { get: function () { return (this.getLeftButtonStyle() === ButtonStyle.HIDDEN) ? true : false; }, enumerable: true, configurable: true }); Object.defineProperty(IgxLeftButtonStyleDirective.prototype, "notDisplayedCSS", { get: function () { return (this.getLeftButtonStyle() === ButtonStyle.NOT_DISPLAYED) ? true : false; }, enumerable: true, configurable: true }); IgxLeftButtonStyleDirective.prototype.getLeftButtonStyle = function () { // We use this hacky way to get the width of the itemsContainer, // because there is inconsistency in IE we cannot use offsetWidth or scrollOffset. var itemsContainerChildrenCount = this.tabs.itemsContainer.nativeElement.children.length; var itemsContainerWidth = 0; if (itemsContainerChildrenCount > 1) { var lastTab = this.tabs.itemsContainer.nativeElement.children[itemsContainerChildrenCount - 2]; itemsContainerWidth = lastTab.offsetLeft + lastTab.offsetWidth; } var headerContainerWidth = this.tabs.headerContainer.nativeElement.offsetWidth; var 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 = function () { return [ { 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); return IgxLeftButtonStyleDirective; }()); export { IgxLeftButtonStyleDirective }; var IgxTabItemTemplateDirective = /** @class */ (function () { function IgxTabItemTemplateDirective(template) { this.template = template; } IgxTabItemTemplateDirective.ctorParameters = function () { return [ { type: TemplateRef } ]; }; IgxTabItemTemplateDirective = __decorate([ Directive({ selector: '[igxTab]' }), __metadata("design:paramtypes", [TemplateRef]) ], IgxTabItemTemplateDirective); return IgxTabItemTemplateDirective; }()); export { IgxTabItemTemplateDirective }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFicy5kaXJlY3RpdmVzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vaWduaXRldWktYW5ndWxhci8iLCJzb3VyY2VzIjpbImxpYi90YWJzL3RhYnMuZGlyZWN0aXZlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxXQUFXLEVBQ1gsV0FBVyxFQUNkLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFNUMsSUFBSyxXQUlKO0FBSkQsV0FBSyxXQUFXO0lBQ1osa0NBQW1CLENBQUE7SUFDbkIsZ0NBQWlCLENBQUE7SUFDakIsOENBQStCLENBQUE7QUFDbkMsQ0FBQyxFQUpJLFdBQVcsS0FBWCxXQUFXLFFBSWY7QUFNRDtJQUNJLHNDQUFtQixJQUFpQjtRQUFqQixTQUFJLEdBQUosSUFBSSxDQUFhO0lBQ3BDLENBQUM7SUFHRCxzQkFBSSxvREFBVTthQUFkO1lBQ0ksT0FBTyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxLQUFLLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDL0UsQ0FBQzs7O09BQUE7SUFHRCxzQkFBSSxtREFBUzthQUFiO1lBQ0ksT0FBTyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxLQUFLLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDOUUsQ0FBQzs7O09BQUE7SUFHRCxzQkFBSSx5REFBZTthQUFuQjtZQUNJLE9BQU8sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsS0FBSyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ3JGLENBQUM7OztPQUFBO0lBRU8sMERBQW1CLEdBQTNCO1FBQ0ksSUFBTSxhQUFh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QztJQUFELGtDQUFDO0NBQUEsQUFKRCxJQUlDO1NBSlksMkJBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBEaXJlY3RpdmUsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgVGVtcGxhdGVSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJZ3hUYWJzQmFzZSB9IGZyb20gJy4vdGFicy5jb21tb24nO1xuXG5lbnVtIEJ1dHRvblN0eWxlIHtcbiAgICBWSVNJQkxFID0gJ3Zpc2libGUnLFxuICAgIEhJRERFTiA9ICdoaWRkZW4nLFxuICAgIE5PVF9ESVNQTEFZRUQgPSAnbm90X2Rpc3BsYXllZCdcbn1cblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbaWd4UmlnaHRCdXR0b25TdHlsZV0nXG59KVxuXG5leHBvcnQgY2xhc3MgSWd4UmlnaHRCdXR0b25TdHlsZURpcmVjdGl2ZSB7XG4gICAgY29uc3RydWN0b3IocHVibGljIHRhYnM6IElneFRhYnNCYXNlKSB7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtdGFic19faGVhZGVyLWJ1dHRvbicpXG4gICAgZ2V0IHZpc2libGVDU1MoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAodGhpcy5nZXRSaWdodEJ1dHRvblN0eWxlKCkgPT09IEJ1dHRvblN0eWxlLlZJU0lCTEUpID8gdHJ1ZSA6IGZhbHNlO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LXRhYnNfX2hlYWRlci1idXR0b24tLWhpZGRlbicpXG4gICAgZ2V0IGhpZGRlbkNTUygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLmdldFJpZ2h0QnV0dG9uU3R5bGUoKSA9PT0gQnV0dG9uU3R5bGUuSElEREVOKSA/IHRydWUgOiBmYWxzZTtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC10YWJzX19oZWFkZXItYnV0dG9uLS1ub25lJylcbiAgICBnZXQgbm90RGlzcGxheWVkQ1NTKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKHRoaXMuZ2V0UmlnaHRCdXR0b25TdHlsZSgpID09PSBCdXR0b25TdHlsZS5OT1RfRElTUExBWUVEKSA/IHRydWUgOiBmYWxzZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFJpZ2h0QnV0dG9uU3R5bGUoKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3Qgdmlld1BvcnRXaWR0aCA9IHRoaXMudGFicy52aWV3UG9ydC5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xuXG4gICAgICAgIC8vIFdlIHVzZSB0aGlzIGhhY2t5IHdheSB0byBnZXQgdGhlIHdpZHRoIG9mIHRoZSBpdGVtc0NvbnRhaW5lcixcbiAgICAgICAgLy8gYmVjYXVzZSB0aGVyZSBpcyBpbmNvbnNpc3RlbmN5IGluIElFIHdlIGNhbm5vdCB1c2Ugb2Zmc2V0V2lkdGggb3Igc2Nyb2xsT2Zmc2V0LlxuICAgICAgICBjb25zdCBpdGVtc0NvbnRhaW5lckNoaWxkcmVuQ291bnQgPSB0aGlzLnRhYnMuaXRlbXNDb250YWluZXIubmF0aXZlRWxlbWVudC5jaGlsZHJlbi5sZW5ndGg7XG4gICAgICAgIGxldCBpdGVtc0NvbnRhaW5lcldpZHRoID0gMDtcbiAgICAgICAgaWYgKGl0ZW1zQ29udGFpbmVyQ2hpbGRyZW5Db3VudCA+IDEpIHtcbiAgICAgICAgICAgIGNvbnN0IGxhc3RUYWIgPSB0aGlzLnRhYnMuaXRlbXNDb250YWluZXIubmF0aXZlRWxlbWVudC5jaGlsZHJlbltpdGVtc0NvbnRhaW5lckNoaWxkcmVuQ291bnQgLSAyXTtcbiAgICAgICAgICAgIGl0ZW1zQ29udGFpbmVyV2lkdGggPSBsYXN0VGFiLm9mZnNldExlZnQgKyBsYXN0VGFiLm9mZnNldFdpZHRoO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGhlYWRlckNvbnRhaW5lcldpZHRoID0gdGhpcy50YWJzLmhlYWRlckNvbnRhaW5lci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xuICAgICAgICBjb25zdCBvZmZzZXQgPSB0aGlzLnRhYnMub2Zmc2V0O1xuICAgICAgICBjb25zdCB0b3RhbCA9IG9mZnNldCArIHZpZXdQb3J0V2lkdGg7XG5cbiAgICAgICAgLy8gRml4IGZvciBJRSAxMSwgYSBkaWZmZXJlbmNlIGlzIGFjY3VtdWxhdGVkIGZyb20gdGhlIHdpZHRocyBjYWxjdWxhdGlvbnMuXG4gICAgICAgIGlmIChpdGVtc0NvbnRhaW5lcldpZHRoIC0gaGVhZGVyQ29udGFpbmVyV2lkdGggPD0gMSAmJiBvZmZzZXQgPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBCdXR0b25TdHlsZS5OT1RfRElTUExBWUVEO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGl0ZW1zQ29udGFpbmVyV2lkdGggPiB0b3RhbCkge1xuICAgICAgICAgICAgcmV0dXJuIEJ1dHRvblN0eWxlLlZJU0lCTEU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gQnV0dG9uU3R5bGUuSElEREVOO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tpZ3hMZWZ0QnV0dG9uU3R5bGVdJ1xufSlcblxuZXhwb3J0IGNsYXNzIElneExlZnRCdXR0b25TdHlsZURpcmVjdGl2ZSB7XG4gICAgY29uc3RydWN0b3IocHVibGljIHRhYnM6IElneFRhYnNCYXNlKSB7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtdGFic19faGVhZGVyLWJ1dHRvbicpXG4gICAgZ2V0IHZpc2libGVDU1MoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAodGhpcy5nZXRMZWZ0QnV0dG9uU3R5bGUoKSA9PT0gQnV0dG9uU3R5bGUuVklTSUJMRSkgPyB0cnVlIDogZmFsc2U7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtdGFic19faGVhZGVyLWJ1dHRvbi0taGlkZGVuJylcbiAgICBnZXQgaGlkZGVuQ1NTKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKHRoaXMuZ2V0TGVmdEJ1dHRvblN0eWxlKCkgPT09IEJ1dHRvblN0eWxlLkhJRERFTikgPyB0cnVlIDogZmFsc2U7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtdGFic19faGVhZGVyLWJ1dHRvbi0tbm9uZScpXG4gICAgZ2V0IG5vdERpc3BsYXllZENTUygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLmdldExlZnRCdXR0b25TdHlsZSgpID09PSBCdXR0b25TdHlsZS5OT1RfRElTUExBWUVEKSA/IHRydWUgOiBmYWxzZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldExlZnRCdXR0b25TdHlsZSgpOiBzdHJpbmcge1xuICAgICAgICAvLyBXZSB1c2UgdGhpcyBoYWNreSB3YXkgdG8gZ2V0IHRoZSB3aWR0aCBvZiB0aGUgaXRlbXNDb250YWluZXIsXG4gICAgICAgIC8vIGJlY2F1c2UgdGhlcmUgaXMgaW5jb25zaXN0ZW5jeSBpbiBJRSB3ZSBjYW5ub3QgdXNlIG9mZnNldFdpZHRoIG9yIHNjcm9sbE9mZnNldC5cbiAgICAgICAgY29uc3QgaXRlbXNDb250YWluZXJDaGlsZHJlbkNvdW50ID0gdGhpcy50YWJzLml0ZW1zQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoO1xuICAgICAgICBsZXQgaXRlbXNDb250YWluZXJXaWR0aCA9IDA7XG4gICAgICAgIGlmIChpdGVtc0NvbnRhaW5lckNoaWxkcmVuQ291bnQgPiAxKSB7XG4gICAgICAgICAgICBjb25zdCBsYXN0VGFiID0gdGhpcy50YWJzLml0ZW1zQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW5baXRlbXNDb250YWluZXJDaGlsZHJlbkNvdW50IC0gMl07XG4gICAgICAgICAgICBpdGVtc0NvbnRhaW5lcldpZHRoID0gbGFzdFRhYi5vZmZzZXRMZWZ0ICsgbGFzdFRhYi5vZmZzZXRXaWR0aDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBoZWFkZXJDb250YWluZXJXaWR0aCA9IHRoaXMudGFicy5oZWFkZXJDb250YWluZXIubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gdGhpcy50YWJzLm9mZnNldDtcbiAgICAgICAgaWYgKG9mZnNldCA9PT0gMCkge1xuICAgICAgICAgICAgLy8gRml4IGZvciBJRSAxMSwgYSBkaWZmZXJlbmNlIGlzIGFjY3VtdWxhdGVkIGZyb20gdGhlIHdpZHRocyBjYWxjdWxhdGlvbnMuXG4gICAgICAgICAgICBpZiAoaXRlbXNDb250YWluZXJXaWR0aCAtIGhlYWRlckNvbnRhaW5lcldpZHRoIDw9IDEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gQnV0dG9uU3R5bGUuTk9UX0RJU1BMQVlFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBCdXR0b25TdHlsZS5ISURERU47XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gQnV0dG9uU3R5bGUuVklTSUJMRTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbaWd4VGFiXSdcbn0pXG5leHBvcnQgY2xhc3MgSWd4VGFiSXRlbVRlbXBsYXRlRGlyZWN0aXZlIHtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55Pikge1xuICAgIH1cbn1cbiJdfQ==