@c8y/ngx-components
Version:
Angular modules for Cumulocity IoT applications
114 lines • 11.4 kB
JavaScript
import { Component, ElementRef, EventEmitter, Input, Output, ViewChild, forwardRef } from '@angular/core';
import { NG_VALUE_ACCESSOR } from '@angular/forms';
import * as i0 from "@angular/core";
import * as i1 from "../i18n/c8y-translate.directive";
/**
* A component to display a radio button in a c8y-li. Use it with content projection. It
* can be used standalone or with an ngModel.
*
* ```html
* <c8y-li>
* <c8y-li-radio></c8y-li-radio>
* </c8y-li>
* ```
*/
export class ListItemRadioComponent {
constructor() {
/**
* Indicates if the radio is selected.
*/
this.selected = false;
/**
* The name of the radio (use different names for different radio groups).
*/
this.name = 'list_item_radio';
/**
* Indicates if the radio is disabled.
*/
this.disabled = false;
/**
* An event emitted as soon as the radio is selected.
*/
this.onSelect = new EventEmitter();
}
/**
* Resets the native radio element.
*/
reset() {
this.radio.nativeElement.checked = false;
}
/**
* @ignore
*/
ngOnChanges(changes) {
if (changes.selected && !changes.selected.firstChange) {
this.onSelect.emit(changes.selected.currentValue);
}
}
/**
* Triggered when the radio is changed.
* @param checked Should it be checked or not?
*/
change(checked) {
this.onSelect.emit(checked);
this.model = this.value;
if (this.onChange) {
this.onChange(this.model);
}
if (this.onTouched) {
this.onTouched();
}
}
/**
* Registers an onChange event.
*/
registerOnChange(fn) {
this.onChange = fn;
}
/**
* Registers an onTouch event.
*/
registerOnTouched(fn) {
this.onTouched = fn;
}
/**
* @ignore
*/
writeValue(value) {
this.model = value;
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ListItemRadioComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ListItemRadioComponent, selector: "c8y-list-item-radio, c8y-li-radio", inputs: { selected: "selected", name: "name", disabled: "disabled", value: "value" }, outputs: { onSelect: "onSelect" }, host: { classAttribute: "c8y-list__item__radio" }, providers: [
{
provide: NG_VALUE_ACCESSOR,
multi: true,
useExisting: forwardRef(() => ListItemRadioComponent)
}
], viewQueries: [{ propertyName: "radio", first: true, predicate: ["radio"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<label class=\"c8y-radio\">\n <input\n #radio\n id=\"event\"\n type=\"radio\"\n [name]=\"name\"\n [checked]=\"selected\"\n (change)=\"change($event.target.checked); (false)\"\n [disabled]=\"disabled\"\n />\n <span></span>\n <span for=\"event\" class=\"sr-only\" translate>event</span>\n</label>\n<ng-content></ng-content>\n", dependencies: [{ kind: "directive", type: i1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }] }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ListItemRadioComponent, decorators: [{
type: Component,
args: [{ selector: 'c8y-list-item-radio, c8y-li-radio', host: {
class: 'c8y-list__item__radio'
}, providers: [
{
provide: NG_VALUE_ACCESSOR,
multi: true,
useExisting: forwardRef(() => ListItemRadioComponent)
}
], template: "<label class=\"c8y-radio\">\n <input\n #radio\n id=\"event\"\n type=\"radio\"\n [name]=\"name\"\n [checked]=\"selected\"\n (change)=\"change($event.target.checked); (false)\"\n [disabled]=\"disabled\"\n />\n <span></span>\n <span for=\"event\" class=\"sr-only\" translate>event</span>\n</label>\n<ng-content></ng-content>\n" }]
}], propDecorators: { radio: [{
type: ViewChild,
args: ['radio', { static: true }]
}], selected: [{
type: Input
}], name: [{
type: Input
}], disabled: [{
type: Input
}], onSelect: [{
type: Output
}], value: [{
type: Input
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1pdGVtLXJhZGlvLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvbGlzdC1ncm91cC9saXN0LWl0ZW0tcmFkaW8uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vY29yZS9saXN0LWdyb3VwL2xpc3QtaXRlbS1yYWRpby5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFFTixTQUFTLEVBQ1QsVUFBVSxFQUNYLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBRXpFOzs7Ozs7Ozs7R0FTRztBQWVILE1BQU0sT0FBTyxzQkFBc0I7SUFkbkM7UUFtQkU7O1dBRUc7UUFFSCxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCOztXQUVHO1FBRUgsU0FBSSxHQUFHLGlCQUFpQixDQUFDO1FBQ3pCOztXQUVHO1FBRUgsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQjs7V0FFRztRQUVILGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO0tBcUV4QztJQW5EQzs7T0FFRztJQUNILEtBQUs7UUFDSCxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQzNDLENBQUM7SUFFRDs7T0FFRztJQUNILFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxRQUFRLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3RELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDcEQsQ0FBQztJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSCxNQUFNLENBQUMsT0FBTztRQUNaLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzVCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUN4QixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QixDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ25CLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxnQkFBZ0IsQ0FBQyxFQUFPO1FBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7T0FFRztJQUNILGlCQUFpQixDQUFDLEVBQU87UUFDdkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsVUFBVSxDQUFDLEtBQWM7UUFDdkIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDckIsQ0FBQzsrR0E1RlUsc0JBQXNCO21HQUF0QixzQkFBc0Isd09BUnRCO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsS0FBSyxFQUFFLElBQUk7Z0JBQ1gsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQzthQUN0RDtTQUNGLDZKQ2xDSCw4VkFjQTs7NEZEc0JhLHNCQUFzQjtrQkFkbEMsU0FBUzsrQkFDRSxtQ0FBbUMsUUFFdkM7d0JBQ0osS0FBSyxFQUFFLHVCQUF1QjtxQkFDL0IsYUFDVTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixLQUFLLEVBQUUsSUFBSTs0QkFDWCxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSx1QkFBdUIsQ0FBQzt5QkFDdEQ7cUJBQ0Y7OEJBTXFDLEtBQUs7c0JBQTFDLFNBQVM7dUJBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFLcEMsUUFBUTtzQkFEUCxLQUFLO2dCQU1OLElBQUk7c0JBREgsS0FBSztnQkFNTixRQUFRO3NCQURQLEtBQUs7Z0JBTU4sUUFBUTtzQkFEUCxNQUFNO2dCQUtFLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGQsXG4gIGZvcndhcmRSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbi8qKlxuICogQSBjb21wb25lbnQgdG8gZGlzcGxheSBhIHJhZGlvIGJ1dHRvbiBpbiBhIGM4eS1saS4gVXNlIGl0IHdpdGggY29udGVudCBwcm9qZWN0aW9uLiBJdFxuICogY2FuIGJlIHVzZWQgc3RhbmRhbG9uZSBvciB3aXRoIGFuIG5nTW9kZWwuXG4gKlxuICogYGBgaHRtbFxuICogPGM4eS1saT5cbiAqICAgPGM4eS1saS1yYWRpbz48L2M4eS1saS1yYWRpbz5cbiAqIDwvYzh5LWxpPlxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1saXN0LWl0ZW0tcmFkaW8sIGM4eS1saS1yYWRpbycsXG4gIHRlbXBsYXRlVXJsOiAnLi9saXN0LWl0ZW0tcmFkaW8uY29tcG9uZW50Lmh0bWwnLFxuICBob3N0OiB7XG4gICAgY2xhc3M6ICdjOHktbGlzdF9faXRlbV9fcmFkaW8nXG4gIH0sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBMaXN0SXRlbVJhZGlvQ29tcG9uZW50KVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBMaXN0SXRlbVJhZGlvQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgQFZpZXdDaGlsZCgncmFkaW8nLCB7IHN0YXRpYzogdHJ1ZSB9KSByYWRpbzogRWxlbWVudFJlZjtcbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiB0aGUgcmFkaW8gaXMgc2VsZWN0ZWQuXG4gICAqL1xuICBASW5wdXQoKVxuICBzZWxlY3RlZCA9IGZhbHNlO1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHJhZGlvICh1c2UgZGlmZmVyZW50IG5hbWVzIGZvciBkaWZmZXJlbnQgcmFkaW8gZ3JvdXBzKS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIG5hbWUgPSAnbGlzdF9pdGVtX3JhZGlvJztcbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiB0aGUgcmFkaW8gaXMgZGlzYWJsZWQuXG4gICAqL1xuICBASW5wdXQoKVxuICBkaXNhYmxlZCA9IGZhbHNlO1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlZCBhcyBzb29uIGFzIHRoZSByYWRpbyBpcyBzZWxlY3RlZC5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBvblNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50IHZhbHVlLlxuICAgKi9cbiAgQElucHV0KCkgdmFsdWU6IGFueTtcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG1vZGVsOiBhbnk7XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBvbkNoYW5nZTogKHZhbHVlOiBhbnkpID0+IHZvaWQ7XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBvblRvdWNoZWQ6ICgpID0+IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFJlc2V0cyB0aGUgbmF0aXZlIHJhZGlvIGVsZW1lbnQuXG4gICAqL1xuICByZXNldCgpIHtcbiAgICB0aGlzLnJhZGlvLm5hdGl2ZUVsZW1lbnQuY2hlY2tlZCA9IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5zZWxlY3RlZCAmJiAhY2hhbmdlcy5zZWxlY3RlZC5maXJzdENoYW5nZSkge1xuICAgICAgdGhpcy5vblNlbGVjdC5lbWl0KGNoYW5nZXMuc2VsZWN0ZWQuY3VycmVudFZhbHVlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVHJpZ2dlcmVkIHdoZW4gdGhlIHJhZGlvIGlzIGNoYW5nZWQuXG4gICAqIEBwYXJhbSBjaGVja2VkIFNob3VsZCBpdCBiZSBjaGVja2VkIG9yIG5vdD9cbiAgICovXG4gIGNoYW5nZShjaGVja2VkKSB7XG4gICAgdGhpcy5vblNlbGVjdC5lbWl0KGNoZWNrZWQpO1xuICAgIHRoaXMubW9kZWwgPSB0aGlzLnZhbHVlO1xuICAgIGlmICh0aGlzLm9uQ2hhbmdlKSB7XG4gICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMubW9kZWwpO1xuICAgIH1cbiAgICBpZiAodGhpcy5vblRvdWNoZWQpIHtcbiAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBhbiBvbkNoYW5nZSBldmVudC5cbiAgICovXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgYW4gb25Ub3VjaCBldmVudC5cbiAgICovXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHdyaXRlVmFsdWUodmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLm1vZGVsID0gdmFsdWU7XG4gIH1cbn1cbiIsIjxsYWJlbCBjbGFzcz1cImM4eS1yYWRpb1wiPlxuICA8aW5wdXRcbiAgICAjcmFkaW9cbiAgICBpZD1cImV2ZW50XCJcbiAgICB0eXBlPVwicmFkaW9cIlxuICAgIFtuYW1lXT1cIm5hbWVcIlxuICAgIFtjaGVja2VkXT1cInNlbGVjdGVkXCJcbiAgICAoY2hhbmdlKT1cImNoYW5nZSgkZXZlbnQudGFyZ2V0LmNoZWNrZWQpOyAoZmFsc2UpXCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAvPlxuICA8c3Bhbj48L3NwYW4+XG4gIDxzcGFuIGZvcj1cImV2ZW50XCIgY2xhc3M9XCJzci1vbmx5XCIgdHJhbnNsYXRlPmV2ZW50PC9zcGFuPlxuPC9sYWJlbD5cbjxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiJdfQ==