@beinformed/ui 1.30.0 → 1.30.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 (36) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/esm/models/attributes/BooleanAttributeModel.js +1 -1
  3. package/esm/models/attributes/BooleanAttributeModel.js.map +1 -1
  4. package/esm/models/attributes/layouthint-rules/BaseLayoutHintRule.js +5 -6
  5. package/esm/models/attributes/layouthint-rules/BaseLayoutHintRule.js.map +1 -1
  6. package/esm/models/attributes/layouthint-rules/DependentAttribute.js +2 -0
  7. package/esm/models/attributes/layouthint-rules/DependentAttribute.js.map +1 -1
  8. package/esm/models/error/ErrorResponse.js +6 -0
  9. package/esm/models/error/ErrorResponse.js.map +1 -1
  10. package/esm/models/form/FormModel.js +30 -3
  11. package/esm/models/form/FormModel.js.map +1 -1
  12. package/esm/utils/number/DecimalFormat.js +4 -8
  13. package/esm/utils/number/DecimalFormat.js.map +1 -1
  14. package/lib/models/attributes/BooleanAttributeModel.js +1 -1
  15. package/lib/models/attributes/BooleanAttributeModel.js.flow +1 -1
  16. package/lib/models/attributes/BooleanAttributeModel.js.map +1 -1
  17. package/lib/models/attributes/__tests__/BooleanAttributeModel.spec.js.flow +14 -0
  18. package/lib/models/attributes/layouthint-rules/BaseLayoutHintRule.js +5 -6
  19. package/lib/models/attributes/layouthint-rules/BaseLayoutHintRule.js.map +1 -1
  20. package/lib/models/attributes/layouthint-rules/DependentAttribute.js +2 -0
  21. package/lib/models/attributes/layouthint-rules/DependentAttribute.js.map +1 -1
  22. package/lib/models/error/ErrorResponse.js +6 -0
  23. package/lib/models/error/ErrorResponse.js.map +1 -1
  24. package/lib/models/form/FormModel.js +30 -3
  25. package/lib/models/form/FormModel.js.flow +32 -4
  26. package/lib/models/form/FormModel.js.map +1 -1
  27. package/lib/models/form/__tests__/FormModel.spec.js.flow +4 -0
  28. package/lib/utils/number/DecimalFormat.js +4 -8
  29. package/lib/utils/number/DecimalFormat.js.map +1 -1
  30. package/package.json +12 -12
  31. package/src/models/attributes/BooleanAttributeModel.js +1 -1
  32. package/src/models/attributes/__tests__/BooleanAttributeModel.spec.js +14 -0
  33. package/src/models/form/FormModel.js +32 -4
  34. package/src/models/form/__tests__/FormModel.spec.js +4 -0
  35. package/types/models/form/FormModel.d.ts +23 -0
  36. package/types/models/index.d.ts +2 -1
