@beinformed/ui 1.26.0 → 1.27.0-beta.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 (173) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/esm/constants/Constants.js +9 -35
  3. package/esm/constants/Constants.js.map +1 -1
  4. package/esm/constants/Settings.js +47 -1
  5. package/esm/constants/Settings.js.map +1 -1
  6. package/esm/hooks/useAuthentication.js +7 -6
  7. package/esm/hooks/useAuthentication.js.map +1 -1
  8. package/esm/models/application/ApplicationModel.js +2 -3
  9. package/esm/models/application/ApplicationModel.js.map +1 -1
  10. package/esm/models/attributes/UploadAttributeModel.js +15 -3
  11. package/esm/models/attributes/UploadAttributeModel.js.map +1 -1
  12. package/esm/models/error/ErrorModel.js +11 -0
  13. package/esm/models/error/ErrorModel.js.map +1 -1
  14. package/esm/models/href/Href.js +4 -4
  15. package/esm/models/href/Href.js.map +1 -1
  16. package/esm/modularui/Authenticate.js +6 -6
  17. package/esm/modularui/Authenticate.js.map +1 -1
  18. package/esm/modularui/CaptchaRequest.js +38 -0
  19. package/esm/modularui/CaptchaRequest.js.map +1 -0
  20. package/esm/modularui/ModularUIRequest.js +8 -6
  21. package/esm/modularui/ModularUIRequest.js.map +1 -1
  22. package/esm/modularui/UploadRequest.js +92 -0
  23. package/esm/modularui/UploadRequest.js.map +1 -0
  24. package/esm/modularui/index.js +2 -0
  25. package/esm/modularui/index.js.map +1 -1
  26. package/esm/react-client/client.js +2 -2
  27. package/esm/react-client/client.js.map +1 -1
  28. package/esm/react-server/contextPath.js +2 -2
  29. package/esm/react-server/contextPath.js.map +1 -1
  30. package/esm/react-server/renderSSRComplete.js +5 -4
  31. package/esm/react-server/renderSSRComplete.js.map +1 -1
  32. package/esm/react-server/renderSSRMinimal.js +2 -2
  33. package/esm/react-server/renderSSRMinimal.js.map +1 -1
  34. package/esm/redux/_modularui/ModularUIMiddleware.js.map +1 -1
  35. package/esm/redux/_modularui/types.js.map +1 -1
  36. package/esm/utils/browser/Cookies.js +6 -7
  37. package/esm/utils/browser/Cookies.js.map +1 -1
  38. package/esm/utils/fetch/serverFetch.js +2 -2
  39. package/esm/utils/fetch/serverFetch.js.map +1 -1
  40. package/esm/utils/fetch/types.js.map +1 -1
  41. package/esm/utils/fetch/universalFetch.js +4 -3
  42. package/esm/utils/fetch/universalFetch.js.map +1 -1
  43. package/esm/utils/fetch/xhr.js.map +1 -1
  44. package/esm/utils/helpers/checkResource.js +0 -3
  45. package/esm/utils/helpers/checkResource.js.map +1 -1
  46. package/esm/utils/helpers/index.js +8 -0
  47. package/esm/utils/helpers/index.js.map +1 -0
  48. package/esm/utils/helpers/repositoryResource.js +18 -0
  49. package/esm/utils/helpers/repositoryResource.js.map +1 -0
  50. package/esm/utils/index.js +1 -6
  51. package/esm/utils/index.js.map +1 -1
  52. package/lib/constants/Constants.js +13 -42
  53. package/lib/constants/Constants.js.flow +9 -41
  54. package/lib/constants/Constants.js.map +1 -1
  55. package/lib/constants/Settings.js +53 -1
  56. package/lib/constants/Settings.js.flow +60 -0
  57. package/lib/constants/Settings.js.map +1 -1
  58. package/lib/hooks/useAuthentication.js +6 -5
  59. package/lib/hooks/useAuthentication.js.flow +9 -8
  60. package/lib/hooks/useAuthentication.js.map +1 -1
  61. package/lib/models/application/ApplicationModel.js +1 -1
  62. package/lib/models/application/ApplicationModel.js.flow +3 -2
  63. package/lib/models/application/ApplicationModel.js.map +1 -1
  64. package/lib/models/attributes/UploadAttributeModel.js +15 -3
  65. package/lib/models/attributes/UploadAttributeModel.js.flow +21 -0
  66. package/lib/models/attributes/UploadAttributeModel.js.map +1 -1
  67. package/lib/models/error/ErrorModel.js +11 -0
  68. package/lib/models/error/ErrorModel.js.flow +12 -1
  69. package/lib/models/error/ErrorModel.js.map +1 -1
  70. package/lib/models/href/Href.js +6 -6
  71. package/lib/models/href/Href.js.flow +4 -4
  72. package/lib/models/href/Href.js.map +1 -1
  73. package/lib/models/href/__tests__/Href.spec.js.flow +2 -3
  74. package/lib/modularui/Authenticate.js +4 -4
  75. package/lib/modularui/Authenticate.js.flow +6 -5
  76. package/lib/modularui/Authenticate.js.map +1 -1
  77. package/lib/modularui/CaptchaRequest.js +46 -0
  78. package/lib/modularui/CaptchaRequest.js.flow +45 -0
  79. package/lib/modularui/CaptchaRequest.js.map +1 -0
  80. package/lib/modularui/ModularUIRequest.js +6 -4
  81. package/lib/modularui/ModularUIRequest.js.flow +10 -10
  82. package/lib/modularui/ModularUIRequest.js.map +1 -1
  83. package/lib/modularui/UploadRequest.js +100 -0
  84. package/lib/modularui/UploadRequest.js.flow +127 -0
  85. package/lib/modularui/UploadRequest.js.map +1 -0
  86. package/lib/modularui/index.js +14 -0
  87. package/lib/modularui/index.js.flow +2 -0
  88. package/lib/modularui/index.js.map +1 -1
  89. package/lib/react-client/client.js +2 -2
  90. package/lib/react-client/client.js.flow +2 -2
  91. package/lib/react-client/client.js.map +1 -1
  92. package/lib/react-server/contextPath.js +2 -2
  93. package/lib/react-server/contextPath.js.flow +2 -2
  94. package/lib/react-server/contextPath.js.map +1 -1
  95. package/lib/react-server/renderSSRComplete.js +5 -4
  96. package/lib/react-server/renderSSRComplete.js.flow +6 -4
  97. package/lib/react-server/renderSSRComplete.js.map +1 -1
  98. package/lib/react-server/renderSSRMinimal.js +2 -2
  99. package/lib/react-server/renderSSRMinimal.js.flow +2 -2
  100. package/lib/react-server/renderSSRMinimal.js.map +1 -1
  101. package/lib/redux/_modularui/ModularUIMiddleware.js.flow +1 -1
  102. package/lib/redux/_modularui/ModularUIMiddleware.js.map +1 -1
  103. package/lib/redux/_modularui/types.js.flow +1 -1
  104. package/lib/redux/_modularui/types.js.map +1 -1
  105. package/lib/utils/browser/Cookies.js +3 -3
  106. package/lib/utils/browser/Cookies.js.flow +10 -8
  107. package/lib/utils/browser/Cookies.js.map +1 -1
  108. package/lib/utils/fetch/serverFetch.js +2 -2
  109. package/lib/utils/fetch/serverFetch.js.flow +2 -2
  110. package/lib/utils/fetch/serverFetch.js.map +1 -1
  111. package/lib/utils/fetch/types.js.flow +1 -1
  112. package/lib/utils/fetch/types.js.map +1 -1
  113. package/lib/utils/fetch/universalFetch.js +3 -2
  114. package/lib/utils/fetch/universalFetch.js.flow +5 -3
  115. package/lib/utils/fetch/universalFetch.js.map +1 -1
  116. package/lib/utils/fetch/xhr.js.flow +1 -1
  117. package/lib/utils/fetch/xhr.js.map +1 -1
  118. package/lib/utils/helpers/checkResource.js +0 -3
  119. package/lib/utils/helpers/checkResource.js.flow +0 -2
  120. package/lib/utils/helpers/checkResource.js.map +1 -1
  121. package/lib/utils/helpers/index.js +90 -0
  122. package/lib/utils/helpers/index.js.flow +8 -0
  123. package/lib/utils/helpers/index.js.map +1 -0
  124. package/lib/utils/helpers/repositoryResource.js +25 -0
  125. package/lib/utils/helpers/repositoryResource.js.flow +20 -0
  126. package/lib/utils/helpers/repositoryResource.js.map +1 -0
  127. package/lib/utils/index.js +4 -60
  128. package/lib/utils/index.js.flow +1 -6
  129. package/lib/utils/index.js.map +1 -1
  130. package/package.json +11 -11
  131. package/src/constants/Constants.js +9 -41
  132. package/src/constants/Settings.js +60 -0
  133. package/src/hooks/useAuthentication.js +9 -8
  134. package/src/models/application/ApplicationModel.js +3 -2
  135. package/src/models/attributes/UploadAttributeModel.js +21 -0
  136. package/src/models/error/ErrorModel.js +12 -1
  137. package/src/models/href/Href.js +4 -4
  138. package/src/models/href/__tests__/Href.spec.js +2 -3
  139. package/src/modularui/Authenticate.js +6 -5
  140. package/src/modularui/CaptchaRequest.js +45 -0
  141. package/src/modularui/ModularUIRequest.js +10 -10
  142. package/src/modularui/UploadRequest.js +127 -0
  143. package/src/modularui/index.js +2 -0
  144. package/src/react-client/client.js +2 -2
  145. package/src/react-server/contextPath.js +2 -2
  146. package/src/react-server/renderSSRComplete.js +6 -4
  147. package/src/react-server/renderSSRMinimal.js +2 -2
  148. package/src/redux/_modularui/ModularUIMiddleware.js +1 -1
  149. package/src/redux/_modularui/types.js +1 -1
  150. package/src/utils/browser/Cookies.js +10 -8
  151. package/src/utils/fetch/serverFetch.js +2 -2
  152. package/src/utils/fetch/types.js +1 -1
  153. package/src/utils/fetch/universalFetch.js +5 -3
  154. package/src/utils/fetch/xhr.js +1 -1
  155. package/src/utils/helpers/checkResource.js +0 -2
  156. package/src/utils/helpers/index.js +8 -0
  157. package/src/utils/helpers/repositoryResource.js +20 -0
  158. package/src/utils/index.js +1 -6
  159. package/types/constants/Constants.d.ts +8 -24
  160. package/types/constants/Settings.d.ts +12 -0
  161. package/types/models/attributes/UploadAttributeModel.d.ts +6 -0
  162. package/types/models/error/ErrorModel.d.ts +5 -0
  163. package/types/models/href/Href.d.ts +1 -1
  164. package/types/modularui/CaptchaRequest.d.ts +17 -0
  165. package/types/modularui/ModularUIRequest.d.ts +4 -6
  166. package/types/modularui/UploadRequest.d.ts +35 -0
  167. package/types/modularui/index.d.ts +2 -0
  168. package/types/redux/_modularui/types.d.ts +1 -3
  169. package/types/utils/browser/Cookies.d.ts +0 -6
  170. package/types/utils/fetch/types.d.ts +1 -3
  171. package/types/utils/helpers/index.d.ts +7 -0
  172. package/types/utils/helpers/repositoryResource.d.ts +1 -0
  173. package/types/utils/index.d.ts +1 -6
package/CHANGELOG.md CHANGED
@@ -2,6 +2,27 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
4
 
