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