UNPKG

@favian/headwind-ui

Version:

Headless UI for Angular - Styleless Angular components to integrate with Tailwind CSS

50 lines 8.79 kB
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