@maif/react-forms 1.0.29 → 1.0.32

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 (44) hide show
  1. package/README.md +5 -4
  2. package/lib/esm/index.js +30260 -0
  3. package/lib/index.js +30281 -39
  4. package/package.json +29 -36
  5. package/rollup.config.js +53 -0
  6. package/dist/react-form.js +0 -2
  7. package/dist/react-form.js.LICENSE.txt +0 -103
  8. package/lib/Option.d.ts +0 -39
  9. package/lib/Option.js +0 -66
  10. package/lib/constraints.d.ts +0 -90
  11. package/lib/constraints.js +0 -371
  12. package/lib/form.d.ts +0 -2
  13. package/lib/form.js +0 -1361
  14. package/lib/format.d.ts +0 -12
  15. package/lib/format.js +0 -19
  16. package/lib/index.d.ts +0 -4
  17. package/lib/inputs/ArrayInput.d.ts +0 -1
  18. package/lib/inputs/ArrayInput.js +0 -141
  19. package/lib/inputs/BooleanInput.d.ts +0 -4
  20. package/lib/inputs/BooleanInput.js +0 -35
  21. package/lib/inputs/CodeInput.d.ts +0 -9
  22. package/lib/inputs/CodeInput.js +0 -89
  23. package/lib/inputs/Collapse.d.ts +0 -1
  24. package/lib/inputs/Collapse.js +0 -73
  25. package/lib/inputs/MarkdownInput.d.ts +0 -1
  26. package/lib/inputs/MarkdownInput.js +0 -433
  27. package/lib/inputs/SelectInput.d.ts +0 -1
  28. package/lib/inputs/SelectInput.js +0 -236
  29. package/lib/inputs/index.d.ts +0 -7
  30. package/lib/inputs/index.js +0 -96
  31. package/lib/inputs/objectInput.d.ts +0 -1
  32. package/lib/inputs/objectInput.js +0 -115
  33. package/lib/resolvers/index.d.ts +0 -2
  34. package/lib/resolvers/index.js +0 -19
  35. package/lib/resolvers/utils.d.ts +0 -5
  36. package/lib/resolvers/utils.js +0 -133
  37. package/lib/style.d.ts +0 -230
  38. package/lib/style.js +0 -178
  39. package/lib/styleContext.d.ts +0 -1
  40. package/lib/styleContext.js +0 -29
  41. package/lib/type.d.ts +0 -8
  42. package/lib/type.js +0 -15
  43. package/lib/utils.d.ts +0 -2
  44. package/lib/utils.js +0 -37
