@beinformed/ui 1.60.4 → 1.60.5

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 (46) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/esm/hooks/__tests__/useForm.spec.js.flow +1 -1
  3. package/esm/hooks/useForm.js +20 -15
  4. package/esm/hooks/useForm.js.flow +14 -5
  5. package/esm/hooks/useForm.js.map +1 -1
  6. package/esm/hooks/useModularUI.d.ts +1 -0
  7. package/esm/hooks/useModularUI.js +11 -3
  8. package/esm/hooks/useModularUI.js.flow +23 -4
  9. package/esm/hooks/useModularUI.js.map +1 -1
  10. package/esm/models/application/ApplicationModel.js +3 -1
  11. package/esm/models/application/ApplicationModel.js.map +1 -1
  12. package/esm/models/attributes/CompositeAttributeModel.js +6 -5
  13. package/esm/models/attributes/CompositeAttributeModel.js.map +1 -1
  14. package/esm/models/content/ContentTOCModel.js +2 -1
  15. package/esm/models/content/ContentTOCModel.js.map +1 -1
  16. package/esm/models/href/Href.js +12 -11
  17. package/esm/models/href/Href.js.map +1 -1
  18. package/esm/models/list/ListModel.js +2 -1
  19. package/esm/models/list/ListModel.js.map +1 -1
  20. package/esm/modularui/ModularUIRequest.js +6 -3
  21. package/esm/modularui/ModularUIRequest.js.map +1 -1
  22. package/esm/redux/_modularui/ModularUIUtils.js +3 -1
  23. package/esm/redux/_modularui/ModularUIUtils.js.map +1 -1
  24. package/lib/hooks/useForm.js +19 -14
  25. package/lib/hooks/useForm.js.map +1 -1
  26. package/lib/hooks/useModularUI.d.ts +1 -0
  27. package/lib/hooks/useModularUI.js +13 -4
  28. package/lib/hooks/useModularUI.js.map +1 -1
  29. package/lib/models/application/ApplicationModel.js +3 -1
  30. package/lib/models/application/ApplicationModel.js.map +1 -1
  31. package/lib/models/attributes/CompositeAttributeModel.js +6 -5
  32. package/lib/models/attributes/CompositeAttributeModel.js.map +1 -1
  33. package/lib/models/content/ContentTOCModel.js +2 -1
  34. package/lib/models/content/ContentTOCModel.js.map +1 -1
  35. package/lib/models/href/Href.js +12 -11
  36. package/lib/models/href/Href.js.map +1 -1
  37. package/lib/models/list/ListModel.js +2 -1
  38. package/lib/models/list/ListModel.js.map +1 -1
  39. package/lib/modularui/ModularUIRequest.js +6 -3
  40. package/lib/modularui/ModularUIRequest.js.map +1 -1
  41. package/lib/redux/_modularui/ModularUIUtils.js +3 -1
  42. package/lib/redux/_modularui/ModularUIUtils.js.map +1 -1
  43. package/package.json +22 -22
  44. package/src/hooks/__tests__/useForm.spec.js +1 -1
  45. package/src/hooks/useForm.js +14 -5
  46. package/src/hooks/useModularUI.js +23 -4
@@ -1,3 +1,4 @@
1
+ import _startsWithInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/starts-with";
1
2
  import { useState } from "react";
2
3
  import { getDisplayName } from "../../react/utils";
3
4
  import { MODULARUI_STATUS } from "../../constants/Constants";
