@asi-ngtools/lib
Version:
This project is a little components library, simple to use, which will help you to simplify your project.
174 lines (173 loc) • 13.3 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
import { NG_VALUE_ACCESSOR } from '@angular/forms';
import { DefaultControlValueAccessor } from './../common/default-control-value-accessor';
import { AsiRadioComponent } from './asi-radio/asi-radio.component';
import { Input, Component, TemplateRef, ViewChild, ContentChildren, QueryList, forwardRef, Renderer2, ElementRef } from '@angular/core';
export class AsiRadioGroupComponent extends DefaultControlValueAccessor {
/**
* @param {?} renderer
* @param {?} elementRef
*/
constructor(renderer, elementRef) {
super();
this.renderer = renderer;
this.elementRef = elementRef;
/**
* Label position
*/
this.labelPosition = 'top';
/**
* Vertical / Horizontal
*/
this.vertical = false;
/**
* Track data base on a sub attribute rather than reference
*/
this.trackBy = null;
this.radios = new Array();
}
/**
* @return {?}
*/
ngOnInit() {
this.renderer.addClass(this.elementRef.nativeElement, 'label-' + this.labelPosition);
if (this.vertical) {
this.renderer.addClass(this.elementRef.nativeElement, 'asi-vertical');
}
}
/**
* @return {?}
*/
getRadios() {
return this.radios;
}
/**
* @param {?} radioEvent
* @return {?}
*/
onRadioChecked(radioEvent) {
if (radioEvent.value) {
this.radios.forEach((radio) => {
if (radio.index === radioEvent.index) {
radio.active = true;
this.value = radio.value;
}
else {
radio.active = false;
}
});
}
else {
this.radios.forEach((radio) => {
radio.active = false;
});
this.value = null;
}
}
/**
* @return {?}
*/
ngAfterContentInit() {
/** @type {?} */
let index = -1;
this.queryRadios.forEach(radio => {
radio.index = ++index;
this.radios.push(radio);
});
this.initValue(this.value);
}
/**
* @param {?} value
* @return {?}
*/
writeValue(value) {
this._value = value;
this.initValue(value);
}
/**
* @param {?} value
* @return {?}
*/
initValue(value) {
if (value == null) {
this.radios.forEach((radio) => {
radio.active = false;
});
}
else {
if (this.trackBy != null) {
this.radios.forEach((radio) => {
radio.active = radio.value[this.trackBy] === value[this.trackBy];
});
}
else {
this.radios.forEach((radio) => {
radio.active = (radio.value === value);
});
}
}
}
}
AsiRadioGroupComponent.decorators = [
{ type: Component, args: [{
selector: 'asi-radio-group',
template: "<label class=\"input-label\" *ngIf=\"label != null\">{{label | translate}}</label>\n<div class=\"asi-radio-container\">\n <asi-radio-element *ngFor=\"let radio of getRadios()\" \n [radio]=\"radio\" \n [disabled]=\"disabled\"\n [value]=\"radio.active\" \n (onValueChange)=\"onRadioChecked($event)\">\n </asi-radio-element>\n</div>",
host: { 'class': 'asi-component asi-radio-group' },
providers: [
{
provide: NG_VALUE_ACCESSOR,
useExisting: forwardRef(() => AsiRadioGroupComponent),
multi: true
}
]
}] }
];
/** @nocollapse */
AsiRadioGroupComponent.ctorParameters = () => [
{ type: Renderer2 },
{ type: ElementRef }
];
AsiRadioGroupComponent.propDecorators = {
label: [{ type: Input }],
labelPosition: [{ type: Input }],
vertical: [{ type: Input }],
trackBy: [{ type: Input }],
queryRadios: [{ type: ContentChildren, args: [AsiRadioComponent,] }],
contentTemplate: [{ type: ViewChild, args: [TemplateRef,] }]
};
if (false) {
/**
* Label to display (is translated)
* @type {?}
*/
AsiRadioGroupComponent.prototype.label;
/**
* Label position
* @type {?}
*/
AsiRadioGroupComponent.prototype.labelPosition;
/**
* Vertical / Horizontal
* @type {?}
*/
AsiRadioGroupComponent.prototype.vertical;
/**
* Track data base on a sub attribute rather than reference
* @type {?}
*/
AsiRadioGroupComponent.prototype.trackBy;
/** @type {?} */
AsiRadioGroupComponent.prototype.queryRadios;
/** @type {?} */
AsiRadioGroupComponent.prototype.contentTemplate;
/** @type {?} */
AsiRadioGroupComponent.prototype.radios;
/** @type {?} */
AsiRadioGroupComponent.prototype.renderer;
/** @type {?} */
AsiRadioGroupComponent.prototype.elementRef;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNpLXJhZGlvLWdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bhc2ktbmd0b29scy9saWIvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9hc2ktcmFkaW8tZ3JvdXAvYXNpLXJhZGlvLWdyb3VwLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDekYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDcEUsT0FBTyxFQUNMLEtBQUssRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUNwRSxVQUFVLEVBQTRCLFNBQVMsRUFBRSxVQUFVLEVBQzVELE1BQU0sZUFBZSxDQUFDO0FBY3ZCLE1BQU0sNkJBQThCLFNBQVEsMkJBQTJCOzs7OztJQW1CckUsWUFBb0IsUUFBbUIsRUFDN0I7UUFDUixLQUFLLEVBQUUsQ0FBQztRQUZVLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDN0IsZUFBVSxHQUFWLFVBQVU7Ozs7NkJBZjJFLEtBQUs7Ozs7d0JBR2hGLEtBQUs7Ozs7dUJBR0UsSUFBSTtzQkFNdEIsSUFBSSxLQUFLLEVBQXFCO0tBS3RDOzs7O0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDckYsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDbEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsY0FBYyxDQUFDLENBQUM7U0FDdkU7S0FD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QixDQUFDO3dCQUNyRCxLQUFLLEVBQUUsSUFBSTtxQkFDWjtpQkFDRjthQUNGOzs7O1lBZHVDLFNBQVM7WUFBRSxVQUFVOzs7b0JBa0IxRCxLQUFLOzRCQUVMLEtBQUs7dUJBR0wsS0FBSztzQkFHTCxLQUFLOzBCQUVMLGVBQWUsU0FBQyxpQkFBaUI7OEJBRWpDLFNBQVMsU0FBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IERlZmF1bHRDb250cm9sVmFsdWVBY2Nlc3NvciB9IGZyb20gJy4vLi4vY29tbW9uL2RlZmF1bHQtY29udHJvbC12YWx1ZS1hY2Nlc3Nvcic7XHJcbmltcG9ydCB7IEFzaVJhZGlvQ29tcG9uZW50IH0gZnJvbSAnLi9hc2ktcmFkaW8vYXNpLXJhZGlvLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7XHJcbiAgSW5wdXQsIENvbXBvbmVudCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCwgQ29udGVudENoaWxkcmVuLCBRdWVyeUxpc3QsXHJcbiAgZm9yd2FyZFJlZiwgT25Jbml0LCBBZnRlckNvbnRlbnRJbml0LCBSZW5kZXJlcjIsIEVsZW1lbnRSZWZcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXNpLXJhZGlvLWdyb3VwJyxcclxuICB0ZW1wbGF0ZVVybDogJ2FzaS1yYWRpby1ncm91cC5jb21wb25lbnQuaHRtbCcsXHJcbiAgaG9zdDogeyAnY2xhc3MnOiAnYXNpLWNvbXBvbmVudCBhc2ktcmFkaW8tZ3JvdXAnIH0sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBBc2lSYWRpb0dyb3VwQ29tcG9uZW50KSxcclxuICAgICAgbXVsdGk6IHRydWVcclxuICAgIH1cclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBc2lSYWRpb0dyb3VwQ29tcG9uZW50IGV4dGVuZHMgRGVmYXVsdENvbnRyb2xWYWx1ZUFjY2Vzc29yIGltcGxlbWVudHMgT25Jbml0LCBBZnRlckNvbnRlbnRJbml0IHtcclxuXHJcbiAgLyoqIExhYmVsIHRvIGRpc3BsYXkgKGlzIHRyYW5zbGF0ZWQpICovXHJcbiAgQElucHV0KCkgbGFiZWw6IHN0cmluZztcclxuICAvKiogTGFiZWwgcG9zaXRpb24gKi9cclxuICBASW5wdXQoKSBsYWJlbFBvc2l0aW9uOiAndG9wJyB8ICdsZWZ0JyB8ICdyaWdodCcgfCAnYm90dG9tJyB8ICdib3R0b20tY2VudGVyJyB8ICd0b3AtY2VudGVyJyA9ICd0b3AnO1xyXG5cclxuICAvKiogVmVydGljYWwgLyBIb3Jpem9udGFsICovXHJcbiAgQElucHV0KCkgdmVydGljYWwgPSBmYWxzZTtcclxuXHJcbiAgLyoqIFRyYWNrIGRhdGEgYmFzZSBvbiBhIHN1YiBhdHRyaWJ1dGUgcmF0aGVyIHRoYW4gcmVmZXJlbmNlICovXHJcbiAgQElucHV0KCkgdHJhY2tCeTogc3RyaW5nID0gbnVsbDtcclxuXHJcbiAgQENvbnRlbnRDaGlsZHJlbihBc2lSYWRpb0NvbXBvbmVudCkgcXVlcnlSYWRpb3M6IFF1ZXJ5TGlzdDxBc2lSYWRpb0NvbXBvbmVudD47XHJcblxyXG4gIEBWaWV3Q2hpbGQoVGVtcGxhdGVSZWYpIGNvbnRlbnRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgcmFkaW9zID0gbmV3IEFycmF5PEFzaVJhZGlvQ29tcG9uZW50PigpO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdsYWJlbC0nICsgdGhpcy5sYWJlbFBvc2l0aW9uKTtcclxuICAgIGlmICh0aGlzLnZlcnRpY2FsKSB7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdhc2ktdmVydGljYWwnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFJhZGlvcygpIHtcclxuICAgIHJldHVybiB0aGlzLnJhZGlvcztcclxuICB9XHJcblxyXG4gIG9uUmFkaW9DaGVja2VkKHJhZGlvRXZlbnQ6IHsgaW5kZXg6IG51bWJlciwgdmFsdWU6IGJvb2xlYW4gfSkge1xyXG4gICAgaWYgKHJhZGlvRXZlbnQudmFsdWUpIHtcclxuICAgICAgdGhpcy5yYWRpb3MuZm9yRWFjaCgocmFkaW8pID0+IHtcclxuICAgICAgICBpZiAocmFkaW8uaW5kZXggPT09IHJhZGlvRXZlbnQuaW5kZXgpIHtcclxuICAgICAgICAgIHJhZGlvLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnZhbHVlID0gcmFkaW8udmFsdWU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJhZGlvLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnJhZGlvcy5mb3JFYWNoKChyYWRpbykgPT4ge1xyXG4gICAgICAgIHJhZGlvLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy52YWx1ZSA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XHJcbiAgICBsZXQgaW5kZXggPSAtMTtcclxuICAgIHRoaXMucXVlcnlSYWRpb3MuZm9yRWFjaChyYWRpbyA9PiB7XHJcbiAgICAgIHJhZGlvLmluZGV4ID0gKytpbmRleDtcclxuICAgICAgdGhpcy5yYWRpb3MucHVzaChyYWRpbylcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuaW5pdFZhbHVlKHRoaXMudmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KSB7XHJcbiAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xyXG4gICAgdGhpcy5pbml0VmFsdWUodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0VmFsdWUodmFsdWU6IGFueSkge1xyXG4gICAgaWYgKHZhbHVlID09IG51bGwpIHtcclxuICAgICAgdGhpcy5yYWRpb3MuZm9yRWFjaCgocmFkaW8pID0+IHtcclxuICAgICAgICByYWRpby5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy50cmFja0J5ICE9IG51bGwpIHtcclxuICAgICAgICB0aGlzLnJhZGlvcy5mb3JFYWNoKChyYWRpbykgPT4ge1xyXG4gICAgICAgICAgcmFkaW8uYWN0aXZlID0gcmFkaW8udmFsdWVbdGhpcy50cmFja0J5XSA9PT0gdmFsdWVbdGhpcy50cmFja0J5XTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnJhZGlvcy5mb3JFYWNoKChyYWRpbykgPT4ge1xyXG4gICAgICAgICAgcmFkaW8uYWN0aXZlID0gKHJhZGlvLnZhbHVlID09PSB2YWx1ZSlcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=