package/lib/form.js DELETED
@@ -1,1361 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.Form = void 0;
7
-
8
- var _react = _interopRequireWildcard(require("react"));
9
-
10
- var _yup = require("@hookform/resolvers/yup");
11
-
12
- var _classnames = _interopRequireDefault(require("classnames"));
13
-
14
- var _reactFeather = require("react-feather");
15
-
16
- var _reactHookForm = require("react-hook-form");
17
-
18
- var _reactRainbowComponents = require("react-rainbow-components");
19
-
20
- var _reactTooltip = _interopRequireDefault(require("react-tooltip"));
21
-
22
- var _uuid = require("uuid");
23
-
24
- var yup = _interopRequireWildcard(require("yup"));
25
-
26
- var _styleContext = require("./styleContext");
27
-
28
- var _type = require("./type");
29
-
30
- var _format = require("./format");
31
-
32
- var _index = require("./inputs/index");
33
-
34
- var _index2 = require("./resolvers/index");
35
-
36
- var _Option = require("./Option");
37
-
38
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
39
-
40
- 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); }
41
-
42
- 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; }
43
-
44
- function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
45
-
46
- function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
47
-
48
- function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
49
-
50
- function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
51
-
52
- 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); }
53
-
54
- function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
55
-
56
- 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."); }
57
-
58
- 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); }
59
-
60
- 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; }
61
-
62
- function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
63
-
64
- function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
65
-
66
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
67
-
68
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
69
-
70
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
71
-
72
- function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
73
-
74
- var usePrevious = function usePrevious(value) {
75
- // The ref object is a generic container whose current property is mutable ...
76
- // ... and can hold any value, similar to an instance property on a class
77
- var ref = (0, _react.useRef)(); // Store current value in ref
78
-
79
- (0, _react.useEffect)(function () {
80
- ref.current = JSON.parse(JSON.stringify(value));
81
- }, [value]); // Only re-run if value changes
82
- // Return previous value (happens before update in useEffect above)
83
-
84
- return ref.current;
85
- };
86
-
87
- var BasicWrapper = function BasicWrapper(_ref) {
88
- var entry = _ref.entry,
89
- className = _ref.className,
90
- label = _ref.label,
91
- error = _ref.error,
92
- help = _ref.help,
93
- children = _ref.children,
94
- render = _ref.render;
95
- var classes = (0, _styleContext.useCustomStyle)();
96
- var id = (0, _uuid.v4)();
97
-
98
- if (_typeof(entry) === 'object') {
99
- return children;
100
- }
101
-
102
- if (render) {
103
- return render({
104
- entry: entry,
105
- label: label,
106
- error: error,
107
- help: help,
108
- children: children
109
- });
110
- }
111
-
112
- return /*#__PURE__*/_react["default"].createElement("div", {
113
- className: "form-group mt-3 ".concat(className)
114
- }, label && /*#__PURE__*/_react["default"].createElement("label", {
115
- className: "form-label d-flex align-content-center",
116
- htmlFor: entry
117
- }, /*#__PURE__*/_react["default"].createElement("span", {
118
- className: "mr-2"
119
- }, label), help && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_reactTooltip["default"], {
120
- html: true,
121
- place: 'bottom',
122
- id: id
123
- }), /*#__PURE__*/_react["default"].createElement("span", {
124
- "data-html": true,
125
- "data-tip": help,
126
- "data-for": id
127
- }, /*#__PURE__*/_react["default"].createElement(_reactFeather.HelpCircle, {
128
- style: {
129
- color: 'gray',
130
- width: 17,
131
- marginLeft: '.5rem',
132
- cursor: 'help'
133
- }
134
- })))), children, error && /*#__PURE__*/_react["default"].createElement("div", {
135
- className: classes.invalid_feedback
136
- }, error.message));
137
- };
138
-
139
- var CustomizableInput = function CustomizableInput(props) {
140
- if (props.render) {
141
- return props.render(_objectSpread(_objectSpread({}, props.field), {}, {
142
- error: props.error
143
- }));
144
- }
145
-
146
- return props.children;
147
- };
148
-
149
- var defaultVal = function defaultVal(t, array, defaultValue) {
150
- if (!!defaultValue) return defaultValue;
151
- if (!!array) return [];
152
-
153
- switch (t) {
154
- case _type.type.bool:
155
- return false;
156
-
157
- case _type.type.number:
158
- return 0;
159
-
160
- case _type.type.object:
161
- return undefined;
162
- //todo: passur de moi
163
-
164
- case _type.type.string:
165
- return "";
166
-
167
- default:
168
- return undefined;
169
- }
170
- };
171
-
172
- var getDefaultValues = function getDefaultValues(flow, schema) {
173
- return flow.reduce(function (acc, key) {
174
- if (_typeof(key) === 'object') {
175
- return _objectSpread(_objectSpread({}, acc), getDefaultValues(key.flow, schema));
176
- }
177
-
178
- var entry = schema[key];
179
-
180
- if (!entry) {
181
- return acc;
182
- }
183
-
184
- return _objectSpread(_objectSpread({}, acc), {}, _defineProperty({}, key, defaultVal(entry.type, entry.array || entry.isMulti, entry.defaultValue)));
185
- }, {});
186
- };
187
-
188
- var Form = /*#__PURE__*/_react["default"].forwardRef(function (_ref2, ref) {
189
- var schema = _ref2.schema,
190
- flow = _ref2.flow,
191
- value = _ref2.value,
192
- inputWrapper = _ref2.inputWrapper,
193
- onSubmit = _ref2.onSubmit,
194
- _ref2$onError = _ref2.onError,
195
- onError = _ref2$onError === void 0 ? function () {} : _ref2$onError,
196
- footer = _ref2.footer,
197
- _ref2$style = _ref2.style,
198
- style = _ref2$style === void 0 ? {} : _ref2$style,
199
- className = _ref2.className,
200
- _ref2$options = _ref2.options,
201
- options = _ref2$options === void 0 ? {} : _ref2$options;
202
- var classes = (0, _styleContext.useCustomStyle)(style);
203
- var formFlow = flow || Object.keys(schema);
204
-
205
- var maybeCustomHttpClient = function maybeCustomHttpClient(url, method) {
206
- //todo: if present props.resolve()
207
- if (options.httpClient) {
208
- return options.httpClient(url, method);
209
- }
210
-
211
- return fetch(url, {
212
- method: method,
213
- headers: {
214
- Accept: 'application/json',
215
- 'Content-Type': 'application/json'
216
- }
217
- });
218
- };
219
-
220
- var defaultValues = getDefaultValues(formFlow, schema); //FIXME: get real schema through the switch
221
-
222
- var _resolver = function resolver(rawData) {
223
- var _getShapeAndDependenc = (0, _index2.getShapeAndDependencies)(formFlow, schema, [], rawData),
224
- shape = _getShapeAndDependenc.shape,
225
- dependencies = _getShapeAndDependenc.dependencies;
226
-
227
- var resolver = yup.object().shape(shape, dependencies);
228
- return resolver;
229
- };
230
-
231
- var cleanInputArray = function cleanInputArray(obj, subSchema) {
232
- return Object.entries(obj).reduce(function (acc, curr) {
233
- var _curr = _slicedToArray(curr, 2),
234
- key = _curr[0],
235
- v = _curr[1];
236
-
237
- if (Array.isArray(v)) {
238
- var isArray = (0, _Option.option)(subSchema).orElse(schema).map(function (s) {
239
- return s[key];
240
- }).map(function (entry) {
241
- return !!entry.array && !entry.render;
242
- }).getOrElse(false);
243
-
244
- if (isArray) {
245
- return _objectSpread(_objectSpread({}, acc), {}, _defineProperty({}, key, v.map(function (value) {
246
- return {
247
- value: value
248
- };
249
- })));
250
- }
251
-
252
- return _objectSpread(_objectSpread({}, acc), {}, _defineProperty({}, key, v));
253
- } else if (!!v && _typeof(v) === 'object' && !(v instanceof Date)) {
254
- var _subSchema$key;
255
-
256
- return _objectSpread(_objectSpread({}, acc), {}, _defineProperty({}, key, cleanInputArray(v, ((_subSchema$key = subSchema[key]) === null || _subSchema$key === void 0 ? void 0 : _subSchema$key.schema) || {})));
257
- } else {
258
- return _objectSpread(_objectSpread({}, acc), {}, _defineProperty({}, key, v));
259
- }
260
- }, {});
261
- };
262
-
263
- var cleanOutputArray = function cleanOutputArray(obj, subSchema) {
264
- return Object.entries(obj).reduce(function (acc, curr) {
265
- var _curr2 = _slicedToArray(curr, 2),
266
- key = _curr2[0],
267
- v = _curr2[1];
268
-
269
- if (Array.isArray(v)) {
270
- var isArray = (0, _Option.option)(subSchema).orElse(schema).map(function (s) {
271
- return s[key];
272
- }).map(function (entry) {
273
- return !!entry.array && !entry.render;
274
- }).getOrElse(false);
275
-
276
- if (isArray) {
277
- return _objectSpread(_objectSpread({}, acc), {}, _defineProperty({}, key, v.map(function (_ref3) {
278
- var value = _ref3.value;
279
- return value;
280
- })));
281
- }
282
-
283
- return _objectSpread(_objectSpread({}, acc), {}, _defineProperty({}, key, v));
284
- } else if (!!v && _typeof(v) === 'object' && !(v instanceof Date)) {
285
- var _subSchema$key2;
286
-
287
- return _objectSpread(_objectSpread({}, acc), {}, _defineProperty({}, key, cleanOutputArray(v, ((_subSchema$key2 = subSchema[key]) === null || _subSchema$key2 === void 0 ? void 0 : _subSchema$key2.schema) || {})));
288
- } else {
289
- return _objectSpread(_objectSpread({}, acc), {}, _defineProperty({}, key, v));
290
- }
291
- }, {});
292
- };
293
-
294
- var methods = (0, _reactHookForm.useForm)({
295
- resolver: function resolver(data, context, options) {
296
- return (0, _yup.yupResolver)(_resolver(data))(data, context, options);
297
- },
298
- defaultValues: cleanInputArray(value || defaultValues, schema),
299
- shouldFocusError: !options.autosubmit
300
- });
301
- var register = methods.register,
302
- _handleSubmit = methods.handleSubmit,
303
- errors = methods.formState.errors,
304
- control = methods.control,
305
- _reset = methods.reset,
306
- watch = methods.watch,
307
- trigger = methods.trigger,
308
- getValues = methods.getValues,
309
- setValue = methods.setValue;
310
- (0, _react.useEffect)(function () {
311
- if (value) {
312
- _reset(cleanInputArray(value, schema));
313
- }
314
- }, [value, _reset]);
315
- (0, _react.useEffect)(function () {
316
- _reset(cleanInputArray(value || defaultValues, schema));
317
- }, [schema]);
318
- var data = watch();
319
- var prevData = usePrevious(data);
320
- (0, _react.useEffect)(function () {
321
- //todo: with debounce
322
- if (!!options.autosubmit && JSON.stringify(data) !== JSON.stringify(prevData)) {
323
- _handleSubmit(function (data) {
324
- var clean = cleanOutputArray(data, schema);
325
- onSubmit(clean);
326
- }, onError)();
327
- }
328
- }, [data]);
329
-
330
- if (options.watch) {
331
- if (typeof options.watch === 'function') {
332
- options.watch(watch());
333
- } else {
334
- console.group('react-form watch');
335
- console.log(watch());
336
- console.groupEnd();
337
- }
338
- }
339
-
340
- (0, _react.useImperativeHandle)(ref, function () {
341
- return {
342
- handleSubmit: function handleSubmit() {
343
- return _handleSubmit(function (data) {
344
- var clean = cleanOutputArray(data, schema);
345
- onSubmit(clean);
346
- }, onError)();
347
- }
348
- };
349
- });
350
-
351
- var functionalProperty = function functionalProperty(entry, prop) {
352
- if (typeof prop === 'function') {
353
- return prop({
354
- rawValues: getValues(),
355
- value: getValues(entry)
356
- });
357
- } else {
358
- return prop;
359
- }
360
- };
361
-
362
- return /*#__PURE__*/_react["default"].createElement(_reactHookForm.FormProvider, methods, /*#__PURE__*/_react["default"].createElement("form", {
363
- className: className || "".concat(classes.pr_15, " ").concat(classes.full_width),
364
- onSubmit: _handleSubmit(function (data) {
365
- var clean = cleanOutputArray(data, schema);
366
- onSubmit(clean);
367
- }, onError)
368
- }, formFlow.map(function (entry, idx) {
369
- var step = schema[entry];
370
-
371
- if (!step && typeof entry === 'string') {
372
- console.error("no step found for the entry \"".concat(entry, "\" in the given schema. Your form might not work properly. Please fix it"));
373
- return null;
374
- }
375
-
376
- var error = _typeof(entry) === 'object' ? undefined : entry.split('.').reduce(function (object, key) {
377
- return object && object[key];
378
- }, errors);
379
- var visibleStep = (0, _Option.option)(step).map(function (s) {
380
- return s.visible;
381
- }).map(function (visible) {
382
- switch (_typeof(visible)) {
383
- case 'object':
384
- var _value = watch(step.visible.ref);
385
-
386
- return (0, _Option.option)(step.visible.test).map(function (test) {
387
- return test(_value);
388
- }).getOrElse(_value);
389
-
390
- case 'boolean':
391
- return visible;
392
-
393
- default:
394
- return true;
395
- }
396
- }).getOrElse(true);
397
-
398
- if (!visibleStep) {
399
- return null;
400
- }
401
-
402
- return /*#__PURE__*/_react["default"].createElement(BasicWrapper, {
403
- key: "".concat(entry, "-").concat(idx),
404
- entry: entry,
405
- error: error,
406
- label: functionalProperty(entry, (step === null || step === void 0 ? void 0 : step.label) === null ? null : (step === null || step === void 0 ? void 0 : step.label) || entry),
407
- help: step === null || step === void 0 ? void 0 : step.help,
408
- render: inputWrapper
409
- }, /*#__PURE__*/_react["default"].createElement(Step, {
410
- key: idx,
411
- entry: entry,
412
- step: step,
413
- error: error,
414
- errors: errors,
415
- register: register,
416
- schema: schema,
417
- control: control,
418
- trigger: trigger,
419
- getValues: getValues,
420
- setValue: setValue,
421
- watch: watch,
422
- inputWrapper: inputWrapper,
423
- httpClient: maybeCustomHttpClient,
424
- functionalProperty: functionalProperty
425
- }));
426
- }), /*#__PURE__*/_react["default"].createElement(Footer, {
427
- render: footer,
428
- reset: function reset() {
429
- return _reset(defaultValues);
430
- },
431
- valid: _handleSubmit(function (data) {
432
- return onSubmit(cleanOutputArray(data, schema));
433
- }, onError),
434
- actions: options.actions
435
- })));
436
- });
437
-
438
- exports.Form = Form;
439
-
440
- var Footer = function Footer(props) {
441
- var _props$actions, _props$actions$submit, _props$actions2, _props$actions2$submi, _props$actions3, _props$actions3$cance, _props$actions5, _props$actions5$cance, _props$actions6, _props$actions6$reset, _props$actions7, _props$actions7$reset, _props$actions8, _props$actions8$submi;
442
-
443
- var classes = (0, _styleContext.useCustomStyle)();
444
-
445
- if (props.render) {
446
- return props.render({
447
- reset: props.reset,
448
- valid: props.valid
449
- });
450
- }
451
-
452
- var isSubmitDisplayed = ((_props$actions = props.actions) === null || _props$actions === void 0 ? void 0 : (_props$actions$submit = _props$actions.submit) === null || _props$actions$submit === void 0 ? void 0 : _props$actions$submit.display) === undefined ? true : !!((_props$actions2 = props.actions) !== null && _props$actions2 !== void 0 && (_props$actions2$submi = _props$actions2.submit) !== null && _props$actions2$submi !== void 0 && _props$actions2$submi.display);
453
- return /*#__PURE__*/_react["default"].createElement("div", {
454
- className: "".concat(classes.flex, " ").concat(classes.jc_end, " ").concat(classes.mt_5)
455
- }, ((_props$actions3 = props.actions) === null || _props$actions3 === void 0 ? void 0 : (_props$actions3$cance = _props$actions3.cancel) === null || _props$actions3$cance === void 0 ? void 0 : _props$actions3$cance.display) && /*#__PURE__*/_react["default"].createElement("button", {
456
- className: "".concat(classes.btn, " ").concat(classes.btn_red),
457
- type: "button",
458
- onClick: function onClick() {
459
- var _props$actions4;
460
-
461
- return (_props$actions4 = props.actions) === null || _props$actions4 === void 0 ? void 0 : _props$actions4.cancel.action();
462
- }
463
- }, ((_props$actions5 = props.actions) === null || _props$actions5 === void 0 ? void 0 : (_props$actions5$cance = _props$actions5.cancel) === null || _props$actions5$cance === void 0 ? void 0 : _props$actions5$cance.label) || 'Cancel'), ((_props$actions6 = props.actions) === null || _props$actions6 === void 0 ? void 0 : (_props$actions6$reset = _props$actions6.reset) === null || _props$actions6$reset === void 0 ? void 0 : _props$actions6$reset.display) && /*#__PURE__*/_react["default"].createElement("button", {
464
- className: "".concat(classes.btn, " ").concat(classes.btn_red),
465
- type: "button",
466
- onClick: props.reset
467
- }, ((_props$actions7 = props.actions) === null || _props$actions7 === void 0 ? void 0 : (_props$actions7$reset = _props$actions7.reset) === null || _props$actions7$reset === void 0 ? void 0 : _props$actions7$reset.label) || 'Reset'), isSubmitDisplayed && /*#__PURE__*/_react["default"].createElement("button", {
468
- className: "".concat(classes.btn, " ").concat(classes.btn_green, " ").concat(classes.ml_10),
469
- type: "submit"
470
- }, ((_props$actions8 = props.actions) === null || _props$actions8 === void 0 ? void 0 : (_props$actions8$submi = _props$actions8.submit) === null || _props$actions8$submi === void 0 ? void 0 : _props$actions8$submi.label) || 'Save'));
471
- };
472
-
473
- var Step = function Step(_ref4) {
474
- var entry = _ref4.entry,
475
- realEntry = _ref4.realEntry,
476
- step = _ref4.step,
477
- error = _ref4.error,
478
- errors = _ref4.errors,
479
- register = _ref4.register,
480
- schema = _ref4.schema,
481
- control = _ref4.control,
482
- trigger = _ref4.trigger,
483
- getValues = _ref4.getValues,
484
- _setValue = _ref4.setValue,
485
- watch = _ref4.watch,
486
- inputWrapper = _ref4.inputWrapper,
487
- httpClient = _ref4.httpClient,
488
- defaultValue = _ref4.defaultValue,
489
- index = _ref4.index,
490
- functionalProperty = _ref4.functionalProperty;
491
- var classes = (0, _styleContext.useCustomStyle)();
492
-
493
- if (entry && _typeof(entry) === 'object') {
494
- var errored = entry.flow.some(function (step) {
495
- return !!errors[step];
496
- });
497
- return /*#__PURE__*/_react["default"].createElement(_index.Collapse, _extends({}, entry, {
498
- errored: errored
499
- }), entry.flow.map(function (en, entryIdx) {
500
- var stp = schema[en];
501
- var err = _typeof(en) === 'object' ? undefined : en.split('.').reduce(function (object, key) {
502
- return object && object[key];
503
- }, errors);
504
-
505
- if (!stp && typeof en === 'string') {
506
- console.error("no step found for the entry \"".concat(en, "\" in the given schema. Your form might not work properly. Please fix it"));
507
- return null;
508
- }
509
-
510
- var visibleStep = (0, _Option.option)(stp).map(function (s) {
511
- return s.visible;
512
- }).map(function (visible) {
513
- switch (_typeof(visible)) {
514
- case 'object':
515
- var value = watch(visible.ref);
516
- return (0, _Option.option)(visible.test).map(function (test) {
517
- return test(value);
518
- }).getOrElse(value);
519
-
520
- case 'boolean':
521
- return visible;
522
-
523
- default:
524
- return true;
525
- }
526
- }).getOrElse(true);
527
-
528
- if (!visibleStep) {
529
- return null;
530
- }
531
-
532
- return /*#__PURE__*/_react["default"].createElement(BasicWrapper, {
533
- key: "collapse-".concat(en, "-").concat(entryIdx),
534
- entry: en,
535
- error: err,
536
- label: functionalProperty(en, (stp === null || stp === void 0 ? void 0 : stp.label) === null ? null : (stp === null || stp === void 0 ? void 0 : stp.label) || en),
537
- help: stp === null || stp === void 0 ? void 0 : stp.help,
538
- render: inputWrapper
539
- }, /*#__PURE__*/_react["default"].createElement(Step, {
540
- entry: en,
541
- step: stp,
542
- error: err,
543
- errors: errors,
544
- register: register,
545
- schema: schema,
546
- control: control,
547
- trigger: trigger,
548
- getValues: getValues,
549
- setValue: _setValue,
550
- watch: watch,
551
- inputWrapper: inputWrapper,
552
- httpClient: httpClient,
553
- defaultValue: stp === null || stp === void 0 ? void 0 : stp.defaultValue,
554
- functionalProperty: functionalProperty
555
- }));
556
- }));
557
- }
558
-
559
- if (step.array) {
560
- return /*#__PURE__*/_react["default"].createElement(CustomizableInput, {
561
- render: step.render,
562
- field: {
563
- setValue: function setValue(key, value) {
564
- return _setValue(key, value);
565
- },
566
- rawValues: getValues(),
567
- value: getValues(entry),
568
- onChange: function onChange(v) {
569
- return _setValue(entry, v);
570
- }
571
- },
572
- error: error
573
- }, /*#__PURE__*/_react["default"].createElement(ArrayStep, {
574
- entry: entry,
575
- step: step,
576
- trigger: trigger,
577
- register: register,
578
- control: control,
579
- error: error,
580
- setValue: _setValue,
581
- values: getValues(entry),
582
- defaultValue: step.defaultValue || defaultVal(step.type),
583
- getValues: getValues,
584
- disabled: functionalProperty(entry, step.disabled),
585
- component: function component(props, idx) {
586
- var _error$idx;
587
-
588
- return /*#__PURE__*/_react["default"].createElement(Step, {
589
- entry: "".concat(entry, "[").concat(idx, "].value"),
590
- step: _objectSpread(_objectSpread({}, schema[realEntry || entry]), {}, {
591
- render: step.itemRender,
592
- onChange: undefined,
593
- array: false
594
- }),
595
- error: error && ((_error$idx = error[idx]) === null || _error$idx === void 0 ? void 0 : _error$idx.value),
596
- register: register,
597
- schema: schema,
598
- control: control,
599
- trigger: trigger,
600
- getValues: getValues,
601
- setValue: _setValue,
602
- watch: watch,
603
- inputWrapper: inputWrapper,
604
- httpClient: httpClient,
605
- defaultValue: props.defaultValue,
606
- value: props.value,
607
- index: idx,
608
- functionalProperty: functionalProperty
609
- });
610
- }
611
- }));
612
- }
613
-
614
- var registeredInput = register(entry);
615
-
616
- var inputProps = _objectSpread(_objectSpread({}, registeredInput), {}, {
617
- onChange: function onChange(e) {
618
- registeredInput.onChange(e);
619
- (0, _Option.option)(step.onChange).map(function (onChange) {
620
- return onChange({
621
- rawValues: getValues(),
622
- value: e.target.value,
623
- setValue: _setValue
624
- });
625
- });
626
- }
627
- });
628
-
629
- switch (step.type) {
630
- case _type.type.string:
631
- switch (step.format) {
632
- case _format.format.text:
633
- return /*#__PURE__*/_react["default"].createElement(CustomizableInput, {
634
- render: step.render,
635
- field: {
636
- setValue: function setValue(key, value) {
637
- return _setValue(key, value);
638
- },
639
- rawValues: getValues(),
640
- value: getValues(entry),
641
- onChange: function onChange(v) {
642
- return _setValue(entry, v);
643
- }
644
- },
645
- error: error
646
- }, /*#__PURE__*/_react["default"].createElement("textarea", _extends({
647
- type: "text",
648
- id: entry,
649
- className: (0, _classnames["default"])(classes.input, _defineProperty({}, classes.input__invalid, error)),
650
- readOnly: functionalProperty(entry, step.disabled) ? 'readOnly' : null
651
- }, step.props, {
652
- defaultValue: defaultValue,
653
- placeholder: step.placeholder
654
- }, inputProps)));
655
-
656
- case _format.format.code:
657
- return /*#__PURE__*/_react["default"].createElement(_reactHookForm.Controller, {
658
- name: entry,
659
- control: control,
660
- render: function render(_ref5) {
661
- var field = _ref5.field;
662
- return /*#__PURE__*/_react["default"].createElement(CustomizableInput, {
663
- render: step.render,
664
- field: _objectSpread({
665
- setValue: function setValue(key, value) {
666
- return _setValue(key, value);
667
- },
668
- rawValues: getValues()
669
- }, field),
670
- error: error
671
- }, /*#__PURE__*/_react["default"].createElement(_index.CodeInput, _extends({
672
- className: (0, _classnames["default"])(_defineProperty({}, classes.input__invalid, error)),
673
- readOnly: functionalProperty(entry, step.disabled) ? true : false,
674
- onChange: function onChange(e) {
675
- field.onChange(e);
676
- (0, _Option.option)(step.onChange).map(function (onChange) {
677
- return onChange({
678
- rawValues: getValues(),
679
- value: e,
680
- setValue: _setValue
681
- });
682
- });
683
- },
684
- value: field.value,
685
- defaultValue: defaultValue
686
- }, step.props)));
687
- }
688
- });
689
-
690
- case _format.format.markdown:
691
- return /*#__PURE__*/_react["default"].createElement(_reactHookForm.Controller, {
692
- name: entry,
693
- control: control,
694
- render: function render(_ref6) {
695
- var field = _ref6.field;
696
- return /*#__PURE__*/_react["default"].createElement(CustomizableInput, {
697
- render: step.render,
698
- field: _objectSpread({
699
- setValue: function setValue(key, value) {
700
- return _setValue(key, value);
701
- },
702
- rawValues: getValues()
703
- }, field),
704
- error: error
705
- }, /*#__PURE__*/_react["default"].createElement(_index.MarkdownInput, _extends({}, step.props, {
706
- className: (0, _classnames["default"])(_defineProperty({}, classes.input__invalid, error)),
707
- readOnly: functionalProperty(entry, step.disabled) ? 'readOnly' : null,
708
- onChange: function onChange(e) {
709
- field.onChange(e);
710
- (0, _Option.option)(step.onChange).map(function (onChange) {
711
- return onChange({
712
- rawValues: getValues(),
713
- value: e,
714
- setValue: _setValue
715
- });
716
- });
717
- },
718
- value: field.value,
719
- defaultValue: defaultValue
720
- }, step)));
721
- }
722
- });
723
-
724
- case _format.format.buttonsSelect:
725
- case _format.format.select:
726
- return /*#__PURE__*/_react["default"].createElement(_reactHookForm.Controller, {
727
- name: entry,
728
- control: control,
729
- render: function render(_ref7) {
730
- var field = _ref7.field;
731
- return /*#__PURE__*/_react["default"].createElement(CustomizableInput, {
732
- render: step.render,
733
- field: _objectSpread({
734
- setValue: function setValue(key, value) {
735
- return _setValue(key, value);
736
- },
737
- rawValues: getValues()
738
- }, field),
739
- error: error
740
- }, /*#__PURE__*/_react["default"].createElement(_index.SelectInput, _extends({}, step.props, step, {
741
- className: (0, _classnames["default"])(_defineProperty({}, classes.input__invalid, error)),
742
- disabled: functionalProperty(entry, step.disabled),
743
- value: field.value,
744
- possibleValues: step.options,
745
- defaultValue: defaultValue,
746
- httpClient: httpClient,
747
- onChange: function onChange(value) {
748
- field.onChange(value);
749
- (0, _Option.option)(step.onChange).map(function (onChange) {
750
- return onChange({
751
- rawValues: getValues(),
752
- value: value,
753
- setValue: _setValue
754
- });
755
- });
756
- }
757
- })));
758
- }
759
- });
760
-
761
- default:
762
- return /*#__PURE__*/_react["default"].createElement(CustomizableInput, {
763
- render: step.render,
764
- field: {
765
- setValue: function setValue(key, value) {
766
- return _setValue(key, value);
767
- },
768
- rawValues: getValues(),
769
- value: getValues(entry),
770
- onChange: function onChange(v) {
771
- return _setValue(entry, v, {
772
- shouldValidate: true
773
- });
774
- }
775
- },
776
- error: error
777
- }, /*#__PURE__*/_react["default"].createElement("input", _extends({
778
- type: step.format || 'text',
779
- id: entry,
780
- className: (0, _classnames["default"])(classes.input, _defineProperty({}, classes.input__invalid, error)),
781
- readOnly: functionalProperty(entry, step.disabled) ? 'readOnly' : null,
782
- defaultValue: defaultValue,
783
- placeholder: step.placeholder
784
- }, inputProps)));
785
- }
786
-
787
- case _type.type.number:
788
- switch (step.format) {
789
- case _format.format.buttonsSelect:
790
- case _format.format.select:
791
- return /*#__PURE__*/_react["default"].createElement(_reactHookForm.Controller, {
792
- name: entry,
793
- control: control,
794
- render: function render(_ref8) {
795
- var field = _ref8.field;
796
- return /*#__PURE__*/_react["default"].createElement(CustomizableInput, {
797
- render: step.render,
798
- field: _objectSpread({
799
- setValue: function setValue(key, value) {
800
- return _setValue(key, value);
801
- },
802
- rawValues: getValues()
803
- }, field),
804
- error: error
805
- }, /*#__PURE__*/_react["default"].createElement(_index.SelectInput, _extends({}, step.props, step, {
806
- className: (0, _classnames["default"])(classes.content, _defineProperty({}, classes.input__invalid, error)),
807
- readOnly: functionalProperty(entry, step.disabled) ? 'readOnly' : null,
808
- onChange: function onChange(e) {
809
- field.onChange(e);
810
- (0, _Option.option)(step.onChange).map(function (onChange) {
811
- return onChange({
812
- rawValues: getValues(),
813
- value: e,
814
- setValue: _setValue
815
- });
816
- });
817
- },
818
- value: field.value,
819
- possibleValues: step.options,
820
- defaultValue: defaultValue,
821
- httpClient: httpClient
822
- })));
823
- }
824
- });
825
-
826
- default:
827
- return /*#__PURE__*/_react["default"].createElement(CustomizableInput, {
828
- render: step.render,
829
- field: {
830
- setValue: function setValue(key, value) {
831
- return _setValue(key, value);
832
- },
833
- rawValues: getValues(),
834
- value: getValues(entry),
835
- onChange: function onChange(v) {
836
- return _setValue(entry, v);
837
- }
838
- },
839
- error: error
840
- }, /*#__PURE__*/_react["default"].createElement("input", _extends({}, step.props, {
841
- type: step.format || 'number',
842
- id: entry,
843
- className: (0, _classnames["default"])(classes.input, _defineProperty({}, classes.input__invalid, error)),
844
- readOnly: functionalProperty(entry, step.disabled) ? 'readOnly' : null,
845
- name: entry,
846
- placeholder: step.placeholder,
847
- defaultValue: defaultValue
848
- }, inputProps)));
849
- }
850
-
851
- case _type.type.bool:
852
- return /*#__PURE__*/_react["default"].createElement(_reactHookForm.Controller, {
853
- name: entry,
854
- control: control,
855
- render: function render(_ref9) {
856
- var field = _ref9.field;
857
- return /*#__PURE__*/_react["default"].createElement(CustomizableInput, {
858
- render: step.render,
859
- field: _objectSpread({
860
- setValue: function setValue(key, value) {
861
- return _setValue(key, value);
862
- },
863
- rawValues: getValues()
864
- }, field),
865
- error: error
866
- }, /*#__PURE__*/_react["default"].createElement(_index.BooleanInput, _extends({}, step.props, {
867
- className: (0, _classnames["default"])(_defineProperty({}, classes.input__invalid, error)),
868
- readOnly: functionalProperty(entry, step.disabled) ? 'readOnly' : null,
869
- onChange: function onChange(e) {
870
- field.onChange(e);
871
- (0, _Option.option)(step.onChange).map(function (onChange) {
872
- return onChange({
873
- rawValues: getValues(),
874
- value: e,
875
- setValue: _setValue
876
- });
877
- });
878
- },
879
- value: field.value
880
- })));
881
- }
882
- });
883
-
884
- case _type.type.object:
885
- switch (step.format) {
886
- case _format.format.buttonsSelect:
887
- case _format.format.select:
888
- return /*#__PURE__*/_react["default"].createElement(_reactHookForm.Controller, {
889
- name: entry,
890
- control: control,
891
- defaultValue: step.defaultValue,
892
- render: function render(_ref10) {
893
- var field = _ref10.field;
894
- return /*#__PURE__*/_react["default"].createElement(CustomizableInput, {
895
- render: step.render,
896
- field: _objectSpread({
897
- setValue: function setValue(key, value) {
898
- return _setValue(key, value);
899
- },
900
- rawValues: getValues()
901
- }, field),
902
- error: error
903
- }, /*#__PURE__*/_react["default"].createElement(_index.SelectInput, _extends({}, step.props, step, {
904
- className: (0, _classnames["default"])(_defineProperty({}, classes.input__invalid, error)),
905
- readOnly: functionalProperty(entry, step.disabled) ? 'readOnly' : null,
906
- onChange: function onChange(e) {
907
- field.onChange(e);
908
- (0, _Option.option)(step.onChange).map(function (onChange) {
909
- return onChange({
910
- rawValues: getValues(),
911
- value: e,
912
- setValue: _setValue
913
- });
914
- });
915
- },
916
- value: field.value,
917
- possibleValues: step.options,
918
- httpClient: httpClient
919
- })));
920
- }
921
- });
922
-
923
- case _format.format.form:
924
- //todo: disabled ?
925
- var flow = (0, _Option.option)(step.flow).getOrElse((0, _Option.option)(step.schema).map(function (s) {
926
- return Object.keys(s);
927
- }).getOrNull());
928
- return /*#__PURE__*/_react["default"].createElement(CustomizableInput, {
929
- render: step.render,
930
- field: {
931
- setValue: function setValue(key, value) {
932
- return _setValue(key, value);
933
- },
934
- rawValues: getValues(),
935
- value: getValues(entry),
936
- onChange: function onChange(v) {
937
- return _setValue(entry, v, {
938
- shouldValidate: true
939
- });
940
- }
941
- },
942
- error: error
943
- }, /*#__PURE__*/_react["default"].createElement(NestedForm, {
944
- schema: step.schema,
945
- flow: flow,
946
- step: step,
947
- parent: entry,
948
- inputWrapper: inputWrapper,
949
- maybeCustomHttpClient: httpClient,
950
- value: getValues(entry) || defaultValue,
951
- error: error,
952
- index: index,
953
- functionalProperty: functionalProperty
954
- }));
955
-
956
- default:
957
- return /*#__PURE__*/_react["default"].createElement(_reactHookForm.Controller, {
958
- name: entry,
959
- control: control,
960
- defaultValue: step.defaultValue,
961
- render: function render(_ref11) {
962
- var field = _ref11.field;
963
- return /*#__PURE__*/_react["default"].createElement(CustomizableInput, {
964
- render: step.render,
965
- field: _objectSpread({
966
- setValue: function setValue(key, value) {
967
- return _setValue(key, value);
968
- },
969
- rawValues: getValues()
970
- }, field),
971
- error: error
972
- }, /*#__PURE__*/_react["default"].createElement(_index.ObjectInput, _extends({}, step.props, step, {
973
- className: (0, _classnames["default"])(_defineProperty({}, classes.input__invalid, error)),
974
- readOnly: functionalProperty(entry, step.disabled) ? 'readOnly' : null,
975
- onChange: function onChange(e) {
976
- field.onChange(e);
977
- (0, _Option.option)(step.onChange).map(function (onChange) {
978
- return onChange({
979
- rawValues: getValues(),
980
- value: e,
981
- setValue: _setValue
982
- });
983
- });
984
- },
985
- value: field.value,
986
- possibleValues: step.options
987
- })));
988
- }
989
- });
990
- }
991
-
992
- case _type.type.date:
993
- return /*#__PURE__*/_react["default"].createElement(_reactHookForm.Controller, {
994
- name: entry,
995
- control: control,
996
- defaultValue: step.defaultValue,
997
- render: function render(_ref12) {
998
- var field = _ref12.field;
999
- return /*#__PURE__*/_react["default"].createElement(CustomizableInput, {
1000
- render: step.render,
1001
- field: _objectSpread({
1002
- setValue: function setValue(key, value) {
1003
- return _setValue(key, value);
1004
- },
1005
- rawValues: getValues()
1006
- }, field),
1007
- error: error
1008
- }, /*#__PURE__*/_react["default"].createElement(_reactRainbowComponents.DatePicker, _extends({}, step.props, {
1009
- id: "datePicker-1",
1010
- className: (0, _classnames["default"])(_defineProperty({}, classes.input__invalid, error)),
1011
- readOnly: functionalProperty(entry, step.disabled) ? 'readOnly' : null,
1012
- value: field.value,
1013
- onChange: function onChange(e) {
1014
- field.onChange(e);
1015
- (0, _Option.option)(step.onChange).map(function (onChange) {
1016
- return onChange({
1017
- rawValues: getValues(),
1018
- value: e,
1019
- setValue: _setValue
1020
- });
1021
- });
1022
- },
1023
- formatStyle: "large"
1024
- })));
1025
- }
1026
- });
1027
-
1028
- case _type.type.file:
1029
- if (step.format === _format.format.hidden) {
1030
- return /*#__PURE__*/_react["default"].createElement(_reactHookForm.Controller, {
1031
- name: entry,
1032
- control: control,
1033
- render: function render(_ref13) {
1034
- var field = _ref13.field;
1035
-
1036
- var FileInput = function FileInput(_ref14) {
1037
- var onChange = _ref14.onChange;
1038
-
1039
- var _useState = (0, _react.useState)(false),
1040
- _useState2 = _slicedToArray(_useState, 2),
1041
- uploading = _useState2[0],
1042
- setUploading = _useState2[1];
1043
-
1044
- var _useState3 = (0, _react.useState)(undefined),
1045
- _useState4 = _slicedToArray(_useState3, 2),
1046
- input = _useState4[0],
1047
- setInput = _useState4[1];
1048
-
1049
- var setFiles = function setFiles(e) {
1050
- var files = e.target.files;
1051
- setUploading(true);
1052
- onChange(files);
1053
- setUploading(false);
1054
- };
1055
-
1056
- var trigger = function trigger() {
1057
- input.click();
1058
- };
1059
-
1060
- return /*#__PURE__*/_react["default"].createElement("div", {
1061
- className: (0, _classnames["default"])("d-flex flex-row justify-content-start", _defineProperty({}, classes.input__invalid, error))
1062
- }, /*#__PURE__*/_react["default"].createElement("input", {
1063
- ref: function ref(r) {
1064
- return setInput(r);
1065
- },
1066
- type: "file",
1067
- multiple: true,
1068
- className: classes.d_none,
1069
- onChange: setFiles
1070
- }), /*#__PURE__*/_react["default"].createElement("button", {
1071
- type: "button",
1072
- className: "".concat(classes.btn, " ").concat(classes.flex, " ").concat(classes.ai_center),
1073
- disabled: uploading || functionalProperty(entry, step.disabled),
1074
- onClick: trigger
1075
- }, uploading && /*#__PURE__*/_react["default"].createElement(_reactFeather.Loader, null), !uploading && /*#__PURE__*/_react["default"].createElement(_reactFeather.Upload, null), /*#__PURE__*/_react["default"].createElement("span", {
1076
- className: "".concat(classes.ml_5)
1077
- }, "Select file")));
1078
- };
1079
-
1080
- return /*#__PURE__*/_react["default"].createElement(CustomizableInput, {
1081
- render: step.render,
1082
- field: _objectSpread({
1083
- setValue: function setValue(key, value) {
1084
- return _setValue(key, value);
1085
- },
1086
- rawValues: getValues()
1087
- }, field),
1088
- error: error
1089
- }, /*#__PURE__*/_react["default"].createElement(FileInput, {
1090
- onChange: function onChange(e) {
1091
- field.onChange(e);
1092
- (0, _Option.option)(step.onChange).map(function (onChange) {
1093
- return onChange({
1094
- rawValues: getValues(),
1095
- value: e,
1096
- setValue: _setValue
1097
- });
1098
- });
1099
- },
1100
- error: error
1101
- }));
1102
- }
1103
- });
1104
- }
1105
-
1106
- return /*#__PURE__*/_react["default"].createElement(CustomizableInput, {
1107
- render: step.render,
1108
- field: {
1109
- setValue: function setValue(key, value) {
1110
- return _setValue(key, value);
1111
- },
1112
- rawValues: getValues(),
1113
- value: getValues(entry),
1114
- onChange: function onChange(v) {
1115
- return _setValue(entry, v, {
1116
- shouldValidate: true
1117
- });
1118
- }
1119
- },
1120
- error: error
1121
- }, /*#__PURE__*/_react["default"].createElement("input", _extends({}, step.props, {
1122
- type: "file",
1123
- id: entry,
1124
- className: (0, _classnames["default"])(classes.input, _defineProperty({}, classes.input__invalid, error)),
1125
- readOnly: functionalProperty(entry, step.disabled) ? 'readOnly' : null,
1126
- name: entry,
1127
- placeholder: step.placeholder
1128
- }, inputProps)));
1129
-
1130
- default:
1131
- return null;
1132
- }
1133
- };
1134
-
1135
- var ArrayStep = function ArrayStep(_ref15) {
1136
- var entry = _ref15.entry,
1137
- step = _ref15.step,
1138
- control = _ref15.control,
1139
- trigger = _ref15.trigger,
1140
- register = _ref15.register,
1141
- error = _ref15.error,
1142
- component = _ref15.component,
1143
- values = _ref15.values,
1144
- defaultValue = _ref15.defaultValue,
1145
- setValue = _ref15.setValue,
1146
- getValues = _ref15.getValues,
1147
- disabled = _ref15.disabled;
1148
- var classes = (0, _styleContext.useCustomStyle)();
1149
-
1150
- var _useFieldArray = (0, _reactHookForm.useFieldArray)({
1151
- control: control,
1152
- // control props comes from useForm (optional: if you are using FormContext)
1153
- name: entry // unique name for your Field Array
1154
- // keyName: "id", default to "id", you can change the key name
1155
-
1156
- }),
1157
- fields = _useFieldArray.fields,
1158
- append = _useFieldArray.append,
1159
- remove = _useFieldArray.remove;
1160
-
1161
- return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, fields.map(function (field, idx) {
1162
- return /*#__PURE__*/_react["default"].createElement("div", {
1163
- key: field.id,
1164
- className: "d-flex flex-row"
1165
- }, /*#__PURE__*/_react["default"].createElement("div", {
1166
- className: "flex-grow-1"
1167
- }, component(_objectSpread(_objectSpread({
1168
- key: field.id
1169
- }, field), {}, {
1170
- defaultValue: values[idx] || defaultValue
1171
- }), idx)), /*#__PURE__*/_react["default"].createElement("div", {
1172
- className: "input-group-append"
1173
- }, /*#__PURE__*/_react["default"].createElement("button", {
1174
- className: "btn btn-danger btn-sm",
1175
- disabled: disabled,
1176
- onClick: function onClick() {
1177
- remove(idx);
1178
- trigger(entry);
1179
- }
1180
- }, "remove")));
1181
- }), /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("input", {
1182
- type: "button",
1183
- className: (0, _classnames["default"])("btn btn-info mt-2", _defineProperty({}, classes.input__invalid, error)),
1184
- onClick: function onClick() {
1185
- append({
1186
- value: step.addableDefaultValue || defaultVal(step.type)
1187
- });
1188
- trigger(entry);
1189
- (0, _Option.option)(step.onChange).map(function (onChange) {
1190
- return onChange({
1191
- rawValues: getValues(),
1192
- value: getValues(entry),
1193
- setValue: setValue
1194
- });
1195
- });
1196
- },
1197
- disabled: disabled,
1198
- value: "Add"
1199
- }), error && /*#__PURE__*/_react["default"].createElement("div", {
1200
- className: "invalid-feedback"
1201
- }, error.message)));
1202
- };
1203
-
1204
- var NestedForm = function NestedForm(_ref16) {
1205
- var _classNames15;
1206
-
1207
- var schema = _ref16.schema,
1208
- flow = _ref16.flow,
1209
- parent = _ref16.parent,
1210
- inputWrapper = _ref16.inputWrapper,
1211
- maybeCustomHttpClient = _ref16.maybeCustomHttpClient,
1212
- index = _ref16.index,
1213
- error = _ref16.error,
1214
- value = _ref16.value,
1215
- step = _ref16.step,
1216
- functionalProperty = _ref16.functionalProperty;
1217
-
1218
- var _useFormContext = (0, _reactHookForm.useFormContext)(),
1219
- register = _useFormContext.register,
1220
- control = _useFormContext.control,
1221
- getValues = _useFormContext.getValues,
1222
- setValue = _useFormContext.setValue,
1223
- trigger = _useFormContext.trigger,
1224
- watch = _useFormContext.watch; // retrieve all hook methods
1225
-
1226
-
1227
- var _useState5 = (0, _react.useState)(false),
1228
- _useState6 = _slicedToArray(_useState5, 2),
1229
- collapsed = _useState6[0],
1230
- setCollapsed = _useState6[1];
1231
-
1232
- var classes = (0, _styleContext.useCustomStyle)();
1233
- var schemaAndFlow = (0, _Option.option)(step.conditionalSchema).map(function (condiSchema) {
1234
- var ref = (0, _Option.option)(condiSchema.ref).map(function (ref) {
1235
- return getValues(ref);
1236
- }).getOrNull();
1237
- var rawData = getValues();
1238
- var filterSwitch = condiSchema["switch"].find(function (s) {
1239
- if (typeof s.condition === 'function') {
1240
- return s.condition({
1241
- rawData: rawData,
1242
- ref: ref
1243
- });
1244
- } else {
1245
- return s.condition === ref;
1246
- }
1247
- });
1248
- return (0, _Option.option)(filterSwitch).getOrElse(condiSchema["switch"].find(function (s) {
1249
- return s["default"];
1250
- }));
1251
- }).getOrElse({
1252
- schema: schema,
1253
- flow: flow
1254
- });
1255
- var prevSchema = usePrevious(schemaAndFlow.schema);
1256
- (0, _react.useEffect)(function () {
1257
- if (!!prevSchema && JSON.stringify(prevSchema) !== JSON.stringify(schemaAndFlow.schema)) {
1258
- var def = getDefaultValues(schemaAndFlow.flow, schemaAndFlow.schema);
1259
- setValue(parent, def, {
1260
- shouldValidate: false
1261
- });
1262
- }
1263
- }, [prevSchema, schemaAndFlow.schema]);
1264
- var computedSandF = schemaAndFlow.flow.reduce(function (acc, entry) {
1265
- var step = schemaAndFlow.schema[entry];
1266
- var visibleStep = (0, _Option.option)(step).map(function (s) {
1267
- return s.visible;
1268
- }).map(function (visible) {
1269
- switch (_typeof(visible)) {
1270
- case 'object':
1271
- var _value2 = watch(visible.ref);
1272
-
1273
- return (0, _Option.option)(visible.test).map(function (test) {
1274
- return test(_value2);
1275
- }).getOrElse(_value2);
1276
-
1277
- case 'boolean':
1278
- return visible;
1279
-
1280
- default:
1281
- return true;
1282
- }
1283
- }).getOrElse(true);
1284
- return [].concat(_toConsumableArray(acc), [{
1285
- step: step,
1286
- visibleStep: visibleStep,
1287
- entry: entry
1288
- }]);
1289
- }, []);
1290
- var bordered = computedSandF.filter(function (x) {
1291
- return x.visibleStep;
1292
- }).length > 1 && step.label !== null;
1293
- return /*#__PURE__*/_react["default"].createElement("div", {
1294
- className: (0, _classnames["default"])((_classNames15 = {}, _defineProperty(_classNames15, classes.nestedform__border, bordered), _defineProperty(_classNames15, classes.border__error, !!error), _classNames15))
1295
- }, !!step.collapsable && schemaAndFlow.flow.length > 1 && collapsed && /*#__PURE__*/_react["default"].createElement(_reactFeather.ArrowDown, {
1296
- size: 30,
1297
- className: classes.cursor_pointer,
1298
- style: {
1299
- position: 'absolute',
1300
- top: '5px',
1301
- left: '-16px'
1302
- },
1303
- "stroke-width": "3",
1304
- onClick: function onClick() {
1305
- return setCollapsed(!collapsed);
1306
- }
1307
- }), !!step.collapsable && schemaAndFlow.flow.length > 1 && !collapsed && /*#__PURE__*/_react["default"].createElement(_reactFeather.ArrowUp, {
1308
- size: 30,
1309
- className: classes.cursor_pointer,
1310
- style: {
1311
- position: 'absolute',
1312
- top: '5px',
1313
- left: '-16px'
1314
- },
1315
- "strok-width": "3",
1316
- onClick: function onClick() {
1317
- return setCollapsed(!collapsed);
1318
- }
1319
- }), computedSandF.map(function (_ref17, idx) {
1320
- var step = _ref17.step,
1321
- visibleStep = _ref17.visibleStep,
1322
- entry = _ref17.entry;
1323
-
1324
- if (!step && typeof entry === 'string') {
1325
- console.error("no step found for the entry \"".concat(entry, "\" in the given schema. Your form might not work properly. Please fix it"));
1326
- return null;
1327
- }
1328
-
1329
- var realError = error && error[entry];
1330
- var oneVisibleSetup = Object.values(schemaAndFlow.schema).some(function (v) {
1331
- return !!v.visibleOnCollapse;
1332
- });
1333
- var isCollapsed = collapsed && (oneVisibleSetup ? !step.visibleOnCollapse : idx > 0);
1334
- return /*#__PURE__*/_react["default"].createElement(BasicWrapper, {
1335
- key: "".concat(entry, ".").concat(idx),
1336
- className: (0, _classnames["default"])(_defineProperty({}, classes.display__none, isCollapsed || !visibleStep)),
1337
- entry: "".concat(parent, ".").concat(entry),
1338
- error: realError,
1339
- label: functionalProperty(entry, (step === null || step === void 0 ? void 0 : step.label) === null ? null : (step === null || step === void 0 ? void 0 : step.label) || entry),
1340
- help: step.help,
1341
- render: inputWrapper
1342
- }, /*#__PURE__*/_react["default"].createElement(Step, {
1343
- key: "step.".concat(entry, ".").concat(idx),
1344
- entry: "".concat(parent, ".").concat(entry),
1345
- realEntry: entry,
1346
- step: schemaAndFlow.schema[entry],
1347
- error: realError,
1348
- register: register,
1349
- schema: schemaAndFlow.schema,
1350
- control: control,
1351
- trigger: trigger,
1352
- getValues: getValues,
1353
- setValue: setValue,
1354
- watch: watch,
1355
- inputWrapper: inputWrapper,
1356
- httpClient: maybeCustomHttpClient,
1357
- defaultValue: value && value[entry],
1358
- functionalProperty: functionalProperty
1359
- }));
1360
- }));
1361
- };