@@ -16,6 +17,7 @@ const getUrl = (resource, props) => {
16
17
  /**
17
18
  */
18
19
  export const useUrl = (resource, props) => {
20
+ var _context;
19
21
  const [previousUrl, setPreviousUrl] = useState(null);
20
22
  const [previousExact, setPreviousExact] = useState(false);
21
23
  const url = getUrl(resource, props);
@@ -38,7 +40,7 @@ export const useUrl = (resource, props) => {
38
40
  // Always create an url when the match is exact
39
41
  // Or when the match is not exact AND the original match also was not exact
40
42
  // Or when the new start uri is different from the previous url --> different resource for same panel
41
- if (match.isExact === true || previousExact === match.isExact || !previousUrl?.startsWith(match.url)) {
43
+ if (match.isExact === true || previousExact === match.isExact || !((_context = previousUrl) == null ? void 0 : Function.call.bind(_startsWithInstanceProperty(_context), _context))?.(match.url)) {
42
44
  setPreviousUrl(url);
43
45
  setPreviousExact(match.isExact);
44
46
  return url;
@@ -1 +1 @@
1
- {"version":3,"file":"ModularUIUtils.js","names":["useState","getDisplayName","MODULARUI_STATUS","Href","getUrl","resource","props","url","useUrl","previousUrl","setPreviousUrl","previousExact","setPreviousExact","match","equalsWithParameters","isExact","startsWith","getKey","WrappedComponent","name","split","useReload","modelEntry","reload","arguments","length","undefined","isFullyLoaded","status","FINISHED","lastModification"],"sources":["../../../src/redux/_modularui/ModularUIUtils.js"],"sourcesContent":["// @flow\nimport { useState } from \"react\";\n\nimport { getDisplayName } from \"../../react/utils\";\nimport { MODULARUI_STATUS } from \"../../constants/Constants\";\nimport Href from \"../../models/href/Href\";\n\nimport type { ComponentType } from \"react\";\n\n/**\n * Generate modular ui url\n */\nconst getUrl = (resource: string | Function | Href, props: Object): Href => {\n const url = typeof resource === \"function\" ? resource(props) : resource;\n\n if (url instanceof Href) {\n return url;\n }\n\n return new Href(url);\n};\n\n/**\n */\nexport const useUrl = (\n resource: string | Function | Href,\n props: Object,\n): Href => {\n const [previousUrl, setPreviousUrl] = useState(null);\n const [previousExact, setPreviousExact] = useState(false);\n\n const url = getUrl(resource, props);\n\n if (url == null && previousUrl == null) {\n return new Href(\"\");\n }\n\n const { match } = props;\n\n // when match is not available through props,\n // this is a direct call to the modular ui hoc, not using a route\n if (!match) {\n return url;\n }\n\n if (url.equalsWithParameters(previousUrl)) {\n return previousUrl || url;\n }\n\n // Always create an url when the match is exact\n // Or when the match is not exact AND the original match also was not exact\n // Or when the new start uri is different from the previous url --> different resource for same panel\n if (\n match.isExact === true ||\n previousExact === match.isExact ||\n !previousUrl?.startsWith(match.url)\n ) {\n setPreviousUrl(url);\n setPreviousExact(match.isExact);\n\n return url;\n }\n\n return previousUrl || new Href(\"\");\n};\n\n/**\n * Create key for modularui request based on component name and requested url\n */\nexport const getKey = (\n WrappedComponent: ComponentType<any>,\n name: string,\n url: string,\n): string => {\n if (url) {\n return `${getDisplayName(WrappedComponent, name)}(${url.split(\"?\")[0]})`;\n }\n\n return getDisplayName(WrappedComponent, name);\n};\n\n/**\n * Check if the model corresponding to a modular ui service should be reloaded\n */\nexport const useReload = (modelEntry: Object, reload: number = 0): boolean => {\n if (reload > 0) {\n const isFullyLoaded = modelEntry?.status === MODULARUI_STATUS.FINISHED;\n const lastModification = modelEntry?.lastModification ?? 0;\n\n if (isFullyLoaded && lastModification < reload) {\n return true;\n }\n }\n\n return false;\n};\n"],"mappings":"AACA,SAASA,QAAQ,QAAQ,OAAO;AAEhC,SAASC,cAAc,QAAQ,mBAAmB;AAClD,SAASC,gBAAgB,QAAQ,2BAA2B;AAC5D,OAAOC,IAAI,MAAM,wBAAwB;AAIzC;AACA;AACA;AACA,MAAMC,MAAM,GAAGA,CAACC,QAAkC,EAAEC,KAAa,KAAW;EAC1E,MAAMC,GAAG,GAAG,OAAOF,QAAQ,KAAK,UAAU,GAAGA,QAAQ,CAACC,KAAK,CAAC,GAAGD,QAAQ;EAEvE,IAAIE,GAAG,YAAYJ,IAAI,EAAE;IACvB,OAAOI,GAAG;EACZ;EAEA,OAAO,IAAIJ,IAAI,CAACI,GAAG,CAAC;AACtB,CAAC;;AAED;AACA;AACA,OAAO,MAAMC,MAAM,GAAGA,CACpBH,QAAkC,EAClCC,KAAa,KACJ;EACT,MAAM,CAACG,WAAW,EAAEC,cAAc,CAAC,GAAGV,QAAQ,CAAC,IAAI,CAAC;EACpD,MAAM,CAACW,aAAa,EAAEC,gBAAgB,CAAC,GAAGZ,QAAQ,CAAC,KAAK,CAAC;EAEzD,MAAMO,GAAG,GAAGH,MAAM,CAACC,QAAQ,EAAEC,KAAK,CAAC;EAEnC,IAAIC,GAAG,IAAI,IAAI,IAAIE,WAAW,IAAI,IAAI,EAAE;IACtC,OAAO,IAAIN,IAAI,CAAC,EAAE,CAAC;EACrB;EAEA,MAAM;IAAEU;EAAM,CAAC,GAAGP,KAAK;;EAEvB;EACA;EACA,IAAI,CAACO,KAAK,EAAE;IACV,OAAON,GAAG;EACZ;EAEA,IAAIA,GAAG,CAACO,oBAAoB,CAACL,WAAW,CAAC,EAAE;IACzC,OAAOA,WAAW,IAAIF,GAAG;EAC3B;;EAEA;EACA;EACA;EACA,IACEM,KAAK,CAACE,OAAO,KAAK,IAAI,IACtBJ,aAAa,KAAKE,KAAK,CAACE,OAAO,IAC/B,CAACN,WAAW,EAAEO,UAAU,CAACH,KAAK,CAACN,GAAG,CAAC,EACnC;IACAG,cAAc,CAACH,GAAG,CAAC;IACnBK,gBAAgB,CAACC,KAAK,CAACE,OAAO,CAAC;IAE/B,OAAOR,GAAG;EACZ;EAEA,OAAOE,WAAW,IAAI,IAAIN,IAAI,CAAC,EAAE,CAAC;AACpC,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAMc,MAAM,GAAGA,CACpBC,gBAAoC,EACpCC,IAAY,EACZZ,GAAW,KACA;EACX,IAAIA,GAAG,EAAE;IACP,OAAO,GAAGN,cAAc,CAACiB,gBAAgB,EAAEC,IAAI,CAAC,IAAIZ,GAAG,CAACa,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG;EAC1E;EAEA,OAAOnB,cAAc,CAACiB,gBAAgB,EAAEC,IAAI,CAAC;AAC/C,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAME,SAAS,GAAG,SAAAA,CAACC,UAAkB,EAAkC;EAAA,IAAhCC,MAAc,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC;EAC9D,IAAID,MAAM,GAAG,CAAC,EAAE;IACd,MAAMI,aAAa,GAAGL,UAAU,EAAEM,MAAM,KAAK1B,gBAAgB,CAAC2B,QAAQ;IACtE,MAAMC,gBAAgB,GAAGR,UAAU,EAAEQ,gBAAgB,IAAI,CAAC;IAE1D,IAAIH,aAAa,IAAIG,gBAAgB,GAAGP,MAAM,EAAE;MAC9C,OAAO,IAAI;IACb;EACF;EAEA,OAAO,KAAK;AACd,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"ModularUIUtils.js","names":["useState","getDisplayName","MODULARUI_STATUS","Href","getUrl","resource","props","url","useUrl","_context","previousUrl","setPreviousUrl","previousExact","setPreviousExact","match","equalsWithParameters","isExact","Function","call","bind","_startsWithInstanceProperty","getKey","WrappedComponent","name","split","useReload","modelEntry","reload","arguments","length","undefined","isFullyLoaded","status","FINISHED","lastModification"],"sources":["../../../src/redux/_modularui/ModularUIUtils.js"],"sourcesContent":["// @flow\nimport { useState } from \"react\";\n\nimport { getDisplayName } from \"../../react/utils\";\nimport { MODULARUI_STATUS } from \"../../constants/Constants\";\nimport Href from \"../../models/href/Href\";\n\nimport type { ComponentType } from \"react\";\n\n/**\n * Generate modular ui url\n */\nconst getUrl = (resource: string | Function | Href, props: Object): Href => {\n const url = typeof resource === \"function\" ? resource(props) : resource;\n\n if (url instanceof Href) {\n return url;\n }\n\n return new Href(url);\n};\n\n/**\n */\nexport const useUrl = (\n resource: string | Function | Href,\n props: Object,\n): Href => {\n const [previousUrl, setPreviousUrl] = useState(null);\n const [previousExact, setPreviousExact] = useState(false);\n\n const url = getUrl(resource, props);\n\n if (url == null && previousUrl == null) {\n return new Href(\"\");\n }\n\n const { match } = props;\n\n // when match is not available through props,\n // this is a direct call to the modular ui hoc, not using a route\n if (!match) {\n return url;\n }\n\n if (url.equalsWithParameters(previousUrl)) {\n return previousUrl || url;\n }\n\n // Always create an url when the match is exact\n // Or when the match is not exact AND the original match also was not exact\n // Or when the new start uri is different from the previous url --> different resource for same panel\n if (\n match.isExact === true ||\n previousExact === match.isExact ||\n !previousUrl?.startsWith(match.url)\n ) {\n setPreviousUrl(url);\n setPreviousExact(match.isExact);\n\n return url;\n }\n\n return previousUrl || new Href(\"\");\n};\n\n/**\n * Create key for modularui request based on component name and requested url\n */\nexport const getKey = (\n WrappedComponent: ComponentType<any>,\n name: string,\n url: string,\n): string => {\n if (url) {\n return `${getDisplayName(WrappedComponent, name)}(${url.split(\"?\")[0]})`;\n }\n\n return getDisplayName(WrappedComponent, name);\n};\n\n/**\n * Check if the model corresponding to a modular ui service should be reloaded\n */\nexport const useReload = (modelEntry: Object, reload: number = 0): boolean => {\n if (reload > 0) {\n const isFullyLoaded = modelEntry?.status === MODULARUI_STATUS.FINISHED;\n const lastModification = modelEntry?.lastModification ?? 0;\n\n if (isFullyLoaded && lastModification < reload) {\n return true;\n }\n }\n\n return false;\n};\n"],"mappings":";AACA,SAASA,QAAQ,QAAQ,OAAO;AAEhC,SAASC,cAAc,QAAQ,mBAAmB;AAClD,SAASC,gBAAgB,QAAQ,2BAA2B;AAC5D,OAAOC,IAAI,MAAM,wBAAwB;AAIzC;AACA;AACA;AACA,MAAMC,MAAM,GAAGA,CAACC,QAAkC,EAAEC,KAAa,KAAW;EAC1E,MAAMC,GAAG,GAAG,OAAOF,QAAQ,KAAK,UAAU,GAAGA,QAAQ,CAACC,KAAK,CAAC,GAAGD,QAAQ;EAEvE,IAAIE,GAAG,YAAYJ,IAAI,EAAE;IACvB,OAAOI,GAAG;EACZ;EAEA,OAAO,IAAIJ,IAAI,CAACI,GAAG,CAAC;AACtB,CAAC;;AAED;AACA;AACA,OAAO,MAAMC,MAAM,GAAGA,CACpBH,QAAkC,EAClCC,KAAa,KACJ;EAAA,IAAAG,QAAA;EACT,MAAM,CAACC,WAAW,EAAEC,cAAc,CAAC,GAAGX,QAAQ,CAAC,IAAI,CAAC;EACpD,MAAM,CAACY,aAAa,EAAEC,gBAAgB,CAAC,GAAGb,QAAQ,CAAC,KAAK,CAAC;EAEzD,MAAMO,GAAG,GAAGH,MAAM,CAACC,QAAQ,EAAEC,KAAK,CAAC;EAEnC,IAAIC,GAAG,IAAI,IAAI,IAAIG,WAAW,IAAI,IAAI,EAAE;IACtC,OAAO,IAAIP,IAAI,CAAC,EAAE,CAAC;EACrB;EAEA,MAAM;IAAEW;EAAM,CAAC,GAAGR,KAAK;;EAEvB;EACA;EACA,IAAI,CAACQ,KAAK,EAAE;IACV,OAAOP,GAAG;EACZ;EAEA,IAAIA,GAAG,CAACQ,oBAAoB,CAACL,WAAW,CAAC,EAAE;IACzC,OAAOA,WAAW,IAAIH,GAAG;EAC3B;;EAEA;EACA;EACA;EACA,IACEO,KAAK,CAACE,OAAO,KAAK,IAAI,IACtBJ,aAAa,KAAKE,KAAK,CAACE,OAAO,IAC/B,CAAC,EAAAP,QAAA,GAAAC,WAAW,qBAAAO,QAAA,CAAAC,IAAA,CAAAC,IAAA,CAAAC,2BAAA,CAAAX,QAAA,GAAAA,QAAA,KAAaK,KAAK,CAACP,GAAG,CAAC,EACnC;IACAI,cAAc,CAACJ,GAAG,CAAC;IACnBM,gBAAgB,CAACC,KAAK,CAACE,OAAO,CAAC;IAE/B,OAAOT,GAAG;EACZ;EAEA,OAAOG,WAAW,IAAI,IAAIP,IAAI,CAAC,EAAE,CAAC;AACpC,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAMkB,MAAM,GAAGA,CACpBC,gBAAoC,EACpCC,IAAY,EACZhB,GAAW,KACA;EACX,IAAIA,GAAG,EAAE;IACP,OAAO,GAAGN,cAAc,CAACqB,gBAAgB,EAAEC,IAAI,CAAC,IAAIhB,GAAG,CAACiB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG;EAC1E;EAEA,OAAOvB,cAAc,CAACqB,gBAAgB,EAAEC,IAAI,CAAC;AAC/C,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAME,SAAS,GAAG,SAAAA,CAACC,UAAkB,EAAkC;EAAA,IAAhCC,MAAc,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC;EAC9D,IAAID,MAAM,GAAG,CAAC,EAAE;IACd,MAAMI,aAAa,GAAGL,UAAU,EAAEM,MAAM,KAAK9B,gBAAgB,CAAC+B,QAAQ;IACtE,MAAMC,gBAAgB,GAAGR,UAAU,EAAEQ,gBAAgB,IAAI,CAAC;IAE1D,IAAIH,aAAa,IAAIG,gBAAgB,GAAGP,MAAM,EAAE;MAC9C,OAAO,IAAI;IACb;EACF;EAEA,OAAO,KAAK;AACd,CAAC","ignoreList":[]}
@@ -12,6 +12,8 @@ var _modularui = require("../redux/_modularui");
12
12
  var _useModularUI = require("./useModularUI");
13
13
  var _actions = require("../redux/actions");
14
14
  var _FormModel = _interopRequireDefault(require("../models/form/FormModel"));
15
+ const FORM_MODEL_KEY = "form";
16
+
15
17
  /**
16
18
  * Load a form by href
17
19
  */
@@ -20,7 +22,7 @@ const useForm = (href, data) => {
20
22
  if (!(0, _constants.getSetting)("ALWAYS_COMMIT_FORM")) {
21
23
  formHref.addParameter("commit", "false");
22
24
  }
23
- const form = (0, _useModularUI.useModularUI)("form", formHref, {
25
+ const form = (0, _useModularUI.useModularUI)(FORM_MODEL_KEY, formHref, {
24
26
  method: _constants.HTTP_METHODS.POST,
25
27
  targetModel: _FormModel.default,
26
28
  removeOnUnmount: true,
@@ -41,19 +43,22 @@ const useFormNavigation = () => {
41
43
  const dispatch = (0, _reactRedux.useDispatch)();
42
44
  const previous = form => dispatch((0, _actions.previousObject)(form));
43
45
  const cancel = form => dispatch((0, _actions.cancelForm)(form));
44
- const submit = form => dispatch((0, _modularui.loadModularUI)(form.connectKey, form.selfhref, {
45
- method: _constants.HTTP_METHODS.POST,
46
- data: form.formdata,
47
- updateHandler: newModel => {
48
- if (newModel instanceof _FormModel.default) {
49
- const clonedModel = form.clone();
50
- clonedModel.update(newModel);
51
- return clonedModel;
52
- }
53
- return newModel;
54
- },
55
- targetModel: _FormModel.default
56
- }));
46
+ const submit = form => {
47
+ const connectKey = (0, _useModularUI.createKeyForModularUIStore)(FORM_MODEL_KEY, form.selfhref.toString(), form.locale);
48
+ return dispatch((0, _modularui.loadModularUI)(connectKey, form.selfhref, {
49
+ method: _constants.HTTP_METHODS.POST,
50
+ data: form.formdata,
51
+ updateHandler: newModel => {
52
+ if (newModel instanceof _FormModel.default) {
53
+ const clonedModel = form.clone();
54
+ clonedModel.update(newModel);
55
+ return clonedModel;
56
+ }
57
+ return newModel;
58
+ },
59
+ targetModel: _FormModel.default
60
+ }));
61
+ };
57
62
  const remove = form => dispatch((0, _modularui.removeModelByKey)(form.connectKey));
58
63
  const showFormNotificationAction = form => dispatch((0, _actions.showFormNotification)(form));
59
64
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"useForm.js","names":["_reactRedux","require","_Href","_interopRequireDefault","_constants","_modularui","_useModularUI","_actions","_FormModel","useForm","href","data","formHref","Href","getSetting","addParameter","form","useModularUI","method","HTTP_METHODS","POST","targetModel","FormModel","removeOnUnmount","origin","contextPath","model","exports","useFormNavigation","dispatch","useDispatch","previous","previousObject","cancel","cancelForm","submit","loadModularUI","connectKey","selfhref","formdata","updateHandler","newModel","clonedModel","clone","update","remove","removeModelByKey","showFormNotificationAction","showFormNotification","useAttributeUpdate","object","attribute","value","options","updateFormAttribute","useAttributeSet","save","addRepeatableAttributeSet","cancelRepeatableAttributeSet","removeRepeatableAttributeSet"],"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":[]}
1
+ {"version":3,"file":"useForm.js","names":["_reactRedux","require","_Href","_interopRequireDefault","_constants","_modularui","_useModularUI","_actions","_FormModel","FORM_MODEL_KEY","useForm","href","data","formHref","Href","getSetting","addParameter","form","useModularUI","method","HTTP_METHODS","POST","targetModel","FormModel","removeOnUnmount","origin","contextPath","model","exports","useFormNavigation","dispatch","useDispatch","previous","previousObject","cancel","cancelForm","submit","connectKey","createKeyForModularUIStore","selfhref","toString","locale","loadModularUI","formdata","updateHandler","newModel","clonedModel","clone","update","remove","removeModelByKey","showFormNotificationAction","showFormNotification","useAttributeUpdate","object","attribute","value","options","updateFormAttribute","useAttributeSet","save","addRepeatableAttributeSet","cancelRepeatableAttributeSet","removeRepeatableAttributeSet"],"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 { createKeyForModularUIStore, 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\nconst FORM_MODEL_KEY = \"form\";\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_MODEL_KEY, 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 const connectKey = createKeyForModularUIStore(\n FORM_MODEL_KEY,\n form.selfhref.toString(),\n form.locale,\n );\n\n return dispatch(\n loadModularUI(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\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,3 +1,4 @@
1
+ export function createKeyForModularUIStore(modelKey: string, url: string, locale: string): string;
1
2
  export function useModularUI(modelKey: string, url: string | Href, options?: RequestModularUIOptions): any;
2
3
  import Href from "../models/href/Href";
3
4
  import { RequestModularUIOptions } from "../utils";
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequ
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.useModularUI = void 0;
7
+ exports.useModularUI = exports.createKeyForModularUIStore = void 0;
8
8
  var _react = require("react");
9
9
  var _reactRedux = require("react-redux");
10
10
  var _reactRouter = require("react-router");
@@ -15,9 +15,18 @@ var _useI18n = require("./useI18n");
15
15
  var _Href = _interopRequireDefault(require("../models/href/Href"));
16
16
  /**
17
17
  */
18
- const useKeyForHook = (modelKey, url) => {
18
+ const createKeyForModularUIStore = (modelKey, url, locale) => {
19
+ return `${modelKey}(${url})(${locale})`;
20
+ };
21
+
22
+ /**
23
+ */
24
+ exports.createKeyForModularUIStore = createKeyForModularUIStore;
25
+ const useKeyForHook = function (modelKey, url) {
26
+ let removeQuerystringFromKey = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
19
27
  const locale = (0, _useI18n.useLocale)();
20
- return (0, _react.useMemo)(() => `${modelKey}(${url.split("?")[0]})(${locale})`, [modelKey, url, locale]);
28
+ const href = removeQuerystringFromKey ? url.split("?")[0] : url;
29
+ return (0, _react.useMemo)(() => createKeyForModularUIStore(modelKey, href, locale), [modelKey, href, locale]);
21
30
  };
22
31
 
23
32
  /**
@@ -30,7 +39,7 @@ const useModularUI = function (modelKey, url) {
30
39
  };
31
40
  const dispatch = (0, _reactRedux.useDispatch)();
32
41
  const href = (0, _react.useMemo)(() => url?.toString() || "", [url]);
33
- const key = useKeyForHook(modelKey, href);
42
+ const key = useKeyForHook(modelKey, href, !options.method || options.method === _constants.HTTP_METHODS.GET);
34
43
  const modelSelector = (0, _react.useMemo)(() => state => state.modularui[key], [key]);
35
44
  const model = (0, _reactRedux.useSelector)(modelSelector);
36
45
  if (url instanceof _Href.default) {
@@ -1 +1 @@
1
- {"version":3,"file":"useModularUI.js","names":["_react","require","_reactRedux","_reactRouter","_constants","_ModularUIActions","_useDeepCompareEffect","_interopRequireDefault","_useI18n","_Href","useKeyForHook","modelKey","url","locale","useLocale","useMemo","split","useModularUI","options","arguments","length","undefined","method","HTTP_METHODS","GET","removeOnUnmount","dispatch","useDispatch","href","toString","key","modelSelector","state","modularui","model","useSelector","Href","origin","contextPath","location","useLocation","redirectLocation","forceLoad","equals","prevOptions","useRef","prevHref","prevForceLoad","useDeepCompareEffect","isOldReload","current","isReload","doForceLoad","loadModularUI","useEffect","removeModelByKey","exports"],"sources":["../../src/hooks/useModularUI.js"],"sourcesContent":["// @flow\nimport { useEffect, useRef, useMemo } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { useLocation } from \"react-router\";\n\nimport { HTTP_METHODS } from \"../constants\";\nimport {\n loadModularUI,\n removeModelByKey,\n} from \"../redux/_modularui/ModularUIActions\";\n\nimport useDeepCompareEffect from \"./useDeepCompareEffect\";\n\nimport { useLocale } from \"./useI18n\";\nimport Href from \"../models/href/Href\";\n\nimport type { RequestModularUIOptions } from \"../utils\";\n\n/**\n */\nconst useKeyForHook = (modelKey: string, url: string) => {\n const locale = useLocale();\n return useMemo(\n () => `${modelKey}(${url.split(\"?\")[0]})(${locale})`,\n [modelKey, url, locale],\n );\n};\n\n/**\n * Use redux action and selector to retrieve the correct modular ui service model\n */\nexport const useModularUI = (\n modelKey: string,\n url: string | Href,\n options: RequestModularUIOptions = {\n method: HTTP_METHODS.GET,\n removeOnUnmount: false,\n },\n): any => {\n const dispatch = useDispatch();\n const href = useMemo(() => url?.toString() || \"\", [url]);\n const key = useKeyForHook(modelKey, href);\n\n const modelSelector = useMemo(() => (state) => state.modularui[key], [key]);\n const model = useSelector(modelSelector);\n\n if (url instanceof Href) {\n options.origin = options.origin ?? url.origin;\n options.contextPath = options.contextPath ?? url.contextPath;\n }\n\n const location = useLocation();\n const redirectLocation = location.state?.redirectLocation;\n const forceLoad =\n model == null ||\n (redirectLocation instanceof Href ? redirectLocation?.equals(href) : false);\n\n const prevOptions = useRef(options);\n const prevHref = useRef(href);\n const prevForceLoad = useRef(forceLoad);\n\n // dispatch loadModularUI\n useDeepCompareEffect(() => {\n // prevent reloads when previous option had the isReload, but the new options not\n const isOldReload =\n prevHref.current === href &&\n prevOptions.current.isReload &&\n !options.isReload;\n\n const doForceLoad = forceLoad && !prevForceLoad.current;\n\n if (href !== \"\" && (doForceLoad || !isOldReload)) {\n dispatch(loadModularUI(key, href, options));\n }\n\n prevOptions.current = options;\n prevHref.current = href;\n prevForceLoad.current = forceLoad;\n }, [key, href, options, forceLoad]);\n\n useEffect(() => {\n if (options.removeOnUnmount) {\n return () => {\n dispatch(removeModelByKey(key));\n };\n }\n }, [dispatch, key, options.removeOnUnmount]);\n\n return model;\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"useModularUI.js","names":["_react","require","_reactRedux","_reactRouter","_constants","_ModularUIActions","_useDeepCompareEffect","_interopRequireDefault","_useI18n","_Href","createKeyForModularUIStore","modelKey","url","locale","exports","useKeyForHook","removeQuerystringFromKey","arguments","length","undefined","useLocale","href","split","useMemo","useModularUI","options","method","HTTP_METHODS","GET","removeOnUnmount","dispatch","useDispatch","toString","key","modelSelector","state","modularui","model","useSelector","Href","origin","contextPath","location","useLocation","redirectLocation","forceLoad","equals","prevOptions","useRef","prevHref","prevForceLoad","useDeepCompareEffect","isOldReload","current","isReload","doForceLoad","loadModularUI","useEffect","removeModelByKey"],"sources":["../../src/hooks/useModularUI.js"],"sourcesContent":["// @flow\nimport { useEffect, useRef, useMemo } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { useLocation } from \"react-router\";\n\nimport { HTTP_METHODS } from \"../constants\";\nimport {\n loadModularUI,\n removeModelByKey,\n} from \"../redux/_modularui/ModularUIActions\";\n\nimport useDeepCompareEffect from \"./useDeepCompareEffect\";\n\nimport { useLocale } from \"./useI18n\";\nimport Href from \"../models/href/Href\";\n\nimport type { RequestModularUIOptions } from \"../utils\";\n\n/**\n */\nexport const createKeyForModularUIStore = (\n modelKey: string,\n url: string,\n locale: string,\n): string => {\n return `${modelKey}(${url})(${locale})`;\n};\n\n/**\n */\nconst useKeyForHook = (\n modelKey: string,\n url: string,\n removeQuerystringFromKey: boolean = true,\n): string => {\n const locale = useLocale();\n const href = removeQuerystringFromKey ? url.split(\"?\")[0] : url;\n return useMemo(\n () => createKeyForModularUIStore(modelKey, href, locale),\n [modelKey, href, locale],\n );\n};\n\n/**\n * Use redux action and selector to retrieve the correct modular ui service model\n */\nexport const useModularUI = (\n modelKey: string,\n url: string | Href,\n options: RequestModularUIOptions = {\n method: HTTP_METHODS.GET,\n removeOnUnmount: false,\n },\n): any => {\n const dispatch = useDispatch();\n const href = useMemo(() => url?.toString() || \"\", [url]);\n const key = useKeyForHook(\n modelKey,\n href,\n !options.method || options.method === HTTP_METHODS.GET,\n );\n\n const modelSelector = useMemo(() => (state) => state.modularui[key], [key]);\n const model = useSelector(modelSelector);\n\n if (url instanceof Href) {\n options.origin = options.origin ?? url.origin;\n options.contextPath = options.contextPath ?? url.contextPath;\n }\n\n const location = useLocation();\n const redirectLocation = location.state?.redirectLocation;\n const forceLoad =\n model == null ||\n (redirectLocation instanceof Href ? redirectLocation?.equals(href) : false);\n\n const prevOptions = useRef(options);\n const prevHref = useRef(href);\n const prevForceLoad = useRef(forceLoad);\n\n // dispatch loadModularUI\n useDeepCompareEffect(() => {\n // prevent reloads when previous option had the isReload, but the new options not\n const isOldReload =\n prevHref.current === href &&\n prevOptions.current.isReload &&\n !options.isReload;\n\n const doForceLoad = forceLoad && !prevForceLoad.current;\n\n if (href !== \"\" && (doForceLoad || !isOldReload)) {\n dispatch(loadModularUI(key, href, options));\n }\n\n prevOptions.current = options;\n prevHref.current = href;\n prevForceLoad.current = forceLoad;\n }, [key, href, options, forceLoad]);\n\n useEffect(() => {\n if (options.removeOnUnmount) {\n return () => {\n dispatch(removeModelByKey(key));\n };\n }\n }, [dispatch, key, options.removeOnUnmount]);\n\n return model;\n};\n"],"mappings":"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","ignoreList":[]}
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.default = void 0;
8
8
  var _find = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/find"));
9
+ var _sort = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/sort"));
9
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
10
11
  var _ResourceModel = _interopRequireDefault(require("../base/ResourceModel"));
11
12
  var _LinkModel = _interopRequireDefault(require("../links/LinkModel"));
@@ -71,8 +72,9 @@ class ApplicationModel extends _ResourceModel.default {
71
72
  get authenticationTypes() {
72
73
  const authenticationTypes = this.getContribution("security", [_constants.DEFAULT_AUTHENTICATION_TYPE]);
73
74
  if (authenticationTypes) {
75
+ var _context;
74
76
  //put primary first
75
- return authenticationTypes?.sort((a, b) => a.isPrimary === b.isPrimary ? 0 : a.isPrimary ? -1 : 1);
77
+ return ((_context = authenticationTypes) == null ? void 0 : Function.call.bind((0, _sort.default)(_context), _context))?.((a, b) => a.isPrimary === b.isPrimary ? 0 : a.isPrimary ? -1 : 1);
76
78
  }
77
79
  return [_constants.DEFAULT_AUTHENTICATION_TYPE];
78
80
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ApplicationModel.js","names":["_ResourceModel","_interopRequireDefault","require","_LinkModel","_UserServicesModel","_exceptions","_constants","ApplicationModel","ResourceModel","constructor","arguments","_defineProperty2","default","type","modelName","isApplicableModel","data","contributions","resourcetype","getInitialChildModelLinks","userService","links","getLinkByKey","href","path","NotAllowedUriException","setChildModels","models","userServiceModel","_find","call","model","userServices","label","getContribution","authenticationTypes","DEFAULT_AUTHENTICATION_TYPE","sort","a","b","isPrimary","tabs","getLinksByGroup","modelcatalog","LinkModel","create","modelOptions","_userServices","UserServicesModel","isLoggedIn","userHref","userLink","userMustChangePassword","mustChangePassword","exports"],"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 if (authenticationTypes) {\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 return [DEFAULT_AUTHENTICATION_TYPE];\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(\n \"modelcatalog\",\n \"/modelcatalog\",\n \"Model catalog\",\n this.modelOptions,\n );\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?.userLink) {\n return this.userServices.userLink.href;\n }\n\n return null;\n }\n\n /**\n */\n get userMustChangePassword(): boolean {\n return this.userServices?.mustChangePassword ?? false;\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"ApplicationModel.js","names":["_ResourceModel","_interopRequireDefault","require","_LinkModel","_UserServicesModel","_exceptions","_constants","ApplicationModel","ResourceModel","constructor","arguments","_defineProperty2","default","type","modelName","isApplicableModel","data","contributions","resourcetype","getInitialChildModelLinks","userService","links","getLinkByKey","href","path","NotAllowedUriException","setChildModels","models","userServiceModel","_find","call","model","userServices","label","getContribution","authenticationTypes","DEFAULT_AUTHENTICATION_TYPE","_context","Function","bind","_sort","a","b","isPrimary","tabs","getLinksByGroup","modelcatalog","LinkModel","create","modelOptions","_userServices","UserServicesModel","isLoggedIn","userHref","userLink","userMustChangePassword","mustChangePassword","exports"],"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 if (authenticationTypes) {\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 return [DEFAULT_AUTHENTICATION_TYPE];\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(\n \"modelcatalog\",\n \"/modelcatalog\",\n \"Model catalog\",\n this.modelOptions,\n );\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?.userLink) {\n return this.userServices.userLink.href;\n }\n\n return null;\n }\n\n /**\n */\n get userMustChangePassword(): boolean {\n return this.userServices?.mustChangePassword ?? false;\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -62,7 +62,8 @@ class CompositeAttributeModel extends _AttributeModel.default {
62
62
  /**
63
63
  */
64
64
  get isRange() {
65
- return this.contributions?.type?.includes("range");
65
+ var _context;
66
+ return ((_context = this.contributions?.type) == null ? void 0 : Function.call.bind((0, _includes.default)(_context), _context))?.("range");
66
67
  }
67
68
 
68
69
  /**
@@ -193,8 +194,8 @@ class CompositeAttributeModel extends _AttributeModel.default {
193
194
  /**
194
195
  */
195
196
  getChildByAttribute(attribute) {
196
- var _context;
197
- return (0, _find.default)(_context = this.children).call(_context, child => {
197
+ var _context2;
198
+ return (0, _find.default)(_context2 = this.children).call(_context2, child => {
198
199
  if (child.equals(attribute)) {
199
200
  return true;
200
201
  } else if (child instanceof CompositeAttributeModel) {
@@ -207,8 +208,8 @@ class CompositeAttributeModel extends _AttributeModel.default {
207
208
  /**
208
209
  */
209
210
  getChildByKey(key) {
210
- var _context2;
211
- return (0, _find.default)(_context2 = this.children).call(_context2, child => {
211
+ var _context3;
212
+ return (0, _find.default)(_context3 = this.children).call(_context3, child => {
212
213
  if (child.key === key) {
213
214
  return true;
214
215
  } else if (child instanceof CompositeAttributeModel) {
@@ -1 +1 @@
1
- {"version":3,"file":"CompositeAttributeModel.js","names":["_AttributeModel","_interopRequireDefault","require","_CompositeAttributeChildCollection","_ConstraintCollection","_RangeConstraint","_MandatoryRangeConstraint","_constants","_exceptions","_NumberAttributeModel","_DatetimeAttributeModel","CompositeAttributeModel","AttributeModel","constructor","data","contributions","modelOptions","_defineProperty2","default","_children","CompositeAttributeChildCollection","create","setChildrenOptionality","isApplicableModel","type","_includes","call","getInitialChildModelLinks","children","setChildModels","models","errors","key","isRange","includes","isRangeAttribute","attribute","NumberAttributeModel","DatetimeAttributeModel","start","all","end","size","getInputValue","hasValue","some","child","constraintCollection","constraints","ConstraintCollection","add","_serverConstraints","addConstraints","setUseClientsideValidation","enabled","_useClientsideValidation","forEach","validate","value","useClientsideValidation","_isValid","startAttribute","endAttribute","allChildsEntered","every","RangeConstraint","mandatory","allChildsOptional","MandatoryRangeConstraint","isValid","hasServerErrors","errorCollection","serverErrors","length","hasErrors","hasItems","reset","getChildByAttribute","_context","_find","equals","getChildByKey","_context2","mergeAttribute","oldAttribute","concept","withChildAttribute","update","changedAttribute","IllegalArgumentException","updateLastModification","updateByAttribute","otherAttribute","otherChild","console","error","childrenAreOptional","configuredMandatory","readonly","readonlyvalue","initvalue","getFormData","name","getValue","getChildrenIds","values","Array","isArray","_map","val","_id","isResult","_isResult","indicateContentConfiguration","contentConfiguration","parentKey","readonlyWidth","ATTRIBUTE_WIDTH","LARGE","EXTRA_LARGE","MEDIUM","_default","exports"],"sources":["../../../src/models/attributes/CompositeAttributeModel.js"],"sourcesContent":["// @flow\nimport AttributeModel from \"./AttributeModel\";\n\nimport CompositeAttributeChildCollection from \"./CompositeAttributeChildCollection\";\nimport ConstraintCollection from \"./input-constraints/ConstraintCollection\";\nimport RangeConstraint from \"./input-constraints/RangeConstraint\";\nimport MandatoryRangeConstraint from \"./input-constraints/MandatoryRangeConstraint\";\n\nimport { ATTRIBUTE_WIDTH } from \"../../constants\";\nimport { IllegalArgumentException } from \"../../exceptions\";\n\nimport NumberAttributeModel from \"./NumberAttributeModel\";\nimport DatetimeAttributeModel from \"./DatetimeAttributeModel\";\n\nimport type { ModularUIModel, AttributeType, ModelOptions } from \"../types\";\nimport type ContentConfiguration from \"../contentconfiguration/ContentConfiguration\";\nimport type LinkModel from \"../links/LinkModel\";\nimport type ErrorResponse from \"../error/ErrorResponse\";\n\n/**\n */\nclass CompositeAttributeModel extends AttributeModel {\n _children: CompositeAttributeChildCollection;\n\n /**\n */\n constructor(\n data: Object,\n contributions: Object,\n modelOptions?: ModelOptions,\n ) {\n super(data, contributions, modelOptions);\n\n this._children = CompositeAttributeChildCollection.create(\n data,\n contributions,\n modelOptions,\n );\n\n this.setChildrenOptionality();\n }\n\n /**\n */\n static isApplicableModel(contributions: Object): boolean {\n const type = contributions?.type;\n return type && (type === \"composite\" || type.includes(\"range\"));\n }\n\n /**\n */\n getInitialChildModelLinks(): Array<LinkModel> {\n return this.children.getInitialChildModelLinks();\n }\n\n /**\n */\n setChildModels(models: Array<ModularUIModel>, errors: Array<ErrorResponse>) {\n this.children.setChildModels(models, errors);\n }\n\n /**\n */\n get type(): string {\n // temp fix for results and given answers on list result detail panel\n if (this.key === \"results\" || this.key === \"givenAnswers\") {\n return \"composite\";\n }\n\n return this.isRange ? \"range\" : \"composite\";\n }\n\n /**\n */\n get isRange(): boolean {\n return this.contributions?.type?.includes(\"range\");\n }\n\n /**\n */\n get children(): CompositeAttributeChildCollection {\n return this._children;\n }\n\n /**\n */\n set children(children: CompositeAttributeChildCollection) {\n this._children = children;\n }\n\n /**\n */\n isRangeAttribute(attribute: AttributeType): boolean {\n return (\n attribute instanceof NumberAttributeModel ||\n attribute instanceof DatetimeAttributeModel\n );\n }\n\n /**\n */\n get start(): AttributeType | null {\n return this.children.all[0];\n }\n\n /**\n */\n get end(): AttributeType {\n return this.children.all[this.children.size - 1];\n }\n\n /**\n * Get input value of attribute\n */\n getInputValue(): string {\n return this.children.getInputValue();\n }\n\n /**\n * Check if at least one child has value\n */\n hasValue(): boolean {\n return this.children.some((child) => child.hasValue());\n }\n\n /**\n */\n get constraintCollection(): ConstraintCollection {\n const constraints = new ConstraintCollection();\n\n constraints.add(this._serverConstraints);\n constraints.add(this.addConstraints());\n\n return constraints;\n }\n\n /**\n * Used to programmatically overwrite the setting USE_CLIENTSIDE_VALIDATION\n */\n setUseClientsideValidation(enabled: boolean) {\n super._useClientsideValidation = enabled;\n\n this.children.all.forEach((child) =>\n child.setUseClientsideValidation(enabled),\n );\n }\n\n /**\n * Validate input\n */\n // eslint-disable-next-line no-unused-vars\n validate(value: string): boolean {\n // when client side validation is disabled, this attribute is always valid\n if (!this.useClientsideValidation()) {\n return true;\n }\n\n this._isValid = this.children.validate();\n\n if (this._isValid) {\n this._isValid = this.constraintCollection.validate();\n }\n\n return this._isValid;\n }\n\n /**\n * Add Date constraints for attribute\n */\n addConstraints(): ConstraintCollection {\n const constraints = new ConstraintCollection();\n\n const startAttribute = this.start;\n const endAttribute = this.end;\n if (this.isRange && startAttribute != null && endAttribute != null) {\n const allChildsEntered = this.children.every((child) => child.hasValue());\n if (allChildsEntered) {\n constraints.add(new RangeConstraint(startAttribute, endAttribute));\n }\n }\n\n if (this.isRange && this.mandatory && startAttribute !== null) {\n const allChildsOptional = this.children.every(\n (child) => !child.mandatory,\n );\n if (allChildsOptional) {\n constraints.add(\n new MandatoryRangeConstraint(startAttribute.type, this.children),\n );\n }\n }\n\n return constraints;\n }\n\n /**\n * Indicates if attribute input is valid\n */\n get isValid(): boolean {\n return this.validate(\"\");\n }\n\n /**\n */\n hasServerErrors(): boolean {\n return (\n this.errorCollection.serverErrors.length > 0 ||\n this.children.some((child) => child.hasServerErrors())\n );\n }\n\n /**\n */\n hasErrors(): boolean {\n return (\n this.errorCollection.hasItems ||\n this.children.some((child) => child.hasErrors())\n );\n }\n\n /**\n * Reset attribute to empty string\n */\n reset() {\n this.children.reset();\n }\n\n /**\n */\n getChildByAttribute(attribute: AttributeType): ?AttributeType {\n return this.children.find((child) => {\n if (child.equals(attribute)) {\n return true;\n } else if (child instanceof CompositeAttributeModel) {\n return child.getChildByAttribute(attribute);\n }\n\n return false;\n });\n }\n\n /**\n */\n getChildByKey(key: string): ?AttributeType {\n return (\n this.children.find((child) => {\n if (child.key === key) {\n return true;\n } else if (child instanceof CompositeAttributeModel) {\n return child.getChildByKey(key);\n }\n\n return false;\n }) || null\n );\n }\n\n /**\n */\n mergeAttribute(oldAttribute: AttributeType) {\n this.concept = oldAttribute.concept;\n\n this.children.forEach((child) => {\n if (oldAttribute instanceof CompositeAttributeModel) {\n const withChildAttribute = oldAttribute.getChildByKey(child.key);\n if (withChildAttribute) {\n child.mergeAttribute(withChildAttribute);\n }\n }\n });\n }\n\n /**\n */\n update(\n value: string,\n changedAttribute: ?AttributeType,\n ): CompositeAttributeModel {\n if (!changedAttribute) {\n throw new IllegalArgumentException(\n \"Composite attribute needs changed attribute on update call\",\n );\n }\n\n this.updateLastModification();\n\n this.children.forEach((child) => {\n if (child instanceof CompositeAttributeModel) {\n child.update(value, changedAttribute);\n } else if (child.equals(changedAttribute)) {\n child.update(value);\n }\n });\n\n this.setChildrenOptionality();\n\n this.validate(value);\n\n return this;\n }\n\n /**\n */\n updateByAttribute(otherAttribute: AttributeType): void {\n if (otherAttribute instanceof CompositeAttributeModel) {\n otherAttribute.children.forEach((otherChild) => {\n const child = this.getChildByAttribute(otherChild);\n if (child) {\n child.updateByAttribute(otherChild);\n }\n });\n } else {\n console.error(\n `update of composite attribute with ${otherAttribute.type} not supported`,\n );\n }\n }\n\n /**\n */\n setChildrenOptionality() {\n const childrenAreOptional =\n !this.mandatory && this.children.every((child) => child.value === null);\n\n this.children.forEach((child) => {\n child.mandatory =\n childrenAreOptional || !child.configuredMandatory\n ? false\n : child.configuredMandatory;\n });\n }\n\n /**\n */\n get readonly(): boolean {\n return super.readonly || this.children.every((child) => child.readonly);\n }\n\n /**\n */\n set readonly(readonly: boolean) {\n super.readonly = readonly;\n }\n\n /**\n */\n get readonlyvalue(): string {\n return this.children.readonlyvalue;\n }\n\n /**\n */\n get initvalue(): any {\n return this.children.initvalue;\n }\n\n /**\n */\n getFormData(): { [string]: any } | null {\n return { [this.name]: this.value };\n }\n\n /**\n */\n getValue(): any {\n return this.children.value;\n }\n\n /**\n */\n getChildrenIds(): Array<string> {\n const values = this.data.value;\n if (Array.isArray(values)) {\n return values.map((val) => val._id);\n } else if (values != null) {\n return [values._id];\n }\n return [];\n }\n\n /**\n */\n get isResult(): boolean {\n return this._isResult;\n }\n\n /**\n */\n set isResult(isResult: boolean) {\n this._isResult = isResult;\n\n this.children.forEach((child) => {\n child.isResult = isResult;\n });\n }\n\n /**\n */\n indicateContentConfiguration(contentConfiguration: ContentConfiguration) {\n if (contentConfiguration) {\n this.children.forEach((child) => {\n child.indicateContentConfiguration(contentConfiguration);\n });\n }\n }\n\n /**\n */\n equals(otherAttribute: AttributeType): boolean {\n return (\n (this.key === otherAttribute.key &&\n this.parentKey === otherAttribute.parentKey) ||\n this.children.some(\n //$FlowFixMe[method-unbinding]\n (child) => child.equals && child.equals(otherAttribute),\n )\n );\n }\n\n /**\n */\n get readonlyWidth(): $Keys<typeof ATTRIBUTE_WIDTH> {\n if (this.type === \"composite\") {\n return ATTRIBUTE_WIDTH.LARGE;\n }\n\n // range\n switch (this.start?.type) {\n case \"datetime\":\n return ATTRIBUTE_WIDTH.LARGE;\n case \"timestamp\":\n return ATTRIBUTE_WIDTH.EXTRA_LARGE;\n default:\n return ATTRIBUTE_WIDTH.MEDIUM;\n }\n }\n}\n\nexport default CompositeAttributeModel;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"CompositeAttributeModel.js","names":["_AttributeModel","_interopRequireDefault","require","_CompositeAttributeChildCollection","_ConstraintCollection","_RangeConstraint","_MandatoryRangeConstraint","_constants","_exceptions","_NumberAttributeModel","_DatetimeAttributeModel","CompositeAttributeModel","AttributeModel","constructor","data","contributions","modelOptions","_defineProperty2","default","_children","CompositeAttributeChildCollection","create","setChildrenOptionality","isApplicableModel","type","_includes","call","getInitialChildModelLinks","children","setChildModels","models","errors","key","isRange","_context","Function","bind","isRangeAttribute","attribute","NumberAttributeModel","DatetimeAttributeModel","start","all","end","size","getInputValue","hasValue","some","child","constraintCollection","constraints","ConstraintCollection","add","_serverConstraints","addConstraints","setUseClientsideValidation","enabled","_useClientsideValidation","forEach","validate","value","useClientsideValidation","_isValid","startAttribute","endAttribute","allChildsEntered","every","RangeConstraint","mandatory","allChildsOptional","MandatoryRangeConstraint","isValid","hasServerErrors","errorCollection","serverErrors","length","hasErrors","hasItems","reset","getChildByAttribute","_context2","_find","equals","getChildByKey","_context3","mergeAttribute","oldAttribute","concept","withChildAttribute","update","changedAttribute","IllegalArgumentException","updateLastModification","updateByAttribute","otherAttribute","otherChild","console","error","childrenAreOptional","configuredMandatory","readonly","readonlyvalue","initvalue","getFormData","name","getValue","getChildrenIds","values","Array","isArray","_map","val","_id","isResult","_isResult","indicateContentConfiguration","contentConfiguration","parentKey","readonlyWidth","ATTRIBUTE_WIDTH","LARGE","EXTRA_LARGE","MEDIUM","_default","exports"],"sources":["../../../src/models/attributes/CompositeAttributeModel.js"],"sourcesContent":["// @flow\nimport AttributeModel from \"./AttributeModel\";\n\nimport CompositeAttributeChildCollection from \"./CompositeAttributeChildCollection\";\nimport ConstraintCollection from \"./input-constraints/ConstraintCollection\";\nimport RangeConstraint from \"./input-constraints/RangeConstraint\";\nimport MandatoryRangeConstraint from \"./input-constraints/MandatoryRangeConstraint\";\n\nimport { ATTRIBUTE_WIDTH } from \"../../constants\";\nimport { IllegalArgumentException } from \"../../exceptions\";\n\nimport NumberAttributeModel from \"./NumberAttributeModel\";\nimport DatetimeAttributeModel from \"./DatetimeAttributeModel\";\n\nimport type { ModularUIModel, AttributeType, ModelOptions } from \"../types\";\nimport type ContentConfiguration from \"../contentconfiguration/ContentConfiguration\";\nimport type LinkModel from \"../links/LinkModel\";\nimport type ErrorResponse from \"../error/ErrorResponse\";\n\n/**\n */\nclass CompositeAttributeModel extends AttributeModel {\n _children: CompositeAttributeChildCollection;\n\n /**\n */\n constructor(\n data: Object,\n contributions: Object,\n modelOptions?: ModelOptions,\n ) {\n super(data, contributions, modelOptions);\n\n this._children = CompositeAttributeChildCollection.create(\n data,\n contributions,\n modelOptions,\n );\n\n this.setChildrenOptionality();\n }\n\n /**\n */\n static isApplicableModel(contributions: Object): boolean {\n const type = contributions?.type;\n return type && (type === \"composite\" || type.includes(\"range\"));\n }\n\n /**\n */\n getInitialChildModelLinks(): Array<LinkModel> {\n return this.children.getInitialChildModelLinks();\n }\n\n /**\n */\n setChildModels(models: Array<ModularUIModel>, errors: Array<ErrorResponse>) {\n this.children.setChildModels(models, errors);\n }\n\n /**\n */\n get type(): string {\n // temp fix for results and given answers on list result detail panel\n if (this.key === \"results\" || this.key === \"givenAnswers\") {\n return \"composite\";\n }\n\n return this.isRange ? \"range\" : \"composite\";\n }\n\n /**\n */\n get isRange(): boolean {\n return this.contributions?.type?.includes(\"range\");\n }\n\n /**\n */\n get children(): CompositeAttributeChildCollection {\n return this._children;\n }\n\n /**\n */\n set children(children: CompositeAttributeChildCollection) {\n this._children = children;\n }\n\n /**\n */\n isRangeAttribute(attribute: AttributeType): boolean {\n return (\n attribute instanceof NumberAttributeModel ||\n attribute instanceof DatetimeAttributeModel\n );\n }\n\n /**\n */\n get start(): AttributeType | null {\n return this.children.all[0];\n }\n\n /**\n */\n get end(): AttributeType {\n return this.children.all[this.children.size - 1];\n }\n\n /**\n * Get input value of attribute\n */\n getInputValue(): string {\n return this.children.getInputValue();\n }\n\n /**\n * Check if at least one child has value\n */\n hasValue(): boolean {\n return this.children.some((child) => child.hasValue());\n }\n\n /**\n */\n get constraintCollection(): ConstraintCollection {\n const constraints = new ConstraintCollection();\n\n constraints.add(this._serverConstraints);\n constraints.add(this.addConstraints());\n\n return constraints;\n }\n\n /**\n * Used to programmatically overwrite the setting USE_CLIENTSIDE_VALIDATION\n */\n setUseClientsideValidation(enabled: boolean) {\n super._useClientsideValidation = enabled;\n\n this.children.all.forEach((child) =>\n child.setUseClientsideValidation(enabled),\n );\n }\n\n /**\n * Validate input\n */\n // eslint-disable-next-line no-unused-vars\n validate(value: string): boolean {\n // when client side validation is disabled, this attribute is always valid\n if (!this.useClientsideValidation()) {\n return true;\n }\n\n this._isValid = this.children.validate();\n\n if (this._isValid) {\n this._isValid = this.constraintCollection.validate();\n }\n\n return this._isValid;\n }\n\n /**\n * Add Date constraints for attribute\n */\n addConstraints(): ConstraintCollection {\n const constraints = new ConstraintCollection();\n\n const startAttribute = this.start;\n const endAttribute = this.end;\n if (this.isRange && startAttribute != null && endAttribute != null) {\n const allChildsEntered = this.children.every((child) => child.hasValue());\n if (allChildsEntered) {\n constraints.add(new RangeConstraint(startAttribute, endAttribute));\n }\n }\n\n if (this.isRange && this.mandatory && startAttribute !== null) {\n const allChildsOptional = this.children.every(\n (child) => !child.mandatory,\n );\n if (allChildsOptional) {\n constraints.add(\n new MandatoryRangeConstraint(startAttribute.type, this.children),\n );\n }\n }\n\n return constraints;\n }\n\n /**\n * Indicates if attribute input is valid\n */\n get isValid(): boolean {\n return this.validate(\"\");\n }\n\n /**\n */\n hasServerErrors(): boolean {\n return (\n this.errorCollection.serverErrors.length > 0 ||\n this.children.some((child) => child.hasServerErrors())\n );\n }\n\n /**\n */\n hasErrors(): boolean {\n return (\n this.errorCollection.hasItems ||\n this.children.some((child) => child.hasErrors())\n );\n }\n\n /**\n * Reset attribute to empty string\n */\n reset() {\n this.children.reset();\n }\n\n /**\n */\n getChildByAttribute(attribute: AttributeType): ?AttributeType {\n return this.children.find((child) => {\n if (child.equals(attribute)) {\n return true;\n } else if (child instanceof CompositeAttributeModel) {\n return child.getChildByAttribute(attribute);\n }\n\n return false;\n });\n }\n\n /**\n */\n getChildByKey(key: string): ?AttributeType {\n return (\n this.children.find((child) => {\n if (child.key === key) {\n return true;\n } else if (child instanceof CompositeAttributeModel) {\n return child.getChildByKey(key);\n }\n\n return false;\n }) || null\n );\n }\n\n /**\n */\n mergeAttribute(oldAttribute: AttributeType) {\n this.concept = oldAttribute.concept;\n\n this.children.forEach((child) => {\n if (oldAttribute instanceof CompositeAttributeModel) {\n const withChildAttribute = oldAttribute.getChildByKey(child.key);\n if (withChildAttribute) {\n child.mergeAttribute(withChildAttribute);\n }\n }\n });\n }\n\n /**\n */\n update(\n value: string,\n changedAttribute: ?AttributeType,\n ): CompositeAttributeModel {\n if (!changedAttribute) {\n throw new IllegalArgumentException(\n \"Composite attribute needs changed attribute on update call\",\n );\n }\n\n this.updateLastModification();\n\n this.children.forEach((child) => {\n if (child instanceof CompositeAttributeModel) {\n child.update(value, changedAttribute);\n } else if (child.equals(changedAttribute)) {\n child.update(value);\n }\n });\n\n this.setChildrenOptionality();\n\n this.validate(value);\n\n return this;\n }\n\n /**\n */\n updateByAttribute(otherAttribute: AttributeType): void {\n if (otherAttribute instanceof CompositeAttributeModel) {\n otherAttribute.children.forEach((otherChild) => {\n const child = this.getChildByAttribute(otherChild);\n if (child) {\n child.updateByAttribute(otherChild);\n }\n });\n } else {\n console.error(\n `update of composite attribute with ${otherAttribute.type} not supported`,\n );\n }\n }\n\n /**\n */\n setChildrenOptionality() {\n const childrenAreOptional =\n !this.mandatory && this.children.every((child) => child.value === null);\n\n this.children.forEach((child) => {\n child.mandatory =\n childrenAreOptional || !child.configuredMandatory\n ? false\n : child.configuredMandatory;\n });\n }\n\n /**\n */\n get readonly(): boolean {\n return super.readonly || this.children.every((child) => child.readonly);\n }\n\n /**\n */\n set readonly(readonly: boolean) {\n super.readonly = readonly;\n }\n\n /**\n */\n get readonlyvalue(): string {\n return this.children.readonlyvalue;\n }\n\n /**\n */\n get initvalue(): any {\n return this.children.initvalue;\n }\n\n /**\n */\n getFormData(): { [string]: any } | null {\n return { [this.name]: this.value };\n }\n\n /**\n */\n getValue(): any {\n return this.children.value;\n }\n\n /**\n */\n getChildrenIds(): Array<string> {\n const values = this.data.value;\n if (Array.isArray(values)) {\n return values.map((val) => val._id);\n } else if (values != null) {\n return [values._id];\n }\n return [];\n }\n\n /**\n */\n get isResult(): boolean {\n return this._isResult;\n }\n\n /**\n */\n set isResult(isResult: boolean) {\n this._isResult = isResult;\n\n this.children.forEach((child) => {\n child.isResult = isResult;\n });\n }\n\n /**\n */\n indicateContentConfiguration(contentConfiguration: ContentConfiguration) {\n if (contentConfiguration) {\n this.children.forEach((child) => {\n child.indicateContentConfiguration(contentConfiguration);\n });\n }\n }\n\n /**\n */\n equals(otherAttribute: AttributeType): boolean {\n return (\n (this.key === otherAttribute.key &&\n this.parentKey === otherAttribute.parentKey) ||\n this.children.some(\n //$FlowFixMe[method-unbinding]\n (child) => child.equals && child.equals(otherAttribute),\n )\n );\n }\n\n /**\n */\n get readonlyWidth(): $Keys<typeof ATTRIBUTE_WIDTH> {\n if (this.type === \"composite\") {\n return ATTRIBUTE_WIDTH.LARGE;\n }\n\n // range\n switch (this.start?.type) {\n case \"datetime\":\n return ATTRIBUTE_WIDTH.LARGE;\n case \"timestamp\":\n return ATTRIBUTE_WIDTH.EXTRA_LARGE;\n default:\n return ATTRIBUTE_WIDTH.MEDIUM;\n }\n }\n}\n\nexport default CompositeAttributeModel;\n"],"mappings":"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","ignoreList":[]}
@@ -143,8 +143,9 @@ class ContentTOCModel extends _ResourceModel.default {
143
143
  var _context2;
144
144
  this._filterCollection = new _FilterCollection.default((0, _filter.default)(this.data), {
145
145
  filter: (0, _filter.default)(_context2 = (0, _filter.default)(this.contributions)).call(_context2, filter => {
146
+ var _context3;
146
147
  const [key] = (0, _keys.default)(filter);
147
- return (0, _objects.has)(this.data?.filter, key);
148
+ return (0, _objects.has)((_context3 = this.data) == null ? void 0 : (0, _filter.default)(_context3), key);
148
149
  })
149
150
  }, this.modelOptions);
150
151
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ContentTOCModel.js","names":["_objects","require","_ResourceModel","_interopRequireDefault","_FilterCollection","_ContentLinkModel","_ContentTypeModel","_Href","_Constants","getItems","items","entryDate","modelOptions","_map","default","call","item","link","ContentLinkModel","section","_id","ContentTOCModel","ResourceModel","constructor","arguments","_defineProperty2","type","modelName","isApplicableModel","data","contributions","resourcetype","getInitialChildModelLinks","contentTypeLink","links","getLinkByKey","setChildModels","models","contentType","_find","model","label","getData","selfhref","href","Href","selflink","filterCollection","forEach","filter","params","param","value","setParameter","name","removeParameter","selfContentLink","categories","_context","category","_contentType","ContentTypeModel","_filterCollection","_context2","FilterCollection","_filter","key","_keys","has","timeversionFilter","getFilterByAttributeKey","TIMEVERSION_FILTER_NAME","attribute","exports"],"sources":["../../../src/models/content/ContentTOCModel.js"],"sourcesContent":["// @flow\nimport { has } from \"../../utils/helpers/objects\";\n\nimport ResourceModel from \"../base/ResourceModel\";\nimport FilterCollection from \"../filters/FilterCollection\";\nimport ContentLinkModel from \"./ContentLinkModel\";\nimport ContentTypeModel from \"./ContentTypeModel\";\nimport Href from \"../href/Href\";\n\nimport { TIMEVERSION_FILTER_NAME } from \"../../constants/Constants\";\n\nimport type { ModelOptions, ModularUIModel } from \"../types\";\nimport type { ModularUIResponse } from \"../../modularui\";\nimport type LinkModel from \"../links/LinkModel\";\n\n/**\n * Get content items recursively\n */\nconst getItems = (\n items: Array<Object>,\n entryDate: ISO_DATE | null,\n modelOptions?: ModelOptions,\n): Array<ContentLinkModel> =>\n items.map((item) => {\n const link = new ContentLinkModel(\n {\n ...item,\n section: item._id,\n },\n entryDate,\n modelOptions,\n );\n\n if (item.items) {\n link.items = getItems(item.items, entryDate, modelOptions);\n }\n\n return link;\n });\n\n/**\n * Content detail model\n */\nexport default class ContentTOCModel extends ResourceModel {\n _contentType: ContentTypeModel | null = null;\n _filterCollection: FilterCollection;\n\n /**\n */\n get type(): string {\n return \"ContentTOC\";\n }\n\n /**\n */\n static get modelName(): string {\n return \"ContentTOCModel\";\n }\n\n /**\n */\n static isApplicableModel(data: ModularUIResponse): boolean {\n return (\n data.contributions.resourcetype &&\n data.contributions.resourcetype === \"ContentTOC\"\n );\n }\n\n /**\n */\n getInitialChildModelLinks(): Array<LinkModel> {\n const contentTypeLink = this.links.getLinkByKey(\"contenttype\");\n\n if (contentTypeLink) {\n return [contentTypeLink];\n }\n\n return [];\n }\n\n /**\n */\n setChildModels(models: Array<ModularUIModel>) {\n this.contentType = models.find((model) => model.type === \"ContentType\");\n }\n\n /**\n * Get content label\n */\n get label(): string {\n return this.getData(\"label\", \"\");\n }\n\n /**\n * Getting the self link of this list\n */\n get selfhref(): Href {\n const href = new Href(this.selflink.href);\n\n this.filterCollection.forEach((filter) => {\n filter.params.forEach((param) => {\n if (param.value) {\n href.setParameter(param.name, param.value);\n } else {\n href.removeParameter(param.name);\n }\n });\n });\n\n return href;\n }\n\n /**\n */\n get selfContentLink(): ContentLinkModel {\n return new ContentLinkModel(this.data, this.entryDate, this.modelOptions);\n }\n\n /**\n * Get sub items of toc\n */\n get items(): Array<ContentLinkModel> {\n return this.data.items\n ? getItems(this.data.items, this.entryDate, this.modelOptions)\n : [];\n }\n\n /**\n * get categories of content\n */\n get categories(): Array<ContentLinkModel> {\n if (this.data.categories) {\n return this.data.categories.map(\n (category) => new ContentLinkModel(category, null, this.modelOptions),\n );\n }\n\n return [];\n }\n\n /**\n * Retrieve content type model\n */\n get contentType(): ContentTypeModel | null {\n return this._contentType;\n }\n\n /**\n */\n set contentType(contentType: ?ModularUIModel) {\n this._contentType =\n contentType instanceof ContentTypeModel ? contentType : null;\n }\n\n /**\n * Retrieve available filters on concept toc\n */\n get filterCollection(): FilterCollection {\n if (!this._filterCollection) {\n this._filterCollection = new FilterCollection(\n this.data.filter,\n {\n filter: this.contributions.filter.filter((filter) => {\n const [key] = Object.keys(filter);\n return has(this.data?.filter, key);\n }),\n },\n this.modelOptions,\n );\n }\n\n return this._filterCollection;\n }\n\n /**\n * Retrieve modelcatalog.js of content toc\n */\n get entryDate(): ISO_DATE | null {\n const timeversionFilter = this.filterCollection.getFilterByAttributeKey(\n TIMEVERSION_FILTER_NAME,\n );\n\n return timeversionFilter?.attribute?.value ?? null;\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"ContentTOCModel.js","names":["_objects","require","_ResourceModel","_interopRequireDefault","_FilterCollection","_ContentLinkModel","_ContentTypeModel","_Href","_Constants","getItems","items","entryDate","modelOptions","_map","default","call","item","link","ContentLinkModel","section","_id","ContentTOCModel","ResourceModel","constructor","arguments","_defineProperty2","type","modelName","isApplicableModel","data","contributions","resourcetype","getInitialChildModelLinks","contentTypeLink","links","getLinkByKey","setChildModels","models","contentType","_find","model","label","getData","selfhref","href","Href","selflink","filterCollection","forEach","filter","params","param","value","setParameter","name","removeParameter","selfContentLink","categories","_context","category","_contentType","ContentTypeModel","_filterCollection","_context2","FilterCollection","_filter","_context3","key","_keys","has","timeversionFilter","getFilterByAttributeKey","TIMEVERSION_FILTER_NAME","attribute","exports"],"sources":["../../../src/models/content/ContentTOCModel.js"],"sourcesContent":["// @flow\nimport { has } from \"../../utils/helpers/objects\";\n\nimport ResourceModel from \"../base/ResourceModel\";\nimport FilterCollection from \"../filters/FilterCollection\";\nimport ContentLinkModel from \"./ContentLinkModel\";\nimport ContentTypeModel from \"./ContentTypeModel\";\nimport Href from \"../href/Href\";\n\nimport { TIMEVERSION_FILTER_NAME } from \"../../constants/Constants\";\n\nimport type { ModelOptions, ModularUIModel } from \"../types\";\nimport type { ModularUIResponse } from \"../../modularui\";\nimport type LinkModel from \"../links/LinkModel\";\n\n/**\n * Get content items recursively\n */\nconst getItems = (\n items: Array<Object>,\n entryDate: ISO_DATE | null,\n modelOptions?: ModelOptions,\n): Array<ContentLinkModel> =>\n items.map((item) => {\n const link = new ContentLinkModel(\n {\n ...item,\n section: item._id,\n },\n entryDate,\n modelOptions,\n );\n\n if (item.items) {\n link.items = getItems(item.items, entryDate, modelOptions);\n }\n\n return link;\n });\n\n/**\n * Content detail model\n */\nexport default class ContentTOCModel extends ResourceModel {\n _contentType: ContentTypeModel | null = null;\n _filterCollection: FilterCollection;\n\n /**\n */\n get type(): string {\n return \"ContentTOC\";\n }\n\n /**\n */\n static get modelName(): string {\n return \"ContentTOCModel\";\n }\n\n /**\n */\n static isApplicableModel(data: ModularUIResponse): boolean {\n return (\n data.contributions.resourcetype &&\n data.contributions.resourcetype === \"ContentTOC\"\n );\n }\n\n /**\n */\n getInitialChildModelLinks(): Array<LinkModel> {\n const contentTypeLink = this.links.getLinkByKey(\"contenttype\");\n\n if (contentTypeLink) {\n return [contentTypeLink];\n }\n\n return [];\n }\n\n /**\n */\n setChildModels(models: Array<ModularUIModel>) {\n this.contentType = models.find((model) => model.type === \"ContentType\");\n }\n\n /**\n * Get content label\n */\n get label(): string {\n return this.getData(\"label\", \"\");\n }\n\n /**\n * Getting the self link of this list\n */\n get selfhref(): Href {\n const href = new Href(this.selflink.href);\n\n this.filterCollection.forEach((filter) => {\n filter.params.forEach((param) => {\n if (param.value) {\n href.setParameter(param.name, param.value);\n } else {\n href.removeParameter(param.name);\n }\n });\n });\n\n return href;\n }\n\n /**\n */\n get selfContentLink(): ContentLinkModel {\n return new ContentLinkModel(this.data, this.entryDate, this.modelOptions);\n }\n\n /**\n * Get sub items of toc\n */\n get items(): Array<ContentLinkModel> {\n return this.data.items\n ? getItems(this.data.items, this.entryDate, this.modelOptions)\n : [];\n }\n\n /**\n * get categories of content\n */\n get categories(): Array<ContentLinkModel> {\n if (this.data.categories) {\n return this.data.categories.map(\n (category) => new ContentLinkModel(category, null, this.modelOptions),\n );\n }\n\n return [];\n }\n\n /**\n * Retrieve content type model\n */\n get contentType(): ContentTypeModel | null {\n return this._contentType;\n }\n\n /**\n */\n set contentType(contentType: ?ModularUIModel) {\n this._contentType =\n contentType instanceof ContentTypeModel ? contentType : null;\n }\n\n /**\n * Retrieve available filters on concept toc\n */\n get filterCollection(): FilterCollection {\n if (!this._filterCollection) {\n this._filterCollection = new FilterCollection(\n this.data.filter,\n {\n filter: this.contributions.filter.filter((filter) => {\n const [key] = Object.keys(filter);\n return has(this.data?.filter, key);\n }),\n },\n this.modelOptions,\n );\n }\n\n return this._filterCollection;\n }\n\n /**\n * Retrieve modelcatalog.js of content toc\n */\n get entryDate(): ISO_DATE | null {\n const timeversionFilter = this.filterCollection.getFilterByAttributeKey(\n TIMEVERSION_FILTER_NAME,\n );\n\n return timeversionFilter?.attribute?.value ?? null;\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -250,14 +250,15 @@ class Href {
250
250
  const valueToRemove = value;
251
251
  this._parameters = (0, _map.default)(_context4 = this._parameters).call(_context4, param => {
252
252
  if (param.prefix === prefix && param.name === name) {
253
- const newValue = param.value?.split(",").filter(val => val !== valueToRemove).join(",");
253
+ var _context5;
254
+ const newValue = ((_context5 = param.value?.split(",")) == null ? void 0 : Function.call.bind((0, _filter.default)(_context5), _context5))?.(val => val !== valueToRemove).join(",");
254
255
  return new _Parameter.default(param.prefix, param.name, newValue);
255
256
  }
256
257
  return param;
257
258
  });
258
259
  } else {
259
- var _context5;
260
- this._parameters = (0, _filter.default)(_context5 = this._parameters).call(_context5, param => param.prefix !== prefix || param.name !== name);
260
+ var _context6;
261
+ this._parameters = (0, _filter.default)(_context6 = this._parameters).call(_context6, param => param.prefix !== prefix || param.name !== name);
261
262
  }
262
263
  return this;
263
264
  }
@@ -266,18 +267,18 @@ class Href {
266
267
  * Get the parameters as a querystring, e.g. param1=value1&param2=value2, optionally with prefix
267
268
  */
268
269
  getQuerystring() {
269
- var _context6, _context7;
270
+ var _context7, _context8;
270
271
  let withPrefix = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
271
- return (0, _map.default)(_context6 = (0, _filter.default)(_context7 = this.parameters).call(_context7, param => param.value != null && param.value !== "")).call(_context6, param => param.toQuerystring(withPrefix)).join("&");
272
+ return (0, _map.default)(_context7 = (0, _filter.default)(_context8 = this.parameters).call(_context8, param => param.value != null && param.value !== "")).call(_context7, param => param.toQuerystring(withPrefix)).join("&");
272
273
  }
273
274
 
274
275
  /**
275
276
  * Retrieve a querystring that only contains parameter that can be send to the modular ui, parameters are filtered by prefix
276
277
  */
277
278
  getQuerystringForModularUI() {
278
- var _context8, _context9;
279
+ var _context9, _context10;
279
280
  let prefix = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "";
280
- return (0, _map.default)(_context8 = (0, _filter.default)(_context9 = this.parameters).call(_context9, param => param.isModUIParameter && (!prefix || !param.prefix || param.prefix === prefix) && param.value != null)).call(_context8, param => param.toQuerystring(false)).join("&");
281
+ return (0, _map.default)(_context9 = (0, _filter.default)(_context10 = this.parameters).call(_context10, param => param.isModUIParameter && (!prefix || !param.prefix || param.prefix === prefix) && param.value != null)).call(_context9, param => param.toQuerystring(false)).join("&");
281
282
  }
282
283
 
283
284
  /**
@@ -432,7 +433,7 @@ class Href {
432
433
  /**
433
434
  */
434
435
  equalsWithParameters(other) {
435
- var _context10;
436
+ var _context11;
436
437
  if (other == null) {
437
438
  return false;
438
439
  }
@@ -446,7 +447,7 @@ class Href {
446
447
  if (this.parameters.length === 0 && href.parameters.length === 0) {
447
448
  return true;
448
449
  }
449
- const thisParams = (0, _map.default)(_context10 = this.parameters).call(_context10, param => param.toString());
450
+ const thisParams = (0, _map.default)(_context11 = this.parameters).call(_context11, param => param.toString());
450
451
  return href.parameters.every(param => (0, _includes.default)(thisParams).call(thisParams, param.toString()));
451
452
  }
452
453
 
@@ -454,8 +455,8 @@ class Href {
454
455
  * Indicates if the link is a content link
455
456
  */
456
457
  get isContent() {
457
- var _context11;
458
- return (0, _startsWith.default)(_context11 = this.absolutepath).call(_context11, `${(0, _constants.getBasePathModularUI)()}${_constants.CONTENT_PATH}`);
458
+ var _context12;
459
+ return (0, _startsWith.default)(_context12 = this.absolutepath).call(_context12, `${(0, _constants.getBasePathModularUI)()}${_constants.CONTENT_PATH}`);
459
460
  }
460
461
 
461
462
  /**