@beinformed/ui 1.21.2 → 1.21.3

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 (54) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/esm/models/attributes/AttributeModel.js +2 -2
  3. package/esm/models/attributes/AttributeModel.js.map +1 -1
  4. package/esm/models/attributes/ChoiceAttributeModel.js +2 -1
  5. package/esm/models/attributes/ChoiceAttributeModel.js.map +1 -1
  6. package/esm/models/attributes/DatetimeAttributeModel.js +2 -1
  7. package/esm/models/attributes/DatetimeAttributeModel.js.map +1 -1
  8. package/esm/models/error/ErrorCollection.js +7 -6
  9. package/esm/models/error/ErrorCollection.js.map +1 -1
  10. package/esm/models/error/ErrorModel.js +2 -1
  11. package/esm/models/error/ErrorModel.js.map +1 -1
  12. package/esm/models/error/ErrorResponse.js +11 -5
  13. package/esm/models/error/ErrorResponse.js.map +1 -1
  14. package/esm/models/form/FormModel.js +5 -4
  15. package/esm/models/form/FormModel.js.map +1 -1
  16. package/esm/models/form/FormObjectModel.js +1 -1
  17. package/esm/models/form/FormObjectModel.js.map +1 -1
  18. package/esm/models/types.js.map +1 -1
  19. package/lib/models/attributes/AttributeModel.js +2 -2
  20. package/lib/models/attributes/AttributeModel.js.flow +2 -0
  21. package/lib/models/attributes/AttributeModel.js.map +1 -1
  22. package/lib/models/attributes/ChoiceAttributeModel.js +2 -1
  23. package/lib/models/attributes/ChoiceAttributeModel.js.flow +2 -2
  24. package/lib/models/attributes/ChoiceAttributeModel.js.map +1 -1
  25. package/lib/models/attributes/DatetimeAttributeModel.js +2 -1
  26. package/lib/models/attributes/DatetimeAttributeModel.js.flow +2 -2
  27. package/lib/models/attributes/DatetimeAttributeModel.js.map +1 -1
  28. package/lib/models/error/ErrorCollection.js +7 -5
  29. package/lib/models/error/ErrorCollection.js.flow +6 -3
  30. package/lib/models/error/ErrorCollection.js.map +1 -1
  31. package/lib/models/error/ErrorModel.js +2 -1
  32. package/lib/models/error/ErrorModel.js.flow +5 -2
  33. package/lib/models/error/ErrorModel.js.map +1 -1
  34. package/lib/models/error/ErrorResponse.js +11 -5
  35. package/lib/models/error/ErrorResponse.js.flow +4 -4
  36. package/lib/models/error/ErrorResponse.js.map +1 -1
  37. package/lib/models/form/FormModel.js +5 -3
  38. package/lib/models/form/FormModel.js.flow +8 -1
  39. package/lib/models/form/FormModel.js.map +1 -1
  40. package/lib/models/form/FormObjectModel.js +1 -1
  41. package/lib/models/form/FormObjectModel.js.flow +1 -0
  42. package/lib/models/form/FormObjectModel.js.map +1 -1
  43. package/lib/models/types.js.flow +1 -1
  44. package/lib/models/types.js.map +1 -1
  45. package/package.json +1 -1
  46. package/src/models/attributes/AttributeModel.js +2 -0
  47. package/src/models/attributes/ChoiceAttributeModel.js +2 -2
  48. package/src/models/attributes/DatetimeAttributeModel.js +2 -2
  49. package/src/models/error/ErrorCollection.js +6 -3
  50. package/src/models/error/ErrorModel.js +5 -2
  51. package/src/models/error/ErrorResponse.js +4 -4
  52. package/src/models/form/FormModel.js +8 -1
  53. package/src/models/form/FormObjectModel.js +1 -0
  54. package/src/models/types.js +1 -1
@@ -19,6 +19,8 @@ var _BaseCollection = _interopRequireDefault(require("../base/BaseCollection"));
19
19
 
20
20
  var _ErrorModel = _interopRequireDefault(require("./ErrorModel"));
21
21
 
22
+ var _LayoutHintCollection = _interopRequireDefault(require("../layouthint/LayoutHintCollection"));
23
+
22
24
  /**
23
25
  * Form Objects
24
26
  */
