@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.
@@ -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, option.value];
3298
+ this.selected = [...this.selected, myValue];
3297
3299
  }
3298
3300
  else {
3299
- this.selected = this.selected.filter(function (o) {
3300
- return o !== option.value;
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);