@beinformed/ui 1.55.2 → 1.57.0-contextpath.0

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 (224) hide show
  1. package/CHANGELOG.md +26 -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/useModularUIBasic.js +11 -1
  7. package/esm/hooks/useModularUIBasic.js.map +1 -1
  8. package/esm/hooks/useModularUIModel.js +36 -25
  9. package/esm/hooks/useModularUIModel.js.map +1 -1
  10. package/esm/models/actions/ActionCollection.js +2 -2
  11. package/esm/models/actions/ActionCollection.js.map +1 -1
  12. package/esm/models/actions/ActionModel.js +27 -8
  13. package/esm/models/actions/ActionModel.js.map +1 -1
  14. package/esm/models/application/ApplicationModel.js +1 -1
  15. package/esm/models/application/ApplicationModel.js.map +1 -1
  16. package/esm/models/base/ResourceModel.js +25 -3
  17. package/esm/models/base/ResourceModel.js.map +1 -1
  18. package/esm/models/caseview/CaseViewModel.js +2 -2
  19. package/esm/models/caseview/CaseViewModel.js.map +1 -1
  20. package/esm/models/concepts/ConceptLinkModel.js +1 -0
  21. package/esm/models/concepts/ConceptLinkModel.js.map +1 -1
  22. package/esm/models/concepts/SourceReferenceModel.js +2 -1
  23. package/esm/models/concepts/SourceReferenceModel.js.map +1 -1
  24. package/esm/models/content/ContentIndexModel.js +2 -2
  25. package/esm/models/content/ContentIndexModel.js.map +1 -1
  26. package/esm/models/content/ContentLinkModel.js +2 -0
  27. package/esm/models/content/ContentLinkModel.js.map +1 -1
  28. package/esm/models/content/SectionModel.js +1 -0
  29. package/esm/models/content/SectionModel.js.map +1 -1
  30. package/esm/models/detail/DetailModel.js +1 -1
  31. package/esm/models/detail/DetailModel.js.map +1 -1
  32. package/esm/models/error/ErrorResponse.js +2 -0
  33. package/esm/models/error/ErrorResponse.js.map +1 -1
  34. package/esm/models/form/FormModel.js +1 -1
  35. package/esm/models/form/FormModel.js.map +1 -1
  36. package/esm/models/href/Href.js +50 -3
  37. package/esm/models/href/Href.js.map +1 -1
  38. package/esm/models/href/ListHref.js +1 -1
  39. package/esm/models/href/ListHref.js.map +1 -1
  40. package/esm/models/links/LinkCollection.js +3 -1
  41. package/esm/models/links/LinkCollection.js.map +1 -1
  42. package/esm/models/links/LinkModel.js +10 -9
  43. package/esm/models/links/LinkModel.js.map +1 -1
  44. package/esm/models/list/ListItemModel.js +3 -1
  45. package/esm/models/list/ListItemModel.js.map +1 -1
  46. package/esm/models/list/ListModel.js +1 -1
  47. package/esm/models/list/ListModel.js.map +1 -1
  48. package/esm/models/panels/GroupingPanelModel.js +1 -1
  49. package/esm/models/panels/GroupingPanelModel.js.map +1 -1
  50. package/esm/models/tab/TabModel.js +2 -2
  51. package/esm/models/tab/TabModel.js.map +1 -1
  52. package/esm/models/taskgroup/TaskGroupModel.js +4 -2
  53. package/esm/models/taskgroup/TaskGroupModel.js.map +1 -1
  54. package/esm/modularui/Authenticate.js +2 -1
  55. package/esm/modularui/Authenticate.js.map +1 -1
  56. package/esm/modularui/ModularUIRequest.js +43 -7
  57. package/esm/modularui/ModularUIRequest.js.map +1 -1
  58. package/esm/modularui/ModularUIResponse.js +31 -0
  59. package/esm/modularui/ModularUIResponse.js.map +1 -1
  60. package/esm/redux/_modularui/ModularUIActions.js +3 -1
  61. package/esm/redux/_modularui/ModularUIActions.js.map +1 -1
  62. package/esm/redux/_modularui/ModularUIMiddleware.js +6 -0
  63. package/esm/redux/_modularui/ModularUIMiddleware.js.map +1 -1
  64. package/esm/redux/_modularui/ModularUISelectors.js +11 -0
  65. package/esm/redux/_modularui/ModularUISelectors.js.map +1 -1
  66. package/esm/redux/_modularui/types.js.map +1 -1
  67. package/esm/redux/actions/Application.js +2 -0
  68. package/esm/redux/actions/Application.js.map +1 -1
  69. package/esm/redux/connectors/PanelRenderer.js +2 -0
  70. package/esm/redux/connectors/PanelRenderer.js.map +1 -1
  71. package/esm/utils/fetch/types.js.map +1 -1
  72. package/esm/utils/helpers/checkResource.js +2 -0
  73. package/esm/utils/helpers/checkResource.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/useModularUIBasic.js +11 -1
  81. package/lib/hooks/useModularUIBasic.js.flow +14 -0
  82. package/lib/hooks/useModularUIBasic.js.map +1 -1
  83. package/lib/hooks/useModularUIModel.js +36 -24
  84. package/lib/hooks/useModularUIModel.js.flow +58 -11
  85. package/lib/hooks/useModularUIModel.js.map +1 -1
  86. package/lib/models/actions/ActionCollection.js +2 -2
  87. package/lib/models/actions/ActionCollection.js.flow +14 -2
  88. package/lib/models/actions/ActionCollection.js.map +1 -1
  89. package/lib/models/actions/ActionModel.js +31 -12
  90. package/lib/models/actions/ActionModel.js.flow +38 -16
  91. package/lib/models/actions/ActionModel.js.map +1 -1
  92. package/lib/models/application/ApplicationModel.js +1 -1
  93. package/lib/models/application/ApplicationModel.js.flow +7 -1
  94. package/lib/models/application/ApplicationModel.js.map +1 -1
  95. package/lib/models/base/ResourceModel.js +24 -3
  96. package/lib/models/base/ResourceModel.js.flow +35 -10
  97. package/lib/models/base/ResourceModel.js.map +1 -1
  98. package/lib/models/caseview/CaseViewModel.js +2 -2
  99. package/lib/models/caseview/CaseViewModel.js.flow +3 -1
  100. package/lib/models/caseview/CaseViewModel.js.map +1 -1
  101. package/lib/models/concepts/ConceptLinkModel.js +1 -0
  102. package/lib/models/concepts/ConceptLinkModel.js.flow +1 -0
  103. package/lib/models/concepts/ConceptLinkModel.js.map +1 -1
  104. package/lib/models/concepts/SourceReferenceModel.js +2 -1
  105. package/lib/models/concepts/SourceReferenceModel.js.flow +2 -1
  106. package/lib/models/concepts/SourceReferenceModel.js.map +1 -1
  107. package/lib/models/content/ContentIndexModel.js +2 -2
  108. package/lib/models/content/ContentIndexModel.js.flow +2 -2
  109. package/lib/models/content/ContentIndexModel.js.map +1 -1
  110. package/lib/models/content/ContentLinkModel.js +2 -0
  111. package/lib/models/content/ContentLinkModel.js.flow +2 -0
  112. package/lib/models/content/ContentLinkModel.js.map +1 -1
  113. package/lib/models/content/SectionModel.js +1 -0
  114. package/lib/models/content/SectionModel.js.flow +1 -0
  115. package/lib/models/content/SectionModel.js.map +1 -1
  116. package/lib/models/detail/DetailModel.js +1 -1
  117. package/lib/models/detail/DetailModel.js.flow +2 -0
  118. package/lib/models/detail/DetailModel.js.map +1 -1
  119. package/lib/models/error/ErrorResponse.js +2 -0
  120. package/lib/models/error/ErrorResponse.js.flow +2 -0
  121. package/lib/models/error/ErrorResponse.js.map +1 -1
  122. package/lib/models/form/FormModel.js +1 -1
  123. package/lib/models/form/FormModel.js.flow +1 -1
  124. package/lib/models/form/FormModel.js.map +1 -1
  125. package/lib/models/href/Href.js +50 -3
  126. package/lib/models/href/Href.js.flow +58 -3
  127. package/lib/models/href/Href.js.map +1 -1
  128. package/lib/models/href/ListHref.js +1 -1
  129. package/lib/models/href/ListHref.js.flow +1 -1
  130. package/lib/models/href/ListHref.js.map +1 -1
  131. package/lib/models/links/LinkCollection.js +3 -1
  132. package/lib/models/links/LinkCollection.js.flow +8 -2
  133. package/lib/models/links/LinkCollection.js.map +1 -1
  134. package/lib/models/links/LinkModel.js +10 -9
  135. package/lib/models/links/LinkModel.js.flow +24 -16
  136. package/lib/models/links/LinkModel.js.map +1 -1
  137. package/lib/models/list/ListItemModel.js +3 -1
  138. package/lib/models/list/ListItemModel.js.flow +4 -0
  139. package/lib/models/list/ListItemModel.js.map +1 -1
  140. package/lib/models/list/ListModel.js +1 -1
  141. package/lib/models/list/ListModel.js.flow +6 -1
  142. package/lib/models/list/ListModel.js.map +1 -1
  143. package/lib/models/panels/GroupingPanelModel.js +1 -1
  144. package/lib/models/panels/GroupingPanelModel.js.flow +2 -0
  145. package/lib/models/panels/GroupingPanelModel.js.map +1 -1
  146. package/lib/models/tab/TabModel.js +2 -2
  147. package/lib/models/tab/TabModel.js.flow +4 -0
  148. package/lib/models/tab/TabModel.js.map +1 -1
  149. package/lib/models/taskgroup/TaskGroupModel.js +4 -2
  150. package/lib/models/taskgroup/TaskGroupModel.js.flow +6 -0
  151. package/lib/models/taskgroup/TaskGroupModel.js.map +1 -1
  152. package/lib/modularui/Authenticate.js +2 -1
  153. package/lib/modularui/Authenticate.js.flow +2 -1
  154. package/lib/modularui/Authenticate.js.map +1 -1
  155. package/lib/modularui/ModularUIRequest.js +43 -7
  156. package/lib/modularui/ModularUIRequest.js.flow +49 -8
  157. package/lib/modularui/ModularUIRequest.js.map +1 -1
  158. package/lib/modularui/ModularUIResponse.js +31 -0
  159. package/lib/modularui/ModularUIResponse.js.flow +35 -0
  160. package/lib/modularui/ModularUIResponse.js.map +1 -1
  161. package/lib/modularui/__tests__/CustomContextPath.spec.js.flow +61 -0
  162. package/lib/redux/_modularui/ModularUIActions.js +3 -1
  163. package/lib/redux/_modularui/ModularUIActions.js.flow +6 -1
  164. package/lib/redux/_modularui/ModularUIActions.js.map +1 -1
  165. package/lib/redux/_modularui/ModularUIMiddleware.js +6 -0
  166. package/lib/redux/_modularui/ModularUIMiddleware.js.flow +10 -0
  167. package/lib/redux/_modularui/ModularUIMiddleware.js.map +1 -1
  168. package/lib/redux/_modularui/ModularUISelectors.js +13 -1
  169. package/lib/redux/_modularui/ModularUISelectors.js.flow +13 -0
  170. package/lib/redux/_modularui/ModularUISelectors.js.map +1 -1
  171. package/lib/redux/_modularui/types.js.flow +2 -0
  172. package/lib/redux/_modularui/types.js.map +1 -1
  173. package/lib/redux/actions/Application.js +2 -0
  174. package/lib/redux/actions/Application.js.flow +1 -0
  175. package/lib/redux/actions/Application.js.map +1 -1
  176. package/lib/redux/connectors/PanelRenderer.js +2 -0
  177. package/lib/redux/connectors/PanelRenderer.js.flow +1 -0
  178. package/lib/redux/connectors/PanelRenderer.js.map +1 -1
  179. package/lib/utils/fetch/types.js.flow +2 -0
  180. package/lib/utils/fetch/types.js.map +1 -1
  181. package/lib/utils/helpers/checkResource.js +2 -0
  182. package/lib/utils/helpers/checkResource.js.flow +2 -0
  183. package/lib/utils/helpers/checkResource.js.map +1 -1
  184. package/package.json +1 -1
  185. package/src/constants/Settings.js +2 -2
  186. package/src/hooks/useForm.js +2 -0
  187. package/src/hooks/useModularUIBasic.js +14 -0
  188. package/src/hooks/useModularUIModel.js +58 -11
  189. package/src/models/actions/ActionCollection.js +14 -2
  190. package/src/models/actions/ActionModel.js +38 -16
  191. package/src/models/application/ApplicationModel.js +7 -1
  192. package/src/models/base/ResourceModel.js +35 -10
  193. package/src/models/caseview/CaseViewModel.js +3 -1
  194. package/src/models/concepts/ConceptLinkModel.js +1 -0
  195. package/src/models/concepts/SourceReferenceModel.js +2 -1
  196. package/src/models/content/ContentIndexModel.js +2 -2
  197. package/src/models/content/ContentLinkModel.js +2 -0
  198. package/src/models/content/SectionModel.js +1 -0
  199. package/src/models/detail/DetailModel.js +2 -0
  200. package/src/models/error/ErrorResponse.js +2 -0
  201. package/src/models/form/FormModel.js +1 -1
  202. package/src/models/href/Href.js +58 -3
  203. package/src/models/href/ListHref.js +1 -1
  204. package/src/models/links/LinkCollection.js +8 -2
  205. package/src/models/links/LinkModel.js +24 -16
  206. package/src/models/list/ListItemModel.js +4 -0
  207. package/src/models/list/ListModel.js +6 -1
  208. package/src/models/panels/GroupingPanelModel.js +2 -0
  209. package/src/models/tab/TabModel.js +4 -0
  210. package/src/models/taskgroup/TaskGroupModel.js +6 -0
  211. package/src/modularui/Authenticate.js +2 -1
  212. package/src/modularui/ModularUIRequest.js +49 -8
  213. package/src/modularui/ModularUIResponse.js +35 -0
  214. package/src/modularui/__tests__/CustomContextPath.spec.js +61 -0
  215. package/src/modularui/__tests__/contributions.json +312 -0
  216. package/src/modularui/__tests__/data.json +263 -0
  217. package/src/redux/_modularui/ModularUIActions.js +6 -1
  218. package/src/redux/_modularui/ModularUIMiddleware.js +10 -0
  219. package/src/redux/_modularui/ModularUISelectors.js +13 -0
  220. package/src/redux/_modularui/types.js +2 -0
  221. package/src/redux/actions/Application.js +1 -0
  222. package/src/redux/connectors/PanelRenderer.js +1 -0
  223. package/src/utils/fetch/types.js +2 -0
  224. package/src/utils/helpers/checkResource.js +2 -0
package/CHANGELOG.md CHANGED
@@ -2,6 +2,32 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines.
4
4
 
5
+ ## [1.57.0-contextpath.0](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/compare/v1.56.0...v1.57.0-contextpath.0) (2024-10-09)
6
+
7
+
8
+ ### Features
9
+
10
+ * **context-path:** keep track of the context path in a resource model ([a801f0d](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/commit/a801f0dab9ce2964227896d223965d5068252d9e))
11
+ * **context-path:** make it possible to set contextPath as option to the request ([64fe458](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/commit/64fe458979625887d422797522911314bbc241af))
12
+ * **context-path:** resolves the path based on whether the context path and base path differ ([0854493](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/commit/0854493036ed776593992686568d3263466b881a))
13
+ * **context:** add origin and context path to actions and modularuiresponse ([040525a](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/commit/040525ae6a1a632feebb812c0849a26bc079cf9a))
14
+ * **context:** add origin and context path to href and links ([e3bdc58](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/commit/e3bdc58e8bf3e6842d0520b0814abec7abcf3c68))
15
+ * **href:** make origin settable for requests and fix href ([25d4e68](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/commit/25d4e68621f456d2b30eb4e98c2185f6960768be))
16
+ * **useforme:** added origin and context path ([34cfdb3](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/commit/34cfdb3de9286c791280fdc361112efb32cd8ce2))
17
+
18
+
19
+ ### Bug Fixes
20
+
21
+ * **authentication:** set correct pac4j client for basic authentication ([5e1d403](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/commit/5e1d403466e08e78926896e004ae61324e7aa691))
22
+ * **href:** context path ([a37f375](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/commit/a37f3757c8ed95d116bf73449ca9088c7ff12e04))
23
+
24
+ ## [1.56.0](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/compare/v1.55.2...v1.56.0) (2024-10-09)
25
+
26
+
27
+ ### Features
28
+
29
+ * **selector:** add selector to retrieve all modularui models ([78da09b](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/commit/78da09b01be60e089be2094b9d025b64958f9463))
30
+
5
31
  ## [1.55.2](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/compare/v1.55.1...v1.55.2) (2024-10-04)
6
32
 
7
33
 
@@ -131,7 +131,10 @@ export const loginType = () => getSetting(LOGIN_TYPE, INTERNAL_LOGIN_TYPE.JAAS);
131
131
 
132
132
  /**
133
133
  */
134
- export const loginPath = () => getSetting(LOGIN_PATH_SETTING, "/callback?client_name=FormClient");
134
+ export const loginPath = function () {
135
+ let clientName = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "FormClient";
136
+ return getSetting(LOGIN_PATH_SETTING, `/callback?client_name=${clientName}`);
137
+ };
135
138
  /**
136
139
  */
137
140
  export const loginUsernameField = () => getSetting(LOGIN_USERNAME_SETTING, "j_username");
