@inseefr/lunatic 0.4.28-v2 → 0.4.30-v2

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 (31) hide show
  1. package/lib/components/checkbox/checkbox-boolean/lunatic-checkbox-boolean.js +2 -1
  2. package/lib/components/checkbox/checkbox-group/lunatic-checkbox-group.js +2 -1
  3. package/lib/components/checkbox/checkbox-one/lunatic-checkbox-one.js +3 -1
  4. package/lib/components/commons/components/combo-box/combo-box.scss +30 -38
  5. package/lib/components/commons/components/errors/errors.js +26 -6
  6. package/lib/components/commons/components/orchestrated-component.js +4 -2
  7. package/lib/components/commons/create-row-orchestrator.js +4 -2
  8. package/lib/components/datepicker/lunatic-datepicker.js +3 -1
  9. package/lib/components/dropdown/lunatic-dropdown.js +2 -1
  10. package/lib/components/input/lunatic-input.js +3 -1
  11. package/lib/components/input-number/lunatic-input-number.js +3 -1
  12. package/lib/components/loop/block-for-loop/block-for-loop.js +5 -5
  13. package/lib/components/loop/block-for-loop/row.js +5 -3
  14. package/lib/components/loop/roster-for-loop/roster-for-loop.js +3 -4
  15. package/lib/components/loop/roster-for-loop/row.js +5 -3
  16. package/lib/components/pairwise/links/pairwise-links.js +0 -4
  17. package/lib/components/radio/lunatic-radio-group.js +2 -1
  18. package/lib/components/suggester/lunatic-suggester.js +2 -1
  19. package/lib/components/table/lunatic-table.js +5 -2
  20. package/lib/components/textarea/lunatic-textarea.js +3 -1
  21. package/lib/stories/questionnaires-test/controls/V2_Controles_BouclesLiees_PasPageFin.json +13 -52
  22. package/lib/stories/questionnaires-test/controls/boucles-n.json +74 -444
  23. package/lib/stories/questionnaires-test/controls/controls.stories.js +8 -8
  24. package/lib/use-lunatic/initial-state.js +1 -0
  25. package/lib/use-lunatic/reducer/reduce-go-next-page.js +8 -5
  26. package/lib/use-lunatic/reducer/reduce-go-previous-page.js +2 -1
  27. package/lib/use-lunatic/reducer/reduce-handle-change/reduce-handle-change.js +8 -1
  28. package/lib/use-lunatic/reducer/validate-controls/create-controls-reducer.js +22 -11
  29. package/lib/use-lunatic/reducer/validate-controls/create-modal-controls-reducer.js +18 -9
  30. package/lib/use-lunatic/reducer/validate-controls/validation-utils.js +5 -3
  31. package/package.json +1 -1
@@ -31,7 +31,8 @@ function LunaticCheckboxBoolean(_ref) {
31
31
  custom: custom,
32
32
  label: label
33
33
  }), /*#__PURE__*/_react["default"].createElement(_commons.Errors, {
34
- errors: errors
34
+ errors: errors,
35
+ activeId: id
35
36
  }));
36
37
  }
37
38
 
@@ -29,7 +29,8 @@ function LunaticCheckboxGroup(_ref) {
29
29
  custom: custom,
30
30
  label: label
31
31
  }), /*#__PURE__*/_react["default"].createElement(_commons.Errors, {
32
- errors: errors
32
+ errors: errors,
33
+ activeId: id
33
34
  }));
34
35
  }
35
36
 
@@ -25,10 +25,12 @@ function LunaticCheckboxOne(_ref) {
25
25
  var errors = _ref.errors,
26
26
  props = _objectWithoutProperties(_ref, _excluded);
27
27
 
28
+ var id = props.id;
28
29
  return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_radio["default"], _extends({}, props, {
29
30
  checkboxStyle: true
30
31
  })), /*#__PURE__*/_react["default"].createElement(_commons.Errors, {
31
- errors: errors
32
+ errors: errors,
33
+ activeId: id
32
34
  }));
33
35
  }
34
36
 
