@favian/headwind-ui
Version:
Headless UI for Angular - Styleless Angular components to integrate with Tailwind CSS
47 lines • 8.92 kB
JavaScript
import { Component, ContentChildren, ViewChild, ViewContainerRef, } from '@angular/core';
import { HeadwindTabContentDirective } from './headwind-tab-content/headwind-tab-content.directive';
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import * as i0 from "@angular/core";
import * as i1 from "../service/headwind-tab-group.service";
export class HeadwindTabContentGroupComponent {
constructor(_destroyRef, _headwindTabGroupService) {
this._destroyRef = _destroyRef;
this._headwindTabGroupService = _headwindTabGroupService;
}
ngOnDestroy() {
clearTimeout(this._timeoutId);
}
ngAfterViewInit() {
// to prevent NG0100 error
this._timeoutId = setTimeout(() => {
this._headwindTabGroupService.tab$.pipe(takeUntilDestroyed(this._destroyRef)).subscribe((tabKey) => {
if (this._previousTabKey !== tabKey) {
const tabContent = this.getTabContentByKey(tabKey);
if (tabContent && this.tabContentContainer) {
this._tabContentEmbeddedViewRef?.destroy();
this._tabContentEmbeddedViewRef = this.tabContentContainer.createEmbeddedView(tabContent.templateRef);
}
this._previousTabKey = tabKey;
}
});
});
}
getTabContentByKey(key) {
return this.tabContentTemplateList?.find((tabContentTemplate) => tabContentTemplate.tabKey === key);
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: HeadwindTabContentGroupComponent, deps: [{ token: i0.DestroyRef }, { token: i1.HeadwindTabGroupService }], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: HeadwindTabContentGroupComponent, isStandalone: true, selector: "headwind-tab-content-group", host: { classAttribute: "headwind-tab-content-group" }, queries: [{ propertyName: "tabContentTemplateList", predicate: HeadwindTabContentDirective, descendants: true }], viewQueries: [{ propertyName: "tabContentContainer", first: true, predicate: ["tabContentContainer"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<ng-container #tabContentContainer></ng-container>\r\n", styles: [""] }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: HeadwindTabContentGroupComponent, decorators: [{
type: Component,
args: [{ selector: 'headwind-tab-content-group', standalone: true, imports: [], host: {
class: 'headwind-tab-content-group',
}, template: "<ng-container #tabContentContainer></ng-container>\r\n" }]
}], ctorParameters: () => [{ type: i0.DestroyRef }, { type: i1.HeadwindTabGroupService }], propDecorators: { tabContentContainer: [{
type: ViewChild,
args: ['tabContentContainer', { read: ViewContainerRef }]
}], tabContentTemplateList: [{
type: ContentChildren,
args: [HeadwindTabContentDirective, { descendants: true }]
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZHdpbmQtdGFiLWNvbnRlbnQtZ3JvdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaGVhZHdpbmQtdWkvc3JjL2NvbXBvbmVudHMvaGVhZHdpbmQtdGFiLWdyb3VwL2hlYWR3aW5kLXRhYi1jb250ZW50LWdyb3VwL2hlYWR3aW5kLXRhYi1jb250ZW50LWdyb3VwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2hlYWR3aW5kLXVpL3NyYy9jb21wb25lbnRzL2hlYWR3aW5kLXRhYi1ncm91cC9oZWFkd2luZC10YWItY29udGVudC1ncm91cC9oZWFkd2luZC10YWItY29udGVudC1ncm91cC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULGVBQWUsRUFLZixTQUFTLEVBQ1QsZ0JBQWdCLEdBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBRXBHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7QUFZaEUsTUFBTSxPQUFPLGdDQUFnQztJQVMzQyxZQUNtQixXQUF1QixFQUN2Qix3QkFBaUQ7UUFEakQsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFDdkIsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUF5QjtJQUNqRSxDQUFDO0lBRUosV0FBVztRQUNULFlBQVksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELGVBQWU7UUFDYiwwQkFBMEI7UUFDMUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2hDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO2dCQUNqRyxJQUFJLElBQUksQ0FBQyxlQUFlLEtBQUssTUFBTSxFQUFFLENBQUM7b0JBQ3BDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFFbkQsSUFBSSxVQUFVLElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7d0JBQzNDLElBQUksQ0FBQywwQkFBMEIsRUFBRSxPQUFPLEVBQUUsQ0FBQzt3QkFDM0MsSUFBSSxDQUFDLDBCQUEwQixHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7b0JBQ3hHLENBQUM7b0JBRUQsSUFBSSxDQUFDLGVBQWUsR0FBRyxNQUFNLENBQUM7Z0JBQ2hDLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGtCQUFrQixDQUFDLEdBQVc7UUFDNUIsT0FBTyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsSUFBSSxDQUFDLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQztJQUN0RyxDQUFDOytHQXRDVSxnQ0FBZ0M7bUdBQWhDLGdDQUFnQyxxTEFFMUIsMkJBQTJCLHVKQURGLGdCQUFnQiw2QkMxQjVELHdEQUNBOzs0RkR3QmEsZ0NBQWdDO2tCQVY1QyxTQUFTOytCQUNFLDRCQUE0QixjQUMxQixJQUFJLFdBQ1AsRUFBRSxRQUdMO3dCQUNKLEtBQUssRUFBRSw0QkFBNEI7cUJBQ3BDO3FIQUc2RCxtQkFBbUI7c0JBQWhGLFNBQVM7dUJBQUMscUJBQXFCLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBRTVELHNCQUFzQjtzQkFEckIsZUFBZTt1QkFBQywyQkFBMkIsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ29tcG9uZW50LFxyXG4gIENvbnRlbnRDaGlsZHJlbixcclxuICBEZXN0cm95UmVmLFxyXG4gIEVtYmVkZGVkVmlld1JlZixcclxuICBPbkRlc3Ryb3ksXHJcbiAgUXVlcnlMaXN0LFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3Q29udGFpbmVyUmVmLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIZWFkd2luZFRhYkNvbnRlbnREaXJlY3RpdmUgfSBmcm9tICcuL2hlYWR3aW5kLXRhYi1jb250ZW50L2hlYWR3aW5kLXRhYi1jb250ZW50LmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEhlYWR3aW5kVGFiR3JvdXBTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZS9oZWFkd2luZC10YWItZ3JvdXAuc2VydmljZSc7XHJcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnaGVhZHdpbmQtdGFiLWNvbnRlbnQtZ3JvdXAnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW10sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2hlYWR3aW5kLXRhYi1jb250ZW50LWdyb3VwLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vaGVhZHdpbmQtdGFiLWNvbnRlbnQtZ3JvdXAuY29tcG9uZW50LnNjc3MnLFxyXG4gIGhvc3Q6IHtcclxuICAgIGNsYXNzOiAnaGVhZHdpbmQtdGFiLWNvbnRlbnQtZ3JvdXAnLFxyXG4gIH0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIZWFkd2luZFRhYkNvbnRlbnRHcm91cENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XHJcbiAgQFZpZXdDaGlsZCgndGFiQ29udGVudENvbnRhaW5lcicsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KSB0YWJDb250ZW50Q29udGFpbmVyPzogVmlld0NvbnRhaW5lclJlZjtcclxuICBAQ29udGVudENoaWxkcmVuKEhlYWR3aW5kVGFiQ29udGVudERpcmVjdGl2ZSwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxyXG4gIHRhYkNvbnRlbnRUZW1wbGF0ZUxpc3Q/OiBRdWVyeUxpc3Q8SGVhZHdpbmRUYWJDb250ZW50RGlyZWN0aXZlPjtcclxuXHJcbiAgcHJpdmF0ZSBfcHJldmlvdXNUYWJLZXk6IGFueTtcclxuICBwcml2YXRlIF90YWJDb250ZW50RW1iZWRkZWRWaWV3UmVmPzogRW1iZWRkZWRWaWV3UmVmPGFueT47XHJcbiAgcHJpdmF0ZSBfdGltZW91dElkPzogYW55O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3lSZWY6IERlc3Ryb3lSZWYsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9oZWFkd2luZFRhYkdyb3VwU2VydmljZTogSGVhZHdpbmRUYWJHcm91cFNlcnZpY2UsXHJcbiAgKSB7fVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIGNsZWFyVGltZW91dCh0aGlzLl90aW1lb3V0SWQpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgLy8gdG8gcHJldmVudCBORzAxMDAgZXJyb3JcclxuICAgIHRoaXMuX3RpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLl9oZWFkd2luZFRhYkdyb3VwU2VydmljZS50YWIkLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKHRhYktleSkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLl9wcmV2aW91c1RhYktleSAhPT0gdGFiS2V5KSB7XHJcbiAgICAgICAgICBjb25zdCB0YWJDb250ZW50ID0gdGhpcy5nZXRUYWJDb250ZW50QnlLZXkodGFiS2V5KTtcclxuXHJcbiAgICAgICAgICBpZiAodGFiQ29udGVudCAmJiB0aGlzLnRhYkNvbnRlbnRDb250YWluZXIpIHtcclxuICAgICAgICAgICAgdGhpcy5fdGFiQ29udGVudEVtYmVkZGVkVmlld1JlZj8uZGVzdHJveSgpO1xyXG4gICAgICAgICAgICB0aGlzLl90YWJDb250ZW50RW1iZWRkZWRWaWV3UmVmID0gdGhpcy50YWJDb250ZW50Q29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyh0YWJDb250ZW50LnRlbXBsYXRlUmVmKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICB0aGlzLl9wcmV2aW91c1RhYktleSA9IHRhYktleTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRUYWJDb250ZW50QnlLZXkoa2V5OiBzdHJpbmcpOiBIZWFkd2luZFRhYkNvbnRlbnREaXJlY3RpdmUgfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMudGFiQ29udGVudFRlbXBsYXRlTGlzdD8uZmluZCgodGFiQ29udGVudFRlbXBsYXRlKSA9PiB0YWJDb250ZW50VGVtcGxhdGUudGFiS2V5ID09PSBrZXkpO1xyXG4gIH1cclxufVxyXG4iLCI8bmctY29udGFpbmVyICN0YWJDb250ZW50Q29udGFpbmVyPjwvbmctY29udGFpbmVyPlxyXG4iXX0=