@openmrs/ngx-formentry 4.0.1-pre.287 → 4.0.1-pre.293
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/check-box/checkbox.component.d.ts +2 -0
- package/esm2020/components/check-box/checkbox.component.mjs +32 -7
- package/esm2020/form-entry/form-factory/question.factory.mjs +3 -2
- package/fesm2015/openmrs-ngx-formentry.mjs +33 -7
- package/fesm2015/openmrs-ngx-formentry.mjs.map +1 -1
- package/fesm2020/openmrs-ngx-formentry.mjs +33 -7
- package/fesm2020/openmrs-ngx-formentry.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -3260,6 +3260,7 @@ class CheckboxControlComponent {
|
|
|
3260
3260
|
if (this.selected.indexOf(option.value) !== -1) {
|
|
3261
3261
|
Object.assign(option, { checked: true });
|
|
3262
3262
|
}
|
|
3263
|
+
option.isDisabled = this.evaluateDisabledExpression(option, option.value);
|
|
3263
3264
|
return option;
|
|
3264
3265
|
});
|
|
3265
3266
|
}
|
|
@@ -3292,17 +3293,41 @@ class CheckboxControlComponent {
|
|
|
3292
3293
|
}
|
|
3293
3294
|
}
|
|
3294
3295
|
selectOpt(option, event) {
|
|
3296
|
+
let myValue = option.value;
|
|
3295
3297
|
if (event.target.checked) {
|
|
3296
|
-
this.selected = [...this.selected,
|
|
3298
|
+
this.selected = [...this.selected, myValue];
|
|
3297
3299
|
}
|
|
3298
3300
|
else {
|
|
3299
|
-
this.selected = this.selected.filter(
|
|
3300
|
-
|
|
3301
|
-
});
|
|
3301
|
+
this.selected = this.selected.filter((o) => o !== myValue);
|
|
3302
|
+
myValue = null;
|
|
3302
3303
|
}
|
|
3304
|
+
this.options.forEach((opt) => {
|
|
3305
|
+
opt.isDisabled = this.evaluateDisabledExpression(opt, myValue);
|
|
3306
|
+
if (opt.isDisabled && this.selected.includes(opt.value)) {
|
|
3307
|
+
this.selected = this.selected.filter((val) => val !== opt.value);
|
|
3308
|
+
opt.checked = false;
|
|
3309
|
+
}
|
|
3310
|
+
else if (!opt.isDisabled) {
|
|
3311
|
+
opt.checked = this.selected.includes(opt.value);
|
|
3312
|
+
}
|
|
3313
|
+
});
|
|
3314
|
+
// Update the component's internal value
|
|
3303
3315
|
this._value = [...this.selected];
|
|
3304
3316
|
this.onChange(this._value);
|
|
3305
3317
|
}
|
|
3318
|
+
evaluateExpression(expression, myValue) {
|
|
3319
|
+
const matches = expression.match(/^myValue\s*===\s*['"]([^'"]+)['"]$/);
|
|
3320
|
+
if (matches && matches[1]) {
|
|
3321
|
+
return myValue === matches[1];
|
|
3322
|
+
}
|
|
3323
|
+
return false;
|
|
3324
|
+
}
|
|
3325
|
+
evaluateDisabledExpression(option, myValue) {
|
|
3326
|
+
if (option.disableWhenExpression) {
|
|
3327
|
+
return this.evaluateExpression(option.disableWhenExpression, myValue);
|
|
3328
|
+
}
|
|
3329
|
+
return false;
|
|
3330
|
+
}
|
|
3306
3331
|
}
|
|
3307
3332
|
CheckboxControlComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CheckboxControlComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3308
3333
|
CheckboxControlComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: CheckboxControlComponent, selector: "ofe-checkbox", inputs: { id: "id", options: "options", selected: "selected" }, providers: [
|
|
@@ -3311,7 +3336,7 @@ CheckboxControlComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0
|
|
|
3311
3336
|
useExisting: forwardRef(() => CheckboxControlComponent),
|
|
3312
3337
|
multi: true
|
|
3313
3338
|
}
|
|
3314
|
-
], ngImport: i0, template: "<fieldset class=\"cds--fieldset\">\n <div\n class=\"cds--form-item cds--checkbox-wrapper\"\n *ngFor=\"let option of options; let i = index\"\n >\n <input\n type=\"checkbox\"\n class=\"cds--checkbox\"\n [id]=\"i + id\"\n [checked]=\"option.checked\"\n (change)=\"selectOpt(option, $event)\"\n [value]=\"option.value\"\n />\n <label [for]=\"i + id\" class=\"cds--checkbox-label\">\n <span class=\"cds--checkbox-label-text\">{{ option.label }}</span>\n </label>\n </div>\n</fieldset>\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
|
|
3339
|
+
], ngImport: i0, template: "<fieldset class=\"cds--fieldset\">\n <div\n class=\"cds--form-item cds--checkbox-wrapper\"\n *ngFor=\"let option of options; let i = index\"\n >\n <input\n type=\"checkbox\"\n class=\"cds--checkbox\"\n [id]=\"i + id\"\n [checked]=\"option.checked\"\n (change)=\"selectOpt(option, $event)\"\n [value]=\"option.value\"\n [disabled]=\"option.isDisabled\"\n />\n <label [for]=\"i + id\" class=\"cds--checkbox-label\">\n <span class=\"cds--checkbox-label-text\">{{ option.label }}</span>\n </label>\n </div>\n</fieldset>\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
|
|
3315
3340
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CheckboxControlComponent, decorators: [{
|
|
3316
3341
|
type: Component,
|
|
3317
3342
|
args: [{ selector: 'ofe-checkbox', providers: [
|
|
@@ -3320,7 +3345,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
3320
3345
|
useExisting: forwardRef(() => CheckboxControlComponent),
|
|
3321
3346
|
multi: true
|
|
3322
3347
|
}
|
|
3323
|
-
], template: "<fieldset class=\"cds--fieldset\">\n <div\n class=\"cds--form-item cds--checkbox-wrapper\"\n *ngFor=\"let option of options; let i = index\"\n >\n <input\n type=\"checkbox\"\n class=\"cds--checkbox\"\n [id]=\"i + id\"\n [checked]=\"option.checked\"\n (change)=\"selectOpt(option, $event)\"\n [value]=\"option.value\"\n />\n <label [for]=\"i + id\" class=\"cds--checkbox-label\">\n <span class=\"cds--checkbox-label-text\">{{ option.label }}</span>\n </label>\n </div>\n</fieldset>\n" }]
|
|
3348
|
+
], template: "<fieldset class=\"cds--fieldset\">\n <div\n class=\"cds--form-item cds--checkbox-wrapper\"\n *ngFor=\"let option of options; let i = index\"\n >\n <input\n type=\"checkbox\"\n class=\"cds--checkbox\"\n [id]=\"i + id\"\n [checked]=\"option.checked\"\n (change)=\"selectOpt(option, $event)\"\n [value]=\"option.value\"\n [disabled]=\"option.isDisabled\"\n />\n <label [for]=\"i + id\" class=\"cds--checkbox-label\">\n <span class=\"cds--checkbox-label-text\">{{ option.label }}</span>\n </label>\n </div>\n</fieldset>\n" }]
|
|
3324
3349
|
}], propDecorators: { id: [{
|
|
3325
3350
|
type: Input
|
|
3326
3351
|
}], options: [{
|
|
@@ -11411,7 +11436,8 @@ class QuestionFactory {
|
|
|
11411
11436
|
question.options = schemaQuestion.questionOptions.answers.map((obj) => {
|
|
11412
11437
|
return {
|
|
11413
11438
|
label: obj.label,
|
|
11414
|
-
value: obj.concept
|
|
11439
|
+
value: obj.concept,
|
|
11440
|
+
disableWhenExpression: obj.disableWhenExpression
|
|
11415
11441
|
};
|
|
11416
11442
|
});
|
|
11417
11443
|
question.options.splice(0, 0);
|