@inseefr/lunatic 2.4.4 → 2.4.5-mvp-eap

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 (77) hide show
  1. package/lib/components/commons/components/combo-box/combo-box-content.js +2 -5
  2. package/lib/components/commons/components/combo-box/combo-box.js +16 -16
  3. package/lib/components/commons/components/combo-box/panel/panel.js +2 -4
  4. package/lib/components/commons/components/combo-box/state-management/reduce-on-init.js +4 -1
  5. package/lib/components/commons/components/orchestrated-component.js +2 -0
  6. package/lib/components/commons/create-row-orchestrator.js +2 -2
  7. package/lib/components/dropdown/lunatic-dropdown.js +1 -0
  8. package/lib/components/input-number/html/__snapshots__/input-number.spec.tsx.snap +4 -4
  9. package/lib/components/input-number/html/input-number-thousand.js +21 -8
  10. package/lib/components/input-number/html/input-number.js +4 -24
  11. package/lib/components/input-number/html/input-number.scss +1 -1
  12. package/lib/components/input-number/html/input-number.spec.js +21 -27
  13. package/lib/components/input-number/lunatic-input-number.js +2 -0
  14. package/lib/components/loop/loop.js +6 -4
  15. package/lib/components/loop/roster-for-loop/roster-for-loop-orchestrator.js +1 -0
  16. package/lib/components/loop/roster-for-loop/roster-for-loop.js +45 -33
  17. package/lib/components/loop/roster-for-loop/roster-table.js +22 -18
  18. package/lib/components/loop/roster-for-loop/roster.scss +30 -37
  19. package/lib/components/loop/roster-for-loop/row.js +84 -31
  20. package/lib/components/pairwise-links/pairwise-links.js +2 -4
  21. package/lib/components/pairwise-links/row.js +1 -0
  22. package/lib/components/suggester/html/suggester.js +31 -12
  23. package/lib/components/suggester/idb-suggester/idb-suggester.js +10 -7
  24. package/lib/components/suggester/lunatic-suggester.js +31 -4
  25. package/lib/hooks/use-did-change.js +19 -0
  26. package/lib/src/components/commons/components/combo-box/combo-box.d.ts +4 -4
  27. package/lib/src/components/commons/components/combo-box/combo-box.stories.d.ts +2 -2
  28. package/lib/src/components/commons/components/combo-box/panel/panel.d.ts +1 -1
  29. package/lib/src/components/commons/components/combo-box/state-management/actions.d.ts +4 -4
  30. package/lib/src/components/commons/components/orchestrated-component.d.ts +3 -3
  31. package/lib/src/components/commons/create-row-orchestrator.d.ts +4 -3
  32. package/lib/src/components/dropdown/html/dropdown-writable/dropdown-writable.d.ts +1 -1
  33. package/lib/src/components/dropdown/html/dropdown.d.ts +2 -1
  34. package/lib/src/components/input-number/html/input-number-thousand.d.ts +1 -1
  35. package/lib/src/components/input-number/html/input-number.d.ts +2 -1
  36. package/lib/src/components/loop/block-for-loop/block-for-loop-ochestrator.d.ts +11 -3
  37. package/lib/src/components/loop/block-for-loop/block-for-loop.d.ts +5 -1
  38. package/lib/src/components/loop/roster-for-loop/roster-for-loop-orchestrator.d.ts +11 -3
  39. package/lib/src/components/loop/roster-for-loop/roster-for-loop.d.ts +8 -4
  40. package/lib/src/components/loop/roster-for-loop/roster-table.d.ts +3 -3
  41. package/lib/src/components/loop/roster-for-loop/row.d.ts +3 -2
  42. package/lib/src/components/suggester/html/suggester.d.ts +6 -4
  43. package/lib/src/components/suggester/idb-suggester/idb-suggester.d.ts +4 -3
  44. package/lib/src/components/suggester/lunatic-suggester.d.ts +1 -1
  45. package/lib/src/components/type.d.ts +25 -5
  46. package/lib/src/hooks/use-did-change.d.ts +4 -0
  47. package/lib/src/use-lunatic/commons/fill-components/fill-from-state.d.ts +61 -16
  48. package/lib/src/use-lunatic/commons/fill-components/fill-specific-expression.d.ts +36 -0
  49. package/lib/src/use-lunatic/reducer/commons/is-loop-component.d.ts +2 -2
  50. package/lib/src/use-lunatic/reducer/overview/overview-on-init.d.ts +1 -1
  51. package/lib/src/use-lunatic/reducer/reduce-update-state.d.ts +106 -1
  52. package/lib/src/use-lunatic/replace-component-sequence.d.ts +1 -1
  53. package/lib/src/use-lunatic/type-source.d.ts +11 -1
  54. package/lib/src/use-lunatic/type.d.ts +1 -1
  55. package/lib/stories/input-number/input-number.stories.js +9 -2
  56. package/lib/stories/input-number/source-dynamic.json +41 -0
  57. package/lib/stories/loop/block-for-loop.stories.js +1 -8
  58. package/lib/stories/loop/roster-for-loop.stories.js +8 -1
  59. package/lib/stories/loop/source-with-header.json +15 -3
  60. package/lib/stories/questionnaires/EAP/data-eap.json +46 -0
  61. package/lib/stories/questionnaires/EAP/eap.stories.js +71 -0
  62. package/lib/stories/questionnaires/EAP/source-eap.json +433 -0
  63. package/lib/stories/suggester/multipleResponses.json +100 -0
  64. package/lib/stories/suggester/suggester-workers.stories.js +1 -1
  65. package/lib/stories/suggester/suggester.stories.js +18 -6
  66. package/lib/use-lunatic/commons/fill-components/fill-component-expressions.js +1 -1
  67. package/lib/use-lunatic/commons/get-component-value/get-component-value.js +8 -0
  68. package/lib/use-lunatic/initial-state.js +1 -0
  69. package/lib/use-lunatic/reducer/reducer.js +1 -0
  70. package/package.json +1 -1
  71. package/lib/components/input-number/html/__snapshots__/inpute-number.spec.jsx.snap +0 -92
  72. package/lib/components/input-number/html/input-number-default.js +0 -57
  73. package/lib/components/loop/roster-for-loop/body.js +0 -52
  74. package/lib/components/loop/roster-for-loop/header.js +0 -34
  75. package/lib/src/components/input-number/html/input-number-default.d.ts +0 -13
  76. package/lib/src/components/loop/roster-for-loop/body.d.ts +0 -12
  77. package/lib/src/components/loop/roster-for-loop/header.d.ts +0 -9
