@beinformed/ui 1.56.0 → 1.57.0-contextpath.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 (226) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/esm/constants/Settings.js +4 -1
  3. package/esm/constants/Settings.js.map +1 -1
  4. package/esm/hooks/useForm.js +3 -1
  5. package/esm/hooks/useForm.js.map +1 -1
  6. package/esm/hooks/useModularUI.js +5 -0
  7. package/esm/hooks/useModularUI.js.map +1 -1
  8. package/esm/hooks/useModularUIBasic.js +11 -1
  9. package/esm/hooks/useModularUIBasic.js.map +1 -1
  10. package/esm/hooks/useModularUIModel.js +36 -25
  11. package/esm/hooks/useModularUIModel.js.map +1 -1
  12. package/esm/models/actions/ActionCollection.js +2 -2
  13. package/esm/models/actions/ActionCollection.js.map +1 -1
  14. package/esm/models/actions/ActionModel.js +27 -8
  15. package/esm/models/actions/ActionModel.js.map +1 -1
  16. package/esm/models/application/ApplicationModel.js +1 -1
  17. package/esm/models/application/ApplicationModel.js.map +1 -1
  18. package/esm/models/base/ResourceModel.js +25 -3
  19. package/esm/models/base/ResourceModel.js.map +1 -1
  20. package/esm/models/caseview/CaseViewModel.js +2 -2
  21. package/esm/models/caseview/CaseViewModel.js.map +1 -1
  22. package/esm/models/concepts/ConceptLinkModel.js +1 -0
  23. package/esm/models/concepts/ConceptLinkModel.js.map +1 -1
  24. package/esm/models/concepts/SourceReferenceModel.js +2 -1
  25. package/esm/models/concepts/SourceReferenceModel.js.map +1 -1
  26. package/esm/models/content/ContentIndexModel.js +2 -2
  27. package/esm/models/content/ContentIndexModel.js.map +1 -1
  28. package/esm/models/content/ContentLinkModel.js +2 -0
  29. package/esm/models/content/ContentLinkModel.js.map +1 -1
  30. package/esm/models/content/SectionModel.js +1 -0
  31. package/esm/models/content/SectionModel.js.map +1 -1
  32. package/esm/models/detail/DetailModel.js +1 -1
  33. package/esm/models/detail/DetailModel.js.map +1 -1
  34. package/esm/models/error/ErrorResponse.js +2 -0
  35. package/esm/models/error/ErrorResponse.js.map +1 -1
  36. package/esm/models/form/FormModel.js +1 -1
  37. package/esm/models/form/FormModel.js.map +1 -1
  38. package/esm/models/href/Href.js +71 -7
  39. package/esm/models/href/Href.js.map +1 -1
  40. package/esm/models/href/ListHref.js +1 -1
  41. package/esm/models/href/ListHref.js.map +1 -1
  42. package/esm/models/links/LinkCollection.js +3 -1
  43. package/esm/models/links/LinkCollection.js.map +1 -1
  44. package/esm/models/links/LinkModel.js +10 -9
  45. package/esm/models/links/LinkModel.js.map +1 -1
  46. package/esm/models/list/ListItemCollection.js +1 -1
  47. package/esm/models/list/ListItemCollection.js.map +1 -1
  48. package/esm/models/list/ListItemModel.js +3 -1
  49. package/esm/models/list/ListItemModel.js.map +1 -1
  50. package/esm/models/list/ListModel.js +1 -1
  51. package/esm/models/list/ListModel.js.map +1 -1
  52. package/esm/models/panels/GroupingPanelModel.js +1 -1
  53. package/esm/models/panels/GroupingPanelModel.js.map +1 -1
  54. package/esm/models/tab/TabModel.js +2 -2
  55. package/esm/models/tab/TabModel.js.map +1 -1
  56. package/esm/models/taskgroup/TaskGroupModel.js +4 -2
  57. package/esm/models/taskgroup/TaskGroupModel.js.map +1 -1
  58. package/esm/modularui/Authenticate.js +2 -1
  59. package/esm/modularui/Authenticate.js.map +1 -1
  60. package/esm/modularui/ModularUIRequest.js +43 -7
  61. package/esm/modularui/ModularUIRequest.js.map +1 -1
  62. package/esm/modularui/ModularUIResponse.js +31 -0
  63. package/esm/modularui/ModularUIResponse.js.map +1 -1
  64. package/esm/redux/_modularui/ModularUIActions.js +3 -1
  65. package/esm/redux/_modularui/ModularUIActions.js.map +1 -1
  66. package/esm/redux/_modularui/ModularUIMiddleware.js +6 -0
  67. package/esm/redux/_modularui/ModularUIMiddleware.js.map +1 -1
  68. package/esm/redux/_modularui/types.js.map +1 -1
  69. package/esm/redux/actions/Application.js +11 -4
  70. package/esm/redux/actions/Application.js.map +1 -1
  71. package/esm/redux/connectors/PanelRenderer.js +2 -0
  72. package/esm/redux/connectors/PanelRenderer.js.map +1 -1
  73. package/esm/utils/fetch/types.js.map +1 -1
  74. package/lib/constants/Settings.js +4 -1
  75. package/lib/constants/Settings.js.flow +2 -2
  76. package/lib/constants/Settings.js.map +1 -1
  77. package/lib/hooks/useForm.js +3 -1
  78. package/lib/hooks/useForm.js.flow +2 -0
  79. package/lib/hooks/useForm.js.map +1 -1
  80. package/lib/hooks/useModularUI.js +5 -0
  81. package/lib/hooks/useModularUI.js.flow +6 -1
  82. package/lib/hooks/useModularUI.js.map +1 -1
  83. package/lib/hooks/useModularUIBasic.js +11 -1
  84. package/lib/hooks/useModularUIBasic.js.flow +14 -0
  85. package/lib/hooks/useModularUIBasic.js.map +1 -1
  86. package/lib/hooks/useModularUIModel.js +36 -24
  87. package/lib/hooks/useModularUIModel.js.flow +58 -11
  88. package/lib/hooks/useModularUIModel.js.map +1 -1
  89. package/lib/models/actions/ActionCollection.js +2 -2
  90. package/lib/models/actions/ActionCollection.js.flow +14 -2
  91. package/lib/models/actions/ActionCollection.js.map +1 -1
  92. package/lib/models/actions/ActionModel.js +31 -12
  93. package/lib/models/actions/ActionModel.js.flow +38 -16
  94. package/lib/models/actions/ActionModel.js.map +1 -1
  95. package/lib/models/application/ApplicationModel.js +1 -1
  96. package/lib/models/application/ApplicationModel.js.flow +7 -1
  97. package/lib/models/application/ApplicationModel.js.map +1 -1
  98. package/lib/models/base/ResourceModel.js +24 -3
  99. package/lib/models/base/ResourceModel.js.flow +35 -10
  100. package/lib/models/base/ResourceModel.js.map +1 -1
  101. package/lib/models/caseview/CaseViewModel.js +2 -2
  102. package/lib/models/caseview/CaseViewModel.js.flow +3 -1
  103. package/lib/models/caseview/CaseViewModel.js.map +1 -1
  104. package/lib/models/concepts/ConceptLinkModel.js +1 -0
  105. package/lib/models/concepts/ConceptLinkModel.js.flow +1 -0
  106. package/lib/models/concepts/ConceptLinkModel.js.map +1 -1
  107. package/lib/models/concepts/SourceReferenceModel.js +2 -1
  108. package/lib/models/concepts/SourceReferenceModel.js.flow +2 -1
  109. package/lib/models/concepts/SourceReferenceModel.js.map +1 -1
  110. package/lib/models/content/ContentIndexModel.js +2 -2
  111. package/lib/models/content/ContentIndexModel.js.flow +2 -2
  112. package/lib/models/content/ContentIndexModel.js.map +1 -1
  113. package/lib/models/content/ContentLinkModel.js +2 -0
  114. package/lib/models/content/ContentLinkModel.js.flow +2 -0
  115. package/lib/models/content/ContentLinkModel.js.map +1 -1
  116. package/lib/models/content/SectionModel.js +1 -0
  117. package/lib/models/content/SectionModel.js.flow +1 -0
  118. package/lib/models/content/SectionModel.js.map +1 -1
  119. package/lib/models/detail/DetailModel.js +1 -1
  120. package/lib/models/detail/DetailModel.js.flow +2 -0
  121. package/lib/models/detail/DetailModel.js.map +1 -1
  122. package/lib/models/error/ErrorResponse.js +2 -0
  123. package/lib/models/error/ErrorResponse.js.flow +2 -0
  124. package/lib/models/error/ErrorResponse.js.map +1 -1
  125. package/lib/models/form/FormModel.js +1 -1
  126. package/lib/models/form/FormModel.js.flow +1 -1
  127. package/lib/models/form/FormModel.js.map +1 -1
  128. package/lib/models/href/Href.js +71 -7
  129. package/lib/models/href/Href.js.flow +79 -7
  130. package/lib/models/href/Href.js.map +1 -1
  131. package/lib/models/href/ListHref.js +1 -1
  132. package/lib/models/href/ListHref.js.flow +1 -1
  133. package/lib/models/href/ListHref.js.map +1 -1
  134. package/lib/models/href/__tests__/Href.spec.js.flow +9 -3
  135. package/lib/models/links/LinkCollection.js +3 -1
  136. package/lib/models/links/LinkCollection.js.flow +8 -2
  137. package/lib/models/links/LinkCollection.js.map +1 -1
  138. package/lib/models/links/LinkModel.js +10 -9
  139. package/lib/models/links/LinkModel.js.flow +24 -16
  140. package/lib/models/links/LinkModel.js.map +1 -1
  141. package/lib/models/list/ListItemCollection.js +1 -1
  142. package/lib/models/list/ListItemCollection.js.flow +2 -0
  143. package/lib/models/list/ListItemCollection.js.map +1 -1
  144. package/lib/models/list/ListItemModel.js +3 -1
  145. package/lib/models/list/ListItemModel.js.flow +4 -0
  146. package/lib/models/list/ListItemModel.js.map +1 -1
  147. package/lib/models/list/ListModel.js +1 -1
  148. package/lib/models/list/ListModel.js.flow +6 -1
  149. package/lib/models/list/ListModel.js.map +1 -1
  150. package/lib/models/panels/GroupingPanelModel.js +1 -1
  151. package/lib/models/panels/GroupingPanelModel.js.flow +2 -0
  152. package/lib/models/panels/GroupingPanelModel.js.map +1 -1
  153. package/lib/models/tab/TabModel.js +2 -2
  154. package/lib/models/tab/TabModel.js.flow +4 -0
  155. package/lib/models/tab/TabModel.js.map +1 -1
  156. package/lib/models/taskgroup/TaskGroupModel.js +4 -2
  157. package/lib/models/taskgroup/TaskGroupModel.js.flow +6 -0
  158. package/lib/models/taskgroup/TaskGroupModel.js.map +1 -1
  159. package/lib/modularui/Authenticate.js +2 -1
  160. package/lib/modularui/Authenticate.js.flow +2 -1
  161. package/lib/modularui/Authenticate.js.map +1 -1
  162. package/lib/modularui/ModularUIRequest.js +43 -7
  163. package/lib/modularui/ModularUIRequest.js.flow +49 -8
  164. package/lib/modularui/ModularUIRequest.js.map +1 -1
  165. package/lib/modularui/ModularUIResponse.js +31 -0
  166. package/lib/modularui/ModularUIResponse.js.flow +35 -0
  167. package/lib/modularui/ModularUIResponse.js.map +1 -1
  168. package/lib/modularui/__tests__/CustomContextPath.spec.js.flow +61 -0
  169. package/lib/redux/_modularui/ModularUIActions.js +3 -1
  170. package/lib/redux/_modularui/ModularUIActions.js.flow +6 -1
  171. package/lib/redux/_modularui/ModularUIActions.js.map +1 -1
  172. package/lib/redux/_modularui/ModularUIMiddleware.js +6 -0
  173. package/lib/redux/_modularui/ModularUIMiddleware.js.flow +10 -0
  174. package/lib/redux/_modularui/ModularUIMiddleware.js.map +1 -1
  175. package/lib/redux/_modularui/types.js.flow +2 -0
  176. package/lib/redux/_modularui/types.js.map +1 -1
  177. package/lib/redux/actions/Application.js +10 -3
  178. package/lib/redux/actions/Application.js.flow +16 -4
  179. package/lib/redux/actions/Application.js.map +1 -1
  180. package/lib/redux/connectors/PanelRenderer.js +2 -0
  181. package/lib/redux/connectors/PanelRenderer.js.flow +1 -0
  182. package/lib/redux/connectors/PanelRenderer.js.map +1 -1
  183. package/lib/utils/fetch/types.js.flow +2 -0
  184. package/lib/utils/fetch/types.js.map +1 -1
  185. package/package.json +1 -1
  186. package/src/constants/Settings.js +2 -2
  187. package/src/hooks/useForm.js +2 -0
  188. package/src/hooks/useModularUI.js +6 -1
  189. package/src/hooks/useModularUIBasic.js +14 -0
  190. package/src/hooks/useModularUIModel.js +58 -11
  191. package/src/models/actions/ActionCollection.js +14 -2
  192. package/src/models/actions/ActionModel.js +38 -16
  193. package/src/models/application/ApplicationModel.js +7 -1
  194. package/src/models/base/ResourceModel.js +35 -10
  195. package/src/models/caseview/CaseViewModel.js +3 -1
  196. package/src/models/concepts/ConceptLinkModel.js +1 -0
  197. package/src/models/concepts/SourceReferenceModel.js +2 -1
  198. package/src/models/content/ContentIndexModel.js +2 -2
  199. package/src/models/content/ContentLinkModel.js +2 -0
  200. package/src/models/content/SectionModel.js +1 -0
  201. package/src/models/detail/DetailModel.js +2 -0
  202. package/src/models/error/ErrorResponse.js +2 -0
  203. package/src/models/form/FormModel.js +1 -1
  204. package/src/models/href/Href.js +79 -7
  205. package/src/models/href/ListHref.js +1 -1
  206. package/src/models/href/__tests__/Href.spec.js +9 -3
  207. package/src/models/links/LinkCollection.js +8 -2
  208. package/src/models/links/LinkModel.js +24 -16
  209. package/src/models/list/ListItemCollection.js +2 -0
  210. package/src/models/list/ListItemModel.js +4 -0
  211. package/src/models/list/ListModel.js +6 -1
  212. package/src/models/panels/GroupingPanelModel.js +2 -0
  213. package/src/models/tab/TabModel.js +4 -0
  214. package/src/models/taskgroup/TaskGroupModel.js +6 -0
  215. package/src/modularui/Authenticate.js +2 -1
  216. package/src/modularui/ModularUIRequest.js +49 -8
  217. package/src/modularui/ModularUIResponse.js +35 -0
  218. package/src/modularui/__tests__/CustomContextPath.spec.js +61 -0
  219. package/src/modularui/__tests__/contributions.json +312 -0
  220. package/src/modularui/__tests__/data.json +263 -0
  221. package/src/redux/_modularui/ModularUIActions.js +6 -1
  222. package/src/redux/_modularui/ModularUIMiddleware.js +10 -0
  223. package/src/redux/_modularui/types.js +2 -0
  224. package/src/redux/actions/Application.js +16 -4
  225. package/src/redux/connectors/PanelRenderer.js +1 -0
  226. package/src/utils/fetch/types.js +2 -0
