@favian/headwind-ui
Version:
Headless UI for Angular - Styleless Angular components to integrate with Tailwind CSS
50 lines • 8.79 kB
JavaScript
import { Component, ContentChild, ViewChild, ViewContainerRef, } from '@angular/core';
import { HeadwindCheckboxCheckedDirective } from './headwind-checkbox-checked/headwind-checkbox-checked.directive';
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import * as i0 from "@angular/core";
import * as i1 from "../service/headwind-checkbox.service";
export class HeadwindCheckboxButtonComponent {
constructor(_destroyRef, _headwindCheckboxService) {
this._destroyRef = _destroyRef;
this._headwindCheckboxService = _headwindCheckboxService;
}
get checked() {
return this._headwindCheckboxService.checked;
}
ngAfterViewInit() {
// use timeout to prevent NG0100 error
this._timeoutId = setTimeout(() => {
this._headwindCheckboxService.checked$.pipe(takeUntilDestroyed(this._destroyRef)).subscribe((checked) => {
if (this.checkboxCheckedContainer && this.checkboxChecked) {
if (checked) {
if (!this._checkedEmbeddedViewRef) {
this._checkedEmbeddedViewRef = this.checkboxCheckedContainer.createEmbeddedView(this.checkboxChecked.templateRef);
}
}
else {
this._checkedEmbeddedViewRef?.destroy();
delete this._checkedEmbeddedViewRef;
}
}
});
});
}
ngOnDestroy() {
clearTimeout(this._timeoutId);
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: HeadwindCheckboxButtonComponent, deps: [{ token: i0.DestroyRef }, { token: i1.HeadwindCheckboxService }], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: HeadwindCheckboxButtonComponent, isStandalone: true, selector: "headwind-checkbox-button", host: { classAttribute: "headwind-checkbox-button" }, queries: [{ propertyName: "checkboxChecked", first: true, predicate: HeadwindCheckboxCheckedDirective, descendants: true }], viewQueries: [{ propertyName: "checkboxCheckedContainer", first: true, predicate: ["checkboxCheckedContainer"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<ng-container #checkboxCheckedContainer></ng-container>\r\n", styles: [""] }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: HeadwindCheckboxButtonComponent, decorators: [{
type: Component,
args: [{ selector: 'headwind-checkbox-button', standalone: true, imports: [], host: {
class: 'headwind-checkbox-button',
}, template: "<ng-container #checkboxCheckedContainer></ng-container>\r\n" }]
}], ctorParameters: () => [{ type: i0.DestroyRef }, { type: i1.HeadwindCheckboxService }], propDecorators: { checkboxCheckedContainer: [{
type: ViewChild,
args: ['checkboxCheckedContainer', { read: ViewContainerRef }]
}], checkboxChecked: [{
type: ContentChild,
args: [HeadwindCheckboxCheckedDirective, { descendants: true }]
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZHdpbmQtY2hlY2tib3gtYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2hlYWR3aW5kLXVpL3NyYy9jb21wb25lbnRzL2hlYWR3aW5kLWNoZWNrYm94L2hlYWR3aW5kLWNoZWNrYm94LWJ1dHRvbi9oZWFkd2luZC1jaGVja2JveC1idXR0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaGVhZHdpbmQtdWkvc3JjL2NvbXBvbmVudHMvaGVhZHdpbmQtY2hlY2tib3gvaGVhZHdpbmQtY2hlY2tib3gtYnV0dG9uL2hlYWR3aW5kLWNoZWNrYm94LWJ1dHRvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFlBQVksRUFJWixTQUFTLEVBQ1QsZ0JBQWdCLEdBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLGlFQUFpRSxDQUFDO0FBRW5ILE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7QUFZaEUsTUFBTSxPQUFPLCtCQUErQjtJQVMxQyxZQUNtQixXQUF1QixFQUN2Qix3QkFBaUQ7UUFEakQsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFDdkIsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUF5QjtJQUNqRSxDQUFDO0lBRUosSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsd0JBQXdCLENBQUMsT0FBTyxDQUFDO0lBQy9DLENBQUM7SUFFRCxlQUFlO1FBQ2Isc0NBQXNDO1FBQ3RDLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNoQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtnQkFDdEcsSUFBSSxJQUFJLENBQUMsd0JBQXdCLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO29CQUMxRCxJQUFJLE9BQU8sRUFBRSxDQUFDO3dCQUNaLElBQUksQ0FBQyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQzs0QkFDbEMsSUFBSSxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxrQkFBa0IsQ0FDN0UsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQ2pDLENBQUM7d0JBQ0osQ0FBQztvQkFDSCxDQUFDO3lCQUFNLENBQUM7d0JBQ04sSUFBSSxDQUFDLHVCQUF1QixFQUFFLE9BQU8sRUFBRSxDQUFDO3dCQUN4QyxPQUFPLElBQUksQ0FBQyx1QkFBdUIsQ0FBQztvQkFDdEMsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1QsWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNoQyxDQUFDOytHQXhDVSwrQkFBK0I7bUdBQS9CLCtCQUErQix1TEFHNUIsZ0NBQWdDLGlLQUZDLGdCQUFnQiw2QkN6QmpFLDZEQUNBOzs0RkR1QmEsK0JBQStCO2tCQVYzQyxTQUFTOytCQUNFLDBCQUEwQixjQUN4QixJQUFJLFdBQ1AsRUFBRSxRQUdMO3dCQUNKLEtBQUssRUFBRSwwQkFBMEI7cUJBQ2xDO3FIQUdrRSx3QkFBd0I7c0JBQTFGLFNBQVM7dUJBQUMsMEJBQTBCLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBR2pFLGVBQWU7c0JBRGQsWUFBWTt1QkFBQyxnQ0FBZ0MsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ29tcG9uZW50LFxyXG4gIENvbnRlbnRDaGlsZCxcclxuICBEZXN0cm95UmVmLFxyXG4gIEVtYmVkZGVkVmlld1JlZixcclxuICBPbkRlc3Ryb3ksXHJcbiAgVmlld0NoaWxkLFxyXG4gIFZpZXdDb250YWluZXJSZWYsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEhlYWR3aW5kQ2hlY2tib3hDaGVja2VkRGlyZWN0aXZlIH0gZnJvbSAnLi9oZWFkd2luZC1jaGVja2JveC1jaGVja2VkL2hlYWR3aW5kLWNoZWNrYm94LWNoZWNrZWQuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgSGVhZHdpbmRDaGVja2JveFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlL2hlYWR3aW5kLWNoZWNrYm94LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2hlYWR3aW5kLWNoZWNrYm94LWJ1dHRvbicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vaGVhZHdpbmQtY2hlY2tib3gtYnV0dG9uLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vaGVhZHdpbmQtY2hlY2tib3gtYnV0dG9uLmNvbXBvbmVudC5zY3NzJyxcclxuICBob3N0OiB7XHJcbiAgICBjbGFzczogJ2hlYWR3aW5kLWNoZWNrYm94LWJ1dHRvbicsXHJcbiAgfSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEhlYWR3aW5kQ2hlY2tib3hCdXR0b25Db21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBWaWV3Q2hpbGQoJ2NoZWNrYm94Q2hlY2tlZENvbnRhaW5lcicsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KSBjaGVja2JveENoZWNrZWRDb250YWluZXI/OiBWaWV3Q29udGFpbmVyUmVmO1xyXG5cclxuICBAQ29udGVudENoaWxkKEhlYWR3aW5kQ2hlY2tib3hDaGVja2VkRGlyZWN0aXZlLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXHJcbiAgY2hlY2tib3hDaGVja2VkPzogSGVhZHdpbmRDaGVja2JveENoZWNrZWREaXJlY3RpdmU7XHJcblxyXG4gIHByaXZhdGUgX3RpbWVvdXRJZD86IGFueTtcclxuICBwcml2YXRlIF9jaGVja2VkRW1iZWRkZWRWaWV3UmVmPzogRW1iZWRkZWRWaWV3UmVmPGFueT47XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveVJlZjogRGVzdHJveVJlZixcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2hlYWR3aW5kQ2hlY2tib3hTZXJ2aWNlOiBIZWFkd2luZENoZWNrYm94U2VydmljZSxcclxuICApIHt9XHJcblxyXG4gIGdldCBjaGVja2VkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2hlYWR3aW5kQ2hlY2tib3hTZXJ2aWNlLmNoZWNrZWQ7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICAvLyB1c2UgdGltZW91dCB0byBwcmV2ZW50IE5HMDEwMCBlcnJvclxyXG4gICAgdGhpcy5fdGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuX2hlYWR3aW5kQ2hlY2tib3hTZXJ2aWNlLmNoZWNrZWQkLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKGNoZWNrZWQpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5jaGVja2JveENoZWNrZWRDb250YWluZXIgJiYgdGhpcy5jaGVja2JveENoZWNrZWQpIHtcclxuICAgICAgICAgIGlmIChjaGVja2VkKSB7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5fY2hlY2tlZEVtYmVkZGVkVmlld1JlZikge1xyXG4gICAgICAgICAgICAgIHRoaXMuX2NoZWNrZWRFbWJlZGRlZFZpZXdSZWYgPSB0aGlzLmNoZWNrYm94Q2hlY2tlZENvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcoXHJcbiAgICAgICAgICAgICAgICB0aGlzLmNoZWNrYm94Q2hlY2tlZC50ZW1wbGF0ZVJlZixcclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLl9jaGVja2VkRW1iZWRkZWRWaWV3UmVmPy5kZXN0cm95KCk7XHJcbiAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9jaGVja2VkRW1iZWRkZWRWaWV3UmVmO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuX3RpbWVvdXRJZCk7XHJcbiAgfVxyXG59XHJcbiIsIjxuZy1jb250YWluZXIgI2NoZWNrYm94Q2hlY2tlZENvbnRhaW5lcj48L25nLWNvbnRhaW5lcj5cclxuIl19