UNPKG

@xui/components

Version:

xUI Components for Angular

75 lines 7.09 kB
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"> @for (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"> @for (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