@@ -1,25 +1,25 @@
1
- // @mixin preventSelect() {
2
- // -moz-user-select: -moz-none;
3
- // -khtml-user-select: none;
4
- // -webkit-user-select: none;
5
- // }
6
-
7
- // @mixin placeholder {
8
- // color: gray;
9
- // @include defaultFont();
10
- // font-size: 15px;
11
- // line-height: 34px;
12
- // vertical-align: middle;
13
- // font-weight: normal;
14
- // }
15
-
16
- // @mixin defaultFont {
17
- // font-family: 'Roboto', 'Helvetica', 'Arial', sans-serif;
18
- // }
19
-
20
- // @mixin selection() {
21
- // @include defaultFont();
22
- // }
1
+ @mixin preventSelect() {
2
+ -moz-user-select: -moz-none;
3
+ -khtml-user-select: none;
4
+ -webkit-user-select: none;
5
+ }
6
+
7
+ @mixin placeholder {
8
+ color: gray;
9
+ @include defaultFont();
10
+ font-size: 15px;
11
+ line-height: 34px;
12
+ vertical-align: middle;
13
+ font-weight: normal;
14
+ }
15
+
16
+ @mixin defaultFont {
17
+ font-family: 'Roboto', 'Helvetica', 'Arial', sans-serif;
18
+ }
19
+
20
+ @mixin selection() {
21
+ @include defaultFont();
22
+ }
23
23
 
24
24
  .lunatic-combo-box-container {
25
25
  position: relative;
@@ -51,11 +51,11 @@
51
51
  line-height: 34px;
52
52
  font-size: 15px;
53
53
  padding-left: 4px;
54
- // @include selection();
54
+ @include selection();
55
55
 
56
- // &::placeholder {
57
- // @include placeholder();
58
- // }
56
+ &::placeholder {
57
+ @include placeholder();
58
+ }
59
59
  }
60
60
 
61
61
  .lunatic-combo-box-selected {
@@ -64,14 +64,11 @@
64
64
  background-color: var(--color-combo-box-background);
65
65
  border-radius: 5px;
66
66
  padding-left: 4px;
67
- // @include selection();
67
+ @include selection();
68
68
  outline: none;
69
69
 
70
70
  display: block;
71
- // @include placeholder();
72
-
73
- .placeholder {
74
- }
71
+ @include placeholder();
75
72
 
76
73
  .selection {
77
74
  display: inline-block;
@@ -86,7 +83,7 @@
86
83
  }
87
84
 
88
85
  .lunatic-combo-box-panel {
89
- // @include defaultFont();
86
+ @include defaultFont();
90
87
  height: 0;
91
88
  opacity: 0;
92
89
  background-color: var(--color-combo-box-background);
@@ -183,11 +180,6 @@
183
180
  &.displayed {
184
181
  display: block;
185
182
  }
186
-
187
- .placeholder {
188
- }
189
- .selection {
190
- }
191
183
  }
192
184
  }
193
185
 
@@ -207,7 +199,7 @@
207
199
  }
208
200
  .lunatic-combo-box-option {
209
201
  white-space: nowrap;
210
- // @include preventSelect();
202
+ @include preventSelect();
211
203
  }
212
204
  }
213
205
  }
@@ -11,13 +11,33 @@ require("./errors.scss");
11
11
 
12
12
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
13
13
 
