@beinformed/ui 1.20.9 → 1.21.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 (32) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/esm/constants/Settings.js +2 -0
  3. package/esm/constants/Settings.js.map +1 -1
  4. package/esm/models/attributes/AttributeDataHelper.js +6 -1
  5. package/esm/models/attributes/AttributeDataHelper.js.map +1 -1
  6. package/esm/models/error/ErrorModel.js +12 -1
  7. package/esm/models/error/ErrorModel.js.map +1 -1
  8. package/esm/models/error/ErrorResponse.js +111 -0
  9. package/esm/models/error/ErrorResponse.js.map +1 -1
  10. package/esm/models/types.js.map +1 -1
  11. package/lib/constants/Settings.js +5 -1
  12. package/lib/constants/Settings.js.flow +3 -0
  13. package/lib/constants/Settings.js.map +1 -1
  14. package/lib/models/attributes/AttributeDataHelper.js +6 -1
  15. package/lib/models/attributes/AttributeDataHelper.js.flow +5 -1
  16. package/lib/models/attributes/AttributeDataHelper.js.map +1 -1
  17. package/lib/models/error/ErrorModel.js +11 -0
  18. package/lib/models/error/ErrorModel.js.flow +9 -1
  19. package/lib/models/error/ErrorModel.js.map +1 -1
  20. package/lib/models/error/ErrorResponse.js +110 -0
  21. package/lib/models/error/ErrorResponse.js.flow +102 -0
  22. package/lib/models/error/ErrorResponse.js.map +1 -1
  23. package/lib/models/types.js.flow +1 -0
  24. package/lib/models/types.js.map +1 -1
  25. package/lib/redux/actions/__tests__/Error-server.spec.js.flow +0 -1
  26. package/package.json +5 -5
  27. package/src/constants/Settings.js +3 -0
  28. package/src/models/attributes/AttributeDataHelper.js +5 -1
  29. package/src/models/error/ErrorModel.js +9 -1
  30. package/src/models/error/ErrorResponse.js +102 -0
  31. package/src/models/types.js +1 -0
  32. package/src/redux/actions/__tests__/Error-server.spec.js +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"AttributeDataHelper.js","names":["AttributeDataHelper","constructor","data","key","childrenKeys","_key","Array","isArray","_attribute","attr","elementid","name","param","_value","getValue","attributeData","cloneDeep","_links","pick","undefined","_children","createChildren","childData","parentKey","childKey","elements","element","has","isPlainObject","parentData","content","createChild","keyObject","dynamicschema","dynamicschemaId","children","childrenIsArray","value","attribute","suggestions","suggestion","options","option","selected","code","static","links","attrDS","message","isResult","referenceDate","pickedContent","length","getData","child","subChild"],"sources":["../../../src/models/attributes/AttributeDataHelper.js"],"sourcesContent":["// @flow\nimport cloneDeep from \"lodash/cloneDeep\";\nimport pick from \"lodash/pick\";\n\nimport { has, isPlainObject } from \"../../utils/helpers/objects\";\n\n/**\n * This util helps to normalize various attribute data formats available in the modular ui.\n * It fixes differences in choice attributes with dynamic schema's, links on download attributes, composites with various children, etc\n *\n * @private\n */\nclass AttributeDataHelper {\n _key: string;\n _attribute: Object;\n _value: any;\n _children: Array<AttributeDataHelper>;\n\n /**\n */\n constructor(\n data: Object | Array<Object>,\n key: string,\n childrenKeys: Array<Object>\n ) {\n this._key = key;\n\n if (Array.isArray(data)) {\n this._attribute =\n data.find(\n (attr) =>\n attr.elementid === key || attr.name === key || attr.param === key\n ) || {};\n this._value = this.getValue(this._attribute);\n } else {\n const attributeData = cloneDeep(data);\n attributeData._links = pick(data._links, [\n \"concept\",\n \"download\",\n \"lookupOptions\",\n \"lookupList\",\n ]);\n\n this._attribute = attributeData;\n\n this._value = data[key] === undefined ? this.getValue(data) : data[key];\n }\n\n this._children = this.createChildren(data, childrenKeys);\n }\n\n /**\n */\n childData(\n data: Object | Array<Object>,\n parentKey: string,\n childKey: string\n ): Object {\n if (Array.isArray(data)) {\n if (Array.isArray(this._attribute.elements)) {\n return this._attribute.elements.find(\n (element) => element.elementid === childKey\n );\n }\n } else if (has(data, parentKey) && isPlainObject(data[parentKey])) {\n const parentData = data[parentKey];\n if (isPlainObject(parentData) && data.content?.[childKey]) {\n return { ...parentData, content: data.content[childKey] };\n }\n return parentData;\n } else if (has(data, childKey) && isPlainObject(data[childKey])) {\n return data[childKey];\n }\n\n if (isPlainObject(data)) {\n return data;\n }\n\n return {};\n }\n\n /**\n */\n createChild(\n data: Object | Array<Object>,\n childData: Object,\n keyObject: Object\n ): AttributeDataHelper {\n const dynamicschema =\n isPlainObject(data) && !Array.isArray(data)\n ? data.dynamicschema\n : undefined;\n\n let dynamicschemaId = null;\n if (keyObject.dynamicschemaId) {\n dynamicschemaId = keyObject.dynamicschemaId;\n } else if (\n isPlainObject(data) &&\n typeof data.key === \"string\" &&\n keyObject.key\n ) {\n dynamicschemaId = `${data.key}.${keyObject.key}`;\n }\n\n return new AttributeDataHelper(\n {\n ...childData,\n dynamicschema,\n dynamicschemaId,\n },\n keyObject.key,\n keyObject.children\n );\n }\n\n /**\n */\n createChildren(\n data: Object | Array<Object>,\n childrenKeys: Array<Object> = []\n ): Array<AttributeDataHelper> {\n const childrenIsArray = Array.isArray(this.value);\n\n if (childrenIsArray) {\n return this.value.map((value) =>\n childrenKeys.map((keyObject) => {\n const childData = this.childData(value, this.key, keyObject.key);\n\n return this.createChild(data, childData, keyObject);\n })\n );\n }\n\n return childrenKeys.map((keyObject) => {\n const childData = this.childData(data, this.key, keyObject.key);\n\n return this.createChild(data, childData, keyObject);\n });\n }\n\n /**\n */\n getValue(attribute: Object): any {\n if (\"values\" in attribute) {\n return attribute.values;\n }\n\n if (\"value\" in attribute) {\n return attribute.value;\n }\n\n if (\"suggestions\" in attribute) {\n return attribute.suggestions;\n }\n\n if (\"suggestion\" in attribute) {\n return attribute.suggestion;\n }\n\n if (Array.isArray(attribute.options)) {\n return attribute.options\n .filter((option) => option.selected)\n .map((option) => option.code || option.key);\n }\n\n return null;\n }\n\n /**\n */\n get key(): string {\n return this._key;\n }\n\n /**\n */\n get value(): any {\n return this._value;\n }\n\n /**\n */\n get static(): boolean {\n return this._attribute.static || false;\n }\n\n /**\n */\n get links(): any {\n return this._attribute._links || void 0;\n }\n\n /**\n */\n get dynamicschemaId(): string {\n return this._attribute.dynamicschemaId || this.key;\n }\n\n /*\n retrieve the dynamischema by the dynamischemaId\n mentioned in the contributions of the attribute\n */\n /**\n */\n get dynamicschema(): any {\n const { dynamicschema } = this._attribute;\n if (!dynamicschema) {\n return void 0;\n }\n\n if (Array.isArray(dynamicschema)) {\n return dynamicschema;\n } else if (dynamicschema[this.dynamicschemaId]) {\n const attrDS = dynamicschema[this.dynamicschemaId];\n return attrDS.map((attr) => {\n if (attr.elements) {\n return {\n ...attr,\n elements: {\n ...attr.elements,\n dynamicschema,\n },\n };\n }\n\n return attr;\n });\n }\n\n return void 0;\n }\n\n /**\n */\n get options(): any {\n return this._attribute.options || void 0;\n }\n\n /**\n */\n get message(): any {\n return this._attribute.message || void 0;\n }\n\n /**\n */\n get isResult(): boolean {\n return this._attribute.isResult || false;\n }\n\n /**\n */\n get referenceDate(): any {\n return this._attribute.referenceDate || void 0;\n }\n\n /**\n */\n get children(): Array<AttributeDataHelper> {\n return this._children || [];\n }\n\n /**\n */\n get content(): Object {\n if (this._attribute.content) {\n const pickedContent = pick(this._attribute.content, [\n \"header\",\n \"label\",\n \"elements\",\n \"layouthint\",\n \"text\",\n ]);\n\n if (Object.keys(pickedContent).length > 0) {\n return pickedContent;\n }\n }\n\n return null;\n }\n\n /**\n */\n getData(): Object {\n return {\n key: this.key,\n value: this.value,\n static: this.static,\n _links: this.links,\n dynamicschema: this.dynamicschema,\n dynamicschemaId: this.dynamicschemaId,\n options: this.options,\n message: this.message,\n isResult: this.isResult,\n referenceDate: this.referenceDate,\n children: this.children.map((child) =>\n Array.isArray(child)\n ? child.map((subChild) => subChild.getData())\n : child.getData()\n ),\n content: this.content,\n };\n }\n}\n\nexport default AttributeDataHelper;\n"],"mappings":"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"}
