@beinformed/ui 1.45.3 → 1.46.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 (132) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/esm/models/application/ApplicationModel.js +7 -1
  3. package/esm/models/application/ApplicationModel.js.map +1 -1
  4. package/esm/models/attributes/AttributeModel.js +2 -2
  5. package/esm/models/attributes/AttributeModel.js.map +1 -1
  6. package/esm/models/attributes/ChoiceAttributeModel.js +2 -2
  7. package/esm/models/attributes/ChoiceAttributeModel.js.map +1 -1
  8. package/esm/models/attributes/ChoiceAttributeOptionModel.js +2 -2
  9. package/esm/models/attributes/ChoiceAttributeOptionModel.js.map +1 -1
  10. package/esm/models/attributes/CompositeAttributeModel.js +2 -2
  11. package/esm/models/attributes/CompositeAttributeModel.js.map +1 -1
  12. package/esm/models/base/ResourceCollection.js +2 -2
  13. package/esm/models/base/ResourceCollection.js.map +1 -1
  14. package/esm/models/base/ResourceModel.js +8 -7
  15. package/esm/models/base/ResourceModel.js.map +1 -1
  16. package/esm/models/caseview/CaseViewModel.js +2 -2
  17. package/esm/models/caseview/CaseViewModel.js.map +1 -1
  18. package/esm/models/concepts/BusinessScenarioModel.js +2 -2
  19. package/esm/models/concepts/BusinessScenarioModel.js.map +1 -1
  20. package/esm/models/concepts/ConceptDetailModel.js +2 -2
  21. package/esm/models/concepts/ConceptDetailModel.js.map +1 -1
  22. package/esm/models/concepts/ConceptIndexModel.js +2 -2
  23. package/esm/models/concepts/ConceptIndexModel.js.map +1 -1
  24. package/esm/models/content/ContentIndexModel.js +2 -3
  25. package/esm/models/content/ContentIndexModel.js.map +1 -1
  26. package/esm/models/detail/DetailModel.js +2 -2
  27. package/esm/models/detail/DetailModel.js.map +1 -1
  28. package/esm/models/form/FormModel.js +3 -4
  29. package/esm/models/form/FormModel.js.map +1 -1
  30. package/esm/models/form/FormObjectModel.js +2 -2
  31. package/esm/models/form/FormObjectModel.js.map +1 -1
  32. package/esm/models/list/ListDetailModel.js +4 -4
  33. package/esm/models/list/ListDetailModel.js.map +1 -1
  34. package/esm/models/types.js.map +1 -1
  35. package/esm/models/user/UserServicesModel.js +16 -1
  36. package/esm/models/user/UserServicesModel.js.map +1 -1
  37. package/esm/modularui/ModularUIRequest.js +7 -3
  38. package/esm/modularui/ModularUIRequest.js.map +1 -1
  39. package/esm/react-client/rehydrate.js +1 -1
  40. package/esm/react-client/rehydrate.js.map +1 -1
  41. package/esm/redux/actions/SignIn.js +8 -2
  42. package/esm/redux/actions/SignIn.js.map +1 -1
  43. package/esm/redux/store/configureStore.js +5 -0
  44. package/esm/redux/store/configureStore.js.map +1 -1
  45. package/lib/models/application/ApplicationModel.js +7 -1
  46. package/lib/models/application/ApplicationModel.js.flow +7 -1
  47. package/lib/models/application/ApplicationModel.js.map +1 -1
  48. package/lib/models/attributes/AttributeModel.js +2 -1
  49. package/lib/models/attributes/AttributeModel.js.flow +5 -1
  50. package/lib/models/attributes/AttributeModel.js.map +1 -1
  51. package/lib/models/attributes/ChoiceAttributeModel.js +2 -2
  52. package/lib/models/attributes/ChoiceAttributeModel.js.flow +3 -2
  53. package/lib/models/attributes/ChoiceAttributeModel.js.map +1 -1
  54. package/lib/models/attributes/ChoiceAttributeOptionModel.js +2 -2
  55. package/lib/models/attributes/ChoiceAttributeOptionModel.js.flow +3 -2
  56. package/lib/models/attributes/ChoiceAttributeOptionModel.js.map +1 -1
  57. package/lib/models/attributes/CompositeAttributeModel.js +2 -2
  58. package/lib/models/attributes/CompositeAttributeModel.js.flow +3 -2
  59. package/lib/models/attributes/CompositeAttributeModel.js.map +1 -1
  60. package/lib/models/base/ResourceCollection.js +2 -2
  61. package/lib/models/base/ResourceCollection.js.flow +3 -2
  62. package/lib/models/base/ResourceCollection.js.map +1 -1
  63. package/lib/models/base/ResourceModel.js +8 -7
  64. package/lib/models/base/ResourceModel.js.flow +12 -4
  65. package/lib/models/base/ResourceModel.js.map +1 -1
  66. package/lib/models/caseview/CaseViewModel.js +2 -2
  67. package/lib/models/caseview/CaseViewModel.js.flow +3 -2
  68. package/lib/models/caseview/CaseViewModel.js.map +1 -1
  69. package/lib/models/concepts/BusinessScenarioModel.js +2 -2
  70. package/lib/models/concepts/BusinessScenarioModel.js.flow +3 -2
  71. package/lib/models/concepts/BusinessScenarioModel.js.map +1 -1
  72. package/lib/models/concepts/ConceptDetailModel.js +2 -2
  73. package/lib/models/concepts/ConceptDetailModel.js.flow +3 -2
  74. package/lib/models/concepts/ConceptDetailModel.js.map +1 -1
  75. package/lib/models/concepts/ConceptIndexModel.js +2 -2
  76. package/lib/models/concepts/ConceptIndexModel.js.flow +3 -2
  77. package/lib/models/concepts/ConceptIndexModel.js.map +1 -1
  78. package/lib/models/content/ContentIndexModel.js +2 -2
  79. package/lib/models/content/ContentIndexModel.js.flow +4 -3
  80. package/lib/models/content/ContentIndexModel.js.map +1 -1
  81. package/lib/models/detail/DetailModel.js +2 -2
  82. package/lib/models/detail/DetailModel.js.flow +3 -2
  83. package/lib/models/detail/DetailModel.js.map +1 -1
  84. package/lib/models/form/FormModel.js +3 -3
  85. package/lib/models/form/FormModel.js.flow +6 -5
  86. package/lib/models/form/FormModel.js.map +1 -1
  87. package/lib/models/form/FormObjectModel.js +2 -2
  88. package/lib/models/form/FormObjectModel.js.flow +3 -2
  89. package/lib/models/form/FormObjectModel.js.map +1 -1
  90. package/lib/models/list/ListDetailModel.js +4 -4
  91. package/lib/models/list/ListDetailModel.js.flow +5 -4
  92. package/lib/models/list/ListDetailModel.js.map +1 -1
  93. package/lib/models/types.js.flow +5 -1
  94. package/lib/models/types.js.map +1 -1
  95. package/lib/models/user/UserServicesModel.js +16 -1
  96. package/lib/models/user/UserServicesModel.js.flow +18 -1
  97. package/lib/models/user/UserServicesModel.js.map +1 -1
  98. package/lib/modularui/ModularUIRequest.js +7 -3
  99. package/lib/modularui/ModularUIRequest.js.flow +7 -3
  100. package/lib/modularui/ModularUIRequest.js.map +1 -1
  101. package/lib/react-client/rehydrate.js +1 -1
  102. package/lib/react-client/rehydrate.js.flow +1 -1
  103. package/lib/react-client/rehydrate.js.map +1 -1
  104. package/lib/redux/actions/SignIn.js +8 -2
  105. package/lib/redux/actions/SignIn.js.flow +8 -3
  106. package/lib/redux/actions/SignIn.js.map +1 -1
  107. package/lib/redux/store/configureStore.js +5 -0
  108. package/lib/redux/store/configureStore.js.flow +8 -0
  109. package/lib/redux/store/configureStore.js.map +1 -1
  110. package/package.json +7 -7
  111. package/src/models/application/ApplicationModel.js +7 -1
  112. package/src/models/attributes/AttributeModel.js +5 -1
  113. package/src/models/attributes/ChoiceAttributeModel.js +3 -2
  114. package/src/models/attributes/ChoiceAttributeOptionModel.js +3 -2
  115. package/src/models/attributes/CompositeAttributeModel.js +3 -2
  116. package/src/models/base/ResourceCollection.js +3 -2
  117. package/src/models/base/ResourceModel.js +12 -4
  118. package/src/models/caseview/CaseViewModel.js +3 -2
  119. package/src/models/concepts/BusinessScenarioModel.js +3 -2
  120. package/src/models/concepts/ConceptDetailModel.js +3 -2
  121. package/src/models/concepts/ConceptIndexModel.js +3 -2
  122. package/src/models/content/ContentIndexModel.js +4 -3
  123. package/src/models/detail/DetailModel.js +3 -2
  124. package/src/models/form/FormModel.js +6 -5
  125. package/src/models/form/FormObjectModel.js +3 -2
  126. package/src/models/list/ListDetailModel.js +5 -4
  127. package/src/models/types.js +5 -1
  128. package/src/models/user/UserServicesModel.js +18 -1
  129. package/src/modularui/ModularUIRequest.js +7 -3
  130. package/src/react-client/rehydrate.js +1 -1
  131. package/src/redux/actions/SignIn.js +8 -3
  132. package/src/redux/store/configureStore.js +8 -0