5
+ ## [1.27.0-beta.1](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/compare/v1.27.0-beta.0...v1.27.0-beta.1) (2023-01-20)
6
+
7
+ ## [1.27.0-beta.0](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/compare/v1.25.6...v1.27.0-beta.0) (2023-01-20)
8
+
9
+ ### Features
10
+
11
+ - **base-path:** getRepositoryResourceUrl create an url that can be used to retrieve resources from the repository ([b1c904b](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/commit/b1c904b03faf7bb04f851b568420176a1885a88e))
12
+ - **base-path:** make base path (context path) a setting that can be called during runtime ([b9d3aca](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/commit/b9d3aca45c9164dcde5de7018075e08bf149b16f))
13
+ - **captcha:** new CaptchaRequest class for easy handling of captcha attribute using the captcha servlet ([de29cc7](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/commit/de29cc7dbda7b1f5cd13cb0883ab66e6430de85d))
14
+ - **error-model:** add getMessage method to retrieve error as message ([1350a6d](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/commit/1350a6dae6050e1e5a4758ff478e187be05551c7))
15
+ - **init:** load the webapplication on start of application ([27c7bc1](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/commit/27c7bc1d3280e328e06bc5d0a4bfcf745d5f9358))
16
+ - **modularui-request:** add fetchSync method to fetch models on the server ([341a9ac](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/commit/341a9ac78cddd72a135da1b0666157217044d329))
17
+ - **settings:** convenience method to retrieve swim lane diagram configuration ([b7dc843](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/commit/b7dc843c17f4f7ff2f8a70c2f8549cf036bdeaa0))
18
+ - **upload-attribute:** add accepted files property as convenience method for accept attribute of file input ([7034393](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/commit/703439327f6875ddab34229e5181134dd530c451))
19
+ - **upload:** new UploadRequest class for easy upload of files to the Be Informed upload servlet ([b83e1b0](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/commit/b83e1b0d7d46c6dbd58b707eee1b10d318447486))
20
+
21
+ ### Bug Fixes
22
+
23
+ - **boolean-attribute:** boolean attribute toggle or checkbox can be null on creation ([971ed1e](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/commit/971ed1e58764d7a78b394b85d44ca7646e096078))
24
+ - **store:** location change when router is not available in initialState ([2dfd88c](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/commit/2dfd88c6c721ee3ca627efcd09c71d3e6ad2cc60))
25
+
5
26
  ## [1.26.0](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/compare/v1.25.6...v1.26.0) (2023-01-13)
6
27
 
7
28
  ### Features
@@ -1,48 +1,17 @@
1
- /**
2
- * Indicates if contributions should be cached
3
- */
4
- export const USE_CACHE = true;
5
- const serverBase = typeof __CONTEXT_PATH__ === "undefined" ? null : __CONTEXT_PATH__;
6
-
7
- /**
8
- * Base path
9
- * This uses contextPath set from property from server
10
- * When requesting a remote server with CORS enabled, add the origin, for example:
11
- * export const BEINFORMED_PATH = 'http://192.168.128.61:8080/BeInformed';
12
- */
13
- export const BASE = serverBase ?? (typeof window !== "undefined" && window.contextPath ? window.contextPath : "/BeInformed");
14
-
15
- /**
16
- * Path to the contributions api end point
17
- * /contributions uri part is added through the _links in the data service
18
- */
19
- export const MODULARUI_CONTRIBUTIONS = "/contributions";
20
-
21
- /**
22
- * Application uri
23
- * @private
24
- */
25
- const APPLICATION_URI = "/";
26
-
27
- /**
28
- * Base Path
29
- */
30
- export const APPLICATION_PATH = BASE + APPLICATION_URI;
31
-
32
1
  /**
33
2
  * path to content service
34
3
  */
35
- export const CONTENT_PATH = `${BASE}/content`;
4
+ export const CONTENT_PATH = `/content`;
36
5
 
37
6
  /**
38
7
  * Upload Path
39
8
  */
40
- export const UPLOAD_PATH = `${BASE}/uploadFile`;
9
+ export const UPLOAD_PATH = `/uploadFile`;
41
10
 
42
11
  /**
43
12
  * Captcha Path
44
13
  */
45
- export const CAPTCHA_PATH = `${BASE}/captchaServices`;
14
+ export const CAPTCHA_PATH = `/captchaServices`;
46
15
 
47
16
  /**
48
17
  * Path to change password page / component
@@ -54,6 +23,11 @@ export const CHANGEPASSWORD_PATH = "/change-password";
54
23
  */
55
24
  export const USERPROFILE_PATH = "/user";
56
25
 
26
+ /**
27
+ * Path to resources in the Be Informed repository
28
+ */
29
+ export const RESOURCE_PATH = "/resource";
30
+
57
31
  /**
58
32
  * Separator for parameters of a list, makes it possible to render multiple lists on a page in a non-js environment
59
33
  */
@@ -181,7 +155,7 @@ export const LOGIN_PATH_SETTING = "FormClient.login_url";
181
155
  export const LOGIN_USERNAME_SETTING = "FormClient.username_field_name";
182
156
  export const LOGIN_PASSWORD_SETTING = "FormClient.password_field_name";
183
157
  export const LOGOUT_PATH_SETTING = "FormClient.logout_url";