@@ -1,19 +1,16 @@
1
1
  "use strict";
2
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
3
  Object.defineProperty(exports, "__esModule", {
5
4
  value: true
6
5
  });
7
6
  exports.ComboBoxContent = ComboBoxContent;
8
7
  exports["default"] = void 0;
9
- var _react = _interopRequireWildcard(require("react"));
10
8
  var _classnames = _interopRequireDefault(require("classnames"));
11
- var _keyboardKeyCodes = require("./state-management/reduce-on-keydown/keyboard-key-codes");
9
+ var _react = require("react");
12
10
  var _index = require("../../index");
11
+ var _keyboardKeyCodes = require("./state-management/reduce-on-keydown/keyboard-key-codes");
13
12
  var _jsxRuntime = require("react/jsx-runtime");
14
13
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
15
- 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); }
16
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
17
14
  function ComboBoxContent(_ref) {
18
15
  var children = _ref.children,
19
16
  focused = _ref.focused,
@@ -5,18 +5,18 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports["default"] = void 0;
8
- var _react = require("react");
9
8
  var _classnames = _interopRequireDefault(require("classnames"));
10
- var _delete = require("./selection/delete");
11
- var _stateManagement = require("./state-management");
12
- require("./combo-box.scss");
13
- var _selection = require("./selection/selection");
14
- var _panel = require("./panel/panel");
9
+ var _react = require("react");
10
+ var _index = require("../../index");
11
+ var _errors = _interopRequireDefault(require("../errors"));
12
+ var _label = _interopRequireDefault(require("../label"));
15
13
  var _comboBoxContainer = require("./combo-box-container");
16
14
  var _comboBoxContent = _interopRequireDefault(require("./combo-box-content"));
17
- var _label = _interopRequireDefault(require("../label"));
18
- var _errors = _interopRequireDefault(require("../errors"));
19
- var _index = require("../../index");
15
+ require("./combo-box.scss");
16
+ var _panel = require("./panel/panel");
17
+ var _delete = require("./selection/delete");
18
+ var _selection = require("./selection/selection");
19
+ var _stateManagement = require("./state-management");
20
20
  var _jsxRuntime = require("react/jsx-runtime");
21
21
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
22
22
  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; }
