@inseefr/lunatic 0.4.3-v2 → 0.4.4-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 (47) hide show
  1. package/lib/components/checkbox/checkbox-boolean/lunatic-checkbox-boolean.js +6 -3
  2. package/lib/components/checkbox/checkbox-group/lunatic-checkbox-group.js +6 -3
  3. package/lib/components/checkbox/checkbox-one/lunatic-checkbox-one.js +15 -2
  4. package/lib/components/commons/components/errors/errors.js +35 -0
  5. package/lib/components/commons/components/errors/errors.scss +5 -0
  6. package/lib/components/commons/components/errors/index.js +15 -0
  7. package/lib/components/commons/index.js +8 -0
  8. package/lib/components/datepicker/lunatic-datepicker.js +16 -1
  9. package/lib/components/dropdown/lunatic-dropdown.js +6 -3
  10. package/lib/components/input/lunatic-input.js +20 -4
  11. package/lib/components/input-number/lunatic-input-number.js +17 -2
  12. package/lib/components/loop/block-for-loop/block-for-loop.js +6 -1
  13. package/lib/components/loop/loop.js +6 -3
  14. package/lib/components/loop/roster-for-loop/roster-for-loop.js +7 -2
  15. package/lib/components/modal-controls/close-or-skip.js +13 -3
  16. package/lib/components/modal-controls/modal-controls.js +1 -2
  17. package/lib/components/modal-controls/modal-controls.scss +1 -1
  18. package/lib/components/pairwise/links/pairwise-links.js +6 -1
  19. package/lib/components/radio/lunatic-radio-group.js +6 -3
  20. package/lib/components/suggester/lunatic-suggester.js +6 -3
  21. package/lib/components/table/lunatic-table.js +5 -2
  22. package/lib/components/textarea/lunatic-textarea.js +22 -6
  23. package/lib/stories/paste-questionnaire/test.stories.js +1 -1
  24. package/lib/stories/questionnaires-test/controls/V2_ControlesNonNum_horsBoucle_PasPageFin.json +489 -451
  25. package/lib/stories/questionnaires-test/controls/V2_ControlesNum_horsBoucle_PasPageFin.json +1956 -1688
  26. package/lib/stories/questionnaires-test/controls/V2_Controles_BouclesLiees_PasPageFin.json +3 -3
  27. package/lib/stories/questionnaires-test/controls/controls.stories.js +4 -4
  28. package/lib/stories/utils/default-arg-types.js +1 -1
  29. package/lib/stories/utils/orchestrator.js +18 -10
  30. package/lib/use-lunatic/actions.js +2 -2
  31. package/lib/use-lunatic/commons/execute-expression/create-refresh-calculated.js +1 -0
  32. package/lib/use-lunatic/commons/index.js +14 -2
  33. package/lib/use-lunatic/commons/page-tag.js +83 -0
  34. package/lib/use-lunatic/initial-state.js +3 -1
  35. package/lib/use-lunatic/reducer/reduce-go-next-page.js +53 -37
  36. package/lib/use-lunatic/reducer/reduce-go-previous-page.js +25 -24
  37. package/lib/use-lunatic/reducer/reduce-go-to-page.js +12 -4
  38. package/lib/use-lunatic/reducer/reduce-handle-change/reduce-handle-change.js +4 -1
  39. package/lib/use-lunatic/reducer/reduce-on-init.js +2 -2
  40. package/lib/use-lunatic/reducer/validate-controls/create-controls-reducer.js +59 -0
  41. package/lib/use-lunatic/reducer/validate-controls/create-modal-controls-reducer.js +88 -0
  42. package/lib/use-lunatic/reducer/validate-controls/index.js +11 -3
  43. package/lib/use-lunatic/reducer/validate-controls/validation-utils.js +71 -0
  44. package/lib/use-lunatic/use-lunatic.js +15 -5
  45. package/package.json +1 -1
  46. package/lib/use-lunatic/commons/get-page-tag.js +0 -21
  47. package/lib/use-lunatic/reducer/validate-controls/create-validate-reducer.js +0 -146
