@favian/headwind-ui
Version:
Headless UI for Angular - Styleless Angular components to integrate with Tailwind CSS
92 lines • 10.3 kB
JavaScript
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=