UNPKG

@favian/headwind-ui

Version:

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

92 lines 10.3 kB
import { booleanAttribute, Component, EventEmitter, HostListener, Input, Output } from '@angular/core'; import { HeadwindSwitchService } from './service/headwind-switch.service'; import { HeadwindControlValueAccessor } from '../../abstracts/headwind-control-value-accessor'; import * as i0 from "@angular/core"; import * as i1 from "./service/headwind-switch.service"; export class HeadwindSwitchComponent extends HeadwindControlValueAccessor { constructor(_headwindSwitchService) { super(); this._headwindSwitchService = _headwindSwitchService; this.checkedChange = new EventEmitter(); } get checked() { return this._headwindSwitchService.checked; } set checked(value) { this._headwindSwitchService.checked = value; } get disabled() { return this.isDisabled; } set disabled(value) { this.setDisabledState(value); } onHostClick() { this.toggle(); } onHostBlur() { this.onTouched(); } onHostSpaceKeydown(event) { event.stopPropagation(); event.preventDefault(); this.toggle(); } writeValue(obj) { this.checked = obj; } updateValue(value) { super.updateValue(value); this.checkedChange.emit(value); } check() { if (this.disabled) { return; } this.updateValue(true); } uncheck() { if (this.disabled) { return; } this.updateValue(false); } toggle() { if (this.checked) { this.uncheck(); } else { this.check(); } } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: HeadwindSwitchComponent, deps: [{ token: i1.HeadwindSwitchService }], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.13", type: HeadwindSwitchComponent, isStandalone: true, selector: "headwind-switch", inputs: { checked: ["checked", "checked", booleanAttribute], disabled: ["disabled", "disabled", booleanAttribute] }, outputs: { checkedChange: "checkedChange" }, host: { attributes: { "tabindex": "0", "role": "switch" }, listeners: { "click": "onHostClick()", "blur": "onHostBlur()", "keydown.space": "onHostSpaceKeydown($event)" }, properties: { "attr.aria-checked": "checked", "class.headwind-checked": "checked" }, classAttribute: "headwind-switch" }, providers: [HeadwindSwitchService], usesInheritance: true, ngImport: i0, template: "<ng-content></ng-content>\r\n", styles: [""] }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: HeadwindSwitchComponent, decorators: [{ type: Component, args: [{ selector: 'headwind-switch', standalone: true, imports: [], host: { tabindex: '0', class: 'headwind-switch', role: 'switch', ['[attr.aria-checked]']: 'checked', ['[class.headwind-checked]']: 'checked', }, providers: [HeadwindSwitchService], template: "<ng-content></ng-content>\r\n" }] }], ctorParameters: () => [{ type: i1.HeadwindSwitchService }], propDecorators: { checkedChange: [{ type: Output }], checked: [{ type: Input, args: [{ transform: booleanAttribute }] }], disabled: [{ type: Input, args: [{ transform: booleanAttribute }] }], onHostClick: [{ type: HostListener, args: ['click'] }], onHostBlur: [{ type: HostListener, args: ['blur'] }], onHostSpaceKeydown: [{ type: HostListener, args: ['keydown.space', ['$event']] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZHdpbmQtc3dpdGNoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2hlYWR3aW5kLXVpL3NyYy9jb21wb25lbnRzL2hlYWR3aW5kLXN3aXRjaC9oZWFkd2luZC1zd2l0Y2guY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaGVhZHdpbmQtdWkvc3JjL2NvbXBvbmVudHMvaGVhZHdpbmQtc3dpdGNoL2hlYWR3aW5kLXN3aXRjaC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQzs7O0FBaUIvRixNQUFNLE9BQU8sdUJBQXdCLFNBQVEsNEJBQTRCO0lBR3ZFLFlBQTZCLHNCQUE2QztRQUN4RSxLQUFLLEVBQUUsQ0FBQztRQURtQiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXVCO1FBRmhFLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztJQUl0RCxDQUFDO0lBRUQsSUFDSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsT0FBTyxDQUFDO0lBQzdDLENBQUM7SUFFRCxJQUFJLE9BQU8sQ0FBQyxLQUFjO1FBQ3hCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQzlDLENBQUM7SUFFRCxJQUNJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUVELElBQUksUUFBUSxDQUFDLEtBQWM7UUFDekIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFHRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2hCLENBQUM7SUFHRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFHRCxrQkFBa0IsQ0FBQyxLQUFZO1FBQzdCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFFdkIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2hCLENBQUM7SUFFUSxVQUFVLENBQUMsR0FBUTtRQUMxQixJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQztJQUNyQixDQUFDO0lBRVEsV0FBVyxDQUFDLEtBQVU7UUFDN0IsS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xCLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsT0FBTztRQUNMLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xCLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNqQixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNmLENBQUM7SUFDSCxDQUFDOytHQTFFVSx1QkFBdUI7bUdBQXZCLHVCQUF1Qiw2RkFPZCxnQkFBZ0Isc0NBU2hCLGdCQUFnQixrV0FsQnpCLENBQUMscUJBQXFCLENBQUMsaURDakJwQywrQkFDQTs7NEZEa0JhLHVCQUF1QjtrQkFmbkMsU0FBUzsrQkFDRSxpQkFBaUIsY0FDZixJQUFJLFdBQ1AsRUFBRSxRQUdMO3dCQUNKLFFBQVEsRUFBRSxHQUFHO3dCQUNiLEtBQUssRUFBRSxpQkFBaUI7d0JBQ3hCLElBQUksRUFBRSxRQUFRO3dCQUNkLENBQUMscUJBQXFCLENBQUMsRUFBRSxTQUFTO3dCQUNsQyxDQUFDLDBCQUEwQixDQUFDLEVBQUUsU0FBUztxQkFDeEMsYUFDVSxDQUFDLHFCQUFxQixDQUFDOzBGQUd4QixhQUFhO3NCQUF0QixNQUFNO2dCQU9ILE9BQU87c0JBRFYsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFVbEMsUUFBUTtzQkFEWCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQVV0QyxXQUFXO3NCQURWLFlBQVk7dUJBQUMsT0FBTztnQkFNckIsVUFBVTtzQkFEVCxZQUFZO3VCQUFDLE1BQU07Z0JBTXBCLGtCQUFrQjtzQkFEakIsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBib29sZWFuQXR0cmlidXRlLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEhlYWR3aW5kU3dpdGNoU2VydmljZSB9IGZyb20gJy4vc2VydmljZS9oZWFkd2luZC1zd2l0Y2guc2VydmljZSc7XHJcbmltcG9ydCB7IEhlYWR3aW5kQ29udHJvbFZhbHVlQWNjZXNzb3IgfSBmcm9tICcuLi8uLi9hYnN0cmFjdHMvaGVhZHdpbmQtY29udHJvbC12YWx1ZS1hY2Nlc3Nvcic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2hlYWR3aW5kLXN3aXRjaCcsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vaGVhZHdpbmQtc3dpdGNoLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vaGVhZHdpbmQtc3dpdGNoLmNvbXBvbmVudC5zY3NzJyxcclxuICBob3N0OiB7XHJcbiAgICB0YWJpbmRleDogJzAnLFxyXG4gICAgY2xhc3M6ICdoZWFkd2luZC1zd2l0Y2gnLFxyXG4gICAgcm9sZTogJ3N3aXRjaCcsXHJcbiAgICBbJ1thdHRyLmFyaWEtY2hlY2tlZF0nXTogJ2NoZWNrZWQnLFxyXG4gICAgWydbY2xhc3MuaGVhZHdpbmQtY2hlY2tlZF0nXTogJ2NoZWNrZWQnLFxyXG4gIH0sXHJcbiAgcHJvdmlkZXJzOiBbSGVhZHdpbmRTd2l0Y2hTZXJ2aWNlXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEhlYWR3aW5kU3dpdGNoQ29tcG9uZW50IGV4dGVuZHMgSGVhZHdpbmRDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcbiAgQE91dHB1dCgpIGNoZWNrZWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgX2hlYWR3aW5kU3dpdGNoU2VydmljZTogSGVhZHdpbmRTd2l0Y2hTZXJ2aWNlKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXHJcbiAgZ2V0IGNoZWNrZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5faGVhZHdpbmRTd2l0Y2hTZXJ2aWNlLmNoZWNrZWQ7XHJcbiAgfVxyXG5cclxuICBzZXQgY2hlY2tlZCh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5faGVhZHdpbmRTd2l0Y2hTZXJ2aWNlLmNoZWNrZWQgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxyXG4gIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmlzRGlzYWJsZWQ7XHJcbiAgfVxyXG5cclxuICBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuc2V0RGlzYWJsZWRTdGF0ZSh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdjbGljaycpXHJcbiAgb25Ib3N0Q2xpY2soKTogdm9pZCB7XHJcbiAgICB0aGlzLnRvZ2dsZSgpO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignYmx1cicpXHJcbiAgb25Ib3N0Qmx1cigpOiB2b2lkIHtcclxuICAgIHRoaXMub25Ub3VjaGVkKCk7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duLnNwYWNlJywgWyckZXZlbnQnXSlcclxuICBvbkhvc3RTcGFjZUtleWRvd24oZXZlbnQ6IEV2ZW50KTogdm9pZCB7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblxyXG4gICAgdGhpcy50b2dnbGUoKTtcclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIHdyaXRlVmFsdWUob2JqOiBhbnkpIHtcclxuICAgIHRoaXMuY2hlY2tlZCA9IG9iajtcclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIHVwZGF0ZVZhbHVlKHZhbHVlOiBhbnkpIHtcclxuICAgIHN1cGVyLnVwZGF0ZVZhbHVlKHZhbHVlKTtcclxuICAgIHRoaXMuY2hlY2tlZENoYW5nZS5lbWl0KHZhbHVlKTtcclxuICB9XHJcblxyXG4gIGNoZWNrKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudXBkYXRlVmFsdWUodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICB1bmNoZWNrKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudXBkYXRlVmFsdWUoZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuY2hlY2tlZCkge1xyXG4gICAgICB0aGlzLnVuY2hlY2soKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY2hlY2soKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4iXX0=