@@ -53,10 +53,10 @@
53
53
  "id": "l14vfucm-CI-0",
54
54
  "criticality": "WARN",
55
55
  "control": {
56
- "value": "not(cast(nvl(Q1,\"0\"),integer)) > 3)",
56
+ "value": "not(cast(Q1,integer) > 3)",
57
57
  "type": "VTL"
58
58
  },
59
- "errorMessage": { "value": "Supérieur à 3", "type": "VTL|MD" },
59
+ "errorMessage": { "value": "\"Supérieur à 3\"", "type": "VTL|MD" },
60
60
  "bindingDependencies": ["Q1"]
61
61
  }
62
62
  ],
@@ -225,7 +225,7 @@
225
225
  "id": "l5ghsjv2-CI-0",
226
226
  "criticality": "WARN",
227
227
  "control": { "value": "not(isnull(Q5))", "type": "VTL" },
228
- "errorMessage": { "value": "Q5 est vide ", "type": "VTL|MD" },
228
+ "errorMessage": { "value": "\"Q5 est vide\"", "type": "VTL|MD" },
229
229
  "bindingDependencies": ["Q5"]
230
230
  }
231
231
  ],
@@ -52,7 +52,7 @@ var stories = {
52
52
  control: 'boolean',
53
53
  defaultValue: false
54
54
  },
