@beinformed/ui 1.30.0 → 1.30.1

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.
Files changed (36) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/esm/models/attributes/BooleanAttributeModel.js +1 -1
  3. package/esm/models/attributes/BooleanAttributeModel.js.map +1 -1
  4. package/esm/models/attributes/layouthint-rules/BaseLayoutHintRule.js +5 -6
  5. package/esm/models/attributes/layouthint-rules/BaseLayoutHintRule.js.map +1 -1
  6. package/esm/models/attributes/layouthint-rules/DependentAttribute.js +2 -0
  7. package/esm/models/attributes/layouthint-rules/DependentAttribute.js.map +1 -1
  8. package/esm/models/error/ErrorResponse.js +6 -0
  9. package/esm/models/error/ErrorResponse.js.map +1 -1
  10. package/esm/models/form/FormModel.js +30 -3
  11. package/esm/models/form/FormModel.js.map +1 -1
  12. package/esm/utils/number/DecimalFormat.js +4 -8
  13. package/esm/utils/number/DecimalFormat.js.map +1 -1
  14. package/lib/models/attributes/BooleanAttributeModel.js +1 -1
  15. package/lib/models/attributes/BooleanAttributeModel.js.flow +1 -1
  16. package/lib/models/attributes/BooleanAttributeModel.js.map +1 -1
  17. package/lib/models/attributes/__tests__/BooleanAttributeModel.spec.js.flow +14 -0
  18. package/lib/models/attributes/layouthint-rules/BaseLayoutHintRule.js +5 -6
  19. package/lib/models/attributes/layouthint-rules/BaseLayoutHintRule.js.map +1 -1
  20. package/lib/models/attributes/layouthint-rules/DependentAttribute.js +2 -0
  21. package/lib/models/attributes/layouthint-rules/DependentAttribute.js.map +1 -1
  22. package/lib/models/error/ErrorResponse.js +6 -0
  23. package/lib/models/error/ErrorResponse.js.map +1 -1
  24. package/lib/models/form/FormModel.js +30 -3
  25. package/lib/models/form/FormModel.js.flow +32 -4
  26. package/lib/models/form/FormModel.js.map +1 -1
  27. package/lib/models/form/__tests__/FormModel.spec.js.flow +4 -0
  28. package/lib/utils/number/DecimalFormat.js +4 -8
  29. package/lib/utils/number/DecimalFormat.js.map +1 -1
  30. package/package.json +12 -12
  31. package/src/models/attributes/BooleanAttributeModel.js +1 -1
  32. package/src/models/attributes/__tests__/BooleanAttributeModel.spec.js +14 -0
  33. package/src/models/form/FormModel.js +32 -4
  34. package/src/models/form/__tests__/FormModel.spec.js +4 -0
  35. package/types/models/form/FormModel.d.ts +23 -0
  36. package/types/models/index.d.ts +2 -1