@@ -51,7 +51,7 @@ function ComboBox(_ref) {
51
51
  _ref$search = _ref.search,
52
52
  searchProps = _ref$search === void 0 ? EMPTY_SEARCH : _ref$search,
53
53
  _ref$getOptionValue = _ref.getOptionValue,
54
- getOptionValue = _ref$getOptionValue === void 0 ? getDefaultOptionValue : _ref$getOptionValue,
54
+ getOptionValue = _ref$getOptionValue === void 0 ? getResponseOptionValue : _ref$getOptionValue,
55
55
  label = _ref.label,
56
56
  description = _ref.description,
57
57
  errors = _ref.errors;
@@ -79,12 +79,14 @@ function ComboBox(_ref) {
79
79
  var onBlur = (0, _react.useCallback)(function () {
80
80
  dispatch(_stateManagement.actions.onBlur());
81
81
  }, []);
82
+
83
+ /* fixMe : typescript any*/
82
84
  var handleSelect = (0, _react.useCallback)(function (index) {
83
85
  var indexNumber = parseInt(index, 10);
84
86
  var option = options[indexNumber];
85
87
  dispatch(_stateManagement.actions.onSelect(indexNumber));
86
- onSelect(getOptionValue(option));
87
- }, [options, onSelect, getOptionValue]);
88
+ onSelect(option);
89
+ }, [options, onSelect]);
88
90
  var handleChange = (0, _react.useCallback)(function (s) {
89
91
  dispatch(_stateManagement.actions.onChange(s));
90
92
  onChange === null || onChange === void 0 ? void 0 : onChange(s);
@@ -153,13 +155,11 @@ function ComboBox(_ref) {
153
155
  })]
154
156
  });
155
157
  }
156
- function getDefaultOptionValue() {
158
+ function getResponseOptionValue() {
157
159
  var option = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
158
160
  value: ''
159
161
  };
160
- var id = option.id,
161
- value = option.value;
162
- return id || value;
162
+ return option.id;
163
163
  }
164
164
  var _default = (0, _index.createCustomizableLunaticField)(ComboBox, 'ComboBox');
165
165
  exports["default"] = _default;
@@ -4,12 +4,10 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.Panel = Panel;
7
- var _react = _interopRequireDefault(require("react"));
8
- var _panelContainer = require("./panel-container");
9
- var _optionContainer = require("./option-container");
10
7
  var _index = require("../../../index");
8
+ var _optionContainer = require("./option-container");
9
+ var _panelContainer = require("./panel-container");
11
10
  var _jsxRuntime = require("react/jsx-runtime");
12
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
13
11
  function Panel(_ref) {
14
12
  var _ref$optionRenderer = _ref.optionRenderer,
15
13
  OptionRender = _ref$optionRenderer === void 0 ? _index.DefaultOptionRenderer : _ref$optionRenderer,
@@ -4,12 +4,12 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports["default"] = void 0;
7
- 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); }
8
7
  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; }
9
8
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
10
9
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
11
10
  function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
12
11
  function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