184
- export const fallbackDefaultAuthenticationType = {
158
+ export const DEFAULT_AUTHENTICATION_TYPE = {
185
159
  name: "Form based authentication",
186
160
  authentication: "DefaultFormClient",
187
161
  isPrimary: true
@@ -1 +1 @@
1
- {"version":3,"file":"Constants.js","names":["USE_CACHE","serverBase","__CONTEXT_PATH__","BASE","window","contextPath","MODULARUI_CONTRIBUTIONS","APPLICATION_URI","APPLICATION_PATH","CONTENT_PATH","UPLOAD_PATH","CAPTCHA_PATH","CHANGEPASSWORD_PATH","USERPROFILE_PATH","PARAMETER_SEPARATOR","TIMEVERSION_FILTER_NAME","PARAMETER_OVERVIEW_VIEWTYPE","DEFAULT_UI_PARAMETERS","ISO_DATE_FORMAT","ISO_DATETIME_FORMAT","ISO_TIME_FORMAT","ISO_TIMESTAMP_FORMAT","DEFAULT_WEEK_STARTS_ON","DEFAULT_FIRST_WEEK_CONTAINS_DATE","KEYCODES","TAB","ENTER","ESCAPE","SPACE","PAGE_UP","PAGE_DOWN","ARROW_LEFT","ARROW_UP","ARROW_RIGHT","ARROW_DOWN","IS_SYNC","dataFetcher","IS_SERVER","NOTIFICATION_TYPES","SUCCESS","INFO","WARNING","ERROR","HTTP_METHODS","GET","POST","MODULARUI_STATUS","LOADING","FINISHED","AUTOSAVE_STATUS","START","INPUT_DEBOUNCE_TIMEOUT","VALIDATE_DEBOUNCE_TIMEOUT","ATTRIBUTE_WIDTH","EXTRA_SMALL","SMALL","MEDIUM","LARGE","EXTRA_LARGE","ALL_CONTENT_IN_DATA_SETTING","LOGIN_TYPE","LOGIN_PATH_SETTING","LOGIN_USERNAME_SETTING","LOGIN_PASSWORD_SETTING","LOGOUT_PATH_SETTING","fallbackDefaultAuthenticationType","name","authentication","isPrimary"],"sources":["../../src/constants/Constants.js"],"sourcesContent":["// @flow\n/**\n * Indicates if contributions should be cached\n */\nexport const USE_CACHE = true;\n\nconst serverBase =\n typeof __CONTEXT_PATH__ === \"undefined\" ? null : __CONTEXT_PATH__;\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 BASE: string =\n serverBase ??\n (typeof window !== \"undefined\" && window.contextPath\n ? window.contextPath\n : \"/BeInformed\");\n\n/**\n * Path to the contributions api end point\n * /contributions uri part is added through the _links in the data service\n */\nexport const MODULARUI_CONTRIBUTIONS = \"/contributions\";\n\n/**\n * Application uri\n * @private\n */\nconst APPLICATION_URI = \"/\";\n\n/**\n * Base Path\n */\nexport const APPLICATION_PATH: string = BASE + APPLICATION_URI;\n\n/**\n * path to content service\n */\nexport const CONTENT_PATH = `${BASE}/content`;\n\n/**\n * Upload Path\n */\nexport const UPLOAD_PATH = `${BASE}/uploadFile`;\n\n/**\n * Captcha Path\n */\nexport const CAPTCHA_PATH = `${BASE}/captchaServices`;\n\n/**\n * Path to change password page / component\n */\nexport const CHANGEPASSWORD_PATH = \"/change-password\";\n\n/**\n * Path to user profile page / component\n */\nexport const USERPROFILE_PATH = \"/user\";\n\n/**\n * Separator for parameters of a list, makes it possible to render multiple lists on a page in a non-js environment\n */\nexport const PARAMETER_SEPARATOR = \"~\";\n\n/**\n * Timeversion filter name\n */\nexport const TIMEVERSION_FILTER_NAME = \"entryDate\";\n\nconst PARAMETER_OVERVIEW_VIEWTYPE = \"viewType\";\n/**\n * Parameter name for the viewtype toggle\n */\nexport const DEFAULT_UI_PARAMETERS: Array<string> = [\n PARAMETER_OVERVIEW_VIEWTYPE,\n];\n\n/**\n */\nexport const ISO_DATE_FORMAT = \"yyyy-MM-dd\";\n/**\n */\nexport const ISO_DATETIME_FORMAT = \"yyyy-MM-dd'T'HH:mm:ss\";\n/**\n */\nexport const ISO_TIME_FORMAT = \"HH:mm:ss\";\n/**\n */\nexport const ISO_TIMESTAMP_FORMAT = \"yyyy-MM-dd'T'HH:mm:ss.SSS\";\n/**\n * week starts on monday by default\n */\nexport const DEFAULT_WEEK_STARTS_ON = 1;\n\n/**\n * first week indicated by the 1st of january\n */\nexport const DEFAULT_FIRST_WEEK_CONTAINS_DATE = 1;\n\n/**\n * Key codes\n * @type {{SPACE: number, PAGE_DOWN: number, TAB: number, ARROW_RIGHT: number, ARROW_DOWN: number, ENTER: number, ARROW_UP: number, ARROW_LEFT: number, PAGE_UP: number, ESCAPE: number}}\n */\nexport const KEYCODES = {\n TAB: 9,\n ENTER: 13,\n ESCAPE: 27,\n SPACE: 32,\n PAGE_UP: 33,\n PAGE_DOWN: 34,\n ARROW_LEFT: 37,\n ARROW_UP: 38,\n ARROW_RIGHT: 39,\n ARROW_DOWN: 40,\n};\n\n/**\n * @type {boolean}\n */\nexport const IS_SYNC = typeof dataFetcher !== \"undefined\";\n/**\n * @type {boolean}\n */\nexport const IS_SERVER = IS_SYNC;\n\n/**\n * @type {{SUCCESS: string, ERROR: string, INFO: string, WARNING: string}}\n */\nexport const NOTIFICATION_TYPES = {\n SUCCESS: \"SUCCESS\",\n INFO: \"INFO\",\n WARNING: \"WARNING\",\n ERROR: \"ERROR\",\n};\n\n/**\n * SUPPORTED HTTP METHODS\n * @type {{POST: string, GET: string}}\n */\nexport const HTTP_METHODS = {\n GET: \"GET\",\n POST: \"POST\",\n};\n\n/**\n * POSSIBLE MODULARUI STATUSSES\n * @type {{LOADING: string, ERROR: string, FINISHED: string}}\n */\nexport const MODULARUI_STATUS = {\n LOADING: \"LOADING\",\n FINISHED: \"FINISHED\",\n ERROR: \"ERROR\",\n};\n\n/**\n * POSSIBLE AUTOSAVE STATUSSES\n * @type {{START: string, FINISHED: string}}\n */\nexport const AUTOSAVE_STATUS = {\n START: \"START\",\n FINISHED: \"FINISHED\",\n};\n\n/**\n * DEBOUNCE INPUT TIMEOUT\n */\nexport const INPUT_DEBOUNCE_TIMEOUT = 100;\n\n/**\n * DEBOUNCE VALIDATION TIMEOUT\n */\nexport const VALIDATE_DEBOUNCE_TIMEOUT = 500;\n\n/**\n * ATTRIBUTE WIDTH\n */\nexport const ATTRIBUTE_WIDTH = {\n EXTRA_SMALL: \"EXTRA_SMALL\",\n SMALL: \"SMALL\",\n MEDIUM: \"MEDIUM\",\n LARGE: \"LARGE\",\n EXTRA_LARGE: \"EXTRA_LARGE\",\n};\n\nexport const ALL_CONTENT_IN_DATA_SETTING = \"hasAllContentInData\";\n\nexport const LOGIN_TYPE = \"security.clients\";\nexport const LOGIN_PATH_SETTING = \"FormClient.login_url\";\nexport const LOGIN_USERNAME_SETTING = \"FormClient.username_field_name\";\nexport const LOGIN_PASSWORD_SETTING = \"FormClient.password_field_name\";\nexport const LOGOUT_PATH_SETTING = \"FormClient.logout_url\";\n\nexport const fallbackDefaultAuthenticationType = {\n name: \"Form based authentication\",\n authentication: \"DefaultFormClient\",\n isPrimary: true,\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"Constants.js","names":["CONTENT_PATH","UPLOAD_PATH","CAPTCHA_PATH","CHANGEPASSWORD_PATH","USERPROFILE_PATH","RESOURCE_PATH","PARAMETER_SEPARATOR","TIMEVERSION_FILTER_NAME","PARAMETER_OVERVIEW_VIEWTYPE","DEFAULT_UI_PARAMETERS","ISO_DATE_FORMAT","ISO_DATETIME_FORMAT","ISO_TIME_FORMAT","ISO_TIMESTAMP_FORMAT","DEFAULT_WEEK_STARTS_ON","DEFAULT_FIRST_WEEK_CONTAINS_DATE","KEYCODES","TAB","ENTER","ESCAPE","SPACE","PAGE_UP","PAGE_DOWN","ARROW_LEFT","ARROW_UP","ARROW_RIGHT","ARROW_DOWN","IS_SYNC","dataFetcher","IS_SERVER","NOTIFICATION_TYPES","SUCCESS","INFO","WARNING","ERROR","HTTP_METHODS","GET","POST","MODULARUI_STATUS","LOADING","FINISHED","AUTOSAVE_STATUS","START","INPUT_DEBOUNCE_TIMEOUT","VALIDATE_DEBOUNCE_TIMEOUT","ATTRIBUTE_WIDTH","EXTRA_SMALL","SMALL","MEDIUM","LARGE","EXTRA_LARGE","ALL_CONTENT_IN_DATA_SETTING","LOGIN_TYPE","LOGIN_PATH_SETTING","LOGIN_USERNAME_SETTING","LOGIN_PASSWORD_SETTING","LOGOUT_PATH_SETTING","DEFAULT_AUTHENTICATION_TYPE","name","authentication","isPrimary"],"sources":["../../src/constants/Constants.js"],"sourcesContent":["// @flow\n/**\n * path to content service\n */\nexport const CONTENT_PATH = `/content`;\n\n/**\n * Upload Path\n */\nexport const UPLOAD_PATH = `/uploadFile`;\n\n/**\n * Captcha Path\n */\nexport const CAPTCHA_PATH = `/captchaServices`;\n\n/**\n * Path to change password page / component\n */\nexport const CHANGEPASSWORD_PATH = \"/change-password\";\n\n/**\n * Path to user profile page / component\n */\nexport const USERPROFILE_PATH = \"/user\";\n\n/**\n * Path to resources in the Be Informed repository\n */\nexport const RESOURCE_PATH = \"/resource\";\n\n/**\n * Separator for parameters of a list, makes it possible to render multiple lists on a page in a non-js environment\n */\nexport const PARAMETER_SEPARATOR = \"~\";\n\n/**\n * Timeversion filter name\n */\nexport const TIMEVERSION_FILTER_NAME = \"entryDate\";\n\nconst PARAMETER_OVERVIEW_VIEWTYPE = \"viewType\";\n/**\n * Parameter name for the viewtype toggle\n */\nexport const DEFAULT_UI_PARAMETERS: Array<string> = [\n PARAMETER_OVERVIEW_VIEWTYPE,\n];\n\n/**\n */\nexport const ISO_DATE_FORMAT = \"yyyy-MM-dd\";\n/**\n */\nexport const ISO_DATETIME_FORMAT = \"yyyy-MM-dd'T'HH:mm:ss\";\n/**\n */\nexport const ISO_TIME_FORMAT = \"HH:mm:ss\";\n/**\n */\nexport const ISO_TIMESTAMP_FORMAT = \"yyyy-MM-dd'T'HH:mm:ss.SSS\";\n/**\n * week starts on monday by default\n */\nexport const DEFAULT_WEEK_STARTS_ON = 1;\n\n/**\n * first week indicated by the 1st of january\n */\nexport const DEFAULT_FIRST_WEEK_CONTAINS_DATE = 1;\n\n/**\n * Key codes\n * @type {{SPACE: number, PAGE_DOWN: number, TAB: number, ARROW_RIGHT: number, ARROW_DOWN: number, ENTER: number, ARROW_UP: number, ARROW_LEFT: number, PAGE_UP: number, ESCAPE: number}}\n */\nexport const KEYCODES = {\n TAB: 9,\n ENTER: 13,\n ESCAPE: 27,\n SPACE: 32,\n PAGE_UP: 33,\n PAGE_DOWN: 34,\n ARROW_LEFT: 37,\n ARROW_UP: 38,\n ARROW_RIGHT: 39,\n ARROW_DOWN: 40,\n};\n\n/**\n * @type {boolean}\n */\nexport const IS_SYNC = typeof dataFetcher !== \"undefined\";\n/**\n * @type {boolean}\n */\nexport const IS_SERVER = IS_SYNC;\n\n/**\n * @type {{SUCCESS: string, ERROR: string, INFO: string, WARNING: string}}\n */\nexport const NOTIFICATION_TYPES = {\n SUCCESS: \"SUCCESS\",\n INFO: \"INFO\",\n WARNING: \"WARNING\",\n ERROR: \"ERROR\",\n};\n\n/**\n * SUPPORTED HTTP METHODS\n * @type {{POST: string, GET: string}}\n */\nexport const HTTP_METHODS = {\n GET: \"GET\",\n POST: \"POST\",\n};\n\n/**\n * POSSIBLE MODULARUI STATUSSES\n * @type {{LOADING: string, ERROR: string, FINISHED: string}}\n */\nexport const MODULARUI_STATUS = {\n LOADING: \"LOADING\",\n FINISHED: \"FINISHED\",\n ERROR: \"ERROR\",\n};\n\n/**\n * POSSIBLE AUTOSAVE STATUSSES\n * @type {{START: string, FINISHED: string}}\n */\nexport const AUTOSAVE_STATUS = {\n START: \"START\",\n FINISHED: \"FINISHED\",\n};\n\n/**\n * DEBOUNCE INPUT TIMEOUT\n */\nexport const INPUT_DEBOUNCE_TIMEOUT = 100;\n\n/**\n * DEBOUNCE VALIDATION TIMEOUT\n */\nexport const VALIDATE_DEBOUNCE_TIMEOUT = 500;\n\n/**\n * ATTRIBUTE WIDTH\n */\nexport const ATTRIBUTE_WIDTH = {\n EXTRA_SMALL: \"EXTRA_SMALL\",\n SMALL: \"SMALL\",\n MEDIUM: \"MEDIUM\",\n LARGE: \"LARGE\",\n EXTRA_LARGE: \"EXTRA_LARGE\",\n};\n\nexport const ALL_CONTENT_IN_DATA_SETTING = \"hasAllContentInData\";\n\nexport const LOGIN_TYPE = \"security.clients\";\nexport const LOGIN_PATH_SETTING = \"FormClient.login_url\";\nexport const LOGIN_USERNAME_SETTING = \"FormClient.username_field_name\";\nexport const LOGIN_PASSWORD_SETTING = \"FormClient.password_field_name\";\nexport const LOGOUT_PATH_SETTING = \"FormClient.logout_url\";\n\nexport const DEFAULT_AUTHENTICATION_TYPE = {\n name: \"Form based authentication\",\n authentication: \"DefaultFormClient\",\n isPrimary: true,\n};\n"],"mappings":"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"}
@@ -1,7 +1,14 @@
1
1
  import _Object$assign from "@babel/runtime-corejs3/core-js-stable/object/assign";
2
+ import _startsWithInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/starts-with";
2
3
  import { isPlainObject, has } from "../utils/helpers/objects";
3
- import { ALL_CONTENT_IN_DATA_SETTING, LOGIN_TYPE, LOGIN_PATH_SETTING, LOGIN_USERNAME_SETTING, LOGIN_PASSWORD_SETTING, LOGOUT_PATH_SETTING } from "./Constants";
4
+ import { getRepositoryResourceUrl } from "../utils/helpers/repositoryResource";
5
+ import { ALL_CONTENT_IN_DATA_SETTING, LOGIN_TYPE, LOGIN_PATH_SETTING, LOGIN_USERNAME_SETTING, LOGIN_PASSWORD_SETTING, LOGOUT_PATH_SETTING, UPLOAD_PATH, CAPTCHA_PATH } from "./Constants";
6
+ const serverBase = typeof __CONTEXT_PATH__ === "undefined" ? null : __CONTEXT_PATH__;
4
7
  const defaultSettings = {
8
+ // This uses contextPath set from property from server
9
+ CONTEXT_PATH: serverBase ?? (typeof window !== "undefined" && window.contextPath ? window.contextPath : "/BeInformed"),
10
+ // Indicates if contributions should be cached
11
+ CACHE_CONTRIBUTIONS: true,
5
12
  // Debug missing i18n messages in layout
6
13
  DEBUG_I18N_MESSAGE_NOT_FOUND: true,
7
14
  // Time to show the notification bar
@@ -90,6 +97,29 @@ export const setSetting = (key, value) => {
90
97
  */
91
98
  export const allSettings = () => settings;
92
99
 
100
+ /**
101
+ * Indicates if contributions must be cached
102
+ */
103
+ export const cacheContributions = () => getSetting("CACHE_CONTRIBUTIONS", true);
104
+
105
+ /**
106
+ * Base path
107
+ * This uses contextPath set from property from server
108
+ * When requesting a remote server with CORS enabled, add the origin, for example:
109
+ * export const BEINFORMED_PATH = 'http://192.168.128.61:8080/BeInformed';
110
+ */
111
+ export const getBasePath = () => getSetting("CONTEXT_PATH", "/BeInformed");
112
+
113
+ /**
114
+ * Path to upload service
115
+ */
116
+ export const getUploadPath = () => `${getBasePath()}${UPLOAD_PATH}`;
117
+
118
+ /**
119
+ * Path to captcha service
120
+ */
121
+ export const getCaptchaPath = () => `${getBasePath()}${CAPTCHA_PATH}`;
122
+
93
123
  /**
94
124
  */
95
125
  export const hasAllContentInData = () => getSetting(ALL_CONTENT_IN_DATA_SETTING, true);
@@ -113,4 +143,20 @@ export const loginPasswordField = () => getSetting(LOGIN_PASSWORD_SETTING, "j_pa
113
143
  export const logoutPath = () => getSetting(LOGOUT_PATH_SETTING, "/Logoff");
114
144
  export const LOGIN_PATH = loginPath();
115
145
  export const LOGOUT_PATH = logoutPath();
146
+
147
+ /**
148
+ * Model overview swim lane configuration
149
+ */
150
+ export const getSwimLaneDiagramConfiguration = () => {
151
+ let configLocation = getSetting("SWIM_LANE_DIAGRAM_CONFIGURATION", "/Library/Diagrams/Overviews.json");
152
+ if (!_startsWithInstanceProperty(configLocation).call(configLocation, "/")) {
153
+ configLocation = `/${configLocation}`;
154
+ }
155
+ return getRepositoryResourceUrl(configLocation);
156
+ };
157
+
158
+ /**
159
+ * Backwards compatible export of BASE constant
160
+ */
161
+ export const BASE = getBasePath();
116
162
  //# sourceMappingURL=Settings.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Settings.js","names":["isPlainObject","has","ALL_CONTENT_IN_DATA_SETTING","LOGIN_TYPE","LOGIN_PATH_SETTING","LOGIN_USERNAME_SETTING","LOGIN_PASSWORD_SETTING","LOGOUT_PATH_SETTING","defaultSettings","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","DATE_INPUT_FORMAT","DATE_READONLY_FORMAT","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","settings","setSettings","config","getSetting","key","defaultValue","undefined","Error","setSetting","value","allSettings","hasAllContentInData","loginType","loginPath","loginUsernameField","loginPasswordField","logoutPath"],"sources":["../../src/constants/Settings.js"],"sourcesContent":["// @flow\nimport { isPlainObject, has } from \"../utils/helpers/objects\";\nimport {\n ALL_CONTENT_IN_DATA_SETTING,\n LOGIN_TYPE,\n LOGIN_PATH_SETTING,\n LOGIN_USERNAME_SETTING,\n LOGIN_PASSWORD_SETTING,\n LOGOUT_PATH_SETTING,\n} from \"./Constants\";\n\ntype Setting = boolean | string | number | Array<string>;\n\nconst defaultSettings: { [name: string]: Setting } = {\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\n // Input format for dates. Without this setting having a value, the contributions format is used\n DATE_INPUT_FORMAT: \"\",\n\n // Readonly format for dates. Without this setting having a value, the contributions format is used\n DATE_READONLY_FORMAT: \"\",\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\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 */\nexport const hasAllContentInData = (): boolean =>\n getSetting(ALL_CONTENT_IN_DATA_SETTING, true);\n\n/**\n * Login type, only available when pac4j is configured\n */\nexport const loginType = (): string => getSetting(LOGIN_TYPE, \"JAAS\");\n\n/**\n */\nexport const loginPath = (): string =>\n getSetting(LOGIN_PATH_SETTING, \"/j_security_check\");\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, \"/Logoff\");\n\nexport const LOGIN_PATH: string = loginPath();\nexport const LOGOUT_PATH: string = logoutPath();\n"],"mappings":"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"}
1
+ {"version":3,"file":"Settings.js","names":["isPlainObject","has","getRepositoryResourceUrl","ALL_CONTENT_IN_DATA_SETTING","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","DATE_INPUT_FORMAT","DATE_READONLY_FORMAT","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","settings","setSettings","config","getSetting","key","defaultValue","undefined","Error","setSetting","value","allSettings","cacheContributions","getBasePath","getUploadPath","getCaptchaPath","hasAllContentInData","loginType","loginPath","loginUsernameField","loginPasswordField","logoutPath","getSwimLaneDiagramConfiguration","configLocation","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 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\n // Input format for dates. Without this setting having a value, the contributions format is used\n DATE_INPUT_FORMAT: \"\",\n\n // Readonly format for dates. Without this setting having a value, the contributions format is used\n DATE_READONLY_FORMAT: \"\",\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\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 */\nexport const loginType = (): string => getSetting(LOGIN_TYPE, \"JAAS\");\n\n/**\n */\nexport const loginPath = (): string =>\n getSetting(LOGIN_PATH_SETTING, \"/j_security_check\");\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, \"/Logoff\");\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 * Backwards compatible export of BASE constant\n */\nexport const BASE: string = getBasePath();\n"],"mappings":"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"}
@@ -2,7 +2,7 @@ import { useSelector, useDispatch } from "react-redux";
2
2
  import { getApplication } from "../redux/_modularui/ModularUISelectors";
3
3
  import { login, logout, resetAuthErrors } from "../redux/actions";
4
4
  import Cache from "../utils/browser/Cache";
5
- import { BASE, fallbackDefaultAuthenticationType, getSetting } from "../constants";
5
+ import { DEFAULT_AUTHENTICATION_TYPE, getBasePath, logoutPath } from "../constants";
6
6
  import { IllegalStateException } from "../exceptions";
7
7
  /**
8
8
  */
@@ -14,7 +14,7 @@ export const useLogin = () => {
14
14
  const isAuthenticated = application?.isLoggedIn ?? false;
15
15
  return {
16
16
  isAuthenticated,
17
- authenticationTypes: application?.authenticationTypes ?? [fallbackDefaultAuthenticationType],
17
+ authenticationTypes: application?.authenticationTypes ?? [DEFAULT_AUTHENTICATION_TYPE],
18
18
  errorMessage: auth.error,
19
19
  resetErrors: () => dispatch(resetAuthErrors()),
20
20
  login: (username, password) => dispatch(login(username, password)),
@@ -25,7 +25,7 @@ export const useLogin = () => {
25
25
  }
26
26
  if (!isAuthenticated) {
27
27
  Cache.setItem("isRedirectLogin", true);
28
- window.location.assign(`${BASE}${authenticationType.redirectUri ?? ""}`);
28
+ window.location.assign(`${getBasePath()}${authenticationType.redirectUri ?? ""}`);
29
29
  }
30
30
  }
31
31
  };
@@ -36,15 +36,16 @@ export const useLogin = () => {
36
36
  export const useLogout = () => {
37
37
  const dispatch = useDispatch();
38
38
  const application = useSelector(getApplication);
39
- const LOGOUT_PATH = getSetting("LOGOUT_PATH", "/signout");
39
+ const LOGOUT_PATH = logoutPath();
40
+ const BASE_PATH = getBasePath();
40
41
  const isAuthenticated = application?.isLoggedIn ?? false;
41
42
  return {
42
43
  isAuthenticated,
43
- authenticationTypes: application?.authenticationTypes ?? [fallbackDefaultAuthenticationType],
44
+ authenticationTypes: application?.authenticationTypes ?? [DEFAULT_AUTHENTICATION_TYPE],
44
45
  logout: () => {
45
46
  if (Cache.getItem("isRedirectLogin")) {
46
47
  const origin = window.location.origin;
47
- const url = `${origin}${BASE}/logout?url=${origin}${BASE}${LOGOUT_PATH}`;
48
+ const url = `${origin}${BASE_PATH}/logout?url=${origin}${BASE_PATH}${LOGOUT_PATH}`;
48
49
  Cache.setItem("isRedirectLogin", false);
49
50
  window.location.assign(url);
50
51
  } else {
@@ -1 +1 @@
1
- {"version":3,"file":"useAuthentication.js","names":["useSelector","useDispatch","getApplication","login","logout","resetAuthErrors","Cache","BASE","fallbackDefaultAuthenticationType","getSetting","IllegalStateException","useLogin","setItem","dispatch","application","auth","state","isAuthenticated","isLoggedIn","authenticationTypes","errorMessage","error","resetErrors","username","password","redirectLogin","authenticationType","getItem","authentication","redirectUri","window","location","assign","useLogout","LOGOUT_PATH","origin","url"],"sources":["../../src/hooks/useAuthentication.js"],"sourcesContent":["// @flow\nimport { useSelector, useDispatch } from \"react-redux\";\n\nimport { getApplication } from \"../redux/_modularui/ModularUISelectors\";\nimport { login, logout, resetAuthErrors } from \"../redux/actions\";\n\nimport Cache from \"../utils/browser/Cache\";\nimport {\n BASE,\n fallbackDefaultAuthenticationType,\n getSetting,\n} from \"../constants\";\n\nimport type { ResetAuthErrorsAction } from \"../redux/types\";\nimport type { AuthenticationType } from \"../models/types\";\nimport { IllegalStateException } from \"../exceptions\";\ntype LoginHook = {\n isAuthenticated: boolean,\n authenticationTypes: Array<AuthenticationType>,\n errorMessage: ?string,\n resetErrors: () => ResetAuthErrorsAction,\n login: (username: string, password: string) => void,\n redirectLogin: (authenticationType: AuthenticationType) => void,\n};\ntype LogoutHook = {\n isAuthenticated: boolean,\n authenticationTypes: Array<AuthenticationType>,\n logout: () => void,\n};\n\n/**\n */\nexport const useLogin = (): LoginHook => {\n Cache.setItem(\"isRedirectLogin\", false);\n\n const dispatch = useDispatch();\n\n const application = useSelector(getApplication);\n const auth = useSelector((state) => state.auth);\n\n const isAuthenticated = application?.isLoggedIn ?? false;\n\n return {\n isAuthenticated,\n authenticationTypes: application?.authenticationTypes ?? [\n fallbackDefaultAuthenticationType,\n ],\n errorMessage: auth.error,\n resetErrors: () => dispatch(resetAuthErrors()),\n login: (username: string, password: string) =>\n dispatch(login(username, password)),\n redirectLogin: (authenticationType: AuthenticationType) => {\n if (Cache.getItem(\"isRedirectLogin\")) {\n // prevent endless loop in redirects when authentication type can't be redirected\n throw new IllegalStateException(\n `Could not redirect to '${\n authenticationType.authentication\n }' using url: '${authenticationType.redirectUri ?? \"\"}'`\n );\n }\n\n if (!isAuthenticated) {\n Cache.setItem(\"isRedirectLogin\", true);\n window.location.assign(\n `${BASE}${authenticationType.redirectUri ?? \"\"}`\n );\n }\n },\n };\n};\n\n/**\n */\nexport const useLogout = (): LogoutHook => {\n const dispatch = useDispatch();\n const application = useSelector(getApplication);\n\n const LOGOUT_PATH = getSetting(\"LOGOUT_PATH\", \"/signout\");\n\n const isAuthenticated = application?.isLoggedIn ?? false;\n return {\n isAuthenticated,\n authenticationTypes: application?.authenticationTypes ?? [\n fallbackDefaultAuthenticationType,\n ],\n logout: () => {\n if (Cache.getItem(\"isRedirectLogin\")) {\n const origin = window.location.origin;\n const url = `${origin}${BASE}/logout?url=${origin}${BASE}${LOGOUT_PATH}`;\n Cache.setItem(\"isRedirectLogin\", false);\n window.location.assign(url);\n } else {\n return dispatch(logout());\n }\n },\n };\n};\n"],"mappings":"AACA,SAASA,WAAW,EAAEC,WAAW,QAAQ,aAAa;AAEtD,SAASC,cAAc,QAAQ,wCAAwC;AACvE,SAASC,KAAK,EAAEC,MAAM,EAAEC,eAAe,QAAQ,kBAAkB;AAEjE,OAAOC,KAAK,MAAM,wBAAwB;AAC1C,SACEC,IAAI,EACJC,iCAAiC,EACjCC,UAAU,QACL,cAAc;AAIrB,SAASC,qBAAqB,QAAQ,eAAe;AAerD;AACA;AACA,OAAO,MAAMC,QAAQ,GAAG,MAAiB;EACvCL,KAAK,CAACM,OAAO,CAAC,iBAAiB,EAAE,KAAK,CAAC;EAEvC,MAAMC,QAAQ,GAAGZ,WAAW,EAAE;EAE9B,MAAMa,WAAW,GAAGd,WAAW,CAACE,cAAc,CAAC;EAC/C,MAAMa,IAAI,GAAGf,WAAW,CAAEgB,KAAK,IAAKA,KAAK,CAACD,IAAI,CAAC;EAE/C,MAAME,eAAe,GAAGH,WAAW,EAAEI,UAAU,IAAI,KAAK;EAExD,OAAO;IACLD,eAAe;IACfE,mBAAmB,EAAEL,WAAW,EAAEK,mBAAmB,IAAI,CACvDX,iCAAiC,CAClC;IACDY,YAAY,EAAEL,IAAI,CAACM,KAAK;IACxBC,WAAW,EAAE,MAAMT,QAAQ,CAACR,eAAe,EAAE,CAAC;IAC9CF,KAAK,EAAE,CAACoB,QAAgB,EAAEC,QAAgB,KACxCX,QAAQ,CAACV,KAAK,CAACoB,QAAQ,EAAEC,QAAQ,CAAC,CAAC;IACrCC,aAAa,EAAGC,kBAAsC,IAAK;MACzD,IAAIpB,KAAK,CAACqB,OAAO,CAAC,iBAAiB,CAAC,EAAE;QACpC;QACA,MAAM,IAAIjB,qBAAqB,CAC5B,0BACCgB,kBAAkB,CAACE,cACpB,iBAAgBF,kBAAkB,CAACG,WAAW,IAAI,EAAG,GAAE,CACzD;MACH;MAEA,IAAI,CAACZ,eAAe,EAAE;QACpBX,KAAK,CAACM,OAAO,CAAC,iBAAiB,EAAE,IAAI,CAAC;QACtCkB,MAAM,CAACC,QAAQ,CAACC,MAAM,CACnB,GAAEzB,IAAK,GAAEmB,kBAAkB,CAACG,WAAW,IAAI,EAAG,EAAC,CACjD;MACH;IACF;EACF,CAAC;AACH,CAAC;;AAED;AACA;AACA,OAAO,MAAMI,SAAS,GAAG,MAAkB;EACzC,MAAMpB,QAAQ,GAAGZ,WAAW,EAAE;EAC9B,MAAMa,WAAW,GAAGd,WAAW,CAACE,cAAc,CAAC;EAE/C,MAAMgC,WAAW,GAAGzB,UAAU,CAAC,aAAa,EAAE,UAAU,CAAC;EAEzD,MAAMQ,eAAe,GAAGH,WAAW,EAAEI,UAAU,IAAI,KAAK;EACxD,OAAO;IACLD,eAAe;IACfE,mBAAmB,EAAEL,WAAW,EAAEK,mBAAmB,IAAI,CACvDX,iCAAiC,CAClC;IACDJ,MAAM,EAAE,MAAM;MACZ,IAAIE,KAAK,CAACqB,OAAO,CAAC,iBAAiB,CAAC,EAAE;QACpC,MAAMQ,MAAM,GAAGL,MAAM,CAACC,QAAQ,CAACI,MAAM;QACrC,MAAMC,GAAG,GAAI,GAAED,MAAO,GAAE5B,IAAK,eAAc4B,MAAO,GAAE5B,IAAK,GAAE2B,WAAY,EAAC;QACxE5B,KAAK,CAACM,OAAO,CAAC,iBAAiB,EAAE,KAAK,CAAC;QACvCkB,MAAM,CAACC,QAAQ,CAACC,MAAM,CAACI,GAAG,CAAC;MAC7B,CAAC,MAAM;QACL,OAAOvB,QAAQ,CAACT,MAAM,EAAE,CAAC;MAC3B;IACF;EACF,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"useAuthentication.js","names":["useSelector","useDispatch","getApplication","login","logout","resetAuthErrors","Cache","DEFAULT_AUTHENTICATION_TYPE","getBasePath","logoutPath","IllegalStateException","useLogin","setItem","dispatch","application","auth","state","isAuthenticated","isLoggedIn","authenticationTypes","errorMessage","error","resetErrors","username","password","redirectLogin","authenticationType","getItem","authentication","redirectUri","window","location","assign","useLogout","LOGOUT_PATH","BASE_PATH","origin","url"],"sources":["../../src/hooks/useAuthentication.js"],"sourcesContent":["// @flow\nimport { useSelector, useDispatch } from \"react-redux\";\n\nimport { getApplication } from \"../redux/_modularui/ModularUISelectors\";\nimport { login, logout, resetAuthErrors } from \"../redux/actions\";\n\nimport Cache from \"../utils/browser/Cache\";\nimport {\n DEFAULT_AUTHENTICATION_TYPE,\n getBasePath,\n logoutPath,\n} from \"../constants\";\n\nimport type { ResetAuthErrorsAction } from \"../redux/types\";\nimport type { AuthenticationType } from \"../models/types\";\nimport { IllegalStateException } from \"../exceptions\";\ntype LoginHook = {\n isAuthenticated: boolean,\n authenticationTypes: Array<AuthenticationType>,\n errorMessage: ?string,\n resetErrors: () => ResetAuthErrorsAction,\n login: (username: string, password: string) => void,\n redirectLogin: (authenticationType: AuthenticationType) => void,\n};\ntype LogoutHook = {\n isAuthenticated: boolean,\n authenticationTypes: Array<AuthenticationType>,\n logout: () => void,\n};\n\n/**\n */\nexport const useLogin = (): LoginHook => {\n Cache.setItem(\"isRedirectLogin\", false);\n\n const dispatch = useDispatch();\n\n const application = useSelector(getApplication);\n const auth = useSelector((state) => state.auth);\n\n const isAuthenticated = application?.isLoggedIn ?? false;\n\n return {\n isAuthenticated,\n authenticationTypes: application?.authenticationTypes ?? [\n DEFAULT_AUTHENTICATION_TYPE,\n ],\n errorMessage: auth.error,\n resetErrors: () => dispatch(resetAuthErrors()),\n login: (username: string, password: string) =>\n dispatch(login(username, password)),\n redirectLogin: (authenticationType: AuthenticationType) => {\n if (Cache.getItem(\"isRedirectLogin\")) {\n // prevent endless loop in redirects when authentication type can't be redirected\n throw new IllegalStateException(\n `Could not redirect to '${\n authenticationType.authentication\n }' using url: '${authenticationType.redirectUri ?? \"\"}'`\n );\n }\n\n if (!isAuthenticated) {\n Cache.setItem(\"isRedirectLogin\", true);\n window.location.assign(\n `${getBasePath()}${authenticationType.redirectUri ?? \"\"}`\n );\n }\n },\n };\n};\n\n/**\n */\nexport const useLogout = (): LogoutHook => {\n const dispatch = useDispatch();\n const application = useSelector(getApplication);\n\n const LOGOUT_PATH = logoutPath();\n const BASE_PATH = getBasePath();\n\n const isAuthenticated = application?.isLoggedIn ?? false;\n return {\n isAuthenticated,\n authenticationTypes: application?.authenticationTypes ?? [\n DEFAULT_AUTHENTICATION_TYPE,\n ],\n logout: () => {\n if (Cache.getItem(\"isRedirectLogin\")) {\n const origin = window.location.origin;\n const url = `${origin}${BASE_PATH}/logout?url=${origin}${BASE_PATH}${LOGOUT_PATH}`;\n Cache.setItem(\"isRedirectLogin\", false);\n window.location.assign(url);\n } else {\n return dispatch(logout());\n }\n },\n };\n};\n"],"mappings":"AACA,SAASA,WAAW,EAAEC,WAAW,QAAQ,aAAa;AAEtD,SAASC,cAAc,QAAQ,wCAAwC;AACvE,SAASC,KAAK,EAAEC,MAAM,EAAEC,eAAe,QAAQ,kBAAkB;AAEjE,OAAOC,KAAK,MAAM,wBAAwB;AAC1C,SACEC,2BAA2B,EAC3BC,WAAW,EACXC,UAAU,QACL,cAAc;AAIrB,SAASC,qBAAqB,QAAQ,eAAe;AAerD;AACA;AACA,OAAO,MAAMC,QAAQ,GAAG,MAAiB;EACvCL,KAAK,CAACM,OAAO,CAAC,iBAAiB,EAAE,KAAK,CAAC;EAEvC,MAAMC,QAAQ,GAAGZ,WAAW,EAAE;EAE9B,MAAMa,WAAW,GAAGd,WAAW,CAACE,cAAc,CAAC;EAC/C,MAAMa,IAAI,GAAGf,WAAW,CAAEgB,KAAK,IAAKA,KAAK,CAACD,IAAI,CAAC;EAE/C,MAAME,eAAe,GAAGH,WAAW,EAAEI,UAAU,IAAI,KAAK;EAExD,OAAO;IACLD,eAAe;IACfE,mBAAmB,EAAEL,WAAW,EAAEK,mBAAmB,IAAI,CACvDZ,2BAA2B,CAC5B;IACDa,YAAY,EAAEL,IAAI,CAACM,KAAK;IACxBC,WAAW,EAAE,MAAMT,QAAQ,CAACR,eAAe,EAAE,CAAC;IAC9CF,KAAK,EAAE,CAACoB,QAAgB,EAAEC,QAAgB,KACxCX,QAAQ,CAACV,KAAK,CAACoB,QAAQ,EAAEC,QAAQ,CAAC,CAAC;IACrCC,aAAa,EAAGC,kBAAsC,IAAK;MACzD,IAAIpB,KAAK,CAACqB,OAAO,CAAC,iBAAiB,CAAC,EAAE;QACpC;QACA,MAAM,IAAIjB,qBAAqB,CAC5B,0BACCgB,kBAAkB,CAACE,cACpB,iBAAgBF,kBAAkB,CAACG,WAAW,IAAI,EAAG,GAAE,CACzD;MACH;MAEA,IAAI,CAACZ,eAAe,EAAE;QACpBX,KAAK,CAACM,OAAO,CAAC,iBAAiB,EAAE,IAAI,CAAC;QACtCkB,MAAM,CAACC,QAAQ,CAACC,MAAM,CACnB,GAAExB,WAAW,EAAG,GAAEkB,kBAAkB,CAACG,WAAW,IAAI,EAAG,EAAC,CAC1D;MACH;IACF;EACF,CAAC;AACH,CAAC;;AAED;AACA;AACA,OAAO,MAAMI,SAAS,GAAG,MAAkB;EACzC,MAAMpB,QAAQ,GAAGZ,WAAW,EAAE;EAC9B,MAAMa,WAAW,GAAGd,WAAW,CAACE,cAAc,CAAC;EAE/C,MAAMgC,WAAW,GAAGzB,UAAU,EAAE;EAChC,MAAM0B,SAAS,GAAG3B,WAAW,EAAE;EAE/B,MAAMS,eAAe,GAAGH,WAAW,EAAEI,UAAU,IAAI,KAAK;EACxD,OAAO;IACLD,eAAe;IACfE,mBAAmB,EAAEL,WAAW,EAAEK,mBAAmB,IAAI,CACvDZ,2BAA2B,CAC5B;IACDH,MAAM,EAAE,MAAM;MACZ,IAAIE,KAAK,CAACqB,OAAO,CAAC,iBAAiB,CAAC,EAAE;QACpC,MAAMS,MAAM,GAAGN,MAAM,CAACC,QAAQ,CAACK,MAAM;QACrC,MAAMC,GAAG,GAAI,GAAED,MAAO,GAAED,SAAU,eAAcC,MAAO,GAAED,SAAU,GAAED,WAAY,EAAC;QAClF5B,KAAK,CAACM,OAAO,CAAC,iBAAiB,EAAE,KAAK,CAAC;QACvCkB,MAAM,CAACC,QAAQ,CAACC,MAAM,CAACK,GAAG,CAAC;MAC7B,CAAC,MAAM;QACL,OAAOxB,QAAQ,CAACT,MAAM,EAAE,CAAC;MAC3B;IACF;EACF,CAAC;AACH,CAAC"}
@@ -4,8 +4,7 @@ import ResourceModel from "../base/ResourceModel";
4
4
  import LinkModel from "../links/LinkModel";
5
5
  import UserServicesModel from "../user/UserServicesModel";
6
6
  import { NotAllowedUriException } from "../../exceptions";
7
- import { fallbackDefaultAuthenticationType } from "../../constants";
8
-
7
+ import { DEFAULT_AUTHENTICATION_TYPE } from "../../constants";
9
8
  /**
10
9
  * The Application model
11
10
  */
@@ -63,7 +62,7 @@ export default class ApplicationModel extends ResourceModel {
63
62
  * Getting the authentication types of the application
64
63
  */
65
64
  get authenticationTypes() {
66
- const authenticationTypes = this.getContribution("security", [fallbackDefaultAuthenticationType]);
65
+ const authenticationTypes = this.getContribution("security", [DEFAULT_AUTHENTICATION_TYPE]);
67
66
 
68
67
  //put primary first
69
68
  return authenticationTypes?.sort((a, b) => a.isPrimary === b.isPrimary ? 0 : a.isPrimary ? -1 : 1);
@@ -1 +1 @@
1
- {"version":3,"file":"ApplicationModel.js","names":["ResourceModel","LinkModel","UserServicesModel","NotAllowedUriException","fallbackDefaultAuthenticationType","ApplicationModel","type","modelName","isApplicableModel","data","contributions","resourcetype","getInitialChildModelLinks","userService","links","getLinkByKey","href","path","setChildModels","models","userServiceModel","model","userServices","label","getContribution","authenticationTypes","sort","a","b","isPrimary","tabs","getLinksByGroup","modelcatalog","create","_userServices","isLoggedIn","userHref","userLink"],"sources":["../../../src/models/application/ApplicationModel.js"],"sourcesContent":["// @flow\nimport ResourceModel from \"../base/ResourceModel\";\nimport LinkModel from \"../links/LinkModel\";\nimport UserServicesModel from \"../user/UserServicesModel\";\n\nimport { NotAllowedUriException } from \"../../exceptions\";\n\nimport type { ModularUIModel, AuthenticationType } from \"../types\";\nimport type { ModularUIResponse } from \"../../modularui\";\nimport type LinkCollection from \"../links/LinkCollection\";\nimport type Href from \"../href/Href\";\nimport { fallbackDefaultAuthenticationType } from \"../../constants\";\n\n/**\n * The Application model\n */\nexport default class ApplicationModel extends ResourceModel {\n _userServices: ?UserServicesModel;\n\n /**\n * Retrieve type of model\n */\n get type(): string {\n return \"Application\";\n }\n\n /**\n */\n static get modelName(): string {\n return \"ApplicationModel\";\n }\n\n /**\n */\n static isApplicableModel(data: ModularUIResponse): boolean {\n return (\n data.contributions.resourcetype &&\n data.contributions.resourcetype === \"Application\"\n );\n }\n\n /**\n */\n getInitialChildModelLinks(): Array<LinkModel> {\n const userService = this.links.getLinkByKey(\"UserServices\");\n if (userService && userService.href.path === \"/login\") {\n throw new NotAllowedUriException(\n \"The user service (Login panel) should not have the uri '/login', use a different URI because this uri matches the login service.\"\n );\n }\n\n return userService ? [userService] : [];\n }\n\n /**\n */\n setChildModels(models: Array<ModularUIModel>) {\n const userServiceModel = models.find(\n (model) => model.type === \"UserServices\"\n );\n\n if (userServiceModel) {\n this.userServices = userServiceModel;\n }\n }\n\n /**\n * Getting the label of the application\n */\n get label(): string {\n return this.getContribution(\"label\", \"\");\n }\n\n /**\n * Getting the authentication types of the application\n */\n get authenticationTypes(): Array<AuthenticationType> {\n const authenticationTypes = this.getContribution(\"security\", [\n fallbackDefaultAuthenticationType,\n ]);\n\n //put primary first\n return authenticationTypes?.sort(\n (a: AuthenticationType, b: AuthenticationType) =>\n a.isPrimary === b.isPrimary ? 0 : a.isPrimary ? -1 : 1\n );\n }\n /**\n * Getting the tab links\n */\n get tabs(): LinkCollection {\n return this.links.getLinksByGroup(\"tab\");\n }\n\n /**\n * Get modelcatalog link\n */\n get modelcatalog(): LinkModel {\n return LinkModel.create(\"modelcatalog\", \"/modelcatalog\", \"Model catalog\");\n }\n\n /**\n * Set the userservices for this application\n */\n set userServices(model: ?ModularUIModel) {\n this._userServices = model instanceof UserServicesModel ? model : null;\n }\n\n /**\n * returns the userservices configured for this application\n */\n get userServices(): ?UserServicesModel {\n return this._userServices ? this._userServices : null;\n }\n\n /**\n * Indicates if the user is logged in\n */\n get isLoggedIn(): boolean {\n return this.userServices?.isLoggedIn ?? false;\n }\n\n /**\n * Retrieve link to the user information,\n * only available when the user services are available\n */\n get userHref(): Href | null {\n if (this.userServices != null && this.userServices.userLink != null) {\n return this.userServices.userLink.href;\n }\n\n return null;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"ApplicationModel.js","names":["ResourceModel","LinkModel","UserServicesModel","NotAllowedUriException","DEFAULT_AUTHENTICATION_TYPE","ApplicationModel","type","modelName","isApplicableModel","data","contributions","resourcetype","getInitialChildModelLinks","userService","links","getLinkByKey","href","path","setChildModels","models","userServiceModel","model","userServices","label","getContribution","authenticationTypes","sort","a","b","isPrimary","tabs","getLinksByGroup","modelcatalog","create","_userServices","isLoggedIn","userHref","userLink"],"sources":["../../../src/models/application/ApplicationModel.js"],"sourcesContent":["// @flow\nimport ResourceModel from \"../base/ResourceModel\";\nimport LinkModel from \"../links/LinkModel\";\nimport UserServicesModel from \"../user/UserServicesModel\";\n\nimport { NotAllowedUriException } from \"../../exceptions\";\n\nimport { DEFAULT_AUTHENTICATION_TYPE } from \"../../constants\";\n\nimport type { ModularUIModel, AuthenticationType } from \"../types\";\nimport type { ModularUIResponse } from \"../../modularui\";\nimport type LinkCollection from \"../links/LinkCollection\";\nimport type Href from \"../href/Href\";\n\n/**\n * The Application model\n */\nexport default class ApplicationModel extends ResourceModel {\n _userServices: ?UserServicesModel;\n\n /**\n * Retrieve type of model\n */\n get type(): string {\n return \"Application\";\n }\n\n /**\n */\n static get modelName(): string {\n return \"ApplicationModel\";\n }\n\n /**\n */\n static isApplicableModel(data: ModularUIResponse): boolean {\n return (\n data.contributions.resourcetype &&\n data.contributions.resourcetype === \"Application\"\n );\n }\n\n /**\n */\n getInitialChildModelLinks(): Array<LinkModel> {\n const userService = this.links.getLinkByKey(\"UserServices\");\n if (userService && userService.href.path === \"/login\") {\n throw new NotAllowedUriException(\n \"The user service (Login panel) should not have the uri '/login', use a different URI because this uri matches the login service.\"\n );\n }\n\n return userService ? [userService] : [];\n }\n\n /**\n */\n setChildModels(models: Array<ModularUIModel>) {\n const userServiceModel = models.find(\n (model) => model.type === \"UserServices\"\n );\n\n if (userServiceModel) {\n this.userServices = userServiceModel;\n }\n }\n\n /**\n * Getting the label of the application\n */\n get label(): string {\n return this.getContribution(\"label\", \"\");\n }\n\n /**\n * Getting the authentication types of the application\n */\n get authenticationTypes(): Array<AuthenticationType> {\n const authenticationTypes = this.getContribution(\"security\", [\n DEFAULT_AUTHENTICATION_TYPE,\n ]);\n\n //put primary first\n return authenticationTypes?.sort(\n (a: AuthenticationType, b: AuthenticationType) =>\n a.isPrimary === b.isPrimary ? 0 : a.isPrimary ? -1 : 1\n );\n }\n /**\n * Getting the tab links\n */\n get tabs(): LinkCollection {\n return this.links.getLinksByGroup(\"tab\");\n }\n\n /**\n * Get modelcatalog link\n */\n get modelcatalog(): LinkModel {\n return LinkModel.create(\"modelcatalog\", \"/modelcatalog\", \"Model catalog\");\n }\n\n /**\n * Set the userservices for this application\n */\n set userServices(model: ?ModularUIModel) {\n this._userServices = model instanceof UserServicesModel ? model : null;\n }\n\n /**\n * returns the userservices configured for this application\n */\n get userServices(): ?UserServicesModel {\n return this._userServices ? this._userServices : null;\n }\n\n /**\n * Indicates if the user is logged in\n */\n get isLoggedIn(): boolean {\n return this.userServices?.isLoggedIn ?? false;\n }\n\n /**\n * Retrieve link to the user information,\n * only available when the user services are available\n */\n get userHref(): Href | null {\n if (this.userServices != null && this.userServices.userLink != null) {\n return this.userServices.userLink.href;\n }\n\n return null;\n }\n}\n"],"mappings":"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"}
@@ -114,10 +114,22 @@ export default class UploadAttributeModel extends StringAttributeModel {
114
114
  fileSize: this.maxFileSize,
115
115
  maxTotalFileSize: this.maxTotalFileSize,
116
116
  isMaxTotal: this.maxTotalFileSize !== undefined
117
- }
117
+ },
118
+ acceptedFiles: this.acceptedFiles
118
119
  };
119
120
  }
120
121
 
122
+ /**
123
+ * Array of accepted file extensions and mime types.
124
+ * Convenience method for accept attribute of file input html control
125
+ */
126
+ get acceptedFiles() {
127
+ var _context3, _context4, _context5;
128
+ const mimeTypes = this.contributions.allowedMimeTypes ? _filterInstanceProperty(_context3 = this.contributions.allowedMimeTypes).call(_context3, mimeType => mimeType !== "[...]") : [];
129
+ const extensions = this.contributions.allowedExtensions ? _mapInstanceProperty(_context4 = _filterInstanceProperty(_context5 = this.contributions.allowedExtensions).call(_context5, extension => extension !== "[...]")).call(_context4, extension => `.${extension}`) : [];
130
+ return [...extensions, ...mimeTypes];
131
+ }
132
+
121
133
  /**
122
134
  * Add upload constraints
123
135
  */
@@ -157,10 +169,10 @@ export default class UploadAttributeModel extends StringAttributeModel {
157
169
  // when the input value is a string but not json,
158
170
  // we assume that it is just a list of uploaded tokens and copy it as input value
159
171
  try {
160
- var _context3;
172
+ var _context6;
161
173
  const files = JSON.parse(value);
162
174
  this.files = files;
163
- this.inputvalue = _mapInstanceProperty(_context3 = _Object$keys(files)).call(_context3, fileName => files[fileName].token).join(",");
175
+ this.inputvalue = _mapInstanceProperty(_context6 = _Object$keys(files)).call(_context6, fileName => files[fileName].token).join(",");
164
176
  } catch (error) {
165
177
  if (typeof value === "string") {
166
178
  this.inputvalue = value;
@@ -1 +1 @@
1
- {"version":3,"file":"UploadAttributeModel.js","names":["ConstraintCollection","StringAttributeModel","FileExtensionConstraint","FileSizeConstraint","UNCHANGED","UploadAttributeModel","isApplicableModel","contributions","type","multiple","getContribution","initialTotalFileSize","_initialTotalFileSize","maxTotalFileSize","_maxTotalFileSize","currentFilesize","uploadedFileSize","maxFileSize","uploadMaxFileSize","files","length","accumulatedFileSize","forEach","fileName","file","size","uploadConstraints","mimeTypes","allowedMimeTypes","mimeType","extensions","allowedExtensions","extension","fileTypes","fileSize","isMaxTotal","undefined","addConstraints","constraints","add","hasFilesizeConstraint","_files","update","value","JSON","parse","inputvalue","token","join","error","updateLastModification","readonlyvalue","initvalue","toString","getValue","hasValue","_value","mergeAttribute","oldAttribute","isValid"],"sources":["../../../src/models/attributes/UploadAttributeModel.js"],"sourcesContent":["// @flow\nimport ConstraintCollection from \"./input-constraints/ConstraintCollection\";\nimport StringAttributeModel from \"./StringAttributeModel\";\nimport FileExtensionConstraint from \"./input-constraints/FileExtensionConstraint\";\nimport FileSizeConstraint from \"./input-constraints/FileSizeConstraint\";\n\nimport type {\n AttributeType,\n FilesType,\n FiletypeConstraintsType,\n FilesizeConstraintsType,\n} from \"../types\";\n\nconst UNCHANGED = \"UNCHANGED\";\n\n/**\n * Upload attribute\n */\nexport default class UploadAttributeModel extends StringAttributeModel {\n _files: FilesType;\n _initialTotalFileSize: number;\n _maxTotalFileSize: number;\n\n /**\n */\n static isApplicableModel(contributions: Object): boolean {\n return contributions.type === \"binary\";\n }\n\n /**\n */\n get type(): string {\n return \"upload\";\n }\n\n /**\n * Retrieve single or multi upload\n */\n get multiple(): boolean {\n return this.getContribution(\"multiple\", false);\n }\n\n /**\n */\n get initialTotalFileSize(): number {\n return this._initialTotalFileSize || 0;\n }\n\n /**\n */\n set initialTotalFileSize(initialTotalFileSize: number) {\n this._initialTotalFileSize = initialTotalFileSize;\n }\n\n /**\n */\n get maxTotalFileSize(): number {\n return this._maxTotalFileSize;\n }\n\n /**\n */\n set maxTotalFileSize(maxTotalFileSize: number) {\n this._maxTotalFileSize = maxTotalFileSize;\n }\n\n /**\n */\n get currentFilesize(): number {\n return this.initialTotalFileSize + this.uploadedFileSize;\n }\n\n /**\n */\n get maxFileSize(): ?number {\n if (this.maxTotalFileSize) {\n const uploadMaxFileSize = this.maxTotalFileSize - this.currentFilesize;\n if (uploadMaxFileSize < 0) {\n return 0;\n }\n\n return uploadMaxFileSize;\n }\n\n return this.contributions.uploadMaxFileSize;\n }\n\n /**\n */\n get uploadedFileSize(): number {\n if (Object.keys(this.files).length === 0) {\n return 0;\n }\n\n let accumulatedFileSize = 0;\n Object.keys(this.files).forEach((fileName) => {\n const file = this.files[fileName];\n if (file.size) {\n accumulatedFileSize += file.size;\n }\n });\n return accumulatedFileSize;\n }\n\n /**\n * Upload constraints\n */\n get uploadConstraints(): {\n fileTypes: FiletypeConstraintsType,\n maxFileSize: FilesizeConstraintsType,\n } {\n const mimeTypes = this.contributions.allowedMimeTypes\n ? this.contributions.allowedMimeTypes.filter(\n (mimeType) => mimeType !== \"[...]\"\n )\n : [];\n const extensions = this.contributions.allowedExtensions\n ? this.contributions.allowedExtensions.filter(\n (extension) => extension !== \"[...]\"\n )\n : [];\n\n const fileTypes: FiletypeConstraintsType = extensions.map((extension) => ({\n extensions: [extension],\n mimeTypes,\n }));\n\n return {\n fileTypes,\n maxFileSize: {\n fileSize: this.maxFileSize,\n maxTotalFileSize: this.maxTotalFileSize,\n isMaxTotal: this.maxTotalFileSize !== undefined,\n },\n };\n }\n\n /**\n * Add upload constraints\n */\n addConstraints(): ConstraintCollection {\n const constraints = new ConstraintCollection();\n\n if (this.uploadConstraints.fileTypes.length > 0) {\n constraints.add(\n new FileExtensionConstraint(this.uploadConstraints.fileTypes)\n );\n }\n\n const hasFilesizeConstraint =\n this.uploadConstraints.maxFileSize.isMaxTotal ||\n this.uploadConstraints.maxFileSize.fileSize !== undefined;\n\n if (hasFilesizeConstraint) {\n constraints.add(\n new FileSizeConstraint(this.uploadConstraints.maxFileSize)\n );\n }\n\n return constraints;\n }\n\n /**\n */\n get files(): FilesType {\n return this._files || {};\n }\n\n /**\n */\n set files(files: FilesType) {\n this._files = files;\n }\n\n /**\n * Update the attribute\n */\n update(value: string): UploadAttributeModel {\n if (!value) {\n return this;\n }\n\n // parse to json and handle uploaded file\n // when the input value is a string but not json,\n // we assume that it is just a list of uploaded tokens and copy it as input value\n try {\n const files = JSON.parse(value);\n this.files = files;\n\n this.inputvalue = Object.keys(files)\n .map((fileName) => files[fileName].token)\n .join(\",\");\n } catch (error) {\n if (typeof value === \"string\") {\n this.inputvalue = value;\n }\n }\n\n this.updateLastModification();\n\n return this;\n }\n\n /**\n */\n get readonlyvalue(): string {\n if (this.initvalue) {\n return this.initvalue.toString();\n }\n\n return \"\";\n }\n\n /**\n * Getting the value of the attribute, return unchanged when the uploaded file has not changed\n */\n getValue(): any {\n if (!this.hasValue()) {\n return null;\n }\n\n if (this.initvalue === this.inputvalue) {\n return UNCHANGED;\n }\n\n return this._value;\n }\n\n /**\n */\n mergeAttribute(oldAttribute: AttributeType) {\n if (\n oldAttribute instanceof UploadAttributeModel &&\n oldAttribute.isValid &&\n oldAttribute.inputvalue !== null\n ) {\n this.update(JSON.stringify(oldAttribute.files));\n }\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"UploadAttributeModel.js","names":["ConstraintCollection","StringAttributeModel","FileExtensionConstraint","FileSizeConstraint","UNCHANGED","UploadAttributeModel","isApplicableModel","contributions","type","multiple","getContribution","initialTotalFileSize","_initialTotalFileSize","maxTotalFileSize","_maxTotalFileSize","currentFilesize","uploadedFileSize","maxFileSize","uploadMaxFileSize","files","length","accumulatedFileSize","forEach","fileName","file","size","uploadConstraints","mimeTypes","allowedMimeTypes","mimeType","extensions","allowedExtensions","extension","fileTypes","fileSize","isMaxTotal","undefined","acceptedFiles","addConstraints","constraints","add","hasFilesizeConstraint","_files","update","value","JSON","parse","inputvalue","token","join","error","updateLastModification","readonlyvalue","initvalue","toString","getValue","hasValue","_value","mergeAttribute","oldAttribute","isValid"],"sources":["../../../src/models/attributes/UploadAttributeModel.js"],"sourcesContent":["// @flow\nimport ConstraintCollection from \"./input-constraints/ConstraintCollection\";\nimport StringAttributeModel from \"./StringAttributeModel\";\nimport FileExtensionConstraint from \"./input-constraints/FileExtensionConstraint\";\nimport FileSizeConstraint from \"./input-constraints/FileSizeConstraint\";\n\nimport type {\n AttributeType,\n FilesType,\n FiletypeConstraintsType,\n FilesizeConstraintsType,\n} from \"../types\";\n\nconst UNCHANGED = \"UNCHANGED\";\n\n/**\n * Upload attribute\n */\nexport default class UploadAttributeModel extends StringAttributeModel {\n _files: FilesType;\n _initialTotalFileSize: number;\n _maxTotalFileSize: number;\n\n /**\n */\n static isApplicableModel(contributions: Object): boolean {\n return contributions.type === \"binary\";\n }\n\n /**\n */\n get type(): string {\n return \"upload\";\n }\n\n /**\n * Retrieve single or multi upload\n */\n get multiple(): boolean {\n return this.getContribution(\"multiple\", false);\n }\n\n /**\n */\n get initialTotalFileSize(): number {\n return this._initialTotalFileSize || 0;\n }\n\n /**\n */\n set initialTotalFileSize(initialTotalFileSize: number) {\n this._initialTotalFileSize = initialTotalFileSize;\n }\n\n /**\n */\n get maxTotalFileSize(): number {\n return this._maxTotalFileSize;\n }\n\n /**\n */\n set maxTotalFileSize(maxTotalFileSize: number) {\n this._maxTotalFileSize = maxTotalFileSize;\n }\n\n /**\n */\n get currentFilesize(): number {\n return this.initialTotalFileSize + this.uploadedFileSize;\n }\n\n /**\n */\n get maxFileSize(): ?number {\n if (this.maxTotalFileSize) {\n const uploadMaxFileSize = this.maxTotalFileSize - this.currentFilesize;\n if (uploadMaxFileSize < 0) {\n return 0;\n }\n\n return uploadMaxFileSize;\n }\n\n return this.contributions.uploadMaxFileSize;\n }\n\n /**\n */\n get uploadedFileSize(): number {\n if (Object.keys(this.files).length === 0) {\n return 0;\n }\n\n let accumulatedFileSize = 0;\n Object.keys(this.files).forEach((fileName) => {\n const file = this.files[fileName];\n if (file.size) {\n accumulatedFileSize += file.size;\n }\n });\n return accumulatedFileSize;\n }\n\n /**\n * Upload constraints\n */\n get uploadConstraints(): {\n fileTypes: FiletypeConstraintsType,\n maxFileSize: FilesizeConstraintsType,\n acceptedFiles: Array<string>,\n } {\n const mimeTypes = this.contributions.allowedMimeTypes\n ? this.contributions.allowedMimeTypes.filter(\n (mimeType) => mimeType !== \"[...]\"\n )\n : [];\n const extensions = this.contributions.allowedExtensions\n ? this.contributions.allowedExtensions.filter(\n (extension) => extension !== \"[...]\"\n )\n : [];\n\n const fileTypes: FiletypeConstraintsType = extensions.map((extension) => ({\n extensions: [extension],\n mimeTypes,\n }));\n\n return {\n fileTypes,\n maxFileSize: {\n fileSize: this.maxFileSize,\n maxTotalFileSize: this.maxTotalFileSize,\n isMaxTotal: this.maxTotalFileSize !== undefined,\n },\n acceptedFiles: this.acceptedFiles,\n };\n }\n\n /**\n * Array of accepted file extensions and mime types.\n * Convenience method for accept attribute of file input html control\n */\n get acceptedFiles(): Array<string> {\n const mimeTypes = this.contributions.allowedMimeTypes\n ? this.contributions.allowedMimeTypes.filter(\n (mimeType) => mimeType !== \"[...]\"\n )\n : [];\n const extensions = this.contributions.allowedExtensions\n ? this.contributions.allowedExtensions\n .filter((extension) => extension !== \"[...]\")\n .map((extension) => `.${extension}`)\n : [];\n\n return [...extensions, ...mimeTypes];\n }\n\n /**\n * Add upload constraints\n */\n addConstraints(): ConstraintCollection {\n const constraints = new ConstraintCollection();\n\n if (this.uploadConstraints.fileTypes.length > 0) {\n constraints.add(\n new FileExtensionConstraint(this.uploadConstraints.fileTypes)\n );\n }\n\n const hasFilesizeConstraint =\n this.uploadConstraints.maxFileSize.isMaxTotal ||\n this.uploadConstraints.maxFileSize.fileSize !== undefined;\n\n if (hasFilesizeConstraint) {\n constraints.add(\n new FileSizeConstraint(this.uploadConstraints.maxFileSize)\n );\n }\n\n return constraints;\n }\n\n /**\n */\n get files(): FilesType {\n return this._files || {};\n }\n\n /**\n */\n set files(files: FilesType) {\n this._files = files;\n }\n\n /**\n * Update the attribute\n */\n update(value: string): UploadAttributeModel {\n if (!value) {\n return this;\n }\n\n // parse to json and handle uploaded file\n // when the input value is a string but not json,\n // we assume that it is just a list of uploaded tokens and copy it as input value\n try {\n const files = JSON.parse(value);\n this.files = files;\n\n this.inputvalue = Object.keys(files)\n .map((fileName) => files[fileName].token)\n .join(\",\");\n } catch (error) {\n if (typeof value === \"string\") {\n this.inputvalue = value;\n }\n }\n\n this.updateLastModification();\n\n return this;\n }\n\n /**\n */\n get readonlyvalue(): string {\n if (this.initvalue) {\n return this.initvalue.toString();\n }\n\n return \"\";\n }\n\n /**\n * Getting the value of the attribute, return unchanged when the uploaded file has not changed\n */\n getValue(): any {\n if (!this.hasValue()) {\n return null;\n }\n\n if (this.initvalue === this.inputvalue) {\n return UNCHANGED;\n }\n\n return this._value;\n }\n\n /**\n */\n mergeAttribute(oldAttribute: AttributeType) {\n if (\n oldAttribute instanceof UploadAttributeModel &&\n oldAttribute.isValid &&\n oldAttribute.inputvalue !== null\n ) {\n this.update(JSON.stringify(oldAttribute.files));\n }\n }\n}\n"],"mappings":"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"}
@@ -59,6 +59,17 @@ class ErrorModel {
59
59
  get isMandatoryConstraint() {
60
60
  return this.id === "Constraint.Mandatory";
61
61
  }
62
+
63
+ /**
64
+ * Returns a message object from the error
65
+ */
66
+ getMessage() {
67
+ return {
68
+ id: this.id,
69
+ defaultMessage: this.defaultMessage ?? "",
70
+ parameters: this.parameters ?? {}
71
+ };
72
+ }
62
73
  }
63
74
  export default ErrorModel;
64
75
  //# sourceMappingURL=ErrorModel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ErrorModel.js","names":["LayoutHintCollection","ErrorModel","constructor","id","defaultMessage","parameters","isClientConstraint","layouthint","_id","_parameters","_defaultMessage","_isClientConstraint","_layouthint","Array","isArray","isMandatoryConstraint"],"sources":["../../../src/models/error/ErrorModel.js"],"sourcesContent":["// @flow\nimport type { MessageParameters } from \"../../i18n/types\";\nimport LayoutHintCollection from \"../layouthint/LayoutHintCollection\";\n\n/**\n * Wrapper around an error message / object\n */\nclass ErrorModel {\n _id: string;\n _defaultMessage: ?string;\n _parameters: ?MessageParameters;\n _isClientConstraint: boolean;\n _layouthint: LayoutHintCollection;\n\n /**\n * Contruct\n */\n constructor(\n id: string,\n defaultMessage: ?string,\n parameters: ?MessageParameters,\n isClientConstraint: boolean = false,\n layouthint: LayoutHintCollection = new LayoutHintCollection()\n ) {\n this._id = id;\n this._parameters = parameters;\n this._defaultMessage = defaultMessage;\n this._isClientConstraint = isClientConstraint;\n this._layouthint = Array.isArray(layouthint)\n ? new LayoutHintCollection(layouthint)\n : layouthint;\n }\n\n /**\n * Get id of error\n */\n get id(): string {\n return this._id;\n }\n\n /**\n */\n get defaultMessage(): ?string {\n return this._defaultMessage;\n }\n\n /**\n */\n get parameters(): ?MessageParameters {\n return this._parameters;\n }\n\n /**\n */\n get isClientConstraint(): boolean {\n return this._isClientConstraint || false;\n }\n\n /**\n */\n get layouthint(): LayoutHintCollection {\n return this._layouthint;\n }\n\n /**\n */\n get isMandatoryConstraint(): boolean {\n return this.id === \"Constraint.Mandatory\";\n }\n}\n\nexport default ErrorModel;\n"],"mappings":";AAEA,OAAOA,oBAAoB,MAAM,oCAAoC;;AAErE;AACA;AACA;AACA,MAAMC,UAAU,CAAC;EAOf;AACF;AACA;EACEC,WAAW,CACTC,EAAU,EACVC,cAAuB,EACvBC,UAA8B,EAG9B;IAAA,IAFAC,kBAA2B,uEAAG,KAAK;IAAA,IACnCC,UAAgC,uEAAG,IAAIP,oBAAoB,EAAE;IAAA;IAAA;IAAA;IAAA;IAAA;IAE7D,IAAI,CAACQ,GAAG,GAAGL,EAAE;IACb,IAAI,CAACM,WAAW,GAAGJ,UAAU;IAC7B,IAAI,CAACK,eAAe,GAAGN,cAAc;IACrC,IAAI,CAACO,mBAAmB,GAAGL,kBAAkB;IAC7C,IAAI,CAACM,WAAW,GAAGC,KAAK,CAACC,OAAO,CAACP,UAAU,CAAC,GACxC,IAAIP,oBAAoB,CAACO,UAAU,CAAC,GACpCA,UAAU;EAChB;;EAEA;AACF;AACA;EACE,IAAIJ,EAAE,GAAW;IACf,OAAO,IAAI,CAACK,GAAG;EACjB;;EAEA;AACF;EACE,IAAIJ,cAAc,GAAY;IAC5B,OAAO,IAAI,CAACM,eAAe;EAC7B;;EAEA;AACF;EACE,IAAIL,UAAU,GAAuB;IACnC,OAAO,IAAI,CAACI,WAAW;EACzB;;EAEA;AACF;EACE,IAAIH,kBAAkB,GAAY;IAChC,OAAO,IAAI,CAACK,mBAAmB,IAAI,KAAK;EAC1C;;EAEA;AACF;EACE,IAAIJ,UAAU,GAAyB;IACrC,OAAO,IAAI,CAACK,WAAW;EACzB;;EAEA;AACF;EACE,IAAIG,qBAAqB,GAAY;IACnC,OAAO,IAAI,CAACZ,EAAE,KAAK,sBAAsB;EAC3C;AACF;AAEA,eAAeF,UAAU"}
1
+ {"version":3,"file":"ErrorModel.js","names":["LayoutHintCollection","ErrorModel","constructor","id","defaultMessage","parameters","isClientConstraint","layouthint","_id","_parameters","_defaultMessage","_isClientConstraint","_layouthint","Array","isArray","isMandatoryConstraint","getMessage"],"sources":["../../../src/models/error/ErrorModel.js"],"sourcesContent":["// @flow\nimport type { MessageObject, MessageParameters } from \"../../i18n/types\";\nimport LayoutHintCollection from \"../layouthint/LayoutHintCollection\";\n\n/**\n * Wrapper around an error message / object\n */\nclass ErrorModel {\n _id: string;\n _defaultMessage: ?string;\n _parameters: ?MessageParameters;\n _isClientConstraint: boolean;\n _layouthint: LayoutHintCollection;\n\n /**\n * Contruct\n */\n constructor(\n id: string,\n defaultMessage: ?string,\n parameters: ?MessageParameters,\n isClientConstraint: boolean = false,\n layouthint: LayoutHintCollection = new LayoutHintCollection()\n ) {\n this._id = id;\n this._parameters = parameters;\n this._defaultMessage = defaultMessage;\n this._isClientConstraint = isClientConstraint;\n this._layouthint = Array.isArray(layouthint)\n ? new LayoutHintCollection(layouthint)\n : layouthint;\n }\n\n /**\n * Get id of error\n */\n get id(): string {\n return this._id;\n }\n\n /**\n */\n get defaultMessage(): ?string {\n return this._defaultMessage;\n }\n\n /**\n */\n get parameters(): ?MessageParameters {\n return this._parameters;\n }\n\n /**\n */\n get isClientConstraint(): boolean {\n return this._isClientConstraint || false;\n }\n\n /**\n */\n get layouthint(): LayoutHintCollection {\n return this._layouthint;\n }\n\n /**\n */\n get isMandatoryConstraint(): boolean {\n return this.id === \"Constraint.Mandatory\";\n }\n\n /**\n * Returns a message object from the error\n */\n getMessage(): MessageObject {\n return {\n id: this.id,\n defaultMessage: this.defaultMessage ?? \"\",\n parameters: this.parameters ?? {},\n };\n }\n}\n\nexport default ErrorModel;\n"],"mappings":";AAEA,OAAOA,oBAAoB,MAAM,oCAAoC;;AAErE;AACA;AACA;AACA,MAAMC,UAAU,CAAC;EAOf;AACF;AACA;EACEC,WAAW,CACTC,EAAU,EACVC,cAAuB,EACvBC,UAA8B,EAG9B;IAAA,IAFAC,kBAA2B,uEAAG,KAAK;IAAA,IACnCC,UAAgC,uEAAG,IAAIP,oBAAoB,EAAE;IAAA;IAAA;IAAA;IAAA;IAAA;IAE7D,IAAI,CAACQ,GAAG,GAAGL,EAAE;IACb,IAAI,CAACM,WAAW,GAAGJ,UAAU;IAC7B,IAAI,CAACK,eAAe,GAAGN,cAAc;IACrC,IAAI,CAACO,mBAAmB,GAAGL,kBAAkB;IAC7C,IAAI,CAACM,WAAW,GAAGC,KAAK,CAACC,OAAO,CAACP,UAAU,CAAC,GACxC,IAAIP,oBAAoB,CAACO,UAAU,CAAC,GACpCA,UAAU;EAChB;;EAEA;AACF;AACA;EACE,IAAIJ,EAAE,GAAW;IACf,OAAO,IAAI,CAACK,GAAG;EACjB;;EAEA;AACF;EACE,IAAIJ,cAAc,GAAY;IAC5B,OAAO,IAAI,CAACM,eAAe;EAC7B;;EAEA;AACF;EACE,IAAIL,UAAU,GAAuB;IACnC,OAAO,IAAI,CAACI,WAAW;EACzB;;EAEA;AACF;EACE,IAAIH,kBAAkB,GAAY;IAChC,OAAO,IAAI,CAACK,mBAAmB,IAAI,KAAK;EAC1C;;EAEA;AACF;EACE,IAAIJ,UAAU,GAAyB;IACrC,OAAO,IAAI,CAACK,WAAW;EACzB;;EAEA;AACF;EACE,IAAIG,qBAAqB,GAAY;IACnC,OAAO,IAAI,CAACZ,EAAE,KAAK,sBAAsB;EAC3C;;EAEA;AACF;AACA;EACEa,UAAU,GAAkB;IAC1B,OAAO;MACLb,EAAE,EAAE,IAAI,CAACA,EAAE;MACXC,cAAc,EAAE,IAAI,CAACA,cAAc,IAAI,EAAE;MACzCC,UAAU,EAAE,IAAI,CAACA,UAAU,IAAI,CAAC;IAClC,CAAC;EACH;AACF;AAEA,eAAeJ,UAAU"}
@@ -4,7 +4,7 @@ import _includesInstanceProperty from "@babel/runtime-corejs3/core-js-stable/ins
4
4
  import _startsWithInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/starts-with";
5
5
  import _findInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/find";
6
6
  import _filterInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/filter";
7
- import { BASE, CONTENT_PATH, HTTP_METHODS } from "../../constants/Constants";
7
+ import { getBasePath, HTTP_METHODS, CONTENT_PATH } from "../../constants";
8
8
  import Parameter from "../parameter/Parameter";
9
9
  import { IllegalArgumentException } from "../../exceptions";
10
10
  /**
@@ -299,13 +299,13 @@ class Href {
299
299
  }
300
300
 
301
301
  /**
302
- * Retrieve the path combined with the BASE of the application, e.g. /BeInformed
302
+ * Retrieve the path combined with the base path (context-path) of the application, e.g. /BeInformed
303
303
  */
304
304
  get absolutepath() {
305
305
  if (this.isExternal) {
306
306
  return this.path;
307
307
  }
308
- return BASE + this.path;
308
+ return getBasePath() + this.path;
309
309
  }
310
310
 
311
311
  /**
@@ -375,7 +375,7 @@ class Href {
375
375
  */
376
376
  get isContent() {
377
377
  var _context10;
378
- return _startsWithInstanceProperty(_context10 = this.absolutepath).call(_context10, CONTENT_PATH);
378
+ return _startsWithInstanceProperty(_context10 = this.absolutepath).call(_context10, `${getBasePath()}${CONTENT_PATH}`);
379
379
  }
380
380
 
381
381
  /**