carbon-components-angular
Version:
Next generation components
127 lines • 11.7 kB
JavaScript
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