@beinformed/ui 1.23.1 → 1.23.2

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.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
4
 
5
+ ### [1.23.2](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/compare/v1.23.1...v1.23.2) (2022-11-16)
6
+
5
7
  ### [1.23.1](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/compare/v1.23.0...v1.23.1) (2022-09-26)
6
8
 
7
9
 
@@ -92,22 +92,26 @@ class NumberGroupingConstraint {
92
92
  }
93
93
  /**
94
94
  */
95
+ // $FlowFixMe
95
96
 
96
97
 
97
98
  hasCorrectGrouping(value) {
98
- if (!_includesInstanceProperty(value).call(value, this.groupingSeparator)) {
99
+ // A negative or a negative value may cause an incorrect group length compared to groupSize. To avoid this, the negative or positive sign must be removed from the value.
100
+ const absStringValue = value.replace("-", "").replace("+", "");
101
+
102
+ if (!_includesInstanceProperty(absStringValue).call(absStringValue, this.groupingSeparator)) {
99
103
  return true;
100
104
  }
101
105
 
102
- let integer = value;
106
+ let integer = absStringValue;
103
107
 
104
- if (this.decimalSeparator !== "" && _includesInstanceProperty(value).call(value, this.decimalSeparator)) {
108
+ if (this.decimalSeparator !== "" && _includesInstanceProperty(absStringValue).call(absStringValue, this.decimalSeparator)) {
105
109
  // decimal before grouping
106
- if (value.indexOf(this.decimalSeparator) < value.indexOf(this.groupingSeparator)) {
110
+ if (absStringValue.indexOf(this.decimalSeparator) < absStringValue.indexOf(this.groupingSeparator)) {
107
111
  return false;
108
112
  }
109
113
 
110
- integer = value.substr(0, value.indexOf(this.decimalSeparator));
114
+ integer = absStringValue.substring(0, absStringValue.indexOf(this.decimalSeparator));
111
115
  }
112
116
 
113
117
  let groups = integer.split(this.groupingSeparator); // when the first item is smaller than group size, remove it from check
@@ -1 +1 @@
1
- {"version":3,"file":"NumberGroupingConstraint.js","names":["DecimalFormat","DEFAULT_GROUPING_SIZE","NumberGroupingConstraint","constructor","groupingSeparator","decimalSeparator","format","_decimalSeparator","_groupingSeparator","_format","id","groupSize","fromFormat","comma","hasValidation","defaultMessage","parameters","hasCorrectGrouping","value","integer","indexOf","substr","groups","split","length","every","group","validate","isMandatoryConstraint"],"sources":["../../../../src/models/attributes/input-constraints/NumberGroupingConstraint.js"],"sourcesContent":["// @flow\nimport DecimalFormat from \"../../../utils/number/DecimalFormat\";\n\nimport type { IConstraintModel } from \"../../types\";\n\nconst DEFAULT_GROUPING_SIZE = 3;\n\n/**\n */\nclass NumberGroupingConstraint implements IConstraintModel {\n _decimalSeparator: string;\n _groupingSeparator: string;\n _format: string;\n\n /**\n */\n constructor(\n groupingSeparator: string = \",\",\n decimalSeparator: string = \".\",\n format: ?string = \"0\"\n ) {\n this._decimalSeparator = decimalSeparator;\n this._groupingSeparator = groupingSeparator;\n this._format = format ?? \"0\";\n }\n\n /**\n */\n get id(): string {\n return \"Constraint.Number.GroupingSeparator\";\n }\n\n /**\n */\n get decimalSeparator(): string {\n return this._decimalSeparator;\n }\n\n /**\n */\n get groupingSeparator(): string {\n return this._groupingSeparator;\n }\n\n /**\n */\n get format(): string {\n return this._format;\n }\n\n /**\n */\n get groupSize(): number {\n if (this.format) {\n const fromFormat = new DecimalFormat(this.format).comma;\n if (fromFormat > 0) {\n return fromFormat;\n }\n }\n\n return DEFAULT_GROUPING_SIZE;\n }\n\n /**\n */\n hasValidation(): boolean {\n return true;\n }\n\n /**\n */\n get defaultMessage(): string {\n return \"Group divider '${group-divider}' must be correctly placed\"; // NOSONAR\n }\n\n /**\n */\n get parameters(): { \"group-divider\": string } {\n return { \"group-divider\": this.groupingSeparator };\n }\n\n /**\n */\n hasCorrectGrouping(value: string): boolean {\n if (!value.includes(this.groupingSeparator)) {\n return true;\n }\n\n let integer = value;\n if (this.decimalSeparator !== \"\" && value.includes(this.decimalSeparator)) {\n // decimal before grouping\n if (\n value.indexOf(this.decimalSeparator) <\n value.indexOf(this.groupingSeparator)\n ) {\n return false;\n }\n\n integer = value.substr(0, value.indexOf(this.decimalSeparator));\n }\n\n let groups = integer.split(this.groupingSeparator);\n\n // when the first item is smaller than group size, remove it from check\n if (groups[0].length < this.groupSize) {\n groups = groups.slice(1);\n }\n\n return groups.every((group) => group.length === this.groupSize);\n }\n\n /**\n */\n validate(value: string | number): boolean {\n return (\n this.groupingSeparator === \"\" ||\n typeof value !== \"string\" ||\n !value.includes(this.groupingSeparator) ||\n this.hasCorrectGrouping(value)\n );\n }\n\n /**\n */\n get isMandatoryConstraint(): boolean {\n return false;\n }\n}\n\nexport default NumberGroupingConstraint;\n"],"mappings":"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"}
1
+ {"version":3,"file":"NumberGroupingConstraint.js","names":["DecimalFormat","DEFAULT_GROUPING_SIZE","NumberGroupingConstraint","constructor","groupingSeparator","decimalSeparator","format","_decimalSeparator","_groupingSeparator","_format","id","groupSize","fromFormat","comma","hasValidation","defaultMessage","parameters","hasCorrectGrouping","value","absStringValue","replace","integer","indexOf","substring","groups","split","length","every","group","validate","isMandatoryConstraint"],"sources":["../../../../src/models/attributes/input-constraints/NumberGroupingConstraint.js"],"sourcesContent":["// @flow\nimport DecimalFormat from \"../../../utils/number/DecimalFormat\";\n\nimport type { IConstraintModel } from \"../../types\";\n\nconst DEFAULT_GROUPING_SIZE = 3;\n\n/**\n */\nclass NumberGroupingConstraint implements IConstraintModel {\n _decimalSeparator: string;\n _groupingSeparator: string;\n _format: string;\n\n /**\n */\n constructor(\n groupingSeparator: string = \",\",\n decimalSeparator: string = \".\",\n format: ?string = \"0\"\n ) {\n this._decimalSeparator = decimalSeparator;\n this._groupingSeparator = groupingSeparator;\n this._format = format ?? \"0\";\n }\n\n /**\n */\n get id(): string {\n return \"Constraint.Number.GroupingSeparator\";\n }\n\n /**\n */\n get decimalSeparator(): string {\n return this._decimalSeparator;\n }\n\n /**\n */\n get groupingSeparator(): string {\n return this._groupingSeparator;\n }\n\n /**\n */\n get format(): string {\n return this._format;\n }\n\n /**\n */\n get groupSize(): number {\n if (this.format) {\n const fromFormat = new DecimalFormat(this.format).comma;\n if (fromFormat > 0) {\n return fromFormat;\n }\n }\n\n return DEFAULT_GROUPING_SIZE;\n }\n\n /**\n */\n hasValidation(): boolean {\n return true;\n }\n\n /**\n */\n get defaultMessage(): string {\n return \"Group divider '${group-divider}' must be correctly placed\"; // NOSONAR\n }\n\n /**\n */\n get parameters(): { \"group-divider\": string } {\n return { \"group-divider\": this.groupingSeparator };\n }\n\n /**\n */\n // $FlowFixMe\n hasCorrectGrouping(value: string) {\n // A negative or a negative value may cause an incorrect group length compared to groupSize. To avoid this, the negative or positive sign must be removed from the value.\n const absStringValue = value.replace(\"-\", \"\").replace(\"+\", \"\");\n\n if (!absStringValue.includes(this.groupingSeparator)) {\n return true;\n }\n\n let integer = absStringValue;\n if (\n this.decimalSeparator !== \"\" &&\n absStringValue.includes(this.decimalSeparator)\n ) {\n // decimal before grouping\n if (\n absStringValue.indexOf(this.decimalSeparator) <\n absStringValue.indexOf(this.groupingSeparator)\n ) {\n return false;\n }\n\n integer = absStringValue.substring(\n 0,\n absStringValue.indexOf(this.decimalSeparator)\n );\n }\n\n let groups = integer.split(this.groupingSeparator);\n\n // when the first item is smaller than group size, remove it from check\n if (groups[0].length < this.groupSize) {\n groups = groups.slice(1);\n }\n\n return groups.every((group) => group.length === this.groupSize);\n }\n\n /**\n */\n validate(value: string | number): boolean {\n return (\n this.groupingSeparator === \"\" ||\n typeof value !== \"string\" ||\n !value.includes(this.groupingSeparator) ||\n this.hasCorrectGrouping(value)\n );\n }\n\n /**\n */\n get isMandatoryConstraint(): boolean {\n return false;\n }\n}\n\nexport default NumberGroupingConstraint;\n"],"mappings":"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"}
@@ -101,22 +101,26 @@ class NumberGroupingConstraint {
101
101
  }
102
102
  /**
103
103
  */
104
+ // $FlowFixMe
104
105
 
105
106
 
106
107
  hasCorrectGrouping(value) {
107
- if (!(0, _includes.default)(value).call(value, this.groupingSeparator)) {
108
+ // A negative or a negative value may cause an incorrect group length compared to groupSize. To avoid this, the negative or positive sign must be removed from the value.
109
+ const absStringValue = value.replace("-", "").replace("+", "");
110
+
111
+ if (!(0, _includes.default)(absStringValue).call(absStringValue, this.groupingSeparator)) {
108
112
  return true;
109
113
  }
110
114
 
111
- let integer = value;
115
+ let integer = absStringValue;
112
116
 
113
- if (this.decimalSeparator !== "" && (0, _includes.default)(value).call(value, this.decimalSeparator)) {
117
+ if (this.decimalSeparator !== "" && (0, _includes.default)(absStringValue).call(absStringValue, this.decimalSeparator)) {
114
118
  // decimal before grouping
115
- if (value.indexOf(this.decimalSeparator) < value.indexOf(this.groupingSeparator)) {
119
+ if (absStringValue.indexOf(this.decimalSeparator) < absStringValue.indexOf(this.groupingSeparator)) {
116
120
  return false;
117
121
  }
118
122
 
119
- integer = value.substr(0, value.indexOf(this.decimalSeparator));
123
+ integer = absStringValue.substring(0, absStringValue.indexOf(this.decimalSeparator));
120
124
  }
121
125
 
122
126
  let groups = integer.split(this.groupingSeparator); // when the first item is smaller than group size, remove it from check
@@ -81,22 +81,32 @@ class NumberGroupingConstraint implements IConstraintModel {
81
81
 
82
82
  /**
83
83
  */
84
- hasCorrectGrouping(value: string): boolean {
85
- if (!value.includes(this.groupingSeparator)) {
84
+ // $FlowFixMe
85
+ hasCorrectGrouping(value: string) {
86
+ // A negative or a negative value may cause an incorrect group length compared to groupSize. To avoid this, the negative or positive sign must be removed from the value.
87
+ const absStringValue = value.replace("-", "").replace("+", "");
88
+
89
+ if (!absStringValue.includes(this.groupingSeparator)) {
86
90
  return true;
87
91
  }
88
92
 
89
- let integer = value;
90
- if (this.decimalSeparator !== "" && value.includes(this.decimalSeparator)) {
93
+ let integer = absStringValue;
94
+ if (
95
+ this.decimalSeparator !== "" &&
96
+ absStringValue.includes(this.decimalSeparator)
97
+ ) {
91
98
  // decimal before grouping
92
99
  if (
93
- value.indexOf(this.decimalSeparator) <
94
- value.indexOf(this.groupingSeparator)
100
+ absStringValue.indexOf(this.decimalSeparator) <
101
+ absStringValue.indexOf(this.groupingSeparator)
95
102
  ) {
96
103
  return false;
97
104
  }
98
105
 
99
- integer = value.substr(0, value.indexOf(this.decimalSeparator));
106
+ integer = absStringValue.substring(
107
+ 0,
108
+ absStringValue.indexOf(this.decimalSeparator)
109
+ );
100
110
  }
101
111
 
102
112
  let groups = integer.split(this.groupingSeparator);
@@ -1 +1 @@
1
- {"version":3,"file":"NumberGroupingConstraint.js","names":["DEFAULT_GROUPING_SIZE","NumberGroupingConstraint","constructor","groupingSeparator","decimalSeparator","format","_decimalSeparator","_groupingSeparator","_format","id","groupSize","fromFormat","DecimalFormat","comma","hasValidation","defaultMessage","parameters","hasCorrectGrouping","value","integer","indexOf","substr","groups","split","length","every","group","validate","isMandatoryConstraint"],"sources":["../../../../src/models/attributes/input-constraints/NumberGroupingConstraint.js"],"sourcesContent":["// @flow\nimport DecimalFormat from \"../../../utils/number/DecimalFormat\";\n\nimport type { IConstraintModel } from \"../../types\";\n\nconst DEFAULT_GROUPING_SIZE = 3;\n\n/**\n */\nclass NumberGroupingConstraint implements IConstraintModel {\n _decimalSeparator: string;\n _groupingSeparator: string;\n _format: string;\n\n /**\n */\n constructor(\n groupingSeparator: string = \",\",\n decimalSeparator: string = \".\",\n format: ?string = \"0\"\n ) {\n this._decimalSeparator = decimalSeparator;\n this._groupingSeparator = groupingSeparator;\n this._format = format ?? \"0\";\n }\n\n /**\n */\n get id(): string {\n return \"Constraint.Number.GroupingSeparator\";\n }\n\n /**\n */\n get decimalSeparator(): string {\n return this._decimalSeparator;\n }\n\n /**\n */\n get groupingSeparator(): string {\n return this._groupingSeparator;\n }\n\n /**\n */\n get format(): string {\n return this._format;\n }\n\n /**\n */\n get groupSize(): number {\n if (this.format) {\n const fromFormat = new DecimalFormat(this.format).comma;\n if (fromFormat > 0) {\n return fromFormat;\n }\n }\n\n return DEFAULT_GROUPING_SIZE;\n }\n\n /**\n */\n hasValidation(): boolean {\n return true;\n }\n\n /**\n */\n get defaultMessage(): string {\n return \"Group divider '${group-divider}' must be correctly placed\"; // NOSONAR\n }\n\n /**\n */\n get parameters(): { \"group-divider\": string } {\n return { \"group-divider\": this.groupingSeparator };\n }\n\n /**\n */\n hasCorrectGrouping(value: string): boolean {\n if (!value.includes(this.groupingSeparator)) {\n return true;\n }\n\n let integer = value;\n if (this.decimalSeparator !== \"\" && value.includes(this.decimalSeparator)) {\n // decimal before grouping\n if (\n value.indexOf(this.decimalSeparator) <\n value.indexOf(this.groupingSeparator)\n ) {\n return false;\n }\n\n integer = value.substr(0, value.indexOf(this.decimalSeparator));\n }\n\n let groups = integer.split(this.groupingSeparator);\n\n // when the first item is smaller than group size, remove it from check\n if (groups[0].length < this.groupSize) {\n groups = groups.slice(1);\n }\n\n return groups.every((group) => group.length === this.groupSize);\n }\n\n /**\n */\n validate(value: string | number): boolean {\n return (\n this.groupingSeparator === \"\" ||\n typeof value !== \"string\" ||\n !value.includes(this.groupingSeparator) ||\n this.hasCorrectGrouping(value)\n );\n }\n\n /**\n */\n get isMandatoryConstraint(): boolean {\n return false;\n }\n}\n\nexport default NumberGroupingConstraint;\n"],"mappings":"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"}
1
+ {"version":3,"file":"NumberGroupingConstraint.js","names":["DEFAULT_GROUPING_SIZE","NumberGroupingConstraint","constructor","groupingSeparator","decimalSeparator","format","_decimalSeparator","_groupingSeparator","_format","id","groupSize","fromFormat","DecimalFormat","comma","hasValidation","defaultMessage","parameters","hasCorrectGrouping","value","absStringValue","replace","integer","indexOf","substring","groups","split","length","every","group","validate","isMandatoryConstraint"],"sources":["../../../../src/models/attributes/input-constraints/NumberGroupingConstraint.js"],"sourcesContent":["// @flow\nimport DecimalFormat from \"../../../utils/number/DecimalFormat\";\n\nimport type { IConstraintModel } from \"../../types\";\n\nconst DEFAULT_GROUPING_SIZE = 3;\n\n/**\n */\nclass NumberGroupingConstraint implements IConstraintModel {\n _decimalSeparator: string;\n _groupingSeparator: string;\n _format: string;\n\n /**\n */\n constructor(\n groupingSeparator: string = \",\",\n decimalSeparator: string = \".\",\n format: ?string = \"0\"\n ) {\n this._decimalSeparator = decimalSeparator;\n this._groupingSeparator = groupingSeparator;\n this._format = format ?? \"0\";\n }\n\n /**\n */\n get id(): string {\n return \"Constraint.Number.GroupingSeparator\";\n }\n\n /**\n */\n get decimalSeparator(): string {\n return this._decimalSeparator;\n }\n\n /**\n */\n get groupingSeparator(): string {\n return this._groupingSeparator;\n }\n\n /**\n */\n get format(): string {\n return this._format;\n }\n\n /**\n */\n get groupSize(): number {\n if (this.format) {\n const fromFormat = new DecimalFormat(this.format).comma;\n if (fromFormat > 0) {\n return fromFormat;\n }\n }\n\n return DEFAULT_GROUPING_SIZE;\n }\n\n /**\n */\n hasValidation(): boolean {\n return true;\n }\n\n /**\n */\n get defaultMessage(): string {\n return \"Group divider '${group-divider}' must be correctly placed\"; // NOSONAR\n }\n\n /**\n */\n get parameters(): { \"group-divider\": string } {\n return { \"group-divider\": this.groupingSeparator };\n }\n\n /**\n */\n // $FlowFixMe\n hasCorrectGrouping(value: string) {\n // A negative or a negative value may cause an incorrect group length compared to groupSize. To avoid this, the negative or positive sign must be removed from the value.\n const absStringValue = value.replace(\"-\", \"\").replace(\"+\", \"\");\n\n if (!absStringValue.includes(this.groupingSeparator)) {\n return true;\n }\n\n let integer = absStringValue;\n if (\n this.decimalSeparator !== \"\" &&\n absStringValue.includes(this.decimalSeparator)\n ) {\n // decimal before grouping\n if (\n absStringValue.indexOf(this.decimalSeparator) <\n absStringValue.indexOf(this.groupingSeparator)\n ) {\n return false;\n }\n\n integer = absStringValue.substring(\n 0,\n absStringValue.indexOf(this.decimalSeparator)\n );\n }\n\n let groups = integer.split(this.groupingSeparator);\n\n // when the first item is smaller than group size, remove it from check\n if (groups[0].length < this.groupSize) {\n groups = groups.slice(1);\n }\n\n return groups.every((group) => group.length === this.groupSize);\n }\n\n /**\n */\n validate(value: string | number): boolean {\n return (\n this.groupingSeparator === \"\" ||\n typeof value !== \"string\" ||\n !value.includes(this.groupingSeparator) ||\n this.hasCorrectGrouping(value)\n );\n }\n\n /**\n */\n get isMandatoryConstraint(): boolean {\n return false;\n }\n}\n\nexport default NumberGroupingConstraint;\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@beinformed/ui",
3
- "version": "1.23.1",
3
+ "version": "1.23.2",
4
4
  "description": "Toolbox for be informed javascript layouts",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "bugs": "http://support.beinformed.com",
@@ -81,22 +81,32 @@ class NumberGroupingConstraint implements IConstraintModel {
81
81
 
82
82
  /**
83
83
  */
84
- hasCorrectGrouping(value: string): boolean {
85
- if (!value.includes(this.groupingSeparator)) {
84
+ // $FlowFixMe
85
+ hasCorrectGrouping(value: string) {
86
+ // A negative or a negative value may cause an incorrect group length compared to groupSize. To avoid this, the negative or positive sign must be removed from the value.
87
+ const absStringValue = value.replace("-", "").replace("+", "");
88
+
89
+ if (!absStringValue.includes(this.groupingSeparator)) {
86
90
  return true;
87
91
  }
88
92
 
89
- let integer = value;
90
- if (this.decimalSeparator !== "" && value.includes(this.decimalSeparator)) {
93
+ let integer = absStringValue;
94
+ if (
95
+ this.decimalSeparator !== "" &&
96
+ absStringValue.includes(this.decimalSeparator)
97
+ ) {
91
98
  // decimal before grouping
92
99
  if (
93
- value.indexOf(this.decimalSeparator) <
94
- value.indexOf(this.groupingSeparator)
100
+ absStringValue.indexOf(this.decimalSeparator) <
101
+ absStringValue.indexOf(this.groupingSeparator)
95
102
  ) {
96
103
  return false;
97
104
  }
98
105
 
99
- integer = value.substr(0, value.indexOf(this.decimalSeparator));
106
+ integer = absStringValue.substring(
107
+ 0,
108
+ absStringValue.indexOf(this.decimalSeparator)
109
+ );
100
110
  }
101
111
 
102
112
  let groups = integer.split(this.groupingSeparator);