14
- function Errors(_ref) {
15
- var errors = _ref.errors;
14
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
15
+
16
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
17
+
18
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
19
+
20
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
16
21
 
17
- if (Array.isArray(errors)) {
18
- var content = errors.map(function (_ref2) {
19
- var id = _ref2.id,
20
- errorMessage = _ref2.errorMessage;
22
+ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
23
+
24
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
25
+
26
+ function Errors(_ref) {
27
+ var errors = _ref.errors,
28
+ activeId = _ref.activeId;
29
+ var activeErrors = Object.entries(errors || {}).find(function (_ref2) {
30
+ var _ref3 = _slicedToArray(_ref2, 1),
31
+ k = _ref3[0];
32
+
33
+ return activeId.trim().endsWith(k);
34
+ });
35
+ if (!activeErrors) return null;
36
+
37
+ if (Array.isArray(activeErrors[1])) {
38
+ var content = activeErrors[1].map(function (_ref4) {
39
+ var id = _ref4.id,
40
+ errorMessage = _ref4.errorMessage;
21
41
  return /*#__PURE__*/_react["default"].createElement("div", {
22
42
  key: "error-".concat(id),
23
43
  className: "lunatic-error"
@@ -34,7 +34,8 @@ function OrchestratedComponent(_ref) {
34
34
  iteration = _ref.iteration,
35
35
  linksIterations = _ref.linksIterations,
36
36
  executeExpression = _ref.executeExpression,
37
- custom = _ref.custom;
37
+ custom = _ref.custom,
38
+ errors = _ref.errors;
38
39
  var componentType = component.componentType;
39
40
  var componentFilled = (0, _commons.fillComponentExpressions)(component, {
40
41
  executeExpression: executeExpression,
@@ -58,7 +59,8 @@ function OrchestratedComponent(_ref) {
58
59
  shortcut: shortcut,
59
60
  value: value,
60
61
  executeExpression: executeExpression,
61
- custom: custom
62
+ custom: custom,
63
+ errors: errors
62
64
  }));
63
65
  }
64
66
 
@@ -23,7 +23,8 @@ function createRowOrchestrator(Row) {
23
23
  executeExpression = _ref.executeExpression,
24
24
  iteration = _ref.iteration,
25
25
  xAxisIterations = _ref.xAxisIterations,
26
- custom = _ref.custom;
26
+ custom = _ref.custom,
27
+ errors = _ref.errors;
27
28
 
28
29
  if (nbRows > 0) {
29
30
  return new Array(nbRows).fill(null).map(function (_, index) {
@@ -45,7 +46,8 @@ function createRowOrchestrator(Row) {
45
46
  features: features,
46
47
  shortcut: shortcut,
47
48
  preferences: preferences,
48
- missing: missing
49
+ missing: missing,
50
+ errors: errors
49
51
  });
50
52
  });
51
53
  }
@@ -25,8 +25,10 @@ var LunaticDatepicker = function LunaticDatepicker(_ref) {
25
25
  var errors = _ref.errors,
26
26
  props = _objectWithoutProperties(_ref, _excluded);
27
27
 
28
+ var id = props.id;
28
29
  return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_datepicker["default"], props), /*#__PURE__*/_react["default"].createElement(_commons.Errors, {
29
- errors: errors
30
+ errors: errors,
31
+ activeId: id
30
32
  }));
31
33
  };
32
34
 
@@ -37,7 +37,8 @@ function LunaticDropdown(_ref) {
37
37
  value: value,
38
38
  className: "lunatic-dropdown"
39
39
  }), /*#__PURE__*/_react["default"].createElement(_commons.Errors, {
40
- errors: errors
40
+ errors: errors,
41
+ activeId: id
41
42
  }));
42
43
  }
43
44
 
@@ -25,8 +25,10 @@ var LunaticInput = function LunaticInput(_ref) {
25
25
  var errors = _ref.errors,
26
26
  props = _objectWithoutProperties(_ref, _excluded);
27
27
 
28
+ var id = props.id;
28
29
  return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_input["default"], props), /*#__PURE__*/_react["default"].createElement(_commons.Errors, {
29
- errors: errors
30
+ errors: errors,
31
+ activeId: id
30
32
  }));
31
33
  };
32
34
 
@@ -23,8 +23,10 @@ var LunaticInputNumber = function LunaticInputNumber(_ref) {
23
23
  var errors = _ref.errors,
24
24
  props = _objectWithoutProperties(_ref, _excluded);
25
25
 
26
+ var id = props.id;
26
27
  return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_inputNumber["default"], props), /*#__PURE__*/_react["default"].createElement(_commons.Errors, {
27
- errors: errors
28
+ errors: errors,
29
+ activeId: id
28
30
  }));
29
31
  };
30
32
 
@@ -117,7 +117,8 @@ function BlockForLoop(_ref) {
117
117
  v[args.index] = value;
118
118
  handleChange(response, v, {
119
119
  loop: true,
120
- length: nbRows
120
+ length: nbRows,
121
+ shallowIteration: args.index
121
122
  });
122
123
  } else handleChange(response, value, _objectSpread(_objectSpread({}, args), {}, {
123
124
  loop: true,
@@ -145,7 +146,8 @@ function BlockForLoop(_ref) {
145
146
  features: features,
146
147
  preferences: preferences,
147
148
  executeExpression: executeExpression,
148
- custom: custom
149
+ custom: custom,
150
+ errors: errors
149
151
  }), /*#__PURE__*/_react["default"].createElement(_declarations.DeclarationsDetachable, {
150
152
  declarations: declarations,
151
153
  id: id,
@@ -158,9 +160,7 @@ function BlockForLoop(_ref) {
158
160
  onClick: removeRow,
159
161
  disabled: nbRows === 1,
160
162
  custom: custom
161
- }, _i18n["default"].DEFAULT_BUTTON_REMOVE)), /*#__PURE__*/_react["default"].createElement(_commons.Errors, {
162
- errors: errors
163
- }));
163
+ }, _i18n["default"].DEFAULT_BUTTON_REMOVE)));
164
164
  }