@@ -1 +1 @@
1
- {"version":3,"file":"Settings.js","names":["isPlainObject","has","getRepositoryResourceUrl","ALL_CONTENT_IN_DATA_SETTING","INTERNAL_LOGIN_TYPE","LOGIN_TYPE","LOGIN_PATH_SETTING","LOGIN_USERNAME_SETTING","LOGIN_PASSWORD_SETTING","LOGOUT_PATH_SETTING","UPLOAD_PATH","CAPTCHA_PATH","serverBase","__CONTEXT_PATH__","defaultSettings","CONTEXT_PATH","window","contextPath","CACHE_CONTRIBUTIONS","DEBUG_I18N_MESSAGE_NOT_FOUND","HIDE_NOTIFICATION_TIMEOUT","ALWAYS_COMMIT_FORM","RENDER_QUESTION_LABELS","RENDER_MANDATORY_ATTRIBUTE_INDICATION","RENDER_OPTIONAL_ATTRIBUTE_INDICATION","AVAILABLE_LIST_VIEWS","USE_CLIENTSIDE_VALIDATION","USE_INSTANT_SERVER_VALIDATION","ENABLED_LOCALES","RENDER_GLOBAL_LOGIN_PAGE","RENDER_GLOBAL_LOGOUT_PAGE","RENDER_MULTI_LOGIN_ON_GLOBAL_LOGOUT_PAGE","LOGIN_PATH","ADMINISTRATOR_LOGIN_PATH","LOGOUT_PATH","RENDER_FORMS_IN_MODAL","SHOW_SUBMIT_WAIT_TIMEOUT","SWIM_LANE_DIAGRAM_CONFIGURATION","BUSINESS_SCENARIO_CONCEPT_TYPE","BUSINESS_SCENARIO_STEP_CONCEPT_TYPE","BUSINESS_SCENARIO_PERSONA_CONCEPT_TYPE","BUSINESS_SCENARIO_SYSTEM_CONCEPT_TYPE","CALENDAR_WEEK_STARTS_ON","CALENDAR_FIRST_WEEK_CONTAINS_DATE","UI_PARAMETERS","ALLOW_HIDE_WHEN_EMPTY_ON_TABS","PAGE_RELOAD_ON_UNAUTHORIZED_ERROR","XHR_TIMEOUT_MS","HIDE_WHEN_EMPTY_IGNORE_TASKS","SHOW_AVATARS","settings","setSettings","config","_Object$assign","getSetting","key","defaultValue","undefined","Error","setSetting","value","allSettings","cacheContributions","getBasePath","getUploadPath","getCaptchaPath","hasAllContentInData","loginType","JAAS","loginPath","loginUsernameField","loginPasswordField","logoutPath","getSwimLaneDiagramConfiguration","configLocation","_startsWithInstanceProperty","call","setContextPath","BASE"],"sources":["../../src/constants/Settings.js"],"sourcesContent":["// @flow\nimport { isPlainObject, has } from \"../utils/helpers/objects\";\nimport { getRepositoryResourceUrl } from \"../utils/helpers/repositoryResource\";\nimport {\n ALL_CONTENT_IN_DATA_SETTING,\n INTERNAL_LOGIN_TYPE,\n LOGIN_TYPE,\n LOGIN_PATH_SETTING,\n LOGIN_USERNAME_SETTING,\n LOGIN_PASSWORD_SETTING,\n LOGOUT_PATH_SETTING,\n UPLOAD_PATH,\n CAPTCHA_PATH,\n} from \"./Constants\";\n\ntype Setting = boolean | string | number | Array<string>;\n\nconst serverBase =\n typeof __CONTEXT_PATH__ === \"undefined\" ? null : __CONTEXT_PATH__;\n\nconst defaultSettings: { [name: string]: Setting } = {\n // This uses contextPath set from property from server\n CONTEXT_PATH:\n serverBase ??\n (typeof window !== \"undefined\" && window.contextPath\n ? window.contextPath\n : \"/BeInformed\"),\n\n // Indicates if contributions should be cached\n CACHE_CONTRIBUTIONS: true,\n\n // Debug missing i18n messages in layout\n DEBUG_I18N_MESSAGE_NOT_FOUND: true,\n\n // Time to show the notification bar\n HIDE_NOTIFICATION_TIMEOUT: 5000,\n\n // Always commit form, does not show result pages for instruments\n ALWAYS_COMMIT_FORM: false,\n\n // Render instrument and event question labels on forms (might result in duplicate labels)\n RENDER_QUESTION_LABELS: true,\n\n // Render mandatory indications on attributes\n RENDER_MANDATORY_ATTRIBUTE_INDICATION: true,\n\n // Render optional indications on attributes\n RENDER_OPTIONAL_ATTRIBUTE_INDICATION: false,\n\n // Renders a toggle with supported list views, options are ListView and TableView\n AVAILABLE_LIST_VIEWS: [\"ListView\", \"TableView\"],\n\n // Toggle client side validation\n USE_CLIENTSIDE_VALIDATION: true,\n\n // Indicates if server validation should be used when a form field is changed\n USE_INSTANT_SERVER_VALIDATION: true,\n\n // Indicates which locales are enabled\n ENABLED_LOCALES: [\"en\", \"nl\"],\n\n // Renders the global log in page\n RENDER_GLOBAL_LOGIN_PAGE: false,\n\n // Renders the global log out page\n RENDER_GLOBAL_LOGOUT_PAGE: false,\n\n // Renders the login variants as option on the global logout page\n RENDER_MULTI_LOGIN_ON_GLOBAL_LOGOUT_PAGE: false,\n\n // Path to login page / component\n LOGIN_PATH: \"/signin\",\n\n // Path to administrator login page / component\n ADMINISTRATOR_LOGIN_PATH: \"\",\n\n // Path to logout page / component\n LOGOUT_PATH: \"/signout\",\n\n // Render forms in a modal\n RENDER_FORMS_IN_MODAL: true,\n\n // Wait timeout before rendering submit wait icon\n SHOW_SUBMIT_WAIT_TIMEOUT: 300,\n\n // Swim lane diagram configuration file\n SWIM_LANE_DIAGRAM_CONFIGURATION: \"/Library/Diagrams/Overviews.json\",\n\n // Business scenario concept types\n BUSINESS_SCENARIO_CONCEPT_TYPE: [\n \"/Library/KMTs/Business scenarios.bixml/BusinessScenario\",\n ],\n BUSINESS_SCENARIO_STEP_CONCEPT_TYPE: [\n \"/Library/KMTs/Business scenarios.bixml/ScenarioStep\",\n ],\n BUSINESS_SCENARIO_PERSONA_CONCEPT_TYPE: [\n \"/Library/KMTs/Business scenarios.bixml/Persona\",\n ],\n BUSINESS_SCENARIO_SYSTEM_CONCEPT_TYPE: [\n \"/Library/KMTs/Business scenarios.bixml/System\",\n ],\n\n // indicates on what day the week starts (0 = Sunday)\n CALENDAR_WEEK_STARTS_ON: 1,\n\n // indicates which date indicates the first week of the year\n CALENDAR_FIRST_WEEK_CONTAINS_DATE: 1,\n\n // parameters that are added for the ui state, but should not be send to the modular ui\n UI_PARAMETERS: [],\n\n // disable hide-when-empty hint for layouts running on Be Informed versions older than 21.1\n ALLOW_HIDE_WHEN_EMPTY_ON_TABS: true,\n\n // reload the complete page on signout, usefull when third party authentication is in place\n PAGE_RELOAD_ON_UNAUTHORIZED_ERROR: false,\n\n XHR_TIMEOUT_MS: 300000,\n\n HIDE_WHEN_EMPTY_IGNORE_TASKS: false,\n\n SHOW_AVATARS: true,\n};\n\nlet settings = defaultSettings;\n\n/**\n */\nexport const setSettings = (config: Object) => {\n if (isPlainObject(config)) {\n settings = Object.assign(defaultSettings, config);\n }\n};\n\n/**\n */\nexport const getSetting = (key: string, defaultValue?: any): any => {\n if (!has(settings, key) && defaultValue === undefined) {\n throw new Error(\n `Setting with name ${key} not found and no defaultValue given`,\n );\n }\n\n return settings[key] ?? defaultValue;\n};\n\n/**\n */\nexport const setSetting = (key: string, value: any) => {\n settings[key] = value;\n};\n\n/**\n */\nexport const allSettings = (): { [name: string]: Setting } => settings;\n\n/**\n * Indicates if contributions must be cached\n */\nexport const cacheContributions = (): boolean =>\n getSetting(\"CACHE_CONTRIBUTIONS\", true);\n\n/**\n * Base path\n * This uses contextPath set from property from server\n * When requesting a remote server with CORS enabled, add the origin, for example:\n * export const BEINFORMED_PATH = 'http://192.168.128.61:8080/BeInformed';\n */\nexport const getBasePath = (): string =>\n getSetting(\"CONTEXT_PATH\", \"/BeInformed\");\n\n/**\n * Path to upload service\n */\nexport const getUploadPath = (): string => `${getBasePath()}${UPLOAD_PATH}`;\n\n/**\n * Path to captcha service\n */\nexport const getCaptchaPath = (): string => `${getBasePath()}${CAPTCHA_PATH}`;\n\n/**\n */\nexport const hasAllContentInData = (): boolean =>\n getSetting(ALL_CONTENT_IN_DATA_SETTING, true);\n\n/**\n * Login type, only available when pac4j is configured\n *\n * Preview does not support pac4j, thus is probably not configured when started, which results in login type JAAS\n */\nexport const loginType = (): string =>\n getSetting(LOGIN_TYPE, INTERNAL_LOGIN_TYPE.JAAS);\n\n/**\n */\nexport const loginPath = (): string =>\n getSetting(LOGIN_PATH_SETTING, \"/callback?client_name=FormClient\");\n/**\n */\nexport const loginUsernameField = (): string =>\n getSetting(LOGIN_USERNAME_SETTING, \"j_username\");\n/**\n */\nexport const loginPasswordField = (): string =>\n getSetting(LOGIN_PASSWORD_SETTING, \"j_password\");\n/**\n */\nexport const logoutPath = (): string =>\n getSetting(LOGOUT_PATH_SETTING, \"/logout\");\n\nexport const LOGIN_PATH: string = loginPath();\nexport const LOGOUT_PATH: string = logoutPath();\n\n/**\n * Model overview swim lane configuration\n */\nexport const getSwimLaneDiagramConfiguration: Object = () => {\n let configLocation = getSetting(\n \"SWIM_LANE_DIAGRAM_CONFIGURATION\",\n \"/Library/Diagrams/Overviews.json\",\n );\n if (!configLocation.startsWith(\"/\")) {\n configLocation = `/${configLocation}`;\n }\n return getRepositoryResourceUrl(configLocation);\n};\n\n/**\n * Set the context path for requests to be informed\n */\nexport const setContextPath = (contextPath: string) => {\n setSetting(\"CONTEXT_PATH\", contextPath);\n};\n\n/**\n * Backwards compatible export of BASE constant\n */\nexport const BASE: string = getBasePath();\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Settings.js","names":["isPlainObject","has","getRepositoryResourceUrl","ALL_CONTENT_IN_DATA_SETTING","INTERNAL_LOGIN_TYPE","LOGIN_TYPE","LOGIN_PATH_SETTING","LOGIN_USERNAME_SETTING","LOGIN_PASSWORD_SETTING","LOGOUT_PATH_SETTING","UPLOAD_PATH","CAPTCHA_PATH","serverBase","__CONTEXT_PATH__","defaultSettings","CONTEXT_PATH","window","contextPath","CACHE_CONTRIBUTIONS","DEBUG_I18N_MESSAGE_NOT_FOUND","HIDE_NOTIFICATION_TIMEOUT","ALWAYS_COMMIT_FORM","RENDER_QUESTION_LABELS","RENDER_MANDATORY_ATTRIBUTE_INDICATION","RENDER_OPTIONAL_ATTRIBUTE_INDICATION","AVAILABLE_LIST_VIEWS","USE_CLIENTSIDE_VALIDATION","USE_INSTANT_SERVER_VALIDATION","ENABLED_LOCALES","RENDER_GLOBAL_LOGIN_PAGE","RENDER_GLOBAL_LOGOUT_PAGE","RENDER_MULTI_LOGIN_ON_GLOBAL_LOGOUT_PAGE","LOGIN_PATH","ADMINISTRATOR_LOGIN_PATH","LOGOUT_PATH","RENDER_FORMS_IN_MODAL","SHOW_SUBMIT_WAIT_TIMEOUT","SWIM_LANE_DIAGRAM_CONFIGURATION","BUSINESS_SCENARIO_CONCEPT_TYPE","BUSINESS_SCENARIO_STEP_CONCEPT_TYPE","BUSINESS_SCENARIO_PERSONA_CONCEPT_TYPE","BUSINESS_SCENARIO_SYSTEM_CONCEPT_TYPE","CALENDAR_WEEK_STARTS_ON","CALENDAR_FIRST_WEEK_CONTAINS_DATE","UI_PARAMETERS","ALLOW_HIDE_WHEN_EMPTY_ON_TABS","PAGE_RELOAD_ON_UNAUTHORIZED_ERROR","XHR_TIMEOUT_MS","HIDE_WHEN_EMPTY_IGNORE_TASKS","SHOW_AVATARS","settings","setSettings","config","_Object$assign","getSetting","key","defaultValue","undefined","Error","setSetting","value","allSettings","cacheContributions","getBasePath","getUploadPath","getCaptchaPath","hasAllContentInData","loginType","JAAS","loginPath","clientName","arguments","length","loginUsernameField","loginPasswordField","logoutPath","getSwimLaneDiagramConfiguration","configLocation","_startsWithInstanceProperty","call","setContextPath","BASE"],"sources":["../../src/constants/Settings.js"],"sourcesContent":["// @flow\nimport { isPlainObject, has } from \"../utils/helpers/objects\";\nimport { getRepositoryResourceUrl } from \"../utils/helpers/repositoryResource\";\nimport {\n ALL_CONTENT_IN_DATA_SETTING,\n INTERNAL_LOGIN_TYPE,\n LOGIN_TYPE,\n LOGIN_PATH_SETTING,\n LOGIN_USERNAME_SETTING,\n LOGIN_PASSWORD_SETTING,\n LOGOUT_PATH_SETTING,\n UPLOAD_PATH,\n CAPTCHA_PATH,\n} from \"./Constants\";\n\ntype Setting = boolean | string | number | Array<string>;\n\nconst serverBase =\n typeof __CONTEXT_PATH__ === \"undefined\" ? null : __CONTEXT_PATH__;\n\nconst defaultSettings: { [name: string]: Setting } = {\n // This uses contextPath set from property from server\n CONTEXT_PATH:\n serverBase ??\n (typeof window !== \"undefined\" && window.contextPath\n ? window.contextPath\n : \"/BeInformed\"),\n\n // Indicates if contributions should be cached\n CACHE_CONTRIBUTIONS: true,\n\n // Debug missing i18n messages in layout\n DEBUG_I18N_MESSAGE_NOT_FOUND: true,\n\n // Time to show the notification bar\n HIDE_NOTIFICATION_TIMEOUT: 5000,\n\n // Always commit form, does not show result pages for instruments\n ALWAYS_COMMIT_FORM: false,\n\n // Render instrument and event question labels on forms (might result in duplicate labels)\n RENDER_QUESTION_LABELS: true,\n\n // Render mandatory indications on attributes\n RENDER_MANDATORY_ATTRIBUTE_INDICATION: true,\n\n // Render optional indications on attributes\n RENDER_OPTIONAL_ATTRIBUTE_INDICATION: false,\n\n // Renders a toggle with supported list views, options are ListView and TableView\n AVAILABLE_LIST_VIEWS: [\"ListView\", \"TableView\"],\n\n // Toggle client side validation\n USE_CLIENTSIDE_VALIDATION: true,\n\n // Indicates if server validation should be used when a form field is changed\n USE_INSTANT_SERVER_VALIDATION: true,\n\n // Indicates which locales are enabled\n ENABLED_LOCALES: [\"en\", \"nl\"],\n\n // Renders the global log in page\n RENDER_GLOBAL_LOGIN_PAGE: false,\n\n // Renders the global log out page\n RENDER_GLOBAL_LOGOUT_PAGE: false,\n\n // Renders the login variants as option on the global logout page\n RENDER_MULTI_LOGIN_ON_GLOBAL_LOGOUT_PAGE: false,\n\n // Path to login page / component\n LOGIN_PATH: \"/signin\",\n\n // Path to administrator login page / component\n ADMINISTRATOR_LOGIN_PATH: \"\",\n\n // Path to logout page / component\n LOGOUT_PATH: \"/signout\",\n\n // Render forms in a modal\n RENDER_FORMS_IN_MODAL: true,\n\n // Wait timeout before rendering submit wait icon\n SHOW_SUBMIT_WAIT_TIMEOUT: 300,\n\n // Swim lane diagram configuration file\n SWIM_LANE_DIAGRAM_CONFIGURATION: \"/Library/Diagrams/Overviews.json\",\n\n // Business scenario concept types\n BUSINESS_SCENARIO_CONCEPT_TYPE: [\n \"/Library/KMTs/Business scenarios.bixml/BusinessScenario\",\n ],\n BUSINESS_SCENARIO_STEP_CONCEPT_TYPE: [\n \"/Library/KMTs/Business scenarios.bixml/ScenarioStep\",\n ],\n BUSINESS_SCENARIO_PERSONA_CONCEPT_TYPE: [\n \"/Library/KMTs/Business scenarios.bixml/Persona\",\n ],\n BUSINESS_SCENARIO_SYSTEM_CONCEPT_TYPE: [\n \"/Library/KMTs/Business scenarios.bixml/System\",\n ],\n\n // indicates on what day the week starts (0 = Sunday)\n CALENDAR_WEEK_STARTS_ON: 1,\n\n // indicates which date indicates the first week of the year\n CALENDAR_FIRST_WEEK_CONTAINS_DATE: 1,\n\n // parameters that are added for the ui state, but should not be send to the modular ui\n UI_PARAMETERS: [],\n\n // disable hide-when-empty hint for layouts running on Be Informed versions older than 21.1\n ALLOW_HIDE_WHEN_EMPTY_ON_TABS: true,\n\n // reload the complete page on signout, usefull when third party authentication is in place\n PAGE_RELOAD_ON_UNAUTHORIZED_ERROR: false,\n\n XHR_TIMEOUT_MS: 300000,\n\n HIDE_WHEN_EMPTY_IGNORE_TASKS: false,\n\n SHOW_AVATARS: true,\n};\n\nlet settings = defaultSettings;\n\n/**\n */\nexport const setSettings = (config: Object) => {\n if (isPlainObject(config)) {\n settings = Object.assign(defaultSettings, config);\n }\n};\n\n/**\n */\nexport const getSetting = (key: string, defaultValue?: any): any => {\n if (!has(settings, key) && defaultValue === undefined) {\n throw new Error(\n `Setting with name ${key} not found and no defaultValue given`,\n );\n }\n\n return settings[key] ?? defaultValue;\n};\n\n/**\n */\nexport const setSetting = (key: string, value: any) => {\n settings[key] = value;\n};\n\n/**\n */\nexport const allSettings = (): { [name: string]: Setting } => settings;\n\n/**\n * Indicates if contributions must be cached\n */\nexport const cacheContributions = (): boolean =>\n getSetting(\"CACHE_CONTRIBUTIONS\", true);\n\n/**\n * Base path\n * This uses contextPath set from property from server\n * When requesting a remote server with CORS enabled, add the origin, for example:\n * export const BEINFORMED_PATH = 'http://192.168.128.61:8080/BeInformed';\n */\nexport const getBasePath = (): string =>\n getSetting(\"CONTEXT_PATH\", \"/BeInformed\");\n\n/**\n * Path to upload service\n */\nexport const getUploadPath = (): string => `${getBasePath()}${UPLOAD_PATH}`;\n\n/**\n * Path to captcha service\n */\nexport const getCaptchaPath = (): string => `${getBasePath()}${CAPTCHA_PATH}`;\n\n/**\n */\nexport const hasAllContentInData = (): boolean =>\n getSetting(ALL_CONTENT_IN_DATA_SETTING, true);\n\n/**\n * Login type, only available when pac4j is configured\n *\n * Preview does not support pac4j, thus is probably not configured when started, which results in login type JAAS\n */\nexport const loginType = (): string =>\n getSetting(LOGIN_TYPE, INTERNAL_LOGIN_TYPE.JAAS);\n\n/**\n */\nexport const loginPath = (clientName: string = \"FormClient\"): string =>\n getSetting(LOGIN_PATH_SETTING, `/callback?client_name=${clientName}`);\n/**\n */\nexport const loginUsernameField = (): string =>\n getSetting(LOGIN_USERNAME_SETTING, \"j_username\");\n/**\n */\nexport const loginPasswordField = (): string =>\n getSetting(LOGIN_PASSWORD_SETTING, \"j_password\");\n/**\n */\nexport const logoutPath = (): string =>\n getSetting(LOGOUT_PATH_SETTING, \"/logout\");\n\nexport const LOGIN_PATH: string = loginPath();\nexport const LOGOUT_PATH: string = logoutPath();\n\n/**\n * Model overview swim lane configuration\n */\nexport const getSwimLaneDiagramConfiguration: Object = () => {\n let configLocation = getSetting(\n \"SWIM_LANE_DIAGRAM_CONFIGURATION\",\n \"/Library/Diagrams/Overviews.json\",\n );\n if (!configLocation.startsWith(\"/\")) {\n configLocation = `/${configLocation}`;\n }\n return getRepositoryResourceUrl(configLocation);\n};\n\n/**\n * Set the context path for requests to be informed\n */\nexport const setContextPath = (contextPath: string) => {\n setSetting(\"CONTEXT_PATH\", contextPath);\n};\n\n/**\n * Backwards compatible export of BASE constant\n */\nexport const BASE: string = getBasePath();\n"],"mappings":"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","ignoreList":[]}
@@ -17,7 +17,9 @@ export const useForm = (href, data) => {
17
17
  method: HTTP_METHODS.POST,
18
18
  targetModel: FormModel,
19
19
  removeOnUnmount: true,
20
- data
20
+ data,
21
+ origin: formHref.origin,
22
+ contextPath: formHref.contextPath
21
23
  });