@@ -51,6 +51,7 @@ class FormModel extends ResourceModel {
51
51
  _commit: boolean;
52
52
  _isFinished: boolean;
53
53
  _isComplete: boolean;
54
+ _success: { redirect: string, data: Object } | null;
54
55
 
55
56
  _parameters: Array<Parameter>;
56
57
  _tokens: Array<string>;
@@ -72,6 +73,8 @@ class FormModel extends ResourceModel {
72
73
  if (this.data.errors) {
73
74
  this.handleRootErrors(this.data.errors);
74
75
  }
76
+
77
+ this.createSuccess();
75
78
  }
76
79
 
77
80
  /**
@@ -574,7 +577,7 @@ class FormModel extends ResourceModel {
574
577
  * Inidicates if form is finished: Form is completely entered and committed
575
578
  */
576
579
  get isFinished(): boolean {
577
- return this._isFinished || "success" in this.data;
580
+ return this._isFinished || this.success != undefined;
578
581
  }
579
582
 
580
583
  /**
@@ -600,8 +603,8 @@ class FormModel extends ResourceModel {
600
603
  * Handle success redirects
601
604
  */
602
605
  get successRedirect(): Href | null {
603
- return this.isFinished && this.data.success
604
- ? new Href(this.data.success.redirect)
606
+ return this.isFinished && this.success
607
+ ? new Href(this.success.redirect)
605
608
  : null;
606
609
  }
607
610
 
@@ -615,7 +618,7 @@ class FormModel extends ResourceModel {
615
618
  * Get the result data as plain json object
616
619
  */
617
620
  getSuccessData(): ?Object {
618
- return this.data.success?.data;
621
+ return this.success?.data;
619
622
  }
620
623
 
621
624
  /**
@@ -888,6 +891,8 @@ class FormModel extends ResourceModel {
888
891
  */
889
892
  setPreviousObject() {
890
893
  this.isComplete = false;
894
+ this.isFinished = false;
895
+ this.success = null;
891
896
 
892
897
  const oldCurrentFormObject = this.currentFormObject;
893
898
 
@@ -985,6 +990,7 @@ class FormModel extends ResourceModel {
985
990
 
986
991
  this.isComplete = receivedForm.isComplete;
987
992
  this.isFinished = receivedForm.isFinished;
993
+ this.success = receivedForm.success;
988
994
 
989
995
  const receivedFormData = receivedForm.data ?? {};
990
996
  const hasMissing = has(receivedFormData, "missing");
@@ -1016,6 +1022,28 @@ class FormModel extends ResourceModel {
1016
1022
  return this;
1017
1023
  }
1018
1024
 
1025
+ /**
1026
+ * Retrieve success information from response
1027
+ * @returns {{redirect: string, data: object}}
1028
+ */
1029
+ get success(): { redirect: string, data: Object } | null {
1030
+ return this._success;
1031
+ }
1032
+
1033
+ /**
1034
+ * Set success information, contains redirect and event data
1035
+ * @param success
1036
+ */
1037
+ set success(success: { redirect: string, data: Object } | null) {
1038
+ this._success = success;
1039
+ }
1040
+
1041
+ /**
1042
+ */
1043
+ createSuccess() {
1044
+ this._success = this.data.success;
1045
+ }
1046
+
1019
1047
  /**
1020
1048
  * Process finished form
1021
1049
  */
@@ -458,11 +458,15 @@ describe("formModel", () => {
458
458
  expect(form.completedFormObjects).toHaveLength(2);
459
459
  expect(form.allObjects).toHaveLength(2);
460
460
  expect(form.currentFormObject).toBeNull();
461
+ expect(form.success).toStrictEqual({ redirect: "/endredirect" });
462
+ expect(form.isFinished).toBe(true);
461
463
 
462
464
  form.setPreviousObject();
463
465
  expect(form.completedFormObjects).toHaveLength(1);
464
466
  expect(form.currentFormObject).toBeInstanceOf(FormObjectModel);
465
467
  expect(form.hasNextStep).toBeFalsy();
468
+ expect(form.success).toBeNull();
469
+ expect(form.isFinished).toBe(false);
466
470
  });
467
471
 
468
472
  it("is able to get formdata for request", () => {
@@ -15,6 +15,10 @@ declare class FormModel extends ResourceModel {
15
15
  _commit: boolean;
16
16
  _isFinished: boolean;
17
17
  _isComplete: boolean;
18
+ _success: {
19
+ redirect: string;
20
+ data: Object;
21
+ } | null;
18
22
  _parameters: Array<Parameter>;
19
23
  _tokens: Array<string>;
20
24
  /**
@@ -252,6 +256,22 @@ declare class FormModel extends ResourceModel {
252
256
  * a different key than the current form object
253
257
  */
254
258
  setPreviousObject(): void;
259
+ /**
260
+ * Set success information, contains redirect and event data
261
+ * @param success
262
+ */
263
+ set success(arg: {
264
+ redirect: string;
265
+ data: Object;
266
+ });
267
+ /**
268
+ * Retrieve success information from response
269
+ * @returns {{redirect: string, data: object}}
270
+ */
271
+ get success(): {
272
+ redirect: string;
273
+ data: Object;
274
+ };
255
275
  /**
256
276
  * Form navigation: has next step or is last
257
277
  */
@@ -264,6 +284,9 @@ declare class FormModel extends ResourceModel {
264
284
  /**
265
285
  */
266
286
  updateValidations(data: any): FormModel;
287
+ /**
288
+ */
289
+ createSuccess(): void;
267
290
  /**
268
291
  * Process finished form
269
292
  */
@@ -89,6 +89,7 @@ import { default as AssignmentFilterModel } from "./filters/AssignmentFilterMode
89
89
  import { default as FilterModel } from "./filters/FilterModel";
90
90
  import { default as RangeFilterModel } from "./filters/RangeFilterModel";
91
91
  import { default as ConceptIndexFilterModel } from "./filters/ConceptIndexFilterModel";
92
- export { ApplicationModel, CaseSearchModel, CaseViewModel, ListDetailModel, DetailModel, FormModel, GroupingPanelModel, ListModel, TabModel, TaskGroupModel, UserModel, UserProfileModel, UserServicesModel, ModelCatalogModel, ConceptIndexModel, ConceptDetailModel, BusinessScenarioModel, ConceptTypeDetailModel, ContentIndexModel, ContentTOCModel, ContentModel, ContentTypeModel, BooleanAttributeModel, CaptchaAttributeModel, ChoiceAttributeModel, DatetimeAttributeModel, HelptextAttributeModel, LabelAttributeModel, MemoAttributeModel, MoneyAttributeModel, NumberAttributeModel, PasswordAttributeModel, CompositeAttributeModel, StringAttributeModel, UploadAttributeModel, XMLAttributeModel, AssignmentFilterModel, FilterModel, RangeFilterModel, ConceptIndexFilterModel };
92
+ import { default as LayoutHintCollection } from "./layouthint/LayoutHintCollection";
93
+ export { ApplicationModel, CaseSearchModel, CaseViewModel, ListDetailModel, DetailModel, FormModel, GroupingPanelModel, ListModel, TabModel, TaskGroupModel, UserModel, UserProfileModel, UserServicesModel, ModelCatalogModel, ConceptIndexModel, ConceptDetailModel, BusinessScenarioModel, ConceptTypeDetailModel, ContentIndexModel, ContentTOCModel, ContentModel, ContentTypeModel, BooleanAttributeModel, CaptchaAttributeModel, ChoiceAttributeModel, DatetimeAttributeModel, HelptextAttributeModel, LabelAttributeModel, MemoAttributeModel, MoneyAttributeModel, NumberAttributeModel, PasswordAttributeModel, CompositeAttributeModel, StringAttributeModel, UploadAttributeModel, XMLAttributeModel, AssignmentFilterModel, FilterModel, RangeFilterModel, ConceptIndexFilterModel, LayoutHintCollection };
93
94
  export { default as LayoutHintRuleCollection, addLayoutHintRule, updateLayoutHintRules } from "./attributes/layouthint-rules/LayoutHintRuleCollection";
94
95
  export { default as GroupingModel, GroupModel } from "./grouping/GroupingModel";