@@ -1 +1 @@
1
- {"version":3,"file":"BaseLayoutHintRule.js","names":["_exceptions","require","BaseLayoutHintRule","isApplicableForAttribute","attribute","isApplicableForHint","hint","IllegalStateException","initAttribute","initHint","process","attributes","_defineProperty2","default","_default","exports"],"sources":["../../../../src/models/attributes/layouthint-rules/BaseLayoutHintRule.js"],"sourcesContent":["// @flow\n/* eslint-disable no-unused-vars */\n\nimport { IllegalStateException } from \"../../../exceptions\";\n\nimport type { ILayoutHintRule, AttributeType } from \"../../types\";\nimport type AttributeCollection from \"../AttributeCollection\";\nimport type AttributeModel from \"../AttributeModel\";\n\n/**\n * Abstract class for layout hint rules\n * @abstract\n */\nclass BaseLayoutHintRule implements ILayoutHintRule {\n /**\n * Indicates if the rule implements the isApplicableForHint method\n * @type {boolean}\n * @default false\n */\n static checkHintApplicability: boolean = false;\n\n /**\n * Indicates if the rule instance is applicable for a specific attribute<br>\n * @default true\n */\n static isApplicableForAttribute(attribute: AttributeType): boolean {\n return true;\n }\n\n /**\n * Indicates if the rule instance is applicable for a specific hint<br>\n * Is required when checkHintApplicability is true\n * @abstract\n */\n static isApplicableForHint(hint: string): boolean {\n throw new IllegalStateException(\n `Missing isApplicableForHint implementation on layout hint rule`\n );\n }\n\n /**\n * Initialize the rule when isApplicableForAttribute is true and checkHintApplicability is false\n * @abstract\n */\n static initAttribute(attribute: AttributeType): ILayoutHintRule {\n throw new IllegalStateException(\n `Missing initAttribute implementation on layout hint rule`\n );\n }\n\n /**\n * Initialize the rule when isApplicableForAttribute and isApplicableForHint are both true,\n * it receives the hint. Allows a rule to be instantiated multiple times for an attribute,\n * but once for each hint entry\n * @abstract\n */\n static initHint(hint: string): ILayoutHintRule {\n throw new IllegalStateException(\n `Missing initHint implementation on layout hint rule`\n );\n }\n\n /**\n * Abstract method, implements process of layout hint rule,\n * use this to enhance the applicable attribute or the attribute collection\n * @abstract\n */\n process(attribute: AttributeModel, attributes: AttributeCollection): void {\n throw new IllegalStateException(\n `Missing process implementation on layout hint rule`\n );\n }\n}\n\nexport default BaseLayoutHintRule;\n"],"mappings":";;;;;;;;AAGA,IAAAA,WAAA,GAAAC,OAAA;AAFA;AAQA;AACA;AACA;AACA;AACA,MAAMC,kBAAkB,CAA4B;EAClD;AACF;AACA;AACA;AACA;;EAGE;AACF;AACA;AACA;EACE,OAAOC,wBAAwBA,CAACC,SAAwB,EAAW;IACjE,OAAO,IAAI;EACb;;EAEA;AACF;AACA;AACA;AACA;EACE,OAAOC,mBAAmBA,CAACC,IAAY,EAAW;IAChD,MAAM,IAAIC,iCAAqB,CAC5B,gEAA+D,CACjE;EACH;;EAEA;AACF;AACA;AACA;EACE,OAAOC,aAAaA,CAACJ,SAAwB,EAAmB;IAC9D,MAAM,IAAIG,iCAAqB,CAC5B,0DAAyD,CAC3D;EACH;;EAEA;AACF;AACA;AACA;AACA;AACA;EACE,OAAOE,QAAQA,CAACH,IAAY,EAAmB;IAC7C,MAAM,IAAIC,iCAAqB,CAC5B,qDAAoD,CACtD;EACH;;EAEA;AACF;AACA;AACA;AACA;EACEG,OAAOA,CAACN,SAAyB,EAAEO,UAA+B,EAAQ;IACxE,MAAM,IAAIJ,iCAAqB,CAC5B,oDAAmD,CACrD;EACH;AACF;AAAC,IAAAK,gBAAA,CAAAC,OAAA,EA3DKX,kBAAkB,4BAMmB,KAAK;AAAA,IAAAY,QAAA,GAuDjCZ,kBAAkB;AAAAa,OAAA,CAAAF,OAAA,GAAAC,QAAA"}
1
+ {"version":3,"file":"BaseLayoutHintRule.js","names":["_exceptions","require","BaseLayoutHintRule","isApplicableForAttribute","attribute","isApplicableForHint","hint","IllegalStateException","initAttribute","initHint","process","attributes","_defineProperty2","default","_default","exports"],"sources":["../../../../src/models/attributes/layouthint-rules/BaseLayoutHintRule.js"],"sourcesContent":["// @flow\n/* eslint-disable no-unused-vars */\n\nimport { IllegalStateException } from \"../../../exceptions\";\n\nimport type { ILayoutHintRule, AttributeType } from \"../../types\";\nimport type AttributeCollection from \"../AttributeCollection\";\nimport type AttributeModel from \"../AttributeModel\";\n\n/**\n * Abstract class for layout hint rules\n * @abstract\n */\nclass BaseLayoutHintRule implements ILayoutHintRule {\n /**\n * Indicates if the rule implements the isApplicableForHint method\n * @type {boolean}\n * @default false\n */\n static checkHintApplicability: boolean = false;\n\n /**\n * Indicates if the rule instance is applicable for a specific attribute<br>\n * @default true\n */\n static isApplicableForAttribute(attribute: AttributeType): boolean {\n return true;\n }\n\n /**\n * Indicates if the rule instance is applicable for a specific hint<br>\n * Is required when checkHintApplicability is true\n * @abstract\n */\n static isApplicableForHint(hint: string): boolean {\n throw new IllegalStateException(\n `Missing isApplicableForHint implementation on layout hint rule`\n );\n }\n\n /**\n * Initialize the rule when isApplicableForAttribute is true and checkHintApplicability is false\n * @abstract\n */\n static initAttribute(attribute: AttributeType): ILayoutHintRule {\n throw new IllegalStateException(\n `Missing initAttribute implementation on layout hint rule`\n );\n }\n\n /**\n * Initialize the rule when isApplicableForAttribute and isApplicableForHint are both true,\n * it receives the hint. Allows a rule to be instantiated multiple times for an attribute,\n * but once for each hint entry\n * @abstract\n */\n static initHint(hint: string): ILayoutHintRule {\n throw new IllegalStateException(\n `Missing initHint implementation on layout hint rule`\n );\n }\n\n /**\n * Abstract method, implements process of layout hint rule,\n * use this to enhance the applicable attribute or the attribute collection\n * @abstract\n */\n process(attribute: AttributeModel, attributes: AttributeCollection): void {\n throw new IllegalStateException(\n `Missing process implementation on layout hint rule`\n );\n }\n}\n\nexport default BaseLayoutHintRule;\n"],"mappings":";;;;;;;;AAGA,IAAAA,WAAA,GAAAC,OAAA;AAFA;AAQA;AACA;AACA;AACA;AACA,MAAMC,kBAAkB,CAA4B;EAQlD;AACF;AACA;AACA;EACE,OAAOC,wBAAwBA,CAACC,SAAwB,EAAW;IACjE,OAAO,IAAI;EACb;;EAEA;AACF;AACA;AACA;AACA;EACE,OAAOC,mBAAmBA,CAACC,IAAY,EAAW;IAChD,MAAM,IAAIC,iCAAqB,CAC5B,gEAA+D,CACjE;EACH;;EAEA;AACF;AACA;AACA;EACE,OAAOC,aAAaA,CAACJ,SAAwB,EAAmB;IAC9D,MAAM,IAAIG,iCAAqB,CAC5B,0DAAyD,CAC3D;EACH;;EAEA;AACF;AACA;AACA;AACA;AACA;EACE,OAAOE,QAAQA,CAACH,IAAY,EAAmB;IAC7C,MAAM,IAAIC,iCAAqB,CAC5B,qDAAoD,CACtD;EACH;;EAEA;AACF;AACA;AACA;AACA;EACEG,OAAOA,CAACN,SAAyB,EAAEO,UAA+B,EAAQ;IACxE,MAAM,IAAIJ,iCAAqB,CAC5B,oDAAmD,CACrD;EACH;AACF;AA1DE;AACF;AACA;AACA;AACA;AAJE,IAAAK,gBAAA,CAAAC,OAAA,EADIX,kBAAkB,4BAMmB,KAAK;AAAA,IAAAY,QAAA,GAuDjCZ,kBAAkB;AAAAa,OAAA,CAAAF,OAAA,GAAAC,QAAA"}
@@ -193,6 +193,8 @@ class DependentAttribute extends _BaseLayoutHintRule.default {
193
193
  }
194
194
  }
195
195
  }
196
+ /**
197
+ */
196
198
  (0, _defineProperty2.default)(DependentAttribute, "checkHintApplicability", true);
197
199
  var _default = DependentAttribute;
198
200
  exports.default = _default;
