UNPKG

@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
/** * @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=