@xui/components
Version:
xUI Components for Angular
75 lines • 7.09 kB
JavaScript
import { ChangeDetectionStrategy, Component, ContentChildren, QueryList, signal } from '@angular/core';
import { XuiTab } from './tab';
import { TAB_GROUP_ACCESSOR } from './tab.types';
import * as i0 from "@angular/core";
import * as i1 from "@ngx-translate/core";
export class XuiTabGroup {
constructor() {
this._active = signal(null);
this._tabs = signal([]);
}
set tabRef(value) {
this._tabs.set(value.toArray());
}
// Not used
// @Input() canNavigate?: (tab: XuiTabComponent) => boolean;
ngAfterContentInit() {
for (const tab of this._tabs()) {
if (!tab.disabled()) {
this._active.set(tab);
break;
}
}
}
selectTab(tab) {
if (tab.disabled()) {
return;
}
// if (this.canNavigate && !this.canNavigate(tab)) {
// return;
// }
this._active.set(tab);
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: XuiTabGroup, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.1", type: XuiTabGroup, selector: "xui-tab-group", host: { classAttribute: "x-tab-group" }, providers: [{ provide: TAB_GROUP_ACCESSOR, useExisting: XuiTabGroup }], queries: [{ propertyName: "tabRef", predicate: XuiTab }], ngImport: i0, template: ` <div class="x-tab-group-list">
(tab of _tabs(); track tab) {
<div
class="x-tab-group-entry"
[class.x-tab-group-active]="tab._isActive()"
[attr.disabled]="tab.disabled() || null"
(click)="selectTab(tab)"
>
{{ tab.title() | translate }}
</div>
}
</div>
<ng-content select="xui-tab"></ng-content>`, isInline: true, dependencies: [{ kind: "pipe", type: i1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: XuiTabGroup, decorators: [{
type: Component,
args: [{
selector: 'xui-tab-group',
changeDetection: ChangeDetectionStrategy.OnPush,
template: ` <div class="x-tab-group-list">
(tab of _tabs(); track tab) {
<div
class="x-tab-group-entry"
[class.x-tab-group-active]="tab._isActive()"
[attr.disabled]="tab.disabled() || null"
(click)="selectTab(tab)"
>
{{ tab.title() | translate }}
</div>
}
</div>
<ng-content select="xui-tab"></ng-content>`,
providers: [{ provide: TAB_GROUP_ACCESSOR, useExisting: XuiTabGroup }],
host: {
class: 'x-tab-group'
}
}]
}], propDecorators: { tabRef: [{
type: ContentChildren,
args: [XuiTab]
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWdyb3VwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy94dWkvc3JjL3RhYnMvdGFiLWdyb3VwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULGVBQWUsRUFDZixTQUFTLEVBQ1QsTUFBTSxFQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDL0IsT0FBTyxFQUFFLGtCQUFrQixFQUFvQixNQUFNLGFBQWEsQ0FBQzs7O0FBdUJuRSxNQUFNLE9BQU8sV0FBVztJQXJCeEI7UUFzQkUsWUFBTyxHQUFHLE1BQU0sQ0FBZ0IsSUFBSSxDQUFDLENBQUM7UUFDdEMsVUFBSyxHQUFHLE1BQU0sQ0FBVyxFQUFFLENBQUMsQ0FBQztLQTZCOUI7SUEzQkMsSUFBcUMsTUFBTSxDQUFDLEtBQXdCO1FBQ2xFLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxXQUFXO0lBQ1gsNERBQTREO0lBRTVELGtCQUFrQjtRQUNoQixLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQztnQkFDcEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3RCLE1BQU07WUFDUixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxTQUFTLENBQUMsR0FBVztRQUNuQixJQUFJLEdBQUcsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO1lBQ25CLE9BQU87UUFDVCxDQUFDO1FBRUQsb0RBQW9EO1FBQ3BELFlBQVk7UUFDWixJQUFJO1FBRUosSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDeEIsQ0FBQzs4R0E5QlUsV0FBVztrR0FBWCxXQUFXLGlGQUxYLENBQUMsRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxDQUFDLGlEQVNyRCxNQUFNLDZCQXRCYjs7Ozs7Ozs7Ozs7OytDQVltQzs7MkZBTWxDLFdBQVc7a0JBckJ2QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxlQUFlO29CQUN6QixlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7K0NBWW1DO29CQUM3QyxTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxXQUFXLGFBQWEsRUFBRSxDQUFDO29CQUN0RSxJQUFJLEVBQUU7d0JBQ0osS0FBSyxFQUFFLGFBQWE7cUJBQ3JCO2lCQUNGOzhCQUtzQyxNQUFNO3NCQUExQyxlQUFlO3VCQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIFF1ZXJ5TGlzdCxcbiAgc2lnbmFsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgWHVpVGFiIH0gZnJvbSAnLi90YWInO1xuaW1wb3J0IHsgVEFCX0dST1VQX0FDQ0VTU09SLCBUYWJHcm91cEFjY2Vzc29yIH0gZnJvbSAnLi90YWIudHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd4dWktdGFiLWdyb3VwJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiBgIDxkaXYgY2xhc3M9XCJ4LXRhYi1ncm91cC1saXN0XCI+XG4gICAgICBAZm9yICh0YWIgb2YgX3RhYnMoKTsgdHJhY2sgdGFiKSB7XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cIngtdGFiLWdyb3VwLWVudHJ5XCJcbiAgICAgICAgICBbY2xhc3MueC10YWItZ3JvdXAtYWN0aXZlXT1cInRhYi5faXNBY3RpdmUoKVwiXG4gICAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwidGFiLmRpc2FibGVkKCkgfHwgbnVsbFwiXG4gICAgICAgICAgKGNsaWNrKT1cInNlbGVjdFRhYih0YWIpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHRhYi50aXRsZSgpIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInh1aS10YWJcIj48L25nLWNvbnRlbnQ+YCxcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBUQUJfR1JPVVBfQUNDRVNTT1IsIHVzZUV4aXN0aW5nOiBYdWlUYWJHcm91cCB9XSxcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAneC10YWItZ3JvdXAnXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgWHVpVGFiR3JvdXAgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBUYWJHcm91cEFjY2Vzc29yIHtcbiAgX2FjdGl2ZSA9IHNpZ25hbDxYdWlUYWIgfCBudWxsPihudWxsKTtcbiAgX3RhYnMgPSBzaWduYWw8WHVpVGFiW10+KFtdKTtcblxuICBAQ29udGVudENoaWxkcmVuKFh1aVRhYikgcHJpdmF0ZSBzZXQgdGFiUmVmKHZhbHVlOiBRdWVyeUxpc3Q8WHVpVGFiPikge1xuICAgIHRoaXMuX3RhYnMuc2V0KHZhbHVlLnRvQXJyYXkoKSk7XG4gIH1cblxuICAvLyBOb3QgdXNlZFxuICAvLyBASW5wdXQoKSBjYW5OYXZpZ2F0ZT86ICh0YWI6IFh1aVRhYkNvbXBvbmVudCkgPT4gYm9vbGVhbjtcblxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgZm9yIChjb25zdCB0YWIgb2YgdGhpcy5fdGFicygpKSB7XG4gICAgICBpZiAoIXRhYi5kaXNhYmxlZCgpKSB7XG4gICAgICAgIHRoaXMuX2FjdGl2ZS5zZXQodGFiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2VsZWN0VGFiKHRhYjogWHVpVGFiKSB7XG4gICAgaWYgKHRhYi5kaXNhYmxlZCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gaWYgKHRoaXMuY2FuTmF2aWdhdGUgJiYgIXRoaXMuY2FuTmF2aWdhdGUodGFiKSkge1xuICAgIC8vICAgcmV0dXJuO1xuICAgIC8vIH1cblxuICAgIHRoaXMuX2FjdGl2ZS5zZXQodGFiKTtcbiAgfVxufVxuIl19