UNPKG

@favian/headwind-ui

Version:

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

46 lines 7.45 kB
import { Component, ContentChild, HostListener, Input } from '@angular/core'; import { HeadwindClickDetector } from '../../../services/headwind-click-detector.service'; import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; import { HeadwindRadioButtonComponent } from './headwind-radio-button/headwind-radio-button.component'; import * as i0 from "@angular/core"; import * as i1 from "../service/headwind-radio-group.service"; export class HeadwindRadioComponent { constructor(_destroyRef, _headwindRadioGroupService) { this._destroyRef = _destroyRef; this._headwindRadioGroupService = _headwindRadioGroupService; this._selected = false; } get selected() { return this._selected; } ngAfterContentInit() { this._headwindRadioGroupService.value$.pipe(takeUntilDestroyed(this._destroyRef)).subscribe((value) => { this._selected = this.value === value; if (this.button) { this.button.selected = this.selected; } }); } onHostClick() { this._headwindRadioGroupService.selectOption.emit(this.value); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: HeadwindRadioComponent, deps: [{ token: i0.DestroyRef }, { token: i1.HeadwindRadioGroupService }], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: HeadwindRadioComponent, isStandalone: true, selector: "headwind-radio", inputs: { value: "value" }, host: { listeners: { "click": "onHostClick()" }, properties: { "class.headwind-selected": "selected" }, classAttribute: "headwind-radio" }, providers: [HeadwindClickDetector], queries: [{ propertyName: "button", first: true, predicate: HeadwindRadioButtonComponent, descendants: true }], ngImport: i0, template: "<ng-content></ng-content>\r\n", styles: [""] }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: HeadwindRadioComponent, decorators: [{ type: Component, args: [{ selector: 'headwind-radio', standalone: true, imports: [], providers: [HeadwindClickDetector], host: { class: 'headwind-radio', ['[class.headwind-selected]']: 'selected', }, template: "<ng-content></ng-content>\r\n" }] }], ctorParameters: () => [{ type: i0.DestroyRef }, { type: i1.HeadwindRadioGroupService }], propDecorators: { value: [{ type: Input, args: [{ required: true }] }], button: [{ type: ContentChild, args: [HeadwindRadioButtonComponent, { descendants: true }] }], onHostClick: [{ type: HostListener, args: ['click'] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZHdpbmQtcmFkaW8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaGVhZHdpbmQtdWkvc3JjL2NvbXBvbmVudHMvaGVhZHdpbmQtcmFkaW8tZ3JvdXAvaGVhZHdpbmQtcmFkaW8vaGVhZHdpbmQtcmFkaW8uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaGVhZHdpbmQtdWkvc3JjL2NvbXBvbmVudHMvaGVhZHdpbmQtcmFkaW8tZ3JvdXAvaGVhZHdpbmQtcmFkaW8vaGVhZHdpbmQtcmFkaW8uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFvQixTQUFTLEVBQUUsWUFBWSxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0csT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDMUYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0seURBQXlELENBQUM7OztBQWV2RyxNQUFNLE9BQU8sc0JBQXNCO0lBT2pDLFlBQ21CLFdBQXVCLEVBQ3ZCLDBCQUFxRDtRQURyRCxnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUN2QiwrQkFBMEIsR0FBMUIsMEJBQTBCLENBQTJCO1FBSmhFLGNBQVMsR0FBRyxLQUFLLENBQUM7SUFLdkIsQ0FBQztJQUVKLElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3BHLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssS0FBSyxLQUFLLENBQUM7WUFFdEMsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ2hCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDdkMsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUdELFdBQVc7UUFDVCxJQUFJLENBQUMsMEJBQTBCLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEUsQ0FBQzsrR0E3QlUsc0JBQXNCO21HQUF0QixzQkFBc0IscU9BTnRCLENBQUMscUJBQXFCLENBQUMsOERBU3BCLDRCQUE0QixnRENyQjVDLCtCQUNBOzs0RkRpQmEsc0JBQXNCO2tCQVpsQyxTQUFTOytCQUNFLGdCQUFnQixjQUNkLElBQUksV0FDUCxFQUFFLGFBR0EsQ0FBQyxxQkFBcUIsQ0FBQyxRQUM1Qjt3QkFDSixLQUFLLEVBQUUsZ0JBQWdCO3dCQUN2QixDQUFDLDJCQUEyQixDQUFDLEVBQUUsVUFBVTtxQkFDMUM7dUhBRzBCLEtBQUs7c0JBQS9CLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQUUwQyxNQUFNO3NCQUF4RSxZQUFZO3VCQUFDLDRCQUE0QixFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRTtnQkF3QmpFLFdBQVc7c0JBRFYsWUFBWTt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJDb250ZW50SW5pdCwgQ29tcG9uZW50LCBDb250ZW50Q2hpbGQsIERlc3Ryb3lSZWYsIEhvc3RMaXN0ZW5lciwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSGVhZHdpbmRDbGlja0RldGVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaGVhZHdpbmQtY2xpY2stZGV0ZWN0b3Iuc2VydmljZSc7XHJcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcclxuaW1wb3J0IHsgSGVhZHdpbmRSYWRpb0J1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4vaGVhZHdpbmQtcmFkaW8tYnV0dG9uL2hlYWR3aW5kLXJhZGlvLWJ1dHRvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBIZWFkd2luZFJhZGlvR3JvdXBTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZS9oZWFkd2luZC1yYWRpby1ncm91cC5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnaGVhZHdpbmQtcmFkaW8nLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW10sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2hlYWR3aW5kLXJhZGlvLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vaGVhZHdpbmQtcmFkaW8uY29tcG9uZW50LnNjc3MnLFxyXG4gIHByb3ZpZGVyczogW0hlYWR3aW5kQ2xpY2tEZXRlY3Rvcl0sXHJcbiAgaG9zdDoge1xyXG4gICAgY2xhc3M6ICdoZWFkd2luZC1yYWRpbycsXHJcbiAgICBbJ1tjbGFzcy5oZWFkd2luZC1zZWxlY3RlZF0nXTogJ3NlbGVjdGVkJyxcclxuICB9LFxyXG59KVxyXG5leHBvcnQgY2xhc3MgSGVhZHdpbmRSYWRpb0NvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQge1xyXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIHZhbHVlOiBhbnk7XHJcblxyXG4gIEBDb250ZW50Q2hpbGQoSGVhZHdpbmRSYWRpb0J1dHRvbkNvbXBvbmVudCwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KSBidXR0b24/OiBIZWFkd2luZFJhZGlvQnV0dG9uQ29tcG9uZW50O1xyXG5cclxuICBwcml2YXRlIF9zZWxlY3RlZCA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3lSZWY6IERlc3Ryb3lSZWYsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9oZWFkd2luZFJhZGlvR3JvdXBTZXJ2aWNlOiBIZWFkd2luZFJhZGlvR3JvdXBTZXJ2aWNlLFxyXG4gICkge31cclxuXHJcbiAgZ2V0IHNlbGVjdGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xyXG4gICAgdGhpcy5faGVhZHdpbmRSYWRpb0dyb3VwU2VydmljZS52YWx1ZSQucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZikpLnN1YnNjcmliZSgodmFsdWUpID0+IHtcclxuICAgICAgdGhpcy5fc2VsZWN0ZWQgPSB0aGlzLnZhbHVlID09PSB2YWx1ZTtcclxuXHJcbiAgICAgIGlmICh0aGlzLmJ1dHRvbikge1xyXG4gICAgICAgIHRoaXMuYnV0dG9uLnNlbGVjdGVkID0gdGhpcy5zZWxlY3RlZDtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdjbGljaycpXHJcbiAgb25Ib3N0Q2xpY2soKTogdm9pZCB7XHJcbiAgICB0aGlzLl9oZWFkd2luZFJhZGlvR3JvdXBTZXJ2aWNlLnNlbGVjdE9wdGlvbi5lbWl0KHRoaXMudmFsdWUpO1xyXG4gIH1cclxufVxyXG4iLCI8bmctY29udGVudD48L25nLWNvbnRlbnQ+XHJcbiJdfQ==