xui
Version:
xUI Components for Angular
79 lines (77 loc) • 6.85 kB
JavaScript
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, QueryList } from '@angular/core';
import { TabComponent } from './tab.component';
import { Subject } from 'rxjs';
import * as i0 from "@angular/core";
import * as i1 from "@angular/common";
import * as i2 from "@ngx-translate/core";
export class TabGroupComponent {
set tabRef(value) {
this._tabs = value.toArray();
this.cdr.markForCheck();
}
// Not used
// @Input() canNavigate?: (tab: XuiTabComponent) => boolean;
constructor(cdr) {
this.cdr = cdr;
this._tabs = [];
this.onChange$ = new Subject();
}
ngAfterContentInit() {
for (const tab of this._tabs) {
if (!tab.disabled) {
this._active = tab;
break;
}
}
}
selectTab(tab) {
if (tab.disabled) {
return;
}
// if (this.canNavigate && !this.canNavigate(tab)) {
// return;
// }
this._active = tab;
this.onChange$.next(null);
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: TabGroupComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.1", type: TabGroupComponent, selector: "xui-tab-group", queries: [{ propertyName: "tabRef", predicate: TabComponent }], ngImport: i0, template: `
<div class="x-tabs-list">
<div
class="x-tabs-entry"
*ngFor="let tab of _tabs"
[class.x-tabs-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: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: TabGroupComponent, decorators: [{
type: Component,
args: [{
selector: 'xui-tab-group',
changeDetection: ChangeDetectionStrategy.OnPush,
template: `
<div class="x-tabs-list">
<div
class="x-tabs-entry"
*ngFor="let tab of _tabs"
[class.x-tabs-active]="tab.isActive"
[attr.disabled]="tab.disabled || null"
(click)="selectTab(tab)"
>
{{ tab.title | translate }}
</div>
</div>
<ng-content select="xui-tab"></ng-content>
`
}]
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { tabRef: [{
type: ContentChildren,
args: [TabComponent]
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMveHVpL3NyYy90YWJzL3RhYi1ncm91cC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULGVBQWUsRUFDZixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7QUFxQi9CLE1BQU0sT0FBTyxpQkFBaUI7SUFLNUIsSUFBbUMsTUFBTSxDQUFDLEtBQThCO1FBQ3RFLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELFdBQVc7SUFDWCw0REFBNEQ7SUFFNUQsWUFBb0IsR0FBc0I7UUFBdEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFYMUMsVUFBSyxHQUFtQixFQUFFLENBQUM7UUFDM0IsY0FBUyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7SUFVbUIsQ0FBQztJQUU5QyxrQkFBa0I7UUFDaEIsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQzVCLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFO2dCQUNqQixJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQztnQkFDbkIsTUFBTTthQUNQO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsU0FBUyxDQUFDLEdBQWlCO1FBQ3pCLElBQUksR0FBRyxDQUFDLFFBQVEsRUFBRTtZQUNoQixPQUFPO1NBQ1I7UUFFRCxvREFBb0Q7UUFDcEQsWUFBWTtRQUNaLElBQUk7UUFFSixJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQztRQUNuQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QixDQUFDOzhHQW5DVSxpQkFBaUI7a0dBQWpCLGlCQUFpQiw0RUFLWCxZQUFZLDZCQXJCbkI7Ozs7Ozs7Ozs7Ozs7O0dBY1Q7OzJGQUVVLGlCQUFpQjtrQkFuQjdCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGVBQWU7b0JBQ3pCLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7O0dBY1Q7aUJBQ0Y7d0dBTW9DLE1BQU07c0JBQXhDLGVBQWU7dUJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIFF1ZXJ5TGlzdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRhYkNvbXBvbmVudCB9IGZyb20gJy4vdGFiLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3h1aS10YWItZ3JvdXAnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwieC10YWJzLWxpc3RcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJ4LXRhYnMtZW50cnlcIlxuICAgICAgICAqbmdGb3I9XCJsZXQgdGFiIG9mIF90YWJzXCJcbiAgICAgICAgW2NsYXNzLngtdGFicy1hY3RpdmVdPVwidGFiLmlzQWN0aXZlXCJcbiAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwidGFiLmRpc2FibGVkIHx8IG51bGxcIlxuICAgICAgICAoY2xpY2spPVwic2VsZWN0VGFiKHRhYilcIlxuICAgICAgPlxuICAgICAgICB7eyB0YWIudGl0bGUgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwieHVpLXRhYlwiPjwvbmctY29udGVudD5cbiAgYFxufSlcbmV4cG9ydCBjbGFzcyBUYWJHcm91cENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQge1xuICBfYWN0aXZlPzogVGFiQ29tcG9uZW50O1xuICBfdGFiczogVGFiQ29tcG9uZW50W10gPSBbXTtcbiAgb25DaGFuZ2UkID0gbmV3IFN1YmplY3QoKTtcblxuICBAQ29udGVudENoaWxkcmVuKFRhYkNvbXBvbmVudCkgc2V0IHRhYlJlZih2YWx1ZTogUXVlcnlMaXN0PFRhYkNvbXBvbmVudD4pIHtcbiAgICB0aGlzLl90YWJzID0gdmFsdWUudG9BcnJheSgpO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgLy8gTm90IHVzZWRcbiAgLy8gQElucHV0KCkgY2FuTmF2aWdhdGU/OiAodGFiOiBYdWlUYWJDb21wb25lbnQpID0+IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICBmb3IgKGNvbnN0IHRhYiBvZiB0aGlzLl90YWJzKSB7XG4gICAgICBpZiAoIXRhYi5kaXNhYmxlZCkge1xuICAgICAgICB0aGlzLl9hY3RpdmUgPSB0YWI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNlbGVjdFRhYih0YWI6IFRhYkNvbXBvbmVudCkge1xuICAgIGlmICh0YWIuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBpZiAodGhpcy5jYW5OYXZpZ2F0ZSAmJiAhdGhpcy5jYW5OYXZpZ2F0ZSh0YWIpKSB7XG4gICAgLy8gICByZXR1cm47XG4gICAgLy8gfVxuXG4gICAgdGhpcy5fYWN0aXZlID0gdGFiO1xuICAgIHRoaXMub25DaGFuZ2UkLm5leHQobnVsbCk7XG4gIH1cbn1cbiJdfQ==