@@ -1 +1 @@
1
- {"version":3,"file":"DependentAttribute.js","names":["_BaseLayoutHintRule","_interopRequireDefault","require","_constants","_ChoiceAttributeModel","_BooleanAttributeModel","_exceptions","EQUALS","INCLUDES","NOT_EQUALS","NOT_INCLUDES","NOT_IS_EMPTY","IS_EMPTY","SHOW","HIDE","DependentAttribute","BaseLayoutHintRule","constructor","arguments","_defineProperty2","default","isApplicableForHint","hint","regex","RegExp","DEPENDENT_ATTRIBUTE","test","getRuleInstance","initHint","rule","OPERATORS","DEPENDENT_ATTRIBUTE_CONTROL","isEmpyNotIsEmptRegex","result","match","action","control","operator","options","ConfigurationException","_action","_control","_operator","_options","_context","_map","split","call","option","_trim","processEqualsOptions","controlAttribute","ChoiceAttributeModel","BooleanAttributeModel","every","_context2","_includes","selected","processIncludesOptions","some","_context3","handleOperator","length","getControlAttribute","attributes","attribute","getAttributeByLayoutHint","process","processLayoutHintRules","isHidden","hide","label","_default","exports"],"sources":["../../../../src/models/attributes/layouthint-rules/DependentAttribute.js"],"sourcesContent":["// @flow\nimport BaseLayoutHintRule from \"./BaseLayoutHintRule\";\n\nimport {\n DEPENDENT_ATTRIBUTE_CONTROL,\n DEPENDENT_ATTRIBUTE,\n} from \"../../../constants\";\n\nimport ChoiceAttributeModel from \"../ChoiceAttributeModel\";\nimport BooleanAttributeModel from \"../BooleanAttributeModel\";\n\nimport { ConfigurationException } from \"../../../exceptions\";\n\nimport type AttributeCollection from \"../AttributeCollection\";\nimport type AttributeModel from \"../AttributeModel\";\n\nconst EQUALS = \"equals\";\nconst INCLUDES = \"includes\";\nconst NOT_EQUALS = \"notEquals\";\nconst NOT_INCLUDES = \"notIncludes\";\nconst NOT_IS_EMPTY = \"notIsEmpty\";\nconst IS_EMPTY = \"isEmpty\";\n\nconst SHOW = \"show\";\nconst HIDE = \"hide\";\n\n/**\n * Depending attributes hint logic\n */\nclass DependentAttribute extends BaseLayoutHintRule {\n _action: string;\n _control: string;\n _operator: string;\n _options: Array<string>;\n\n /**\n */\n static checkHintApplicability: boolean = true;\n\n /**\n */\n static isApplicableForHint(hint: string): boolean {\n const regex = new RegExp(\n `^${DEPENDENT_ATTRIBUTE}\\\\s?(${SHOW}|${HIDE})`,\n \"i\"\n );\n\n return regex.test(hint);\n }\n\n /**\n * Used on initHint to create an instance of this rule\n */\n static getRuleInstance(): DependentAttribute {\n return new DependentAttribute();\n }\n\n /**\n */\n static initHint(hint: string): any {\n const rule = this.getRuleInstance();\n\n const OPERATORS = `${EQUALS}|${INCLUDES}|${NOT_EQUALS}|${NOT_INCLUDES}|${NOT_IS_EMPTY}|${IS_EMPTY}`;\n const regex = new RegExp(\n `${DEPENDENT_ATTRIBUTE}\\\\s?(\\\\S*)\\\\swhen ${DEPENDENT_ATTRIBUTE_CONTROL}:\\\\s?(.*?)\\\\s*(${OPERATORS})\\\\s(.*)`,\n \"i\"\n );\n const isEmpyNotIsEmptRegex = new RegExp(\n `${DEPENDENT_ATTRIBUTE}\\\\s?(\\\\S*)\\\\swhen ${DEPENDENT_ATTRIBUTE_CONTROL}:\\\\s?(.*?)\\\\s*(${OPERATORS})`,\n \"i\"\n );\n\n const result = hint.match(regex)\n ? hint.match(regex)\n : hint.match(isEmpyNotIsEmptRegex);\n\n if (result) {\n rule.action = result[1];\n rule.control = result[2];\n rule.operator = result[3];\n rule.options = !result[4] ? \"\" : result[4];\n } else {\n throw new ConfigurationException(\n `No dependent information found on layout hint: ${hint}`\n );\n }\n\n return rule;\n }\n\n /**\n */\n get action(): string {\n return this._action;\n }\n\n /**\n */\n set action(action: string) {\n this._action = action;\n }\n\n /**\n */\n get control(): string {\n return this._control;\n }\n\n /**\n */\n set control(control: string) {\n this._control = control;\n }\n\n /**\n */\n get operator(): string {\n return this._operator;\n }\n\n /**\n */\n set operator(operator: string) {\n this._operator = operator;\n }\n\n /**\n */\n get options(): Array<string> {\n return this._options;\n }\n\n /**\n */\n set options(options: string): void {\n this._options = options.split(\"|\").map((option) => option.trim());\n }\n\n /**\n */\n processEqualsOptions(\n controlAttribute: ChoiceAttributeModel | BooleanAttributeModel\n ): boolean {\n if (\n controlAttribute instanceof ChoiceAttributeModel ||\n controlAttribute instanceof BooleanAttributeModel\n ) {\n return this.options.every((option) =>\n controlAttribute.selected.includes(option)\n );\n }\n\n throw new ConfigurationException(\n \"Dependent control in combination with equals operator must be a choice, string or number attribute\"\n );\n }\n\n /**\n */\n processIncludesOptions(\n controlAttribute: ChoiceAttributeModel | BooleanAttributeModel\n ): boolean {\n if (controlAttribute instanceof ChoiceAttributeModel) {\n return this.options.some((option) =>\n controlAttribute.selected.includes(option)\n );\n }\n\n throw new ConfigurationException(\n \"Dependent control in combination with includes operator must be a choice attribute\"\n );\n }\n\n /**\n */\n handleOperator(\n controlAttribute: ChoiceAttributeModel | BooleanAttributeModel\n ): boolean {\n switch (this.operator) {\n case EQUALS:\n return this.processEqualsOptions(controlAttribute);\n case INCLUDES:\n return this.processIncludesOptions(controlAttribute);\n case NOT_EQUALS:\n return !this.processEqualsOptions(controlAttribute);\n case NOT_INCLUDES:\n return !this.processIncludesOptions(controlAttribute);\n case NOT_IS_EMPTY:\n return controlAttribute?.selected.length !== 0;\n case IS_EMPTY:\n return controlAttribute?.selected.length === 0;\n default:\n throw new ConfigurationException(\n `Unsupported operator for dependent question: ${this.operator}`\n );\n }\n }\n\n /**\n */\n getControlAttribute(\n attributes: AttributeCollection\n ): ChoiceAttributeModel | BooleanAttributeModel | null {\n const attribute = attributes.getAttributeByLayoutHint(\n `${DEPENDENT_ATTRIBUTE_CONTROL}:${this.control}`,\n `${DEPENDENT_ATTRIBUTE_CONTROL}: ${this.control}`\n );\n\n if (\n attribute instanceof ChoiceAttributeModel ||\n attribute instanceof BooleanAttributeModel\n ) {\n return attribute;\n }\n\n return null;\n }\n\n /**\n */\n process(attribute: AttributeModel, attributes: AttributeCollection): void {\n const controlAttribute = this.getControlAttribute(attributes);\n if (!controlAttribute) {\n return;\n }\n\n controlAttribute.processLayoutHintRules(attributes);\n if (controlAttribute.isHidden) {\n attribute.hide();\n return;\n }\n\n const result = this.handleOperator(controlAttribute);\n if (this.action === SHOW) {\n attribute.isHidden = !result;\n } else if (this.action === HIDE) {\n attribute.isHidden = result;\n } else {\n throw new ConfigurationException(\n `Unsupported action ${this.action} for dependent question on attribute: ${attribute.label}`\n );\n }\n }\n}\n\nexport default DependentAttribute;\n"],"mappings":"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"}
1
+ {"version":3,"file":"DependentAttribute.js","names":["_BaseLayoutHintRule","_interopRequireDefault","require","_constants","_ChoiceAttributeModel","_BooleanAttributeModel","_exceptions","EQUALS","INCLUDES","NOT_EQUALS","NOT_INCLUDES","NOT_IS_EMPTY","IS_EMPTY","SHOW","HIDE","DependentAttribute","BaseLayoutHintRule","constructor","arguments","_defineProperty2","default","isApplicableForHint","hint","regex","RegExp","DEPENDENT_ATTRIBUTE","test","getRuleInstance","initHint","rule","OPERATORS","DEPENDENT_ATTRIBUTE_CONTROL","isEmpyNotIsEmptRegex","result","match","action","control","operator","options","ConfigurationException","_action","_control","_operator","_options","_context","_map","split","call","option","_trim","processEqualsOptions","controlAttribute","ChoiceAttributeModel","BooleanAttributeModel","every","_context2","_includes","selected","processIncludesOptions","some","_context3","handleOperator","length","getControlAttribute","attributes","attribute","getAttributeByLayoutHint","process","processLayoutHintRules","isHidden","hide","label","_default","exports"],"sources":["../../../../src/models/attributes/layouthint-rules/DependentAttribute.js"],"sourcesContent":["// @flow\nimport BaseLayoutHintRule from \"./BaseLayoutHintRule\";\n\nimport {\n DEPENDENT_ATTRIBUTE_CONTROL,\n DEPENDENT_ATTRIBUTE,\n} from \"../../../constants\";\n\nimport ChoiceAttributeModel from \"../ChoiceAttributeModel\";\nimport BooleanAttributeModel from \"../BooleanAttributeModel\";\n\nimport { ConfigurationException } from \"../../../exceptions\";\n\nimport type AttributeCollection from \"../AttributeCollection\";\nimport type AttributeModel from \"../AttributeModel\";\n\nconst EQUALS = \"equals\";\nconst INCLUDES = \"includes\";\nconst NOT_EQUALS = \"notEquals\";\nconst NOT_INCLUDES = \"notIncludes\";\nconst NOT_IS_EMPTY = \"notIsEmpty\";\nconst IS_EMPTY = \"isEmpty\";\n\nconst SHOW = \"show\";\nconst HIDE = \"hide\";\n\n/**\n * Depending attributes hint logic\n */\nclass DependentAttribute extends BaseLayoutHintRule {\n _action: string;\n _control: string;\n _operator: string;\n _options: Array<string>;\n\n /**\n */\n static checkHintApplicability: boolean = true;\n\n /**\n */\n static isApplicableForHint(hint: string): boolean {\n const regex = new RegExp(\n `^${DEPENDENT_ATTRIBUTE}\\\\s?(${SHOW}|${HIDE})`,\n \"i\"\n );\n\n return regex.test(hint);\n }\n\n /**\n * Used on initHint to create an instance of this rule\n */\n static getRuleInstance(): DependentAttribute {\n return new DependentAttribute();\n }\n\n /**\n */\n static initHint(hint: string): any {\n const rule = this.getRuleInstance();\n\n const OPERATORS = `${EQUALS}|${INCLUDES}|${NOT_EQUALS}|${NOT_INCLUDES}|${NOT_IS_EMPTY}|${IS_EMPTY}`;\n const regex = new RegExp(\n `${DEPENDENT_ATTRIBUTE}\\\\s?(\\\\S*)\\\\swhen ${DEPENDENT_ATTRIBUTE_CONTROL}:\\\\s?(.*?)\\\\s*(${OPERATORS})\\\\s(.*)`,\n \"i\"\n );\n const isEmpyNotIsEmptRegex = new RegExp(\n `${DEPENDENT_ATTRIBUTE}\\\\s?(\\\\S*)\\\\swhen ${DEPENDENT_ATTRIBUTE_CONTROL}:\\\\s?(.*?)\\\\s*(${OPERATORS})`,\n \"i\"\n );\n\n const result = hint.match(regex)\n ? hint.match(regex)\n : hint.match(isEmpyNotIsEmptRegex);\n\n if (result) {\n rule.action = result[1];\n rule.control = result[2];\n rule.operator = result[3];\n rule.options = !result[4] ? \"\" : result[4];\n } else {\n throw new ConfigurationException(\n `No dependent information found on layout hint: ${hint}`\n );\n }\n\n return rule;\n }\n\n /**\n */\n get action(): string {\n return this._action;\n }\n\n /**\n */\n set action(action: string) {\n this._action = action;\n }\n\n /**\n */\n get control(): string {\n return this._control;\n }\n\n /**\n */\n set control(control: string) {\n this._control = control;\n }\n\n /**\n */\n get operator(): string {\n return this._operator;\n }\n\n /**\n */\n set operator(operator: string) {\n this._operator = operator;\n }\n\n /**\n */\n get options(): Array<string> {\n return this._options;\n }\n\n /**\n */\n set options(options: string): void {\n this._options = options.split(\"|\").map((option) => option.trim());\n }\n\n /**\n */\n processEqualsOptions(\n controlAttribute: ChoiceAttributeModel | BooleanAttributeModel\n ): boolean {\n if (\n controlAttribute instanceof ChoiceAttributeModel ||\n controlAttribute instanceof BooleanAttributeModel\n ) {\n return this.options.every((option) =>\n controlAttribute.selected.includes(option)\n );\n }\n\n throw new ConfigurationException(\n \"Dependent control in combination with equals operator must be a choice, string or number attribute\"\n );\n }\n\n /**\n */\n processIncludesOptions(\n controlAttribute: ChoiceAttributeModel | BooleanAttributeModel\n ): boolean {\n if (controlAttribute instanceof ChoiceAttributeModel) {\n return this.options.some((option) =>\n controlAttribute.selected.includes(option)\n );\n }\n\n throw new ConfigurationException(\n \"Dependent control in combination with includes operator must be a choice attribute\"\n );\n }\n\n /**\n */\n handleOperator(\n controlAttribute: ChoiceAttributeModel | BooleanAttributeModel\n ): boolean {\n switch (this.operator) {\n case EQUALS:\n return this.processEqualsOptions(controlAttribute);\n case INCLUDES:\n return this.processIncludesOptions(controlAttribute);\n case NOT_EQUALS:\n return !this.processEqualsOptions(controlAttribute);\n case NOT_INCLUDES:\n return !this.processIncludesOptions(controlAttribute);\n case NOT_IS_EMPTY:\n return controlAttribute?.selected.length !== 0;\n case IS_EMPTY:\n return controlAttribute?.selected.length === 0;\n default:\n throw new ConfigurationException(\n `Unsupported operator for dependent question: ${this.operator}`\n );\n }\n }\n\n /**\n */\n getControlAttribute(\n attributes: AttributeCollection\n ): ChoiceAttributeModel | BooleanAttributeModel | null {\n const attribute = attributes.getAttributeByLayoutHint(\n `${DEPENDENT_ATTRIBUTE_CONTROL}:${this.control}`,\n `${DEPENDENT_ATTRIBUTE_CONTROL}: ${this.control}`\n );\n\n if (\n attribute instanceof ChoiceAttributeModel ||\n attribute instanceof BooleanAttributeModel\n ) {\n return attribute;\n }\n\n return null;\n }\n\n /**\n */\n process(attribute: AttributeModel, attributes: AttributeCollection): void {\n const controlAttribute = this.getControlAttribute(attributes);\n if (!controlAttribute) {\n return;\n }\n\n controlAttribute.processLayoutHintRules(attributes);\n if (controlAttribute.isHidden) {\n attribute.hide();\n return;\n }\n\n const result = this.handleOperator(controlAttribute);\n if (this.action === SHOW) {\n attribute.isHidden = !result;\n } else if (this.action === HIDE) {\n attribute.isHidden = result;\n } else {\n throw new ConfigurationException(\n `Unsupported action ${this.action} for dependent question on attribute: ${attribute.label}`\n );\n }\n }\n}\n\nexport default DependentAttribute;\n"],"mappings":"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"}
@@ -8,6 +8,12 @@ exports.default = void 0;
8
8
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
9
9
  var _Href = _interopRequireDefault(require("../href/Href"));