1
+ {"version":3,"file":"AttributeDataHelper.js","names":["AttributeDataHelper","constructor","data","key","childrenKeys","_key","Array","isArray","_attribute","attr","elementid","name","param","_value","getValue","attributeData","cloneDeep","_links","pick","undefined","_children","createChildren","childData","parentKey","childKey","elements","element","has","isPlainObject","parentData","content","createChild","keyObject","dynamicschema","dynamicschemaId","children","childrenIsArray","value","attribute","suggestions","suggestion","options","option","selected","code","static","links","attrDS","message","isResult","referenceDate","pickedContent","length","getData","child","subChild"],"sources":["../../../src/models/attributes/AttributeDataHelper.js"],"sourcesContent":["// @flow\nimport cloneDeep from \"lodash/cloneDeep\";\nimport pick from \"lodash/pick\";\n\nimport { has, isPlainObject } from \"../../utils/helpers/objects\";\n\n/**\n * This util helps to normalize various attribute data formats available in the modular ui.\n * It fixes differences in choice attributes with dynamic schema's, links on download attributes, composites with various children, etc\n *\n * @private\n */\nclass AttributeDataHelper {\n _key: string;\n _attribute: Object;\n _value: any;\n _children: Array<AttributeDataHelper>;\n\n /**\n */\n constructor(\n data: Object | Array<Object>,\n key: string,\n childrenKeys: Array<Object>\n ) {\n this._key = key;\n\n if (Array.isArray(data)) {\n this._attribute =\n data.find(\n (attr) =>\n attr.elementid === key || attr.name === key || attr.param === key\n ) || {};\n this._value = this.getValue(this._attribute);\n } else {\n const attributeData = cloneDeep(data);\n attributeData._links = pick(data._links, [\n \"concept\",\n \"download\",\n \"lookupOptions\",\n \"lookupList\",\n ]);\n\n this._attribute = attributeData;\n\n if (data[key] === undefined || (\"name\" in data && \"param\" in data)) {\n this._value = this.getValue(data);\n } else {\n this._value = data[key];\n }\n }\n\n this._children = this.createChildren(data, childrenKeys);\n }\n\n /**\n */\n childData(\n data: Object | Array<Object>,\n parentKey: string,\n childKey: string\n ): Object {\n if (Array.isArray(data)) {\n if (Array.isArray(this._attribute.elements)) {\n return this._attribute.elements.find(\n (element) => element.elementid === childKey\n );\n }\n } else if (has(data, parentKey) && isPlainObject(data[parentKey])) {\n const parentData = data[parentKey];\n if (isPlainObject(parentData) && data.content?.[childKey]) {\n return { ...parentData, content: data.content[childKey] };\n }\n return parentData;\n } else if (has(data, childKey) && isPlainObject(data[childKey])) {\n return data[childKey];\n }\n\n if (isPlainObject(data)) {\n return data;\n }\n\n return {};\n }\n\n /**\n */\n createChild(\n data: Object | Array<Object>,\n childData: Object,\n keyObject: Object\n ): AttributeDataHelper {\n const dynamicschema =\n isPlainObject(data) && !Array.isArray(data)\n ? data.dynamicschema\n : undefined;\n\n let dynamicschemaId = null;\n if (keyObject.dynamicschemaId) {\n dynamicschemaId = keyObject.dynamicschemaId;\n } else if (\n isPlainObject(data) &&\n typeof data.key === \"string\" &&\n keyObject.key\n ) {\n dynamicschemaId = `${data.key}.${keyObject.key}`;\n }\n\n return new AttributeDataHelper(\n {\n ...childData,\n dynamicschema,\n dynamicschemaId,\n },\n keyObject.key,\n keyObject.children\n );\n }\n\n /**\n */\n createChildren(\n data: Object | Array<Object>,\n childrenKeys: Array<Object> = []\n ): Array<AttributeDataHelper> {\n const childrenIsArray = Array.isArray(this.value);\n\n if (childrenIsArray) {\n return this.value.map((value) =>\n childrenKeys.map((keyObject) => {\n const childData = this.childData(value, this.key, keyObject.key);\n\n return this.createChild(data, childData, keyObject);\n })\n );\n }\n\n return childrenKeys.map((keyObject) => {\n const childData = this.childData(data, this.key, keyObject.key);\n\n return this.createChild(data, childData, keyObject);\n });\n }\n\n /**\n */\n getValue(attribute: Object): any {\n if (\"values\" in attribute) {\n return attribute.values;\n }\n\n if (\"value\" in attribute) {\n return attribute.value;\n }\n\n if (\"suggestions\" in attribute) {\n return attribute.suggestions;\n }\n\n if (\"suggestion\" in attribute) {\n return attribute.suggestion;\n }\n\n if (Array.isArray(attribute.options)) {\n return attribute.options\n .filter((option) => option.selected)\n .map((option) => option.code || option.key);\n }\n\n return null;\n }\n\n /**\n */\n get key(): string {\n return this._key;\n }\n\n /**\n */\n get value(): any {\n return this._value;\n }\n\n /**\n */\n get static(): boolean {\n return this._attribute.static || false;\n }\n\n /**\n */\n get links(): any {\n return this._attribute._links || void 0;\n }\n\n /**\n */\n get dynamicschemaId(): string {\n return this._attribute.dynamicschemaId || this.key;\n }\n\n /*\n retrieve the dynamischema by the dynamischemaId\n mentioned in the contributions of the attribute\n */\n /**\n */\n get dynamicschema(): any {\n const { dynamicschema } = this._attribute;\n if (!dynamicschema) {\n return void 0;\n }\n\n if (Array.isArray(dynamicschema)) {\n return dynamicschema;\n } else if (dynamicschema[this.dynamicschemaId]) {\n const attrDS = dynamicschema[this.dynamicschemaId];\n return attrDS.map((attr) => {\n if (attr.elements) {\n return {\n ...attr,\n elements: {\n ...attr.elements,\n dynamicschema,\n },\n };\n }\n\n return attr;\n });\n }\n\n return void 0;\n }\n\n /**\n */\n get options(): any {\n return this._attribute.options || void 0;\n }\n\n /**\n */\n get message(): any {\n return this._attribute.message || void 0;\n }\n\n /**\n */\n get isResult(): boolean {\n return this._attribute.isResult || false;\n }\n\n /**\n */\n get referenceDate(): any {\n return this._attribute.referenceDate || void 0;\n }\n\n /**\n */\n get children(): Array<AttributeDataHelper> {\n return this._children || [];\n }\n\n /**\n */\n get content(): Object {\n if (this._attribute.content) {\n const pickedContent = pick(this._attribute.content, [\n \"header\",\n \"label\",\n \"elements\",\n \"layouthint\",\n \"text\",\n ]);\n\n if (Object.keys(pickedContent).length > 0) {\n return pickedContent;\n }\n }\n\n return null;\n }\n\n /**\n */\n getData(): Object {\n return {\n key: this.key,\n value: this.value,\n static: this.static,\n _links: this.links,\n dynamicschema: this.dynamicschema,\n dynamicschemaId: this.dynamicschemaId,\n options: this.options,\n message: this.message,\n isResult: this.isResult,\n referenceDate: this.referenceDate,\n children: this.children.map((child) =>\n Array.isArray(child)\n ? child.map((subChild) => subChild.getData())\n : child.getData()\n ),\n content: this.content,\n };\n }\n}\n\nexport default AttributeDataHelper;\n"],"mappings":"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"}
@@ -9,6 +9,8 @@ exports.default = void 0;
9
9
 
