@beinformed/ui 1.33.0-beta.2 → 1.33.0-beta.4

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 (50) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/esm/models/attributes/CompositeAttributeModel.js +4 -3
  3. package/esm/models/attributes/CompositeAttributeModel.js.map +1 -1
  4. package/esm/models/attributes/StringAttributeModel.js +14 -32
  5. package/esm/models/attributes/StringAttributeModel.js.map +1 -1
  6. package/esm/models/filters/BaseFilterModel.js +0 -12
  7. package/esm/models/filters/BaseFilterModel.js.map +1 -1
  8. package/esm/models/filters/FilterCollection.js +5 -1
  9. package/esm/models/filters/FilterCollection.js.map +1 -1
  10. package/esm/models/filters/StringFilterModel.js +109 -0
  11. package/esm/models/filters/StringFilterModel.js.map +1 -0
  12. package/esm/models/href/Href.js +1 -1
  13. package/esm/models/href/Href.js.map +1 -1
  14. package/esm/utils/helpers/sanitizeHtml.js +8 -6
  15. package/esm/utils/helpers/sanitizeHtml.js.map +1 -1
  16. package/lib/models/attributes/CompositeAttributeModel.js +4 -3
  17. package/lib/models/attributes/CompositeAttributeModel.js.flow +4 -3
  18. package/lib/models/attributes/CompositeAttributeModel.js.map +1 -1
  19. package/lib/models/attributes/StringAttributeModel.js +14 -32
  20. package/lib/models/attributes/StringAttributeModel.js.flow +14 -51
  21. package/lib/models/attributes/StringAttributeModel.js.map +1 -1
  22. package/lib/models/attributes/__tests__/StringAttributeModel.spec.js.flow +0 -13
  23. package/lib/models/filters/BaseFilterModel.js +0 -12
  24. package/lib/models/filters/BaseFilterModel.js.flow +4 -16
  25. package/lib/models/filters/BaseFilterModel.js.map +1 -1
  26. package/lib/models/filters/FilterCollection.js +5 -1
  27. package/lib/models/filters/FilterCollection.js.flow +6 -1
  28. package/lib/models/filters/FilterCollection.js.map +1 -1
  29. package/lib/models/filters/StringFilterModel.js +117 -0
  30. package/lib/models/filters/StringFilterModel.js.flow +119 -0
  31. package/lib/models/filters/StringFilterModel.js.map +1 -0
  32. package/lib/models/filters/__tests__/ZipcodeFilter.spec.js.flow +12 -12
  33. package/lib/models/href/Href.js +1 -1
  34. package/lib/models/href/Href.js.flow +1 -1
  35. package/lib/models/href/Href.js.map +1 -1
  36. package/lib/utils/helpers/__tests__/sanitizeHTML.spec.js.flow +35 -1
  37. package/lib/utils/helpers/sanitizeHtml.js +8 -6
  38. package/lib/utils/helpers/sanitizeHtml.js.flow +7 -6
  39. package/lib/utils/helpers/sanitizeHtml.js.map +1 -1
  40. package/package.json +20 -20
  41. package/src/models/attributes/CompositeAttributeModel.js +4 -3
  42. package/src/models/attributes/StringAttributeModel.js +14 -51
  43. package/src/models/attributes/__tests__/StringAttributeModel.spec.js +0 -13
  44. package/src/models/filters/BaseFilterModel.js +4 -16
  45. package/src/models/filters/FilterCollection.js +6 -1
  46. package/src/models/filters/StringFilterModel.js +119 -0
  47. package/src/models/filters/__tests__/ZipcodeFilter.spec.js +12 -12
  48. package/src/models/href/Href.js +1 -1
  49. package/src/utils/helpers/__tests__/sanitizeHTML.spec.js +35 -1
  50. package/src/utils/helpers/sanitizeHtml.js +7 -6
package/CHANGELOG.md CHANGED
@@ -2,6 +2,20 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines.
4
4
 
5
+ ## [1.33.0-beta.4](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/compare/v1.33.0-beta.3...v1.33.0-beta.4) (2023-08-28)
6
+
7
+
8
+ ### Bug Fixes
9
+
10
+ * **filters:** introduce string filter for string specific isMultiple setting ([8c2c9f3](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/commit/8c2c9f386e42008a9cc6715476946580532a3b43))
11
+
12
+ ## [1.33.0-beta.3](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/compare/v1.33.0-beta.2...v1.33.0-beta.3) (2023-08-28)
13
+
14
+
15
+ ### Bug Fixes
16
+
17
+ * **sanitize-html:** improve encoding of html entities to numerical entities ([45c3c56](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/commit/45c3c56c8e04ca36b898efb5651fd87cbc9eea9f))
18
+
5
19
  ## [1.33.0-beta.2](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/compare/v1.33.0-beta.1...v1.33.0-beta.2) (2023-08-24)
6
20
 
7
21
 
