@shikshalokam/sl-questionnaire
Version:
Library to integrate questionnaire in SL Projects
75 lines • 15.1 kB
JavaScript
import { Component, EventEmitter, Input, Output } from '@angular/core';
import { UntypedFormArray, UntypedFormControl } from '@angular/forms';
import * as i0 from "@angular/core";
import * as i1 from "../services/sl-questionnaire.service";
import * as i2 from "../services/translate.service";
import * as i3 from "@angular/common";
import * as i4 from "@angular/forms";
import * as i5 from "@project-sunbird/ng2-semantic-ui";
import * as i6 from "../shared/alert-modal/alert-modal.component";
export class CheckboxInputComponent {
constructor(qService, translate) {
this.qService = qService;
this.translate = translate;
this.dependentParent = new EventEmitter();
}
ngOnInit() {
this.hintCloseText = this.translate['frmelmnts'].btn?.close;
this.hintModalNote = this.translate['frmelmnts'].lbl?.hintModalNote;
setTimeout(() => {
const optionControl = this.options.map((v) => {
if (this.question.value &&
this.question.value.find((_v) => _v == v.value)) {
return new UntypedFormControl(v.value);
}
return new UntypedFormControl('');
});
this.questionnaireForm.addControl(this.question._id, new UntypedFormArray(optionControl, this.qService.validate(this.question)));
this.question.startTime = this.question.startTime
? this.question.startTime
: Date.now();
if (this.question.value.length) {
if (this.question.children.length) {
this.dependentParent.emit(this.question);
}
}
});
}
onChange(oId, isChecked, oIndex) {
const formArray = this.questionnaireForm.get(this.question._id);
if (isChecked) {
formArray.controls[oIndex].patchValue(oId);
}
this.question.value =
this.questionnaireForm.controls[this.question._id].value;
this.question.value = this.question.value.filter(Boolean);
this.question.endTime = Date.now();
if (this.question.children.length) {
this.dependentParent.emit(this.question);
}
}
get isValid() {
return this.questionnaireForm.controls[this.question._id].valid;
}
get isTouched() {
return this.questionnaireForm.controls[this.question._id].touched;
}
closeHint() {
this.isDimmed = false;
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CheckboxInputComponent, deps: [{ token: i1.SlQuestionnaireService }, { token: i2.SlTranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CheckboxInputComponent, selector: "sl-checkbox-input", inputs: { options: "options", questionnaireForm: "questionnaireForm", question: "question" }, outputs: { dependentParent: "dependentParent" }, ngImport: i0, template: "<div *ngIf=\"questionnaireForm?.contains(question._id)\">\n <div\n *ngFor=\"let o of options; let i = index\"\n [formGroup]=\"questionnaireForm\"\n class=\"mb-15 sb-checkbox sb-checkbox-secondary d-flex flex-ai-baseline\"\n >\n <div [formArrayName]=\"question._id\">\n <sui-checkbox\n (checkChange)=\"onChange(o.value, $event, i)\"\n [formControlName]=\"i\"\n >\n {{ o.label }}\n </sui-checkbox>\n </div>\n <div *ngIf=\"question?.option && question?.option[i]?.hint\">\n <i\n class=\"icon large lightbulb\"\n (click)=\"isDimmed = !isDimmed; hint = question?.option[i]?.hint\"\n ></i>\n </div>\n </div>\n</div>\n\n<sl-alert-modal [isDimmed]=\"isDimmed\" [hint]=\"hint\" (closeHintEmitter)=\"closeHint()\"></sl-alert-modal>\n\n", styles: [""], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i4.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "component", type: i5.SuiCheckbox, selector: "sui-checkbox", inputs: ["name", "isDisabled", "isReadonly"], outputs: ["checkChange", "touched"], exportAs: ["suiCheckbox"] }, { kind: "directive", type: i5.SuiCheckboxValueAccessor, selector: "sui-checkbox" }, { kind: "component", type: i6.AlertModalComponent, selector: "sl-alert-modal", inputs: ["isDimmed", "hint"], outputs: ["closeHintEmitter"] }] }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CheckboxInputComponent, decorators: [{
type: Component,
args: [{ selector: 'sl-checkbox-input', template: "<div *ngIf=\"questionnaireForm?.contains(question._id)\">\n <div\n *ngFor=\"let o of options; let i = index\"\n [formGroup]=\"questionnaireForm\"\n class=\"mb-15 sb-checkbox sb-checkbox-secondary d-flex flex-ai-baseline\"\n >\n <div [formArrayName]=\"question._id\">\n <sui-checkbox\n (checkChange)=\"onChange(o.value, $event, i)\"\n [formControlName]=\"i\"\n >\n {{ o.label }}\n </sui-checkbox>\n </div>\n <div *ngIf=\"question?.option && question?.option[i]?.hint\">\n <i\n class=\"icon large lightbulb\"\n (click)=\"isDimmed = !isDimmed; hint = question?.option[i]?.hint\"\n ></i>\n </div>\n </div>\n</div>\n\n<sl-alert-modal [isDimmed]=\"isDimmed\" [hint]=\"hint\" (closeHintEmitter)=\"closeHint()\"></sl-alert-modal>\n\n" }]
}], ctorParameters: function () { return [{ type: i1.SlQuestionnaireService }, { type: i2.SlTranslateService }]; }, propDecorators: { options: [{
type: Input
}], questionnaireForm: [{
type: Input
}], question: [{
type: Input
}], dependentParent: [{
type: Output
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2wtcXVlc3Rpb25uYWlyZS9zcmMvbGliL2NoZWNrYm94LWlucHV0L2NoZWNrYm94LWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NsLXF1ZXN0aW9ubmFpcmUvc3JjL2xpYi9jaGVja2JveC1pbnB1dC9jaGVja2JveC1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBb0IsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7QUFVeEYsTUFBTSxPQUFPLHNCQUFzQjtJQVNqQyxZQUNTLFFBQWdDLEVBQ2hDLFNBQTZCO1FBRDdCLGFBQVEsR0FBUixRQUFRLENBQXdCO1FBQ2hDLGNBQVMsR0FBVCxTQUFTLENBQW9CO1FBTDVCLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQVksQ0FBQztJQU10RCxDQUFDO0lBRUosUUFBUTtRQUNOLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDO1FBQzVELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxHQUFHLEVBQUUsYUFBYSxDQUFDO1FBQ3BFLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUMzQyxJQUNFLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSztvQkFDbEIsSUFBSSxDQUFD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QUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVW50eXBlZEZvcm1BcnJheSwgVW50eXBlZEZvcm1Db250cm9sLCBVbnR5cGVkRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgUXVlc3Rpb24gfSBmcm9tICcuLi9pbnRlcmZhY2VzL3F1ZXN0aW9ubmFpcmUudHlwZSc7XG5pbXBvcnQgeyBTbFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy90cmFuc2xhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBTbFF1ZXN0aW9ubmFpcmVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvc2wtcXVlc3Rpb25uYWlyZS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2wtY2hlY2tib3gtaW5wdXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2hlY2tib3gtaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jaGVja2JveC1pbnB1dC5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBDaGVja2JveElucHV0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgb3B0aW9ucztcbiAgQElucHV0KCkgcXVlc3Rpb25uYWlyZUZvcm06IFVudHlwZWRGb3JtR3JvdXA7XG4gIEBJbnB1dCgpIHF1ZXN0aW9uOiBRdWVzdGlvbjtcbiAgaGludENsb3NlVGV4dDogc3RyaW5nO1xuICBoaW50TW9kYWxOb3RlOnN0cmluZ1xuICBAT3V0cHV0KCkgZGVwZW5kZW50UGFyZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxRdWVzdGlvbj4oKTtcbiAgaXNEaW1tZWQ6IGFueTtcbiAgaGludDogYW55O1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcVNlcnZpY2U6IFNsUXVlc3Rpb25uYWlyZVNlcnZpY2UsXG4gICAgcHVibGljIHRyYW5zbGF0ZTogU2xUcmFuc2xhdGVTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmhpbnRDbG9zZVRleHQgPSB0aGlzLnRyYW5zbGF0ZVsnZnJtZWxtbnRzJ10uYnRuPy5jbG9zZTtcbiAgICB0aGlzLmhpbnRNb2RhbE5vdGUgPSB0aGlzLnRyYW5zbGF0ZVsnZnJtZWxtbnRzJ10ubGJsPy5oaW50TW9kYWxOb3RlO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY29uc3Qgb3B0aW9uQ29udHJvbCA9IHRoaXMub3B0aW9ucy5tYXAoKHYpID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHRoaXMucXVlc3Rpb24udmFsdWUgJiZcbiAgICAgICAgICAodGhpcy5xdWVzdGlvbi52YWx1ZSBhcyBBcnJheTxzdHJpbmc+KS5maW5kKChfdikgPT4gX3YgPT0gdi52YWx1ZSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2wodi52YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woJycpO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMucXVlc3Rpb25uYWlyZUZvcm0uYWRkQ29udHJvbChcbiAgICAgICAgdGhpcy5xdWVzdGlvbi5faWQsXG4gICAgICAgIG5ldyBVbnR5cGVkRm9ybUFycmF5KG9wdGlvbkNvbnRyb2wsIHRoaXMucVNlcnZpY2UudmFsaWRhdGUodGhpcy5xdWVzdGlvbikpXG4gICAgICApO1xuXG4gICAgICB0aGlzLnF1ZXN0aW9uLnN0YXJ0VGltZSA9IHRoaXMucXVlc3Rpb24uc3RhcnRUaW1lXG4gICAgICAgID8gdGhpcy5xdWVzdGlvbi5zdGFydFRpbWVcbiAgICAgICAgOiBEYXRlLm5vdygpO1xuICAgICAgaWYgKHRoaXMucXVlc3Rpb24udmFsdWUubGVuZ3RoKSB7XG4gICAgICAgIGlmICh0aGlzLnF1ZXN0aW9uLmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICAgIHRoaXMuZGVwZW5kZW50UGFyZW50LmVtaXQodGhpcy5xdWVzdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG9uQ2hhbmdlKG9JZDogc3RyaW5nLCBpc0NoZWNrZWQ6IGJvb2xlYW4sIG9JbmRleDogbnVtYmVyKSB7XG4gICAgY29uc3QgZm9ybUFycmF5OiBVbnR5cGVkRm9ybUFycmF5ID0gdGhpcy5xdWVzdGlvbm5haXJlRm9ybS5nZXQoXG4gICAgICB0aGlzLnF1ZXN0aW9uLl9pZFxuICAgICkgYXMgVW50eXBlZEZvcm1BcnJheTtcbiAgICBpZiAoaXNDaGVja2VkKSB7XG4gICAgICBmb3JtQXJyYXkuY29udHJvbHNbb0luZGV4XS5wYXRjaFZhbHVlKG9JZCk7XG4gICAgfVxuICAgIHRoaXMucXVlc3Rpb24udmFsdWUgPVxuICAgICAgdGhpcy5xdWVzdGlvbm5haXJlRm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLl9pZF0udmFsdWU7XG4gICAgdGhpcy5xdWVzdGlvbi52YWx1ZSA9ICh0aGlzLnF1ZXN0aW9uLnZhbHVlIGFzIEFycmF5PHN0cmluZz4pLmZpbHRlcihcbiAgICAgIEJvb2xlYW5cbiAgICApO1xuICAgIHRoaXMucXVlc3Rpb24uZW5kVGltZSA9IERhdGUubm93KCk7XG4gICAgaWYgKHRoaXMucXVlc3Rpb24uY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICB0aGlzLmRlcGVuZGVudFBhcmVudC5lbWl0KHRoaXMucXVlc3Rpb24pO1xuICAgIH1cbiAgfVxuXG4gIGdldCBpc1ZhbGlkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnF1ZXN0aW9ubmFpcmVGb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24uX2lkXS52YWxpZDtcbiAgfVxuXG4gIGdldCBpc1RvdWNoZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucXVlc3Rpb25uYWlyZUZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5faWRdLnRvdWNoZWQ7XG4gIH1cblxuICBjbG9zZUhpbnQoKXtcbiAgICB0aGlzLmlzRGltbWVkID0gZmFsc2U7XG4gIH1cbn1cbiIsIjxkaXYgKm5nSWY9XCJxdWVzdGlvbm5haXJlRm9ybT8uY29udGFpbnMocXVlc3Rpb24uX2lkKVwiPlxuICA8ZGl2XG4gICAgKm5nRm9yPVwibGV0IG8gb2Ygb3B0aW9uczsgbGV0IGkgPSBpbmRleFwiXG4gICAgW2Zvcm1Hcm91cF09XCJxdWVzdGlvbm5haXJlRm9ybVwiXG4gICAgY2xhc3M9XCJtYi0xNSBzYi1jaGVja2JveCBzYi1jaGVja2JveC1zZWNvbmRhcnkgZC1mbGV4IGZsZXgtYWktYmFzZWxpbmVcIlxuICA+XG4gICAgPGRpdiBbZm9ybUFycmF5TmFtZV09XCJxdWVzdGlvbi5faWRcIj5cbiAgICAgIDxzdWktY2hlY2tib3hcbiAgICAgICAgKGNoZWNrQ2hhbmdlKT1cIm9uQ2hhbmdlKG8udmFsdWUsICRldmVudCwgaSlcIlxuICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImlcIlxuICAgICAgPlxuICAgICAgICB7eyBvLmxhYmVsIH19XG4gICAgICA8L3N1aS1jaGVja2JveD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwicXVlc3Rpb24/Lm9wdGlvbiAmJiBxdWVzdGlvbj8ub3B0aW9uW2ldPy5oaW50XCI+XG4gICAgICA8aVxuICAgICAgICBjbGFzcz1cImljb24gbGFyZ2UgbGlnaHRidWxiXCJcbiAgICAgICAgKGNsaWNrKT1cImlzRGltbWVkID0gIWlzRGltbWVkOyBoaW50ID0gcXVlc3Rpb24/Lm9wdGlvbltpXT8uaGludFwiXG4gICAgICA+PC9pPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48c2wtYWxlcnQtbW9kYWwgW2lzRGltbWVkXT1cImlzRGltbWVkXCIgW2hpbnRdPVwiaGludFwiIChjbG9zZUhpbnRFbWl0dGVyKT1cImNsb3NlSGludCgpXCI+PC9zbC1hbGVydC1tb2RhbD5cblxuIl19