10
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
11
11
 
12
+ var _LayoutHintCollection = _interopRequireDefault(require("../layouthint/LayoutHintCollection"));
13
+
12
14
  /**
13
15
  * Wrapper around an error message / object
14
16
  */
@@ -22,10 +24,12 @@ class ErrorModel {
22
24
  (0, _defineProperty2.default)(this, "_defaultMessage", void 0);
23
25
  (0, _defineProperty2.default)(this, "_parameters", void 0);
24
26
  (0, _defineProperty2.default)(this, "_isClientConstraint", void 0);
27
+ (0, _defineProperty2.default)(this, "_layouthint", void 0);
25
28
  this._id = id;
26
29
  this._parameters = parameters;
27
30
  this._defaultMessage = defaultMessage;
28
31
  this._isClientConstraint = isClientConstraint;
32
+ this._layouthint = new _LayoutHintCollection.default();
29
33
  }
30
34
  /**
31
35
  * Get id of error
@@ -60,6 +64,13 @@ class ErrorModel {
60
64
  */
61
65
 
62
66
 
67
+ get layouthint() {
68
+ return this._layouthint;
69
+ }
70
+ /**
71
+ */
72
+
73
+
63
74
  get isMandatoryConstraint() {
64
75
  return this.id === "Constraint.Mandatory";
65
76
  }
@@ -1,5 +1,6 @@
1
1
  // @flow
2
2
  import type { MessageParameters } from "../../i18n/types";
3
+ import LayoutHintCollection from "../layouthint/LayoutHintCollection";
3
4
 
4
5
  /**
5
6
  * Wrapper around an error message / object
@@ -9,6 +10,7 @@ class ErrorModel {
9
10
  _defaultMessage: ?string;
10
11
  _parameters: ?MessageParameters;
11
12
  _isClientConstraint: boolean;
13
+ _layouthint: LayoutHintCollection;
12
14
 
13
15
  /**
14
16
  * Contruct
@@ -22,8 +24,8 @@ class ErrorModel {
22
24
  this._id = id;
23
25
  this._parameters = parameters;
24
26
  this._defaultMessage = defaultMessage;
25
-
26
27
  this._isClientConstraint = isClientConstraint;
28
+ this._layouthint = new LayoutHintCollection();
27
29
  }
28
30
 
29
31
  /**
@@ -51,6 +53,12 @@ class ErrorModel {
51
53
  return this._isClientConstraint || false;
52
54
  }
53
55
 
56
+ /**
57
+ */
58
+ get layouthint(): LayoutHintCollection {
59
+ return this._layouthint;
60
+ }
61
+
54
62
  /**
55
63
  */