@@ -45,6 +45,7 @@ import type BaseFilterModel from "./filters/BaseFilterModel";
45
45
  import type AttributeCollection from "./attributes/AttributeCollection";
46
46
  import type AttributeModel from "./attributes/AttributeModel";
47
47
  import type LayoutHintCollection from "./layouthint/LayoutHintCollection";
48
+ import type ErrorResponse from "./error/ErrorResponse";
48
49
 
49
50
  export type ModularUIModel =
50
51
  | ApplicationModel
@@ -151,7 +152,10 @@ export interface ILayoutHintRule {
151
152
 
152
153
  export interface IModelWithChildModels {
153
154
  getInitialChildModelLinks(): Array<LinkModel>;
154
- setChildModels(models: Array<ModularUIModel>): void;
155
+ setChildModels(
156
+ models: Array<ModularUIModel>,
157
+ errors: Array<ErrorResponse>,
158
+ ): void;
155
159
  }
156
160
 
157
161
  export type AuthenticationType = {
@@ -1,6 +1,7 @@
1
1
  // @flow
2
2
  import ResourceModel from "../base/ResourceModel";
3
3
  import UserModel from "../user/UserModel";
4
+ import ErrorResponse from "../error/ErrorResponse";
4
5
 
5
6
  import type { ModularUIModel } from "../types";
6
7
  import type { ModularUIResponse } from "../../modularui";
@@ -12,6 +13,7 @@ import type Href from "../href/Href";
12
13
  */
13
14
  class UserServicesModel extends ResourceModel {
14
15
  _user: ?UserModel;
16
+ _mustChangePassword: boolean = false;
15
17
 
16
18
  /**
17
19
  */
@@ -43,7 +45,10 @@ class UserServicesModel extends ResourceModel {
43
45
 
44
46
  /**
45
47
  */
46
- setChildModels(models: Array<ModularUIModel>) {
48
+ setChildModels(models: Array<ModularUIModel>, errors: Array<ErrorResponse>) {
49
+ this.mustChangePassword = Array.isArray(errors)
50
+ ? errors.some((error) => error.isChangePassword) ?? false
51
+ : false;
47
52
  this.user = models.find((model) => model.type === "User");
48
53
  }
49
54
 
@@ -109,6 +114,18 @@ class UserServicesModel extends ResourceModel {
109
114
  const UNSECURE_LINK_COUNT = 3;
110
115
  return this.links.length > UNSECURE_LINK_COUNT || hasUser;
111
116
  }
117
+
118
+ /**
119
+ */
120
+ set mustChangePassword(mustChangePassword: boolean) {
121
+ this._mustChangePassword = mustChangePassword;
122
+ }
123
+
124
+ /**
125
+ */
126
+ get mustChangePassword(): boolean {
127
+ return this._mustChangePassword;
128
+ }
112
129
  }
113
130
 
114
131
  export default UserServicesModel;
@@ -13,6 +13,7 @@ import universalFetch from "../utils/fetch/universalFetch";
13
13
  import resolveModel from "../models/resolveModel";
14
14
  import FormModel from "../models/form/FormModel";
15
15
  import ContentModel from "../models/content/ContentModel";
16
+ import ErrorResponse from "../models/error/ErrorResponse";
16
17
 
17
18
  import ModularUIResponse from "./ModularUIResponse";
18
19
 
@@ -670,22 +671,25 @@ class ModularUIRequest {
670
671
 
671
672
  return Promise.allSettled(childModelRequests).then((childModels) => {
672
673
  const resolvedChildModels = [];
674
+ const errorChildModels = [];
673
675
 
674
676
  childModels.forEach((childModel) => {
675
677
  if (childModel.status === "rejected") {
676
678
  const { reason } = childModel;
677
679
  if (reason.name !== "Error.ChangePasswordRequired") {
678
- console.error(
680
+ // eslint-disable-next-line no-console
681
+ console.debug(
679
682
  "Unexpected error when retrieving child model:",
680
683
  reason,
681
684
  );
682
685
  }
686
+ errorChildModels.push(new ErrorResponse(reason));
683
687
  } else {
684
688
  resolvedChildModels.push(childModel.value);
685
689
  }
686
690
  });
687
691
 
688
- model.addChildModels(resolvedChildModels);
692
+ model.addChildModels(resolvedChildModels, errorChildModels);
689
693
 
690
694
  return model;
691
695
  });
@@ -798,7 +802,7 @@ class ModularUIRequest {
798
802
  locale: this.locale,
799
803
  }).fetchSync();
800
804
  });
801
- model.addChildModels(childModels);
805
+ model.addChildModels(childModels, []);
802
806
 
803
807
  return model;
804
808
  }
@@ -22,7 +22,7 @@ const recreateModel = (data: Object) => {
22
22
  recreateModel(childModel),
23
23
  );
24
24
 
25
- model.addChildModels(childModels);
25
+ model.addChildModels(childModels, []);
26
26
 
27
27
  return model;
28
28
  }
@@ -1,6 +1,7 @@
1
1
  // @flow
2
2
  import Cache from "../../utils/browser/Cache";
3
3
  import Authenticate from "../../modularui/Authenticate";
4
+ import { getApplication } from "../_modularui/ModularUISelectors";
4
5
 
5
6
  import { reloadApplication } from "./Application";
6
7
 
@@ -68,7 +69,7 @@ export const changePassword = (): ThunkAction => (dispatch, getState) => {
68
69
  */
69
70
  export const login =
70
71
  (username: string, password: string): ThunkAction =>
71
- (dispatch) => {
72
+ (dispatch, getState) => {
72
73
  dispatch(startProgress());
73
74
 
74
75
  return new Authenticate()
@@ -76,8 +77,12 @@ export const login =
76
77
  .then(() => dispatch(reloadApplication()))
77
78
  .then(() => {
78
79
  Cache.addItem("auth", true);
79
- dispatch(loginSuccess());
80
-
80
+ const application = getApplication(getState());
81
+ if (application?.userMustChangePassword) {
82
+ dispatch(changePassword());
83
+ } else {
84
+ dispatch(loginSuccess());
85
+ }
81
86
  return dispatch(finishProgress());
82
87
  })
83
88
  .catch((error) => {
@@ -13,6 +13,8 @@ import { modularUIMiddleware } from "../_modularui/ModularUIMiddleware";
13
13
  import { createReducer } from "../reducers/createReducer";
14
14
  import { locationChange } from "../_router/RouterActions";
15
15
 
16
+ import { updateLocale } from "../_i18n/I18nActions";
17
+
16
18
  import type { RouterHistory } from "react-router";
17
19
  import type { ReduxAction, ReduxState, ReduxStore } from "../types";
18
20
  import type { Reducer } from "redux";
@@ -52,6 +54,12 @@ const configureStore = (
52
54
  if (!initialState?.router) {
53
55
  store.dispatch(locationChange(routerHistory.location, "PUSH"));
54
56
  }
57
+
58
+ const locale = initialState?.i18n.locale;
59
+ if (locale) {
60
+ store.dispatch(updateLocale(locale));
61
+ }
62
+
55
63
  return { routerHistory, store };
56
64
  };
57
65