@@ -121,7 +121,8 @@ class CompositeAttributeModel extends AttributeModel {
121
121
  /**
122
122
  * Validate input
123
123
  */
124
- validate() {
124
+ // eslint-disable-next-line no-unused-vars
125
+ validate(value) {
125
126
  // when client side validation is disabled, this attribute is always valid
126
127
  if (!this.useClientsideValidation()) {
127
128
  return true;
@@ -159,7 +160,7 @@ class CompositeAttributeModel extends AttributeModel {
159
160
  * Indicates if attribute input is valid
160
161
  */
161
162
  get isValid() {
162
- return this.validate();
163
+ return this.validate("");
163
164
  }
164
165
 
165
166
  /**
@@ -238,7 +239,7 @@ class CompositeAttributeModel extends AttributeModel {
238
239
  }
239
240
  });
240
241
  this.setChildrenOptionality();
241
- this.validate();
242
+ this.validate(value);
242
243
  return this;
243
244
  }
244
245
 
@@ -1 +1 @@
1
- {"version":3,"file":"CompositeAttributeModel.js","names":["AttributeModel","CompositeAttributeChildCollection","ConstraintCollection","RangeConstraint","MandatoryRangeConstraint","ATTRIBUTE_WIDTH","IllegalArgumentException","NumberAttributeModel","DatetimeAttributeModel","CompositeAttributeModel","constructor","data","contributions","_defineProperty","_children","create","setChildrenOptionality","isApplicableModel","type","_includesInstanceProperty","call","getInitialChildModelLinks","children","setChildModels","models","key","isRange","includes","isRangeAttribute","attribute","start","all","end","size","getInputValue","hasValue","some","child","constraintCollection","constraints","add","_serverConstraints","addConstraints","setUseClientsideValidation","enabled","_useClientsideValidation","forEach","validate","useClientsideValidation","_isValid","startAttribute","endAttribute","allChildsEntered","every","mandatory","allChildsOptional","isValid","hasServerErrors","errorCollection","serverErrors","length","hasErrors","hasItems","reset","getChildByAttribute","_context","_findInstanceProperty","equals","getChildByKey","_context2","mergeAttribute","oldAttribute","concept","withChildAttribute","update","value","changedAttribute","updateLastModification","childrenAreOptional","configuredMandatory","readonly","readonlyvalue","initvalue","getFormData","name","getValue","isResult","_isResult","indicateContentConfiguration","contentConfiguration","otherAttribute","parentKey","readonlyWidth","LARGE","EXTRA_LARGE","MEDIUM"],"sources":["../../../src/models/attributes/CompositeAttributeModel.js"],"sourcesContent":["// @flow\nimport AttributeModel from \"./AttributeModel\";\n\nimport CompositeAttributeChildCollection from \"./CompositeAttributeChildCollection\";\nimport ConstraintCollection from \"./input-constraints/ConstraintCollection\";\nimport RangeConstraint from \"./input-constraints/RangeConstraint\";\nimport MandatoryRangeConstraint from \"./input-constraints/MandatoryRangeConstraint\";\n\nimport { ATTRIBUTE_WIDTH } from \"../../constants\";\nimport { IllegalArgumentException } from \"../../exceptions\";\n\nimport NumberAttributeModel from \"./NumberAttributeModel\";\nimport DatetimeAttributeModel from \"./DatetimeAttributeModel\";\n\nimport type { ModularUIModel, AttributeType } from \"../types\";\nimport type ContentConfiguration from \"../contentconfiguration/ContentConfiguration\";\nimport type LinkModel from \"../links/LinkModel\";\n\n/**\n */\nclass CompositeAttributeModel extends AttributeModel {\n _children: CompositeAttributeChildCollection;\n\n /**\n */\n constructor(data: Object, contributions: Object) {\n super(data, contributions);\n\n this._children = CompositeAttributeChildCollection.create(\n data,\n contributions,\n );\n\n this.setChildrenOptionality();\n }\n\n /**\n */\n static isApplicableModel(contributions: Object): boolean {\n const type = contributions?.type;\n return type && (type === \"composite\" || type.includes(\"range\"));\n }\n\n /**\n */\n getInitialChildModelLinks(): Array<LinkModel> {\n return this.children.getInitialChildModelLinks();\n }\n\n /**\n */\n setChildModels(models: Array<ModularUIModel>) {\n this.children.setChildModels(models);\n }\n\n /**\n */\n get type(): string {\n // temp fix for results and given answers on list result detail panel\n if (this.key === \"results\" || this.key === \"givenAnswers\") {\n return \"composite\";\n }\n\n return this.isRange ? \"range\" : \"composite\";\n }\n\n /**\n */\n get isRange(): boolean {\n return this.contributions?.type?.includes(\"range\");\n }\n\n /**\n */\n get children(): CompositeAttributeChildCollection {\n return this._children;\n }\n\n /**\n */\n set children(children: CompositeAttributeChildCollection) {\n this._children = children;\n }\n\n /**\n */\n isRangeAttribute(attribute: AttributeType): boolean {\n return (\n attribute instanceof NumberAttributeModel ||\n attribute instanceof DatetimeAttributeModel\n );\n }\n\n /**\n */\n get start(): AttributeType | null {\n return this.children.all[0];\n }\n\n /**\n */\n get end(): AttributeType {\n return this.children.all[this.children.size - 1];\n }\n\n /**\n * Get input value of attribute\n */\n getInputValue(): string {\n return this.children.getInputValue();\n }\n\n /**\n * Check if at least one child has value\n */\n hasValue(): boolean {\n return this.children.some((child) => child.hasValue());\n }\n\n /**\n */\n get constraintCollection(): ConstraintCollection {\n const constraints = new ConstraintCollection();\n\n constraints.add(this._serverConstraints);\n constraints.add(this.addConstraints());\n\n return constraints;\n }\n\n /**\n * Used to programmatically overwrite the setting USE_CLIENTSIDE_VALIDATION\n */\n setUseClientsideValidation(enabled: boolean) {\n super._useClientsideValidation = enabled;\n\n this.children.all.forEach((child) =>\n child.setUseClientsideValidation(enabled),\n );\n }\n\n /**\n * Validate input\n */\n validate(): boolean {\n // when client side validation is disabled, this attribute is always valid\n if (!this.useClientsideValidation()) {\n return true;\n }\n\n this._isValid = this.children.validate();\n\n if (this._isValid) {\n this._isValid = this.constraintCollection.validate();\n }\n\n return this._isValid;\n }\n\n /**\n * Add Date constraints for attribute\n */\n addConstraints(): ConstraintCollection {\n const constraints = new ConstraintCollection();\n\n const startAttribute = this.start;\n const endAttribute = this.end;\n if (this.isRange && startAttribute != null && endAttribute != null) {\n const allChildsEntered = this.children.every((child) => child.hasValue());\n if (allChildsEntered) {\n constraints.add(new RangeConstraint(startAttribute, endAttribute));\n }\n }\n\n if (this.isRange && this.mandatory && startAttribute !== null) {\n const allChildsOptional = this.children.every(\n (child) => !child.mandatory,\n );\n if (allChildsOptional) {\n constraints.add(\n new MandatoryRangeConstraint(startAttribute.type, this.children),\n );\n }\n }\n\n return constraints;\n }\n\n /**\n * Indicates if attribute input is valid\n */\n get isValid(): boolean {\n return this.validate();\n }\n\n /**\n */\n hasServerErrors(): boolean {\n return (\n this.errorCollection.serverErrors.length > 0 ||\n this.children.some((child) => child.hasServerErrors())\n );\n }\n\n /**\n */\n hasErrors(): boolean {\n return (\n this.errorCollection.hasItems ||\n this.children.some((child) => child.hasErrors())\n );\n }\n\n /**\n * Reset attribute to empty string\n */\n reset() {\n this.children.reset();\n }\n\n /**\n */\n getChildByAttribute(attribute: AttributeType): ?AttributeType {\n return this.children.find((child) => {\n if (child.equals(attribute)) {\n return true;\n } else if (child instanceof CompositeAttributeModel) {\n return child.getChildByAttribute(attribute);\n }\n\n return false;\n });\n }\n\n /**\n */\n getChildByKey(key: string): ?AttributeType {\n return (\n this.children.find((child) => {\n if (child.key === key) {\n return true;\n } else if (child instanceof CompositeAttributeModel) {\n return child.getChildByKey(key);\n }\n\n return false;\n }) || null\n );\n }\n\n /**\n */\n mergeAttribute(oldAttribute: AttributeType) {\n this.concept = oldAttribute.concept;\n\n this.children.forEach((child) => {\n if (oldAttribute instanceof CompositeAttributeModel) {\n const withChildAttribute = oldAttribute.getChildByKey(child.key);\n if (withChildAttribute) {\n child.mergeAttribute(withChildAttribute);\n }\n }\n });\n }\n\n /**\n */\n update(\n value: string,\n changedAttribute: ?AttributeType,\n ): CompositeAttributeModel {\n if (!changedAttribute) {\n throw new IllegalArgumentException(\n \"Composite attribute needs changed attribute on update call\",\n );\n }\n\n this.updateLastModification();\n\n this.children.forEach((child) => {\n if (child instanceof CompositeAttributeModel) {\n child.update(value, changedAttribute);\n } else if (child.equals(changedAttribute)) {\n child.update(value);\n }\n });\n\n this.setChildrenOptionality();\n\n this.validate();\n\n return this;\n }\n\n /**\n */\n setChildrenOptionality() {\n const childrenAreOptional =\n !this.mandatory && this.children.every((child) => child.value === null);\n\n this.children.forEach((child) => {\n child.mandatory =\n childrenAreOptional || !child.configuredMandatory\n ? false\n : child.configuredMandatory;\n });\n }\n\n /**\n */\n get readonly(): boolean {\n return super.readonly || this.children.every((child) => child.readonly);\n }\n\n /**\n */\n set readonly(readonly: boolean) {\n super.readonly = readonly;\n }\n\n /**\n */\n get readonlyvalue(): string {\n return this.children.readonlyvalue;\n }\n\n /**\n */\n get initvalue(): any {\n return this.children.initvalue;\n }\n\n /**\n */\n getFormData(): { [string]: any } | null {\n return { [this.name]: this.value };\n }\n\n /**\n */\n getValue(): any {\n return this.children.value;\n }\n\n /**\n */\n get isResult(): boolean {\n return this._isResult;\n }\n\n /**\n */\n set isResult(isResult: boolean) {\n this._isResult = isResult;\n\n this.children.forEach((child) => {\n child.isResult = isResult;\n });\n }\n\n /**\n */\n indicateContentConfiguration(contentConfiguration: ContentConfiguration) {\n if (contentConfiguration) {\n this.children.forEach((child) => {\n child.indicateContentConfiguration(contentConfiguration);\n });\n }\n }\n\n /**\n */\n equals(otherAttribute: AttributeType): boolean {\n return (\n (this.key === otherAttribute.key &&\n this.parentKey === otherAttribute.parentKey) ||\n this.children.some(\n //$FlowFixMe[method-unbinding]\n (child) => child.equals && child.equals(otherAttribute),\n )\n );\n }\n\n /**\n */\n get readonlyWidth(): $Keys<typeof ATTRIBUTE_WIDTH> {\n if (this.type === \"composite\") {\n return ATTRIBUTE_WIDTH.LARGE;\n }\n\n // range\n switch (this.start?.type) {\n case \"datetime\":\n return ATTRIBUTE_WIDTH.LARGE;\n case \"timestamp\":\n return ATTRIBUTE_WIDTH.EXTRA_LARGE;\n default:\n return ATTRIBUTE_WIDTH.MEDIUM;\n }\n }\n}\n\nexport default CompositeAttributeModel;\n"],"mappings":"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"}
1
+ {"version":3,"file":"CompositeAttributeModel.js","names":["AttributeModel","CompositeAttributeChildCollection","ConstraintCollection","RangeConstraint","MandatoryRangeConstraint","ATTRIBUTE_WIDTH","IllegalArgumentException","NumberAttributeModel","DatetimeAttributeModel","CompositeAttributeModel","constructor","data","contributions","_defineProperty","_children","create","setChildrenOptionality","isApplicableModel","type","_includesInstanceProperty","call","getInitialChildModelLinks","children","setChildModels","models","key","isRange","includes","isRangeAttribute","attribute","start","all","end","size","getInputValue","hasValue","some","child","constraintCollection","constraints","add","_serverConstraints","addConstraints","setUseClientsideValidation","enabled","_useClientsideValidation","forEach","validate","value","useClientsideValidation","_isValid","startAttribute","endAttribute","allChildsEntered","every","mandatory","allChildsOptional","isValid","hasServerErrors","errorCollection","serverErrors","length","hasErrors","hasItems","reset","getChildByAttribute","_context","_findInstanceProperty","equals","getChildByKey","_context2","mergeAttribute","oldAttribute","concept","withChildAttribute","update","changedAttribute","updateLastModification","childrenAreOptional","configuredMandatory","readonly","readonlyvalue","initvalue","getFormData","name","getValue","isResult","_isResult","indicateContentConfiguration","contentConfiguration","otherAttribute","parentKey","readonlyWidth","LARGE","EXTRA_LARGE","MEDIUM"],"sources":["../../../src/models/attributes/CompositeAttributeModel.js"],"sourcesContent":["// @flow\nimport AttributeModel from \"./AttributeModel\";\n\nimport CompositeAttributeChildCollection from \"./CompositeAttributeChildCollection\";\nimport ConstraintCollection from \"./input-constraints/ConstraintCollection\";\nimport RangeConstraint from \"./input-constraints/RangeConstraint\";\nimport MandatoryRangeConstraint from \"./input-constraints/MandatoryRangeConstraint\";\n\nimport { ATTRIBUTE_WIDTH } from \"../../constants\";\nimport { IllegalArgumentException } from \"../../exceptions\";\n\nimport NumberAttributeModel from \"./NumberAttributeModel\";\nimport DatetimeAttributeModel from \"./DatetimeAttributeModel\";\n\nimport type { ModularUIModel, AttributeType } from \"../types\";\nimport type ContentConfiguration from \"../contentconfiguration/ContentConfiguration\";\nimport type LinkModel from \"../links/LinkModel\";\n\n/**\n */\nclass CompositeAttributeModel extends AttributeModel {\n _children: CompositeAttributeChildCollection;\n\n /**\n */\n constructor(data: Object, contributions: Object) {\n super(data, contributions);\n\n this._children = CompositeAttributeChildCollection.create(\n data,\n contributions,\n );\n\n this.setChildrenOptionality();\n }\n\n /**\n */\n static isApplicableModel(contributions: Object): boolean {\n const type = contributions?.type;\n return type && (type === \"composite\" || type.includes(\"range\"));\n }\n\n /**\n */\n getInitialChildModelLinks(): Array<LinkModel> {\n return this.children.getInitialChildModelLinks();\n }\n\n /**\n */\n setChildModels(models: Array<ModularUIModel>) {\n this.children.setChildModels(models);\n }\n\n /**\n */\n get type(): string {\n // temp fix for results and given answers on list result detail panel\n if (this.key === \"results\" || this.key === \"givenAnswers\") {\n return \"composite\";\n }\n\n return this.isRange ? \"range\" : \"composite\";\n }\n\n /**\n */\n get isRange(): boolean {\n return this.contributions?.type?.includes(\"range\");\n }\n\n /**\n */\n get children(): CompositeAttributeChildCollection {\n return this._children;\n }\n\n /**\n */\n set children(children: CompositeAttributeChildCollection) {\n this._children = children;\n }\n\n /**\n */\n isRangeAttribute(attribute: AttributeType): boolean {\n return (\n attribute instanceof NumberAttributeModel ||\n attribute instanceof DatetimeAttributeModel\n );\n }\n\n /**\n */\n get start(): AttributeType | null {\n return this.children.all[0];\n }\n\n /**\n */\n get end(): AttributeType {\n return this.children.all[this.children.size - 1];\n }\n\n /**\n * Get input value of attribute\n */\n getInputValue(): string {\n return this.children.getInputValue();\n }\n\n /**\n * Check if at least one child has value\n */\n hasValue(): boolean {\n return this.children.some((child) => child.hasValue());\n }\n\n /**\n */\n get constraintCollection(): ConstraintCollection {\n const constraints = new ConstraintCollection();\n\n constraints.add(this._serverConstraints);\n constraints.add(this.addConstraints());\n\n return constraints;\n }\n\n /**\n * Used to programmatically overwrite the setting USE_CLIENTSIDE_VALIDATION\n */\n setUseClientsideValidation(enabled: boolean) {\n super._useClientsideValidation = enabled;\n\n this.children.all.forEach((child) =>\n child.setUseClientsideValidation(enabled),\n );\n }\n\n /**\n * Validate input\n */\n // eslint-disable-next-line no-unused-vars\n validate(value: string): boolean {\n // when client side validation is disabled, this attribute is always valid\n if (!this.useClientsideValidation()) {\n return true;\n }\n\n this._isValid = this.children.validate();\n\n if (this._isValid) {\n this._isValid = this.constraintCollection.validate();\n }\n\n return this._isValid;\n }\n\n /**\n * Add Date constraints for attribute\n */\n addConstraints(): ConstraintCollection {\n const constraints = new ConstraintCollection();\n\n const startAttribute = this.start;\n const endAttribute = this.end;\n if (this.isRange && startAttribute != null && endAttribute != null) {\n const allChildsEntered = this.children.every((child) => child.hasValue());\n if (allChildsEntered) {\n constraints.add(new RangeConstraint(startAttribute, endAttribute));\n }\n }\n\n if (this.isRange && this.mandatory && startAttribute !== null) {\n const allChildsOptional = this.children.every(\n (child) => !child.mandatory,\n );\n if (allChildsOptional) {\n constraints.add(\n new MandatoryRangeConstraint(startAttribute.type, this.children),\n );\n }\n }\n\n return constraints;\n }\n\n /**\n * Indicates if attribute input is valid\n */\n get isValid(): boolean {\n return this.validate(\"\");\n }\n\n /**\n */\n hasServerErrors(): boolean {\n return (\n this.errorCollection.serverErrors.length > 0 ||\n this.children.some((child) => child.hasServerErrors())\n );\n }\n\n /**\n */\n hasErrors(): boolean {\n return (\n this.errorCollection.hasItems ||\n this.children.some((child) => child.hasErrors())\n );\n }\n\n /**\n * Reset attribute to empty string\n */\n reset() {\n this.children.reset();\n }\n\n /**\n */\n getChildByAttribute(attribute: AttributeType): ?AttributeType {\n return this.children.find((child) => {\n if (child.equals(attribute)) {\n return true;\n } else if (child instanceof CompositeAttributeModel) {\n return child.getChildByAttribute(attribute);\n }\n\n return false;\n });\n }\n\n /**\n */\n getChildByKey(key: string): ?AttributeType {\n return (\n this.children.find((child) => {\n if (child.key === key) {\n return true;\n } else if (child instanceof CompositeAttributeModel) {\n return child.getChildByKey(key);\n }\n\n return false;\n }) || null\n );\n }\n\n /**\n */\n mergeAttribute(oldAttribute: AttributeType) {\n this.concept = oldAttribute.concept;\n\n this.children.forEach((child) => {\n if (oldAttribute instanceof CompositeAttributeModel) {\n const withChildAttribute = oldAttribute.getChildByKey(child.key);\n if (withChildAttribute) {\n child.mergeAttribute(withChildAttribute);\n }\n }\n });\n }\n\n /**\n */\n update(\n value: string,\n changedAttribute: ?AttributeType,\n ): CompositeAttributeModel {\n if (!changedAttribute) {\n throw new IllegalArgumentException(\n \"Composite attribute needs changed attribute on update call\",\n );\n }\n\n this.updateLastModification();\n\n this.children.forEach((child) => {\n if (child instanceof CompositeAttributeModel) {\n child.update(value, changedAttribute);\n } else if (child.equals(changedAttribute)) {\n child.update(value);\n }\n });\n\n this.setChildrenOptionality();\n\n this.validate(value);\n\n return this;\n }\n\n /**\n */\n setChildrenOptionality() {\n const childrenAreOptional =\n !this.mandatory && this.children.every((child) => child.value === null);\n\n this.children.forEach((child) => {\n child.mandatory =\n childrenAreOptional || !child.configuredMandatory\n ? false\n : child.configuredMandatory;\n });\n }\n\n /**\n */\n get readonly(): boolean {\n return super.readonly || this.children.every((child) => child.readonly);\n }\n\n /**\n */\n set readonly(readonly: boolean) {\n super.readonly = readonly;\n }\n\n /**\n */\n get readonlyvalue(): string {\n return this.children.readonlyvalue;\n }\n\n /**\n */\n get initvalue(): any {\n return this.children.initvalue;\n }\n\n /**\n */\n getFormData(): { [string]: any } | null {\n return { [this.name]: this.value };\n }\n\n /**\n */\n getValue(): any {\n return this.children.value;\n }\n\n /**\n */\n get isResult(): boolean {\n return this._isResult;\n }\n\n /**\n */\n set isResult(isResult: boolean) {\n this._isResult = isResult;\n\n this.children.forEach((child) => {\n child.isResult = isResult;\n });\n }\n\n /**\n */\n indicateContentConfiguration(contentConfiguration: ContentConfiguration) {\n if (contentConfiguration) {\n this.children.forEach((child) => {\n child.indicateContentConfiguration(contentConfiguration);\n });\n }\n }\n\n /**\n */\n equals(otherAttribute: AttributeType): boolean {\n return (\n (this.key === otherAttribute.key &&\n this.parentKey === otherAttribute.parentKey) ||\n this.children.some(\n //$FlowFixMe[method-unbinding]\n (child) => child.equals && child.equals(otherAttribute),\n )\n );\n }\n\n /**\n */\n get readonlyWidth(): $Keys<typeof ATTRIBUTE_WIDTH> {\n if (this.type === \"composite\") {\n return ATTRIBUTE_WIDTH.LARGE;\n }\n\n // range\n switch (this.start?.type) {\n case \"datetime\":\n return ATTRIBUTE_WIDTH.LARGE;\n case \"timestamp\":\n return ATTRIBUTE_WIDTH.EXTRA_LARGE;\n default:\n return ATTRIBUTE_WIDTH.MEDIUM;\n }\n }\n}\n\nexport default CompositeAttributeModel;\n"],"mappings":"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"}
@@ -1,6 +1,5 @@
1
1
  import _defineProperty from "@babel/runtime-corejs3/helpers/esm/defineProperty";
2
2
  import _includesInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/includes";
3
- import _mapInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/map";
4
3
  import AttributeModel from "./AttributeModel";
5
4
  import ConstraintCollection from "./input-constraints/ConstraintCollection";
6
5
  import RegexConstraint from "./input-constraints/RegexConstraint";
@@ -112,11 +111,10 @@ export default class StringAttributeModel extends AttributeModel {
112
111
  const constraints = new ConstraintCollection();
113
112
  if (this.isBSN()) {
114
113
  constraints.add(new BSNConstraint());
115
- } else if (this.isIBAN() && (this.operator === "" || this.operator === "exactly" || this.operator === "isNot")) {
116
- // validate iban when no operator is set or exact or isNot
114
+ } else if (this.isIBAN()) {
117
115
  constraints.add(new IBANConstraint());
118
116
  }
119
- if (this.isZipcode() && (this.operator === "" || this.operator === "exactly" || this.operator === "isNot")) {
117
+ if (this.isZipcode()) {
120
118
  // validate zip when regex is set is set or exact or isNot
121
119
  constraints.add(new RegexConstraint({
122
120
  messageKey: "Constraint.ZipCode.InvalidFormat",
@@ -150,11 +148,8 @@ export default class StringAttributeModel extends AttributeModel {
150
148
  */
151
149
  formatIBAN(value) {
152
150
  const noFormat = this.removeFormat(value);
153
- if (this.operator === "" || this.operator === "exactly" || this.operator === "isNot") {
154
- const groups = noFormat.replace(/\s/g, "").match(/.{1,4}/g);
155
- return groups == null ? "" : groups.join(" ");
156
- }
157
- return noFormat;
151
+ const groups = noFormat.replace(/\s/g, "").match(/.{1,4}/g);
152
+ return groups == null ? "" : groups.join(" ");
158
153
  }
159
154
 
160
155
  /**
@@ -182,19 +177,16 @@ export default class StringAttributeModel extends AttributeModel {
182
177
  if (typeof value !== "string") {
183
178
  return value;
184
179
  }
185
- const values = this.isMultiple ? value.split(",") : [value];
186
- return _mapInstanceProperty(values).call(values, val => {
187
- if (this.isIBAN()) {
188
- return this.formatIBAN(val);
189
- }
190
- if (this.isZipcode()) {
191
- return this.formatZipcode(val);
192
- }
193
- if (this.isBSN()) {
194
- return this.formatBSN(val);
195
- }
196
- return val;
197
- }).join(",");
180
+ if (this.isIBAN()) {
181
+ return this.formatIBAN(value);
182
+ }
183
+ if (this.isZipcode()) {
184
+ return this.formatZipcode(value);
185
+ }
186
+ if (this.isBSN()) {
187
+ return this.formatBSN(value);
188
+ }
189
+ return value.replace(/ {2}/gi, " \u00A0");
198
190
  }
199
191
 
200
192
  /**
@@ -228,9 +220,6 @@ export default class StringAttributeModel extends AttributeModel {
228
220
  this._inputvalue = value;
229
221
  if (value == null) {
230
222
  this.value = value;
231
- } else if (this.isMultiple) {
232
- var _context;
233
- this.value = _mapInstanceProperty(_context = value.split(",")).call(_context, val => this.removeFormat(val)).join(",");
234
223
  } else {
235
224
  this.value = this.removeFormat(value);
236
225
  }
@@ -273,12 +262,5 @@ export default class StringAttributeModel extends AttributeModel {
273
262
  // default value (also applied for email address + download attribute)
274
263
  return ATTRIBUTE_WIDTH.MEDIUM;
275
264
  }
276
-
277
- /**
278
- * Indicates if a value is multiple choice, used for filters
279
- */
280
- get isMultiple() {
281
- return this.getContribution("multiplechoice", false);
282
- }
283
265
  }
284
266
  //# sourceMappingURL=StringAttributeModel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"StringAttributeModel.js","names":["AttributeModel","ConstraintCollection","RegexConstraint","BSNConstraint","IBANConstraint","ATTRIBUTE_WIDTH","StringAttributeModel","constructor","attribute","attributeContributions","_defineProperty","_placeholder","getContribution","getInitialInputValue","value","formatValue","isApplicableModel","contributions","layouthint","type","Array","isArray","_includesInstanceProperty","call","regexp","regexpvalidationmessage","postfix","prefix","placeholder","isBSN","has","isIBAN","isZipcode","isEmail","addConstraints","constraints","add","operator","messageKey","defaultMessage","regex","RegExp","reset","inputvalue","formatIBAN","noFormat","removeFormat","groups","replace","match","join","formatZipcode","length","substring","toUpperCase","formatBSN","toString","values","isMultiple","split","_mapInstanceProperty","val","validateValue","getInputValue","_inputvalue","_context","validate","readonlyvalue","formattedValue","update","updateLastModification","readonlyWidth","SMALL","LARGE","MEDIUM"],"sources":["../../../src/models/attributes/StringAttributeModel.js"],"sourcesContent":["// @flow\nimport AttributeModel from \"./AttributeModel\";\nimport ConstraintCollection from \"./input-constraints/ConstraintCollection\";\nimport RegexConstraint from \"./input-constraints/RegexConstraint\";\nimport BSNConstraint from \"./input-constraints/BSNConstraint\";\nimport IBANConstraint from \"./input-constraints/IBANConstraint\";\n\nimport { ATTRIBUTE_WIDTH } from \"../../constants\";\n\n/**\n * String attribute\n */\nexport default class StringAttributeModel extends AttributeModel {\n _placeholder: string;\n\n /**\n */\n constructor(attribute: Object, attributeContributions: Object) {\n super(attribute, attributeContributions);\n\n this._placeholder = this.getContribution(\"placeholder\", \"\");\n }\n\n /**\n * Retrieve initial input value\n */\n getInitialInputValue(value: any): string {\n return this.formatValue(value);\n }\n\n /**\n */\n static isApplicableModel(contributions: Object): boolean {\n const layouthint = contributions?.layouthint;\n return (\n contributions.type === \"string\" ||\n (Array.isArray(layouthint) && layouthint.includes(\"string\"))\n );\n }\n\n /**\n */\n get type(): string {\n return \"string\";\n }\n\n /**\n * Get Regexp pattern\n */\n get regexp(): string | null {\n return this.getContribution(\"regexp\");\n }\n\n /**\n */\n get regexpvalidationmessage(): string | null {\n return this.getContribution(\"regexpValidationMessage\");\n }\n\n /**\n * Get postfix text\n */\n get postfix(): string {\n return this.getContribution(\"postfix\", \"\");\n }\n\n /**\n * Get prefix text\n */\n get prefix(): string {\n return this.getContribution(\"prefix\", \"\");\n }\n\n /**\n * Get placeholder text\n */\n get placeholder(): string {\n return this._placeholder;\n }\n\n /**\n * Set placeholder text\n */\n set placeholder(placeholder: string) {\n this._placeholder = placeholder;\n }\n\n /**\n */\n isBSN(): boolean {\n return this.layouthint.has(\"bsn\");\n }\n\n /**\n */\n isIBAN(): boolean {\n return this.layouthint.has(\"iban\");\n }\n\n /**\n */\n isZipcode(): boolean {\n return this.layouthint.has(\"zipcode\");\n }\n\n /**\n */\n isEmail(): boolean {\n return this.layouthint.has(\"email\");\n }\n\n /**\n * Add regex constraints\n */\n addConstraints(): ConstraintCollection {\n const constraints = new ConstraintCollection();\n\n if (this.isBSN()) {\n constraints.add(new BSNConstraint());\n } else if (\n this.isIBAN() &&\n (this.operator === \"\" ||\n this.operator === \"exactly\" ||\n this.operator === \"isNot\")\n ) {\n // validate iban when no operator is set or exact or isNot\n constraints.add(new IBANConstraint());\n }\n\n if (\n this.isZipcode() &&\n (this.operator === \"\" ||\n this.operator === \"exactly\" ||\n this.operator === \"isNot\")\n ) {\n // validate zip when regex is set is set or exact or isNot\n constraints.add(\n new RegexConstraint({\n messageKey: \"Constraint.ZipCode.InvalidFormat\",\n defaultMessage: \"Must be a valid Dutch ZIP code, e.g. 1234 AB\",\n regex: new RegExp(\"^[1-9][0-9]{3} ?[a-zA-Z]{2}$\", \"gi\"),\n }),\n );\n } else if (this.isEmail() && this.regexp) {\n constraints.add(\n new RegexConstraint({\n messageKey: \"Constraint.Email.InvalidFormat\",\n defaultMessage: \"Must be a valid e-mail address\",\n regex: new RegExp(this.regexp, \"gi\"),\n }),\n );\n } else if (this.regexp) {\n constraints.add(\n new RegexConstraint({\n messageKey: \"Constraint.String.InvalidRegex\",\n defaultMessage: this.regexpvalidationmessage,\n regex: this.regexp,\n }),\n );\n }\n\n return constraints;\n }\n\n /**\n * Reset attribute to empty string\n */\n reset() {\n this.inputvalue = \"\";\n }\n\n /**\n */\n formatIBAN(value: string): string {\n const noFormat = this.removeFormat(value);\n\n if (\n this.operator === \"\" ||\n this.operator === \"exactly\" ||\n this.operator === \"isNot\"\n ) {\n const groups = noFormat.replace(/\\s/g, \"\").match(/.{1,4}/g);\n return groups == null ? \"\" : groups.join(\" \");\n }\n\n return noFormat;\n }\n\n /**\n */\n formatZipcode(value: string): string {\n const noFormat = this.removeFormat(value);\n if (noFormat.length === 6) {\n return (\n noFormat.substring(0, 4) + \" \" + noFormat.substring(4).toUpperCase()\n );\n }\n return noFormat;\n }\n\n /**\n */\n formatBSN(value: string): string {\n return this.removeFormat(value);\n }\n\n /**\n */\n formatValue(value: ?string): string {\n if (value == null || value.toString() === \"\") {\n return \"\";\n }\n\n if (typeof value !== \"string\") {\n return value;\n }\n\n const values = this.isMultiple ? value.split(\",\") : [value];\n\n return values\n .map((val) => {\n if (this.isIBAN()) {\n return this.formatIBAN(val);\n }\n\n if (this.isZipcode()) {\n return this.formatZipcode(val);\n }\n\n if (this.isBSN()) {\n return this.formatBSN(val);\n }\n\n return val;\n })\n .join(\",\");\n }\n\n /**\n */\n removeFormat(value: ?string): string {\n if (value == null || value.toString() === \"\") {\n return \"\";\n }\n\n if (this.isIBAN() || this.isZipcode() || this.isBSN()) {\n return value.replace(/[^a-z0-9,]/gi, \"\");\n }\n\n return value;\n }\n\n /**\n */\n get validateValue(): string {\n return this.removeFormat(this.inputvalue);\n }\n\n /**\n */\n get inputvalue(): string {\n return this.getInputValue();\n }\n\n /**\n * Sets the input value to the value entered by the user\n */\n set inputvalue(value: string) {\n this._inputvalue = value;\n\n if (value == null) {\n this.value = value;\n } else if (this.isMultiple) {\n this.value = value\n .split(\",\")\n .map((val) => this.removeFormat(val))\n .join(\",\");\n } else {\n this.value = this.removeFormat(value);\n }\n\n this.validate(this.validateValue);\n }\n\n /**\n */\n get readonlyvalue(): string {\n if (typeof this.value === \"string\") {\n const formattedValue = this.formatValue(this.value);\n // fix for rendering of multiple spaces\n return formattedValue.replace(/ {2}/gi, \" \\u00A0\");\n }\n\n return this.value == null ? \"\" : this.value;\n }\n\n /**\n * Update the attribute by name and value\n */\n update(value: string): StringAttributeModel {\n if (this.inputvalue === value) {\n return this;\n }\n\n this.updateLastModification();\n this.inputvalue = value;\n\n return this;\n }\n\n /**\n */\n get readonlyWidth(): $Keys<typeof ATTRIBUTE_WIDTH> {\n if (this.isZipcode() || this.isBSN()) {\n return ATTRIBUTE_WIDTH.SMALL;\n }\n\n if (this.isIBAN()) {\n return ATTRIBUTE_WIDTH.LARGE;\n }\n\n // default value (also applied for email address + download attribute)\n return ATTRIBUTE_WIDTH.MEDIUM;\n }\n\n /**\n * Indicates if a value is multiple choice, used for filters\n */\n get isMultiple(): boolean {\n return this.getContribution(\"multiplechoice\", false);\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"StringAttributeModel.js","names":["AttributeModel","ConstraintCollection","RegexConstraint","BSNConstraint","IBANConstraint","ATTRIBUTE_WIDTH","StringAttributeModel","constructor","attribute","attributeContributions","_defineProperty","_placeholder","getContribution","getInitialInputValue","value","formatValue","isApplicableModel","contributions","layouthint","type","Array","isArray","_includesInstanceProperty","call","regexp","regexpvalidationmessage","postfix","prefix","placeholder","isBSN","has","isIBAN","isZipcode","isEmail","addConstraints","constraints","add","messageKey","defaultMessage","regex","RegExp","reset","inputvalue","formatIBAN","noFormat","removeFormat","groups","replace","match","join","formatZipcode","length","substring","toUpperCase","formatBSN","toString","validateValue","getInputValue","_inputvalue","validate","readonlyvalue","formattedValue","update","updateLastModification","readonlyWidth","SMALL","LARGE","MEDIUM"],"sources":["../../../src/models/attributes/StringAttributeModel.js"],"sourcesContent":["// @flow\nimport AttributeModel from \"./AttributeModel\";\nimport ConstraintCollection from \"./input-constraints/ConstraintCollection\";\nimport RegexConstraint from \"./input-constraints/RegexConstraint\";\nimport BSNConstraint from \"./input-constraints/BSNConstraint\";\nimport IBANConstraint from \"./input-constraints/IBANConstraint\";\n\nimport { ATTRIBUTE_WIDTH } from \"../../constants\";\n\n/**\n * String attribute\n */\nexport default class StringAttributeModel extends AttributeModel {\n _placeholder: string;\n\n /**\n */\n constructor(attribute: Object, attributeContributions: Object) {\n super(attribute, attributeContributions);\n\n this._placeholder = this.getContribution(\"placeholder\", \"\");\n }\n\n /**\n * Retrieve initial input value\n */\n getInitialInputValue(value: any): string {\n return this.formatValue(value);\n }\n\n /**\n */\n static isApplicableModel(contributions: Object): boolean {\n const layouthint = contributions?.layouthint;\n return (\n contributions.type === \"string\" ||\n (Array.isArray(layouthint) && layouthint.includes(\"string\"))\n );\n }\n\n /**\n */\n get type(): string {\n return \"string\";\n }\n\n /**\n * Get Regexp pattern\n */\n get regexp(): string | null {\n return this.getContribution(\"regexp\");\n }\n\n /**\n */\n get regexpvalidationmessage(): string | null {\n return this.getContribution(\"regexpValidationMessage\");\n }\n\n /**\n * Get postfix text\n */\n get postfix(): string {\n return this.getContribution(\"postfix\", \"\");\n }\n\n /**\n * Get prefix text\n */\n get prefix(): string {\n return this.getContribution(\"prefix\", \"\");\n }\n\n /**\n * Get placeholder text\n */\n get placeholder(): string {\n return this._placeholder;\n }\n\n /**\n * Set placeholder text\n */\n set placeholder(placeholder: string) {\n this._placeholder = placeholder;\n }\n\n /**\n */\n isBSN(): boolean {\n return this.layouthint.has(\"bsn\");\n }\n\n /**\n */\n isIBAN(): boolean {\n return this.layouthint.has(\"iban\");\n }\n\n /**\n */\n isZipcode(): boolean {\n return this.layouthint.has(\"zipcode\");\n }\n\n /**\n */\n isEmail(): boolean {\n return this.layouthint.has(\"email\");\n }\n\n /**\n * Add regex constraints\n */\n addConstraints(): ConstraintCollection {\n const constraints = new ConstraintCollection();\n\n if (this.isBSN()) {\n constraints.add(new BSNConstraint());\n } else if (this.isIBAN()) {\n constraints.add(new IBANConstraint());\n }\n\n if (this.isZipcode()) {\n // validate zip when regex is set is set or exact or isNot\n constraints.add(\n new RegexConstraint({\n messageKey: \"Constraint.ZipCode.InvalidFormat\",\n defaultMessage: \"Must be a valid Dutch ZIP code, e.g. 1234 AB\",\n regex: new RegExp(\"^[1-9][0-9]{3} ?[a-zA-Z]{2}$\", \"gi\"),\n }),\n );\n } else if (this.isEmail() && this.regexp) {\n constraints.add(\n new RegexConstraint({\n messageKey: \"Constraint.Email.InvalidFormat\",\n defaultMessage: \"Must be a valid e-mail address\",\n regex: new RegExp(this.regexp, \"gi\"),\n }),\n );\n } else if (this.regexp) {\n constraints.add(\n new RegexConstraint({\n messageKey: \"Constraint.String.InvalidRegex\",\n defaultMessage: this.regexpvalidationmessage,\n regex: this.regexp,\n }),\n );\n }\n\n return constraints;\n }\n\n /**\n * Reset attribute to empty string\n */\n reset() {\n this.inputvalue = \"\";\n }\n\n /**\n */\n formatIBAN(value: string): string {\n const noFormat = this.removeFormat(value);\n\n const groups = noFormat.replace(/\\s/g, \"\").match(/.{1,4}/g);\n return groups == null ? \"\" : groups.join(\" \");\n }\n\n /**\n */\n formatZipcode(value: string): string {\n const noFormat = this.removeFormat(value);\n if (noFormat.length === 6) {\n return (\n noFormat.substring(0, 4) + \" \" + noFormat.substring(4).toUpperCase()\n );\n }\n return noFormat;\n }\n\n /**\n */\n formatBSN(value: string): string {\n return this.removeFormat(value);\n }\n\n /**\n */\n formatValue(value: ?string): string {\n if (value == null || value.toString() === \"\") {\n return \"\";\n }\n\n if (typeof value !== \"string\") {\n return value;\n }\n\n if (this.isIBAN()) {\n return this.formatIBAN(value);\n }\n\n if (this.isZipcode()) {\n return this.formatZipcode(value);\n }\n\n if (this.isBSN()) {\n return this.formatBSN(value);\n }\n\n return value.replace(/ {2}/gi, \" \\u00A0\");\n }\n\n /**\n */\n removeFormat(value: ?string): string {\n if (value == null || value.toString() === \"\") {\n return \"\";\n }\n\n if (this.isIBAN() || this.isZipcode() || this.isBSN()) {\n return value.replace(/[^a-z0-9,]/gi, \"\");\n }\n\n return value;\n }\n\n /**\n */\n get validateValue(): string {\n return this.removeFormat(this.inputvalue);\n }\n\n /**\n */\n get inputvalue(): string {\n return this.getInputValue();\n }\n\n /**\n * Sets the input value to the value entered by the user\n */\n set inputvalue(value: string) {\n this._inputvalue = value;\n\n if (value == null) {\n this.value = value;\n } else {\n this.value = this.removeFormat(value);\n }\n\n this.validate(this.validateValue);\n }\n\n /**\n */\n get readonlyvalue(): string {\n if (typeof this.value === \"string\") {\n const formattedValue = this.formatValue(this.value);\n // fix for rendering of multiple spaces\n return formattedValue.replace(/ {2}/gi, \" \\u00A0\");\n }\n\n return this.value == null ? \"\" : this.value;\n }\n\n /**\n * Update the attribute by name and value\n */\n update(value: string): StringAttributeModel {\n if (this.inputvalue === value) {\n return this;\n }\n\n this.updateLastModification();\n this.inputvalue = value;\n\n return this;\n }\n\n /**\n */\n get readonlyWidth(): $Keys<typeof ATTRIBUTE_WIDTH> {\n if (this.isZipcode() || this.isBSN()) {\n return ATTRIBUTE_WIDTH.SMALL;\n }\n\n if (this.isIBAN()) {\n return ATTRIBUTE_WIDTH.LARGE;\n }\n\n // default value (also applied for email address + download attribute)\n return ATTRIBUTE_WIDTH.MEDIUM;\n }\n}\n"],"mappings":"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"}
@@ -1,5 +1,4 @@
1
1
  import _defineProperty from "@babel/runtime-corejs3/helpers/esm/defineProperty";
2
- import _Set from "@babel/runtime-corejs3/core-js-stable/set";
3
2
  import BaseModel from "../base/BaseModel";
4
3
  import createAttribute from "../attributes/_createAttribute";
5
4
  import { PARAMETER_SEPARATOR } from "../../constants/Constants";
@@ -84,13 +83,6 @@ export default class BaseFilterModel extends BaseModel {
84
83
  return this.getContribution("label", "");
85
84
  }
86
85
 
87
- /**
88
- * Inidiates if filter is multiplechoice
89
- */
90
- get isMultiple() {
91
- return this.getContribution("multiplechoice");
92
- }
93
-
94
86
  /**
95
87
  * Getting the name of the filter
96
88
  */
@@ -135,10 +127,6 @@ export default class BaseFilterModel extends BaseModel {
135
127
  * Getting the value of the filter
136
128
  */
137
129
  get value() {
138
- if (this.isMultiple) {
139
- // Returns unique array
140
- return [...new _Set(this.attribute?.value.split(","))];
141
- }
142
130
  return this.attribute?.value;
143
131
  }
144
132
 
@@ -1 +1 @@
1
- {"version":3,"file":"BaseFilterModel.js","names":["BaseModel","createAttribute","PARAMETER_SEPARATOR","IllegalStateException","BaseFilterModel","constructor","data","contributions","_defineProperty","_attribute","type","param","listKey","listkey","replace","context","_context","contextLabel","label","_listKey","key","getContribution","isMultiple","name","attribute","params","value","_Set","split","reset","update","isQuickSearch","quicksearch","isActive","initvalue","isValid","readonlyvalue"],"sources":["../../../src/models/filters/BaseFilterModel.js"],"sourcesContent":["// @flow\nimport BaseModel from \"../base/BaseModel\";\nimport createAttribute from \"../attributes/_createAttribute\";\nimport { PARAMETER_SEPARATOR } from \"../../constants/Constants\";\n\nimport type { AttributeType, FilterType } from \"../types\";\nimport { IllegalStateException } from \"../../exceptions\";\n\n/**\n * Base class for filters\n */\nexport default class BaseFilterModel extends BaseModel {\n _attribute: AttributeType | null = null;\n _context: Object;\n _listKey: string;\n\n /**\n */\n constructor(data: Object, contributions: Object) {\n super(data, contributions);\n\n this._attribute = this.createAttribute(\n this.type,\n this.param,\n this.data,\n this.contributions\n );\n\n if (this.contributions.listKey) {\n this.listkey = this.contributions.listKey;\n }\n }\n\n /**\n * Get the type of a filter.\n */\n get type(): string {\n return this.contributions.type\n ? this.contributions.type.replace(\"filter\", \"\")\n : \"string\";\n }\n\n /**\n * Create attribute through the attribute factory. Create type based on filter key without the filter suffix\n */\n createAttribute(\n type: string,\n param: string,\n data: Object,\n contributions: Object\n ): AttributeType | null {\n if (type === \"assignment\") {\n return null;\n }\n\n return createAttribute(param, data, {\n ...contributions,\n type: type,\n });\n }\n\n /**\n * Getting context data\n */\n get context(): Object {\n return this._context;\n }\n\n /**\n * Set context of filter\n */\n set context(context: Object) {\n this._context = context;\n }\n\n /**\n * Getting the context label\n */\n get contextLabel(): string {\n return this.context?.label ?? \"\";\n }\n\n /**\n * Getting key of the list these filters apply to\n */\n get listkey(): string {\n return this._listKey;\n }\n\n /**\n * Set key of list this filter belongs to\n */\n set listkey(key: string) {\n this._listKey = key;\n }\n\n /**\n * Getting the label of the filter\n */\n get label(): string {\n return this.getContribution(\"label\", \"\");\n }\n\n /**\n * Inidiates if filter is multiplechoice\n */\n get isMultiple(): boolean {\n return this.getContribution(\"multiplechoice\");\n }\n\n /**\n * Getting the name of the filter\n */\n get name(): string {\n if (this.listkey) {\n return this.listkey + PARAMETER_SEPARATOR + this.param;\n }\n\n return this.param;\n }\n\n /**\n * Getting the param name of the filter\n */\n get param(): string {\n return this.data.param ?? this.data.name;\n }\n\n /**\n * Get attribute of filter\n */\n get attribute(): AttributeType {\n if (!this._attribute) {\n throw new IllegalStateException(\n `Missing filter attribute on filter model: ${this.label}`\n );\n }\n return this._attribute;\n }\n\n /**\n * Retrieve the parameters with it's value for this filter\n */\n get params(): Array<{ name: string, value: ?string }> {\n if (!this.param) {\n return [];\n }\n\n return [\n {\n name: this.param,\n value: this.attribute?.value,\n },\n ];\n }\n\n /**\n * Getting the value of the filter\n */\n get value(): string | Array<string> {\n if (this.isMultiple) {\n // Returns unique array\n return [...new Set(this.attribute?.value.split(\",\"))];\n }\n\n return this.attribute?.value;\n }\n\n /**\n * Reset the value of this filter to undefined\n */\n reset(): FilterType {\n if (this.attribute) {\n this.attribute.reset();\n }\n\n return this;\n }\n\n /**\n * Update this filter with input name and value\n */\n update(attribute: AttributeType, value: string) {\n if (this.attribute) {\n this.attribute.update(value);\n }\n }\n\n /**\n * Inidicates if filter is a quick search filter\n */\n isQuickSearch(): boolean {\n return this.contributions.quicksearch === true;\n }\n\n /**\n * Inidiates if filter is active\n */\n isActive(): boolean {\n return this.attribute !== null && this.attribute.initvalue !== null;\n }\n\n /**\n * Inidiates if filter is valid\n */\n get isValid(): boolean {\n return this.attribute !== null && this.attribute.isValid;\n }\n\n /**\n */\n get readonlyvalue(): string {\n if (this.attribute) {\n return this.attribute.readonlyvalue;\n }\n return \"\";\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"BaseFilterModel.js","names":["BaseModel","createAttribute","PARAMETER_SEPARATOR","IllegalStateException","BaseFilterModel","constructor","data","contributions","_defineProperty","_attribute","type","param","listKey","listkey","replace","context","_context","contextLabel","label","_listKey","key","getContribution","name","attribute","params","value","reset","update","isQuickSearch","quicksearch","isActive","initvalue","isValid","readonlyvalue"],"sources":["../../../src/models/filters/BaseFilterModel.js"],"sourcesContent":["// @flow\nimport BaseModel from \"../base/BaseModel\";\nimport createAttribute from \"../attributes/_createAttribute\";\nimport { PARAMETER_SEPARATOR } from \"../../constants/Constants\";\n\nimport type { AttributeType, FilterType } from \"../types\";\nimport { IllegalStateException } from \"../../exceptions\";\n\n/**\n * Base class for filters\n */\nexport default class BaseFilterModel extends BaseModel {\n _attribute: AttributeType | null = null;\n _context: Object;\n _listKey: string;\n\n /**\n */\n constructor(data: Object, contributions: Object) {\n super(data, contributions);\n\n this._attribute = this.createAttribute(\n this.type,\n this.param,\n this.data,\n this.contributions,\n );\n\n if (this.contributions.listKey) {\n this.listkey = this.contributions.listKey;\n }\n }\n\n /**\n * Get the type of a filter.\n */\n get type(): string {\n return this.contributions.type\n ? this.contributions.type.replace(\"filter\", \"\")\n : \"string\";\n }\n\n /**\n * Create attribute through the attribute factory. Create type based on filter key without the filter suffix\n */\n createAttribute(\n type: string,\n param: string,\n data: Object,\n contributions: Object,\n ): AttributeType | null {\n if (type === \"assignment\") {\n return null;\n }\n\n return createAttribute(param, data, {\n ...contributions,\n type: type,\n });\n }\n\n /**\n * Getting context data\n */\n get context(): Object {\n return this._context;\n }\n\n /**\n * Set context of filter\n */\n set context(context: Object) {\n this._context = context;\n }\n\n /**\n * Getting the context label\n */\n get contextLabel(): string {\n return this.context?.label ?? \"\";\n }\n\n /**\n * Getting key of the list these filters apply to\n */\n get listkey(): string {\n return this._listKey;\n }\n\n /**\n * Set key of list this filter belongs to\n */\n set listkey(key: string) {\n this._listKey = key;\n }\n\n /**\n * Getting the label of the filter\n */\n get label(): string {\n return this.getContribution(\"label\", \"\");\n }\n\n /**\n * Getting the name of the filter\n */\n get name(): string {\n if (this.listkey) {\n return this.listkey + PARAMETER_SEPARATOR + this.param;\n }\n\n return this.param;\n }\n\n /**\n * Getting the param name of the filter\n */\n get param(): string {\n return this.data.param ?? this.data.name;\n }\n\n /**\n * Get attribute of filter\n */\n get attribute(): AttributeType {\n if (!this._attribute) {\n throw new IllegalStateException(\n `Missing filter attribute on filter model: ${this.label}`,\n );\n }\n return this._attribute;\n }\n\n /**\n * Retrieve the parameters with it's value for this filter\n */\n get params(): Array<{ name: string, value: ?string }> {\n if (!this.param) {\n return [];\n }\n\n return [\n {\n name: this.param,\n value: this.attribute?.value,\n },\n ];\n }\n\n /**\n * Getting the value of the filter\n */\n get value(): string | null {\n return this.attribute?.value;\n }\n\n /**\n * Reset the value of this filter to undefined\n */\n reset(): FilterType {\n if (this.attribute) {\n this.attribute.reset();\n }\n\n return this;\n }\n\n /**\n * Update this filter with input name and value\n */\n update(attribute: AttributeType, value: string) {\n if (this.attribute) {\n this.attribute.update(value);\n }\n }\n\n /**\n * Inidicates if filter is a quick search filter\n */\n isQuickSearch(): boolean {\n return this.contributions.quicksearch === true;\n }\n\n /**\n * Inidiates if filter is active\n */\n isActive(): boolean {\n return this.attribute !== null && this.attribute.initvalue !== null;\n }\n\n /**\n * Inidiates if filter is valid\n */\n get isValid(): boolean {\n return this.attribute !== null && this.attribute.isValid;\n }\n\n /**\n */\n get readonlyvalue(): string {\n if (this.attribute) {\n return this.attribute.readonlyvalue;\n }\n return \"\";\n }\n}\n"],"mappings":"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"}
@@ -4,11 +4,12 @@ import _Object$keys from "@babel/runtime-corejs3/core-js-stable/object/keys";
4
4
  import _findInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/find";
5
5
  import _includesInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/includes";
6
6
  import BaseCollection from "../base/BaseCollection";
7
+ import StringFilterModel from "../filters/StringFilterModel";
7
8
  import RangeFilterModel from "../filters/RangeFilterModel";
8
9
  import AssignmentFilterModel from "../filters/AssignmentFilterModel";
9
- import FilterModel from "../filters/FilterModel";
10
10
  import ConceptIndexFilterModel from "../filters/ConceptIndexFilterModel";
11
11
  import CompositeAttributeModel from "../attributes/CompositeAttributeModel";
12
+ import FilterModel from "../filters/FilterModel";
12
13
  /**
13
14
  * Contains a collection of filters
14
15
  */
@@ -58,6 +59,9 @@ export default class FilterCollection extends BaseCollection {
58
59
  if (type === "assignmentfilter") {
59
60
  return new AssignmentFilterModel(data, contributions);
60
61
  }
62
+ if (type === "stringfilter") {
63
+ return new StringFilterModel(data, contributions);
64
+ }
61
65
  return new FilterModel(data, contributions);
62
66
  }
63
67
 
@@ -1 +1 @@
1
- {"version":3,"file":"FilterCollection.js","names":["BaseCollection","RangeFilterModel","AssignmentFilterModel","FilterModel","ConceptIndexFilterModel","CompositeAttributeModel","FilterCollection","constructor","data","arguments","length","undefined","contributions","Array","isArray","_filterInstanceProperty","_context","_context2","collection","_mapInstanceProperty","call","filterContribution","_Object$keys","filterKey","filterData","filterContributionByKey","filter","createFilter","dynamicschema","listkey","contexts","contextid","_context3","filterContext","_findInstanceProperty","context","id","type","_includesInstanceProperty","reset","_context4","checkRangeFilterByAttributeKey","key","rangeAttribute","attribute","start","end","checkAssignmentFilterByAttributeKey","user","assignmenttype","getFilterByAttributeKey","_context5","update","value","_context6","filterToUpdate","parentKey","Error","newFilter","clone","name","isValid","every","hasActiveFilters","some","isActive"],"sources":["../../../src/models/filters/FilterCollection.js"],"sourcesContent":["// @flow\nimport BaseCollection from \"../base/BaseCollection\";\n\nimport RangeFilterModel from \"../filters/RangeFilterModel\";\nimport AssignmentFilterModel from \"../filters/AssignmentFilterModel\";\nimport FilterModel from \"../filters/FilterModel\";\nimport ConceptIndexFilterModel from \"../filters/ConceptIndexFilterModel\";\nimport CompositeAttributeModel from \"../attributes/CompositeAttributeModel\";\n\nimport type { AttributeType, FilterType } from \"../types\";\n\n/**\n * Contains a collection of filters\n */\nexport default class FilterCollection extends BaseCollection<FilterType> {\n /**\n * Construct a collection of filters\n */\n constructor(data: Object = {}, contributions: Object = {}) {\n super();\n\n if (data && contributions && Array.isArray(contributions.filter)) {\n this.collection = contributions.filter\n .filter((filterContribution) => Object.keys(filterContribution)[0])\n .map((filterContribution) => {\n const [filterKey] = Object.keys(filterContribution);\n const filterData = data[filterKey];\n const filterContributionByKey = filterContribution[filterKey];\n\n const filter = this.createFilter(\n filterKey,\n {\n ...filterData,\n dynamicschema: contributions.dynamicschema,\n },\n filterContributionByKey,\n );\n\n if (contributions.listkey) {\n filter.listkey = contributions.listkey;\n }\n\n if (contributions.contexts && filterContributionByKey.contextid) {\n const filterContext = contributions.contexts.find(\n (context) => context.id === filterContributionByKey.contextid,\n );\n if (filterContext) {\n filter.context = filterContext;\n }\n }\n\n return filter;\n });\n }\n }\n\n /**\n */\n createFilter(\n filterKey: string,\n data: Object,\n contributions: Object,\n ): FilterType {\n const type = contributions.type || \"stringfilter\";\n if (type === \"choicefilter\" && filterKey === \"index\") {\n return new ConceptIndexFilterModel(data, contributions);\n }\n\n if (type.includes(\"rangefilter\")) {\n return new RangeFilterModel(data, contributions);\n }\n\n if (type === \"assignmentfilter\") {\n return new AssignmentFilterModel(data, contributions);\n }\n\n return new FilterModel(data, contributions);\n }\n\n /**\n * Call the reset function on all filters\n *\n * @see {FilterType#reset()}\n */\n reset(): FilterCollection {\n this.collection = this.collection.map((filter) => filter.reset());\n\n return this;\n }\n\n /**\n * Checks if range attribute key equals key\n */\n checkRangeFilterByAttributeKey(\n filter: RangeFilterModel,\n key: string,\n ): boolean {\n const rangeAttribute = filter.attribute;\n\n if (rangeAttribute instanceof CompositeAttributeModel) {\n return (\n rangeAttribute.key === key ||\n (rangeAttribute.start && rangeAttribute.start.key === key) ||\n (rangeAttribute.end && rangeAttribute.end.key === key)\n );\n }\n\n return false;\n }\n\n /**\n * Check if assignment filter attribute matches key\n */\n checkAssignmentFilterByAttributeKey(\n filter: AssignmentFilterModel,\n key: string,\n ): boolean {\n return (\n filter.key === key ||\n filter.user?.key === key ||\n filter.assignmenttype?.key === key\n );\n }\n\n /**\n * Getting the filter by name\n */\n getFilterByAttributeKey(key: string): FilterType | null {\n return (\n this.find((filter) => {\n if (filter instanceof RangeFilterModel) {\n return this.checkRangeFilterByAttributeKey(filter, key);\n }\n\n if (filter instanceof AssignmentFilterModel) {\n return this.checkAssignmentFilterByAttributeKey(filter, key);\n }\n\n return filter.attribute?.key === key;\n }) || null\n );\n }\n\n /**\n * Update Filter by input name and value\n */\n update(attribute: AttributeType, value: string): void {\n const filterToUpdate = attribute.parentKey\n ? this.getFilterByAttributeKey(attribute.parentKey)\n : this.getFilterByAttributeKey(attribute.key);\n\n if (!filterToUpdate) {\n throw new Error(`Can not find filter by attribute key: ${attribute.key}`);\n }\n\n const newFilter = filterToUpdate.clone();\n newFilter.update(attribute, value);\n\n this.collection = this.collection.map((filter) => {\n if (filter.name === newFilter.name) {\n return newFilter;\n }\n\n return filter;\n });\n }\n\n /**\n * Retrieve if all filters are valid\n */\n get isValid(): boolean {\n return this.collection.every((filter) => filter.isValid);\n }\n\n /**\n * Indicates if an active filter is present in the collection\n */\n hasActiveFilters(): boolean {\n return this.collection.some((filter) => filter.isActive());\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"FilterCollection.js","names":["BaseCollection","StringFilterModel","RangeFilterModel","AssignmentFilterModel","ConceptIndexFilterModel","CompositeAttributeModel","FilterModel","FilterCollection","constructor","data","arguments","length","undefined","contributions","Array","isArray","_filterInstanceProperty","_context","_context2","collection","_mapInstanceProperty","call","filterContribution","_Object$keys","filterKey","filterData","filterContributionByKey","filter","createFilter","dynamicschema","listkey","contexts","contextid","_context3","filterContext","_findInstanceProperty","context","id","type","_includesInstanceProperty","reset","_context4","checkRangeFilterByAttributeKey","key","rangeAttribute","attribute","start","end","checkAssignmentFilterByAttributeKey","user","assignmenttype","getFilterByAttributeKey","_context5","update","value","_context6","filterToUpdate","parentKey","Error","newFilter","clone","name","isValid","every","hasActiveFilters","some","isActive"],"sources":["../../../src/models/filters/FilterCollection.js"],"sourcesContent":["// @flow\nimport BaseCollection from \"../base/BaseCollection\";\n\nimport StringFilterModel from \"../filters/StringFilterModel\";\nimport RangeFilterModel from \"../filters/RangeFilterModel\";\nimport AssignmentFilterModel from \"../filters/AssignmentFilterModel\";\nimport ConceptIndexFilterModel from \"../filters/ConceptIndexFilterModel\";\nimport CompositeAttributeModel from \"../attributes/CompositeAttributeModel\";\nimport FilterModel from \"../filters/FilterModel\";\n\nimport type { AttributeType, FilterType } from \"../types\";\n\n/**\n * Contains a collection of filters\n */\nexport default class FilterCollection extends BaseCollection<FilterType> {\n /**\n * Construct a collection of filters\n */\n constructor(data: Object = {}, contributions: Object = {}) {\n super();\n\n if (data && contributions && Array.isArray(contributions.filter)) {\n this.collection = contributions.filter\n .filter((filterContribution) => Object.keys(filterContribution)[0])\n .map((filterContribution) => {\n const [filterKey] = Object.keys(filterContribution);\n const filterData = data[filterKey];\n const filterContributionByKey = filterContribution[filterKey];\n\n const filter = this.createFilter(\n filterKey,\n {\n ...filterData,\n dynamicschema: contributions.dynamicschema,\n },\n filterContributionByKey,\n );\n\n if (contributions.listkey) {\n filter.listkey = contributions.listkey;\n }\n\n if (contributions.contexts && filterContributionByKey.contextid) {\n const filterContext = contributions.contexts.find(\n (context) => context.id === filterContributionByKey.contextid,\n );\n if (filterContext) {\n filter.context = filterContext;\n }\n }\n\n return filter;\n });\n }\n }\n\n /**\n */\n createFilter(\n filterKey: string,\n data: Object,\n contributions: Object,\n ): FilterType {\n const type = contributions.type || \"stringfilter\";\n if (type === \"choicefilter\" && filterKey === \"index\") {\n return new ConceptIndexFilterModel(data, contributions);\n }\n\n if (type.includes(\"rangefilter\")) {\n return new RangeFilterModel(data, contributions);\n }\n\n if (type === \"assignmentfilter\") {\n return new AssignmentFilterModel(data, contributions);\n }\n\n if (type === \"stringfilter\") {\n return new StringFilterModel(data, contributions);\n }\n\n return new FilterModel(data, contributions);\n }\n\n /**\n * Call the reset function on all filters\n *\n * @see {FilterType#reset()}\n */\n reset(): FilterCollection {\n this.collection = this.collection.map((filter) => filter.reset());\n\n return this;\n }\n\n /**\n * Checks if range attribute key equals key\n */\n checkRangeFilterByAttributeKey(\n filter: RangeFilterModel,\n key: string,\n ): boolean {\n const rangeAttribute = filter.attribute;\n\n if (rangeAttribute instanceof CompositeAttributeModel) {\n return (\n rangeAttribute.key === key ||\n (rangeAttribute.start && rangeAttribute.start.key === key) ||\n (rangeAttribute.end && rangeAttribute.end.key === key)\n );\n }\n\n return false;\n }\n\n /**\n * Check if assignment filter attribute matches key\n */\n checkAssignmentFilterByAttributeKey(\n filter: AssignmentFilterModel,\n key: string,\n ): boolean {\n return (\n filter.key === key ||\n filter.user?.key === key ||\n filter.assignmenttype?.key === key\n );\n }\n\n /**\n * Getting the filter by name\n */\n getFilterByAttributeKey(key: string): FilterType | null {\n return (\n this.find((filter) => {\n if (filter instanceof RangeFilterModel) {\n return this.checkRangeFilterByAttributeKey(filter, key);\n }\n\n if (filter instanceof AssignmentFilterModel) {\n return this.checkAssignmentFilterByAttributeKey(filter, key);\n }\n\n return filter.attribute?.key === key;\n }) || null\n );\n }\n\n /**\n * Update Filter by input name and value\n */\n update(attribute: AttributeType, value: string): void {\n const filterToUpdate = attribute.parentKey\n ? this.getFilterByAttributeKey(attribute.parentKey)\n : this.getFilterByAttributeKey(attribute.key);\n\n if (!filterToUpdate) {\n throw new Error(`Can not find filter by attribute key: ${attribute.key}`);\n }\n\n const newFilter = filterToUpdate.clone();\n newFilter.update(attribute, value);\n\n this.collection = this.collection.map((filter) => {\n if (filter.name === newFilter.name) {\n return newFilter;\n }\n\n return filter;\n });\n }\n\n /**\n * Retrieve if all filters are valid\n */\n get isValid(): boolean {\n return this.collection.every((filter) => filter.isValid);\n }\n\n /**\n * Indicates if an active filter is present in the collection\n */\n hasActiveFilters(): boolean {\n return this.collection.some((filter) => filter.isActive());\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,109 @@
1
+ import _defineProperty from "@babel/runtime-corejs3/helpers/esm/defineProperty";
2
+ import _mapInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/map";
3
+ import _trimInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/trim";
4
+ import BaseFilterModel from "./BaseFilterModel";
5
+ /**
6
+ * StringFilterModel can handle string filters with multiple setting
7
+ */
8
+ export default class StringFilterModel extends BaseFilterModel {
9
+ /**
10
+ */
11
+ constructor(data, contributions) {
12
+ super(data, contributions);
13
+ _defineProperty(this, "_isValid", true);
14
+ _defineProperty(this, "_value", void 0);
15
+ _defineProperty(this, "_inputvalue", void 0);
16
+ this.update(this.attribute, data.value ?? "");
17
+
18
+ // when formatted value set this to initial input value
19
+ this._inputvalue = this._value;
20
+ }
21
+
22
+ /**
23
+ * Inidiates if filter is multiplechoice
24
+ */
25
+ get isMultiple() {
26
+ return this.getContribution("multiplechoice");
27
+ }
28
+
29
+ /**
30
+ * Retrieve the parameters with its value for this filter
31
+ */
32
+ get params() {
33
+ if (!this.param) {
34
+ return [];
35
+ }
36
+ return [{
37
+ name: this.param,
38
+ value: this.value
39
+ }];
40
+ }
41
+
42
+ /**
43
+ * Getting the value of the filter
44
+ */
45
+ get value() {
46
+ return this._value;
47
+ }
48
+
49
+ /**
50
+ */
51
+ get inputvalue() {
52
+ return this._inputvalue;
53
+ }
54
+
55
+ /**
56
+ * Reset the value of this filter to undefined
57
+ */
58
+ reset() {
59
+ this._inputvalue = null;
60
+ this._value = null;
61
+ return this;
62
+ }
63
+
64
+ /**
65
+ */
66
+ get isValid() {
67
+ return this._isValid;
68
+ }
69
+
70
+ /**
71
+ * Update this filter with input name and value
72
+ */
73
+ update(attribute, value) {
74
+ this._inputvalue = typeof value !== "string" ? value.toString() : value;
75
+ if (this.operator === "exactly" || this.operator === "isNot") {
76
+ var _context, _context2;
77
+ const values = this.isMultiple ? _mapInstanceProperty(_context = this._inputvalue.split(",")).call(_context, val => _trimInstanceProperty(val).call(val)) : [_trimInstanceProperty(_context2 = this._inputvalue).call(_context2)];
78
+ const outputValues = [];
79
+ for (const val of values) {
80
+ const formattedValue = this.formatValue(val);
81
+ if (formattedValue !== "") {
82
+ outputValues.push(formattedValue);
83
+
84
+ // $FlowIssue[unsafe-arithmetic]
85
+ this._isValid &= this.attribute.validate(formattedValue);
86
+ }
87
+ }
88
+ this._value = outputValues.join(",");
89
+ } else {
90
+ this._value = value;
91
+ }
92
+ }
93
+
94
+ /**
95
+ */
96
+ get operator() {
97
+ return this.getContribution("operator", "");
98
+ }
99
+
100
+ /**
101
+ */
102
+ formatValue(value) {
103
+ if (this.operator === "exactly" || this.operator === "isNot") {
104
+ return this.attribute.formatValue(value);
105
+ }
106
+ return value;
107
+ }
108
+ }
109
+ //# sourceMappingURL=StringFilterModel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StringFilterModel.js","names":["BaseFilterModel","StringFilterModel","constructor","data","contributions","_defineProperty","update","attribute","value","_inputvalue","_value","isMultiple","getContribution","params","param","name","inputvalue","reset","isValid","_isValid","toString","operator","_context","_context2","values","_mapInstanceProperty","split","call","val","_trimInstanceProperty","outputValues","formattedValue","formatValue","push","validate","join"],"sources":["../../../src/models/filters/StringFilterModel.js"],"sourcesContent":["// @flow\nimport BaseFilterModel from \"./BaseFilterModel\";\n\nimport type { AttributeType, FilterType } from \"../types\";\n\n/**\n * StringFilterModel can handle string filters with multiple setting\n */\nexport default class StringFilterModel extends BaseFilterModel {\n _isValid: boolean = true;\n _value: string | null;\n _inputvalue: string | null;\n\n /**\n */\n constructor(data: Object, contributions: Object) {\n super(data, contributions);\n\n this.update(this.attribute, data.value ?? \"\");\n\n // when formatted value set this to initial input value\n this._inputvalue = this._value;\n }\n\n /**\n * Inidiates if filter is multiplechoice\n */\n get isMultiple(): boolean {\n return this.getContribution(\"multiplechoice\");\n }\n\n /**\n * Retrieve the parameters with its value for this filter\n */\n get params(): Array<{ name: string, value: ?string }> {\n if (!this.param) {\n return [];\n }\n\n return [\n {\n name: this.param,\n value: this.value,\n },\n ];\n }\n\n /**\n * Getting the value of the filter\n */\n get value(): string | null {\n return this._value;\n }\n\n /**\n */\n get inputvalue(): string | null {\n return this._inputvalue;\n }\n\n /**\n * Reset the value of this filter to undefined\n */\n reset(): FilterType {\n this._inputvalue = null;\n this._value = null;\n\n return this;\n }\n\n /**\n */\n get isValid(): boolean {\n return this._isValid;\n }\n\n /**\n * Update this filter with input name and value\n */\n update(attribute: AttributeType, value: string) {\n this._inputvalue = typeof value !== \"string\" ? value.toString() : value;\n\n if (this.operator === \"exactly\" || this.operator === \"isNot\") {\n const values = this.isMultiple\n ? this._inputvalue.split(\",\").map((val) => val.trim())\n : [this._inputvalue.trim()];\n\n const outputValues = [];\n for (const val of values) {\n const formattedValue = this.formatValue(val);\n if (formattedValue !== \"\") {\n outputValues.push(formattedValue);\n\n // $FlowIssue[unsafe-arithmetic]\n this._isValid &= this.attribute.validate(formattedValue);\n }\n }\n\n this._value = outputValues.join(\",\");\n } else {\n this._value = value;\n }\n }\n\n /**\n */\n get operator(): string {\n return this.getContribution(\"operator\", \"\");\n }\n\n /**\n */\n formatValue(value: string): string {\n if (this.operator === \"exactly\" || this.operator === \"isNot\") {\n return this.attribute.formatValue(value);\n }\n return value;\n }\n}\n"],"mappings":"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"}
@@ -230,7 +230,7 @@ class Href {
230
230
  getQuerystring() {
231
231
  var _context6, _context7;
232
232
  let withPrefix = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
233
- return _mapInstanceProperty(_context6 = _filterInstanceProperty(_context7 = this.parameters).call(_context7, param => param.value != null)).call(_context6, param => param.toQuerystring(withPrefix)).join("&");
233
+ return _mapInstanceProperty(_context6 = _filterInstanceProperty(_context7 = this.parameters).call(_context7, param => param.value != null && param.value !== "")).call(_context6, param => param.toQuerystring(withPrefix)).join("&");
234
234
  }
235
235
 
236
236
  /**