@hxui/angular
Version:
An Angular library based on the [HXUI design system](https://hxui.io).
74 lines • 8.98 kB
JavaScript
import { Directive, ElementRef, EventEmitter, HostBinding, Input, Output, } from '@angular/core';
import { TabsetComponent } from './tabset.component';
import * as i0 from "@angular/core";
import * as i1 from "./tabset.component";
// eslint-disable-next-line @angular-eslint/directive-selector
export class TabDirective {
// TODO: refactor so that ref to parent 'TabsetComponent' is removed, causing circular refs
constructor(tabset, elementRef) {
this.elementRef = elementRef;
/** fired when tab became active, $event:Tab equals to selected instance of Tab component */
// TODO: change output name
// eslint-disable-next-line @angular-eslint/no-output-native
this.select = new EventEmitter();
/** fired when tab became inactive, $event:Tab equals to deselected instance of Tab component */
this.deselect = new EventEmitter();
/** fired before tab will be removed, $event:Tab equals to instance of removed tab */
this.removed = new EventEmitter();
this.addClasn = true;
this.tabset = tabset;
this.tabset.addTab(this);
}
get active() {
return this._active;
}
set active(active) {
if ((this.disabled && active) || !active) {
if (!active) {
this._active = active;
}
this.deselect.emit(this);
return;
}
this._active = active;
this.select.emit(this);
}
/** tab active state toggle */
get _() {
return !!this._active;
}
ngOnDestroy() {
this.tabset.removeTab(this, { reselect: false, emit: false });
}
}
TabDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: TabDirective, deps: [{ token: i1.TabsetComponent }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
TabDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.11", type: TabDirective, selector: "hx-tab, [hx-tab]", inputs: { heading: "heading", id: "id", disabled: "disabled", removable: "removable", customClass: "customClass", active: "active" }, outputs: { select: "select", deselect: "deselect", removed: "removed" }, host: { properties: { "class.is-active": "this._", "class.hx-tab-pane": "this.addClasn" } }, ngImport: i0 });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: TabDirective, decorators: [{
type: Directive,
args: [{ selector: 'hx-tab, [hx-tab]' }]
}], ctorParameters: function () { return [{ type: i1.TabsetComponent }, { type: i0.ElementRef }]; }, propDecorators: { heading: [{
type: Input
}], id: [{
type: Input
}], disabled: [{
type: Input
}], removable: [{
type: Input
}], customClass: [{
type: Input
}], active: [{
type: Input
}], _: [{
type: HostBinding,
args: ['class.is-active']
}], select: [{
type: Output
}], deselect: [{
type: Output
}], removed: [{
type: Output
}], addClasn: [{
type: HostBinding,
args: ['class.hx-tab-pane']
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2h4LXVpL3NyYy9saWIvdGFicy90YWIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxFQUVMLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7OztBQUVyRCw4REFBOEQ7QUFFOUQsTUFBTSxPQUFPLFlBQVk7SUFvRHZCLDJGQUEyRjtJQUMzRixZQUFZLE1BQXVCLEVBQVMsVUFBc0I7UUFBdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQWhCbEUsNEZBQTRGO1FBQzVGLDJCQUEyQjtRQUMzQiw0REFBNEQ7UUFDM0MsV0FBTSxHQUErQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3pFLGdHQUFnRztRQUMvRSxhQUFRLEdBQStCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDM0UscUZBQXFGO1FBQ3BFLFlBQU8sR0FBK0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUV4QyxhQUFRLEdBQUcsSUFBSSxDQUFDO1FBUWhELElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUE1Q0QsSUFDSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxJQUFJLE1BQU0sQ0FBQyxNQUFlO1FBQ3hCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ3hDLElBQUksQ0FBQyxNQUFNLEVBQUU7Z0JBQ1gsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7YUFDdkI7WUFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN6QixPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUN0QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsOEJBQThCO0lBQzlCLElBQ0ksQ0FBQztRQUNILE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDeEIsQ0FBQztJQXVCRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNoRSxDQUFDOzswR0E1RFUsWUFBWTs4RkFBWixZQUFZOzRGQUFaLFlBQVk7a0JBRHhCLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsa0JBQWtCLEVBQUU7K0hBR2hDLE9BQU87c0JBQWYsS0FBSztnQkFFRyxFQUFFO3NCQUFWLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBR0YsTUFBTTtzQkFEVCxLQUFLO2dCQXFCRixDQUFDO3NCQURKLFdBQVc7dUJBQUMsaUJBQWlCO2dCQVFiLE1BQU07c0JBQXRCLE1BQU07Z0JBRVUsUUFBUTtzQkFBeEIsTUFBTTtnQkFFVSxPQUFPO3NCQUF2QixNQUFNO2dCQUUyQixRQUFRO3NCQUF6QyxXQUFXO3VCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgRGlyZWN0aXZlLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIEhvc3RCaW5kaW5nLFxyXG4gIElucHV0LFxyXG4gIE9uRGVzdHJveSxcclxuICBPdXRwdXQsXHJcbiAgVGVtcGxhdGVSZWYsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRhYnNldENvbXBvbmVudCB9IGZyb20gJy4vdGFic2V0LmNvbXBvbmVudCc7XHJcblxyXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1zZWxlY3RvclxyXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdoeC10YWIsIFtoeC10YWJdJyB9KVxyXG5leHBvcnQgY2xhc3MgVGFiRGlyZWN0aXZlIGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuICAvKiogdGFiIGhlYWRlciB0ZXh0ICovXHJcbiAgQElucHV0KCkgaGVhZGluZzogc3RyaW5nO1xyXG4gIC8qKiB0YWIgaWQgKi9cclxuICBASW5wdXQoKSBpZDogc3RyaW5nO1xyXG4gIC8qKiBpZiB0cnVlIHRhYiBjYW4gbm90IGJlIGFjdGl2YXRlZCAqL1xyXG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuO1xyXG4gIC8qKiBpZiB0cnVlIHRhYiBjYW4gYmUgcmVtb3ZhYmxlLCBhZGRpdGlvbmFsIGJ1dHRvbiB3aWxsIGFwcGVhciAqL1xyXG4gIEBJbnB1dCgpIHJlbW92YWJsZTogYm9vbGVhbjtcclxuICAvKiogaWYgc2V0LCB3aWxsIGJlIGFkZGVkIHRvIHRoZSB0YWIncyBjbGFzcyBhdHJpYnV0ZSAqL1xyXG4gIEBJbnB1dCgpIGN1c3RvbUNsYXNzOiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IGFjdGl2ZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9hY3RpdmU7XHJcbiAgfVxyXG5cclxuICBzZXQgYWN0aXZlKGFjdGl2ZTogYm9vbGVhbikge1xyXG4gICAgaWYgKCh0aGlzLmRpc2FibGVkICYmIGFjdGl2ZSkgfHwgIWFjdGl2ZSkge1xyXG4gICAgICBpZiAoIWFjdGl2ZSkge1xyXG4gICAgICAgIHRoaXMuX2FjdGl2ZSA9IGFjdGl2ZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5kZXNlbGVjdC5lbWl0KHRoaXMpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fYWN0aXZlID0gYWN0aXZlO1xyXG4gICAgdGhpcy5zZWxlY3QuZW1pdCh0aGlzKTtcclxuICB9XHJcblxyXG4gIC8qKiB0YWIgYWN0aXZlIHN0YXRlIHRvZ2dsZSAqL1xyXG4gIEBIb3N0QmluZGluZygnY2xhc3MuaXMtYWN0aXZlJylcclxuICBnZXQgXygpIHtcclxuICAgIHJldHVybiAhIXRoaXMuX2FjdGl2ZTtcclxuICB9XHJcblxyXG4gIC8qKiBmaXJlZCB3aGVuIHRhYiBiZWNhbWUgYWN0aXZlLCAkZXZlbnQ6VGFiIGVxdWFscyB0byBzZWxlY3RlZCBpbnN0YW5jZSBvZiBUYWIgY29tcG9uZW50ICovXHJcbiAgLy8gVE9ETzogY2hhbmdlIG91dHB1dCBuYW1lXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtbmF0aXZlXHJcbiAgQE91dHB1dCgpIHB1YmxpYyBzZWxlY3Q6IEV2ZW50RW1pdHRlcjxUYWJEaXJlY3RpdmU+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIC8qKiBmaXJlZCB3aGVuIHRhYiBiZWNhbWUgaW5hY3RpdmUsICRldmVudDpUYWIgZXF1YWxzIHRvIGRlc2VsZWN0ZWQgaW5zdGFuY2Ugb2YgVGFiIGNvbXBvbmVudCAqL1xyXG4gIEBPdXRwdXQoKSBwdWJsaWMgZGVzZWxlY3Q6IEV2ZW50RW1pdHRlcjxUYWJEaXJlY3RpdmU+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIC8qKiBmaXJlZCBiZWZvcmUgdGFiIHdpbGwgYmUgcmVtb3ZlZCwgJGV2ZW50OlRhYiBlcXVhbHMgdG8gaW5zdGFuY2Ugb2YgcmVtb3ZlZCB0YWIgKi9cclxuICBAT3V0cHV0KCkgcHVibGljIHJlbW92ZWQ6IEV2ZW50RW1pdHRlcjxUYWJEaXJlY3RpdmU+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmh4LXRhYi1wYW5lJykgYWRkQ2xhc24gPSB0cnVlO1xyXG5cclxuICBoZWFkaW5nUmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIHRhYnNldDogVGFic2V0Q29tcG9uZW50O1xyXG4gIHByb3RlY3RlZCBfYWN0aXZlOiBib29sZWFuO1xyXG5cclxuICAvLyBUT0RPOiByZWZhY3RvciBzbyB0aGF0IHJlZiB0byBwYXJlbnQgJ1RhYnNldENvbXBvbmVudCcgaXMgcmVtb3ZlZCwgY2F1c2luZyBjaXJjdWxhciByZWZzXHJcbiAgY29uc3RydWN0b3IodGFic2V0OiBUYWJzZXRDb21wb25lbnQsIHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7XHJcbiAgICB0aGlzLnRhYnNldCA9IHRhYnNldDtcclxuICAgIHRoaXMudGFic2V0LmFkZFRhYih0aGlzKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy50YWJzZXQucmVtb3ZlVGFiKHRoaXMsIHsgcmVzZWxlY3Q6IGZhbHNlLCBlbWl0OiBmYWxzZSB9KTtcclxuICB9XHJcbn1cclxuIl19