165
165
 
166
166
  return null;
@@ -39,7 +39,8 @@ function Row(_ref) {
39
39
  preferences = _ref.preferences,
40
40
  rowIndex = _ref.rowIndex,
41
41
  executeExpression = _ref.executeExpression,
42
- custom = _ref.custom;
42
+ custom = _ref.custom,
43
+ errors = _ref.errors;
43
44
  var handleChangeRow = (0, _react.useCallback)(function (response, value) {
44
45
  handleChange(response, value, {
45
46
  index: rowIndex
@@ -48,7 +49,7 @@ function Row(_ref) {
48
49
  return components.reduce(function (row, component) {
49
50
  var response = component.response,
50
51
  id = component.id;
51
- var idComponent = "".concat(id, "-").concat(rowIndex + 1, " ");
52
+ var idComponent = "".concat(id, "-").concat(rowIndex, " ");
52
53
  var value = undefined;
53
54
 
54
55
  if (response) {
@@ -73,7 +74,8 @@ function Row(_ref) {
73
74
  preferences: preferences,
74
75
  iteration: rowIndex,
75
76
  executeExpression: executeExpression,
76
- custom: custom
77
+ custom: custom,
78
+ errors: errors
77
79
  })]);
78
80
  }, []);
79
81
  }
@@ -128,7 +128,8 @@ function RosterforLoop(_ref) {
128
128
  management: management,
129
129
  missing: missing,
130
130
  shortcut: shortcut,
131
- custom: custom
131
+ custom: custom,
132
+ errors: errors
132
133
  }), /*#__PURE__*/_react["default"].createElement(_declarations.DeclarationsDetachable, {
133
134
  declarations: declarations,
134
135
  id: id,
@@ -141,9 +142,7 @@ function RosterforLoop(_ref) {
141
142
  onClick: removeRow,
142
143
  disabled: nbRows === 1,
143
144
  custom: custom
144
- }, _i18n["default"].DEFAULT_BUTTON_REMOVE)), /*#__PURE__*/_react["default"].createElement(_commons.Errors, {
145
- errors: errors
146
- }));
145
+ }, _i18n["default"].DEFAULT_BUTTON_REMOVE)));
147
146
  }
148
147
 
149
148
  return null;
@@ -29,7 +29,8 @@ function Row(_ref) {
29
29
  management = _ref.management,
30
30
  preferences = _ref.preferences,
31
31
  executeExpression = _ref.executeExpression,
32
- custom = _ref.custom;
32
+ custom = _ref.custom,
33
+ errors = _ref.errors;
33
34
  var handleChangeRow = (0, _react.useCallback)(function (response, value) {
34
35
  handleChange(response, value, {
35
36
  index: rowIndex
@@ -44,7 +45,7 @@ function Row(_ref) {
44
45
  }, components.map(function (component) {
45
46
  var response = component.response,
46
47
  id = component.id;
47
- var idComponent = "".concat(id, "-").concat(rowIndex + 1, " ");
48
+ var idComponent = "".concat(id, "-").concat(rowIndex, " ");
48
49
  var value = undefined;
49
50
  var key = "".concat(id, "-").concat(rowIndex);
50
51
 
@@ -72,7 +73,8 @@ function Row(_ref) {
72
73
  preferences: preferences,
73
74
  iteration: rowIndex,
74
75
  executeExpression: executeExpression,
75
- custom: custom
76
+ custom: custom,
77
+ errors: errors
76
78
  }));
77
79
  }));
78
80
  }
@@ -13,8 +13,6 @@ var _linksOrchestrator = _interopRequireDefault(require("./links-orchestrator"))
13
13
 
14
14
  var _declarations = require("../../declarations");
15
15
 
16
- var _commons = require("../../commons");
17
-
18
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
19
17
 
20
18
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
@@ -67,8 +65,6 @@ var PairwiseLinks = function PairwiseLinks(_ref) {
67
65
  declarations: declarations,
68
66
  id: id,
69
67
  custom: custom
70
- }), /*#__PURE__*/_react["default"].createElement(_commons.Errors, {
71
- errors: errors
72
68
  }));
