moh-common-lib
Version:
A library of Angular components, services, and styles for B.C. Government Ministry of Health (MoH).
117 lines • 9.71 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Component, Input, Output, EventEmitter, ViewChild, ElementRef, Optional, Self } from '@angular/core';
import { NgControl } from '@angular/forms';
import { AbstractFormControl } from '../../models/abstract-form-control';
import { LabelReplacementTag } from '../../models/error-message.interface';
/**
* Checkbox component is a input checkbox
*
* \@example
* <common-checkbox #addressChangeChkBx
* label='Do you want to opt in?'
* errorMessageRequired = 'Opt in should be selected'
* (dataChange)="dataChange($event)"
* [(data)]='person.hasOpted' [disabled]="isDisabled"
* [required]="isrequired">
* </common-checkbox>
*
* @export
*/
export class CheckboxComponent extends AbstractFormControl {
/**
* @param {?} controlDir
*/
constructor(controlDir) {
super();
this.controlDir = controlDir;
this.defaultErrorMessage = '';
/**
* You can bind to [(data)] OR you can use [(ngModel)] but don't use both.
*/
this.data = false;
this.label = 'Default Checkbox';
this.required = false; // TOBE removed duing MSP stablization - then update MSP to use form control version
// TOBE removed duing MSP stablization - then update MSP to use form control version
this.dataChange = new EventEmitter();
this._defaultErrMsg = {
required: `${LabelReplacementTag} is required.`,
};
if (controlDir) {
controlDir.valueAccessor = this;
}
}
/**
* @return {?}
*/
ngOnInit() {
super.ngOnInit();
}
/**
* @param {?} event
* @return {?}
*/
setCheckboxVal(event) {
this.data = event;
this.dataChange.emit(this.data);
this._onChange(event);
this._onTouched();
}
/**
* @return {?}
*/
focus() {
this.checkbox.nativeElement.focus();
}
/**
* @param {?} value
* @return {?}
*/
writeValue(value) {
if (value !== undefined || value === null) {
this.data = value;
}
}
}
CheckboxComponent.decorators = [
{ type: Component, args: [{
selector: 'common-checkbox',
template: "\r\n<input #checkbox\r\n type=\"checkbox\"\r\n class=\"input-lg form-check-input\"\r\n name=\"checkbox_{{objectId}}\"\r\n id=\"checkbox_{{objectId}}\"\r\n [ngModel]=\"data\"\r\n (ngModelChange)=\"setCheckboxVal($event);\"\r\n [disabled]=\"disabled\"\r\n [required]=\"required\">\r\n<label for=\"checkbox_{{objectId}}\" class=\"mb-2 pl-3 form-check-label\">{{label}}</label>\r\n\r\n<common-error-container\r\n [displayError]=\"controlDir && !disabled && (controlDir.touched || controlDir.dirty) && controlDir?.errors\">\r\n <div *ngIf=\"controlDir?.errors?.required\">{{_defaultErrMsg.required}}</div>\r\n</common-error-container>\r\n",
styles: ["input[type=checkbox]{-webkit-transform:scale(1.5);transform:scale(1.5)}label{display:inline-block;height:auto;margin-bottom:0;padding-bottom:0;padding-left:10px;padding-top:2px;cursor:pointer;vertical-align:bottom}"]
}] }
];
/** @nocollapse */
CheckboxComponent.ctorParameters = () => [
{ type: NgControl, decorators: [{ type: Optional }, { type: Self }] }
];
CheckboxComponent.propDecorators = {
data: [{ type: Input }],
label: [{ type: Input }],
required: [{ type: Input }],
dataChange: [{ type: Output }],
checkbox: [{ type: ViewChild, args: ['checkbox',] }]
};
if (false) {
/** @type {?} */
CheckboxComponent.prototype.defaultErrorMessage;
/**
* You can bind to [(data)] OR you can use [(ngModel)] but don't use both.
* @type {?}
*/
CheckboxComponent.prototype.data;
/** @type {?} */
CheckboxComponent.prototype.label;
/** @type {?} */
CheckboxComponent.prototype.required;
/** @type {?} */
CheckboxComponent.prototype.dataChange;
/** @type {?} */
CheckboxComponent.prototype.checkbox;
/** @type {?} */
CheckboxComponent.prototype._defaultErrMsg;
/** @type {?} */
CheckboxComponent.prototype.controlDir;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbW9oLWNvbW1vbi1saWIvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9jaGVja2JveC9jaGVja2JveC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RILE9BQU8sRUFBd0IsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDekUsT0FBTyxFQUFnQixtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7QUFzQnpGLE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxtQkFBbUI7Ozs7SUFnQnhELFlBQXdDLFVBQXFCO1FBQzNELEtBQUssRUFBRSxDQUFDO1FBRDhCLGVBQVUsR0FBVixVQUFVLENBQVc7UUFmN0Qsd0JBQW1CLEdBQVcsRUFBRSxDQUFDOzs7O1FBS3hCLFNBQUksR0FBWSxLQUFLLENBQUM7UUFDdEIsVUFBSyxHQUFXLGtCQUFrQixDQUFDO1FBQ25DLGFBQVEsR0FBWSxLQUFLLENBQUMsQ0FBRSxvRkFBb0Y7O1FBQy9HLGVBQVUsR0FBMEIsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUcxRSxtQkFBYyxHQUFpQjtZQUM3QixRQUFRLEVBQUUsR0FBRyxtQkFBbUIsZUFBZTtTQUNoRCxDQUFDO1FBSUEsSUFBSyxVQUFVLEVBQUc7WUFDaEIsVUFBVSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7U0FDakM7SUFDSCxDQUFDOzs7O0lBRUQsUUFBUTtRQUNOLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNuQixDQUFDOzs7OztJQUVELGNBQWMsQ0FBQyxLQUFjO1FBQzNCLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNwQixDQUFDOzs7O0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3RDLENBQUM7Ozs7O0lBRUQsVUFBVSxDQUFDLEtBQVU7UUFDbkIsSUFBSyxLQUFLLEtBQUssU0FBUyxJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUc7WUFDM0MsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7U0FDbkI7SUFDSCxDQUFDOzs7WUEvQ0YsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxpQkFBaUI7Z0JBQzNCLCtxQkFBd0M7O2FBRXpDOzs7O1lBdkI4QixTQUFTLHVCQXdDeEIsUUFBUSxZQUFJLElBQUk7OzttQkFWN0IsS0FBSztvQkFDTCxLQUFLO3VCQUNMLEtBQUs7eUJBQ0wsTUFBTTt1QkFDTixTQUFTLFNBQUMsVUFBVTs7OztJQVRyQixnREFBaUM7Ozs7O0lBS2pDLGlDQUErQjs7SUFDL0Isa0NBQTRDOztJQUM1QyxxQ0FBbUM7O0lBQ25DLHVDQUEwRTs7SUFDMUUscUNBQTRDOztJQUU1QywyQ0FFRTs7SUFFVyx1Q0FBZ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYsIE9wdGlvbmFsLCBTZWxmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOZ0NvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEFic3RyYWN0Rm9ybUNvbnRyb2wgfSBmcm9tICcuLi8uLi9tb2RlbHMvYWJzdHJhY3QtZm9ybS1jb250cm9sJztcclxuaW1wb3J0IHsgRXJyb3JNZXNzYWdlLCBMYWJlbFJlcGxhY2VtZW50VGFnIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2Vycm9yLW1lc3NhZ2UuaW50ZXJmYWNlJztcclxuLyoqXHJcbiAqIENoZWNrYm94IGNvbXBvbmVudCBpcyBhIGlucHV0IGNoZWNrYm94XHJcbiAqXHJcbiAqIEBleGFtcGxlXHJcbiAqICAgICAgIDxjb21tb24tY2hlY2tib3ggI2FkZHJlc3NDaGFuZ2VDaGtCeFxyXG4gKiAgICAgICAgICBsYWJlbD0nRG8geW91IHdhbnQgdG8gb3B0IGluPydcclxuICogICAgICAgICAgZXJyb3JNZXNzYWdlUmVxdWlyZWQgPSAnT3B0IGluIHNob3VsZCBiZSBzZWxlY3RlZCdcclxuICogICAgICAgICAgKGRhdGFDaGFuZ2UpPVwiZGF0YUNoYW5nZSgkZXZlbnQpXCJcclxuICogICAgICAgICAgIFsoZGF0YSldPSdwZXJzb24uaGFzT3B0ZWQnIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkXCJcclxuICogICAgICAgICAgW3JlcXVpcmVkXT1cImlzcmVxdWlyZWRcIj5cclxuICogICAgICAgPC9jb21tb24tY2hlY2tib3g+XHJcbiAqXHJcbiAqIEBleHBvcnRcclxuICovXHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjb21tb24tY2hlY2tib3gnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jaGVja2JveC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY2hlY2tib3guY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2hlY2tib3hDb21wb25lbnQgZXh0ZW5kcyBBYnN0cmFjdEZvcm1Db250cm9sIGltcGxlbWVudHMgT25Jbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcbiAgZGVmYXVsdEVycm9yTWVzc2FnZTogc3RyaW5nID0gJyc7XHJcblxyXG4gIC8qKlxyXG4gICAqIFlvdSBjYW4gYmluZCB0byBbKGRhdGEpXSBPUiB5b3UgY2FuIHVzZSBbKG5nTW9kZWwpXSBidXQgZG9uJ3QgdXNlIGJvdGguXHJcbiAgICovXHJcbiAgQElucHV0KCkgZGF0YTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmcgPSAnRGVmYXVsdCBDaGVja2JveCc7XHJcbiAgQElucHV0KCkgcmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTsgIC8vIFRPQkUgcmVtb3ZlZCBkdWluZyBNU1Agc3RhYmxpemF0aW9uIC0gdGhlbiB1cGRhdGUgTVNQIHRvIHVzZSBmb3JtIGNvbnRyb2wgdmVyc2lvblxyXG4gIEBPdXRwdXQoKSBkYXRhQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcbiAgQFZpZXdDaGlsZCgnY2hlY2tib3gnKSBjaGVja2JveDogRWxlbWVudFJlZjtcclxuXHJcbiAgX2RlZmF1bHRFcnJNc2c6IEVycm9yTWVzc2FnZSA9IHtcclxuICAgIHJlcXVpcmVkOiBgJHtMYWJlbFJlcGxhY2VtZW50VGFnfSBpcyByZXF1aXJlZC5gLFxyXG4gIH07XHJcblxyXG4gIGNvbnN0cnVjdG9yKCBAT3B0aW9uYWwoKSBAU2VsZigpIHB1YmxpYyBjb250cm9sRGlyOiBOZ0NvbnRyb2wgKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgaWYgKCBjb250cm9sRGlyICkge1xyXG4gICAgICBjb250cm9sRGlyLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gIH1cclxuXHJcbiAgc2V0Q2hlY2tib3hWYWwoZXZlbnQ6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuZGF0YSA9IGV2ZW50O1xyXG4gICAgdGhpcy5kYXRhQ2hhbmdlLmVtaXQodGhpcy5kYXRhKTtcclxuICAgIHRoaXMuX29uQ2hhbmdlKGV2ZW50KTtcclxuICAgIHRoaXMuX29uVG91Y2hlZCgpO1xyXG4gIH1cclxuXHJcbiAgZm9jdXMoKSB7XHJcbiAgICB0aGlzLmNoZWNrYm94Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICB9XHJcblxyXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKCB2YWx1ZSAhPT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsICkge1xyXG4gICAgICB0aGlzLmRhdGEgPSB2YWx1ZTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19