UNPKG

ngx-form-control

Version:
169 lines (165 loc) 14.9 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc */ import { Component, ElementRef, ViewChild } from '@angular/core'; import { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms'; import { BaseListControlComponent } from '../../utils/base-list-control.component'; export class FormRadioComponent extends BaseListControlComponent { constructor() { super(...arguments); this._isTouched = false; } /** * @return {?} */ get isEmpty() { return !this._selectedIndexes || !this._selectedIndexes.length; } /** * @return {?} */ get value() { return this.isEmpty ? null : this._selectOptions[this._selectedIndexes[0]].value; } /** * @return {?} */ get invalid() { if (this.hasCustomError) { return true; } if (!this._isTouched) { return false; } return this.hasRequiredError; } /** * @return {?} */ get valid() { if (this.hasCustomError) { return false; } if (!this._isTouched) { return false; } return !this.hasRequiredError; } /** * @return {?} */ get errorMessages() { if (this.hasRequiredError) { return [this.requiredErrorMessage]; } if (this.hasCustomError) { return this.innerCustomErrorMessages; } } /** * @param {?} value * @return {?} */ writeValue(value) { /** @type {?} */ const listElement = this.listRadioElement.nativeElement.querySelectorAll('.custom-control-input'); for (const element of listElement) { element.checked = false; } if (!value) { return; } this._selectedIndexes = this.findIndexes([value]); if (!this.listRadioElement || !this.listRadioElement.nativeElement) { return; } if (this.value) { setTimeout(() => { /** @type {?} */ const index = this._selectedIndexes[0]; listElement[index].checked = true; }); } } /** * @return {?} */ validate() { /** @type {?} */ const result = {}; if (this.hasRequiredError) { result['required'] = true; } return result; } /** * @param {?} index * @param {?} event * @return {?} */ toggle(index, event) { this._isTouched = true; index = +index; if (this.required || index !== this._selectedIndexes[0]) { this._selectedIndexes = [+index]; } else { this._selectedIndexes = []; event.target.checked = false; } this.triggerChange(); } /** * @return {?} */ reset() { this._isTouched = false; } } FormRadioComponent.decorators = [ { type: Component, args: [{ selector: 'ngx-form-radio', template: `<label *ngIf="label" [for]="id">{{label}}</label> <div #listRadioElement> <div class="custom-control custom-radio" *ngFor="let option of selectOptions; let index = index;"> <input class="custom-control-input" [ngClass]="{'is-invalid': invalid, 'is-valid': valid}" type="radio" [id]="id + '-' + index" [name]="id" (click)="toggle(index, $event)" title=""> <label class="custom-control-label" [for]="id + '-' + index">{{option.text}}</label> </div> </div> <ng-container *ngIf="valid && validMessage"> <div class="custom-control-input is-valid"></div> <div class="valid-feedback">{{validMessage}}</div> </ng-container> <ng-container *ngIf="invalid"> <div class="custom-control-input is-invalid"></div> <div class="invalid-feedback"> <span *ngFor="let message of errorMessages; let last = last;"> {{message}}<br *ngIf="!last"> </span> </div> </ng-container> `, styles: [`:host .form-check.is-valid~.invalid-feedback,:host .form-check.is-valid~.invalid-tooltip,:host .form-check.is-valid~.valid-feedback,:host .form-check.is-valid~.valid-tooltip,:host .was-validated~.invalid-feedback,:host .was-validated~.invalid-tooltip,:host .was-validated~.valid-feedback,:host .was-validated~.valid-tooltip{display:block}`], providers: [ { provide: NG_VALUE_ACCESSOR, useExisting: FormRadioComponent, multi: true }, { provide: NG_VALIDATORS, useExisting: FormRadioComponent, multi: true } ] },] }, ]; FormRadioComponent.propDecorators = { listRadioElement: [{ type: ViewChild, args: ['listRadioElement',] }] }; if (false) { /** @type {?} */ FormRadioComponent.prototype.listRadioElement; /** @type {?} */ FormRadioComponent.prototype._isTouched; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1yYWRpby5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtZm9ybS1jb250cm9sLyIsInNvdXJjZXMiOlsibGliL2Zvcm0tcmFkaW8vZm9ybS1yYWRpby5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMvRCxPQUFPLEVBQUMsYUFBYSxFQUFFLGlCQUFpQixFQUFtQixNQUFNLGdCQUFnQixDQUFDO0FBQ2xGLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLHlDQUF5QyxDQUFDO0FBdUNqRixNQUFNLHlCQUEwQixTQUFRLHdCQUF3Qjs7OzBCQUl6QyxLQUFLOzs7OztJQUUxQixJQUFJLE9BQU87UUFDVCxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDO0tBQ2hFOzs7O0lBRUQsSUFBSSxLQUFLO1FBQ1AsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7S0FDbEY7Ozs7SUFFRCxJQUFJLE9BQU87UUFDVCxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztZQUN4QixNQUFNLENBQUMsSUFBSSxDQUFDO1NBQ2I7UUFFRCxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1lBQ3JCLE1BQU0sQ0FBQyxLQUFLLENBQUM7U0FDZDtRQUVELE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7S0FDOUI7Ozs7SUFFRCxJQUFJLEtBQUs7UUFDUCxFQUFFLENBQUMsQ0FB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Ozs7Ozs7Q0E0Qlg7Z0JBQ0MsTUFBTSxFQUFFLENBQUMsb1ZBQW9WLENBQUM7Z0JBQzlWLFNBQVMsRUFBRTtvQkFDVCxFQUFDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBQztvQkFDMUUsRUFBQyxPQUFPLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFDO2lCQUN2RTthQUNGOzs7K0JBR0UsU0FBUyxTQUFDLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFbGVtZW50UmVmLCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge05HX1ZBTElEQVRPUlMsIE5HX1ZBTFVFX0FDQ0VTU09SLCBWYWxpZGF0aW9uRXJyb3JzfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7QmFzZUxpc3RDb250cm9sQ29tcG9uZW50fSBmcm9tICcuLi8uLi91dGlscy9iYXNlLWxpc3QtY29udHJvbC5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICduZ3gtZm9ybS1yYWRpbycsXHJcbiAgdGVtcGxhdGU6IGA8bGFiZWwgKm5nSWY9XCJsYWJlbFwiIFtmb3JdPVwiaWRcIj57e2xhYmVsfX08L2xhYmVsPlxyXG5cclxuPGRpdiAjbGlzdFJhZGlvRWxlbWVudD5cclxuICA8ZGl2IGNsYXNzPVwiY3VzdG9tLWNvbnRyb2wgY3VzdG9tLXJhZGlvXCIgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBzZWxlY3RPcHRpb25zOyBsZXQgaW5kZXggPSBpbmRleDtcIj5cclxuICAgIDxpbnB1dCBjbGFzcz1cImN1c3RvbS1jb250cm9sLWlucHV0XCJcclxuICAgICAgICAgICBbbmdDbGFzc109XCJ7J2lzLWludmFsaWQnOiBpbnZhbGlkLCAnaXMtdmFsaWQnOiB2YWxpZH1cIlxyXG4gICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXHJcbiAgICAgICAgICAgW2lkXT1cImlkICsgJy0nICsgaW5kZXhcIlxyXG4gICAgICAgICAgIFtuYW1lXT1cImlkXCJcclxuICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlKGluZGV4LCAkZXZlbnQpXCJcclxuICAgICAgICAgICB0aXRsZT1cIlwiPlxyXG4gICAgPGxhYmVsIGNsYXNzPVwiY3VzdG9tLWNvbnRyb2wtbGFiZWxcIiBbZm9yXT1cImlkICsgJy0nICsgaW5kZXhcIj57e29wdGlvbi50ZXh0fX08L2xhYmVsPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxuZy1jb250YWluZXIgKm5nSWY9XCJ2YWxpZCAmJiB2YWxpZE1lc3NhZ2VcIj5cclxuICA8ZGl2IGNsYXNzPVwiY3VzdG9tLWNvbnRyb2wtaW5wdXQgaXMtdmFsaWRcIj48L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwidmFsaWQtZmVlZGJhY2tcIj57e3ZhbGlkTWVzc2FnZX19PC9kaXY+XHJcbjwvbmctY29udGFpbmVyPlxyXG5cclxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImludmFsaWRcIj5cclxuICA8ZGl2IGNsYXNzPVwiY3VzdG9tLWNvbnRyb2wtaW5wdXQgaXMtaW52YWxpZFwiPjwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCI+XHJcbiAgICA8c3BhbiAqbmdGb3I9XCJsZXQgbWVzc2FnZSBvZiBlcnJvck1lc3NhZ2VzOyBsZXQgbGFzdCA9IGxhc3Q7XCI+XHJcbiAgICAgIHt7bWVzc2FnZX19PGJyICpuZ0lmPVwiIWxhc3RcIj5cclxuICAgIDwvc3Bhbj5cclxuICA8L2Rpdj5cclxuPC9uZy1jb250YWluZXI+XHJcbmAsXHJcbiAgc3R5bGVzOiBbYDpob3N0IC5mb3JtLWNoZWNrLmlzLXZhbGlkfi5pbnZhbGlkLWZlZWRiYWNrLDpob3N0IC5mb3JtLWNoZWNrLmlzLXZhbGlkfi5pbnZhbGlkLXRvb2x0aXAsOmhvc3QgLmZvcm0tY2hlY2suaXMtdmFsaWR+LnZhbGlkLWZlZWRiYWNrLDpob3N0IC5mb3JtLWNoZWNrLmlzLXZhbGlkfi52YWxpZC10b29sdGlwLDpob3N0IC53YXMtdmFsaWRhdGVkfi5pbnZhbGlkLWZlZWRiYWNrLDpob3N0IC53YXMtdmFsaWRhdGVkfi5pbnZhbGlkLXRvb2x0aXAsOmhvc3QgLndhcy12YWxpZGF0ZWR+LnZhbGlkLWZlZWRiYWNrLDpob3N0IC53YXMtdmFsaWRhdGVkfi52YWxpZC10b29sdGlwe2Rpc3BsYXk6YmxvY2t9YF0sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7cHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsIHVzZUV4aXN0aW5nOiBGb3JtUmFkaW9Db21wb25lbnQsIG11bHRpOiB0cnVlfSxcclxuICAgIHtwcm92aWRlOiBOR19WQUxJREFUT1JTLCB1c2VFeGlzdGluZzogRm9ybVJhZGlvQ29tcG9uZW50LCBtdWx0aTogdHJ1ZX1cclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGb3JtUmFkaW9Db21wb25lbnQgZXh0ZW5kcyBCYXNlTGlzdENvbnRyb2xDb21wb25lbnQge1xyXG5cclxuICBAVmlld0NoaWxkKCdsaXN0UmFkaW9FbGVtZW50JykgbGlzdFJhZGlvRWxlbWVudDogRWxlbWVudFJlZjtcclxuXHJcbiAgcHJpdmF0ZSBfaXNUb3VjaGVkID0gZmFsc2U7XHJcblxyXG4gIGdldCBpc0VtcHR5KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICF0aGlzLl9zZWxlY3RlZEluZGV4ZXMgfHwgIXRoaXMuX3NlbGVjdGVkSW5kZXhlcy5sZW5ndGg7XHJcbiAgfVxyXG5cclxuICBnZXQgdmFsdWUoKTogYW55IHtcclxuICAgIHJldHVybiB0aGlzLmlzRW1wdHkgPyBudWxsIDogdGhpcy5fc2VsZWN0T3B0aW9uc1t0aGlzLl9zZWxlY3RlZEluZGV4ZXNbMF1dLnZhbHVlO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGludmFsaWQoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy5oYXNDdXN0b21FcnJvcikge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXRoaXMuX2lzVG91Y2hlZCkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuaGFzUmVxdWlyZWRFcnJvcjtcclxuICB9XHJcblxyXG4gIGdldCB2YWxpZCgpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLmhhc0N1c3RvbUVycm9yKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXRoaXMuX2lzVG91Y2hlZCkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuICF0aGlzLmhhc1JlcXVpcmVkRXJyb3I7XHJcbiAgfVxyXG5cclxuICBnZXQgZXJyb3JNZXNzYWdlcygpOiBBcnJheTxzdHJpbmc+IHtcclxuICAgIGlmICh0aGlzLmhhc1JlcXVpcmVkRXJyb3IpIHtcclxuICAgICAgcmV0dXJuIFt0aGlzLnJlcXVpcmVkRXJyb3JNZXNzYWdlXTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5oYXNDdXN0b21FcnJvcikge1xyXG4gICAgICByZXR1cm4gdGhpcy5pbm5lckN1c3RvbUVycm9yTWVzc2FnZXM7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuICAgIGNvbnN0IGxpc3RFbGVtZW50ID0gdGhpcy5saXN0UmFkaW9FbGVtZW50Lm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmN1c3RvbS1jb250cm9sLWlucHV0Jyk7XHJcblxyXG4gICAgZm9yIChjb25zdCBlbGVtZW50IG9mIGxpc3RFbGVtZW50KSB7XHJcbiAgICAgIGVsZW1lbnQuY2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdmFsdWUpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX3NlbGVjdGVkSW5kZXhlcyA9IHRoaXMuZmluZEluZGV4ZXMoW3ZhbHVlXSk7XHJcblxyXG4gICAgaWYgKCF0aGlzLmxpc3RSYWRpb0VsZW1lbnQgfHwgIXRoaXMubGlzdFJhZGlvRWxlbWVudC5uYXRpdmVFbGVtZW50KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy52YWx1ZSkge1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuX3NlbGVjdGVkSW5kZXhlc1swXTtcclxuICAgICAgICBsaXN0RWxlbWVudFtpbmRleF0uY2hlY2tlZCA9IHRydWU7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdmFsaWRhdGUoKTogVmFsaWRhdGlvbkVycm9ycyB7XHJcbiAgICBjb25zdCByZXN1bHQgPSB7fTtcclxuXHJcbiAgICBpZiAodGhpcy5oYXNSZXF1aXJlZEVycm9yKSB7XHJcbiAgICAgIHJlc3VsdFsncmVxdWlyZWQnXSA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIC8vIG5vaW5zcGVjdGlvbiBKU01ldGhvZENhbkJlU3RhdGljXHJcbiAgdG9nZ2xlKGluZGV4LCBldmVudCkge1xyXG4gICAgdGhpcy5faXNUb3VjaGVkID0gdHJ1ZTtcclxuICAgIGluZGV4ID0gK2luZGV4O1xyXG5cclxuICAgIGlmICh0aGlzLnJlcXVpcmVkIHx8IGluZGV4ICE9PSB0aGlzLl9zZWxlY3RlZEluZGV4ZXNbMF0pIHtcclxuICAgICAgdGhpcy5fc2VsZWN0ZWRJbmRleGVzID0gWytpbmRleF07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLl9zZWxlY3RlZEluZGV4ZXMgPSBbXTtcclxuICAgICAgZXZlbnQudGFyZ2V0LmNoZWNrZWQgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnRyaWdnZXJDaGFuZ2UoKTtcclxuICB9XHJcblxyXG4gIHJlc2V0KCkge1xyXG4gICAgdGhpcy5faXNUb3VjaGVkID0gZmFsc2U7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=