UNPKG

carbon-components-angular

Version:
127 lines 11.7 kB
import { Directive, Input, EventEmitter, Output, HostBinding, HostListener } from "@angular/core"; import * as i0 from "@angular/core"; export class TabHeader { constructor(host) { this.host = host; /** * Indicates whether the `Tab` is active/selected. * Determines whether it's `TabPanel` is rendered. */ this.active = false; /** * Indicates whether or not the `Tab` item is disabled. */ this.disabled = false; this.type = "button"; this.ariaSelected = this.active; this.ariaDisabled = this.disabled; this.navItem = true; this.navLink = true; /** * Value 'selected' to be emitted after a new `Tab` is selected. */ this.selected = new EventEmitter(); this._cacheActive = false; } get tabIndex() { return this.active ? 0 : -1; } get isSelected() { return this.active; } get isDisabled() { return this.disabled; } /** * Set to 'true' to have pane reference cached and not reloaded on tab switching. */ set cacheActive(shouldCache) { this._cacheActive = shouldCache; // Updates the pane references associated with the tab header when cache active is changed. if (this.paneReference) { this.paneReference.cacheActive = this.cacheActive; } } set paneTabIndex(tabIndex) { if (this.paneReference) { this.paneReference.tabIndex = tabIndex; } } get cacheActive() { return this._cacheActive; } onClick() { this.selectTab(); } ngAfterViewInit() { setTimeout(() => { this.title = this.title ? this.title : this.host.nativeElement.textContent; }); } selectTab() { this.focus(); if (!this.disabled) { this.selected.emit(); this.active = true; if (this.paneReference) { this.paneReference.active = true; } } } focus() { this.host.nativeElement.focus(); } } TabHeader.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TabHeader, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); TabHeader.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.3.0", type: TabHeader, selector: "[cdsTabHeader], [ibmTabHeader]", inputs: { cacheActive: "cacheActive", paneTabIndex: "paneTabIndex", active: "active", disabled: "disabled", paneReference: "paneReference", title: "title" }, outputs: { selected: "selected" }, host: { listeners: { "click": "onClick()" }, properties: { "attr.tabIndex": "this.tabIndex", "class.cds--tabs__nav-item--selected": "this.isSelected", "class.cds--tabs__nav-item--disabled": "this.isDisabled", "attr.type": "this.type", "attr.aria-selected": "this.ariaSelected", "attr.aria-disabled": "this.ariaDisabled", "class.cds--tabs__nav-item": "this.navItem", "class.cds--tabs__nav-link": "this.navLink", "attr.title": "this.title" } }, ngImport: i0 }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TabHeader, decorators: [{ type: Directive, args: [{ selector: "[cdsTabHeader], [ibmTabHeader]" }] }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { tabIndex: [{ type: HostBinding, args: ["attr.tabIndex"] }], isSelected: [{ type: HostBinding, args: ["class.cds--tabs__nav-item--selected"] }], isDisabled: [{ type: HostBinding, args: ["class.cds--tabs__nav-item--disabled"] }], cacheActive: [{ type: Input }], paneTabIndex: [{ type: Input }], active: [{ type: Input }], disabled: [{ type: Input }], type: [{ type: HostBinding, args: ["attr.type"] }], ariaSelected: [{ type: HostBinding, args: ["attr.aria-selected"] }], ariaDisabled: [{ type: HostBinding, args: ["attr.aria-disabled"] }], navItem: [{ type: HostBinding, args: ["class.cds--tabs__nav-item"] }], navLink: [{ type: HostBinding, args: ["class.cds--tabs__nav-link"] }], paneReference: [{ type: Input }], title: [{ type: HostBinding, args: ["attr.title"] }, { type: Input }], selected: [{ type: Output }], onClick: [{ type: HostListener, args: ["click"] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWhlYWRlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGFicy90YWItaGVhZGVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sU0FBUyxFQUNULEtBQUssRUFFTCxZQUFZLEVBQ1osTUFBTSxFQUVOLFdBQVcsRUFDWCxZQUFZLEVBQ1osTUFBTSxlQUFlLENBQUM7O0FBT3ZCLE1BQU0sT0FBTyxTQUFTO0lBK0RyQixZQUFvQixJQUFnQjtRQUFoQixTQUFJLEdBQUosSUFBSSxDQUFZO1FBOUJwQzs7O1dBR0c7UUFDTSxXQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3hCOztXQUVHO1FBQ00sYUFBUSxHQUFHLEtBQUssQ0FBQztRQUVBLFNBQUksR0FBRyxRQUFRLENBQUM7UUFDUCxpQkFBWSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDM0IsaUJBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ3RCLFlBQU8sR0FBRyxJQUFJLENBQUM7UUFDZixZQUFPLEdBQUcsSUFBSSxDQUFDO1FBUXpEOztXQUVHO1FBRU8sYUFBUSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFFbkMsaUJBQVksR0FBRyxLQUFLLENBQUM7SUFFUSxDQUFDO0lBOUR4QyxJQUFrQyxRQUFRO1FBQ3pDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBd0QsVUFBVTtRQUNqRSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDcEIsQ0FBQztJQUVELElBQXdELFVBQVU7UUFDakUsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3RCLENBQUM7SUFDRDs7T0FFRztJQUNILElBQWEsV0FBVyxDQUFDLFdBQW9CO1FBQzVDLElBQUksQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDO1FBRWhDLDJGQUEyRjtRQUMzRixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDdkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztTQUNsRDtJQUNGLENBQUM7SUFFRCxJQUFhLFlBQVksQ0FBQyxRQUF1QjtRQUNoRCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDdkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1NBQ3ZDO0lBQ0YsQ0FBQztJQUVELElBQUksV0FBVztRQUNkLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMxQixDQUFDO0lBa0NELE9BQU87UUFDTixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUVELGVBQWU7UUFDZCxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2YsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUM7UUFDNUUsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDO0lBRUQsU0FBUztRQUNSLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ25CLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7WUFDbkIsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO2dCQUN2QixJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7YUFDakM7U0FDRDtJQUNGLENBQUM7SUFFRCxLQUFLO1FBQ0osSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDakMsQ0FBQzs7c0dBekZXLFNBQVM7MEZBQVQsU0FBUzsyRkFBVCxTQUFTO2tCQUhyQixTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSxnQ0FBZ0M7aUJBQzFDO2lHQUVrQyxRQUFRO3NCQUF6QyxXQUFXO3VCQUFDLGVBQWU7Z0JBSTRCLFVBQVU7c0JBQWpFLFdBQVc7dUJBQUMscUNBQXFDO2dCQUlNLFVBQVU7c0JBQWpFLFdBQVc7dUJBQUMscUNBQXFDO2dCQU1yQyxXQUFXO3NCQUF2QixLQUFLO2dCQVNPLFlBQVk7c0JBQXhCLEtBQUs7Z0JBYUcsTUFBTTtzQkFBZCxLQUFLO2dCQUlHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRW9CLElBQUk7c0JBQTdCLFdBQVc7dUJBQUMsV0FBVztnQkFDVyxZQUFZO3NCQUE5QyxXQUFXO3VCQUFDLG9CQUFvQjtnQkFDRSxZQUFZO3NCQUE5QyxXQUFXO3VCQUFDLG9CQUFvQjtnQkFDUyxPQUFPO3NCQUFoRCxXQUFXO3VCQUFDLDJCQUEyQjtnQkFDRSxPQUFPO3NCQUFoRCxXQUFXO3VCQUFDLDJCQUEyQjtnQkFLL0IsYUFBYTtzQkFBckIsS0FBSztnQkFDOEIsS0FBSztzQkFBeEMsV0FBVzt1QkFBQyxZQUFZOztzQkFBRyxLQUFLO2dCQU12QixRQUFRO3NCQUFqQixNQUFNO2dCQU9QLE9BQU87c0JBRE4sWUFBWTt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0RGlyZWN0aXZlLFxuXHRJbnB1dCxcblx0RWxlbWVudFJlZixcblx0RXZlbnRFbWl0dGVyLFxuXHRPdXRwdXQsXG5cdEFmdGVyVmlld0luaXQsXG5cdEhvc3RCaW5kaW5nLFxuXHRIb3N0TGlzdGVuZXJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcblxuaW1wb3J0IHsgVGFiIH0gZnJvbSBcIi4vdGFiLmNvbXBvbmVudFwiO1xuXG5ARGlyZWN0aXZlKHtcblx0c2VsZWN0b3I6IFwiW2Nkc1RhYkhlYWRlcl0sIFtpYm1UYWJIZWFkZXJdXCJcbn0pXG5leHBvcnQgY2xhc3MgVGFiSGVhZGVyIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG5cdEBIb3N0QmluZGluZyhcImF0dHIudGFiSW5kZXhcIikgZ2V0IHRhYkluZGV4KCkge1xuXHRcdHJldHVybiB0aGlzLmFjdGl2ZSA/IDAgOiAtMTtcblx0fVxuXG5cdEBIb3N0QmluZGluZyhcImNsYXNzLmNkcy0tdGFic19fbmF2LWl0ZW0tLXNlbGVjdGVkXCIpIGdldCBpc1NlbGVjdGVkKCkge1xuXHRcdHJldHVybiB0aGlzLmFjdGl2ZTtcblx0fVxuXG5cdEBIb3N0QmluZGluZyhcImNsYXNzLmNkcy0tdGFic19fbmF2LWl0ZW0tLWRpc2FibGVkXCIpIGdldCBpc0Rpc2FibGVkKCkge1xuXHRcdHJldHVybiB0aGlzLmRpc2FibGVkO1xuXHR9XG5cdC8qKlxuXHQgKiBTZXQgdG8gJ3RydWUnIHRvIGhhdmUgcGFuZSByZWZlcmVuY2UgY2FjaGVkIGFuZCBub3QgcmVsb2FkZWQgb24gdGFiIHN3aXRjaGluZy5cblx0ICovXG5cdEBJbnB1dCgpIHNldCBjYWNoZUFjdGl2ZShzaG91bGRDYWNoZTogYm9vbGVhbikge1xuXHRcdHRoaXMuX2NhY2hlQWN0aXZlID0gc2hvdWxkQ2FjaGU7XG5cblx0XHQvLyBVcGRhdGVzIHRoZSBwYW5lIHJlZmVyZW5jZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSB0YWIgaGVhZGVyIHdoZW4gY2FjaGUgYWN0aXZlIGlzIGNoYW5nZWQuXG5cdFx0aWYgKHRoaXMucGFuZVJlZmVyZW5jZSkge1xuXHRcdFx0dGhpcy5wYW5lUmVmZXJlbmNlLmNhY2hlQWN0aXZlID0gdGhpcy5jYWNoZUFjdGl2ZTtcblx0XHR9XG5cdH1cblxuXHRASW5wdXQoKSBzZXQgcGFuZVRhYkluZGV4KHRhYkluZGV4OiBudW1iZXIgfCBudWxsKSB7XG5cdFx0aWYgKHRoaXMucGFuZVJlZmVyZW5jZSkge1xuXHRcdFx0dGhpcy5wYW5lUmVmZXJlbmNlLnRhYkluZGV4ID0gdGFiSW5kZXg7XG5cdFx0fVxuXHR9XG5cblx0Z2V0IGNhY2hlQWN0aXZlKCkge1xuXHRcdHJldHVybiB0aGlzLl9jYWNoZUFjdGl2ZTtcblx0fVxuXHQvKipcblx0ICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGBUYWJgIGlzIGFjdGl2ZS9zZWxlY3RlZC5cblx0ICogRGV0ZXJtaW5lcyB3aGV0aGVyIGl0J3MgYFRhYlBhbmVsYCBpcyByZW5kZXJlZC5cblx0ICovXG5cdEBJbnB1dCgpIGFjdGl2ZSA9IGZhbHNlO1xuXHQvKipcblx0ICogSW5kaWNhdGVzIHdoZXRoZXIgb3Igbm90IHRoZSBgVGFiYCBpdGVtIGlzIGRpc2FibGVkLlxuXHQgKi9cblx0QElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcblxuXHRASG9zdEJpbmRpbmcoXCJhdHRyLnR5cGVcIikgdHlwZSA9IFwiYnV0dG9uXCI7XG5cdEBIb3N0QmluZGluZyhcImF0dHIuYXJpYS1zZWxlY3RlZFwiKSBhcmlhU2VsZWN0ZWQgPSB0aGlzLmFjdGl2ZTtcblx0QEhvc3RCaW5kaW5nKFwiYXR0ci5hcmlhLWRpc2FibGVkXCIpIGFyaWFEaXNhYmxlZCA9IHRoaXMuZGlzYWJsZWQ7XG5cdEBIb3N0QmluZGluZyhcImNsYXNzLmNkcy0tdGFic19fbmF2LWl0ZW1cIikgbmF2SXRlbSA9IHRydWU7XG5cdEBIb3N0QmluZGluZyhcImNsYXNzLmNkcy0tdGFic19fbmF2LWxpbmtcIikgbmF2TGluayA9IHRydWU7XG5cblx0LyoqXG5cdCAqIFJlZmVyZW5jZSB0byB0aGUgY29ycmVzcG9uc2luZyB0YWIgcGFuZS5cblx0ICovXG5cdEBJbnB1dCgpIHBhbmVSZWZlcmVuY2U6IFRhYjtcblx0QEhvc3RCaW5kaW5nKFwiYXR0ci50aXRsZVwiKSBASW5wdXQoKSB0aXRsZTtcblxuXHQvKipcblx0ICogVmFsdWUgJ3NlbGVjdGVkJyB0byBiZSBlbWl0dGVkIGFmdGVyIGEgbmV3IGBUYWJgIGlzIHNlbGVjdGVkLlxuXHQgKi9cblxuXHRAT3V0cHV0KCkgc2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuXHRwcm90ZWN0ZWQgX2NhY2hlQWN0aXZlID0gZmFsc2U7XG5cblx0Y29uc3RydWN0b3IocHJpdmF0ZSBob3N0OiBFbGVtZW50UmVmKSB7fVxuXG5cdEBIb3N0TGlzdGVuZXIoXCJjbGlja1wiKVxuXHRvbkNsaWNrKCkge1xuXHRcdHRoaXMuc2VsZWN0VGFiKCk7XG5cdH1cblxuXHRuZ0FmdGVyVmlld0luaXQoKSB7XG5cdFx0c2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHR0aGlzLnRpdGxlID0gdGhpcy50aXRsZSA/IHRoaXMudGl0bGUgOiB0aGlzLmhvc3QubmF0aXZlRWxlbWVudC50ZXh0Q29udGVudDtcblx0XHR9KTtcblx0fVxuXG5cdHNlbGVjdFRhYigpIHtcblx0XHR0aGlzLmZvY3VzKCk7XG5cdFx0aWYgKCF0aGlzLmRpc2FibGVkKSB7XG5cdFx0XHR0aGlzLnNlbGVjdGVkLmVtaXQoKTtcblx0XHRcdHRoaXMuYWN0aXZlID0gdHJ1ZTtcblx0XHRcdGlmICh0aGlzLnBhbmVSZWZlcmVuY2UpIHtcblx0XHRcdFx0dGhpcy5wYW5lUmVmZXJlbmNlLmFjdGl2ZSA9IHRydWU7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Zm9jdXMoKSB7XG5cdFx0dGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcblx0fVxufVxuIl19