UNPKG

@ngx-tiny/switch-input

Version:

![minzipped size](https://img.shields.io/bundlephobia/minzip/@ngx-tiny/switch-input?style=for-the-badge) ![last commit](https://img.shields.io/github/last-commit/aavanzyl/ngx-tiny?style=for-the-badge) ![licence](https://img.shields.io/npm/l/@ngx-tiny/sw

58 lines 7.81 kB
import { forwardRef, Component, Input, ViewEncapsulation, ChangeDetectionStrategy, Output, EventEmitter } from '@angular/core'; import { NG_VALUE_ACCESSOR } from '@angular/forms'; let instanceId = 0; export class NgxSwitchInputComponent { constructor() { this.instanceId = `ngx-switch-input-${instanceId++}`; // tslint:disable-next-line:no-input-rename this._value = false; this.valueChange = new EventEmitter(); this.onChange = (_value) => { }; this.onTouched = () => { }; } get value() { return this._value; } set value(val) { this._value = val; this.onChange(val); this.onTouched(); this.valueChange.emit(val); } registerOnChange(fn) { this.onChange = fn; } registerOnTouched(fn) { this.onTouched = fn; } writeValue(value) { if (value !== this.value) { this.value = value; } } switch() { this.value = !this.value; } } NgxSwitchInputComponent.decorators = [ { type: Component, args: [{ selector: 'ngx-switch-input', template: "<label [for]=\"instanceId\" class=\"ngx-switch-input\">\r\n <span *ngIf=\"label\" class=\"ngx-switch-input-label\">{{label}}</span>\r\n <div class=\"ngx-switch-input-wrap\" [ngClass]=\"{ 'ngx-switch-input-checked': value }\">\r\n <input type=\"checkbox\" [id]=\"instanceId\" class=\"ngx-switch-input-input\" [checked]=\"value\" (change)=\"switch()\" [attr.aria-label]=\"label\">\r\n <span class=\"ngx-switch-input-background\"></span>\r\n <span class=\"ngx-switch-input-handle\"></span>\r\n </div>\r\n</label>", changeDetection: ChangeDetectionStrategy.Default, providers: [ { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgxSwitchInputComponent), multi: true } ], encapsulation: ViewEncapsulation.None, styles: ["ngx-switch-input{display:inline-block}.ngx-switch-input{padding:5px 0}.ngx-switch-input-wrap{cursor:pointer;display:inline-block;overflow:visible;padding:1px 0;position:relative;vertical-align:top}.ngx-switch-input-label{cursor:pointer;display:inline-block;font-size:15px;padding-right:5px;padding-top:5px}.ngx-switch-input-handle{background:#fff;border-radius:100%;height:16px;left:3px;position:absolute;top:6px;transition:left .15s ease-out;width:16px}.ngx-switch-input-input{left:0;opacity:0;position:absolute;top:0}.ngx-switch-input-background{background:#ccc;border-radius:15px;display:block;font-size:16px;font-weight:400;height:26px;position:relative;text-transform:uppercase;transition:.15s ease-out;transition-property:opacity background;width:45px}.ngx-switch-input-background:after,.ngx-switch-input-background:before{line-height:1;margin-top:-7px;position:absolute;top:50%;transition:inherit}.ngx-switch-input-checked .ngx-switch-input-background{background:#3d3d3d}.ngx-switch-input-checked .ngx-switch-input-background:before{opacity:0}.ngx-switch-input-checked .ngx-switch-input-background:after{opacity:1}.ngx-switch-input-checked .ngx-switch-input-handle{left:25px}"] },] } ]; NgxSwitchInputComponent.propDecorators = { label: [{ type: Input }], _value: [{ type: Input, args: ['value',] }], valueChange: [{ type: Output }] }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXN3aXRjaC1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc3dpdGNoLWlucHV0L3NyYy9uZ3gtc3dpdGNoLWlucHV0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsVUFBVSxFQUNWLFNBQVMsRUFDVCxLQUFLLEVBQ0wsaUJBQWlCLEVBQ2pCLHVCQUF1QixFQUN2QixNQUFNLEVBQ04sWUFBWSxFQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6RSxJQUFJLFVBQVUsR0FBRyxDQUFDLENBQUM7QUFnQm5CLE1BQU0sT0FBTyx1QkFBdUI7SUFkcEM7UUFnQkUsZUFBVSxHQUFHLG9CQUFvQixVQUFVLEVBQUUsRUFBRSxDQUFDO1FBZWhELDJDQUEyQztRQUMzQixXQUFNLEdBQUcsS0FBSyxDQUFDO1FBRXJCLGdCQUFXLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFOUQsYUFBUSxHQUFHLENBQUMsTUFBZSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDcEMsY0FBUyxHQUFHLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztJQW1CeEIsQ0FBQztJQXRDQyxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUVELElBQUksS0FBSyxDQUFDLEdBQUc7UUFDWCxJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQztRQUNsQixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBWUQsZ0JBQWdCLENBQUMsRUFBNEI7UUFDM0MsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEVBQWM7UUFDOUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFjO1FBQ3ZCLElBQUksS0FBSyxLQUFLLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDeEIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7U0FDcEI7SUFDSCxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQzNCLENBQUM7OztZQXZERixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGtCQUFrQjtnQkFDNUIscWhCQUFnRDtnQkFFaEQsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE9BQU87Z0JBQ2hELFNBQVMsRUFBRTtvQkFDVDt3QkFDRSxPQUFPLEVBQUUsaUJBQWlCO3dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHVCQUF1QixDQUFDO3dCQUN0RCxLQUFLLEVBQUUsSUFBSTtxQkFDWjtpQkFDRjtnQkFDRCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTs7YUFDdEM7OztvQkFnQkUsS0FBSztxQkFHTCxLQUFLLFNBQUMsT0FBTzswQkFFYixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBmb3J3YXJkUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBJbnB1dCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBPdXRwdXQsXHJcbiAgRXZlbnRFbWl0dGVyXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbmxldCBpbnN0YW5jZUlkID0gMDtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbmd4LXN3aXRjaC1pbnB1dCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL25neC1zd2l0Y2gtaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL25neC1zd2l0Y2gtaW5wdXQuY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkRlZmF1bHQsXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBOZ3hTd2l0Y2hJbnB1dENvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlXHJcbiAgICB9XHJcbiAgXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ3hTd2l0Y2hJbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuXHJcbiAgaW5zdGFuY2VJZCA9IGBuZ3gtc3dpdGNoLWlucHV0LSR7aW5zdGFuY2VJZCsrfWA7XHJcblxyXG4gIGdldCB2YWx1ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcclxuICB9XHJcblxyXG4gIHNldCB2YWx1ZSh2YWwpIHtcclxuICAgIHRoaXMuX3ZhbHVlID0gdmFsO1xyXG4gICAgdGhpcy5vbkNoYW5nZSh2YWwpO1xyXG4gICAgdGhpcy5vblRvdWNoZWQoKTtcclxuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh2YWwpO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgbGFiZWw7XHJcblxyXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1pbnB1dC1yZW5hbWVcclxuICBASW5wdXQoJ3ZhbHVlJykgX3ZhbHVlID0gZmFsc2U7XHJcblxyXG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIG9uQ2hhbmdlID0gKF92YWx1ZTogYm9vbGVhbikgPT4geyB9O1xyXG4gIG9uVG91Y2hlZCA9ICgpID0+IHsgfTtcclxuXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBib29sZWFuKSA9PiB2b2lkKSB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCkge1xyXG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcclxuICB9XHJcblxyXG4gIHdyaXRlVmFsdWUodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIGlmICh2YWx1ZSAhPT0gdGhpcy52YWx1ZSkge1xyXG4gICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzd2l0Y2goKSB7XHJcbiAgICB0aGlzLnZhbHVlID0gIXRoaXMudmFsdWU7XHJcbiAgfVxyXG59XHJcbiJdfQ==