55
- modalForControls: {
55
+ activeControls: {
56
56
  control: 'boolean',
57
57
  defaultValue: true
58
58
  }
@@ -78,7 +78,7 @@ SimpleNum.args = {
78
78
  id: 'controls-simple-num',
79
79
  source: _V2_ControlesNum_horsBoucle_PasPageFin["default"],
80
80
  pagination: true,
81
- modalForControls: true
81
+ activeControls: true
82
82
  };
83
83
  var LinkedLoop = Template.bind({});
84
84
  exports.LinkedLoop = LinkedLoop;
@@ -86,7 +86,7 @@ LinkedLoop.args = {
86
86
  id: 'controls-linked-loop',
87
87
  source: _V2_Controles_BouclesLiees_PasPageFin["default"],
88
88
  pagination: true,
89
- modalForControls: true
89
+ activeControls: true
90
90
  };
91
91
  var LinkedLoop2 = Template.bind({});
92
92
  exports.LinkedLoop2 = LinkedLoop2;
@@ -94,5 +94,5 @@ LinkedLoop2.args = {
94
94
  id: 'controls-linked-loop2',
95
95
  source: _V2_Controles_BouclesLiees2_PasPageFin["default"],
96
96
  pagination: true,
97
- modalForControls: true
97
+ activeControls: true
98
98
  };
@@ -11,7 +11,7 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
11
11
 
12
12
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
13
13
 
14
- var fields = ['source', 'id', 'pagination', 'data', 'management', 'modalForControls', 'features', 'initialPage', 'getStoreInfo', 'missing', 'shortcut', 'activeGoNextForMissing', 'filterDescription'];
14
+ var fields = ['source', 'id', 'pagination', 'data', 'management', 'activeControls', 'features', 'initialPage', 'getStoreInfo', 'missing', 'shortcut', 'activeGoNextForMissing', 'filterDescription'];
15
15
  var defaultArgTypes = fields.reduce(function (acc, f) {
16
16
  return _objectSpread(_objectSpread({}, acc), {}, _defineProperty({}, f, {
17
17
  table: {
@@ -15,7 +15,7 @@ require("./custom-lunatic.scss");
15
15
 
16
16
  var _waiting = _interopRequireDefault(require("./waiting"));
17
17
 
18
- var _excluded = ["source", "data", "management", "modalForControls", "features", "initialPage", "getStoreInfo", "missing", "shortcut", "activeGoNextForMissing", "suggesterFetcher", "autoSuggesterLoading", "suggesters", "addExternal", "preferences", "custom", "filterDescription"],
18
+ var _excluded = ["source", "data", "management", "activeControls", "features", "initialPage", "getStoreInfo", "missing", "shortcut", "activeGoNextForMissing", "suggesterFetcher", "autoSuggesterLoading", "suggesters", "addExternal", "preferences", "custom", "filterDescription"],
19
19
  _excluded2 = ["id", "componentType", "response", "storeName"];
20
20
 
21
21
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
@@ -42,7 +42,7 @@ function Pager(_ref) {
42
42
  isFirst = _ref.isFirst,
43
43
  pageTag = _ref.pageTag,
44
44
  maxPage = _ref.maxPage,
45
- getState = _ref.getState;
45
+ getData = _ref.getData;
46
46
 
47
47
  if (maxPage && maxPage > 1) {
48
48
  var Button = lunatic.Button;
@@ -56,7 +56,7 @@ function Pager(_ref) {
56
56
  disabled: isLast
57
57
  }, "Next"), /*#__PURE__*/_react["default"].createElement(Button, {
58
58
  onClick: function onClick() {
59
- return console.log(getState(true));
59
+ return console.log(getData(true));
60
60
  }
61
61
  }, "Get State"), /*#__PURE__*/_react["default"].createElement(Button, {
62
62
  onClick: function onClick() {
@@ -83,8 +83,8 @@ function OrchestratorForStories(_ref2) {
83
83
  data = _ref2.data,
84
84
  _ref2$management = _ref2.management,
85
85
  management = _ref2$management === void 0 ? false : _ref2$management,
86
- _ref2$modalForControl = _ref2.modalForControls,
87
- modalForControls = _ref2$modalForControl === void 0 ? false : _ref2$modalForControl,
86
+ _ref2$activeControls = _ref2.activeControls,
87
+ activeControls = _ref2$activeControls === void 0 ? false : _ref2$activeControls,
88
88
  features = _ref2.features,
89
89
  _ref2$initialPage = _ref2.initialPage,
90
90
  initialPage = _ref2$initialPage === void 0 ? '1' : _ref2$initialPage,
@@ -118,7 +118,7 @@ function OrchestratorForStories(_ref2) {
118
118
  suggesters: suggesters,
119
119
  suggesterFetcher: suggesterFetcher,
120
120
  management: management,
121
- modalForControls: modalForControls
121
+ activeControls: activeControls
122
122
  }),
123
123
  getComponents = _lunatic$useLunatic.getComponents,
124
124
  goPreviousPage = _lunatic$useLunatic.goPreviousPage,
@@ -129,10 +129,17 @@ function OrchestratorForStories(_ref2) {
129
129
  isLastPage = _lunatic$useLunatic.isLastPage,
130
130
  waiting = _lunatic$useLunatic.waiting,
131
131
  getErrors = _lunatic$useLunatic.getErrors,
132
- getState = _lunatic$useLunatic.getState;
132
+ getModalErrors = _lunatic$useLunatic.getModalErrors,
133
+ getCurrentErrors = _lunatic$useLunatic.getCurrentErrors,
134
+ getData = _lunatic$useLunatic.getData;
133
135
 
134
136
  var components = getComponents();
135
137
  var errors = getErrors();
138
+ var modalErrors = getModalErrors();
139
+ var currentErrors = getCurrentErrors();
140
+ console.log('errors: ', errors);
141
+ console.log('modalErrors: ', modalErrors);
142
+ console.log('currentErrors: ', currentErrors);
136
143
  return /*#__PURE__*/_react["default"].createElement("div", {
137
144
  className: "container"
138
145
  }, /*#__PURE__*/_react["default"].createElement("div", {
@@ -157,7 +164,8 @@ function OrchestratorForStories(_ref2) {
157
164
  missingStrategy: goNextPage,
158
165
  shortcut: shortcut,
159
166
  custom: custom,
160
- filterDescription: filterDescription
167
+ filterDescription: filterDescription,
168
+ errors: currentErrors
161
169
  })));
162
170
  })), /*#__PURE__*/_react["default"].createElement(Pager, {
163
171
  goPrevious: goPreviousPage,
@@ -167,10 +175,10 @@ function OrchestratorForStories(_ref2) {
167
175
  isFirst: isFirstPage,
168
176
  pageTag: pageTag,
169
177
  maxPage: maxPage,
170
- getState: getState
178
+ getData: getData
171
179
  }), /*#__PURE__*/_react["default"].createElement(lunatic.Modal, {
172
180
  title: "Des points requi\xE8rent votre attention.",
173
- errors: errors,
181
+ errors: modalErrors,
174
182
  goNext: goNextPage
175
183
  }), /*#__PURE__*/_react["default"].createElement(_waiting["default"], {
176
184
  status: waiting
@@ -54,7 +54,7 @@ var onInit = function onInit(_ref3) {
54
54
  savingType = _ref3.savingType,
55
55
  management = _ref3.management,
56
56
  handleChange = _ref3.handleChange,
57
- modalForControls = _ref3.modalForControls;
57
+ activeControls = _ref3.activeControls;
58
58
  return {
59
59
  type: ON_INIT,
60
60
  payload: {
@@ -66,7 +66,7 @@ var onInit = function onInit(_ref3) {
66
66
  savingType: savingType,
67
67
  management: management,
68
68
  handleChange: handleChange,
69
- modalForControls: modalForControls
69
+ activeControls: activeControls
70
70
  }
71
71
  };
72
72
  };
@@ -66,6 +66,7 @@ function createRefreshCalculated(_ref) {
66
66
  linksIterations: linksIterations
67
67
  }) : undefined
68
68
  });
69
+ if (linksIterations !== undefined) return value;
69
70
 
70
71
  if (shapeFrom && iteration !== undefined) {
71
72
  if (bindings[name] === undefined) {
@@ -45,10 +45,16 @@ Object.defineProperty(exports, "getComponentsFromState", {
45
45
  return _getComponentsFromState["default"];
46
46
  }
47
47
  });
48
+ Object.defineProperty(exports, "getNewReachedPage", {
49
+ enumerable: true,
50
+ get: function get() {
51
+ return _pageTag.getNewReachedPage;
52
+ }
53
+ });
48
54
  Object.defineProperty(exports, "getPageTag", {
49
55
  enumerable: true,
50
56
  get: function get() {
51
- return _getPageTag["default"];
57
+ return _pageTag.getPageTag;
52
58
  }
53
59
  });
54
60
  Object.defineProperty(exports, "isFirstLastPage", {
@@ -57,6 +63,12 @@ Object.defineProperty(exports, "isFirstLastPage", {
57
63
  return _isFirstLastPage["default"];
58
64
  }
59
65
  });
66
+ Object.defineProperty(exports, "isNewReachedPage", {
67
+ enumerable: true,
68
+ get: function get() {
69
+ return _pageTag.isNewReachedPage;
70
+ }
71
+ });
60
72
  Object.defineProperty(exports, "isPaginatedLoop", {
61
73
  enumerable: true,
62
74
  get: function get() {
@@ -86,7 +98,7 @@ var _getComponentsFromState = _interopRequireDefault(require("./get-components-f
86
98
 
87
99
  var _useComponentsFromState = _interopRequireDefault(require("./use-components-from-state"));
88
100
 
89
- var _getPageTag = _interopRequireDefault(require("./get-page-tag"));
101
+ var _pageTag = require("./page-tag");
90
102
 
91
103
  var _isFirstLastPage = _interopRequireDefault(require("./is-First-last-page"));
92
104
 
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+
3
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.getNewReachedPage = getNewReachedPage;
9
+ exports.getPageTag = getPageTag;
10
+ exports.isNewReachedPage = isNewReachedPage;
11
+
12
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
13
+
14
+ 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."); }
15
+
16
+ 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; }
17
+
18
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
19
+
20
+ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
21
+
22
+ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
23
+
24
+ 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); }
25
+
26
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
27
+
28
+ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
29
+
30
+ 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; }
31
+
32
+ function _wrapRegExp() { _wrapRegExp = function _wrapRegExp(re, groups) { return new BabelRegExp(re, void 0, groups); }; var _super = RegExp.prototype, _groups = new WeakMap(); function BabelRegExp(re, flags, groups) { var _this = new RegExp(re, flags); return _groups.set(_this, groups || _groups.get(re)), _setPrototypeOf(_this, BabelRegExp.prototype); } function buildGroups(result, re) { var g = _groups.get(re); return Object.keys(g).reduce(function (groups, name) { return groups[name] = result[g[name]], groups; }, Object.create(null)); } return _inherits(BabelRegExp, RegExp), BabelRegExp.prototype.exec = function (str) { var result = _super.exec.call(this, str); return result && (result.groups = buildGroups(result, this)), result; }, BabelRegExp.prototype[Symbol.replace] = function (str, substitution) { if ("string" == typeof substitution) { var groups = _groups.get(this); return _super[Symbol.replace].call(this, str, substitution.replace(/\$<([^>]+)>/g, function (_, name) { return "$" + groups[name]; })); } if ("function" == typeof substitution) { var _this = this; return _super[Symbol.replace].call(this, str, function () { var args = arguments; return "object" != _typeof(args[args.length - 1]) && (args = [].slice.call(args)).push(buildGroups(args, _this)), substitution.apply(this, args); }); } return _super[Symbol.replace].call(this, str, substitution); }, _wrapRegExp.apply(this, arguments); }
33
+
34
+ function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
35
+
36
+ function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
37
+
38
+ function getPageTag(pager) {
39
+ var page = pager.page,
40
+ subPage = pager.subPage,
41
+ iteration = pager.iteration;
42
+
43
+ if (subPage !== undefined && iteration !== undefined) {
44
+ return "".concat(page, ".").concat(subPage + 1, "#").concat(iteration + 1);
45
+ }
46
+
47
+ return "".concat(page);
48
+ }
49
+
50
+ function getPagerFromPageTag(pageTag) {
51
+ var pattern = /*#__PURE__*/_wrapRegExp(/(\d+)\.?(\d+)?#?(\d+)?/g, {
52
+ page: 1,
53
+ subPagePlusUn: 2,
54
+ iterationPlusUn: 3
55
+ });
56
+
57
+ var match = _toConsumableArray(pageTag.matchAll(pattern));
58
+
59
+ var _match = _slicedToArray(match, 1),
60
+ _match$0$groups = _match[0].groups,
61
+ page = _match$0$groups.page,
62
+ subPagePlusUn = _match$0$groups.subPagePlusUn,
63
+ iterationPlusUn = _match$0$groups.iterationPlusUn;
64
+
65
+ return {
66
+ page: page,
67
+ subPage: subPagePlusUn - 1,
68
+ iteration: iterationPlusUn - 1
69
+ };
70
+ }
71
+
72
+ function isNewReachedPage(pager) {
73
+ var lastReachedPage = pager.lastReachedPage,
74
+ page = pager.page,
75
+ subPage = pager.subPage,
76
+ iteration = pager.iteration;
77
+ var reachedPager = getPagerFromPageTag(lastReachedPage);
78
+ return Number.parseInt(page) > Number.parseInt(reachedPager.page) || Number.parseInt(page) === Number.parseInt(reachedPager.page) && Number.parseInt(subPage) > Number.parseInt(reachedPager.subPage) || Number.parseInt(page) === Number.parseInt(reachedPager.page) && Number.parseInt(subPage) === Number.parseInt(reachedPager.subPage) && Number.parseInt(iteration) > Number.parseInt(reachedPager.iteration);
79
+ }
80
+
81
+ function getNewReachedPage(pager) {
82
+ return isNewReachedPage(pager) ? getPageTag(pager) : pager.lastReachedPage;
83
+ }
@@ -30,12 +30,14 @@ var INITIAL_STATE = {
30
30
  },
31
31
  waiting: false,
32
32
  errors: undefined,
33
+ currentErrors: undefined,
34
+ modalErrors: undefined,
33
35
 
34
36
  /* fonctionnalités vtl & md */
35
37
  updateBindings: function updateBindings() {},
36
38
  executeExpression: function executeExpression() {},
37
39
  handleChange: function handleChange() {},
38
- modalForControls: false
40
+ activeControls: false
39
41
  };
40
42
  var _default = INITIAL_STATE;
41
43
  exports["default"] = _default;
@@ -34,40 +34,54 @@ function getNextPage(state) {
34
34
  function reduceNextSubPage(state) {
35
35
  var pager = state.pager;
36
36
  var subPage = pager.subPage;
37
+
38
+ var newPager = _objectSpread(_objectSpread({}, pager), {}, {
39
+ subPage: subPage + 1
40
+ });
41
+
37
42
  return _objectSpread(_objectSpread({}, state), {}, {
38
- pager: _objectSpread(_objectSpread({}, pager), {}, {
39
- subPage: subPage + 1
43
+ pager: _objectSpread(_objectSpread({}, newPager), {}, {
44
+ lastReachedPage: (0, _commons2.getNewReachedPage)(newPager)
40
45
  }),
41
- errors: undefined
46
+ modalErrors: undefined
42
47
  });
43
48
  }
44
49
 
45
50
  function reduceNextIteration(state) {
46
51
  var pager = state.pager;
47
52
  var iteration = pager.iteration;
53
+
54
+ var newPager = _objectSpread(_objectSpread({}, pager), {}, {
55
+ subPage: 0,
56
+ iteration: iteration + 1
57
+ });
58
+
48
59
  return _objectSpread(_objectSpread({}, state), {}, {
49
- pager: _objectSpread(_objectSpread({}, pager), {}, {
50
- subPage: 0,
51
- iteration: iteration + 1
60
+ pager: _objectSpread(_objectSpread({}, newPager), {}, {
61
+ lastReachedPage: (0, _commons2.getNewReachedPage)(newPager)
52
62
  }),
53
- errors: undefined
63
+ modalErrors: undefined
54
64
  });
55
65
  }
56
66
 
57
67
  function reduceNextPage(state, _ref) {
58
68
  var next = _ref.next;
59
69
  var pager = state.pager;
70
+
71
+ var newPager = _objectSpread(_objectSpread({}, pager), {}, {
72
+ page: next,
73
+ iteration: undefined,
74
+ nbIterations: undefined,
75
+ subPage: undefined,
76
+ nbSubPages: undefined
77
+ });
78
+
60
79
  return _objectSpread(_objectSpread({}, state), {}, {
61
80
  isInLoop: false,
62
- pager: _objectSpread(_objectSpread({}, pager), {}, {
63
- page: next,
64
- iteration: undefined,
65
- nbIterations: undefined,
66
- subPage: undefined,
67
- nbSubPages: undefined,
68
- lastReachedPage: lastReachedPage(pager, next)
81
+ pager: _objectSpread(_objectSpread({}, newPager), {}, {
82
+ lastReachedPage: (0, _commons2.getNewReachedPage)(newPager)
69
83
  }),
70
- errors: undefined
84
+ modalErrors: undefined
71
85
  });
72
86
  }
73
87
 
@@ -83,16 +97,19 @@ function reduceStartLoop(state, _ref2) {
83
97
  if (!(0, _commons.validateLoopConditionFilter)(state, {
84
98
  next: next
85
99
  })) {
100
+ var newPager = _objectSpread(_objectSpread({}, pager), {}, {
101
+ page: next,
102
+ subPage: undefined,
103
+ nbSubPages: undefined,
104
+ iteration: undefined,
105
+ nbIterations: undefined
106
+ });
107
+
86
108
  return _objectSpread(_objectSpread({}, state), {}, {
87
- pager: _objectSpread(_objectSpread({}, pager), {}, {
88
- page: next,
89
- subPage: undefined,
90
- nbSubPages: undefined,
91
- iteration: undefined,
92
- nbIterations: undefined,
93
- lastReachedPage: lastReachedPage(pager, next)
109
+ pager: _objectSpread(_objectSpread({}, newPager), {}, {
110
+ lastReachedPage: (0, _commons2.getNewReachedPage)(newPager)
94
111
  }),
95
- errors: undefined
112
+ modalErrors: undefined
96
113
  });
97
114
  }
98
115
  /*
@@ -108,30 +125,29 @@ function reduceStartLoop(state, _ref2) {
108
125
  });
109
126
 
110
127
  if (Array.isArray(subPages)) {
128
+ var _newPager = _objectSpread(_objectSpread({}, pager), {}, {
129
+ page: next,
130
+ subPage: 0,
131
+ nbSubPages: subPages.length,
132
+ iteration: 0,
133
+ nbIterations: nbIterations
134
+ });
135
+
111
136
  return _objectSpread(_objectSpread({}, state), {}, {
112
137
  isInLoop: true,
113
- pager: _objectSpread(_objectSpread({}, pager), {}, {
114
- page: next,
115
- subPage: 0,
116
- nbSubPages: subPages.length,
117
- iteration: 0,
118
- nbIterations: nbIterations,
119
- lastReachedPage: lastReachedPage(pager, next)
138
+ pager: _objectSpread(_objectSpread({}, _newPager), {}, {
139
+ lastReachedPage: (0, _commons2.getNewReachedPage)(_newPager)
120
140
  }),
121
- errors: undefined
141
+ modalErrors: undefined
122
142
  });
123
143
  }
124
144
 
125
145
  return state;
126
146
  }
127
147
 
128
- function lastReachedPage(pager, page) {
129
- //TODO improve case with sub and iterations and cleaning !!!!
130
- return Number.parseInt(page) > Number.parseInt(pager.lastReachedPage) ? page : pager.lastReachedPage;
131
- }
132
-
133
148
  function validateChange(state) {
134
149
  if ((0, _commons.isOnEmptyPage)(state)) {
150
+ // Is it necessary to wrap by control reducer ?
135
151
  return reduceGoNextPage(state);
136
152
  }
137
153
 
@@ -180,6 +196,6 @@ function reduceGoNextPage(state) {
180
196
  }));
181
197
  }
182
198
 
183
- var _default = (0, _validateControls.createValidateReducer)(reduceGoNextPage);
199
+ var _default = (0, _validateControls.createModalControlsReducer)((0, _validateControls.createControlsReducer)(reduceGoNextPage));
184
200
 
185
201
  exports["default"] = _default;
@@ -34,19 +34,6 @@ function goStartLoop(state, _ref) {
34
34
  pager = state.pager,
35
35
  executeExpression = state.executeExpression;
36
36
  var subPages = pages[previous].subPages; //TODO: check if loop components are all filtered
37
- // if (validateLoopConditionFilter(state, { next: previous })) {
38
- // return {
39
- // ...state,
40
- // pager: {
41
- // ...pager,
42
- // page: previous,
43
- // subPage: undefined,
44
- // nbSubPages: undefined,
45
- // iteration: undefined,
46
- // nbIterations: undefined,
47
- // },
48
- // };
49
- // }
50
37
 
51
38
  if (Array.isArray(subPages)) {
52
39
  var nbIterations = executeExpression((0, _commons2.getCompatibleVTLExpression)(iterations), {
@@ -93,19 +80,25 @@ function goPreviousIteration(state) {
93
80
 
94
81
  function goPreviousPage(state, _ref2) {
95
82
  var previous = _ref2.previous;
96
- var pager = state.pager;
83
+ var pager = state.pager,
84
+ errors = state.errors;
97
85
  var page = pager.page;
98
86
 
87
+ var updatedPager = _objectSpread(_objectSpread({}, pager), {}, {
88
+ page: previous,
89
+ iteration: undefined,
90
+ nbIterations: undefined,
91
+ subPage: undefined,
92
+ nbSubPages: undefined
93
+ });
94
+
95
+ var currentErrors = errors ? errors[(0, _commons2.getPageTag)(updatedPager)] : undefined;
96
+
99
97
  if (previous !== page) {
100
98
  return _objectSpread(_objectSpread({}, state), {}, {
101
99
  isInLoop: false,
102
- pager: _objectSpread(_objectSpread({}, pager), {}, {
103
- page: previous,
104
- iteration: undefined,
105
- nbIterations: undefined,
106
- subPage: undefined,
107
- nbSubPages: undefined
108
- })
100
+ pager: updatedPager,
101
+ currentErrors: currentErrors
109
102
  });
110
103
  }
111
104
 
@@ -113,11 +106,19 @@ function goPreviousPage(state, _ref2) {
113
106
  }
114
107
 
115
108
  function validateChange(state) {
116
- if ((0, _commons.isOnEmptyPage)(state)) {
117
- return reduceGoPreviousPage(state);
109
+ var pager = state.pager,
110
+ errors = state.errors;
111
+ var currentErrors = errors !== undefined ? errors[(0, _commons2.getPageTag)(pager)] : undefined;
112
+
113
+ var updatedState = _objectSpread(_objectSpread({}, state), {}, {
114
+ currentErrors: currentErrors
115
+ });
116
+
117
+ if ((0, _commons.isOnEmptyPage)(updatedState)) {
118
+ return reduceGoPreviousPage(updatedState);
118
119
  }
119
120
 
120
- return state;
121
+ return updatedState;
121
122
  }
122
123
 
123
124
  function reduceGoPreviousPage(state) {
@@ -20,11 +20,19 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
20
20
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
21
21
 
22
22
  function validateChange(state) {
23
- if ((0, _commons.isOnEmptyPage)(state)) {
24
- return (0, _reduceGoNextPage["default"])(state);
23
+ var pager = state.pager,
24
+ errors = state.errors;
25
+ var currentErrors = errors !== undefined ? errors[(0, _commons.getPageTag)(pager)] : undefined;
26
+
27
+ var updatedState = _objectSpread(_objectSpread({}, state), {}, {
28
+ currentErrors: currentErrors
29
+ });
30
+
31
+ if ((0, _commons.isOnEmptyPage)(updatedState)) {
32
+ return (0, _reduceGoNextPage["default"])(updatedState);
25
33
  }
26
34
 
27
- return state;
35
+ return updatedState;
28
36
  }
29
37
 
30
38
  function reduceGoToPage(state, action) {
@@ -46,6 +54,6 @@ function reduceGoToPage(state, action) {
46
54
  return validateChange(state);
47
55
  }
48
56
 
49
- var _default = (0, _validateControls.createValidateReducer)(reduceGoToPage);
57
+ var _default = (0, _validateControls.createModalControlsReducer)(reduceGoToPage);
50
58
 
51
59
  exports["default"] = _default;
@@ -19,6 +19,8 @@ var _reduceLinksVariable = _interopRequireDefault(require("./reduce-links-variab
19
19
 
20
20
  var _compose = _interopRequireDefault(require("../../commons/compose"));
21
21
 
22
+ var _validateControls = require("../validate-controls");
23
+
22
24
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
23
25
 
24
26
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
@@ -128,5 +130,6 @@ function reduceHandleChange(state, action) {
128
130
  return reducers(state, action);
129
131
  }
130
132
 
131
- var _default = reduceHandleChange;
133
+ var _default = (0, _validateControls.createControlsReducer)(reduceHandleChange);
134
+
132
135
  exports["default"] = _default;
@@ -198,7 +198,7 @@ function reduceOnInit(state, action) {
198
198
  preferences = payload.preferences,
199
199
  savingType = payload.savingType,
200
200
  management = payload.management,
201
- modalForControls = payload.modalForControls;
201
+ activeControls = payload.activeControls;
202
202
 
203
203
  if (source && data) {
204
204
  var variables = createVariables(source, data); // map des variables
@@ -245,7 +245,7 @@ function reduceOnInit(state, action) {
245
245
  preferences: preferences,
246
246
  management: management,
247
247
  savingType: savingType,
248
- modalForControls: modalForControls
248
+ activeControls: activeControls
249
249
  }));
250
250
  }
251
251