22
24
  if (form?.model) {
23
25
  return form.model;
@@ -1 +1 @@
1
- {"version":3,"file":"useForm.js","names":["useDispatch","Href","getSetting","HTTP_METHODS","loadModularUI","removeModelByKey","useModularUI","addRepeatableAttributeSet","cancelForm","cancelRepeatableAttributeSet","previousObject","removeRepeatableAttributeSet","showFormNotification","updateFormAttribute","FormModel","useForm","href","data","formHref","addParameter","form","method","POST","targetModel","removeOnUnmount","model","useFormNavigation","dispatch","previous","cancel","submit","connectKey","selfhref","formdata","updateHandler","newModel","clonedModel","clone","update","remove","showFormNotificationAction","useAttributeUpdate","object","attribute","value","options","useAttributeSet","save"],"sources":["../../src/hooks/useForm.js"],"sourcesContent":["// @flow\nimport { useDispatch } from \"react-redux\";\n\nimport Href from \"../models/href/Href\";\n\nimport { getSetting, HTTP_METHODS } from \"../constants\";\n\nimport type {\n RemoveModelByKeyAction,\n UpdateFormAction,\n} from \"../redux/_modularui\";\nimport { loadModularUI, removeModelByKey } from \"../redux/_modularui\";\nimport { useModularUI } from \"./useModularUI\";\n\nimport {\n addRepeatableAttributeSet,\n cancelForm,\n cancelRepeatableAttributeSet,\n previousObject,\n removeRepeatableAttributeSet,\n showFormNotification,\n updateFormAttribute,\n} from \"../redux/actions\";\n\nimport FormModel from \"../models/form/FormModel\";\n\nimport type { AttributeType, FormObjectModel, ModularUIModel } from \"../models\";\nimport type { UpdateFormOptions } from \"../redux/types\";\n\ntype FormNavigationHook = {\n previous: (form: FormModel) => UpdateFormAction,\n cancel: (form: FormModel) => void,\n submit: (form: FormModel) => void,\n showFormNotification: (form: FormModel) => void,\n remove: (form: FormModel) => RemoveModelByKeyAction,\n};\n\ntype AttributeSetHook = {\n save: () => UpdateFormAction,\n cancel: (object: FormObjectModel) => UpdateFormAction,\n remove: (object: FormObjectModel) => UpdateFormAction,\n};\n\ntype AttributeUpdateHook = (\n attribute: AttributeType,\n value: string,\n options: UpdateFormOptions,\n) => void;\n\n/**\n * Load a form by href\n */\nexport const useForm = (href: string | Href, data?: Object): ?FormModel => {\n const formHref = new Href(href);\n\n if (!getSetting(\"ALWAYS_COMMIT_FORM\")) {\n formHref.addParameter(\"commit\", \"false\");\n }\n\n const form = useModularUI(\"form\", formHref, {\n method: HTTP_METHODS.POST,\n targetModel: FormModel,\n removeOnUnmount: true,\n data,\n });\n\n if (form?.model) {\n return form.model;\n }\n};\n\n/**\n * Form navigation methods\n */\nexport const useFormNavigation = (): FormNavigationHook => {\n const dispatch = useDispatch();\n\n const previous = (form: FormModel) => dispatch(previousObject(form));\n\n const cancel = (form: FormModel) => dispatch(cancelForm(form));\n\n const submit = (form: FormModel) =>\n dispatch(\n loadModularUI(form.connectKey, form.selfhref, {\n method: HTTP_METHODS.POST,\n data: form.formdata,\n updateHandler: (newModel: ModularUIModel): ModularUIModel => {\n if (newModel instanceof FormModel) {\n const clonedModel: FormModel = form.clone();\n clonedModel.update(newModel);\n return clonedModel;\n }\n return newModel;\n },\n targetModel: FormModel,\n }),\n );\n\n const remove = (form: FormModel) =>\n dispatch(removeModelByKey(form.connectKey));\n\n const showFormNotificationAction = (form: FormModel) =>\n dispatch(showFormNotification(form));\n\n return {\n previous,\n cancel,\n submit,\n remove,\n showFormNotification: showFormNotificationAction,\n };\n};\n\n/**\n * Hook that returns a function to update attributes of a form object.\n * <br >\n * The returned function accepts the following options:\n *\n * - autosubmit: Automatically submit the form after a change\n * - autosav: Automatically save the form (in the background) after a change\n * - autoupdate: Automatically update the current form object after a change\n * - forceUpdate: Force the update even if conditions are not met.\n * - validate: Activate/deactivate the form object validation by an update.\n */\nexport const useAttributeUpdate = (\n form: FormModel,\n object: FormObjectModel,\n): AttributeUpdateHook => {\n const dispatch = useDispatch();\n\n return (\n attribute: AttributeType,\n value: string,\n options: UpdateFormOptions,\n ) => dispatch(updateFormAttribute(form, object, attribute, value, options));\n};\n\n/**\n * Attributeset actions\n */\nexport const useAttributeSet = (form: FormModel): AttributeSetHook => {\n const dispatch = useDispatch();\n\n return {\n save: () => dispatch(addRepeatableAttributeSet(form)),\n cancel: (object: FormObjectModel) =>\n dispatch(cancelRepeatableAttributeSet(form, object)),\n remove: (object: FormObjectModel) =>\n dispatch(removeRepeatableAttributeSet(form, object)),\n };\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"useForm.js","names":["useDispatch","Href","getSetting","HTTP_METHODS","loadModularUI","removeModelByKey","useModularUI","addRepeatableAttributeSet","cancelForm","cancelRepeatableAttributeSet","previousObject","removeRepeatableAttributeSet","showFormNotification","updateFormAttribute","FormModel","useForm","href","data","formHref","addParameter","form","method","POST","targetModel","removeOnUnmount","origin","contextPath","model","useFormNavigation","dispatch","previous","cancel","submit","connectKey","selfhref","formdata","updateHandler","newModel","clonedModel","clone","update","remove","showFormNotificationAction","useAttributeUpdate","object","attribute","value","options","useAttributeSet","save"],"sources":["../../src/hooks/useForm.js"],"sourcesContent":["// @flow\nimport { useDispatch } from \"react-redux\";\n\nimport Href from \"../models/href/Href\";\n\nimport { getSetting, HTTP_METHODS } from \"../constants\";\n\nimport type {\n RemoveModelByKeyAction,\n UpdateFormAction,\n} from \"../redux/_modularui\";\nimport { loadModularUI, removeModelByKey } from \"../redux/_modularui\";\nimport { useModularUI } from \"./useModularUI\";\n\nimport {\n addRepeatableAttributeSet,\n cancelForm,\n cancelRepeatableAttributeSet,\n previousObject,\n removeRepeatableAttributeSet,\n showFormNotification,\n updateFormAttribute,\n} from \"../redux/actions\";\n\nimport FormModel from \"../models/form/FormModel\";\n\nimport type { AttributeType, FormObjectModel, ModularUIModel } from \"../models\";\nimport type { UpdateFormOptions } from \"../redux/types\";\n\ntype FormNavigationHook = {\n previous: (form: FormModel) => UpdateFormAction,\n cancel: (form: FormModel) => void,\n submit: (form: FormModel) => void,\n showFormNotification: (form: FormModel) => void,\n remove: (form: FormModel) => RemoveModelByKeyAction,\n};\n\ntype AttributeSetHook = {\n save: () => UpdateFormAction,\n cancel: (object: FormObjectModel) => UpdateFormAction,\n remove: (object: FormObjectModel) => UpdateFormAction,\n};\n\ntype AttributeUpdateHook = (\n attribute: AttributeType,\n value: string,\n options: UpdateFormOptions,\n) => void;\n\n/**\n * Load a form by href\n */\nexport const useForm = (href: string | Href, data?: Object): ?FormModel => {\n const formHref = new Href(href);\n\n if (!getSetting(\"ALWAYS_COMMIT_FORM\")) {\n formHref.addParameter(\"commit\", \"false\");\n }\n\n const form = useModularUI(\"form\", formHref, {\n method: HTTP_METHODS.POST,\n targetModel: FormModel,\n removeOnUnmount: true,\n data,\n origin: formHref.origin,\n contextPath: formHref.contextPath,\n });\n\n if (form?.model) {\n return form.model;\n }\n};\n\n/**\n * Form navigation methods\n */\nexport const useFormNavigation = (): FormNavigationHook => {\n const dispatch = useDispatch();\n\n const previous = (form: FormModel) => dispatch(previousObject(form));\n\n const cancel = (form: FormModel) => dispatch(cancelForm(form));\n\n const submit = (form: FormModel) =>\n dispatch(\n loadModularUI(form.connectKey, form.selfhref, {\n method: HTTP_METHODS.POST,\n data: form.formdata,\n updateHandler: (newModel: ModularUIModel): ModularUIModel => {\n if (newModel instanceof FormModel) {\n const clonedModel: FormModel = form.clone();\n clonedModel.update(newModel);\n return clonedModel;\n }\n return newModel;\n },\n targetModel: FormModel,\n }),\n );\n\n const remove = (form: FormModel) =>\n dispatch(removeModelByKey(form.connectKey));\n\n const showFormNotificationAction = (form: FormModel) =>\n dispatch(showFormNotification(form));\n\n return {\n previous,\n cancel,\n submit,\n remove,\n showFormNotification: showFormNotificationAction,\n };\n};\n\n/**\n * Hook that returns a function to update attributes of a form object.\n * <br >\n * The returned function accepts the following options:\n *\n * - autosubmit: Automatically submit the form after a change\n * - autosav: Automatically save the form (in the background) after a change\n * - autoupdate: Automatically update the current form object after a change\n * - forceUpdate: Force the update even if conditions are not met.\n * - validate: Activate/deactivate the form object validation by an update.\n */\nexport const useAttributeUpdate = (\n form: FormModel,\n object: FormObjectModel,\n): AttributeUpdateHook => {\n const dispatch = useDispatch();\n\n return (\n attribute: AttributeType,\n value: string,\n options: UpdateFormOptions,\n ) => dispatch(updateFormAttribute(form, object, attribute, value, options));\n};\n\n/**\n * Attributeset actions\n */\nexport const useAttributeSet = (form: FormModel): AttributeSetHook => {\n const dispatch = useDispatch();\n\n return {\n save: () => dispatch(addRepeatableAttributeSet(form)),\n cancel: (object: FormObjectModel) =>\n dispatch(cancelRepeatableAttributeSet(form, object)),\n remove: (object: FormObjectModel) =>\n dispatch(removeRepeatableAttributeSet(form, object)),\n };\n};\n"],"mappings":"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","ignoreList":[]}
@@ -9,13 +9,17 @@ export const useModularUIBasic = function (key, href) {
9
9
  let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {
10
10
  expectedModels: [],
11
11
  targetModel: undefined,
12
- forceTargetModel: false
12
+ forceTargetModel: false,
13
+ origin: undefined,
14
+ contextPath: undefined
13
15
  };
14
16
  const location = useLocation();
15
17
  const useModularUIOptions = {
16
18
  targetModel: undefined,
17
19
  forceTargetModel: undefined,
18
20
  isReload: false,
21
+ origin: undefined,
22
+ contextPath: undefined,
19
23
  cache: false
20
24
  };
21
25
  if (options.targetModel) {
@@ -30,6 +34,12 @@ export const useModularUIBasic = function (key, href) {
30
34
  if (location.state?.reload && _startsWithInstanceProperty(_context = location.pathname).call(_context, href.toString())) {
31
35
  useModularUIOptions.isReload = true;
32
36
  }
37
+ if (options.origin) {
38
+ useModularUIOptions.origin = options.origin;
39
+ }
40
+ if (options.contextPath) {
41
+ useModularUIOptions.contextPath = options.contextPath;
42
+ }
33
43
 
34
44
  // $FlowFixMe[incompatible-call]
35
45
  const modularUI = useModularUI(key, href, useModularUIOptions);
@@ -1 +1 @@
1
- {"version":3,"file":"useModularUIBasic.js","names":["useModularUI","useLocation","IllegalStateException","useModularUIBasic","key","href","_context","options","arguments","length","undefined","expectedModels","targetModel","forceTargetModel","location","useModularUIOptions","isReload","cache","state","reload","_startsWithInstanceProperty","pathname","call","toString","modularUI","model","isCorrectModel","some","expectedModel","type","console","error"],"sources":["../../src/hooks/useModularUIBasic.js"],"sourcesContent":["// @flow\nimport { useModularUI } from \"./useModularUI\";\n\nimport { useLocation } from \"./useRouter\";\n\nimport { IllegalStateException } from \"../exceptions\";\n\nimport type { ModularUIModel, Href } from \"../models\";\n\nexport type UseModularUIBasicOptions<T: ModularUIModel> = {\n expectedModels?: Array<string>,\n targetModel?: Class<T> | Array<Class<T>>,\n forceTargetModel?: boolean,\n cache?: boolean,\n};\n\n/**\n */\nexport const useModularUIBasic = <T: ModularUIModel>(\n key: string,\n href: string | Href,\n options: UseModularUIBasicOptions<T> = {\n expectedModels: [],\n targetModel: undefined,\n forceTargetModel: false,\n },\n): T | null => {\n const location = useLocation();\n\n const useModularUIOptions = {\n targetModel: undefined,\n forceTargetModel: undefined,\n isReload: false,\n cache: false,\n };\n if (options.targetModel) {\n useModularUIOptions.targetModel = options.targetModel;\n useModularUIOptions.forceTargetModel = options.forceTargetModel;\n }\n\n if (options.cache) {\n useModularUIOptions.cache = options.cache;\n }\n\n // reload when the modular service starts with the current location\n if (location.state?.reload && location.pathname.startsWith(href.toString())) {\n useModularUIOptions.isReload = true;\n }\n\n // $FlowFixMe[incompatible-call]\n const modularUI = useModularUI(key, href, useModularUIOptions);\n\n if (modularUI?.model) {\n const { model } = modularUI;\n\n const expectedModels = options.expectedModels ?? [];\n if (expectedModels.length > 0) {\n const isCorrectModel = expectedModels.some((expectedModel) => {\n return model.type === expectedModel;\n });\n\n if (!isCorrectModel) {\n console.error(modularUI, \"is not of instance\", expectedModels);\n throw new IllegalStateException(\"Resolved model has incorrect type\");\n }\n }\n\n return model;\n }\n\n return null;\n};\n"],"mappings":";AACA,SAASA,YAAY,QAAQ,gBAAgB;AAE7C,SAASC,WAAW,QAAQ,aAAa;AAEzC,SAASC,qBAAqB,QAAQ,eAAe;AAWrD;AACA;AACA,OAAO,MAAMC,iBAAiB,GAAG,SAAAA,CAC/BC,GAAW,EACXC,IAAmB,EAMN;EAAA,IAAAC,QAAA;EAAA,IALbC,OAAoC,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG;IACrCG,cAAc,EAAE,EAAE;IAClBC,WAAW,EAAEF,SAAS;IACtBG,gBAAgB,EAAE;EACpB,CAAC;EAED,MAAMC,QAAQ,GAAGb,WAAW,CAAC,CAAC;EAE9B,MAAMc,mBAAmB,GAAG;IAC1BH,WAAW,EAAEF,SAAS;IACtBG,gBAAgB,EAAEH,SAAS;IAC3BM,QAAQ,EAAE,KAAK;IACfC,KAAK,EAAE;EACT,CAAC;EACD,IAAIV,OAAO,CAACK,WAAW,EAAE;IACvBG,mBAAmB,CAACH,WAAW,GAAGL,OAAO,CAACK,WAAW;IACrDG,mBAAmB,CAACF,gBAAgB,GAAGN,OAAO,CAACM,gBAAgB;EACjE;EAEA,IAAIN,OAAO,CAACU,KAAK,EAAE;IACjBF,mBAAmB,CAACE,KAAK,GAAGV,OAAO,CAACU,KAAK;EAC3C;;EAEA;EACA,IAAIH,QAAQ,CAACI,KAAK,EAAEC,MAAM,IAAIC,2BAAA,CAAAd,QAAA,GAAAQ,QAAQ,CAACO,QAAQ,EAAAC,IAAA,CAAAhB,QAAA,EAAYD,IAAI,CAACkB,QAAQ,CAAC,CAAC,CAAC,EAAE;IAC3ER,mBAAmB,CAACC,QAAQ,GAAG,IAAI;EACrC;;EAEA;EACA,MAAMQ,SAAS,GAAGxB,YAAY,CAACI,GAAG,EAAEC,IAAI,EAAEU,mBAAmB,CAAC;EAE9D,IAAIS,SAAS,EAAEC,KAAK,EAAE;IACpB,MAAM;MAAEA;IAAM,CAAC,GAAGD,SAAS;IAE3B,MAAMb,cAAc,GAAGJ,OAAO,CAACI,cAAc,IAAI,EAAE;IACnD,IAAIA,cAAc,CAACF,MAAM,GAAG,CAAC,EAAE;MAC7B,MAAMiB,cAAc,GAAGf,cAAc,CAACgB,IAAI,CAAEC,aAAa,IAAK;QAC5D,OAAOH,KAAK,CAACI,IAAI,KAAKD,aAAa;MACrC,CAAC,CAAC;MAEF,IAAI,CAACF,cAAc,EAAE;QACnBI,OAAO,CAACC,KAAK,CAACP,SAAS,EAAE,oBAAoB,EAAEb,cAAc,CAAC;QAC9D,MAAM,IAAIT,qBAAqB,CAAC,mCAAmC,CAAC;MACtE;IACF;IAEA,OAAOuB,KAAK;EACd;EAEA,OAAO,IAAI;AACb,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"useModularUIBasic.js","names":["useModularUI","useLocation","IllegalStateException","useModularUIBasic","key","href","_context","options","arguments","length","undefined","expectedModels","targetModel","forceTargetModel","origin","contextPath","location","useModularUIOptions","isReload","cache","state","reload","_startsWithInstanceProperty","pathname","call","toString","modularUI","model","isCorrectModel","some","expectedModel","type","console","error"],"sources":["../../src/hooks/useModularUIBasic.js"],"sourcesContent":["// @flow\nimport { useModularUI } from \"./useModularUI\";\n\nimport { useLocation } from \"./useRouter\";\n\nimport { IllegalStateException } from \"../exceptions\";\n\nimport type { ModularUIModel, Href } from \"../models\";\n\nexport type UseModularUIBasicOptions<T: ModularUIModel> = {\n expectedModels?: Array<string>,\n targetModel?: Class<T> | Array<Class<T>>,\n forceTargetModel?: boolean,\n origin?: string,\n contextPath?: string,\n cache?: boolean,\n};\n\n/**\n */\nexport const useModularUIBasic = <T: ModularUIModel>(\n key: string,\n href: string | Href,\n options: UseModularUIBasicOptions<T> = {\n expectedModels: [],\n targetModel: undefined,\n forceTargetModel: false,\n origin: undefined,\n contextPath: undefined,\n },\n): T | null => {\n const location = useLocation();\n\n const useModularUIOptions = {\n targetModel: undefined,\n forceTargetModel: undefined,\n isReload: false,\n origin: undefined,\n contextPath: undefined,\n cache: false,\n };\n if (options.targetModel) {\n useModularUIOptions.targetModel = options.targetModel;\n useModularUIOptions.forceTargetModel = options.forceTargetModel;\n }\n\n if (options.cache) {\n useModularUIOptions.cache = options.cache;\n }\n\n // reload when the modular service starts with the current location\n if (location.state?.reload && location.pathname.startsWith(href.toString())) {\n useModularUIOptions.isReload = true;\n }\n\n if (options.origin) {\n useModularUIOptions.origin = options.origin;\n }\n\n if (options.contextPath) {\n useModularUIOptions.contextPath = options.contextPath;\n }\n\n // $FlowFixMe[incompatible-call]\n const modularUI = useModularUI(key, href, useModularUIOptions);\n\n if (modularUI?.model) {\n const { model } = modularUI;\n\n const expectedModels = options.expectedModels ?? [];\n if (expectedModels.length > 0) {\n const isCorrectModel = expectedModels.some((expectedModel) => {\n return model.type === expectedModel;\n });\n\n if (!isCorrectModel) {\n console.error(modularUI, \"is not of instance\", expectedModels);\n throw new IllegalStateException(\"Resolved model has incorrect type\");\n }\n }\n\n return model;\n }\n\n return null;\n};\n"],"mappings":";AACA,SAASA,YAAY,QAAQ,gBAAgB;AAE7C,SAASC,WAAW,QAAQ,aAAa;AAEzC,SAASC,qBAAqB,QAAQ,eAAe;AAarD;AACA;AACA,OAAO,MAAMC,iBAAiB,GAAG,SAAAA,CAC/BC,GAAW,EACXC,IAAmB,EAQN;EAAA,IAAAC,QAAA;EAAA,IAPbC,OAAoC,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG;IACrCG,cAAc,EAAE,EAAE;IAClBC,WAAW,EAAEF,SAAS;IACtBG,gBAAgB,EAAE,KAAK;IACvBC,MAAM,EAAEJ,SAAS;IACjBK,WAAW,EAAEL;EACf,CAAC;EAED,MAAMM,QAAQ,GAAGf,WAAW,CAAC,CAAC;EAE9B,MAAMgB,mBAAmB,GAAG;IAC1BL,WAAW,EAAEF,SAAS;IACtBG,gBAAgB,EAAEH,SAAS;IAC3BQ,QAAQ,EAAE,KAAK;IACfJ,MAAM,EAAEJ,SAAS;IACjBK,WAAW,EAAEL,SAAS;IACtBS,KAAK,EAAE;EACT,CAAC;EACD,IAAIZ,OAAO,CAACK,WAAW,EAAE;IACvBK,mBAAmB,CAACL,WAAW,GAAGL,OAAO,CAACK,WAAW;IACrDK,mBAAmB,CAACJ,gBAAgB,GAAGN,OAAO,CAACM,gBAAgB;EACjE;EAEA,IAAIN,OAAO,CAACY,KAAK,EAAE;IACjBF,mBAAmB,CAACE,KAAK,GAAGZ,OAAO,CAACY,KAAK;EAC3C;;EAEA;EACA,IAAIH,QAAQ,CAACI,KAAK,EAAEC,MAAM,IAAIC,2BAAA,CAAAhB,QAAA,GAAAU,QAAQ,CAACO,QAAQ,EAAAC,IAAA,CAAAlB,QAAA,EAAYD,IAAI,CAACoB,QAAQ,CAAC,CAAC,CAAC,EAAE;IAC3ER,mBAAmB,CAACC,QAAQ,GAAG,IAAI;EACrC;EAEA,IAAIX,OAAO,CAACO,MAAM,EAAE;IAClBG,mBAAmB,CAACH,MAAM,GAAGP,OAAO,CAACO,MAAM;EAC7C;EAEA,IAAIP,OAAO,CAACQ,WAAW,EAAE;IACvBE,mBAAmB,CAACF,WAAW,GAAGR,OAAO,CAACQ,WAAW;EACvD;;EAEA;EACA,MAAMW,SAAS,GAAG1B,YAAY,CAACI,GAAG,EAAEC,IAAI,EAAEY,mBAAmB,CAAC;EAE9D,IAAIS,SAAS,EAAEC,KAAK,EAAE;IACpB,MAAM;MAAEA;IAAM,CAAC,GAAGD,SAAS;IAE3B,MAAMf,cAAc,GAAGJ,OAAO,CAACI,cAAc,IAAI,EAAE;IACnD,IAAIA,cAAc,CAACF,MAAM,GAAG,CAAC,EAAE;MAC7B,MAAMmB,cAAc,GAAGjB,cAAc,CAACkB,IAAI,CAAEC,aAAa,IAAK;QAC5D,OAAOH,KAAK,CAACI,IAAI,KAAKD,aAAa;MACrC,CAAC,CAAC;MAEF,IAAI,CAACF,cAAc,EAAE;QACnBI,OAAO,CAACC,KAAK,CAACP,SAAS,EAAE,oBAAoB,EAAEf,cAAc,CAAC;QAC9D,MAAM,IAAIT,qBAAqB,CAAC,mCAAmC,CAAC;MACtE;IACF;IAEA,OAAOyB,KAAK;EACd;EAEA,OAAO,IAAI;AACb,CAAC","ignoreList":[]}
@@ -8,91 +8,102 @@ import CaseSearchModel from "../models/search/CaseSearchModel";
8
8
  import ListDetailModel from "../models/list/ListDetailModel";
9
9
  import UserProfileModel from "../models/user/UserProfileModel";
10
10
  import { useModularUIBasic } from "./useModularUIBasic";
11
-
12
11
  /**
13
12
  * Load application
14
13
  */
15
- export const useApplication = () => useModularUIBasic("application", "/", {
14
+ export const useApplication = options => useModularUIBasic("application", "/", {
16
15
  expectedModels: ["Application"],
17
- targetModel: ApplicationModel
16
+ targetModel: ApplicationModel,
17
+ ...options
18
18
  });
19
19
 
20
20
  /**
21
21
  * Load a tab by href
22
22
  */
23
- export const useTab = href => useModularUIBasic("tab", href, {
23
+ export const useTab = (href, options) => useModularUIBasic("tab", href, {
24
24
  expectedModels: ["Tab"],
25
- targetModel: TabModel
25
+ targetModel: TabModel,
26
+ ...options
26
27
  });
27
28
 
28
29
  /**
29
30
  * Load caseview by href
30
31
  */
31
- export const useCaseView = href => useModularUIBasic("caseview", href, {
32
+ export const useCaseView = (href, options) => useModularUIBasic("caseview", href, {
32
33
  expectedModels: ["CaseView"],
33
- targetModel: CaseViewModel
34
+ targetModel: CaseViewModel,
35
+ ...options
34
36
  });
35
37
 
36
38
  /**
37
39
  */
38
- export const usePanel = href => useModularUIBasic("panel", href, {
39
- expectedModels: ["List", "GroupingPanel", "Detail"]
40
+ export const usePanel = (href, options) => useModularUIBasic("panel", href, {
41
+ expectedModels: ["List", "GroupingPanel", "Detail"],
42
+ ...options
40
43
  });
41
44
 
42
45
  /**
43
46
  */
44
- export const useList = href => useModularUIBasic("list", href, {
47
+ export const useList = (href, options) => useModularUIBasic("list", href, {
45
48
  expectedModels: ["List"],
46
- targetModel: ListModel
49
+ targetModel: ListModel,
50
+ ...options
47
51
  });
48
52
 
49
53
  /**
50
54
  */
51
- export const useListOrDetail = href => useModularUIBasic("list", href, {
55
+ export const useListOrDetail = (href, options) => useModularUIBasic("list", href, {
52
56
  expectedModels: ["List", "Detail"],
53
- targetModel: [ListModel, DetailModel]
57
+ targetModel: [ListModel, DetailModel],
58
+ ...options
54
59
  });
55
60
 
56
61
  /**
57
62
  */
58
- export const useListDetail = href => useModularUIBasic("listdetail", href, {
63
+ export const useListDetail = (href, options) => useModularUIBasic("listdetail", href, {
59
64
  expectedModels: ["ListDetail"],
60
65
  targetModel: ListDetailModel,
61
- forceTargetModel: true
66
+ forceTargetModel: true,
67
+ ...options
62
68
  });
63
69
 
64
70
  /**
65
71
  */
66
- export const useGroupingPanel = href => useModularUIBasic("groupingpanel", href, {
72
+ export const useGroupingPanel = (href, options) => useModularUIBasic("groupingpanel", href, {
67
73
  expectedModels: ["GroupingPanel"],
68
- targetModel: GroupingPanelModel
74
+ targetModel: GroupingPanelModel,
75
+ ...options
69
76
  });
70
77
 
71
78
  /**
72
79
  */
73
- export const useDetailPanel = href => useModularUIBasic("detailpanel", href, {
80
+ export const useDetailPanel = (href, options) => useModularUIBasic("detailpanel", href, {
74
81
  expectedModels: ["Detail"],
75
- targetModel: DetailModel
82
+ targetModel: DetailModel,
83
+ ...options
76
84
  });
77
85
 
78
86
  /**
79
87
  */
80
- export const useQuicksearch = href => useModularUIBasic("quicksearch", href, {
88
+ export const useQuicksearch = (href, options) => useModularUIBasic("quicksearch", href, {
81
89
  expectedModels: ["CaseSearch"],
82
- targetModel: CaseSearchModel
90
+ targetModel: CaseSearchModel,
91
+ ...options
83
92
  });
84
93
 
85
94
  /**
86
95
  */
87
- export const useSearch = href => useModularUIBasic("search", href, {
96
+ export const useSearch = (href, options) => useModularUIBasic("search", href, {
88
97
  expectedModels: ["CaseSearch"],
89
- targetModel: CaseSearchModel
98
+ targetModel: CaseSearchModel,
99
+ ...options
90
100
  });
91
101
 
92
102
  /**
93
103
  */
94
- export const useUserProfile = href => useModularUIBasic("userprofile", href, {
104
+ export const useUserProfile = (href, options) => useModularUIBasic("userprofile", href, {
95
105
  expectedModels: ["UserProfile"],
96
- targetModel: UserProfileModel
106
+ targetModel: UserProfileModel,
107
+ ...options
97
108
  });
98
109
  //# sourceMappingURL=useModularUIModel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useModularUIModel.js","names":["ApplicationModel","CaseViewModel","TabModel","ListModel","GroupingPanelModel","DetailModel","CaseSearchModel","ListDetailModel","UserProfileModel","useModularUIBasic","useApplication","expectedModels","targetModel","useTab","href","useCaseView","usePanel","useList","useListOrDetail","useListDetail","forceTargetModel","useGroupingPanel","useDetailPanel","useQuicksearch","useSearch","useUserProfile"],"sources":["../../src/hooks/useModularUIModel.js"],"sourcesContent":["// @flow\nimport ApplicationModel from \"../models/application/ApplicationModel\";\nimport CaseViewModel from \"../models/caseview/CaseViewModel\";\nimport TabModel from \"../models/tab/TabModel\";\nimport ListModel from \"../models/list/ListModel\";\nimport GroupingPanelModel from \"../models/panels/GroupingPanelModel\";\nimport DetailModel from \"../models/detail/DetailModel\";\nimport CaseSearchModel from \"../models/search/CaseSearchModel\";\nimport ListDetailModel from \"../models/list/ListDetailModel\";\nimport UserProfileModel from \"../models/user/UserProfileModel\";\n\nimport { useModularUIBasic } from \"./useModularUIBasic\";\n\n/**\n * Load application\n */\nexport const useApplication = (): ApplicationModel | null =>\n useModularUIBasic(\"application\", \"/\", {\n expectedModels: [\"Application\"],\n targetModel: ApplicationModel,\n });\n\n/**\n * Load a tab by href\n */\nexport const useTab = (href: string): TabModel | null =>\n useModularUIBasic(\"tab\", href, {\n expectedModels: [\"Tab\"],\n targetModel: TabModel,\n });\n\n/**\n * Load caseview by href\n */\nexport const useCaseView = (href: string): CaseViewModel | null =>\n useModularUIBasic(\"caseview\", href, {\n expectedModels: [\"CaseView\"],\n targetModel: CaseViewModel,\n });\n\n/**\n */\nexport const usePanel = (\n href: string,\n): ListModel | GroupingPanelModel | DetailModel | null =>\n useModularUIBasic(\"panel\", href, {\n expectedModels: [\"List\", \"GroupingPanel\", \"Detail\"],\n });\n\n/**\n */\nexport const useList = (href: string): ListModel | null =>\n useModularUIBasic(\"list\", href, {\n expectedModels: [\"List\"],\n targetModel: ListModel,\n });\n\n/**\n */\nexport const useListOrDetail = (href: string): ListModel | DetailModel | null =>\n useModularUIBasic(\"list\", href, {\n expectedModels: [\"List\", \"Detail\"],\n targetModel: [ListModel, DetailModel],\n });\n\n/**\n */\nexport const useListDetail = (href: string): ListDetailModel | null =>\n useModularUIBasic(\"listdetail\", href, {\n expectedModels: [\"ListDetail\"],\n targetModel: ListDetailModel,\n forceTargetModel: true,\n });\n\n/**\n */\nexport const useGroupingPanel = (href: string): GroupingPanelModel | null =>\n useModularUIBasic(\"groupingpanel\", href, {\n expectedModels: [\"GroupingPanel\"],\n targetModel: GroupingPanelModel,\n });\n\n/**\n */\nexport const useDetailPanel = (href: string): DetailModel | null =>\n useModularUIBasic(\"detailpanel\", href, {\n expectedModels: [\"Detail\"],\n targetModel: DetailModel,\n });\n\n/**\n */\nexport const useQuicksearch = (href: string): CaseSearchModel | null =>\n useModularUIBasic(\"quicksearch\", href, {\n expectedModels: [\"CaseSearch\"],\n targetModel: CaseSearchModel,\n });\n\n/**\n */\nexport const useSearch = (href: string): CaseSearchModel | null =>\n useModularUIBasic(\"search\", href, {\n expectedModels: [\"CaseSearch\"],\n targetModel: CaseSearchModel,\n });\n\n/**\n */\nexport const useUserProfile = (href: string): UserProfileModel | null =>\n useModularUIBasic(\"userprofile\", href, {\n expectedModels: [\"UserProfile\"],\n targetModel: UserProfileModel,\n });\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"useModularUIModel.js","names":["ApplicationModel","CaseViewModel","TabModel","ListModel","GroupingPanelModel","DetailModel","CaseSearchModel","ListDetailModel","UserProfileModel","useModularUIBasic","useApplication","options","expectedModels","targetModel","useTab","href","useCaseView","usePanel","useList","useListOrDetail","useListDetail","forceTargetModel","useGroupingPanel","useDetailPanel","useQuicksearch","useSearch","useUserProfile"],"sources":["../../src/hooks/useModularUIModel.js"],"sourcesContent":["// @flow\nimport ApplicationModel from \"../models/application/ApplicationModel\";\nimport CaseViewModel from \"../models/caseview/CaseViewModel\";\nimport TabModel from \"../models/tab/TabModel\";\nimport ListModel from \"../models/list/ListModel\";\nimport GroupingPanelModel from \"../models/panels/GroupingPanelModel\";\nimport DetailModel from \"../models/detail/DetailModel\";\nimport CaseSearchModel from \"../models/search/CaseSearchModel\";\nimport ListDetailModel from \"../models/list/ListDetailModel\";\nimport UserProfileModel from \"../models/user/UserProfileModel\";\n\nimport { useModularUIBasic } from \"./useModularUIBasic\";\n\ntype HookOptions = {\n origin?: string,\n contextPath?: string,\n};\n\n/**\n * Load application\n */\nexport const useApplication = (\n options?: HookOptions,\n): ApplicationModel | null =>\n useModularUIBasic(\"application\", \"/\", {\n expectedModels: [\"Application\"],\n targetModel: ApplicationModel,\n ...options,\n });\n\n/**\n * Load a tab by href\n */\nexport const useTab = (href: string, options?: HookOptions): TabModel | null =>\n useModularUIBasic(\"tab\", href, {\n expectedModels: [\"Tab\"],\n targetModel: TabModel,\n ...options,\n });\n\n/**\n * Load caseview by href\n */\nexport const useCaseView = (\n href: string,\n options?: HookOptions,\n): CaseViewModel | null =>\n useModularUIBasic(\"caseview\", href, {\n expectedModels: [\"CaseView\"],\n targetModel: CaseViewModel,\n ...options,\n });\n\n/**\n */\nexport const usePanel = (\n href: string,\n options?: HookOptions,\n): ListModel | GroupingPanelModel | DetailModel | null =>\n useModularUIBasic(\"panel\", href, {\n expectedModels: [\"List\", \"GroupingPanel\", \"Detail\"],\n ...options,\n });\n\n/**\n */\nexport const useList = (\n href: string,\n options?: HookOptions,\n): ListModel | null =>\n useModularUIBasic(\"list\", href, {\n expectedModels: [\"List\"],\n targetModel: ListModel,\n ...options,\n });\n\n/**\n */\nexport const useListOrDetail = (\n href: string,\n options?: HookOptions,\n): ListModel | DetailModel | null =>\n useModularUIBasic(\"list\", href, {\n expectedModels: [\"List\", \"Detail\"],\n targetModel: [ListModel, DetailModel],\n ...options,\n });\n\n/**\n */\nexport const useListDetail = (\n href: string,\n options?: HookOptions,\n): ListDetailModel | null =>\n useModularUIBasic(\"listdetail\", href, {\n expectedModels: [\"ListDetail\"],\n targetModel: ListDetailModel,\n forceTargetModel: true,\n ...options,\n });\n\n/**\n */\nexport const useGroupingPanel = (\n href: string,\n options?: HookOptions,\n): GroupingPanelModel | null =>\n useModularUIBasic(\"groupingpanel\", href, {\n expectedModels: [\"GroupingPanel\"],\n targetModel: GroupingPanelModel,\n ...options,\n });\n\n/**\n */\nexport const useDetailPanel = (\n href: string,\n options?: HookOptions,\n): DetailModel | null =>\n useModularUIBasic(\"detailpanel\", href, {\n expectedModels: [\"Detail\"],\n targetModel: DetailModel,\n ...options,\n });\n\n/**\n */\nexport const useQuicksearch = (\n href: string,\n options?: HookOptions,\n): CaseSearchModel | null =>\n useModularUIBasic(\"quicksearch\", href, {\n expectedModels: [\"CaseSearch\"],\n targetModel: CaseSearchModel,\n ...options,\n });\n\n/**\n */\nexport const useSearch = (\n href: string,\n options?: HookOptions,\n): CaseSearchModel | null =>\n useModularUIBasic(\"search\", href, {\n expectedModels: [\"CaseSearch\"],\n targetModel: CaseSearchModel,\n ...options,\n });\n\n/**\n */\nexport const useUserProfile = (\n href: string,\n options?: HookOptions,\n): UserProfileModel | null =>\n useModularUIBasic(\"userprofile\", href, {\n expectedModels: [\"UserProfile\"],\n targetModel: UserProfileModel,\n ...options,\n });\n"],"mappings":"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","ignoreList":[]}
@@ -9,7 +9,7 @@ import ActionModel from "./ActionModel";
9
9
  * Collection of actions
10
10
  */
11
11
  export default class ActionCollection extends BaseCollection {
12
- constructor(actions, actionsContributions) {
12
+ constructor(actions, actionsContributions, origin, contextPath) {
13
13
  super();
14
14
 
15
15
  // no actions gives an empty collection
@@ -20,7 +20,7 @@ export default class ActionCollection extends BaseCollection {
20
20
  for (const actionData of actions) {
21
21
  const actionContribution = _findInstanceProperty(actionsContributions).call(actionsContributions, actionContribution => actionContribution.name === actionData.name && actionContribution.type !== "service-operation");
22
22
  if (actionContribution) {
23
- actionModels.push(new ActionModel(actionData, actionContribution));
23
+ actionModels.push(new ActionModel(actionData, actionContribution, origin, contextPath));
24
24
  }
25
25
  }
26
26
  this.collection = actionModels;
@@ -1 +1 @@
1
- {"version":3,"file":"ActionCollection.js","names":["BaseCollection","ActionModel","ActionCollection","constructor","actions","actionsContributions","Array","isArray","collection","actionModels","actionData","actionContribution","_findInstanceProperty","call","name","type","push","getActionByKey","key","_context","newCollection","_filterInstanceProperty","action","first","getActionsByType","_context2","_includesInstanceProperty","getActionsByLayoutHint","_context3","_len","arguments","length","hints","_key","layouthint","has","hasActionsByLayoutHint","routePath","_context4","enabledRoutes","isDisabled","path","_mapInstanceProperty","selfhref","join"],"sources":["../../../src/models/actions/ActionCollection.js"],"sourcesContent":["// @flow\nimport BaseCollection from \"../base/BaseCollection\";\nimport ActionModel from \"./ActionModel\";\n\n/**\n * Collection of actions\n */\nexport default class ActionCollection extends BaseCollection<ActionModel> {\n constructor(actions?: Object, actionsContributions?: Object) {\n super();\n\n // no actions gives an empty collection\n if (!Array.isArray(actions)) {\n this.collection = [];\n } else if (Array.isArray(actionsContributions)) {\n const actionModels = [];\n for (const actionData of actions) {\n const actionContribution = actionsContributions.find(\n (actionContribution) =>\n actionContribution.name === actionData.name &&\n actionContribution.type !== \"service-operation\",\n );\n\n if (actionContribution) {\n actionModels.push(new ActionModel(actionData, actionContribution));\n }\n }\n\n this.collection = actionModels;\n }\n }\n\n /**\n * Retrieve action by key\n */\n getActionByKey(key: string): ActionModel | null {\n const newCollection = new ActionCollection();\n\n newCollection.collection = this.filter((action) => action.key === key);\n\n return newCollection.first;\n }\n\n /**\n * Retrieve actions by type\n */\n getActionsByType(type: string | Array<string>): ActionCollection {\n const newCollection = new ActionCollection();\n\n newCollection.collection = this.filter((action) =>\n Array.isArray(type) ? type.includes(action.type) : action.type === type,\n );\n\n return newCollection;\n }\n\n /**\n * Retrieve actions including a layout hint\n */\n getActionsByLayoutHint(...hints: Array<string>): ActionCollection {\n const newCollection = new ActionCollection();\n\n newCollection.collection = this.filter((action) =>\n action.layouthint.has(...hints),\n );\n\n return newCollection;\n }\n\n /**\n * Indicates if an action with layout hint exists\n */\n hasActionsByLayoutHint(...hints: Array<string>): boolean {\n return this.getActionsByLayoutHint(...hints).length > 0;\n }\n\n /**\n * Use as path regex for react router routes\n */\n get routePath(): string {\n const enabledRoutes = this.collection.filter(\n (action) => !action.isDisabled,\n );\n\n if (enabledRoutes.length === 0) {\n return \"__NON_EXISTING_ROUTE__\";\n }\n\n const path = enabledRoutes.map((action) => action.selfhref.path).join(\"|\");\n\n return this.length > 1 ? `(${path})` : path;\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"ActionCollection.js","names":["BaseCollection","ActionModel","ActionCollection","constructor","actions","actionsContributions","origin","contextPath","Array","isArray","collection","actionModels","actionData","actionContribution","_findInstanceProperty","call","name","type","push","getActionByKey","key","_context","newCollection","_filterInstanceProperty","action","first","getActionsByType","_context2","_includesInstanceProperty","getActionsByLayoutHint","_context3","_len","arguments","length","hints","_key","layouthint","has","hasActionsByLayoutHint","routePath","_context4","enabledRoutes","isDisabled","path","_mapInstanceProperty","selfhref","join"],"sources":["../../../src/models/actions/ActionCollection.js"],"sourcesContent":["// @flow\nimport BaseCollection from \"../base/BaseCollection\";\nimport ActionModel from \"./ActionModel\";\n\n/**\n * Collection of actions\n */\nexport default class ActionCollection extends BaseCollection<ActionModel> {\n constructor(\n actions?: Object,\n actionsContributions?: Object,\n origin?: string,\n contextPath?: string,\n ) {\n super();\n\n // no actions gives an empty collection\n if (!Array.isArray(actions)) {\n this.collection = [];\n } else if (Array.isArray(actionsContributions)) {\n const actionModels = [];\n for (const actionData of actions) {\n const actionContribution = actionsContributions.find(\n (actionContribution) =>\n actionContribution.name === actionData.name &&\n actionContribution.type !== \"service-operation\",\n );\n\n if (actionContribution) {\n actionModels.push(\n new ActionModel(\n actionData,\n actionContribution,\n origin,\n contextPath,\n ),\n );\n }\n }\n\n this.collection = actionModels;\n }\n }\n\n /**\n * Retrieve action by key\n */\n getActionByKey(key: string): ActionModel | null {\n const newCollection = new ActionCollection();\n\n newCollection.collection = this.filter((action) => action.key === key);\n\n return newCollection.first;\n }\n\n /**\n * Retrieve actions by type\n */\n getActionsByType(type: string | Array<string>): ActionCollection {\n const newCollection = new ActionCollection();\n\n newCollection.collection = this.filter((action) =>\n Array.isArray(type) ? type.includes(action.type) : action.type === type,\n );\n\n return newCollection;\n }\n\n /**\n * Retrieve actions including a layout hint\n */\n getActionsByLayoutHint(...hints: Array<string>): ActionCollection {\n const newCollection = new ActionCollection();\n\n newCollection.collection = this.filter((action) =>\n action.layouthint.has(...hints),\n );\n\n return newCollection;\n }\n\n /**\n * Indicates if an action with layout hint exists\n */\n hasActionsByLayoutHint(...hints: Array<string>): boolean {\n return this.getActionsByLayoutHint(...hints).length > 0;\n }\n\n /**\n * Use as path regex for react router routes\n */\n get routePath(): string {\n const enabledRoutes = this.collection.filter(\n (action) => !action.isDisabled,\n );\n\n if (enabledRoutes.length === 0) {\n return \"__NON_EXISTING_ROUTE__\";\n }\n\n const path = enabledRoutes.map((action) => action.selfhref.path).join(\"|\");\n\n return this.length > 1 ? `(${path})` : path;\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -6,32 +6,39 @@ import ProcessStatusSettingsModel from "../process/ProcessStatusSettingsModel";
6
6
  import AttributeCollection from "../attributes/AttributeCollection";
7
7
  import BaseModel from "../base/BaseModel";
8
8
  import Href from "../href/Href";
9
- import { HTTP_METHODS } from "../../constants/Constants";
10
- import { CREATE_ACTION, UPDATE_ACTION, DELETE_ACTION } from "../../constants/LayoutHints";
9
+ import { getBasePath, HTTP_METHODS, CREATE_ACTION, UPDATE_ACTION, DELETE_ACTION } from "../../constants";
11
10
  /**
12
11
  * Defines an Action. For instance an action on the tab 'books', which leads to a form
13
12
  */
14
13
  export default class ActionModel extends BaseModel {
15
- constructor(data, contributions) {
14
+ constructor(data, contributions, origin, contextPath) {
16
15
  super(data, contributions);
17
16
  _defineProperty(this, "_fieldCollection", void 0);
18
17
  _defineProperty(this, "_href", void 0);
19
18
  _defineProperty(this, "_icon", void 0);
19
+ _defineProperty(this, "_origin", void 0);
20
+ _defineProperty(this, "_contextPath", void 0);
20
21
  this._fieldCollection = new AttributeCollection(this.data.fields, this.contributions.fields);
22
+ this._origin = origin;
23
+ this._contextPath = contextPath;
21
24
  }
22
25
 
23
26
  /**
24
27
  */
25
28
  static createFromHref(name, href, label) {
26
29
  let type = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : "form";
27
- return new ActionModel({
30
+ let origin = arguments.length > 4 ? arguments[4] : undefined;
31
+ let contextPath = arguments.length > 5 ? arguments[5] : undefined;
32
+ const data = {
28
33
  name,
29
34
  href
30
- }, {
35
+ };
36
+ const contributions = {
31
37
  name,
32
- label: label || name,
38
+ label: label ?? name,
33
39
  type
34
- });
40
+ };
41
+ return new ActionModel(data, contributions, origin, contextPath);
35
42
  }
36
43
 
37
44
  /**
@@ -40,11 +47,23 @@ export default class ActionModel extends BaseModel {
40
47
  return this.data.href == null;
41
48
  }
42
49
 
50
+ /**
51
+ */
52
+ get origin() {
53
+ return this._origin ?? "";
54
+ }
55
+
56
+ /**
57
+ */
58
+ get contextPath() {
59
+ return this._contextPath ?? getBasePath();
60
+ }
61
+
43
62
  /**
44
63
  * retrieve href of action
45
64
  */
46
65
  get selfhref() {
47
- return this._href || new Href(`${this.data.href}?${this.querystring}`, "Form");
66
+ return this._href ?? new Href(`${this.data.href}?${this.querystring}`, "Form", this.origin, this.contextPath);
48
67
  }
49
68
 
50
69
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"ActionModel.js","names":["has","ProcessStatusSettingsModel","AttributeCollection","BaseModel","Href","HTTP_METHODS","CREATE_ACTION","UPDATE_ACTION","DELETE_ACTION","ActionModel","constructor","data","contributions","_defineProperty","_fieldCollection","fields","createFromHref","name","href","label","type","arguments","length","undefined","isDisabled","selfhref","_href","querystring","method","getData","POST","layouthint","getContribution","all","fieldCollection","_context","_context2","_mapInstanceProperty","_filterInstanceProperty","call","attribute","value","join","getFieldByKey","key","getAttributeByKey","hasFieldByKey","isProcessTask","processStatus","icon","_icon"],"sources":["../../../src/models/actions/ActionModel.js"],"sourcesContent":["// @flow\nimport { has } from \"../../utils/helpers/objects\";\n\nimport ProcessStatusSettingsModel from \"../process/ProcessStatusSettingsModel\";\nimport AttributeCollection from \"../attributes/AttributeCollection\";\nimport BaseModel from \"../base/BaseModel\";\nimport Href from \"../href/Href\";\n\nimport { HTTP_METHODS } from \"../../constants/Constants\";\nimport {\n CREATE_ACTION,\n UPDATE_ACTION,\n DELETE_ACTION,\n} from \"../../constants/LayoutHints\";\n\nimport type { AttributeType } from \"../types\";\n\n/**\n * Defines an Action. For instance an action on the tab 'books', which leads to a form\n */\nexport default class ActionModel extends BaseModel {\n _fieldCollection: AttributeCollection;\n _href: Href;\n _icon: string;\n\n constructor(data: Object, contributions: Object) {\n super(data, contributions);\n\n this._fieldCollection = new AttributeCollection(\n this.data.fields,\n this.contributions.fields,\n );\n }\n\n /**\n */\n static createFromHref(\n name: string,\n href: string,\n label: string,\n type: string = \"form\",\n ): ActionModel {\n return new ActionModel(\n {\n name,\n href,\n },\n {\n name,\n label: label || name,\n type,\n },\n );\n }\n\n /**\n */\n get isDisabled(): boolean {\n return this.data.href == null;\n }\n\n /**\n * retrieve href of action\n */\n get selfhref(): Href {\n return (\n this._href || new Href(`${this.data.href}?${this.querystring}`, \"Form\")\n );\n }\n\n /**\n */\n set selfhref(href: Href) {\n this._href = href;\n }\n\n /**\n * retrieve request method\n */\n get method(): $Keys<typeof HTTP_METHODS> {\n return this.getData(\"method\", HTTP_METHODS.POST);\n }\n\n /**\n * Retrieve type of method\n */\n get type(): string {\n if (this.layouthint.has(CREATE_ACTION)) {\n return \"create\";\n }\n if (this.layouthint.has(UPDATE_ACTION)) {\n return \"update\";\n }\n if (this.layouthint.has(DELETE_ACTION)) {\n return \"delete\";\n }\n\n return this.getContribution(\"type\", \"general\");\n }\n\n /**\n * Retrieve name of action\n */\n get name(): string {\n return this.getData(\"name\", \"unknown\");\n }\n\n /**\n * retrieve the collection of field attributes as an array\n */\n get fields(): Array<AttributeType> {\n return this._fieldCollection.all;\n }\n\n /**\n * Retrieve the field collection\n */\n get fieldCollection(): AttributeCollection {\n return this._fieldCollection;\n }\n\n /**\n */\n set fieldCollection(fieldCollection: AttributeCollection) {\n this._fieldCollection = fieldCollection;\n }\n\n /**\n * Retrieve querystring of action\n */\n get querystring(): string {\n return this.fields\n .filter((attribute) => attribute.value != null && attribute.value !== \"\")\n .map((attribute) => {\n const { value } = attribute;\n if (value !== null) {\n return `${attribute.name}=${value}`;\n }\n return attribute.name;\n })\n .join(\"&\");\n }\n\n /**\n * Retrieve a field by it's key\n */\n getFieldByKey(key: string): AttributeType | null {\n return this._fieldCollection.getAttributeByKey(key);\n }\n\n /**\n * Indicates if field exists by the given key\n */\n hasFieldByKey(key: string): boolean {\n return this.getFieldByKey(key) !== null;\n }\n\n /**\n * Getting the key/name of this action\n */\n get key(): string {\n return this.data.name;\n }\n\n /**\n * Getting the label of the action\n */\n get label(): string {\n return this.getContribution(\"label\", this.key);\n }\n\n /**\n */\n get isProcessTask(): boolean {\n return has(this.contributions, \"processTask\");\n }\n\n /**\n */\n get processStatus(): ProcessStatusSettingsModel | null {\n if (this.isProcessTask) {\n return new ProcessStatusSettingsModel(\n this.getData(\"processStatus\", {}),\n this.getContribution(\"processTask\", {}),\n );\n }\n\n return null;\n }\n\n /**\n */\n get icon(): string {\n return this._icon;\n }\n\n /**\n */\n set icon(icon: string) {\n this._icon = icon;\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"ActionModel.js","names":["has","ProcessStatusSettingsModel","AttributeCollection","BaseModel","Href","getBasePath","HTTP_METHODS","CREATE_ACTION","UPDATE_ACTION","DELETE_ACTION","ActionModel","constructor","data","contributions","origin","contextPath","_defineProperty","_fieldCollection","fields","_origin","_contextPath","createFromHref","name","href","label","type","arguments","length","undefined","isDisabled","selfhref","_href","querystring","method","getData","POST","layouthint","getContribution","all","fieldCollection","_context","_context2","_mapInstanceProperty","_filterInstanceProperty","call","attribute","value","join","getFieldByKey","key","getAttributeByKey","hasFieldByKey","isProcessTask","processStatus","icon","_icon"],"sources":["../../../src/models/actions/ActionModel.js"],"sourcesContent":["// @flow\nimport { has } from \"../../utils/helpers/objects\";\n\nimport ProcessStatusSettingsModel from \"../process/ProcessStatusSettingsModel\";\nimport AttributeCollection from \"../attributes/AttributeCollection\";\nimport BaseModel from \"../base/BaseModel\";\nimport Href from \"../href/Href\";\n\nimport {\n getBasePath,\n HTTP_METHODS,\n CREATE_ACTION,\n UPDATE_ACTION,\n DELETE_ACTION,\n} from \"../../constants\";\n\nimport type { AttributeType } from \"../types\";\n\n/**\n * Defines an Action. For instance an action on the tab 'books', which leads to a form\n */\nexport default class ActionModel extends BaseModel {\n _fieldCollection: AttributeCollection;\n _href: Href;\n _icon: string;\n _origin: ?string;\n _contextPath: ?string;\n\n constructor(\n data: Object,\n contributions: Object,\n origin?: string,\n contextPath?: string,\n ) {\n super(data, contributions);\n\n this._fieldCollection = new AttributeCollection(\n this.data.fields,\n this.contributions.fields,\n );\n this._origin = origin;\n this._contextPath = contextPath;\n }\n\n /**\n */\n static createFromHref(\n name: string,\n href: string,\n label: string,\n type: string = \"form\",\n origin?: string,\n contextPath?: string,\n ): ActionModel {\n const data = { name, href };\n const contributions = { name, label: label ?? name, type };\n return new ActionModel(data, contributions, origin, contextPath);\n }\n\n /**\n */\n get isDisabled(): boolean {\n return this.data.href == null;\n }\n\n /**\n */\n get origin(): string {\n return this._origin ?? \"\";\n }\n\n /**\n */\n get contextPath(): string {\n return this._contextPath ?? getBasePath();\n }\n\n /**\n * retrieve href of action\n */\n get selfhref(): Href {\n return (\n this._href ??\n new Href(\n `${this.data.href}?${this.querystring}`,\n \"Form\",\n this.origin,\n this.contextPath,\n )\n );\n }\n\n /**\n */\n set selfhref(href: Href) {\n this._href = href;\n }\n\n /**\n * retrieve request method\n */\n get method(): $Keys<typeof HTTP_METHODS> {\n return this.getData(\"method\", HTTP_METHODS.POST);\n }\n\n /**\n * Retrieve type of method\n */\n get type(): string {\n if (this.layouthint.has(CREATE_ACTION)) {\n return \"create\";\n }\n if (this.layouthint.has(UPDATE_ACTION)) {\n return \"update\";\n }\n if (this.layouthint.has(DELETE_ACTION)) {\n return \"delete\";\n }\n\n return this.getContribution(\"type\", \"general\");\n }\n\n /**\n * Retrieve name of action\n */\n get name(): string {\n return this.getData(\"name\", \"unknown\");\n }\n\n /**\n * retrieve the collection of field attributes as an array\n */\n get fields(): Array<AttributeType> {\n return this._fieldCollection.all;\n }\n\n /**\n * Retrieve the field collection\n */\n get fieldCollection(): AttributeCollection {\n return this._fieldCollection;\n }\n\n /**\n */\n set fieldCollection(fieldCollection: AttributeCollection) {\n this._fieldCollection = fieldCollection;\n }\n\n /**\n * Retrieve querystring of action\n */\n get querystring(): string {\n return this.fields\n .filter((attribute) => attribute.value != null && attribute.value !== \"\")\n .map((attribute) => {\n const { value } = attribute;\n if (value !== null) {\n return `${attribute.name}=${value}`;\n }\n return attribute.name;\n })\n .join(\"&\");\n }\n\n /**\n * Retrieve a field by it's key\n */\n getFieldByKey(key: string): AttributeType | null {\n return this._fieldCollection.getAttributeByKey(key);\n }\n\n /**\n * Indicates if field exists by the given key\n */\n hasFieldByKey(key: string): boolean {\n return this.getFieldByKey(key) !== null;\n }\n\n /**\n * Getting the key/name of this action\n */\n get key(): string {\n return this.data.name;\n }\n\n /**\n * Getting the label of the action\n */\n get label(): string {\n return this.getContribution(\"label\", this.key);\n }\n\n /**\n */\n get isProcessTask(): boolean {\n return has(this.contributions, \"processTask\");\n }\n\n /**\n */\n get processStatus(): ProcessStatusSettingsModel | null {\n if (this.isProcessTask) {\n return new ProcessStatusSettingsModel(\n this.getData(\"processStatus\", {}),\n this.getContribution(\"processTask\", {}),\n );\n }\n\n return null;\n }\n\n /**\n */\n get icon(): string {\n return this._icon;\n }\n\n /**\n */\n set icon(icon: string) {\n this._icon = icon;\n }\n}\n"],"mappings":";;;AACA,SAASA,GAAG,QAAQ,6BAA6B;AAEjD,OAAOC,0BAA0B,MAAM,uCAAuC;AAC9E,OAAOC,mBAAmB,MAAM,mCAAmC;AACnE,OAAOC,SAAS,MAAM,mBAAmB;AACzC,OAAOC,IAAI,MAAM,cAAc;AAE/B,SACEC,WAAW,EACXC,YAAY,EACZC,aAAa,EACbC,aAAa,EACbC,aAAa,QACR,iBAAiB;AAIxB;AACA;AACA;AACA,eAAe,MAAMC,WAAW,SAASP,SAAS,CAAC;EAOjDQ,WAAWA,CACTC,IAAY,EACZC,aAAqB,EACrBC,MAAe,EACfC,WAAoB,EACpB;IACA,KAAK,CAACH,IAAI,EAAEC,aAAa,CAAC;IAACG,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAE3B,IAAI,CAACC,gBAAgB,GAAG,IAAIf,mBAAmB,CAC7C,IAAI,CAACU,IAAI,CAACM,MAAM,EAChB,IAAI,CAACL,aAAa,CAACK,MACrB,CAAC;IACD,IAAI,CAACC,OAAO,GAAGL,MAAM;IACrB,IAAI,CAACM,YAAY,GAAGL,WAAW;EACjC;;EAEA;AACF;EACE,OAAOM,cAAcA,CACnBC,IAAY,EACZC,IAAY,EACZC,KAAa,EAIA;IAAA,IAHbC,IAAY,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,MAAM;IAAA,IACrBZ,MAAe,GAAAY,SAAA,CAAAC,MAAA,OAAAD,SAAA,MAAAE,SAAA;IAAA,IACfb,WAAoB,GAAAW,SAAA,CAAAC,MAAA,OAAAD,SAAA,MAAAE,SAAA;IAEpB,MAAMhB,IAAI,GAAG;MAAEU,IAAI;MAAEC;IAAK,CAAC;IAC3B,MAAMV,aAAa,GAAG;MAAES,IAAI;MAAEE,KAAK,EAAEA,KAAK,IAAIF,IAAI;MAAEG;IAAK,CAAC;IAC1D,OAAO,IAAIf,WAAW,CAACE,IAAI,EAAEC,aAAa,EAAEC,MAAM,EAAEC,WAAW,CAAC;EAClE;;EAEA;AACF;EACE,IAAIc,UAAUA,CAAA,EAAY;IACxB,OAAO,IAAI,CAACjB,IAAI,CAACW,IAAI,IAAI,IAAI;EAC/B;;EAEA;AACF;EACE,IAAIT,MAAMA,CAAA,EAAW;IACnB,OAAO,IAAI,CAACK,OAAO,IAAI,EAAE;EAC3B;;EAEA;AACF;EACE,IAAIJ,WAAWA,CAAA,EAAW;IACxB,OAAO,IAAI,CAACK,YAAY,IAAIf,WAAW,CAAC,CAAC;EAC3C;;EAEA;AACF;AACA;EACE,IAAIyB,QAAQA,CAAA,EAAS;IACnB,OACE,IAAI,CAACC,KAAK,IACV,IAAI3B,IAAI,CACN,GAAG,IAAI,CAACQ,IAAI,CAACW,IAAI,IAAI,IAAI,CAACS,WAAW,EAAE,EACvC,MAAM,EACN,IAAI,CAAClB,MAAM,EACX,IAAI,CAACC,WACP,CAAC;EAEL;;EAEA;AACF;EACE,IAAIe,QAAQA,CAACP,IAAU,EAAE;IACvB,IAAI,CAACQ,KAAK,GAAGR,IAAI;EACnB;;EAEA;AACF;AACA;EACE,IAAIU,MAAMA,CAAA,EAA+B;IACvC,OAAO,IAAI,CAACC,OAAO,CAAC,QAAQ,EAAE5B,YAAY,CAAC6B,IAAI,CAAC;EAClD;;EAEA;AACF;AACA;EACE,IAAIV,IAAIA,CAAA,EAAW;IACjB,IAAI,IAAI,CAACW,UAAU,CAACpC,GAAG,CAACO,aAAa,CAAC,EAAE;MACtC,OAAO,QAAQ;IACjB;IACA,IAAI,IAAI,CAAC6B,UAAU,CAACpC,GAAG,CAACQ,aAAa,CAAC,EAAE;MACtC,OAAO,QAAQ;IACjB;IACA,IAAI,IAAI,CAAC4B,UAAU,CAACpC,GAAG,CAACS,aAAa,CAAC,EAAE;MACtC,OAAO,QAAQ;IACjB;IAEA,OAAO,IAAI,CAAC4B,eAAe,CAAC,MAAM,EAAE,SAAS,CAAC;EAChD;;EAEA;AACF;AACA;EACE,IAAIf,IAAIA,CAAA,EAAW;IACjB,OAAO,IAAI,CAACY,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC;EACxC;;EAEA;AACF;AACA;EACE,IAAIhB,MAAMA,CAAA,EAAyB;IACjC,OAAO,IAAI,CAACD,gBAAgB,CAACqB,GAAG;EAClC;;EAEA;AACF;AACA;EACE,IAAIC,eAAeA,CAAA,EAAwB;IACzC,OAAO,IAAI,CAACtB,gBAAgB;EAC9B;;EAEA;AACF;EACE,IAAIsB,eAAeA,CAACA,eAAoC,EAAE;IACxD,IAAI,CAACtB,gBAAgB,GAAGsB,eAAe;EACzC;;EAEA;AACF;AACA;EACE,IAAIP,WAAWA,CAAA,EAAW;IAAA,IAAAQ,QAAA,EAAAC,SAAA;IACxB,OAAOC,oBAAA,CAAAF,QAAA,GAAAG,uBAAA,CAAAF,SAAA,OAAI,CAACvB,MAAM,EAAA0B,IAAA,CAAAH,SAAA,EACPI,SAAS,IAAKA,SAAS,CAACC,KAAK,IAAI,IAAI,IAAID,SAAS,CAACC,KAAK,KAAK,EAAE,CAAC,EAAAF,IAAA,CAAAJ,QAAA,EACnEK,SAAS,IAAK;MAClB,MAAM;QAAEC;MAAM,CAAC,GAAGD,SAAS;MAC3B,IAAIC,KAAK,KAAK,IAAI,EAAE;QAClB,OAAO,GAAGD,SAAS,CAACvB,IAAI,IAAIwB,KAAK,EAAE;MACrC;MACA,OAAOD,SAAS,CAACvB,IAAI;IACvB,CAAC,CAAC,CACDyB,IAAI,CAAC,GAAG,CAAC;EACd;;EAEA;AACF;AACA;EACEC,aAAaA,CAACC,GAAW,EAAwB;IAC/C,OAAO,IAAI,CAAChC,gBAAgB,CAACiC,iBAAiB,CAACD,GAAG,CAAC;EACrD;;EAEA;AACF;AACA;EACEE,aAAaA,CAACF,GAAW,EAAW;IAClC,OAAO,IAAI,CAACD,aAAa,CAACC,GAAG,CAAC,KAAK,IAAI;EACzC;;EAEA;AACF;AACA;EACE,IAAIA,GAAGA,CAAA,EAAW;IAChB,OAAO,IAAI,CAACrC,IAAI,CAACU,IAAI;EACvB;;EAEA;AACF;AACA;EACE,IAAIE,KAAKA,CAAA,EAAW;IAClB,OAAO,IAAI,CAACa,eAAe,CAAC,OAAO,EAAE,IAAI,CAACY,GAAG,CAAC;EAChD;;EAEA;AACF;EACE,IAAIG,aAAaA,CAAA,EAAY;IAC3B,OAAOpD,GAAG,CAAC,IAAI,CAACa,aAAa,EAAE,aAAa,CAAC;EAC/C;;EAEA;AACF;EACE,IAAIwC,aAAaA,CAAA,EAAsC;IACrD,IAAI,IAAI,CAACD,aAAa,EAAE;MACtB,OAAO,IAAInD,0BAA0B,CACnC,IAAI,CAACiC,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EACjC,IAAI,CAACG,eAAe,CAAC,aAAa,EAAE,CAAC,CAAC,CACxC,CAAC;IACH;IAEA,OAAO,IAAI;EACb;;EAEA;AACF;EACE,IAAIiB,IAAIA,CAAA,EAAW;IACjB,OAAO,IAAI,CAACC,KAAK;EACnB;;EAEA;AACF;EACE,IAAID,IAAIA,CAACA,IAAY,EAAE;IACrB,IAAI,CAACC,KAAK,GAAGD,IAAI;EACnB;AACF","ignoreList":[]}
@@ -81,7 +81,7 @@ export default class ApplicationModel extends ResourceModel {
81
81
  * Get modelcatalog link
82
82
  */
83
83
  get modelcatalog() {
84
- return LinkModel.create("modelcatalog", "/modelcatalog", "Model catalog");
84
+ return LinkModel.create("modelcatalog", "/modelcatalog", "Model catalog", this.origin, this.contextPath);
85
85
  }
86
86
 
87
87
  /**