@@ -59,14 +61,14 @@ class ErrorCollection extends _BaseCollection.default {
59
61
  */
60
62
 
61
63
 
62
- addError(id, defaultMessage, parameters) {
64
+ addError(id, layouthint, defaultMessage, parameters) {
63
65
  const itemIdx = this.findById(id);
64
66
 
65
67
  if (itemIdx > -1) {
66
68
  this.removeByIndex(itemIdx);
67
69
  }
68
70
 
69
- this.add(new _ErrorModel.default(id, defaultMessage, parameters));
71
+ this.add(new _ErrorModel.default(id, defaultMessage, parameters, false, layouthint));
70
72
  }
71
73
  /**
72
74
  */
@@ -81,11 +83,11 @@ class ErrorCollection extends _BaseCollection.default {
81
83
  */
82
84
 
83
85
 
84
- addServerError(id, defaultMessage, parameters) {
86
+ addServerError(id, layouthint, defaultMessage, parameters) {
85
87
  if (parameters) {
86
- this.addError(id, defaultMessage, parameters);
88
+ this.addError(id, layouthint, defaultMessage, parameters);
87
89
  } else {
88
- this.addError(id, defaultMessage);
90
+ this.addError(id, layouthint, defaultMessage);
89
91
  }
90
92
  }
91
93
  /**
@@ -4,6 +4,7 @@ import ErrorModel from "./ErrorModel";
4
4
 
5
5
  import type { MessageParameters } from "../../i18n/types";
6
6
  import type { IConstraintModel } from "../types";
7
+ import LayoutHintCollection from "../layouthint/LayoutHintCollection";
7
8
 
8
9
  /**
9
10
  * Form Objects
@@ -42,6 +43,7 @@ export default class ErrorCollection extends BaseCollection<ErrorModel> {
42
43
  */
43
44
  addError(
44
45
  id: string,
46
+ layouthint?: LayoutHintCollection,
45
47
  defaultMessage?: string,
46
48
  parameters?: MessageParameters
47
49
  ) {
@@ -51,7 +53,7 @@ export default class ErrorCollection extends BaseCollection<ErrorModel> {
51
53
  this.removeByIndex(itemIdx);
52
54
  }
53
55
 
54
- this.add(new ErrorModel(id, defaultMessage, parameters));
56
+ this.add(new ErrorModel(id, defaultMessage, parameters, false, layouthint));
55
57
  }
56
58
 
57
59
  /**
@@ -66,13 +68,14 @@ export default class ErrorCollection extends BaseCollection<ErrorModel> {
66
68
  */
67
69
  addServerError(
68
70
  id: string,
71
+ layouthint?: LayoutHintCollection,
69
72
  defaultMessage?: string,
70
73
  parameters?: MessageParameters
71
74
  ) {
72
75
  if (parameters) {
73
- this.addError(id, defaultMessage, parameters);
76
+ this.addError(id, layouthint, defaultMessage, parameters);
74
77
  } else {
75
- this.addError(id, defaultMessage);
78
+ this.addError(id, layouthint, defaultMessage);
76
79
  }
77
80
  }
78
81
 
@@ -1 +1 @@
1
- {"version":3,"file":"ErrorCollection.js","names":["ErrorCollection","BaseCollection","constructor","type","errorCollection","_type","collection","serverErrors","error","isClientConstraint","findById","id","item","addError","defaultMessage","parameters","itemIdx","removeByIndex","add","ErrorModel","removeError","addServerError","removeServerError","removeServerErrors","forEach","addErrors","errors","addConstraints","constraints","constraint","hasMandatoryError","some","isMandatoryConstraint"],"sources":["../../../src/models/error/ErrorCollection.js"],"sourcesContent":["// @flow\nimport BaseCollection from \"../base/BaseCollection\";\nimport ErrorModel from \"./ErrorModel\";\n\nimport type { MessageParameters } from \"../../i18n/types\";\nimport type { IConstraintModel } from \"../types\";\n\n/**\n * Form Objects\n */\nexport default class ErrorCollection extends BaseCollection<ErrorModel> {\n _type: string;\n\n /**\n * constructor\n */\n constructor(type: string, errorCollection?: ErrorCollection) {\n super();\n\n this._type = type;\n this.collection = [];\n\n if (errorCollection) {\n this.collection = [...errorCollection.collection];\n }\n }\n\n /**\n */\n get serverErrors(): Array<ErrorModel> {\n return this.collection.filter((error) => !error.isClientConstraint);\n }\n\n /**\n */\n findById(id: string): number {\n return this.collection.findIndex((item) => item.id === id);\n }\n\n /**\n * Add an error to the collection\n */\n addError(\n id: string,\n defaultMessage?: string,\n parameters?: MessageParameters\n ) {\n const itemIdx = this.findById(id);\n\n if (itemIdx > -1) {\n this.removeByIndex(itemIdx);\n }\n\n this.add(new ErrorModel(id, defaultMessage, parameters));\n }\n\n /**\n */\n removeError(id: string) {\n const itemIdx = this.findById(id);\n this.removeByIndex(itemIdx);\n }\n\n /**\n * Add a server error to the collection\n */\n addServerError(\n id: string,\n defaultMessage?: string,\n parameters?: MessageParameters\n ) {\n if (parameters) {\n this.addError(id, defaultMessage, parameters);\n } else {\n this.addError(id, defaultMessage);\n }\n }\n\n /**\n */\n removeServerError(id: string) {\n this.removeError(id);\n }\n\n /**\n */\n removeServerErrors() {\n this.serverErrors.forEach((error) => {\n this.removeError(error.id);\n });\n }\n\n /**\n */\n addErrors(errors: Array<ErrorModel>) {\n this.collection = [...this.collection, ...errors];\n }\n\n /**\n * Add constraints to error collection\n */\n addConstraints(constraints: Array<IConstraintModel>) {\n this.collection = [\n ...this.collection,\n ...constraints.map(\n (constraint) =>\n new ErrorModel(\n constraint.id,\n constraint.defaultMessage,\n constraint.parameters,\n true\n )\n ),\n ];\n }\n\n /**\n * Indicates if a mandatory constraint is available and if it is in error.\n * Rationale: When a mandatory constraint is in error other constraint probably don't mather because there is no value to check\n */\n hasMandatoryError(): boolean {\n return this.collection.some((error) => error.isMandatoryConstraint);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AACA;;AACA;;AAKA;AACA;AACA;AACe,MAAMA,eAAN,SAA8BC,uBAA9B,CAAyD;EAGtE;AACF;AACA;EACEC,WAAW,CAACC,IAAD,EAAeC,eAAf,EAAkD;IAC3D;IAD2D;IAG3D,KAAKC,KAAL,GAAaF,IAAb;IACA,KAAKG,UAAL,GAAkB,EAAlB;;IAEA,IAAIF,eAAJ,EAAqB;MACnB,KAAKE,UAAL,GAAkB,CAAC,GAAGF,eAAe,CAACE,UAApB,CAAlB;IACD;EACF;EAED;AACF;;;EACkB,IAAZC,YAAY,GAAsB;IAAA;;IACpC,OAAO,qCAAKD,UAAL,iBAAwBE,KAAD,IAAW,CAACA,KAAK,CAACC,kBAAzC,CAAP;EACD;EAED;AACF;;;EACEC,QAAQ,CAACC,EAAD,EAAqB;IAAA;;IAC3B,OAAO,yCAAKL,UAAL,kBAA2BM,IAAD,IAAUA,IAAI,CAACD,EAAL,KAAYA,EAAhD,CAAP;EACD;EAED;AACF;AACA;;;EACEE,QAAQ,CACNF,EADM,EAENG,cAFM,EAGNC,UAHM,EAIN;IACA,MAAMC,OAAO,GAAG,KAAKN,QAAL,CAAcC,EAAd,CAAhB;;IAEA,IAAIK,OAAO,GAAG,CAAC,CAAf,EAAkB;MAChB,KAAKC,aAAL,CAAmBD,OAAnB;IACD;;IAED,KAAKE,GAAL,CAAS,IAAIC,mBAAJ,CAAeR,EAAf,EAAmBG,cAAnB,EAAmCC,UAAnC,CAAT;EACD;EAED;AACF;;;EACEK,WAAW,CAACT,EAAD,EAAa;IACtB,MAAMK,OAAO,GAAG,KAAKN,QAAL,CAAcC,EAAd,CAAhB;IACA,KAAKM,aAAL,CAAmBD,OAAnB;EACD;EAED;AACF;AACA;;;EACEK,cAAc,CACZV,EADY,EAEZG,cAFY,EAGZC,UAHY,EAIZ;IACA,IAAIA,UAAJ,EAAgB;MACd,KAAKF,QAAL,CAAcF,EAAd,EAAkBG,cAAlB,EAAkCC,UAAlC;IACD,CAFD,MAEO;MACL,KAAKF,QAAL,CAAcF,EAAd,EAAkBG,cAAlB;IACD;EACF;EAED;AACF;;;EACEQ,iBAAiB,CAACX,EAAD,EAAa;IAC5B,KAAKS,WAAL,CAAiBT,EAAjB;EACD;EAED;AACF;;;EACEY,kBAAkB,GAAG;IACnB,KAAKhB,YAAL,CAAkBiB,OAAlB,CAA2BhB,KAAD,IAAW;MACnC,KAAKY,WAAL,CAAiBZ,KAAK,CAACG,EAAvB;IACD,CAFD;EAGD;EAED;AACF;;;EACEc,SAAS,CAACC,MAAD,EAA4B;IACnC,KAAKpB,UAAL,GAAkB,CAAC,GAAG,KAAKA,UAAT,EAAqB,GAAGoB,MAAxB,CAAlB;EACD;EAED;AACF;AACA;;;EACEC,cAAc,CAACC,WAAD,EAAuC;IACnD,KAAKtB,UAAL,GAAkB,CAChB,GAAG,KAAKA,UADQ,EAEhB,GAAG,kBAAAsB,WAAW,MAAX,CAAAA,WAAW,EACXC,UAAD,IACE,IAAIV,mBAAJ,CACEU,UAAU,CAAClB,EADb,EAEEkB,UAAU,CAACf,cAFb,EAGEe,UAAU,CAACd,UAHb,EAIE,IAJF,CAFU,CAFE,CAAlB;EAYD;EAED;AACF;AACA;AACA;;;EACEe,iBAAiB,GAAY;IAC3B,OAAO,KAAKxB,UAAL,CAAgByB,IAAhB,CAAsBvB,KAAD,IAAWA,KAAK,CAACwB,qBAAtC,CAAP;EACD;;AAhHqE"}
1
+ {"version":3,"file":"ErrorCollection.js","names":["ErrorCollection","BaseCollection","constructor","type","errorCollection","_type","collection","serverErrors","error","isClientConstraint","findById","id","item","addError","layouthint","defaultMessage","parameters","itemIdx","removeByIndex","add","ErrorModel","removeError","addServerError","removeServerError","removeServerErrors","forEach","addErrors","errors","addConstraints","constraints","constraint","hasMandatoryError","some","isMandatoryConstraint"],"sources":["../../../src/models/error/ErrorCollection.js"],"sourcesContent":["// @flow\nimport BaseCollection from \"../base/BaseCollection\";\nimport ErrorModel from \"./ErrorModel\";\n\nimport type { MessageParameters } from \"../../i18n/types\";\nimport type { IConstraintModel } from \"../types\";\nimport LayoutHintCollection from \"../layouthint/LayoutHintCollection\";\n\n/**\n * Form Objects\n */\nexport default class ErrorCollection extends BaseCollection<ErrorModel> {\n _type: string;\n\n /**\n * constructor\n */\n constructor(type: string, errorCollection?: ErrorCollection) {\n super();\n\n this._type = type;\n this.collection = [];\n\n if (errorCollection) {\n this.collection = [...errorCollection.collection];\n }\n }\n\n /**\n */\n get serverErrors(): Array<ErrorModel> {\n return this.collection.filter((error) => !error.isClientConstraint);\n }\n\n /**\n */\n findById(id: string): number {\n return this.collection.findIndex((item) => item.id === id);\n }\n\n /**\n * Add an error to the collection\n */\n addError(\n id: string,\n layouthint?: LayoutHintCollection,\n defaultMessage?: string,\n parameters?: MessageParameters\n ) {\n const itemIdx = this.findById(id);\n\n if (itemIdx > -1) {\n this.removeByIndex(itemIdx);\n }\n\n this.add(new ErrorModel(id, defaultMessage, parameters, false, layouthint));\n }\n\n /**\n */\n removeError(id: string) {\n const itemIdx = this.findById(id);\n this.removeByIndex(itemIdx);\n }\n\n /**\n * Add a server error to the collection\n */\n addServerError(\n id: string,\n layouthint?: LayoutHintCollection,\n defaultMessage?: string,\n parameters?: MessageParameters\n ) {\n if (parameters) {\n this.addError(id, layouthint, defaultMessage, parameters);\n } else {\n this.addError(id, layouthint, defaultMessage);\n }\n }\n\n /**\n */\n removeServerError(id: string) {\n this.removeError(id);\n }\n\n /**\n */\n removeServerErrors() {\n this.serverErrors.forEach((error) => {\n this.removeError(error.id);\n });\n }\n\n /**\n */\n addErrors(errors: Array<ErrorModel>) {\n this.collection = [...this.collection, ...errors];\n }\n\n /**\n * Add constraints to error collection\n */\n addConstraints(constraints: Array<IConstraintModel>) {\n this.collection = [\n ...this.collection,\n ...constraints.map(\n (constraint) =>\n new ErrorModel(\n constraint.id,\n constraint.defaultMessage,\n constraint.parameters,\n true\n )\n ),\n ];\n }\n\n /**\n * Indicates if a mandatory constraint is available and if it is in error.\n * Rationale: When a mandatory constraint is in error other constraint probably don't mather because there is no value to check\n */\n hasMandatoryError(): boolean {\n return this.collection.some((error) => error.isMandatoryConstraint);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AACA;;AACA;;AAIA;;AAEA;AACA;AACA;AACe,MAAMA,eAAN,SAA8BC,uBAA9B,CAAyD;EAGtE;AACF;AACA;EACEC,WAAW,CAACC,IAAD,EAAeC,eAAf,EAAkD;IAC3D;IAD2D;IAG3D,KAAKC,KAAL,GAAaF,IAAb;IACA,KAAKG,UAAL,GAAkB,EAAlB;;IAEA,IAAIF,eAAJ,EAAqB;MACnB,KAAKE,UAAL,GAAkB,CAAC,GAAGF,eAAe,CAACE,UAApB,CAAlB;IACD;EACF;EAED;AACF;;;EACkB,IAAZC,YAAY,GAAsB;IAAA;;IACpC,OAAO,qCAAKD,UAAL,iBAAwBE,KAAD,IAAW,CAACA,KAAK,CAACC,kBAAzC,CAAP;EACD;EAED;AACF;;;EACEC,QAAQ,CAACC,EAAD,EAAqB;IAAA;;IAC3B,OAAO,yCAAKL,UAAL,kBAA2BM,IAAD,IAAUA,IAAI,CAACD,EAAL,KAAYA,EAAhD,CAAP;EACD;EAED;AACF;AACA;;;EACEE,QAAQ,CACNF,EADM,EAENG,UAFM,EAGNC,cAHM,EAINC,UAJM,EAKN;IACA,MAAMC,OAAO,GAAG,KAAKP,QAAL,CAAcC,EAAd,CAAhB;;IAEA,IAAIM,OAAO,GAAG,CAAC,CAAf,EAAkB;MAChB,KAAKC,aAAL,CAAmBD,OAAnB;IACD;;IAED,KAAKE,GAAL,CAAS,IAAIC,mBAAJ,CAAeT,EAAf,EAAmBI,cAAnB,EAAmCC,UAAnC,EAA+C,KAA/C,EAAsDF,UAAtD,CAAT;EACD;EAED;AACF;;;EACEO,WAAW,CAACV,EAAD,EAAa;IACtB,MAAMM,OAAO,GAAG,KAAKP,QAAL,CAAcC,EAAd,CAAhB;IACA,KAAKO,aAAL,CAAmBD,OAAnB;EACD;EAED;AACF;AACA;;;EACEK,cAAc,CACZX,EADY,EAEZG,UAFY,EAGZC,cAHY,EAIZC,UAJY,EAKZ;IACA,IAAIA,UAAJ,EAAgB;MACd,KAAKH,QAAL,CAAcF,EAAd,EAAkBG,UAAlB,EAA8BC,cAA9B,EAA8CC,UAA9C;IACD,CAFD,MAEO;MACL,KAAKH,QAAL,CAAcF,EAAd,EAAkBG,UAAlB,EAA8BC,cAA9B;IACD;EACF;EAED;AACF;;;EACEQ,iBAAiB,CAACZ,EAAD,EAAa;IAC5B,KAAKU,WAAL,CAAiBV,EAAjB;EACD;EAED;AACF;;;EACEa,kBAAkB,GAAG;IACnB,KAAKjB,YAAL,CAAkBkB,OAAlB,CAA2BjB,KAAD,IAAW;MACnC,KAAKa,WAAL,CAAiBb,KAAK,CAACG,EAAvB;IACD,CAFD;EAGD;EAED;AACF;;;EACEe,SAAS,CAACC,MAAD,EAA4B;IACnC,KAAKrB,UAAL,GAAkB,CAAC,GAAG,KAAKA,UAAT,EAAqB,GAAGqB,MAAxB,CAAlB;EACD;EAED;AACF;AACA;;;EACEC,cAAc,CAACC,WAAD,EAAuC;IACnD,KAAKvB,UAAL,GAAkB,CAChB,GAAG,KAAKA,UADQ,EAEhB,GAAG,kBAAAuB,WAAW,MAAX,CAAAA,WAAW,EACXC,UAAD,IACE,IAAIV,mBAAJ,CACEU,UAAU,CAACnB,EADb,EAEEmB,UAAU,CAACf,cAFb,EAGEe,UAAU,CAACd,UAHb,EAIE,IAJF,CAFU,CAFE,CAAlB;EAYD;EAED;AACF;AACA;AACA;;;EACEe,iBAAiB,GAAY;IAC3B,OAAO,KAAKzB,UAAL,CAAgB0B,IAAhB,CAAsBxB,KAAD,IAAWA,KAAK,CAACyB,qBAAtC,CAAP;EACD;;AAlHqE"}
@@ -20,6 +20,7 @@ class ErrorModel {
20
20
  */
21
21
  constructor(id, defaultMessage, parameters) {
22
22
  let isClientConstraint = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
23
+ let layouthint = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : new _LayoutHintCollection.default();
23
24
  (0, _defineProperty2.default)(this, "_id", void 0);
24
25
  (0, _defineProperty2.default)(this, "_defaultMessage", void 0);
25
26
  (0, _defineProperty2.default)(this, "_parameters", void 0);
@@ -29,7 +30,7 @@ class ErrorModel {
29
30
  this._parameters = parameters;
30
31
  this._defaultMessage = defaultMessage;
31
32
  this._isClientConstraint = isClientConstraint;
32
- this._layouthint = new _LayoutHintCollection.default();
33
+ this._layouthint = Array.isArray(layouthint) ? new _LayoutHintCollection.default(layouthint) : layouthint;
33
34
  }
34
35
  /**
35
36
  * Get id of error
@@ -19,13 +19,16 @@ class ErrorModel {
19
19
  id: string,
20
20
  defaultMessage: ?string,
21
21
  parameters: ?MessageParameters,
22
- isClientConstraint: boolean = false
22
+ isClientConstraint: boolean = false,
23
+ layouthint: LayoutHintCollection = new LayoutHintCollection()
23
24
  ) {
24
25
  this._id = id;
25
26
  this._parameters = parameters;
26
27
  this._defaultMessage = defaultMessage;
27
28
  this._isClientConstraint = isClientConstraint;
28
- this._layouthint = new LayoutHintCollection();
29
+ this._layouthint = Array.isArray(layouthint)
30
+ ? new LayoutHintCollection(layouthint)
31
+ : layouthint;
29
32
  }
30
33
 
31
34
  /**
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"ErrorModel.js","names":["ErrorModel","constructor","id","defaultMessage","parameters","isClientConstraint","layouthint","LayoutHintCollection","_id","_parameters","_defaultMessage","_isClientConstraint","_layouthint","Array","isArray","isMandatoryConstraint"],"sources":["../../../src/models/error/ErrorModel.js"],"sourcesContent":["// @flow\nimport type { MessageParameters } from \"../../i18n/types\";\nimport LayoutHintCollection from \"../layouthint/LayoutHintCollection\";\n\n/**\n * Wrapper around an error message / object\n */\nclass ErrorModel {\n _id: string;\n _defaultMessage: ?string;\n _parameters: ?MessageParameters;\n _isClientConstraint: boolean;\n _layouthint: LayoutHintCollection;\n\n /**\n * Contruct\n */\n constructor(\n id: string,\n defaultMessage: ?string,\n parameters: ?MessageParameters,\n isClientConstraint: boolean = false,\n layouthint: LayoutHintCollection = new LayoutHintCollection()\n ) {\n this._id = id;\n this._parameters = parameters;\n this._defaultMessage = defaultMessage;\n this._isClientConstraint = isClientConstraint;\n this._layouthint = Array.isArray(layouthint)\n ? new LayoutHintCollection(layouthint)\n : layouthint;\n }\n\n /**\n * Get id of error\n */\n get id(): string {\n return this._id;\n }\n\n /**\n */\n get defaultMessage(): ?string {\n return this._defaultMessage;\n }\n\n /**\n */\n get parameters(): ?MessageParameters {\n return this._parameters;\n }\n\n /**\n */\n get isClientConstraint(): boolean {\n return this._isClientConstraint || false;\n }\n\n /**\n */\n get layouthint(): LayoutHintCollection {\n return this._layouthint;\n }\n\n /**\n */\n get isMandatoryConstraint(): boolean {\n return this.id === \"Constraint.Mandatory\";\n }\n}\n\nexport default ErrorModel;\n"],"mappings":";;;;;;;;;;;AAEA;;AAEA;AACA;AACA;AACA,MAAMA,UAAN,CAAiB;EAOf;AACF;AACA;EACEC,WAAW,CACTC,EADS,EAETC,cAFS,EAGTC,UAHS,EAMT;IAAA,IAFAC,kBAEA,uEAF8B,KAE9B;IAAA,IADAC,UACA,uEADmC,IAAIC,6BAAJ,EACnC;IAAA;IAAA;IAAA;IAAA;IAAA;IACA,KAAKC,GAAL,GAAWN,EAAX;IACA,KAAKO,WAAL,GAAmBL,UAAnB;IACA,KAAKM,eAAL,GAAuBP,cAAvB;IACA,KAAKQ,mBAAL,GAA2BN,kBAA3B;IACA,KAAKO,WAAL,GAAmBC,KAAK,CAACC,OAAN,CAAcR,UAAd,IACf,IAAIC,6BAAJ,CAAyBD,UAAzB,CADe,GAEfA,UAFJ;EAGD;EAED;AACF;AACA;;;EACQ,IAAFJ,EAAE,GAAW;IACf,OAAO,KAAKM,GAAZ;EACD;EAED;AACF;;;EACoB,IAAdL,cAAc,GAAY;IAC5B,OAAO,KAAKO,eAAZ;EACD;EAED;AACF;;;EACgB,IAAVN,UAAU,GAAuB;IACnC,OAAO,KAAKK,WAAZ;EACD;EAED;AACF;;;EACwB,IAAlBJ,kBAAkB,GAAY;IAChC,OAAO,KAAKM,mBAAL,IAA4B,KAAnC;EACD;EAED;AACF;;;EACgB,IAAVL,UAAU,GAAyB;IACrC,OAAO,KAAKM,WAAZ;EACD;EAED;AACF;;;EAC2B,IAArBG,qBAAqB,GAAY;IACnC,OAAO,KAAKb,EAAL,KAAY,sBAAnB;EACD;;AA7Dc;;eAgEFF,U"}
@@ -139,9 +139,9 @@ class ErrorResponse {
139
139
 
140
140
 
141
141
  get redirectText() {
142
- var _this$response$redire;
142
+ var _this$response, _this$response$redire;
143
143
 
144
- return ((_this$response$redire = this.response.redirect) === null || _this$response$redire === void 0 ? void 0 : _this$response$redire.text) || null;
144
+ return ((_this$response = this.response) === null || _this$response === void 0 ? void 0 : (_this$response$redire = _this$response.redirect) === null || _this$response$redire === void 0 ? void 0 : _this$response$redire.text) || null;
145
145
  }
146
146
  /**
147
147
  * Return response error redirect text id
@@ -182,7 +182,9 @@ class ErrorResponse {
182
182
  var _this$response$redire8;
183
183
 
184
184
  if ((_this$response$redire8 = this.response.redirect) !== null && _this$response$redire8 !== void 0 && _this$response$redire8.href) {
185
- return new _Href.default(this.response.redirect.href);
185
+ var _this$response$redire9;
186
+
187
+ return new _Href.default((_this$response$redire9 = this.response.redirect) === null || _this$response$redire9 === void 0 ? void 0 : _this$response$redire9.href);
186
188
  }
187
189
 
188
190
  return new _Href.default();
@@ -193,14 +195,18 @@ class ErrorResponse {
193
195
 
194
196
 
195
197
  get layouthint() {
196
- return new _LayoutHintCollection.default(this.response.layouthint);
198
+ var _this$response2;
199
+
200
+ return new _LayoutHintCollection.default((_this$response2 = this.response) === null || _this$response2 === void 0 ? void 0 : _this$response2.layouthint);
197
201
  }
198
202
  /**
199
203
  */
200
204
 
201
205
 
202
206
  get response() {
203
- return this.error.response.error || {};
207
+ var _this$error, _this$error$response;
208
+
209
+ return ((_this$error = this.error) === null || _this$error === void 0 ? void 0 : (_this$error$response = _this$error.response) === null || _this$error$response === void 0 ? void 0 : _this$error$response.error) || {};
204
210
  }
205
211
  /**
206
212
  */
@@ -133,7 +133,7 @@ export default class ErrorResponse {
133
133
  * Return response error redirect text
134
134
  */
135
135
  get redirectText(): RedirectTextObject {
136
- return this.response.redirect?.text || null;
136
+ return this.response?.redirect?.text || null;
137
137
  }
138
138
 
139
139
  /**
@@ -162,7 +162,7 @@ export default class ErrorResponse {
162
162
  */
163
163
  get redirectHref(): Href {
164
164
  if (this.response.redirect?.href) {
165
- return new Href(this.response.redirect.href);
165
+ return new Href(this.response.redirect?.href);
166
166
  }
167
167
  return new Href();
168
168
  }
@@ -171,13 +171,13 @@ export default class ErrorResponse {
171
171
  * Return error response layouthint
172
172
  */
173
173
  get layouthint(): LayoutHintCollection {
174
- return new LayoutHintCollection(this.response.layouthint);
174
+ return new LayoutHintCollection(this.response?.layouthint);
175
175
  }
176
176
 
177
177
  /**
178
178
  */
179
179
  get response(): Object {
180
- return this.error.response.error || {};
180
+ return this.error?.response?.error || {};
181
181
  }
182
182
 
183
183
  /**
@@ -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","responseMessage","response","title","titleMessage","undefined","titleId","titleProperties","properties","redirect","redirectText","text","redirectTextID","redirectTextProperties","redirectMessage","redirectHref","href","Href","layouthint","LayoutHintCollection","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 response error message\n */\n get responseMessage(): string {\n return this.response.message || this.id;\n }\n\n /**\n * Return response error title\n */\n get title(): TitleObject {\n return this.response.title || null;\n }\n\n /**\n * Return response error title message\n */\n get titleMessage(): string {\n return this.response.title?.message || undefined;\n }\n\n /**\n * Return response error title Id\n */\n get titleId(): string {\n return this.response.title?.id || undefined;\n }\n\n /**\n * Return response error title properties\n */\n get titleProperties(): Object {\n return this.response.title?.properties || null;\n }\n\n /**\n * Return response error redirect\n */\n get redirect(): RedirectObject {\n return this.response.redirect || null;\n }\n /**\n * Return response error redirect text\n */\n get redirectText(): RedirectTextObject {\n return this.response.redirect?.text || null;\n }\n\n /**\n * Return response error redirect text id\n */\n get redirectTextID(): string {\n return this.response.redirect?.text?.id || undefined;\n }\n\n /**\n * Return response error redirect text properties\n */\n get redirectTextProperties(): Object {\n return this.response.redirect?.text?.properties || null;\n }\n\n /**\n * Return response error redirect text message\n */\n get redirectMessage(): string {\n return this.response.redirect?.text?.message || undefined;\n }\n\n /**\n * Return response error redirect href\n */\n get redirectHref(): Href {\n if (this.response.redirect?.href) {\n return new Href(this.response.redirect.href);\n }\n return new Href();\n }\n\n /**\n * Return error response layouthint\n */\n get layouthint(): LayoutHintCollection {\n return new LayoutHintCollection(this.response.layouthint);\n }\n\n /**\n */\n get response(): Object {\n return this.error.response.error || {};\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","responseMessage","response","title","titleMessage","undefined","titleId","titleProperties","properties","redirect","redirectText","text","redirectTextID","redirectTextProperties","redirectMessage","redirectHref","href","Href","layouthint","LayoutHintCollection","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 response error message\n */\n get responseMessage(): string {\n return this.response.message || this.id;\n }\n\n /**\n * Return response error title\n */\n get title(): TitleObject {\n return this.response.title || null;\n }\n\n /**\n * Return response error title message\n */\n get titleMessage(): string {\n return this.response.title?.message || undefined;\n }\n\n /**\n * Return response error title Id\n */\n get titleId(): string {\n return this.response.title?.id || undefined;\n }\n\n /**\n * Return response error title properties\n */\n get titleProperties(): Object {\n return this.response.title?.properties || null;\n }\n\n /**\n * Return response error redirect\n */\n get redirect(): RedirectObject {\n return this.response.redirect || null;\n }\n /**\n * Return response error redirect text\n */\n get redirectText(): RedirectTextObject {\n return this.response?.redirect?.text || null;\n }\n\n /**\n * Return response error redirect text id\n */\n get redirectTextID(): string {\n return this.response.redirect?.text?.id || undefined;\n }\n\n /**\n * Return response error redirect text properties\n */\n get redirectTextProperties(): Object {\n return this.response.redirect?.text?.properties || null;\n }\n\n /**\n * Return response error redirect text message\n */\n get redirectMessage(): string {\n return this.response.redirect?.text?.message || undefined;\n }\n\n /**\n * Return response error redirect href\n */\n get redirectHref(): Href {\n if (this.response.redirect?.href) {\n return new Href(this.response.redirect?.href);\n }\n return new Href();\n }\n\n /**\n * Return error response layouthint\n */\n get layouthint(): LayoutHintCollection {\n return new LayoutHintCollection(this.response?.layouthint);\n }\n\n /**\n */\n get response(): Object {\n return this.error?.response?.error || {};\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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"}
@@ -49,6 +49,8 @@ var _Settings = require("../../constants/Settings");
49
49
 
50
50
  var _LayoutHints = require("../../constants/LayoutHints");
51
51
 
52
+ var _LayoutHintCollection = _interopRequireDefault(require("../layouthint/LayoutHintCollection"));
53
+
52
54
  /**
53
55
  */
54
56
  class FormModel extends _ResourceModel.default {
@@ -549,9 +551,9 @@ class FormModel extends _ResourceModel.default {
549
551
 
550
552
  addServerError(error) {
551
553
  if (error.parameters) {
552
- this.errorCollection.addServerError(error.id, error.message, error.parameters);
554
+ this.errorCollection.addServerError(error.id, error.layouthint, error.message, error.parameters);
553
555
  } else {
554
- this.errorCollection.addServerError(error.id, error.message);
556
+ this.errorCollection.addServerError(error.id, error.layouthint, error.message);
555
557
  }
556
558
  }
557
559
  /**
@@ -1034,7 +1036,7 @@ class FormModel extends _ResourceModel.default {
1034
1036
  if (error.anchor && this.currentFormObject && this.currentFormObject.key === error.anchor.objectid) {
1035
1037
  this.currentFormObject.addServerError(error);
1036
1038
  } else {
1037
- this.errorCollection.addServerError(error.id, error.message, error.properties);
1039
+ this.errorCollection.addServerError(error.id, new _LayoutHintCollection.default(error.layouthint), error.message, error.properties);
1038
1040
  }
1039
1041
  });
1040
1042
  }
@@ -26,6 +26,7 @@ import type { AttributeType, ModularUIModel } from "../types";
26
26
  import type { ModularUIResponse } from "../../modularui";
27
27
  import type ErrorResponse from "../error/ErrorResponse";
28
28
  import type LinkModel from "../links/LinkModel";
29
+ import LayoutHintCollection from "../layouthint/LayoutHintCollection";
29
30
 
30
31
  /**
31
32
  */
@@ -512,11 +513,16 @@ class FormModel extends ResourceModel {
512
513
  if (error.parameters) {
513
514
  this.errorCollection.addServerError(
514
515
  error.id,
516
+ error.layouthint,
515
517
  error.message,
516
518
  error.parameters
517
519
  );
518
520
  } else {
519
- this.errorCollection.addServerError(error.id, error.message);
521
+ this.errorCollection.addServerError(
522
+ error.id,
523
+ error.layouthint,
524
+ error.message
525
+ );
520
526
  }
521
527
  }
522
528
 
@@ -1018,6 +1024,7 @@ class FormModel extends ResourceModel {
1018
1024
  } else {
1019
1025
  this.errorCollection.addServerError(
1020
1026
  error.id,
1027
+ new LayoutHintCollection(error.layouthint),
1021
1028
  error.message,
1022
1029
  error.properties
1023
1030
  );