56
64
  get isMandatoryConstraint(): boolean {
@@ -1 +1 @@
1
- {"version":3,"file":"ErrorModel.js","names":["ErrorModel","constructor","id","defaultMessage","parameters","isClientConstraint","_id","_parameters","_defaultMessage","_isClientConstraint","isMandatoryConstraint"],"sources":["../../../src/models/error/ErrorModel.js"],"sourcesContent":["// @flow\nimport type { MessageParameters } from \"../../i18n/types\";\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\n /**\n * Contruct\n */\n constructor(\n id: string,\n defaultMessage: ?string,\n parameters: ?MessageParameters,\n isClientConstraint: boolean = false\n ) {\n this._id = id;\n this._parameters = parameters;\n this._defaultMessage = defaultMessage;\n\n this._isClientConstraint = isClientConstraint;\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 isMandatoryConstraint(): boolean {\n return this.id === \"Constraint.Mandatory\";\n }\n}\n\nexport default ErrorModel;\n"],"mappings":";;;;;;;;;;;AAGA;AACA;AACA;AACA,MAAMA,UAAN,CAAiB;EAMf;AACF;AACA;EACEC,WAAW,CACTC,EADS,EAETC,cAFS,EAGTC,UAHS,EAKT;IAAA,IADAC,kBACA,uEAD8B,KAC9B;IAAA;IAAA;IAAA;IAAA;IACA,KAAKC,GAAL,GAAWJ,EAAX;IACA,KAAKK,WAAL,GAAmBH,UAAnB;IACA,KAAKI,eAAL,GAAuBL,cAAvB;IAEA,KAAKM,mBAAL,GAA2BJ,kBAA3B;EACD;EAED;AACF;AACA;;;EACQ,IAAFH,EAAE,GAAW;IACf,OAAO,KAAKI,GAAZ;EACD;EAED;AACF;;;EACoB,IAAdH,cAAc,GAAY;IAC5B,OAAO,KAAKK,eAAZ;EACD;EAED;AACF;;;EACgB,IAAVJ,UAAU,GAAuB;IACnC,OAAO,KAAKG,WAAZ;EACD;EAED;AACF;;;EACwB,IAAlBF,kBAAkB,GAAY;IAChC,OAAO,KAAKI,mBAAL,IAA4B,KAAnC;EACD;EAED;AACF;;;EAC2B,IAArBC,qBAAqB,GAAY;IACnC,OAAO,KAAKR,EAAL,KAAY,sBAAnB;EACD;;AAnDc;;eAsDFF,U"}
1
+ {"version":3,"file":"ErrorModel.js","names":["ErrorModel","constructor","id","defaultMessage","parameters","isClientConstraint","_id","_parameters","_defaultMessage","_isClientConstraint","_layouthint","LayoutHintCollection","layouthint","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 ) {\n this._id = id;\n this._parameters = parameters;\n this._defaultMessage = defaultMessage;\n this._isClientConstraint = isClientConstraint;\n this._layouthint = new LayoutHintCollection();\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;;AAEA;AACA;AACA;AACA,MAAMA,UAAN,CAAiB;EAOf;AACF;AACA;EACEC,WAAW,CACTC,EADS,EAETC,cAFS,EAGTC,UAHS,EAKT;IAAA,IADAC,kBACA,uEAD8B,KAC9B;IAAA;IAAA;IAAA;IAAA;IAAA;IACA,KAAKC,GAAL,GAAWJ,EAAX;IACA,KAAKK,WAAL,GAAmBH,UAAnB;IACA,KAAKI,eAAL,GAAuBL,cAAvB;IACA,KAAKM,mBAAL,GAA2BJ,kBAA3B;IACA,KAAKK,WAAL,GAAmB,IAAIC,6BAAJ,EAAnB;EACD;EAED;AACF;AACA;;;EACQ,IAAFT,EAAE,GAAW;IACf,OAAO,KAAKI,GAAZ;EACD;EAED;AACF;;;EACoB,IAAdH,cAAc,GAAY;IAC5B,OAAO,KAAKK,eAAZ;EACD;EAED;AACF;;;EACgB,IAAVJ,UAAU,GAAuB;IACnC,OAAO,KAAKG,WAAZ;EACD;EAED;AACF;;;EACwB,IAAlBF,kBAAkB,GAAY;IAChC,OAAO,KAAKI,mBAAL,IAA4B,KAAnC;EACD;EAED;AACF;;;EACgB,IAAVG,UAAU,GAAyB;IACrC,OAAO,KAAKF,WAAZ;EACD;EAED;AACF;;;EAC2B,IAArBG,qBAAqB,GAAY;IACnC,OAAO,KAAKX,EAAL,KAAY,sBAAnB;EACD;;AA1Dc;;eA6DFF,U"}
@@ -11,6 +11,8 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/he
11
11
 
12
12
  var _Href = _interopRequireDefault(require("../href/Href"));
13
13
 
14
+ var _LayoutHintCollection = _interopRequireDefault(require("../layouthint/LayoutHintCollection"));
15
+
14
16
  /**
15
17
  * Error response model
16
18
  */
@@ -77,6 +79,114 @@ class ErrorResponse {
77
79
  get message() {
78
80
  return this.error.message || this.id;
79
81
  }
82
+ /**
83
+ * Return error title
84
+ */
85
+
86
+
87
+ get title() {
88
+ return this.error.title || null;
89
+ }
90
+ /**
91
+ * Return error title message
92
+ */
93
+
94
+
95
+ get titleMessage() {
96
+ var _this$error$title;
97
+
98
+ return ((_this$error$title = this.error.title) === null || _this$error$title === void 0 ? void 0 : _this$error$title.message) || undefined;
99
+ }
100
+ /**
101
+ * Return error title Id
102
+ */
103
+
104
+
105
+ get titleId() {
106
+ var _this$error$title2;
107
+
108
+ return ((_this$error$title2 = this.error.title) === null || _this$error$title2 === void 0 ? void 0 : _this$error$title2.id) || undefined;
109
+ }
110
+ /**
111
+ * Return error title properties
112
+ */
113
+
114
+
115
+ get titleProperties() {
116
+ var _this$error$title3;
117
+
118
+ return ((_this$error$title3 = this.error.title) === null || _this$error$title3 === void 0 ? void 0 : _this$error$title3.properties) || null;
119
+ }
120
+ /**
121
+ * Return error redirect
122
+ */
123
+
124
+
125
+ get redirect() {
126
+ return this.error.redirect || null;
127
+ }
128
+ /**
129
+ * Return error redirect text
130
+ */
131
+
132
+
133
+ get redirectText() {
134
+ var _this$error$redirect;
135
+
136
+ return ((_this$error$redirect = this.error.redirect) === null || _this$error$redirect === void 0 ? void 0 : _this$error$redirect.text) || null;
137
+ }
138
+ /**
139
+ * Return error redirect text id
140
+ */
141
+
142
+
143
+ get redirectTextID() {
144
+ var _this$error$redirect2, _this$error$redirect3;
145
+
146
+ return ((_this$error$redirect2 = this.error.redirect) === null || _this$error$redirect2 === void 0 ? void 0 : (_this$error$redirect3 = _this$error$redirect2.text) === null || _this$error$redirect3 === void 0 ? void 0 : _this$error$redirect3.id) || undefined;
147
+ }
148
+ /**
149
+ * Return error redirect text properties
150
+ */
151
+
152
+
153
+ get redirectTextProperties() {
154
+ var _this$error$redirect4, _this$error$redirect5;
155
+
156
+ return ((_this$error$redirect4 = this.error.redirect) === null || _this$error$redirect4 === void 0 ? void 0 : (_this$error$redirect5 = _this$error$redirect4.text) === null || _this$error$redirect5 === void 0 ? void 0 : _this$error$redirect5.properties) || null;
157
+ }
158
+ /**
159
+ * Return error redirect text message
160
+ */
161
+
162
+
163
+ get redirectMessage() {
164
+ var _this$error$redirect6, _this$error$redirect7;
165
+
166
+ return ((_this$error$redirect6 = this.error.redirect) === null || _this$error$redirect6 === void 0 ? void 0 : (_this$error$redirect7 = _this$error$redirect6.text) === null || _this$error$redirect7 === void 0 ? void 0 : _this$error$redirect7.message) || undefined;
167
+ }
168
+ /**
169
+ * Return error redirect href
170
+ */
171
+
172
+
173
+ get redirectHref() {
174
+ var _this$error$redirect8;
175
+
176
+ if ((_this$error$redirect8 = this.error.redirect) !== null && _this$error$redirect8 !== void 0 && _this$error$redirect8.href) {
177
+ return new _Href.default(this.error.redirect.href);
178
+ }
179
+
180
+ return new _Href.default();
181
+ }
182
+ /**
183
+ * Return error layouthint
184
+ */
185
+
186
+
187
+ get layouthint() {
188
+ return new _LayoutHintCollection.default(this.error.layouthint);
189
+ }
80
190
  /**
81
191
  */
82
192
 
@@ -2,6 +2,29 @@
2
2
  import Href from "../href/Href";
3
3
 
4
4
  import type { MessageParameters } from "../../i18n/types";
5
+ import LayoutHintCollection from "../layouthint/LayoutHintCollection";
6
+
7
+ /**
8
+ */
9
+ export type TitleObject = {
10
+ +id: string,
11
+ +properties?: Object,
12
+ +message?: string,
13
+ };
14
+ /**
15
+ */
16
+ export type RedirectTextObject = {
17
+ +id: string,
18
+ +properties?: Object,
19
+ +message?: string,
20
+ };
21
+
22
+ /**
23
+ */
24
+ export type RedirectObject = {
25
+ +href: Href,
26
+ +text?: RedirectTextObject,
27
+ };
5
28
 
6
29
  /**
7
30
  * Error response model
@@ -65,6 +88,85 @@ export default class ErrorResponse {
65
88
  return this.error.message || this.id;
66
89
  }
67
90
 
91
+ /**
92
+ * Return error title
93
+ */
94
+ get title(): TitleObject {
95
+ return this.error.title || null;
96
+ }
97
+
98
+ /**
99
+ * Return error title message
100
+ */
101
+ get titleMessage(): string {
102
+ return this.error.title?.message || undefined;
103
+ }
104
+
105
+ /**
106
+ * Return error title Id
107
+ */
108
+ get titleId(): string {
109
+ return this.error.title?.id || undefined;
110
+ }
111
+
112
+ /**
113
+ * Return error title properties
114
+ */
115
+ get titleProperties(): Object {
116
+ return this.error.title?.properties || null;
117
+ }
118
+
119
+ /**
120
+ * Return error redirect
121
+ */
122
+ get redirect(): RedirectObject {
123
+ return this.error.redirect || null;
124
+ }
125
+ /**
126
+ * Return error redirect text
127
+ */
128
+ get redirectText(): RedirectTextObject {
129
+ return this.error.redirect?.text || null;
130
+ }
131
+
132
+ /**
133
+ * Return error redirect text id
134
+ */
135
+ get redirectTextID(): string {
136
+ return this.error.redirect?.text?.id || undefined;
137
+ }
138
+
139
+ /**
140
+ * Return error redirect text properties
141
+ */
142
+ get redirectTextProperties(): Object {
143
+ return this.error.redirect?.text?.properties || null;
144
+ }
145
+
146
+ /**
147
+ * Return error redirect text message
148
+ */
149
+ get redirectMessage(): string {
150
+ return this.error.redirect?.text?.message || undefined;
151
+ }
152
+
153
+ /**
154
+ * Return error redirect href
155
+ */
156
+ get redirectHref(): Href {
157
+ if (this.error.redirect?.href) {
158
+ return new Href(this.error.redirect.href);
159
+ }
160
+ return new Href();
161
+ }
162
+
163
+ /**
164
+ * Return error layouthint
165
+ */
166
+ get layouthint(): LayoutHintCollection {
167
+ return new LayoutHintCollection(this.error.layouthint);
168
+ }
169
+
68
170
  /**
69
171
  */
70
172
  get response(): Object {
@@ -1 +1 @@
1
- {"version":3,"file":"ErrorResponse.js","names":["ErrorResponse","constructor","data","connectKey","_error","_connectKey","key","error","status","NO_RESPONSE_CODE","DECIMAL_RADIX","parseInt","id","isResourceNotFound","name","message","response","properties","parameters","RESOURCE_NOT_FOUND_RESPONSE_CODE","isResourceNotFoundAfterReload","isReload","isUnauthorized","UNAUTHORIZED_RESPONSE_CODE","hasUnauthorizedStatus","hasUnauthorizedErrorId","hasLoginAction","action","isChangePassword","isConcurrentUser","isConcurrentError","isBlocked","isInvalidUsername","isTimeoutError","isRemoteServiceException","changePasswordHref","redirect","Href","isBasicAuthentication","loginFailed","shouldThrowOnServer"],"sources":["../../../src/models/error/ErrorResponse.js"],"sourcesContent":["// @flow\nimport Href from \"../href/Href\";\n\nimport type { MessageParameters } from \"../../i18n/types\";\n\n/**\n * Error response model\n */\nexport default class ErrorResponse {\n _error: Object;\n _connectKey: ?string;\n\n /**\n * Construct ErrorResponse\n */\n constructor(data: Object, connectKey?: string) {\n this._error = data;\n this._connectKey = connectKey;\n }\n\n /**\n */\n set connectKey(key: string) {\n this._connectKey = key;\n }\n\n /**\n */\n get connectKey(): ?string {\n return this._connectKey;\n }\n\n /**\n * Return error information\n */\n get error(): Object {\n return this._error ?? {};\n }\n\n /**\n * Get request status code\n */\n get status(): number {\n const NO_RESPONSE_CODE = 0;\n const DECIMAL_RADIX = 10;\n return this.error.status\n ? parseInt(this.error.status, DECIMAL_RADIX)\n : NO_RESPONSE_CODE;\n }\n\n /**\n * Return error type information\n */\n get id(): string {\n if (this.isResourceNotFound && this.error.id !== \"Error.NotAuthorized\") {\n return \"Error.ResourceNotFound\";\n }\n\n return this.error.id || this.error.name || \"Error.GeneralError\";\n }\n\n /**\n */\n get message(): string {\n return this.error.message || this.id;\n }\n\n /**\n */\n get response(): Object {\n return this.error.response || {};\n }\n\n /**\n */\n get properties(): Object {\n const { properties } = this.error;\n if (properties != null && typeof properties == \"object\") {\n return properties;\n }\n\n return {};\n }\n\n /**\n * Return error parameters\n */\n get parameters(): ?MessageParameters {\n return this.error.parameters || null;\n }\n\n /**\n */\n get isResourceNotFound(): boolean {\n const RESOURCE_NOT_FOUND_RESPONSE_CODE = 404;\n\n return this.status === RESOURCE_NOT_FOUND_RESPONSE_CODE;\n }\n\n /**\n */\n get isResourceNotFoundAfterReload(): boolean {\n return this.isResourceNotFound && this.error.isReload;\n }\n\n /**\n * Check if the error message is an authorization error\n */\n get isUnauthorized(): boolean {\n const UNAUTHORIZED_RESPONSE_CODE = 401;\n\n const hasUnauthorizedStatus = this.status === UNAUTHORIZED_RESPONSE_CODE;\n const hasUnauthorizedErrorId =\n this.id === \"Error.NotAuthorized\" ||\n this.id === \"Error.Authentication.Required\" ||\n this.id === \"Error.Authentication.InvalidUsername\" ||\n this.id === \"Error.Authentication.InvalidCredentials\";\n\n const hasLoginAction = this.error.action\n ? this.error.action.name === \"login\"\n : false;\n\n return hasUnauthorizedStatus || hasUnauthorizedErrorId || hasLoginAction;\n }\n\n /**\n */\n get isChangePassword(): boolean {\n return this.id === \"Error.ChangePasswordRequired\";\n }\n\n /**\n */\n get isConcurrentUser(): boolean {\n return this.id === \"Error.Authentication.ConcurrentUser\";\n }\n\n /**\n */\n get isConcurrentError(): boolean {\n return (\n this.id === \"Error.Case.ConcurrentModification\" ||\n this.id === \"Error.DataStore.ConcurrentModification\" ||\n this.id === \"Error.DataStore.RecordAlreadyExists\" ||\n this.id === \"Error.DataStore.RowCannotBeLocked\"\n );\n }\n\n /**\n */\n get isBlocked(): boolean {\n return this.id === \"Error.Authentication.BlockedUser\";\n }\n\n /**\n */\n get isInvalidUsername(): boolean {\n return this.id === \"Error.Authentication.InvalidUsername\";\n }\n\n /**\n */\n get isTimeoutError(): boolean {\n return this.id === \"Error.CodemapLookup.InvalidToken\";\n }\n\n /**\n * A RemoteServiceException occurs when an exception occurs connecting to an external system,\n * for example when using the service list panels\n */\n get isRemoteServiceException(): boolean {\n return this.id === \"Error.RemoteServiceException\";\n }\n\n /**\n * Get response url\n */\n get changePasswordHref(): ?Href {\n return this.properties.redirect ? new Href(this.properties.redirect) : null;\n }\n\n /**\n * When no action information is present in the unauthorized response, for now we assume it is Basic Authentication\n */\n get isBasicAuthentication(): boolean {\n const UNAUTHORIZED_RESPONSE_CODE = 401;\n return (\n this.isUnauthorized &&\n this.status === UNAUTHORIZED_RESPONSE_CODE &&\n this.response.error === \"No responseText\"\n );\n }\n\n /**\n * Retrieve a failed login attempt\n */\n get loginFailed(): boolean {\n return (\n this.id === \"Error.Authentication.Required\" ||\n this.id === \"Error.Authentication.InvalidCredentials\"\n );\n }\n\n /**\n */\n get shouldThrowOnServer(): boolean {\n return !this.isChangePassword && !this.isBlocked && !this.isConcurrentUser;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"ErrorResponse.js","names":["ErrorResponse","constructor","data","connectKey","_error","_connectKey","key","error","status","NO_RESPONSE_CODE","DECIMAL_RADIX","parseInt","id","isResourceNotFound","name","message","title","titleMessage","undefined","titleId","titleProperties","properties","redirect","redirectText","text","redirectTextID","redirectTextProperties","redirectMessage","redirectHref","href","Href","layouthint","LayoutHintCollection","response","parameters","RESOURCE_NOT_FOUND_RESPONSE_CODE","isResourceNotFoundAfterReload","isReload","isUnauthorized","UNAUTHORIZED_RESPONSE_CODE","hasUnauthorizedStatus","hasUnauthorizedErrorId","hasLoginAction","action","isChangePassword","isConcurrentUser","isConcurrentError","isBlocked","isInvalidUsername","isTimeoutError","isRemoteServiceException","changePasswordHref","isBasicAuthentication","loginFailed","shouldThrowOnServer"],"sources":["../../../src/models/error/ErrorResponse.js"],"sourcesContent":["// @flow\nimport Href from \"../href/Href\";\n\nimport type { MessageParameters } from \"../../i18n/types\";\nimport LayoutHintCollection from \"../layouthint/LayoutHintCollection\";\n\n/**\n */\nexport type TitleObject = {\n +id: string,\n +properties?: Object,\n +message?: string,\n};\n/**\n */\nexport type RedirectTextObject = {\n +id: string,\n +properties?: Object,\n +message?: string,\n};\n\n/**\n */\nexport type RedirectObject = {\n +href: Href,\n +text?: RedirectTextObject,\n};\n\n/**\n * Error response model\n */\nexport default class ErrorResponse {\n _error: Object;\n _connectKey: ?string;\n\n /**\n * Construct ErrorResponse\n */\n constructor(data: Object, connectKey?: string) {\n this._error = data;\n this._connectKey = connectKey;\n }\n\n /**\n */\n set connectKey(key: string) {\n this._connectKey = key;\n }\n\n /**\n */\n get connectKey(): ?string {\n return this._connectKey;\n }\n\n /**\n * Return error information\n */\n get error(): Object {\n return this._error ?? {};\n }\n\n /**\n * Get request status code\n */\n get status(): number {\n const NO_RESPONSE_CODE = 0;\n const DECIMAL_RADIX = 10;\n return this.error.status\n ? parseInt(this.error.status, DECIMAL_RADIX)\n : NO_RESPONSE_CODE;\n }\n\n /**\n * Return error type information\n */\n get id(): string {\n if (this.isResourceNotFound && this.error.id !== \"Error.NotAuthorized\") {\n return \"Error.ResourceNotFound\";\n }\n\n return this.error.id || this.error.name || \"Error.GeneralError\";\n }\n\n /**\n */\n get message(): string {\n return this.error.message || this.id;\n }\n\n /**\n * Return error title\n */\n get title(): TitleObject {\n return this.error.title || null;\n }\n\n /**\n * Return error title message\n */\n get titleMessage(): string {\n return this.error.title?.message || undefined;\n }\n\n /**\n * Return error title Id\n */\n get titleId(): string {\n return this.error.title?.id || undefined;\n }\n\n /**\n * Return error title properties\n */\n get titleProperties(): Object {\n return this.error.title?.properties || null;\n }\n\n /**\n * Return error redirect\n */\n get redirect(): RedirectObject {\n return this.error.redirect || null;\n }\n /**\n * Return error redirect text\n */\n get redirectText(): RedirectTextObject {\n return this.error.redirect?.text || null;\n }\n\n /**\n * Return error redirect text id\n */\n get redirectTextID(): string {\n return this.error.redirect?.text?.id || undefined;\n }\n\n /**\n * Return error redirect text properties\n */\n get redirectTextProperties(): Object {\n return this.error.redirect?.text?.properties || null;\n }\n\n /**\n * Return error redirect text message\n */\n get redirectMessage(): string {\n return this.error.redirect?.text?.message || undefined;\n }\n\n /**\n * Return error redirect href\n */\n get redirectHref(): Href {\n if (this.error.redirect?.href) {\n return new Href(this.error.redirect.href);\n }\n return new Href();\n }\n\n /**\n * Return error layouthint\n */\n get layouthint(): LayoutHintCollection {\n return new LayoutHintCollection(this.error.layouthint);\n }\n\n /**\n */\n get response(): Object {\n return this.error.response || {};\n }\n\n /**\n */\n get properties(): Object {\n const { properties } = this.error;\n if (properties != null && typeof properties == \"object\") {\n return properties;\n }\n\n return {};\n }\n\n /**\n * Return error parameters\n */\n get parameters(): ?MessageParameters {\n return this.error.parameters || null;\n }\n\n /**\n */\n get isResourceNotFound(): boolean {\n const RESOURCE_NOT_FOUND_RESPONSE_CODE = 404;\n\n return this.status === RESOURCE_NOT_FOUND_RESPONSE_CODE;\n }\n\n /**\n */\n get isResourceNotFoundAfterReload(): boolean {\n return this.isResourceNotFound && this.error.isReload;\n }\n\n /**\n * Check if the error message is an authorization error\n */\n get isUnauthorized(): boolean {\n const UNAUTHORIZED_RESPONSE_CODE = 401;\n\n const hasUnauthorizedStatus = this.status === UNAUTHORIZED_RESPONSE_CODE;\n const hasUnauthorizedErrorId =\n this.id === \"Error.NotAuthorized\" ||\n this.id === \"Error.Authentication.Required\" ||\n this.id === \"Error.Authentication.InvalidUsername\" ||\n this.id === \"Error.Authentication.InvalidCredentials\";\n\n const hasLoginAction = this.error.action\n ? this.error.action.name === \"login\"\n : false;\n\n return hasUnauthorizedStatus || hasUnauthorizedErrorId || hasLoginAction;\n }\n\n /**\n */\n get isChangePassword(): boolean {\n return this.id === \"Error.ChangePasswordRequired\";\n }\n\n /**\n */\n get isConcurrentUser(): boolean {\n return this.id === \"Error.Authentication.ConcurrentUser\";\n }\n\n /**\n */\n get isConcurrentError(): boolean {\n return (\n this.id === \"Error.Case.ConcurrentModification\" ||\n this.id === \"Error.DataStore.ConcurrentModification\" ||\n this.id === \"Error.DataStore.RecordAlreadyExists\" ||\n this.id === \"Error.DataStore.RowCannotBeLocked\"\n );\n }\n\n /**\n */\n get isBlocked(): boolean {\n return this.id === \"Error.Authentication.BlockedUser\";\n }\n\n /**\n */\n get isInvalidUsername(): boolean {\n return this.id === \"Error.Authentication.InvalidUsername\";\n }\n\n /**\n */\n get isTimeoutError(): boolean {\n return this.id === \"Error.CodemapLookup.InvalidToken\";\n }\n\n /**\n * A RemoteServiceException occurs when an exception occurs connecting to an external system,\n * for example when using the service list panels\n */\n get isRemoteServiceException(): boolean {\n return this.id === \"Error.RemoteServiceException\";\n }\n\n /**\n * Get response url\n */\n get changePasswordHref(): ?Href {\n return this.properties.redirect ? new Href(this.properties.redirect) : null;\n }\n\n /**\n * When no action information is present in the unauthorized response, for now we assume it is Basic Authentication\n */\n get isBasicAuthentication(): boolean {\n const UNAUTHORIZED_RESPONSE_CODE = 401;\n return (\n this.isUnauthorized &&\n this.status === UNAUTHORIZED_RESPONSE_CODE &&\n this.response.error === \"No responseText\"\n );\n }\n\n /**\n * Retrieve a failed login attempt\n */\n get loginFailed(): boolean {\n return (\n this.id === \"Error.Authentication.Required\" ||\n this.id === \"Error.Authentication.InvalidCredentials\"\n );\n }\n\n /**\n */\n get shouldThrowOnServer(): boolean {\n return !this.isChangePassword && !this.isBlocked && !this.isConcurrentUser;\n }\n}\n"],"mappings":"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"}
@@ -109,6 +109,7 @@ export type FormErrorAnchor = {
109
109
  index?: number,
110
110
  "index-identifier"?: string,
111
111
  },
112
+ layouthint?: LayoutHintCollection,
112
113
  message: string,
113
114
  param?: {
114
115
  name: string,
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":[],"sources":["../../src/models/types.js"],"sourcesContent":["// @flow\nimport type ApplicationModel from \"./application/ApplicationModel\";\nimport type BooleanAttributeModel from \"./attributes/BooleanAttributeModel\";\nimport type CaptchaAttributeModel from \"./attributes/CaptchaAttributeModel\";\nimport type ChoiceAttributeModel from \"./attributes/ChoiceAttributeModel\";\nimport type CompositeAttributeModel from \"./attributes/CompositeAttributeModel\";\nimport type DatetimeAttributeModel from \"./attributes/DatetimeAttributeModel\";\nimport type HelptextAttributeModel from \"./attributes/HelptextAttributeModel\";\nimport type LabelAttributeModel from \"./attributes/LabelAttributeModel\";\nimport type MemoAttributeModel from \"./attributes/MemoAttributeModel\";\nimport type MoneyAttributeModel from \"./attributes/MoneyAttributeModel\";\nimport type NumberAttributeModel from \"./attributes/NumberAttributeModel\";\nimport type PasswordAttributeModel from \"./attributes/PasswordAttributeModel\";\nimport type StringAttributeModel from \"./attributes/StringAttributeModel\";\nimport type UploadAttributeModel from \"./attributes/UploadAttributeModel\";\nimport type XMLAttributeModel from \"./attributes/XMLAttributeModel\";\nimport type CaseViewModel from \"./caseview/CaseViewModel\";\nimport type BusinessScenarioModel from \"./concepts/BusinessScenarioModel\";\nimport type ConceptDetailModel from \"./concepts/ConceptDetailModel\";\nimport type ConceptIndexModel from \"./concepts/ConceptIndexModel\";\nimport type ConceptTypeDetailModel from \"./concepts/ConceptTypeDetailModel\";\nimport type ContentIndexModel from \"./content/ContentIndexModel\";\nimport type ContentModel from \"./content/ContentModel\";\nimport type SectionModel from \"./content/SectionModel\";\nimport type ContentTOCModel from \"./content/ContentTOCModel\";\nimport type ContentTypeModel from \"./content/ContentTypeModel\";\nimport type DetailModel from \"./detail/DetailModel\";\nimport type AssignmentFilterModel from \"./filters/AssignmentFilterModel\";\nimport type FilterModel from \"./filters/FilterModel\";\nimport type RangeFilterModel from \"./filters/RangeFilterModel\";\nimport type ConceptIndexFilterModel from \"./filters/ConceptIndexFilterModel\";\nimport type FormModel from \"./form/FormModel\";\nimport type ListDetailModel from \"./list/ListDetailModel\";\nimport type ListModel from \"./list/ListModel\";\nimport type ModelCatalogModel from \"./modelcatalog/ModelCatalogModel\";\nimport type GroupingPanelModel from \"./panels/GroupingPanelModel\";\nimport type CaseSearchModel from \"./search/CaseSearchModel\";\nimport type TabModel from \"./tab/TabModel\";\nimport type TaskGroupModel from \"./taskgroup/TaskGroupModel\";\nimport type UserModel from \"./user/UserModel\";\nimport type UserServicesModel from \"./user/UserServicesModel\";\nimport type LinkModel from \"./links/LinkModel\";\nimport type LookupOptionsModel from \"./lookup/LookupOptionsModel\";\nimport type BaseFilterModel from \"./filters/BaseFilterModel\";\nimport type AttributeCollection from \"./attributes/AttributeCollection\";\nimport type AttributeModel from \"./attributes/AttributeModel\";\nimport type LayoutHintCollection from \"./layouthint/LayoutHintCollection\";\n\nexport type ModularUIModel =\n | ApplicationModel\n | CaseSearchModel\n | CaseViewModel\n | ListDetailModel\n | DetailModel\n | FormModel\n | GroupingPanelModel\n | ListModel\n | TabModel\n | TaskGroupModel\n | UserModel\n | UserServicesModel\n | ModelCatalogModel\n | ConceptIndexModel\n | ConceptDetailModel\n | BusinessScenarioModel\n | ConceptTypeDetailModel\n | ContentIndexModel\n | ContentTOCModel\n | ContentModel\n | ContentTypeModel\n | LookupOptionsModel;\n\nexport type AttributeType =\n | BooleanAttributeModel\n | CaptchaAttributeModel\n | ChoiceAttributeModel\n | DatetimeAttributeModel\n | HelptextAttributeModel\n | LabelAttributeModel\n | MemoAttributeModel\n | MoneyAttributeModel\n | NumberAttributeModel\n | PasswordAttributeModel\n | CompositeAttributeModel\n | StringAttributeModel\n | UploadAttributeModel\n | XMLAttributeModel;\n\nexport type RangeChildAttributeType =\n | NumberAttributeModel\n | DatetimeAttributeModel;\n\nexport type FilterType =\n | BaseFilterModel\n | FilterModel\n | AssignmentFilterModel\n | RangeFilterModel\n | ConceptIndexFilterModel;\n\nexport type FormErrorAnchor = {\n id: string,\n properties?: {\n [propertyName: string]: string | number,\n },\n anchor?: {\n objectid: string,\n elementid?: string,\n _links?: Object,\n index?: number,\n \"index-identifier\"?: string,\n },\n message: string,\n param?: {\n name: string,\n },\n};\n\nexport type labelsJSON = {|\n _id: string,\n label: string,\n value: string,\n|};\n\nexport type propertyJSON = {|\n _id: string,\n type: string,\n mandatory: string,\n label: string,\n value: string,\n|};\n\nexport type textfragmentJSON = {|\n label: string,\n text: string,\n type: string,\n|};\n\nexport interface IConstraintModel {\n +id: string;\n +defaultMessage: string;\n +parameters: Object;\n +isMandatoryConstraint: boolean;\n validate(value: any): boolean;\n hasValidation(): boolean;\n}\n\nexport interface ILayoutHintRule {\n process(attribute: AttributeModel, attributes: AttributeCollection): void;\n}\n\nexport interface IModelWithChildModels {\n getInitialChildModelLinks(): Array<LinkModel>;\n setChildModels(models: Array<ModularUIModel>): void;\n}\n\nexport type AuthenticationType = {\n name: string,\n authentication: string,\n redirectUri: string,\n isPrimary: boolean,\n};\n\nexport type FileEntryType = {\n name: string,\n size?: number,\n progress: number,\n error?: string,\n token?: string,\n};\n\nexport type FilesType = {\n [filename: string]: FileEntryType,\n};\n\nexport type FiletypeConstraintsType = Array<{|\n extensions: Array<string>,\n mimeTypes: Array<string>,\n|}>;\n\nexport type FilesizeConstraintsType = {\n fileSize: ?number,\n maxTotalFileSize: ?number,\n isMaxTotal: boolean,\n};\n\nexport type PropertyData = { type: string, label: string, value: string };\nexport type TextFragmentData = {\n type: string,\n label: string,\n text: string | { id?: string, message: string, properties?: Object },\n};\nexport type SectionData = {\n id: string,\n type: string,\n label?: string,\n number?: string,\n body: string | { id?: string, message: string, properties?: Object },\n _links: { self: { href: string } },\n childSections: Array<SectionData>,\n subSections: Array<SectionData>,\n};\n\nexport type PropertyElement = {\n propertyElement: {\n label: string,\n layouthint: Array<string>,\n properties: Array<PropertyData>,\n },\n};\nexport type TextFragmentElement = {\n textFragmentElement: {\n label: string,\n layouthint: Array<string>,\n textfragments: Array<TextFragmentData>,\n },\n};\nexport type ContentElement = {\n contentElement: {\n label: string,\n layouthint: Array<string>,\n sections: Array<SectionData>,\n },\n};\n\nexport type PropertyElementMapped = {\n propertyElement: {\n label: string,\n layouthint: LayoutHintCollection,\n properties: Array<PropertyData>,\n },\n};\nexport type TextFragmentElementMapped = {\n textFragmentElement: {\n label: string,\n layouthint: LayoutHintCollection,\n textfragments: Array<TextFragmentData>,\n },\n};\nexport type ContentElementMapped = {\n contentElement: {\n label: string,\n layouthint: LayoutHintCollection,\n sections: Array<SectionModel>,\n },\n};\n\nexport type ContentAll = Array<\n PropertyElementMapped | TextFragmentElementMapped | ContentElementMapped\n>;\n\nexport type ContentData = {\n header: {\n label?: string,\n description?: { id?: string, message: string, properties?: Object },\n },\n label?: string,\n elements: Array<PropertyElement | TextFragmentElement | ContentElement>,\n};\n"],"mappings":""}
1
+ {"version":3,"file":"types.js","names":[],"sources":["../../src/models/types.js"],"sourcesContent":["// @flow\nimport type ApplicationModel from \"./application/ApplicationModel\";\nimport type BooleanAttributeModel from \"./attributes/BooleanAttributeModel\";\nimport type CaptchaAttributeModel from \"./attributes/CaptchaAttributeModel\";\nimport type ChoiceAttributeModel from \"./attributes/ChoiceAttributeModel\";\nimport type CompositeAttributeModel from \"./attributes/CompositeAttributeModel\";\nimport type DatetimeAttributeModel from \"./attributes/DatetimeAttributeModel\";\nimport type HelptextAttributeModel from \"./attributes/HelptextAttributeModel\";\nimport type LabelAttributeModel from \"./attributes/LabelAttributeModel\";\nimport type MemoAttributeModel from \"./attributes/MemoAttributeModel\";\nimport type MoneyAttributeModel from \"./attributes/MoneyAttributeModel\";\nimport type NumberAttributeModel from \"./attributes/NumberAttributeModel\";\nimport type PasswordAttributeModel from \"./attributes/PasswordAttributeModel\";\nimport type StringAttributeModel from \"./attributes/StringAttributeModel\";\nimport type UploadAttributeModel from \"./attributes/UploadAttributeModel\";\nimport type XMLAttributeModel from \"./attributes/XMLAttributeModel\";\nimport type CaseViewModel from \"./caseview/CaseViewModel\";\nimport type BusinessScenarioModel from \"./concepts/BusinessScenarioModel\";\nimport type ConceptDetailModel from \"./concepts/ConceptDetailModel\";\nimport type ConceptIndexModel from \"./concepts/ConceptIndexModel\";\nimport type ConceptTypeDetailModel from \"./concepts/ConceptTypeDetailModel\";\nimport type ContentIndexModel from \"./content/ContentIndexModel\";\nimport type ContentModel from \"./content/ContentModel\";\nimport type SectionModel from \"./content/SectionModel\";\nimport type ContentTOCModel from \"./content/ContentTOCModel\";\nimport type ContentTypeModel from \"./content/ContentTypeModel\";\nimport type DetailModel from \"./detail/DetailModel\";\nimport type AssignmentFilterModel from \"./filters/AssignmentFilterModel\";\nimport type FilterModel from \"./filters/FilterModel\";\nimport type RangeFilterModel from \"./filters/RangeFilterModel\";\nimport type ConceptIndexFilterModel from \"./filters/ConceptIndexFilterModel\";\nimport type FormModel from \"./form/FormModel\";\nimport type ListDetailModel from \"./list/ListDetailModel\";\nimport type ListModel from \"./list/ListModel\";\nimport type ModelCatalogModel from \"./modelcatalog/ModelCatalogModel\";\nimport type GroupingPanelModel from \"./panels/GroupingPanelModel\";\nimport type CaseSearchModel from \"./search/CaseSearchModel\";\nimport type TabModel from \"./tab/TabModel\";\nimport type TaskGroupModel from \"./taskgroup/TaskGroupModel\";\nimport type UserModel from \"./user/UserModel\";\nimport type UserServicesModel from \"./user/UserServicesModel\";\nimport type LinkModel from \"./links/LinkModel\";\nimport type LookupOptionsModel from \"./lookup/LookupOptionsModel\";\nimport type BaseFilterModel from \"./filters/BaseFilterModel\";\nimport type AttributeCollection from \"./attributes/AttributeCollection\";\nimport type AttributeModel from \"./attributes/AttributeModel\";\nimport type LayoutHintCollection from \"./layouthint/LayoutHintCollection\";\n\nexport type ModularUIModel =\n | ApplicationModel\n | CaseSearchModel\n | CaseViewModel\n | ListDetailModel\n | DetailModel\n | FormModel\n | GroupingPanelModel\n | ListModel\n | TabModel\n | TaskGroupModel\n | UserModel\n | UserServicesModel\n | ModelCatalogModel\n | ConceptIndexModel\n | ConceptDetailModel\n | BusinessScenarioModel\n | ConceptTypeDetailModel\n | ContentIndexModel\n | ContentTOCModel\n | ContentModel\n | ContentTypeModel\n | LookupOptionsModel;\n\nexport type AttributeType =\n | BooleanAttributeModel\n | CaptchaAttributeModel\n | ChoiceAttributeModel\n | DatetimeAttributeModel\n | HelptextAttributeModel\n | LabelAttributeModel\n | MemoAttributeModel\n | MoneyAttributeModel\n | NumberAttributeModel\n | PasswordAttributeModel\n | CompositeAttributeModel\n | StringAttributeModel\n | UploadAttributeModel\n | XMLAttributeModel;\n\nexport type RangeChildAttributeType =\n | NumberAttributeModel\n | DatetimeAttributeModel;\n\nexport type FilterType =\n | BaseFilterModel\n | FilterModel\n | AssignmentFilterModel\n | RangeFilterModel\n | ConceptIndexFilterModel;\n\nexport type FormErrorAnchor = {\n id: string,\n properties?: {\n [propertyName: string]: string | number,\n },\n anchor?: {\n objectid: string,\n elementid?: string,\n _links?: Object,\n index?: number,\n \"index-identifier\"?: string,\n },\n layouthint?: LayoutHintCollection,\n message: string,\n param?: {\n name: string,\n },\n};\n\nexport type labelsJSON = {|\n _id: string,\n label: string,\n value: string,\n|};\n\nexport type propertyJSON = {|\n _id: string,\n type: string,\n mandatory: string,\n label: string,\n value: string,\n|};\n\nexport type textfragmentJSON = {|\n label: string,\n text: string,\n type: string,\n|};\n\nexport interface IConstraintModel {\n +id: string;\n +defaultMessage: string;\n +parameters: Object;\n +isMandatoryConstraint: boolean;\n validate(value: any): boolean;\n hasValidation(): boolean;\n}\n\nexport interface ILayoutHintRule {\n process(attribute: AttributeModel, attributes: AttributeCollection): void;\n}\n\nexport interface IModelWithChildModels {\n getInitialChildModelLinks(): Array<LinkModel>;\n setChildModels(models: Array<ModularUIModel>): void;\n}\n\nexport type AuthenticationType = {\n name: string,\n authentication: string,\n redirectUri: string,\n isPrimary: boolean,\n};\n\nexport type FileEntryType = {\n name: string,\n size?: number,\n progress: number,\n error?: string,\n token?: string,\n};\n\nexport type FilesType = {\n [filename: string]: FileEntryType,\n};\n\nexport type FiletypeConstraintsType = Array<{|\n extensions: Array<string>,\n mimeTypes: Array<string>,\n|}>;\n\nexport type FilesizeConstraintsType = {\n fileSize: ?number,\n maxTotalFileSize: ?number,\n isMaxTotal: boolean,\n};\n\nexport type PropertyData = { type: string, label: string, value: string };\nexport type TextFragmentData = {\n type: string,\n label: string,\n text: string | { id?: string, message: string, properties?: Object },\n};\nexport type SectionData = {\n id: string,\n type: string,\n label?: string,\n number?: string,\n body: string | { id?: string, message: string, properties?: Object },\n _links: { self: { href: string } },\n childSections: Array<SectionData>,\n subSections: Array<SectionData>,\n};\n\nexport type PropertyElement = {\n propertyElement: {\n label: string,\n layouthint: Array<string>,\n properties: Array<PropertyData>,\n },\n};\nexport type TextFragmentElement = {\n textFragmentElement: {\n label: string,\n layouthint: Array<string>,\n textfragments: Array<TextFragmentData>,\n },\n};\nexport type ContentElement = {\n contentElement: {\n label: string,\n layouthint: Array<string>,\n sections: Array<SectionData>,\n },\n};\n\nexport type PropertyElementMapped = {\n propertyElement: {\n label: string,\n layouthint: LayoutHintCollection,\n properties: Array<PropertyData>,\n },\n};\nexport type TextFragmentElementMapped = {\n textFragmentElement: {\n label: string,\n layouthint: LayoutHintCollection,\n textfragments: Array<TextFragmentData>,\n },\n};\nexport type ContentElementMapped = {\n contentElement: {\n label: string,\n layouthint: LayoutHintCollection,\n sections: Array<SectionModel>,\n },\n};\n\nexport type ContentAll = Array<\n PropertyElementMapped | TextFragmentElementMapped | ContentElementMapped\n>;\n\nexport type ContentData = {\n header: {\n label?: string,\n description?: { id?: string, message: string, properties?: Object },\n },\n label?: string,\n elements: Array<PropertyElement | TextFragmentElement | ContentElement>,\n};\n"],"mappings":""}
@@ -4,7 +4,6 @@ import { handleError } from "../Error";
4
4
 
5
5
  jest.mock("../../../constants/Constants", () => ({
6
6
  IS_SERVER: true,
7
- LOGIN_PATH: "/signin",
8
7
  }));
9
8
 
10
9
  const ROUTER_PUSH = "ROUTER/PUSH";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@beinformed/ui",
3
- "version": "1.20.9",
3
+ "version": "1.21.1",
4
4
  "description": "Toolbox for be informed javascript layouts",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "bugs": "http://support.beinformed.com",
@@ -26,7 +26,7 @@
26
26
  "clean:proxies": "node .build/proxies.js --clean",
27
27
  "lint": "eslint --cache .",
28
28
  "prettier": "prettier --write \"./{src,.flow}/**/*.js\"",
29
- "flow": "flow",
29
+ "flow": "flow --temp-dir /tmp/flow/",
30
30
  "flow:ci": "flow check",
31
31
  "flow-typed-install": "flow-typed install -l .flow/flow-typed/ --ignoreDeps peer --overwrite",
32
32
  "test": "jest",
@@ -119,12 +119,12 @@
119
119
  "eslint-plugin-babel": "^5.3.1",
120
120
  "eslint-plugin-ft-flow": "^2.0.1",
121
121
  "eslint-plugin-import": "^2.26.0",
122
- "eslint-plugin-jest": "^26.7.0",
123
- "eslint-plugin-jsdoc": "^39.3.4",
122
+ "eslint-plugin-jest": "^26.8.2",
123
+ "eslint-plugin-jsdoc": "^39.3.6",
124
124
  "eslint-plugin-react": "^7.30.1",
125
125
  "eslint-plugin-react-hooks": "^4.5.0",
126
126
  "eslint-plugin-you-dont-need-lodash-underscore": "^6.12.0",
127
- "flow-bin": "^0.183.1",
127
+ "flow-bin": "^0.184.0",
128
128
  "flow-copy-source": "^2.0.9",
129
129
  "flow-typed": "^3.8.0",
130
130
  "glob": "^8.0.3",
@@ -164,3 +164,6 @@ export const loginPasswordField = (): string =>
164
164
  */
165
165
  export const logoutPath = (): string =>
166
166
  getSetting(LOGOUT_PATH_SETTING, "/Logoff");
167
+
168
+ export const LOGIN_PATH: string = loginPath();
169
+ export const LOGOUT_PATH: string = logoutPath();
@@ -43,7 +43,11 @@ class AttributeDataHelper {
43
43
 
44
44
  this._attribute = attributeData;
45
45
 
46
- this._value = data[key] === undefined ? this.getValue(data) : data[key];
46
+ if (data[key] === undefined || ("name" in data && "param" in data)) {
47
+ this._value = this.getValue(data);
48
+ } else {
49
+ this._value = data[key];
50
+ }
47
51
  }
48
52
 
49
53
  this._children = this.createChildren(data, childrenKeys);
@@ -1,5 +1,6 @@
1
1
  // @flow
2
2
  import type { MessageParameters } from "../../i18n/types";
3
+ import LayoutHintCollection from "../layouthint/LayoutHintCollection";
3
4
 
4
5
  /**
5
6
  * Wrapper around an error message / object
@@ -9,6 +10,7 @@ class ErrorModel {
9
10
  _defaultMessage: ?string;
10
11
  _parameters: ?MessageParameters;
11
12
  _isClientConstraint: boolean;
13
+ _layouthint: LayoutHintCollection;
12
14
 
13
15
  /**
14
16
  * Contruct
@@ -22,8 +24,8 @@ class ErrorModel {
22
24
  this._id = id;
23
25
  this._parameters = parameters;
24
26
  this._defaultMessage = defaultMessage;
25
-
26
27
  this._isClientConstraint = isClientConstraint;
28
+ this._layouthint = new LayoutHintCollection();
27
29
  }
28
30
 
29
31
  /**
@@ -51,6 +53,12 @@ class ErrorModel {
51
53
  return this._isClientConstraint || false;
52
54
  }
53
55
 
56
+ /**
57
+ */
58
+ get layouthint(): LayoutHintCollection {
59
+ return this._layouthint;
60
+ }
61
+
54
62
  /**
55
63
  */
56
64
  get isMandatoryConstraint(): boolean {