@maif/react-forms 1.1.2 → 1.2.0

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/lib/index.js CHANGED
@@ -7,18 +7,24 @@ var React = require('react');
7
7
  var yup$1 = require('@hookform/resolvers/yup');
8
8
  var classNames = require('classnames');
9
9
  var deepEqual = require('fast-deep-equal');
10
- var reactFeather = require('react-feather');
10
+ var PropTypes = require('prop-types');
11
11
  var reactHookForm = require('react-hook-form');
12
- var reactRainbowComponents = require('react-rainbow-components');
13
12
  var ReactToolTip = require('react-tooltip');
14
13
  var uuid$1 = require('uuid');
14
+ var debounce = require('lodash.debounce');
15
+ var AdapterDateFns = require('@mui/x-date-pickers/AdapterDateFns');
16
+ var LocalizationProvider = require('@mui/x-date-pickers/LocalizationProvider');
17
+ var DatePicker = require('@mui/x-date-pickers/DatePicker');
18
+ var TimePicker = require('@mui/x-date-pickers/TimePicker');
19
+ var DateTimePicker = require('@mui/x-date-pickers/DateTimePicker');
20
+ var TextField = require('@mui/material/TextField');
15
21
  var CreatableSelect = require('react-select/creatable');
16
22
  var Select = require('react-select');
17
23
  var hash$1 = require('object-hash');
18
24
  var showdown = require('showdown');
19
25
  require('@fortawesome/fontawesome-free/css/all.css');
20
26
  require('highlight.js/styles/monokai.css');
21
- var hljs = require('highlight.js');
27
+ var hljs = require('highlight.js/lib/core');
22
28
 
23
29
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
24
30
 
@@ -45,7 +51,10 @@ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
45
51
  var React__namespace = /*#__PURE__*/_interopNamespace(React);
46
52
  var classNames__default = /*#__PURE__*/_interopDefaultLegacy(classNames);
47
53
  var deepEqual__default = /*#__PURE__*/_interopDefaultLegacy(deepEqual);
54
+ var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
48
55
  var ReactToolTip__default = /*#__PURE__*/_interopDefaultLegacy(ReactToolTip);
56
+ var debounce__default = /*#__PURE__*/_interopDefaultLegacy(debounce);
57
+ var TextField__default = /*#__PURE__*/_interopDefaultLegacy(TextField);
49
58
  var CreatableSelect__default = /*#__PURE__*/_interopDefaultLegacy(CreatableSelect);
50
59
  var Select__default = /*#__PURE__*/_interopDefaultLegacy(Select);
51
60
  var hash__default = /*#__PURE__*/_interopDefaultLegacy(hash$1);
@@ -78,7 +87,9 @@ const format = {
78
87
  hidden: "hidden",
79
88
  form: "form",
80
89
  buttonsSelect: "buttons",
81
- singleLineCode: "singleLineCode"
90
+ singleLineCode: "singleLineCode",
91
+ datetime: "datetime-local",
92
+ time: "time"
82
93
  };