12
+ 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); }
13
13
  function reduceOnInit(state, action) {
14
14
  var payload = action.payload;
15
15
  var options = payload.options,
@@ -18,6 +18,9 @@ function reduceOnInit(state, action) {
18
18
  if (Array.isArray(options) && value !== undefined) {
19
19
  var next = options.reduce(function (current, option, index) {
20
20
  var optionValue = getOptionValue(option);
21
+ if (value && _typeof(value) === 'object' && 'ID' in value && value.ID === optionValue) {
22
+ return index;
23
+ }
21
24
  if (value === optionValue) {
22
25
  return index;
23
26
  }
@@ -28,6 +28,7 @@ function OrchestratedComponent(_ref) {
28
28
  iteration = _ref.iteration,
29
29
  linksIterations = _ref.linksIterations,
30
30
  executeExpression = _ref.executeExpression,
31
+ getSuggesterStatus = _ref.getSuggesterStatus,
31
32
  errors = _ref.errors;
32
33
  var componentType = component.componentType;
33
34
  var componentFilled = (0, _commons.fillComponentExpressions)(component, {
@@ -51,6 +52,7 @@ function OrchestratedComponent(_ref) {
51
52
  shortcut: shortcut,
52
53
  value: value,
53
54
  executeExpression: executeExpression,
55
+ getSuggesterStatus: getSuggesterStatus,
54
56
  errors: errors
55
57
  }));
56
58
  }
@@ -4,9 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports["default"] = void 0;
7
- var _react = _interopRequireDefault(require("react"));
8
7
  var _jsxRuntime = require("react/jsx-runtime");
9
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
10
8
  function createRowOrchestrator(Row) {
11
9
  return function RowOrchestrator(_ref) {
12
10
  var id = _ref.id,
@@ -19,6 +17,7 @@ function createRowOrchestrator(Row) {
19
17
  shortcut = _ref.shortcut,
20
18
  preferences = _ref.preferences,
21
19
  executeExpression = _ref.executeExpression,
20
+ getSuggesterStatus = _ref.getSuggesterStatus,
22
21
  iteration = _ref.iteration,
23
22
  xAxisIterations = _ref.xAxisIterations,
24
23
  errors = _ref.errors;
@@ -36,6 +35,7 @@ function createRowOrchestrator(Row) {
36
35
  valueMap: valueMap,
37
36
  handleChange: handleChange,
38
37
  executeExpression: executeExpression,
38
+ getSuggesterStatus: getSuggesterStatus,
39
39
  iteration: iteration,
40
40
  linksIterations: linksIterations
41
41
  /** */,
@@ -26,6 +26,7 @@ function LunaticDropdown(_ref) {
26
26
  missingResponse = _ref.missingResponse,
27
27
  management = _ref.management,
28
28
  description = _ref.description;
29
+ /*FixMe : type any*/
29
30
  var onChange = (0, _useOnHandleChange["default"])({
30
31
  handleChange: handleChange,
31
32
  response: response,
@@ -16,8 +16,8 @@ exports[`InputNumber > renders without crashing 1`] = `
16
16
  lang="en"
17
17
  required=""
18
18
  step="1"
19
- type="number"
20
- value="input"
19
+ type="text"
20
+ value=""
21
21
  />
22
22
  </div>
23
23
  </div>
@@ -34,8 +34,8 @@ exports[`InputNumber > renders without crashing 1`] = `
34
34
  lang="en"
35
35
  required=""
36
36
  step="1"
37
- type="number"
38
- value="input"
37
+ type="text"
38
+ value=""
39
39
  />
40
40
  </div>
41
41
  </div>,
@@ -1,27 +1,36 @@
1
1
  "use strict";
2
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
3
  Object.defineProperty(exports, "__esModule", {
5
4
  value: true
6
5
  });
7
6
  exports["default"] = void 0;
8
7
  var _classnames = _interopRequireDefault(require("classnames"));
9
- var _react = _interopRequireWildcard(require("react"));
8
+ var _react = require("react");
10
9
  var _reactNumberFormat = require("react-number-format");
11
10
  var _i18n = require("../../../i18n");
12
11
  var _jsxRuntime = require("react/jsx-runtime");
13
- 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); }
14
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
15
12
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
13
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
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
+ 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); }
16
+ 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; }
17
+ function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i["return"] && (_r = _i["return"](), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
18
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
16
19
  var InputNumberThousand = function InputNumberThousand(_ref) {
17
20
  var id = _ref.id,
18
- value = _ref.value,
19
21
  onChange = _ref.onChange,
22
+ value = _ref.value,
20
23
  disabled = _ref.disabled,
24
+ required = _ref.required,
21
25
  labelId = _ref.labelId,
22
26
  min = _ref.min,
23
27
  max = _ref.max,
24
28
  decimals = _ref.decimals;
29
+ // Decimals is a number indicates the number behind the separator of decimals
30
+ // Computing step attribute of input according to decimal number
31
+ var _useState = (0, _react.useState)(decimals ? 1 / Math.pow(10, decimals) : 1),
32
+ _useState2 = _slicedToArray(_useState, 1),
33
+ step = _useState2[0];
25
34
  var handleChange = (0, _react.useCallback)(function (e) {
26
35
  var _e$floatValue;
27
36
  var val = (_e$floatValue = e.floatValue) !== null && _e$floatValue !== void 0 ? _e$floatValue : null;
@@ -29,9 +38,9 @@ var InputNumberThousand = function InputNumberThousand(_ref) {
29
38
  }, [onChange]);
30
39
  var isAllowed = (0, _react.useCallback)(function (values) {
31
40
  var floatValue = values.floatValue;
32
- if (Number.isInteger(min) && Number.isInteger(max) && floatValue && min && max) return floatValue >= min && floatValue <= max || false;
41
+ if (Number.isInteger(max) && floatValue && max) return floatValue <= max || false;
33
42
  return true;
34
- }, [max, min]);
43
+ }, [max]);
35
44
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNumberFormat.NumericFormat, {
36
45
  id: id,
37
46
  className: (0, _classnames["default"])({
@@ -39,8 +48,12 @@ var InputNumberThousand = function InputNumberThousand(_ref) {
39
48
  }),
40
49
  onValueChange: handleChange,
41
50
  value: value !== null && value !== void 0 ? value : '',
42
- "aria-labbeledby": labelId,
51
+ min: min,
52
+ max: max,
53
+ step: step,
54
+ "aria-labelledby": labelId,
43
55
  disabled: disabled,
56
+ required: required,
44
57
  lang: "en",
45
58
  isAllowed: isAllowed,
46
59
  allowedDecimalSeparators: _i18n.inputNumberPropsI18N.allDecimalSeparators,
@@ -4,20 +4,12 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports["default"] = void 0;
7
- var _react = require("react");
7
+ var _function = require("../../../utils/function");
8
8
  var _commons = require("../../commons");
9
- var _inputNumberDefault = _interopRequireDefault(require("./input-number-default"));
10
9
  var _inputNumberThousand = _interopRequireDefault(require("./input-number-thousand"));
11
10
  require("./input-number.scss");
12
- var _function = require("../../../utils/function");
13
11
  var _jsxRuntime = require("react/jsx-runtime");
14
12
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
15
- function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
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
- 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); }
18
- 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; }
19
- function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i["return"] && (_r = _i["return"](), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
20
- function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
21
13
  function InputNumber(_ref) {
22
14
  var id = _ref.id,
23
15
  _ref$value = _ref.value,
@@ -31,15 +23,13 @@ function InputNumber(_ref) {
31
23
  _ref$decimals = _ref.decimals,
32
24
  decimals = _ref$decimals === void 0 ? 0 : _ref$decimals,
33
25
  unit = _ref.unit,
26
+ dynamicUnit = _ref.dynamicUnit,
34
27
  label = _ref.label,
35
28
  errors = _ref.errors,
36
29
  _ref$required = _ref.required,
37
30
  required = _ref$required === void 0 ? true : _ref$required,
38
31
  description = _ref.description;
39
32
  var labelId = "label-".concat(id);
40
- var _useState = (0, _react.useState)(max && max > 1000),
41
- _useState2 = _slicedToArray(_useState, 1),
42
- useThousandSeparator = _useState2[0];
43
33
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
44
34
  className: "lunatic-input-number",
45
35
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_commons.Label, {
@@ -47,29 +37,19 @@ function InputNumber(_ref) {
47
37
  id: labelId,
48
38
  description: description,
49
39
  children: label
50
- }), useThousandSeparator && /*#__PURE__*/(0, _jsxRuntime.jsx)(_inputNumberThousand["default"], {
40
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_inputNumberThousand["default"], {
51
41
  id: id,
52
42
  value: value,
53
43
  onChange: onChange,
54
44
  disabled: disabled,
55
45
  required: required,
56
46
  labelId: labelId,
57
- max: max,
58
47
  min: min,
59
- decimals: decimals
60
- }), !useThousandSeparator && /*#__PURE__*/(0, _jsxRuntime.jsx)(_inputNumberDefault["default"], {
61
- id: id,
62
- value: value,
63
- onChange: onChange,
64
- disabled: disabled,
65
- required: required,
66
- labelId: labelId,
67
48
  max: max,
68
- min: min,
69
49
  decimals: decimals
70
50
  }), unit && /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
71
51
  children: unit
72
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_commons.Errors, {
52
+ }), dynamicUnit, /*#__PURE__*/(0, _jsxRuntime.jsx)(_commons.Errors, {
73
53
  errors: errors,
74
54
  activeId: id
75
55
  })]
@@ -2,7 +2,7 @@
2
2
 
3
3
  .lunatic-component {
4
4
  .lunatic-input-number {
5
- display: inline-block;
5
+ display: flex;
6
6
 
7
7
  .label-description {
8
8
  display: block;
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
 
3
3
  var _react = require("@testing-library/react");
4
- var _inputNumber = _interopRequireDefault(require("./input-number"));
5
4
  var _vitest = require("vitest");
5
+ var _inputNumber = _interopRequireDefault(require("./input-number"));
6
6
  var _jsxRuntime = require("react/jsx-runtime");
7
7
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
8
8
  (0, _vitest.describe)('InputNumber', function () {
@@ -16,7 +16,6 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "d
16
16
  id: "input",
17
17
  "aria-labelledby": "input"
18
18
  }));
19
- (0, _vitest.expect)(_react.screen.getByRole('spinbutton')).toBeInTheDocument();
20
19
  (0, _vitest.expect)(container).toMatchSnapshot();
21
20
  });
22
21
  (0, _vitest.it)('renders label and input', function () {
@@ -28,7 +27,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "d
28
27
  })),
29
28
  container = _render.container;
30
29
  var label = _react.screen.getByText(labelText);
31
- var input = container.querySelector('input[type="number"]');
30
+ var input = container.querySelector('input[type="text"]');
32
31
  (0, _vitest.expect)(label).toBeInTheDocument();
33
32
  (0, _vitest.expect)(input).toBeInTheDocument();
34
33
  });
@@ -38,17 +37,28 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "d
38
37
  value: 10,
39
38
  onChange: mockOnChange
40
39
  })),
41
- getByRole = _render2.getByRole;
42
- var input = getByRole('spinbutton');
43
- (0, _vitest.expect)(input).toHaveValue(10);
40
+ container = _render2.container;
41
+ var input = container.querySelector('input[type="text"]');
42
+ (0, _vitest.expect)(input).toHaveValue('10');
44
43
  });
45
- (0, _vitest.it)('calls onChange with parsed value', function () {
44
+ (0, _vitest.it)('renders with big value', function () {
46
45
  var _render3 = (0, _react.render)( /*#__PURE__*/(0, _jsxRuntime.jsx)(_inputNumber["default"], {
47
46
  id: "number",
47
+ value: 10000.45,
48
+ decimals: 2,
48
49
  onChange: mockOnChange
49
50
  })),
50
51
  container = _render3.container;
51
- var input = container.querySelector('input[type="number"]');
52
+ var input = container.querySelector('input[type="text"]');
53
+ (0, _vitest.expect)(input).toHaveValue('10,000.45');
54
+ });
55
+ (0, _vitest.it)('calls onChange with parsed value', function () {
56
+ var _render4 = (0, _react.render)( /*#__PURE__*/(0, _jsxRuntime.jsx)(_inputNumber["default"], {
57
+ id: "number",
58
+ onChange: mockOnChange
59
+ })),
60
+ container = _render4.container;
61
+ var input = container.querySelector('input[type="text"]');
52
62
  _react.fireEvent.change(input, {
53
63
  target: {
54
64
  value: '10'
@@ -58,33 +68,17 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "d
58
68
  (0, _vitest.expect)(mockOnChange).toHaveBeenCalledWith(10);
59
69
  });
60
70
  (0, _vitest.it)('renders unit element if provided', function () {
61
- var _render4 = (0, _react.render)( /*#__PURE__*/(0, _jsxRuntime.jsx)(_inputNumber["default"], {
71
+ var _render5 = (0, _react.render)( /*#__PURE__*/(0, _jsxRuntime.jsx)(_inputNumber["default"], {
62
72
  id: "input-number-test",
63
73
  value: 5,
64
74
  label: "Input Number",
65
75
  labelId: "input-number-label",
66
76
  unit: "kg"
67
77
  })),
68
- getByText = _render4.getByText;
78
+ getByText = _render5.getByText;
69
79
  var unit = getByText('kg');
70
80
  (0, _vitest.expect)(unit).toBeInTheDocument();
71
81
  });
72
- (0, _vitest.it)('calls onChange with new value when input value changes', function () {
73
- var handleChange = _vitest.vi.fn();
74
- var _render5 = (0, _react.render)( /*#__PURE__*/(0, _jsxRuntime.jsx)(_inputNumber["default"], {
75
- id: "input-number-test",
76
- value: 5,
77
- onChange: handleChange
78
- })),
79
- getByRole = _render5.getByRole;
80
- var input = getByRole('spinbutton');
81
- _react.fireEvent.change(input, {
82
- target: {
83
- value: '7'
84
- }
85
- });
86
- (0, _vitest.expect)(handleChange).toHaveBeenCalledWith(7);
87
- });
88
82
  (0, _vitest.it)('disables input when disabled prop is true', function () {
89
83
  var _render6 = (0, _react.render)( /*#__PURE__*/(0, _jsxRuntime.jsx)(_inputNumber["default"], {
90
84
  id: "number",
@@ -92,7 +86,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "d
92
86
  onChange: mockOnChange
93
87
  })),
94
88
  container = _render6.container;
95
- var input = container.querySelector('input[type="number"]');
89
+ var input = container.querySelector('input[type="text"]');
96
90
  (0, _vitest.expect)(input).toBeDisabled();
97
91
  });
98
92
  (0, _vitest.it)('renders with unit', function () {
@@ -26,6 +26,7 @@ function LunaticInputNumber(props) {
26
26
  max = props.max,
27
27
  decimals = props.decimals,
28
28
  unit = props.unit,
29
+ dynamicUnit = props.dynamicUnit,
29
30
  description = props.description,
30
31
  required = props.required,
31
32
  readOnly = props.readOnly;
@@ -54,6 +55,7 @@ function LunaticInputNumber(props) {
54
55
  max: max,
55
56
  decimals: decimals,
56
57
  unit: unit,
58
+ dynamicUnit: dynamicUnit,
57
59
  required: required,
58
60
  errors: errors
59
61
  })
@@ -4,7 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports["default"] = void 0;
7
- var _react = _interopRequireDefault(require("react"));
8
7
  var _blockForLoop = _interopRequireDefault(require("./block-for-loop"));
9
8
  var _rosterForLoop = _interopRequireDefault(require("./roster-for-loop"));
10
9
  var _jsxRuntime = require("react/jsx-runtime");
@@ -21,10 +20,11 @@ function Loop(props) {
21
20
  id = props.id,
22
21
  components = props.components,
23
22
  handleChange = props.handleChange,
24
- value = props.value,
25
23
  executeExpression = props.executeExpression,
24
+ getSuggesterStatus = props.getSuggesterStatus,
25
+ value = props.value,
26
26
  componentType = props.componentType,
27
- headers = props.headers,
27
+ header = props.header,
28
28
  shortcut = props.shortcut,
29
29
  management = props.management,
30
30
  missing = props.missing,
@@ -45,6 +45,7 @@ function Loop(props) {
45
45
  value: value,
46
46
  management: management,
47
47
  executeExpression: executeExpression,
48
+ getSuggesterStatus: getSuggesterStatus,
48
49
  missing: missing,
49
50
  shortcut: shortcut,
50
51
  features: features,
@@ -61,6 +62,7 @@ function Loop(props) {
61
62
  id: id,
62
63
  components: components,
63
64
  handleChange: handleChange,
65
+ getSuggesterStatus: getSuggesterStatus,
64
66
  value: value,
65
67
  management: management,
66
68
  executeExpression: executeExpression,
@@ -68,7 +70,7 @@ function Loop(props) {
68
70
  shortcut: shortcut,
69
71
  features: features,
70
72
  preferences: preferences,
71
- headers: headers,
73
+ header: header,
72
74
  errors: errors
73
75
  });
74
76
  default:
@@ -7,6 +7,7 @@ exports["default"] = void 0;
7
7
  var _commons = require("../../commons");
8
8
  var _row = _interopRequireDefault(require("./row"));
9
9
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
10
+ // @ts-ignore
10
11
  var RosterForLoopOrchestrator = (0, _commons.createRowOrchestrator)(_row["default"]);
11
12
  var _default = RosterForLoopOrchestrator;
12
13
  exports["default"] = _default;