73
69
  return null;
74
70
  };
@@ -31,7 +31,8 @@ function LunaticRadioGroup(props) {
31
31
  checkboxStyle: checkboxStyle,
32
32
  custom: custom
33
33
  }), /*#__PURE__*/_react["default"].createElement(_commons.Errors, {
34
- errors: errors
34
+ errors: errors,
35
+ activeId: id
35
36
  }));
36
37
  }
37
38
 
@@ -51,7 +51,8 @@ function LunaticSuggester(props) {
51
51
  value: value,
52
52
  custom: custom
53
53
  }), /*#__PURE__*/_react["default"].createElement(_commons.Errors, {
54
- errors: errors
54
+ errors: errors,
55
+ activeId: id
55
56
  }));
56
57
  }
57
58
 
@@ -69,9 +69,12 @@ function LunaticTable(_ref) {
69
69
  handleChange: handleChange,
70
70
  iteration: iteration,
71
71
  nbRows: nbRows,
72
- valueMap: value
73
- })), /*#__PURE__*/_react["default"].createElement(_commons.Errors, {
72
+ valueMap: value //TODO propagate
73
+ ,
74
74
  errors: errors
75
+ })), /*#__PURE__*/_react["default"].createElement(_commons.Errors, {
76
+ errors: errors,
77
+ activeId: id
75
78
  }));
76
79
  }
77
80
 
@@ -25,8 +25,10 @@ var LunaticTextarea = function LunaticTextarea(_ref) {
25
25
  var errors = _ref.errors,
26
26
  props = _objectWithoutProperties(_ref, _excluded);
27
27
 
28
+ var id = props.id;
28
29
  return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_textarea["default"], props), /*#__PURE__*/_react["default"].createElement(_commons.Errors, {
29
- errors: errors
30
+ errors: errors,
31
+ activeId: id
30
32
  }));
31
33
  };
32
34
 