83
94
  function stringTuple(...data) {
84
95
  return data;
@@ -206,20 +217,365 @@ var constraints = /*#__PURE__*/Object.freeze({
206
217
  jsonConstraints: jsonConstraints
207
218
  });
208
219
 
209
- const BooleanInput = React__default["default"].forwardRef(({ onChange, value, readOnly }, ref) => {
220
+ function _extends$8() { _extends$8 = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$8.apply(this, arguments); }
221
+
222
+ function _objectWithoutProperties$8(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose$8(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
223
+
224
+ function _objectWithoutPropertiesLoose$8(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
225
+ var HelpCircle = React.forwardRef(function (_ref, ref) {
226
+ var _ref$color = _ref.color,
227
+ color = _ref$color === void 0 ? 'currentColor' : _ref$color,
228
+ _ref$size = _ref.size,
229
+ size = _ref$size === void 0 ? 24 : _ref$size,
230
+ rest = _objectWithoutProperties$8(_ref, ["color", "size"]);
231
+
232
+ return /*#__PURE__*/React__default["default"].createElement("svg", _extends$8({
233
+ ref: ref,
234
+ xmlns: "http://www.w3.org/2000/svg",
235
+ width: size,
236
+ height: size,
237
+ viewBox: "0 0 24 24",
238
+ fill: "none",
239
+ stroke: color,
240
+ strokeWidth: "2",
241
+ strokeLinecap: "round",
242
+ strokeLinejoin: "round"
243
+ }, rest), /*#__PURE__*/React__default["default"].createElement("circle", {
244
+ cx: "12",
245
+ cy: "12",
246
+ r: "10"
247
+ }), /*#__PURE__*/React__default["default"].createElement("path", {
248
+ d: "M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"
249
+ }), /*#__PURE__*/React__default["default"].createElement("line", {
250
+ x1: "12",
251
+ y1: "17",
252
+ x2: "12.01",
253
+ y2: "17"
254
+ }));
255
+ });
256
+ HelpCircle.propTypes = {
257
+ color: PropTypes__default["default"].string,
258
+ size: PropTypes__default["default"].oneOfType([PropTypes__default["default"].string, PropTypes__default["default"].number])
259
+ };
260
+ HelpCircle.displayName = 'HelpCircle';
261
+
262
+ function _extends$7() { _extends$7 = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$7.apply(this, arguments); }
263
+
264
+ function _objectWithoutProperties$7(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose$7(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
265
+
266
+ function _objectWithoutPropertiesLoose$7(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
267
+ var Loader = React.forwardRef(function (_ref, ref) {
268
+ var _ref$color = _ref.color,
269
+ color = _ref$color === void 0 ? 'currentColor' : _ref$color,
270
+ _ref$size = _ref.size,
271
+ size = _ref$size === void 0 ? 24 : _ref$size,
272
+ rest = _objectWithoutProperties$7(_ref, ["color", "size"]);
273
+
274
+ return /*#__PURE__*/React__default["default"].createElement("svg", _extends$7({
275
+ ref: ref,
276
+ xmlns: "http://www.w3.org/2000/svg",
277
+ width: size,
278
+ height: size,
279
+ viewBox: "0 0 24 24",
280
+ fill: "none",
281
+ stroke: color,
282
+ strokeWidth: "2",
283
+ strokeLinecap: "round",
284
+ strokeLinejoin: "round"
285
+ }, rest), /*#__PURE__*/React__default["default"].createElement("line", {
286
+ x1: "12",
287
+ y1: "2",
288
+ x2: "12",
289
+ y2: "6"
290
+ }), /*#__PURE__*/React__default["default"].createElement("line", {
291
+ x1: "12",
292
+ y1: "18",
293
+ x2: "12",
294
+ y2: "22"
295
+ }), /*#__PURE__*/React__default["default"].createElement("line", {
296
+ x1: "4.93",
297
+ y1: "4.93",
298
+ x2: "7.76",
299
+ y2: "7.76"
300
+ }), /*#__PURE__*/React__default["default"].createElement("line", {
301
+ x1: "16.24",
302
+ y1: "16.24",
303
+ x2: "19.07",
304
+ y2: "19.07"
305
+ }), /*#__PURE__*/React__default["default"].createElement("line", {
306
+ x1: "2",
307
+ y1: "12",
308
+ x2: "6",
309
+ y2: "12"
310
+ }), /*#__PURE__*/React__default["default"].createElement("line", {
311
+ x1: "18",
312
+ y1: "12",
313
+ x2: "22",
314
+ y2: "12"
315
+ }), /*#__PURE__*/React__default["default"].createElement("line", {
316
+ x1: "4.93",
317
+ y1: "19.07",
318
+ x2: "7.76",
319
+ y2: "16.24"
320
+ }), /*#__PURE__*/React__default["default"].createElement("line", {
321
+ x1: "16.24",
322
+ y1: "7.76",
323
+ x2: "19.07",
324
+ y2: "4.93"
325
+ }));
326
+ });
327
+ Loader.propTypes = {
328
+ color: PropTypes__default["default"].string,
329
+ size: PropTypes__default["default"].oneOfType([PropTypes__default["default"].string, PropTypes__default["default"].number])
330
+ };
331
+ Loader.displayName = 'Loader';
332
+
333
+ function _extends$6() { _extends$6 = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$6.apply(this, arguments); }
334
+
335
+ function _objectWithoutProperties$6(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose$6(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
336
+
337
+ function _objectWithoutPropertiesLoose$6(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
338
+ var Upload = React.forwardRef(function (_ref, ref) {
339
+ var _ref$color = _ref.color,
340
+ color = _ref$color === void 0 ? 'currentColor' : _ref$color,
341
+ _ref$size = _ref.size,
342
+ size = _ref$size === void 0 ? 24 : _ref$size,
343
+ rest = _objectWithoutProperties$6(_ref, ["color", "size"]);
344
+
345
+ return /*#__PURE__*/React__default["default"].createElement("svg", _extends$6({
346
+ ref: ref,
347
+ xmlns: "http://www.w3.org/2000/svg",
348
+ width: size,
349
+ height: size,
350
+ viewBox: "0 0 24 24",
351
+ fill: "none",
352
+ stroke: color,
353
+ strokeWidth: "2",
354
+ strokeLinecap: "round",
355
+ strokeLinejoin: "round"
356
+ }, rest), /*#__PURE__*/React__default["default"].createElement("path", {
357
+ d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"
358
+ }), /*#__PURE__*/React__default["default"].createElement("polyline", {
359
+ points: "17 8 12 3 7 8"
360
+ }), /*#__PURE__*/React__default["default"].createElement("line", {
361
+ x1: "12",
362
+ y1: "3",
363
+ x2: "12",
364
+ y2: "15"
365
+ }));
366
+ });
367
+ Upload.propTypes = {
368
+ color: PropTypes__default["default"].string,
369
+ size: PropTypes__default["default"].oneOfType([PropTypes__default["default"].string, PropTypes__default["default"].number])
370
+ };
371
+ Upload.displayName = 'Upload';
372
+
373
+ function _extends$5() { _extends$5 = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$5.apply(this, arguments); }
374
+
375
+ function _objectWithoutProperties$5(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose$5(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
376
+
377
+ function _objectWithoutPropertiesLoose$5(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
378
+ var ChevronDown = React.forwardRef(function (_ref, ref) {
379
+ var _ref$color = _ref.color,
380
+ color = _ref$color === void 0 ? 'currentColor' : _ref$color,
381
+ _ref$size = _ref.size,
382
+ size = _ref$size === void 0 ? 24 : _ref$size,
383
+ rest = _objectWithoutProperties$5(_ref, ["color", "size"]);
384
+
385
+ return /*#__PURE__*/React__default["default"].createElement("svg", _extends$5({
386
+ ref: ref,
387
+ xmlns: "http://www.w3.org/2000/svg",
388
+ width: size,
389
+ height: size,
390
+ viewBox: "0 0 24 24",
391
+ fill: "none",
392
+ stroke: color,
393
+ strokeWidth: "2",
394
+ strokeLinecap: "round",
395
+ strokeLinejoin: "round"
396
+ }, rest), /*#__PURE__*/React__default["default"].createElement("polyline", {
397
+ points: "6 9 12 15 18 9"
398
+ }));
399
+ });
400
+ ChevronDown.propTypes = {
401
+ color: PropTypes__default["default"].string,
402
+ size: PropTypes__default["default"].oneOfType([PropTypes__default["default"].string, PropTypes__default["default"].number])
403
+ };
404
+ ChevronDown.displayName = 'ChevronDown';
405
+
406
+ function _extends$4() { _extends$4 = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$4.apply(this, arguments); }
407
+
408
+ function _objectWithoutProperties$4(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose$4(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
409
+
410
+ function _objectWithoutPropertiesLoose$4(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
411
+ var ChevronUp = React.forwardRef(function (_ref, ref) {
412
+ var _ref$color = _ref.color,
413
+ color = _ref$color === void 0 ? 'currentColor' : _ref$color,
414
+ _ref$size = _ref.size,
415
+ size = _ref$size === void 0 ? 24 : _ref$size,
416
+ rest = _objectWithoutProperties$4(_ref, ["color", "size"]);
417
+
418
+ return /*#__PURE__*/React__default["default"].createElement("svg", _extends$4({
419
+ ref: ref,
420
+ xmlns: "http://www.w3.org/2000/svg",
421
+ width: size,
422
+ height: size,
423
+ viewBox: "0 0 24 24",
424
+ fill: "none",
425
+ stroke: color,
426
+ strokeWidth: "2",
427
+ strokeLinecap: "round",
428
+ strokeLinejoin: "round"
429
+ }, rest), /*#__PURE__*/React__default["default"].createElement("polyline", {
430
+ points: "18 15 12 9 6 15"
431
+ }));
432
+ });
433
+ ChevronUp.propTypes = {
434
+ color: PropTypes__default["default"].string,
435
+ size: PropTypes__default["default"].oneOfType([PropTypes__default["default"].string, PropTypes__default["default"].number])
436
+ };
437
+ ChevronUp.displayName = 'ChevronUp';
438
+
439
+ function _extends$3() { _extends$3 = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$3.apply(this, arguments); }
440
+
441
+ function _objectWithoutProperties$3(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose$3(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
442
+
443
+ function _objectWithoutPropertiesLoose$3(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
444
+ var Trash2 = React.forwardRef(function (_ref, ref) {
445
+ var _ref$color = _ref.color,
446
+ color = _ref$color === void 0 ? 'currentColor' : _ref$color,
447
+ _ref$size = _ref.size,
448
+ size = _ref$size === void 0 ? 24 : _ref$size,
449
+ rest = _objectWithoutProperties$3(_ref, ["color", "size"]);
450
+
451
+ return /*#__PURE__*/React__default["default"].createElement("svg", _extends$3({
452
+ ref: ref,
453
+ xmlns: "http://www.w3.org/2000/svg",
454
+ width: size,
455
+ height: size,
456
+ viewBox: "0 0 24 24",
457
+ fill: "none",
458
+ stroke: color,
459
+ strokeWidth: "2",
460
+ strokeLinecap: "round",
461
+ strokeLinejoin: "round"
462
+ }, rest), /*#__PURE__*/React__default["default"].createElement("polyline", {
463
+ points: "3 6 5 6 21 6"
464
+ }), /*#__PURE__*/React__default["default"].createElement("path", {
465
+ d: "M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"
466
+ }), /*#__PURE__*/React__default["default"].createElement("line", {
467
+ x1: "10",
468
+ y1: "11",
469
+ x2: "10",
470
+ y2: "17"
471
+ }), /*#__PURE__*/React__default["default"].createElement("line", {
472
+ x1: "14",
473
+ y1: "11",
474
+ x2: "14",
475
+ y2: "17"
476
+ }));
477
+ });
478
+ Trash2.propTypes = {
479
+ color: PropTypes__default["default"].string,
480
+ size: PropTypes__default["default"].oneOfType([PropTypes__default["default"].string, PropTypes__default["default"].number])
481
+ };
482
+ Trash2.displayName = 'Trash2';
483
+
484
+ const BooleanInput = ({ onChange, value, readOnly, className, errorDisplayed }) => {
210
485
  const handleClick = (value) => {
211
486
  if (!readOnly) {
212
487
  onChange === null || onChange === void 0 ? void 0 : onChange(value);
213
488
  }
214
489
  };
215
- return (React__default["default"].createElement("div", { className: classNames__default["default"]({ ['mrf-cursor_pointer']: !readOnly, ['mrf-cursor_not_allowed']: readOnly }) },
216
- !!value && React__default["default"].createElement("div", { className: classNames__default["default"]('mrf-content_switch_button_on'), onClick: () => handleClick(false) },
217
- React__default["default"].createElement("div", { className: classNames__default["default"]('mrf-switch_button_on') })),
218
- !value && value !== null && React__default["default"].createElement("div", { className: classNames__default["default"]('mrf-content_switch_button_off'), onClick: () => handleClick(true) },
219
- React__default["default"].createElement("div", { className: classNames__default["default"]('mrf-switch_button_off') })),
220
- value === null && React__default["default"].createElement("div", { className: classNames__default["default"]('mrf-content_switch_button_null'), onClick: () => handleClick(true) },
221
- React__default["default"].createElement("div", { className: classNames__default["default"]('mrf-switch_button_null') }))));
490
+ let classes = classNames__default["default"]("mrf-content_switch", className, {
491
+ "mrf-content_switch_button_on": !!value,
492
+ "mrf-content_switch_button_off": !value && value !== null,
493
+ "mrf-content_switch_button_null": value === null,
494
+ "mrf-cursor_pointer": !readOnly,
495
+ "mrf-cursor_not_allowed": readOnly,
496
+ "mrf-input__invalid": !!errorDisplayed
497
+ });
498
+ let callback = () => handleClick(true);
499
+ if (!!value) {
500
+ callback = () => handleClick(false);
501
+ }
502
+ return React__default["default"].createElement("input", { type: "checkbox", className: classes, onChange: callback });
503
+ };
504
+
505
+ function _extends$2() { _extends$2 = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$2.apply(this, arguments); }
506
+
507
+ function _objectWithoutProperties$2(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose$2(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
508
+
509
+ function _objectWithoutPropertiesLoose$2(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
510
+ var EyeOff = React.forwardRef(function (_ref, ref) {
511
+ var _ref$color = _ref.color,
512
+ color = _ref$color === void 0 ? 'currentColor' : _ref$color,
513
+ _ref$size = _ref.size,
514
+ size = _ref$size === void 0 ? 24 : _ref$size,
515
+ rest = _objectWithoutProperties$2(_ref, ["color", "size"]);
516
+
517
+ return /*#__PURE__*/React__default["default"].createElement("svg", _extends$2({
518
+ ref: ref,
519
+ xmlns: "http://www.w3.org/2000/svg",
520
+ width: size,
521
+ height: size,
522
+ viewBox: "0 0 24 24",
523
+ fill: "none",
524
+ stroke: color,
525
+ strokeWidth: "2",
526
+ strokeLinecap: "round",
527
+ strokeLinejoin: "round"
528
+ }, rest), /*#__PURE__*/React__default["default"].createElement("path", {
529
+ d: "M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24"
530
+ }), /*#__PURE__*/React__default["default"].createElement("line", {
531
+ x1: "1",
532
+ y1: "1",
533
+ x2: "23",
534
+ y2: "23"
535
+ }));
536
+ });
537
+ EyeOff.propTypes = {
538
+ color: PropTypes__default["default"].string,
539
+ size: PropTypes__default["default"].oneOfType([PropTypes__default["default"].string, PropTypes__default["default"].number])
540
+ };
541
+ EyeOff.displayName = 'EyeOff';
542
+
543
+ function _extends$1() { _extends$1 = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$1.apply(this, arguments); }
544
+
545
+ function _objectWithoutProperties$1(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose$1(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
546
+
547
+ function _objectWithoutPropertiesLoose$1(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
548
+ var Eye = React.forwardRef(function (_ref, ref) {
549
+ var _ref$color = _ref.color,
550
+ color = _ref$color === void 0 ? 'currentColor' : _ref$color,
551
+ _ref$size = _ref.size,
552
+ size = _ref$size === void 0 ? 24 : _ref$size,
553
+ rest = _objectWithoutProperties$1(_ref, ["color", "size"]);
554
+
555
+ return /*#__PURE__*/React__default["default"].createElement("svg", _extends$1({
556
+ ref: ref,
557
+ xmlns: "http://www.w3.org/2000/svg",
558
+ width: size,
559
+ height: size,
560
+ viewBox: "0 0 24 24",
561
+ fill: "none",
562
+ stroke: color,
563
+ strokeWidth: "2",
564
+ strokeLinecap: "round",
565
+ strokeLinejoin: "round"
566
+ }, rest), /*#__PURE__*/React__default["default"].createElement("path", {
567
+ d: "M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"
568
+ }), /*#__PURE__*/React__default["default"].createElement("circle", {
569
+ cx: "12",
570
+ cy: "12",
571
+ r: "3"
572
+ }));
222
573
  });
574
+ Eye.propTypes = {
575
+ color: PropTypes__default["default"].string,
576
+ size: PropTypes__default["default"].oneOfType([PropTypes__default["default"].string, PropTypes__default["default"].number])
577
+ };
578
+ Eye.displayName = 'Eye';
223
579
 
224
580
  const Collapse = (props) => {
225
581
  const [collapsed, setCollapsed] = React.useState(props.initCollapsed || props.collapsed);
@@ -233,8 +589,8 @@ const Collapse = (props) => {
233
589
  React__default["default"].createElement("div", { className: 'mrf-cursor_pointer mrf-flex mrf-jc_between', onClick: toggle },
234
590
  React__default["default"].createElement("span", { className: classNames__default["default"]('mrf-collapse_label', { ['mrf-collapse_error']: props.errored }) }, props.label),
235
591
  React__default["default"].createElement("button", { type: "button", className: classNames__default["default"]('mrf-btn', 'mrf-btn_sm', 'mrf-ml_5', { ['mrf-collapse_error']: props.errored }), onClick: toggle },
236
- !!collapsed && React__default["default"].createElement(reactFeather.Eye, { size: 16 }),
237
- !collapsed && React__default["default"].createElement(reactFeather.EyeOff, { size: 16 }))),
592
+ !!collapsed && React__default["default"].createElement(Eye, { size: 16 }),
593
+ !collapsed && React__default["default"].createElement(EyeOff, { size: 16 }))),
238
594
  React__default["default"].createElement("div", { className: classNames__default["default"]('mrf-ml_10', {
239
595
  ['mrf-display__none']: !!collapsed,
240
596
  ['mrf-flex']: !!props.inline,
@@ -313,7 +669,7 @@ const useHashEffect = (func, deps) => {
313
669
  const depsHash = cleanHash(deps);
314
670
  const prevDepsHash = cleanHash(prevDeps.current);
315
671
  if (depsHash !== prevDepsHash) {
316
- prevDeps.current = deps;
672
+ prevDeps.current = Object.assign({}, deps);
317
673
  func();
318
674
  }
319
675
  }, deps); /* FIXME deps or [deps] ? */
@@ -369,12 +725,14 @@ const SelectInput = (props) => {
369
725
  }
370
726
  const possibleValues = (props.possibleValues || [])
371
727
  .map(v => transformOption(v));
372
- const [loading, setLoading] = React.useState(false);
728
+ const [loading, setLoading] = React.useState(true);
373
729
  const [values, setValues] = React.useState(possibleValues);
374
- const [value, setValue] = React.useState(valueToSelectOption(props.value || props.defaultValue, possibleValues, props.isMulti));
730
+ const [value, setValue] = React.useState();
375
731
  React.useEffect(() => {
376
- setValue(valueToSelectOption(props.value, values, props.isMulti));
377
- }, [props.value, values]);
732
+ if (!loading && values.length) {
733
+ setValue(valueToSelectOption(props.value || props.defaultValue, values, props.isMulti));
734
+ }
735
+ }, [props.value, values, props.defaultValue, loading]);
378
736
  React.useEffect(() => {
379
737
  if (props.optionsFrom) {
380
738
  const cond = option(props.fetchCondition)
@@ -394,9 +752,7 @@ const SelectInput = (props) => {
394
752
  promise = props.httpClient(props.optionsFrom, 'GET').then(r => r.json());
395
753
  }
396
754
  promise
397
- .then((values) => {
398
- return values.map(x => transformOption(x));
399
- })
755
+ .then((values) => values.map(x => transformOption(x)))
400
756
  .then((values) => {
401
757
  setValues(values);
402
758
  setValue(values.find((item) => {
@@ -414,6 +770,7 @@ const SelectInput = (props) => {
414
770
  else {
415
771
  setValues((props.possibleValues || [])
416
772
  .map(v => transformOption(v)));
773
+ setTimeout(() => setLoading(false), 250);
417
774
  }
418
775
  }, [props.optionsFrom, props.possibleValues]);
419
776
  const onChange = (changes) => {
@@ -458,13 +815,58 @@ const SelectInput = (props) => {
458
815
  })));
459
816
  }
460
817
  if (props.createOption) {
461
- return (React__default["default"].createElement(CreatableSelect__default["default"], Object.assign({}, props, { name: `${props.label}-search`, isLoading: loading, value: value, isDisabled: props.disabled, placeholder: props.placeholder, onChange: onChange, options: values, onCreateOption: option => handleCreate(option, props.onCreateOption), classNamePrefix: "react-form-select", className: props.className })));
818
+ return (React__default["default"].createElement(CreatableSelect__default["default"], Object.assign({}, props, { name: `${props.label}-search`, isLoading: loading, value: value, isDisabled: loading || props.disabled, placeholder: props.placeholder, onChange: onChange, options: values, onCreateOption: option => handleCreate(option, props.onCreateOption), classNamePrefix: "react-form-select", className: props.className })));
462
819
  }
463
820
  else {
464
- return (React__default["default"].createElement(Select__default["default"], Object.assign({}, props, { name: `${props.label}-search`, isLoading: loading, value: value, defaultValue: value, isDisabled: props.disabled, placeholder: props.placeholder, options: values, onChange: onChange, classNamePrefix: "react-form-select", className: props.className })));
821
+ return (React__default["default"].createElement(Select__default["default"], Object.assign({}, props, { name: `${props.label}-search`, isLoading: loading, value: value, defaultValue: value, isDisabled: loading || props.disabled, placeholder: props.placeholder, options: values, onChange: onChange, classNamePrefix: "react-form-select", className: props.className })));
465
822
  }
466
823
  };
467
824
 
825
+ function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
826
+
827
+ function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
828
+
829
+ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
830
+ var PlusCircle = React.forwardRef(function (_ref, ref) {
831
+ var _ref$color = _ref.color,
832
+ color = _ref$color === void 0 ? 'currentColor' : _ref$color,
833
+ _ref$size = _ref.size,
834
+ size = _ref$size === void 0 ? 24 : _ref$size,
835
+ rest = _objectWithoutProperties(_ref, ["color", "size"]);
836
+
837
+ return /*#__PURE__*/React__default["default"].createElement("svg", _extends({
838
+ ref: ref,
839
+ xmlns: "http://www.w3.org/2000/svg",
840
+ width: size,
841
+ height: size,
842
+ viewBox: "0 0 24 24",
843
+ fill: "none",
844
+ stroke: color,
845
+ strokeWidth: "2",
846
+ strokeLinecap: "round",
847
+ strokeLinejoin: "round"
848
+ }, rest), /*#__PURE__*/React__default["default"].createElement("circle", {
849
+ cx: "12",
850
+ cy: "12",
851
+ r: "10"
852
+ }), /*#__PURE__*/React__default["default"].createElement("line", {
853
+ x1: "12",
854
+ y1: "8",
855
+ x2: "12",
856
+ y2: "16"
857
+ }), /*#__PURE__*/React__default["default"].createElement("line", {
858
+ x1: "8",
859
+ y1: "12",
860
+ x2: "16",
861
+ y2: "12"
862
+ }));
863
+ });
864
+ PlusCircle.propTypes = {
865
+ color: PropTypes__default["default"].string,
866
+ size: PropTypes__default["default"].oneOfType([PropTypes__default["default"].string, PropTypes__default["default"].number])
867
+ };
868
+ PlusCircle.displayName = 'PlusCircle';
869
+
468
870
  const ObjectInput = (props) => {
469
871
  const [internalState, setInternalState] = React.useState({});
470
872
  React.useEffect(() => {
@@ -519,14 +921,14 @@ const ObjectInput = (props) => {
519
921
  };
520
922
  return (React__namespace.createElement("div", { className: props.className },
521
923
  Object.keys(internalState || {}).length === 0 && (React__namespace.createElement("button", { disabled: props.disabled, type: "button", className: 'mrf-flex mrf-btn mrf-btn_blue mrf-btn_sm', onClick: addFirst },
522
- React__namespace.createElement(reactFeather.PlusCircle, null))),
924
+ React__namespace.createElement(PlusCircle, null))),
523
925
  Object.entries(internalState || {}).map(([id, { key, value }], idx) => (React__namespace.createElement("div", { className: 'mrf-flex mrf-mt_5', key: idx },
524
926
  React__namespace.createElement("input", { disabled: props.disabled, type: "text", className: 'mrf-w_50 mrf-input', placeholder: props.placeholderKey, value: key, onChange: e => changeKey(id, e.target.value) }),
525
927
  React__namespace.createElement("input", { disabled: props.disabled, type: "text", className: 'mrf-w_50 mrf-input', placeholder: props.placeholderValue, value: value, onChange: e => changeValue(id, e.target.value) }),
526
928
  React__namespace.createElement("button", { disabled: props.disabled, type: "button", className: 'mrf-flex mrf-btn mrf-btn_red mrf-btn_sm mrf-ml_10', onClick: () => remove(id) },
527
- React__namespace.createElement(reactFeather.MinusCircle, null)),
929
+ React__namespace.createElement(PlusCircle, null)),
528
930
  idx === Object.keys(internalState).length - 1 && (React__namespace.createElement("button", { disabled: props.disabled, type: "button", className: 'mrf-flex mrf-btn mrf-btn_blue mrf-btn_sm mrf-ml_5', onClick: addNext },
529
- React__namespace.createElement(reactFeather.PlusCircle, null))))))));
931
+ React__namespace.createElement(PlusCircle, null))))))));
530
932
  };
531
933
 
532
934
  // Compressed representation of the Grapheme_Cluster_Break=Extend
@@ -27667,7 +28069,7 @@ function CodeInput({ onChange, value, mode = 'javascript', tabSize = 2, readOnly
27667
28069
  width: '-1',
27668
28070
  minWidth: '-1',
27669
28071
  maxWidth: '-1',
27670
- }, setRef }) {
28072
+ }, className, setRef }) {
27671
28073
  const ref = React.useRef();
27672
28074
  const [editor, setEditor] = React.useState();
27673
28075
  React.useEffect(() => {
@@ -27697,9 +28099,14 @@ function CodeInput({ onChange, value, mode = 'javascript', tabSize = 2, readOnly
27697
28099
  });
27698
28100
  }
27699
28101
  }, [value]);
27700
- return React__default["default"].createElement("div", { ref: ref });
28102
+ return React__default["default"].createElement("div", { className: className, ref: ref });
27701
28103
  }
27702
28104
 
28105
+ ['javascript', 'json', 'markdown', 'css'].forEach((langName) => {
28106
+ // Using require() here because import() support hasn't landed in Webpack yet
28107
+ const langModule = require(`highlight.js/lib/languages/${langName}`);
28108
+ hljs__default["default"].registerLanguage(langName, langModule);
28109
+ });
27703
28110
  const converter = new showdown__default["default"].Converter({
27704
28111
  omitExtraWLInCodeBlocks: true,
27705
28112
  ghCompatibleHeaderId: true,
@@ -27932,7 +28339,7 @@ const getShapeAndDependencies = (flow, schema, dependencies = [], rawData = {})
27932
28339
 
27933
28340
  const CustomizableInput$1 = React__namespace.memo((props) => {
27934
28341
  if (props.render) {
27935
- return (props.render(Object.assign(Object.assign({}, props.field), { error: props.error })));
28342
+ return (props.render(Object.assign(Object.assign({}, props.field), { error: props.error, informations: props.informations })));
27936
28343
  }
27937
28344
  return props.children;
27938
28345
  }, (prev, next) => {
@@ -27942,15 +28349,16 @@ const CustomizableInput$1 = React__namespace.memo((props) => {
27942
28349
  return (prev.field.value === next.field.value && next.errorDisplayed === prev.errorDisplayed && cleanHash(next.step) === cleanHash(prev.step));
27943
28350
  });
27944
28351
  const ControlledInput = (inputProps) => {
27945
- const { step, entry, children, component, errorDisplayed = false } = inputProps;
28352
+ const { step, entry, children, component, errorDisplayed = false, informations } = inputProps;
27946
28353
  const { field } = reactHookForm.useController({
27947
28354
  defaultValue: isDefined(step.defaultValue) ? step.defaultValue : null,
27948
28355
  name: entry
27949
28356
  });
27950
28357
  const { getValues, setValue, formState: { errors } } = reactHookForm.useFormContext();
28358
+ const error = entry.split('.').reduce((acc, curr) => acc && acc[curr], errors);
27951
28359
  const functionalProperty = (entry, prop) => {
27952
28360
  if (typeof prop === 'function') {
27953
- return prop({ rawValues: getValues(), value: getValues(entry) });
28361
+ return prop({ rawValues: getValues(), value: getValues(entry), informations, error, getValue: (key) => getValues(key) });
27954
28362
  }
27955
28363
  else {
27956
28364
  return prop;
@@ -27978,8 +28386,7 @@ const ControlledInput = (inputProps) => {
27978
28386
  option(step.onChange)
27979
28387
  .map(onChange => onChange({ rawValues: getValues(), value, setValue }));
27980
28388
  }, value: field.value });
27981
- const error = entry.split('.').reduce((acc, curr) => acc && acc[curr], errors);
27982
- return React__namespace.createElement(CustomizableInput$1, { render: step.render, step: step, field: Object.assign({ parent, setValue: (key, value) => setValue(key, value), rawValues: getValues() }, field), error: error, errorDisplayed: errorDisplayed }, component ? component(field, props) : React__namespace.cloneElement(children, Object.assign({}, props)));
28389
+ return React__namespace.createElement(CustomizableInput$1, { render: step.render, step: step, field: Object.assign({ setValue: (key, value) => setValue(key, value), rawValues: getValues(), getValue: (key) => getValues(key) }, field), error: error, errorDisplayed: errorDisplayed, informations: informations }, component ? component(field, props) : React__namespace.cloneElement(children, Object.assign({}, props)));
27983
28390
  };
27984
28391
 
27985
28392
  const usePrevious = (value) => {
@@ -27993,36 +28400,22 @@ const usePrevious = (value) => {
27993
28400
  // Return previous value (happens before update in useEffect above)
27994
28401
  return ref.current;
27995
28402
  };
27996
- const BasicWrapper = ({ entry, children, render, functionalProperty, step }) => {
27997
- const { formState, watch } = reactHookForm.useFormContext();
28403
+ const BasicWrapper = ({ entry, children, render, functionalProperty, step, informations }) => {
28404
+ const { formState } = reactHookForm.useFormContext();
27998
28405
  if (typeof entry === 'object') {
27999
28406
  return children;
28000
28407
  }
28001
- const visibleStep = option(step)
28002
- .map(s => s.visible)
28003
- .map(visible => {
28004
- let value;
28005
- switch (typeof visible) {
28006
- case 'object':
28007
- value = watch(visible.ref);
28008
- return option(visible.test).map(test => test(value)).getOrElse(value);
28009
- case 'boolean':
28010
- return visible;
28011
- default:
28012
- return true;
28013
- }
28014
- })
28015
- .getOrElse(true);
28016
- if (!visibleStep) {
28017
- return null;
28018
- }
28019
- const computedLabel = functionalProperty(entry, (step === null || step === void 0 ? void 0 : step.label) === null ? null : (step === null || step === void 0 ? void 0 : step.label) || entry);
28020
- const id = uuid$1.v4();
28021
28408
  // FIXME not sure it works as intended with more two or more parts
28022
28409
  const error = entry.split('.').reduce((acc, curr) => acc && acc[curr], formState.errors);
28023
28410
  const isDirty = entry.split('.').reduce((acc, curr) => acc && acc[curr], formState.dirtyFields);
28024
28411
  const isTouched = entry.split('.').reduce((acc, curr) => acc && acc[curr], formState.touchedFields);
28025
28412
  const errorDisplayed = formState.isSubmitted || isDirty || isTouched;
28413
+ const visibleStep = functionalProperty(entry, (step === null || step === void 0 ? void 0 : step.visible) === undefined ? true : step.visible, informations, error);
28414
+ if (!visibleStep) {
28415
+ return null;
28416
+ }
28417
+ const computedLabel = functionalProperty(entry, (step === null || step === void 0 ? void 0 : step.label) === null ? null : (step === null || step === void 0 ? void 0 : step.label) || entry, informations);
28418
+ const id = uuid$1.v4();
28026
28419
  if (render) {
28027
28420
  return render({ entry, label: computedLabel, error, help: step === null || step === void 0 ? void 0 : step.help, children });
28028
28421
  }
@@ -28032,13 +28425,13 @@ const BasicWrapper = ({ entry, children, render, functionalProperty, step }) =>
28032
28425
  (step === null || step === void 0 ? void 0 : step.help) && React__default["default"].createElement(React__default["default"].Fragment, null,
28033
28426
  React__default["default"].createElement(ReactToolTip__default["default"], { html: true, place: 'bottom', id: id }),
28034
28427
  React__default["default"].createElement("span", { className: 'mrf-flex mrf-ai_center', "data-html": true, "data-tip": step === null || step === void 0 ? void 0 : step.help, "data-for": id },
28035
- React__default["default"].createElement(reactFeather.HelpCircle, { style: { color: 'gray', width: 17, marginLeft: '.5rem', cursor: 'help' } })))),
28428
+ React__default["default"].createElement(HelpCircle, { style: { color: 'gray', width: 17, marginLeft: '.5rem', cursor: 'help' } })))),
28036
28429
  children,
28037
28430
  error && React__default["default"].createElement("div", { className: classNames__default["default"]('mrf-feedback', { ['mrf-txt_red']: !!errorDisplayed }) }, error.message)));
28038
28431
  };
28039
28432
  const CustomizableInput = (props) => {
28040
28433
  if (props.render) {
28041
- return (props.render(Object.assign(Object.assign({}, props.field), { error: props.error })));
28434
+ return (props.render(Object.assign(Object.assign({}, props), { error: props.error })));
28042
28435
  }
28043
28436
  return props.children;
28044
28437
  };
@@ -28142,16 +28535,18 @@ const validate = (flow, schema, value) => {
28142
28535
  abortEarly: false
28143
28536
  });
28144
28537
  };
28145
- const Watcher = ({ options, control, schema, onSubmit, handleSubmit }) => {
28538
+ const Watcher = React__default["default"].memo(({ options, control, schema, onSubmit, handleSubmit }) => {
28146
28539
  const data = reactHookForm.useWatch({ control });
28540
+ const realSubmit = (d) => handleSubmit(() => {
28541
+ onSubmit(d);
28542
+ })();
28543
+ const debouncedSubmit = React.useCallback(debounce__default["default"](realSubmit, 250, { leading: true }), []);
28147
28544
  useHashEffect(() => {
28148
- if (options.autosubmit) {
28149
- handleSubmit(() => {
28150
- onSubmit(cleanOutputArray(data, schema));
28151
- })();
28545
+ if (options === null || options === void 0 ? void 0 : options.autosubmit) {
28546
+ debouncedSubmit(data);
28152
28547
  }
28153
28548
  }, [data]);
28154
- if (options.watch) {
28549
+ if (options === null || options === void 0 ? void 0 : options.watch) {
28155
28550
  if (typeof options.watch === 'function') {
28156
28551
  options.watch(cleanOutputArray(data, schema));
28157
28552
  }
@@ -28162,7 +28557,9 @@ const Watcher = ({ options, control, schema, onSubmit, handleSubmit }) => {
28162
28557
  }
28163
28558
  }
28164
28559
  return null;
28165
- };
28560
+ }, () => {
28561
+ return true;
28562
+ });
28166
28563
  const Form = React__default["default"].forwardRef(function Form({ schema, flow, value, inputWrapper, onSubmit, onError = () => { }, footer, style = {}, className, options = {}, nostyle }, ref) {
28167
28564
  const formFlow = flow || Object.keys(schema);
28168
28565
  const maybeCustomHttpClient = (url, method) => {
@@ -28195,7 +28592,7 @@ const Form = React__default["default"].forwardRef(function Form({ schema, flow,
28195
28592
  // reset(cleanInputArray(value, defaultValues, flow, schema))
28196
28593
  // setReset(true)
28197
28594
  // }, [reset])
28198
- const { handleSubmit, formState: { errors, dirtyFields }, reset, trigger, getValues, watch } = methods;
28595
+ const { handleSubmit, reset, trigger, getValues } = methods;
28199
28596
  React.useEffect(() => {
28200
28597
  if (!!options.showErrorsOnStart) {
28201
28598
  trigger();
@@ -28204,9 +28601,9 @@ const Form = React__default["default"].forwardRef(function Form({ schema, flow,
28204
28601
  useHashEffect(() => {
28205
28602
  reset(Object.assign({}, cleanInputArray(value, defaultValues, flow, schema)));
28206
28603
  }, [value, schema]);
28207
- const functionalProperty = (entry, prop) => {
28604
+ const functionalProperty = (entry, prop, informations, error) => {
28208
28605
  if (typeof prop === 'function') {
28209
- return prop({ rawValues: getValues(), value: getValues(entry) }); // FIXME why ???
28606
+ return prop({ rawValues: getValues(), value: getValues(entry), informations, getValue: (key) => getValues(key), error });
28210
28607
  }
28211
28608
  else {
28212
28609
  return prop;
@@ -28227,13 +28624,17 @@ const Form = React__default["default"].forwardRef(function Form({ schema, flow,
28227
28624
  onSubmit(clean);
28228
28625
  }, onError) },
28229
28626
  formFlow.map((entry, idx) => {
28230
- const step = typeof entry === "object" ? undefined : schema[entry];
28627
+ if (typeof entry === 'object') {
28628
+ return (React__default["default"].createElement(CollapsedStep, { key: idx, entry: entry, schema: schema, inputWrapper: inputWrapper, httpClient: maybeCustomHttpClient, functionalProperty: functionalProperty }));
28629
+ }
28630
+ const step = schema[entry];
28231
28631
  if (!step && typeof entry === 'string') {
28232
28632
  console.error(`no step found for the entry "${entry}" in the given schema. Your form might not work properly. Please fix it`);
28233
28633
  return null;
28234
28634
  }
28235
- return (React__default["default"].createElement(BasicWrapper, { key: `${entry}-${idx}`, entry: entry, functionalProperty: functionalProperty, render: inputWrapper, step: step },
28236
- React__default["default"].createElement(Step, { key: idx, entry: entry, step: step, schema: schema, inputWrapper: inputWrapper, httpClient: maybeCustomHttpClient, functionalProperty: functionalProperty })));
28635
+ const informations = { path: entry };
28636
+ return (React__default["default"].createElement(BasicWrapper, { key: `${entry}-${idx}`, entry: entry, functionalProperty: functionalProperty, render: inputWrapper, step: step, informations: informations },
28637
+ React__default["default"].createElement(Step, { key: idx, entry: entry, step: step, schema: schema, inputWrapper: inputWrapper, httpClient: maybeCustomHttpClient, functionalProperty: functionalProperty, informations: informations })));
28237
28638
  }),
28238
28639
  React__default["default"].createElement(Footer, { render: footer, reset: () => reset(defaultValues), valid: handleSubmit(data => onSubmit(cleanOutputArray(data, schema)), onError), actions: options.actions }))));
28239
28640
  });
@@ -28248,26 +28649,32 @@ const Footer = (props) => {
28248
28649
  ((_k = (_j = props.actions) === null || _j === void 0 ? void 0 : _j.reset) === null || _k === void 0 ? void 0 : _k.display) && React__default["default"].createElement("button", { className: 'mrf-btn mrf-btn_red', type: "button", onClick: props.reset }, ((_m = (_l = props.actions) === null || _l === void 0 ? void 0 : _l.reset) === null || _m === void 0 ? void 0 : _m.label) || 'Reset'),
28249
28650
  isSubmitDisplayed && React__default["default"].createElement("button", { className: 'mrf-btn mrf-btn_green mrf-ml_10', type: "submit" }, ((_p = (_o = props.actions) === null || _o === void 0 ? void 0 : _o.submit) === null || _p === void 0 ? void 0 : _p.label) || 'Save')));
28250
28651
  };
28652
+ const CollapsedStep = (props) => {
28653
+ let { entry, schema, inputWrapper, httpClient, functionalProperty } = props;
28654
+ const { formState: { errors, dirtyFields, touchedFields } } = reactHookForm.useFormContext();
28655
+ const errored = extractFlowString(entry).some(step => !!errors[step] && (dirtyFields[step] || touchedFields[step]));
28656
+ //FIXME: get collapse errors
28657
+ return (React__default["default"].createElement(Collapse, Object.assign({}, entry, { errored: errored }), entry.flow.map((en, entryIdx) => {
28658
+ if (typeof en === 'object') {
28659
+ return (React__default["default"].createElement(CollapsedStep, Object.assign({ key: entryIdx }, props, { entry: en })));
28660
+ }
28661
+ const stp = schema[en];
28662
+ if (!stp && typeof en === 'string') {
28663
+ console.error(`no step found for the entry "${en}" in the given schema. Your form might not work properly. Please fix it`);
28664
+ return null;
28665
+ }
28666
+ const informations = { path: en };
28667
+ return (React__default["default"].createElement(BasicWrapper, { key: `collapse-${en}-${entryIdx}`, entry: en, functionalProperty: functionalProperty, step: stp, render: inputWrapper, informations: informations },
28668
+ React__default["default"].createElement(Step, { entry: en, step: stp, schema: schema, inputWrapper: inputWrapper, httpClient: httpClient, defaultValue: stp === null || stp === void 0 ? void 0 : stp.defaultValue, functionalProperty: functionalProperty, informations: informations })));
28669
+ })));
28670
+ };
28251
28671
  const Step = (props) => {
28252
- let { entry, realEntry, step, schema, inputWrapper, httpClient, defaultValue, index, functionalProperty, parent, parentInformations } = props;
28672
+ let { entry, realEntry, step, schema, inputWrapper, httpClient, defaultValue, index, functionalProperty, informations } = props;
28253
28673
  const { formState: { errors, dirtyFields, touchedFields, isSubmitted }, control, getValues, setValue, watch } = reactHookForm.useFormContext();
28254
- if (entry && typeof entry === 'object') {
28255
- const errored = extractFlowString(entry).some(step => !!errors[step] && (dirtyFields[step] || touchedFields[step]));
28256
- return (React__default["default"].createElement(Collapse, Object.assign({}, entry, { errored: errored }), entry.flow.map((en, entryIdx) => {
28257
- const stp = typeof en === "object" ? undefined : schema[en]; // TODO Factorise this logic
28258
- if (!stp && typeof en === 'string') {
28259
- console.error(`no step found for the entry "${en}" in the given schema. Your form might not work properly. Please fix it`);
28260
- return null;
28261
- }
28262
- return (React__default["default"].createElement(BasicWrapper, { key: `collapse-${en}-${entryIdx}`, entry: en, functionalProperty: functionalProperty, step: stp, render: inputWrapper },
28263
- React__default["default"].createElement(Step, { entry: en, step: stp, schema: schema, inputWrapper: inputWrapper, httpClient: httpClient, defaultValue: stp === null || stp === void 0 ? void 0 : stp.defaultValue, functionalProperty: functionalProperty, parentInformations: parentInformations })));
28264
- })));
28265
- }
28266
28674
  const error = entry.split('.').reduce((acc, curr) => acc && acc[curr], errors);
28267
28675
  const isDirty = entry.split('.').reduce((acc, curr) => acc && acc[curr], dirtyFields);
28268
28676
  const isTouched = entry.split('.').reduce((acc, curr) => acc && acc[curr], touchedFields);
28269
28677
  const errorDisplayed = (!!error && (isSubmitted || isDirty || isTouched));
28270
- const informations = { path: entry, parent: parentInformations, index };
28271
28678
  step = step;
28272
28679
  if (step.onAfterChange) {
28273
28680
  const data = watch();
@@ -28290,64 +28697,60 @@ const Step = (props) => {
28290
28697
  });
28291
28698
  }
28292
28699
  if (step.array) {
28293
- return (React__default["default"].createElement(CustomizableInput, { render: step.render, field: {
28294
- setValue: (key, value) => setValue(key, value), rawValues: getValues(), value: getValues(entry), onChange: (v) => setValue(entry, v)
28295
- }, error: !!error },
28296
- React__default["default"].createElement(ArrayStep, { entry: entry, step: step, disabled: functionalProperty(entry, step.disabled || false), component: ((props, idx) => {
28700
+ return (React__default["default"].createElement(CustomizableInput, { render: step.render, rawValues: getValues(), value: getValues(entry), onChange: (v) => setValue(entry, v), setValue: (key, value) => setValue(key, value), getValue: (key) => getValues(key), informations: informations, error: !!error },
28701
+ React__default["default"].createElement(ArrayStep, { entry: entry, step: step, disabled: functionalProperty(entry, step.disabled || false, informations, error), component: ((props, idx) => {
28297
28702
  var _a;
28298
- return (React__default["default"].createElement(Step, { entry: `${entry}.${idx}.value`, step: Object.assign(Object.assign({}, (schema[realEntry || entry])), { render: step.itemRender, onChange: undefined, array: false, onAfterChange: step.onAfterChange }), schema: schema, inputWrapper: inputWrapper, httpClient: httpClient, defaultValue: (_a = props.defaultValue) === null || _a === void 0 ? void 0 : _a.value, index: idx, functionalProperty: functionalProperty, parentInformations: informations }));
28703
+ return (React__default["default"].createElement(Step, { entry: `${entry}.${idx}.value`, step: Object.assign(Object.assign({}, (schema[realEntry || entry])), { render: step.itemRender, onChange: undefined, array: false, onAfterChange: step.onAfterChange }), schema: schema, inputWrapper: inputWrapper, httpClient: httpClient, defaultValue: (_a = props.defaultValue) === null || _a === void 0 ? void 0 : _a.value, index: idx, functionalProperty: functionalProperty, informations: { path: entry, parent: informations, index: idx } }));
28299
28704
  }) })));
28300
28705
  }
28301
28706
  switch (step.type) {
28302
28707
  case type.string:
28303
28708
  switch (step.format) {
28304
28709
  case format.text:
28305
- return (React__default["default"].createElement(ControlledInput, { step: step, entry: entry, errorDisplayed: errorDisplayed },
28710
+ return (React__default["default"].createElement(ControlledInput, { step: step, entry: entry, errorDisplayed: errorDisplayed, informations: informations },
28306
28711
  React__default["default"].createElement("textarea", { className: classNames__default["default"]('mrf-input', step.className, { 'mrf-mrf-input__invalid': !!errorDisplayed }) })));
28307
28712
  case format.code:
28308
28713
  case format.singleLineCode:
28309
28714
  const Component = step.format === format.code ? CodeInput : SingleLineCode;
28310
- return (React__default["default"].createElement(ControlledInput, { step: step, entry: entry, errorDisplayed: errorDisplayed },
28311
- React__default["default"].createElement(Component /*TODO try to pass className down OR use built in mechanism to display error classNames(step.className, { 'mrf-input__invalid': !!errorDisplayed })}*/, null)));
28715
+ return (React__default["default"].createElement(ControlledInput, { step: step, entry: entry, errorDisplayed: errorDisplayed, informations: informations },
28716
+ React__default["default"].createElement(Component, { className: classNames__default["default"](step === null || step === void 0 ? void 0 : step.className, { 'mrf-input__invalid': !!error }) })));
28312
28717
  case format.markdown:
28313
- return (React__default["default"].createElement(ControlledInput, { step: step, entry: entry, errorDisplayed: errorDisplayed },
28718
+ return (React__default["default"].createElement(ControlledInput, { step: step, entry: entry, errorDisplayed: errorDisplayed, informations: informations },
28314
28719
  React__default["default"].createElement(MarkdownInput, { className: classNames__default["default"](step.className, { 'mrf-input__invalid': !!errorDisplayed }) })));
28315
28720
  case format.buttonsSelect:
28316
28721
  case format.select: {
28317
- return (React__default["default"].createElement(ControlledInput, { step: step, entry: entry, errorDisplayed: errorDisplayed },
28318
- React__default["default"].createElement(SelectInput, Object.assign({ className: classNames__default["default"]('mrf-flex_grow_1', step.className, { 'mrf-input__invalid': !!errorDisplayed }), disabled: functionalProperty(entry, step.disabled || false) }, step.props, { possibleValues: step.options, httpClient: httpClient, isMulti: step.isMulti, createOption: step.createOption, onCreateOption: step.onCreateOption, transformer: step.transformer, buttons: step.format === format.buttonsSelect, optionsFrom: step.optionsFrom }))));
28722
+ return (React__default["default"].createElement(ControlledInput, { step: step, entry: entry, errorDisplayed: errorDisplayed, informations: informations },
28723
+ React__default["default"].createElement(SelectInput, Object.assign({ className: classNames__default["default"]('mrf-flex_grow_1', step.className, { 'mrf-input__invalid': !!errorDisplayed }), disabled: functionalProperty(entry, step.disabled || false, informations, error) }, step.props, { possibleValues: step.options, httpClient: httpClient, isMulti: step.isMulti, createOption: step.createOption, onCreateOption: step.onCreateOption, transformer: step.transformer, buttons: step.format === format.buttonsSelect, optionsFrom: step.optionsFrom }))));
28319
28724
  }
28320
28725
  default:
28321
- return (React__default["default"].createElement(ControlledInput, { step: step, entry: entry, errorDisplayed: errorDisplayed },
28726
+ return (React__default["default"].createElement(ControlledInput, { step: step, entry: entry, errorDisplayed: errorDisplayed, informations: informations },
28322
28727
  React__default["default"].createElement("input", { type: step.format || 'text', className: classNames__default["default"]('mrf-input', step.className, { 'mrf-input__invalid': !!errorDisplayed }) })));
28323
28728
  }
28324
28729
  case type.number:
28325
28730
  switch (step.format) {
28326
28731
  case format.buttonsSelect:
28327
28732
  case format.select:
28328
- return (React__default["default"].createElement(ControlledInput, { step: step, entry: entry, errorDisplayed: errorDisplayed },
28733
+ return (React__default["default"].createElement(ControlledInput, { step: step, entry: entry, errorDisplayed: errorDisplayed, informations: informations },
28329
28734
  React__default["default"].createElement(SelectInput, Object.assign({ className: classNames__default["default"]('mrf-content', step.className, { 'mrf-input__invalid': !!errorDisplayed }) }, step.props, { possibleValues: step.options, httpClient: httpClient, isMulti: step.isMulti, createOption: step.createOption, onCreateOption: step.onCreateOption, transformer: step.transformer, buttons: step.format === format.buttonsSelect, optionsFrom: step.optionsFrom }))));
28330
28735
  default:
28331
- return React__default["default"].createElement(ControlledInput, { step: step, entry: entry, errorDisplayed: errorDisplayed },
28736
+ return React__default["default"].createElement(ControlledInput, { step: step, entry: entry, errorDisplayed: errorDisplayed, informations: informations },
28332
28737
  React__default["default"].createElement("input", { type: step.format || 'number', className: classNames__default["default"]('mrf-input', step.className, { 'mrf-input__invalid': !!errorDisplayed }) }));
28333
28738
  }
28334
28739
  case type.bool:
28335
- return (React__default["default"].createElement(ControlledInput, { step: step, entry: entry, errorDisplayed: errorDisplayed },
28336
- React__default["default"].createElement(BooleanInput /* TODO see how to pass error down className={classNames(step.className, { 'mrf-input__invalid': !!errorDisplayed })}*/, null)));
28740
+ return (React__default["default"].createElement(ControlledInput, { step: step, entry: entry, errorDisplayed: errorDisplayed, informations: informations },
28741
+ React__default["default"].createElement(BooleanInput, { className: step.className, errorDisplayed: errorDisplayed })));
28337
28742
  case type.object:
28338
28743
  switch (step.format) {
28339
28744
  case format.buttonsSelect:
28340
28745
  case format.select:
28341
- return (React__default["default"].createElement(ControlledInput, { step: step, entry: entry, errorDisplayed: errorDisplayed },
28746
+ return (React__default["default"].createElement(ControlledInput, { step: step, entry: entry, errorDisplayed: errorDisplayed, informations: informations },
28342
28747
  React__default["default"].createElement(SelectInput, Object.assign({ className: classNames__default["default"]('mrf-flex_grow_1', step.className, { 'mrf-input__invalid': !!errorDisplayed }) }, step.props, { possibleValues: step.options, httpClient: httpClient, isMulti: step.isMulti, createOption: step.createOption, onCreateOption: step.onCreateOption, transformer: step.transformer, buttons: step.format === format.buttonsSelect, optionsFrom: step.optionsFrom }))));
28343
28748
  case format.form: //todo: disabled ?
28344
28749
  const flow = option(step.flow).getOrElse(option(step.schema).map(s => Object.keys(s)).getOrElse([]));
28345
- return (React__default["default"].createElement(CustomizableInput, { render: step.render, field: { parent, setValue: (key, value) => setValue(key, value), rawValues: getValues(), value: getValues(entry), onChange: (v) => setValue(entry, v, { shouldValidate: true }) } },
28750
+ return (React__default["default"].createElement(CustomizableInput, { render: step.render, rawValues: getValues(), value: getValues(entry), onChange: (v) => setValue(entry, v, { shouldValidate: true }), setValue: (key, value) => setValue(key, value), getValue: (key) => getValues(key), informations: informations },
28346
28751
  React__default["default"].createElement(NestedForm, { schema: step.schema, flow: flow, step: step, parent: entry, inputWrapper: inputWrapper, maybeCustomHttpClient: httpClient, value: getValues(entry) || defaultValue, functionalProperty: functionalProperty, errorDisplayed: errorDisplayed, informations: informations })));
28347
28752
  case format.code:
28348
- return (React__default["default"].createElement(ControlledInput, { step: step, entry: entry, errorDisplayed: errorDisplayed, component: (field, props) => (React__default["default"].createElement(CodeInput, Object.assign({}, props, {
28349
- /* TODO className={classNames(step.className, { 'mrf-input__invalid': !!error })}*/
28350
- onChange: (e) => {
28753
+ return (React__default["default"].createElement(ControlledInput, { step: step, entry: entry, errorDisplayed: errorDisplayed, informations: informations, component: (field, props) => (React__default["default"].createElement(CodeInput, Object.assign({}, props, { className: classNames__default["default"](step === null || step === void 0 ? void 0 : step.className, { 'mrf-input__invalid': !!error }), onChange: (e) => {
28351
28754
  let v;
28352
28755
  try {
28353
28756
  v = JSON.parse(e);
@@ -28360,12 +28763,28 @@ const Step = (props) => {
28360
28763
  .map(onChange => onChange({ rawValues: getValues(), value: v, setValue }));
28361
28764
  }, value: field.value === null ? null : ((typeof field.value === 'object') ? JSON.stringify(field.value, null, 2) : field.value) }))) }));
28362
28765
  default:
28363
- return (React__default["default"].createElement(ControlledInput, { step: step, entry: entry, errorDisplayed: errorDisplayed },
28766
+ return (React__default["default"].createElement(ControlledInput, { step: step, entry: entry, errorDisplayed: errorDisplayed, informations: informations },
28364
28767
  React__default["default"].createElement(ObjectInput, { className: classNames__default["default"](step.className, { 'mrf-input__invalid': !!errorDisplayed }) })));
28365
28768
  }
28366
28769
  case type.date:
28367
- return (React__default["default"].createElement(ControlledInput, { step: step, entry: entry, errorDisplayed: errorDisplayed },
28368
- React__default["default"].createElement(reactRainbowComponents.DatePicker, { className: classNames__default["default"]('mrf-datepicker', step.className, { 'mrf-input__invalid': !!errorDisplayed }), formatStyle: "large" })));
28770
+ switch (step.format) {
28771
+ case format.datetime:
28772
+ console.debug('datetime');
28773
+ return (React__default["default"].createElement(ControlledInput, { step: step, entry: entry, informations: informations, component: (field) => {
28774
+ return (React__default["default"].createElement(LocalizationProvider.LocalizationProvider, { dateAdapter: AdapterDateFns.AdapterDateFns },
28775
+ React__default["default"].createElement(DateTimePicker.DateTimePicker, { value: field.value, onChange: field.onChange, renderInput: (params) => React__default["default"].createElement(TextField__default["default"], Object.assign({}, params)) })));
28776
+ } }));
28777
+ case format.time:
28778
+ return (React__default["default"].createElement(ControlledInput, { step: step, entry: entry, informations: informations, component: (field) => {
28779
+ return (React__default["default"].createElement(LocalizationProvider.LocalizationProvider, { dateAdapter: AdapterDateFns.AdapterDateFns },
28780
+ React__default["default"].createElement(TimePicker.TimePicker, { value: field.value, onChange: field.onChange, renderInput: (params) => React__default["default"].createElement(TextField__default["default"], Object.assign({}, params)) })));
28781
+ } }));
28782
+ default:
28783
+ return (React__default["default"].createElement(ControlledInput, { step: step, entry: entry, informations: informations, component: (field) => {
28784
+ return (React__default["default"].createElement(LocalizationProvider.LocalizationProvider, { dateAdapter: AdapterDateFns.AdapterDateFns },
28785
+ React__default["default"].createElement(DatePicker.DatePicker, { value: field.value, onChange: field.onChange, renderInput: (params) => React__default["default"].createElement(TextField__default["default"], Object.assign({}, params)) })));
28786
+ } }));
28787
+ }
28369
28788
  case type.file:
28370
28789
  return (React__default["default"].createElement(reactHookForm.Controller, { name: entry, control: control, render: ({ field }) => {
28371
28790
  const FileInput = ({ onChange }) => {
@@ -28383,19 +28802,17 @@ const Step = (props) => {
28383
28802
  const files = field.value || [];
28384
28803
  return (React__default["default"].createElement("div", { className: classNames__default["default"]('mrf-flex', 'mrf-ai_center', step === null || step === void 0 ? void 0 : step.className, { 'mrf-input__invalid': !!error }) },
28385
28804
  React__default["default"].createElement("input", { ref: (r) => setInput(r), type: "file", multiple: true, className: 'mrf-d_none', onChange: setFiles }),
28386
- React__default["default"].createElement("button", { type: "button", className: 'mrf-btn mrf-btn_sm mrf-flex mrf-ai_center', disabled: uploading || functionalProperty(entry, (step === null || step === void 0 ? void 0 : step.disabled) || false), onClick: trigger },
28387
- uploading && React__default["default"].createElement(reactFeather.Loader, null),
28388
- !uploading && React__default["default"].createElement(reactFeather.Upload, null),
28805
+ React__default["default"].createElement("button", { type: "button", className: 'mrf-btn mrf-btn_sm mrf-flex mrf-ai_center', disabled: uploading || functionalProperty(entry, (step === null || step === void 0 ? void 0 : step.disabled) || false, informations, error), onClick: trigger },
28806
+ uploading && React__default["default"].createElement(Loader, null),
28807
+ !uploading && React__default["default"].createElement(Upload, null),
28389
28808
  React__default["default"].createElement("span", { className: 'mrf-ml_5' }, "Select file(s)")),
28390
28809
  React__default["default"].createElement("span", { className: 'mrf-ml_5' }, files.length <= 0 ? 'No files selected' : files.map(r => r.name).join(" , "))));
28391
28810
  };
28392
- return (React__default["default"].createElement(ControlledInput, { step: step, entry: entry, errorDisplayed: errorDisplayed },
28811
+ return (React__default["default"].createElement(ControlledInput, { step: step, entry: entry, errorDisplayed: errorDisplayed, informations: informations },
28393
28812
  React__default["default"].createElement(FileInput, null)));
28394
28813
  } }));
28395
28814
  case type.json:
28396
- return (React__default["default"].createElement(ControlledInput, { step: step, entry: entry, component: (field, props) => (React__default["default"].createElement(CodeInput, Object.assign({}, props, {
28397
- /* TODO className={classNames({ 'mrf-input__invalid': !!error })} */
28398
- onChange: (v) => {
28815
+ return (React__default["default"].createElement(ControlledInput, { step: step, entry: entry, informations: informations, component: (field, props) => (React__default["default"].createElement(CodeInput, Object.assign({}, props, { className: classNames__default["default"](step === null || step === void 0 ? void 0 : step.className, { 'mrf-input__invalid': !!error }), onChange: (v) => {
28399
28816
  field.onChange(v);
28400
28817
  option(step === null || step === void 0 ? void 0 : step.onChange)
28401
28818
  .map(onChange => onChange({ rawValues: getValues(), value: v, setValue }));
@@ -28422,7 +28839,7 @@ const ArrayStep = ({ entry, step, component, disabled }) => {
28422
28839
  remove(idx);
28423
28840
  trigger(entry);
28424
28841
  } },
28425
- React__default["default"].createElement(reactFeather.Trash2, { size: 16 })))));
28842
+ React__default["default"].createElement(Trash2, { size: 16 })))));
28426
28843
  }),
28427
28844
  React__default["default"].createElement("div", { className: 'mrf-flex mrf-jc_flex_end' },
28428
28845
  React__default["default"].createElement("button", { type: "button", className: classNames__default["default"]('mrf-btn', 'mrf-btn_blue', 'mrf-btn_sm', 'mrf-mt_5', { ['mrf-input__invalid']: !!errorDisplayed }), onClick: () => {
@@ -28466,31 +28883,21 @@ const NestedForm = ({ schema, flow, parent, inputWrapper, maybeCustomHttpClient,
28466
28883
  return [...acc, { step, entry }];
28467
28884
  }, []);
28468
28885
  const bordered = computedSandF.length >= 1 && step.label !== null;
28469
- return (React__default["default"].createElement("div", { className: classNames__default["default"]({ ['mrf-nestedform__border']: bordered, ['mrf-border__error']: !!errorDisplayed }), style: { position: 'relative' } },
28886
+ return (React__default["default"].createElement("div", { className: classNames__default["default"](step.className, { ['mrf-nestedform__border']: bordered, ['mrf-border__error']: !!errorDisplayed }), style: { position: 'relative' } },
28470
28887
  !!step.collapsable && schemaAndFlow.flow.length > 1 && collapsed &&
28471
- React__default["default"].createElement(reactFeather.ChevronDown, { size: 30, className: 'mrf-cursor_pointer', style: { position: 'absolute', top: -35, right: 0, zIndex: 100 }, strokeWidth: "2", onClick: () => setCollapsed(!collapsed) }),
28888
+ React__default["default"].createElement(ChevronDown, { size: 30, className: 'mrf-cursor_pointer', style: { position: 'absolute', top: -35, right: 0, zIndex: 100 }, strokeWidth: "2", onClick: () => setCollapsed(!collapsed) }),
28472
28889
  !!step.collapsable && schemaAndFlow.flow.length > 1 && !collapsed &&
28473
- React__default["default"].createElement(reactFeather.ChevronUp, { size: 30, className: 'mrf-cursor_pointer', style: { position: 'absolute', top: -35, right: 0, zIndex: 100 }, strokeWidth: "2", onClick: () => setCollapsed(!collapsed) }),
28890
+ React__default["default"].createElement(ChevronUp, { size: 30, className: 'mrf-cursor_pointer', style: { position: 'absolute', top: -35, right: 0, zIndex: 100 }, strokeWidth: "2", onClick: () => setCollapsed(!collapsed) }),
28474
28891
  computedSandF.map(({ step, entry }, idx) => {
28892
+ if (typeof entry === 'object') {
28893
+ return (React__default["default"].createElement(CollapsedStep, { key: idx, entry: entry, schema: schema, inputWrapper: inputWrapper, httpClient: maybeCustomHttpClient, functionalProperty: functionalProperty }));
28894
+ }
28475
28895
  if (!step && typeof entry === 'string') {
28476
28896
  console.error(`no step found for the entry "${entry}" in the given schema. Your form might not work properly. Please fix it`);
28477
28897
  return null;
28478
28898
  }
28479
- if (typeof entry === "object") {
28480
- const errored = extractFlowString(entry).some(step => !!errors[step] && (dirtyFields[step] || touchedFields[step])); /* FIXME does it works in case of Flow object ? Need to do a "flatMap" to retrieve all leafs string of flows objects */
28481
- return React__default["default"].createElement(Collapse, Object.assign({}, entry, { errored: errored }), entry.flow.map((en, entryIdx) => {
28482
- const stp = typeof en === "object" ? undefined : schema[en];
28483
- if (!stp && typeof en === 'string') {
28484
- console.error(`no step found for the entry "${en}" in the given schema. Your form might not work properly. Please fix it`);
28485
- return null;
28486
- }
28487
- return (React__default["default"].createElement(BasicWrapper, { key: `collapse-${en}-${entryIdx}`, entry: en, functionalProperty: functionalProperty, step: stp, render: inputWrapper },
28488
- React__default["default"].createElement(Step, { entry: en, step: stp, schema: schema, inputWrapper: inputWrapper, httpClient: maybeCustomHttpClient, defaultValue: stp === null || stp === void 0 ? void 0 : stp.defaultValue, functionalProperty: functionalProperty })));
28489
- }));
28490
- // TODO return collapse, then entry will always be a string in below return
28491
- }
28492
- return (React__default["default"].createElement(BasicWrapper, { key: `${entry}.${idx}`, className: classNames__default["default"]({ ['mrf-display__none']: (collapsed && !step.visibleOnCollapse) }), entry: `${parent}.${entry}`, functionalProperty: functionalProperty, step: step, render: inputWrapper },
28493
- React__default["default"].createElement(Step, { key: `step.${entry}.${idx}`, entry: `${parent}.${entry}`, realEntry: entry, step: schemaAndFlow.schema[entry], parent: parent, schema: schemaAndFlow.schema, inputWrapper: inputWrapper, httpClient: maybeCustomHttpClient, defaultValue: value && value[entry], functionalProperty: functionalProperty, parentInformations: informations })));
28899
+ return (React__default["default"].createElement(BasicWrapper, { key: `${entry}.${idx}`, className: classNames__default["default"]({ ['mrf-display__none']: (collapsed && !step.visibleOnCollapse) }), entry: `${parent}.${entry}`, functionalProperty: functionalProperty, step: step, render: inputWrapper, informations: { path: entry, parent: informations } },
28900
+ React__default["default"].createElement(Step, { key: `step.${entry}.${idx}`, entry: `${parent}.${entry}`, realEntry: entry, step: schemaAndFlow.schema[entry], schema: schemaAndFlow.schema, inputWrapper: inputWrapper, httpClient: maybeCustomHttpClient, defaultValue: value && value[entry], functionalProperty: functionalProperty, informations: { path: entry, parent: informations } })));
28494
28901
  })));
28495
28902
  };
28496
28903
  function extractFlowString(entry) {