@@ -1 +1 @@
1
- {"version":3,"file":"ModularUIActions.js","names":["_Constants","require","_Href","_interopRequireDefault","_ErrorResponse","_ProgressIndicator","_Error","setModel","key","model","connectKey","type","payload","exports","initModels","models","updateModel","updateForm","removeModelByKey","resetModularUI","updateStatus","status","loadModelSuccessAction","updateHandler","loadModel","href","options","Href","method","HTTP_METHODS","GET","data","locale","childmodels","targetModel","forceTargetModel","cache","successAction","errorAction","error","errorResponse","ErrorResponse","isChangePassword","isResourceNotFoundAfterReload","MODULARUI_STATUS","ERROR","loadModularUI","dispatch","LOADING","startProgress","loadModelPromise","_promise","default","resolve","then","response","FINISHED","finishProgress","catch","handleError","reloadModel","selfhref","isReload"],"sources":["../../../src/redux/_modularui/ModularUIActions.js"],"sourcesContent":["// @flow\nimport { HTTP_METHODS, MODULARUI_STATUS } from \"../../constants/Constants\";\nimport Href from \"../../models/href/Href\";\nimport ErrorResponse from \"../../models/error/ErrorResponse\";\nimport { finishProgress, startProgress } from \"../actions/ProgressIndicator\";\nimport { handleError } from \"../actions/Error\";\n\nimport type { ModularUIModel } from \"../../models/types\";\nimport type { Dispatch, ThunkAction } from \"../types\";\nimport type {\n ModularUIAction,\n SetModelAction,\n InitModelAction,\n UpdateModelAction,\n UpdateFormAction,\n RemoveModelByKeyAction,\n ResetModularUIAction,\n UpdateStatusAction,\n} from \"./types\";\nimport type {\n RequestModularUIOptions,\n UpdateHandler,\n} from \"../../utils/fetch/types\";\n\n/**\n */\nexport const setModel = (\n key: string,\n model: ModularUIModel,\n): SetModelAction => {\n // set key on model for later reference\n model.connectKey = key;\n return {\n type: \"MODULARUI/SET\",\n payload: {\n key,\n model,\n },\n };\n};\n\n/**\n */\nexport const initModels = (\n models: Array<{ key: string, model: ModularUIModel }>,\n): InitModelAction => ({\n type: \"MODULARUI/INIT\",\n payload: models,\n});\n\n/**\n */\nexport const updateModel = (model: ModularUIModel): UpdateModelAction => ({\n type: \"MODULARUI/UPDATE\",\n payload: model,\n});\n\n/**\n */\nexport const updateForm = (model: ModularUIModel): UpdateFormAction => ({\n type: \"MODULARUI/UPDATE_FORM\",\n payload: model,\n});\n\n/**\n */\nexport const removeModelByKey = (key: string): RemoveModelByKeyAction => ({\n type: \"MODULARUI/REMOVE_KEY\",\n payload: key,\n});\n\n/**\n * Removes all models except the application model from the modular ui reducer\n */\nexport const resetModularUI = (): ResetModularUIAction => ({\n type: \"MODULARUI/RESET\",\n});\n\n/**\n */\nexport const updateStatus = (\n key: string,\n status: $Keys<typeof MODULARUI_STATUS>,\n): UpdateStatusAction => ({\n type: \"MODULARUI/STATUS\",\n payload: { key, status },\n});\n\n/**\n */\nconst loadModelSuccessAction = (\n key: string,\n model: ModularUIModel,\n updateHandler: UpdateHandler | void,\n): UpdateModelAction | SetModelAction => {\n if (updateHandler) {\n return updateModel(updateHandler(model));\n }\n return setModel(key, model);\n};\n\n/**\n * This action is handled by the modularui middleware\n */\nexport const loadModel = (\n key: string,\n href: Href | string,\n options?: RequestModularUIOptions,\n): ModularUIAction => ({\n type: \"MODULARUI/FETCH\",\n payload: {\n href: href instanceof Href ? href : new Href(href),\n method: options?.method ?? HTTP_METHODS.GET,\n data: options?.data,\n locale: options?.locale ?? \"en\",\n childmodels: options?.childmodels,\n targetModel: options?.targetModel,\n forceTargetModel: options?.forceTargetModel,\n cache: options?.cache,\n /**\n */\n successAction: (model) =>\n loadModelSuccessAction(key, model, options?.updateHandler),\n /**\n */\n errorAction: (error) => {\n const errorResponse = new ErrorResponse(error, key);\n if (errorResponse.isChangePassword) {\n return {\n type: \"NO_ACTION\",\n };\n } else if (errorResponse.isResourceNotFoundAfterReload) {\n return removeModelByKey(key);\n }\n\n return updateStatus(key, MODULARUI_STATUS.ERROR);\n },\n },\n});\n\n/**\n */\nexport const loadModularUI =\n (\n key: string,\n href: Href | string,\n options?: RequestModularUIOptions,\n ): ThunkAction =>\n (dispatch: Dispatch) => {\n dispatch(updateStatus(key, MODULARUI_STATUS.LOADING));\n dispatch(startProgress());\n\n const loadModelPromise = dispatch(loadModel(key, href, options));\n\n return Promise.resolve(loadModelPromise)\n .then((response) => {\n if (response?.type === \"FINISH_PROGRESS\") {\n dispatch(updateStatus(key, MODULARUI_STATUS.FINISHED));\n }\n\n return dispatch(finishProgress());\n })\n .catch((error) => dispatch(handleError(error)));\n };\n\n/**\n */\nexport const reloadModel = (\n model: ModularUIModel,\n options?: RequestModularUIOptions,\n): ThunkAction =>\n loadModularUI(model.connectKey, model.selfhref, {\n ...options,\n isReload: true,\n });\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"ModularUIActions.js","names":["_Constants","require","_Href","_interopRequireDefault","_ErrorResponse","_ProgressIndicator","_Error","setModel","key","model","connectKey","type","payload","exports","initModels","models","updateModel","updateForm","removeModelByKey","resetModularUI","updateStatus","status","loadModelSuccessAction","updateHandler","loadModel","href","options","origin","contextPath","Href","method","HTTP_METHODS","GET","data","locale","childmodels","targetModel","forceTargetModel","cache","successAction","errorAction","error","errorResponse","ErrorResponse","isChangePassword","isResourceNotFoundAfterReload","MODULARUI_STATUS","ERROR","loadModularUI","dispatch","LOADING","startProgress","loadModelPromise","_promise","default","resolve","then","response","FINISHED","finishProgress","catch","handleError","reloadModel","selfhref","isReload"],"sources":["../../../src/redux/_modularui/ModularUIActions.js"],"sourcesContent":["// @flow\nimport { HTTP_METHODS, MODULARUI_STATUS } from \"../../constants/Constants\";\nimport Href from \"../../models/href/Href\";\nimport ErrorResponse from \"../../models/error/ErrorResponse\";\nimport { finishProgress, startProgress } from \"../actions/ProgressIndicator\";\nimport { handleError } from \"../actions/Error\";\n\nimport type { ModularUIModel } from \"../../models/types\";\nimport type { Dispatch, ThunkAction } from \"../types\";\nimport type {\n ModularUIAction,\n SetModelAction,\n InitModelAction,\n UpdateModelAction,\n UpdateFormAction,\n RemoveModelByKeyAction,\n ResetModularUIAction,\n UpdateStatusAction,\n} from \"./types\";\nimport type {\n RequestModularUIOptions,\n UpdateHandler,\n} from \"../../utils/fetch/types\";\n\n/**\n */\nexport const setModel = (\n key: string,\n model: ModularUIModel,\n): SetModelAction => {\n // set key on model for later reference\n model.connectKey = key;\n return {\n type: \"MODULARUI/SET\",\n payload: {\n key,\n model,\n },\n };\n};\n\n/**\n */\nexport const initModels = (\n models: Array<{ key: string, model: ModularUIModel }>,\n): InitModelAction => ({\n type: \"MODULARUI/INIT\",\n payload: models,\n});\n\n/**\n */\nexport const updateModel = (model: ModularUIModel): UpdateModelAction => ({\n type: \"MODULARUI/UPDATE\",\n payload: model,\n});\n\n/**\n */\nexport const updateForm = (model: ModularUIModel): UpdateFormAction => ({\n type: \"MODULARUI/UPDATE_FORM\",\n payload: model,\n});\n\n/**\n */\nexport const removeModelByKey = (key: string): RemoveModelByKeyAction => ({\n type: \"MODULARUI/REMOVE_KEY\",\n payload: key,\n});\n\n/**\n * Removes all models except the application model from the modular ui reducer\n */\nexport const resetModularUI = (): ResetModularUIAction => ({\n type: \"MODULARUI/RESET\",\n});\n\n/**\n */\nexport const updateStatus = (\n key: string,\n status: $Keys<typeof MODULARUI_STATUS>,\n): UpdateStatusAction => ({\n type: \"MODULARUI/STATUS\",\n payload: { key, status },\n});\n\n/**\n */\nconst loadModelSuccessAction = (\n key: string,\n model: ModularUIModel,\n updateHandler: UpdateHandler | void,\n): UpdateModelAction | SetModelAction => {\n if (updateHandler) {\n return updateModel(updateHandler(model));\n }\n return setModel(key, model);\n};\n\n/**\n * This action is handled by the modularui middleware\n */\nexport const loadModel = (\n key: string,\n href: Href | string,\n options?: RequestModularUIOptions,\n): ModularUIAction => ({\n type: \"MODULARUI/FETCH\",\n payload: {\n origin: options?.origin,\n contextPath: options?.contextPath,\n href:\n href instanceof Href\n ? href\n : new Href(href, \"\", options?.origin, options?.contextPath),\n method: options?.method ?? HTTP_METHODS.GET,\n data: options?.data,\n locale: options?.locale ?? \"en\",\n childmodels: options?.childmodels,\n targetModel: options?.targetModel,\n forceTargetModel: options?.forceTargetModel,\n cache: options?.cache,\n /**\n */\n successAction: (model) =>\n loadModelSuccessAction(key, model, options?.updateHandler),\n /**\n */\n errorAction: (error) => {\n const errorResponse = new ErrorResponse(error, key);\n if (errorResponse.isChangePassword) {\n return {\n type: \"NO_ACTION\",\n };\n } else if (errorResponse.isResourceNotFoundAfterReload) {\n return removeModelByKey(key);\n }\n\n return updateStatus(key, MODULARUI_STATUS.ERROR);\n },\n },\n});\n\n/**\n */\nexport const loadModularUI =\n (\n key: string,\n href: Href | string,\n options?: RequestModularUIOptions,\n ): ThunkAction =>\n (dispatch: Dispatch) => {\n dispatch(updateStatus(key, MODULARUI_STATUS.LOADING));\n dispatch(startProgress());\n\n const loadModelPromise = dispatch(loadModel(key, href, options));\n\n return Promise.resolve(loadModelPromise)\n .then((response) => {\n if (response?.type === \"FINISH_PROGRESS\") {\n dispatch(updateStatus(key, MODULARUI_STATUS.FINISHED));\n }\n\n return dispatch(finishProgress());\n })\n .catch((error) => dispatch(handleError(error)));\n };\n\n/**\n */\nexport const reloadModel = (\n model: ModularUIModel,\n options?: RequestModularUIOptions,\n): ThunkAction =>\n loadModularUI(model.connectKey, model.selfhref, {\n ...options,\n isReload: true,\n });\n"],"mappings":"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","ignoreList":[]}
@@ -22,6 +22,12 @@ const createRequest = modularui => {
22
22
  isReload: modularui.isReload,
23
23
  cache: modularui.cache
24
24
  });
25
+ if (modularui.origin) {
26
+ request.origin = modularui.origin;
27
+ }
28
+ if (modularui.contextPath) {
29
+ request.contextPath = modularui.contextPath;
30
+ }
25
31
  if (modularui.targetModel) {
26
32
  request.targetModel = modularui.targetModel;
27
33
  request.forceTargetModel = modularui.forceTargetModel ?? false;
@@ -19,6 +19,8 @@ import type { ModularUIAction, SuccessAction, ErrorAction } from "./types";
19
19
  import type { TargetModel } from "../../modularui/types";
20
20
 
21
21
  type RequestOptions = {
22
+ origin?: string,
23
+ contextPath?: string,
22
24
  href: Href,
23
25
  method?: $Keys<typeof HTTP_METHODS>,
24
26
  data?: any,
@@ -43,6 +45,14 @@ const createRequest = (modularui: RequestOptions): ModularUIRequest => {
43
45
  cache: modularui.cache,
44
46
  });
45
47
 
48
+ if (modularui.origin) {
49
+ request.origin = modularui.origin;
50
+ }
51
+
52
+ if (modularui.contextPath) {
53
+ request.contextPath = modularui.contextPath;
54
+ }
55
+
46
56
  if (modularui.targetModel) {
47
57
  request.targetModel = modularui.targetModel;
48
58
  request.forceTargetModel = modularui.forceTargetModel ?? false;
@@ -1 +1 @@
1
- {"version":3,"file":"ModularUIMiddleware.js","names":["_ModularUIRequest","_interopRequireDefault","require","_Constants","_ProgressIndicator","_Error","createRequest","modularui","request","ModularUIRequest","href","method","HTTP_METHODS","GET","data","locale","childmodels","isReload","cache","targetModel","forceTargetModel","responseHandler","next","dispatch","successAction","model","successResult","_promise","default","then","result","catch","error","handleError","Error","finishProgress","errorHandler","errorAction","err","errorResult","handleFetch","action","startProgress","requestOptions","payload","modularuiRequest","fetch","modularUIMiddleware","api","type","getState","i18n","exports"],"sources":["../../../src/redux/_modularui/ModularUIMiddleware.js"],"sourcesContent":["// @flow\nimport ModularUIRequest from \"../../modularui/ModularUIRequest\";\nimport { HTTP_METHODS } from \"../../constants/Constants\";\n\nimport { startProgress, finishProgress } from \"../actions/ProgressIndicator\";\n\nimport { handleError } from \"../actions/Error\";\n\nimport type { Middleware, MiddlewareAPI } from \"redux\";\nimport type {\n ReduxAction,\n ReduxState,\n Dispatch,\n PossibleAction,\n} from \"../types\";\nimport type { ModularUIModel } from \"../../models/types\";\nimport type Href from \"../../models/href/Href\";\nimport type { ModularUIAction, SuccessAction, ErrorAction } from \"./types\";\nimport type { TargetModel } from \"../../modularui/types\";\n\ntype RequestOptions = {\n href: Href,\n method?: $Keys<typeof HTTP_METHODS>,\n data?: any,\n locale: string,\n childmodels?: boolean,\n targetModel?: TargetModel,\n forceTargetModel?: boolean,\n isReload?: boolean,\n cache?: boolean,\n};\n\n/**\n * Symbol key that carries API call info interpreted by this Redux middleware.\n */\nconst createRequest = (modularui: RequestOptions): ModularUIRequest => {\n const request = new ModularUIRequest(modularui.href, {\n method: modularui.method || HTTP_METHODS.GET,\n data: modularui.data || {},\n locale: modularui.locale,\n childmodels: modularui.childmodels ?? true,\n isReload: modularui.isReload,\n cache: modularui.cache,\n });\n\n if (modularui.targetModel) {\n request.targetModel = modularui.targetModel;\n request.forceTargetModel = modularui.forceTargetModel ?? false;\n }\n\n return request;\n};\n\n/**\n */\nconst responseHandler = (\n next: Dispatch,\n dispatch: Dispatch,\n successAction: SuccessAction,\n model: ModularUIModel,\n) => {\n if (successAction) {\n const successResult = successAction(model);\n\n if (successResult instanceof Promise) {\n successResult\n .then((result) => {\n dispatch(result);\n })\n .catch((error) => {\n next(handleError(error));\n });\n } else {\n try {\n dispatch(successResult);\n } catch (error) {\n throw new Error(\n `Result of successResult is not a valid redux action: ${error}`,\n );\n }\n }\n }\n\n return next(finishProgress());\n};\n\n/**\n */\nconst errorHandler = (\n next: Dispatch,\n dispatch: Dispatch,\n errorAction: ?ErrorAction,\n err: any,\n) => {\n dispatch(finishProgress());\n\n if (errorAction) {\n const errorResult = errorAction(err);\n\n if (errorResult instanceof Promise) {\n errorResult.then((result) => dispatch(result));\n } else {\n dispatch(errorResult);\n }\n }\n\n return next(handleError(err));\n};\n\n/**\n */\nconst handleFetch = (\n action: ModularUIAction,\n locale: string,\n dispatch: Dispatch,\n next: Dispatch,\n) => {\n dispatch(startProgress());\n\n const { successAction, errorAction, ...requestOptions } = action.payload;\n requestOptions.locale = locale;\n\n const modularuiRequest = createRequest(requestOptions);\n\n return modularuiRequest\n .fetch()\n .then((model) => responseHandler(next, dispatch, successAction, model))\n .catch((error) => errorHandler(next, dispatch, errorAction, error));\n};\n\n/**\n */\nexport const modularUIMiddleware: Middleware<\n ReduxState,\n ReduxAction,\n Dispatch,\n> =\n (api: MiddlewareAPI<ReduxState, ReduxAction, Dispatch>) =>\n (next: Dispatch) =>\n (action: PossibleAction) => {\n if (action.type === \"MODULARUI/FETCH\") {\n return handleFetch(\n // $FlowExpectedError[incompatible-exact]\n action,\n api.getState().i18n.locale,\n api.dispatch,\n next,\n );\n }\n\n return next(action);\n };\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"ModularUIMiddleware.js","names":["_ModularUIRequest","_interopRequireDefault","require","_Constants","_ProgressIndicator","_Error","createRequest","modularui","request","ModularUIRequest","href","method","HTTP_METHODS","GET","data","locale","childmodels","isReload","cache","origin","contextPath","targetModel","forceTargetModel","responseHandler","next","dispatch","successAction","model","successResult","_promise","default","then","result","catch","error","handleError","Error","finishProgress","errorHandler","errorAction","err","errorResult","handleFetch","action","startProgress","requestOptions","payload","modularuiRequest","fetch","modularUIMiddleware","api","type","getState","i18n","exports"],"sources":["../../../src/redux/_modularui/ModularUIMiddleware.js"],"sourcesContent":["// @flow\nimport ModularUIRequest from \"../../modularui/ModularUIRequest\";\nimport { HTTP_METHODS } from \"../../constants/Constants\";\n\nimport { startProgress, finishProgress } from \"../actions/ProgressIndicator\";\n\nimport { handleError } from \"../actions/Error\";\n\nimport type { Middleware, MiddlewareAPI } from \"redux\";\nimport type {\n ReduxAction,\n ReduxState,\n Dispatch,\n PossibleAction,\n} from \"../types\";\nimport type { ModularUIModel } from \"../../models/types\";\nimport type Href from \"../../models/href/Href\";\nimport type { ModularUIAction, SuccessAction, ErrorAction } from \"./types\";\nimport type { TargetModel } from \"../../modularui/types\";\n\ntype RequestOptions = {\n origin?: string,\n contextPath?: string,\n href: Href,\n method?: $Keys<typeof HTTP_METHODS>,\n data?: any,\n locale: string,\n childmodels?: boolean,\n targetModel?: TargetModel,\n forceTargetModel?: boolean,\n isReload?: boolean,\n cache?: boolean,\n};\n\n/**\n * Symbol key that carries API call info interpreted by this Redux middleware.\n */\nconst createRequest = (modularui: RequestOptions): ModularUIRequest => {\n const request = new ModularUIRequest(modularui.href, {\n method: modularui.method || HTTP_METHODS.GET,\n data: modularui.data || {},\n locale: modularui.locale,\n childmodels: modularui.childmodels ?? true,\n isReload: modularui.isReload,\n cache: modularui.cache,\n });\n\n if (modularui.origin) {\n request.origin = modularui.origin;\n }\n\n if (modularui.contextPath) {\n request.contextPath = modularui.contextPath;\n }\n\n if (modularui.targetModel) {\n request.targetModel = modularui.targetModel;\n request.forceTargetModel = modularui.forceTargetModel ?? false;\n }\n\n return request;\n};\n\n/**\n */\nconst responseHandler = (\n next: Dispatch,\n dispatch: Dispatch,\n successAction: SuccessAction,\n model: ModularUIModel,\n) => {\n if (successAction) {\n const successResult = successAction(model);\n\n if (successResult instanceof Promise) {\n successResult\n .then((result) => {\n dispatch(result);\n })\n .catch((error) => {\n next(handleError(error));\n });\n } else {\n try {\n dispatch(successResult);\n } catch (error) {\n throw new Error(\n `Result of successResult is not a valid redux action: ${error}`,\n );\n }\n }\n }\n\n return next(finishProgress());\n};\n\n/**\n */\nconst errorHandler = (\n next: Dispatch,\n dispatch: Dispatch,\n errorAction: ?ErrorAction,\n err: any,\n) => {\n dispatch(finishProgress());\n\n if (errorAction) {\n const errorResult = errorAction(err);\n\n if (errorResult instanceof Promise) {\n errorResult.then((result) => dispatch(result));\n } else {\n dispatch(errorResult);\n }\n }\n\n return next(handleError(err));\n};\n\n/**\n */\nconst handleFetch = (\n action: ModularUIAction,\n locale: string,\n dispatch: Dispatch,\n next: Dispatch,\n) => {\n dispatch(startProgress());\n\n const { successAction, errorAction, ...requestOptions } = action.payload;\n requestOptions.locale = locale;\n\n const modularuiRequest = createRequest(requestOptions);\n\n return modularuiRequest\n .fetch()\n .then((model) => responseHandler(next, dispatch, successAction, model))\n .catch((error) => errorHandler(next, dispatch, errorAction, error));\n};\n\n/**\n */\nexport const modularUIMiddleware: Middleware<\n ReduxState,\n ReduxAction,\n Dispatch,\n> =\n (api: MiddlewareAPI<ReduxState, ReduxAction, Dispatch>) =>\n (next: Dispatch) =>\n (action: PossibleAction) => {\n if (action.type === \"MODULARUI/FETCH\") {\n return handleFetch(\n // $FlowExpectedError[incompatible-exact]\n action,\n api.getState().i18n.locale,\n api.dispatch,\n next,\n );\n }\n\n return next(action);\n };\n"],"mappings":"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","ignoreList":[]}
@@ -65,6 +65,8 @@ export type ErrorAction = (
65
65
  export type ModularUIAction = {
66
66
  type: "MODULARUI/FETCH",
67
67
  payload: {
68
+ origin?: string,
69
+ contextPath?: string,
68
70
  href: Href,
69
71
  method?: $Keys<HTTP_METHODS>,
70
72
  data?: any,
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":[],"sources":["../../../src/redux/_modularui/types.js"],"sourcesContent":["// @flow\nimport type { ModularUIModel } from \"../../models/types\";\nimport type Href from \"../../models/href/Href\";\nimport type { FetchException } from \"../../exceptions\";\nimport type { NoAction } from \"../types\";\nimport typeof {\n HTTP_METHODS,\n MODULARUI_STATUS,\n} from \"../../constants/Constants\";\nimport type { ComponentType } from \"react\";\nimport type { TargetModel } from \"../../modularui/types\";\nimport type { RequestModularUIOptions } from \"../../utils/fetch/types\";\n\nexport type ModularUIOptions = {\n propName?: string,\n removeOnUnmount?: boolean,\n ...RequestModularUIOptions,\n};\n\nexport type ModelEntry = {\n +status: string,\n +model: ModularUIModel,\n +lastModification: number,\n};\n\nexport type ModularUIState = {\n [string]: ModelEntry,\n ...\n};\n\nexport type SetModelAction = {\n type: \"MODULARUI/SET\",\n payload: {\n key: string,\n model: ?ModularUIModel,\n },\n};\n\nexport type InitModelAction = {\n type: \"MODULARUI/INIT\",\n payload: Array<{\n key: string,\n model: ModularUIModel,\n }>,\n};\n\nexport type UpdateModelAction = {\n type: \"MODULARUI/UPDATE\",\n payload: ModularUIModel,\n};\n\nexport type UpdateFormAction = {\n type: \"MODULARUI/UPDATE_FORM\",\n payload: ModularUIModel,\n};\n\nexport type SuccessAction = (\n model: ModularUIModel,\n) => UpdateModelAction | SetModelAction;\n\nexport type ErrorAction = (\n error: FetchException,\n) => UpdateStatusAction | RemoveModelByKeyAction | NoAction;\n\nexport type ModularUIAction = {\n type: \"MODULARUI/FETCH\",\n payload: {\n href: Href,\n method?: $Keys<HTTP_METHODS>,\n data?: any,\n locale: string,\n childmodels?: boolean,\n targetModel?: TargetModel,\n forceTargetModel?: boolean,\n cache?: boolean,\n successAction: (\n model: ModularUIModel,\n ) => UpdateModelAction | SetModelAction,\n errorAction?: ErrorAction,\n },\n};\n\nexport type RemoveModelByKeyAction = {\n type: \"MODULARUI/REMOVE_KEY\",\n payload: string,\n};\n\nexport type ResetModularUIAction = {\n type: \"MODULARUI/RESET\",\n};\n\nexport type UpdateStatusAction = {\n type: \"MODULARUI/STATUS\",\n payload: {\n key: string,\n status: $Keys<MODULARUI_STATUS>,\n },\n};\n\nexport type ModularUIConnector = (\n Component: ComponentType<any>,\n) => ComponentType<any>;\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"file":"types.js","names":[],"sources":["../../../src/redux/_modularui/types.js"],"sourcesContent":["// @flow\nimport type { ModularUIModel } from \"../../models/types\";\nimport type Href from \"../../models/href/Href\";\nimport type { FetchException } from \"../../exceptions\";\nimport type { NoAction } from \"../types\";\nimport typeof {\n HTTP_METHODS,\n MODULARUI_STATUS,\n} from \"../../constants/Constants\";\nimport type { ComponentType } from \"react\";\nimport type { TargetModel } from \"../../modularui/types\";\nimport type { RequestModularUIOptions } from \"../../utils/fetch/types\";\n\nexport type ModularUIOptions = {\n propName?: string,\n removeOnUnmount?: boolean,\n ...RequestModularUIOptions,\n};\n\nexport type ModelEntry = {\n +status: string,\n +model: ModularUIModel,\n +lastModification: number,\n};\n\nexport type ModularUIState = {\n [string]: ModelEntry,\n ...\n};\n\nexport type SetModelAction = {\n type: \"MODULARUI/SET\",\n payload: {\n key: string,\n model: ?ModularUIModel,\n },\n};\n\nexport type InitModelAction = {\n type: \"MODULARUI/INIT\",\n payload: Array<{\n key: string,\n model: ModularUIModel,\n }>,\n};\n\nexport type UpdateModelAction = {\n type: \"MODULARUI/UPDATE\",\n payload: ModularUIModel,\n};\n\nexport type UpdateFormAction = {\n type: \"MODULARUI/UPDATE_FORM\",\n payload: ModularUIModel,\n};\n\nexport type SuccessAction = (\n model: ModularUIModel,\n) => UpdateModelAction | SetModelAction;\n\nexport type ErrorAction = (\n error: FetchException,\n) => UpdateStatusAction | RemoveModelByKeyAction | NoAction;\n\nexport type ModularUIAction = {\n type: \"MODULARUI/FETCH\",\n payload: {\n origin?: string,\n contextPath?: string,\n href: Href,\n method?: $Keys<HTTP_METHODS>,\n data?: any,\n locale: string,\n childmodels?: boolean,\n targetModel?: TargetModel,\n forceTargetModel?: boolean,\n cache?: boolean,\n successAction: (\n model: ModularUIModel,\n ) => UpdateModelAction | SetModelAction,\n errorAction?: ErrorAction,\n },\n};\n\nexport type RemoveModelByKeyAction = {\n type: \"MODULARUI/REMOVE_KEY\",\n payload: string,\n};\n\nexport type ResetModularUIAction = {\n type: \"MODULARUI/RESET\",\n};\n\nexport type UpdateStatusAction = {\n type: \"MODULARUI/STATUS\",\n payload: {\n key: string,\n status: $Keys<MODULARUI_STATUS>,\n },\n};\n\nexport type ModularUIConnector = (\n Component: ComponentType<any>,\n) => ComponentType<any>;\n"],"mappings":"","ignoreList":[]}
@@ -11,12 +11,19 @@ var _i18n = require("../selectors/i18n");
11
11
  /**
12
12
  */
13
13
  const reloadApplication = () => (dispatch, getState) => {
14
- const allKeys = (0, _ModularUISelectors.allKeysByHref)(getState(), "/");
14
+ const state = getState();
15
+ let applicationHref = new _models.Href("/", "Application");
16
+ const application = (0, _ModularUISelectors.getApplication)(state);
17
+ if (application) {
18
+ applicationHref.contextPath = application.contextPath;
19
+ applicationHref.origin = application.origin;
20
+ }
21
+ const allKeys = (0, _ModularUISelectors.allKeysByHref)(state, applicationHref);
15
22
  for (const key of allKeys) {
16
23
  dispatch((0, _ModularUIActions.removeModelByKey)(key));
17
24
  }
18
- const modelKey = `application(/)(${(0, _i18n.getLocale)(getState())})`;
19
- return dispatch((0, _ModularUIActions.loadModularUI)(modelKey, new _models.Href("/", "Application"), {
25
+ const modelKey = `application(/)(${(0, _i18n.getLocale)(state)})`;
26
+ return dispatch((0, _ModularUIActions.loadModularUI)(modelKey, applicationHref, {
20
27
  targetModel: _models.ApplicationModel
21
28
  }));
22
29
  };
@@ -3,7 +3,10 @@ import {
3
3
  loadModularUI,
4
4
  removeModelByKey,
5
5
  } from "../_modularui/ModularUIActions";
6
- import { allKeysByHref } from "../_modularui/ModularUISelectors";
6
+ import {
7
+ allKeysByHref,
8
+ getApplication,
9
+ } from "../_modularui/ModularUISelectors";
7
10
  import { ApplicationModel, Href } from "../../models";
8
11
  import { getLocale } from "../selectors/i18n";
9
12
 
@@ -13,14 +16,23 @@ import type { Dispatch, GetState, ThunkAction } from "../types";
13
16
  */
14
17
  export const reloadApplication =
15
18
  (): ThunkAction => (dispatch: Dispatch, getState: GetState) => {
16
- const allKeys = allKeysByHref(getState(), "/");
19
+ const state = getState();
20
+
21
+ let applicationHref = new Href("/", "Application");
22
+ const application = getApplication(state);
23
+ if (application) {
24
+ applicationHref.contextPath = application.contextPath;
25
+ applicationHref.origin = application.origin;
26
+ }
27
+
28
+ const allKeys = allKeysByHref(state, applicationHref);
17
29
  for (const key of allKeys) {
18
30
  dispatch(removeModelByKey(key));
19
31
  }
20
32
 
21
- const modelKey = `application(/)(${getLocale(getState())})`;
33
+ const modelKey = `application(/)(${getLocale(state)})`;
22
34
  return dispatch(
23
- loadModularUI(modelKey, new Href("/", "Application"), {
35
+ loadModularUI(modelKey, applicationHref, {
24
36
  targetModel: ApplicationModel,
25
37
  }),
26
38
  );
@@ -1 +1 @@
1
- {"version":3,"file":"Application.js","names":["_ModularUIActions","require","_ModularUISelectors","_models","_i18n","reloadApplication","dispatch","getState","allKeys","allKeysByHref","key","removeModelByKey","modelKey","getLocale","loadModularUI","Href","targetModel","ApplicationModel","exports"],"sources":["../../../src/redux/actions/Application.js"],"sourcesContent":["// @flow\nimport {\n loadModularUI,\n removeModelByKey,\n} from \"../_modularui/ModularUIActions\";\nimport { allKeysByHref } from \"../_modularui/ModularUISelectors\";\nimport { ApplicationModel, Href } from \"../../models\";\nimport { getLocale } from \"../selectors/i18n\";\n\nimport type { Dispatch, GetState, ThunkAction } from \"../types\";\n\n/**\n */\nexport const reloadApplication =\n (): ThunkAction => (dispatch: Dispatch, getState: GetState) => {\n const allKeys = allKeysByHref(getState(), \"/\");\n for (const key of allKeys) {\n dispatch(removeModelByKey(key));\n }\n\n const modelKey = `application(/)(${getLocale(getState())})`;\n return dispatch(\n loadModularUI(modelKey, new Href(\"/\", \"Application\"), {\n targetModel: ApplicationModel,\n }),\n );\n };\n"],"mappings":";;;;;;AACA,IAAAA,iBAAA,GAAAC,OAAA;AAIA,IAAAC,mBAAA,GAAAD,OAAA;AACA,IAAAE,OAAA,GAAAF,OAAA;AACA,IAAAG,KAAA,GAAAH,OAAA;AAIA;AACA;AACO,MAAMI,iBAAiB,GAC5BA,CAAA,KAAmB,CAACC,QAAkB,EAAEC,QAAkB,KAAK;EAC7D,MAAMC,OAAO,GAAG,IAAAC,iCAAa,EAACF,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;EAC9C,KAAK,MAAMG,GAAG,IAAIF,OAAO,EAAE;IACzBF,QAAQ,CAAC,IAAAK,kCAAgB,EAACD,GAAG,CAAC,CAAC;EACjC;EAEA,MAAME,QAAQ,GAAG,kBAAkB,IAAAC,eAAS,EAACN,QAAQ,CAAC,CAAC,CAAC,GAAG;EAC3D,OAAOD,QAAQ,CACb,IAAAQ,+BAAa,EAACF,QAAQ,EAAE,IAAIG,YAAI,CAAC,GAAG,EAAE,aAAa,CAAC,EAAE;IACpDC,WAAW,EAAEC;EACf,CAAC,CACH,CAAC;AACH,CAAC;AAACC,OAAA,CAAAb,iBAAA,GAAAA,iBAAA","ignoreList":[]}
1
+ {"version":3,"file":"Application.js","names":["_ModularUIActions","require","_ModularUISelectors","_models","_i18n","reloadApplication","dispatch","getState","state","applicationHref","Href","application","getApplication","contextPath","origin","allKeys","allKeysByHref","key","removeModelByKey","modelKey","getLocale","loadModularUI","targetModel","ApplicationModel","exports"],"sources":["../../../src/redux/actions/Application.js"],"sourcesContent":["// @flow\nimport {\n loadModularUI,\n removeModelByKey,\n} from \"../_modularui/ModularUIActions\";\nimport {\n allKeysByHref,\n getApplication,\n} from \"../_modularui/ModularUISelectors\";\nimport { ApplicationModel, Href } from \"../../models\";\nimport { getLocale } from \"../selectors/i18n\";\n\nimport type { Dispatch, GetState, ThunkAction } from \"../types\";\n\n/**\n */\nexport const reloadApplication =\n (): ThunkAction => (dispatch: Dispatch, getState: GetState) => {\n const state = getState();\n\n let applicationHref = new Href(\"/\", \"Application\");\n const application = getApplication(state);\n if (application) {\n applicationHref.contextPath = application.contextPath;\n applicationHref.origin = application.origin;\n }\n\n const allKeys = allKeysByHref(state, applicationHref);\n for (const key of allKeys) {\n dispatch(removeModelByKey(key));\n }\n\n const modelKey = `application(/)(${getLocale(state)})`;\n return dispatch(\n loadModularUI(modelKey, applicationHref, {\n targetModel: ApplicationModel,\n }),\n );\n };\n"],"mappings":";;;;;;AACA,IAAAA,iBAAA,GAAAC,OAAA;AAIA,IAAAC,mBAAA,GAAAD,OAAA;AAIA,IAAAE,OAAA,GAAAF,OAAA;AACA,IAAAG,KAAA,GAAAH,OAAA;AAIA;AACA;AACO,MAAMI,iBAAiB,GAC5BA,CAAA,KAAmB,CAACC,QAAkB,EAAEC,QAAkB,KAAK;EAC7D,MAAMC,KAAK,GAAGD,QAAQ,CAAC,CAAC;EAExB,IAAIE,eAAe,GAAG,IAAIC,YAAI,CAAC,GAAG,EAAE,aAAa,CAAC;EAClD,MAAMC,WAAW,GAAG,IAAAC,kCAAc,EAACJ,KAAK,CAAC;EACzC,IAAIG,WAAW,EAAE;IACfF,eAAe,CAACI,WAAW,GAAGF,WAAW,CAACE,WAAW;IACrDJ,eAAe,CAACK,MAAM,GAAGH,WAAW,CAACG,MAAM;EAC7C;EAEA,MAAMC,OAAO,GAAG,IAAAC,iCAAa,EAACR,KAAK,EAAEC,eAAe,CAAC;EACrD,KAAK,MAAMQ,GAAG,IAAIF,OAAO,EAAE;IACzBT,QAAQ,CAAC,IAAAY,kCAAgB,EAACD,GAAG,CAAC,CAAC;EACjC;EAEA,MAAME,QAAQ,GAAG,kBAAkB,IAAAC,eAAS,EAACZ,KAAK,CAAC,GAAG;EACtD,OAAOF,QAAQ,CACb,IAAAe,+BAAa,EAACF,QAAQ,EAAEV,eAAe,EAAE;IACvCa,WAAW,EAAEC;EACf,CAAC,CACH,CAAC;AACH,CAAC;AAACC,OAAA,CAAAnB,iBAAA,GAAAA,iBAAA","ignoreList":[]}
@@ -18,6 +18,8 @@ const connectPanel = exports.connectPanel = (0, _ModularUIConnector.default)("Pa
18
18
  if (!href && !match) {
19
19
  throw new Error("Cannot determine panel url because of missing href and match");
20
20
  }
21
+
22
+ // TODO SBO: origin and context?
21
23
  const panelHref = href ? new _Href.default(href) : new _Href.default(match.url);
22
24
  if (match && match.isExact) {
23
25
  panelHref.addParametersFromString(querystring);
@@ -15,6 +15,7 @@ export const connectPanel: ModularUIConnector = modularui(
15
15
  );
16
16
  }
17
17
 
18
+ // TODO SBO: origin and context?
18
19
  const panelHref = href ? new Href(href) : new Href(match.url);
19
20
 
20
21
  if (match && match.isExact) {
@@ -1 +1 @@
1
- {"version":3,"file":"PanelRenderer.js","names":["_ModularUIConnector","_interopRequireDefault","require","_Href","connectPanel","exports","modularui","_ref","href","match","querystring","Error","panelHref","Href","url","isExact","addParametersFromString","propName"],"sources":["../../../src/redux/connectors/PanelRenderer.js"],"sourcesContent":["// @flow\nimport modularui from \"../_modularui/ModularUIConnector\";\nimport Href from \"../../models/href/Href\";\n\nimport type { ModularUIConnector } from \"../_modularui/types\";\n\n/**\n */\nexport const connectPanel: ModularUIConnector = modularui(\n \"PanelRenderer\",\n ({ href, match, querystring = \"\" }) => {\n if (!href && !match) {\n throw new Error(\n \"Cannot determine panel url because of missing href and match\",\n );\n }\n\n const panelHref = href ? new Href(href) : new Href(match.url);\n\n if (match && match.isExact) {\n panelHref.addParametersFromString(querystring);\n }\n\n return panelHref;\n },\n {\n propName: \"panel\",\n },\n);\n"],"mappings":";;;;;;;AACA,IAAAA,mBAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,KAAA,GAAAF,sBAAA,CAAAC,OAAA;AAIA;AACA;AACO,MAAME,YAAgC,GAAAC,OAAA,CAAAD,YAAA,GAAG,IAAAE,2BAAS,EACvD,eAAe,EACfC,IAAA,IAAuC;EAAA,IAAtC;IAAEC,IAAI;IAAEC,KAAK;IAAEC,WAAW,GAAG;EAAG,CAAC,GAAAH,IAAA;EAChC,IAAI,CAACC,IAAI,IAAI,CAACC,KAAK,EAAE;IACnB,MAAM,IAAIE,KAAK,CACb,8DACF,CAAC;EACH;EAEA,MAAMC,SAAS,GAAGJ,IAAI,GAAG,IAAIK,aAAI,CAACL,IAAI,CAAC,GAAG,IAAIK,aAAI,CAACJ,KAAK,CAACK,GAAG,CAAC;EAE7D,IAAIL,KAAK,IAAIA,KAAK,CAACM,OAAO,EAAE;IAC1BH,SAAS,CAACI,uBAAuB,CAACN,WAAW,CAAC;EAChD;EAEA,OAAOE,SAAS;AAClB,CAAC,EACD;EACEK,QAAQ,EAAE;AACZ,CACF,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"PanelRenderer.js","names":["_ModularUIConnector","_interopRequireDefault","require","_Href","connectPanel","exports","modularui","_ref","href","match","querystring","Error","panelHref","Href","url","isExact","addParametersFromString","propName"],"sources":["../../../src/redux/connectors/PanelRenderer.js"],"sourcesContent":["// @flow\nimport modularui from \"../_modularui/ModularUIConnector\";\nimport Href from \"../../models/href/Href\";\n\nimport type { ModularUIConnector } from \"../_modularui/types\";\n\n/**\n */\nexport const connectPanel: ModularUIConnector = modularui(\n \"PanelRenderer\",\n ({ href, match, querystring = \"\" }) => {\n if (!href && !match) {\n throw new Error(\n \"Cannot determine panel url because of missing href and match\",\n );\n }\n\n // TODO SBO: origin and context?\n const panelHref = href ? new Href(href) : new Href(match.url);\n\n if (match && match.isExact) {\n panelHref.addParametersFromString(querystring);\n }\n\n return panelHref;\n },\n {\n propName: \"panel\",\n },\n);\n"],"mappings":";;;;;;;AACA,IAAAA,mBAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,KAAA,GAAAF,sBAAA,CAAAC,OAAA;AAIA;AACA;AACO,MAAME,YAAgC,GAAAC,OAAA,CAAAD,YAAA,GAAG,IAAAE,2BAAS,EACvD,eAAe,EACfC,IAAA,IAAuC;EAAA,IAAtC;IAAEC,IAAI;IAAEC,KAAK;IAAEC,WAAW,GAAG;EAAG,CAAC,GAAAH,IAAA;EAChC,IAAI,CAACC,IAAI,IAAI,CAACC,KAAK,EAAE;IACnB,MAAM,IAAIE,KAAK,CACb,8DACF,CAAC;EACH;;EAEA;EACA,MAAMC,SAAS,GAAGJ,IAAI,GAAG,IAAIK,aAAI,CAACL,IAAI,CAAC,GAAG,IAAIK,aAAI,CAACJ,KAAK,CAACK,GAAG,CAAC;EAE7D,IAAIL,KAAK,IAAIA,KAAK,CAACM,OAAO,EAAE;IAC1BH,SAAS,CAACI,uBAAuB,CAACN,WAAW,CAAC;EAChD;EAEA,OAAOE,SAAS;AAClB,CAAC,EACD;EACEK,QAAQ,EAAE;AACZ,CACF,CAAC","ignoreList":[]}
@@ -8,6 +8,8 @@ export type RequestURLOptions = {
8
8
  };
9
9
 
10
10
  export type RequestBaseOptions = {
11
+ origin?: string,
12
+ contextPath?: string,
11
13
  method?: $Keys<HTTP_METHODS>,
12
14
  params?: string,
13
15
  data?: any,
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":[],"sources":["../../../src/utils/fetch/types.js"],"sourcesContent":["// @flow\nimport typeof { HTTP_METHODS } from \"../../constants/Constants\";\nimport type { ModularUIModel } from \"../../models/types\";\nimport type { TargetModel } from \"../../modularui/types\";\n\nexport type RequestURLOptions = {\n url: string,\n};\n\nexport type RequestBaseOptions = {\n method?: $Keys<HTTP_METHODS>,\n params?: string,\n data?: any,\n timeout?: number,\n responseType?: string,\n headers?: {\n [headerName: string]: string,\n Accept?: string,\n \"Accept-Language\"?: string,\n \"Content-Type\"?: string,\n \"x-filename\"?: string,\n \"x-filesize\"?: string,\n },\n events?: { [eventName: string]: () => void },\n onProgress?: ProgressEventHandler,\n includeContext?: boolean,\n locale?: string,\n cache?: boolean,\n isReload?: boolean,\n};\n\nexport type RequestOptions = { ...RequestURLOptions, ...RequestBaseOptions };\n\nexport type UpdateHandler = (newModel: ModularUIModel) => ModularUIModel;\nexport type RequestModularUIOptions = {\n ...RequestBaseOptions,\n targetModel?: TargetModel,\n forceTargetModel?: boolean,\n updateHandler?: UpdateHandler | void,\n childmodels?: boolean,\n isValidationRequest?: boolean,\n removeOnUnmount?: boolean,\n};\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"file":"types.js","names":[],"sources":["../../../src/utils/fetch/types.js"],"sourcesContent":["// @flow\nimport typeof { HTTP_METHODS } from \"../../constants/Constants\";\nimport type { ModularUIModel } from \"../../models/types\";\nimport type { TargetModel } from \"../../modularui/types\";\n\nexport type RequestURLOptions = {\n url: string,\n};\n\nexport type RequestBaseOptions = {\n origin?: string,\n contextPath?: string,\n method?: $Keys<HTTP_METHODS>,\n params?: string,\n data?: any,\n timeout?: number,\n responseType?: string,\n headers?: {\n [headerName: string]: string,\n Accept?: string,\n \"Accept-Language\"?: string,\n \"Content-Type\"?: string,\n \"x-filename\"?: string,\n \"x-filesize\"?: string,\n },\n events?: { [eventName: string]: () => void },\n onProgress?: ProgressEventHandler,\n includeContext?: boolean,\n locale?: string,\n cache?: boolean,\n isReload?: boolean,\n};\n\nexport type RequestOptions = { ...RequestURLOptions, ...RequestBaseOptions };\n\nexport type UpdateHandler = (newModel: ModularUIModel) => ModularUIModel;\nexport type RequestModularUIOptions = {\n ...RequestBaseOptions,\n targetModel?: TargetModel,\n forceTargetModel?: boolean,\n updateHandler?: UpdateHandler | void,\n childmodels?: boolean,\n isValidationRequest?: boolean,\n removeOnUnmount?: boolean,\n};\n"],"mappings":"","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@beinformed/ui",
3
- "version": "1.56.0",
3
+ "version": "1.57.0-contextpath.1",
4
4
  "description": "Toolbox for be informed javascript layouts",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "bugs": "http://support.beinformed.com",
@@ -194,8 +194,8 @@ export const loginType = (): string =>
194
194
 
195
195
  /**
196
196
  */
197
- export const loginPath = (): string =>
198
- getSetting(LOGIN_PATH_SETTING, "/callback?client_name=FormClient");
197
+ export const loginPath = (clientName: string = "FormClient"): string =>
198
+ getSetting(LOGIN_PATH_SETTING, `/callback?client_name=${clientName}`);
199
199
  /**
200
200
  */
201
201
  export const loginUsernameField = (): string =>
@@ -62,6 +62,8 @@ export const useForm = (href: string | Href, data?: Object): ?FormModel => {
62
62
  targetModel: FormModel,
63
63
  removeOnUnmount: true,
64
64
  data,
65
+ origin: formHref.origin,
66
+ contextPath: formHref.contextPath,
65
67
  });
66
68
 
67
69
  if (form?.model) {
@@ -11,8 +11,8 @@ import {
11
11
  import useDeepCompareEffect from "./useDeepCompareEffect";
12
12
 
13
13
  import { useLocale } from "./useI18n";
14
+ import Href from "../models/href/Href";
14
15
 
15
- import type Href from "../models/href/Href";
16
16
  import type { RequestModularUIOptions } from "../utils";
17
17
 
18
18
  /**
@@ -37,6 +37,11 @@ export const useModularUI = (
37
37
  const href = url?.toString() || "";
38
38
  const key = useKeyForHook(modelKey, href);
39
39
 
40
+ if (url instanceof Href) {
41
+ options.origin = options.origin ?? url.origin;
42
+ options.contextPath = options.contextPath ?? url.contextPath;
43
+ }
44
+
40
45
  const prevOptions = useRef(options);
41
46
  const prevHref = useRef(href);
42
47
 
@@ -11,6 +11,8 @@ export type UseModularUIBasicOptions<T: ModularUIModel> = {
11
11
  expectedModels?: Array<string>,
12
12
  targetModel?: Class<T> | Array<Class<T>>,
13
13
  forceTargetModel?: boolean,
14
+ origin?: string,
15
+ contextPath?: string,
14
16
  cache?: boolean,
15
17
  };
16
18
 
@@ -23,6 +25,8 @@ export const useModularUIBasic = <T: ModularUIModel>(
23
25
  expectedModels: [],
24
26
  targetModel: undefined,
25
27
  forceTargetModel: false,
28
+ origin: undefined,
29
+ contextPath: undefined,
26
30
  },
27
31
  ): T | null => {
28
32
  const location = useLocation();
@@ -31,6 +35,8 @@ export const useModularUIBasic = <T: ModularUIModel>(
31
35
  targetModel: undefined,
32
36
  forceTargetModel: undefined,
33
37
  isReload: false,
38
+ origin: undefined,
39
+ contextPath: undefined,
34
40
  cache: false,
35
41
  };
36
42
  if (options.targetModel) {
@@ -47,6 +53,14 @@ export const useModularUIBasic = <T: ModularUIModel>(
47
53
  useModularUIOptions.isReload = true;
48
54
  }
49
55
 
56
+ if (options.origin) {
57
+ useModularUIOptions.origin = options.origin;
58
+ }
59
+
60
+ if (options.contextPath) {
61
+ useModularUIOptions.contextPath = options.contextPath;
62
+ }
63
+
50
64
  // $FlowFixMe[incompatible-call]
51
65
  const modularUI = useModularUI(key, href, useModularUIOptions);
52
66
 
@@ -11,103 +11,150 @@ import UserProfileModel from "../models/user/UserProfileModel";
11
11
 
12
12
  import { useModularUIBasic } from "./useModularUIBasic";
13
13
 
14
+ type HookOptions = {
15
+ origin?: string,
16
+ contextPath?: string,
17
+ };
18
+
14
19
  /**
15
20
  * Load application
16
21
  */
17
- export const useApplication = (): ApplicationModel | null =>
22
+ export const useApplication = (
23
+ options?: HookOptions,
24
+ ): ApplicationModel | null =>
18
25
  useModularUIBasic("application", "/", {
19
26
  expectedModels: ["Application"],
20
27
  targetModel: ApplicationModel,
28
+ ...options,
21
29
  });
22
30
 
23
31
  /**
24
32
  * Load a tab by href
25
33
  */
26
- export const useTab = (href: string): TabModel | null =>
34
+ export const useTab = (href: string, options?: HookOptions): TabModel | null =>
27
35
  useModularUIBasic("tab", href, {
28
36
  expectedModels: ["Tab"],
29
37
  targetModel: TabModel,
38
+ ...options,
30
39
  });
31
40
 
32
41
  /**
33
42
  * Load caseview by href
34
43
  */
35
- export const useCaseView = (href: string): CaseViewModel | null =>
44
+ export const useCaseView = (
45
+ href: string,
46
+ options?: HookOptions,
47
+ ): CaseViewModel | null =>
36
48
  useModularUIBasic("caseview", href, {
37
49
  expectedModels: ["CaseView"],
38
50
  targetModel: CaseViewModel,
51
+ ...options,
39
52
  });
40
53
 
41
54
  /**
42
55
  */
43
56
  export const usePanel = (
44
57
  href: string,
58
+ options?: HookOptions,
45
59
  ): ListModel | GroupingPanelModel | DetailModel | null =>
46
60
  useModularUIBasic("panel", href, {
47
61
  expectedModels: ["List", "GroupingPanel", "Detail"],
62
+ ...options,
48
63
  });
49
64
 
50
65
  /**
51
66
  */
52
- export const useList = (href: string): ListModel | null =>
67
+ export const useList = (
68
+ href: string,
69
+ options?: HookOptions,
70
+ ): ListModel | null =>
53
71
  useModularUIBasic("list", href, {
54
72
  expectedModels: ["List"],
55
73
  targetModel: ListModel,
74
+ ...options,
56
75
  });
57
76
 
58
77
  /**
59
78
  */
60
- export const useListOrDetail = (href: string): ListModel | DetailModel | null =>
79
+ export const useListOrDetail = (
80
+ href: string,
81
+ options?: HookOptions,
82
+ ): ListModel | DetailModel | null =>
61
83
  useModularUIBasic("list", href, {
62
84
  expectedModels: ["List", "Detail"],
63
85
  targetModel: [ListModel, DetailModel],
86
+ ...options,
64
87
  });
65
88
 
66
89
  /**
67
90
  */
68
- export const useListDetail = (href: string): ListDetailModel | null =>
91
+ export const useListDetail = (
92
+ href: string,
93
+ options?: HookOptions,
94
+ ): ListDetailModel | null =>
69
95
  useModularUIBasic("listdetail", href, {
70
96
  expectedModels: ["ListDetail"],
71
97
  targetModel: ListDetailModel,
72
98
  forceTargetModel: true,
99
+ ...options,
73
100
  });
74
101
 
75
102
  /**
76
103
  */
77
- export const useGroupingPanel = (href: string): GroupingPanelModel | null =>
104
+ export const useGroupingPanel = (
105
+ href: string,
106
+ options?: HookOptions,
107
+ ): GroupingPanelModel | null =>
78
108
  useModularUIBasic("groupingpanel", href, {
79
109
  expectedModels: ["GroupingPanel"],
80
110
  targetModel: GroupingPanelModel,
111
+ ...options,
81
112
  });
82
113
 
83
114
  /**
84
115
  */
85
- export const useDetailPanel = (href: string): DetailModel | null =>
116
+ export const useDetailPanel = (
117
+ href: string,
118
+ options?: HookOptions,
119
+ ): DetailModel | null =>
86
120
  useModularUIBasic("detailpanel", href, {
87
121
  expectedModels: ["Detail"],
88
122
  targetModel: DetailModel,
123
+ ...options,
89
124
  });
90
125
 
91
126
  /**
92
127
  */
93
- export const useQuicksearch = (href: string): CaseSearchModel | null =>
128
+ export const useQuicksearch = (
129
+ href: string,
130
+ options?: HookOptions,
131
+ ): CaseSearchModel | null =>
94
132
  useModularUIBasic("quicksearch", href, {
95
133
  expectedModels: ["CaseSearch"],
96
134
  targetModel: CaseSearchModel,
135
+ ...options,
97
136
  });
98
137
 
99
138
  /**
100
139
  */
101
- export const useSearch = (href: string): CaseSearchModel | null =>
140
+ export const useSearch = (
141
+ href: string,
142
+ options?: HookOptions,
143
+ ): CaseSearchModel | null =>
102
144
  useModularUIBasic("search", href, {
103
145
  expectedModels: ["CaseSearch"],
104
146
  targetModel: CaseSearchModel,
147
+ ...options,
105
148
  });
106
149
 
107
150
  /**
108
151
  */
109
- export const useUserProfile = (href: string): UserProfileModel | null =>
152
+ export const useUserProfile = (
153
+ href: string,
154
+ options?: HookOptions,
155
+ ): UserProfileModel | null =>
110
156
  useModularUIBasic("userprofile", href, {
111
157
  expectedModels: ["UserProfile"],
112
158
  targetModel: UserProfileModel,
159
+ ...options,
113
160
  });
@@ -6,7 +6,12 @@ import ActionModel from "./ActionModel";
6
6
  * Collection of actions
7
7
  */
8
8
  export default class ActionCollection extends BaseCollection<ActionModel> {
9
- constructor(actions?: Object, actionsContributions?: Object) {
9
+ constructor(
10
+ actions?: Object,
11
+ actionsContributions?: Object,
12
+ origin?: string,
13
+ contextPath?: string,
14
+ ) {
10
15
  super();
11
16
 
12
17
  // no actions gives an empty collection
@@ -22,7 +27,14 @@ export default class ActionCollection extends BaseCollection<ActionModel> {
22
27
  );
23
28
 
24
29
  if (actionContribution) {
25
- actionModels.push(new ActionModel(actionData, actionContribution));
30
+ actionModels.push(
31
+ new ActionModel(
32
+ actionData,
33
+ actionContribution,
34
+ origin,
35
+ contextPath,
36
+ ),
37
+ );
26
38
  }
27
39
  }
28
40