@@ -120,19 +120,6 @@
120
120
  {
121
121
  "componentType": "InputNumber",
122
122
  "controls": [
123
- {
124
- "criticality": "ERROR",
125
- "errorMessage": {
126
- "type": "VTL|MD",
127
- "value": "\"Vous devez saisir un nombre.\""
128
- },
129
- "typeOfControl": "FORMAT",
130
- "control": {
131
- "type": "VTL",
132
- "value": "not(not(isnull(Q1)) and not(isNaN(Q1)))"
133
- },
134
- "id": "l14vfucm-formatNumber"
135
- },
136
123
  {
137
124
  "criticality": "ERROR",
138
125
  "errorMessage": {
@@ -142,9 +129,9 @@
142
129
  "typeOfControl": "FORMAT",
143
130
  "control": {
144
131
  "type": "VTL",
145
- "value": "not(not(isnull(Q1)) and (1>Q1 or 5<Q1)))"
132
+ "value": "not(not(isnull(Q1)) and (1>Q1 or 5<Q1))"
146
133
  },
147
- "id": "l14vfucm-formatBorneInfSup"
134
+ "id": "l14vfucm-format-borne-inf-sup"
148
135
  },
149
136
  {
150
137
  "criticality": "ERROR",
@@ -155,9 +142,9 @@
155
142
  "typeOfControl": "FORMAT",
156
143
  "control": {
157
144
  "type": "VTL",
158
- "value": "not(not(isnull(Q1)) and trunc(Q1,0)<>Q1)"
145
+ "value": "not(not(isnull(Q1)) and round(Q1,0)<>Q1)"
159
146
  },
160
- "id": "l14vfucm-formatDec"
147
+ "id": "l14vfucm-format-decimal"
161
148
  },
162
149
  {
163
150
  "bindingDependencies": ["Q1"],
@@ -306,19 +293,6 @@
306
293
  {
307
294
  "componentType": "InputNumber",
308
295
  "controls": [
309
- {
310
- "criticality": "ERROR",
311
- "errorMessage": {
312
- "type": "VTL|MD",
313
- "value": "\"Vous devez saisir un nombre.\""
314
- },
315
- "typeOfControl": "FORMAT",
316
- "control": {
317
- "type": "VTL",
318
- "value": "not(not(isnull(Q3)) and not(isNaN(Q3)))"
319
- },
320
- "id": "l5ggvqgj-formatNumber"
321
- },
322
296
  {
323
297
  "criticality": "ERROR",
324
298
  "errorMessage": {
@@ -328,9 +302,9 @@
328
302
  "typeOfControl": "FORMAT",
329
303
  "control": {
330
304
  "type": "VTL",
331
- "value": "not(not(isnull(Q3)) and (0>Q3 or 20<Q3)))"
305
+ "value": "not(not(isnull(Q3)) and (0>Q3 or 20<Q3))"
332
306
  },
333
- "id": "l5ggvqgj-formatBorneInfSup"
307
+ "id": "l5ggvqgj-format-borne-inf-sup"
334
308
  },
335
309
  {
336
310
  "criticality": "ERROR",
@@ -341,9 +315,9 @@
341
315
  "typeOfControl": "FORMAT",
342
316
  "control": {
343
317
  "type": "VTL",
344
- "value": "not(not(isnull(Q3)) and trunc(Q3,0)<>Q3)"
318
+ "value": "not(not(isnull(Q3)) and round(Q3,0)<>Q3)"
345
319
  },
346
- "id": "l5ggvqgj-formatDec"
320
+ "id": "l5ggvqgj-format-decimal"
347
321
  }
348
322
  ],
349
323
  "max": 20,
@@ -375,19 +349,6 @@
375
349
  {
376
350
  "componentType": "InputNumber",
377
351
  "controls": [
378
- {
379
- "criticality": "ERROR",
380
- "errorMessage": {
381
- "type": "VTL|MD",
382
- "value": "\"Vous devez saisir un nombre.\""
383
- },
384
- "typeOfControl": "FORMAT",
385
- "control": {
386
- "type": "VTL",
387
- "value": "not(not(isnull(Q4)) and not(isNaN(Q4)))"
388
- },
389
- "id": "l5ggzuuo-formatNumber"
390
- },
391
352
  {
392
353
  "criticality": "ERROR",
393
354
  "errorMessage": {
@@ -397,9 +358,9 @@
397
358
  "typeOfControl": "FORMAT",
398
359
  "control": {
399
360
  "type": "VTL",
400
- "value": "not(not(isnull(Q4)) and (0>Q4 or 20<Q4)))"
361
+ "value": "not(not(isnull(Q4)) and (0>Q4 or 20<Q4))"
401
362
  },
402
- "id": "l5ggzuuo-formatBorneInfSup"
363
+ "id": "l5ggzuuo-format-borne-inf-sup"
403
364
  },
404
365
  {
405
366
  "criticality": "ERROR",
@@ -410,9 +371,9 @@
410
371
  "typeOfControl": "FORMAT",
411
372
  "control": {
412
373
  "type": "VTL",
413
- "value": "not(not(isnull(Q4)) and trunc(Q4,0)<>Q4)"
374
+ "value": "not(not(isnull(Q4)) and round(Q4,0)<>Q4)"
414
375
  },
415
- "id": "l5ggzuuo-formatDec"
376
+ "id": "l5ggzuuo-format-decimal"
416
377
  },
417
378
  {
418
379
  "bindingDependencies": ["Q3", "Q4"],
@@ -565,7 +526,7 @@
565
526
  "lunaticModelVersion": "2.2.14-rc",
566
527
  "modele": "TESTCONTBOUCL",
567
528
  "enoCoreVersion": "2.3.10-controls-type",
568
- "generatingDate": "08-09-2022 12:16:00",
529
+ "generatingDate": "22-09-2022 11:21:08",
569
530
  "missing": false,
570
531
  "id": "l5gghitu",
571
532
  "maxPage": "8"