10
10
  var _LayoutHintCollection = _interopRequireDefault(require("../layouthint/LayoutHintCollection"));
11
+ /**
12
+ */
13
+ /**
14
+ */
15
+ /**
16
+ */
11
17
  /**
12
18
  * Error response model
13
19
  */
@@ -1 +1 @@
1
- {"version":3,"file":"ErrorResponse.js","names":["_Href","_interopRequireDefault","require","_LayoutHintCollection","ErrorResponse","constructor","data","connectKey","_defineProperty2","default","_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","isInvalidCredentials","isInvalidUsername","isTimeoutError","isRemoteServiceException","changePasswordHref","isBasicAuthentication","loginFailed","shouldThrowOnServer","exports"],"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 || null;\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.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 isInvalidCredentials(): boolean {\n return this.id === \"Error.Authentication.InvalidCredentials\";\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":["_Href","_interopRequireDefault","require","_LayoutHintCollection","ErrorResponse","constructor","data","connectKey","_defineProperty2","default","_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","isInvalidCredentials","isInvalidUsername","isTimeoutError","isRemoteServiceException","changePasswordHref","isBasicAuthentication","loginFailed","shouldThrowOnServer","exports"],"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 || null;\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.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 isInvalidCredentials(): boolean {\n return this.id === \"Error.Authentication.InvalidCredentials\";\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":";;;;;;;;AACA,IAAAA,KAAA,GAAAC,sBAAA,CAAAC,OAAA;AAGA,IAAAC,qBAAA,GAAAF,sBAAA,CAAAC,OAAA;AAEA;AACA;AAMA;AACA;AAOA;AACA;AAMA;AACA;AACA;AACe,MAAME,aAAa,CAAC;EAIjC;AACF;AACA;EACEC,WAAWA,CAACC,IAAY,EAAEC,UAAmB,EAAE;IAAA,IAAAC,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAC7C,IAAI,CAACC,MAAM,GAAGJ,IAAI;IAClB,IAAI,CAACK,WAAW,GAAGJ,UAAU;EAC/B;;EAEA;AACF;EACE,IAAIA,UAAUA,CAACK,GAAW,EAAE;IAC1B,IAAI,CAACD,WAAW,GAAGC,GAAG;EACxB;;EAEA;AACF;EACE,IAAIL,UAAUA,CAAA,EAAY;IACxB,OAAO,IAAI,CAACI,WAAW;EACzB;;EAEA;AACF;AACA;EACE,IAAIE,KAAKA,CAAA,EAAW;IAClB,OAAO,IAAI,CAACH,MAAM,IAAI,CAAC,CAAC;EAC1B;;EAEA;AACF;AACA;EACE,IAAII,MAAMA,CAAA,EAAW;IACnB,MAAMC,gBAAgB,GAAG,CAAC;IAC1B,MAAMC,aAAa,GAAG,EAAE;IACxB,OAAO,IAAI,CAACH,KAAK,CAACC,MAAM,GACpBG,QAAQ,CAAC,IAAI,CAACJ,KAAK,CAACC,MAAM,EAAEE,aAAa,CAAC,GAC1CD,gBAAgB;EACtB;;EAEA;AACF;AACA;EACE,IAAIG,EAAEA,CAAA,EAAW;IACf,IAAI,IAAI,CAACC,kBAAkB,IAAI,IAAI,CAACN,KAAK,CAACK,EAAE,KAAK,qBAAqB,EAAE;MACtE,OAAO,wBAAwB;IACjC;IAEA,OAAO,IAAI,CAACL,KAAK,CAACK,EAAE,IAAI,IAAI,CAACL,KAAK,CAACO,IAAI,IAAI,oBAAoB;EACjE;;EAEA;AACF;EACE,IAAIC,OAAOA,CAAA,EAAW;IACpB,OAAO,IAAI,CAACR,KAAK,CAACQ,OAAO,IAAI,IAAI,CAACH,EAAE;EACtC;;EAEA;AACF;AACA;EACE,IAAII,eAAeA,CAAA,EAAW;IAC5B,OAAO,IAAI,CAACC,QAAQ,CAACF,OAAO,IAAI,IAAI;EACtC;;EAEA;AACF;AACA;EACE,IAAIG,KAAKA,CAAA,EAAgB;IACvB,OAAO,IAAI,CAACD,QAAQ,CAACC,KAAK,IAAI,IAAI;EACpC;;EAEA;AACF;AACA;EACE,IAAIC,YAAYA,CAAA,EAAW;IACzB,OAAO,IAAI,CAACF,QAAQ,CAACC,KAAK,EAAEH,OAAO,IAAIK,SAAS;EAClD;;EAEA;AACF;AACA;EACE,IAAIC,OAAOA,CAAA,EAAW;IACpB,OAAO,IAAI,CAACJ,QAAQ,CAACC,KAAK,EAAEN,EAAE,IAAIQ,SAAS;EAC7C;;EAEA;AACF;AACA;EACE,IAAIE,eAAeA,CAAA,EAAW;IAC5B,OAAO,IAAI,CAACL,QAAQ,CAACC,KAAK,EAAEK,UAAU,IAAI,IAAI;EAChD;;EAEA;AACF;AACA;EACE,IAAIC,QAAQA,CAAA,EAAmB;IAC7B,OAAO,IAAI,CAACP,QAAQ,CAACO,QAAQ,IAAI,IAAI;EACvC;EACA;AACF;AACA;EACE,IAAIC,YAAYA,CAAA,EAAuB;IACrC,OAAO,IAAI,CAACR,QAAQ,EAAEO,QAAQ,EAAEE,IAAI,IAAI,IAAI;EAC9C;;EAEA;AACF;AACA;EACE,IAAIC,cAAcA,CAAA,EAAW;IAC3B,OAAO,IAAI,CAACV,QAAQ,CAACO,QAAQ,EAAEE,IAAI,EAAEd,EAAE,IAAIQ,SAAS;EACtD;;EAEA;AACF;AACA;EACE,IAAIQ,sBAAsBA,CAAA,EAAW;IACnC,OAAO,IAAI,CAACX,QAAQ,CAACO,QAAQ,EAAEE,IAAI,EAAEH,UAAU,IAAI,IAAI;EACzD;;EAEA;AACF;AACA;EACE,IAAIM,eAAeA,CAAA,EAAW;IAC5B,OAAO,IAAI,CAACZ,QAAQ,CAACO,QAAQ,EAAEE,IAAI,EAAEX,OAAO,IAAIK,SAAS;EAC3D;;EAEA;AACF;AACA;EACE,IAAIU,YAAYA,CAAA,EAAS;IACvB,IAAI,IAAI,CAACb,QAAQ,CAACO,QAAQ,EAAEO,IAAI,EAAE;MAChC,OAAO,IAAIC,aAAI,CAAC,IAAI,CAACf,QAAQ,CAACO,QAAQ,EAAEO,IAAI,CAAC;IAC/C;IACA,OAAO,IAAIC,aAAI,EAAE;EACnB;;EAEA;AACF;AACA;EACE,IAAIC,UAAUA,CAAA,EAAyB;IACrC,OAAO,IAAIC,6BAAoB,CAAC,IAAI,CAACjB,QAAQ,EAAEgB,UAAU,CAAC;EAC5D;;EAEA;AACF;EACE,IAAIhB,QAAQA,CAAA,EAAW;IACrB,OAAO,IAAI,CAACV,KAAK,EAAEU,QAAQ,EAAEV,KAAK,IAAI,CAAC,CAAC;EAC1C;;EAEA;AACF;EACE,IAAIgB,UAAUA,CAAA,EAAW;IACvB,MAAM;MAAEA;IAAW,CAAC,GAAG,IAAI,CAAChB,KAAK;IACjC,IAAIgB,UAAU,IAAI,IAAI,IAAI,OAAOA,UAAU,IAAI,QAAQ,EAAE;MACvD,OAAOA,UAAU;IACnB;IAEA,OAAO,CAAC,CAAC;EACX;;EAEA;AACF;AACA;EACE,IAAIY,UAAUA,CAAA,EAAuB;IACnC,OAAO,IAAI,CAAC5B,KAAK,CAAC4B,UAAU,IAAI,IAAI;EACtC;;EAEA;AACF;EACE,IAAItB,kBAAkBA,CAAA,EAAY;IAChC,MAAMuB,gCAAgC,GAAG,GAAG;IAE5C,OAAO,IAAI,CAAC5B,MAAM,KAAK4B,gCAAgC;EACzD;;EAEA;AACF;EACE,IAAIC,6BAA6BA,CAAA,EAAY;IAC3C,OAAO,IAAI,CAACxB,kBAAkB,IAAI,IAAI,CAACN,KAAK,CAAC+B,QAAQ;EACvD;;EAEA;AACF;AACA;EACE,IAAIC,cAAcA,CAAA,EAAY;IAC5B,MAAMC,0BAA0B,GAAG,GAAG;IAEtC,MAAMC,qBAAqB,GAAG,IAAI,CAACjC,MAAM,KAAKgC,0BAA0B;IACxE,MAAME,sBAAsB,GAC1B,IAAI,CAAC9B,EAAE,KAAK,qBAAqB,IACjC,IAAI,CAACA,EAAE,KAAK,+BAA+B,IAC3C,IAAI,CAACA,EAAE,KAAK,yCAAyC;IAEvD,MAAM+B,cAAc,GAAG,IAAI,CAACpC,KAAK,CAACqC,MAAM,GACpC,IAAI,CAACrC,KAAK,CAACqC,MAAM,CAAC9B,IAAI,KAAK,OAAO,GAClC,KAAK;IAET,OAAO2B,qBAAqB,IAAIC,sBAAsB,IAAIC,cAAc;EAC1E;;EAEA;AACF;EACE,IAAIE,gBAAgBA,CAAA,EAAY;IAC9B,OAAO,IAAI,CAACjC,EAAE,KAAK,8BAA8B;EACnD;;EAEA;AACF;EACE,IAAIkC,gBAAgBA,CAAA,EAAY;IAC9B,OAAO,IAAI,CAAClC,EAAE,KAAK,qCAAqC;EAC1D;;EAEA;AACF;EACE,IAAImC,iBAAiBA,CAAA,EAAY;IAC/B,OACE,IAAI,CAACnC,EAAE,KAAK,mCAAmC,IAC/C,IAAI,CAACA,EAAE,KAAK,wCAAwC,IACpD,IAAI,CAACA,EAAE,KAAK,qCAAqC,IACjD,IAAI,CAACA,EAAE,KAAK,mCAAmC;EAEnD;;EAEA;AACF;EACE,IAAIoC,SAASA,CAAA,EAAY;IACvB,OAAO,IAAI,CAACpC,EAAE,KAAK,kCAAkC;EACvD;;EAEA;AACF;EACE,IAAIqC,oBAAoBA,CAAA,EAAY;IAClC,OAAO,IAAI,CAACrC,EAAE,KAAK,yCAAyC;EAC9D;;EAEA;AACF;EACE,IAAIsC,iBAAiBA,CAAA,EAAY;IAC/B,OAAO,IAAI,CAACtC,EAAE,KAAK,sCAAsC;EAC3D;;EAEA;AACF;EACE,IAAIuC,cAAcA,CAAA,EAAY;IAC5B,OAAO,IAAI,CAACvC,EAAE,KAAK,kCAAkC;EACvD;;EAEA;AACF;AACA;AACA;EACE,IAAIwC,wBAAwBA,CAAA,EAAY;IACtC,OAAO,IAAI,CAACxC,EAAE,KAAK,8BAA8B;EACnD;;EAEA;AACF;AACA;EACE,IAAIyC,kBAAkBA,CAAA,EAAU;IAC9B,OAAO,IAAI,CAAC9B,UAAU,CAACC,QAAQ,GAAG,IAAIQ,aAAI,CAAC,IAAI,CAACT,UAAU,CAACC,QAAQ,CAAC,GAAG,IAAI;EAC7E;;EAEA;AACF;AACA;EACE,IAAI8B,qBAAqBA,CAAA,EAAY;IACnC,MAAMd,0BAA0B,GAAG,GAAG;IACtC,OACE,IAAI,CAACD,cAAc,IACnB,IAAI,CAAC/B,MAAM,KAAKgC,0BAA0B,IAC1C,IAAI,CAACvB,QAAQ,CAACV,KAAK,KAAK,iBAAiB;EAE7C;;EAEA;AACF;AACA;EACE,IAAIgD,WAAWA,CAAA,EAAY;IACzB,OACE,IAAI,CAAC3C,EAAE,KAAK,+BAA+B,IAC3C,IAAI,CAACA,EAAE,KAAK,yCAAyC;EAEzD;;EAEA;AACF;EACE,IAAI4C,mBAAmBA,CAAA,EAAY;IACjC,OAAO,CAAC,IAAI,CAACX,gBAAgB,IAAI,CAAC,IAAI,CAACG,SAAS,IAAI,CAAC,IAAI,CAACF,gBAAgB;EAC5E;AACF;AAACW,OAAA,CAAAtD,OAAA,GAAAL,aAAA"}
@@ -48,6 +48,7 @@ class FormModel extends _ResourceModel.default {
48
48
  (0, _defineProperty2.default)(this, "_commit", void 0);
49
49
  (0, _defineProperty2.default)(this, "_isFinished", void 0);
50
50
  (0, _defineProperty2.default)(this, "_isComplete", void 0);
51
+ (0, _defineProperty2.default)(this, "_success", void 0);
51
52
  (0, _defineProperty2.default)(this, "_parameters", void 0);
52
53
  (0, _defineProperty2.default)(this, "_tokens", void 0);
53
54
  this.lastUpdate = 0;
@@ -58,6 +59,7 @@ class FormModel extends _ResourceModel.default {
58
59
  if (this.data.errors) {
59
60
  this.handleRootErrors(this.data.errors);
60
61
  }
62
+ this.createSuccess();
61
63
  }
62
64
 
63
65
  /**
@@ -493,7 +495,7 @@ class FormModel extends _ResourceModel.default {
493
495
  * Inidicates if form is finished: Form is completely entered and committed
494
496
  */
495
497
  get isFinished() {
496
- return this._isFinished || "success" in this.data;
498
+ return this._isFinished || this.success != undefined;
497
499
  }
498
500
 
499
501
  /**
@@ -519,7 +521,7 @@ class FormModel extends _ResourceModel.default {
519
521
  * Handle success redirects
520
522
  */
521
523
  get successRedirect() {
522
- return this.isFinished && this.data.success ? new _Href.default(this.data.success.redirect) : null;
524
+ return this.isFinished && this.success ? new _Href.default(this.success.redirect) : null;
523
525
  }
524
526
 
525
527
  /**
@@ -532,7 +534,7 @@ class FormModel extends _ResourceModel.default {
532
534
  * Get the result data as plain json object
533
535
  */
534
536
  getSuccessData() {
535
- return this.data.success?.data;
537
+ return this.success?.data;
536
538
  }
537
539
 
538
540
  /**
@@ -758,6 +760,8 @@ class FormModel extends _ResourceModel.default {
758
760
  setPreviousObject() {
759
761
  var _context21, _context22, _context23, _context24, _context25;
760
762
  this.isComplete = false;
763
+ this.isFinished = false;
764
+ this.success = null;
761
765
  const oldCurrentFormObject = this.currentFormObject;
762
766
  if (this.currentFormObject !== null) {
763
767
  this.previouslyEnteredFormObjects = [this.currentFormObject, ...this.previouslyEnteredFormObjects];
@@ -818,6 +822,7 @@ class FormModel extends _ResourceModel.default {
818
822
  this.tokens = receivedForm.tokens;
819
823
  this.isComplete = receivedForm.isComplete;
820
824
  this.isFinished = receivedForm.isFinished;
825
+ this.success = receivedForm.success;
821
826
  const receivedFormData = receivedForm.data ?? {};
822
827
  const hasMissing = (0, _objects.has)(receivedFormData, "missing");
823
828
  const hasErrors = (0, _objects.has)(receivedFormData, "errors");
@@ -843,6 +848,28 @@ class FormModel extends _ResourceModel.default {
843
848
  return this;
844
849
  }
845
850
 
851
+ /**
852
+ * Retrieve success information from response
853
+ * @returns {{redirect: string, data: object}}
854
+ */
855
+ get success() {
856
+ return this._success;
857
+ }
858
+
859
+ /**
860
+ * Set success information, contains redirect and event data
861
+ * @param success
862
+ */
863
+ set success(success) {
864
+ this._success = success;
865
+ }
866
+
867
+ /**
868
+ */
869
+ createSuccess() {
870
+ this._success = this.data.success;
871
+ }
872
+
846
873
  /**
847
874
  * Process finished form
848
875
  */
@@ -51,6 +51,7 @@ class FormModel extends ResourceModel {
51
51
  _commit: boolean;
52
52
  _isFinished: boolean;
53
53
  _isComplete: boolean;
54
+ _success: { redirect: string, data: Object } | null;
54
55
 
55
56
  _parameters: Array<Parameter>;
56
57
  _tokens: Array<string>;
@@ -72,6 +73,8 @@ class FormModel extends ResourceModel {
72
73
  if (this.data.errors) {
73
74
  this.handleRootErrors(this.data.errors);
74
75
  }
76
+
77
+ this.createSuccess();
75
78
  }
76
79
 
77
80
  /**
@@ -574,7 +577,7 @@ class FormModel extends ResourceModel {
574
577
  * Inidicates if form is finished: Form is completely entered and committed
575
578
  */
576
579
  get isFinished(): boolean {
577
- return this._isFinished || "success" in this.data;
580
+ return this._isFinished || this.success != undefined;
578
581
  }
579
582
 
580
583
  /**
@@ -600,8 +603,8 @@ class FormModel extends ResourceModel {
600
603
  * Handle success redirects
601
604
  */
602
605
  get successRedirect(): Href | null {
603
- return this.isFinished && this.data.success
604
- ? new Href(this.data.success.redirect)
606
+ return this.isFinished && this.success
607
+ ? new Href(this.success.redirect)
605
608
  : null;
606
609
  }
607
610
 
@@ -615,7 +618,7 @@ class FormModel extends ResourceModel {
615
618
  * Get the result data as plain json object
616
619
  */
617
620
  getSuccessData(): ?Object {
618
- return this.data.success?.data;
621
+ return this.success?.data;
619
622
  }
620
623
 
621
624
  /**
@@ -888,6 +891,8 @@ class FormModel extends ResourceModel {
888
891
  */
889
892
  setPreviousObject() {
890
893
  this.isComplete = false;
894
+ this.isFinished = false;
895
+ this.success = null;
891
896
 
892
897
  const oldCurrentFormObject = this.currentFormObject;
893
898
 
@@ -985,6 +990,7 @@ class FormModel extends ResourceModel {
985
990
 
986
991
  this.isComplete = receivedForm.isComplete;
987
992
  this.isFinished = receivedForm.isFinished;
993
+ this.success = receivedForm.success;
988
994
 
989
995
  const receivedFormData = receivedForm.data ?? {};
990
996
  const hasMissing = has(receivedFormData, "missing");
@@ -1016,6 +1022,28 @@ class FormModel extends ResourceModel {
1016
1022
  return this;
1017
1023
  }
1018
1024
 
1025
+ /**
1026
+ * Retrieve success information from response
1027
+ * @returns {{redirect: string, data: object}}
1028
+ */
1029
+ get success(): { redirect: string, data: Object } | null {
1030
+ return this._success;
1031
+ }
1032
+
1033
+ /**
1034
+ * Set success information, contains redirect and event data
1035
+ * @param success
1036
+ */
1037
+ set success(success: { redirect: string, data: Object } | null) {
1038
+ this._success = success;
1039
+ }
1040
+
1041
+ /**
1042
+ */
1043
+ createSuccess() {
1044
+ this._success = this.data.success;
1045
+ }
1046
+
1019
1047
  /**
1020
1048
  * Process finished form
1021
1049
  */